
    $g|E                        d Z ddlZddlZddgZ ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d	          Z	 ej        d
          Z
 ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z G d de          Z G d dej                  Z G d de          ZddZedk    r e             dS dS )z;A parser for SGML, using the derived class as a static DTD.    N
SGMLParserSGMLParseErrorz[&<]zN&([a-zA-Z][a-zA-Z0-9]*|#[0-9]*)?|<([a-zA-Z][^<>]*|/([a-zA-Z][^<>]*)?|![^<>]*)?z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z&#([0-9]+)[^0-9]z
<[>a-zA-Z]z<[a-zA-Z][-.a-zA-Z0-9]*/z"<([a-zA-Z][-.a-zA-Z0-9]*)/([^/]*)/>z[<>]z[a-zA-Z][-_.a-zA-Z0-9]*ze\s*([a-zA-Z_][-:.a-zA-Z_0-9]*)(\s*=\s*(\'[^\']*\'|"[^"]*"|[][\-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~\'"@]*))?c                       e Zd ZdZdS )r   z&Exception raised for all parse errors.N)__name__
__module____qualname____doc__     G/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/sgmllib.pyr   r   &   s        00Dr   c                      e Zd Z ej        d          Zd+dZd Zd Zd Z	d Z
d Zd	 Zd
 ZdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddddddZd  Zd! Zd" Z d# Z!d$ Z"d% Z#d& Z$d' Z%d( Z&d) Z'd*S ),r   z+&(?:([a-zA-Z][-.a-zA-Z0-9]*)|#([0-9]+))(;?)r   c                 <    || _         |                                  dS )z#Initialize and reset this instance.N)verboseresetselfr   s     r   __init__zSGMLParser.__init__<   s    

r   c                     d| _         d| _        g | _        d| _        d| _        d| _        t          j                            |            dS )z0Reset this instance. Loses all unprocessed data.N z???r   )	_SGMLParser__starttag_textrawdatastacklasttag
nomoretagsliteral_markupbase
ParserBaser   r   s    r   r   zSGMLParser.resetA   sJ    #
$$T*****r   c                 "    dx| _         | _        dS )zYEnter literal mode (CDATA) till EOF.

        Intended for derived classes only.
           N)r   r   r   s    r   setnomoretagszSGMLParser.setnomoretagsK   s    
 *+*$,,,r   c                     d| _         dS )zPEnter literal mode (CDATA).

        Intended for derived classes only.
        r!   N)r   )r   argss     r   
setliteralzSGMLParser.setliteralR   s    
 r   c                 N    | j         |z   | _         |                     d           dS )zFeed some data to the parser.

        Call this as often as you want, with as little or as much text
        as you want (may include '
').  (This just saves the text,
        all the processing is done by goahead().)
        r   N)r   goaheadr   datas     r   feedzSGMLParser.feedY   s%     |d*Qr   c                 0    |                      d           dS )zHandle the remaining data.r!   N)r'   r   s    r   closezSGMLParser.closed   s    Qr   c                      t          |          N)r   )r   messages     r   errorzSGMLParser.errorh   s    W%%%r   c                 4   | j         }d}t          |          }||k     r| j        r!|                     |||                    |}nt                              ||          }|r|                                }n|}||k     r|                     |||                    |}||k    rn9||         dk    r{t                              ||          rI| j	        r!|                     ||                    |dz   }| 
                    |          }|dk     rn|}|                    d|          r(|                     |          }|dk     rn|}d| _	        ?| j	        r(||dz   k    r|                     d           |dz   }nn]n|                    d|          r!|                     |          }|dk     rn(|}|                    d|          r$|                     |          }|dk     rn||z   }|                    d|          r!|                     |          }|dk     rn|}n0||         dk    r| j	        r"|                     ||                    |dz   }Nt                               ||          }|rU|                    d          }|                     |           |                    d          }||dz
           d	k    r|dz
  }t(                              ||          }|rU|                    d          }|                     |           |                    d          }||dz
           d	k    r|dz
  }2n|                     d
           t.                              ||          }|s"|                     ||                    |dz   }|                    d          }||k    rn&|                     |||                    |}||k     |r%||k     r|                     |||                    |}||d          | _         d S )Nr   <r!   z</z<!--<?z<!&;zneither < nor & ??)r   lenr   handle_datainterestingsearchstartstarttagopenmatchr   parse_starttag
