python (3.11.7)

(root)/
lib/
python3.11/
xml/
dom/
__pycache__/
minidom.cpython-311.pyc

e,
dZddlZddlZddlmZmZmZmZddlTddl	m
Z
mZejj
jejj
jfZGddejj
Z
ee
dd	
ee
dd
ee
d
d
dZdZdZdZdZGdde
ZGdde
Zeedd
eed
d
eedd
GddeZeedd 
eZGd!d"eZeddZGd#d$e
Zeed%d&
eed
d'
d(ZGd)d*Z Gd+d,e e
Z!Gd-d.e e
Z"ee"dd/
Gd0d1e"Z#ee#d2d3
ee#d4d5
d6Z$d7Z%Gd8d9e"Z&Gd:d;e#Z'Gd<d=eZ(ee(dd>
Gd?d@Z)GdAdBe)e e
Z*GdCdDe)e
Z+GdEdFe)e e
Z,GdGdHe
Z-GdIdJeZ.dKZ/GdLdMe
eZ0ee0dNdO
dPZ1dQZ2dRZ3dVdSZ4dWdTZ5dWdUZ6dS)XacSimple implementation of the Level 1 DOM.

Namespaces and other minor Level 2 features are also supported.

parse("foo.xml")

parseString("<foo><bar/></foo>")

Todo:
=====
 * convenience methods for getting elements and text.
 * more testing
 * bring some of the writer and linearizer code into conformance with this
        interface
 * SAX 2 namespaces
N)EMPTY_NAMESPACEEMPTY_PREFIXXMLNS_NAMESPACEdomreg)*)DOMImplementationLS
DocumentLSceZdZdZdZdZdZdZeZ	dZ
ddZ		ddZdZ
dZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dS)NodeNcdS)NTselfs C/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/xml/dom/minidom.py__bool__z
Node.__bool__+tc2|dd||SN)toprettyxml)rencoding
standalones   rtoxmlz
Node.toxml.sB*===r	
c|tj}n)tjtj|dd}|jt
jkr||d||||n||d||||S|	S)Nxmlcharrefreplacer)rerrorsnewliner)
ioStringIO
TextIOWrapperBytesIOnodeTyper
DOCUMENT_NODEwritexmlgetvaluedetach)rindentnewlrrwriters      rrzNode.toprettyxml1s[]]FF%bjll/7-@.2444F=D...MM&"fdHjIIIIMM&"fd333??$$$==??++---rc*t|jSN)bool
childNodesrs r
hasChildNodeszNode.hasChildNodesDsDO$$$rc|jSr.r0rs r_get_childNodeszNode._get_childNodesG
rc.|jr
|jdSdSNrr3rs r_get_firstChildzNode._get_firstChildJs#?	&?1%%	&	&rc.|jr
|jdSdSNr3rs r_get_lastChildzNode._get_lastChildNs#?	'?2&&	'	'rc|j|jkr/t|jD]}||||S|j|jvr>tjt|dt||j
|j
||||n	|j
|}n,#t$rtjwxYw|jt vrt#||j||||_||_|r|j|dz
}||_||_nd|_||_
|S)N cannot be child of )r%DOCUMENT_FRAGMENT_NODEtupler0insertBefore_child_node_typesxmldomHierarchyRequestErrrepr
parentNoderemoveChildappendChildindex
ValueErrorNotFoundErr_nodeTypes_with_children_clear_id_cacheinsertnextSiblingpreviousSibling)rnewChildrefChildcrKnodes      rrBzNode.insertBeforeRs ;;;8.//
/
/!!!X....OD$:::'--.28nnnnd4jjjIKK
K*++H555X&&&&
,--h77
,
,
,g))+++
, $<<<%%%O""5(333#+H '/H$
0uQw/#+ +/((+/("&HsC!!)D
c|j|jkr.t|jD]}|||S|j|jvr>tjt|dt||jtvrt||j|j
|t||d|_|SNr>)r%r@rAr0rJrCrDrErFrGrNrOrHrI
_append_childrQ)rrVrUs   rrJzNode.appendChildrs=D7774?++
$
$  ####K= 666'--.24jjjj$t***EGG
G
]6
6
6D!!!?&O''---dD!!!rc|j|jkr2|j}|||||S|j|jvr>tjt|dt|||urdS|j
|j
|	|j|}n,#t$rtjwxYw||j|<||_
d|_
|jtvs|jtvrt!||j|_|j|_d|_d|_|jr||j_|jr||j_|SrX)r%r@rQrIrBrCrDrErFrGrHr0rKrLrMrNrOrR)rrSoldChildrTrKs     rreplaceChildzNode.replaceChilds ;;;+HX&&&$$Xx888D$:::'--.28nnnnd4jjjIKK
KxF*++H555	(O))(33EE	(	(	('%%'''	(!)""!999 $<<<D!!!'3#+#; ##' #	<3;H$0	<3;H 0s7C)C;cZ	|j|n,#t$rtjwxYw|j|j|j_|j|j|j_dx|_|_|jtvrt|d|_|Sr.)r0removerLrDrErMrQrRr%rNrOrHrr[s  rrIzNode.removeChilds	(O""8,,,,	(	(	('%%'''	(+3;3KH 0#/3;3GH$0:>>x7 888D!!!"	)Aclg}|jD]}|jtjkr|jsA|r|j|d_|jr|j|j_|`|rf|dj|jkrP|d}|j|jz|_|j|_|jr||j_||||||jtj	kr|
||jdd<dSr:)r0r%r	TEXT_NODEdatarQrRunlinkappendELEMENT_NODE	normalize)rLchildrVs    rrgzNode.normalizes,_	&	&E~//z$>,1,=")(R<A<Q)9LLNNNN	$1R5>U^;;R5D $	EJ 6DI','8D$(A<@)9LLNNNNHHUOOOO>T%666OO%%%rc2t|||jp|Sr.)_clone_node
ownerDocument)rdeeps  r	cloneNodezNode.cloneNodes4t'9'ATBBBrcB|jj||Sr.)rlimplementation
hasFeaturerfeatureversions   risSupportedzNode.isSupporteds!0;;GWMMMrcdSr.r
rs r_get_localNamezNode._get_localNamestrc
||uSr.r
rothers  r
isSameNodezNode.isSameNodesu}rc6||dr|SdSr.)rurrss  rgetInterfacezNode.getInterfaces$GT**	K4rcZ	|j|dS#ttf$rYdSwxYwr7)
_user_dataAttributeErrorKeyErrorrkeys  rgetUserDatazNode.getUserDatas@	?3'**)			44	s**cd}	|j}n#t$ri}||_YnwxYw||vr||d}|d}|||=n||f||<|Sr7)rr)rrrchandleroldds      rsetUserDatazNode.setUserDatas	 AA	 	 	 ADOOO	 !88C&)C<GcFG_AcF
s""ct|drJt|jD]%\}\}}|||||||$dSdS)Nr)hasattrlistritemshandle)r	operationsrcdstrrcrs       r_call_user_data_handlerzNode._call_user_data_handlers~4&&	C(,T_-B-B-D-D(E(E
C
C$_dG&NN9c4cBBB	C	C
C
Crcdx|_|_|jr1|jD]}|t	|_d|_d|_dSr.)rHrlr0rdNodeListrRrQ)rris  rrdzNode.unlinks\/33$,?	)

