ó
^\kdc           @` s  d  d l  m Z m Z m Z y
 e Z Wn e k
 r9 n Xd  d l m Z d d l	 m
 Z
 d d l	 m Z d d l	 m Z m Z d d l	 m Z m Z m Z d d l	 m Z m Z d d	 l	 m Z d d
 l m Z d d l m Z e e ƒ Z d e f d „  ƒ  YZ d S(   i    (   t   absolute_importt   divisiont   unicode_literals(   t   dequei   (   t   spaceCharacters(   t   entities(   t   asciiLetterst   asciiUpper2Lower(   t   digitst	   hexDigitst   EOF(   t
   tokenTypest   tagTokenTypes(   t   replacementCharacters(   t   HTMLInputStream(   t   Triet   HTMLTokenizerc           B` s·  e  Z d  Z dJ e e e e dJ d „ Z d „  Z d „  Z dJ e 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 „  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+ „  Z0 d, „  Z1 d- „  Z2 d. „  Z3 d/ „  Z4 d0 „  Z5 d1 „  Z6 d2 „  Z7 d3 „  Z8 d4 „  Z9 d5 „  Z: d6 „  Z; d7 „  Z< d8 „  Z= d9 „  Z> d: „  Z? d; „  Z@ d< „  ZA d= „  ZB d> „  ZC d? „  ZD d@ „  ZE dA „  ZF dB „  ZG dC „  ZH dD „  ZI dE „  ZJ dF „  ZK dG „  ZL dH „  ZM dI „  ZN RS(K   u	   This class takes care of tokenizing HTML.

    * self.currentToken
      Holds the token that is currently being processed.

    * self.state
      Holds a reference to the method to be invoked... XXX

    * self.stream
      Points to HTMLInputStream object.
    c         C` sz   t  | | | | ƒ |  _ | |  _ | |  _ | |  _ t |  _ g  |  _ |  j |  _	 t |  _
 d  |  _ t t |  ƒ j ƒ  d  S(   N(   R   t   streamt   parsert   lowercaseElementNamet   lowercaseAttrNamet   Falset
   escapeFlagt   lastFourCharst	   dataStatet   statet   escapet   Nonet   currentTokent   superR   t   __init__(   t   selfR   t   encodingt	   parseMetat
   useChardetR   R   R   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR   %   s    							c         c` s}   t  g  ƒ |  _ xg |  j ƒ  rx x6 |  j j rV i t d d 6|  j j j d ƒ d 6Vq! Wx |  j rt |  j j ƒ  VqZ Wq Wd S(   uä    This 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.
        u
   ParseErroru   typei    u   dataN(   R   t
   tokenQueueR   R   t   errorsR   t   popt   popleft(   R   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   __iter__9   s    *c   	   0   C` sê  t  } d } | r! t } d } n  g  } |  j j ƒ  } x8 | | k rp | t k	 rp | j | ƒ |  j j ƒ  } q9 Wt d j | ƒ | ƒ } | t k rÒ t | } |  j	 j i t
 d d 6d d 6i | d 6d	 6ƒ nÓd
 | k oé d k n sú | d k r3d } |  j	 j i t
 d d 6d d 6i | d 6d	 6ƒ nrd | k oJd k n sd | k ofd k n sd | k o‚d k n sd | k ožd k n s| t d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d g# ƒ k rQ|  j	 j i t
 d d 6d d 6i | d 6d	 6ƒ n  y t | ƒ } WnA t k
 r¤| d8 } t d
 | d ?Bƒ t d9 | d: @Bƒ } n X| d; k ræ|  j	 j i t
 d d 6d< d 6ƒ |  j j | ƒ n  | S(=   uø   This function returns either U+FFFD or the character based on the
        decimal or hexadecimal representation. It also discards ";" if present.
        If not present self.tokenQueue.append({"type": tokenTypes["ParseError"]}) is invoked.
        i
   i   u    u
   ParseErroru   typeu$   illegal-codepoint-for-numeric-entityu   datau	   charAsIntu   datavarsi Ø  iÿß  iÿÿ u   ï¿½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ÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ i   i Ü  iÿ  u   ;u    numeric-entity-without-semicolon(   R   R	   R   t   charR
   t   appendt   intt   joinR   R#   R   t	   frozensett   chrt
   ValueErrort   unget(	   R   t   isHext   allowedt   radixt	   charStackt   ct	   charAsIntR(   t   v(    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   consumeNumberEntityI   s`    	

*c   	      C` sœ  d } |  j  j ƒ  g } | d t k s] | d t d d f k s] | d  k	 rt | | d k rt |  j  j | d ƒ nÃ| d d k rpt } | j |  j  j ƒ  ƒ | d d k rÏ t } | j |  j  j ƒ  ƒ n  | rå | d t	 k sü | r"| d t
 k r"|  j  j | d ƒ |  j | ƒ } q7|  j j i t d d	 6d
 d 6ƒ |  j  j | j ƒ  ƒ d d j | ƒ } nÇxF | d t k	 r¸t j d j | ƒ ƒ sŸPn  | j |  j  j ƒ  ƒ qsWy, t j d j | d  ƒ ƒ } t | ƒ } Wn t k
 rþd  } n X| d  k	 rì| d d k r@|  j j i t d d	 6d d 6ƒ n  | d d k r²| r²| | t k s†| | t
 k s†| | d k r²|  j  j | j ƒ  ƒ d d j | ƒ } q7t | } |  j  j | j ƒ  ƒ | d j | | ƒ 7} nK |  j j i t d d	 6d d 6ƒ |  j  j | j ƒ  ƒ d d j | ƒ } | r[|  j d d d c | 7<n= | t k rpd } n d } |  j j i t | d	 6| d 6ƒ d  S(   Nu   &i    u   <u   #iÿÿÿÿu   xu   Xu
   ParseErroru   typeu   expected-numeric-entityu   datau    u   ;u   named-entity-without-semicolonu   =u   expected-named-entityi   u   SpaceCharactersu
   Characters(   u   xu   X(   R   R(   R   R
   R   R/   R   R)   t   TrueR	   R   R7   R#   R   R%   R+   t   entitiesTriet   has_keys_with_prefixt   longest_prefixt   lent   KeyErrorR   R   R   (	   R   t   allowedChart   fromAttributet   outputR3   t   hext
   entityNamet   entityLengtht	   tokenType(    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   consumeEntity‘   sf    )

	c         C` s   |  j  d | d t ƒ d S(   uI   This method replaces the need for "entityInAttributeValueState".
        R>   R?   N(   RE   R8   (   R   R>   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   processEntityInAttributeá   s    c         C` sÔ   |  j  } | d t k r´ |  j r< | d j t ƒ | d <n  | d t d k r´ | d r |  j j i t d d 6d d 6ƒ n  | d r± |  j j i t d d 6d d 6ƒ q± q´ n  |  j j | ƒ |  j |  _	 d	 S(
   u®   This 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.
        u   typeu   nameu   EndTagu   datau
   ParseErroru   attributes-in-end-tagu   selfClosingu   self-closing-flag-on-end-tagN(
   R   R   R   t	   translateR   R   R#   R)   R   R   (   R   t   token(    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   emitCurrentTokenæ   s    		

c         C` s(  |  j  j ƒ  } | d k r* |  j |  _ nú | d k rE |  j |  _ nß | d k r˜ |  j j i t d d 6d d 6ƒ |  j j i t d d 6d d 6ƒ nŒ | t k r¨ t	 S| t
 k rì |  j j i t d	 d 6| |  j  j t
 t ƒ d 6ƒ n8 |  j  j d
 ƒ } |  j j i t d d 6| | d 6ƒ t S(   Nu   &u   <u    u
   ParseErroru   typeu   invalid-codepointu   datau
   Charactersu   SpaceCharacters(   u   &u   <u    (   R   R(   t   entityDataStateR   t   tagOpenStateR#   R)   R   R
   R   R   t
   charsUntilR8   (   R   t   datat   chars(    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR   û   s&    !c         C` s   |  j  ƒ  |  j |  _ t S(   N(   RE   R   R   R8   (   R   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRJ     s    
c         C` s(  |  j  j ƒ  } | d k r* |  j |  _ nú | d k rE |  j |  _ nß | t k rU t S| d k r¨ |  j j i t	 d d 6d d 6ƒ |  j j i t	 d d 6d	 d 6ƒ n| | t
 k rì |  j j i t	 d
 d 6| |  j  j t
 t ƒ d 6ƒ n8 |  j  j d ƒ } |  j j i t	 d d 6| | d 6ƒ t S(   Nu   &u   <u    u
   ParseErroru   typeu   invalid-codepointu   datau
   Charactersu   ï¿½u   SpaceCharacters(   u   &u   <u    (   R   R(   t   characterReferenceInRcdataR   t   rcdataLessThanSignStateR
   R   R#   R)   R   R   RL   R8   (   R   RM   RN   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   rcdataState  s&    !c         C` s   |  j  ƒ  |  j |  _ t S(   N(   RE   RQ   R   R8   (   R   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRO   :  s    
c         C` sÉ   |  j  j ƒ  } | d k r* |  j |  _ n› | d k r} |  j j i t d d 6d d 6ƒ |  j j i t d d 6d d 6ƒ nH | t k r� t S|  j  j	 d	 ƒ } |  j j i t d d 6| | d 6ƒ t
 S(
   Nu   <u    u
   ParseErroru   typeu   invalid-codepointu   datau
   Charactersu   ï¿½(   u   <u    (   R   R(   t   rawtextLessThanSignStateR   R#   R)   R   R
   R   RL   R8   (   R   RM   RN   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   rawtextState?  s    c         C` sÉ   |  j  j ƒ  } | d k r* |  j |  _ n› | d k r} |  j j i t d d 6d d 6ƒ |  j j i t d d 6d d 6ƒ nH | t k r� t S|  j  j	 d	 ƒ } |  j j i t d d 6| | d 6ƒ t
 S(
   Nu   <u    u
   ParseErroru   typeu   invalid-codepointu   datau
   Charactersu   ï¿½(   u   <u    (   R   R(   t   scriptDataLessThanSignStateR   R#   R)   R   R
   R   RL   R8   (   R   RM   RN   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   scriptDataStateQ  s    c         C` s¨   |  j  j ƒ  } | t k r t S| d k rr |  j j i t d d 6d d 6ƒ |  j j i t d d 6d d 6ƒ n2 |  j j i t d d 6| |  j  j d ƒ d 6ƒ t S(   Nu    u
   ParseErroru   typeu   invalid-codepointu   datau
   Charactersu   ï¿½(	   R   R(   R
   R   R#   R)   R   RL   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   plaintextStatec  s    c         C` s   |  j  j ƒ  } | d k r* |  j |  _ nr| d k rE |  j |  _ nW| t k r� i t d d 6| d 6g  d 6t d 6t d 6|  _ |  j	 |  _ n| d	 k rï |  j
 j i t d
 d 6d d 6ƒ |  j
 j i t d d 6d d 6ƒ |  j |  _ n­ | d k r<|  j
 j i t d
 d 6d d 6ƒ |  j  j | ƒ |  j |  _ n` |  j
 j i t d
 d 6d d 6ƒ |  j
 j i t d d 6d d 6ƒ |  j  j | ƒ |  j |  _ t S(   Nu   !u   /u   StartTagu   typeu   nameu   datau   selfClosingu   selfClosingAcknowledgedu   >u
   ParseErroru'   expected-tag-name-but-got-right-bracketu
   Charactersu   <>u   ?u'   expected-tag-name-but-got-question-marku   expected-tag-nameu   <(   R   R(   t   markupDeclarationOpenStateR   t   closeTagOpenStateR   R   R   R   t   tagNameStateR#   R)   R   R/   t   bogusCommentStateR8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRK   r  s6    ""c         C` s?  |  j  j ƒ  } | t k rS i t d d 6| d 6g  d 6t d 6|  _ |  j |  _ nè | d k r� |  j j	 i t d d 6d d 6ƒ |  j
 |  _ n« | t k rï |  j j	 i t d d 6d	 d 6ƒ |  j j	 i t d
 d 6d d 6ƒ |  j
 |  _ nL |  j j	 i t d d 6d d 6i | d 6d 6ƒ |  j  j | ƒ |  j |  _ t S(   Nu   EndTagu   typeu   nameu   datau   selfClosingu   >u
   ParseErroru*   expected-closing-tag-but-got-right-bracketu    expected-closing-tag-but-got-eofu
   Charactersu   </u!   expected-closing-tag-but-got-charu   datavars(   R   R(   R   R   R   R   RY   R   R#   R)   R   R
   R/   RZ   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRX   •  s(    "c         C` sö   |  j  j ƒ  } | t k r* |  j |  _ nÈ | d k rC |  j ƒ  n¯ | t k r€ |  j j i t	 d d 6d d 6ƒ |  j
 |  _ nr | d k r› |  j |  _ nW | d k rß |  j j i t	 d d 6d d 6ƒ |  j d	 c d
 7<n |  j d	 c | 7<t S(   Nu   >u
   ParseErroru   typeu   eof-in-tag-nameu   datau   /u    u   invalid-codepointu   nameu   ï¿½(   R   R(   R   t   beforeAttributeNameStateR   RI   R
   R#   R)   R   R   t   selfClosingStartTagStateR   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRY   ­  s"    c         C` su   |  j  j ƒ  } | d k r3 d |  _ |  j |  _ n> |  j j i t d d 6d d 6ƒ |  j  j | ƒ |  j	 |  _ t
 S(   Nu   /u    u
   Charactersu   typeu   <u   data(   R   R(   t   temporaryBuffert   rcdataEndTagOpenStateR   R#   R)   R   R/   RQ   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRP   Ã  s    	"c         C` s{   |  j  j ƒ  } | t k r9 |  j | 7_ |  j |  _ n> |  j j i t d d 6d d 6ƒ |  j  j	 | ƒ |  j
 |  _ t S(   Nu
   Charactersu   typeu   </u   data(   R   R(   R   R]   t   rcdataEndTagNameStateR   R#   R)   R   R/   RQ   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR^   Î  s    "c         C` s’  |  j  o( |  j  d j ƒ  |  j j ƒ  k } |  j j ƒ  } | t k r‡ | r‡ i t d d 6|  j d 6g  d 6t d 6|  _  |  j |  _	 n| d k rÔ | rÔ i t d d 6|  j d 6g  d 6t d 6|  _  |  j
 |  _	 nº | d k r+| r+i t d d 6|  j d 6g  d 6t d 6|  _  |  j ƒ  |  j |  _	 nc | t k rI|  j | 7_ nE |  j j i t d d 6d	 |  j d 6ƒ |  j j | ƒ |  j |  _	 t S(
   Nu   nameu   EndTagu   typeu   datau   selfClosingu   /u   >u
   Charactersu   </(   R   t   lowerR]   R   R(   R   R   R   R[   R   R\   RI   R   R   R#   R)   R/   RQ   R8   (   R   t   appropriateRM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR_   Ù  s2    +



c         C` su   |  j  j ƒ  } | d k r3 d |  _ |  j |  _ n> |  j j i t d d 6d d 6ƒ |  j  j | ƒ |  j	 |  _ t
 S(   Nu   /u    u
   Charactersu   typeu   <u   data(   R   R(   R]   t   rawtextEndTagOpenStateR   R#   R)   R   R/   RS   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRR   õ  s    	"c         C` s{   |  j  j ƒ  } | t k r9 |  j | 7_ |  j |  _ n> |  j j i t d d 6d d 6ƒ |  j  j	 | ƒ |  j
 |  _ t S(   Nu
   Charactersu   typeu   </u   data(   R   R(   R   R]   t   rawtextEndTagNameStateR   R#   R)   R   R/   RS   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRb      s    "c         C` s’  |  j  o( |  j  d j ƒ  |  j j ƒ  k } |  j j ƒ  } | t k r‡ | r‡ i t d d 6|  j d 6g  d 6t d 6|  _  |  j |  _	 n| d k rÔ | rÔ i t d d 6|  j d 6g  d 6t d 6|  _  |  j
 |  _	 nº | d k r+| r+i t d d 6|  j d 6g  d 6t d 6|  _  |  j ƒ  |  j |  _	 nc | t k rI|  j | 7_ nE |  j j i t d d 6d	 |  j d 6ƒ |  j j | ƒ |  j |  _	 t S(
   Nu   nameu   EndTagu   typeu   datau   selfClosingu   /u   >u
   Charactersu   </(   R   R`   R]   R   R(   R   R   R   R[   R   R\   RI   R   R   R#   R)   R/   RS   R8   (   R   Ra   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRc     s2    +



c         C` s²   |  j  j ƒ  } | d k r3 d |  _ |  j |  _ n{ | d k rp |  j j i t d d 6d d 6ƒ |  j |  _ n> |  j j i t d d 6d d 6ƒ |  j  j	 | ƒ |  j
 |  _ t S(	   Nu   /u    u   !u
   Charactersu   typeu   <!u   datau   <(   R   R(   R]   t   scriptDataEndTagOpenStateR   R#   R)   R   t   scriptDataEscapeStartStateR/   RU   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRT   '  s    	""c         C` s{   |  j  j ƒ  } | t k r9 |  j | 7_ |  j |  _ n> |  j j i t d d 6d d 6ƒ |  j  j	 | ƒ |  j
 |  _ t S(   Nu
   Charactersu   typeu   </u   data(   R   R(   R   R]   t   scriptDataEndTagNameStateR   R#   R)   R   R/   RU   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRd   5  s    "c         C` s’  |  j  o( |  j  d j ƒ  |  j j ƒ  k } |  j j ƒ  } | t k r‡ | r‡ i t d d 6|  j d 6g  d 6t d 6|  _  |  j |  _	 n| d k rÔ | rÔ i t d d 6|  j d 6g  d 6t d 6|  _  |  j
 |  _	 nº | d k r+| r+i t d d 6|  j d 6g  d 6t d 6|  _  |  j ƒ  |  j |  _	 nc | t k rI|  j | 7_ nE |  j j i t d d 6d	 |  j d 6ƒ |  j j | ƒ |  j |  _	 t S(
   Nu   nameu   EndTagu   typeu   datau   selfClosingu   /u   >u
   Charactersu   </(   R   R`   R]   R   R(   R   R   R   R[   R   R\   RI   R   R   R#   R)   R/   RU   R8   (   R   Ra   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRf   @  s2    +



c         C` sl   |  j  j ƒ  } | d k rL |  j j i t d d 6d d 6ƒ |  j |  _ n |  j  j | ƒ |  j |  _ t	 S(   Nu   -u
   Charactersu   typeu   data(
   R   R(   R#   R)   R   t   scriptDataEscapeStartDashStateR   R/   RU   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRe   \  s    "c         C` sl   |  j  j ƒ  } | d k rL |  j j i t d d 6d d 6ƒ |  j |  _ n |  j  j | ƒ |  j |  _ t	 S(   Nu   -u
   Charactersu   typeu   data(
   R   R(   R#   R)   R   t   scriptDataEscapedDashDashStateR   R/   RU   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRg   f  s    "c         C` s  |  j  j ƒ  } | d k rL |  j j i t d d 6d d 6ƒ |  j |  _ nÁ | d k rg |  j |  _ n¦ | d k rº |  j j i t d d 6d d 6ƒ |  j j i t d d 6d	 d 6ƒ nS | t k rÕ |  j	 |  _ n8 |  j  j
 d
 ƒ } |  j j i t d d 6| | d 6ƒ t S(   Nu   -u
   Charactersu   typeu   datau   <u    u
   ParseErroru   invalid-codepointu   ï¿½(   u   <u   -u    (   R   R(   R#   R)   R   t   scriptDataEscapedDashStateR   t"   scriptDataEscapedLessThanSignStateR
   R   RL   R8   (   R   RM   RN   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   scriptDataEscapedStatep  s"    "c         C` s  |  j  j ƒ  } | d k rL |  j j i t d d 6d d 6ƒ |  j |  _ nÃ | d k rg |  j |  _ n¨ | d k rÆ |  j j i t d d 6d d 6ƒ |  j j i t d d 6d	 d 6ƒ |  j |  _ nI | t	 k rá |  j
 |  _ n. |  j j i t d d 6| d 6ƒ |  j |  _ t S(
   Nu   -u
   Charactersu   typeu   datau   <u    u
   ParseErroru   invalid-codepointu   ï¿½(   R   R(   R#   R)   R   Rh   R   Rj   Rk   R
   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRi   „  s"    ""c         C` sD  |  j  j ƒ  } | d k r@ |  j j i t d d 6d d 6ƒ n | d k r[ |  j |  _ nå | d k r˜ |  j j i t d d 6d d 6ƒ |  j |  _ n¨ | d k r÷ |  j j i t d d 6d	 d 6ƒ |  j j i t d d 6d
 d 6ƒ |  j |  _ nI | t	 k r|  j
 |  _ n. |  j j i t d d 6| d 6ƒ |  j |  _ t S(   Nu   -u
   Charactersu   typeu   datau   <u   >u    u
   ParseErroru   invalid-codepointu   ï¿½(   R   R(   R#   R)   R   Rj   R   RU   Rk   R
   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRh   ˜  s&    %""c         C` s¿   |  j  j ƒ  } | d k r3 d |  _ |  j |  _ nˆ | t k r} |  j j i t d d 6d | d 6ƒ | |  _ |  j	 |  _ n> |  j j i t d d 6d d 6ƒ |  j  j
 | ƒ |  j |  _ t S(   Nu   /u    u
   Charactersu   typeu   <u   data(   R   R(   R]   t    scriptDataEscapedEndTagOpenStateR   R   R#   R)   R   t    scriptDataDoubleEscapeStartStateR/   Rk   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRj   ®  s    	&	"c         C` su   |  j  j ƒ  } | t k r3 | |  _ |  j |  _ n> |  j j i t d d 6d d 6ƒ |  j  j	 | ƒ |  j
 |  _ t S(   Nu
   Charactersu   typeu   </u   data(   R   R(   R   R]   t    scriptDataEscapedEndTagNameStateR   R#   R)   R   R/   Rk   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRl   ½  s    	"c         C` s’  |  j  o( |  j  d j ƒ  |  j j ƒ  k } |  j j ƒ  } | t k r‡ | r‡ i t d d 6|  j d 6g  d 6t d 6|  _  |  j |  _	 n| d k rÔ | rÔ i t d d 6|  j d 6g  d 6t d 6|  _  |  j
 |  _	 nº | d k r+| r+i t d d 6|  j d 6g  d 6t d 6|  _  |  j ƒ  |  j |  _	 nc | t k rI|  j | 7_ nE |  j j i t d d 6d	 |  j d 6ƒ |  j j | ƒ |  j |  _	 t S(
   Nu   nameu   EndTagu   typeu   datau   selfClosingu   /u   >u
   Charactersu   </(   R   R`   R]   R   R(   R   R   R   R[   R   R\   RI   R   R   R#   R)   R/   Rk   R8   (   R   Ra   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRn   È  s2    +



c         C` sÚ   |  j  j ƒ  } | t t d ƒ Bk rz |  j j i t d d 6| d 6ƒ |  j j ƒ  d k rk |  j	 |  _
 qÖ |  j |  _
 n\ | t k rº |  j j i t d d 6| d 6ƒ |  j | 7_ n |  j  j | ƒ |  j |  _
 t S(   Nu   /u   >u
   Charactersu   typeu   datau   script(   u   /u   >(   R   R(   R   R,   R#   R)   R   R]   R`   t   scriptDataDoubleEscapedStateR   Rk   R   R/   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRm   ä  s    ""c         C` s?  |  j  j ƒ  } | d k rL |  j j i t d d 6d d 6ƒ |  j |  _ nï | d k r‰ |  j j i t d d 6d d 6ƒ |  j |  _ n² | d k rÜ |  j j i t d d 6d d 6ƒ |  j j i t d d 6d	 d 6ƒ n_ | t k r|  j j i t d d 6d
 d 6ƒ |  j	 |  _ n" |  j j i t d d 6| d 6ƒ t
 S(   Nu   -u
   Charactersu   typeu   datau   <u    u
   ParseErroru   invalid-codepointu   ï¿½u   eof-in-script-in-script(   R   R(   R#   R)   R   t    scriptDataDoubleEscapedDashStateR   t(   scriptDataDoubleEscapedLessThanSignStateR
   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRo   ô  s$    """c         C` sW  |  j  j ƒ  } | d k rL |  j j i t d d 6d d 6ƒ |  j |  _ n| d k r‰ |  j j i t d d 6d d 6ƒ |  j |  _ nÊ | d k rè |  j j i t d d 6d d 6ƒ |  j j i t d d 6d	 d 6ƒ |  j |  _ nk | t	 k r%|  j j i t d d 6d
 d 6ƒ |  j
 |  _ n. |  j j i t d d 6| d 6ƒ |  j |  _ t S(   Nu   -u
   Charactersu   typeu   datau   <u    u
   ParseErroru   invalid-codepointu   ï¿½u   eof-in-script-in-script(   R   R(   R#   R)   R   t$   scriptDataDoubleEscapedDashDashStateR   Rq   Ro   R
   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRp   	  s(    """c         C` sˆ  |  j  j ƒ  } | d k r@ |  j j i t d d 6d d 6ƒ nD| d k r} |  j j i t d d 6d d 6ƒ |  j |  _ n| d k rº |  j j i t d d 6d d 6ƒ |  j |  _ nÊ | d k r|  j j i t d d 6d	 d 6ƒ |  j j i t d d 6d
 d 6ƒ |  j |  _ nk | t	 k rV|  j j i t d d 6d d 6ƒ |  j
 |  _ n. |  j j i t d d 6| d 6ƒ |  j |  _ t S(   Nu   -u
   Charactersu   typeu   datau   <u   >u    u
   ParseErroru   invalid-codepointu   ï¿½u   eof-in-script-in-script(   R   R(   R#   R)   R   Rq   R   RU   Ro   R
   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRr      s,    %"""c         C` su   |  j  j ƒ  } | d k rU |  j j i t d d 6d d 6ƒ d |  _ |  j |  _ n |  j  j | ƒ |  j	 |  _ t
 S(   Nu   /u
   Charactersu   typeu   datau    (   R   R(   R#   R)   R   R]   t   scriptDataDoubleEscapeEndStateR   R/   Ro   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRq   9  s    "	c         C` sÚ   |  j  j ƒ  } | t t d ƒ Bk rz |  j j i t d d 6| d 6ƒ |  j j ƒ  d k rk |  j	 |  _
 qÖ |  j |  _
 n\ | t k rº |  j j i t d d 6| d 6ƒ |  j | 7_ n |  j  j | ƒ |  j |  _
 t S(   Nu   /u   >u
   Charactersu   typeu   datau   script(   u   /u   >(   R   R(   R   R,   R#   R)   R   R]   R`   Rk   R   Ro   R   R/   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRs   D  s    ""c         C` s¯  |  j  j ƒ  } | t k r1 |  j  j t t ƒ nz| t k rf |  j d j | d g ƒ |  j |  _	 nE| d k r |  j
 ƒ  n,| d k rš |  j |  _	 n| d k rñ |  j j i t d	 d
 6d d 6ƒ |  j d j | d g ƒ |  j |  _	 nº | d k rH|  j j i t d	 d
 6d d 6ƒ |  j d j d d g ƒ |  j |  _	 nc | t k r…|  j j i t d	 d
 6d d 6ƒ |  j |  _	 n& |  j d j | d g ƒ |  j |  _	 t S(   Nu   datau    u   >u   /u   'u   "u   =u   <u
   ParseErroru   typeu#   invalid-character-in-attribute-nameu    u   invalid-codepointu   ï¿½u#   expected-attribute-name-but-got-eof(   u   'u   "u   =u   <(   R   R(   R   RL   R8   R   R   R)   t   attributeNameStateR   RI   R\   R#   R   R
   R   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR[   T  s6    c         C` s‚  |  j  j ƒ  } t } t } | d k r6 |  j |  _ n�| t k ry |  j d d d c | |  j  j t t ƒ 7<t } nM| d k rŽ t } n8| t	 k r© |  j
 |  _ n| d k rÄ |  j |  _ n| d k r|  j j i t d d	 6d
 d 6ƒ |  j d d d c d 7<t } n° | d k rh|  j j i t d d	 6d d 6ƒ |  j d d d c | 7<t } n^ | t k r¥|  j j i t d d	 6d d 6ƒ |  j |  _ n! |  j d d d c | 7<t } | r~|  j r|  j d d d j t ƒ |  j d d d <n  x` |  j d d  D]M \ } } |  j d d d | k r|  j j i t d d	 6d d 6ƒ PqqW| r~|  j ƒ  q~n  t S(   Nu   =u   dataiÿÿÿÿi    u   >u   /u    u
   ParseErroru   typeu   invalid-codepointu   ï¿½u   'u   "u   <u#   invalid-character-in-attribute-nameu   eof-in-attribute-nameu   duplicate-attribute(   u   'u   "u   <(   R   R(   R8   R   t   beforeAttributeValueStateR   R   R   RL   R   t   afterAttributeNameStateR\   R#   R)   R   R
   R   R   RG   R   RI   (   R   RM   t   leavingThisStatet	   emitTokent   namet   value(    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRt   r  sT    					0c         C` sÊ  |  j  j ƒ  } | t k r1 |  j  j t t ƒ n•| d k rL |  j |  _ nz| d k re |  j ƒ  na| t k rš |  j	 d j
 | d g ƒ |  j |  _ n,| d k rµ |  j |  _ n| d k r|  j j
 i t d d 6d	 d 6ƒ |  j	 d j
 d
 d g ƒ |  j |  _ nº | d k rc|  j j
 i t d d 6d d 6ƒ |  j	 d j
 | d g ƒ |  j |  _ nc | t k r |  j j
 i t d d 6d d 6ƒ |  j |  _ n& |  j	 d j
 | d g ƒ |  j |  _ t S(   Nu   =u   >u   datau    u   /u    u
   ParseErroru   typeu   invalid-codepointu   ï¿½u   'u   "u   <u&   invalid-character-after-attribute-nameu   expected-end-of-tag-but-got-eof(   u   'u   "u   <(   R   R(   R   RL   R8   Ru   R   RI   R   R   R)   Rt   R\   R#   R   R
   R   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRv   ©  s:    c         C` så  |  j  j ƒ  } | t k r1 |  j  j t t ƒ n°| d k rL |  j |  _ n•| d k rw |  j |  _ |  j  j | ƒ nj| d k r’ |  j	 |  _ nO| d k rÍ |  j
 j i t d d 6d d 6ƒ |  j ƒ  n| d	 k r%|  j
 j i t d d 6d
 d 6ƒ |  j d d d c d 7<|  j |  _ n¼ | d k r}|  j
 j i t d d 6d d 6ƒ |  j d d d c | 7<|  j |  _ nd | t k rº|  j
 j i t d d 6d d 6ƒ |  j |  _ n' |  j d d d c | 7<|  j |  _ t S(   Nu   "u   &u   'u   >u
   ParseErroru   typeu.   expected-attribute-value-but-got-right-bracketu   datau    u   invalid-codepointiÿÿÿÿi   u   ï¿½u   =u   <u   `u"   equals-in-unquoted-attribute-valueu$   expected-attribute-value-but-got-eof(   u   =u   <u   `(   R   R(   R   RL   R8   t   attributeValueDoubleQuotedStateR   t   attributeValueUnQuotedStateR/   t   attributeValueSingleQuotedStateR#   R)   R   RI   R   R
   R   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRu   É  s>    c         C` sþ   |  j  j ƒ  } | d k r* |  j |  _ nÐ | d k rF |  j d ƒ n´ | d k r’ |  j j i t d d 6d d 6ƒ |  j d d d	 c d
 7<nh | t	 k rÏ |  j j i t d d 6d d 6ƒ |  j
 |  _ n+ |  j d d d	 c | |  j  j d ƒ 7<t S(   Nu   "u   &u    u
   ParseErroru   typeu   invalid-codepointu   dataiÿÿÿÿi   u   ï¿½u#   eof-in-attribute-value-double-quote(   u   "u   &u    (   R   R(   t   afterAttributeValueStateR   RF   R#   R)   R   R   R
   R   RL   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR{   ë  s     c         C` sþ   |  j  j ƒ  } | d k r* |  j |  _ nÐ | d k rF |  j d ƒ n´ | d k r’ |  j j i t d d 6d d 6ƒ |  j d d d	 c d
 7<nh | t	 k rÏ |  j j i t d d 6d d 6ƒ |  j
 |  _ n+ |  j d d d	 c | |  j  j d ƒ 7<t S(   Nu   'u   &u    u
   ParseErroru   typeu   invalid-codepointu   dataiÿÿÿÿi   u   ï¿½u#   eof-in-attribute-value-single-quote(   u   'u   &u    (   R   R(   R~   R   RF   R#   R)   R   R   R
   R   RL   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR}   þ  s     c         C` sm  |  j  j ƒ  } | t k r* |  j |  _ n?| d k rF |  j d ƒ n#| d k r_ |  j ƒ  n
| d k r« |  j j i t	 d d	 6d
 d 6ƒ |  j
 d d d c | 7<n¾ | d k r÷ |  j j i t	 d d	 6d d 6ƒ |  j
 d d d c d 7<nr | t k r4|  j j i t	 d d	 6d d 6ƒ |  j |  _ n5 |  j
 d d d c | |  j  j t d ƒ t Bƒ 7<t S(   Nu   &u   >u   "u   'u   =u   <u   `u
   ParseErroru   typeu0   unexpected-character-in-unquoted-attribute-valueu   dataiÿÿÿÿi   u    u   invalid-codepointu   ï¿½u    eof-in-attribute-value-no-quotes(   u   "u   'u   =u   <u   `(   u   &u   >u   "u   'u   =u   <u   `u    (   R   R(   R   R[   R   RF   RI   R#   R)   R   R   R
   R   RL   R,   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR|     s,    !c         C` sí   |  j  j ƒ  } | t k r* |  j |  _ n¿ | d k rC |  j ƒ  n¦ | d k r^ |  j |  _ n‹ | t k r« |  j j	 i t
 d d 6d d 6ƒ |  j  j | ƒ |  j |  _ n> |  j j	 i t
 d d 6d d 6ƒ |  j  j | ƒ |  j |  _ t S(   Nu   >u   /u
   ParseErroru   typeu$   unexpected-EOF-after-attribute-valueu   datau*   unexpected-character-after-attribute-value(   R   R(   R   R[   R   RI   R\   R
   R#   R)   R   R/   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR~   *  s"    c         C` sÄ   |  j  j ƒ  } | d k r5 t |  j d <|  j ƒ  n‹ | t k r‚ |  j j i t d d 6d d 6ƒ |  j  j	 | ƒ |  j
 |  _ n> |  j j i t d d 6d d 6ƒ |  j  j	 | ƒ |  j |  _ t S(   Nu   >u   selfClosingu
   ParseErroru   typeu#   unexpected-EOF-after-solidus-in-tagu   datau)   unexpected-character-after-solidus-in-tag(   R   R(   R8   R   RI   R
   R#   R)   R   R/   R   R   R[   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR\   >  s    c         C` sc   |  j  j d ƒ } | j d d ƒ } |  j j i t d d 6| d 6ƒ |  j  j ƒ  |  j |  _ t	 S(   Nu   >u    u   ï¿½u   Commentu   typeu   data(
   R   RL   t   replaceR#   R)   R   R(   R   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRZ   P  s    	c      	   C` sB  |  j  j ƒ  g } | d d k rv | j |  j  j ƒ  ƒ | d d k ríi t d d 6d d 6|  _ |  j |  _ t Snw| d d k r(t } xP d d  d! d" d# d$ f D]6 } | j |  j  j ƒ  ƒ | d | k r¥ t } Pq¥ q¥ W| ríi t d d 6d d 6d  d 6d  d 6t d 6|  _ |  j
 |  _ t SnÅ | d d k rí|  j d  k	 rí|  j j j rí|  j j j d j |  j j j k rít } xP d d d d d d g D]6 } | j |  j  j ƒ  ƒ | d | k ršt } PqšqšW| rí|  j |  _ t Sn  |  j j i t d d 6d d 6ƒ x  | r1|  j  j | j ƒ  ƒ qW|  j |  _ t S(%   Niÿÿÿÿu   -u   Commentu   typeu    u   datau   du   Du   ou   Ou   cu   Cu   tu   Tu   yu   Yu   pu   Pu   eu   Eu   Doctypeu   nameu   publicIdu   systemIdu   correctu   [u   Au
   ParseErroru   expected-dashes-or-doctype(   u   du   D(   u   ou   O(   u   cu   C(   u   tu   T(   u   yu   Y(   u   pu   P(   u   eu   E(   R   R(   R)   R   R   t   commentStartStateR   R8   R   R   t   doctypeStateR   t   treet   openElementst	   namespacet   defaultNamespacet   cdataSectionStateR#   R/   R%   RZ   (   R   R3   t   matchedt   expected(    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRW   _  sR    %	c         C` s1  |  j  j ƒ  } | d k r* |  j |  _ n| d k rn |  j j i t d d 6d d 6ƒ |  j d c d 7<n¿ | d k r¾ |  j j i t d d 6d	 d 6ƒ |  j j |  j ƒ |  j |  _ no | t	 k r|  j j i t d d 6d
 d 6ƒ |  j j |  j ƒ |  j |  _ n |  j d c | 7<|  j
 |  _ t S(   Nu   -u    u
   ParseErroru   typeu   invalid-codepointu   datau   ï¿½u   >u   incorrect-commentu   eof-in-comment(   R   R(   t   commentStartDashStateR   R#   R)   R   R   R   R
   t   commentStateR8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR€   Œ  s(    c         C` s5  |  j  j ƒ  } | d k r* |  j |  _ n| d k rn |  j j i t d d 6d d 6ƒ |  j d c d 7<nÃ | d k r¾ |  j j i t d d 6d	 d 6ƒ |  j j |  j ƒ |  j |  _ ns | t	 k r|  j j i t d d 6d
 d 6ƒ |  j j |  j ƒ |  j |  _ n# |  j d c d | 7<|  j
 |  _ t S(   Nu   -u    u
   ParseErroru   typeu   invalid-codepointu   datau   -ï¿½u   >u   incorrect-commentu   eof-in-comment(   R   R(   t   commentEndStateR   R#   R)   R   R   R   R
   RŠ   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR‰   £  s(    c         C` så   |  j  j ƒ  } | d k r* |  j |  _ n· | d k rn |  j j i t d d 6d d 6ƒ |  j d c d 7<ns | t k r¾ |  j j i t d d 6d d 6ƒ |  j j |  j ƒ |  j	 |  _ n# |  j d c | |  j  j
 d	 ƒ 7<t S(
   Nu   -u    u
   ParseErroru   typeu   invalid-codepointu   datau   ï¿½u   eof-in-comment(   u   -u    (   R   R(   t   commentEndDashStateR   R#   R)   R   R   R
   R   RL   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRŠ   º  s    c         C` sñ   |  j  j ƒ  } | d k r* |  j |  _ nÃ | d k rz |  j j i t d d 6d d 6ƒ |  j d c d 7<|  j |  _ ns | t	 k rÊ |  j j i t d d 6d d 6ƒ |  j j |  j ƒ |  j
 |  _ n# |  j d c d | 7<|  j |  _ t S(	   Nu   -u    u
   ParseErroru   typeu   invalid-codepointu   datau   -ï¿½u   eof-in-comment-end-dash(   R   R(   R‹   R   R#   R)   R   R   RŠ   R
   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRŒ   Ì  s     c         C` s§  |  j  j ƒ  } | d k r= |  j j |  j ƒ |  j |  _ nf| d k r� |  j j i t d d 6d d 6ƒ |  j d c d 7<|  j |  _ n| d k rÊ |  j j i t d d 6d	 d 6ƒ |  j	 |  _ nÙ | d
 k r|  j j i t d d 6d d 6ƒ |  j d c | 7<n• | t
 k r^|  j j i t d d 6d d 6ƒ |  j j |  j ƒ |  j |  _ nE |  j j i t d d 6d d 6ƒ |  j d c d | 7<|  j |  _ t S(   Nu   >u    u
   ParseErroru   typeu   invalid-codepointu   datau   --ï¿½u   !u,   unexpected-bang-after-double-dash-in-commentu   -u,   unexpected-dash-after-double-dash-in-commentu   eof-in-comment-double-dashu   unexpected-char-in-commentu   --(   R   R(   R#   R)   R   R   R   R   RŠ   t   commentEndBangStateR
   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR‹   ß  s6    c         C` s2  |  j  j ƒ  } | d k r= |  j j |  j ƒ |  j |  _ nñ | d k rk |  j d c d 7<|  j |  _ nÃ | d k r» |  j j i t d d 6d d 6ƒ |  j d c d	 7<|  j	 |  _ ns | t
 k r|  j j i t d d 6d
 d 6ƒ |  j j |  j ƒ |  j |  _ n# |  j d c d | 7<|  j	 |  _ t S(   Nu   >u   -u   datau   --!u    u
   ParseErroru   typeu   invalid-codepointu   --!ï¿½u   eof-in-comment-end-bang-state(   R   R(   R#   R)   R   R   R   RŒ   R   RŠ   R
   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR�   þ  s(    c         C` sÉ   |  j  j ƒ  } | t k r* |  j |  _ n› | t k r‡ |  j j i t d d 6d d 6ƒ t	 |  j
 d <|  j j |  j
 ƒ |  j |  _ n> |  j j i t d d 6d d 6ƒ |  j  j | ƒ |  j |  _ t S(   Nu
   ParseErroru   typeu!   expected-doctype-name-but-got-eofu   datau   correctu   need-space-after-doctype(   R   R(   R   t   beforeDoctypeNameStateR   R
   R#   R)   R   R   R   R   R/   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR�     s    c         C` s?  |  j  j ƒ  } | t k r n| d k r{ |  j j i t d d 6d d 6ƒ t |  j d <|  j j |  j ƒ |  j |  _	 nÀ | d k rÅ |  j j i t d d 6d d 6ƒ d	 |  j d
 <|  j
 |  _	 nv | t k r"|  j j i t d d 6d d 6ƒ t |  j d <|  j j |  j ƒ |  j |  _	 n | |  j d
 <|  j
 |  _	 t S(   Nu   >u
   ParseErroru   typeu+   expected-doctype-name-but-got-right-bracketu   datau   correctu    u   invalid-codepointu   ï¿½u   nameu!   expected-doctype-name-but-got-eof(   R   R(   R   R#   R)   R   R   R   R   R   t   doctypeNameStateR
   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRŽ   &  s.    c         C` ss  |  j  j ƒ  } | t k rG |  j d j t ƒ |  j d <|  j |  _ n(| d k r’ |  j d j t ƒ |  j d <|  j j	 |  j ƒ |  j
 |  _ nÝ | d k râ |  j j	 i t d d 6d d 6ƒ |  j d c d 7<|  j |  _ n� | t k r\|  j j	 i t d d 6d	 d 6ƒ t |  j d
 <|  j d j t ƒ |  j d <|  j j	 |  j ƒ |  j
 |  _ n |  j d c | 7<t S(   Nu   nameu   >u    u
   ParseErroru   typeu   invalid-codepointu   datau   ï¿½u   eof-in-doctype-nameu   correct(   R   R(   R   R   RG   R   t   afterDoctypeNameStateR   R#   R)   R   R   R�   R
   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR�   @  s,    c         C` sö  |  j  j ƒ  } | t k r nÔ| d k rL |  j j |  j ƒ |  j |  _ n¦| t k r¹ t	 |  j d <|  j  j
 | ƒ |  j j i t d d 6d d 6ƒ |  j j |  j ƒ |  j |  _ n9| d k r)t } xB d  d! d" d# d$ f D]+ } |  j  j ƒ  } | | k rá t	 } Pqá qá W| r™|  j |  _ t Snp | d% k r™t } xB d& d' d( d) d* f D]+ } |  j  j ƒ  } | | k rQt	 } PqQqQW| r™|  j |  _ t Sn  |  j  j
 | ƒ |  j j i t d d 6d d 6i | d 6d 6ƒ t	 |  j d <|  j |  _ t S(+   Nu   >u   correctu
   ParseErroru   typeu   eof-in-doctypeu   datau   pu   Pu   uu   Uu   bu   Bu   lu   Lu   iu   Iu   cu   Cu   su   Su   yu   Yu   tu   Tu   eu   Eu   mu   Mu*   expected-space-or-right-bracket-in-doctypeu   datavars(   u   pu   P(   u   uu   U(   u   bu   B(   u   lu   L(   u   iu   I(   u   cu   C(   u   su   S(   u   yu   Y(   u   su   S(   u   tu   T(   u   eu   E(   u   mu   M(   R   R(   R   R#   R)   R   R   R   R
   R   R/   R   R8   t   afterDoctypePublicKeywordStatet   afterDoctypeSystemKeywordStatet   bogusDoctypeState(   R   RM   R‡   Rˆ   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR�   Y  sT    c         C` sô   |  j  j ƒ  } | t k r* |  j |  _ nÆ | d	 k rw |  j j i t d d 6d d 6ƒ |  j  j | ƒ |  j |  _ ny | t	 k rÔ |  j j i t d d 6d d 6ƒ t
 |  j d <|  j j |  j ƒ |  j |  _ n |  j  j | ƒ |  j |  _ t S(
   Nu   'u   "u
   ParseErroru   typeu   unexpected-char-in-doctypeu   datau   eof-in-doctypeu   correct(   u   'u   "(   R   R(   R   t"   beforeDoctypePublicIdentifierStateR   R#   R)   R   R/   R
   R   R   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR‘   Œ  s"    c         C` sg  |  j  j ƒ  } | t k r nE| d k rF d |  j d <|  j |  _ n| d k rn d |  j d <|  j |  _ nõ | d k rË |  j j i t	 d d 6d d	 6ƒ t
 |  j d
 <|  j j |  j ƒ |  j |  _ n˜ | t k r(|  j j i t	 d d 6d d	 6ƒ t
 |  j d
 <|  j j |  j ƒ |  j |  _ n; |  j j i t	 d d 6d d	 6ƒ t
 |  j d
 <|  j |  _ t S(   Nu   "u    u   publicIdu   'u   >u
   ParseErroru   typeu   unexpected-end-of-doctypeu   datau   correctu   eof-in-doctypeu   unexpected-char-in-doctype(   R   R(   R   R   t(   doctypePublicIdentifierDoubleQuotedStateR   t(   doctypePublicIdentifierSingleQuotedStateR#   R)   R   R   R   R
   R“   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR”      s4    c         C` s?  |  j  j ƒ  } | d k r* |  j |  _ n| d k rn |  j j i t d d 6d d 6ƒ |  j d c d 7<nÍ | d	 k rË |  j j i t d d 6d
 d 6ƒ t |  j d <|  j j |  j ƒ |  j	 |  _ np | t
 k r(|  j j i t d d 6d d 6ƒ t |  j d <|  j j |  j ƒ |  j	 |  _ n |  j d c | 7<t S(   Nu   "u    u
   ParseErroru   typeu   invalid-codepointu   datau   publicIdu   ï¿½u   >u   unexpected-end-of-doctypeu   correctu   eof-in-doctype(   R   R(   t!   afterDoctypePublicIdentifierStateR   R#   R)   R   R   R   R   R
   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR•   ½  s*    c         C` s?  |  j  j ƒ  } | d k r* |  j |  _ n| d k rn |  j j i t d d 6d d 6ƒ |  j d c d 7<nÍ | d	 k rË |  j j i t d d 6d
 d 6ƒ t |  j d <|  j j |  j ƒ |  j	 |  _ np | t
 k r(|  j j i t d d 6d d 6ƒ t |  j d <|  j j |  j ƒ |  j	 |  _ n |  j d c | 7<t S(   Nu   'u    u
   ParseErroru   typeu   invalid-codepointu   datau   publicIdu   ï¿½u   >u   unexpected-end-of-doctypeu   correctu   eof-in-doctype(   R   R(   R—   R   R#   R)   R   R   R   R   R
   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR–   Õ  s*    c         C` sˆ  |  j  j ƒ  } | t k r* |  j |  _ nZ| d k rX |  j j |  j ƒ |  j |  _ n,| d k r¢ |  j j i t	 d d 6d d 6ƒ d |  j d <|  j
 |  _ nâ | d	 k rì |  j j i t	 d d 6d d 6ƒ d |  j d <|  j |  _ n˜ | t k rI|  j j i t	 d d 6d
 d 6ƒ t |  j d <|  j j |  j ƒ |  j |  _ n; |  j j i t	 d d 6d d 6ƒ t |  j d <|  j |  _ t S(   Nu   >u   "u
   ParseErroru   typeu   unexpected-char-in-doctypeu   datau    u   systemIdu   'u   eof-in-doctypeu   correct(   R   R(   R   t-   betweenDoctypePublicAndSystemIdentifiersStateR   R#   R)   R   R   R   t(   doctypeSystemIdentifierDoubleQuotedStatet(   doctypeSystemIdentifierSingleQuotedStateR
   R   R“   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR—   í  s6    c         C` s8  |  j  j ƒ  } | t k r n| d k rL |  j j |  j ƒ |  j |  _ nè | d k rt d |  j d <|  j |  _ nÀ | d k rœ d |  j d <|  j	 |  _ n˜ | t
 k rù |  j j i t d d 6d d	 6ƒ t |  j d
 <|  j j |  j ƒ |  j |  _ n; |  j j i t d d 6d d	 6ƒ t |  j d
 <|  j |  _ t S(   Nu   >u   "u    u   systemIdu   'u
   ParseErroru   typeu   eof-in-doctypeu   datau   correctu   unexpected-char-in-doctype(   R   R(   R   R#   R)   R   R   R   R™   Rš   R
   R   R   R“   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR˜     s.    c         C` sô   |  j  j ƒ  } | t k r* |  j |  _ nÆ | d	 k rw |  j j i t d d 6d d 6ƒ |  j  j | ƒ |  j |  _ ny | t	 k rÔ |  j j i t d d 6d d 6ƒ t
 |  j d <|  j j |  j ƒ |  j |  _ n |  j  j | ƒ |  j |  _ t S(
   Nu   'u   "u
   ParseErroru   typeu   unexpected-char-in-doctypeu   datau   eof-in-doctypeu   correct(   u   'u   "(   R   R(   R   t"   beforeDoctypeSystemIdentifierStateR   R#   R)   R   R/   R
   R   R   R   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR’   %  s"    c         C` sg  |  j  j ƒ  } | t k r nE| d k rF d |  j d <|  j |  _ n| d k rn d |  j d <|  j |  _ nõ | d k rË |  j j i t	 d d 6d d	 6ƒ t
 |  j d
 <|  j j |  j ƒ |  j |  _ n˜ | t k r(|  j j i t	 d d 6d d	 6ƒ t
 |  j d
 <|  j j |  j ƒ |  j |  _ n; |  j j i t	 d d 6d d	 6ƒ t
 |  j d
 <|  j |  _ t S(   Nu   "u    u   systemIdu   'u   >u
   ParseErroru   typeu   unexpected-char-in-doctypeu   datau   correctu   eof-in-doctype(   R   R(   R   R   R™   R   Rš   R#   R)   R   R   R   R
   R“   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR›   9  s4    c         C` s?  |  j  j ƒ  } | d k r* |  j |  _ n| d k rn |  j j i t d d 6d d 6ƒ |  j d c d 7<nÍ | d	 k rË |  j j i t d d 6d
 d 6ƒ t |  j d <|  j j |  j ƒ |  j	 |  _ np | t
 k r(|  j j i t d d 6d d 6ƒ t |  j d <|  j j |  j ƒ |  j	 |  _ n |  j d c | 7<t S(   Nu   "u    u
   ParseErroru   typeu   invalid-codepointu   datau   systemIdu   ï¿½u   >u   unexpected-end-of-doctypeu   correctu   eof-in-doctype(   R   R(   t!   afterDoctypeSystemIdentifierStateR   R#   R)   R   R   R   R   R
   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR™   V  s*    c         C` s?  |  j  j ƒ  } | d k r* |  j |  _ n| d k rn |  j j i t d d 6d d 6ƒ |  j d c d 7<nÍ | d	 k rË |  j j i t d d 6d
 d 6ƒ t |  j d <|  j j |  j ƒ |  j	 |  _ np | t
 k r(|  j j i t d d 6d d 6ƒ t |  j d <|  j j |  j ƒ |  j	 |  _ n |  j d c | 7<t S(   Nu   'u    u
   ParseErroru   typeu   invalid-codepointu   datau   systemIdu   ï¿½u   >u   unexpected-end-of-doctypeu   correctu   eof-in-doctype(   R   R(   Rœ   R   R#   R)   R   R   R   R   R
   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRš   n  s*    c         C` sÛ   |  j  j ƒ  } | t k r n¹ | d k rL |  j j |  j ƒ |  j |  _ n‹ | t k r© |  j j i t	 d d 6d d 6ƒ t
 |  j d <|  j j |  j ƒ |  j |  _ n. |  j j i t	 d d 6d d 6ƒ |  j |  _ t S(   Nu   >u
   ParseErroru   typeu   eof-in-doctypeu   datau   correctu   unexpected-char-in-doctype(   R   R(   R   R#   R)   R   R   R   R
   R   R   R“   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyRœ   †  s     c         C` s   |  j  j ƒ  } | d k r= |  j j |  j ƒ |  j |  _ n> | t k r{ |  j  j | ƒ |  j j |  j ƒ |  j |  _ n  t	 S(   Nu   >(
   R   R(   R#   R)   R   R   R   R
   R/   R8   (   R   RM   (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR“   ™  s    c         C` s`  g  } x¤ t  r¬ | j |  j j d ƒ ƒ | j |  j j d ƒ ƒ |  j j ƒ  } | t k r` Pq	 | d k sr t ‚ | d d d k rœ | d d  | d <Pq	 | j | ƒ q	 Wd j | ƒ } | j d ƒ } | d k r%x6 t	 | ƒ D]( } |  j
 j i t d	 d
 6d d 6ƒ qä W| j d d ƒ } n  | rP|  j
 j i t d d
 6| d 6ƒ n  |  j |  _ t  S(   Nu   ]u   >iÿÿÿÿiþÿÿÿu   ]]u    u    i    u
   ParseErroru   typeu   invalid-codepointu   datau   ï¿½u
   Characters(   R8   R)   R   RL   R(   R
   t   AssertionErrorR+   t   countt   rangeR#   R   R   R   R   (   R   RM   R(   t	   nullCountt   i(    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR†   §  s0    	N(O   t   __name__t
   __module__t   __doc__R   R8   R   R'   R7   R   RE   RF   RI   R   RJ   RQ   RO   RS   RU   RV   RK   RX   RY   RP   R^   R_   RR   Rb   Rc   RT   Rd   Rf   Re   Rg   Rk   Ri   Rh   Rj   Rl   Rn   Rm   Ro   Rp   Rr   Rq   Rs   R[   Rt   Rv   Ru   R{   R}   R|   R~   R\   RZ   RW   R€   R‰   RŠ   RŒ   R‹   R�   R�   RŽ   R�   R�   R‘   R”   R•   R–   R—   R˜   R’   R›   R™   Rš   Rœ   R“   R†   (    (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyR      s–   			HP										#												
	
														7	 	"							-										3												N(   t
   __future__R    R   R   t   unichrR-   t	   NameErrort   collectionsR   t	   constantsR   R   R   R   R   R	   R
   R   R   R   t   inputstreamR   t   trieR   R9   t   objectR   (    (    (    sE   /var/www/testScraper/venv/build/pip/pip/_vendor/html5lib/tokenizer.pyt   <module>   s   
