+
     2i7\  c                   s   R t R.t^ RIHtHtHtHtHtHtH	t	H
t
Ht ^ RIHt ^ RIHtHtHtHtHtHt ^ RIt^ RIHtHtHtHtHt ^ RIHtHtHt ^ RI t ^ RI!H"t" ^ R	IH#t#H$t$H%t%H&t& ]	'       d   ^ R
I'H(t( ^ RI)H*t+  ! R R]4      t, ! R R]+PZ                  4      t. ! R R]/4      t0 ! R R]+Pb                  4      t2 ! R R]24      t3 ! R R]24      t4R# )ZMITHTML5TreeBuilder)	AnycastDictIterableOptionalSequenceTYPE_CHECKINGTupleUnion)	TypeAlias)_AttributeValue_AttributeValues	_Encoding
_Encodings_NamespaceURL
_RawMarkupN)DetectsXMLParsedAsHTML
PERMISSIVEHTMLHTML_5HTMLTreeBuilder)NamespacedAttributePageElementnonwhitespace_re)
namespaces)CommentDoctypeNavigableStringTagBeautifulSoup)basec                   s   a  ] tR t^;t o RtRt]]]].t	Rt
RV 3R lR lltV 3R lR ltV 3R	 lR
 ltV 3R lR ltV 3R ltRtV tR# )r    a>  Use `html5lib <https://github.com/html5lib/html5lib-python>`_ to
build a tree.

Note that `HTML5TreeBuilder` does not support some common HTML
`TreeBuilder` features. Some of these features could theoretically
be implemented, but at the very least it's quite difficult,
because html5lib moves the parse tree around as it's being built.

Specifically:

* This `TreeBuilder` doesn't use different subclasses of
  `NavigableString` (e.g. `Script`) based on the name of the tag
  in which the string was found.