&jjDO#rc|Sr.r
rs r	__enter__zNode.__enter__src.|dSr.)rd)retevtbs    r__exit__z
Node.__exit__s




rNN)rrNN)!__name__
__module____qualname__namespaceURIrHrlrQrRrprefixrrrr1r4r8r<rBrJr\rIrgrnrurwr{r~rrrrdrrr
rrrr"sLJMKO
F>>>><@#....&%%%&&&'''@"@ 6CCCNNN$CCC   rr
firstChildzFirst child node, or None.)doc	lastChildzLast child node, or None.	localNamez"Namespace-local name of this node.c||j}|r|d}||_||_||||_dSr:)r0rRrQrerH)rrVr0lasts    rrYrYsIJ "~#dDOOOrcJ| |jtjkrdS|j}| dSNTF)r%rr&rHrVs r_in_documentr's3

=D...4
5rc|ri|dddddddd}||d	Sd	S)
zWrites datachars to writer.&z&amp;<z&lt;"z&quot;>z&gt;N)replacewrite)r,rcs  r_write_datar/so||C))11#v>>GD(++GGC,@,@	
Trc|jD]N}|jtjkr&|dks|j|kr||t
|||O|SNr)r0r%rrftagNamere_get_elements_by_tagName_helper)parentnamercrVs    rrr6sb!88=D---
S[[DLD00IIdOOO'dB7777
Irc|jD]`}|jtjkrI|dks|j|kr&|dks|j|kr||t||||a|Sr)r0r%rrfrrre"_get_elements_by_tagName_ns_helper)rnsURIrrrVs     rrr>s|!KK=D---c!!T^y%@%@#!2e!;!;		$.tUIrJJJ
IrceZdZejZdZdZdZdZ	ej
ejejej
ejejejfZdZdS)DocumentFragmentz#document-fragmentNc,t|_dSr.)rr0rs r__init__zDocumentFragment.__init__Us"**r)rrrrr@r%nodeName	nodeValue
attributesrHrfrbCDATA_SECTION_NODEENTITY_REFERENCE_NODEPROCESSING_INSTRUCTION_NODECOMMENT_NODE
NOTATION_NODErCrr
rrrrGsp*H#HIJJ*039*+
-%%%%%rrceZdZdZejZdZdZdZ	ej
ejfZe
ddfdZdZdZdZdZeeexZZd	Zd
ZeeexZZdZdZeeeZd
ZdZdZdS)Attr)_name_valuer_prefixr0
_localNamerlownerElementNFcd|_||_||_||_|||_t|_|jtdSr.)	rrrrrrr0reText)rqNamerrrs     rrz
Attr.__init__csZ 
( 'DO"**	
tvv&&&&&rct	|jS#t$r$|jdddcYSwxYwN:r?r;)rrrsplitrs rrwzAttr._get_localNamersM	3?"	3	3	3=&&sA..r2222	3	+77c|jSr.)	specifiedrs r_get_specifiedzAttr._get_specifiedx
~rc|jSr.)rrs r	_get_namezAttr._get_name{
zrcN||_|jt|jdSdSr.)rrrOrvalues  r	_set_namezAttr._set_name~s1
(D-.....)(rc|jSr.)rrs r
_get_valuezAttr._get_value
{rc||_||jd_|jt	|j||jd_dSr7)rr0rcrrOrs  r
_set_valuezAttr._set_valuesG"'(D-..."'rc|jSr.)rrs r_get_prefixzAttr._get_prefix
|rc|j}|dkr,|r*|tkrtjd||_||j}n|d|j}|jrt|j||_	dS)Nxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacer)
rrrDrENamespaceErrrrrrOr)rrnsurinewNames    r_set_prefixzAttr._set_prefixs!W
M/11g**KMMM>nGG!'8G	/D-...			rc|j}|T|j|j=|j|j|jf=|jr,d|_|xjdzc_|jxj	dzc_	|j
D]}||j
dd=dS)NFr?)r_attrsr_attrsNSrr_is_id_magic_id_nodesrl_magic_id_countr0rd)relemris   rrdzAttr.unlinks
 DM*
t0$.AB{
8#$$)$$"22a722_		ELLNNNNOAAArc|jrdS|j}|j}||dS||}|dS|jr ||j|jS||jSr)	rrlr_get_elem_inforisIdNSrisIdrrrrinfos    r	_get_isIdzAttr._get_isIds;	4  ;$,5!!$''<5	,;;t0$.AAA99T]+++rc|j}|j}||tS||}|tS|jr ||j|jS||jSr.)	rlr_no_typerrgetAttributeTypeNSrgetAttributeTyperrs    r_get_schemaTypezAttr._get_schemaTypesy  ;$,O!!$''<O	8**4+<dnMMM((777r) rrr	__slots__rATTRIBUTE_NODEr%rrrrbrrCrrrwrrrpropertyrrrrrrrrrrdrrr
rrrrYsGWI"HJI
F)CD+:d''''333///
hy)444Ht(((!Z888I


Xk;
/
/F",,, 88888rrrz True if this attribute is an ID.z'Namespace-local name of this attribute.
schemaTypezSchema type for this attribute.ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dd
ZeZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dS) NamedNodeMapaThe attribute list is a transient interface to the underlying
    dictionaries.  Mutations here will change the underlying element's
    dictionary.

    Ordering is imposed artificially and does not reflect the order of
    attributes as found in an input document.
    rr
_ownerElementc0||_||_||_dSr.r)rattrsattrsNSrs    rrzNamedNodeMap.__init__s
)rc*t|jSr.)lenrrs r_get_lengthzNamedNodeMap._get_lengths4;rc	|t|j|S#t$rYdSwxYwr.)rrkeys
IndexErrorrrKs  ritemzNamedNodeMap.itemsO	T[--//00788			44	s14
AAcg}|jD]#}||j|jf$|Sr.)rvaluesrerrrrhrVs   rrzNamedNodeMap.itemssGK&&((	2	2D
HHdmTZ01111rcg}|jD]*}||j|jf|jf+|Sr.)rrrerrrrs   ritemsNSzNamedNodeMap.itemsNSsQK&&((	H	HD
HHt($.94:FGGGGrcPt|tr	||jvS||jvSr.)
isinstancestrrrrs  r__contains__zNamedNodeMap.__contains__s.c3	($+%%$-''rc4|jSr.)rrrs rrzNamedNodeMap.keyss{!!!rc4|jSr.)rrrs rkeysNSzNamedNodeMap.keysNSs}!!###rc4|jSr.)rrrs rrzNamedNodeMap.values
s{!!###rNc8|j||Sr.rget)rrrs   rr(zNamedNodeMap.get
s{tU+++rc|jt|ddurdSt|t|kt|t|kz
S)Nrr)rgetattridrys  r_cmpzNamedNodeMap._cmpsM;'%488881tHHr%yy(RXX5		-ABBrc4||dkSr7r,rys  r__eq__zNamedNodeMap.__eq__yy1$$rc4||dkSr7r.rys  r__ge__zNamedNodeMap.__ge__r0rc4||dkSr7r.rys  r__gt__zNamedNodeMap.__gt__yy!##rc4||dkSr7r.rys  r__le__zNamedNodeMap.__le__!r0rc4||dkSr7r.rys  r__lt__zNamedNodeMap.__lt__$r5rc`t|tr
|j|S|j|Sr.)rrArr)rattname_or_tuples  r__getitem__zNamedNodeMap.__getitem__'s1&..	1=!122;/00rc`t|tr]	|j|}nE#t$r8t	|}|jj|_||YnwxYw||_dSt|tstd|}||dS)Nz%value must be a string or Attr object)
rr rrrr
rlsetNamedItemr	TypeError)rattnamerrVs    r__setitem__zNamedNodeMap.__setitem__.seS!!	$
({7+
(
(
(G}}%)%7%E"!!$'''''
(DJJJeT**
I GHHHDd#####s
%?A'&A'c@	|j|S#t$rYdSwxYwr.)rrrrs  rgetNamedItemzNamedNodeMap.getNamedItem=s6	;t$$			44	s
cD	|j||fS#t$rYdSwxYwr.)rrrrrs   rgetNamedItemNSzNamedNodeMap.getNamedItemNSCs;	=,	!:;;			44	s
c||}|Nt|j|j|j=|j|j|jf=t|drd|_	|StjNr)
rDrOr
rrrrrrrrDrErMrrns   rremoveNamedItemzNamedNodeMap.removeNamedItemIs|d##=D.///AJ'
q~q{;<q.))
&!%H'%%'''rc
|||}|Nt|j|j|j|jf=|j|j=t|drd|_	|StjrI)
rGrOr
rrrrrrrrDrErMrrrrKs    rremoveNamedItemNSzNamedNodeMap.removeNamedItemNSUs~i88=D.///
q~q{;<AJ'q.))
&!%H'%%'''rct|ts>tjt|dt||j|j}|r|	||j|j<||j
|j|jf<|j
|_t|j|SrX)rrrDrErFrGrr(rrdrrrr
rrO)rrVrs   rr>zNamedNodeMap.setNamedItemas$%%	G'--.24jjjj$t***EGG
Gkoodi((	JJLLL!%DI=A
t($.9: .)***
rc,||Sr.)r>rrVs  rsetNamedItemNSzNamedNodeMap.setNamedItemNSns  &&&rcf||}t|j|dSr.)rOrrd)rr;rVs   r__delitem__zNamedNodeMap.__delitem__qs/$%)***