startswithparse_endtagparse_commentparse_piparse_declarationcharrefgrouphandle_charrefend	entityrefhandle_entityrefr0   
incomplete)	r   rF   r   inr<   jknames	            r   r'   zSGMLParser.goaheadn   sy   ,LL!ee   1...&&w22E %++--aa!1uu  1...AAvvuqzS  %%gq11 | !((444aC ++A..A1uueA%%dA.. ))!,,A1uueA#$DL< AE{{((---aC %%fa00 
 **1--A1uueA%%dA.. a((A1uue!A%%dA..  ..q11A1uueA s""< $$WQZ000!Agq11  ;;q>>D''---		!Aqs|s**!A!33  ;;q>>D))$///		!Aqs|s**!A 

/000 $$Wa00E   ,,,aC		!AAvvWQqS\***Au !eex  	1q55WQqS\***Aqrr{r   =c                 >   | j         }|||dz            dk    r|                     d           t                              ||dz             }|sdS |                    d          }|                     ||dz   |                    |                    d          }||z
  S )N   r3   zunexpected call to parse_pi()r   )r   r0   picloser9   r:   	handle_pirF   )r   rJ   r   r<   rL   s        r   rA   zSGMLParser.parse_pi   s    ,1QqS5>T!!JJ6777w!,, 	2KKNNwqsAv'''IIaLLs
r   c                     | j         S r.   )r   r   s    r   get_starttag_textzSGMLParser.get_starttag_text   s    ##r   c                    d | _         |}| j        }t                              ||          rt                              ||          }|sdS |                    dd          \  }}d|z  | _         |                                }|                    d          }|                     ||           |||                    d          dz            | _         |S t          
                    ||dz             }|sdS |                    d          }g }	|||dz            dk    r
|}| j        }npt                              ||dz             }|s|                     d           |                    d          }||dz   |                                         }|| _        ||k     rt                              ||          }|sn|                    ddd          \  }
}}|s|
}ni|d d         d	cxk    r|dd          k    s"n |d d         d
cxk    r|dd          k    rn n
|dd         }| j                            | j        |          }|	                    |
                                |f           |                    d          }||k     ||         dk    r|dz   }|||         | _         |                     ||	           |S )NrR   r!   rQ   z<%s/r   z<>z!unexpected call to parse_starttag   '"r   )r   r   shorttagopenr<   shorttagrD   lowerrF   finish_shorttag
endbracketr9   r:   r   tagfindr0   attrfindentity_or_charrefsub_convert_refappendfinish_starttag)r   rJ   	start_posr   r<   tagr)   rM   rL   attrsattrnamerest	attrvalues                r   r=   zSGMLParser.parse_starttag   s   #	,gq)) 	
 NN7A..E rAq))IC#)C<D ))++C		!A  d+++#*9UYYq\\A5E+E#FD H
 !!'1Q3// 	2KKNN1QqS5>T!!A,CCMM'1Q3//E @

>???		!A!A#a%.&&((CDL!eeNN7A..E%(-Aq!(<(<%HdI 2$		bqbMS::::IbccN::::bqbMS::::IbccN::::: )!B$I 266%y2 2	LL(..**I6777		!A !ee 1:!A&y{3S%(((r   c                    |                     d          rG|                     |                     d                    pd|                                dd          z  S |                     d          r@|                     |                     d                    pd|                     d          z  S d|                     d          z  S )NrQ   z&#%s%sr!   rX   z&%s;z&%s)rD   convert_charrefgroupsconvert_entityref)r   r<   s     r   rd   zSGMLParser._convert_ref&  s    ;;q>> 	*''A77 .5<<>>!""--.[[^^ 	*))%++a..99 (Q'( 5;;q>>))r   c                 0   | j         }t                              ||dz             }|sdS |                    d          }||dz   |                                                                         }||         dk    r|dz   }|                     |           |S )Nr!   rR   r   rQ   r   )r   r_   r9   r:   stripr]   finish_endtag)r   rJ   r   r<   rL   rh   s         r   r?   zSGMLParser.parse_endtag1  s    ,!!'1Q3// 	2KKNNac!en""$$**,,1:!A3r   c                     |                      |g            |                     |           |                     |           d S r.   )rf   r7   rs   )r   rh   r)   s      r   r^   zSGMLParser.finish_shorttag>  sF    S"%%%3r   c                 X   	 t          | d|z             }| j                            |           |                     |||           dS # t          $ rW 	 t          | d|z             }|                     |||           Y dS # t          $ r |                     ||           Y Y dS w xY ww xY w)Nstart_r!   do_r   rR   )getattrr   re   handle_starttagAttributeErrorunknown_starttag)r   rh   ri   methods       r   rf   zSGMLParser.finish_starttagE  s    	T8c>22F Jc"""  fe4441  	 	 	 us{33
 $$S&%888qq "   %%c5111rrr	s/   A 
B)B &B)  B% B)$B%%B)c                    |s5t          | j                  dz
  }|dk     r|                     |           d S n|| j        vrQ	 t          | d|z             }|                     |           n%# t
          $ r |                     |           Y nw xY wd S t          | j                  }t          |          D ]}| j        |         |k    r|}t          | j                  |k    r| j        d         }	 t          | d|z             }n# t
          $ r d }Y nw xY w|r|                     ||           n|                     |           | j        d= t          | j                  |k    d S d S )Nr!   r   end_rR   )r6   r   unknown_endtagrx   report_unbalancedrz   rangehandle_endtag)r   rh   foundr|   rJ   s        r   rs   zSGMLParser.finish_endtagW  s    	3
OOa'Eqyy##C(((  $*$$0$T6C<88F **3//// & - - -'',,,,,- 
OOE5\\ 3 3:a=C''$*oo%%*R.C v|44!    )""3////##C(((
2 $*oo%%%%%%s$   A+ +BB1D DDc                      ||           d S r.   r   )r   rh   r|   ri   s       r   ry   zSGMLParser.handle_starttagv  s    ur   c                      |             d S r.   r   )r   rh   r|   s      r   r   zSGMLParser.handle_endtagz  s    r   c                 l    | j         r,t          d|z   dz              t          d| j                   d S d S )Nz*** Unbalanced </r   z
*** Stack:)r   printr   r   rh   s     r   r   zSGMLParser.report_unbalanced~  sG    < 	,%+c1222,
+++++	, 	,r   c                     	 t          |          }n# t          $ r Y dS w xY wd|cxk    rdk    sn dS |                     |          S )z/Convert character reference, may be overridden.Nr      )int
ValueErrorconvert_codepoint)r   rN   rK   s      r   rn   zSGMLParser.convert_charref  sf    	D		AA 	 	 	FF	A}}}}}}}}F%%a(((s    
  c                      t          |          S r.   )chr)r   	codepoints     r   r   zSGMLParser.convert_codepoint  s    9~~r   c                     |                      |          }||                     |           dS |                     |           dS )z0Handle character reference, no need to override.N)rn   unknown_charrefr7   r   rN   replacements      r   rE   zSGMLParser.handle_charref  sO    **400  &&&&&[)))))r   r2   r   r4   rZ   rY   )ltgtampquotaposc                 ,    | j         }||v r||         S dS )zConvert entity references.

        As an alternative to overriding this method; one can tailor the
        results by setting up the self.entitydefs mapping appropriately.
        N)
entitydefs)r   rN   tables      r   rp   zSGMLParser.convert_entityref  s#     5==;Fr   c                     |                      |          }||                     |           dS |                     |           dS )z.Handle entity references, no need to override.N)rp   unknown_entityrefr7   r   s      r   rH   zSGMLParser.handle_entityref  sO    ,,T22""4((((([)))))r   c                     d S r.   r   r(   s     r   r7   zSGMLParser.handle_data      r   c                     d S r.   r   r(   s     r   handle_commentzSGMLParser.handle_comment  r   r   c                     d S r.   r   )r   decls     r   handle_declzSGMLParser.handle_decl  r   r   c                     d S r.   r   r(   s     r   rT   zSGMLParser.handle_pi  r   r   c                     d S r.   r   )r   rh   ri   s      r   r{   zSGMLParser.unknown_starttag        r   c                     d S r.   r   r   s     r   r   zSGMLParser.unknown_endtag  r   r   c                     d S r.   r   r   refs     r   r   zSGMLParser.unknown_charref  r   r   c                     d S r.   r   r   s     r   r   zSGMLParser.unknown_entityref  r   r   Nr   )(r   r   r	   recompilerb   r   r   r"   r%   r*   r,   r0   r'   _decl_othercharsrA   rV   r=   rd   r?   r^   rf   rs   ry   r   r   rn   r   rE   r   rp   rH   r7   r   r   rT   r{   r   r   r   r   r   r   r   r   6   s       "
 $     
+ + ++ + +  	 	 	  & & &c# c# c#N 
 
 
$ $ $; ; ;|* * *
 
 
       $  >    , , ,
) ) )  * * * c#sDII 
 
 
* * *         100'''(((*****r   c                   L    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd ZdS )TestSGMLParserr   c                 J    d| _         t                              | |           d S )Nr   )testdatar   r   r   s     r   r   zTestSGMLParser.__init__  s%    D'*****r   c                     | j         |z   | _         t          t          | j                             dk    r|                                  d S d S )NF   )r   r6   reprflushr(   s     r   r7   zTestSGMLParser.handle_data  sF    ,tDM""##r))JJLLLLL *)r   c                 d    | j         }|r&d| _         t          dt          |                     d S d S )Nr   zdata:)r   r   r   r(   s     r   r   zTestSGMLParser.flush  s>    } 	'DM'4::&&&&&	' 	'r   c                     |                                   t          |          }t          |          dk    r|d d         dz   |dd          z   }t          d|           d S )ND       z...izcomment:)r   r   r6   r   )r   r)   rs      r   r   zTestSGMLParser.handle_comment  s]    

