+
    |fu8                     4   R t ^ RIt^ RIt^ RIt^ RIHt ^RIHt ^RIH	t	 ^RIHt ^RIH
t ^RIHt ^ RIH
t
 Rt]P                  ! R	4      t]
P"                  ! R
4      P$                  t ! R R4      t ! R R4      tR tR t ! R R]P0                  4      tR# )a  Module for supporting the lxml.etree library. The idea here is to use as much
of the native library as possible, without using fragile hacks like custom element
names that break between releases. The downside of this is that we cannot represent
all possible trees; specifically the following are known to cause problems:

Text or comments as siblings of the root element
Docypes with no name

When any of these things occur, we emit a DataLossWarning
N)MutableMapping)base)DataLossWarning)	constants)etree)	_ihatexmlTz{([^}]*)}(.*)asdc                   &   a  ] tR t^#t o R tRtV tR# )DocumentTypec                *    Wn         W n        W0n        R # NnamepublicIdsystemId)selfr   r   r   s   &&&&B/usr/lib/python3/dist-packages/html5lib/treebuilders/etree_lxml.py__init__DocumentType.__init__$   s    	      r   N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   r
   r
   #   s     ! !r   r
   c                   B   a  ] tR t^*t o R tR tR t]! ]4      tRt	V t
R# )Documentc                "    R V n         . V n        R # r   )_elementTree_childNodesr   s   &r   r   Document.__init__+   s     r   c                    V P                   P                  4       pV P                   P                  4       P                  4        F  pK  	  VP                  VP                  4       R # r   )r!   getrootitersiblingsaddnext_element)r   elementlasts   && r   appendChildDocument.appendChild/   sO      ((*%%--/<<>D ? 	W%%&r   c                    V P                   # r   )r"   r#   s   &r   _getChildNodesDocument._getChildNodes6   s    r   )r"   r!   N)r   r   r   r   r   r,   r/   property
childNodesr   r   r   s   @r   r   r   *   s      '  .)Jr   r   c                    aaa . o\         P                  ! R R7      oRVVV3R lloS! V ^ 4       RP                  S4      # )TpreventDoubleDashCommentsc           
      
  < \        V R 4      '       Eg   \        V R4      '       EdP   SP                  R4       V P                  P                  '       d   V P                  P                  '       g;   V P                  P
                  '       g   RV P                  P                  ,          pMKRV P                  P                  : RV P                  P                  : RV P                  P
                  : R2pSP                  RR	V^,           ,          : V: 24       V P                  4       pVP                  4       e   VP                  4       pK$  Ve"   S! W1^,           4       VP                  4       pK%  R
# \        V \        4      '       g   \        V \        4      '       dX   \        V \        4      '       g   \        P                  ^ ,          ^8X  g   Q hSP                  RR	V,          : RV : R24       R
# SP                  R4       V  F  pS! W1^,           4       K  	  R
# V P                  \         8X  d   SP                  RR	V,          : RV P"                  : R24       \        V R4      '       dB   V P$                  '       d.   SP                  RR	V,          : RV P$                  : R24       R
# R
# R
# \        V \&        P(                  4      '       g   Q h\*        P,                  P/                  V P                  4      pVeo   VP1                  ^4      pVP1                  ^4      p\2        P4                  V,          pSP                  RR	V,          : RV: R	SP7                  V4      : R24       M:SP                  RR	V,          : RSP7                  V P                  4      : R24       \        V R4      '       d   . pV P8                  P;                  4        F  w  r\,        P/                  V	4      pVeE   VP=                  4       w  rYSP7                  V	4      p	\2        P4                  V,          pV: R	V	: 2pMSP7                  V	4      pVP                  W34       K  	  \?        V4       F0  w  rSP                  RR	V^,           ,          : V	: RV
: R24       K2  	  V P"                  '       d3   SP                  RR	V^,           ,          : RV P"                  : R24       V^,          pV  F  pS! W4       K  	  \        V R4      '       dI   V P$                  '       d5   SP                  RR	V^,
          ,          : RV P$                  : R24       R