rc*|j|j|jfSr.rrs r__getstate__zNamedNodeMap.__getstate__vs{DM4+===rc0|\|_|_|_dSr.rrstates  r__setstate__zNamedNodeMap.__setstate__ys9>6T]D$6$6$6rr.)!rrr__doc__rrrrrrr!rr$rr(__len__r,r/r2r4r7r9r<rArDrGrLrOr>rSrUrWr[r
rrrrs8I***
   ((("""$$$$$$,,,,GCCC%%%%%%$$$%%%$$$111
$
$
$
(
(
(
(
(
('''
>>>?????rrlengthz$Number of nodes in the NamedNodeMap.c*eZdZdZdZdZdZdZdS)TypeInfo	namespacerc"||_||_dSr.ra)rrbrs   rrzTypeInfo.__init__s"			rc|jr d|jjd|jd|jdSd|jjd|jdS)Nr z (from z)>r)rb	__class__rrrs r__repr__zTypeInfo.__repr__s`>	D	D*..*A*A*A4999*....:
:	D!% 7 7 7CCrc|jSr.)rrs rrzTypeInfo._get_name
yrc|jSr.)rbrs r_get_namespacezTypeInfo._get_namespacerrN)rrrrrrgrrkr
rrr`r`sX#IDDDrr`c&eZdZdZejZdZeZ	dZ
ejejejej
ejejfZeddfdZdZdZdZdZd	Zd
ZdZdZd
ZdZdZeZdZdZ dZ!e!Z"dZ#dZ$dZ%dZ&dZ'ddZ(dZ)dZ*dZ+dZ,dZ-dS) Element)rlrHrrrrrr0rrrQrRNrcd|_|x|_|_||_||_t|_dx|_|_d|_	d|_
dSr.)rHrrrrrr0rQrRrr)rrrrrs     rrzElement.__init__sU'..t}("**2664/


rc4|ji|_i|_dSdSr.)rrrs r_ensure_attributeszElement._ensure_attributess$;DKDMMMrct	|jS#t$r$|jdddcYSwxYwr)rrrrrs rrwzElement._get_localNamesM	2?"	2	2	2<%%c1--b1111	2rc|jSr.rrs r_get_tagNamezElement._get_tagNamerrc|j=t|jD]}|d|_d|_t
|dSr.)rrrrdrr)rattrs  rrdzElement.unlinksd;"T[//1122






Drc\|jdS	|j|jS#t$rYdSwxYw)aReturns the value of the specified attribute.

        Returns the value of the element's attribute named attname as
        a string. An empty string is returned if the element does not
        have such an attribute. Note that an empty string may also be
        returned as an explicitly given attribute value, use the
        hasAttribute method to distinguish these two cases.
        Nr)rrr)rr@s  rgetAttributezElement.getAttributesH;2	;w'--			22	s
++c`|jdS	|j||fjS#t$rYdSwxYwr)rrrrFs   rgetAttributeNSzElement.getAttributeNSsK= 2	=,	!:;AA			22	s
--c||}|9t|}||_|j|_||dS||jkr||_|jrt
|dSdSdSr.)getAttributeNoderrrlsetAttributeNoderrO)rr@rrvs    rsetAttributezElement.setAttributes$$W--<==DDJ!%!3D!!$'''''
dj
 
 DJy
&%%%%%!
 
&
&rcXt|\}}|||}|<t||||}||_|j|_||dS||jkr||_|jrt||j|kr||_||_	dSdSr.)
_nssplitgetAttributeNodeNSrrrlr}rrOrr)rr
qualifiedNamerr	localnamervs       rsetAttributeNSzElement.setAttributeNSs$]33	&&|Y??<
|YGGDDJ!%!3D!!$'''''
"""
9*#D))){f$$$ -


%$rcH|jdS|j|Sr.r')rattrnames  rr|zElement.getAttributeNodes#;4{x(((rcL|jdS|j||fSr.)rr(rFs   rrzElement.getAttributeNodeNS
s*= 4}  ,	!:;;;rc|jd|fvrtjd||j|jd}||||j	|j
|jfd}|||ur||t||||ur|S||ur|SdS)Nzattribute node already owned)
rrDrEInuseAttributeErrrprr(rremoveAttributeNoderrr_set_attribute_node)rrvold1old2s    rr}zElement.setAttributeNodesT4L00'++,JKKK!!!{ty$//$$T***}  $"3T^!DdKKD 0 0$$T***D$'''tKtKrc|jtj	|j|}n,#t
$rtjwxYw||dSr.)rrDrErMrrr)rrrvs   rremoveAttributezElement.removeAttribute'sz= '%%'''	(;t$DD	(	(	('%%'''	(  &&&&&s	
5)Ac|jtj	|j||f}n,#t$rtjwxYw||dSr.)rrDrErMrr)rrrrvs    rremoveAttributeNSzElement.removeAttributeNS0s= '%%'''	(=,	!:;DD	(	(	('%%'''	(  &&&&&s	7)A c$|tj	|j|jn,#t
$rtjwxYwt
|||j|_|Sr.)	rDrErMrrrrOrdrlrRs  rrzElement.removeAttributeNode9s<'%%'''	(K	"""	(	(	('%%'''	(


"/s	5)Ac&|jdS||jvS)zChecks whether the element has an attribute with the specified name.

        Returns True if the element has an attribute with the specified name.
        Otherwise, returns False.
        NFrrCs  rhasAttributezElement.hasAttributeIs;5t{""rc*|jdS||f|jvSNF)rrFs   rhasAttributeNSzElement.hasAttributeNSSs!= 5i(DM99rc<t||tS)zReturns all descendant elements with the given tag name.

        Returns the list of all descendant elements (not direct children
        only) with the specified tag name.
        rrrCs  rgetElementsByTagNamezElement.getElementsByTagNameXs/tT8::FFFrc>t|||tSr.rrrFs   rgetElementsByTagNameNSzElement.getElementsByTagNameNS`!1,	8::77	7rc4d|jt|fzS)Nz<DOM Element: %s at %#x>)rr+rs rrgzElement.__repr__ds)T\2d88,DDDrrcB||dz|jz|}|D]J}|d|zt	|||j|dK|jr|dt|jdkrN|jdjtj
tjfvr$|jd|dddnO|||jD]}||||z|||||d|jd|d
S|d	|zd
S)zWrite an XML element to a file-like object

        Write the element to the writer object that must provide
        a write method (e.g. a file or StringIO object).
        rz %s="rrr?rrz</z/>%sN)
rr_get_attributesrrrr0rr%rrbrr')rr,r*	addindentr+ra_namerVs        rr'zElement.writexmlgs	VCZ$,.///$$&&jjll		FLLF*+++f
 3444LL?
	(LLDO$$))"+(?0AAA"++FBB????T""" OMMDMM&&*:ItLLLLV$$$LLLdlllDD9:::::LL'''''rc`|t|j|j|Sr.)rprrrrs rrzElement._get_attributess*!!!DK===rc|jrdSdSrrrs r
hasAttributeszElement.hasAttributess;	45rcZ||}||dSr.)r|setIdAttributeNode)rridAttrs   rsetIdAttributezElement.setIdAttributes/&&t,,'''''rc\|||}||dSr.)rr)rrrrs    rsetIdAttributeNSzElement.setIdAttributeNSs1((yAA'''''rc\|||jstjt|tj|js=d|_|xjdz
c_|j	xj
dz
c_
t|dSdS)NTr?)r{rrDrErM_get_containing_entrefNoModificationAllowedErrrrrlrrO)rrs  rrzElement.setIdAttributeNodes>1D!E!E>'%%'''!$''3'22444}	" FM  A%  ..!3..D!!!!!		"	"rrrr).rrrrrrfr%rrr	rrrrbrrrCrrrprwrtrdrxrzr~rr|rr}setAttributeNodeNSrrrremoveAttributeNodeNSrrrrrgr'rrrrrr
rrrmrms1I HIJO*9*035.=T(
222 
&
&
&...")))
<<<
&*''''''0###:::
GGG777EEE((((@>>>((((((	"	"	"	"	"rrmrz*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.ct||||j|j<||j|j|jf<||_dSr.)rOrprrrrrr)elementrvs  rrrsWG    $GN49<@Gd'89
 DrcfeZdZdZdZdZeZdZdZ	dZ
dZdZdZ
dZd	Zd
ZdZdS)	ChildlesszMixin that makes childless-ness easy to implement and avoids
    the complexity of the Node methods that deal with children.
    r
NcdSr.r
rs rr8zChildless._get_firstChildrrcdSr.r
rs rr<zChildless._get_lastChildrrcPtj|jdz)Nz nodes cannot have childrenrDrErFrrRs  rrJzChildless.appendChild'g))M99;;	;rcdSrr
rs rr1zChildless.hasChildNodesurcPtj|jdzNz nodes do not have childrenrrrSrTs   rrBzChildless.insertBeforerrcPtj|jdzr)rDrErMrr_s  rrIzChildless.removeChilds'g!!M99;;	;rcdSr.r
rs rrgzChildless.normalizesrcPtj|jdzrrrrSr[s   rr\zChildless.replaceChildrr)rrrr\rr
EmptyNodeListr0rrr8r<rJr1rBrIrgr\r
rrrrsIJJJI;;;;;;;;;


;;;;;rrcveZdZejZdZdZdZdZ	e
ee	ZdZdZ
e
ee
Zd
dZd	S)ProcessingInstructiontargetrcc"||_||_dSr.r)rrrcs   rrzProcessingInstruction.__init__s			rc|jSr.rcrs r_get_nodeValuez$ProcessingInstruction._get_nodeValuerirc||_dSr.rrs  r_set_nodeValuez$ProcessingInstruction._set_nodeValues
			rc|jSr.rrs r
_get_nodeNamez#ProcessingInstruction._get_nodeNamerrc||_dSr.rrs  r
_set_nodeNamez#ProcessingInstruction._set_nodeNames
rrc	Z||d|jd|jd|dS)Nz<?re?>)rrrcrr,r*rr+s     rr'zProcessingInstruction.writexmls5t{{{DIIIttLMMMMMrNr)rrrrrr%rrrrrrrrrr'r
rrrrs/H"I
88Ix
}55HNNNNNNrrcneZdZdZdZdZeZdZdZe	eexZ
ZdZdZ
dZd	Zd
ZdZdS)

CharacterData)_datarlrHrRrQcdx|_|_dx|_|_d|_t
|dSr)rlrHrRrQrrrrs rrzCharacterData.__init__s@/33T_266t/


drc*t|jSr.)rrcrs rrzCharacterData._get_length49~~rc|jSr.rrs r	_get_datazCharacterData._get_datarrc||_dSr.rrrcs  r	_set_datazCharacterData._set_data	s



rcz|j}t|dkrd}nd}d|jjd|dd|dS)N
z...rz<DOM z node "rz">)rcrrfr)rrc	dotdotdots   rrgzCharacterData.__repr__sOyt99r>>IIIN###T!B$ZZ<	<rc(|dkrtjd|t|jkrtjd|dkrtjd|j|||zSNroffset cannot be negative#offset cannot be beyond end of datazcount cannot be negativerDrEIndexSizeErrrrcroffsetcounts   r
substringDatazCharacterData.substringDatasA::'&&'BCCCS^^##'&&'LMMM199'&&'ABBByu,--rc$|j|z|_dSr.r)rargs  r
appendDatazCharacterData.appendData sIO			rc|dkrtjd|t|jkrtjd|r)|jd|||j|d|_dSdS)Nrrrr)rrrs   r
insertDatazCharacterData.insertData#sA::'&&'BCCCS^^##'&&'LMMM	=	'6'""CC677););=DIII	=	=rc^|dkrtjd|t|jkrtjd|dkrtjd|r)|jd||j||zdz|_dSdSrrrs   r
deleteDatazCharacterData.deleteData,sA::'&&'BCCCS^^##'&&'LMMM199'&&'ABBB	F	'6'*TYve|}}-EEDIII	F	Frcd|dkrtjd|t|jkrtjd|dkrtjd|r,|jd|||j||zd|_dSdSrr)rrrrs    rreplaceDatazCharacterData.replaceData6sA::'&&'BCCCS^^##'&&'LMMM199'&&'ABBB	C	'6'""CC6%<==)A)ACDIII	C	CrN)rrrrrrr]rrrrcrrgrrrrrr
rrrrsWIG x	9555D9<<<...$$$===FFF	C	C	C	C	CrrzLength of the string data.cHeZdZdZejZdZdZdZ	d
dZ
dZdZd	Z
dS)rr
z#textNc|dks|t|jkrtjd|}|j|d|_|j|_|j}|jrF||jj	vr8||j
|n|j|||jd||_|S)Nrzillegal offset value)rrcrDrErrfrlrQrHr0rJrB)rrnewTextnexts    r	splitTextzText.splitTextKsA::#di..00'&&'=>>>..""y) $ 2?	<tt'AAA|++G4444,,Wd;;;Igvg&	rrc<t|||j|dSr.)rrcrs     rr'z
Text.writexmlZs'F		44@AAAAArcr|jg}|j}|E|jtjtjfvr#|d|j|j}nn|E|j}|D|jtjtjfvr"||j|j}nn|Dd	|S)Nrr)
rcrRr%rrbrrPrQrejoin)rrhrKs   r_get_wholeTextzText._get_wholeText_s
YK mzdnd.EFFFAF###%m
mzdnd.EFFF   Mmwwqzzrc|j}|j}|A|jtjtjfvr|j}|||}nn|A|j}|s|||A|jtjtjfvr|j}|||}nn|A|r	||_|SdSr.)	rHrRr%rrbrrIrQrc)rcontentrrKrs     rreplaceWholeTextzText.replaceWholeTextqs mzdnd.EFFF(""1%%%
m
	%t$$$mzdnd.EFFF}""1%%%