* You can't use a `SoupStrainer` to parse only part of a document.
html5libTNc                s   < V ^8  d   QhRS[ RS[S[,          RS[S[,          RS[S[,          RS[S[S[ S[S[,          S[S[,          S[3,          ,          /# )   markupuser_specified_encodingdocument_declared_encodingexclude_encodingsreturn)r   r   r   r   r   r   boolZformat__classdict__   ":/usr/lib/python3.14/site-packages/bs4/builder/_html5lib.py__annotate__HTML5TreeBuilder.__annotate__W   si     * ** "*)!4* %-Y$7	*
 $J/* 
%
HY$7)9LdRS	T*    c              #  s   "   W n         VR 3VR33 F.  w  rVV'       g   K  \        P                  ! RV RV R2^R7       K0  	  \        P                  ! V^R7       VRRR3x  R# 5i)r%   r&   zYou provided a value for z0, but the html5lib tree builder doesn't support Z.Z
stacklevelNF)r$   warningswarnr   Zwarn_if_markup_looks_like_xml)selfr#   r$   r%   r&   Zvariablenames   &&&&&  r,   prepare_markupZHTML5TreeBuilder.prepare_markupW   s}      (?$ ()EF 34
NH x/v5efjekklm 
 	<<VPQRtT5))s   A%AA%c                $   < V ^8  d   QhRS[ RR/# )r"   r#   r'   N)r   r)   r+   r,   r-   r.   u   s     #. #.: #.$ #.r/   c                sX   V P                   e1   V P                   P                  e   \        P                  ! R^R7       \        P
                  ! V P                  R7      pV P                  f   Q hW P                  n        \        4       p\        V\        4      '       g   V P                  VR&   VP                  ! V3/ VB p\        V\        4      '       d	   RVn        M9VP                  P                   P"                  ^ ,          pVP$                  pWTn        RV P                  n        R# )zyRun some incoming markup through some parsing process,
populating the `BeautifulSoup` object in `HTML5TreeBuilder.soup`.
NzYou provided a value for parse_only, but the html5lib tree builder doesn't support parse_only. The entire document will be parsed.r0   )ZtreeZoverride_encoding)soupZ
parse_onlyr1   r2   r!   
HTMLParsercreate_treebuilderunderlying_builderparserdict
isinstancestrr$   Zparseoriginal_encoding	tokenizerstreamZcharEncodingr4   )r3   r#   r;   Zextra_kwargsZdocr?      &&    r,   feedZHTML5TreeBuilder.feedu   s     99 TYY%9%9%EMM U $$$*A*AB&&222)/&v&#&& 150L0LL,-ll62\2 fc"" %)C! & 0 0 7 7 D DQ G !2 6 6$5!)-&r/   c                r6   )r"   namespaceHTMLElementsr'   TreeBuilderForHtml5libr(   r)   r+   r,   r-   r.      s     ' '%)'	!'r/   c                sf    \        WP                  V P                  R7      V n        V P                  # )zCalled by html5lib to instantiate the kind of class it
calls a 'TreeBuilder'.

:param namespaceHTMLElements: Whether or not to namespace HTML elements.

:meta private:
)store_line_numbers)rE   r7   rG   r:   )r3   rD      &&r,   r9   Z#HTML5TreeBuilder.create_treebuilder   s.     #9!99AXAX#
 &&&r/   c                s&   < V ^8  d   QhRS[ RS[ /# )r"   fragmentr'   r>   r)   r+   r,   r-   r.      s     F F# F# Fr/   c                s    RV,          # )zSee `TreeBuilder`.z)<html><head></head><body>%s</body></html> )r3   rI   rH   r,   test_fragment_to_documentZ*HTML5TreeBuilder.test_fragment_to_document   s    :XEEr/   c                st   < V ^8  d   Qh/ S[ ;R&   S[S[ ,          ;R&   S[;R&   R;R&   S[S[,          ;R&   # )r"   NAMEfeaturesTRACKS_LINE_NUMBERSrE   r:   r$   )r>   r   r(   r   r   r)   r+   r,   r-   r.   ;   sO     " # & sm>' . $/ 2 103 4 &i005 r/   )r:   r$   )NNN)__name__
__module____qualname____firstlineno____doc__rM   r   r   r   rN   rO   r5   rC   r9   rL   __annotate_func____static_attributes____classdictcell__r*      @r,   r    r    ;   sZ       D#Z>H !%
* *<#. #.J' 'F F]  r/   c                   s   a a ] tR t^t oRV3R lV 3R llltV3R lR ltV3R lR ltV3R lR ltV3R	 lR
 ltV3R lR lt	V3R lR lt
V3R lR ltV3R lR ltV3R lR ltV3R ltRtVtV ;t# )rE   c                s@   < V ^8  d   QhRS[ RS[R,          RS[ RS[/# )r"   rD   r7   r   rG   kwargs)r(   r   r   r)   r+   r,   r-   #TreeBuilderForHtml5lib.__annotate__   s8     5 5#5 '5 !	5
 5r/   c                s   < V'       d   W n         M2\        P                  ! R \        ^R7       ^ RIHp V! RRV/VB V n         \        \        V `#  V4       RV n	        W0n
        R# )aK  The optionality of the 'soup' argument to the TreeBuilderForHtml5lib constructor is deprecated as of Beautiful Soup 4.13.0: 'soup' is now required. If you can't pass in a BeautifulSoup object here, or you get this warning and it seems mysterious to you, please contact the Beautiful Soup developer team for possible un-deprecation.r0   r   rG   N)Z zhtml.parser)r7   r1   r2   ZDeprecationWarningbs4r   ZsuperrE   __init__r;   rG   )r3   rD   r7   rG   rZ   r   	__class__s   &&&&, r,   r]   ZTreeBuilderForHtml5lib.__init__   sj     IMM ^"
 *
 & 6HLRDI 	$d45JK "4r/   c                   < V ^8  d   QhRR/# r"   r'   ElementrK   r)   r+   r,   r-   r[      s     3 3y 3r/   c                sx    V P                   P                  4        \        V P                   V P                   R 4      # N)r7   Zresetra   r3      &r,   documentClassZ$TreeBuilderForHtml5lib.documentClass   s'    		tyy$))T22r/   c                s:   < V ^8  d   QhRS[ S[S[3,          RR/# )r"   tokenr'   N)r   r>   r   r)   r+   r,   r-   r[      s#     - -4S> -d -r/   c                s    \        \        VR ,          4      p\        \        \        ,          VR,          4      p\        \        \        ,          VR,          4      p\        P                  ! W#V4      pV P
                  P                  V4       R# )r4   publicIdsystemIdN)r   r>   r   r   Zfor_name_and_idsr7   object_was_parsed)r3   rf   r4   rg   rh   ZdoctyperB   r,   insertDoctypeZ$TreeBuilderForHtml5lib.insertDoctype   s`    eFm,"&x}eJ6G"H"&x}eJ6G"H**48D		##G,r/   c                s*   < V ^8  d   QhRS[ RS[ RR/# )r"   r4   	namespacer'   ra   rJ   r)   r+   r,   r-   r[      s"     2 2 2 2 2r/   c                s.   R pR pV P                   eR   V P                  '       d@   V P                   P                  P                  P	                  4       w  r4Vf   Q hV^,
          pV P
                  P                  WW4R7      p\        WPP
                  V4      # )N)
sourceline	sourcepos)r;   rG   r@   rA   Zpositionr7   new_tagra   )r3   r4   rk   rl   rm   tag   &&&   r,   elementClassZ#TreeBuilderForHtml5lib.elementClass   s    $(
#'	;;"t'>'>'> %)KK$9$9$@$@$I$I$K!J(((!AIii
   
 sIIy11r/   c                r6   )r"   datar'   TextNoderJ   r)   r+   r,   r-   r[      s     2 2 2 2r/   c                s@    \        \        V4      V P                  4      # rb   )rs   r   r7   )r3   rr   rH   r,   commentClassZ#TreeBuilderForHtml5lib.commentClass   s    tyy11r/   c                r_   r`   rK   r)   r+   r,   r-   r[      s     $ $y $r/   c                    \        4       h)zThis is only used by html5lib HTMLParser.parseFragment(),
which is never used by Beautiful Soup, only by the html5lib
unit tests. Since we don't currently hook into those tests,
the implementation is left blank.
ZNotImplementedErrorrc   rd   r,   fragmentClassZ$TreeBuilderForHtml5lib.fragmentClass   s     "##r/   c                r_   r`   rK   r)   r+   r,   r-   r[      s     $ $Y $r/   c                ru   zThis is only used by the html5lib unit tests. Since we
don't currently hook into those tests, the implementation is
left blank.
rv   rc   rd   r,   getFragmentZ"TreeBuilderForHtml5lib.getFragment       
 "##r/   c                "   < V ^8  d   QhRRRR/# r"   nodera   r'   NrK   r)   r+   r,   r-   r[     s     ' '	 'd 'r/   c                sP    V P                   P                  VP                  4       R # rb   )r7   appendelementr3   r}   rH   r,   appendChildZ"TreeBuilderForHtml5lib.appendChild  s     			&r/   c                r_   )r"   r'   r   rK   r)   r+   r,   r-   r[   
  s      _ r/   c                s    V P                   # rb   )r7   rc   rd   r,   getDocumentZ"TreeBuilderForHtml5lib.getDocument
  s    yyr/   c                r{   r|   rK   r)   r+   r,   r-   r[     s     $ $9 $ $r/   c                ru   rx   rv   r   rH   r,   testSerializerZ%TreeBuilderForHtml5lib.testSerializer  rz   r/   c                sT   < V ^8  d   Qh/ R;R&   S[ S[P                  ,          ;R&   # )r"   r   r7   r;   )r   r!   r8   r)   r+   r,   r-   r[      s&     
 X(()) r/   )r;   r7   rG   )NT)rP   rQ   rR   rS   r]   re   rj   rq   rt   rw   ry   r   r   r   rU   rV   rW   Z__classcell__)r^   r*   s   @@r,   rE   rE      sr     5 5B3 3- -2 2 2 2$ $$ $' ' $ $  r/   rE   c                   s   a  ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R ltRtV tR# )AttrListi  z@Represents a Tag's attributes in a way compatible with html5lib.c                    < V ^8  d   QhRS[ /# )r"   r   )r   r)   r+   r,   r-   AttrList.__annotate__  s     . . .r/   c                sZ    Wn         \        V P                   P                  4      V n        R # rb   )r   r<   attrs)r3   r   rH   r,   r]   ZAttrList.__init__  s    $,,,,-
r/   c                F   < V ^8  d   QhRS[ S[S[S[3,          ,          /# r"   r'   r   r   r>   r   r)   r+   r,   r-   r     s#     3 3(5o)=#>? 3r/   c                sd    \        V P                  P                  4       4      P                  4       # rb   )listr   items__iter__rc   rd   r,   r   ZAttrList.__iter__  s#    DJJ$$&'0022r/   c                s*   < V ^8  d   QhRS[ RS[RR/# )r"   r4   valuer'   Nr>   r   r)   r+   r,   r-   r   "  s"     # # #O # #r/   c                s   V P                   P                  ;'       g    / pWP                  R . 4      9   gF   V P                   P                  V9   d   WP                  V P                   P                  . 4      9   d^   \	        V\
        4      '       gH   \	        V\        4      '       g   Q hV P                   P                  \        P                  ! V4      4      pW P                   V&   R# )Z*N)
r   Zcdata_list_attributesZgetr4   r=   r   r>   Zattribute_value_list_classr   Zfindall)r3   r4   r   Z	list_attr   &&& r,   __setitem__ZAttrList.__setitem__"  s     LL66<<"	==b))LL*dll&7&7<< eT**!%----??$,,U3 #Tr/   c                r   r   r   r)   r+   r,   r-   r   3  s#     ( (xc?&: ;< (r/   c                H    \        V P                  P                  4       4      # rb   )r   r   r   rc   rd   r,   r   ZAttrList.items3  s    DJJ$$&''r/   c                s0   < V ^8  d   QhRS[ S[,          /# r   )r   r>   r)   r+   r,   r-   r   6  s     ' 'hsm 'r/   c                r   rb   r   r   keysrc   rd   r,   r   ZAttrList.keys6  s    DJJOO%&&r/   c                r   r   Zintr)   r+   r,   r-   r   9  s       r/   c                s,    \        V P                  4      # rb   )lenr   rc   rd   r,   __len__ZAttrList.__len__9  s    4::r/   c                &   < V ^8  d   QhRS[ RS[/# r"   r4   r'   r   r)   r+   r,   r-   r   <  s            r/   c                s(    V P                   V,          # rb   )r   r3   r4   rH   r,   __getitem__ZAttrList.__getitem__<  s    zz$r/   c                r   r   )r>   r(   r)   r+   r,   r-   r   ?  s     / / / /r/   c                sN    V\        V P                  P                  4       4      9   # rb   r   r   rH   r,   __contains__ZAttrList.__contains__?  s    tDJJOO-...r/   c                s2   < V ^8  d   Qh/ S[ ;R&   S[;R&   # )r"   r   r   )r   r   r)   r+   r,   r-   r     s      L  	 r/   )r   r   N)rP   rQ   rR   rS   rT   r]   r   r   r   r   r   r   r   rU   rV   rW   rX   rY   r,   r   r     s`     J
. .3 3# #"( (' '    / /U  r/   r   c                   sv   a  ] tR tRt o ]V 3R lR l4       t]V 3R lR l4       tV 3R lR ltV 3R ltR	t	V t
R
# )BeautifulSoupNodeiC  c                r   r   )r   r)   r+   r,   r-   BeautifulSoupNode.__annotate__K  s       r/   c                s    V P                   f   V P                  f   Q hV P                   e   V P                   # V P                  f   Q hV P                  # rb   )ro   stringrc   rd   r,   r   ZBeautifulSoupNode.elementJ  sH    xx#t{{'>>>8888O;;***;;r/   c                r   r   r   r)   r+   r,   r-   r   T  s     $ $# $r/   c                ru   )zReturn the html5lib constant corresponding to the type of
the underlying DOM object.

NOTE: This property is only accessed by the html5lib test
suite, not by Beautiful Soup proper.
rv   rc   rd   r,   nodeTypeZBeautifulSoupNode.nodeTypeS  s     "##r/   c                4   < V ^8  d   QhRS[ P                  /# r   treebuilder_baseNoder)   r+   r,   r-   r   _  s     $ $+00 $r/   c                ru   rb   rv   rc   rd   r,   	cloneNodeZBeautifulSoupNode.cloneNode_  s    !##r/   c                sx   < V ^8  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   R;R&   S[ S[,          ;R&   # )r"   ro   r   r   r7   rk   )r   r   r   r   r)   r+   r,   r-   r   C  sE     	#  _%%  	 
 && r/   rK   N)rP   rQ   rR   rS   propertyr   r   r   rU   rV   rW   rX   rY   r,   r   r   C  s>        $ $$ $9  r/   r   c                   sV  a  ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR lt]]]	]]3,          3,          t
]]
]3,          tV 3R lR	 lt]! ]]4      tRV 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR lt]! ]4      tV 3R ltRtV tR
# )ra   ic  c                s:   < V ^8  d   QhRS[ RRRS[S[,          /# )r"   r   r7   r   rk   )r   r   r   r)   r+   r,   r-   Element.__annotate__f  s*     ; ;;"1;>F}>U;r/   c                s    Wn         R V n        W n        W0n        \        P
                  P                  WP                  4       R # rb   )ro   r   r7   rk   r   r   r]   r4   )r3   r   r7   rk   s   &&&&r,   r]   ZElement.__init__f  s2     	"&&t\\:r/   c                r{   )r"   r}   r   r'   NrK   r)   r+   r,   r-   r   o  s     3 3 3 3 3r/   c                s<   R p\        VP                  4      \        J d   VP                  ;r#MVP                  pWn        Ve?   VP                  e1   \        V\        4      '       g   VP                  P                  4        Ve   V P                  e   V P                  P                  '       d   \        V P                  P                  R,          4      \        J db   V P                  P                  R,          pV P                  P                  WB,           4      pVP                  V4       WPP                  n        R # \        V\        4      '       d   V P                  P                  V4      pV P                  e9   V P                  P                  '       d   V P                  P                  R4      pM?V P                  P                  e   V P                  P                  4       pMV P                  pV P                  P!                  W0P                  VR7       R # )NF)parentmost_recent_element)typer   r   r   r   r=   r>   extractro   contentsr7   
new_stringreplace_withZ_most_recent_element_last_descendantnext_elementri   )r3   r}   Zstring_childchildZold_elementZnew_elementr      &&     r,   r   ZElement.appendChildo  s   26/ $(;;.L5LLE (uc**LL  " $$):):):TXX&&r*+>
 ((++B/K))..{/IJK$$[1-8II*$$$		,,T2
 xx#(9(9(9&*hh&?&?&F#**6
 '+ii&@&@&B#&*ll#II''hh<O ( r/   c                r   r   )r   r)   r+   r,   r-   r     s     " "x "r/   c                sL    V P                   f   Q h\        V P                   4      # rb   )ro   r   rc   rd   r,   getAttributesZElement.getAttributes  s!    xx###!!r/   c                s4   < V ^8  d   QhRS[ S[,          RR/# )r"   
attributesr'   N)r   _Html5libAttributesr)   r+   r,   r-   r     s!     = =1D(E =$ =r/   c                s&   V P                   f   Q hVe   \        V4      ^ 8  d   \        VP                  4       4       F,  w  r#\	        V\
        4      '       g   K  \        V!  pW W1V&   K.  	  \        \        V4      pV P                  P                  P                  V P                  V4       \        VP                  4       4       F  w  r&W`P                   V&   K  	  V P                  P                  P                  V P                   4       R # R # R # rb   )ro   r   r   r   r=   Ztupler   r   r   r7   ZbuilderZ$_replace_cdata_list_attribute_valuesr4   Zset_up_substitutions)r3   r   r4   r   Znew_nameZnormalized_attributesZvalue_or_valuesr   r,   setAttributesZElement.setAttributes  s    xx###!c*o&9  $J$4$4$67dE**2D9H"(+0x(	  8 %))9:$F! IIBB		0 *..C.I.I.K)L%!0 *M II22488<; ':!r/   Nc                s8   < V ^8  d   QhRS[ RS[R,          RR/# )r"   rr   insertBeforer   r'   N)r>   r   r)   r+   r,   r-   r     s+     # ##'/0C'D#	#r/   c                s    \        V P                  P                  V4      V P                  4      pV'       d   V P                  W24       R # V P	                  V4       R # rb   )rs   r7   r   r   r   )r3   rr   r   Ztextr   r,   
insertTextZElement.insertText  sB     		,,T2DII>d1T"r/   c                s&   < V ^8  d   QhRRRRRR/# )r"   r}   r   refNoder'   NrK   r)   r+   r,   r-   r     s%      '2E	r/   c                s   V P                   f   Q hV P                   P                  VP                  4      p\        VP                  4      \        J d   V P                   P
                  '       d   \        V P                   P
                  V^,
          ,          4      \        J dx   V P                   P
                  V^,
          ,          p\        V4      \        J g   Q hV P                  P                  WAP                  ,           4      pVP                  V4       R # V P                   P                  W1P                  4       Wn
        R # rb   )ro   indexr   r   r   r   r7   r   r   Zinsertr   )r3   r}   r   r   Zold_nodeZnew_strrp   r,   r   ZElement.insertBefore  s     xx###w//1!!!TXX&&uqy12oE xx((3H>_444ii**8ll+BCG!!'*HHOOE<<0Kr/   c                r{   r|   rK   r)   r+   r,   r-   r     s      	 d r/   c                s:    VP                   P                  4        R # rb   )r   r   r   rH   r,   removeChildZElement.removeChild  s    r/   c                r{   )r"   	newParentra   r'   NrK   r)   r+   r,   r-   r     s     N2 N2) N2 N2r/   c                s   V P                   pVf   Q hVP                   pVf   Q hVP                  pVP                  RR4      p\        VP                  4      ^ 8  d'   Vf   Q hVP                  R,          pVP
                  pMRpVP
                  pVP                  p\        V4      ^ 8  du   V^ ,          p	Ve   WYn        MW9n        Win        Ve   Wn        MWn        Ve   Wn        VR,          P                  RRR7      p
V
f   Q hVV
n        Ve   V
Vn        RV
n        V F$  pW;n        VP                  P                  V4       K&  	  . Vn        WBn        R# )z1Move all of this tag's children into another tag.NFT)Zis_initializedZaccept_selfr   )
ro   Znext_siblingr   r   r   r   Zprevious_elementZprevious_siblingr   r~   )r3   r   r   Znew_parent_elementZfinal_next_elementZnew_parents_last_descendantZnew_parents_last_childZ(new_parents_last_descendant_next_elementZ	to_appendZfirst_childZlast_childs_last_descendantr   s   &&          r,   reparentChildrenZElement.reparentChildren  s    (("""&]]!--- %11&8&I&I%QV&W#!**+a/ /:::%7%@%@%D"+88 5
 &*"7I7V7V4$$	y>A $A,K*6/J,/A,+A(*6;F82=/%16A3 +4B-*H*H$$ +I +' /:::8 (4 8C 0 9I 8<'4E-L''..u5 
 1r/   c                r   r   rF   r)   r+   r,   r-   r   G  s     > >D >r/   c                sr    V P                   R J ;'       g#    \        V P                   P                  4      ^ 8  # rb   )ro   r   r   rc   rd   r,   
hasContentZElement.hasContentG  s-    xx4==3txx'8'8#9A#==r/   c                r   r   r   r)   r+   r,   r-   r   L  s      +00 r/   c                s    V P                   f   Q hV P                  P                  V P                   P                  V P                  4      p\        WP                  V P                  4      pV P                   F  w  r4WBP                  V&   K  	  V# rb   )ro   r7   rn   r4   rk   ra   r   )r3   ro   r}   Zkeyr   s   &    r,   r   ZElement.cloneNodeL  si    xx###iit~~>sIIt~~6//JC#(OOC  *r/   c                sF   < V ^8  d   QhRS[ S[S[,          S[3,          /# r   )r   r   r   r>   r)   r+   r,   r-   r   T  s#     - -eH]$;S$@A -r/   c                s    V P                   f   \        R,          V P                  3# V P                   V P                  3# )NZhtml)rk   r   r4   rc   rd   r,   getNameTupleZElement.getNameTupleT  s3    >>!f%tyy00>>499,,r/   c                sN   < V ^8  d   Qh/ S[ S[,          ;R&   S[;R&   S[;R&   # )r"   rk   _Html5libAttributeNamer   )r   r   r
   r)   r+   r,   r-   r   c  s3     && N &CO T #FU r/   )rk   r7   r   ro   rb   )rP   rQ   rR   rS   r]   r   r   r	   r>   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z	nameTuplerU   rV   rW   rX   rY   r,   ra   ra   c  s     ; ;3 3j" " ).c5c?.B(C &**@#*E%F= =B -7J# # & N2 N2l> >
 - - &Io  r/   ra   c                   s2   a  ] tR tRt o V 3R lR ltRtV tR# )rs   i]  c                r6   )r"   r   r7   r   )r   r)   r+   r,   r-   ZTextNode.__annotate___  s        r/   c                sl    \         P                  P                  V R 4       R V n        Wn        W n        R # rb   )r   r   r]   ro   r   r7   )r3   r   r7   s   &&&r,   r]   ZTextNode.__init___  s)    &&tT2	r/   )r7   r   ro   N)rP   rQ   rR   rS   r]   rV   rW   rX   rY   r,   rs   rs   ]  s      r/   rs   )5Z__license__Z__all__Ztypingr   r   r   r   r   r   r   r   r	   Ztyping_extensionsr
   Zbs4._typingr   r   r   r   r   r   r1   Zbs4.builderr   r   r   r   r   Zbs4.elementr   r   r   r!   Zhtml5lib.constantsr   r   r   r   r   r\   r   Zhtml5lib.treebuildersr    r   r    ZTreeBuilderrE   Zobjectr   r   r   ra   rs   rK   r/   r,   <module>r      s    
 
 
 (    
   ! :pF pFfd$-99 d$N+/v +/\$(-- $@w' w't  r/   