+
    	i                         ^ RI Ht ^ RIHt ^ RIH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 ]! ]! ]4      4      tR tR t ! R R	4      tR
# )    )bisect_left)deque)html5)	EOFTokenascii_lettersascii_upper_to_lowerdigits	hexdigitsreplacement_charactersspace_characterstag_token_types)HTMLInputStreamc                     V \         9   d   R # \        \        V 4      ;p\        \         4      8X  d   R# \        V,          P	                  V 4      # )TF)entitiesr   entity_keyslen
startswithprefixis   & Y/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/tinyhtml5/tokenizer.pyhas_keys_with_prefixr      s=    f--#h-?q>$$V,,    c                     V \         9   d   V # \        ^\        V 4      ^,           4       F  pV RV)  \         9   g   K  V RV)  u # 	  \        V 4      h)   N)r   ranger   KeyErrorr   s   & r   longest_prefixr      sS    1c&kAo&#A2;("#A2; ' 6
r   c                     a  ] tR t^&t o RtROR ltR tR tR tR t	RPR lt
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R  t"R! t#R" t$R# t%R$ t&R% t'R& t(R' t)R( t*R) t+R* t,R+ t-R, t.R- t/R. t0R/ t1R0 t2R1 t3R2 t4R3 t5R4 t6R5 t7R6 t8R7 t9R8 t:R9 t;R: t<R; t=R< t>R= t?R> t@R? tAR@ tBRA tCRB tDRC tERD tFRE tGRF tHRG tIRH tJRI tKRJ tLRK tMRL tNRM tORNtPV tQR# )QHTMLTokenizerzHTML tokenizer.Nc                d    \        V3/ VB V n        W n        V P                  V n        R V n        R # N)r   streamparser
data_statestatecurrent_token)selfr$   r%   kwargss   &&&,r   __init__HTMLTokenizer.__init__)   s-    %f77 __
!r   c              #  j  "   \        4       V n        V P                  4       '       d   V P                  P                  '       d<   R\
        P                  RV P                  P                  P                  ^ 4      /x  KW  V P                  '       g   K  V P                  P                  4       x  K2  R# 5i)zThis is where the magic happens.

We do our usually processing through the states and when we have a token
to return we yield the token which pauses processing until the next token
is requested.

typedataN)	r   token_queuer'   r$   errorsr   PARSE_ERRORpoppopleftr)   s   &r   __iter__HTMLTokenizer.__iter__1   s      !7 jjll++$$$E--DKK..2215  """&&..00 s   %B3B3A
B3 B3c                |    R\         P                  RV/pV'       d   W#R&   V P                  P                  V4       R# )z%Add a parse error to the token queue.r.   r/   datavarsN)r   r2   r0   append)r)   _datar9   tokens   &&, r   parse_errorHTMLTokenizer.parse_errorE   s5    **FE: (*&r   c                `    V P                   P                  R\        P                  RV/4       R# )z+Add a characters string to the token queue.r.   r/   N)r0   r:   r   
CHARACTERS)r)   r;   s   &&r   
charactersHTMLTokenizer.charactersL   s%    )9)965 IJr   c                   V'       d   \         M\        pV'       d   ^M^
p. pV P                  P                  4       pWR9   d.   VP	                  V4       V P                  P                  4       pK3  \        RP                  V4      V4      pV\        9   d"   \        V,          pV P                  RVR7       MRTu;8:  d   R8:  g
   M VR8  d   RpV P                  RVR7       M^Tu;8:  d   ^8:  g   M ^Tu;8:  d   ^8:  g{   M ^Tu;8:  d   ^8:  gj   M RTu;8:  d   R	8:  gY   M V\        . ^NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NRN4      9   d   V P                  RVR7       \        V4      pVR+8w  d-   V P                  R,4       V P                  P                  V4       V# )-zReturn either U+FFFD or the character based on the representation.

It also discards ";" if present. If not present self.parse_error is
invoked.

 z$illegal-codepoint-for-numeric-entity)integeri   i  i    �i  i  i  i  i i i i i i i i i i i i i i i i i	 i	 i
 i
 i i i i i i i i i i i ;z numeric-entity-without-semicolon)r   r
   r$   	characterr:   intjoinr   r=   	frozensetchrunget)r)   is_hexallowedradixstackrH   rE   replacements   &&      r   consume_number_entity#HTMLTokenizer.consume_number_entityP   s     &)6" KK))+	"LL#--/I bggene, ,,09KCWU)6)w/A"KCWU 7,f,7,f,7,f,7,f,9 &:&:"&:$*&:,3&:5<&:>E&:GN&:&:$&:&-&:/6&:8?&:AH&: &: %&: '.&: 07&: 9@&: BI&: 	&: %	&: '.	&: 07	&: 9@	&: BI	&:
 &:
 %&:
 '.&:
 07&:
 9@&:
 BI&: &: %&: '/&: 19&: ; ;   :G ! Mg,K ?@KKi(r   c                   R pV P                   P                  4       .pV^ ,          \        RR .\        O59   ;'       g    VRJ;'       d    W^ ,          8H  pV'       d%   V P                   P	                  V^ ,          4       EMV^ ,          R8X  Ed
   RpVP                  V P                   P                  4       4       VR,          R9   d,   RpVP                  V P                   P                  4       4       VR,          V'       d   \        M\        9   d6   V P                   P	                  VR,          4       V P                  V4      pEMV P                  R4       V P                   P	                  VP                  4       4       R RP                  V4       2pEMVR,          \        JdM   \        RP                  V4      4      '       g   M+VP                  V P                   P                  4       4       K]   \        RP                  VRR 4      4      pVR,          R8w  d   V P                  R	4       \        V4      pWH,          \        9   ;'       g#    WH,          \        9   ;'       g    WH,          R
8H  p	VR,          R8w  dO   V'       dG   V	'       d?   V P                   P	                  VP                  4       4       R RP                  V4       2pMLV P                   P	                  VP                  4       4       \         V,           RP                  WHR 4       2p V'       d0   V P$                  R,          R,          ^;;,          V,          uu&   R# V\        9   d   RMRp
V P&                  P                  R\(        V
,          RV/4       R#   \"         dR    T P                  R4       T P                   P	                  TP                  4       4       R RP                  T4       2p Li ; i)&<N#FTzexpected-numeric-entityrD   rG   znamed-entity-without-semicolon=zexpected-named-entityr/   SPACE_CHARACTERSr@   r.   )xX)r$   rH   r   r   rM   r:   r   r
   rS   r=   r3   rJ   r   r   r   r   r   r   r(   r0   r   )r)   rO   from_attributeoutputrQ   rM   hexentity_nameentity_lengthallowed_characterr.   s   &&&        r   consume_entityHTMLTokenizer.consume_entity   s   &&()!Hc3:)9:: : :D 88Wa%8 	 KKeAh'1X_CLL..01RyJ&T[[2245 Ry#Y6:!!%),33C8   !:;!!%))+.RWWU^,- )3&+BGGEN;;T[[2245X,RWWU3BZ-@A r?c)$$%EF #K 0(M9 0 0(F20 0(C/ " r?c)nARKK%%eiik2  01FKK%%eiik2 ( 56rwwu^?T7U6VWFv&r*1-7-)/3C)C%D##VU4[&&$IJ/  .  !89!!%))+.RWWU^,-.s   9N AO/.O/c                ,    V P                  VRR7       R# )z5Replace the need for entity_in_attribute_value_state.T)rO   r^   N)rd   )r)   rO   s   &&r   process_entity_in_attribute)HTMLTokenizer.process_entity_in_attribute   s    GDAr   c                `   V P                   pVR,          \        9   d   VR,          P                  \        4      VR&   VR,          \        P
                  8X  dM   VR,          p\        V4      p\        V4      \        V4      8  d   VP                  VRRR1,          4       W1R&   VR,          \        P                  8X  dA   VR,          '       d   V P                  R4       VR,          '       d   V P                  R4       V P                  P                  V4       V P                  V n        R# )	zThis method is a generic handler for emitting the tags.

