Ë
    =^(hä& ã                   óL  — d dl Z d dlZd dlZd dlmZ d dlmZ g d¢Z G d„ de«      Z	 G d„ de«      Z
 G d„ d	e«      Z G d
„ de«      Z G d„ de j                  «      Z e«       j!                  ej"                  «       eZeez  Zeez  ez  Zed eeiZeez  ez  ez  ez  e z  Z!ee"z  e#z  e$z  e%z  e&z  ez  Z' e(ejR                  «      Z* e(ejV                  «      Z,e*e,z  Z- e(ej\                  «      Z/ e(ej`                  «      Z1 e(d«       e(dg«      z  Z2e- e(d«      z  Z3e- e(d«      z  Z4dZ5 ejl                  «       Z7e7dz  Z8de8z  dz
  Z9eeeee"ee#ee e$eeee%e&dœZ:ee"z  Z;d Z<ee"z  Z=ee=z  Z>d d ed e"e"e=e=iZ?ddddœZ@dZA G d„ d«      ZB eB«       ZC eDeAj‹                  «       «      D ]  \  ZFZG eHeCeGeF«       Œ d÷d„ZId„ ZJd„ ZKd„ ZLd „ ZMd!„ ZNd"„ ZOd#„ ZPdød%„ZQd&„ ZRd'„ ZSd(„ ZTd)„ ZUd*„ ZVd+„ ZWd,„ ZXd-d.d/d0œZYd1„ ZZd2„ Z[d3„ Z\d4„ Z]d5„ Z^d6„ Z_d7„ Z`d8„ Zad9„ Zbd:„ Zcd;„ Zdd<„ Zed=„ Zfd>„ Zgd?„ Zhd@„ ZidA„ ZjdB„ ZkdC„ ZldD„ ZmdE„ ZndF„ ZodG„ ZpdH„ ZqdI„ ZrdJ„ ZsdK„ ZtdL„ ZudùdM„ZvdN„ ZwdO„ ZxdP„ ZydQ„ ZzdR„ Z{dS„ Z|dT„ Z}dU„ Z~dV„ ZdW„ Z€dX„ Z�dY„ Z‚dZ„ Zƒd[„ Z„d\„ Z…d]„ Z†d^„ Z‡d_„ Zˆd`„ Z‰da„ ZŠdb„ Z‹dc„ ZŒdd„ Z�de„ ZŽ e�dfj‹                  «       «      Z� e�dgj‹                  «       «      Z‘dúdh„Z’di„ Z“dj„ Z”dk„ Z•dl„ Z–dmZ—dZ˜dZ™dZšdZ›dnZœdodpdqœZ�e<de"drede=dsiZždt„ ZŸ G du„ dv«      Z  G dw„ dxe «      Z¡ G dy„ dze «      Z¢ G d{„ d|e¢«      Z£ G d}„ d~e¢«      Z¤ G d„ d€e «      Z¥ G d�„ d‚e¡«      Z¦ G dƒ„ d„e «      Z§ G d…„ d†e «      Z¨ G d‡„ dˆe «      Z© G d‰„ dŠe «      Zª G d‹„ dŒe «      Z« G d�„ dŽe¡«      Z¬ G d�„ d�e¡«      Z­ G d‘„ d’e¡«      Z® G d“„ d”e¡«      Z¯ G d•„ d–e¯«      Z° G d—„ d˜e¡«      Z± G d™„ dše¡«      Z² G d›„ dœe²«      Z³ G d�„ dže¡«      Z´ G dŸ„ d e¡«      Zµ G d¡„ d¢e «      Z¶ G d£„ d¤e «      Z· G d¥„ d¦«      Z¸ G d§„ d¨e «      Z¹ G d©„ dªe¹«      Zº G d«„ d¬e «      Z» G d­„ d®e¡«      Z¼ G d¯„ d°e¹«      Z½ G d±„ d²e «      Z¾ G d³„ d´e «      Z¿ G dµ„ d¶e «      ZÀ G d·„ d¸e «      ZÁ G d¹„ dºe¡«      ZÂ G d»„ d¼e «      ZÃ G d½„ d¾e «      ZÄ G d¿„ dÀe¡«      ZÅ G dÁ„ dÂe «      ZÆ G dÃ„ dÄe «      ZÇ G dÅ„ dÆeÇ«      ZÈ G dÇ„ dÈeÇ«      ZÉ G dÉ„ dÊeÇ«      ZÊ G dË„ dÌeÇ«      ZË G dÍ„ dÎe¡«      ZÌ G dÏ„ dÐe¡«      ZÍ G dÑ„ dÒeÍ«      ZÎ G dÓ„ dÔe¡«      ZÏ G dÕ„ dÖe¡«      ZÐ G d×„ dØe «      ZÑ G dÙ„ dÚeÑ«      ZÒ G dÛ„ dÜe§«      ZÓ G dÝ„ dÞ«      ZÔ G dß„ dà«      ZÕdá„ ZÖdâ„ Z× G dã„ dä«      ZØ e�j²                  «       ZÚi ZÛeÚ�j¹                  «       D ]j  \  ZÝ\  ZÞZßeÛ�jÁ                  eÞdi f«      \  ZáZâ eãeáeÝeä¬å«      ZáeáeâfeÛeÞ<   eß�j¹                  «       D ]$  \  ZåZæ eãeâ�jÁ                  eæd«      eåeä¬å«      eâeæ<   Œ& Œl dædçdèdédêdëdìdíœZç e’ddîdï«       e’ddîd$«       e’ddðdï«       e’ddñdï«       e’ddñd$«       e’ddòdï«       e’ddòd$«      dóœZè eÏ«        e¦«        e¦d$«       e¼«        eÐ«        e´«        e±«       dôœZé eêeé«      Zëeëj!                   e¬«        e¬d$«       e®«        e­«       dõœ«        eµ«        eµ«        eÂ«        eÌ«       döœZìy)ûé    N)Údefaultdict)%ÚAÚASCIIÚBÚ	BESTMATCHÚDÚDEBUGÚEÚENHANCEMATCHÚFÚFULLCASEÚIÚ
IGNORECASEÚLÚLOCALEÚMÚ	MULTILINEÚPÚPOSIXÚRÚREVERSEÚSÚDOTALLÚTÚTEMPLATEÚUÚUNICODEÚV0ÚVERSION0ÚV1ÚVERSION1ÚWÚWORDÚXÚVERBOSEÚerrorÚScannerÚ	RegexFlagc                   ó   — e Zd ZdZdd„Zy)r&   a‰  Exception raised for invalid regular expressions.

    Attributes:

        msg: The unformatted error message
        pattern: The regular expression pattern
        pos: The position in the pattern where compilation failed, or None
        lineno: The line number where compilation failed, unless pos is None
        colno: The column number where compilation failed, unless pos is None
    Nc                 ót  — t        |t        «      rdnd}|| _        || _        || _        |�w|�u|j                  |d|«      dz   | _        ||j                  |d|«      z
  | _        dj                  ||«      }||v r)|dj                  | j                  | j                  «      z  }t        j                  | |«       y )Nú
ó   
r   é   z{} at position {}z (line {}, column {}))Ú
isinstanceÚstrÚmsgÚpatternÚposÚcountÚlinenoÚrfindÚcolnoÚformatÚ	ExceptionÚ__init__)ÚselfÚmessager1   r2   Únewlines        úO/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/regex/_regex_core.pyr9   zerror.__init__*   s´   € Ü$ W¬cÔ2‘$¸ˆØˆŒØˆŒØˆŒØÐ 3 ?Ø!Ÿ-™-¨°°CÓ8¸1Ñ<ˆDŒKØ˜wŸ}™}¨W°a¸Ó=Ñ=ˆDŒJà)×0Ñ0°¸#Ó>ˆGà˜'Ñ!ØÐ2×9Ñ9¸$¿+¹+Ø—*‘*óñ �ô 	×Ñ˜4 Õ)ó    )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r9   © r>   r=   r&   r&      s   „ ñ	ô*r>   r&   c                   ó   — e Zd Zy)Ú_UnscopedFlagSetN©r?   r@   rA   rC   r>   r=   rE   rE   =   ó   „ Ør>   rE   c                   ó   — e Zd Zy)Ú
ParseErrorNrF   rC   r>   r=   rI   rI   A   rG   r>   rI   c                   ó   — e Zd Zy)Ú_FirstSetErrorNrF   rC   r>   r=   rK   rK   E   rG   r>   rK   c                   ó²   — e Zd ZdxZZdxZZdxZZdxZ	Z
dxZZdxZZdxZZdxZZd	xZZd
xZZdxZZdxZZdxZZdxZZdxZZ dxZ!Z"dxZ#Z$d„ Z%e&jN                  Z'y)r(   é€   i   i   i €  i @  é   é   é   i   i   é   é    i    é   i   é@   r-   c                 óœ  — | j                   �d| j                   z  S | j                  }g }|dk  }|r| }| j                  D ]@  }||j                  z  sŒ||j                   z  }|j                  d|j                   z  «       ŒB |r|j                  t	        |«      «       dj                  |«      }|rt        |«      dkD  rd|z  }|S d|z  }|S )Nzregex.%sr   ú|r-   z~(%s)z~%s)Ú_name_Ú_value_Ú	__class__ÚappendÚhexÚjoinÚlen)r:   ÚvalueÚmembersÚnegativeÚmÚress         r=   Ú__repr__zRegexFlag.__repr__]   sÒ   € Ø�;‰;Ð"Ø §¡Ñ+Ð+à—‘ˆØˆØ˜1‘9ˆáØ�FˆEà—‘ò 	6ˆAØ�q—y‘yÓ Ø˜!Ÿ)™)˜Ñ#�Ø—‘˜z¨A¯H©HÑ4Õ5ð	6ñ
 Ø�N‰Nœ3˜u›:Ô&à�h‰h�wÓˆáÜ�7‹|˜aÒØ ‘m�ð ˆ
ð ˜c‘k�àˆ
r>   N)(r?   r@   rA   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   rc   ÚobjectÚ__str__rC   r>   r=   r(   r(   I   s¼   „ ØÐ€AˆØÐ€Aˆ	ØÐ€AˆØÐ€AˆàÐ€AˆØÐ€Aˆ
ØÐ€AˆØÐ€Aˆ	ØÐ€AˆØÐ€AˆØÐ€AˆØÐ€AˆØÐ€BˆØÐ€BˆØÐ€AˆØÐ€AˆØÐ€Aˆòð: �n‰n�Gr>   r(   z()|?*+{^$.[\#Ú z -z &_-.)ú||ú~~ú&&ú--rP   r-   )ÚaÚbÚeÚfÚir   ra   ÚpÚrÚsÚur   r    ÚwÚxrN   rO   )ru   rs   r   aæ  
FAILURE
SUCCESS
ANY
ANY_ALL
ANY_ALL_REV
ANY_REV
ANY_U
ANY_U_REV
ATOMIC
BOUNDARY
BRANCH
CALL_REF
CHARACTER
CHARACTER_IGN
CHARACTER_IGN_REV
CHARACTER_REV
CONDITIONAL
DEFAULT_BOUNDARY
DEFAULT_END_OF_WORD
DEFAULT_START_OF_WORD
END
END_OF_LINE
END_OF_LINE_U
END_OF_STRING
END_OF_STRING_LINE
END_OF_STRING_LINE_U
END_OF_WORD
FUZZY
GRAPHEME_BOUNDARY
GREEDY_REPEAT
GROUP
GROUP_CALL
GROUP_EXISTS
KEEP
LAZY_REPEAT
LOOKAROUND
NEXT
PROPERTY
PROPERTY_IGN
PROPERTY_IGN_REV
PROPERTY_REV
PRUNE
RANGE
RANGE_IGN
RANGE_IGN_REV
RANGE_REV
REF_GROUP
REF_GROUP_FLD
REF_GROUP_FLD_REV
REF_GROUP_IGN
REF_GROUP_IGN_REV
REF_GROUP_REV
SEARCH_ANCHOR
SET_DIFF
SET_DIFF_IGN
SET_DIFF_IGN_REV
SET_DIFF_REV
SET_INTER
SET_INTER_IGN
SET_INTER_IGN_REV
SET_INTER_REV
SET_SYM_DIFF
SET_SYM_DIFF_IGN
SET_SYM_DIFF_IGN_REV
SET_SYM_DIFF_REV
SET_UNION
SET_UNION_IGN
SET_UNION_IGN_REV
SET_UNION_REV
SKIP
START_OF_LINE
START_OF_LINE_U
START_OF_STRING
START_OF_WORD
STRING
STRING_FLD
STRING_FLD_REV
STRING_IGN
STRING_IGN_REV
STRING_REV
FUZZY_EXT
c                   ó   — e Zd Zy)Ú	NamespaceNrF   rC   r>   r=   rw   rw     rG   r>   rw   c                 óÄ  — t        | j                  «       «      }t        |«      |z
  }|dk  ry||z  |z   }ddl}t	        |d«      sy|j                  ||«      D ]  }		 | |	= Œ |j                  «        i }
t        | «      D ]   \  }}}}}}|||||||f<   	 |||f   |
||f<   Œ" |j                  «        |j                  |
«       y# t        $ r Y Œvw xY w# t        $ r Y Œ_w xY w)aC  Make room in the given cache.

    Args:
        cache_dict: The cache dictionary to modify.
        args_dict: The dictionary of named list args used by patterns.
        max_length: Maximum # of entries in cache_dict before it is shrunk.
        divisor: Cache will shrink to max_length - 1/divisor*max_length items.
    r   NÚsample)	ÚtupleÚkeysr]   ÚrandomÚhasattrry   ÚKeyErrorÚclearÚupdate)Ú
cache_dictÚ	args_dictÚlocale_sensitiveÚ
max_lengthÚdivisorÚ
cache_keysÚoverageÚnumber_to_tossr|   Ú
doomed_keyÚsensitivity_dictr1   Úpattern_typeÚflagsÚargsÚdefault_versionÚlocales                    r=   Ú_shrink_cacher�     s%  € ô �z—‘Ó(Ó)€JÜ�*‹o 
Ñ*€GØ�‚{ð 	à 7Ñ*¨WÑ4€Nó Ü�6˜8Ô$ð 	à—m‘m J°Ó?ò ˆ
ð	Ø˜:Ñ&ðð ‡O�OÔØÐÜGLÈZÓGXò ÑCˆ�˜u d¨O¸VØKOˆ	�'˜<¨°ÀÐGÑHð	Ø6FÀ|ÐU\ÐG\Ñ6]Ð˜\¨7Ð2Ò3ðð ×ÑÔØ×ÑÐ,Õ-øô ò 	áð	ûô ò 	Ùð	ús$   ÁCÂCÃ	CÃCÃ	CÃCc                 ó|   — | j                   }|t        z  dk(  r|| j                  z  }t        j                  ||«      S )zFolds the case of a string.r   )rŒ   Ú_ALL_ENCODINGSÚguess_encodingÚ_regexÚ	fold_case)ÚinfoÚstringrŒ   s      r=   Ú
_fold_caser˜   ?  s;   € à�J‰J€EØ”Ñ 1Ò$Ø�×$Ñ$Ñ$ˆä×Ñ˜E 6Ó*Ð*r>   c                 óZ   — t        t        j                  | j                  |«      «      dkD  S ©z$Checks whether a character is cased.r-   )r]   r”   Úget_all_casesrŒ   )r–   Úchars     r=   Ú
is_cased_ir�   G  s#   € äŒv×#Ñ# D§J¡J°Ó5Ó6¸Ñ:Ð:r>   c                 óF   — t        t        j                  | |«      «      dkD  S rš   )r]   r”   r›   )rŒ   rœ   s     r=   Ú
is_cased_frŸ   K  s   € äŒv×#Ñ# E¨4Ó0Ó1°AÑ5Ð5r>   c                 ó~   — t        | j                  t        z  «      }t        | ||«      }|sg S |j	                  |«      S )z&Compiles the firstset for the pattern.)ÚboolrŒ   r   Ú_check_firstsetÚcompile)r–   ÚfsÚreverses      r=   Ú_compile_firstsetr¦   O  s<   € ä�4—:‘:¤Ñ'Ó(€GÜ	˜˜w¨Ó	+€BÙØˆ	ð �:‰:�gÓÐr>   c                 óp  — |rd|v ryt        «       }t        }|D ]T  }t        |t        «      r|j                  s y||j
                  z  }|j                  |j                  t        ¬«      «       ŒV |t        t        z  k(  ryt        | t        |«      |t         z  d¬«      }|j                  | |d¬«      }|S )z$Checks the firstset for the pattern.N©Ú
case_flagsT©r©   Ú	zerowidth©Úin_set)ÚsetÚNOCASEr.   Ú	CharacterÚpositiver©   ÚaddÚ
with_flagsr   r   ÚSetUnionÚlistÚoptimise)r–   r¥   r¤   r_   r©   ro   s         r=   r¢   r¢   Y  s°   € á�˜‘Øô ‹e€GÜ€JØò 5ˆÜ�aœÔ#¨A¯JªJÙð 	�a—l‘lÑ"ˆ
Ø�‰�A—L‘L¬F�LÓ3Õ4ð5ð ”h¤Ñ+Ò,Øô 
�$œ˜W›°*Ä¸yÑ2HØô
€Bà	�‰�T˜7¨4ˆÓ	0€Bà€Ir>   c                 ó:   — g }| D ]  }|j                  |«       Œ |S )z(Flattens the code from a list of tuples.)Úextend)ÚcodeÚ	flat_codeÚcs      r=   Ú_flatten_coder¼   x  s,   € à€IØò ˆØ×Ñ˜Õðð Ðr>   c                 óf   — | j                   t        z  }| j                   t        z  r
|t         z  }|S )zMakes the case flags.)rŒ   Ú
CASE_FLAGSr   r   )r–   rŒ   s     r=   Úmake_case_flagsr¿   €  s/   € à�J‰JœÑ#€Eð ‡z�z”EÒØ”(�Ñˆà€Lr>   Fc                 óH   — |rt        |«      S t        |t        | «      ¬«      S )zMakes a character literal.r¨   )r°   r¿   )r–   r^   r­   s      r=   Úmake_characterrÁ   Š  s"   € áä˜ÓÐä�U¤°tÓ'<Ô=Ð=r>   c                 ó2   — t        | ||t        | «      ¬«      S )zMakes a group reference.r¨   )ÚRefGroupr¿   )r–   ÚnameÚpositions      r=   Úmake_ref_grouprÆ   ’  s   € ä�D˜$ ´_ÀTÓ5JÔKÐKr>   c                 ó0   — t        | |t        | «      ¬«      S )zMakes a string set.r¨   )Ú	StringSetr¿   )r–   rÄ   s     r=   Úmake_string_setrÉ   –  s   € ä�T˜4¬O¸DÓ,AÔBÐBr>   c                 ó@   — |r|S |j                  t        | «      ¬«      S )zMakes a property.r¨   )r³   r¿   )r–   Úpropr­   s      r=   Úmake_propertyrÌ   š  s    € áØˆà�?‰?¤o°dÓ&;ˆ?Ó<Ð<r>   c                 óÔ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        |«      S )zParses a pattern, eg. 'a|b|c'.rV   r-   r   )Úparse_sequenceÚmatchrZ   r]   ÚBranch)Úsourcer–   Úbranchess      r=   Ú_parse_patternrÓ   ¡  sa   € ä˜v tÓ,Ð-€HØ
�,‰,�sÔ
Ø�‰œ v¨tÓ4Ô5ð �,‰,�sÕ
ô ˆ8ƒ}˜ÒØ˜‰{ÐÜ�(ÓÐr>   c           	      ó®  — dg}t        |«      }	 | j                  }| j                  «       }|t        v �rÙ|dv r	|| _        �nó|dk(  r|j	                  t        | |d«      «       �nÎ|dk(  r.t        | |«      }|€t        |«      }�n®|j	                  |«       �n›|dk(  rw|j                  t        z  r|j	                  t        «       «       �nh|j                  t        z  r|j	                  t        «       «       �n:|j	                  t        «       «       �n|dk(  r|j	                  t        | |«      «       �ný|dk(  rw|j                  t        z  rI|j                  t        z  r|j	                  t        «       «       �n·|j	                  t!        «       «       �nœ|j	                  t#        «       «       �n�|d	k(  r£|j                  t        z  rI|j                  t        z  r|j	                  t%        «       «       �n;|j	                  t'        «       «       �n |j                  t        z  r|j	                  t)        «       «       nó|j	                  t+        «       «       nÙ|d
v rŠt-        | ||«      }|r#t/        | ||||||«       |j	                  d«       n£t1        | |||«      }|r"t3        | |||||«       |j	                  d«       nq|j	                  t5        t7        |«      |¬«      «       nK|j	                  t5        t7        |«      |¬«      «       n%|j	                  t5        t7        |«      |¬«      «       �Œ%|D �	cg c]  }	|	€Œ|	‘Œ	 }}	t9        |«      S c c}	w )zParses a sequence, eg. 'abc'.Nz)|ú\Fú(ú.ú[ú^ú$z?*+{r¨   )r¿   r2   ÚgetÚSPECIAL_CHARSrZ   Úparse_escapeÚparse_parenrŒ   r   ÚAnyAllr#   ÚAnyUÚAnyÚ	parse_setr   ÚStartOfLineUÚStartOfLineÚStartOfStringÚ
EndOfLineUÚ	EndOfLineÚEndOfStringLineUÚEndOfStringLineÚparse_quantifierÚapply_quantifierÚparse_fuzzyÚapply_constraintr°   ÚordÚSequence)
rÑ   r–   Úsequencer©   Ú	saved_posÚchÚelementÚcountsÚconstraintsÚitems
             r=   rÎ   rÎ   «  s‘  € àˆv€HÜ  Ó&€JØ
Ø—J‘Jˆ	Ø�Z‰Z‹\ˆØ”ÒØ�T‰zà&�”
ÙØ�t’à—‘¤¨V°T¸5Ó AÖBØ�s’ä% f¨dÓ3�Ø�?Ü!0°Ó!6’Jà—O‘O GÖ,Ø�s’à—:‘:¤Ò&Ø—O‘O¤F£HÖ-Ø—Z‘Z¤$Ò&Ø—O‘O¤D£FÖ+à—O‘O¤C£EÖ*Ø�s’à—‘¤	¨&°$Ó 7Ö8Ø�s’à—:‘:¤	Ò)Ø—z‘z¤DÒ(Ø Ÿ™¬«Ö7à Ÿ™¬«Ö6à—O‘O¤M£OÖ4Ø�s’à—:‘:¤	Ò)Ø—z‘z¤DÒ(Ø Ÿ™¬
«Ö5à Ÿ™¬	«Ö4à—z‘z¤DÒ(Ø Ÿ™Ô(8Ó(:Õ;à Ÿ™¬Ó(9Õ:Ø�v‘ä)¨&°$¸Ó;�Ùä$ V¨T°6¸:ÀrØ ô+à—O‘O DÕ)ô #.¨f°d¸BÀ
Ó"K�KÙ"ä(¨°°{ÀJØ# Xô/à Ÿ™¨Õ-ð !Ÿ™¬	´#°b³'Ø%/ô)1õ 2ð —‘¤	¬#¨b«'¸jÔ IÕJð �O‰OœI¤c¨"£g¸*ÔEÔFñW ðZ "*Ö>˜¨TÑ-=’Ð>€HÐ>Ü�HÓÐùò ?s   Ì9MÍMc                 óâ  — |j                  «       }|€0|rt        d| j                  |«      ‚t        d| j                  |«      ‚t        |t        t
        t        f«      rt        d| j                  |«      ‚|\  }}	| j                  }| j                  «       }|dk(  rt
        }
n|dk(  rt        }
n|| _        t        }
|j                  «       s|dk7  s|	dk7  r
 |
|||	«      }|j                  |«       y )Nzmultiple repeatznothing to repeatú?ú+r-   )Úpopr&   r—   r.   ÚGreedyRepeatÚ
LazyRepeatÚPossessiveRepeatr2   rÛ   Úis_emptyrZ   )rÑ   r–   rô   r©   rò   rñ   rð   ró   Ú	min_countÚ	max_countÚrepeateds              r=   rë   rë   ÿ  sÛ   € à�l‰l‹n€GØ€ÙÜÐ)¨6¯=©=¸)ÓDÐDÜÐ'¨¯©¸	ÓBÐBä�'œL¬*Ô6FÐGÔHÜÐ% v§}¡}°iÓ@Ð@à!Ñ€IˆyØ—
‘
€IØ	�‰‹€BØ	ˆS‚yä‰Ø	ˆsŠä#‰ð ˆŒ
Üˆð ×ÑÔ 9°¢>°YÀ!²^Ù˜7 I¨yÓ9ˆà‡O�O�GÕr>   c                 ó  — |j                  «       }|€t        d| j                  |«      ‚t        |t        «      r-t        |j                  |«      |_        |j                  |«       y |j                  t        ||«      «       y )Nznothing for fuzzy constraint)rú   r&   r—   r.   ÚGroupÚFuzzyÚ
subpatternrZ   )rÑ   r–   rõ   r©   rñ   rð   ró   s          r=   rí   rí     sf   € à�l‰l‹n€GØ€ÜÐ2°F·M±MÀ9ÓMÐMô �'œ5Ô!Ü" 7×#5Ñ#5°{ÓCˆÔØ�‰˜Õ à�‰œ˜g {Ó3Õ4r>   )r   r-   ©r   N©r-   N)rø   Ú*rù   c                 ó^   — t         j                  |«      }|r|S |dk(  rt        | «      }|r|S y)zParses a quantifier.ú{N)Ú_QUANTIFIERSrÛ   Úparse_limited_quantifier)rÑ   r–   rò   Úqrô   s        r=   rê   rê   /  s6   € ä×Ñ˜Ó€AÙàˆà	ˆS‚yä)¨&Ó1ˆÙØˆMàr>   c                 ó    — | duxr	 | t         k\  S )z,Checks whether a count is above the maximum.N©Ú	UNLIMITED)r3   s    r=   Úis_above_limitr  >  s   € à˜ÐÒ3 ¬)Ñ!3Ð3r>   c                 ó¤  — | j                   }t        | «      }| j                  d«      r*t        | «      }t        |xs d«      }|rt        |«      nd}n|s|| _         yt        |«      x}}| j                  d«      s|| _         yt	        |«      st	        |«      rt        d| j                  |«      ‚|�||kD  rt        d| j                  |«      ‚||fS )zParses a limited quantifier.ú,r   Nú}zrepeat count too bigz"min repeat greater than max repeat)r2   Úparse_countrÏ   Úintr  r&   r—   )rÑ   rñ   rÿ   r   s       r=   r  r  B  sÏ   € à—
‘
€IÜ˜FÓ#€IØ‡|�|�CÔÜ Ó'ˆ	ô ˜	š QÓ'ˆ	Ù&/”C˜	”N°T‰	áØ"ˆFŒJØä # I£Ð.ˆ	�Ià�<‰<˜ÔØˆŒ
Øä�iÔ ¤N°9Ô$=ÜÐ*¨F¯M©M¸9ÓEÐEàÐ ¨YÒ!6ÜÐ8¸&¿-¹-Ø
óð 	ð �iÐÐr>   c                 óx  — | j                   }|dk7  ryi }	 t        | |«       | j                  d«      rt        | |«       | j                  d«      rŒ| j                  d«      rt	        | ||«      |d<   | j                  d«      s!t        d| j                  | j                   «      ‚|S # t        $ r
 || _         Y yw xY w)z#Parses a fuzzy setting, if present.r
  Nr  ú:Útestr  z