JJq66B;;#2#344(Aj!r   c                     |                                   |st          d|z   dz              d S t          d|z   d           |D ]"\  }}t          |dz   dz   |z   dz   d           #t          d           d S )Nzstart tag: <r    )rF   rO   rZ   r   r   )r   rh   ri   rN   values        r   r{   zTestSGMLParser.unknown_starttag  s    

 	.3&,-----.3&C0000$ ? ?edSj3&.4#>>>>>#JJJJJr   c                 X    |                                   t          d|z   dz              d S )Nzend tag: </r   r   r   s     r   r   zTestSGMLParser.unknown_endtag  s-    

mc!C'(((((r   c                 X    |                                   t          d|z   dz              d S )Nz*** unknown entity ref: &r5   r   r   s     r   r   z TestSGMLParser.unknown_entityref  s.    

)C/#566666r   c                 X    |                                   t          d|z   dz              d S )Nz*** unknown char ref: &#r5   r   r   s     r   r   zTestSGMLParser.unknown_charref  s.    

(3.455555r   c                 X    |                                   t          d|z   dz              d S )Nz*** unknown decl: []r   r(   s     r   unknown_declzTestSGMLParser.unknown_decl  s.    

#d*S011111r   c                 b    t                               |            |                                  d S r.   )r   r,   r   r   s    r   r,   zTestSGMLParser.close  s'    

r   Nr   )r   r   r	   r   r7   r   r   r{   r   r   r   r   r,   r   r   r   r   r     s        + + + +  
' ' '    ) ) )7 7 76 6 62 2 2    r   r   c                 $   dd l }| |j        dd          } | r| d         dk    r| dd          } t          }nt          }| r	| d         }nd}|dk    r|j        }nO	 t          |d          }n=# t          $ r0}t          |d|           |                    d           Y d }~nd }~ww xY w|	                                }||j        ur|
                                  |            }|D ]}|                    |           |
                                 d S )Nr   r!   z-sz	test.html-r   :)sysargvr   r   stdinopenIOErrorr   exitreadr,   r*   )	r$   r   klassfilefmsgr)   xcs	            r   testr     s9   JJJ|x| Q4ABBx Aws{{I	T3AA 	 	 	$S!!!HHQKKKKKKKK	 6688D					A  	q				GGIIIIIs   A* *
B$4&BB$__main__r.   )r
   r   r   __all__r   r8   rI   rG   rC   r;   r[   r\   rS   r_   r`   ra   RuntimeErrorr   r   r   r   r   r   r   r   r   <module>r      s   A A     				)
* bj  RZ * + +

 BJ>??	
"*'
(
(rz,''rz4552::;;
"*S//RZ

"*.
/
/2:GH H
	 	 	 	 	\ 	 	 	 N+ N+ N+ N+ N+' N+ N+ N+b4 4 4 4 4Z 4 4 4n! ! ! !H zDFFFFF r   