m	DIK4rc|jrdSt|}|dS|j|}|dS|Sr)rcstrip_get_containing_elementrlrisElementContent)rrrs   r!_get_isWhitespaceInElementContentz&Text._get_isWhitespaceInElementContentsd9??	5&t,,<5!0066<5((***rr)rrrrrrbr%rrrr'rrrr
rrrrDs~I~HHJ


BBBB
$8
+
+
+
+
+rrisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content.	wholeTextz.The text of all logically-adjacent text nodes.cX|j}| |jtjkr|S|j}| dSr.)rHr%rrfrVrUs  rr	r	s8A
-:***H
L-4rcX|j}| |jtjkr|S|j}| dSr.)rHr%rrrs  rrrs8A
-:333H
L-4rc.eZdZejZdZdZddZdS)Commentz#commentcHt|||_dSr.)rrrrs  rrzComment.__init__s!t$$$


rrczd|jvrtd||d|jd|dS)Nz--z%'--' is not allowed in a comment nodez<!--z-->)rcrLrrs     rr'zComment.writexmlsI49DEEE			44@AAAAArNr)	rrrrrr%rrr'r
rrrrsJ HHBBBBBBrrc,eZdZdZejZdZddZdS)CDATASectionr
z#cdata-sectionrc|jddkrtd|d|jzdS)Nz]]>rz$']]>' not allowed in a CDATA sectionz<![CDATA[%s]]>)rcfindrLrrs     rr'zCDATASection.writexmlsJ9>>%  A%%CDDD%	122222rNr)	rrrrrrr%rr'r
rrrrs:I&HH333333rrcbeZdZdZddZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdS)ReadOnlySequentialNamedNodeMap_seqr
c||_dSr.r)rseqs  rrz'ReadOnlySequentialNamedNodeMap.__init__s
			rc*t|jSr.rrrs rr]z&ReadOnlySequentialNamedNodeMap.__len__rrc*t|jSr.r rs rrz*ReadOnlySequentialNamedNodeMap._get_lengthrrc8|jD]}|j|kr|cSdSr.)rrrJs   rrDz+ReadOnlySequentialNamedNodeMap.getNamedItems8		AzT!!"		rcN|jD]}|j|kr|j|kr|cSdSr.)rrrrNs    rrGz-ReadOnlySequentialNamedNodeMap.getNamedItemNSs@		A~--!+2J2J		rct|tr|j|}n||}|t	||Sr.)rrArGrDr)r