# R
# R
# )tagr&   z	#document<!DOCTYPE %s>z
<!DOCTYPE z "z" "z">| N"z#document-fragmentz<!-- z -->tail<>attrib=") hasattrappenddocinfointernalDTD	public_id
system_url	root_namer&   getpreviousgetnext
isinstancestrbytessysversion_infor7   comment_typetextr<   r   _Elementetree_builders
tag_regexpmatchgroupr   prefixesfromXmlNamer?   itemsgroupssorted)r*   indentdtd_strnext_elementnsmatchnsr7   prefix
attributesr   valueattr_stringchildinfosetFilterrvserializeElements   &&           r   rg   (testSerializer.<locals>.serializeElement@   s   w&&w	**		+&??...#OO555#OO666"1GOO4M4M"M $OO55#OO55#OO66#8 II
);WEF&0"..0<#/#;#;#=L".$\A:>#/#7#7#9L / GS))Z-G-G!'3//33C3CA3F!3KKK		vw?@ 		./$+L$\A:> %,[[L(II#,,EFw''GLLL		vw||DE -9' gu~~6666$//55gkkBG"]]1%mmA&"++B/		#,,*7*C*CC*HJ K 		sV||'4'@'@'MO P w))
#*>>#7#7#9KD(..t4G*#*>>#3,88>!*!3!3B!717&>&3&?&?&E%%{&:; $: $**#5KDIIcVaZ.@$NO $6 |||		
););W\\JKaKF  / !w''GLLL		
););W\\JK -9'r   
    )r   InfosetFilterjoin)r*   re   rf   rg   s   &@@@r   testSerializerrn   <   sA    	B++dKMEL ELL Wa 99R=r   c                J   aa . oVV3R loS! V 4       RP                  S4      # )z4Serialize an element and its child nodes to a stringc           
      H  < \        V R 4      '       g   V P                  P                  '       db   V P                  P                  '       d   V P                  P                  pMRV P                  P                  ,          pSP                  V4       S! V P                  4       4       EM0V P                  \        8X  d"   SP                  RV P                  : R24       MV P                  '       g"   SP                  RV P                  : R24       MiRP                  V P                  P                  4        UUu. uF  w  r#V: RV: R2NK  	  upp4      pSP                  RV P                  : RV: R24       V P                  '       d   SP                  V P                  4       V  F  pS! V4       K  	  SP                  R	V P                  : R24       \        V R