It also sets the state to "data" because that's what's needed after a
token has been emitted.

r.   namer/   Nzattributes-in-end-tagselfClosingzself-closing-flag-on-end-tagr[   )r(   r   	translater	   r   	START_TAGdictr   updateEND_TAGr=   r0   r:   r&   r'   )r)   r<   rawr/   s   &   r   emit_current_token HTMLTokenizer.emit_current_token   s     ""=O+!&M334HIE&MV}/FmCys8c$i'KKDbD	* $fV}-==$$%<=''$$%CD&__
r   c           
     0   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d   V P                  V n        R# VR8X  d%   V P                  R4       V P                  R4       R# V\        J d   R# V\        9   dT   V P                  P                  R\        P                  RWP                   P                  \        R4      ,           /4       R# V P                   P                  R4      pV P                  W,           4       R# )	rV   rW    invalid-codepointFr.   r/   TrV   rW   ru   )r$   rH   entity_data_stater'   tag_open_stater=   rA   r   r   r0   r:   r   rZ   chars_untilr)   r/   rA   s   &  r   r&   HTMLTokenizer.data_state   s    {{$$&3;//DJ, + S[,,DJ( ' X01OOH%" ! S[%% ##..{{667GNN%   001EFJOOD-.r   c                H    V P                  4        V P                  V n        R # T)rd   r&   r'   r5   s   &r   rx   HTMLTokenizer.entity_data_state  s    __
r   c           
     0   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d   V P                  V n        R# V\
        J d   R# VR8X  d%   V P                  R4       V P                  R4       R# V\        9   dT   V P                  P                  R\        P                  RWP                   P                  \        R4      ,           /4       R# V P                   P                  R	4      pV P                  W,           4       R# )