expected })r2   Úparse_fuzzy_itemrÏ   rI   Úparse_fuzzy_testr&   r—   )rÑ   r–   rò   r©   rñ   rõ   s         r=   rì   rì   `  s²   € à—
‘
€Ià	ˆS‚yØà€KðÜ˜ Ô-Ø�l‰l˜3ÔÜ˜V [Ô1ð �l‰l˜3Õð ‡|�|�CÔÜ.¨v°t¸ZÓHˆ�FÑà�<‰<˜ÔÜ�L &§-¡-°·±Ó<Ð<àÐøô ò ØˆŒ
Ùðús   –:B& Â&B9Â8B9c                 óz   — | j                   }	 t        | |«       y# t        $ r || _         t        | |«       Y yw xY w)zParses a fuzzy setting item.N)r2   Úparse_cost_constraintrI   Úparse_cost_equation)rÑ   rõ   rñ   s      r=   r  r  x  s:   € à—
‘
€Ið1Ü˜f kÕ2øÜò 1ØˆŒ
ä˜F KÖ0ð1ús   Ž ›:¹:c                 ó¢  — | j                   }| j                  «       }|t        v rbt        | ||«      }t	        | «      }|€d||<   y| j                   }t        | «      }|s|dz  }|dk  rt        d| j                  |«      ‚d|f||<   y|t        v r¸|| _         | j                   }t        | «      }t	        | «      }	|	€
t        «       ‚t        | || j                  «       «      }t	        | «      }|€
t        «       ‚| j                   }t        | «      }|	s|dz  }|s|dz  }d|cxk  r|k  sn t        d| j                  |«      ‚||f||<   yt        «       ‚)zParses a cost constraint.Nr  r-   r   úbad fuzzy cost limit)
r2   rÛ   ÚALPHAÚparse_constraintÚparse_fuzzy_compareÚparse_cost_limitr&   r—   ÚDIGITSrI   )
rÑ   rõ   rñ   rò   Ú
constraintÚmax_incÚcost_posÚmax_costÚmin_costÚmin_incs
             r=   r  r  ‚  s\  € à—
‘
€IØ	�‰‹€BØ	ŒU�{ä% f¨k¸2Ó>ˆ
ä% fÓ-ˆàˆ?à&-ˆK˜
Ò#ð —z‘zˆHÜ'¨Ó/ˆHñ Ø˜A‘�à˜!Š|ÜÐ2°F·M±MÀ8ÓLÐLà&'¨ kˆK˜
Ò#Ø	Œv‰àˆŒ
ð —:‘:ˆÜ# FÓ+ˆä% fÓ-ˆØˆ?Ü“,Ðä% f¨k¸6¿:¹:»<ÓHˆ
ä% fÓ-ˆØˆ?Ü“,Ðð —:‘:ˆÜ# FÓ+ˆñ Ø˜‰MˆHÙØ˜‰MˆHà�HÔ( Ô(ÜÐ.°·±¸xÓHÐHà"*¨HÐ"4ˆ�JÒä‹lÐr>   c                 ó”   — | j                   }t        | «      }	 t        |«      S # t        $ r Y nw xY wt	        d| j
                  |«      ‚)zParses a cost limit.r   )r2   r  r  Ú
ValueErrorr&   r—   )rÑ   r(  Údigitss      r=   r$  r$  ¿  sL   € à�z‰z€HÜ˜Ó €FðÜ�6‹{ÐøÜò Ùðúô Ð&¨¯©°xÓ
@Ð@s   ™
$ ¤	0¯0c                 ó>   — |dvr
t        «       ‚||v r
t        «       ‚|S )zParses a constraint.Údeis)rI   )rÑ   rõ   rò   s      r=   r"  r"  Ë  s'   € à	�ÑÜ‹lÐà	ˆ[ÑÜ‹lÐà€Ir>   c                 óL   — | j                  d«      ry| j                  d«      ryy)zParses a cost comparator.z<=Tú<FN©rÏ   ©rÑ   s    r=   r#  r#  Õ  s#   € à‡|�|�DÔØØ	�‰�cÔ	Øàr>   c                 óŒ  — d|v r!t        d| j                  | j                  «      ‚i }t        | |«       | j	                  d«      rt        | |«       | j	                  d«      rŒt        | «      }|€
t        «       ‚t        t        | «      «      }|s|dz  }|dk  r!t        d| j                  | j                  «      ‚||d<   ||d<   y)	zParses a cost equation.Úcostzmore than one cost equationrù   Nr-   r   r   Úmax)	r&   r—   r2   Úparse_cost_termrÏ   r#  rI   r  r  )rÑ   rõ   r6  r'  r)  s        r=   r  r  Þ  s»   € à�ÑÜÐ1°6·=±=À&Ç*Á*ÓMÐMà€Dä�F˜DÔ!Ø
�,‰,�sÔ
Ü˜ Ô%ð �,‰,�sÕ
ô " &Ó)€GØ€Ü‹lÐä”;˜vÓ&Ó'€HáØ�A‰ˆà�!‚|ÜÐ*¨F¯M©M¸6¿:¹:ÓFÐFà€Dˆ�Kà€K�Òr>   c                 óÄ   — t        | «      }| j                  «       }|dvr
t        «       ‚||v r!t        d| j                  | j
                  «      ‚t        |xs d«      ||<   y)zParses a cost equation term.Údiszrepeated fuzzy costr-   N)r  rÛ   rI   r&   r—   r2   r  )rÑ   r6  Úcoeffrò   s       r=   r8  r8  ù  sV   € ä˜Ó€EØ	�‰‹€BØ	��Ü‹lÐà	ˆT�zÜÐ)¨6¯=©=¸&¿*¹*ÓEÐEä�5’:˜A‹€Dˆ‚Hr>   c                 ó®  — | j                   }| j                  «       }|t        v rƒ|dk(  rt        | |d«      S |dk(  rD|j                  t
        z  r
t        «       S |j                  t        z  r
t        «       S t        «       S |dk(  rt        | |«      S t        d| j                  |«      ‚|rt        t        |«      |¬«      S t        d| j                  |«      ‚)NrÕ   Fr×   rØ   zexpected character setr¨   )r2   rÛ   rÜ   rÝ   rŒ   r   rß   r#   rà   rá   râ   r&   r—   r°   rî   )rÑ   r–   r©   rñ   rò   s        r=   r  r    s¸   € Ø—
‘
€IØ	�‰‹€BØ	Œ]ÑØ�Š:ä ¨¨eÓ4Ð4Ø�3ŠYà�z‰zœFÒ"Ü“x�Ø—‘œdÒ"Ü“v�ä“u�Ø�3ŠYä˜V TÓ*Ð*äÐ0°&·-±-ÀÓKÐKÙ	äœ˜R›¨ZÔ8Ð8äÐ,¨f¯m©m¸YÓGÐGr>   c                 ó,   — | j                  t        «      S )z0Parses a quantifier's count, which can be empty.)Ú	get_whiler%  r4  s    r=   r  r    s   € à×ÑœFÓ#Ð#r>   c                 óT  — | j                   }| j                  d«      }|dk(  �r¥| j                   }| j                  d«      }|dk(  rÔ| j                   }| j                  «       }|dv rt        | |d|dk(  «      S || _         t        | «      }|j	                  |«      }| j                  d«       |j                  }	 t        | |«      }	| j                  d«       ||_        t        |j                  t        z  «      | _
        |j                  «        t        |||	«      S |dv rt        | |d|dk(  «      S |d	k(  rt        | |«      S |d
k(  rt        | «      S |dk(  rt        | |«      S |dk(  rt!        | |«      S |dk(  rt#        | |«      S |dk(  sd|cxk  rdk  rn nt%        | |||«      S |dk(  rt'        | ||«      S || _         t)        | |«      S |dk(  r|| j                   }| j+                  t-        d«      d¬«      }
|
dd j/                  «       rAt0        j                  |
«      }|st3        d| j4                  |«      ‚| j                  d«       |S || _         |j	                  «       }|j                  }	 t        | |«      }	| j                  d«       ||_        t        |j                  t        z  «      | _
        |j                  «        t        |||	«      S # ||_        t        |j                  t        z  «      | _
        w xY w# ||_        t        |j                  t        z  «      | _
        w xY w)z[Parses a parenthesised subpattern or a flag. Returns FLAGS if it's an
    inline flag.
    Trø   r2  ©ú=ú!rA  ú>ú)Fr   ú#rÖ   rV   r   Ú0Ú9ú&r  ú)>©ÚincludeNr-   zunknown verb)r2   rÛ   Úparse_lookaroundÚ
parse_nameÚ
open_groupÚexpectrŒ   rÓ   r¡   r%   Úignore_spaceÚclose_groupr  Úparse_extensionÚparse_commentÚparse_conditionalÚparse_atomicÚparse_commonÚparse_call_groupÚparse_call_named_groupÚparse_flags_subpatternr>  r®   ÚisalphaÚVERBSr&   r—   )rÑ   r–   rñ   rò   Úsaved_pos_2Úsaved_pos_3rÄ   ÚgroupÚsaved_flagsr  ÚwordÚverbs               r=   rÞ   rÞ   #  sñ  € ð —
‘
€IØ	�‰�DÓ	€BØ	ˆSƒyà—j‘jˆØ�Z‰Z˜ÓˆØ�Š9à Ÿ*™*ˆKØ—‘“ˆBØ�ZÑä'¨°°d¸BÀ#¹IÓFÐFð %ˆFŒJÜ˜fÓ%ˆDØ—O‘O DÓ)ˆEØ�M‰M˜#ÔØŸ*™*ˆKðAÜ+¨F°DÓ9�
Ø—‘˜cÔ"à(�”
Ü&*¨4¯:©:¼Ñ+?Ó&@�Ô#à×ÑÔÜ˜˜u jÓ1Ð1Ø�Ñä# F¨D°%¸¸s¹ÓCÐCØ�Š9ä" 6¨4Ó0Ð0Ø�Š9ä  Ó(Ð(Ø�Š9ä$ V¨TÓ2Ð2Ø�Š9ä ¨Ó-Ð-Ø�Š9ä ¨Ó-Ð-Ø�Š9˜˜rÔ( SÕ(ä# F¨D°"°kÓBÐBØ�Š9ä)¨&°$¸ÓDÐDð !ˆŒ
Ü% f¨dÓ3Ð3à	ˆS‚yà—j‘jˆØ×Ñ¤ D£	°5ÐÓ9ˆØ��1ˆ:×ÑÔÜ—9‘9˜T“?ˆDÙÜ˜N¨F¯M©M¸;ÓGÐGà�M‰M˜#ÔàˆKð €F„JØ�O‰OÓ€EØ—*‘*€Kð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔà×ÑÔä��u˜jÓ)Ð)øðy )�”
Ü&*¨4¯:©:¼Ñ+?Ó&@�Õ#ûðl !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   Â8K É.K= Ë*K:Ë=*L'c                 óð  — | j                   }| j                  «       }|dk(  rœt        | «      }|j                  |«      }| j	                  d«       |j
                  }	 t        | |«      }| j	                  d«       ||_        t        |j
                  t        z  «      | _	        |j                  «        t        |||«      S |dk(  rSt        | d¬«      }| j	                  d«       |j                  |«      rt        d| j                  |«      ‚t        |||«      S |dk(  s|dk(  rt!        | ||«      S || _         t        d	| j                  |«      ‚# ||_        t        |j
                  t        z  «      | _	        w xY w)
zParses a Python extension.r2  rC  rD  rA  T)Úallow_numericúcannot refer to an open grouprH  úunknown extension)r2   rÛ   rM  rN  rO  rŒ   rÓ   r¡   r%   rP  rQ  r  Úis_open_groupr&   r—   rÆ   rX  )rÑ   r–   rñ   rò   rÄ   r^  r_  r  s           r=   rR  rR  }  sN  € à—
‘
€IØ	�‰‹€BØ	ˆS‚yä˜&Ó!ˆØ—‘ Ó%ˆØ�‰�cÔØ—j‘jˆð	=Ü'¨°Ó5ˆJØ�M‰M˜#Ôà$ˆDŒJÜ"& t§z¡z´GÑ';Ó"<ˆFÔà×ÑÔä�T˜5 *Ó-Ð-Ø	ˆS‚yä˜&°Ô5ˆØ�‰�cÔØ×Ñ˜dÔ#ÜÐ7¸¿¹Øóð ô ˜d D¨)Ó4Ð4Ø	ˆS‚y�B˜#’Iä% f¨d°IÓ>Ð>à€F„JÜ
Ð# V§]¡]°IÓ
>Ð>øð) %ˆDŒJÜ"& t§z¡z´GÑ';Ó"<ˆFÕús   ÁE Å*E5c                 ó®   — 	 | j                   }| j                  d«      }|r|dk(  rn|dk(  r| j                  d«      }Œ<|| _         | j                  d«       y)zParses a comment.TrD  rÕ   N)r2   rÛ   rO  )rÑ   rñ   r»   s      r=   rS  rS  ¡  sZ   € à
Ø—J‘Jˆ	Ø�J‰J�tÓˆá�A˜’HØà�Š9Ø—
‘
˜4Ó ˆAð ð €F„JØ
‡M�M�#Ôàr>   c                 ó  — |j                   }	 t        | |«      }| j                  d«       ||_         t        |j                   t        z  «      | _        t        |||«      S # ||_         t        |j                   t        z  «      | _        w xY w)zParses a lookaround.rD  )rŒ   rÓ   rO  r¡   r%   rP  Ú
LookAround)rÑ   r–   Úbehindr±   r_  r  s         r=   rL  rL  ²  su   € à—*‘*€Kð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔä�f˜h¨
Ó3Ð3øð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ŽA  Á *B
c                 ó:  — |j                   }| j                  }| j                  «       }|dk(  rw| j                  «       }|dv rt        | |d|dk(  «      S |dk(  r%| j                  «       }|dv rt        | |d|dk(  «      S || _        t	        d| j
                  | j                  «      ‚|| _        	 t        | d«      }| j                  d«       t        | |«      }| j                  d	«      rt        | |«      }n
t        «       }| j                  d«       ||_         t        |j                   t        z  «      | _        |j                  «       r|j                  «       r
t        «       S t        |||||«      S # ||_         t        |j                   t        z  «      | _        w xY w)
z Parses a conditional subpattern.rø   r@  FrA  r2  Tzexpected lookaround conditionalrD  rV   )rŒ   r2   rÛ   Úparse_lookaround_conditionalr&   r—   rM  rO  rÎ   rÏ   rï   r¡   r%   rP  rþ   ÚConditional)rÑ   r–   r_  rñ   rò   r^  Ú
yes_branchÚ	no_branchs           r=   rT  rT  ¾  sy  € à—*‘*€KØ—
‘
€IØ	�‰‹€BØ	ˆS‚yà�Z‰Z‹\ˆØ�Ñä/°¸¸eÀRÈ3ÁYÓOÐOØ�Š9à—‘“ˆBØ�ZÑä3°F¸DÀ$ÈØñIó ð ð ˆŒ
ÜÐ5°v·}±}Ø
�*‰*óð 	ð €F„Jð9Ü˜6 4Ó(ˆØ�‰�cÔÜ# F¨DÓ1ˆ
Ø�<‰<˜ÔÜ& v¨tÓ4‰Iä ›
ˆIà�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔà×ÑÔ ×!3Ñ!3Ô!5Ü‹zÐä�t˜U J°	¸9ÓEÐEøð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   Â-A"E0 Å0*Fc                 ó¨  — |j                   }	 t        | |«      }| j                  d«       ||_         t        |j                   t        z  «      | _        t        | |«      }| j                  d«      rt        | |«      }n
t        «       }| j                  d«       t        |||||«      S # ||_         t        |j                   t        z  «      | _        w xY w)NrD  rV   )
rŒ   rÓ   rO  r¡   r%   rP  rÎ   rÏ   rï   ÚLookAroundConditional)rÑ   r–   rj  r±   r_  r  rn  ro  s           r=   rl  rl  é  sµ   € Ø—*‘*€Kð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔä ¨Ó-€JØ‡|�|�CÔÜ" 6¨4Ó0‰	ä“Jˆ	à
‡M�M�#Ôä  ¨°:¸zØóð øð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ŽB' Â'*Cc                 ó  — |j                   }	 t        | |«      }| j                  d«       ||_         t        |j                   t        z  «      | _        t        |«      S # ||_         t        |j                   t        z  «      | _        w xY w)zParses an atomic subpattern.rD  )rŒ   rÓ   rO  r¡   r%   rP  ÚAtomic)rÑ   r–   r_  r  s       r=   rU  rU  ý  sq   € à—*‘*€Kð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔä�*ÓÐøð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ŽA Á*Bc                 ón  — |j                   }t        | |«      g}|j                   }| j                  d«      rJ||_         |j                  t        | |«      «       t	        ||j                   «      }| j                  d«      rŒJ||_         | j                  d«       t        |«      dk(  r|d   S t        |«      S )zParses a common groups branch.rV   rD  r-   r   )Úgroup_countrÎ   rÏ   rZ   r7  rO  r]   rÐ   )rÑ   r–   Úinitial_group_countrÒ   Úfinal_group_counts        r=   rV  rV  	  s«   € ð ×*Ñ*ÐÜ˜v tÓ,Ð-€HØ×(Ñ(ÐØ
�,‰,�sÔ
Ø.ˆÔØ�‰œ v¨tÓ4Ô5ÜÐ 1°4×3CÑ3CÓDÐð �,‰,�sÕ
ð
 )€DÔØ
‡M�M�#Ôä
ˆ8ƒ}˜ÒØ˜‰{ÐÜ�(ÓÐr>   c                 ó~   — |dk(  rd}n|| j                  t        «      z   }| j                  d«       t        |||«      S )zParses a call to a group.r   rF  rD  )r>  r%  rO  Ú	CallGroup)rÑ   r–   rò   r2   r^  s        r=   rW  rW    s>   € à	ˆS‚yØ‰à�V×%Ñ%¤fÓ-Ñ-ˆà
‡M�M�#Ôä�T˜5 #Ó&Ð&r>   c                 óT   — t        | «      }| j                  d«       t        |||«      S )zParses a call to a named group.rD  )rM  rO  ry  )rÑ   r–   r2   r^  s       r=   rX  rX  &  s'   € ä�vÓ€EØ
‡M�M�#Ôä�T˜5 #Ó&Ð&r>   c                 óº   — d}	 	 | j                   }| j                  «       }|dk(  r|| j                  «       z  }|t        |   z  }ŒA# t        $ r | _         Y |S w xY w)zParses a set of inline flags.r   ÚV)r2   rÛ   ÚREGEX_FLAGSr~   )rÑ   rŒ   rñ   rò   s       r=   Úparse_flag_setr~  -  sj   € à€EðØØŸ
™
ˆIØ—‘“ˆBØ�SŠyØ�f—j‘j“lÑ"�Ø”[ ‘_Ñ$ˆEð øô ò Øˆ�
à€Lðús   „AA ÁAÁAc                 óÂ   — t        | «      }| j                  d«      r.t        | «      }|s#t        d| j                  | j                  «      ‚d}|t
        z  rd|_        ||fS )z!Parses flags being turned on/off.ú-z$bad inline flags: no flags after '-'r   T)r~  rÏ   r&   r—   r2   r   Úinline_locale©rÑ   r–   Úflags_onÚ	flags_offs       r=   Úparse_flagsr…  =  sd   € ä˜fÓ%€HØ‡|�|�CÔÜ" 6Ó*ˆ	ÙÜÐ>ÀÇÁØ�j‰jóð ð ˆ	à”&Òà!ˆÔà�YÐÐr>   c                 óv  — |j                   }|j                   |z  | z  |_         t        |j                   t        z  «      | _        	 t	        | |«      }| j                  d«       ||_         t        |j                   t        z  «      | _        |S # ||_         t        |j                   t        z  «      | _        w xY w)z&Parses a subpattern with scoped flags.rD  )rŒ   r¡   r%   rP  rÓ   rO  )rÑ   r–   rƒ  r„  r_  r  s         r=   Úparse_subpatternr‡  N  s™   € à—*‘*€KØ—*‘*˜xÑ'¨I¨:Ñ5€D„JÜ˜tŸz™z¬GÑ3Ó4€FÔð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔàÐøð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ÁB Â*B8c                 ó  — t        | |«      \  }}|t        z  r!t        d| j                  | j                  «      ‚||z  r!t        d| j                  | j                  «      ‚||j
                   z  t        z  }|r*|xj
                  |z  c_        t        |j
                  «      ‚|t         z  }| j                  d«      rt        | |||«      S | j                  d«      rt        | |||«       yt        d| j                  | j                  «      ‚)zÆParses a flags subpattern. It could be inline flags or a subpattern
    possibly with local flags. If it's a subpattern, then that's returned;
    if it's a inline flags, then None is returned.
    z-bad inline flags: cannot turn off global flagz(bad inline flags: flag turned on and offr  rD  Nre  )
r…  ÚGLOBAL_FLAGSr&   r—   r2   Úglobal_flagsrE   rÏ   r‡  Úparse_positional_flags)rÑ   r–   rƒ  r„  Únew_global_flagss        r=   rY  rY  \  s  € ô
 & f¨dÓ3Ñ€Hˆià”<ÒÜÐCØ
�-‰-˜Ÿ™ó%ð 	%ð �)ÒÜÐ>ÀÇÁØ
�*‰*óð 	ð ! D×$5Ñ$5Ð#5Ñ5¼ÑEÐÙØ×ÒÐ-Ñ-Õô ˜t×0Ñ0Ó1Ð1ð ”�Ñ€Hà‡|�|�CÔÜ ¨¨h¸	ÓBÐBà‡|�|�CÔÜ˜v t¨X°yÔAØä
Ð# V§]¡]°F·J±JÓ
?Ð?r>   c                 óv   — |j                   |z  | z  |_         t        |j                   t        z  «      | _        y)zParses positional flags.N)rŒ   r¡   r%   rP  r‚  s       r=   r‹  r‹    s/   € à—*‘*˜xÑ'¨I¨:Ñ5€D„JÜ˜tŸz™z¬GÑ3Ó4€FÕr>   c                 óx  — | j                  t        d«      d¬«      }|s!t        d| j                  | j                  «      ‚|j                  «       r9|rdnd}|rt        |«      |k  r!t        d| j                  | j                  «      ‚|S |j                  «       s!t        d| j                  | j                  «      ‚|S )zParses a name.rI  FrJ  zmissing group namer   r-   zbad character in group name)r>  r®   r&   r—   r2   Úisdigitr  Úisidentifier)rÑ   rc  Úallow_group_0rÄ   Ú	min_groups        r=   rM  rM  „  s¬   € à×ÑœC ›I¨uÐÓ5€DáÜÐ(¨&¯-©-¸¿¹ÓDÐDà‡|�|„~Ù&‘A¨Aˆ	Ù¤ D£	¨IÒ 5ÜÐ5°v·}±}Ø�j‰jóð ð €Kð	 × Ñ Ô"ÜÐ5°v·}±}Ø�j‰jóð ð €Kr>   c                 ó&   — t        d„ | D «       «      S )z!Checks whether a string is octal.c              3   ó,   K  — | ]  }|t         v –— Œ y ­w©N)Ú
OCT_DIGITS©Ú.0rò   s     r=   ú	<genexpr>zis_octal.<locals>.<genexpr>™  ó   è ø€ Ò1 Bˆr”ZÔÑ1ùó   ‚©Úall©r—   s    r=   Úis_octalrŸ  —  ó   € äÑ1¨&Ô1Ó1Ð1r>   c                 ó&   — t        d„ | D «       «      S )z#Checks whether a string is decimal.c              3   ó,   K  — | ]  }|t         v –— Œ y ­wr•  )r%  r—  s     r=   r™  zis_decimal.<locals>.<genexpr>�  s   è ø€ Ò- ˆr”VŒ|Ñ-ùr›  rœ  rž  s    r=   Ú
is_decimalr£  ›  s   € äÑ- fÔ-Ó-Ð-r>   c                 ó&   — t        d„ | D «       «      S )z'Checks whether a string is hexadecimal.c              3   ó,   K  — | ]  }|t         v –— Œ y ­wr•  )Ú
HEX_DIGITSr—  s     r=   r™  z!is_hexadecimal.<locals>.<genexpr>¡  rš  r›  rœ  rž  s    r=   Úis_hexadecimalr§  Ÿ  r   r>   c                 óÚ  — | j                   }d| _         | j                  «       }|| _         |s!t        d| j                  | j                  «      ‚|t
        v rt        | ||t
        |   ||«      S |dk(  r|s| j                  }	 t        | |«      S |dk(  r|s
t        «       S |dk(  r|st        | |«      S |dk(  rt        | ||«      S |dv rt        | ||dk(  |«      S |d	k(  rn|slg d
¢}|j                  t        k(  r|j!                  g d¢«       t#        t%        t'        ddg«      t)        ||D �cg c]  }t+        |«      ‘Œ c}«      g«      «      S |dk(  r|s
t-        «       S |t.        v r¬|sB|j0                  t2        z  rt4        j                  |«      }nt6        j                  |«      }|r|S t8        j                  |«      }|r|S t:        j                  |«      }|rt+        t        |«      «      S t        d|z  | j                  | j                  «      ‚|t<        v rt?        | |||«      S t        |t        |«      |«      S # t        $ r
 || _        Y nw xY wt        |t        |«      |«      S c c}w )zParses an escape sequence.Fúbad escape (end of pattern)ÚgÚGr   ÚNÚpPrp   r   )é
   é   é   é   )é…   i(   i)   r±  r®  r$   úbad escape \%s) rP  rÛ   r&   r—   r2   ÚHEX_ESCAPESÚparse_hex_escapeÚparse_group_refrÁ   rî   ÚSearchAnchorÚparse_string_setÚparse_named_charÚparse_propertyr“   r   r¸   rs  rÐ   ÚStringr´   r°   ÚGraphemer!  rŒ   r#   ÚWORD_POSITION_ESCAPESÚPOSITION_ESCAPESÚCHARSET_ESCAPESÚCHARACTER_ESCAPESr%  Úparse_numeric_escape)	rÑ   r–   r­   Úsaved_ignorerò   rñ   Úcharsetr»   r^   s	            r=   rÝ   rÝ   £  s`  € à×&Ñ&€LØ€FÔØ	�‰‹€BØ&€FÔÙäÐ1°6·=±=À&Ç*Á*ÓMÐMØ	Œ[Ñä ¨¨b´+¸b±/À6È2ÓNÐNØ	ˆsŠ™6à—J‘Jˆ	ð	#Ü" 6¨4Ó0Ð0ð 
ˆsŠ™6ä‹~ÐØ	ˆsŠ™6ä ¨Ó-Ð-Ø	ˆsŠä ¨¨fÓ5Ð5Ø	ˆt‰ä˜f d¨B°#©I°vÓ>Ð>Ø	ˆsŠ™6â*ˆØ×Ñ¤'Ò)Ø�N‰NÒ1Ô2ä”fœf d¨D \Ó2´H¸TØöDØô ENÈaÅLò Dó 5ð ó ó  ð 	 à	ˆsŠ™6ä‹zÐØ	Œu‰ñ Ø�z‰zœDÒ Ü-×1Ñ1°"Ó5‘ä(×,Ñ,¨RÓ0�áØ�ä×#Ñ# BÓ'ˆÙØˆLä!×%Ñ% bÓ)ˆÙÜœS ›ZÓ(Ð(äÐ%¨Ñ*¨F¯M©M¸6¿:¹:ÓFÐFØ	Œv‰ä# F¨D°"°fÓ=Ð=ô ˜d¤C¨£G¨VÓ4Ð4øôm ò 	#à"ˆFŽJð	#úô ˜d¤C¨£G¨VÓ4Ð4ùò&Ds   ÂH< Ä)I(È<IÉIc                 ó  — |s|dk(  rt        | ||g|«      S |}| j                  }| j                  «       }|t        v r|||z  }| j                  }| j                  «       }t	        |«      rP|t
        v rH|j                  t        z  }|t        k(  s	|t        k(  rd}nd}t        ||z   d«      |z  }t        ||«      S || _        |j                  |«      r!t        d| j                  | j                  «      ‚t        ||| j                  «      S )z!Parses a numeric escape sequence.rF  éÿ   éÿ  rP   rd  )Úparse_octal_escaper2   rÛ   r%  rŸ  r–  rŒ   r’   r   r   r  rÁ   rf  r&   r—   rÆ   )	rÑ   r–   rò   r­   r.  rñ   ÚencodingÚ
octal_maskr^   s	            r=   rÁ  rÁ  ì  s÷   € á��s’ä! &¨$°°°fÓ=Ð=ð €FØ—
‘
€IØ	�‰‹€BØ	ŒV�|à�"‰ˆØ—J‘Jˆ	Ø�Z‰Z‹\ˆÜ�FÔ ¤jÑ 0à—z‘z¤NÑ2ˆHØœ5Ò  H´Ò$6Ø!‘
à"�
ä˜ ™ QÓ'¨*Ñ4ˆEÜ! $¨Ó.Ð.ð €F„JØ×Ñ˜&Ô!ÜÐ3°V·]±]ÀFÇJÁJÓOÐOä˜$ ¨¯
©
Ó3Ð3r>   c                 ó2  — | j                   }| j                  «       }t        |«      dk  rL|t        v rD|j	                  |«       | j                   }| j                  «       }t        |«      dk  r	|t        v rŒD|| _         	 t        dj                  |«      d«      }t        |||«      S # t        $ rf |d   t        v r3t        ddj                  |«      z  | j                  | j                   «      ‚t        d|d   z  | j                  | j                   «      ‚w xY w)z Parses an octal escape sequence.é   rf   rP   r   zincomplete escape \%sr³  )r2   rÛ   r]   r–  rZ   r  r\   rÁ   r-  r&   r—   )rÑ   r–   r.  r­   rñ   rò   r^   s          r=   rÇ  rÇ    sú   € à—
‘
€IØ	�‰‹€BÜ
ˆf‹+˜Š/˜b¤JÑ.Ø�‰�bÔØ—J‘Jˆ	Ø�Z‰Z‹\ˆô ˆf‹+˜Š/˜b¤JÒ.ð
 €F„Jð	Ü�B—G‘G˜F“O QÓ'ˆÜ˜d E¨6Ó2Ð2øÜò Ø�!‰9œ
Ñ"ÜÐ0°2·7±7¸6³?ÑBØ�m‰m˜VŸZ™Zó)ð )ô Ð)¨F°1©IÑ5°v·}±}Ø�j‰jóð ðús   Á?'B' Â'A/Dc                 ó¶  — | j                   }g }t        |«      D ]V  }| j                  «       }	|	t        vr+t	        d|›dj                  |«      ›�| j                  |«      ‚|j                  |	«       ŒX 	 t        dj                  |«      d«      }
|
dk  rt        ||
|«      S t	        d|›dj                  |«      ›�| j                  |«      ‚# t        $ r Y Œ6w xY w)zParses a hex escape sequence.úincomplete escape \rf   rQ   i   zbad hex escape \)r2   ÚrangerÛ   r¦  r&   r\   r—   rZ   r  rÁ   r-  )rÑ   r–   ÚescÚexpected_lenr­   Útyperñ   r.  ro   rò   r^   s              r=   rµ  rµ  "  sÕ   € à—
‘
€IØ€FÜ�<Ó ò ˆØ�Z‰Z‹\ˆØ”ZÑÝ±d¸B¿G¹GÀF¼OÐLØ�m‰m˜Yó(ð (à�‰�bÕðð7Ü�B—G‘G˜F“O RÓ(ˆð �8ÒÜ! $¨¨vÓ6Ð6õ ©3°·±¸´Ð@Ø‡m�m�Yó ð  øô ò Ùðús   Á4C Ã	CÃCc                 óô   — | j                  d«       | j                  }t        | d«      }| j                  d«       |j                  |«      r!t	        d| j
                  | j                  «      ‚t        |||«      S )zParses a group reference.r2  TrC  rd  )rO  r2   rM  rf  r&   r—   rÆ   )rÑ   r–   rñ   rÄ   s       r=   r¶  r¶  9  sd   € à