name_or_tuplerVs   rr<z*ReadOnlySequentialNamedNodeMap.__getitem__sPmU++	4&4&
6DD$$]33D<=)))rcP|dkrdS	|j|S#t$rYdSwxYwr7)rrrs  rrz#ReadOnlySequentialNamedNodeMap.itemsD1994	9U##			44	s
%%c@tjdNz"NamedNodeMap instance is read-onlyrDrErrCs  rrLz.ReadOnlySequentialNamedNodeMap.removeNamedItemg..022	2rc@tjdr(r)rFs   rrOz0ReadOnlySequentialNamedNodeMap.removeNamedItemNSr*rc@tjdr(r)rRs  rr>z+ReadOnlySequentialNamedNodeMap.setNamedItemr*rc@tjdr(r)rRs  rrSz-ReadOnlySequentialNamedNodeMap.setNamedItemNSr*rc|jgSr.rrs rrWz+ReadOnlySequentialNamedNodeMap.__getstate__s	{rc |d|_dSr7rrYs  rr[z+ReadOnlySequentialNamedNodeMap.__setstate__s!H			rN)r
)rrrrrr]rrDrGr<rrLrOr>rSrWr[r
rrrrsI

222222222222rrz&Number of entries in the NamedNodeMap.c(eZdZdZdZdZdZdZdS)
Identifiedz@Mix-in class that supports the publicId and systemId attributes.publicIdsystemIdc"||_||_dSr.r2)rr3r4s   r_identified_mixin_initz!Identified._identified_mixin_inits 
 


rc|jSr.)r3rs r
_get_publicIdzIdentified._get_publicId
}rc|jSr.)r4rs r
_get_systemIdzIdentified._get_systemIdr9rN)rrrr\rr6r8r;r
rrr1r1
sLJJ&I!!!rr1cJeZdZejZdZdZdZdZ	dZ
dZdZdZ
ddZdS)DocumentTypeNct|_t|_|rt|\}}||_|j|_dSr.)rentities	notationsrrr)rrrrs    rrzDocumentType.__init__$sJ688
799	" ( 7 7FI!DI	


