JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbra XC?hC@sddlZddlZddlmZdgZedZedZedZedZ edZ ed Z ed Z ed Z ed Zed ejZed ZedZGdddejZdS)N)unescape HTMLParserz[&<]z &[a-zA-Z#]z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z)&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]z <[a-zA-Z]>z--\s*>z+([a-zA-Z][^\t\n\r\f />\x00]*)(?:\s|/(?!>))*z]((?<=[\'"\s/])[^\s/>][^\s/=>]*)(\s*=+\s*(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?(?:\s|/(?!>))*aF <[a-zA-Z][^\t\n\r\f />\x00]* # tag name (?:[\s/]* # optional whitespace before attribute name (?:(?<=['"\s/])[^\s/>][^\s/=>]* # attribute name (?:\s*=+\s* # value indicator (?:'[^']*' # LITA-enclosed value |"[^"]*" # LIT-enclosed value |(?!['"])[^>\s]* # bare value ) \s* # possibly followed by a space )?(?:\s|/(?!>))* )* )? \s* # trailing whitespace z#c@seZdZdZddddZddZdd Zd d Zd Zd dZ ddZ ddZ ddZ ddZ d6ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd S)7r)ZscriptZstyleT)convert_charrefscCs||_|dSN)rreset)selfrr 0/opt/alt/python39/lib64/python3.9/html/parser.py__init__VszHTMLParser.__init__cCs(d|_d|_t|_d|_tj|dS)Nz???)rawdatalasttaginteresting_normal interesting cdata_elem _markupbase ParserBaserrr r r r_s zHTMLParser.resetcCs|j||_|ddS)Nr)r goaheadrdatar r r feedgs zHTMLParser.feedcCs|ddS)N)rrr r r closepszHTMLParser.closeNcCs|jSr)_HTMLParser__starttag_textrr r r get_starttag_textvszHTMLParser.get_starttag_textcCs$||_td|jtj|_dS)Nz )lowerrrecompileIr)relemr r r set_cdata_modezs zHTMLParser.set_cdata_modecCst|_d|_dSr)rrrrr r r clear_cdata_mode~szHTMLParser.clear_cdata_modec CsJ|j}d}t|}||kr|jrv|jsv|d|}|dkr|dt||d}|dkrptd ||spq|}n*|j ||}|r| }n|jrq|}||kr|jr|js| t |||n| ||||||}||krq|j}|d|rJt||r"||} n|d|r:||} nn|d|rR||} nV|d|rj||} n>|d |r||} n&|d |kr| d|d } nq| dkr<|sq|d |d } | dkr|d|d } | dkr|d } n| d 7} |jr*|js*| t ||| n| ||| ||| }q|d |rt||}|r|d d} || |} |d| d s| d } ||| }qn rR)rcheck_for_whole_start_tagr tagfind_tolerantr4r=r;rrattrfind_tolerantrappendstripZgetposcountr+r-r1endswithhandle_startendtaghandle_starttagCDATA_CONTENT_ELEMENTSr")rrAendposr attrsr4rDtagmattrnamerestZ attrvaluer=linenooffsetr r r r5,sX   &            zHTMLParser.parse_starttagcCs|j}t||}|r|}|||d}|dkr>|dS|dkr~|d|rZ|dS|d|rjdS||krv|S|dS|dkrdS|dvrdS||kr|S|dStd dS) Nrr/rRr(r)r z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzwe should not get here!)r locatestarttagend_tolerantr4r=r2AssertionError)rrAr rarCnextr r r rT_s.   z$HTMLParser.check_for_whole_start_tagcCs|j}t||d}|sdS|}t||}|s|jdurV|||||St||d}|s|||ddkr|dS| |S| d }| d|}| ||dS| d }|jdur||jkr|||||S| |||S)Nrr)r(rGzr)r endendtagr/r= endtagfindr4rr1rUrJr;rr, handle_endtagr#)rrAr r4rKZ namematchZtagnamer!r r r r6s6       zHTMLParser.parse_endtagcCs|||||dSr)r\rlrr`r_r r r r[s zHTMLParser.handle_startendtagcCsdSrr rmr r r r\szHTMLParser.handle_starttagcCsdSrr )rr`r r r rlszHTMLParser.handle_endtagcCsdSrr rrEr r r r<szHTMLParser.handle_charrefcCsdSrr rnr r r r?szHTMLParser.handle_entityrefcCsdSrr rr r r r1szHTMLParser.handle_datacCsdSrr rr r r rLszHTMLParser.handle_commentcCsdSrr )rZdeclr r r rIszHTMLParser.handle_declcCsdSrr rr r r rOszHTMLParser.handle_picCsdSrr rr r r unknown_declszHTMLParser.unknown_decl)r)__name__ __module__ __qualname__r]r rrrrrr"r#rr9rJr8r5rTr6r[r\rlr<r?r1rLrIrOror r r r r>s4  z  3"()rrZhtmlr__all__rrr@r>r:r3rNZ commentcloserUrVVERBOSErgrjrkrrr r r r  s(