‡M�M�#ÔØ—
‘
€IÜ�f˜dÓ#€DØ
‡M�M�#ÔØ×Ñ˜$ÔÜÐ3°V·]±]ÀFÇJÁJÓOÐOä˜$  iÓ0Ð0r>   c                 óØ   — | j                  d«       t        | d«      }| j                  d«       |�||j                  vr!t        d| j                  | j
                  «      ‚t        ||«      S )zParses a string set reference.r2  TrC  zundefined named list)rO  rM  Úkwargsr&   r—   r2   rÉ   )rÑ   r–   rÄ   s      r=   r¸  r¸  D  s[   € à
‡M�M�#ÔÜ�f˜dÓ#€DØ
‡M�M�#ÔØ€|�t 4§;¡;Ñ.ÜÐ*¨F¯M©M¸6¿:¹:ÓFÐFä˜4 Ó&Ð&r>   c                 óz  — | j                   }| j                  d«      rT| j                  t        d¬«      }| j                  d«      r,	 t	        j
                  |«      }t        |t        |«      |«      S || _         t        |t        d«      |«      S # t        $ r" t        d| j                  | j                   «      ‚w xY w)zParses a named character.r
  T)Úkeep_spacesr  úundefined character namer¬  )r2   rÏ   r>  ÚNAMED_CHAR_PARTÚunicodedataÚlookuprÁ   rî   r~   r&   r—   )rÑ   r–   r­   rñ   rÄ   r^   s         r=   r¹  r¹  N  sª   € à—
‘
€IØ‡|�|�CÔØ×Ñ¤¸TÐÓBˆØ�<‰<˜ÔðÜ#×*Ñ*¨4Ó0�Ü% d¬C°«J¸Ó?Ð?ð
 €F„JÜ˜$¤ C£¨&Ó1Ð1øô ò ÜÐ6¸¿¹Ø—*‘*óð ðús   Á*B Â+B:c                 óh  — | j                   }| j                  «       }|dk(  rN| j                  d«      }t        | «      \  }}| j                  d«      r?t	        ||||k7  | «      }	t        ||	|«      S |r|dv rt	        d||| «      }	t        ||	|«      S || _         |rdnd}t        |t        |«      |«      S )zParses a Unicode property.r
  rÙ   r  ÚCLMNPSZNrp   r   )r2   rÛ   rÏ   Úparse_property_nameÚlookup_propertyrÌ   rÁ   rî   )
rÑ   r–   r±   r­   rñ   rò   ÚnegateÚ	prop_namerÄ   rË   s
             r=   rº  rº  ^  s¶   € à—
‘
€IØ	�‰‹€BØ	ˆS‚yØ—‘˜cÓ"ˆÜ-¨fÓ5‰ˆ	�4Ø�<‰<˜Ôä" 9¨d°HÀÑ4FÈÓOˆDÜ   t¨VÓ4Ð4Ù	��i‘ä˜t R¨°6Ó:ˆÜ˜T 4¨Ó0Ð0ð €F„JÙ‰˜c€BÜ˜$¤ B£¨Ó0Ð0r>   c                 ó  — | j                  t        «      }| j                  }| j                  «       }|rI|dv rE|}| j                  t        t        d«      z  «      j                  «       }|r| j                  }nd|}}nd}|| _        ||fS )z/Parses a property name, which may be qualified.z:=z &_-./N)r>  ÚPROPERTY_NAME_PARTr2   rÛ   ÚALNUMr®   Ústrip)rÑ   rÄ   rñ   rò   rà  s        r=   rÝ  rÝ  s  s„   € à×ÑÔ.Ó/€DØ—
‘
€Ià	�‰‹€BÙ	ˆb�D‰jØˆ	Ø×Ñ¤¬¨H«Ñ 5Ó6×<Ñ<Ó>ˆáàŸ
™
‰Ið # I�t‰Iàˆ	à€F„JØ�dˆ?Ðr>   c                 óÊ  — |j                   t        z  xs t        }| j                  }d| _        | j	                  d«      }	 |t
        k(  rt        | |«      }nt        | |«      }| j	                  d«      s!t        d| j                  | j                  «      ‚	 || _        |r|j                  |j                   ¬«      }|j                  t        |«      ¬«      }|S # || _        w xY w)zParses a character set.FrÙ   ú]ú	missing ]©r±   r¨   )rŒ   Ú_ALL_VERSIONSÚDEFAULT_VERSIONrP  rÏ   r   Úparse_set_imp_unionÚparse_set_unionr&   r—   r2   r³   r±   r¿   )rÑ   r–   ÚversionrÂ  rß  rö   s         r=   râ   râ   ‰  sÍ   € à�z‰zœMÑ)Ò=¬o€Gà×&Ñ&€LØ€FÔà�\‰\˜#Ó€Fð	+Ø”hÒÜ& v¨tÓ4‰Dä" 6¨4Ó0ˆDà�|‰|˜CÔ Ü˜ V§]¡]°F·J±JÓ?Ð?ð !ð +ˆÔáØ�‰¨D¯M©MÐ(9ˆÓ:ˆà�?‰?¤o°dÓ&;ˆ?Ó<€Dà€Køð +ˆÕús   ÁAC Ã	C"c                 óÖ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        ||«      S )zParses a set union ([x||y]).rg   r-   r   )Úparse_set_symm_diffrÏ   rZ   r]   r´   ©rÑ   r–   Úitemss      r=   rì  rì  £  sb   € ä  ¨Ó.Ð/€EØ
�,‰,�tÔ
Ø�‰Ô(¨°Ó6Ô7ð �,‰,�tÕ
ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�D˜%Ó Ð r>   c                 óÖ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        ||«      S )z+Parses a set symmetric difference ([x~~y]).rh   r-   r   )Úparse_set_interrÏ   rZ   r]   Ú
SetSymDiffrð  s      r=   rï  rï  ­  sa   € ä˜V TÓ*Ð+€EØ
�,‰,�tÔ
Ø�‰”_ V¨TÓ2Ô3ð �,‰,�tÕ
ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�d˜EÓ"Ð"r>   c                 óÖ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        ||«      S )z#Parses a set intersection ([x&&y]).ri   r-   r   )Úparse_set_diffrÏ   rZ   r]   ÚSetInterrð  s      r=   ró  ró  ·  sa   € ä˜F DÓ)Ð*€EØ
�,‰,�tÔ
Ø�‰”^ F¨DÓ1Ô2ð �,‰,�tÕ
ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�D˜%Ó Ð r>   c                 óÖ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        ||«      S )z!Parses a set difference ([x--y]).rj   r-   r   )rë  rÏ   rZ   r]   ÚSetDiffrð  s      r=   rö  rö  Á  sb   € ä  ¨Ó.Ð/€EØ
�,‰,�tÔ
Ø�‰Ô(¨°Ó6Ô7ð �,‰,�tÕ
ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�4˜ÓÐr>   c                 óh  ‡ — |j                   t        z  xs t        }t        ‰ |«      g}	 ‰ j                  }‰ j                  d«      r|‰ _        nE|t        k(  r t        ˆ fd„t        D «       «      r|‰ _        n|j                  t        ‰ |«      «       Œjt        |«      dk(  r|d   S t        ||«      S )z#Parses a set implicit union ([xy]).ræ  c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr•  r3  )r˜  ÚoprÑ   s     €r=   r™  z&parse_set_imp_union.<locals>.<genexpr>×  s   øè ø€ Ò&J¸B v§|¡|°B×'7Ñ&Jùó   ƒr-   r   )rŒ   ré  rê  Úparse_set_memberr2   rÏ   r!   ÚanyÚSET_OPSrZ   r]   r´   )rÑ   r–   rí  rñ  rñ   s   `    r=   rë  rë  Ë  s¢   ø€ à�z‰zœMÑ)Ò=¬o€Gä˜f dÓ+Ð,€EØ
Ø—J‘Jˆ	Ø�<‰<˜Ôà"ˆFŒJØà”hÒ¤3Ó&JÄ'Ô&JÔ#Jà"ˆFŒJØà�‰Ô% f¨dÓ3Ô4ð ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�D˜%Ó Ð r>   c           	      ó  — t        | |«      }| j                  }t        |t        «      r|j                  r| j                  d«      s|S |j                  t        z  xs t        }| j                  }|t        k(  r| j                  d«      r	|| _        |S | j                  d«      r'|| _        t        ||t        t        d«      «      g«      S t        | |«      }t        |t        «      r|j                  s!t        ||t        t        d«      «      |g«      S |j                  |j                  kD  r!t        d| j                  | j                  «      ‚|j                  |j                  k(  r|S t        |j                  |j                  «      S )z#Parses a member in a character set.r€  ræ  zbad character range)Úparse_set_itemr2   r.   r°   r±   rÏ   rŒ   ré  rê  r!   r´   rî   r^   r&   r—   ÚRange)rÑ   r–   ÚstartÚ
saved_pos1rí  Ú
saved_pos2Úends          r=   rþ  rþ  â  s8  € ô ˜6 4Ó(€EØ—‘€JÜ�uœiÔ(°·²Ø‡l�l�3Ôàˆà�z‰zœMÑ)Ò=¬o€Gð —‘€JØ”(Ò˜vŸ|™|¨CÔ0ð  ˆŒ
Øˆà‡|�|�CÔð  ˆŒ
Ü˜˜u¤i´°C³Ó&9Ð:Ó;Ð;ô ˜ Ó
&€CÜ�cœ9Ô%¨S¯\ª\ä˜˜u¤i´°C³Ó&9¸3Ð?Ó@Ð@ð ‡{�{�S—Y‘YÒÜÐ)¨6¯=©=¸&¿*¹*ÓEÐEà‡{�{�c—i‘iÒØˆä�—‘˜cŸi™iÓ(Ð(r>   c                 ó–  — |j                   t        z  xs t        }| j                  d«      rt	        | |d«      S | j
                  }| j                  d«      r	 t        | |«      S |t        k(  r�| j                  d«      rp| j                  d«      }t        | |«      }| j                  d«      s!t        d| j                  | j
                  «      ‚|r|j                  |j                   ¬«      }|S | j                  «       }|s!t        d	| j                  | j
                  «      ‚t        t!        |«      «      S # t        $ r
 || _        Y Œãw xY w)
z"Parses an item in a character set.rÕ   Tz[:rØ   rÙ   ræ  rç  rè  zunterminated character set)rŒ   ré  rê  rÏ   rÝ   r2   Úparse_posix_classrI   r!   rì  r&   r—   r³   r±   rÛ   r°   rî   )rÑ   r–   rí  rñ   rß  rö   rò   s          r=   r  r    s  € à�z‰zœMÑ)Ò=¬o€Gà‡|�|�DÔä˜F D¨$Ó/Ð/à—
‘
€IØ‡|�|�DÔð	#Ü$ V¨TÓ2Ð2ð
 ”(Ò˜vŸ|™|¨CÔ0ð —‘˜cÓ"ˆÜ˜v tÓ,ˆà�|‰|˜CÔ Ü˜ V§]¡]°F·J±JÓ?Ð?áØ—?‘?°·±Ð,=�?Ó>ˆDàˆà	�‰‹€BÙÜÐ0°&·-±-ÀÇÁÓLÐLä”S˜“WÓÐøô/ ò 	#à"ˆFŽJð	#ús   ÁD5 Ä5EÅEc                 ó˜   — | j                  d«      }t        | «      \  }}| j                  d«      s
t        «       ‚t        ||| | d¬«      S )zParses a POSIX character class.rÙ   z:]T)Úposix)rÏ   rÝ  rI   rÞ  )rÑ   r–   rß  rà  rÄ   s        r=   r	  r	  1  sG   € à�\‰\˜#Ó€FÜ)¨&Ó1�O€IˆtØ�<‰<˜ÔÜ‹lÐä˜9 d°¨J¸ÀdÔKÐKr>   c                 ó|   — t        | «      }| |z
  }t        |«      dk  r|dfS t        d|z  «      \  }}||z  |z   |fS )z$Converts a float to a rational pair.g-Cëâ6?r-   g      ð?)r  ÚabsÚfloat_to_rational)ÚfltÚint_partr&   ÚdenÚnums        r=   r  r  :  sP   € ä�3‹x€HØ�(‰N€EÜ
ˆ5ƒz�FÒØ˜ˆ{Ðä   u¡Ó-�H€Cˆà�c‰>˜CÑ Ð$Ð$r>   c                 óz  — | dd dk(  r| d   | dd } }nd}| j                  d«      }t        |«      dk(  r*t        t        |d   «      t        |d   «      z  «      \  }}n3t        |«      dk(  rt        t        |d   «      «      \  }}n
t	        «       ‚dj                  |||«      }|j                  d	«      r|dd
 S |S )z<Converts a numeric string to a rational string, if possible.Nr-   r€  r   rf   ú/rN   z{}{}/{}z/1éþÿÿÿ)Úsplitr]   r  Úfloatr-  r7   Úendswith)ÚnumericÚsignÚpartsr  r  Úresults         r=   Únumeric_to_rationalr  E  s¾   € à��!€}˜ÒØ ™
 G¨A¨C Mˆg‰àˆà�M‰M˜#Ó€EÜ
ˆ5ƒz�Q‚Ü$¤U¨5°©8£_´u¸UÀ1¹X³Ñ%FÓG‰ˆ‰SÜ	ˆU‹�qŠÜ$¤U¨5°©8£_Ó5‰ˆ‰Sä‹lÐà×Ñ˜d C¨Ó-€FØ‡��tÔØ�t˜ˆ}Ðà€Mr>   c                 ó®   — 	 t        dj                  | «      «      S # t        t        f$ r) dj                  d„ | D «       «      j	                  «       cY S w xY w)z&Standardises a property or value name.rf   c              3   ó*   K  — | ]  }|d vsŒ|–— Œ y­w)z_- NrC   r—  s     r=   r™  z#standardise_name.<locals>.<genexpr>_  s   è ø€ Ò<˜b¨B°eªO”rÑ<ùs   ‚	Œ)r  r\   r-  ÚZeroDivisionErrorÚupper)rÄ   s    r=   Ústandardise_namer"  Z  sP   € ðEÜ" 2§7¡7¨4£=Ó1Ð1øÜÔ)Ð*ò EØ�w‰wÑ< DÔ<Ó<×BÑBÓDÒDðEús   ‚ œ5AÁAzALNUM DIGIT PUNCT XDIGITzYES Y NO N TRUE T FALSE Fc                 óž  — | rt        | «      nd} t        |«      }| |fdk(  rdd| }}} |r| s|j                  «       t        v rd|z   }| r�t        j	                  | «      }|s.|st        d«      ‚t        d|j                  |j                  «      ‚|\  }}|j	                  |«      }|€.|st        d«      ‚t        d|j                  |j                  «      ‚t        |dz  |z  |«      S d	D ]A  } t        j	                  | «      \  }}|j	                  |«      }|€Œ/t        |dz  |z  |«      c S  t        j	                  |«      }|r9|\  }}t        |«      t        k(  rt        |dz  d
z  |«      S t        |dz  | «      S |j                  d«      r5t        j	                  |dd «      }|r|\  }}d|v rt        |dz  d
z  |«      S dD ]Y  \  }	} |j                  |	«      sŒt        j	                  | «      \  }}|j	                  |dd «      }|€ŒGt        |dz  |z  |«      c S  |st        d«      ‚t        d|j                  |j                  «      ‚)zLooks up a property.N)ÚGENERALCATEGORYÚASSIGNEDr$  Ú
UNASSIGNEDr   zunknown propertyzunknown property valuerQ   )ÚGCÚSCRIPTÚBLOCKr-   ÚISrN   ÚYES))r*  r(  )ÚINr)  )r"  r!  Ú_POSIX_CLASSESÚ
PROPERTIESrÛ   r&   r—   r2   ÚPropertyr®   Ú_BINARY_VALUESÚ
startswith)
Úpropertyr^   r±   rÑ   r  rË   Úprop_idÚ
value_dictÚval_idÚprefixs
             r=   rÞ  rÞ  e  sn  € ñ .6Ô Ô)¸4€HÜ˜UÓ#€Eà�%ÐÐ;Ò;Ø$5°|ÈÀ\˜�%ˆá‘X %§+¡+£-´>Ñ"AØ˜%‘ˆáä�~‰~˜hÓ'ˆÙÙÜÐ.Ó/Ð/äÐ*¨F¯M©M¸6¿:¹:ÓFÐFà"Ñˆ�Ø—‘ Ó&ˆØˆ>ÙÜÐ4Ó5Ð5äÐ0°&·-±-ÀÇÁÓLÐLä˜ B™¨&Ñ0°(Ó;Ð;ð .ò @ˆÜ(Ÿn™n¨XÓ6Ñˆ�Ø—‘ Ó&ˆØÑÜ˜W¨™]¨fÑ4°hÓ?Ò?ð	@ô �>‰>˜%Ó €DÙØ"Ñˆ�Üˆz‹?œnÒ,Ü˜W¨™]¨aÑ/°Ó:Ð:ä˜ 2™¨8 |Ó4Ð4ð ×Ñ˜ÔÜ�~‰~˜e A C˜kÓ*ˆÙØ"&ÑˆG�ZØ˜
Ñ"Ü ¨B¡°!Ñ 3°XÓ>Ð>ð @ò DÑˆ�Ø×Ñ˜FÕ#Ü",§.¡.°Ó":ÑˆG�ZØ—^‘^ E¨!¨# KÓ0ˆFØÑ!Ü ¨B¡°&Ñ 8¸(ÓCÒCðDñ ÜÐ&Ó'Ð'ä
Ð" F§M¡M°6·:±:Ó
>Ð>r>   c                 ó$  — | j                  «       }|t        v rœt        j                  |«      }|rdt        |«      gfS |t        v r|dk(  s|rdt        | t        |   |«      gfS |dk(  rdt        | |«      gfS |dk(  r|rt        | «      }|�d|gfS t        d|z  | j                  | j                  «      ‚t        | j                  t        «      rd}nd}|d	k(  rb|}t        |«      d
k  r@| j                  }| j                  «       }|t        vr|| _
        n||z  }t        |«      d
k  rŒ@dt!        |d«      |z  gfS |t"        v r�|}| j                  }| j                  «       }|t"        v rF||z  }| j                  }| j                  «       }|r#t%        ||z   «      rdt!        ||z   d«      |z  gfS || _
        dt!        |«      gfS |dk(  rdt        d«      gfS |s!t        d| j                  | j                  «      ‚dt        d«      t        |«      gfS )z0Compiles a replacement template escape sequence.Fru   rª  Tr¬  r³  rÅ  rÆ  rF  rË  rP   rÕ   r©  )rÛ   r!  rÀ  rî   r´  Úparse_repl_hex_escapeÚcompile_repl_groupÚparse_repl_named_charr&   r—   r2   r.   ÚsepÚbytesr]   r–  r  r%  rŸ  )rÑ   r1   Ú
is_unicoderò   r^   rÉ  r.  rñ   s           r=   Ú_compile_replacementr>  «  s"  € à	�‰‹€BØ	ŒU�{ä!×%Ñ% bÓ)ˆÙØœ3˜u›:˜,Ð&Ð&à”Ñ "¨¢)©zàÔ0°¼ÀR¹È"ÓMÐNÐNÐNà�Š9àÔ,¨V°WÓ=Ð>Ð>Ð>à�Š9™ä)¨&Ó1ˆEØÐ Ø˜u˜g�~Ð%äÐ%¨Ñ*¨F¯M©M¸6¿:¹:ÓFÐFä�&—*‘*œeÔ$Ø‰
àˆ
à	ˆS‚yàˆÜ�&‹k˜AŠoØŸ
™
ˆIØ—‘“ˆBØœÑ#Ø&�”
ØØ�b‰LˆFô �&‹k˜A‹oð ”s˜6 1“~¨
Ñ2Ð3Ð3Ð3à	ŒV�|ð ˆØ—J‘Jˆ	Ø�Z‰Z‹\ˆØ”‰<Ø�b‰LˆFØŸ
™
ˆIØ—‘“ˆBÙ”h˜v¨™{Ô+àœs 6¨B¡;°Ó2°ZÑ?Ð@Ð@Ð@ð ˆŒ
Ø”c˜&“k�]Ð"Ð"à	ˆT‚zà”s˜4“y�kÐ!Ð!áäÐ1°6·=±=À&Ç*Á*ÓMÐMð ”3�t“9œc "›gÐ&Ð&Ð&r>   c                 ó  — g }t        |«      D ]`  }| j                  «       }|t        vr5t        d|›dj	                  |«      ›�| j
                  | j                  «      ‚|j                  |«       Œb t        dj	                  |«      d«      S )z5Parses a hex escape sequence in a replacement string.rÍ  rf   rQ   )	rÎ  rÛ   r¦  r&   r\   r—   r2   rZ   r  )rÑ   rÐ  rÑ  r.  ro   rò   s         r=   r8  r8  ó  sz   € à€FÜ�<Ó ò ˆØ�Z‰Z‹\ˆØ”ZÑÝ±d¸B¿G¹GÀF¼OÐLØ�m‰m˜VŸZ™Zó)ð )à�‰�bÕðô ˆr�w‰w�v‹ Ó#Ð#r>   c                 óN  — | j                   }| j                  d«      rS| j                  t        t	        d«      z  «      }| j                  d«      r!	 t        j                  |«      }t        |«      S || _         y# t        $ r" t        d| j                  | j                   «      ‚w xY w)z1Parses a named character in a replacement string.r
  ú r  r×  N)r2   rÏ   r>  r!  r®   rÙ  rÚ  rî   r~   r&   r—   )rÑ   rñ   rÄ   r^   s       r=   r:  r:  ÿ  s•   € à—
‘
€IØ‡|�|�CÔØ×Ñ¤¬¨C«Ñ 0Ó1ˆà�<‰<˜ÔðÜ#×*Ñ*¨4Ó0�Ü˜5“zÐ!ð
 €F„JØøô ò ÜÐ6¸¿¹Ø—*‘*óð ðús   ÁA9 Á9+B$c                 óZ  — | j                  d«       t        | dd«      }| j                  d«       |j                  «       rEt        |«      }d|cxk  r|j                  k  s#n t        d| j                  | j                  «      ‚|S 	 |j                  |   S # t        $ r t        d«      ‚w xY w)z0Compiles a replacement template group reference.r2  TrC  r   úinvalid group referenceúunknown group)rO  rM  r�  r  Úgroupsr&   r—   r2   Ú
groupindexr~   Ú
IndexError)rÑ   r1   rÄ   Úindexs       r=   r9  r9    s˜   € à
‡M�M�#ÔÜ�f˜d DÓ)€Dà
‡M�M�#ÔØ‡|�|„~Ü�D“	ˆØ�EÔ+˜WŸ^™^Ô+ÜÐ1°6·=±=À&Ç*Á*ÓMÐMàˆð*Ø×!Ñ! $Ñ'Ð'øÜò *Ü˜Ó)Ð)ð*ús   ÂB ÂB*z  rQ   z	NON-MATCHÚMATCH©FTz SIMPLE_IGNORE_CASEz FULL_IGNORE_CASEc                 ó>   — t        | «      dk(  r| d   S t        | «      S ©Nr-   r   )r]   rï   )rñ  s    r=   Úmake_sequencerM  0  s    € Ü
ˆ5ƒz�Q‚Ø�Q‰xˆÜ�E‹?Ðr>   c                   óv   — e Zd 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d„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	RegexBasec                 ó&   — | j                   | _        y r•  )rY   Ú_key©r:   s    r=   r9   zRegexBase.__init__7  s   € Ø—N‘Nˆ�	r>   Nc                 ó,  — |€| j                   }nt        |«      }|€| j                  }nt        |t        z     }|€| j
                  }nt        |«      }|| j                   k(  r || j                  k(  r|| j
                  k(  r| S | j                  |||«      S r•  )r±   r¡   r©   ÚCASE_FLAGS_COMBINATIONSr¾   r«   Úrebuild©r:   r±   r©   r«   s       r=   r³   zRegexBase.with_flags:  s‹   € ØÐØ—}‘}‰Hä˜H“~ˆHØÐØŸ™‰Jä0°¼jÑ1HÑIˆJØÐØŸ™‰Iä˜Y›ˆIà˜Ÿ™Ò%¨*¸¿¹Ò*GØ
�t—~‘~Ò
%ØˆKà�|‰|˜H j°)Ó<Ð<r>   c                  ó   — y r•  rC   ©r:   r1   r¥   Úfuzzys       r=   Ú
fix_groupszRegexBase.fix_groupsN  s   € Ør>   c                 ó   — | S r•  rC   ©r:   r–   r¥   s      r=   r¶   zRegexBase.optimiseQ  ó   € Øˆr>   c                 ó   — | S r•  rC   ©r:   r–   s     r=   Úpack_characterszRegexBase.pack_charactersT  r]  r>   c                 ó   — | S r•  rC   rR  s    r=   Úremove_captureszRegexBase.remove_capturesW  r]  r>   c                  ó   — y©NTrC   rR  s    r=   Ú	is_atomiczRegexBase.is_atomicZ  ó   € Ør>   c                  ó   — yrd  rC   rR  s    r=   Úcan_be_affixzRegexBase.can_be_affix]  rf  r>   c                  ó   — y©NFrC   rR  s    r=   Úcontains_groupzRegexBase.contains_group`  ó   € Ør>   c                 ó   — t        «       ‚r•  )rK   ©r:   r¥   s     r=   Úget_firstsetzRegexBase.get_firstsetc  s   € ÜÓÐr>   c                  ó   — yrj  rC   rR  s    r=   Úhas_simple_startzRegexBase.has_simple_startf  rl  r>   c                 ó&   — | j                  ||«      S r•  )Ú_compile©r:   r¥   rY  s      r=   r£   zRegexBase.compilei  s   € Ø�}‰}˜W eÓ,Ð,r>   c                  ó   — yrj  rC   rR  s    r=   rþ   zRegexBase.is_emptyl  rl  r>   c                 ó,   — t        | j                  «      S r•  )ÚhashrQ  rR  s    r=   Ú__hash__zRegexBase.__hash__o  s   € Ü�D—I‘I‹Ðr>   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S r•  )rÑ  rQ  ©r:   Úothers     r=   Ú__eq__zRegexBase.__eq__r  s'   € Ü�D‹zœT %›[Ð(ÒD¨T¯Y©Y¸%¿*¹*Ñ-DÐDr>   c                 ó&   — | j                  |«       S r•  )r|  rz  s     r=   Ú__ne__zRegexBase.__ne__u  s   € Ø—;‘;˜uÓ%Ð%Ð%r>   c                 ó&   — | j                  «       d fS r•  ©Ú	max_widthrn  s     r=   Úget_required_stringzRegexBase.get_required_stringx  ó   € Ø�~‰~Ó Ð%Ð%r>   )NNN©FF)r?   r@   rA   r9   r³   rZ  r¶   r`  rb  re  rh  rk  ro  rq  r£   rþ   rx  r|  r~  r‚  rC   r>   r=   rO  rO  6  sX   „ ò#ó=ò(òòòòòòòòó-òòòEò&ó&r>   rO  c                   ó,   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zy)ÚZeroWidthBasec                 óˆ   — t         j                  | «       t        |«      | _        | j                  | j                  f| _        y r•  )rO  r9   r¡   r±   rY   rQ  )r:   r±   s     r=   r9   zZeroWidthBase.__init__}  s/   € Ü×Ñ˜4Ô Ü˜X›ˆŒà—N‘N D§M¡MÐ1ˆ�	r>   c                 ó   — t        d g«      S r•  ©r®   rn  s     r=   ro  zZeroWidthBase.get_firstsetƒ  ó   € Ü�D�6‹{Ðr>   c                 óz   — d}| j                   r	|t        z  }|r	|t        z  }|r	|t        z  }| j                  |fgS ©Nr   )r±   ÚPOSITIVE_OPÚFUZZY_OPÚ
REVERSE_OPÚ_opcode©r:   r¥   rY  rŒ   s       r=   rs  zZeroWidthBase._compile†  sD   € ØˆØ�=Š=Ø”[Ñ ˆEÙØ”XÑˆEÙØ”ZÑˆEØ—‘˜uÐ%Ð&Ð&r>   c                 ó€   — t        dj                  t        |z  | j                  t        | j
                     «      «       y )Nz{}{} {})Úprintr7   ÚINDENTÚ_op_nameÚPOS_TEXTr±   ©r:   Úindentr¥   s      r=   ÚdumpzZeroWidthBase.dump�  s/   € Üˆi×Ñœv¨™°·±Ü
�4—=‘=Ñ
!ó#õ 	$r>   c                  ó   — yrŒ  rC   rR  s    r=   r�  zZeroWidthBase.max_width”  ó   € Ør>   N©T)r?   r@   rA   r9   ro  rs  r™  r�  rC   r>   r=   r†  r†  |  s   „ ó2òò'ò$ór>   r†  c                   óZ   — e Zd Zej                  ej
                  dœZdZd„ Zd„ Z	d„ Z