4      '       d2   V P                  '       d   SP                  V P                  4       R# R# R# u uppi )r7   r8   z<!--z-->r=   r>   r:   r@   r;   z</r<   N)rA   rC   rD   doctyperG   rB   r&   r7   rO   rP   r?   rm   rX   r<   )r*   r\   r   rb   attrrd   rf   rg   s   &     r   rg   "tostring.<locals>.serializeElement   ss   w&&***??***%oo55G-0I0IIG		'"W__./[[L(IIW\\34 >>>		GKK12xx4;NN4H4H4J!L4J[T 15e!<4J!L M		w{{D9:|||		',,'  ' ! II./7F##IIgll# )5#!Ls   :H
 )rm   )r*   rf   rg   s   &@@r   tostringru      s&    	B$@ W772;r   c                      a a ] tR t^t o]t]tRtRt	]t
]tRR ltR tR tR tR tR tRR ltRV 3R	 lltR
 tRtVtV ;t# )TreeBuilderNc                l  aaa \         P                  ! \        VR 7      o\        P                  ! RR7      ;oV n        Wn         ! V3R lR\        4      o ! VVV3R lRSP                  4      p ! VV3R lRSP                  4      pW0n
        W@n        \        P                  P                  W4       R	# )
)fullTreeTr4   c                   X   <a  ] tR t^t o R tV3R ltR tR tR tR t	R t
R tR	tV tR
# )(TreeBuilder.__init__.<locals>.Attributesc                    Wn         R # r   r)   r   r*   s   &&r   r   1TreeBuilder.__init__.<locals>.Attributes.__init__   s     'r   c                   < \        V\        4      '       d*   R V^,          : RSP                  V^,          4      : 2pV# SP                  V4      pV# ){})rJ   tuplecoerceAttribute)r   keyr   re   s   && r   
_coerceKey3TreeBuilder.__init__.<locals>.Attributes._coerceKey   sN    c5))'*1vv}/L/LSQRV/TUD  )88=Dr   c                r    V P                   P                   P                  V P                  V4      ,          pV# r   r)   r?   r   r   r   rb   s   && r   __getitem__4TreeBuilder.__init__.<locals>.Attributes.__getitem__   s*    ..55dooc6JKr   c                h    W P                   P                   P                  V P                  V4      &   R # r   r   r   s   &&&r   __setitem__4TreeBuilder.__init__.<locals>.Attributes.__setitem__   s#    FK&&--dooc.BCr   c                f    V P                   P                   P                  V P                  V4       R # r   r   )r   r   s   &&r   __delitem__4TreeBuilder.__init__.<locals>.Attributes.__delitem__   s#    MM**11$//#2FGr   c                T    \        V P                  P                  P                  4      # r   )iterr)   r?   r#   s   &r   __iter__1TreeBuilder.__init__.<locals>.Attributes.__iter__   s    DMM2299::r   c                T    \        V P                  P                  P                  4      # r   )lenr)   r?   r#   s   &r   __len__0TreeBuilder.__init__.<locals>.Attributes.__len__   s    4==118899r   c                ^    V P                   P                   P                  P                  4       # r   )r)   r?   clearr#   s   &r   r   .TreeBuilder.__init__.<locals>.Attributes.clear   s!    }}--44::<<r   r}   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   re   s   @r   
Attributesr{      s4     (LH;:= =r   r   c                      <a  ] tR t^t o VVV3R ltV3R ltV3R lt]! ]]4      tR t	R t
]! ]	]
4      tR
VV3R lltR tR	tV tR# )%TreeBuilder.__init__.<locals>.Elementc                ~   < SP                  V4      pSP                  P                  WVR 7       S! V 4      V n        R# ))	namespaceN)coerceElementElementr   _attributes)r   r   r   r   builderre   s   &&&r   r   .TreeBuilder.__init__.<locals>.Element.__init__   s7    $2248((y(I#-d#3 r   c                   < SP                  V4      V n        V P                  V P                  V P                  4      V P                  n        R # r   )r   _name_getETreeTag
_namespacer)   r7   )r   r   re   s   &&r   _setName.TreeBuilder.__init__.<locals>.Element._setName   s9    *88>
$($5$5JJ%1!r   c                :   < SP                  V P                  4      # r   )rW   r   )r   re   s   &r   _getName.TreeBuilder.__init__.<locals>.Element._getName   s    $00<<r   c                    V P                   # r   )r   r#   s   &r   _getAttributes4TreeBuilder.__init__.<locals>.Element._getAttributes   s    '''r   c                `    V P                   pVP                  4        VP                  V4       R # r   )ra   r   update)r   rb   ra   s   && r   _setAttributes4TreeBuilder.__init__.<locals>.Element._setAttributes   s%    !__
  "!!%(r   Nc                b   < SP                  V4      pSP                  P                  WV4       R # r   )coerceCharactersr   
insertText)r   datainsertBeforer   re   s   &&&r   r   0TreeBuilder.__init__.<locals>.Element.insertText   s'    $55d;**4|Dr   c                    \        V 4      ! V P                  V P                  4      pV P                  P                  '       d:   VP                  P                  P                  V P                  P                  4       V# r   )typer   r   r)   r?   r   r~   s   & r   	cloneNode/TreeBuilder.__init__.<locals>.Element.cloneNode   sS    t*TYY?=='''$$++224==3G3GHr   )r   r   r   )r   r   r   r   r   r   r   r1   r   r   r   ra   r   r   r   r   )r   r   r   re   s   @r   r   r      sP     4
1
= Hh/D()
 "..AJE E r   r   c                   T   <a  ] tR tRt o VV3R ltV3R ltR t]! ]]4      tRt	V t