rV   rW   Fru   rv   rF   r.   r/   Trw   )r$   rH   $character_reference_in_rc_data_stater'   rcdata_less_than_sign_stater   r=   rA   r   r0   r:   r   rZ   rz   )r)   r/   charss   &  r   rcdata_stateHTMLTokenizer.rcdata_state  s    {{$$&3;BBDJ. - S[99DJ* ) S[X01OOH%  %% ##..{{667GNN%   KK++,@AEOODL)r   c                H    V P                  4        V P                  V n        R # r~   )rd   r   r'   r5   s   &r   r   2HTMLTokenizer.character_reference_in_rc_data_state(  s    &&
r   c                @   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d%   V P	                  R4       V P                  R4       R# V\        J d   R# V P                   P                  R4      pV P                  W,           4       R# rW   ru   rv   rF   FT)rW   ru   )r$   rH   rawtext_less_than_sign_stater'   r=   rA   r   rz   r{   s   &  r   rawtext_stateHTMLTokenizer.rawtext_state-  s    {{$$&3;::DJ  X01OOH%  S[00AJOOD-.r   c                @   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d%   V P	                  R4       V P                  R4       R# V\        J d   R# V P                   P                  R4      pV P                  W,           4       R# r   )r$   rH    script_data_less_than_sign_stater'   r=   rA   r   rz   r{   s   &  r   script_data_stateHTMLTokenizer.script_data_state;  s    {{$$&3;>>DJ  X01OOH%  S[00AJOOD-.r   c                   V P                   P                  4       pV\        J d   R # VR8X  d%   V P                  R4       V P	                  R4       R# V P	                  WP                   P                  R4      ,           4       R# )Fru   rv   rF   T)r$   rH   r   r=   rA   rz   r)   r/   s   & r   plaintext_stateHTMLTokenizer.plaintext_stateI  si    {{$$&3;X01OOH%  OOD;;#:#:8#DDEr   c           
        V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d   V P                  V n        R# V\
        9   d3   R\        P                  RVR. RRRR/V n        V P                  V n        R# VR8X  d6   V P                  R	4       V P                  R
4       V P                  V n        R# VR8X  d@   V P                  R4       V P                   P                  V4       V P                  V n        R# V P                  R4       V P                  R4       V P                   P                  V4       V P                  V n        R# )!/r.   rj   r/   rk   FselfClosingAcknowledged>z'expected-tag-name-but-got-right-bracketz<>?z'expected-tag-name-but-got-question-markzexpected-tag-namerW   T)r$   rH   markup_declaration_open_stater'   close_tag_open_stater   r   rm   r(   tag_name_stater=   rA   r&   rM   bogus_comment_stater   s   & r   ry   HTMLTokenizer.tag_open_stateT  s>   {{$$&3;;;DJ< ; S[22DJ8 7 ]"u)5"D ,,DJ& % S[ FGOOD!DJ  S[ FGKKd#11DJ 	 01OOC KKd#DJr   c                   V P                   P                  4       pV\        9   d1   R \        P                  RVR. RR/V n        V P                  V n        R# VR8X  d%   V P                  R4       V P                  V n        R# V\        J d6   V P                  R4       V P                  R4       V P                  V n        R# V P                  R	VR
7       V P                   P                  V4       V P                  V n        R# )r.   rj   r/   rk   Fr   z*expected-closing-tag-but-got-right-bracketz expected-closing-tag-but-got-eof</z!expected-closing-tag-but-got-charr/   T)r$   rH   r   r   rp   r(   r   r'   r=   r&   r   rA   rM   r   r   s   & r   r   "HTMLTokenizer.close_tag_open_statew  s    {{$$&= u	"D ,,DJ  S[IJDJ  S[?@OOD!DJ  @tLKKd#11DJr   c                   V P                   P                  4       pV\        9   d   V P                  V n        R# VR 8X  d   V P                  4        R# V\        J d%   V P                  R4       V P                  V n        R# VR8X  d   V P                  V n        R# VR8X  d3   V P                  R4       V P                  R;;,          R,          uu&   R# V P                  R;;,          V,          uu&   R# )r   zeof-in-tag-namer   ru   rv   rj   rF   T)r$   rH   r   before_attribute_name_stater'   rr   r   r=   r&   self_closing_start_tag_stater(   r   s   & r   r   HTMLTokenizer.tag_name_state  s    {{$$&##99DJ  S[##%  S[./DJ  S[::DJ  X01v&(2&
  v&$.& r   c                    V P                   P                  4       pVR 8X  d   RV n        V P                  V n        R# V P                  R4       V P                   P                  V4       V P                  V n        R# r   rD   rW   T)r$   rH   temporary_bufferrcdata_end_tag_open_stater'   rA   rM   r   r   s   & r   r   )HTMLTokenizer.rcdata_less_than_sign_state  se    {{$$&3;$&D!77DJ
  OOC KKd#**DJr   c                "   V P                   P                  4       pV\        9   d-   V ;P                  V,          un        V P                  V n        R# V P                  R 4       V P                   P                  V4       V P                  V n        R# r   T)	r$   rH   r   r   rcdata_end_tag_name_stater'   rA   rM   r   r   s   & r   r   'HTMLTokenizer.rcdata_end_tag_open_state  so    {{$$&= !!T)!77DJ
  OOD!KKd#**DJr   c                   V P                   ;'       d=    V P                   R ,          P                  4       V P                  P                  4       8H  pV P                  P	                  4       pV\
        9   dC   V'       d;   R\        P                  R V P                  R. RR/V n         V P                  V n	        R# VR8X  dC   V'       d;   R\        P                  R V P                  R. RR/V n         V P                  V n	        R# VR8X  dS   V'       dK   R\        P                  R V P                  R. RR/V n         V P                  4        V P                  V n	        R# V\        9   d   V ;P                  V,          un        R# V P                  RV P                   24       V P                  P                  V4       V P                   V n	        R# 	rj   r.   r/   rk   Fr   r   r   T)r(   lowerr   r$   rH   r   r   rp   r   r'   r   rr   r&   r   rA   rM   r   r)   appropriater/   s   &  r   r   'HTMLTokenizer.rcdata_end_tag_name_state  s    P Pv&,,.$2G2G2M2M2OO 	 {{$$&##--u	"D 99DJ0 / S[[--u	"D ::DJ   S[[--u	"D ##%DJ  ]"!!T)!
  OOb!6!6 789KKd#**DJr   c                    V P                   P                  4       pVR 8X  d   RV n        V P                  V n        R# V P                  R4       V P                   P                  V4       V P                  V n        R# r   )r$   rH   r   rawtext_end_tag_open_stater'   rA   rM   r   r   s   & r   r   *HTMLTokenizer.rawtext_less_than_sign_state  se    {{$$&3;$&D!88DJ
  OOC KKd#++DJr   c                "   V P                   P                  4       pV\        9   d-   V ;P                  V,          un        V P                  V n        R# V P                  R 4       V P                   P                  V4       V P                  V n        R# r   )	r$   rH   r   r   rawtext_end_tag_name_stater'   rA   rM   r   r   s   & r   r   (HTMLTokenizer.rawtext_end_tag_open_state  so    {{$$&= !!T)!88DJ
  OOD!KKd#++DJr   c                   V P                   ;'       d=    V P                   R ,          P                  4       V P                  P                  4       8H  pV P                  P	                  4       pV\
        9   dC   V'       d;   R\        P                  R V P                  R. RR/V n         V P                  V n	        R# VR8X  dC   V'       d;   R\        P                  R V P                  R. RR/V n         V P                  V n	        R# VR8X  dS   V'       dK   R\        P                  R V P                  R. RR/V n         V P                  4        V P                  V n	        R# V\        9   d   V ;P                  V,          un        R# V P                  RV P                   24       V P                  P                  V4       V P                   V n	        R# r   )r(   r   r   r$   rH   r   r   rp   r   r'   r   rr   r&   r   rA   rM   r   r   s   &  r   r   (HTMLTokenizer.rawtext_end_tag_name_state  s    P Pv&,,.$2G2G2M2M2OO 	 {{$$&##--u	"D 99DJ0 / S[[--u	"D ::DJ   S[[--u	"D ##%DJ  ]"!!T)!
  OOb!6!6 789KKd#++DJr   c                L   V P                   P                  4       pVR 8X  d   RV n        V P                  V n        R# VR8X  d%   V P                  R4       V P                  V n        R# V P                  R4       V P                   P                  V4       V P                  V n        R# )r   rD   r   z<!rW   T)	r$   rH   r   script_data_end_tag_open_stater'   rA   script_data_escape_start_staterM   r   r   s   & r   r   .HTMLTokenizer.script_data_less_than_sign_state  s    {{$$&3;$&D!<<DJ  S[OOD!<<DJ
  OOC KKd#//DJr   c                "   V P                   P                  4       pV\        9   d-   V ;P                  V,          un        V P                  V n        R# V P                  R 4       V P                   P                  V4       V P                  V n        R# r   )	r$   rH   r   r   script_data_end_tag_name_stater'   rA   rM   r   r   s   & r   r   ,HTMLTokenizer.script_data_end_tag_open_state)  so    {{$$&= !!T)!<<DJ
  OOD!KKd#//DJr   c                   V P                   ;'       d=    V P                   R ,          P                  4       V P                  P                  4       8H  pV P                  P	                  4       pV\
        9   dC   V'       d;   R\        P                  R V P                  R. RR/V n         V P                  V n	        R# VR8X  dC   V'       d;   R\        P                  R V P                  R. RR/V n         V P                  V n	        R# VR8X  dS   V'       dK   R\        P                  R V P                  R. RR/V n         V P                  4        V P                  V n	        R# V\        9   d   V ;P                  V,          un        R# V P                  RV P                   24       V P                  P                  V4       V P                   V n	        R# r   )r(   r   r   r$   rH   r   r   rp   r   r'   r   rr   r&   r   rA   rM   r   r   s   &  r   r   ,HTMLTokenizer.script_data_end_tag_name_state4  s    P Pv&,,.$2G2G2M2M2OO 	 {{$$&##--u	"D 99DJ0 / S[[--u	"D ::DJ   S[[--u	"D ##%DJ  ]"!!T)!
  OOb!6!6 789KKd#//DJr   c                    V P                   P                  4       pVR 8X  d%   V P                  R 4       V P                  V n        R# V P                   P                  V4       V P                  V n        R# -T)r$   rH   rA   #script_data_escape_start_dash_stater'   rM   r   r   s   & r   r   ,HTMLTokenizer.script_data_escape_start_stateZ  ]    {{$$&3;OOC AADJ  KKd#//DJr   c                    V P                   P                  4       pVR 8X  d%   V P                  R 4       V P                  V n        R# V P                   P                  V4       V P                  V n        R# r   )r$   rH   rA   #script_data_escaped_dash_dash_stater'   rM   r   r   s   & r   r   1HTMLTokenizer.script_data_escape_start_dash_stated  r   r   c                   V P                   P                  4       pVR 8X  d%   V P                  R 4       V P                  V n        R# VR8X  d   V P
                  V n        R# VR8X  d%   V P                  R4       V P                  R4       R# V\        J d   V P                  V n        R# V P                  WP                   P                  R4      ,           4       R# )r   rW   ru   rv   rF   T)rW   r   ru   )
r$   rH   rA   script_data_escaped_dash_stater'   (script_data_escaped_less_than_sign_stater=   r   r&   rz   r   s   & r   script_data_escaped_state'HTMLTokenizer.script_data_escaped_staten  s    {{$$&3;OOC <<DJ  S[FFDJ  X01OOH%
 	 S[DJ  OOD;;#:#:;O#PPQr   c                   V P                   P                  4       pVR 8X  d%   V P                  R 4       V P                  V n        R# VR8X  d   V P
                  V n        R# VR8X  d6   V P                  R4       V P                  R4       V P                  V n        R# V\        J d   V P                  V n        R# V P                  V4       V P                  V n        R# )r   rW   ru   rv   rF   T)
r$   rH   rA   r   r'   r   r=   r   r   r&   r   s   & r   r   ,HTMLTokenizer.script_data_escaped_dash_state~  s    {{$$&3;OOC AADJ  S[FFDJ  X01OOH%77DJ  S[DJ  OOD!77DJr   c                   V P                   P                  4       pVR 8X  d   V P                  R 4       R# VR8X  d   V P                  V n        R# VR8X  d%   V P                  R4       V P
                  V n        R# VR8X  d6   V P                  R4       V P                  R4       V P                  V n        R# V\        J d   V P                  V n        R# V P                  V4       V P                  V n        R# )r   rW   r   ru   rv   rF   T)
r$   rH   rA   r   r'   r   r=   r   r   r&   r   s   & r   r   1HTMLTokenizer.script_data_escaped_dash_dash_state  s    {{$$&3;OOC   S[FFDJ  S[OOC //DJ  X01OOH%77DJ  S[DJ  OOD!77DJr   c                f   V P                   P                  4       pVR 8X  d   RV n        V P                  V n        R# V\
        9   d.   V P                  RV 24       Wn        V P                  V n        R# V P                  R4       V P                   P                  V4       V P                  V n        R# r   )
r$   rH   r   &script_data_escaped_end_tag_open_stater'   r   rA   %script_data_double_escape_start_staterM   r   r   s   & r   r   6HTMLTokenizer.script_data_escaped_less_than_sign_state  s    {{$$&3;$&D!DDDJ  ]"OOavJ'$(!CCDJ
  OOC KKd#77DJr   c                    V P                   P                  4       pV\        9   d   Wn        V P                  V n        R# V P                  R 4       V P                   P                  V4       V P                  V n        R# r   )	r$   rH   r   r   &script_data_escaped_end_tag_name_stater'   rA   rM   r   r   s   & r   r   4HTMLTokenizer.script_data_escaped_end_tag_open_state  sd    {{$$&= $(!DDDJ
  OOD!KKd#77DJr   c                   V P                   ;'       d=    V P                   R ,          P                  4       V P                  P                  4       8H  pV P                  P	                  4       pV\
        9   dC   V'       d;   R\        P                  R V P                  R. RR/V n         V P                  V n	        R# VR8X  dC   V'       d;   R\        P                  R V P                  R. RR/V n         V P                  V n	        R# VR8X  dS   V'       dK   R\        P                  R V P                  R. RR/V n         V P                  4        V P                  V n	        R# V\        9   d   V ;P                  V,          un        R# V P                  RV P                   24       V P                  P                  V4       V P                   V n	        R# r   )r(   r   r   r$   rH   r   r   rp   r   r'   r   rr   r&   r   rA   rM   r   r   s   &  r   r   4HTMLTokenizer.script_data_escaped_end_tag_name_state  s    P Pv&,,.$2G2G2M2M2OO 	 {{$$&##--u	"D 99DJ0 / S[[--u	"D ::DJ   S[[--u	"D ##%DJ  ]"!!T)!
  OOb!6!6 789KKd#77DJr   c                   V P                   P                  4       pV\        \        R4      ,          9   dX   V P	                  V4       V P
                  P                  4       R8X  d   V P                  V n        R# V P                  V n         R# V\        9   d-   V P	                  V4       V ;P
                  V,          un        R# V P                   P                  V4       V P                  V n        R# r   scriptT)r   r   )r$   rH   r   rK   rA   r   r    script_data_double_escaped_stater'   r   r   rM   r   s   & r   r   3HTMLTokenizer.script_data_double_escape_start_state  s    {{$$&$y'<<=OOD!$$**,8!BB
  ";;
  ]"OOD!!!T)!  KKd#77DJr   c                   V P                   P                  4       pVR 8X  d%   V P                  R 4       V P                  V n        R# VR8X  d%   V P                  R4       V P
                  V n        R# VR8X  d%   V P                  R4       V P                  R4       R# V\        J d%   V P                  R4       V P                  V n        R# V P                  V4       R# r   rW   ru   rv   rF   eof-in-script-in-scriptT)	r$   rH   rA   %script_data_double_escaped_dash_stater'   /script_data_double_escaped_less_than_sign_stater=   r   r&   r   s   & r   r   .HTMLTokenizer.script_data_double_escaped_state  s    {{$$&3;OOC CCDJ  S[OOC MMDJ  X01OOH%  S[67DJ  OOD!r   c                   V P                   P                  4       pVR 8X  d%   V P                  R 4       V P                  V n        R# VR8X  d%   V P                  R4       V P
                  V n        R# VR8X  d6   V P                  R4       V P                  R4       V P                  V n        R# V\        J d%   V P                  R4       V P                  V n        R# V P                  V4       V P                  V n        R# r   )
r$   rH   rA   *script_data_double_escaped_dash_dash_stater'   r   r=   r   r   r&   r   s   & r   r   3HTMLTokenizer.script_data_double_escaped_dash_state  s    {{$$&3;OOC HHDJ  S[OOC MMDJ  X01OOH%>>DJ  S[67DJ  OOD!>>DJr   c                2   V P                   P                  4       pVR 8X  d   V P                  R 4       R# VR8X  d%   V P                  R4       V P                  V n        R# VR8X  d%   V P                  R4       V P
                  V n        R# VR8X  d6   V P                  R4       V P                  R4       V P                  V n        R# V\        J d%   V P                  R4       V P                  V n        R# V P                  V4       V P                  V n        R# )r   rW   r   ru   rv   rF   r   T)
r$   rH   rA   r   r'   r   r=   r   r   r&   r   s   & r   r   8HTMLTokenizer.script_data_double_escaped_dash_dash_state  s    {{$$&3;OOC " ! S[OOC MMDJ  S[OOC //DJ  X01OOH%>>DJ  S[67DJ  OOD!>>DJr   c                    V P                   P                  4       pVR 8X  d,   V P                  R 4       RV n        V P                  V n        R# V P                   P                  V4       V P                  V n        R# )r   rD   T)r$   rH   rA   r   #script_data_double_escape_end_stater'   rM   r   r   s   & r   r   =HTMLTokenizer.script_data_double_escaped_less_than_sign_state0  se    {{$$&3;OOC $&D!AADJ  KKd#>>DJr   c                   V P                   P                  4       pV\        \        R4      ,          9   dX   V P	                  V4       V P
                  P                  4       R8X  d   V P                  V n        R# V P                  V n         R# V\        9   d-   V P	                  V4       V ;P
                  V,          un        R# V P                   P                  V4       V P                  V n        R# r   )r$   rH   r   rK   rA   r   r   r   r'   r   r   rM   r   s   & r   r   1HTMLTokenizer.script_data_double_escape_end_state;  s    {{$$&$y'<<=OOD!$$**,8!;;
  "BB
  ]"OOD!!!T)!  KKd#>>DJr   c                   V P                   P                  4       pV\        9   d#   V P                   P                  \        R 4       R # V\        9   d8   V P
                  R,          P                  VR.4       V P                  V n        R # VR8X  d   V P                  4        R # VR8X  d   V P                  V n        R # VR
9   dI   V P                  R4       V P
                  R,          P                  VR.4       V P                  V n        R # VR8X  dI   V P                  R4       V P
                  R,          P                  RR.4       V P                  V n        R # V\        J d%   V P                  R	4       V P                  V n        R # V P
                  R,          P                  VR.4       V P                  V n        R # )Tr/   rD   r   r   #invalid-character-in-attribute-nameru   rv   rF   z#expected-attribute-name-but-got-eof)'"rY   rW   )r$   rH   r   rz   r   r(   r:   attribute_name_stater'   rr   r   r=   r   r&   r   s   & r   r   )HTMLTokenizer.before_attribute_name_stateK  s   {{$$&##KK##$4d;, + ]"v&--tRj922DJ& % S[##%" ! S[::DJ  ))BCv&--tRj922DJ  X01v&--xn=22DJ  S[BCDJ  v&--tRj922DJr   c                    V P                   P                  4       pR pRpVR8X  d   V P                  V n        EMV\        9   dV   V P
                  R,          R,          ^ ;;,          WP                   P                  \        R 4      ,           ,          uu&   RpEM.VR8X  d   R pEM#V\        9   d   V P                  V n        EMVR8X  d   V P                  V n        MVR8X  dB   V P                  R4       V P
                  R,          R,          ^ ;;,          R,          uu&   RpMVR9   dB   V P                  R	4       V P
                  R,          R,          ^ ;;,          V,          uu&   RpM\V\        J d$   V P                  R
4       V P                  V n        M/V P
                  R,          R,          ^ ;;,          V,          uu&   RpV'       d   V P
                  R,          R,          ^ ,          P                  \        4      V P
                  R,          R,          ^ &   V P
                  R,          RR  F>  w  rEV P
                  R,          R,          ^ ,          V8X  g   K-  V P                  R4        M	  V'       d   V P                  4        R # )TFrY   r/   r   r   ru   rv   rF   r   zeof-in-attribute-nameNzduplicate-attributer[   r   r   rW   )r$   rH   before_attribute_value_stater'   r   r(   rz   r   after_attribute_name_stater   r=   r   r&   rl   r	   rr   )r)   r/   leaving_this_state
emit_tokenrj   _s   &     r   r   "HTMLTokenizer.attribute_name_statef  s   {{$$&!
3;::DJ]"v&r*1-{{..}dCCE-!&S[ J%%88DJS[::DJX01v&r*1-9-!&_$BCv&r*1-5-!&S[45DJv&r*1-5-!&
 ""6*2.q1;;<PQ v&r*1---f5cr:%%f-b1!4<$$%:; ;
 '')r   c                   V P                   P                  4       pV\        9   d#   V P                   P                  \        R 4       R # VR8X  d   V P                  V n        R # VR8X  d   V P                  4        R # V\        9   d8   V P                  R,          P                  VR.4       V P                  V n        R # VR8X  d   V P                  V n        R # VR8X  dI   V P                  R4       V P                  R,          P                  RR.4       V P                  V n        R # VR9   dI   V P                  R	4       V P                  R,          P                  VR.4       V P                  V n        R # V\        J d%   V P                  R
4       V P                  V n        R # V P                  R,          P                  VR.4       V P                  V n        R # )TrY   r   r/   rD   r   ru   rv   rF   z&invalid-character-after-attribute-namezexpected-end-of-tag-but-got-eofr   )r$   rH   r   rz   r   r'   rr   r   r(   r:   r   r   r=   r   r&   r   s   & r   r  (HTMLTokenizer.after_attribute_name_state  s   {{$$&##KK##$4d;0 / S[::DJ, + S[##%( ' ]"v&--tRj922DJ" ! S[::DJ  X01v&--xn=22DJ  _$EFv&--tRj922DJ  S[>?DJ  v&--tRj922DJr   c                   V P                   P                  4       pV\        9   d#   V P                   P                  \        R 4       R # VR8X  d   V P                  V n        R # VR8X  d/   V P                  V n        V P                   P                  V4       R # VR8X  d   V P                  V n        R # VR8X  d$   V P                  R4       V P                  4        R # VR8X  dR   V P                  R4       V P                  R,          R,          ^;;,          R	,          uu&   V P                  V n        R # VR9   dR   V P                  R
4       V P                  R,          R,          ^;;,          V,          uu&   V P                  V n        R # V\        J d%   V P                  R4       V P                  V n        R # V P                  R,          R,          ^;;,          V,          uu&   V P                  V n        R # )Tr   rV   r   r   z.expected-attribute-value-but-got-right-bracketru   rv   r/   rF   z"equals-in-unquoted-attribute-valuez$expected-attribute-value-but-got-eofr[   )rY   rW   `)r$   rH   r   rz   #attribute_value_double_quoted_stater'   attribute_value_unquoted_staterM   #attribute_value_single_quoted_stater=   rr   r(   r   r&   r   s   & r   r   *HTMLTokenizer.before_attribute_value_state  s   {{$$&##KK##$4d;2 1 S[AADJ. - S[<<DJKKd#( ' S[AADJ$ # S[MN##%  X01v&r*1-9-<<DJ  _$ABv&r*1-5-<<DJ  S[CDDJ  v&r*1-5-<<DJr   c                $   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d   V P	                  R 4       R# VR8X  dA   V P                  R4       V P                  R,          R,          ^;;,          R,          uu&   R# V\        J d%   V P                  R4       V P                  V n        R# V P                  R,          R,          ^;;,          WP                   P                  R	4      ,           ,          uu&   R# )
r   rV   ru   rv   r/   rF   z#eof-in-attribute-value-double-quoteTr[   )r   rV   ru   
r$   rH   after_attribute_value_stater'   rg   r=   r(   r   r&   rz   r   s   & r   r
  1HTMLTokenizer.attribute_value_double_quoted_state      {{$$&3;99DJ  S[,,S1  X01v&r*1-9-  S[BCDJ  v&r*1-{{../CDDF-r   c                $   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d   V P	                  R 4       R# VR8X  dA   V P                  R4       V P                  R,          R,          ^;;,          R,          uu&   R# V\        J d%   V P                  R4       V P                  V n        R# V P                  R,          R,          ^;;,          WP                   P                  R	4      ,           ,          uu&   R# )
r   rV   ru   rv   r/   rF   z#eof-in-attribute-value-single-quoteTr[   )r   rV   ru   r  r   s   & r   r  1HTMLTokenizer.attribute_value_single_quoted_state  r  r   c           	        V P                   P                  4       pV\        9   d   V P                  V n        R# VR 8X  d   V P                  R4       R# VR8X  d   V P                  4        R# VR	9   dA   V P                  R4       V P                  R,          R
,          ^;;,          V,          uu&   R# VR8X  dA   V P                  R4       V P                  R,          R
,          ^;;,          R,          uu&   R# V\        J d%   V P                  R4       V P                  V n        R# V P                  R,          R
,          ^;;,          WP                   P                  \        R4      \        ,          4      ,           ,          uu&   R# )rV   r   z0unexpected-character-in-unquoted-attribute-valuer/   ru   rv   rF   z eof-in-attribute-value-no-quotesT)r   r   rY   rW   r	  r[   )rV   r   r   r   rY   rW   r	  ru   )r$   rH   r   r   r'   rg   rr   r=   r(   r   r&   rz   rK   r   s   & r   r  ,HTMLTokenizer.attribute_value_unquoted_state  sY   {{$$&##99DJ& % S[,,S1" ! S[##%  ..OPv&r*1-5-  X01v&r*1-9-  S[?@DJ 	 v&r*1-{{..KL$%& &'- r   c                   V P                   P                  4       pV\        9   d   V P                  V n        R# VR 8X  d   V P                  4        R# VR8X  d   V P                  V n        R# V\        J d@   V P                  R4       V P                   P                  V4       V P                  V n        R# V P                  R4       V P                   P                  V4       V P                  V n        R# )r   r   z$unexpected-eof-after-attribute-valuez*unexpected-character-after-attribute-valueT)r$   rH   r   r   r'   rr   r   r   r=   rM   r&   r   s   & r   r  )HTMLTokenizer.after_attribute_value_state  s    {{$$&##99DJ  S[##%  S[::DJ  S[CDKKd#DJ
  IJKKd#99DJr   c                   V P                   P                  4       pVR 8X  d"   RV P                  R&   V P                  4        R# V\        J d@   V P                  R4       V P                   P                  V4       V P                  V n        R# V P                  R4       V P                   P                  V4       V P                  V n        R# )r   Trk   z#unexpected-eof-after-solidus-in-tagz)unexpected-character-after-solidus-in-tag)
r$   rH   r(   rr   r   r=   rM   r&   r'   r   r   s   & r   r   *HTMLTokenizer.self_closing_start_tag_state  s    {{$$&3;04D}-##%  S[BCKKd#DJ
  HIKKd#99DJr   c                   V P                   P                  R 4      pVP                  RR4      pV P                  P	                  R\
        P                  RV/4       V P                   P                  4        V P                  V n	        R# )r   ru   rF   r.   r/   T)
r$   rz   replacer0   r:   r   COMMENTrH   r&   r'   r   s   & r   r   !HTMLTokenizer.bogus_comment_state-  si     {{&&s+||Hh/ EF 	__
r   c           
        V P                   P                  4       .pVR,          R8X  df   VP                  V P                   P                  4       4       VR,          R8X  d-   R\        P                  RR/V n        V P                  V n        R# EMVR,          '       d   VR,          R9   d   RpR FM  pVP                  V P                   P                  4       4       VR,          '       d   VR,          V9  g   KK  Rp M	  V'       d3   R\        P                  RRR	R
RR
RR/V n        V P                  V n        R# MVR,          R8X  d   V P                  e   V P                  P                  P                  '       d   V P                  P                  P                  R,          P                  V P                  P                  P                  8w  db   RpR F>  pVP                  V P                   P                  4       4       VR,          V8w  g   K<  Rp M	  V'       d   V P                  V n        R# V P!                  R4       V'       d,   V P                   P#                  VP%                  4       4       K3  V P&                  V n        R# )r   r   r.   r/   rD   TdDFrj   publicIdNsystemIdcorrect[zCDATA[zexpected-dashes-or-doctyper[   )oOcCtTyYpPeE)r$   rH   r:   r   r  r(   comment_start_stater'   DOCTYPEdoctype_stater%   treeopen_elements	namespacedefault_namespacecdata_section_stater=   rM   r3   r   )r)   rQ   matchedexpecteds   &   r   r   +HTMLTokenizer.markup_declaration_open_state;  s   &&()9LL..01RyC&,emmVR%H"!55
   2YY59,G@T[[2245RyyE"IX$=#G	 A
 EMMBt&" "//
  Bi3kk%kk,,,kk,,R0::kk001G$T[[22459(#G	 %
 !55
56KKeiik*--
r   c                   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d3   V P	                  R4       V P
                  R;;,          R,          uu&   R# VR8X  dJ   V P	                  R4       V P                  P                  V P
                  4       V P                  V n        R# V\        J dJ   V P	                  R4       V P                  P                  V P
                  4       V P                  V n        R# V P
                  R;;,          V,          uu&   V P                  V n        R# )	r   ru   rv   r/   rF   r   incorrect-commenteof-in-commentT)r$   rH   comment_start_dash_stater'   r=   r(   r0   r:   r&   r   comment_stater   s   & r   r+  !HTMLTokenizer.comment_start_statej  s   {{$$&3;66DJ  X01v&(2&  S[01##D$6$67DJ  S[-.##D$6$67DJ  v&$.&++DJr   c                   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d3   V P	                  R4       V P
                  R;;,          R,          uu&   R# VR8X  dJ   V P	                  R4       V P                  P                  V P
                  4       V P                  V n        R# V\        J dJ   V P	                  R4       V P                  P                  V P
                  4       V P                  V n        R# V P
                  R;;,          R V 2,          uu&   V P                  V n        R# )	r   ru   rv   r/      -�r   r7  r8  T)r$   rH   comment_end_stater'   r=   r(   r0   r:   r&   r   r:  r   s   & r   r9  &HTMLTokenizer.comment_start_dash_state~  s   {{$$&3;//DJ  X01v&)3&  S[01##D$6$67DJ  S[-.##D$6$67DJ  v&AdV*4&++DJr   c                   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  d3   V P	                  R4       V P
                  R;;,          R,          uu&   R# V\        J dJ   V P	                  R4       V P                  P                  V P
                  4       V P                  V n        R# V P
                  R;;,          WP                   P                  R4      ,           ,          uu&   R# )r   ru   rv   r/   rF   r8  T)r   ru   )r$   rH   comment_end_dash_stater'   r=   r(   r   r0   r:   r&   rz   r   s   & r   r:  HTMLTokenizer.comment_state  s    {{$$&3;44DJ  X01v&(2&  S[-.##D$6$67DJ  v&{{..??A&r   c                   V P                   P                  4       pVR 8X  d   V P                  V n        R# VR8X  dD   V P	                  R4       V P
                  R;;,          R,          uu&   V P                  V n        R# V\        J dJ   V P	                  R4       V P                  P                  V P
                  4       V P                  V n        R# V P
                  R;;,          R V 2,          uu&   V P                  V n        R# )r   ru   rv   r/   r=  zeof-in-comment-end-dashT)r$   rH   r>  r'   r=   r(   r:  r   r0   r:   r&   r   s   & r   rA  $HTMLTokenizer.comment_end_dash_state  s    {{$$&3;//DJ  X01v&)3&++DJ  S[67##D$6$67DJ  v&AdV*4&++DJr   c                B   V P                   P                  4       pVR 8X  d9   V P                  P                  V P                  4       V P
                  V n        R# VR8X  dD   V P                  R4       V P                  R;;,          R,          uu&   V P                  V n        R# VR8X  d%   V P                  R4       V P                  V n        R# VR8X  d3   V P                  R4       V P                  R;;,          V,          uu&   R# V\        J dJ   V P                  R	4       V P                  P                  V P                  4       V P
                  V n        R# V P                  R
4       V P                  R;;,          RV 2,          uu&   V P                  V n        R# )r   ru   rv   r/   u   --�r   z,unexpected-bang-after-double-dash-in-commentr   z,unexpected-dash-after-double-dash-in-commentzeof-in-comment-double-dashzunexpected-char-in-commentz--T)r$   rH   r0   r:   r(   r&   r'   r=   r:  comment_end_bang_stater   r   s   & r   r>  HTMLTokenizer.comment_end_state  sb   {{$$&3;##D$6$67DJ( ' X01v&*4&++DJ   S[KL44DJ  S[KLv&$.&  S[9:##D$6$67DJ  9:v&Btf+5&++DJr   c                   V P                   P                  4       pVR 8X  d9   V P                  P                  V P                  4       V P
                  V n        R# VR8X  d3   V P                  R;;,          R,          uu&   V P                  V n        R# VR8X  dD   V P                  R4       V P                  R;;,          R,          uu&   V P                  V n        R# V\        J dJ   V P                  R4       V P                  P                  V P                  4       V P
                  V n        R# V P                  R;;,          RV 2,          uu&   V P                  V n        R# )	r   r   r/   z--!ru   rv   u   --!�zeof-in-comment-end-bang-stateT)r$   rH   r0   r:   r(   r&   r'   rA  r=   r:  r   r   s   & r   rF  $HTMLTokenizer.comment_end_bang_state  s'   {{$$&3;##D$6$67DJ  S[v&%/&44DJ  X01v&+5&++DJ  S[<=##D$6$67DJ  v&Cv,6&++DJr   c                   V P                   P                  4       pV\        9   d   V P                  V n        R# V\
        J dY   V P                  R 4       RV P                  R&   V P                  P                  V P                  4       V P                  V n        R# V P                  R4       V P                   P                  V4       V P                  V n        R# )!expected-doctype-name-but-got-eofFr#  zneed-space-after-doctypeT)r$   rH   r   before_doctype_name_stater'   r   r=   r(   r0   r:   r&   rM   r   s   & r   r-  HTMLTokenizer.doctype_state  s    {{$$&##77DJ  S[@A,1Dy)##D$6$67DJ
  78KKd#77DJr   c                   V P                   P                  4       pV\        9   d    R	# VR 8X  dY   V P                  R4       RV P                  R&   V P
                  P                  V P                  4       V P                  V n        R	# VR8X  d4   V P                  R4       RV P                  R&   V P                  V n        R	# V\        J dY   V P                  R4       RV P                  R&   V P
                  P                  V P                  4       V P                  V n        R	# WP                  R&   V P                  V n        R	# )
r   z+expected-doctype-name-but-got-right-bracketFr#  ru   rv   rF   rj   rK  T)r$   rH   r   r=   r(   r0   r:   r&   r'   doctype_name_stater   r   s   & r   rL  'HTMLTokenizer.before_doctype_name_state  s$   {{$$&##$ # S[JK,1Dy)##D$6$67DJ  X01)1Dv&00DJ  S[@A,1Dy)##D$6$67DJ  *.v&00DJr   c                   V P                   P                  4       pV\        9   dG   V P                  R ,          P	                  \
        4      V P                  R &   V P                  V n        R# VR8X  dl   V P                  R ,          P	                  \
        4      V P                  R &   V P                  P                  V P                  4       V P                  V n        R# VR8X  dD   V P                  R4       V P                  R ;;,          R,          uu&   V P                  V n        R# V\        J d   V P                  R4       RV P                  R&   V P                  R ,          P	                  \
        4      V P                  R &   V P                  P                  V P                  4       V P                  V n        R# V P                  R ;;,          V,          uu&   R# )	rj   r   ru   rv   rF   zeof-in-doctype-nameFr#  T)r$   rH   r   r(   rl   r	   after_doctype_name_stater'   r0   r:   r&   r=   rO  r   r   s   & r   rO   HTMLTokenizer.doctype_name_state  s   {{$$&##""6*445IJ v&66DJ& % S[""6*445IJ v&##D$6$67DJ  X01v&(2&00DJ  S[23,1Dy)""6*445IJ v&##D$6$67DJ  v&$.&r   c                   V P                   P                  4       pV\        9   d    R# VR 8X  d9   V P                  P	                  V P
                  4       V P                  V n        R# V\        J dt   RV P
                  R&   V P                   P                  V4       V P                  R4       V P                  P	                  V P
                  4       V P                  V n        R# V'       d[   VR9   dT   RpR	 F/  pV P                   P                  4       pV'       d	   W9  g   K-  Rp M	  V'       d   V P                  V n        R# MaV'       dZ   VR9   dS   RpR
 F/  pV P                   P                  4       pV'       d	   W9  g   K-  Rp M	  V'       d   V P                  V n        R# V P                   P                  V4       V P                  RVR7       RV P
                  R&   V P                  V n        R# )r   Fr#  eof-in-doctyper)  TsSz*expected-space-or-right-bracket-in-doctyper   )uUbBlLiIr&  )r(  rV  r'  r*  mM)r$   rH   r   r0   r:   r(   r&   r'   r   rM   r=   "after_doctype_public_keyword_state"after_doctype_system_keyword_statebogus_doctype_state)r)   r/   r3  r4  s   &   r   rR  &HTMLTokenizer.after_doctype_name_state"  s   {{$$&##P O S[##D$6$67DJJ I S[,1Dy)KKd#-.##D$6$67DJ> ;  >H;;002D4#7"'	 !?
 !%!H!HDJ  $$, >H;;002D4#7"'	 !?
 !%!H!HDJ KKd#IPTU,1Dy)11DJr   c                   V P                   P                  4       pV\        9   d   V P                  V n        R# VR9   d@   V P                  R4       V P                   P                  V4       V P                  V n        R# V\        J dY   V P                  R4       RV P                  R&   V P                  P                  V P                  4       V P                  V n        R# V P                   P                  V4       V P                  V n        R# r   unexpected-char-in-doctyperU  Fr#  T)r   r   )r$   rH   r   &before_doctype_public_identifier_stater'   r=   rM   r   r(   r0   r:   r&   r   s   & r   r\  0HTMLTokenizer.after_doctype_public_keyword_stateO      {{$$&##DDDJ  Z9:KKd#DDDJ  S[-.,1Dy)##D$6$67DJ  KKd#DDDJr   c                   V P                   P                  4       pV\        9   d    R
# VR 8X  d#   RV P                  R&   V P                  V n        R
# VR8X  d#   RV P                  R&   V P                  V n        R
# VR8X  dY   V P                  R4       RV P                  R&   V P                  P                  V P                  4       V P                  V n        R
# V\        J dY   V P                  R4       RV P                  R&   V P                  P                  V P                  4       V P                  V n        R
# V P                  R	4       RV P                  R&   V P                  V n        R
# )r   rD   r!  r   r   unexpected-end-of-doctypeFr#  rU  rb  T)r$   rH   r   r(   -doctype_public_identifier_double_quoted_stater'   -doctype_public_identifier_single_quoted_stater=   r0   r:   r&   r   r^  r   s   & r   rc  4HTMLTokenizer.before_doctype_public_identifier_statea  sP   {{$$&##* ) S[-/Dz*KKDJ$ # S[-/Dz*KKDJ  S[89,1Dy)##D$6$67DJ  S[-.,1Dy)##D$6$67DJ
  9:,1Dy)11DJr   c                   V P                   P                  4       pVR 8X  d   V P                  V n        R
# VR8X  d3   V P	                  R4       V P
                  R;;,          R,          uu&   R
# VR8X  dY   V P	                  R4       RV P
                  R&   V P                  P                  V P
                  4       V P                  V n        R
# V\        J dY   V P	                  R	4       RV P
                  R&   V P                  P                  V P
                  4       V P                  V n        R
# V P
                  R;;,          V,          uu&   R
# )r   ru   rv   r!  rF   r   rg  Fr#  rU  T
r$   rH   %after_doctype_public_identifier_stater'   r=   r(   r0   r:   r&   r   r   s   & r   rh  ;HTMLTokenizer.doctype_public_identifier_double_quoted_state{      {{$$&3;CCDJ   X01z*h6*  S[89,1Dy)##D$6$67DJ  S[-.,1Dy)##D$6$67DJ  z*d2*r   c                   V P                   P                  4       pVR 8X  d   V P                  V n        R
# VR8X  d3   V P	                  R4       V P
                  R;;,          R,          uu&   R
# VR8X  dY   V P	                  R4       RV P
                  R&   V P                  P                  V P
                  4       V P                  V n        R
# V\        J dY   V P	                  R	4       RV P
                  R&   V P                  P                  V P
                  4       V P                  V n        R
# V P
                  R;;,          V,          uu&   R
# )r   ru   rv   r!  rF   r   rg  Fr#  rU  Trl  r   s   & r   ri  ;HTMLTokenizer.doctype_public_identifier_single_quoted_state  ro  r   c                   V P                   P                  4       pV\        9   d   V P                  V n        R	# VR 8X  d9   V P
                  P                  V P                  4       V P                  V n        R	# VR8X  d4   V P                  R4       RV P                  R&   V P                  V n        R	# VR8X  d4   V P                  R4       RV P                  R&   V P                  V n        R	# V\        J dY   V P                  R4       RV P                  R&   V P
                  P                  V P                  4       V P                  V n        R	# V P                  R4       RV P                  R&   V P                  V n        R	# )
r   r   rb  rD   r"  r   rU  Fr#  T)r$   rH   r   3between_doctype_public_and_system_identifiers_stater'   r0   r:   r(   r&   r=   -doctype_system_identifier_double_quoted_state-doctype_system_identifier_single_quoted_stater   r^  r   s   & r   rm  3HTMLTokenizer.after_doctype_public_identifier_state  sY   {{$$&##QQDJ* ) S[##D$6$67DJ$ # S[9:-/Dz*KKDJ  S[9:-/Dz*KKDJ  S[-.,1Dy)##D$6$67DJ
  9:,1Dy)11DJr   c                   V P                   P                  4       pV\        9   d    R	# VR 8X  d9   V P                  P	                  V P
                  4       V P                  V n        R	# VR8X  d#   RV P
                  R&   V P                  V n        R	# VR8X  d#   RV P
                  R&   V P                  V n        R	# V\        J dY   V P                  R4       RV P
                  R&   V P                  P	                  V P
                  4       V P                  V n        R	# V P                  R4       RV P
                  R&   V P                  V n        R	# )
r   r   rD   r"  r   rU  Fr#  rb  T)r$   rH   r   r0   r:   r(   r&   r'   rt  ru  r   r=   r^  r   s   & r   rs  AHTMLTokenizer.between_doctype_public_and_system_identifiers_state  s1   {{$$&##& % S[##D$6$67DJ   S[-/Dz*KKDJ  S[-/Dz*KKDJ  S[-.,1Dy)##D$6$67DJ
  9:,1Dy)11DJr   c                   V P                   P                  4       pV\        9   d   V P                  V n        R# VR9   d@   V P                  R4       V P                   P                  V4       V P                  V n        R# V\        J dY   V P                  R4       RV P                  R&   V P                  P                  V P                  4       V P                  V n        R# V P                   P                  V4       V P                  V n        R# ra  )r$   rH   r   &before_doctype_system_identifier_stater'   r=   rM   r   r(   r0   r:   r&   r   s   & r   r]  0HTMLTokenizer.after_doctype_system_keyword_state  re  r   c                   V P                   P                  4       pV\        9   d    R	# VR 8X  d#   RV P                  R&   V P                  V n        R	# VR8X  d#   RV P                  R&   V P                  V n        R	# VR8X  dY   V P                  R4       RV P                  R&   V P                  P                  V P                  4       V P                  V n        R	# V\        J dY   V P                  R4       RV P                  R&   V P                  P                  V P                  4       V P                  V n        R	# V P                  R4       RV P                  R&   V P                  V n        R	# )
r   rD   r"  r   r   rb  Fr#  rU  T)r$   rH   r   r(   rt  r'   ru  r=   r0   r:   r&   r   r^  r   s   & r   rz  4HTMLTokenizer.before_doctype_system_identifier_state  sP   {{$$&##* ) S[-/Dz*KKDJ$ # S[-/Dz*KKDJ  S[9:,1Dy)##D$6$67DJ  S[-.,1Dy)##D$6$67DJ
  9:,1Dy)11DJr   c                   V P                   P                  4       pVR 8X  d   V P                  V n        R
# VR8X  d3   V P	                  R4       V P
                  R;;,          R,          uu&   R
# VR8X  dY   V P	                  R4       RV P
                  R&   V P                  P                  V P
                  4       V P                  V n        R
# V\        J dY   V P	                  R	4       RV P
                  R&   V P                  P                  V P
                  4       V P                  V n        R
# V P
                  R;;,          V,          uu&   R
# )r   ru   rv   r"  rF   r   rg  Fr#  rU  T
r$   rH   %after_doctype_system_identifier_stater'   r=   r(   r0   r:   r&   r   r   s   & r   rt  ;HTMLTokenizer.doctype_system_identifier_double_quoted_state  ro  r   c                   V P                   P                  4       pVR 8X  d   V P                  V n        R
# VR8X  d3   V P	                  R4       V P
                  R;;,          R,          uu&   R
# VR8X  dY   V P	                  R4       RV P
                  R&   V P                  P                  V P
                  4       V P                  V n        R
# V\        J dY   V P	                  R	4       RV P
                  R&   V P                  P                  V P
                  4       V P                  V n        R
# V P
                  R;;,          V,          uu&   R
# )r   ru   rv   r"  rF   r   rg  Fr#  rU  Tr  r   s   & r   ru  ;HTMLTokenizer.doctype_system_identifier_single_quoted_state  ro  r   c                   V P                   P                  4       pV\        9   d    R# VR 8X  d9   V P                  P	                  V P
                  4       V P                  V n        R# V\        J dY   V P                  R4       RV P
                  R&   V P                  P	                  V P
                  4       V P                  V n        R# V P                  R4       V P                  V n        R# )r   rU  Fr#  rb  T)r$   rH   r   r0   r:   r(   r&   r'   r   r=   r^  r   s   & r   r  3HTMLTokenizer.after_doctype_system_identifier_state-  s    {{$$&##  S[##D$6$67DJ  S[-.,1Dy)##D$6$67DJ  9:11DJr   c                t   V P                   P                  4       pVR 8X  d9   V P                  P                  V P                  4       V P
                  V n        R# V\        J dT   V P                   P                  V4       V P                  P                  V P                  4       V P
                  V n        R#  R# )r   T)	r$   rH   r0   r:   r(   r&   r'   r   rM   r   s   & r   r^  !HTMLTokenizer.bogus_doctype_state>  s    {{$$&3;##D$6$67DJ  S[KKd###D$6$67DJ  r   c                   . p VP                  V P                  P                  R4      4       VP                  V P                  P                  R4      4       V P                  P                  4       pV\        J d   M=VR8X  g   Q hVR	,          R
R R8X  d   VR	,          RR
 VR	&   MVP                  V4       K  RP                  V4      pVP                  R4      ;p^ 8  d6   \        V4       F  pV P                  R4       K  	  VP                  RR4      pV'       d   V P                  V4       V P                  V n        R # )T]r   Nz]]rD   ru   rv   rF   r[   )r:   r$   rz   rH   r   rJ   countr   r=   r  rA   r&   r'   )r)   r/   char
null_countr  s   &    r   r2  !HTMLTokenizer.cdata_section_stateL  s
   KK//45KK//45;;((*Ds{s{"{8BC=D(#Bx}DHKK%wwt}**X..J!3:&  !45 '<<(3DOOD!__
r   )r(   r%   r'   r$   r   r0   r#   )NF)R__name__
__module____qualname____firstlineno____doc__r+   r6   r=   rA   rS   rd   rg   rr   r&   rx   r   r   r   r   r   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r
  r  r  r  r   r   r   r+  r9  r:  rA  r>  rF  r-  rL  rO  rR  r\  rc  rh  ri  rm  rs  r]  rz  rt  ru  r  r^  r2  __static_attributes____classdictcell__)__classdict__s   @r   r!   r!   &   s    "1('K3jEKNB%86
8
	!F0(		$L		$L	$L $(	$L $(,	 6/b:<""0$-^(( "4*.4+Z$4**40$4**" r   r!   N)bisectr   collectionsr   html.entitiesr   r   	constantsr   r   r   r	   r
   r   r   r   r   inputstreamr   tuplesortedr   r   r   r!    r   r   <module>r     sG      +
 
 
 )F8$%- r   