d„ Zy)rá   rJ  ÚANYc                  ó   — yrd  rC   rR  s    r=   rq  zAny.has_simple_start›  rf  r>   c                 ó@   — d}|r	|t         z  }| j                  |   |fgS rŒ  )rŽ  r�  r‘  s       r=   rs  zAny._compilež  s+   € ØˆÙØ”XÑˆEØ—‘˜gÑ&¨Ð.Ð/Ð/r>   c                 ó\   — t        dj                  t        |z  | j                  «      «       y )Nú{}{})r“  r7   r”  r•  r—  s      r=   r™  zAny.dump¤  s   € Üˆf�m‰mœF V™O¨T¯]©]Ó;Õ<r>   c                  ó   — y©Nr-   rC   rR  s    r=   r�  zAny.max_width§  r›  r>   N)r?   r@   rA   ÚOPrž  ÚANY_REVr�  r•  rq  rs  r™  r�  rC   r>   r=   rá   rá   —  s-   „ Ø—f‘f B§J¡JÑ/€GØ€Hòò0ò=ór>   rá   c                   óB   — e Zd Zej                  ej
                  dœZdZy)rß   rJ  ÚANY_ALLN)r?   r@   rA   r¥  r¨  ÚANY_ALL_REVr�  r•  rC   r>   r=   rß   rß   ª  s   „ Ø—j‘j¨¯©Ñ7€GØ�Hr>   rß   c                   óB   — e Zd Zej                  ej
                  dœZdZy)rà   rJ  ÚANY_UN)r?   r@   rA   r¥  r«  Ú	ANY_U_REVr�  r•  rC   r>   r=   rà   rà   ®  s   „ Ø—h‘h b§l¡lÑ3€GØ�Hr>   rà   c                   óf   — e 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y)rs  c                 ó<   — t         j                  | «       || _        y r•  )rO  r9   r  )r:   r  s     r=   r9   zAtomic.__init__³  s   € Ü×Ñ˜4Ô Ø$ˆ�r>   c                 ó>   — | j                   j                  |||«       y r•  ©r  rZ  rX  s       r=   rZ  zAtomic.fix_groups·  ó   € Ø�‰×"Ñ" 7¨G°UÕ;r>   c                 ó”   — | j                   j                  ||«      | _         | j                   j                  «       r| j                   S | S r•  )r  r¶   rþ   r\  s      r=   r¶   zAtomic.optimiseº  s9   € ØŸ/™/×2Ñ2°4¸ÓAˆŒà�?‰?×#Ñ#Ô%Ø—?‘?Ð"Øˆr>   c                 óF   — | j                   j                  |«      | _         | S r•  ©r  r`  r_  s     r=   r`  zAtomic.pack_charactersÁ  ó   € ØŸ/™/×9Ñ9¸$Ó?ˆŒØˆr>   c                 óD   — | j                   j                  «       | _         | S r•  ©r  rb  rR  s    r=   rb  zAtomic.remove_capturesÅ  ó   € ØŸ/™/×9Ñ9Ó;ˆŒØˆr>   c                 ó6   — | j                   j                  «       S r•  ©r  rh  rR  s    r=   rh  zAtomic.can_be_affixÉ  ó   € Ø�‰×+Ñ+Ó-Ð-r>   c                 ó6   — | j                   j                  «       S r•  ©r  rk  rR  s    r=   rk  zAtomic.contains_groupÌ  ó   € Ø�‰×-Ñ-Ó/Ð/r>   c                 ó8   — | j                   j                  |«      S r•  ©r  ro  rn  s     r=   ro  zAtomic.get_firstsetÏ  ó   € Ø�‰×+Ñ+¨GÓ4Ð4r>   c                 ó6   — | j                   j                  «       S r•  ©r  rq  rR  s    r=   rq  zAtomic.has_simple_startÒ  ó   € Ø�‰×/Ñ/Ó1Ð1r>   c                 ó†   — t         j                  fg| j                  j                  ||«      z   t         j                  fgz   S r•  )r¥  ÚATOMICr  r£   ÚENDrt  s      r=   rs  zAtomic._compileÕ  s8   € Ü—)‘)�� $§/¡/×"9Ñ"9¸'À5Ó"IÑIÜ�F‰Fˆ:ˆ,ñð 	r>   c                 ó„   — t        dj                  t        |z  «      «       | j                  j	                  |dz   |«       y )Nú{}ATOMICr-   )r“  r7   r”  r  r™  r—  s      r=   r™  zAtomic.dumpÙ  s1   € Üˆj×Ñ¤¨¡Ó0Ô1Ø�‰×Ñ˜V a™Z¨Õ1r>   c                 ó6   — | j                   j                  «       S r•  ©r  rþ   rR  s    r=   rþ   zAtomic.is_emptyÝ  ó   € Ø�‰×'Ñ'Ó)Ð)r>   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S r•  )rÑ  r  rz  s     r=   r|  zAtomic.__eq__à  s0   € Ü�T“
œd 5›kÐ)ò ¨d¯o©oØ
×
Ñ
ñ/ð 	r>   c                 ó6   — | j                   j                  «       S r•  ©r  r�  rR  s    r=   r�  zAtomic.max_widthä  ó   € Ø�‰×(Ñ(Ó*Ð*r>   c                 ó8   — | j                   j                  |«      S r•  ©r  r‚  rn  s     r=   r‚  zAtomic.get_required_stringç  ó   € Ø�‰×2Ñ2°7Ó;Ð;r>   N)r?   r@   rA   r9   rZ  r¶   r`  rb  rh  rk  ro  rq  rs  r™  rþ   r|  r�  r‚  rC   r>   r=   rs  rs  ²  sM   „ ò%ò<òòòò.ò0ò5ò2òò2ò*òò+ó<r>   rs  c                   ó(   — e Zd Zej                  ZdZy)ÚBoundaryÚBOUNDARYN)r?   r@   rA   r¥  rÖ  r�  r•  rC   r>   r=   rÕ  rÕ  ê  s   „ Ø�k‰k€GØ�Hr>   rÕ  c                   ó&  — e 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ed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zy)rÐ   c                 ó<   — t         j                  | «       || _        y r•  )rO  r9   rÒ   )r:   rÒ   s     r=   r9   zBranch.__init__ï  s   € Ü×Ñ˜4Ô Ø ˆ�r>   c                 óL   — | j                   D ]  }|j                  |||«       Œ y r•  )rÒ   rZ  )r:   r1   r¥   rY  rl   s        r=   rZ  zBranch.fix_groupsó  s%   € Ø—‘ò 	2ˆAØ�L‰L˜ '¨5Õ1ñ	2r>   c                 óì  — | j                   st        g «      S t        j                  ||| j                   «      }|rt        j	                  ||«      \  }}g }nt        j                  ||«      \  }}g }t        j                  |||«      }t        |«      dkD  rLt        |«      g}|r|s>| j                  |||«      }|r)|r|j                  |«       n|j                  d|«       n|}t        ||z   |z   «      S rL  )rÒ   rï   rÐ   Ú_flatten_branchesÚ_split_common_suffixÚ_split_common_prefixÚ_reduce_to_setr]   Ú_add_precheckrZ   ÚinsertrM  )r:   r–   r¥   rÒ   Úsuffixr6  rð   Úfirstsets           r=   r¶   zBranch.optimise÷  sì   € Ø�}Š}Ü˜B“<Ðô ×+Ñ+¨D°'¸4¿=¹=ÓIˆñ Ü%×:Ñ:¸4ÀÓJÑˆF�HØ‰Fä%×:Ñ:¸4ÀÓJÑˆF�HØˆFô ×(Ñ(¨¨w¸ÓAˆäˆx‹=˜1ÒÜ˜xÓ(Ð)ˆHá¡à×-Ñ-¨d°G¸XÓF�áÙØ Ÿ™¨Õ1à Ÿ™¨¨8Õ4àˆHä˜V hÑ.°Ñ7Ó8Ð8r>   c           
      ó  — t        «       }|rdnd}|D ]F  }t        |«      t        u r2|j                  t        k(  r|j                  |j                  |   «       ŒF y  |sy t        |||D �cg c]  }t        |«      ‘Œ c}«      S c c}w ©Néÿÿÿÿr   )	r®   rÑ  ÚLiteralr©   r¯   r²   Ú
charactersr¢   r°   )r:   r–   r¥   rÒ   rÃ  r2   Úbranchr»   s           r=   rß  zBranch._add_precheck  s}   € Ü“%ˆÙ‰b ˆàò 	ˆFÜ�F‹|œwÑ&¨6×+<Ñ+<ÄÒ+FØ—‘˜F×-Ñ-¨cÑ2Õ3áð		ñ Øä˜t WÀWÖ.MÀ¬y¸­|Ò.MÓNÐNùÒ.Ms   Á*Bc                 ól   — | j                   D �cg c]  }|j                  |«      ‘Œ c}| _         | S c c}w r•  )rÒ   r`  )r:   r–   rl   s      r=   r`  zBranch.pack_characters)  s.   € Ø:>¿-¹-ÖH°Q˜×*Ñ*¨4Õ0ÒHˆŒØˆùò Is   �1c                 ój   — | j                   D �cg c]  }|j                  «       ‘Œ c}| _         | S c c}w r•  )rÒ   rb  )r:   rl   s     r=   rb  zBranch.remove_captures-  s,   € Ø6:·m±mÖD°˜×*Ñ*Õ,ÒDˆŒØˆùò Eó   �0c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr•  ©re  ©r˜  rl   s     r=   r™  z#Branch.is_atomic.<locals>.<genexpr>2  ó   è ø€ Ò8 Q�1—;‘;—=Ñ8ùó   ‚©r�  rÒ   rR  s    r=   re  zBranch.is_atomic1  ó   € ÜÑ8¨$¯-©-Ô8Ó8Ð8r>   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr•  )rh  rï  s     r=   r™  z&Branch.can_be_affix.<locals>.<genexpr>5  s   è ø€ Ò;¨�1—>‘>×#Ñ;ùrñ  rò  rR  s    r=   rh  zBranch.can_be_affix4  s   € ÜÑ;¨T¯]©]Ô;Ó;Ð;r>   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr•  ©rk  rï  s     r=   r™  z(Branch.contains_group.<locals>.<genexpr>8  s   è ø€ Ò=¨!�1×#Ñ#×%Ñ=ùrñ  )rÿ  rÒ   rR  s    r=   rk  zBranch.contains_group7  s   € ÜÑ=¨t¯}©}Ô=Ó=Ð=r>   c                 ó€   — t        «       }| j                  D ]  }||j                  |«      z  }Œ |xs t        d g«      S r•  )r®   rÒ   ro  )r:   r¥   r¤   rl   s       r=   ro  zBranch.get_firstset:  sB   € Ü‹UˆØ—‘ò 	*ˆAØ�!—.‘. Ó)Ñ)‰Bð	*ð Ò ”S˜$˜“[Ð r>   c                 ó  — | j                   sg S t        j                  fg}| j                   D ]C  }|j                  |j	                  ||«      «       |j                  t        j                  f«       ŒE t        j                  f|d<   |S ©Nrå  )rÒ   r¥  ÚBRANCHr¸   r£   rZ   ÚNEXTrÇ  )r:   r¥   rY  r¹   rl   s        r=   rs  zBranch._compileA  sm   € Ø�}Š}ØˆIä—‘�ˆˆØ—‘ò 	%ˆAØ�K‰K˜Ÿ	™	 '¨5Ó1Ô2Ø�K‰KœŸ™˜Õ$ð	%ô —F‘F�:ˆˆR‰àˆr>   c                 ó  — t        dj                  t        |z  «      «       | j                  d   j	                  |dz   |«       | j                  dd  D ]8  }t        dj                  t        |z  «      «       |j	                  |dz   |«       Œ: y )Nz{}BRANCHr   r-   ú{}OR)r“  r7   r”  rÒ   r™  )r:   r˜  r¥   rl   s       r=   r™  zBranch.dumpN  sw   € Üˆj×Ñ¤¨¡Ó0Ô1Ø�‰�aÑ×Ñ˜f q™j¨'Ô2Ø—‘˜q˜sÐ$ò 	(ˆAÜ�&—-‘-¤¨¡Ó0Ô1Ø�F‰F�6˜A‘:˜wÕ'ñ	(r>   c                 ó¶   — g }|D ]Q  }|j                  | |«      }t        |t        «      r|j                  |j                  «       ŒA|j                  |«       ŒS |S r•  )r¶   r.   rÐ   r¸   rÒ   rZ   )r–   r¥   rÒ   Únew_branchesrl   s        r=   rÛ  zBranch._flatten_branchesU  sZ   € ð ˆØò 	'ˆAØ—
‘
˜4 Ó)ˆAÜ˜!œVÔ$Ø×#Ñ# A§J¡JÕ/à×#Ñ# AÕ&ð	'ð Ðr>   c                 ó–  ‡‡	‡
— g }|D ]@  }t        |t        «      r|j                  |j                  «       Œ/|j                  |g«       ŒB t	        d„ |D «       «      }|d   Š
dŠ	|}‰	|k  r[‰
‰	   j                  «       rHt        ˆ	ˆ
fd„|D «       «      r3‰	dz  Š	‰	|k  r)‰
‰	   j                  «       rt        ˆ	ˆ
fd„|D «       «      rŒ3‰	Š| j                  t        z  r:‰	Š‰dkD  r3t        ˆfd„|D «       «      s‰dz  Š‰dkD  rt        ˆfd„|D «       «      sŒ‰dk(  rg |fS g }|D ]  }|j                  t        |‰d  «      «       Œ! ‰
d ‰ |fS )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr•  ©r]   ©r˜  rk   s     r=   r™  z.Branch._split_common_prefix.<locals>.<genexpr>n  ó   è ø€ Ò5 1œ˜AŸÑ5ùó   ‚r   c              3   ó4   •K  — | ]  }|‰   ‰‰   k(  –— Œ y ­wr•  rC   )r˜  rk   r2   r6  s     €€r=   r™  z.Branch._split_common_prefix.<locals>.<genexpr>t  ó.   øè ø€ ò C-Øð DEÀSÁ6Ø
�‰+õDñ C-ùó   ƒr-   c              3   óJ   •K  — | ]  }t         j                  |‰«      –— Œ y ­wr•  )rÐ   Ú
_can_split©r˜  rk   r3   s     €r=   r™  z.Branch._split_common_prefix.<locals>.<genexpr>}  s"   øè ø€ ò (È¬×(9Ñ(9¸!¸U×(Cñ (ùó   ƒ #©
r.   rï   rZ   rñ  Úminrh  r�  rŒ   r   rM  )r–   rÒ   Úalternativesrl   r   Úend_posr  rk   r3   r2   r6  s           @@@r=   rÝ  zBranch._split_common_prefixb  s‚  ú€ ð ˆØò 	)ˆAÜ˜!œXÔ&Ø×#Ñ# A§G¡GÕ,à×#Ñ# Q CÕ(ð		)ô Ñ5¨Ô5Ó5ˆ	ð ˜a‘ˆØˆØˆØ�GŠm  s¡× 8Ñ 8Ô :¼sô C-Ø+ôC-ô @-à�1‰HˆCð �GŠm  s¡× 8Ñ 8Ô :¼sô C-Ø+ôC-õ @-ð ˆà�:‰:œÒð ˆEØ˜!’)¤Có (Øô(ô %à˜‘
�ð ˜!’)¤Có (Øô(õ %ð
 �AŠ:Ø�x�<Ðð ˆØò 	<ˆAØ×Ñ¤¨a°°¨kÓ :Õ;ð	<ð �w˜Ð Ð-Ð-r>   c                 ó¢  ‡‡	‡
— g }|D ]@  }t        |t        «      r|j                  |j                  «       Œ/|j                  |g«       ŒB t	        d„ |D «       «      }|d   Š
dŠ	d|z
  }‰	|kD  r[‰
‰	   j                  «       rHt        ˆ	ˆ
fd„|D «       «      r3‰	dz  Š	‰	|kD  r)‰
‰	   j                  «       rt        ˆ	ˆ
fd„|D «       «      rŒ3d‰	z
  Š| j                  t        z  r8‰dkD  r3t        ˆfd„|D «       «      s‰dz  Š‰dkD  rt        ˆfd„|D «       «      sŒ‰dk(  rg |fS g }|D ]   }|j                  t        |d ‰  «      «       Œ" ‰
‰ d  |fS )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr•  r  r  s     r=   r™  z.Branch._split_common_suffix.<locals>.<genexpr>˜  r  r  r   rå  c              3   ó4   •K  — | ]  }|‰   ‰‰   k(  –— Œ y ­wr•  rC   )r˜  rk   r2   rá  s     €€r=   r™  z.Branch._split_common_suffix.<locals>.<genexpr>ž  r	  r
  r-   c              3   óJ   •K  — | ]  }t         j                  |‰«      –— Œ y ­wr•  )rÐ   Ú_can_split_revr  s     €r=   r™  z.Branch._split_common_suffix.<locals>.<genexpr>¦  s"   øè ø€ ò (ÈA¬×(=Ñ(=¸aÀ×(Gñ (ùr  r  )r–   rÒ   r  rl   r   r  r  rk   r3   r2   rá  s           @@@r=   rÜ  zBranch._split_common_suffixŒ  s‰  ú€ ð ˆØò 	)ˆAÜ˜!œXÔ&Ø×#Ñ# A§G¡GÕ,à×#Ñ# Q CÕ(ð		)ô Ñ5¨Ô5Ó5ˆ	ð ˜a‘ˆØˆØ�y‘.ˆØ�GŠm  s¡× 8Ñ 8Ô :¼sô C-Ø+ôC-ô @-à�1‰HˆCð �GŠm  s¡× 8Ñ 8Ô :¼sô C-Ø+ôC-õ @-ð �S‘ˆà�:‰:œÒð ˜!’)¤Có (Øô(ô %à˜‘
�ð ˜!’)¤Có (Øô(õ %ð
 �AŠ:Ø�x�<Ðð ˆØò 	=ˆAØ×Ñ¤¨a°°E°6¨lÓ ;Õ<ð	=ð �u�f�hÐ  ,Ð.Ð.r>   c                 ó„  — t         j                  | |dz
  «      syt         j                  | |«      syt         j                  | |dz
  |dz    «      ryt         j                  | |dz   «      rt         j                  | |dz
  |dz    «      ryt         j                  | |dz
  «      rt         j                  | |dz
  |dz    «      ryy)Nr-   TFrN   )rÐ   Ú_is_full_caseÚ
_is_folded)rñ  r3   s     r=   r  zBranch._can_splitµ  s¿   € ô ×#Ñ# E¨5°1©9Ô5Øä×#Ñ# E¨5Ô1Øô ×Ñ˜U 5¨1¡9¨u°q©yÐ9Ô:Øô × Ñ  ¨°©	Ô2Ü
×
Ñ
˜E %¨!¡)¨e°a©iÐ8Ô
9Øô × Ñ  ¨°©	Ô2Ü
×
Ñ
˜E %¨!¡)¨e°a©iÐ8Ô
9Øàr>   c                 óÖ  — t        | «      }t        j                  | ||z
  «      syt        j                  | ||z
  dz
  «      syt        j                  | ||z
  dz
  ||z
  dz    «      ryt        j                  | ||z
  dz   «      r%t        j                  | ||z
  dz
  ||z
  dz    «      ryt        j                  | ||z
  dz
  «      r%t        j                  | ||z
  dz
  ||z
  dz    «      ryy)NTr-   FrN   )r]   rÐ   r  r  )rñ  r3   r  s      r=   r  zBranch._can_split_revÎ  sð   € ä�%‹jˆô ×#Ñ# E¨3°©;Ô7Øä×#Ñ# E¨3°©;¸©?Ô;Øô ×Ñ˜U 3¨¡;°¡?°S¸5±[À1±_ÐEÔFØô × Ñ  ¨¨e©°a©Ô8Ü
×
Ñ
˜E #¨¡+°¡/°C¸%±KÀ!±OÐDÔ
EØô × Ñ  ¨¨e©°a©Ô8Ü
×
Ñ
˜E #¨¡+°¡/°C¸%±KÀ!±OÐDÔ
EØàr>   c                 óÄ  — t        t        «      }i }g }|D �].  }t        j                  |«      rE||j                     j                  |g«       |j                  |j                  t        |«      «       Œ^t        |t        «      r—|j                  r‹t        j                  |j                  d   «      ri||j                  d   j                     j                  |j                  «       |j                  |j                  d   j                  t        |«      «       �Œt        j                  | ||||«       |j                  |«       �Œ1 t        j                  | |||«       |S rŒ  )r   rµ   rÐ   Ú_is_simple_characterr^   rZ   Ú
setdefaultr]   r.   rï   rñ  Ú_flush_char_prefix)r–   r¥   rÒ   ÚprefixedÚorderr  rl   s          r=   Ú_merge_common_prefixeszBranch._merge_common_prefixesé  s  € ô
 œtÓ$ˆØˆØˆØó 	'ˆAÜ×*Ñ*¨1Ô-à˜Ÿ™Ñ!×(Ñ(¨!¨Ô-Ø× Ñ  §¡¬#¨e«*Õ5Ü˜Q¤Ô)¨a¯gªgÜ×)Ñ)¨!¯'©'°!©*Ô5à˜Ÿ™ ™×)Ñ)Ñ*×1Ñ1°!·'±'Ô:Ø× Ñ  §¡¨¡×!1Ñ!1´3°u³:Ö>ä×)Ñ)¨$°¸À5Øô ð ×#Ñ# AÖ&ð	'ô  	×!Ñ! $¨°%¸ÔFàÐr>   c                 ó\   — t        | t        «      xr | j                  xr | j                   S r•  )r.   r°   r±   r©   ©r»   s    r=   r  zBranch._is_simple_character	  s$   € ä˜!œYÓ'ÒK¨A¯J©JÒK¸q¿|¹|Ð;KÐKr>   c                 ó¨  — g }t        «       }t        }|D ]¡  }t        |t        t        t
        f«      rZ|j                  |k7  r%t        j                  | ||||«       |j                  }|j                  |j                  t        ¬«      «       Œxt        j                  | ||||«       |j                  |«       Œ£ t        j                  | ||||«       |S ©Nr¨   )r®   r¯   r.   r°   r/  ÚSetBaser©   rÐ   Ú_flush_set_membersr²   r³   rZ   )r–   r¥   rÒ   r  rñ  r©   rl   s          r=   rÞ  zBranch._reduce_to_set		  sÈ   € ð ˆÜ“ˆÜˆ
Øò 	'ˆAÜ˜!œi¬´7Ð;Ô<à—<‘< :Ò-ä×-Ñ-¨d°G¸UÀJØ"ô$ð "#§¡�Jà—	‘	˜!Ÿ,™,´&˜,Ó9Õ:ä×)Ñ)¨$°¸À
Øô ð ×#Ñ# AÕ&ð	'ô" 	×!Ñ! $¨°¸
Ø
ô	ð Ðr>   c           	      ó  ‡— |sy t        |j                  «       ˆfd„¬«      D ]Æ  \  }}t        |«      dk(  r|j                  t	        |d   «      «       Œ2g }d}|D ]L  }	t        |	«      dkD  r|j                  t	        |	dd  «      «       Œ/|rŒ2|j                  t        «       «       d}ŒN t        t        |«      t        |«      g«      }
|j                  |
j                  | |«      «       ŒÈ |j                  «        ‰j                  «        y )Nc                 ó   •— ‰| d      S rŒ  rC   )Úpairr!  s    €r=   ú<lambda>z+Branch._flush_char_prefix.<locals>.<lambda>+	  s   ø€ Ø
��Q‘‰.ð r>   ©Úkeyr-   r   FT)
Úsortedrñ  r]   rZ   rM  rï   r°   rÐ   r¶   r   )r–   r¥   r   r!  r  r^   rÒ   ÚsubbranchesÚoptionalrl   rð   s      `       r=   r  zBranch._flush_char_prefix%	  sö   ø€ ñ Øä% h§n¡nÓ&6ó =ô  ò 	F‰OˆE�8ä�8‹} Ò!Ø×#Ñ#¤M°(¸1±+Ó$>Õ?à �Ø �Ø!ò (�AÜ˜1“v ’zØ#×*Ñ*¬=¸¸1¸3¸Ó+AÕBÚ%Ø#×*Ñ*¬8«:Ô6Ø#'™ð(ô $¤Y¨uÓ%5´v¸kÓ7JÐ$KÓL�Ø×#Ñ# H×$5Ñ$5°d¸GÓ$DÕEð	Fð" 	�‰ÔØ�‰�r>   c                 óð   — |sy t        |«      dk(  rt        |«      d   }n%t        | t        |«      «      j                  | |«      }|j	                  |j                  |¬«      «       |j                  «        y )Nr-   r   r¨   )r]   rµ   r´   r¶   rZ   r³   r   )r–   r¥   rñ  r©   r  rö   s         r=   r(  zBranch._flush_set_members?	  sa   € ñ Øäˆu‹:˜Š?Ü˜“;˜q‘>‰Dä˜D¤$ u£+Ó.×7Ñ7¸¸gÓFˆDà×Ñ˜DŸO™O°z˜OÓBÔCà�‰�r>   c                 ó®   — d|cxk  rt        | «      k  sy y| |   }t        |t        «      xr( |j                  xr |j                  t
        z  t
        k(  S )Nr   F)r]   r.   r°   r±   r©   ÚFULLIGNORECASE)rñ  ro   rö   s      r=   r  zBranch._is_full_caseN	  sX   € à�AÔ"œ˜E›
Ò"Øð #Øà�Q‰xˆÜ˜4¤Ó+ò ?°·±ò ?Ø�?‰?œ^Ñ+´Ñ
>ð	@r>   c                 ó\  — t        | «      dk  ry| D ],  }t        |t        «      r|j                  r|j                  rŒ, y dj                  d„ | D «       «      }t        j                  t        |«      }t        j                  «       }|D ]!  }|t        j                  t        |«      k(  sŒ! y y)NrN   Frf   c              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wr•  )Úchrr^   ©r˜  ro   s     r=   r™  z$Branch._is_folded.<locals>.<genexpr>a	  s   è ø€ Ò5¨!œ˜QŸW™WŸÑ5ùs   ‚!T)
r]   r.   r°   r±   r©   r\   r”   r•   ÚFULL_CASE_FOLDINGÚget_expand_on_folding)rñ  ro   ÚfoldedÚexpanding_charsr»   s        r=   r  zBranch._is_foldedW	  sŸ   € äˆu‹:˜Š>Øàò 	ˆAÜ˜q¤)Ô,°A·J²JØ�l‹lÙð	ð
 —‘Ñ5¨uÔ5Ó5ˆÜ×!Ñ!Ô"3°VÓ<ˆô !×6Ñ6Ó8ˆà ò 	ˆAØœ×)Ñ)Ô*;¸QÓ?Ó?Ùð	ð r>   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr•  ©rþ   rï  s     r=   r™  z"Branch.is_empty.<locals>.<genexpr>n	  s   è ø€ Ò7 A�1—:‘:—<Ñ7ùrñ  rò  rR  s    r=   rþ   zBranch.is_emptym	  s   € ÜÑ7¨¯©Ô7Ó7Ð7r>   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S r•  )rÑ  rÒ   rz  s     r=   r|  zBranch.__eq__p	  s'   € Ü�D‹zœT %›[Ð(ÒL¨T¯]©]¸e¿n¹nÑ-LÐLr>   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr•  r€  rï  s     r=   r™  z#Branch.max_width.<locals>.<genexpr>t	  rð  rñ  )r7  rÒ   rR  s    r=   r�  zBranch.max_widths	  ró  r>   N)r?   r@   rA   r9   rZ  r¶   rß  r`  rb  re  rh  rk  ro  rs  r™  ÚstaticmethodrÛ  rÝ  rÜ  r  r  r"  r  rÞ  r  r(  r  r  rþ   r|  r�  rC   r>   r=   rÐ   rÐ   î  sF  „ ò!ò2ò!9òFOòòò9ò<ò>ò!òò(ð ñ
ó ð
ð ñ'.ó ð'.ðR ñ&/ó ð&/ðP ñó ðð0 ñó ðð4 ñó ðð6 ñLó ðLð ñó ðð6 ñó ðð2 ñó ðð ñ@ó ð@ð ñó ðò*8òMó9r>   rÐ   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ry  c                 ó’   — t         j                  | «       || _        || _        || _        | j
                  | j                  f| _        y r•  )rO  r9   r–   r^  rÅ   rY   rQ  )r:   r–   r^  rÅ   s       r=   r9   zCallGroup.__init__w	  s9   € Ü×Ñ˜4Ô ØˆŒ	ØˆŒ
Ø ˆŒà—N‘N D§J¡JÐ.ˆ�	r>   c                 óœ  — 	 t        | j                  «      | _        d| j                  cxk  r| j                  j                  k  sn t        d|| j                  «      ‚| j                  dkD  r=| j                  j                  | j                     dkD  rt        d|| j                  «      ‚| j                  j                  j                  | ||f«       | j                  | j                  f| _        y # t        $ rR 	 | j                  j                  | j                     | _        n$# t
        $ r t        d|| j                  «      ‚w xY wY �Œ.w xY w)NrC  r   rD  r-   zambiguous group reference)r  r^  r-  r–   Úgroup_indexr~   r&   rÅ   ru  Úopen_group_countÚgroup_callsrZ   rY   rQ  rX  s       r=   rZ  zCallGroup.fix_groups	  s  € ð	OÜ˜TŸZ™Z›ˆDŒJð �D—J‘JÔ7 $§)¡)×"7Ñ"7Ô7Ü˜¨°$·-±-Ó@Ð@à�:‰:˜Š>˜dŸi™i×8Ñ8¸¿¹ÑDÀqÒHÜÐ3°W¸d¿m¹mÓLÐLà�	‰	×Ñ×$Ñ$ d¨G°UÐ%;Ô<à—N‘N D§J¡JÐ.ˆ�	øô ò 	OðOØ!ŸY™Y×2Ñ2°4·:±:Ñ>�•
øÜò OÜÐ5°wÀÇÁÓNÐNðOúò ð	Oús)   ‚C0 Ã0	EÃ:(D#Ä"EÄ#!EÅEÅ
Ec                 ó8   — t        dt        | j                  «      ‚©Nzgroup reference not allowed©r&   r1   rÅ   rR  s    r=   rb  zCallGroup.remove_captures’	  ó   € ÜÐ1´7¸D¿M¹MÓJÐJr>   c                 ó<   — t         j                  | j                  fgS r•  )r¥  Ú
GROUP_CALLÚcall_refrt  s      r=   rs  zCallGroup._compile•	  s   € Ü—‘ §¡Ð.Ð/Ð/r>   c                 ó\   — t        dj                  t        |z  | j                  «      «       y )Nz{}GROUP_CALL {})r“  r7   r”  r^  r—  s      r=   r™  zCallGroup.dump˜	  s    € ÜÐ×&Ñ&¤v°¡¸¿
¹
ÓCÕDr>   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S r•  )rÑ  r^  rz  s     r=   r|  zCallGroup.__eq__›	  ó'   € Ü�D‹zœT %›[Ð(ÒF¨T¯Z©Z¸5¿;¹;Ñ-FÐFr>   c                 ó   — t         S r•  r  rR  s    r=   r�  zCallGroup.max_widthž	  ó   € ÜÐr>   c                 ó   — d | _         y r•  ©r–   rR  s    r=   Ú__del__zCallGroup.__del__¡	  ó	   € Øˆ�	r>   N)r?   r@   rA   r9   rZ  rb  rs  r™  r|  r�  rX  rC   r>   r=   ry  ry  v	  s-   „ ò/ò/ò&Kò0òEòGòór>   ry  c                   ó   — e Zd Zd„ Zd„ Zy)ÚCallRefc                 ó    — || _         || _        y r•  )ÚrefÚparsed)r:   r]  r^  s      r=   r9   zCallRef.__init__¥	  s   € ØˆŒØˆ�r>   c                 óœ   — t         j                  | j                  fg| j                  j	                  ||«      z   t         j
                  fgz   S r•  )r¥  ÚCALL_REFr]  r^  rs  rÇ  rt  s      r=   rs  zCallRef._compile©	  sE   € Ü—+‘+˜tŸx™xÐ(Ð)¨D¯K©K×,@Ñ,@ÀØ