rc|jSr.)internalSubsetrs r_get_internalSubsetz DocumentType._get_internalSubset,""rc|jetd}|j|_|j|_tjjj}|rg|j_	g|j
_	|j
j	D]X}t|j|j|j
}|j
j	|||||Y|jj	D]}t!|j|j|j
|j}|j|_|j|_|j|_|jj	||||||||||SdSr.)rlr=rrrDrEUserDataHandlerNODE_CLONEDr?rr@Notationr3r4rerEntitynotationNameactualEncodingrrt)rrmclonerrKnotationeentitys        rrnzDocumentType.cloneNode/s^% &&EEJ!YEN/;I
D&(#')$,FFA'
AJ
KKHO(//999--iHEEEE+DDA#AJ
AJ$%N44F,-,<F)&'jFO%&YFNN'..v666--iFCCCC((D%@@@L4rrc
|d||j|jr,||d|jd|d|jdn'|jr ||d|jd|jD|d||j|d|d|zdS)	Nz
<!DOCTYPE z
  PUBLIC ''z  'z
  SYSTEM 'z []r)rrr3r4rBrs     rr'zDocumentType.writexmlJs\"""TY=	DLL DD$---t}}}F
G
G
G
G
]	DLLdddDMMMBCCC*LLLL,---LLSXrr)rrrrDOCUMENT_TYPE_NODEr%rrr3r4rBrrCrnr'r
rrr=r=sv&HIDHHN"""###6rr=c`eZdZdZejZdZdZdZ	dZ
dZdZdZ
dZdZdZdZd	ZdS)
rINct||_||_t|_|||dSr.)rrJrr0r6)rrr3r4rMs     rrzEntity.__init__as8
$"**##Hh77777rc|jSr.rKrs r_get_actualEncodingzEntity._get_actualEncodinggrDrc|jSr.rrs r
_get_encodingzEntity._get_encodingjr9rc|jSr.rtrs r_get_versionzEntity._get_versionmrrc@tjd)Nz(cannot append children to an entity noderDrErF)rrSs  rrJzEntity.appendChildpsg))688	8rc@tjd)Nz+cannot insert children below an entity noder`rs   rrBzEntity.insertBeforetsg))9;;	;rc@tjd)Nz*cannot remove children from an entity noder`r_s  rrIzEntity.removeChildxsg))8::	:rc@tjd)Nz)cannot replace children of an entity noder`rs   rr\zEntity.replaceChild|sg))799	9r)rrrrrENTITY_NODEr%rrKrrtrrXr[r^rJrBrIr\r
rrrIrIXsJHINHG888###888;;;:::99999rrIc&eZdZejZdZdZdS)rHNc@||_|||dSr.)rr6)rrr3r4s    rrzNotation.__init__s%
##Hh77777r)rrrrrr%rrr
rrrHrHs0!HI88888rrHc4eZdZgdZdZdZdZdZdZdS)DOMImplementation))core1.0)ri2.0)riN)rDrj)rDrk)rDN)ls-loadz3.0)rlNcL|dkrd}||f|jvSr)lower	_featuresrrs   rrqzDOMImplementation.hasFeatures*b==G

)T^;;rcb|r&|jtjd|}|duo|duo|du}|s!|rtjd|rt
|\}}|dkr%|dkrtjd|r!|stjd|||}|r|	||	||r|x|_|_
||_||_|S)Nz(doctype object owned by another DOM treezElement with no namerDz$http://www.w3.org/XML/1998/namespacezillegal use of 'xml' prefixz(illegal use of prefix without namespaces)
rHrDrEWrongDocumentErr_create_documentInvalidCharacterErrrrcreateElementNSrJrldoctyperp)	rrrruradd_root_elementrrrs	         rcreateDocumentz DOMImplementation.createDocumentsz	<w)5'**:<<
<##%% , 4!4$1T$9!4$+tO5
	F!1
	F'--.DEEE	% ( 7 7FI#IIIg**+HIII
@l
@g**>@@@)),
FFG
)(((OOG$$$	=9<<G!6!
rc@t|}||_||_|Sr.)r=r3r4)rrr3r4rus     rcreateDocumentTypez$DOMImplementation.createDocumentTypes$}--##rc6||dr|SdSr.)rqr}s  rr~zDOMImplementation.getInterfaces"??7D))	K4rctSr.)Documentrs rrrz"DOMImplementation._create_documentszzrN)	rrrrorqrwryr~rrr
rrrhrhsqI<<<
+++ZrrhcLeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dS)
ElementInfozObject that represents content-model information for an element.

    This implementation is not expected to be used in practice; DOM
    builders should provide implementations which do the right thing
    using information available to it.

    rsc||_dSr.rsrCs  rrzElementInfo.__init__s
rctSr.rranames  rrzElementInfo.getAttributeTyperctSr.rrFs   rrzElementInfo.getAttributeTypeNSrrcdSrr
rs rr
zElementInfo.isElementContentrrcdS)zQReturns true iff this element is declared to have an EMPTY
        content model.Fr
rs risEmptyzElementInfo.isEmptys	urcdS)z7Returns true iff the named attribute is a DTD-style ID.Fr
rs  rrzElementInfo.isIdurcdS)z<Returns true iff the identified attribute is a DTD-style ID.Fr
rFs   rrzElementInfo.isIdNSrrc|jSr.rsrs rrWzElementInfo.__getstate__rrc||_dSr.rsrYs  rr[zElementInfo.__setstate__s
rN)rrrr\rrrrr
rrrrWr[r
rrr~r~sI
rr~c|jtjkr"|jd|_dSt
|r,|jjd|j_dSdSr.)r%rr&	_id_cacheclear_id_search_stackrrlrs rrOrOsw}*** $	d		2$**,,,-1+++22rcleZdZdZejejejejfZ	e
ZejZ
dZdZdZdZdxZZdZdZdZdZdZdZdZdZdZdZdZd	Zd
Z dZ!dZ"d
Z#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5d Z6d!Z7d"Z8d#Z9d$Z:		d(d&Z;d'Z<dS))r|)
_elem_inforurr0rz	#documentNFrcdd|_t|_i|_i|_d|_dSr.)rurr0rrrrs rrzDocument.__init__%s2"** $rcp|jr|j|jf}n|j}|j|Sr.)rrrrr()rrrs   rrzDocument._get_elem_info.s<	"&(99CC/C""3'''rc|jSr.rWrs rrXzDocument._get_actualEncoding5rDrc|jSr.)rurs r_get_doctypezDocument._get_doctype8rrc|jSr.)documentURIrs r_get_documentURIzDocument._get_documentURI;src|jSr.rZrs rr[zDocument._get_encoding>r9rc|jSr.)errorHandlerrs r_get_errorHandlerzDocument._get_errorHandlerAs  rc|jSr.)rrs r_get_standalonezDocument._get_standaloneDr5rc|jSr.)strictErrorCheckingrs r_get_strictErrorCheckingz!Document._get_strictErrorCheckingGs''rc|jSr.r]rs rr^zDocument._get_versionJrrc|j|jvr>tjt|dt||j|j||jtj	kr3|
rtjdt||S)Nr>z two document elements disallowed)r%rCrDrErFrGrHrIrrf_get_documentElementrJrRs  rrJzDocument.appendChildMs= 666'--.24jjjj$t***EGG
G?&
O''---=D---((**.'--244
4d+++rc	|j|n,#t$rtjwxYwdx|_|_d|_|j	|urd|_	|Sr.)
r0r^rLrDrErMrQrRrHdocumentElementr_s  rrIzDocument.removeChild]s	(O""8,,,,	(	(	('%%'''	(:>>x7"8++#'D r`cL|jD]}|jtjkr|cSdSr.)r0r%rrfrRs  rrzDocument._get_documentElementis;O		D} 1112		rc|j |jd|_t|dSr.)rurdrrs rrdzDocument.unlinkns=<#L!!!DLDrc|sdS|jddd}|j|_|j|_|j|_|jD]}t
|||}|j|sJ|j	||j
tjkr
|j
Jn%|j
tjkr|jJ||_||_|t$jjj|||Sr.)rprwrrrtr0rkrlr{rer%rr&rrSrurHrrDrErFrG)rrmrLrK
childclones     rrnzDocument.cloneNodets	4#224tDD?
		*		*A$Qe44J+66u=====##J///"d&888,4444$(???},,, *