R# )%TreeBuilder.__init__.<locals>.Commenti  c                `   < SP                  V4      pSP                  P                  W4       R # r   )coerceCommentCommentr   )r   r   r   re   s   &&r   r   .TreeBuilder.__init__.<locals>.Comment.__init__  s%    $2248((4r   c                J   < SP                  V4      pWP                  n        R # r   )r   r)   rP   )r   r   re   s   &&r   _setData.TreeBuilder.__init__.<locals>.Comment._setData  s    $2248%)"r   c                .    V P                   P                  # r   )r)   rP   r#   s   &r   _getData.TreeBuilder.__init__.<locals>.Comment._getData  s    }})))r    N)r   r   r   r   r   r   r   r1   r   r   r   )r   r   re   s   @r   r   r     s"     5** Hh/Dr   r   N)rR   getETreeModuler   r   rl   re   namespaceHTMLElementsr   r   r   elementClasscommentClassr   rw   r   )r   r   ry   r   r   r   r   re   s   &&&  @@@r   r   TreeBuilder.__init__   s     //I-6-D-D_c-dd*%:"	= 	=<"	 "	goo "	H	0 	0goo 	0 $#!!$>r   c                    \         P                  P                  V 4       V P                  V n        . V n        R V n        R # r   )r   rw   resetinsertCommentInitialinsertCommentinitial_commentsrq   r#   s   &r   r   TreeBuilder.reset  s3    t$!66 "r   c                    \        V4      # r   )rn   r~   s   &&r   rn   TreeBuilder.testSerializer  s    g&&r   c                    \         '       d   V P                  P                  # V P                  P                  P                  4       # r   )ry   documentr!   r&   r#   s   &r   getDocumentTreeBuilder.getDocument  s0    8==---==--5577r   c                ,   . pV P                   ^ ,          P                  pVP                  '       d   VP                  VP                  4       VP	                  \        V4      4       VP                  '       d   VP                  VP                  4       V# rj   )openElementsr)   rP   rB   extendlistr<   )r   fragmentr*   s   &  r   getFragmentTreeBuilder.getFragment%  sd    ##A&//<<<OOGLL)W&<<<OOGLL)r   c                <   VR ,          pVR,          pVR,          pV'       g%   \         P                  ! R\        4       RV n        R# V P                  P                  V4      pWR8w  d   \         P                  ! R\        4       V P                  WSV4      pW`n        R# )r   r   r   z#lxml cannot represent empty doctypeNz%lxml cannot represent non-xml doctype)warningswarnr   rq   re   r   doctypeClass)r   tokenr   r   r   coercedNamerq   s   &&     r   insertDoctypeTreeBuilder.insertDoctype/  sz    V}$$MM?QDL,,::4@K"EW''xHG"Lr   c                    Ve   W P                   J g   Q hV P                   P                  e   Q hV P                  P                  V4       R # r   )r   r!   r   rB   )r   r   parents   &&&r   r    TreeBuilder.insertCommentInitial?  s@    ~==!888}}))111$$T*r   c                   < W P                   8X  dZ   V P                   P                  P                  4       R,          P                  \        8X  d   \
        P                  ! R\        4       \        \        V `+  W4       R# )   z@lxml cannot represent adjacent comments beyond the root elementsN)r   r!   r&   r7   rO   r   r   r   superrw   r   )r   r   r   	__class__s   &&&r   insertCommentMainTreeBuilder.insertCommentMainD  sR    mm#**224R8<<LMM\^mnk4.t<r   c                B   R pV P                   '       Ed   V P                   P                  '       g   Q hVRV P                   P                  ,          ,          pV P                   P                  f   V P                   P                  Ee   TRV P                  P                  V P                   P                  ;'       g    R 4      ,          ,          pV P                   P                  '       d   V P                   P                  pVP                  R4      ^ 8  dD   VP                  R4      ^ 8  d.   \        P                  ! R\        4       VP                  RR4      pVP                  R4      ^ 8  d   VRV,          ,          pMVR	V,          ,          pM	VR
,          pVR,          pV P                   P                  VR,          8w  d   \        P                  ! R\        4       VR,          p\        P                  ! V4      pV P                   F6  pV P                  VR,          4      pVP                  VP                   4       K8  	  V P#                  4       V n        VP'                  4       V P$                  n        VR,          pVP+                  RV P,                  4      pVf   Tp	M
RV: RV: 2p	Wn        V P1                  Wx4      p
WJn        V P$                  P2                  P5                  V
4       V P6                  P5                  V
4       V P8                  V n        R# )rt   z<!DOCTYPE %sNz PUBLIC "%s" 'r;   z6DOCTYPE system cannot contain single and double quotesU00027z"%s"z'%s'z''r>   r   zGlxml cannot represent doctype with a different name to the root elementz$<THIS_SHOULD_NEVER_APPEAR_PUBLICLY/>r   r   r   r   )rq   r   r   r   re   coercePubidfindr   r   r   replacer   
fromstringr   r   addpreviousr)   documentClassr   getroottreer!   getdefaultNamespacer7   r   r"   rB   r   r   r   )r   r   docStrsysidrootcomment_tokencommentr   r   	etree_tagroot_elements   &&         r   
insertRootTreeBuilder.insertRootJ  sp   
 <<<<<$$$$$nt||'8'888F%%1LL))5? ..::4<<;P;P;V;VTVWY Z<<((( LL11Ezz#!+

310D &^`op %c8 <zz#!+&5.0&5.0dNFcMF||  E&M1gixy88' "22M''f(=>GW--. 3
 **,%)%5%5%7" V}IIk4+@+@A	I  %.t4I ((9 $!!((6  . "33r   )r   rq   r   r   re   r   r   r   )Fr   )r   r   r   r   r   r  r
   r   r   r   fragmentClassr   implementationr   r   rn   r   r   r   r   r   r  r   r   __classcell__)r   r   s   @@r   rw   rw      sW     MLLLMNX?t'8# +
=74 74r   rw   )__doc__r   rerM   collections.abcr   rt   r   r   r   r   rR   r   
lxml.etreery   compilerS   r   r7   rO   r
   r   rn   ru   rw   r   r   r   <module>r     s   	  	 
 *  '  %   ZZ(
}}U#''! !* *$L^&RM4$"" M4r   