ó-ñ Ü—V‘V�J�<ñ ð 	!r>   N©r?   r@   rA   r9   rs  rC   r>   r=   r[  r[  ¤	  s   „ òó!r>   r[  c                   ó6  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdedfd„Zd„ Zdd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zy)r°   FTc                 óú  — t         j                  | «       || _        t        |«      | _        t
        |   | _        t        |«      | _        | j                  rM| j                  t        z  t        k(  r3t        j                  t        t        | j                  «      «      | _        nt        | j                  «      | _        | j                  | j                  | j                  | j                  | j                  f| _        y r•  )rO  r9   r^   r¡   r±   rT  r©   r«   r4  r”   r•   r9  r7  r;  rY   rQ  ©r:   r^   r±   r©   r«   s        r=   r9   zCharacter.__init__´	  s¨   € ä×Ñ˜4Ô ØˆŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒà�MŠM˜tŸ™´Ñ?Ü
òä ×*Ñ*Ô+<¼cÀ$Ç*Á*»oÓNˆD�Kä˜dŸj™j›/ˆDŒKà—^‘^ T§Z¡Z°·±Ø
�/‰/˜4Ÿ>™>ð+ˆ�	r>   c                 ó2   — t        | j                  |||«      S r•  )r°   r^   rV  s       r=   rU  zCharacter.rebuildÅ	  s   € Ü˜Ÿ™ X¨z¸9ÓEÐEr>   c                 ó   — | S r•  rC   ©r:   r–   r¥   r­   s       r=   r¶   zCharacter.optimiseÈ	  r]  r>   c                 ó   — t        | g«      S r•  r‰  rn  s     r=   ro  zCharacter.get_firstsetË	  rŠ  r>   c                  ó   — yrd  rC   rR  s    r=   rq  zCharacter.has_simple_startÎ	  rf  r>   c                 ó¶  — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }t        | j                  | j                  |f   || j                  g«      }t        | j                  «      dkD  rCt        |t        | j                  D �cg c]  }t        |«      ‘Œ c}| j                  ¬«      g«      }|j                  ||«      S c c}w )Nr   r-   r¨   )r±   r�  r«   ÚZEROWIDTH_OPrŽ  ÚPrecompiledCoder�  r©   r^   r]   r;  rÐ   r»  rî   r£   )r:   r¥   rY  rŒ   r¹   r»   s         r=   rs  zCharacter._compileÑ	  sÂ   € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEä §¡¨T¯_©_¸gÐ-EÑ FÈØ
�*‰*ð ó ˆô ˆt�{‰{Ó˜aÒä˜4¤¸¿¹Ö(E°A¬¨Q­Ò(EØŸ™ô"*ð +ó ,ˆDð �|‰|˜G UÓ+Ð+ùò )Fs   ÂCc           	      óê   — t        t        | j                  «      «      j                  d«      }t	        dj                  t        |z  t        | j                     |t        | j                     «      «       y )NÚbuz{}CHARACTER {} {}{})Úasciir7  r^   Úlstripr“  r7   r”  r–  r±   Ú	CASE_TEXTr©   ©r:   r˜  r¥   Údisplays       r=   r™  zCharacter.dumpä	  sV   € Üœ˜DŸJ™J›Ó(×/Ñ/°Ó5ˆÜÐ#×*Ñ*¬6°F©?Ü
�4—=‘=Ñ
! 7¬I°d·o±oÑ,FóHõ 	Ir>   c                 ó:   — || j                   k(  | j                  k(  S r•  )r^   r±   ©r:   rò   s     r=   ÚmatcheszCharacter.matchesé	  s   € Ø�d—j‘jÑ  T§]¡]Ñ2Ð2r>   c                 ó,   — t        | j                  «      S r•  )r]   r;  rR  s    r=   r�  zCharacter.max_widthì	  s   € Ü�4—;‘;ÓÐr>   c                 óf   — | j                   syt        d„ | j                  D «       «      | _        d| fS )Nr  c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr•  ©rî   ©r˜  r»   s     r=   r™  z0Character.get_required_string.<locals>.<genexpr>ó	  s   è ø€ Ò&C°!¤s¨1§vÑ&Cùr  r   )r±   rz   r;  Úfolded_charactersrn  s     r=   r‚  zCharacter.get_required_stringï	  s,   € Ø�}Š}Øä!&Ñ&C°t·{±{Ô&CÓ!CˆÔà�$ˆwˆr>   N©F)r?   r@   rA   r¯   r¥  Ú	CHARACTERr   ÚCHARACTER_IGNr   r4  ÚCHARACTER_REVÚCHARACTER_IGN_REVr�  r9   rU  r¶   ro  rq  rs  r™  rv  r�  r‚  rC   r>   r=   r°   r°   ­	  sÅ   „ Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð (,¸Øó+ò"Fóòòò,ò&Iò
3ò ór>   r°   c                   óf   — e 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y)rm  c                 ót   — t         j                  | «       || _        || _        || _        || _        || _        y r•  )rO  r9   r–   r^  Úyes_itemÚno_itemrÅ   )r:   r–   r^  r„  r…  rÅ   s         r=   r9   zConditional.__init__ø	  s3   € Ü×Ñ˜4Ô ØˆŒ	ØˆŒ
Ø ˆŒØˆŒØ ˆ�r>   c                 ó  — 	 t        | j                  «      | _        d| j                  cxk  r| j                  j                  k  sn t        d|| j                  «      ‚| j                  j                  |||«       | j                  j                  |||«       y # t        $ rj 	 | j                  j                  | j                     | _        n=# t
        $ r1 | j                  dk(  rd| _        nt        d|| j                  «      ‚Y nw xY wY Œïw xY w)NÚDEFINEr   rD  rC  )r  r^  r-  r–   rG  r~   r&   rÅ   ru  r„  rZ  r…  rX  s       r=   rZ  zConditional.fix_groups 
  så   € ð	IÜ˜TŸZ™Z›ˆDŒJð �D—J‘JÔ7 $§)¡)×"7Ñ"7Ô7ÜÐ1°7¸D¿M¹MÓJÐJà�‰× Ñ  ¨'°5Ô9Ø�‰×Ñ ¨°%Õ8øô ò 		IðIØ!ŸY™Y×2Ñ2°4·:±:Ñ>�•
øÜò IØ—:‘: Ò)ð "#�D•Jä °¸$¿-¹-ÓHÐHñ ð	Iüð		Iús5   ‚B Â	DÂ#(CÃDÃ7DÄDÄDÄDÄDc                 ó¸   — | j                   j                  ||«      }| j                  j                  ||«      }t        || j                  ||| j
                  «      S r•  )r„  r¶   r…  rm  r^  rÅ   )r:   r–   r¥   r„  r…  s        r=   r¶   zConditional.optimise
  sI   € Ø—=‘=×)Ñ)¨$°Ó8ˆØ—,‘,×'Ñ'¨¨gÓ6ˆä˜4 §¡¨X°wÀÇÁÓNÐNr>   c                 ó†   — | j                   j                  |«      | _         | j                  j                  |«      | _        | S r•  )r„  r`  r…  r_  s     r=   r`  zConditional.pack_characters
  s3   € ØŸ™×5Ñ5°dÓ;ˆŒØ—|‘|×3Ñ3°DÓ9ˆŒØˆr>   c                 ó€   — | j                   j                  «       | _         | j                  j                  «       | _        y r•  )r„  rb  r…  rR  s    r=   rb  zConditional.remove_captures
  s*   € ØŸ™×5Ñ5Ó7ˆŒØ—|‘|×3Ñ3Ó5ˆ�r>   c                 ón   — | j                   j                  «       xr | j                  j                  «       S r•  )r„  re  r…  rR  s    r=   re  zConditional.is_atomic#
  s'   € Ø�}‰}×&Ñ&Ó(ÒE¨T¯\©\×-CÑ-CÓ-EÐEr>   c                 ón   — | j                   j                  «       xr | j                  j                  «       S r•  )r„  rh  r…  rR  s    r=   rh  zConditional.can_be_affix&
  s'   € Ø�}‰}×)Ñ)Ó+ÒK°·±×0IÑ0IÓ0KÐKr>   c                 ón   — | j                   j                  «       xs | j                  j                  «       S r•  )r„  rk  r…  rR  s    r=   rk  zConditional.contains_group)
  s'   € Ø�}‰}×+Ñ+Ó-ÒN°·±×1LÑ1LÓ1NÐNr>   c                 óp   — | j                   j                  |«      | j                  j                  |«      z  S r•  )r„  ro  r…  rn  s     r=   ro  zConditional.get_firstset,
  s0   € Ø—‘×*Ñ*¨7Ó3Ø
�,‰,×
#Ñ
# GÓ
,ñ-ð 	.r>   c                 ót  — t         j                  | j                  fg}|j                  | j                  j                  ||«      «       | j                  j                  ||«      }|r1|j                  t         j                  f«       |j                  |«       |j                  t         j                  f«       |S r•  )
r¥  ÚGROUP_EXISTSr^  r¸   r„  r£   r…  rZ   rý  rÇ  ©r:   r¥   rY  r¹   Úadd_codes        r=   rs  zConditional._compile0
  s‚   € Ü—‘ $§*¡*Ð-Ð.ˆØ�‰�D—M‘M×)Ñ)¨'°5Ó9Ô:Ø—<‘<×'Ñ'¨°Ó7ˆÙØ�K‰KœŸ™˜Ô$Ø�K‰K˜Ô!à�‰”R—V‘V�JÔàˆr>   c                 óP  — t        dj                  t        |z  | j                  «      «       | j                  j                  |dz   |«       | j                  j                  «       sAt        dj                  t        |z  «      «       | j                  j                  |dz   |«       y y )Nz{}GROUP_EXISTS {}r-   rÿ  )r“  r7   r”  r^  r„  r™  r…  rþ   r—  s      r=   r™  zConditional.dump<
  sz   € ÜÐ!×(Ñ(¬°&©¸$¿*¹*ÓEÔFØ�‰×Ñ˜6 A™: wÔ/Ø�|‰|×$Ñ$Ô&Ü�&—-‘-¤¨¡Ó0Ô1Ø�L‰L×Ñ˜f q™j¨'Õ2ð 'r>   c                 ón   — | j                   j                  «       xr | j                  j                  «       S r•  )r„  rþ   r…  rR  s    r=   rþ   zConditional.is_emptyC
  s'   € Ø�}‰}×%Ñ%Ó'ÒC¨D¯L©L×,AÑ,AÓ,CÐCr>   c                 óÀ   — t        | «      t        |«      u xrG | j                  | j                  | j                  f|j                  |j                  |j                  fk(  S r•  )rÑ  r^  r„  r…  rz  s     r=   r|  zConditional.__eq__F
  sR   € Ü�D‹zœT %›[Ð(ò H¨d¯j©j¸$¿-¹-Ø
�,‰,ð.Ø!ŸK™K¨¯©¸¿¹ÐGñ.Hð 	Hr>   c                 óz   — t        | j                  j                  «       | j                  j                  «       «      S r•  ©r7  r„  r�  r…  rR  s    r=   r�  zConditional.max_widthJ
  ó)   € Ü�4—=‘=×*Ñ*Ó,¨d¯l©l×.DÑ.DÓ.FÓGÐGr>   c                 ó   — d | _         y r•  rW  rR  s    r=   rX  zConditional.__del__M
  rY  r>   N)r?   r@   rA   r9   rZ  r¶   r`  rb  re  rh  rk  ro  rs  r™  rþ   r|  r�  rX  rC   r>   r=   rm  rm  ÷	  sT   „ ò!ò9ò(Oòò
6òFòLòOò.ò
ò3òDòHòHór>   rm  c                   ó(   — e Zd Zej                  ZdZy)ÚDefaultBoundaryÚDEFAULT_BOUNDARYN)r?   r@   rA   r¥  rœ  r�  r•  rC   r>   r=   r›  r›  P
  s   „ Ø×!Ñ!€GØ!�Hr>   r›  c                   ó(   — e Zd Zej                  ZdZy)ÚDefaultEndOfWordÚDEFAULT_END_OF_WORDN)r?   r@   rA   r¥  rŸ  r�  r•  rC   r>   r=   rž  rž  T
  s   „ Ø×$Ñ$€GØ$�Hr>   rž  c                   ó(   — e Zd Zej                  ZdZy)ÚDefaultStartOfWordÚDEFAULT_START_OF_WORDN)r?   r@   rA   r¥  r¢  r�  r•  rC   r>   r=   r¡  r¡  X
  s   „ Ø×&Ñ&€GØ&�Hr>   r¡  c                   ó(   — e Zd Zej                  ZdZy)rç   ÚEND_OF_LINEN)r?   r@   rA   r¥  r¤  r�  r•  rC   r>   r=   rç   rç   \
  ó   „ Ø�n‰n€GØ�Hr>   rç   c                   ó(   — e Zd Zej                  ZdZy)ræ   ÚEND_OF_LINE_UN)r?   r@   rA   r¥  r§  r�  r•  rC   r>   r=   ræ   ræ   `
  ó   „ Ø×Ñ€GØ�Hr>   ræ   c                   ó(   — e Zd Zej                  ZdZy)ÚEndOfStringÚEND_OF_STRINGN)r?   r@   rA   r¥  r«  r�  r•  rC   r>   r=   rª  rª  d
  r¨  r>   rª  c                   ó(   — e Zd Zej                  ZdZy)ré   ÚEND_OF_STRING_LINEN)r?   r@   rA   r¥  r­  r�  r•  rC   r>   r=   ré   ré   h
  s   „ Ø×#Ñ#€GØ#�Hr>   ré   c                   ó(   — e Zd Zej                  ZdZy)rè   ÚEND_OF_STRING_LINE_UN)r?   r@   rA   r¥  r¯  r�  r•  rC   r>   r=   rè   rè   l
  s   „ Ø×%Ñ%€GØ%�Hr>   rè   c                   ó(   — e Zd Zej                  ZdZy)Ú	EndOfWordÚEND_OF_WORDN)r?   r@   rA   r¥  r²  r�  r•  rC   r>   r=   r±  r±  p
  r¥  r>   r±  c                   ó   — e Zd ZdZd„ Zy)ÚFailureÚFAILUREc                 ó&   — t         j                  fgS r•  )r¥  rµ  rt  s      r=   rs  zFailure._compilew
  s   € Ü—‘�ÐÐr>   N©r?   r@   rA   r•  rs  rC   r>   r=   r´  r´  t
  s   „ Ø€Hó r>   r´  c                   óV   — 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„ Zd„ Zy)r  Nc                 ó¶  — t         j                  | «       |€i }|| _        || _        d|v r!dD ]  }||d   v sŒ|j	                  |d«       Œ t        |«      t        d«      z  rdD ]  }|j	                  |d«       Œ ndD ]  }|j	                  |d«       Œ |j	                  dd«       d|v rdD ]  }|d   j	                  |d«       Œ y ddd|d   d   dœ|d<   y )	Nr6  r:  r  )r   r   rm   r   r-   )Údro   rr   r7  )rO  r9   r  rõ   r  r®   )r:   r  rõ   rm   s       r=   r9   zFuzzy.__init__{
  s  € Ü×Ñ˜4Ô ØÐØˆKØ$ˆŒØ&ˆÔð �[Ñ Øò 9�Ø˜ FÑ+Ò+Ø×*Ñ*¨1¨iÕ8ð9ô ˆ{Óœc %›jÒ(Øò 2�Ø×&Ñ& q¨&Õ1ñ2ð ò 5�Ø×&Ñ& q¨)Õ4ð5ð 	×Ñ˜s IÔ.ð �[Ñ Øò 5�Ø˜FÑ#×.Ñ.¨q°!Õ4ñ5ð )*°¸Ø˜#Ñ˜qÑ!ñ##ˆK˜Òr>   c                 ó>   — | j                   j                  ||d«       y rd  r°  rX  s       r=   rZ  zFuzzy.fix_groupsž
  s   € Ø�‰×"Ñ" 7¨G°TÕ:r>   c                 óF   — | j                   j                  |«      | _         | S r•  r´  r_  s     r=   r`  zFuzzy.pack_characters¡
  rµ  r>   c                 óD   — | j                   j                  «       | _         | S r•  r·  rR  s    r=   rb  zFuzzy.remove_captures¥
  r¸  r>   c                 ó6   — | j                   j                  «       S r•  ©r  re  rR  s    r=   re  zFuzzy.is_atomic©
  rÐ  r>   c                 ó6   — | j                   j                  «       S r•  r½  rR  s    r=   rk  zFuzzy.contains_group¬
  r¾  r>   c                 ó  — g }dD ]D  }| j                   |   }|j                  |d   «       |j                  |d   €t        n|d   «       ŒF dD ]#  }|j                  | j                   d   |   «       Œ% | j                   d   d   }|j                  |€t        n|«       d}|r	|t        z  }| j                   j	                  d«      }|rut
        j                  |ft        |«      z   g|j                  |d«      z   t
        j                  fgz   | j                  j                  |d«      z   t
        j                  fgz   S t
        j                  |ft        |«      z   g| j                  j                  |d«      z   t
        j                  fgz   S )	NÚdiser   r-   r:  r6  r7  r  T)rõ   rZ   r  r�  rÛ   r¥  Ú	FUZZY_EXTrz   r£   rý  r  rÇ  ÚFUZZY)r:   r¥   rY  Ú	argumentsrm   ÚvrŒ   r  s           r=   rs  zFuzzy._compile¯
  s‘  € àˆ	Øò 	BˆAØ× Ñ  Ñ#ˆAØ×Ñ˜Q˜q™TÔ"Ø×Ñ¨!¨A©$¨,�Y¸A¸a¹DÕAð	Bð ò 	:ˆAØ×Ñ˜T×-Ñ-¨fÑ5°aÑ8Õ9ð	:ð ×Ñ˜VÑ$ UÑ+ˆØ×Ñ a i�°QÔ7àˆÙØ”ZÑˆEà×Ñ×#Ñ# FÓ+ˆáÜ—l‘l EÐ*¬U°9Ó-=Ñ=Ð>Ø�l‰l˜7 DÓ)ñ*Ü.0¯g©g¨Z¨Lñ9à�o‰o×%Ñ% g¨tÓ4ñ5ä9;¿¹¸	°{ñCð Dô —(‘(˜EÐ"¤U¨9Ó%5Ñ5Ð6Ø
�/‰/×
!Ñ
! '¨4Ó
0ñ1Ü57·V±V°I°;ñ?ð 	@r>   c                 ó´   — | j                  «       }|rd|z   }t        dj                  t        |z  |«      «       | j                  j                  |dz   |«       y )NrA  z	{}FUZZY{}r-   )Ú_constraints_to_stringr“  r7   r”  r  r™  )r:   r˜  r¥   rõ   s       r=   r™  z
Fuzzy.dumpÍ
  sN   € Ø×1Ñ1Ó3ˆÙØ Ñ+ˆKÜˆk× Ñ ¤¨&¡°+Ó>Ô?Ø�‰×Ñ˜V a™Z¨Õ1r>   c                 ó6   — | j                   j                  «       S r•  rË  rR  s    r=   rþ   zFuzzy.is_emptyÔ
  rÌ  r>   c                 óš   — t        | «      t        |«      u xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r•  )rÑ  r  rõ   rz  s     r=   r|  zFuzzy.__eq__×
  sL   € Ü�T“
œd 5›kÐ)ò E¨d¯o©oØ
×
Ñ
ñ/ò EØ#×/Ñ/°5×3DÑ3DÑDð	Fr>   c                 ó   — t         S r•  r  rR  s    r=   r�  zFuzzy.max_widthÛ
  rU  r>   c                 ó  — g }dD ]^  }| j                   |   \  }}|dk(  rŒd}|dkD  rdj                  |«      }||z  }|�|dj                  |«      z  }|j                  |«       Œ` g }dD ];  }| j                   d   |   }|dkD  sŒ|j                  dj                  ||«      «       Œ= | j                   d   d   }|�7|dkD  r2d	j                  d
j                  |«      |«      }|j                  |«       dj                  |«      S )NÚidsr   rf   z{}<=z<={}r6  r¢  r7  z{}<={}rù   r  )rõ   r7   rZ   r\   )	r:   rõ   rÄ   r  r7  Úconr6  r;  Úlimits	            r=   rÈ  zFuzzy._constraints_to_stringÞ
  s  € Øˆàò 	$ˆDØ×'Ñ'¨Ñ-‰HˆC�Ø�aŠxØàˆCà�QŠwØ—m‘m CÓ(�à�4‰KˆCàˆØ�v—}‘} SÓ)Ñ)�à×Ñ˜sÕ#ð	$ð" ˆØò 	8ˆDØ×$Ñ$ VÑ,¨TÑ2ˆEØ�q‹yØ—‘˜FŸM™M¨%°Ó6Õ7ð	8ð
 × Ñ  Ñ(¨Ñ/ˆØÐ ¨¢Ø—?‘? 3§8¡8¨D£>°5Ó9ˆDØ×Ñ˜tÔ$à�x‰x˜Ó$Ð$r>   r•  )r?   r@   rA   r9   rZ  r`  rb  re  rk  rs  r™  rþ   r|  r�  rÈ  rC   r>   r=   r  r  z
  sA   „ ó!#òF;òòò+ò0ò@ò<2ò*òFòó%r>   r  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)r¼  c           	      óˆ   — t        t        t        t        «       dd «      t	        «       g«      «      }|j                  ||«      S r¤  )rs  rï   rü   rß   ÚGraphemeBoundaryr£   )r:   r¥   rY  Úgrapheme_matchers       r=   rs  zGrapheme._compile   sC   € ô "¤(¬J´v³xÀÀDÓ,IÜ
Ó
ð,ó #ó  Ðð  ×'Ñ'¨°Ó7Ð7r>   c                 óF   — t        dj                  t        |z  «      «       y )Nz
{}GRAPHEME)r“  r7   r”  r—  s      r=   r™  zGrapheme.dump  s   € Üˆl×!Ñ!¤&¨6¡/Ó2Õ3r>   c                 ó   — t         S r•  r  rR  s    r=   r�  zGrapheme.max_width  rU  r>   N)r?   r@   rA   rs  r™  r�  rC   r>   r=   r¼  r¼  ÿ
  s   „ ò8ò4ór>   r¼  c                   ó   — e Zd Zd„ Zy)rÒ  c                 ó(   — t         j                  dfgS r¤  )r¥  ÚGRAPHEME_BOUNDARYrt  s      r=   r£   zGraphemeBoundary.compile  s   € Ü×%Ñ% qÐ)Ð*Ð*r>   N)r?   r@   rA   r£   rC   r>   r=   rÒ  rÒ    s   „ ó+r>   rÒ  c                   ó‚   — e Zd Zej                  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y)rû   ÚGREEDY_REPEATc                 óX   — t         j                  | «       || _        || _        || _        y r•  )rO  r9   r  rÿ   r   )r:   r  rÿ   r   s       r=   r9   zGreedyRepeat.__init__  s%   € Ü×Ñ˜4Ô Ø$ˆŒØ"ˆŒØ"ˆ�r>   c                 ó>   — | j                   j                  |||«       y r•  r°  rX  s       r=   rZ  zGreedyRepeat.fix_groups  r±  r>   c                 óˆ   — | j                   j                  ||«      } t        | «      || j                  | j                  «      S r•  )r  r¶   rÑ  rÿ   r   ©r:   r–   r¥   r  s       r=   r¶   zGreedyRepeat.optimise  s5   € Ø—_‘_×-Ñ-¨d°GÓ<ˆ
àŒt�D‹z˜* d§n¡n°d·n±nÓEÐEr>   c                 óF   — | j                   j                  |«      | _         | S r•  r´  r_  s     r=   r`  zGreedyRepeat.pack_characters$  rµ  r>   c                 óD   — | j                   j                  «       | _         | S r•  r·  rR  s    r=   rb  zGreedyRepeat.remove_captures(  r¸  r>   c                 ól   — | j                   | j                  k(  xr | j                  j                  «       S r•  )rÿ   r   r  re  rR  s    r=   re  zGreedyRepeat.is_atomic,  s'   € Ø�~‰~ §¡Ñ/ÒO°D·O±O×4MÑ4MÓ4OÐOr>   c                  ó   — yrj  rC   rR  s    r=   rh  zGreedyRepeat.can_be_affix/  rl  r>   c                 ó6   — | j                   j                  «       S r•  r½  rR  s    r=   rk  zGreedyRepeat.contains_group2  r¾  r>   c                 ó|   — | j                   j                  |«      }| j                  dk(  r|j                  d «       |S rŒ  )r  ro  rÿ   r²   )r:   r¥   r¤   s      r=   ro  zGreedyRepeat.get_firstset5  s2   € Ø�_‰_×)Ñ)¨'Ó2ˆØ�>‰>˜QÒØ�F‰F�4ŒLàˆ	r>   c                 ó0  — | j                   | j                  g}| j                  €|j                  t        «       n|j                  | j                  «       | j
                  j                  ||«      }|sg S t        |«      g|z   t        j                  fgz   S r•  )
r�  rÿ   r   rZ   r  r  r£   rz   r¥  rÇ  )r:   r¥   rY  Úrepeatr  s        r=   rs  zGreedyRepeat._compile<  sv   € Ø—,‘, §¡Ð/ˆØ�>‰>Ð!Ø�M‰Mœ)Õ$à�M‰M˜$Ÿ.™.Ô)à—_‘_×,Ñ,¨W°eÓ<ˆ
ÙØˆIä�v“� *Ñ,´·±°
¨|Ñ;Ð<r>   c                 óè   — | j                   €d}n| j                   }t        dj                  t        |z  | j                  | j
                  |«      «       | j                  j                  |dz   |«       y )NÚINFú
{}{} {} {}r-   )r   r“  r7   r”  r•  rÿ   r  r™  ©r:   r˜  r¥   rÏ  s       r=   r™  zGreedyRepeat.dumpI  s^   € Ø�>‰>Ð!Ø‰Eà—N‘NˆEÜˆl×!Ñ!¤&¨6¡/°4·=±=Ø
�.‰.˜%ó!ô 	"ð 	�‰×Ñ˜V a™Z¨Õ1r>   c                 ó6   — | j                   j                  «       S r•  rË  rR  s    r=   rþ   zGreedyRepeat.is_emptyS  rÌ  r>   c                 óÀ   — t        | «      t        |«      u xrG | j                  | j                  | j                  f|j                  |j                  |j                  fk(  S r•  )rÑ  r  rÿ   r   rz  s     r=   r|  zGreedyRepeat.__eq__V  sT   € Ü�D‹zœT %›[Ð(ò ¨d¯o©o¸t¿~¹~Ø
�.‰.ð.Ø#×.Ñ.°·±Ø
�/‰/ðñ.ð 	r>   c                 ót   — | j                   €t        S | j                  j                  «       | j                   z  S r•  )r   r  r  r�  rR  s    r=   r�  zGreedyRepeat.max_width[  s.   € Ø�>‰>Ð!ÜÐà�‰×(Ñ(Ó*¨T¯^©^Ñ;Ð;r>   c                 ó`  — | j                   €t        n| j                   }| j                  dk(  r/| j                  j	                  «       |z  }t        |t        «      d fS | j                  j                  |«      \  }}|r||fS | j                  j	                  «       |z  }t        |t        «      d fS rŒ  )r   r  rÿ   r  r�  r  r‚  )r:   r¥   r   rt   ÚofsÚreqs         r=   r‚  z GreedyRepeat.get_required_stringa  s˜   € Ø!%§¡Ð!7•I¸T¿^¹^ˆ	Ø�>‰>˜QÒØ—‘×)Ñ)Ó+¨iÑ7ˆAÜ�qœ)Ó$ dÐ*Ð*à—?‘?×6Ñ6°wÓ?‰ˆˆSÙØ˜�8ˆOà�O‰O×%Ñ%Ó'¨)Ñ3ˆÜ�1”iÓ  $Ð&Ð&r>   N)r?   r@   rA   r¥  rÚ  r�  r•  r9   rZ  r¶   r`  rb  re  rh  rk  ro  rs  r™  rþ   r|  r�  r‚  rC   r>   r=   rû   rû     s_   „ Ø×Ñ€GØ€Hò#ò<òFò
òòPòò0òò=ò2ò*òò
<ó'r>   rû   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)rý   c                  ó   — yrd  rC   rR  s    r=   re  zPossessiveRepeat.is_atomico  rf  r>   c                 óp  — | j                   j                  ||«      }|sg S | j                  | j                  g}| j                  €|j                  t        «       n|j                  | j                  «       t        j                  ft        |«      g|z   t        j                  ft        j                  fgz   S r•  )r  r£   r�  rÿ   r   rZ   r  r¥  rÆ  rz   rÇ  )r:   r¥   rY  r  ræ  s        r=   rs  zPossessiveRepeat._compiler  s�   € Ø—_‘_×,Ñ,¨W°eÓ<ˆ
ÙØˆIà—,‘, §¡Ð/ˆØ�>‰>Ð!Ø�M‰Mœ)Õ$à�M‰M˜$Ÿ.™.Ô)ä—)‘)�¤ f£Ð.°Ñ;ÄÇÁ¸zÜ�6‰6ˆ*ð?ñ ð 	r>   c                 ó0  — t        dj                  t        |z  «      «       | j                  €d}n| j                  }t        dj                  t        |dz   z  | j                  | j
                  |«      «       | j                  j                  |dz   |«       y )NrÉ  rè  ré  r-   rN   )r“  r7   r”  r   r•  rÿ   r  r™  rê  s       r=   r™  zPossessiveRepeat.dump€  sz   € Üˆj×Ñ¤¨¡Ó0Ô1à�>‰>Ð!Ø‰Eà—N‘NˆEÜˆl×!Ñ!¤&¨F°Q©JÑ"7¸¿¹Ø