$)J!!$$SW%<%H%)5	2	2	2rc0t}||_|Sr.)rrl)rrs  rcreateDocumentFragmentzDocument.createDocumentFragmentsrc2t|}||_|Sr.)rmrl)rrrNs   r
createElementzDocument.createElementsGrct|tstdt}||_||_|SNznode contents must be a string)rr r?rrcrl)rrcts   rcreateTextNodezDocument.createTextNodes?$$$	><===FFrct|tstdt}||_||_|Sr)rr r?rrcrlrrcrUs   rcreateCDATASectionzDocument.createCDATASections?$$$	><===NNrc2t|}||_|Sr.)rrlrs   r
createCommentzDocument.createCommentsDMMrc4t||}||_|Sr.)rrl)rrrcps    rcreateProcessingInstructionz$Document.createProcessingInstructions!&$//rc@t|}||_d|_|Sr)rrlr)rras   rcreateAttributezDocument.createAttributes KKrcZt|\}}t|||}||_|Sr.)rrmrl)rrrrrrNs      rrtzDocument.createElementNSs1$]33	M<88rcjt|\}}t||||}||_d|_|Sr)rrrlr)rrrrrrs      rcreateAttributeNSzDocument.createAttributeNSs:$]33	i@@rc8t||||}||_|Sr.)rIrl)rrr3r4rJrNs      r_create_entityzDocument._create_entitys!48\::rc6t|||}||_|Sr.)rHrl)rrr3r4rKs     r_create_notationzDocument._create_notationsT8X..rc||jvr
|j|S|js	|jsdS|j}||jg}||_n|sdSd}|rx|}|d|jD||}|r|j	
D]}|jrG||j|j
r&||j|j<|j|kr|}F|jsntP||jr'||j|j<|j|kr|}|jsn3|jr*||j|j<|j|kr|}|jdkrnnF|jr?|j	
D]%}|jr||j|j<|j|kr|}&|n|x|S)Nc.g|]}|jtv|Sr
)r%rN).0ris  r
<listcomp>z+Document.getElementById.<locals>.<listcomp>s2IIIE"^/GGG GGGrr?)rrrrrpopextendr0rrrrrrrrrrr)rr+stackresultrVrrvs       rgetElementByIdzDocument.getElementByIdsN
>"%%	4#7	4%=)*E$)D!!	4&	99;;DLLIIT_III
J
J
J&&t,,D
*!O2244""D(";;t'8$.II&9=DN4:6#zR//)-%)%9& %49--"59tz2:++%)FF!%!5"!E""59tz2:++%)FF!1Q66!E%
* O2244**D{*59tz2:++%)F!M&	N
rc<t||tSr.rrCs  rrzDocument.getElementsByTagNames.tT8::FFFrc>t|||tSr.rrFs   rrzDocument.getElementsByTagNameNS
rrc8|j||Sr.)rprqrrs   rruzDocument.isSupporteds"--gw???rc|jtjkrtjd|jtjkrtjdt|||S)Nzcannot import document nodesz!cannot import document type nodes)r%rr&rDrENotSupportedErrrSrk)rrVrms   r
importNodezDocument.importNodesb=D...'))*HIII
]d5
5
5'))*MNNN4t,,,rrcg}|r|d|d||d|rdndd|dd|d||jD]}|||||dS)	Nz
encoding="rzstandalone="yesnoz<?xml version="1.0" rer)rerrr0r')	rr,r*rr+rrdeclarationsrVs	         rr'zDocument.writexmls	: 8X 8 8 8999! O
/Luu O O OPPPLCHH\,B,BLLdLLMMMO	;	;DMM&&)T::::	;	;rc|j|ur*tjd|d|j|jt
jt
jfvrtjd|tkrd|vrT|
dd\}}|dkr4|tjjkrtjdnX|dkrI|tjjkr4|jt
jkrtjdd}|}nd}d}|jt
jkr&|j
}||j}||nd}||_||_||_||_|jt
jkr||_n5||_|,|||r|||S)	Nz3cannot rename nodes from other documents;
expected z,
found z8renameNode() only applies to element and attribute nodesrr?rzillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rlrDrErqr%rrfrrrrrrrrrrrrrrrr}r)rrKrrrrris_ids        r
renameNodezDocument.renameNode(s?$&&'***,0DD!//CDD
D
:d/1DEEE'))JLL
L?**d{{$(JJsA$6$6!	''&#'*AAA'..7999goo&#'*AAA*(;;;'..>@@@ 		FI:,,,nG"++A...G %
:***AIIAF"((+++2..q111r)rrrNN)=rrrrrrfrrrSrCrhrpr&r%rrrrHrRrQrKrrrtrrrrrrrXrrr[rrrr^rJrIrrdrnrrrrrrrrtrrrrrrrurr'rr
rrr|r|
s@I*D,L*D,CE'&((N!HHIJJ$((Ok
NHJGLKO%%%(((###   !!!(((,,, 



*





888tGGG777@@@---KO ;;;; 33333rr|rz#Top-level element of this document.c	|j|rtjjj}ntjjj}|jtj	kr|
|j|j}|j
D]T}||j|j|j||j|j}|j|_U|r0|jD](}t+|||}||)nG|jtjkrH|}|r0|jD](}t+|||}||)n|jtjkr||j}n|jtjkr||j}n|jtjkr"||j |j}nQ|jtj!kr|"|j}n |jtj#kr5|$|j|j}d|_|j|_n|jtj%kr|j|usJtjjj}|j&'|j(|j)|j*}||_|r:g|j+_,g|j-_,|j-j,D]o}	t]|	j|	j)|	j*}
||
_|j-j,/|
ta|	dr|	1||	|
p|j+j,D]}te|j|j)|j*|j3}|j4|_4|j5|_5|j6|_6||_|j+j,/|ta|dr|1|||n/tj7dtq|zta|dr|1||||S)zo
    Clone a node and give it the new owner document.
    Called by Node.cloneNode and Document.importNode
    TrzCannot clone node %s)9rlr{rDrErFrG
NODE_IMPORTEDr%rrfrtrrrrrrrrrr0rkrJr@rrbrrcrrrrrrrrrrSrpryrr3r4r?rr@rHrerrrIrJrKrrtrrG)
rVrmnewOwnerDocumentrrLrvrrirUrKrMrNrOs
             rrkrkasK