�.‰.˜%ó!ô 	"ð 	�‰×Ñ˜V a™Z¨Õ1r>   N)r?   r@   rA   re  rs  r™  rC   r>   r=   rý   rý   n  s   „ òòó
2r>   rý   c                   ól   — e 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y)r  c                 óf   — t         j                  | «       || _        || _        || _        d | _        y r•  )rO  r9   r–   r^  r  rP  )r:   r–   r^  r  s       r=   r9   zGroup.__init__�  s,   € Ü×Ñ˜4Ô ØˆŒ	ØˆŒ
Ø$ˆŒàˆ�r>   c                 óŠ   — | ||f| j                   j                  | j                  <   | j                  j	                  |||«       y r•  )r–   Údefined_groupsr^  r  rZ  rX  s       r=   rZ  zGroup.fix_groups•  s7   € Ø04°g¸uÐ/Eˆ�	‰	× Ñ  §¡Ñ,Ø�‰×"Ñ" 7¨G°UÕ;r>   c                 ó|   — | j                   j                  ||«      }t        | j                  | j                  |«      S r•  )r  r¶   r  r–   r^  rÞ  s       r=   r¶   zGroup.optimise™  s/   € Ø—_‘_×-Ñ-¨d°GÓ<ˆ
ä�T—Y‘Y §
¡
¨JÓ7Ð7r>   c                 óF   — | j                   j                  |«      | _         | S r•  r´  r_  s     r=   r`  zGroup.pack_charactersž  rµ  r>   c                 ó6   — | j                   j                  «       S r•  r·  rR  s    r=   rb  zGroup.remove_captures¢  ó   € Ø�‰×.Ñ.Ó0Ð0r>   c                 ó6   — | j                   j                  «       S r•  r¿  rR  s    r=   re  zGroup.is_atomic¥  rÐ  r>   c                  ó   — yrj  rC   rR  s    r=   rh  zGroup.can_be_affix¨  rl  r>   c                  ó   — yrd  rC   rR  s    r=   rk  zGroup.contains_group«  rf  r>   c                 ó8   — | j                   j                  |«      S r•  rÀ  rn  s     r=   ro  zGroup.get_firstset®  rÁ  r>   c                 ó6   — | j                   j                  «       S r•  rÃ  rR  s    r=   rq  zGroup.has_simple_start±  rÄ  r>   c                 ó  — g }| j                   x}}|dk  r2| j                  j                  |   }| j                  j                  |z
  }| j                   ||f}| j                  j                  j                  |«      }|�|t        j                  |fgz  }|t        j                  t        | «      ||fgz  }|| j                  j                  ||«      z  }|t        j                  fgz  }|�|t        j                  fgz  }|S rŒ  )r^  r–   Úprivate_groupsru  Ú	call_refsrÛ   r¥  r`  ÚGROUPr  r  r£   rÇ  )r:   r¥   rY  r¹   Úpublic_groupÚprivate_groupr.  r]  s           r=   rs  zGroup._compile´  sô   € Øˆà'+§z¡zÐ1ˆ�}Ø˜1ÒØŸ9™9×3Ñ3°MÑBˆLØ ŸI™I×1Ñ1°MÑAˆMà�j‰j˜' 5Ð(ˆØ�i‰i×!Ñ!×%Ñ% cÓ*ˆØˆ?Ø”b—k‘k 3Ð'Ð(Ñ(ˆDà”"—(‘(œC G Ó,¨m¸\ÐJÐKÑKˆØ�—‘×'Ñ'¨°Ó7Ñ7ˆØ”"—&‘&��Ñˆàˆ?Ø”b—f‘f�Z�LÑ ˆDàˆr>   c                 óº   — | j                   }|dk  r	t        |   }t        dj                  t        |z  |«      «       | j
                  j                  |dz   |«       y )Nr   z
{}GROUP {}r-   )r^  r  r“  r7   r”  r  r™  )r:   r˜  r¥   r^  s       r=   r™  z
Group.dumpÊ  sM   € Ø—
‘
ˆØ�1Š9Ü" 5Ñ)ˆEÜˆl×!Ñ!¤&¨6¡/°5Ó9Ô:Ø�‰×Ñ˜V a™Z¨Õ1r>   c                 ó”   — t        | «      t        |«      u xr1 | j                  | j                  f|j                  |j                  fk(  S r•  )rÑ  r^  r  rz  s     r=   r|  zGroup.__eq__Ñ  sB   € Ü�T“
œd 5›kÐ)ò *¨t¯z©z¸4¿?¹?Ð.KØ�;‰;˜×(Ñ(Ð
)ñ/*ð 	+r>   c                 ó6   — | j                   j                  «       S r•  rÏ  rR  s    r=   r�  zGroup.max_widthÕ  rÐ  r>   c                 ó8   — | j                   j                  |«      S r•  rÒ  rn  s     r=   r‚  zGroup.get_required_stringØ  rÓ  r>   c                 ó   — d | _         y r•  rW  rR  s    r=   rX  zGroup.__del__Û  rY  r>   N)r?   r@   rA   r9   rZ  r¶   r`  rb  re  rh  rk  ro  rq  rs  r™  r|  r�  r‚  rX  rC   r>   r=   r  r  Œ  sR   „ òò<ò8ò
ò1ò+òòò5ò2òò,2ò+ò+ò<ór>   r  c                   ó(   — e Zd Zej                  ZdZy)ÚKeepÚKEEPN)r?   r@   rA   r¥  r  r�  r•  rC   r>   r=   r  r  Þ  s   „ Ø�g‰g€GØ�Hr>   r  c                   ó(   — e Zd Zej                  ZdZy)rü   ÚLAZY_REPEATN)r?   r@   rA   r¥  r  r�  r•  rC   r>   r=   rü   rü   â  r¥  r>   rü   c                   ój   — e Zd Z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„ Zd„ Zd„ Zd„ Zy)ri  ÚAHEADÚBEHINDrJ  c                 ó|   — t         j                  | «       t        |«      | _        t        |«      | _        || _        y r•  )rO  r9   r¡   rj  r±   r  )r:   rj  r±   r  s       r=   r9   zLookAround.__init__é  s-   € Ü×Ñ˜4Ô Ü˜6“lˆŒÜ˜X›ˆŒØ$ˆ�r>   c                 óR   — | j                   j                  || j                  |«       y r•  )r  rZ  rj  rX  s       r=   rZ  zLookAround.fix_groupsï  s   € Ø�‰×"Ñ" 7¨D¯K©K¸Õ?r>   c                 óÌ   — | j                   j                  || j                  «      }| j                  r|j	                  «       r|S t        | j                  | j                  |«      S r•  )r  r¶   rj  r±   rþ   ri  rÞ  s       r=   r¶   zLookAround.optimiseò  sK   € Ø—_‘_×-Ñ-¨d°D·K±KÓ@ˆ
Ø�=Š=˜Z×0Ñ0Ô2ØÐä˜$Ÿ+™+ t§}¡}°jÓAÐAr>   c                 óF   — | j                   j                  |«      | _         | S r•  r´  r_  s     r=   r`  zLookAround.pack_charactersù  rµ  r>   c                 ó6   — | j                   j                  «       S r•  r·  rR  s    r=   rb  zLookAround.remove_capturesý  rü  r>   c                 ó6   — | j                   j                  «       S r•  r¿  rR  s    r=   re  zLookAround.is_atomic   rÐ  r>   c                 ó6   — | j                   j                  «       S r•  rº  rR  s    r=   rh  zLookAround.can_be_affix  r»  r>   c                 ó6   — | j                   j                  «       S r•  r½  rR  s    r=   rk  zLookAround.contains_group  r¾  r>   c                 ó†   — | j                   r*| j                  |k(  r| j                  j                  |«      S t	        d g«      S r•  )r±   rj  r  ro  r®   rn  s     r=   ro  zLookAround.get_firstset	  s5   € Ø�=Š=˜TŸ[™[¨GÒ3Ø—?‘?×/Ñ/°Ó8Ð8ä�D�6‹{Ðr>   c                 ó  — d}| j                   r	|t        z  }|r	|t        z  }|r	|t        z  }t        j
                  |t        | j                   «      fg| j                  j                  | j                  «      z   t        j                  fgz   S rŒ  )r±   r�  rŽ  r�  r¥  Ú
LOOKAROUNDr  rj  r  r£   rÇ  r‘  s       r=   rs  zLookAround._compile  s~   € ØˆØ�=Š=Ø”[Ñ ˆEÙØ”XÑˆEÙØ”ZÑˆEä—-‘- ¬°·±¨OÓ(<Ð=Ð>Ø
�/‰/×
!Ñ
! $§+¡+Ó
.ñ/Ü35·6±6°*°ñ>ð 	?r>   c                 óì   — t        dj                  t        |z  | j                  | j                     t
        | j                     «      «       | j                  j                  |dz   | j                  «       y )Nz{}LOOK{} {}r-   )	r“  r7   r”  Ú	_dir_textrj  r–  r±   r  r™  r—  s      r=   r™  zLookAround.dump  sV   € Üˆm×"Ñ"¤6¨F¡?Ø
�.‰.˜Ÿ™Ñ
%¤x°·±Ñ'>ó@ô 	Aà�‰×Ñ˜V a™Z¨¯©Õ5r>   c                 óR   — | j                   xr | j                  j                  «       S r•  )r±   r  rþ   rR  s    r=   rþ   zLookAround.is_empty   s   € Ø�}‰}Ò; §¡×!9Ñ!9Ó!;Ð;r>   c                 óÀ   — t        | «      t        |«      u xrG | j                  | j                  | j                  f|j                  |j                  |j                  fk(  S r•  )rÑ  rj  r±   r  rz  s     r=   r|  zLookAround.__eq__#  sT   € Ü�D‹zœT %›[Ð(ò O¨d¯k©k¸4¿=¹=Ø
�/‰/ð.Ø$Ÿ|™|¨U¯^©^¸U×=MÑ=MÐNñ.Oð 	Or>   c                  ó   — yrŒ  rC   rR  s    r=   r�  zLookAround.max_width'  r›  r>   N)r?   r@   rA   r!  r9   rZ  r¶   r`  rb  re  rh  rk  ro  rs  r™  rþ   r|  r�  rC   r>   r=   ri  ri  æ  sU   „ Ø xÑ0€Iò%ò@òBòò1ò+ò.ò0òò
?ò6ò
<òOór>   ri  c                   ój   — e Zd Z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„ Zd„ Zd„ Zd„ Zy)rq  r  r  rJ  c                 ó˜   — t         j                  | «       t        |«      | _        t        |«      | _        || _        || _        || _        y r•  )rO  r9   r¡   rj  r±   r  r„  r…  )r:   rj  r±   r  r„  r…  s         r=   r9   zLookAroundConditional.__init__-  s;   € Ü×Ñ˜4Ô Ü˜6“lˆŒÜ˜X›ˆŒØ$ˆŒØ ˆŒØˆ�r>   c                 ó²   — | j                   j                  |||«       | j                  j                  |||«       | j                  j                  |||«       y r•  )r  rZ  r„  r…  rX  s       r=   rZ  z LookAroundConditional.fix_groups5  sD   € Ø�‰×"Ñ" 7¨G°UÔ;Ø�‰× Ñ  ¨'°5Ô9Ø�‰×Ñ ¨°%Õ8r>   c                 ó,  — | j                   j                  || j                  «      }| j                  j                  || j                  «      }| j                  j                  || j                  «      }t        | j                  | j                  |||«      S r•  )r  r¶   rj  r„  r…  rq  r±   )r:   r–   r¥   r  r„  r…  s         r=   r¶   zLookAroundConditional.optimise:  sp   € Ø—_‘_×-Ñ-¨d°D·K±KÓ@ˆ
Ø—=‘=×)Ñ)¨$°·±Ó<ˆØ—,‘,×'Ñ'¨¨d¯k©kÓ:ˆä$ T§[¡[°$·-±-ÀØ
�Góð 	r>   c                 óÆ   — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  j                  |«      | _        | S r•  )r  r`  r„  r…  r_  s     r=   r`  z%LookAroundConditional.pack_charactersB  sI   € ØŸ/™/×9Ñ9¸$Ó?ˆŒØŸ™×5Ñ5°dÓ;ˆŒØ—|‘|×3Ñ3°DÓ9ˆŒØˆr>   c                 ó¾   — | j                   j                  «       | _         | j                  j                  «       | _        | j                  j                  «       | _        y r•  )r  rb  r„  r…  rR  s    r=   rb  z%LookAroundConditional.remove_capturesH  s>   € ØŸ/™/×9Ñ9Ó;ˆŒØŸ™×5Ñ5Ó7ˆŒØ—|‘|×3Ñ3Ó5ˆ�r>   c                 ó¦   — | j                   j                  «       xr6 | j                  j                  «       xr | j                  j                  «       S r•  )r  re  r„  r…  rR  s    r=   re  zLookAroundConditional.is_atomicM  s@   € Ø—‘×)Ñ)Ó+ò #°·±×0GÑ0GÓ0Iò #Ø
�,‰,×
 Ñ
 Ó
"ð	$r>   c                 ó¦   — | j                   j                  «       xr6 | j                  j                  «       xr | j                  j                  «       S r•  )r  rh  r„  r…  rR  s    r=   rh  z"LookAroundConditional.can_be_affixQ  s@   € Ø—‘×,Ñ,Ó.ò *°4·=±=×3MÑ3MÓ3Oò *Ø�l‰l×'Ñ'Ó)ð	+r>   c                 ó¦   — | j                   j                  «       xs6 | j                  j                  «       xs | j                  j                  «       S r•  )r  rk  r„  r…  rR  s    r=   rk  z$LookAroundConditional.contains_groupU  sD   € Ø—‘×.Ñ.Ó0ò JØ
�-‰-×
&Ñ
&Ó
(òJØ,0¯L©L×,GÑ,GÓ,Ið	Kr>   c                 óZ  — t         j                  t        | j                  «      t        | j                   «      fg}|j                  | j                  j                  | j                  |«      «       |j                  t         j                  f«       |j                  | j                  j                  ||«      «       | j                  j                  ||«      }|r1|j                  t         j                  f«       |j                  |«       |j                  t         j                  f«       |S r•  )r¥  ÚCONDITIONALr  r±   rj  r¸   r  r£   rZ   rý  r„  r…  rÇ  r‘  s        r=   rs  zLookAroundConditional._compileY  sÇ   € Ü—‘¤ T§]¡]Ó!3´S¸T¿[¹[¸Ó5IÐJÐKˆØ�‰�D—O‘O×+Ñ+¨D¯K©K¸Ó?Ô@Ø�‰”R—W‘W�KÔ Ø�‰�D—M‘M×)Ñ)¨'°5Ó9Ô:Ø—<‘<×'Ñ'¨°Ó7ˆÙØ�K‰KœŸ™˜Ô$Ø�K‰K˜Ô!à�‰”R—V‘V�JÔàˆr>   c                 ó"  — t        dj                  t        |z  | j                  | j                     t
        | j                     «      «       | j                  j                  |dz   | j                  «       t        dj                  t        |z  «      «       | j                  j                  |dz   |«       | j                  j                  «       sAt        dj                  t        |z  «      «       | j                  j                  |dz   |«       y y )Nz{}CONDITIONAL {} {}r-   z{}EITHERrÿ  )r“  r7   r”  r!  rj  r–  r±   r  r™  r„  r…  rþ   r—  s      r=   r™  zLookAroundConditional.dumpg  sÈ   € ÜÐ#×*Ñ*¬6°F©?Ø
�.‰.˜Ÿ™Ñ
%¤x°·±Ñ'>ó@ô 	Aà�‰×Ñ˜V a™Z¨¯©Ô5Üˆj×Ñ¤¨¡Ó0Ô1Ø�‰×Ñ˜6 A™: wÔ/Ø�|‰|×$Ñ$Ô&Ü�&—-‘-¤¨¡Ó0Ô1Ø�L‰L×Ñ˜f q™j¨'Õ2ð 'r>   c                 ó¦   — | j                   j                  «       xr | j                  j                  «       xs | j                  j                  «       S r•  )r  rþ   r„  r…  rR  s    r=   rþ   zLookAroundConditional.is_emptyq  s>   € Ø—‘×(Ñ(Ó*ÒG¨t¯}©}×/EÑ/EÓ/Gò "Ø
�,‰,×
Ñ
Ó
!ð	#r>   c                 óÀ   — t        | «      t        |«      u xrG | j                  | j                  | j                  f|j                  |j                  |j                  fk(  S r•  )rÑ  r  r„  r…  rz  s     r=   r|  zLookAroundConditional.__eq__u  sT   € Ü�D‹zœT %›[Ð(ò M¨d¯o©o¸t¿}¹}Ø
�,‰,ð.Ø!×,Ñ,¨e¯n©n¸e¿m¹mÐLñ.Mð 	Mr>   c                 óz   — t        | j                  j                  «       | j                  j                  «       «      S r•  r—  rR  s    r=   r�  zLookAroundConditional.max_widthy  r˜  r>   c                 ó&   — | j                  «       d fS r•  r€  rn  s     r=   r‚  z)LookAroundConditional.get_required_string|  rƒ  r>   N)r?   r@   rA   r!  r9   rZ  r¶   r`  rb  re  rh  rk  rs  r™  rþ   r|  r�  r‚  rC   r>   r=   rq  rq  *  sU   „ Ø xÑ0€Iòò9ò
òò6ò
$ò+òKòò3ò#òMòHó&r>   rq  c                   ó   — e Zd Zd„ Zd„ Zy)rl  c                 ó   — || _         y r•  )r¹   )r:   r¹   s     r=   r9   zPrecompiledCode.__init__€  rY  r>   c                 ó.   — t        | j                  «      gS r•  )rz   r¹   rt  s      r=   rs  zPrecompiledCode._compileƒ  s   € Ü�d—i‘iÓ Ð!Ð!r>   Nra  rC   r>   r=   rl  rl    s   „ òó"r>   rl  c                   ó0  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdedfd„Zd„ Zdd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zy)r/  FTc                 ó  — t         j                  | «       || _        t        |«      | _        t
        |   | _        t        |«      | _        | j                  | j                  | j                  | j                  | j                  f| _	        y r•  )
rO  r9   r^   r¡   r±   rT  r©   r«   rY   rQ  rd  s        r=   r9   zProperty.__init__�  sb   € ä×Ñ˜4Ô ØˆŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒà—^‘^ T§Z¡Z°·±Ø
�/‰/˜4Ÿ>™>ð+ˆ�	r>   c                 ó2   — t        | j                  |||«      S r•  )r/  r^   rV  s       r=   rU  zProperty.rebuild˜  s   € Ü˜Ÿ
™
 H¨j¸)ÓDÐDr>   c                 ó   — | S r•  rC   rg  s       r=   r¶   zProperty.optimise›  r]  r>   c                 ó   — t        | g«      S r•  r‰  rn  s     r=   ro  zProperty.get_firstsetž  rŠ  r>   c                  ó   — yrd  rC   rR  s    r=   rq  zProperty.has_simple_start¡  rf  r>   c                 óÂ   — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }| j
                  | j                  |f   || j                  fgS rŒ  )r±   r�  r«   rk  rŽ  r�  r©   r^   r‘  s       r=   rs  zProperty._compile¤  s\   € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸ÀÇ
Á
ÐKÐLÐLr>   c           
      óò   — t         | j                  dz	     }|d   |d   | j                  dz     }}t        dj                  t        |z  t
        | j                     ||t        | j                     «      «       y )NrQ   r   r-   iÿÿ  z{}PROPERTY {} {}:{}{})	ÚPROPERTY_NAMESr^   r“  r7   r”  r–  r±   rq  r©   )r:   r˜  r¥   rË   rÄ   r^   s         r=   r™  zProperty.dump®  sm   € Ü˜dŸj™j¨BÑ.Ñ/ˆØ˜1‘g˜t A™w t§z¡z°FÑ':Ñ;ˆeˆÜÐ%×,Ñ,¬V°f©_Ü
�4—=‘=Ñ
! 4¨´	¸$¿/¹/Ñ0JóLõ 	Mr>   c                 ó\   — t        j                  | j                  |«      | j                  k(  S r•  )r”   Úhas_property_valuer^   r±   ru  s     r=   rv  zProperty.matches´  s"   € Ü×(Ñ(¨¯©°RÓ8¸D¿M¹MÑIÐIr>   c                  ó   — yr¤  rC   rR  s    r=   r�  zProperty.max_width·  r›  r>   Nr}  )r?   r@   rA   r¯   r¥  ÚPROPERTYr   ÚPROPERTY_IGNr   r4  ÚPROPERTY_REVÚPROPERTY_IGN_REVr�  r9   rU  r¶   ro  rq  rs  r™  rv  r�  rC   r>   r=   r/  r/  †  s¶   „ Ø˜ˆ §¡¨j¸%Ð-@Ø‡o�o˜ %Ð(¨"¯+©+¸ÈÐ7NØ‡o�o˜ �~ r§¡¸ÀTÐ8JØ×Ñ˜H dÐ+¨R¯_©_¸~Ø
ð?Ø× Ñ ð	"€Gð (,¸Øó	+òEóòòòMòMòJór>   r/  c                   ó   — e Zd ZdZd„ Zy)ÚPruneÚPRUNEc                 ó&   — t         j                  fgS r•  )r¥  rJ  rt  s      r=   rs  zPrune._compile½  s   € Ü—‘�ˆ~Ðr>   Nr·  rC   r>   r=   rI  rI  º  s   „ Ø€Hór>   rI  c                   ó(  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdedfd„Zd„ Zdd„Zd„ Zd„ Zd	„ Zd
„ Zy)r  FTÚRANGEc                 ó8  — t         j                  | «       || _        || _        t	        |«      | _        t        |   | _        t	        |«      | _        | j                  | j                  | j                  | j
                  | j                  | j                  f| _
        y r•  )rO  r9   Úlowerr!  r¡   r±   rT  r©   r«   rY   rQ  )r:   rO  r!  r±   r©   r«   s         r=   r9   zRange.__init__Ç  so   € ä×Ñ˜4Ô ØˆŒ
ØˆŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒà—^‘^ T§Z¡Z°·±¸T¿]¹]Ø
�/‰/˜4Ÿ>™>ð+ˆ�	r>   c                 óH   — t        | j                  | j                  |||«      S r•  )r  rO  r!  rV  s       r=   rU  zRange.rebuildÓ  s   € Ü�T—Z‘Z §¡¨X°zÀ9ÓMÐMr>   c                 ó‚  — | j                   r| j                  t        z  r|r| S |j                  t        z  r| j                  t
        z  t
        k7  r| S t        j                  «       }g }|D ]…  }| j                  t        |«      cxk  r| j                  k  sŒ,n Œ/t        j                  t        |«      }|j                  t        |D �cg c]  }t        |«      ‘Œ c}| j                  ¬«      «       Œ‡ |s| S t        |«      | j                  | j                  z
  dz   k  r|j!                  d| «       t#        |«      S c c}w )Nr¨   r-   r   )r±   r©   r   rŒ   r   r4  r”   r:  rO  rî   r!  r•   r9  rZ   r»  r]   rà  rÐ   )	r:   r–   r¥   r­   r<  rñ  rò   r;  r»   s	            r=   r¶   zRange.optimiseÖ  s  € à�}Š} T§_¡_´zÒ%AÁfØˆKð —‘œgÒ%¨4¯?©?¼^Ñ+KÜ
ò+àˆKô !×6Ñ6Ó8ˆð ˆØ!ò 	/ˆBØ�z‰zœS ›WÔ2¨¯
©
Ö2Ü×)Ñ)Ô*;¸RÓ@�Ø—‘œV°VÖ$<°¤S¨¥VÒ$<Ø!Ÿ_™_ô.õ /ð	/ñ àˆKäˆu‹:˜Ÿ
™
 T§Z¡ZÑ/°!Ñ3Ò3à�L‰L˜˜DÔ!ä�e‹}Ðùò %=s   ÃD<c                 óØ   — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }| j
                  | j                  |f   || j                  | j                  fgS rŒ  )	r±   r�  r«   rk  rŽ  r�  r©   rO  r!  r‘  s       r=   rs  zRange._compileõ  si   € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸ÀÇ
Á
Ø
�*‰*ðð ð 	r>   c           
      óF  — t        t        | j                  «      «      j                  d«      }t        t        | j                  «      «      j                  d«      }t        dj                  t        |z  t        | j                     ||t        | j                     «      «       y )Nrn  z{}RANGE {} {} {}{})ro  r7  rO  rp  r!  r“  r7   r”  r–  r±   rq  r©   )r:   r˜  r¥   Údisplay_lowerÚdisplay_uppers        r=   r™  z
Range.dump   st   € Üœc $§*¡*›oÓ.×5Ñ5°dÓ;ˆÜœc $§*¡*›oÓ.×5Ñ5°dÓ;ˆÜÐ"×)Ñ)¬&°6©/Ü
�4—=‘=Ñ
! =°-Ü
�D—O‘OÑ
$ó&õ 	'r>   c                 ó~   — | j                   |cxk  xr | j                  k  | j                  k(  S c | j                  k(  S r•  )rO  r!  r±   ru  s     r=   rv  zRange.matches  s2   € Ø—
‘
˜bÖ. D§J¡JÑ.°4·=±=Ñ@Ð@Ñ.°4·=±=Ñ@Ð@r>   c                  ó   — yr¤  rC   rR  s    r=   r�  zRange.max_width
  r›  r>   Nr}  )r?   r@   rA   r¯   r¥  rM  r   Ú	RANGE_IGNr   r4  Ú	RANGE_REVÚRANGE_IGN_REVr�  r•  r9   rU  r¶   rs  r™  rv  r�  rC   r>   r=   r  r  À  s¬   „ Ø˜ˆ §¡¨:°uÐ*=¸r¿|¹|Ø�Ð˜Ÿ™ N°EÐ#:¸B¿L¹LØˆt€n�b—l‘l Z°Ð$6¸×8HÑ8HØ�Ð˜Ÿ™ ~°tÐ&<¸b×>NÑ>NðP€Gð €Hà.2¸vØó
+òNóò>	ò'òAór>   r  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZefd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zy
)rÃ   FTc                 óÄ   — t         j                  | «       || _        || _        || _        t
        |   | _        | j                  | j                  | j                  f| _        y r•  )	rO  r9   r–   r^  rÅ   rT  r©   rY   rQ  )r:   r–   r^  rÅ   r©   s        r=   r9   zRefGroup.__init__  sK   € Ü×Ñ˜4Ô ØˆŒ	ØˆŒ
Ø ˆŒÜ1°*Ñ=ˆŒà—N‘N D§J¡J°·±Ð?ˆ�	r>   c                 óÈ  — 	 t        | j                  «      | _        d| j                  cxk  r| j                  j                  k  sn t        d|| j                  «      ‚| j                  | j                  | j                  f| _        y # t        $ rQ 	 | j                  j                  | j                     | _        n$# t
        $ r t        d|| j                  «      ‚w xY wY ŒÄw xY w)NrD  r-   rC  )r  r^  r-  r–   rG  r~   r&   rÅ   ru  rY   r©   rQ  rX  s       r=   rZ  zRefGroup.fix_groups  s¾   € ð	EÜ˜TŸZ™Z›ˆDŒJð �D—J‘JÔ7 $§)¡)×"7Ñ"7Ô7ÜÐ1°7¸D¿M¹MÓJÐJà—N‘N D§J¡J°·±Ð?ˆ�	øô ò 	EðEØ!ŸY™Y×2Ñ2°4·:±:Ñ>�•
øÜò EÜ˜O¨W°d·m±mÓDÐDðEúñ ð	Eús)   ‚B Â	C!Â(B:Â9C!Â:!CÃC!Ã C!c                 ó8   — t        dt        | j                  «      ‚rK  rL  rR  s    r=   rb  zRefGroup.remove_captures+  rM  r>   c                 ón   — d}|r	|t         z  }| j                  | j                  |f   || j                  fgS rŒ  )rŽ  r�  r©   r^  r‘  s       r=   rs  zRefGroup._compile.  s:   € ØˆÙØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸ÀÇ
Á
ÐKÐLÐLr>   c                 ó€   — t        dj                  t        |z  | j                  t        | j
                     «      «       y )Nz{}REF_GROUP {}{})r“  r7   r”  r^  rq  r©   r—  s      r=   r™  zRefGroup.dump4  s0   € ÜÐ ×'Ñ'¬°©¸¿¹Ü
�D—O‘OÑ
$ó&õ 	'r>   c                 ó   — t         S r•  r  rR  s    r=   r�  zRefGroup.max_width8  rU  r>   c                 ó   — d | _         y r•  rW  rR  s    r=   rX  zRefGroup.__del__;  rY  r>   N)r?   r@   rA   r¯   r¥  Ú	REF_GROUPr   ÚREF_GROUP_IGNr   r4  ÚREF_GROUP_FLDÚREF_GROUP_REVÚREF_GROUP_IGN_REVÚREF_GROUP_FLD_REVr�  r9   rZ  rb  rs  r™  r�  rX  rC   r>   r=   rÃ   rÃ     s´   „ Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð :@ó @ò@òKòMò'òór>   rÃ   c                   ó(   — e Zd Zej                  ZdZy)r·  ÚSEARCH_ANCHORN)r?   r@   rA   r¥  rj  r�  r•  rC   r>   r=   r·  r·  >  r¨  r>   r·  c                   óž   — 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„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zy)rï   Nc                 óD   — t         j                  | «       |€g }|| _        y r•  )rO  r9   rñ  )r:   rñ  s     r=   r9   zSequence.__init__C  s!   € Ü×Ñ˜4Ô Øˆ=ØˆEàˆ�
r>   c                 óL   — | j                   D ]  }|j                  |||«       Œ y r•  )rñ  rZ  )r:   r1   r¥   rY  rr   s        r=   rZ  zSequence.fix_groupsJ  s%   € Ø—‘ò 	2ˆAØ�L‰L˜ '¨5Õ1ñ	2r>   c                 óÜ   — g }| j                   D ]Q  }|j                  ||«      }t        |t        «      r|j	                  |j                   «       ŒA|j                  |«       ŒS t        |«      S r•  )rñ  r¶   r.   rï   r¸   rZ   rM  )r:   r–   r¥   rñ  rr   s        r=   r¶   zSequence.optimiseN  s\   € àˆØ—‘ò 	 ˆAØ—
‘
˜4 Ó)ˆAÜ˜!œXÔ&Ø—‘˜QŸW™WÕ%à—‘˜Q•ð	 ô ˜UÓ#Ð#r>   c                 óL  ‡— g }g }t         }| j                  D �]g  }t        |«      t        u r‰|j                  r}|j
                  sq|j                  |k7  rF|j                  st        ‰|j                  «      r$t        j                  ‰|||«       |j                  }|j                  |j                  «       Œžt        |«      t        u st        |«      t        u rp|j                  |k7  rD|j                  st        ˆfd„|D «       «      r$t        j                  ‰|||«       |j                  }|j                  |j                   «       �Œ0t        j                  ‰|||«       |j                  |j#                  ‰«      «       �Œj t        j                  ‰|||«       t%        |«      S )z+Packs sequences of characters into strings.c              3   ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wr•  ©r�   ©r˜  r»   r–   s     €r=   r™  z+Sequence.pack_characters.<locals>.<genexpr>o  s   øè ø€ ò +"À1¬:°d¸A×+>ñ +"ùó   ƒ)r¯   rñ  rÑ  r°   r±   r«   r©   r�   r^   rï   Ú_flush_charactersrZ   r»  ræ  rÿ  r¸   rç  r`  rM  )r:   r–   rñ  rç  r©   rr   s    `    r=   r`  zSequence.pack_charactersZ  sS  ø€ àˆØˆ
Üˆ
Ø—‘ó 	6ˆAÜ�A‹wœ)Ñ#¨¯
ª
¸1¿;º;Ø—<‘< :Ò-ð —|’|¤z°$¸¿¹Ô'@Ü ×2Ñ2°4¸Ø$ eô-ð &'§\¡\˜
à×!Ñ! !§'¡'Õ*Ü�a“œFÑ"¤d¨1£g´Ñ&8Ø—<‘< :Ò-ð —|’|¤só +"Ø ô+"ô ("ä ×2Ñ2°4¸Ø$ eô-ð &'§\¡\˜
à×!Ñ! !§,¡,Ö/ä×*Ñ*¨4°¸ZÈÔOà—‘˜Q×.Ñ.¨tÓ4Ö5ð7	6ô: 	×"Ñ" 4¨°ZÀÔGä˜UÓ#Ð#r>   c                 ój   — | j                   D �cg c]  }|j                  «       ‘Œ c}| _         | S c c}w r•  )rñ  rb  )r:   rr   s     r=   rb  zSequence.remove_captures€  s+   € Ø37·:±:Ö>¨a�a×'Ñ'Õ)Ò>ˆŒ
Øˆùò ?rë  c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr•  rî  ©r˜  rr   s     r=   r™  z%Sequence.is_atomic.<locals>.<genexpr>…  ó   è ø€ Ò5 Q�1—;‘;—=Ñ5ùrñ  ©r�  rñ  rR  s    r=   re  zSequence.is_atomic„  ó   € ÜÑ5¨$¯*©*Ô5Ó5Ð5r>   c                  ó   — yrj  rC   rR  s    r=   rh  zSequence.can_be_affix‡  rl  r>   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr•  rø  rx  s     r=   r™  z*Sequence.contains_group.<locals>.<genexpr>‹  s   è ø€ Ò:¨!�1×#Ñ#×%Ñ:ùrñ  )rÿ  rñ  rR  s    r=   rk  zSequence.contains_groupŠ  s   € ÜÑ:¨t¯z©zÔ:Ó:Ð:r>   c                 óØ   — t        «       }| j                  }|r|j                  «        |D ]/  }||j                  |«      z  }d |vr|c S |j	                  d «       Œ1 |t        d g«      z  S r•  )r®   rñ  r¥   ro  Údiscard)r:   r¥   r¤   rñ  rr   s        r=   ro  zSequence.get_firstset�  sk   € Ü‹UˆØ—
‘
ˆÙØ�M‰MŒOØò 	ˆAØ�!—.‘. Ó)Ñ)ˆBØ˜2‰~Ø’	Ø�J‰J�tÕð		ð ”C˜˜“KÑÐr>   c                 ój   — t        | j                  «      xr | j                  d   j                  «       S rŒ  )r¡   rñ  rq  rR  s    r=   rq  zSequence.has_simple_startš  s'   € Ü�D—J‘JÓÒD D§J¡J¨q¡M×$BÑ$BÓ$DÐDr>   c                 ó†   — | j                   }|r|d d d…   }g }|D ]#  }|j                  |j                  ||«      «       Œ% |S rû  )rñ  r¸   r£   )r:   r¥   rY  Úseqr¹   rr   s         r=   rs  zSequence._compile�  sM   € Ø�j‰jˆÙØ‘d˜�d‘)ˆCàˆØò 	3ˆAØ�K‰K˜Ÿ	™	 '¨5Ó1Õ2ð	3ð ˆr>   c                 óJ   — | j                   D ]  }|j                  ||«       Œ y r•  )rñ  r™  )r:   r˜  r¥   rr   s       r=   r™  zSequence.dump¨  s#   € Ø—‘ò 	$ˆAØ�F‰F�6˜7Õ#ñ	$r>   c                 ó  ‡ — |sy |t         z  rt        ˆ fd„|D «       «      st        }|t        z  t        k(  r‡t        j                  |«      }|D ]l  }|j                  }t        |«      dk(  r*|j                  t        |d   |j                  ¬«      «       ŒG|j                  t        ||j                  ¬«      «       Œn nJt        |«      dk(  r |j                  t        |d   |¬«      «       n|j                  t        ||¬«      «       g |d d  y )Nc              3   ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wr•  rq  rr  s     €r=   r™  z-Sequence._flush_characters.<locals>.<genexpr>³  s   øè ø€ Ò?¨q”z $¨×*Ñ?ùrs  r-   r   r¨   )r   rÿ  r¯   r4  rï   Ú_fix_full_casefoldrç  r]   rZ   r°   r©   r»  )r–   rç  r©   rñ  Úliteralsrö   Úcharss   `      r=   rt  zSequence._flush_characters¬  sÛ   ø€ áØð œ
Ò"ÜÓ?°JÔ?Ô?Ü#�
àœÑ'¬NÒ:Ü×2Ñ2°:Ó>ˆHà ò L�ØŸ™�ä�u“: ’?Ø—L‘L¤¨5°©8ÀÇÁÔ!PÕQà—L‘L¤¨¸$¿/¹/Ô!JÕKñLô �:‹ !Ò#Ø—‘œY z°!¡}ÀÔLÕMà—‘œV J¸:ÔFÔGàˆ
‘1‰r>   c                 óô  — t        j                  «       D �cg c]  }t        j                  t        |«      ‘Œ }}t        j                  t        dj	                  d„ | D «       «      «      j                  «       }g }|D ]U  } |j                  |«      }|dk\  sŒ|j                  ||t        |«      z   f«        |j                  ||dz   «      }|dk\  rŒ;ŒW d}g }t        j                  |«      D ]R  \  }	}
||	k  r#|j                  t        | ||	 t        ¬«      «       |j                  t        | |	|
 t        ¬«      «       |
}ŒT |t        | «      k  r#|j                  t        | |d  t        ¬«      «       |S c c}w )Nrf   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr•  ©r7  r{  s     r=   r™  z.Sequence._fix_full_casefold.<locals>.<genexpr>Î  s   è ø€ ò =Øô >AÀ¿Vñ =ùr  r   r-   r¨   )r”   r:  r•   r9  r\   rO  ÚfindrZ   r]   rï   Ú_merge_chunksræ  r   r4  )rç  r»   Úexpandedr—   Úchunksrm   Úfoundr2   rˆ  r  r  s              r=   r‡  zSequence._fix_full_casefoldÈ  ss  € ô
 ×
&Ñ
&Ó
(ö*¸q”F×$Ñ$Ô%6¸Õ:ð *ˆð *ä×!Ñ!Ô"3°R·W±Wñ =Øô=ó 6ó  ß %¡£ð 	àˆàò 	2ˆAØ�F—K‘K “NˆEà˜1“*Ø—‘˜u e¬c°!«f¡nÐ5Ô6Ø#˜Ÿ™ A u¨q¡yÓ1�ð ˜1”*ð	2ð ˆØˆä"×0Ñ0°Ó8ò 	‰JˆE�3Ø�UŠ{Ø—‘¤¨
°3¸Ð(?Ü'ô!)ô *ð �O‰OœG J¨u°sÐ$;Ü'ô)ô *à‰Cð	ð ”�Z“Ò Ø�O‰OœG J¨s¨uÐ$6Ä:ÔNÔOàˆùò9*s   —!E5c                 óì   — t        | «      dk  r| S | j                  «        | d   \  }}g }| dd  D ].  \  }}||k  rt        ||«      }Œ|j                  ||f«       ||}}Œ0 |j                  ||f«       |S )NrN   r   r-   )r]   Úsortr7  rZ   )r�  r  r  Ú
new_chunksrr   rm   s         r=   rŽ  zSequence._merge_chunksê  s�   € äˆv‹;˜Š?ØˆMà�‰Œà˜A‘Y‰
ˆˆsØˆ
à˜1˜3�Lò 	"‰DˆAˆqØ�CŠxÜ˜#˜q“k‘à×!Ñ! 5¨# ,Ô/Ø �s‘ð	"ð 	×Ñ˜5 #˜,Ô'àÐr>   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr•  r?  r8  s     r=   r™  z$Sequence.is_empty.<locals>.<genexpr>   s   è ø€ Ò4 A�1—:‘:—<Ñ4ùrñ  rz  rR  s    r=   rþ   zSequence.is_emptyÿ  s   € ÜÑ4¨¯©Ô4Ó4Ð4r>   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S r•  )rÑ  rñ  rz  s     r=   r|  zSequence.__eq__  rS  r>   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr•  r€  rx  s     r=   r™  z%Sequence.max_width.<locals>.<genexpr>  ry  rñ  )Úsumrñ  rR  s    r=   r�  zSequence.max_width  r{  r>   c                 óŠ   — | j                   }|r|d d d…   }d}|D ]#  }|j                  |«      \  }}||z  }|sŒ||fc S  |d fS rä  )rñ  r‚  )r:   r¥   rƒ  Úoffsetrr   rï  rð  s          r=   r‚  zSequence.get_required_string  se   € Ø�j‰jˆÙØ‘d˜�d‘)ˆCàˆàò 	#ˆAØ×,Ñ,¨WÓ5‰HˆC�Ø�c‰MˆFÚØ˜s�{Ò"ð		#ð �tˆ|Ðr>   r•  )r?   r@   rA   r9   rZ  r¶   r`  rb  re  rh  rk  ro  rq  rs  r™  rC  rt  r‡  rŽ  rþ   r|  r�  r‚  rC   r>   r=   rï   rï   B  s’   „ óò2ò
$ò$$òLò6òò;ò òEò	ò$ð ñó ðð6 ñó ððB ñó ðò(5òGò6ór>   rï   c                   óJ   — e Zd Zdedfd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zy)r'  TFc                 óB  — t         j                  | «       || _        t        |«      | _        t        |«      | _        t        |   | _        t        |«      | _	        d| _
        | j                  | j                  | j                  | j                  | j                  f| _        y r¤  )rO  r9   r–   rz   rñ  r¡   r±   rT  r©   r«   Ú
char_widthrY   rQ  )r:   r–   rñ  r±   r©   r«   s         r=   r9   zSetBase.__init__  st   € ä×Ñ˜4Ô ØˆŒ	Ü˜5“\ˆŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒàˆŒà—^‘^ T§Z¡Z°·±Ø
�/‰/˜4Ÿ>™>ð+ˆ�	r>   c                 óˆ   —  t        | «      | j                  | j                  |||«      j                  | j                  d«      S rj  )rÑ  r–   rñ  r¶   rV  s       r=   rU  zSetBase.rebuild&  s8   € ØŒt�D‹z˜$Ÿ)™) T§Z¡Z°¸:Ø
óß‘X˜dŸi™i¨Ó/ð	0r>   c                 ó   — t        | g«      S r•  r‰  rn  s     r=   ro  zSetBase.get_firstset*  rŠ  r>   c                  ó   — yrd  rC   rR  s    r=   rq  zSetBase.has_simple_start-  rf  r>   c                 óP  — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }| j
                  | j                  |f   |fg}| j                  D ]!  }|j                  |j                  «       «       Œ# |j                  t        j                  f«       |S rŒ  )r±   r�  r«   rk  rŽ  r�  r©   rñ  r¸   r£   rZ   r¥  rÇ  )r:   r¥   rY  rŒ   r¹   ra   s         r=   rs  zSetBase._compile0  s“   € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸Ð?Ð@ˆØ—‘ò 	%ˆAØ�K‰K˜Ÿ	™	›Õ$ð	%ð 	�‰”R—V‘V�JÔàˆr>   c           	      óð   — t        dj                  t        |z  | j                  t        | j
                     t        | j                     «      «       | j                  D ]  }|j                  |dz   |«       Œ y )Nz	{}{} {}{}r-   )
r“  r7   r”  r•  r–  r±   rq  r©   rñ  r™  )r:   r˜  r¥   ro   s       r=   r™  zSetBase.dump@  s`   € Üˆk× Ñ ¤¨&¡°$·-±-Ü
�4—=‘=Ñ
!¤9¨T¯_©_Ñ#=ó?ô 	@à—‘ò 	(ˆAØ�F‰F�6˜A‘:˜wÕ'ñ	(r>   c                 óH  — | j                   r| j                  t        z  r|r| S | j                  j                  t
        z  r| j                  t        z  t        k7  r| S t        j                  «       }g }t        «       }|D ]Š  }| j                  t        |«      «      sŒt        j                  t        |«      }||vsŒ=|j                  t        |D �cg c]  }t        |«      ‘Œ c}| j                  ¬«      «       |j!                  |«       ŒŒ |s| S t#        | g|z   «      S c c}w r&  )r±   r©   r   r–   rŒ   r   r4  r”   r:  r®   rv  rî   r•   r9  rZ   r»  r²   rÐ   )	r:   r–   r­   r<  rñ  Úseenrò   r;  r»   s	            r=   Ú_handle_case_foldingzSetBase._handle_case_foldingF  sø   € à�}Š} T§_¡_´zÒ%AÁfØˆKð —‘—‘¤7Ò*°·±Ü
ñ1Ü+ò0,àˆKô !×6Ñ6Ó8ˆð ˆÜ‹uˆØ!ò 	%ˆBØ�|‰|œC ›GÕ$Ü×)Ñ)Ô*;¸RÓ@�Ø Ò%Ø—L‘L¤¸Ö(@°A¬¨Q­Ò(@Ø!%§¡ô"2ô 3à—H‘H˜VÕ$ð	%ñ àˆKä�t�f˜u‘nÓ%Ð%ùò )As   ÃDc                 ó²  — | j                   r| j                  t        z  sy| j                  j                  t
        z  r| j                  t        z  t        k7  ryt        j                  «       }t        «       }|D ]H  }| j                  t        |«      «      sŒt        j                  t        |«      }|j                  |«       ŒJ |syt        d„ |D «       «      S )Nr-   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr•  r  )r˜  r;  s     r=   r™  z$SetBase.max_width.<locals>.<genexpr>{  s   è ø€ Ò2 6”3�v—;Ñ2ùr  )r±   r©   r   r–   rŒ   r   r4  r”   r:  r®   rv  rî   r•   r9  r²   r7  )r:   r<  r¦  rò   r;  s        r=   r�  zSetBase.max_widthd  s²   € à�}Š} T§_¡_´zÒ%AØð —‘—‘¤7Ò*°·±Ü
ñ1Ü+ò0,àô !×6Ñ6Ó8ˆô ‹uˆØ!ò 	!ˆBØ�|‰|œC ›GÕ$Ü×)Ñ)Ô*;¸RÓ@�Ø—‘˜Õ ð	!ñ
 ØäÑ2¨TÔ2Ó2Ð2r>   c                 ó   — d | _         y r•  rW  rR  s    r=   rX  zSetBase.__del__}  rY  r>   N)r?   r@   rA   r¯   r9   rU  ro  rq  rs  r™  r§  r�  rX  rC   r>   r=   r'  r'    s7   „ Ø-1¸fØó+ò0òòòò (ò&ò<3ó2r>   r'  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdd„Zd„ Zy)rù  FTÚSET_DIFFc                 óL  ‡‡— | j                   }t        |«      dkD  r|d   t        ‰|dd  «      g}t        |«      dk(  r;|d   j                  | j                  | j
                  ¬«      j                  ‰‰|«      S t        ˆˆfd„|D «       «      | _         | j                  ‰|«      S )NrN   r   r-   rª   c              3   óF   •K  — | ]  }|j                  ‰‰d ¬«      –— Œ y­w)Tr¬   N)r¶   )r˜  ra   r–   r¥   s     €€r=   r™  z#SetDiff.optimise.<locals>.<genexpr>‘  s$   øè ø€ ò Àa˜1Ÿ:™: d¨G¸D˜:×Añ ùs   ƒ!)	rñ  r]   r´   r³   r©   r«   r¶   rz   r§  )r:   r–   r¥   r­   rñ  s    ``  r=   r¶   zSetDiff.optimiseˆ  s¥   ù€ Ø—
‘
ˆÜˆu‹:˜Š>Ø˜1‘Xœx¨¨e°A°C¨kÓ:Ð;ˆEäˆu‹:˜Š?Ø˜‘8×&Ñ&°$·/±/ØŸ™ð 'ó (ß(0©°°wÀÓ(GðHô ô Ø
ôó ˆŒ
ð ×(Ñ(¨¨vÓ6Ð6r>   c                 óž   — | j                   d   j                  |«      xr | j                   d   j                  |«       }|| j                  k(  S ©Nr   r-   ©rñ  rv  r±   ©r:   rò   ra   s      r=   rv  zSetDiff.matches–  sD   € Ø�J‰J�q‰M×!Ñ! "Ó%ÒG¨d¯j©j¸©m×.CÑ.CÀBÓ.GÐ*GˆØ�D—M‘MÑ!Ð!r>   Nr}  )r?   r@   rA   r¯   r¥  r¬  r   ÚSET_DIFF_IGNr   r4  ÚSET_DIFF_REVÚSET_DIFF_IGN_REVr�  r•  r¶   rv  rC   r>   r=   rù  rù  €  sŒ   „ Ø˜ˆ §¡¨j¸%Ð-@Ø‡o�o˜ %Ð(¨"¯+©+¸ÈÐ7NØ‡o�o˜ �~ r§¡¸ÀTÐ8JØ×Ñ˜H dÐ+¨R¯_©_¸~Ø
ð?Ø× Ñ ð	"€Gð
 €Hó7ó"r>   rù  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdd„Zd„ Zy)r÷  FTÚ	SET_INTERc                 ó¸  — g }| j                   D ]_  }|j                  ||d¬«      }t        |t        «      r(|j                  r|j                  |j                   «       ŒO|j                  |«       Œa t        |«      dk(  r;|d   j                  | j                  | j                  ¬«      j                  |||«      S t        |«      | _         | j                  ||«      S ©NTr¬   r-   r   rª   )rñ  r¶   r.   r÷  r±   r¸   rZ   r]   r³   r©   r«   rz   r§  ©r:   r–   r¥   r­   rñ  ra   s         r=   r¶   zSetInter.optimise¢  s¾   € ØˆØ—‘ò 	 ˆAØ—
‘
˜4 °�
Ó6ˆAÜ˜!œXÔ&¨1¯:ª:à—‘˜QŸW™WÕ%à—‘˜Q•ð	 ô ˆu‹:˜Š?Ø˜‘8×&Ñ&°$·/±/ØŸ™ð 'ó (ß(0©°°wÀÓ(GðHô ˜5“\ˆŒ
à×(Ñ(¨¨vÓ6Ð6r>   c                 ó^   ‡— t        ˆfd„| j                  D «       «      }|| j                  k(  S )Nc              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr•  ©rv  ©r˜  ro   rò   s     €r=   r™  z#SetInter.matches.<locals>.<genexpr>µ  ó   øè ø€ Ò2 !�—	‘	˜"—Ñ2ùrý  )r�  rñ  r±   r²  s    ` r=   rv  zSetInter.matches´  ó&   ø€ ÜÓ2 t§z¡zÔ2Ó2ˆØ�D—M‘MÑ!Ð!r>   Nr}  )r?   r@   rA   r¯   r¥  r·  r   ÚSET_INTER_IGNr   r4  ÚSET_INTER_REVÚSET_INTER_IGN_REVr�  r•  r¶   rv  rC   r>   r=   r÷  r÷  š  s˜   „ Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð
 €Hó7ó$"r>   r÷  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdd„Zd„ Zy)rô  FTÚSET_SYM_DIFFc                 ó¸  — g }| j                   D ]_  }|j                  ||d¬«      }t        |t        «      r(|j                  r|j                  |j                   «       ŒO|j                  |«       Œa t        |«      dk(  r;|d   j                  | j                  | j                  ¬«      j                  |||«      S t        |«      | _         | j                  ||«      S r¹  )rñ  r¶   r.   rô  r±   r¸   rZ   r]   r³   r©   r«   rz   r§  rº  s         r=   r¶   zSetSymDiff.optimiseÀ  s¾   € ØˆØ—‘ò 	 ˆAØ—
‘
˜4 °�
Ó6ˆAÜ˜!œZÔ(¨Q¯ZªZà—‘˜QŸW™WÕ%à—‘˜Q•ð	 ô ˆu‹:˜Š?Ø˜‘8×&Ñ&°$·/±/ØŸ™ð 'ó (ß(0©°°wÀÓ(GðHô ˜5“\ˆŒ
à×(Ñ(¨¨vÓ6Ð6r>   c                 ón   — d}| j                   D ]  }||j                  |«      k7  }Œ || j                  k(  S rj  r±  )r:   rò   ra   ro   s       r=   rv  zSetSymDiff.matchesÒ  s=   € ØˆØ—‘ò 	#ˆAØ�Q—Y‘Y˜r“]Ñ"‰Að	#ð �D—M‘MÑ!Ð!r>   Nr}  )r?   r@   rA   r¯   r¥  rÅ  r   ÚSET_SYM_DIFF_IGNr   r4  ÚSET_SYM_DIFF_REVÚSET_SYM_DIFF_IGN_REVr�  r•  r¶   rv  rC   r>   r=   rô  rô  ¸  s–   „ Ø˜ˆ §¡°*¸eÐ1DØ×Ñ˜H eÐ,¨b¯o©oÀØð@Ø×!Ñ! F¨D >°2×3FÑ3FØ�4Ð˜"×1Ñ1°H¸dÐ3CØ×Ñ˜N¨DÐ1°2×3JÑ3Jð	L€Gð
 €Hó7ó$"r>   rô  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdd„Zd„ Zd„ Zy)	r´   FTÚ	SET_UNIONc                 óì  — g }| j                   D ]_  }|j                  ||d¬«      }t        |t        «      r(|j                  r|j                  |j                   «       ŒO|j                  |«       Œa t        |«      dk(  rU|d   }|j                  |j                  | j                  k(  | j                  | j                  ¬«      j                  |||«      S t        |«      | _         | j                  ||«      S )NTr¬   r-   r   )r±   r©   r«   )rñ  r¶   r.   r´   r±   r¸   rZ   r]   r³   r©   r«   rz   r§  )r:   r–   r¥   r­   rñ  ra   ro   s          r=   r¶   zSetUnion.optimiseá  sÑ   € ØˆØ—‘ò 	 ˆAØ—
‘
˜4 °�
Ó6ˆAÜ˜!œXÔ&¨1¯:ª:à—‘˜QŸW™WÕ%à—‘˜Q•ð	 ô ˆu‹:˜Š?Ø�a‘ˆAØ—<‘<¨¯©°t·}±}Ñ)DØŸ™ØŸ™ð  ó (ç(0©°°wÀÓ(GðHô ˜5“\ˆŒ
à×(Ñ(¨¨vÓ6Ð6r>   c                 ó4  — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }t        t        «      g }}| j                  D ]L  }t        |t        «      r)||j                      j                  |j                  «       Œ<|j                  |«       ŒN | j                  | j                  |f   |fg}|j                  «       D ]}  \  }}	d}|r	|t        z  }t        |	«      dk(  r&|j                  t        j                   ||	d   f«       ŒG|j                  t        j"                  |t        |	«      ft%        |	«      z   «       Œ |D ]!  }|j'                  |j)                  «       «       Œ# |j                  t        j*                  f«       |S r°  )r±   r�  r«   rk  rŽ  r   rµ   rñ  r.   r°   rZ   r^   r�  r©   r]   r¥  r~  ÚSTRINGrz   r¸   r£   rÇ  )
r:   r¥   rY  rŒ   rç  Úothersra   r¹   r±   Úvaluess
             r=   rs  zSetUnion._compileõ  sa  € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEä(¬Ó.°�Fˆ
Ø—‘ò 	!ˆAÜ˜!œYÔ'Ø˜1Ÿ:™:Ñ&×-Ñ-¨a¯g©gÕ6à—‘˜aÕ ð		!ð —‘˜dŸo™o¨wÐ6Ñ7¸Ð?Ð@ˆà *× 0Ñ 0Ó 2ò 	MÑˆH�fØˆEÙØœÑ$�Ü�6‹{˜aÒØ—‘œRŸ\™\¨5°&¸±)Ð<Õ=à—‘œRŸY™Y¨¬s°6«{Ð;¼eÀF»mÑKÕLð	Mð ò 	%ˆAØ�K‰K˜Ÿ	™	›Õ$ð	%ð 	�‰”R—V‘V�JÔàˆr>   c                 ó^   ‡— t        ˆfd„| j                  D «       «      }|| j                  k(  S )Nc              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr•  r½  r¾  s     €r=   r™  z#SetUnion.matches.<locals>.<genexpr>  r¿  rý  )rÿ  rñ  r±   r²  s    ` r=   rv  zSetUnion.matches  rÀ  r>   Nr}  )r?   r@   rA   r¯   r¥  rÌ  r   ÚSET_UNION_IGNr   r4  ÚSET_UNION_REVÚSET_UNION_IGN_REVr�  r•  r¶   rs  rv  rC   r>   r=   r´   r´   Ù  sž   „ Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð
 €Hó7ò( óD"r>   r´   c                   ó(   — e Zd ZdZej
                  Zy)ÚSkipÚSKIPN)r?   r@   rA   r•  r¥  rÙ  r�  rC   r>   r=   rØ  rØ    s   „ Ø€HØ�g‰g�Gr>   rØ  c                   ó(   — e Zd Zej                  ZdZy)rä   ÚSTART_OF_LINEN)r?   r@   rA   r¥  rÛ  r�  r•  rC   r>   r=   rä   rä     r¨  r>   rä   c                   ó(   — e Zd Zej                  ZdZy)rã   ÚSTART_OF_LINE_UN)r?   r@   rA   r¥  rÝ  r�  r•  rC   r>   r=   rã   rã   #  ó   „ Ø× Ñ €GØ �Hr>   rã   c                   ó(   — e Zd Zej                  ZdZy)rå   ÚSTART_OF_STRINGN)r?   r@   rA   r¥  rà  r�  r•  rC   r>   r=   rå   rå   '  rÞ  r>   rå   c                   ó(   — e Zd Zej                  ZdZy)ÚStartOfWordÚSTART_OF_WORDN)r?   r@   rA   r¥  rã  r�  r•  rC   r>   r=   râ  râ  +  r¨  r>   râ  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZefd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zy
)r»  FTc                 ó¨  — t        |«      | _        t        |   | _        | j                  t        z  t        k(  rOg }| j                  D ]=  }t        j                  t        t        |«      «      }|j                  d„ |D «       «       Œ? n| j                  }t        |«      | _
        d| _        | j                  | j                  | j                  f| _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr•  rz  r{  s     r=   r™  z"String.__init__.<locals>.<genexpr>>  s   è ø€ Ò(@°A¬¨Q¯Ñ(@ùr  F)rz   rç  rT  r©   r4  r”   r•   r9  r7  r¸   r|  ÚrequiredrY   rQ  )r:   rç  r©   r|  rœ   r;  s         r=   r9   zString.__init__6  s¬   € Ü 
Ó+ˆŒÜ1°*Ñ=ˆŒà�O‰OœnÑ,´Ò?Ø "ÐØŸ™ò A�Ü×)Ñ)Ô*;¼SÀ»YÓG�Ø!×(Ñ(Ñ(@¸Ô(@Õ@ñAð !%§¡Ðä!&Ð'8Ó!9ˆÔØˆŒà—N‘N D§O¡O°T·_±_ÐDˆ�	r>   c                 ól   — |rd}nd}t        t        | j                  |   | j                  ¬«      g«      S )Nrå  r   r¨   )r®   r°   rç  r©   )r:   r¥   r2   s      r=   ro  zString.get_firstsetG  s:   € ÙØ‰CàˆCÜ”I˜dŸo™o¨cÑ2Ø—_‘_ô&ð 'ó (ð 	(r>   c                  ó   — yrd  rC   rR  s    r=   rq  zString.has_simple_startO  rf  r>   c                 óÄ   — d}|r	|t         z  }| j                  r	|t        z  }| j                  | j                  |f   |t        | j                  «      f| j                  z   gS rŒ  )rŽ  rç  ÚREQUIRED_OPr�  r©   r]   r|  r‘  s       r=   rs  zString._compileR  sj   € ØˆÙØ”XÑˆEØ�=Š=Ø”[Ñ ˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸Ü
ˆd×$Ñ$Ó
%ð'Ø)-×)?Ñ)?ñ@ð Að 	Ar>   c                 óà   — t        dj                  d„ | j                  D «       «      «      j                  d«      }t	        dj                  t        |z  |t        | j                     «      «       y )Nrf   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr•  rŒ  r{  s     r=   r™  zString.dump.<locals>.<genexpr>\  s   è ø€ Ò@¨1¤ A§Ñ@ùr  rn  z{}STRING {}{})	ro  r\   rç  rp  r“  r7   r”  rq  r©   rr  s       r=   r™  zString.dump[  sS   € Ü˜Ÿ™Ñ@°·±Ô@Ó@ÓA×HÑHÈÓNˆÜˆo×$Ñ$¤V¨f¡_°gÜ
�D—O‘OÑ
$ó&õ 	'r>   c                 ó,   — t        | j                  «      S r•  )r]   r|  rR  s    r=   r�  zString.max_width`  s   € Ü�4×)Ñ)Ó*Ð*r>   c                 ó
   — d| fS rŒ  rC   rn  s     r=   r‚  zString.get_required_stringc  s   € Ø�$ˆwˆr>   N)r?   r@   rA   r¯   r¥  rÏ  r   Ú
STRING_IGNr   r4  Ú
STRING_FLDÚ
STRING_REVÚSTRING_IGN_REVÚSTRING_FLD_REVr�  r9   ro  rq  rs  r™  r�  r‚  rC   r>   r=   r»  r»  /  s¢   „ Ø˜ˆ §	¡	¨J¸Ð+>ÀÇÁØ�Ð˜Ÿ™ ^°UÐ$;¸R¿]¹]Øˆt€n�b—m‘m j°$Ð%7¸×9JÑ9JØ�Ð˜Ÿ™¨¸Ð'=Ø×Ñð	€Gð /5ó Eò"(òòAò'ò
+ór>   r»  c                   ó   — e Zd Zd„ Zy)ræ  c                 óä   — dj                  d„ | j                  D «       «      }t        |«      j                  d«      }t	        dj                  t        |z  |t        | j                     «      «       y )Nrf   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr•  rŒ  r{  s     r=   r™  zLiteral.dump.<locals>.<genexpr>h  s   è ø€ Ò: Qœ#˜aŸ&Ñ:ùr  rn  z{}LITERAL MATCH {}{})	r\   rç  ro  rp  r“  r7   r”  rq  r©   )r:   r˜  r¥   Úliteralrs  s        r=   r™  zLiteral.dumpg  sX   € Ø—'‘'Ñ:¨$¯/©/Ô:Ó:ˆÜ˜“.×'Ñ'¨Ó-ˆÜÐ$×+Ñ+¬F°V©O¸WÜ
�D—O‘OÑ
$ó&õ 	'r>   N)r?   r@   rA   r™  rC   r>   r=   ræ  ræ  f  s   „ ó'r>   ræ  c                   ó"   — e Zd Zefd„Zd„ Zd„ Zy)rÈ   c           
      ó`  — || _         || _        t        |   | _        | j                  | j                  | j                  f| _        || j                  f| _        | j                  |j                  vr,t        |j                  «      |j                  | j                  <   | j                   j                  | j                     }| j                   j                  | j                     }| j                  }| j                   j                  t        z  }||z  }g }|D ]T  }	t        |	t        «      r|	D �
cg c]  }
t        |
«      ‘Œ }	}
|j                  |	D �
cg c]  }
t!        |
|¬«      ‘Œ c}
«       ŒV |j#                  t        d¬«       |D �cg c]  }t%        |«      ‘Œ c}| _        y c c}
w c c}
w c c}w )Nr¨   T)r.  r¥   )r–   rÄ   rT  r©   rY   rQ  Úset_keyÚnamed_lists_usedr]   rÔ  rŒ   r’   r.   r/   rî   rZ   r°   r“  rï   rÒ   )r:   r–   rÄ   r©   rH  rñ  rÈ  Ú
fold_flagsÚchoicesr—   r»   Úchoices               r=   r9   zStringSet.__init__n  s_  € ØˆŒ	ØˆŒ	Ü1°*Ñ=ˆŒà—N‘N D§I¡I¨t¯©Ð>ˆŒ	à˜dŸo™oÐ.ˆŒØ�<‰<˜t×4Ñ4Ñ4Ü25°d×6KÑ6KÓ2LˆD×!Ñ! $§,¡,Ñ/à—	‘	×*Ñ*¨4¯<©<Ñ8ˆØ—	‘	× Ñ  §¡Ñ+ˆà—_‘_ˆ
à—9‘9—?‘?¤^Ñ3ˆØ 
Ñ*ˆ
àˆàò 	ˆFÜ˜&¤#Ô&Ø*0Ö1 Qœ#˜a�&Ð1�Ð1à�N‰NØöÀAœI a°JÖ?ò õ ð		ð 	�‰œ dˆÔ+à8?Ö@¨fœ &Õ)Ò@ˆ�ùò 2ùòùò As   Ä+F!ÅF&
ÆF+c                 ó€   — t        dj                  t        |z  | j                  t        | j
                     «      «       y )Nz{}STRING_SET {}{})r“  r7   r”  rÄ   rq  r©   r—  s      r=   r™  zStringSet.dump�  s0   € ÜÐ!×(Ñ(¬°&©¸$¿)¹)Ü
�D—O‘OÑ
$ó&õ 	'r>   c                 ó   — d | _         y r•  rW  rR  s    r=   rX  zStringSet.__del__“  rY  r>   N)r?   r@   rA   r¯   r9   r™  rX  rC   r>   r=   rÈ   rÈ   m  s   „ Ø.4ó AòB'ór>   rÈ   c                   óH   — e Zd ZdZd„ Zdd„Zdd„Zdd„Zdd„Zd„ Z	d„ Z
d	„ Zy
)ÚSourcez1Scanner for the regular expression source string.c                 ó¸   — t        |t        «      r|| _        t        | _        n |j
                  d«      | _        d„ | _        d| _        d| _        |d d | _        y )Nzlatin-1c                 ó   — t        | g«      S r•  )r<  r$  s    r=   r,  z!Source.__init__.<locals>.<lambda>ž  s   € ¤u¨a¨S£z€ r>   r   F)	r.   r/   r—   r7  Ú	char_typeÚdecoder2   rP  r;  )r:   r—   s     r=   r9   zSource.__init__˜  sO   € Ü�fœcÔ"Ø ˆDŒKÜ ˆD�Nà'˜&Ÿ-™-¨	Ó2ˆDŒKÙ1ˆDŒNàˆŒØ!ˆÔØ˜3˜Q�<ˆ�r>   c                 óV  — | j                   }| j                  }	 | j                  r:|s8	 ||   j                  «       r|dz  }n||   dk(  r |j                  d|«      }nnŒ7||   }|dz   | _        |S # t
        $ r || _        |d d cY S t        $ r t        |«      | _        |d d cY S w xY w)Nr-   rE  r+   r   )r—   r2   rP  ÚisspacerH  rG  r-  r]   )r:   Úoverride_ignorer—   r2   rò   s        r=   rÛ   z
Source.get¤  sÂ   € Ø—‘ˆØ�h‰hˆð	 Ø× Ò ©ØØ˜c‘{×*Ñ*Ô,à˜q™™Ø ™¨Ò+à*˜fŸl™l¨4°Ó5™àð ð ˜‘ˆBØ˜Q‘wˆDŒHØˆIøÜò 	 àˆDŒHØ˜3˜Q�<ÒÜò 	 ä˜6“{ˆDŒHØ˜3˜Q�<Òð	 ús   šAA1 Á1B(ÂB(Â'B(c                 óD  — | j                   }| j                  }	 | j                  r‚g }t        |«      |k  r`	 ||   j	                  «       r|dz  }n||   dk(  r |j
                  d|«      }nnŒ7|j                  ||   «       |dz  }t        |«      |k  rŒ`dj                  |«      }n||||z    }|t        |«      z  }|| _        |S # t        $ r$ t        |«      | _        dj                  «      cY S t        $ r$ t        |«      | _        dj                  «      cY S w xY w©Nr-   rE  r+   rf   )
r—   r2   rP  r]   r	  rH  rZ   r\   rG  r-  )r:   r3   r—   r2   Ú	substrings        r=   Úget_manyzSource.get_manyÀ  s&  € Ø—‘ˆØ�h‰hˆð 	&Ø× Ò Ø�	ä˜)“n uÒ,ØØ! #™;×.Ñ.Ô0à 1™H™CØ# C™[¨CÒ/à". &§,¡,¨t°SÓ"9™Cà!ð ð ×$Ñ$ V¨C¡[Ô1Ø˜1‘H�Cô ˜)“n uÓ,ð ŸG™G IÓ.‘	à" 3¨¨u©Ð5�	Ø”s˜9“~Ñ%�àˆDŒHØÐøÜò 	&ä˜6“{ˆDŒHØ—7‘7˜9Ó%Ò%Üò 	&ä˜6“{ˆDŒHØ—7‘7˜9Ó%Ò%ð	&ús   šA;C Â0C Ã*DÃ3)DÄDc                 ób  — | j                   }| j                  }| j                  ry|sw	 g }	 ||   j                  «       r|dz  }nA||   dk(  r |j                  d|«      }n%||   |v |k(  r|j                  ||   «       |dz  }nnŒ[|| _        dj                  «      S 	 ||   |v |k(  r|dz  }||   |v |k(  rŒ|| j                  | }|| _        |S # t        $ r t        |«      | _        Y Œ_t        $ r t        |«      | _        Y Œyw xY w# t        $ r || j                  | }|| _        |cY S w xY wr  )
r—   r2   rP  r	  rH  rZ   rG  r]   r-  r\   )r:   Útest_setrK  rÖ  r—   r2   r  s          r=   r>  zSource.get_whileæ  s^  € Ø—‘ˆØ�h‰hˆà×Ò¡[ð'Ø�	àØ˜c‘{×*Ñ*Ô,à˜q™™Ø ™¨Ò+à*˜fŸl™l¨4°Ó5™Ø  ™+¨Ð1°gÒ=Ø!×(Ñ(¨°©Ô5Ø˜q™™àð ð �”ð —7‘7˜9Ó%Ð%ð!Ø˜c‘{ hÐ.°7Ò:Ø˜1‘H�Cð ˜c‘{ hÐ.°7Ó:ð # 4§8¡8¨cÐ2�	à�”à Ð øô# ò 'ä˜v›;�–Üò 'ä˜v›;�–ð'ûô ò !à" 4§8¡8¨cÐ2�	à�”à Ò ð!ús0   ¨A%C ÂD
 Â9D
 ÃDÃ,DÄDÄ
!D.Ä-D.c                 ó’  — | j                   }| j                  }	 | j                  rH	 ||   j                  «       r|dz  }n-||   dk(  r |j                  d|«      }n||   |v |k(  r|dz  }nnŒG||   |v |k(  r|dz  }||   |v |k(  rŒ|| _        y # t
        $ r t        |«      | _        Y y t        $ r t        |«      | _        Y y w xY w)Nr-   rE  r+   )r—   r2   rP  r	  rH  rG  r]   r-  )r:   r  rK  r—   r2   s        r=   Ú
skip_whilezSource.skip_while  sã   € Ø—‘ˆØ�h‰hˆð	#Ø× Ò ØØ˜c‘{×*Ñ*Ô,à˜q™™Ø ™¨Ò+à*˜fŸl™l¨4°Ó5™Ø  ™+¨Ð1°gÒ=Ø˜q™™àð ð ˜c‘{ hÐ.°7Ò:Ø˜1‘H�Cð ˜c‘{ hÐ.°7Ó:ð ˆD�HøÜò 	#ä˜6“{ˆDŽHÜò 	#ä˜6“{ˆDŽHð	#ús   šA-B ÂB ÂCÂ+CÃCc                 óz  — | j                   }| j                  }| j                  rW	 |D ]I  }	 ||   j                  «       r|dz  }n||   dk(  r |j                  d|«      }nnŒ7||   |k7  r y|dz  }ŒK || _        y |j                  ||«      sy|t        |«      z   | _        y# t
        $ r Y yt        $ r Y yw xY w)NTr-   rE  r+   F)	r—   r2   rP  r	  rH  rG  r-  r1  r]   )r:   r  r—   r2   r»   s        r=   rÏ   zSource.match3  sâ   € Ø—‘ˆØ�h‰hˆà×ÒðØ"ò �AØØ! #™;×.Ñ.Ô0à 1™H™CØ# C™[¨CÒ/à". &§,¡,¨t°SÓ"9™Cà!ð ð ˜c‘{ aÒ'Ù$à˜1‘H‘Cðð  �”àð %�6×$Ñ$ Y°Ô4ØàœS ›^Ñ+ˆDŒHàøô ò áÜò áðús   ¦AB$ Á-B$ Â$	B:Â/B:Â9B:c                 ó†   — | j                  |«      s0t        dj                  |«      | j                  | j                  «      ‚y )Nz
missing {})rÏ   r&   r7   r—   r2   )r:   r  s     r=   rO  zSource.expectZ  s5   € Ø�z‰z˜)Ô$Ü˜×+Ñ+¨IÓ6¸¿¹ÀTÇXÁXÓNÐNð %r>   c                 ó
  — | j                   }| j                  }	 | j                  r8	 ||   j                  «       r|dz  }n||   dk(  r |j                  d|«      }nnŒ7|t        |«      k\  S # t        $ r Y yt        $ r Y yw xY w)NTr-   rE  r+   )r—   r2   rP  r	  rH  r]   rG  r-  )r:   r—   r2   s      r=   Úat_endzSource.at_end^  s’   € Ø—‘ˆØ�h‰hˆð	Ø× Ò ØØ˜c‘{×*Ñ*Ô,Ø˜q™™Ø ™¨Ò+Ø*˜fŸl™l¨4°Ó5™àð ð œ#˜f›+Ñ%Ð%øÜò 	áÜò 	áð	ús   šAA, Á,	BÁ7BÂBNr}  )r-   )TFrœ  )r?   r@   rA   rB   r9   rÛ   r  r>  r  rÏ   rO  r  rC   r>   r=   r  r  –  s1   „ Ù7ò
 ó ó8$&óL.!ó`#ò:%òNOór>   r  c                   ó2   — e Zd ZdZddi fd„Zdd„Zd„ Zd„ Zy)	ÚInfoz"Info about the regular expression.r   Nc                 óþ   — |t         |t        z  xs t           z  }|| _        || _        d| _        || _        d| _        i | _        i | _	        || _
        i | _        g | _        i | _        i | _        g | _        i | _        y )NFr   )ÚDEFAULT_FLAGSré  rê  rŒ   rŠ  r�  rÔ  ru  rG  Ú
group_namer  rü  Úopen_groupsrH  rø  rI  r  )r:   rŒ   r  rÔ  s       r=   r9   zInfo.__init__w  s‡   € Ø” ¬Ñ 5ÒI¼/ÑJÑJˆØˆŒ
Ø!ˆÔØ"ˆÔàˆŒàˆÔØˆÔØˆŒØ"ˆŒØ "ˆÔØˆÔØ "ˆÔØ ˆÔØˆÔØ ˆÕr>   c                 óú  — | j                   j                  |«      }|€^	 | xj                  dz  c_        |�| j                  | j                  vrnŒ1| j                  }|r|| j                   |<   || j                  |<   || j                  v r*t        | j                  «      dz    }|| j                  |<   |}| j                  j                  |«       | j                  j                  |d«      dz   | j                  |<   |S rL  )	rG  rÛ   ru  r  r  r]   r  rZ   rH  )r:   rÄ   r^  Úgroup_aliass       r=   rN  zInfo.open_groupŠ  sû   € Ø× Ñ ×$Ñ$ TÓ*ˆØˆ=ØØ× Ò  AÑ%Õ Ø�< 4×#3Ñ#3¸4¿?¹?Ñ#JØð ð
 ×$Ñ$ˆEÙØ).�× Ñ  Ñ&Ø)-�—‘ Ñ&à�D×$Ñ$Ñ$ô   × 3Ñ 3Ó4°qÑ8Ð9ˆKØ/4ˆD×Ñ Ñ,ØˆEà×Ñ×Ñ Ô&Ø'+×'<Ñ'<×'@Ñ'@ÀÈÓ'JÈQÑ'Nˆ×Ñ˜eÑ$àˆr>   c                 ó8   — | j                   j                  «        y r•  )r  rú   rR  s    r=   rQ  zInfo.close_group¤  s   € Ø×Ñ×ÑÕr>   c                 óÖ   — | j                   t        z  xs t        }|t        k(  ry|j	                  «       rt        |«      }n| j                  j                  |«      }|| j                  v S rj  )	rŒ   ré  rê  r!   r�  r  rG  rÛ   r  )r:   rÄ   rí  r^  s       r=   rf  zInfo.is_open_group§  s[   € ð —:‘:¤Ñ-ÒA´/ˆØ”hÒØà�<‰<Œ>Ü˜“I‰Eà×$Ñ$×(Ñ(¨Ó.ˆEà˜×(Ñ(Ð(Ð(r>   r•  )r?   r@   rA   rB   r9   rN  rQ  rf  rC   r>   r=   r  r  t  s    „ Ù(à¨$°ró !ó&ò4ó)r>   r  c                 ó  — i }g }| j                   D ]ç  \  }}}|j                  ||f}|j                  |«      }|€¸|j                  dk(  r]t        | j                  t
        z  «      }	t        |t        «      }
|	|
f||fk7  rd|j                  t        t        |«      |«      ||f«       n<| j                  |j                     }|d   }|dd ||fk7  r|j                  |||f«       t        |«      }|||<   ||_        Œé || _        || _        y)zkChecks whether the reverse and fuzzy features of the group calls match
    the groups which they call.
    Nr   r-   )rI  r^  rÛ   r¡   rŒ   r   r.   r  rZ   r[  r]   rø  rP  r  Úadditional_groups)r–   r^  r  r"  Úcallr¥   rY  r.  r]  ÚrevÚfuzÚdef_infor^  s                r=   Ú_check_group_featuresr'  µ  s#  € ð €IØÐØ $× 0Ñ 0ò Ñˆˆg�uà�z‰z˜7 EÐ*ˆØ�m‰m˜CÓ ˆØˆ;à�z‰z˜QŠä˜4Ÿ:™:¬Ñ/Ó0�Ü  ¬Ó/�Ø˜�: '¨5Ð!1Ò1ð &×,Ñ,¬g´c¸)³nÀfÓ.MØ˜uð.&õ 'ð  ×.Ñ.¨t¯z©zÑ:�Ø  ™�Ø˜A˜C�> g¨uÐ%5Ò5ð &×,Ñ,¨e°W¸eÐ-DÔEä�i“.ˆCØ ˆI�c‰Nàˆ�ð9ð< €D„NØ.€DÕr>   c                 óà   — | j                  t        |t        z  «      «      \  }}|r>d|_        |t        k\  rd}|j
                  }|t        z  s
|t         z  }|j                  }nd}d}d}|||fS )z>Gets the required string and related info of a parsed pattern.Trå  r   rC   )r‚  r¡   r   rç  r  r©   r   r|  )r^  rŒ   Ú
req_offsetrç  Ú	req_flagsÚ	req_charss         r=   Ú_get_required_stringr,  Ü  s   € ð "×5Ñ5´d¸5Ä7¹?Ó6KÓLÑ€J�ÙØ ˆÔØœÒ"ØˆJà×'Ñ'ˆ	Øœ’Øœ'˜Ñ!ˆIà×.Ñ.‰	àˆ
Øˆ	Øˆ	à�y )Ð+Ð+r>   c                   ó   — e Zd Zdd„Zd„ Zy)r'   c                 ó  — || _         g }|D ]£  \  }}t        |«      }t        ||j                  «      }t	        |j
                  t        z  «      |_        t        ||«      }|j                  «       s!t        d|j                  |j                  «      ‚|j                  |j                  «       «       Œ¥ t        |«      }t        |«      D �	�
cg c]  \  }	}
t!        ||	dz   |
«      ‘Œ }}	}
t#        |«      }t	        |j
                  t$        z  «      }|j'                  ||«      }|j)                  |«      }t+        ||j
                  «      \  }}}t-        ||«       |j.                  r!t        dj                  |j                  «      ‚t	        |j
                  t$        z  «      }|j1                  |«      t2        j4                  fgz   }t7        |«      }|j9                  «       s,	 t;        ||j=                  |«      «      }t7        |«      }||z   }|j
                  t@        z  xs tB        }|dtD        tF        fvrtI        d«      ‚tK        j0                  d |tL        z  |z  |i i i g |||tO        |«      «      | _(        y c c}
}	w # t>        $ r Y Œ~w xY w)Nzunbalanced parenthesisr-   z(recursive regex not supported by Scannerr   z5VERSION0 and VERSION1 flags are mutually incompatible))Úlexiconr  r  r  r¡   rŒ   r%   rP  rÓ   r  r&   r—   r2   rZ   rb  Ú	enumerater  rÐ   r   r¶   r`  r,  r'  r  r£   r¥  ÚSUCCESSr¼   rq  r¦   ro  rK   ré  rê  r   r!   r-  r”   r‰  r]   Úscanner)r:   r/  rŒ   ÚpatternsÚphraseÚactionrÑ   r–   r^  rª  rp   r¥   r)  r+  r*  r¹   Úfs_coderí  s                     r=   r9   zScanner.__init__ò  s]  € ØˆŒð ˆØ%ò 	6‰NˆF�Fä˜F“^ˆFÜ˜˜v×/Ñ/Ó0ˆDÜ"& t§z¡z´GÑ';Ó"<ˆFÔÜ# F¨DÓ1ˆFØ—=‘=”?ÜÐ4°f·m±mØ—*‘*óð ð �O‰O˜F×2Ñ2Ó4Õ5ð	6ô �E‹{ˆÜ6?ÀÓ6I×J©d¨a°”E˜$  A¡ qÕ)ÐJˆÑJÜ˜Ó!ˆô �t—z‘z¤GÑ+Ó,ˆØ—‘  wÓ/ˆØ×'Ñ'¨Ó-ˆô ,@ÀØ
�*‰*ó,Ñ(ˆ
�I˜yô 	˜d FÔ+ð �>Š>ÜÐBØ�m‰m˜VŸZ™Zó)ð )ô �t—z‘z¤GÑ+Ó,ˆð �~‰~˜gÓ&¬2¯:©:¨.Ð)9Ñ9ˆô ˜TÓ"ˆà×&Ñ&Ô(ðÜ+¨D°&×2EÑ2EÀgÓ2NÓO�Ü'¨Ó0�Ø ‘~�ð
 —:‘:¤Ñ-ÒA´/ˆØ˜1œh¬Ð1Ñ1ÜÐTÓUÐUô —~‘~ d¨U´\Ñ-AÀWÑ,LØ
��B˜˜B 
¨I°yÜ
ˆh‹-óˆ�ùóc KøôF "ò Ùðús   ÃI9Ç!+I? É?	JÊ
Jc                 óh  — g }|j                   }| j                  j                  |«      j                  }d}	  |«       }|snl|j                  «       }||k(  rnV| j                  |j
                  dz
     d   }t        |d«      r|| _         || |j                  «       «      }|� ||«       |}Œv|||d  fS )Nr   r-   Ú__call__)rZ   r2  rÏ   r  r/  Ú	lastindexr}   r^  )	r:   r—   r  rZ   rÏ   ro   ra   Újr5  s	            r=   ÚscanzScanner.scan;  s¼   € ØˆØ—‘ˆØ—‘×$Ñ$ VÓ,×2Ñ2ˆØˆØÙ“ˆAÙØØ—‘“ˆAØ�AŠvØØ—\‘\ !§+¡+°¡/Ñ2°1Ñ5ˆFÜ�v˜zÔ*Ø�”
Ù  a§g¡g£iÓ0�ØÐ!Ù�v”ØˆAð ð �v˜a˜c�|Ð#Ð#r>   N)r   )r?   r@   rA   r9   r;  rC   r>   r=   r'   r'   ñ  s   „ óGóR$r>   r'   r-  úúúr+   úú	ú)rk   rl   rn   Únrq   ÚtrÆ  ÚDigitTÚBlankÚSpaceÚWord)rº  r   Úhrr   r   rt   r"   )r   rl   r   ÚKra   r   ÚZ)rl   r   ra   r   )ÚFAILr   rJ  rÙ  )é   r}  r„  rj  )íÚenumr—   rÙ  Úcollectionsr   Úregex._regexr”   Ú__all__r8   r&   rE   rI   rK   ÚIntFlagr(   Úglobalsr€   Ú__members__r!   rê  r   ré  r   r   r   r’   r   r  r   r	   r   r   r   r‰  r   r   r   r#   r%   ÚSCOPED_FLAGSÚ	frozensetÚascii_lettersr!  r.  r%  rã  Ú	octdigitsr–  Ú	hexdigitsr¦  rÜ   rØ  râ  r   Úget_code_sizeÚBYTES_PER_CODEÚBITS_PER_CODEr  r}  r¾   r¯   r4  r9  rT  r´  ÚOPCODESrw   r¥  r0  r  ro   rü  Úsetattrr�   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  r8  r  r  rÞ   rR  rS  rL  rT  rl  rU  rV  rW  rX  r~  r…  r‡  rY  r‹  rM  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-  r0  rÞ  r>  r8  r:  r9  r”  r�  rk  rŽ  r�  rë  r–  rq  rM  rO  r†  rá   rß   rà   rs  rÕ  rÐ   ry  r[  r°   rm  r›  rž  r¡  rç   ræ   rª  ré   rè   r±  r´  r  r¼  rÒ  rû   rý   r  r  rü   ri  rq  rl  r/  rI  r  rÃ   r·  rï   r'  rù  r÷  rô  r´   rØ  rä   rã   rå   râ  r»  ræ  rÈ   r  r  r'  r,  r'   Úget_propertiesr.  r@  rñ  rà  r3  rÑ  rÛ   rÄ   Úprop_valuesr7  r]   Úval_namer5  rÀ  r¿  r¾  Údictr½  r[  rC   r>   r=   ú<module>rb     sä  ðó  Û Û Ý #å ò€ô*ˆIô *ô>	�yô 	ô	�ô 	ô	�Yô 	ô1�—‘ô 1ñf ƒ	× Ñ �×&Ñ&Ô 'à€à˜8Ñ#€Ø˜‘ 'Ñ)€ð ˜1˜h¨Ð1€ð  	Ñ)¨EÑ1°LÑ@À5ÑHØ	ñ
€à˜:Ñ%¨	Ñ1°FÑ:¸TÑAÀGÑKØñ€ñ 	�&×&Ñ&Ó'€Ù	�6—=‘=Ó	!€Ø�‰€Ù�v×'Ñ'Ó(€
Ù�v×'Ñ'Ó(€
ÙÐ*Ó+©i¸¸«oÑ=€Ø™) D›/Ñ)€Ø™Y wÓ/Ñ/Ð Ø
"€ð &�×%Ñ%Ó'€Ø Ñ"€ð �-Ñ 1Ñ$€	ð  	°À8Ø˜ Y°UÀØ�G 8°8À$Ø	ñ€ð ˜
Ñ"€
Ø	
€Ø˜JÑ&€à˜nÑ,Ð à˜a ¨1¨j¸*Ø�.ð"Ð ð ˜A AÑ&€ðR€÷j	ñ 	ñ ƒ[€Ù�w—}‘}“Ó'ò �E€A€rÙˆB��AÕðó0.òd+ò;ò6òòò>òó>òLòCò=òòRòhò@5ð  )°)Ñ<€òò4ò ò<ò01ò;òz
Aòòòò6
òHò4$òX*òt"?òHò"
4ò)FòVò(
òò$	'ò'òò ò"ò!@òF5ó
ò&2ò.ò2òG5òR4òBò* ò.	1ò'ò2ò 1ò*ò,ò4!ò#ò!ò ò!ò.')òR$òLLò	%òò*Eñ Ð/×5Ñ5Ó7Ó8€áÐ0×6Ñ6Ó8Ó9€óD?òLF'òP
$òò"*ð* 
€Ø€Ø€Ø€Ø€
Ø€à gÑ.€Ø�R˜Ð%:¸HÀbØÐ%ð'€	ò÷C&ñ C&ôL�Iô ô6ˆ)ô ô&ˆSô ôˆ3ô ô6<ˆYô 6<ôpˆ}ô ôF9ˆYô F9ôP,�	ô ,ô\!ˆiô !ôH�	ô HôTW�)ô Wôr"�mô "ô%�}ô %ô'˜ô 'ô�ô ô�ô ô�-ô ô$�mô $ô&�ô &ô�ô ô ˆmô  ôC%ˆIô C%ôJˆyô ÷+ñ +ôZ'�9ô Z'ôx2�|ô 2ô<PˆIô Pôdˆ=ô ô�ô ôB�ô BôHS&˜Iô S&ôj"�iô "ô2ˆyô 2ôhˆMô ôKˆIô KôZ/ˆyô /ôb�=ô ôSˆyô Sôjgˆiô gôR"ˆgô "ô4"ˆwô "ô<"�ô "ôB@"ˆwô @"ôDˆ=ô ô�-ô ô!�;ô !ô!�Mô !ô�-ô ô5ˆYô 5ôn'ˆfô 'ô'�ô '÷R\ñ \÷|?)ñ ?)òB%/òN,÷*^$ñ ^$ðB #ˆV×"Ò"Ó$€
ð €Ø$.×$4Ò$4Ó$6ò Ñ €IÑ �˜Ø&×*Ò*¨7°R¸°HÓ=Ñ€Dˆ+Ùˆt�Y CÔ(€DØ" KÐ/€N�7Ñà"ŸLšL›Nò Ñˆ�&Ù! +§/¢/°&¸"Ó"=¸xØôˆ�FÒñðð 
Ø	Ø	Ø	Ø	Ø	Ø	ñÐ ñ 
˜˜w¨Ó	-Ù	˜˜w¨Ó	.Ù	˜˜w¨Ó	-Ù	˜˜w¨Ó	-Ù	˜˜w¨Ó	.Ù	˜˜v tÓ	,Ù	˜˜v uÓ	-ñ€ñ 
‹Ù	‹Ù	�%‹Ù	‹Ù	‹Ù	‹Ù	‹ñÐ ñ Ð-Ó.Ð Ø × Ñ Ù	Ó	Ù	˜Ó	Ù	Ó	Ù	Ó	ñ	ô ñ ‹IÙ	‹Ù‹WÙ‹Fñ		�r>   