$$%566:G+7		G+9	}))) 001B15@@O**,,	)	)D  !2DM4:NNN(():DNKKA.AKK	%
%
%t-=>>!!!$$$$	
$5	5	5 7799	%
%
%t-=>>!!!$$$$	
$.	(	( //	::	
$1	1	1 33DI>>	
$:	:	: <<T[=AYHH	
$+	+	+ ..ty99	
$-	-	- 2243D37=BBj	
$1	1	1!)99999G+9	 /BBIt}dm55.	D"$EN#%EO ^(
F
F#AJ
AJGG)9&$++H5551788F--iHEEE]'	
D	
D
AJ
 !00()(8%"#*!"'7$#**62221788D--iFCCC
g%%&<tDzz&IJJJ
t.//=$$Ye<<<Lrcl|dd}t|dkr|Sd|dfS)Nrr?r)rr)rfieldss  rrrs<

 
 a
(
(F
6{{a
fQi  rc||i|}|\}}||||Sr.)getEvent
expandNoder)funcargskwargseventstoktyperootNodes      r_do_pulldom_parsersP
T4
"6
"
"F))GX
h
LLNNNOrc||sddlm}||Sddlm}t	|j|f||dS)z3Parse a file into a DOM by filename or file object.Nrexpatbuilderpulldom)parserbufsize)xml.domrparserr)filerrrrs     rrrsh
~g~((((((!!$'''###### '2244	4rcz|ddlm}||Sddlm}t	|j|fd|iS)z&Parse a file into a DOM from a string.Nrrrr)rrparseStringrr)stringrrrs    rrrsb
~((((((''///###### !4vi"*F!355	5rc|rTt|trtj|}|D](\}}tj||sdS)tjSr.)rr r_parse_feature_stringr|rprq)featuresfvs   rgetDOMImplementationrsoh$$	>3H==H		DAq*55a;;
tt
""rrr.)7r\r!rrDrrrrxml.dom.minicompatxml.dom.xmlbuilderrr	rErrfrrNdefpropertyrYrrrrrrobjectr
AttributeListr`rrmrrrrrr	rrrrr1r=rIrHrhr~rOr|rkrrrrrr
rr<module>rs"
			JJJJJJJJJJJJ    >>>>>>>> GL5GL>@ttttt37<tttlD,$@AAAAD+$?@@@@D+$HIIII%%%%%t%%%$y8y8y8y8y84y8y8y8vD&$FGGGGD+$MNNNND,$EFFFFa?a?a?a?a?6a?a?a?FL(68888
v(8D$L"L"L"L"L"dL"L"L"\G\<>>>>G[79999	 	 	 &;&;&;&;&;&;&;&;RNNNNNItNNN4ECECECECECItECECECNM8)EFFFFS+S+S+S+S+=S+S+S+jD0.////D+@BBBBBBBBBmBBB	3	3	3	3	34	3	3	3<<<<<V<<<|*H8::::







::::::y$:::x&9&9&9&9&9Z&9&9&9P88888z9d888MMMMM+MMM^(((((&(((T222QQQQQtZQQQf
H'57777OOOd!!!44445555######r