ó
    >:j®? ã                   ór  • S SK r S SKrS SKrS SKJr  S SKJr  / SQr " S S\5      r	 " S S\5      r
 " S	 S
\5      r " S S\5      r " S S\ R                  5      r\R                  r\R                   r\R"                  r\R$                  r\R&                  r\R(                  r\R*                  r\R,                  r\R.                  r\R0                  r\R2                  r\R4                  r\R6                  r\R8                  r\R:                  r\R<                  r\R>                  r\R@                  r \RB                  r!\RD                  r"\RF                  r#\RH                  r$\RJ                  r%\RL                  r&\RN                  r'\RP                  r(\RR                  r)\RT                  r*\RV                  r+\RX                  r,\RZ                  r-\R\                  r.\R^                  r/\R`                  r0\r1\\-  r2\\-  \-  r3\S \\0r4\2\-  \-  \-  \-  \-  r5\\-  \-  \-  \-  \-  \3-  r6\7" \Rp                  5      r9\7" \Rt                  5      r;\9\;-  r<\7" \Rz                  5      r>\7" \R~                  5      r@\7" S5      \7" S/5      -  rA\<\7" S5      -  rB\<\7" S5      -  rCSrD\RŠ                  " 5       rF\FS-  rGS\G-  S-
  rH\\\\\\\\\\\\\\\S.rI\\-  rJS rK\\-  rL\\L-  rMS S \S \\\L\L0rNSSSS.rOSrP " S S5      rQ\Q" 5       rR\S" \PR©                  5       5       H  u  rUrV\W" \R\V\U5        M     SýS jrXS rYS  rZS! r[S" r\S# r]S$ r^S% r_SþS' jr`S( raS) rbS* rcS+ rdS, reS- rfS. rgS/ rhS0S1S2S3.riS4 rjS5 rkS6 rlS7 rmS8 rnS9 roS: rpS; rqS< rrS= rsS> rtS? ruS@ rvSA rwSB rxSC rySD rzSE r{SF r|SG r}SH r~SI rSJ r€SK r�SL r‚SM rƒSN r„SO r…SP r†SÿSQ jr‡SR rˆSS r‰ST rŠSU r‹SV rŒSW r�SX rŽSY r�SZ r�S[ r‘S\ r’S] r“S^ r”S_ r•S` r–Sa r—Sb r˜Sc r™Sd ršSe r›Sf rœSg r�Sh ržSi rŸ\ " SjR©                  5       5      r¡\ " SkR©                  5       5      r¢GS Sl jr£Sm r¤Sn r¥So r¦Sp r§Sqr¨Sr©SrªSr«Sr¬Srr­Sr®SsStSu.r¯\KS\Sv\S\LSw0r°Sx r± " Sy Sz5      r² " S{ S|\²5      r³ " S} S~\²5      r´ " S S€\´5      rµ " S� S‚\´5      r¶ " Sƒ S„\²5      r· " S… S†\³5      r¸ " S‡ Sˆ\²5      r¹ " S‰ SŠ\²5      rº " S‹ SŒ\²5      r» " S� SŽ\²5      r¼ " S� S�\²5      r½ " S‘ S’\³5      r¾ " S“ S”\³5      r¿ " S• S–\³5      rÀ " S— S˜\³5      rÁ " S™ Sš\Á5      rÂ " S› Sœ\³5      rÃ " S� Sž\³5      rÄ " SŸ S \Ä5      rÅ " S¡ S¢\³5      rÆ " S£ S¤\³5      rÇ " S¥ S¦\²5      rÈ " S§ S¨\²5      rÉ " S© Sª5      rÊ " S« S¬\²5      rË " S­ S®\Ë5      rÌ " S¯ S°\²5      rÍ " S± S²\³5      rÎ " S³ S´\Ë5      rÏ " Sµ S¶\²5      rÐ " S· S¸\²5      rÑ " S¹ Sº\²5      rÒ " S» S¼\²5      rÓ " S½ S¾\³5      rÔ " S¿ SÀ\²5      rÕ " SÁ SÂ\²5      rÖ " SÃ SÄ\³5      r× " SÅ SÆ\²5      rØ " SÇ SÈ\²5      rÙ " SÉ SÊ\Ù5      rÚ " SË SÌ\Ù5      rÛ " SÍ SÎ\Ù5      rÜ " SÏ SÐ\Ù5      rÝ " SÑ SÒ\³5      rÞ " SÓ SÔ\³5      rß " SÕ SÖ\ß5      rà " S× SØ\³5      rá " SÙ SÚ\³5      râ " SÛ SÜ\²5      rã " SÝ SÞ\ã5      rä " Sß Sà\¹5      rå " Sá Sâ5      ræ " Sã Sä5      rçSå rèSæ ré " Sç Sè5      rê\GRÖ                  " 5       rì0 rí\ìGRÝ                  5        Hg  u  rïu  rðrñ\íGRå                  \ðS0 45      u  rórô\õ" \ó\ï\öSé9ró\ó\ô4\í\ð'   \ñGRÝ                  5        H"  u  r÷rø\õ" \ôGRå                  \øS5      \÷\öSé9\ô\ø'   M$     Mi     SêSëSìSíSîSïSðSñ.rùSrúSrû\£" SSòSó5      \£" SSòS&5      \£" SSôSó5      \£" SSõSó5      \£" SSõS&5      \£" SSöSó5      \£" SSöS&5      S÷.rü\ý" \ü5      rþ\þGRÿ                  \£" SSòSó\úSø9\£" SSòS&\úSø9\£" SSõSó\úSø9\£" SSõS&\úSø9\£" SSöSó\úSø9\£" SSöS&\úSø9Sù.5        \ý" \ü5      Gr G\ GRÿ                  \£" SSòSó\ûSø9\£" SSòS&\ûSø9\£" SSõSó\ûSø9\£" SSõS&\ûSø9\£" SSöSó\ûSø9\£" SSöS&\ûSø9Sù.5        \á" 5       \¸" 5       \¸" S&5      \Î" 5       \â" 5       \Æ" 5       \Ã" 5       \Ã" 5       Sú.Gr\ý" G\5      GrG\GRÿ                  \¸" \úSø9\¸" S&\úSø9\â" \úSø9\Æ" \úSø9Sû.5        \ý" G\5      GrG\GRÿ                  \¸" \ûSø9\¸" S&\ûSø9\â" \ûSø9\Æ" \ûSø9Sû.5        \ý" G\5      GrG\GRÿ                  \¾" 5       \¾" S&5      \À" 5       \¿" 5       Sû.5        \Ç" 5       \Ç" 5       \Ô" 5       \Þ" 5       Sü.Grg(  é    N)Údefaultdict)Ú_regex)%Ú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                   ó"   • \ rS rSrSrSS jrSrg)r'   é   am  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                 óx  • [        U[        5      (       a  SOSnXl        X l        X0l        Ubw  Ubt  UR                  USU5      S-   U l        X2R                  USU5      -
  U l        SR                  X5      nXB;   a)  USR                  U R                  U R                  5      -  n[        R                  X5        g )NÚ
ó   
r   é   z{} at position {}z (line {}, column {}))Ú
isinstanceÚstrÚmsgÚpatternÚposÚcountÚlinenoÚrfindÚcolnoÚformatÚ	ExceptionÚ__init__)ÚselfÚmessager3   r4   Únewlines        ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/regex/_regex_core.pyr;   Úerror.__init__*   s©   € Ü$ W¬c×2Ñ2‘$¸ˆØŒØŒØŒØÑ 3¡?Ø!Ÿ-™-¨°°CÓ8¸1Ñ<ˆDŒKØŸ}™}¨W°a¸Ó=Ñ=ˆDŒJà)×0Ñ0°Ó>ˆGàÓ!ØÐ2×9Ñ9¸$¿+¹+Ø—*‘*óñ �ô 	×Ñ˜4Õ)ó    )r8   r6   r2   r3   r4   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r;   Ú__static_attributes__© rA   r?   r'   r'      s   † ñ	÷*rA   r'   c                   ó   • \ rS rSrSrg)Ú_UnscopedFlagSeté=   rH   N©rB   rC   rD   rE   rG   rH   rA   r?   rJ   rJ   =   ó   † ÚrA   rJ   c                   ó   • \ rS rSrSrg)Ú
ParseErroréA   rH   NrL   rH   rA   r?   rO   rO   A   rM   rA   rO   c                   ó   • \ rS rSrSrg)Ú_FirstSetErroréE   rH   NrL   rH   rA   r?   rR   rR   E   rM   rA   rR   c                   óº   • \ rS rSrS=rrS=rrS=rr	S=r
rS=rrS=rrS=rrS	=rrS
=rrS=rrS=rrS=rrS=rrS=rrS=r r!S=r"r#S=r$r%S r&\'RP                  r(Sr)g)r)   éI   é€   i   i   i €  i @  é   é   é   i   i   é   é    i    é   i   é@   r/   c                 óÊ  • U R                   b  SU R                   -  $ U R                  n/ nUS:  nU(       a  U) nU R                   HE  nXR                  -  (       d  M  XR                  ) -  nUR                  SUR                   -  5        MG     U(       a  UR                  [	        U5      5        SR                  U5      nU(       a  [        U5      S:”  a  SU-  nU$ SU-  nU$ )Nzregex.%sr   Ú|r/   z~(%s)z~%s)Ú_name_Ú_value_Ú	__class__ÚappendÚhexÚjoinÚlen)r<   ÚvalueÚmembersÚnegativeÚmÚress         r?   Ú__repr__ÚRegexFlag.__repr__]   sÌ   € Ø�;‰;Ñ"Ø §¡Ñ+Ð+à—‘ˆØˆØ˜1‘9ˆæØ�FˆEà—”ˆAØ—y‘y× Ñ ØŸ)™)˜Ñ#�Ø—‘˜z¨A¯H©HÑ4Ö5ñ  ö
 Ø�N‰Nœ3˜u›:Ô&à�h‰h�wÓˆæÜ�7‹|˜aÓØ ‘m�ð ˆ
ð ˜c‘k�àˆ
rA   rH   N)*rB   rC   rD   rE   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   rl   ÚobjectÚ__str__rG   rH   rA   r?   r)   r)   I   s¼   † ØÐ€AˆØÐ€Aˆ	ØÐ€AˆØÐ€AˆàÐ€AˆØÐ€Aˆ
ØÐ€AˆØÐ€Aˆ	ØÐ€AˆØÐ€AˆØÐ€AˆØÐ€AˆØÐ€BˆØÐ€BˆØÐ€AˆØÐ€AˆØÐ€Aˆòð: �n‰nƒGrA   r)   z()|?*+{^$.[\#Ú z -z &_-.)ú||ú~~ú&&ú--rY   r/   )ÚaÚbÚeÚfÚir   rj   ÚpÚrÚsÚur   r!   ÚwÚxrW   rX   )r   r}   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                   ó   • \ rS rSrSrg)Ú	Namespacei)  rH   NrL   rH   rA   r?   r�   r�   )  rM   rA   r�   é   c                 óÌ  • [        U R                  5       5      n[        U5      U-
  nUS:  a  gX4-  U-   nSSKn[	        US5      (       d  gUR                  XW5       H  n	 X		 M     UR                  5         0 n
[        U 5       H  u  p¼pÞnnXáX¼XßU4'    X,U4   X¬U4'   M     UR                  5         UR                  U
5        g! [         a     Mt  f = f! [         a     M^  f = f)a+  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Úkeysrf   ÚrandomÚhasattrr„   ÚKeyErrorÚclearÚupdate)Ú
cache_dictÚ	args_dictÚlocale_sensitiveÚ
max_lengthÚdivisorÚ
cache_keysÚoverageÚnumber_to_tossr‡   Ú
doomed_keyÚsensitivity_dictr3   Úpattern_typeÚflagsÚargsÚdefault_versionÚlocales                    r?   Ú_shrink_cacher›   0  s  € ô �z—‘Ó(Ó)€JÜ�*‹o 
Ñ*€GØ�ƒ{ð 	àÑ*¨WÑ4€Nó Ü�6˜8×$Ñ$ð 	à—m‘m JÖ?ˆ
ð	ØÒ&ñ @ð ‡O�OÔØÐÜGLÈZÖGXÑCˆ˜u¨O¸VØKO�'¨ÀÐGÑHð	Ø6FÐU\ÐG\Ñ6]Ð¨7Ð2Ó3ñ HYð ×ÑÔØ×ÑÐ,Õ-øô ó 	âð	ûô ó 	Úð	ús$   Á!CÂ
CÃ
CÃCÃ
C#Ã"C#c                 ó|   • U R                   nU[        -  S:X  a  X R                  -  n[        R                  " X!5      $ )zFolds the case of a string.r   )r—   Ú_ALL_ENCODINGSÚguess_encodingr   Ú	fold_case)ÚinfoÚstringr—   s      r?   Ú
_fold_caser¢   b  s7   € à�J‰J€EØ”Ñ 1Ó$Ø×$Ñ$Ñ$ˆä×Ò˜EÓ*Ð*rA   c                 ó\   • [        [        R                  " U R                  U5      5      S:„  $ ©z$Checks whether a character is cased.r/   )rf   r   Úget_all_casesr—   )r    Úchars     r?   Ú
is_cased_ir§   j  s#   € äŒv×#Ò# D§J¡J°Ó5Ó6¸Ñ:Ð:rA   c                 óF   • [        [        R                  " X5      5      S:„  $ r¤   )rf   r   r¥   )r—   r¦   s     r?   Ú
is_cased_fr©   n  s   € äŒv×#Ò# EÓ0Ó1°AÑ5Ð5rA   c                 ó°   • [        U R                  [        -  5      n[        XU5      nU(       a  [	        U[
        5      (       a  / $ UR                  U5      $ )z&Compiles the firstset for the pattern.)Úboolr—   r   Ú_check_firstsetr0   ÚAnyAllÚcompile)r    ÚfsÚreverses      r?   Ú_compile_firstsetr±   r  sF   € ä�4—:‘:¤Ñ'Ó(€GÜ	˜¨Ó	+€BÞ”˜B¤×'Ñ'Øˆ	ð �:‰:�gÓÐrA   c                 ó‚  • U(       a  SU;   a  g[        5       n[        nU H[  n[        U[        5      (       a  UR                  (       d    gXER
                  -  nUR                  UR                  [        S95        M]     U[        [        -  :X  a  g[        U [        U5      U[        ) -  SS9nUR                  XSS9nU$ )z$Checks the firstset for the pattern.N©Ú
case_flagsT©r´   Ú	zerowidth©Úin_set)ÚsetÚNOCASEr0   Ú	CharacterÚpositiver´   ÚaddÚ
with_flagsr   r   ÚSetUnionÚlistÚoptimise)r    r°   r¯   rh   r´   ry   s         r?   r¬   r¬   |  sª   € æ�˜“Øô ‹e€GÜ€JÛˆÜ�aœ×#Ñ#¨A¯J¯JÙð 	—l‘lÑ"ˆ
Ø�‰�A—L‘L¬F�LÐ3Ö4ñ ð ”h¤Ñ+Ó,Øô 
�$œ˜W›°*Ä¸yÑ2HØñ
€Bà	�‰�T¨4ˆÐ	0€Bà€IrA   c                 ó>   • / nU  H  nUR                  U5        M     U$ )z(Flattens the code from a list of tuples.)Úextend)ÚcodeÚ	flat_codeÚcs      r?   Ú_flatten_coderÇ   ›  s'   € à€IÛˆØ×Ñ˜Öñ ð ÐrA   c                 óp   • U R                   [        -  nU R                   [        -  (       a
  U[        ) -  nU$ )zMakes the case flags.)r—   Ú
CASE_FLAGSr   r   )r    r—   s     r?   Úmake_case_flagsrÊ   £  s/   € à�J‰JœÑ#€Eð ‡z�z”E×Ø”(�Ñˆà€LrA   Fc                 óL   • U(       a  [        U5      $ [        U[        U 5      S9$ )zMakes a character literal.r³   )r»   rÊ   )r    rg   r¸   s      r?   Úmake_characterrÌ   ­  s"   € æä˜ÓÐä�U¤°tÓ'<Ñ=Ð=rA   c                 ó*   • [        XU[        U 5      S9$ )zMakes a group reference.r³   )ÚRefGrouprÊ   )r    ÚnameÚpositions      r?   Úmake_ref_grouprÑ   µ  s   € ä�D ´_ÀTÓ5JÑKÐKrA   c                 ó(   • [        X[        U 5      S9$ )zMakes a string set.r³   )Ú	StringSetrÊ   )r    rÏ   s     r?   Úmake_string_setrÔ   ¹  s   € ä�T¬O¸DÓ,AÑBÐBrA   c                 óD   • U(       a  U$ UR                  [        U 5      S9$ )zMakes a property.r³   )r¾   rÊ   )r    Úpropr¸   s      r?   Úmake_propertyr×   ½  s    € æØˆà�?‰?¤o°dÓ&;ˆ?Ð<Ð<rA   c                 óè   • [        X5      /nU R                  S5      (       a2  UR                  [        X5      5        U R                  S5      (       a  M2  [        U5      S:X  a  US   $ [	        U5      $ )zParses a pattern, eg. 'a|b|c'.r_   r/   r   )Úparse_sequenceÚmatchrc   rf   ÚBranch)Úsourcer    Úbranchess      r?   Ú_parse_patternrÞ   Ä  sc   € ä˜vÓ,Ð-€HØ
�,‰,�s×
Ñ
Ø�‰œ vÓ4Ô5ð �,‰,�s×
Ó
ô ˆ8ƒ}˜ÓØ˜‰{ÐÜ�(ÓÐrA   c           	      ó   • S/n[        U5      n U R                  nU R                  5       nU[        ;   Ga  US;   a  X@l        GO%US:X  a  UR	                  [        XS5      5        GOÿUS:X  a.  [        X5      nUc  [        U5      nGOÞUR	                  U5        GOËUS:X  a�  UR                  [        -  (       a  UR	                  [        5       5        GO’UR                  [        -  (       a  UR	                  [        5       5        GO_UR	                  [        5       5        GODUS:X  a  UR	                  [        X5      5        GO"US:X  a�  UR                  [        -  (       aN  UR                  [        -  (       a  UR	                  [        5       5        GOÑUR	                  [!        5       5        GO¶UR	                  [#        5       5        GO›US	:X  a²  UR                  [        -  (       aN  UR                  [        -  (       a  UR	                  [%        5       5        GOJUR	                  ['        5       5        GO/UR                  [        -  (       a  UR	                  [)        5       5        OýUR	                  [+        5       5        OãUS
;   a˜  [-        XU5      nU(       a   [/        XXsUXB5        UR	                  S5        Oª[1        XXS5      nU(       a/  [3        U5      (       a  [5        XXƒXB5        UR	                  S5        OhUR	                  [7        [9        U5      US95        OEUR	                  [7        [9        U5      US95        O"UR	                  [7        [9        U5      US95        GMZ  U V	s/ s H	  o™c  M  U	PM     nn	[;        U5      $ s  sn	f )zParses a sequence, eg. 'abc'.Nz)|Ú\FÚ(Ú.Ú[Ú^Ú$z?*+{r³   )rÊ   r4   ÚgetÚSPECIAL_CHARSrc   Úparse_escapeÚparse_parenr—   r   r­   r$   ÚAnyUÚAnyÚ	parse_setr   ÚStartOfLineUÚStartOfLineÚStartOfStringÚ
EndOfLineUÚ	EndOfLineÚEndOfStringLineUÚEndOfStringLineÚparse_quantifierÚapply_quantifierÚparse_fuzzyÚis_actually_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¸5Ó AÖBØ�s“ä% fÓ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°6ÀrØô+à—O‘O DÕ)ô #.¨f¸BÓ"K�Kæ"ä,¨[×9Ñ9Ü,¨V¸;Ø'ô3à$ŸO™O¨DÔ1øð !Ÿ™¬	´#°b³'Ø%/ñ)1õ 2ð —‘¤	¬#¨b«'¸jÑ IÕJð �O‰OœI¤c¨"£g¸*ÑEÔFò[ ñ^ "*Ó>¢˜—¡€HÐ>Ü�HÓÐùò ?s   Í.NÍ8Nc                 óž   • U R                  S5      S:X  a  gU R                  S5      U R                  S5      U R                  S5      4S:X  a  gg)	z4Checks whether a fuzzy constraint is actually fuzzy.rw   ©r   r   Fr|   ry   Úd)r  r  r  T)ræ   )r   s    r?   r÷   r÷   $  sG   € à‡��sÓ˜vÓ%Øà�‰˜Ó˜kŸo™o¨cÓ2°K·O±OÀCÓ4HÐIÐMeÓeØàrA   c                 ó  • UR                  5       nUc5  U(       a  [        SU R                  U5      e[        SU R                  U5      e[        U[        [
        [        45      (       a  [        SU R                  U5      eUu  p‰U R                  nU R                  5       nUS:X  a  [
        n
OUS:X  a  [        n
OXPl        [        n
UR                  5       (       d  US:w  d  U	S:w  a	  U
" XxU	5      nUR                  U5        g )Nzmultiple repeatznothing to repeatÚ?Ú+r/   )Úpopr'   r¡   r0   ÚGreedyRepeatÚ
LazyRepeatÚPossessiveRepeatr4   ræ   Úis_emptyrc   )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ÑHÜÐ% v§}¡}°iÓ@Ð@à!Ñ€IØ—
‘
€IØ	�‰‹€BØ	ˆSƒyä‰Ø	ˆs‹ä#‰ð Œ
Üˆð ×Ñ×Ñ 9°£>°YÀ!³^Ù˜7¨yÓ9ˆà‡O�O�GÕrA   c                 ó  • UR                  5       nUc  [        SU R                  U5      e[        U[        5      (       a-  [        UR                  U5      Ul        UR                  U5        g UR                  [        Xb5      5        g )Nznothing for fuzzy constraint)r  r'   r¡   r0   ÚGroupÚFuzzyÚ
subpatternrc   )rÜ   r    r   r´   rü   rû   rþ   s          r?   rø   rø   N  sg   € à�l‰l‹n€GØ�ÜÐ2°F·M±MÀ9ÓMÐMô �'œ5×!Ñ!Ü" 7×#5Ñ#5°{ÓCˆÔØ�‰˜Õ à�‰œ˜gÓ3Õ4rA   )r   r/   ©r   N©r/   N)r  Ú*r  c                 ót   • [         R                  U5      nU(       a  U$ US:X  a  [        U 5      nU(       a  U$ g)zParses a quantifier.Ú{N)Ú_QUANTIFIERSræ   Úparse_limited_quantifier)rÜ   r    rý   Úqrÿ   s        r?   rô   rô   ^  s6   € ä×Ñ˜Ó€AÞàˆà	ˆSƒyä)¨&Ó1ˆÞØˆMàrA   c                 ó*   • U SL=(       a	    U [         :¬  $ )z,Checks whether a count is above the maximum.N©Ú	UNLIMITED)r5   s    r?   Úis_above_limitr  m  s   € à˜Ð×3 ¬)Ñ!3Ð3rA   c                 óä  • U R                   n[        U 5      nU R                  S5      (       a4  [        U 5      n[        U=(       d    S5      nU(       a  [        U5      OSnOU(       d  Xl         g[        U5      =p#U R                  S5      (       d  Xl         g[	        U5      (       d  [	        U5      (       a  [        SU R                  U5      eUb  X#:”  a  [        SU R                  U5      eX#4$ )zParses a limited quantifier.Ú,r   NÚ}zrepeat count too bigz"min repeat greater than max repeat)r4   Úparse_countrÚ   Úintr  r'   r¡   )rÜ   rü   r  r  s       r?   r  r  q  sÑ   € à—
‘
€IÜ˜FÓ#€IØ‡|�|�C×ÑÜ Ó'ˆ	ô ˜	Ÿ QÓ'ˆ	Þ&/”C˜	”N°T‰	æØ"ŒJØä # I£Ð.ˆ	à�<‰<˜×ÑØŒ
Øä�i× Ñ ¤N°9×$=Ñ$=ÜÐ*¨F¯M©M¸9ÓEÐEàÑ Ó!6ÜÐ8¸&¿-¹-Ø
óð 	ð ÐÐrA   c                 óž  • U R                   nUS:w  a  g0 n [        X5        U R                  S5      (       a#  [        X5        U R                  S5      (       a  M#  U R                  S5      (       a  [	        XU5      US'   U R                  S5      (       d!  [        SU R                  U R                   5      eU$ ! [         a	    X@l          gf = f)z#Parses a fuzzy setting, if present.r  Nr!  Ú:Útestr"  z
expected })r4   Úparse_fuzzy_itemrÚ   rO   Ú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¸ZÓHˆ�FÑà�<‰<˜×ÑÜ�L &§-¡-°·±Ó<Ð<àÐøô ó ØŒ
Ùðús   —AB9 Â9CÃCc                 óv   • U R                   n [        X5        g! [         a    X l         [        X5         gf = f)zParses a fuzzy setting item.N)r4   Úparse_cost_constraintrO   Úparse_cost_equation)rÜ   r   rü   s      r?   r(  r(  §  s4   € à—
‘
€Ið1Ü˜fÕ2øÜó 1ØŒ
ä˜FÖ0ð1ús   Ž š8·8c                 óÆ  • U R                   nU R                  5       nU[        ;   af  [        XU5      n[	        U 5      nUc  SX'   gU R                   n[        U 5      nU(       d  US-  nUS:  a  [        SU R                  U5      eSU4X'   gU[        ;   aÂ  X l         U R                   n[        U 5      n[	        U 5      n	U	c
  [        5       e[        XU R                  5       5      n[	        U 5      nUc
  [        5       eU R                   n[        U 5      nU	(       d  US-  nU(       d  US-  nSUs=::  a  U::  d  O  [        SU R                  U5      eX‡4X'   g[        5       e)zParses a cost constraint.Nr  r/   r   úbad fuzzy cost limit)
r4   ræ   ÚALPHAÚparse_constraintÚparse_fuzzy_compareÚparse_cost_limitr'   r¡   ÚDIGITSrO   )
rÜ   r   rü   rý   Ú
constraintÚmax_incÚcost_posÚmax_costÚmin_costÚmin_incs
             r?   r+  r+  ±  sN  € à—
‘
€IØ	�‰‹€BØ	ŒUƒ{ä% f¸2Ó>ˆ
ä% fÓ-ˆà‰?à&-ˆKÒ#ð —z‘zˆHÜ'¨Ó/ˆHö Ø˜A‘�à˜!‹|ÜÐ2°F·M±MÀ8ÓLÐLà&'¨ kˆKÒ#Ø	Œv‹àŒ
ð —:‘:ˆÜ# FÓ+ˆä% fÓ-ˆØ‰?Ü“,Ðä% f¸6¿:¹:»<ÓHˆ
ä% fÓ-ˆØ‰?Ü“,Ðð —:‘:ˆÜ# FÓ+ˆö Ø˜‰MˆHÞØ˜‰MˆHà�HÕ( Õ(ÜÐ.°·±¸xÓHÐHà"*Ð"4ˆÒä‹lÐrA   c                 ó–   • U R                   n[        U 5      n [        U5      $ ! [         a     Of = f[	        SU R
                  U5      e)zParses a cost limit.r.  )r4   r#  r$  Ú
ValueErrorr'   r¡   )rÜ   r6  Údigitss      r?   r2  r2  î  sL   € à�z‰z€HÜ˜Ó €FðÜ�6‹{ÐøÜó Ùðúô Ð&¨¯©°xÓ
@Ð@s   ™
$ ¤
1°1c                 óD   • US;  a
  [        5       eX!;   a
  [        5       eU$ )zParses a constraint.Údeis)rO   )rÜ   r   rý   s      r?   r0  r0  ú  s%   € à	�ÓÜ‹lÐà	ÓÜ‹lÐà€IrA   c                 ó`   • U R                  S5      (       a  gU R                  S5      (       a  gg)zParses a cost comparator.z<=TÚ<FN©rÚ   ©rÜ   s    r?   r1  r1    s)   € à‡|�|�D×ÑØØ	�‰�c×	Ñ	ØàrA   c                 ó¬  • SU;   a!  [        SU R                  U R                  5      e0 n[        X5        U R	                  S5      (       a#  [        X5        U R	                  S5      (       a  M#  [        U 5      nUc
  [        5       e[        [        U 5      5      nU(       d  US-  nUS:  a!  [        SU R                  U R                  5      eXBS'   X!S'   g)	zParses a cost equation.Úcostzmore than one cost equationr  Nr/   r   r.  Úmax)	r'   r¡   r4   Úparse_cost_termrÚ   r1  rO   r$  r#  )rÜ   r   rD  r5  r7  s        r?   r,  r,    s¹   € à�ÓÜÐ1°6·=±=À&Ç*Á*ÓMÐMà€Dä�FÔ!Ø
�,‰,�s×
Ñ
Ü˜Ô%ð �,‰,�s×
Ó
ô " &Ó)€GØ�Ü‹lÐä”;˜vÓ&Ó'€HæØ�A‰ˆà�!ƒ|ÜÐ*¨F¯M©M¸6¿:¹:ÓFÐFàˆ�Kà�ÒrA   c                 óÒ   • [        U 5      nU R                  5       nUS;  a
  [        5       eX1;   a!  [        SU R                  U R
                  5      e[        U=(       d    S5      X'   g)zParses a cost equation term.Údiszrepeated fuzzy costr/   N)r#  ræ   rO   r'   r¡   r4   r$  )rÜ   rD  Úcoeffrý   s       r?   rF  rF  (  sR   € ä˜Ó€EØ	�‰‹€BØ	�ƒÜ‹lÐà	ƒzÜÐ)¨6¯=©=¸&¿*¹*ÓEÐEä�5—:˜A‹€D‚HrA   c                 óÌ  • U R                   nU R                  5       nU[        ;   aŽ  US:X  a  [        XS5      $ US:X  aN  UR                  [
        -  (       a
  [        5       $ UR                  [        -  (       a
  [        5       $ [        5       $ US:X  a  [        X5      $ [        SU R                  U5      eU(       a  [        [        U5      US9$ [        SU R                  U5      e)Nrà   Frâ   rã   zexpected character setr³   )r4   ræ   rç   rè   r—   r   r­   r$   rê   rë   rì   r'   r¡   r»   rù   )rÜ   r    r´   rü   rý   s        r?   r)  r)  4  s´   € Ø—
‘
€IØ	�‰‹€BØ	Œ]ÓØ�‹:ä ¨eÓ4Ð4Ø�3‹Yà�z‰zœF×"Ü“x�Ø—‘œd×"Ü“v�ä“u�Ø�3‹Yä˜VÓ*Ð*äÐ0°&·-±-ÀÓKÐKÞ	äœ˜R›¨ZÑ8Ð8äÐ,¨f¯m©m¸YÓGÐGrA   c                 ó,   • U R                  [        5      $ )z0Parses a quantifier's count, which can be empty.)Ú	get_whiler3  rB  s    r?   r#  r#  N  s   € à×ÑœFÓ#Ð#rA   c                 ó¸  • U R                   nU R                  S5      nUS:X  GaÔ  U R                   nU R                  S5      nUS:X  aÑ  U R                   nU R                  5       nUS;   a  [        XSUS:H  5      $ XPl         [        U 5      nUR	                  U5      nU R                  S5        UR                  n [        X5      n	U R                  S5        X�l        [        UR                  [        -  5      U l
        UR                  5         [        XU	5      $ US;   a  [        XSUS:H  5      $ US	:X  a  [        X5      $ US
:X  a  [        U 5      $ US:X  a  [        X5      $ US:X  a  [!        X5      $ US:X  a  [#        X5      $ US:X  d  SUs=::  a  S::  a  O  O[%        XX45      $ US:X  a  ['        XU5      $ US:X  d  US:X  a$  U R)                  5       [*        ;   a  [-        XX45      $ X@l         [/        X5      $ US:X  aƒ  U R                   nU R1                  [3        S5      SS9n
U
SS R5                  5       (       aF  [6        R                  U
5      nU(       d  [9        SU R:                  U5      eU R                  S5        U$ X l         UR	                  5       nUR                  n [        X5      n	U R                  S5        X�l        [        UR                  [        -  5      U l
        UR                  5         [        XU	5      $ ! X�l        [        UR                  [        -  5      U l
        f = f! X�l        [        UR                  [        -  5      U l
        f = f)zSParses a parenthesised subpattern or a flag. Returns FLAGS if it's an
inline flag.
Tr  r@  ©Ú=Ú!rO  Ú>Ú)Fr   Ú#rá   r_   r   Ú0Ú9Ú&r  Ú-r  ú)>©ÚincludeNr/   zunknown verb)r4   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Úpeekr3  Úparse_rel_call_groupÚparse_flags_subpatternrL  r¹   ÚisalphaÚVERBSr'   r¡   )rÜ   r    rü   rý   Úsaved_pos_2Úsaved_pos_3rÏ   ÚgroupÚsaved_flagsr  ÚwordÚverbs               r?   ré   ré   R  sñ  € ð —
‘
€IØ	�‰�DÓ	€BØ	ˆS„yà—j‘jˆØ�Z‰Z˜ÓˆØ�‹9à Ÿ*™*ˆKØ—‘“ˆBØ�ZÓä'¨°d¸BÀ#¹IÓFÐFð %ŒJÜ˜fÓ%ˆDØ—O‘O DÓ)ˆEØ�M‰M˜#ÔØŸ*™*ˆKðAÜ+¨FÓ9�
Ø—‘˜cÔ"à(”
Ü&*¨4¯:©:¼Ñ+?Ó&@�Ô#à×ÑÔÜ˜ jÓ1Ð1Ø�Óä# F°%¸¸s¹ÓCÐCØ�‹9ä" 6Ó0Ð0Ø�‹9ä  Ó(Ð(Ø�‹9ä$ VÓ2Ð2Ø�‹9ä Ó-Ð-Ø�‹9ä Ó-Ð-Ø�‹9˜˜rÕ( SÖ(ä# F°"ÓBÐBØ�‹9ä)¨&¸ÓDÐDØ�#‹I˜˜s›¨¯©«¼Ó(?Ü'¨°bÓFÐFð !Œ
Ü% fÓ3Ð3à	ˆSƒyà—j‘jˆØ×Ñ¤ D£	°5ÐÐ9ˆØ��1ˆ:×Ñ×ÑÜ—9‘9˜T“?ˆDÞÜ˜N¨F¯M©M¸;ÓGÐGà�M‰M˜#ÔàˆKð „JØ�O‰OÓ€EØ—*‘*€Kð9Ü# FÓ1ˆ
Ø�‰�cÔà Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÔà×ÑÔä�˜jÓ)Ð)øð} )”
Ü&*¨4¯:©:¼Ñ+?Ó&@�Õ#ûðp !Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   Â:L Ê%L0 Ì)L-Ì0)Mc                 óî  • U R                   nU R                  5       nUS:X  a™  [        U 5      nUR                  U5      nU R	                  S5        UR
                  n [        X5      nU R	                  S5        Xal        [        UR
                  [        -  5      U l	        UR                  5         [        XU5      $ US:X  aT  [        U SS9nU R	                  S5        UR                  U5      (       a  [        SU R                  U5      e[        XU5      $ US:X  d  US:X  a  [!        XU5      $ X l         [        S	U R                  U5      e! Xal        [        UR
                  [        -  5      U l	        f = f)
zParses a Python extension.r@  rQ  rR  rO  T)Úallow_numericúcannot refer to an open grouprV  úunknown extension)r4   ræ   r\  r]  r^  r—   rÞ   r«   r&   r_  r`  r  Úis_open_groupr'   r¡   rÑ   rg  )rÜ   r    rü   rý   rÏ   ro  rp  r  s           r?   ra  ra  ®  sC  € à—
‘
€IØ	�‰‹€BØ	ˆSƒyä˜&Ó!ˆØ—‘ Ó%ˆØ�‰�cÔØ—j‘jˆð	=Ü'¨Ó5ˆJØ�M‰M˜#Ôà$ŒJÜ"& t§z¡z´GÑ';Ó"<ˆFÔà×ÑÔä�T *Ó-Ð-Ø	ˆSƒyä˜&°Ñ5ˆØ�‰�cÔØ×Ñ˜d×#Ñ#ÜÐ7¸¿¹Øóð ô ˜d¨)Ó4Ð4Ø	ˆSƒy�B˜#“Iä% f°IÓ>Ð>à„JÜ
Ð# V§]¡]°IÓ
>Ð>øð) %ŒJÜ"& t§z¡z´GÑ';Ó"<ˆFÕús   ÁE Å)E4c                 ó¼   •  U R                   nU R                  S5      nU(       a  US:X  a  OUS:X  a  U R                  S5      nMD  Xl         U R                  S5        g)zParses a comment.TrR  rà   N)r4   ræ   r^  )rÜ   rü   rÆ   s      r?   rb  rb  Ò  sX   € à
Ø—J‘Jˆ	Ø�J‰J�tÓˆæ�A˜“HØà�‹9Ø—
‘
˜4Ó ˆAñ ð „JØ
‡M�M�#ÔàrA   c                 ó  • UR                   n [        X5      nU R                  S5        XAl         [        UR                   [        -  5      U l        [        X#U5      $ ! XAl         [        UR                   [        -  5      U l        f = f)zParses a lookaround.rR  )r—   rÞ   r^  r«   r&   r_  Ú
LookAround)rÜ   r    Úbehindr¼   rp  r  s         r?   r[  r[  ã  sm   € à—*‘*€Kð9Ü# FÓ1ˆ
Ø�‰�cÔà Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÔä�f¨
Ó3Ð3øð !Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ŽA Á)Bc                 óP  • UR                   nU R                  nU R                  5       nUS:X  ay  U R                  5       nUS;   a  [        XSUS:H  5      $ US:X  a&  U R                  5       nUS;   a  [        XSUS:H  5      $ X0l        [	        SU R
                  U R                  5      eX0l         [        U S5      nU R                  S5        [        X5      nU R                  S	5      (       a  [        X5      nO
[        5       nU R                  S5        X!l         [        UR                   [        -  5      U l        UR                  5       (       a  UR                  5       (       a
  [        5       $ [        XXgU5      $ ! X!l         [        UR                   [        -  5      U l        f = f)
z Parses a conditional subpattern.r  rN  FrO  r@  Tzexpected lookaround conditionalrR  r_   )r—   r4   ræ   Úparse_lookaround_conditionalr'   r¡   r\  r^  rÙ   rÚ   rú   r«   r&   r_  r  ÚConditional)rÜ   r    rp  rü   rý   ro  Ú
yes_branchÚ	no_branchs           r?   rc  rc  ï  sn  € à—*‘*€KØ—
‘
€IØ	�‰‹€BØ	ˆSƒyà�Z‰Z‹\ˆØ�Óä/°¸eÀRÈ3ÁYÓOÐOØ�‹9à—‘“ˆBØ�ZÓä3°FÀ$ÈØñIó ð ð Œ
ÜÐ5°v·}±}Ø
�*‰*óð 	ð „Jð9Ü˜6 4Ó(ˆØ�‰�cÔÜ# FÓ1ˆ
Ø�<‰<˜×ÑÜ& vÓ4‰Iä ›
ˆIà�‰�cÔà Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÔà×Ñ×Ñ ×!3Ñ!3×!5Ñ!5Ü‹zÐä�t J¸9ÓEÐEøð !Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   Â/A%E< Å<)F%c                 ó¤  • UR                   n [        X5      nU R                  S5        XAl         [        UR                   [        -  5      U l        [        X5      nU R                  S5      (       a  [        X5      nO
[        5       nU R                  S5        [        X#XVU5      $ ! XAl         [        UR                   [        -  5      U l        f = f)NrR  r_   )
r—   rÞ   r^  r«   r&   r_  rÙ   rÚ   rú   ÚLookAroundConditional)rÜ   r    r{  r¼   rp  r  r  r€  s           r?   r}  r}    sª   € Ø—*‘*€Kð9Ü# FÓ1ˆ
Ø�‰�cÔà Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÔä Ó-€JØ‡|�|�C×ÑÜ" 6Ó0‰	ä“Jˆ	à
‡M�M�#Ôä  °:Øóð øð !Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ŽB& Â&)Cc                 ó  • UR                   n [        X5      nU R                  S5        X!l         [        UR                   [        -  5      U l        [        U5      $ ! X!l         [        UR                   [        -  5      U l        f = f)zParses an atomic subpattern.rR  )r—   rÞ   r^  r«   r&   r_  ÚAtomic)rÜ   r    rp  r  s       r?   rd  rd  .  sk   € à—*‘*€Kð9Ü# FÓ1ˆ
Ø�‰�cÔà Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÔä�*ÓÐøð !Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ŽA Á)Bc                 ó|  • UR                   n[        X5      /nUR                   nU R                  S5      (       aM  X!l         UR                  [        X5      5        [	        XAR                   5      nU R                  S5      (       a  MM  XAl         U R                  S5        [        U5      S:X  a  US   $ [        U5      $ )zParses a common groups branch.r_   rR  r/   r   )Úgroup_countrÙ   rÚ   rc   rE  r^  rf   rÛ   )rÜ   r    Úinitial_group_countrÝ   Úfinal_group_counts        r?   re  re  :  s§   € ð ×*Ñ*ÐÜ˜vÓ,Ð-€HØ×(Ñ(ÐØ
�,‰,�s×
Ñ
Ø.ÔØ�‰œ vÓ4Ô5ÜÐ 1×3CÑ3CÓDÐð �,‰,�s×
Ó
ð
 )ÔØ
‡M�M�#Ôä
ˆ8ƒ}˜ÓØ˜‰{ÐÜ�(ÓÐrA   c                 ó|   • US:X  a  SnOX R                  [        5      -   nU R                  S5        [        XU5      $ )zParses a call to a group.r   rT  rR  )rL  r3  r^  Ú	CallGroup)rÜ   r    rý   r4   ro  s        r?   rf  rf  L  s:   € à	ˆSƒyØ‰à×%Ñ%¤fÓ-Ñ-ˆà
‡M�M�#Ôä�T #Ó&Ð&rA   c                 óh  • U R                  [        5      nU(       d!  [        SU R                  U R                  5      e[        U5      nUS:X  a  UR                  U-   OUR                  U-
  S-   nUS::  a!  [        SU R                  U R                  5      eU R                  S5        [        XU5      $ )z"Parses a relative call to a group.zmissing relative group numberr  r/   r   zinvalid relative group numberrR  )	rL  r3  r'   r¡   r4   r$  r†  r^  rŠ  )rÜ   r    rý   r4   r<  Úoffsetro  s          r?   ri  ri  W  s—   € à×ÑœfÓ%€FÞÜÐ3°V·]±]ÀFÇJÁJÓOÐOä�‹[€FØ)+¨s«ˆD×Ñ˜vÒ%¸×8HÑ8HÈ6Ñ8QÐTUÑ8U€EØ�ƒzÜÐ3°V·]±]ÀFÇJÁJÓOÐOà
‡M�M�#Ôä�T #Ó&Ð&rA   c                 óR   • [        U 5      nU R                  S5        [        XU5      $ )zParses a call to a named group.rR  )r\  r^  rŠ  )rÜ   r    r4   ro  s       r?   rg  rg  f  s%   € ä�vÓ€EØ
‡M�M�#Ôä�T #Ó&Ð&rA   c                 ó¾   • Sn  U R                   nU R                  5       nUS:X  a  X0R                  5       -  nU[        U   -  nMB  ! [         a    WU l          U$ f = f)zParses a set of inline flags.r   ÚV)r4   ræ   ÚREGEX_FLAGSr‰   )rÜ   r—   rü   rý   s       r?   Úparse_flag_setr‘  m  sh   € à€EðØØŸ
™
ˆIØ—‘“ˆBØ�S‹yØ—j‘j“lÑ"�Ø”[ ‘_Ñ$ˆEñ øô ó Øˆ�
à€Lðús   „AA ÁAÁAc                 óà   • [        U 5      nU R                  S5      (       a4  [        U 5      nU(       d!  [        SU R                  U R                  5      eOSnU[
        -  (       a  SUl        X#4$ )z!Parses flags being turned on/off.rW  z$bad inline flags: no flags after '-'r   T)r‘  rÚ   r'   r¡   r4   r   Úinline_locale©rÜ   r    Úflags_onÚ	flags_offs       r?   Úparse_flagsr—  }  sj   € ä˜fÓ%€HØ‡|�|�C×ÑÜ" 6Ó*ˆ	ÞÜÐ>ÀÇÁØ�j‰jóð ð ð ˆ	à”&×à!ˆÔàÐÐrA   c                 óô  • UR                   nUR                   U-  U) -  Ul         UR                   [        [        -  [        -  -  (       a  UR                   [        ) -  U-  Ul         [        UR                   [        -  5      U l         [        X5      nU R                  S5        XAl         [        UR                   [        -  5      U l        U$ ! XAl         [        UR                   [        -  5      U l        f = f)z&Parses a subpattern with scoped flags.rR  )
r—   r   r   r   r�   r«   r&   r_  rÞ   r^  )rÜ   r    r•  r–  rp  r  s         r?   Úparse_subpatternr™  Ž  sÁ   € à—*‘*€KØ—*‘*˜xÑ'¨I¨:Ñ5€D„Jð ‡z�z”UœV‘^¤gÑ-×.Ø—j‘j¤N ?Ñ2°hÑ>ˆŒ
ä˜tŸz™z¬GÑ3Ó4€FÔð9Ü# FÓ1ˆ
Ø�‰�cÔà Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÔàÐøð !Œ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   Â	C Ã)C7c                 ó<  • [        X5      u  p#U[        -  (       a!  [        SU R                  U R                  5      eX#-  (       a!  [        SU R                  U R                  5      eX!R
                  ) -  [        -  nU(       a*  U=R
                  U-  sl        [        UR
                  5      eU[        ) -  nU R                  S5      (       a  [        XX#5      $ U R                  S5      (       a  [        XX#5        g[        SU R                  U R                  5      e)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&  rR  Nrv  )
r—  ÚGLOBAL_FLAGSr'   r¡   r4   Úglobal_flagsrJ   rÚ   r™  Úparse_positional_flags)rÜ   r    r•  r–  Únew_global_flagss        r?   rj  rj  ¡  sú   € ô
 & fÓ3Ñ€Hà”<×ÜÐCØ
�-‰-˜Ÿ™ó%ð 	%ð ×ÜÐ>ÀÇÁØ
�*‰*óð 	ð !×$5Ñ$5Ð#5Ñ5¼ÑEÐÞØ×ÒÐ-Ñ-Õô ˜t×0Ñ0Ó1Ð1ð ”�Ñ€Hà‡|�|�C×ÑÜ ¨hÓBÐBà‡|�|�C×ÑÜ˜v¨XÔAØä
Ð# V§]¡]°F·J±JÓ
?Ð?rA   c                 óv   • UR                   U-  U) -  Ul         [        UR                   [        -  5      U l        g)zParses positional flags.N)r—   r«   r&   r_  r”  s       r?   r�  r�  Ä  s/   € à—*‘*˜xÑ'¨I¨:Ñ5€D„JÜ˜tŸz™z¬GÑ3Ó4€FÕrA   c                 ó¨  • U R                  [        S5      SS9nU(       d!  [        SU R                  U R                  5      eUR                  5       (       aE  U(       a  SOSnU(       a  [        U5      U:  a!  [        SU R                  U R                  5      e U$ UR                  5       (       d!  [        SU R                  U R                  5      eU$ )zParses a name.rX  FrY  zmissing group namer   r/   zbad character in group name)rL  r¹   r'   r¡   r4   Úisdigitr$  Úisidentifier)rÜ   rt  Úallow_group_0rÏ   Ú	min_groups        r?   r\  r\  É  s¶   € à×ÑœC ›I¨uÐÐ5€DæÜÐ(¨&¯-©-¸¿¹ÓDÐDà‡|�|‡~�~Þ&‘A¨Aˆ	Þ¤ D£	¨IÓ 5ÜÐ5°v·}±}Ø�j‰jóð ð !6ð €Kð	 × Ñ ×"Ñ"ÜÐ5°v·}±}Ø�j‰jóð ð €KrA   c                 ó&   • [        S U  5       5      $ )z!Checks whether a string is octal.c              3   ó2   #   • U  H  o[         ;   v •  M     g 7f©N)Ú
OCT_DIGITS©Ú.0rý   s     r?   Ú	<genexpr>Úis_octal.<locals>.<genexpr>Þ  ó   é € Ð1ª& B”ZÖª&ùó   ‚©Úall©r¡   s    r?   Úis_octalr²  Ü  ó   € äÑ1©&Ó1Ó1Ð1rA   c                 ó&   • [        S U  5       5      $ )z#Checks whether a string is decimal.c              3   ó2   #   • U  H  o[         ;   v •  M     g 7fr§  )r3  r©  s     r?   r«  Úis_decimal.<locals>.<genexpr>â  s   é € Ð-¢f ”VŽ|¢fùr®  r¯  r±  s    r?   Ú
is_decimalr·  à  s   € äÑ-¡fÓ-Ó-Ð-rA   c                 ó&   • [        S U  5       5      $ )z'Checks whether a string is hexadecimal.c              3   ó2   #   • U  H  o[         ;   v •  M     g 7fr§  )Ú
HEX_DIGITSr©  s     r?   r«  Ú!is_hexadecimal.<locals>.<genexpr>æ  r­  r®  r¯  r±  s    r?   Úis_hexadecimalr¼  ä  r³  rA   c                 óÌ  • U R                   nSU l         U R                  5       nX0l         U(       d!  [        SU R                  U R                  5      eU[
        ;   a  [        XU[
        U   X$5      $ US:X  a  U(       d  U R                  n [        X5      $ US:X  a  U(       d
  [        5       $ US:X  a  U(       d  [        X5      $ US:X  a  [        XU5      $ US;   a  [        XUS:H  U5      $ US	:X  aw  U(       dp  / S
QnUR                  [        :X  a  UR!                  / SQ5        [#        [%        ['        SS/5      [)        UU Vs/ s H  n[+        U5      PM     sn5      /5      5      $ US:X  a  U(       d
  [-        5       $ U[.        ;   Ga}  U(       d¨  UR0                  [2        -  (       a  [4        R                  U5      nOqUR0                  [6        -  (       a  [8        R                  U5      nOCUR0                  [        -  (       a  [:        R                  U5      nO[<        R                  U5      nU(       a  U$ UR0                  [6        -  (       a  [>        R                  U5      nOCUR0                  [        -  (       a  [@        R                  U5      nO[B        R                  U5      nU(       a  U$ [D        R                  U5      nU(       a  [+        [        U5      5      $ [        SU-  U R                  U R                  5      eU[F        ;   a  [I        XXB5      $ [        U[        U5      U5      $ ! [         a	    XPl         Of = f[        U[        U5      U5      $ s  snf )zParses an escape sequence.Fúbad escape (end of pattern)ÚgÚGr   ÚNÚpPrz   r   )é
   é   é   é   )é…   i(   i)   rÆ  rÃ  r%   úbad escape \%s)%r_  ræ   r'   r¡   r4   ÚHEX_ESCAPESÚparse_hex_escapeÚparse_group_refrÌ   rù   ÚSearchAnchorÚparse_string_setÚparse_named_charÚparse_propertyrž   r   rÃ   r„  rÛ   ÚStringr¿   r»   ÚGraphemer/  r—   r$   ÚWORD_POSITION_ESCAPESr   ÚASCII_POSITION_ESCAPESÚUNICODE_POSITION_ESCAPESÚPOSITION_ESCAPESÚASCII_CHARSET_ESCAPESÚUNICODE_CHARSET_ESCAPESÚCHARSET_ESCAPESÚCHARACTER_ESCAPESr3  Úparse_numeric_escape)	rÜ   r    r¸   Úsaved_ignorerý   rü   ÚcharsetrÆ   rg   s	            r?   rè   rè   è  sÁ  € à×&Ñ&€LØ€FÔØ	�‰‹€BØ&ÔÞäÐ1°6·=±=À&Ç*Á*ÓMÐMØ	Œ[Óä ¨b´+¸b±/À6ÓNÐNØ	ˆs‹ž6à—J‘Jˆ	ð	#Ü" 6Ó0Ð0ð 
ˆs‹ž6ä‹~ÐØ	ˆs‹ž6ä Ó-Ð-Ø	ˆs‹ä ¨fÓ5Ð5Ø	ˆt‹ä˜f¨B°#©I°vÓ>Ð>Ø	ˆs‹ž6â*ˆØ×Ñ¤'Ó)Ø�N‰NÒ1Ô2ä”fœf d¨D \Ó2´H¸TÙóDÚˆaô ENÈaÆLÙñDó 5ð ó ó  ð 	 à	ˆs‹ž6ä‹zÐØ	ŒuŒö Ø�z‰zœD× Ü-×1Ñ1°"Ó5‘Ø—‘œe×#Ü.×2Ñ2°2Ó6‘Ø—‘œg×%Ü0×4Ñ4°RÓ8‘ä(×,Ñ,¨RÓ0�æØ�à�:‰:œ×Ü)×-Ñ-¨bÓ1‰EØ�Z‰Zœ'×!Ü+×/Ñ/°Ó3‰Eä#×'Ñ'¨Ó+ˆEæØˆLä!×%Ñ% bÓ)ˆÞÜœS ›ZÓ(Ð(äÐ%¨Ñ*¨F¯M©M¸6¿:¹:ÓFÐFØ	Œv‹ä# F°"Ó=Ð=ô ˜d¤C¨£G¨VÓ4Ð4øôA ó 	#à"ŽJð	#úô ˜d¤C¨£G¨VÓ4Ð4ùò&Ds   Â
L5 ÅM!Ì5MÍMc                 ó2  • U(       d  US:X  a  [        XU/U5      $ UnU R                  nU R                  5       nU[        ;   a‚  XB-  nU R                  nU R                  5       n[	        U5      (       aR  U[
        ;   aH  UR                  [        -  nU[        :X  d
  U[        :X  a  SnOSn[        XB-   S5      U-  n[        X5      $ XPl        UR                  U5      (       a!  [        SU R                  U R                  5      e[        XU R                  5      $ )z!Parses a numeric escape sequence.rT  éÿ   éÿ  rY   ru  )Úparse_octal_escaper4   ræ   r3  r²  r¨  r—   r�   r   r   r$  rÌ   rw  r'   r¡   rÑ   )	rÜ   r    rý   r¸   r<  rü   ÚencodingÚ
octal_maskrg   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Ü! $Ó.Ð.ð „JØ×Ñ˜&×!Ñ!ÜÐ3°V·]±]ÀFÇJÁJÓOÐOä˜$¨¯
©
Ó3Ð3rA   c                 óB  • U R                   nU R                  5       n[        U5      S:  aR  U[        ;   aH  UR	                  U5        U R                   nU R                  5       n[        U5      S:  a  U[        ;   a  MH  X@l          [        SR                  U5      S5      n[        XU5      $ ! [         ah    US   [        ;   a3  [        SSR                  U5      -  U R                  U R                   5      e[        SUS   -  U R                  U R                   5      ef = f)z Parses an octal escape sequence.é   rp   rY   r   zincomplete escape \%srÈ  )r4   ræ   rf   r¨  rc   r$  re   rÌ   r;  r'   r¡   )rÜ   r    r<  r¸   rü   rý   rg   s          r?   rà  rà  \  sö   € à—
‘
€IØ	�‰‹€BÜ
ˆf‹+˜‹/˜b¤JÓ.Ø�‰�bÔØ—J‘Jˆ	Ø�Z‰Z‹\ˆô ˆf‹+˜‹/˜b¤JÕ.ð
 „Jð	Ü�B—G‘G˜F“O QÓ'ˆÜ˜d¨6Ó2Ð2øÜó Ø�!‰9œ
Ó"ÜÐ0°2·7±7¸6³?ÑBØ�m‰m˜VŸZ™Zó)ð )ô Ð)¨F°1©IÑ5°v·}±}Ø�j‰jóð ðús   Â&B, Â,A2Dc                 óÊ  • U R                   n/ n[        U5       H[  nU R                  5       n	U	[        ;  a-  [	        SU< SR                  U5      < 3U R                  U5      eUR                  U	5        M]      [        SR                  U5      S5      n
U
S:  a  [        XU5      $  [	        SU< SR                  U5      < 3U R                  U5      e! [         a     N9f = f)zParses a hex escape sequence.úincomplete escape \rp   rZ   i   zbad hex escape \)r4   Úrangeræ   rº  r'   re   r¡   rc   r$  rÌ   r;  )rÜ   r    ÚescÚexpected_lenr¸   Útyperü   r<  ry   rý   rg   s              r?   rÊ  rÊ  q  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   Á:C Ã
C"Ã!C"c                 óü   • U R                  S5        U R                  n[        U S5      nU R                  S5        UR                  U5      (       a!  [	        SU R
                  U R                  5      e[        XU5      $ )zParses a group reference.r@  TrQ  ru  )r^  r4   r\  rw  r'   r¡   rÑ   )rÜ   r    rü   rÏ   s       r?   rË  rË  ˆ  se   € à
‡M�M�#ÔØ—
‘
€IÜ�f˜dÓ#€DØ
‡M�M�#ÔØ×Ñ˜$×ÑÜÐ3°V·]±]ÀFÇJÁJÓOÐOä˜$ iÓ0Ð0rA   c                 óÚ   • U R                  S5        [        U S5      nU R                  S5        Ub  X!R                  ;  a!  [        SU R                  U R
                  5      e[        X5      $ )zParses a string set reference.r@  TrQ  zundefined named list)r^  r\  Úkwargsr'   r¡   r4   rÔ   )rÜ   r    rÏ   s      r?   rÍ  rÍ  “  sW   € à
‡M�M�#ÔÜ�f˜dÓ#€DØ
‡M�M�#ÔØ�|�t§;¡;Ó.ÜÐ*¨F¯M©M¸6¿:¹:ÓFÐFä˜4Ó&Ð&rA   c                 óŠ  • U R                   nU R                  S5      (       aW  U R                  [        SS9nU R                  S5      (       a-   [        R
                  " U5      n[        U[        U5      U5      $ X0l         [        U[        S5      U5      $ ! [         a"    [        SU R                  U R                   5      ef = f)zParses a named character.r  T)Úkeep_spacesr"  úundefined character namerÁ  )r4   rÚ   rL  ÚNAMED_CHAR_PARTÚunicodedataÚlookuprÌ   rù   r‰   r'   r¡   )rÜ   r    r¸   rü   rÏ   rg   s         r?   rÎ  rÎ  �  s®   € à—
‘
€IØ‡|�|�C×ÑØ×Ñ¤¸TÐÐBˆØ�<‰<˜×ÑðÜ#×*Ò*¨4Ó0�Ü% d¬C°«J¸Ó?Ð?ð
 „JÜ˜$¤ C£¨&Ó1Ð1øô ó ÜÐ6¸¿¹Ø—*‘*óð ðús   Á+B Â,Cc                 óz  • U R                   nU R                  5       nUS:X  a�  U R                  S5      n[        U 5      u  pxU R                  S5      (       aZ  UR                  [
        -  (       a  [        n	O!UR                  [        -  (       a  [        n	OSn	[        XxX&:g  U U	S9n
[        XU5      $ OdU(       a]  US;   aW  UR                  [
        -  (       a  [        n	O!UR                  [        -  (       a  [        n	OSn	[        SXRX	S9n
[        XU5      $ X@l         U(       a  SOS	n[        U[        U5      U5      $ )
zParses a Unicode property.r  rä   r"  r   ©rá  ÚCLMNPSZNrz   r   )r4   ræ   rÚ   Úparse_property_namer—   r   ÚASCII_ENCODINGr   ÚUNICODE_ENCODINGÚlookup_propertyr×   rÌ   rù   )rÜ   r    r¼   r¸   rü   rý   ÚnegateÚ	prop_namerÏ   rá  rÖ   s              r?   rÏ  rÏ  ­  s  € à—
‘
€IØ	�‰‹€BØ	ˆSƒyØ—‘˜cÓ"ˆÜ-¨fÓ5‰ˆ	Ø�<‰<˜×Ñà�z‰zœE×!Ü)‘Ø—‘œg×%Ü+‘à�ä" 9°HÑ4FÈØñ!ˆDä  ¨VÓ4Ð4ð ö 
��i“à�:‰:œ×Ü%‰HØ�Z‰Zœ'×!Ü'‰HàˆHä˜t R°6ÑMˆÜ˜T¨Ó0Ð0ð „JÞ‰˜c€BÜ˜$¤ B£¨Ó0Ð0rA   c                 ó&  • U R                  [        5      nU R                  nU R                  5       nU(       aO  US;   aI  UnU R                  [        [        S5      -  5      R                  5       nU(       a  U R                  nOSUpOSnX l        XA4$ )z/Parses a property name, which may be qualified.z:=z &_-./N)rL  ÚPROPERTY_NAME_PARTr4   ræ   ÚALNUMr¹   Ústrip)rÜ   rÏ   rü   rý   rü  s        r?   r÷  r÷  Ñ  s~   € à×ÑÔ.Ó/€DØ—
‘
€Ià	�‰‹€BÞ	ˆb�D‹jØˆ	Ø×Ñ¤¬¨H«Ñ 5Ó6×<Ñ<Ó>ˆæàŸ
™
‰Ið # I‘tàˆ	à„JØˆ?ÐrA   c                 óÞ  • UR                   [        -  =(       d    [        nU R                  nSU l        U R	                  S5      n U[
        :X  a  [        X5      nO[        X5      nU R	                  S5      (       d!  [        SU R                  U R                  5      e X0l        U(       a  UR                  UR                  (       + S9nUR                  [        U5      S9nU$ ! X0l        f = f)zParses a character set.Frä   Ú]ú	missing ]©r¼   r³   )r—   Ú_ALL_VERSIONSÚDEFAULT_VERSIONr_  rÚ   r    Úparse_set_imp_unionÚparse_set_unionr'   r¡   r4   r¾   r¼   rÊ   )rÜ   r    ÚversionrÛ  rû  r  s         r?   rì   rì   ç  sÈ   € à�z‰zœMÑ)×=¬o€Gà×&Ñ&€LØ€FÔà�\‰\˜#Ó€Fð	+Ø”hÓÜ& vÓ4‰Dä" 6Ó0ˆDà�|‰|˜C× Ñ Ü˜ V§]¡]°F·J±JÓ?Ð?ð !ð +ÔæØ�‰¨D¯M©MÔ(9ˆÐ:ˆà�?‰?¤o°dÓ&;ˆ?Ð<€Dà€Køð +Õús   ÁAC$ Ã$C,c                 óè   • [        X5      /nU R                  S5      (       a2  UR                  [        X5      5        U R                  S5      (       a  M2  [        U5      S:X  a  US   $ [	        X5      $ )zParses a set union ([x||y]).rq   r/   r   )Úparse_set_symm_diffrÚ   rc   rf   r¿   ©rÜ   r    Úitemss      r?   r  r    sb   € ä  Ó.Ð/€EØ
�,‰,�t×
Ñ
Ø�‰Ô(¨Ó6Ô7ð �,‰,�t×
Ó
ô ˆ5ƒz�QƒØ�Q‰xˆÜ�DÓ Ð rA   c                 óè   • [        X5      /nU R                  S5      (       a2  UR                  [        X5      5        U R                  S5      (       a  M2  [        U5      S:X  a  US   $ [	        X5      $ )z+Parses a set symmetric difference ([x~~y]).rr   r/   r   )Úparse_set_interrÚ   rc   rf   Ú
SetSymDiffr  s      r?   r  r    sa   € ä˜VÓ*Ð+€EØ
�,‰,�t×
Ñ
Ø�‰”_ VÓ2Ô3ð �,‰,�t×
Ó
ô ˆ5ƒz�QƒØ�Q‰xˆÜ�dÓ"Ð"rA   c                 óè   • [        X5      /nU R                  S5      (       a2  UR                  [        X5      5        U R                  S5      (       a  M2  [        U5      S:X  a  US   $ [	        X5      $ )z#Parses a set intersection ([x&&y]).rs   r/   r   )Úparse_set_diffrÚ   rc   rf   ÚSetInterr  s      r?   r  r    sa   € ä˜FÓ)Ð*€EØ
�,‰,�t×
Ñ
Ø�‰”^ FÓ1Ô2ð �,‰,�t×
Ó
ô ˆ5ƒz�QƒØ�Q‰xˆÜ�DÓ Ð rA   c                 óè   • [        X5      /nU R                  S5      (       a2  UR                  [        X5      5        U R                  S5      (       a  M2  [        U5      S:X  a  US   $ [	        X5      $ )z!Parses a set difference ([x--y]).rt   r/   r   )r  rÚ   rc   rf   ÚSetDiffr  s      r?   r  r    sb   € ä  Ó.Ð/€EØ
�,‰,�t×
Ñ
Ø�‰Ô(¨Ó6Ô7ð �,‰,�t×
Ó
ô ˆ5ƒz�QƒØ�Q‰xˆÜ�4ÓÐrA   c                 óŒ  ^ • UR                   [        -  =(       d    [        n[        T U5      /n T R                  nT R                  S5      (       a  UT l        OMU[        :X  a&  [        U 4S j[         5       5      (       a  UT l        OUR                  [        T U5      5        Mw  [        U5      S:X  a  US   $ [        X5      $ )z#Parses a set implicit union ([xy]).r  c              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7fr§  rA  )rª  ÚoprÜ   s     €r?   r«  Ú&parse_set_imp_union.<locals>.<genexpr>5  s   øé € Ð&JÂ'¸B v§|¡|°B×'7Ð'7Â'ùs   ƒ!r/   r   )r—   r  r  Úparse_set_memberr4   rÚ   r"   ÚanyÚSET_OPSrc   rf   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Ñ#Jà"ˆFŒJØà�‰Ô% f¨dÓ3Ô4ñ ô ˆ5ƒz�QƒØ�Q‰xˆÜ�DÓ Ð rA   c           	      óZ  • [        X5      nU R                  n[        U[        5      (       a'  UR                  (       a  U R                  S5      (       d  U$ UR                  [        -  =(       d    [        nU R                  nU[        :X  a  U R                  S5      (       a  X0l        U$ U R                  S5      (       a%  XPl        [        X[        [        S5      5      /5      $ [        X5      n[        U[        5      (       a  UR                  (       d   [        X[        [        S5      5      U/5      $ UR                  UR                  :”  a!  [        SU R                  U R                  5      eUR                  UR                  :X  a  U$ [        UR                  UR                  5      $ )z#Parses a member in a character set.rW  r  zbad character range)Úparse_set_itemr4   r0   r»   r¼   rÚ   r—   r  r  r"   r¿   rù   rg   r'   r¡   ÚRange)rÜ   r    ÚstartÚ
saved_pos1r	  Ú
saved_pos2Úends          r?   r  r  @  s;  € ô ˜6Ó(€EØ—‘€JÜ�uœi×(Ñ(°··Ø‡l�l�3×Ñàˆà�z‰zœMÑ)×=¬o€Gð —‘€JØ”(Ó˜vŸ|™|¨C×0Ñ0ð  Œ
Øˆà‡|�|�C×Ñð  Œ
Ü˜¤i´°C³Ó&9Ð:Ó;Ð;ô ˜Ó
&€CÜ�cœ9×%Ñ%¨S¯\¯\ä˜¤i´°C³Ó&9¸3Ð?Ó@Ð@ð ‡{�{�S—Y‘YÓÜÐ)¨6¯=©=¸&¿*¹*ÓEÐEà‡{�{�c—i‘iÓØˆä�—‘˜cŸi™iÓ(Ð(rA   c                 óÚ  • UR                   [        -  =(       d    [        nU R                  S5      (       a  [	        XS5      $ U R
                  nU R                  S5      (       a   [        X5      $ U[        :X  a�  U R                  S5      (       az  U R                  S5      n[        X5      nU R                  S5      (       d!  [        SU R                  U R
                  5      eU(       a  UR                  UR                  (       + S9nU$ U R                  5       nU(       d!  [        S	U R                  U R
                  5      e[        [!        U5      5      $ ! [         a	    X0l         Nøf = f)
z"Parses an item in a character set.rà   Tz[:rã   rä   r  r  r  zunterminated character set)r—   r  r  rÚ   rè   r4   Úparse_posix_classrO   r"   r  r'   r¡   r¾   r¼   ræ   r»   rù   )rÜ   r    r	  rü   rû  r  rý   s          r?   r  r  i  s  € à�z‰zœMÑ)×=¬o€Gà‡|�|�D×Ñä˜F¨$Ó/Ð/à—
‘
€IØ‡|�|�D×Ñð	#Ü$ VÓ2Ð2ð
 ”(Ó˜vŸ|™|¨C×0Ñ0ð —‘˜cÓ"ˆÜ˜vÓ,ˆà�|‰|˜C× Ñ Ü˜ V§]¡]°F·J±JÓ?Ð?æØ—?‘?°·±Ô,=�?Ð>ˆDàˆà	�‰‹€BÞÜÐ0°&·-±-ÀÇÁÓLÐLä”S˜“WÓÐøô/ ó 	#à"ŽJð	#ús   Á&
E ÅE*Å)E*c                 ó    • U R                  S5      n[        U 5      u  p4U R                  S5      (       d
  [        5       e[        X4U(       + U SS9$ )zParses a POSIX character class.rä   z:]T)Úposix)rÚ   r÷  rO   rú  )rÜ   r    rû  rü  rÏ   s        r?   r%  r%  �  sF   € à�\‰\˜#Ó€FÜ)¨&Ó1�O€IØ�<‰<˜×ÑÜ‹lÐä˜9°¬J¸ÀdÑKÐKrA   c                 óx   • [        U 5      nX-
  n[        U5      S:  a  US4$ [        SU-  5      u  p4X-  U-   U4$ )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*  ˜  sJ   € ä�3‹x€HØ‰N€EÜ
ˆ5ƒz�FÓØ˜ˆ{Ðä   u¡Ó-�H€Cà‰>˜CÑ Ð$Ð$rA   c                 ó‚  • U SS S:X  a
  U S   U SS pOSnU R                  S5      n[        U5      S:X  a)  [        [        US   5      [        US   5      -  5      u  p4O3[        U5      S:X  a  [        [        US   5      5      u  p4O
[	        5       eSR                  XU5      nUR                  S	5      (       a  USS
 $ U$ )z<Converts a numeric string to a rational string, if possible.Nr/   rW  r   rp   Ú/rW   z{}{}/{}z/1éþÿÿÿ)Úsplitrf   r*  Úfloatr;  r9   Úendswith)ÚnumericÚsignÚpartsr.  r-  Úresults         r?   Únumeric_to_rationalr9  £  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¨Ó-€FØ‡��t×ÑØ�t˜ˆ}Ðà€MrA   c                 ó°   •  [        SR                  U 5      5      $ ! [        [        4 a)    SR                  S U  5       5      R	                  5       s $ f = f)z&Standardises a property or value name.rp   c              3   ó4   #   • U  H  oS ;  d  M
  Uv •  M     g7f)z_- NrH   r©  s     r?   r«  Ú#standardise_name.<locals>.<genexpr>½  s   é € Ð<¢D˜b°e©O—r‘r¢Dùs   ‚	�	)r9  re   r;  ÚZeroDivisionErrorÚupper)rÏ   s    r?   Ústandardise_namer?  ¸  sP   € ðEÜ" 2§7¡7¨4£=Ó1Ð1øÜÔ)Ð*ó EØ�w‰wÑ<¡DÓ<Ó<×BÑBÓDÒDðEús   ‚ œ6AÁAzALNUM DIGIT PUNCT XDIGITzYES Y NO N TRUE T FALSE Fc                 ó  • U (       a  [        U 5      OSn [        U5      nX4S:X  a
  SSU(       + p!n U(       a$  U (       d  UR                  5       [        ;   a  SU-   nU (       aª  [        R	                  U 5      nU(       d3  U(       d  [        S5      e[        SUR                  UR                  5      eUu  pxUR	                  U5      n	U	c3  U(       d  [        S5      e[        SUR                  UR                  5      e[        US-  U	-  X%S	9$ S
 H@  n [        R	                  U 5      u  pxUR	                  U5      n	U	c  M0  [        US-  U	-  X%S	9s  $    [        R	                  U5      nU(       a:  Uu  px[        U5      [        :X  a  [        US-  S-  X%S	9$ [        US-  U(       + US	9$ UR                  S5      (       a9  [        R	                  USS 5      nU(       a  Uu  pxSU;   a  [        US-  S-  X%S	9$ S H]  u  p UR                  U
5      (       d  M  [        R	                  U 5      u  pxUR	                  USS 5      n	U	c  MM  [        US-  U	-  X%S	9s  $    U(       d  [        S5      e[        SUR                  UR                  5      e)zLooks up a property.N)ÚGENERALCATEGORYÚASSIGNEDrA  Ú
UNASSIGNEDr   zunknown propertyzunknown property valuerZ   rõ  )ÚGCÚSCRIPTÚBLOCKr/   ÚISrW   ÚYES))rG  rE  )ÚINrF  )r?  r>  Ú_POSIX_CLASSESÚ
PROPERTIESræ   r'   r¡   r4   ÚPropertyr¹   Ú_BINARY_VALUESÚ
startswith)Úpropertyrg   r¼   rÜ   r'  rá  rÖ   Úprop_idÚ
value_dictÚval_idÚprefixs              r?   rú  rú  Ã  sY  € ö .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ó .ˆÜ(Ÿn™n¨XÓ6ÑˆØ—‘ Ó&ˆØÓÜ˜W¨™]¨fÑ4°hÑRÒRñ	 .ô �>‰>˜%Ó €DÞØ"ÑˆÜˆz‹?œnÓ,Ü˜W¨™]¨aÑ/°ÑMÐMä˜ 2™¨8¤|¸hÑGÐGð ×Ñ˜×ÑÜ�~‰~˜e A C˜kÓ*ˆÞØ"&ÑˆGØ˜
Ó"Ü ¨B¡°!Ñ 3°XÑQÐQó @ÑˆØ×Ñ˜F×#Ó#Ü",§.¡.°Ó":ÑˆGØ—^‘^ E¨!¨# KÓ0ˆFØÓ!Ü ¨B¡°&Ñ 8¸(ÑVÒVñ @ö ÜÐ&Ó'Ð'ä
Ð" F§M¡M°6·:±:Ó
>Ð>rA   c                 ó‚  • U R                  5       nU[        ;   a°  [        R                  U5      nU(       a  S[        U5      /4$ U[        ;   a$  US:X  d  U(       a  S[        U [        U   U5      /4$ US:X  a  S[        X5      /4$ US:X  a  U(       a  [        U 5      nUb  SU/4$ [        SU-  U R                  U R                  5      e[        U R                  [        5      (       a  SnOSnUS	:X  ae  Un[        U5      S
:  aB  U R                  nU R                  5       nU[        ;  a  Xpl
        OXc-  n[        U5      S
:  a  MB  S[!        US5      U-  /4$ U["        ;   a‰  UnU R                  nU R                  5       nU["        ;   aM  Xc-  nU R                  nU R                  5       nU(       a&  [%        Xc-   5      (       a  S[!        Xc-   S5      U-  /4$ Xpl
        S[!        U5      /4$ US:X  a  S[        S5      /4$ U(       d!  [        SU R                  U R                  5      eS[        S5      [        U5      /4$ )z0Compiles a replacement template escape sequence.Fr   r¿  TrÁ  rÈ  rÞ  rß  rT  rä  rY   rà   r¾  )ræ   r/  rÙ  rù   rÉ  Úparse_repl_hex_escapeÚcompile_repl_groupÚparse_repl_named_charr'   r¡   r4   r0   ÚsepÚbytesrf   r¨  r$  r3  r²  )rÜ   r3   Ú
is_unicoderý   rg   râ  r<  rü   s           r?   Ú_compile_replacementr[  	  s  € à	�‰‹€BØ	ŒUƒ{ä!×%Ñ% bÓ)ˆÞØœ3˜u›:˜,Ð&Ð&à”Ó "¨£)®zàÔ0°¼ÀR¹È"ÓMÐNÐNÐNà�‹9àÔ,¨VÓ=Ð>Ð>Ð>à�‹9žä)¨&Ó1ˆEØÑ Ø˜u˜g�~Ð%äÐ%¨Ñ*¨F¯M©M¸6¿:¹:ÓFÐFä�&—*‘*œe×$Ñ$Ø‰
àˆ
à	ˆSƒyàˆÜ�&‹k˜A‹oØŸ
™
ˆIØ—‘“ˆBØœÓ#Ø&”
ØØ‰LˆFô �&‹k˜A�oð ”s˜6 1“~¨
Ñ2Ð3Ð3Ð3à	ŒVƒ|ð ˆØ—J‘Jˆ	Ø�Z‰Z‹\ˆØ”‹<Ø‰LˆFØŸ
™
ˆIØ—‘“ˆBÞ”h˜v™{×+Ñ+àœs 6¡;°Ó2°ZÑ?Ð@Ð@Ð@ð Œ
Ø”c˜&“k�]Ð"Ð"à	ˆTƒzà”s˜4“y�kÐ!Ð!æäÐ1°6·=±=À&Ç*Á*ÓMÐMð ”3�t“9œc "›gÐ&Ð&Ð&rA   c                 ó$  • / n[        U5       He  nU R                  5       nU[        ;  a7  [        SU< SR	                  U5      < 3U R
                  U R                  5      eUR                  U5        Mg     [        SR	                  U5      S5      $ )z5Parses a hex escape sequence in a replacement string.ræ  rp   rZ   )	rç  ræ   rº  r'   re   r¡   r4   rc   r$  )rÜ   ré  rê  r<  ry   rý   s         r?   rU  rU  Q  su   € à€FÜ�<Ö ˆØ�Z‰Z‹\ˆØ”ZÓÝ²d¸B¿G¹GÀF½OÐLØ�m‰m˜VŸZ™Zó)ð )à�‰�bÖñ !ô ˆr�w‰w�v‹ Ó#Ð#rA   c                 ód  • U R                   nU R                  S5      (       aY  U R                  [        [	        S5      -  5      nU R                  S5      (       a"   [
        R                  " U5      n[        U5      $ Xl         g! [         a"    [        SU R                  U R                   5      ef = f)z1Parses a named character in a replacement string.r  Ú r"  rð  N)r4   rÚ   rL  r/  r¹   rò  ró  rù   r‰   r'   r¡   )rÜ   rü   rÏ   rg   s       r?   rW  rW  ]  s™   € à—
‘
€IØ‡|�|�C×ÑØ×Ñ¤¬¨C«Ñ 0Ó1ˆà�<‰<˜×ÑðÜ#×*Ò*¨4Ó0�Ü˜5“zÐ!ð
 „JØøô ó ÜÐ6¸¿¹Ø—*‘*óð ðús   Á B Â,B/c                 ój  • U R                  S5        [        U SS5      nU R                  S5        UR                  5       (       aG  [        U5      nSUs=::  a  UR                  ::  d#  O  [        SU R                  U R                  5      eU$  UR                  U   $ ! [         a    [        S5      ef = f)z0Compiles a replacement template group reference.r@  TrQ  r   úinvalid group referenceúunknown group)r^  r\  r¡  r$  Úgroupsr'   r¡   r4   Ú
groupindexr‰   Ú
IndexError)rÜ   r3   rÏ   Úindexs       r?   rV  rV  n  sš   € à
‡M�M�#ÔÜ�f˜d DÓ)€Dà
‡M�M�#ÔØ‡|�|‡~�~Ü�D“	ˆØ�EÕ+˜WŸ^™^Õ+ÜÐ1°6·=±=À&Ç*Á*ÓMÐMàˆð*Ø×!Ñ! $Ñ'Ð'øÜó *Ü˜Ó)Ð)ð*ús   ÂB ÂB2z  rZ   z	NON-MATCHÚMATCH©FTz SIMPLE_IGNORE_CASEz FULL_IGNORE_CASEc                 ó@   • [        U 5      S:X  a  U S   $ [        U 5      $ ©Nr/   r   )rf   rú   ©r  s    r?   Úmake_sequencerk  �  s    € Ü
ˆ5ƒz�QƒØ�Q‰xˆÜ�E‹?ÐrA   c                   ó‚   • \ rS rSrS rSS jrS rS rS rS r	S	 r
S
 rS rS rS rSS jrS rS rS rS rS rSrg)Ú	RegexBasei•  c                 ó&   • U R                   U l        g r§  )rb   Ú_key©r<   s    r?   r;   ÚRegexBase.__init__–  s   € Ø—N‘Nˆ�	rA   Nc                 ó0  • Uc  U R                   nO[        U5      nUc  U R                  nO[        U[        -     nUc  U R
                  nO[        U5      nXR                   :X  a   X R                  :X  a  X0R
                  :X  a  U $ U R                  XU5      $ r§  )r¼   r«   r´   ÚCASE_FLAGS_COMBINATIONSrÉ   r¶   Úrebuild©r<   r¼   r´   r¶   s       r?   r¾   ÚRegexBase.with_flags™  sƒ   € ØÑØ—}‘}‰Hä˜H“~ˆHØÑØŸ™‰Jä0°¼jÑ1HÑIˆJØÑØŸ™‰Iä˜Y›ˆIàŸ™Ó%¨*¿¹Ó*GØ
—~‘~Ó
%ØˆKà�|‰|˜H°)Ó<Ð<rA   c                 ó   • g r§  rH   ©r<   r3   r°   Úfuzzys       r?   Ú
fix_groupsÚRegexBase.fix_groups­  s   € ØrA   c                 ó   • U $ r§  rH   ©r<   r    r°   s      r?   rÁ   ÚRegexBase.optimise°  ó   € ØˆrA   c                 ó   • U $ r§  rH   ©r<   r    s     r?   Úpack_charactersÚRegexBase.pack_characters³  r  rA   c                 ó   • U $ r§  rH   rp  s    r?   Úremove_capturesÚRegexBase.remove_captures¶  r  rA   c                 ó   • g©NTrH   rp  s    r?   Ú	is_atomicÚRegexBase.is_atomic¹  ó   € ØrA   c                 ó   • grˆ  rH   rp  s    r?   Úcan_be_affixÚRegexBase.can_be_affix¼  r‹  rA   c                 ó   • g©NFrH   rp  s    r?   Úcontains_groupÚRegexBase.contains_group¿  ó   € ØrA   c                 ó   • [        5       er§  )rR   ©r<   r°   s     r?   Úget_firstsetÚRegexBase.get_firstsetÂ  s   € ÜÓÐrA   c                 ó   • gr�  rH   rp  s    r?   Úhas_simple_startÚRegexBase.has_simple_startÅ  r“  rA   c                 ó$   • U R                  X5      $ r§  )Ú_compile©r<   r°   ry  s      r?   r®   ÚRegexBase.compileÈ  s   € Ø�}‰}˜WÓ,Ð,rA   c                 ó   • gr�  rH   rp  s    r?   r  ÚRegexBase.is_emptyË  r“  rA   c                 ó,   • [        U R                  5      $ r§  )Úhashro  rp  s    r?   Ú__hash__ÚRegexBase.__hash__Î  s   € Ü�D—I‘I‹ÐrA   c                 ón   • [        U 5      [        U5      L =(       a    U R                  UR                  :H  $ r§  )rê  ro  ©r<   Úothers     r?   Ú__eq__ÚRegexBase.__eq__Ñ  s'   € Ü�D‹zœT %›[Ð(×D¨T¯Y©Y¸%¿*¹*Ñ-DÐDrA   c                 ó.   • U R                  U5      (       + $ r§  )r¨  r¦  s     r?   Ú__ne__ÚRegexBase.__ne__Ô  s   € Ø—;‘;˜uÓ%Ô%Ð%rA   c                 ó&   • U R                  5       S 4$ r§  ©Ú	max_widthr•  s     r?   Úget_required_stringÚRegexBase.get_required_string×  ó   € Ø�~‰~Ó Ð%Ð%rA   )ro  )NNN©FF)rB   rC   rD   rE   r;   r¾   rz  rÁ   r‚  r…  r‰  r�  r‘  r–  r™  r®   r  r£  r¨  r«  r°  rG   rH   rA   r?   rm  rm  •  sX   † ò#ô=ò(òòòòòòòòô-òòòEò&õ&rA   rm  c                   ó6   • \ rS rSrS	S jrS rS rS rS rSr	g)
ÚZeroWidthBaseiÛ  c                 ó”   • [         R                  U 5        [        U5      U l        X l        U R
                  U R                  4U l        g r§  )rm  r;   r«   r¼   rá  rb   ro  )r<   r¼   rá  s      r?   r;   ÚZeroWidthBase.__init__Ü  s4   € Ü×Ñ˜4Ô Ü˜X›ˆŒØ Œà—N‘N D§M¡MÐ1ˆ�	rA   c                 ó   • [        S /5      $ r§  ©r¹   r•  s     r?   r–  ÚZeroWidthBase.get_firstsetã  ó   € Ü�D�6‹{ÐrA   c                 óÂ   • SnU R                   (       a	  U[        -  nU(       a	  U[        -  nU(       a	  U[        -  nX0R                  [
        -  -  nU R                  U4/$ ©Nr   )r¼   ÚPOSITIVE_OPÚFUZZY_OPÚ
REVERSE_OPrá  ÚENCODING_OP_SHIFTÚ_opcode©r<   r°   ry  r—   s       r?   rœ  ÚZeroWidthBase._compileæ  sV   € ØˆØ�=�=Ø”[Ñ ˆEÞØ”XÑˆEÞØ”ZÑˆEØ—‘Ô"3Ñ3Ñ3ˆØ—‘˜uÐ%Ð&Ð&rA   c           	      ó    • [        SR                  [        U-  U R                  [        U R
                     SS/U R                     5      5        g )Nú	{}{} {}{}rp   ú ASCII)Úprintr9   ÚINDENTÚ_op_nameÚPOS_TEXTr¼   rá  ©r<   Úindentr°   s      r?   ÚdumpÚZeroWidthBase.dumpñ  s@   € Üˆk× Ñ ¤¨&¡°$·-±-Ü
�4—=‘=Ñ
! B¨ >°$·-±-Ñ#@óBõ 	CrA   c                 ó   • gr½  rH   rp  s    r?   r¯  ÚZeroWidthBase.max_widthõ  ó   € ØrA   )ro  rá  r¼   N)Tr   )
rB   rC   rD   rE   r;   r–  rœ  rÎ  r¯  rG   rH   rA   r?   rµ  rµ  Û  s   † ô2òò	'òCõrA   rµ  c                   ób   • \ rS rSr\R
                  \R                  S.rSrS r	S r
S rS rSrg	)
rë   iø  rg  ÚANYc                 ó   • grˆ  rH   rp  s    r?   r™  ÚAny.has_simple_startü  r‹  rA   c                 óJ   • SnU(       a	  U[         -  nU R                  U   U4/$ r½  )r¿  rÂ  rÃ  s       r?   rœ  ÚAny._compileÿ  s+   € ØˆÞØ”XÑˆEØ—‘˜gÑ&¨Ð.Ð/Ð/rA   c                 ó\   • [        SR                  [        U-  U R                  5      5        g )Nú{}{})rÈ  r9   rÉ  rÊ  rÌ  s      r?   rÎ  ÚAny.dump  s   € Üˆf�m‰mœF V™O¨T¯]©]Ó;Õ<rA   c                 ó   • g©Nr/   rH   rp  s    r?   r¯  ÚAny.max_width  rÒ  rA   rH   N)rB   rC   rD   rE   ÚOPrÔ  ÚANY_REVrÂ  rÊ  r™  rœ  rÎ  r¯  rG   rH   rA   r?   rë   rë   ø  s-   † Ø—f‘f B§J¡JÑ/€GØ€Hòò0ò=õrA   rë   c                   óP   • \ rS rSr\R
                  \R                  S.rSrS r	Sr
g)r­   i  rg  ÚANY_ALLc                 óh   • SU l         SU l        SU l        U R                  U R                   4U l        g )NTFr   )r¼   r¶   r´   rb   ro  rp  s    r?   r;   ÚAnyAll.__init__  s+   € ØˆŒØˆŒØˆŒà—N‘N D§M¡MÐ1ˆ�	rA   )ro  r´   r¼   r¶   N)rB   rC   rD   rE   rß  râ  ÚANY_ALL_REVrÂ  rÊ  r;   rG   rH   rA   r?   r­   r­     s   † Ø—j‘j¨¯©Ñ7€GØ€Hõ2rA   r­   c                   óJ   • \ rS rSr\R
                  \R                  S.rSrSr	g)rê   i  rg  ÚANY_UrH   N)
rB   rC   rD   rE   rß  rç  Ú	ANY_U_REVrÂ  rÊ  rG   rH   rA   r?   rê   rê     s   † Ø—h‘h b§l¡lÑ3€GØƒHrA   rê   c                   ón   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)r„  i  c                 ó:   • [         R                  U 5        Xl        g r§  )rm  r;   r  )r<   r  s     r?   r;   ÚAtomic.__init__  s   € Ü×Ñ˜4Ô Ø$�rA   c                 ó<   • U R                   R                  XU5        g r§  ©r  rz  rx  s       r?   rz  ÚAtomic.fix_groups  ó   € Ø�‰×"Ñ" 7°UÕ;rA   c                 óœ   • U R                   R                  X5      U l         U R                   R                  5       (       a  U R                   $ U $ r§  )r  rÁ   r  r}  s      r?   rÁ   ÚAtomic.optimise"  s:   € ØŸ/™/×2Ñ2°4ÓAˆŒà�?‰?×#Ñ#×%Ñ%Ø—?‘?Ð"ØˆrA   c                 óF   • U R                   R                  U5      U l         U $ r§  ©r  r‚  r�  s     r?   r‚  ÚAtomic.pack_characters)  ó   € ØŸ/™/×9Ñ9¸$Ó?ˆŒØˆrA   c                 óD   • U R                   R                  5       U l         U $ r§  ©r  r…  rp  s    r?   r…  ÚAtomic.remove_captures-  ó   € ØŸ/™/×9Ñ9Ó;ˆŒØˆrA   c                 ó6   • U R                   R                  5       $ r§  ©r  r�  rp  s    r?   r�  ÚAtomic.can_be_affix1  ó   € Ø�‰×+Ñ+Ó-Ð-rA   c                 ó6   • U R                   R                  5       $ r§  ©r  r‘  rp  s    r?   r‘  ÚAtomic.contains_group4  ó   € Ø�‰×-Ñ-Ó/Ð/rA   c                 ó8   • U R                   R                  U5      $ r§  ©r  r–  r•  s     r?   r–  ÚAtomic.get_firstset7  ó   € Ø�‰×+Ñ+¨GÓ4Ð4rA   c                 ó6   • U R                   R                  5       $ r§  ©r  r™  rp  s    r?   r™  ÚAtomic.has_simple_start:  ó   € Ø�‰×/Ñ/Ó1Ð1rA   c                 ó„   • [         R                  4/U R                  R                  X5      -   [         R                  4/-   $ r§  )rß  ÚATOMICr  r®   ÚENDr�  s      r?   rœ  ÚAtomic._compile=  s6   € Ü—)‘)�� $§/¡/×"9Ñ"9¸'Ó"IÑIÜ�F‰Fˆ:ˆ,ñð 	rA   c                 ó„   • [        SR                  [        U-  5      5        U R                  R	                  US-   U5        g )Nú{}ATOMICr/   )rÈ  r9   rÉ  r  rÎ  rÌ  s      r?   rÎ  ÚAtomic.dumpA  s1   € Üˆj×Ñ¤¨¡Ó0Ô1Ø�‰×Ñ˜V a™Z¨Õ1rA   c                 ó6   • U R                   R                  5       $ r§  ©r  r  rp  s    r?   r  ÚAtomic.is_emptyE  ó   € Ø�‰×'Ñ'Ó)Ð)rA   c                 ón   • [        U 5      [        U5      L =(       a    U R                  UR                  :H  $ r§  )rê  r  r¦  s     r?   r¨  ÚAtomic.__eq__H  s0   € Ü�T“
œd 5›kÐ)÷ ¨d¯o©oØ
×
Ñ
ñ/ð 	rA   c                 ó6   • U R                   R                  5       $ r§  ©r  r¯  rp  s    r?   r¯  ÚAtomic.max_widthL  ó   € Ø�‰×(Ñ(Ó*Ð*rA   c                 ó8   • U R                   R                  U5      $ r§  ©r  r°  r•  s     r?   r°  ÚAtomic.get_required_stringO  ó   € Ø�‰×2Ñ2°7Ó;Ð;rA   )r  N)rB   rC   rD   rE   r;   rz  rÁ   r‚  r…  r�  r‘  r–  r™  rœ  rÎ  r  r¨  r¯  r°  rG   rH   rA   r?   r„  r„    sM   † ò%ò<òòòò.ò0ò5ò2òò2ò*òò+õ<rA   r„  c                   ó0   • \ rS rSr\R
                  rSrSrg)ÚBoundaryiR  ÚBOUNDARYrH   N)	rB   rC   rD   rE   rß  r!  rÂ  rÊ  rG   rH   rA   r?   r   r   R  s   † Ø�k‰k€GØƒHrA   r   c                   ó.  • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS rS rS rSr g)rÛ   iV  c                 ó:   • [         R                  U 5        Xl        g r§  )rm  r;   rÝ   )r<   rÝ   s     r?   r;   ÚBranch.__init__W  s   € Ü×Ñ˜4Ô Ø �rA   c                 óN   • U R                    H  nUR                  XU5        M     g r§  )rÝ   rz  )r<   r3   r°   ry  rv   s        r?   rz  ÚBranch.fix_groups[  s   € Ø—”ˆAØ�L‰L˜¨5Ö1ò rA   c                 ó  • U R                   (       d  [        / 5      $ [        R                  XU R                   5      nU(       a  [        R	                  X5      u  pC/ nO[        R                  X5      u  pS/ n[        R                  XU5      n[        U5      S:”  a_  [        U5      /nU(       a  U(       dD  U R                  XU5      nU(       a+  U(       a  UR                  U5        OUR                  SU5        OUn[        XV-   U-   5      $ ri  )rÝ   rú   rÛ   Ú_flatten_branchesÚ_split_common_suffixÚ_split_common_prefixÚ_reduce_to_setrf   Ú_add_precheckrc   Úinsertrk  )r<   r    r°   rÝ   ÚsuffixrS  rû   Úfirstsets           r?   rÁ   ÚBranch.optimise_  sÝ   € Ø�}�}Ü˜B“<Ðô ×+Ñ+¨D¸4¿=¹=ÓIˆö Ü%×:Ñ:¸4ÓJÑˆFØ‰Fä%×:Ñ:¸4ÓJÑˆFØˆFô ×(Ñ(¨¸ÓAˆäˆx‹=˜1ÓÜ˜xÓ(Ð)ˆHæ¦à×-Ñ-¨d¸XÓF�æÞØ Ÿ™¨Õ1à Ÿ™¨¨8Ô4øàˆHä˜VÑ.°Ñ7Ó8Ð8rA   c           
      ó0  • [        5       nU(       a  SOSnU HI  n[        U5      [        L a4  UR                  [        :X  a   UR                  UR                  U   5        MI    g    U(       d  g [        XU Vs/ s H  n[        U5      PM     sn5      $ s  snf ©Néÿÿÿÿr   )	r¹   rê  ÚLiteralr´   rº   r½   Ú
charactersr¬   r»   )r<   r    r°   rÝ   rÜ  r4   ÚbranchrÆ   s           r?   r,  ÚBranch._add_precheck‚  sz   € Ü“%ˆÞ‰b ˆãˆFÜ�F‹|œwÒ&¨6×+<Ñ+<ÄÓ+FØ—‘˜F×-Ñ-¨cÑ2Ö3áñ	 ö Øä˜tÁWÓ.MÂWÀ¬y¸®|ÁWÑ.MÓNÐNùÒ.Ms   Á7Bc                 óp   • U R                    Vs/ s H  o"R                  U5      PM     snU l         U $ s  snf r§  )rÝ   r‚  )r<   r    rv   s      r?   r‚  ÚBranch.pack_characters‘  s0   € Ø:>¿-º-ÓHº-°Q×*Ñ*¨4Ö0¹-ÑHˆŒØˆùò Is   �3c                 ón   • U R                    Vs/ s H  oR                  5       PM     snU l         U $ s  snf r§  )rÝ   r…  )r<   rv   s     r?   r…  ÚBranch.remove_captures•  s.   € Ø6:·m²mÓD²m°×*Ñ*Ö,±mÑDˆŒØˆùò Eó   �2c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr§  ©r‰  ©rª  rv   s     r?   r«  Ú#Branch.is_atomic.<locals>.<genexpr>š  ó   é € Ð8ª- Q—;‘;—=�=ª-ùó   ‚©r°  rÝ   rp  s    r?   r‰  ÚBranch.is_atomic™  ó   € ÜÑ8¨$¯-ª-Ó8Ó8Ð8rA   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr§  )r�  r@  s     r?   r«  Ú&Branch.can_be_affix.<locals>.<genexpr>�  s   é € Ð;ª]¨—>‘>×#Ð#ª]ùrC  rD  rp  s    r?   r�  ÚBranch.can_be_affixœ  s   € ÜÑ;¨T¯]ª]Ó;Ó;Ð;rA   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr§  ©r‘  r@  s     r?   r«  Ú(Branch.contains_group.<locals>.<genexpr>   s   é € Ð=ª}¨!×#Ñ#×%Ð%ª}ùrC  )r  rÝ   rp  s    r?   r‘  ÚBranch.contains_groupŸ  s   € ÜÑ=¨t¯}ª}Ó=Ó=Ð=rA   c                 óŒ   • [        5       nU R                   H  nX#R                  U5      -  nM     U=(       d    [        S /5      $ r§  )r¹   rÝ   r–  )r<   r°   r¯   rv   s       r?   r–  ÚBranch.get_firstset¢  s;   € Ü‹UˆØ—”ˆAØ—.‘. Ó)Ñ)ŠBñ ð × ”S˜$˜“[Ð rA   c                 ó  • U R                   (       d  / $ [        R                  4/nU R                    HC  nUR                  UR	                  X5      5        UR                  [        R                  45        ME     [        R                  4US'   U$ ©Nr3  )rÝ   rß  ÚBRANCHrÃ   r®   rc   ÚNEXTr  )r<   r°   ry  rÄ   rv   s        r?   rœ  ÚBranch._compile©  sf   € Ø�}�}ØˆIä—‘�ˆˆØ—”ˆAØ�K‰K˜Ÿ	™	 'Ó1Ô2Ø�K‰KœŸ™˜Ö$ñ ô —F‘F�:ˆˆR‰àˆrA   c                 ó"  • [        SR                  [        U-  5      5        U R                  S   R	                  US-   U5        U R                  SS   H9  n[        SR                  [        U-  5      5        UR	                  US-   U5        M;     g )Nz{}BRANCHr   r/   ú{}OR)rÈ  r9   rÉ  rÝ   rÎ  )r<   rÍ  r°   rv   s       r?   rÎ  ÚBranch.dump¶  sr   € Üˆj×Ñ¤¨¡Ó0Ô1Ø�‰�aÑ×Ñ˜f q™j¨'Ô2Ø—‘˜q˜sÓ$ˆAÜ�&—-‘-¤¨¡Ó0Ô1Ø�F‰F�6˜A‘:˜wÖ'ò %rA   c                 óÄ   • / nU HW  nUR                  X5      n[        U[        5      (       a  UR                  UR                  5        MF  UR                  U5        MY     U$ r§  )rÁ   r0   rÛ   rÃ   rÝ   rc   )r    r°   rÝ   Únew_branchesrv   s        r?   r(  ÚBranch._flatten_branches½  sV   € ð ˆÛˆAØ—
‘
˜4Ó)ˆAÜ˜!œV×$Ñ$Ø×#Ñ# A§J¡JÖ/à×#Ñ# AÖ&ñ ð ÐrA   c                 ó  ^^	^
• / nU HG  n[        U[        5      (       a  UR                  UR                  5        M5  UR                  U/5        MI     [	        S U 5       5      nUS   m
Sm	UnT	U:  as  T
T	   R                  5       (       a[  [        U	U
4S jU 5       5      (       a@  T	S-  m	T	U:  a5  T
T	   R                  5       (       a  [        U	U
4S jU 5       5      (       a  M@  T	mU R                  [        -  (       aI  T	mTS:”  aA  [        U4S jU 5       5      (       d'  TS-  mTS:”  a  [        U4S jU 5       5      (       d  M'  TS:X  a  / U4$ / nU H   nUR                  [        UTS  5      5        M"     T
S T U4$ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr§  ©rf   ©rª  ru   s     r?   r«  Ú.Branch._split_common_prefix.<locals>.<genexpr>Ö  ó   é € Ð5ª 1œ˜AŸ˜ªùó   ‚r   c              3   ó:   >#   • U  H  nUT   TT   :H  v •  M     g 7fr§  rH   )rª  ru   r4   rS  s     €€r?   r«  ra  Ü  ó,   øé € ð C-Ú+˜!ð DEÀSÁ6Ø
�‰+öDÚ+ùó   ƒr/   c              3   óP   >#   • U  H  n[         R                  UT5      v •  M     g 7fr§  )rÛ   Ú
_can_split©rª  ru   r5   s     €r?   r«  ra  å  s*   øé € ð (Úð IJ¬×(9Ñ(9¸!¸U×(CÐ(CÚùó   ƒ#&©
r0   rú   rc   r  Úminr�  r°  r—   r   rk  )r    rÝ   Úalternativesrv   r  Úend_posr[  ru   r5   r4   rS  s           @@@r?   r*  ÚBranch._split_common_prefixÊ  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˜Ð Ð-Ð-rA   c                 ó  ^^	^
• / nU HG  n[        U[        5      (       a  UR                  UR                  5        M5  UR                  U/5        MI     [	        S U 5       5      nUS   m
Sm	SU-
  nT	U:”  as  T
T	   R                  5       (       a[  [        U	U
4S jU 5       5      (       a@  T	S-  m	T	U:”  a5  T
T	   R                  5       (       a  [        U	U
4S jU 5       5      (       a  M@  ST	-
  mU R                  [        -  (       aG  TS:”  aA  [        U4S jU 5       5      (       d'  TS-  mTS:”  a  [        U4S jU 5       5      (       d  M'  TS:X  a  / U4$ / nU H!  nUR                  [        US T*  5      5        M#     T
T* S  U4$ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr§  r_  r`  s     r?   r«  Ú.Branch._split_common_suffix.<locals>.<genexpr> 	  rb  rc  r   r3  c              3   ó:   >#   • U  H  nUT   TT   :H  v •  M     g 7fr§  rH   )rª  ru   r4   r.  s     €€r?   r«  rr  	  re  rf  r/   c              3   óP   >#   • U  H  n[         R                  UT5      v •  M     g 7fr§  )rÛ   Ú_can_split_revri  s     €r?   r«  rr  	  s*   øé € ð (Úð MN¬×(=Ñ(=¸aÀ×(GÐ(GÚùrj  rk  )r    rÝ   rm  rv   r  rn  r[  ru   r5   r4   r.  s           @@@r?   r)  Ú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Ð  ,Ð.Ð.rA   c                 ó¼  • [         R                  XS-
  5      (       d  g[         R                  X5      (       d  g[         R                  XS-
  US-    5      (       a  g[         R                  XS-   5      (       a#  [         R                  XS-
  US-    5      (       a  g[         R                  XS-
  5      (       a#  [         R                  XS-
  US-    5      (       a  gg)Nr/   TFrW   )rÛ   Ú_is_full_caseÚ
_is_folded)r  r5   s     r?   rh  ÚBranch._can_split	  sÆ   € ô ×#Ñ# E°1©9×5Ñ5Øä×#Ñ# E×1Ñ1Øô ×Ñ˜U¨1¡9¨u°q©yÐ9×:Ñ:Øô × Ñ  °©	×2Ñ2Ü
×
Ñ
˜E¨!¡)¨e°a©iÐ8×
9Ñ
9Øô × Ñ  °©	×2Ñ2Ü
×
Ñ
˜E¨!¡)¨e°a©iÐ8×
9Ñ
9ØàrA   c                 ó  • [        U 5      n[        R                  XU-
  5      (       d  g[        R                  XU-
  S-
  5      (       d  g[        R                  XU-
  S-
  X!-
  S-    5      (       a  g[        R                  XU-
  S-   5      (       a(  [        R                  XU-
  S-
  X!-
  S-    5      (       a  g[        R                  XU-
  S-
  5      (       a(  [        R                  XU-
  S-
  X!-
  S-    5      (       a  gg)NTr/   FrW   )rf   rÛ   rx  ry  )r  r5   r#  s      r?   ru  ÚBranch._can_split_rev6	  sñ   € ä�%‹jˆô ×#Ñ# E°©;×7Ñ7Øä×#Ñ# E°©;¸©?×;Ñ;Øô ×Ñ˜U¨¡;°¡?°S±[À1±_ÐE×FÑFØô × Ñ  ¨e©°a©×8Ñ8Ü
×
Ñ
˜E¨¡+°¡/°C±KÀ!±OÐD×
EÑ
EØô × Ñ  ¨e©°a©×8Ñ8Ü
×
Ñ
˜E¨¡+°¡/°C±KÀ!±OÐD×
EÑ
EØàrA   c                 óè  • [        [        5      n0 n/ nU GHA  n[        R                  U5      (       aE  X6R                     R                  U/5        UR                  UR                  [        U5      5        Mc  [        U[        5      (       a¡  UR                  (       a�  [        R                  UR                  S   5      (       ai  X6R                  S   R                     R                  UR                  5        UR                  UR                  S   R                  [        U5      5        GM  [        R                  XX4U5        UR                  U5        GMD     [        R                  XXE5        U$ r½  )r   rÀ   rÛ   Ú_is_simple_characterrg   rc   Ú
setdefaultrf   r0   rú   r  Ú_flush_char_prefix)r    r°   rÝ   ÚprefixedÚorderr[  rv   s          r?   Ú_merge_common_prefixesÚBranch._merge_common_prefixesQ	  s  € ô
 œtÓ$ˆØˆØˆÜˆAÜ×*Ñ*¨1×-Ñ-àŸ™Ñ!×(Ñ(¨!¨Ô-Ø× Ñ  §¡¬#¨e«*Ö5Ü˜Q¤×)Ñ)¨a¯g¯gÜ×)Ñ)¨!¯'©'°!©*×5Ñ5àŸ™ ™×)Ñ)Ñ*×1Ñ1°!·'±'Ô:Ø× Ñ  §¡¨¡×!1Ñ!1´3°u³:×>ä×)Ñ)¨$¸Øô ð ×#Ñ# A×&ñ ô  	×!Ñ! $°%ÔFàÐrA   c                 óx   • [        U [        5      =(       a$    U R                  =(       a    U R                  (       + $ r§  )r0   r»   r¼   r´   ©rÆ   s    r?   r~  ÚBranch._is_simple_characterm	  s$   € ä˜!œYÓ'×K¨A¯J©J×K¸q¿|¹|Ô;KÐKrA   c                 ó¨  • / n[        5       n[        nU H¢  n[        U[        [        [
        45      (       aW  UR                  U:w  a#  [        R                  XXEU5        UR                  nUR                  UR                  [        S95        Mz  [        R                  XXEU5        UR                  U5        M¤     [        R                  XXEU5        U$ ©Nr³   )r¹   rº   r0   r»   rL  ÚSetBaser´   rÛ   Ú_flush_set_membersr½   r¾   rc   )r    r°   rÝ   r[  r  r´   rv   s          r?   r+  ÚBranch._reduce_to_setq	  sº   € ð ˆÜ“ˆÜˆ
ÛˆAÜ˜!œi¬´7Ð;×<Ñ<à—<‘< :Ó-ä×-Ñ-¨d¸UØ"ô$ð "#§¡�Jà—	‘	˜!Ÿ,™,´&˜,Ð9Ö:ä×)Ñ)¨$¸Øô ð ×#Ñ# AÖ&ñ ô" 	×!Ñ! $°Ø
ô	ð ÐrA   c           	      ó8  ^• U(       d  g [        UR                  5       U4S jS9 HÑ  u  pV[        U5      S:X  a  UR                  [	        US   5      5        M3  / nSnU HU  n	[        U	5      S:”  a  UR                  [	        U	SS  5      5        M1  U(       a  M:  UR                  [        5       5        SnMW     [        [        U5      [        U5      /5      n
UR                  U
R                  X5      5        MÓ     UR                  5         TR                  5         g )Nc                 ó   >• TU S      $ r½  rH   )Úpairr‚  s    €r?   Ú<lambda>Ú+Branch._flush_char_prefix.<locals>.<lambda>“	  s   ø€ Ø
��Q‘Š.rA   ©Úkeyr/   r   FT)
Úsortedr  rf   rc   rk  rú   r»   rÛ   rÁ   rŠ   )r    r°   r�  r‚  r[  rg   rÝ   ÚsubbranchesÚoptionalrv   rû   s      `       r?   r€  ÚBranch._flush_char_prefix�	  sè   ø€ ö Øä% h§n¡nÓ&6ô =ô  ‰OˆEä�8‹} Ó!Ø×#Ñ#¤M°(¸1±+Ó$>Ö?à �Ø �Û!�AÜ˜1“v “zØ#×*Ñ*¬=¸¸1¸3¸Ó+AÖBß%˜XØ#×*Ñ*¬8«:Ô6Ø#'šñ "ô $¤Y¨uÓ%5´v¸kÓ7JÐ$KÓL�Ø×#Ñ# H×$5Ñ$5°dÓ$DÖEñ ð" 	�‰ÔØ�‰�rA   c                 óô   • U(       d  g [        U5      S:X  a  [        U5      S   nO$[        U [        U5      5      R                  X5      nUR	                  UR                  US95        UR                  5         g )Nr/   r   r³   )rf   rÀ   r¿   rÁ   rc   r¾   rŠ   )r    r°   r  r´   r[  r  s         r?   r‹  ÚBranch._flush_set_members§	  s_   € ö Øäˆu‹:˜‹?Ü˜“;˜q‘>‰Dä˜D¤$ u£+Ó.×7Ñ7¸ÓFˆDà×Ñ˜DŸO™O°z˜OÐBÔCà�‰�rA   c                 óÆ   • SUs=::  a  [        U 5      :  d   g  gX   n[        U[        5      =(       a-    UR                  =(       a    UR                  [
        -  [
        :H  $ )Nr   F)rf   r0   r»   r¼   r´   ÚFULLIGNORECASE)r  ry   r  s      r?   rx  ÚBranch._is_full_case¶	  sV   € à�AÕ"œ˜E›
Ô"Øð #Øà‰xˆÜ˜4¤Ó+÷ ?°·±÷ ?Ø�?‰?œ^Ñ+´Ñ
>ð	@rA   c                 óŒ  • [        U 5      S:  a  gU  H<  n[        U[        5      (       a$  UR                  (       a  UR                  (       a  M<    g   SR                  S U  5       5      n[        R                  " [        U5      n[        R                  " 5       nU H$  nU[        R                  " [        U5      :X  d  M$    g   g)NrW   Frp   c              3   óL   #   • U  H  n[        UR                  5      v •  M     g 7fr§  )Úchrrg   ©rª  ry   s     r?   r«  Ú$Branch._is_folded.<locals>.<genexpr>É	  s   é € Ð5ªu¨!œ˜QŸW™WŸ˜ªuùs   ‚"$T)
rf   r0   r»   r¼   r´   re   r   rŸ   ÚFULL_CASE_FOLDINGÚget_expand_on_folding)r  ry   ÚfoldedÚexpanding_charsrÆ   s        r?   ry  ÚBranch._is_folded¿	  sš   € äˆu‹:˜‹>ØãˆAÜ˜q¤)×,Ñ,°A·J·JØ�l�l‰lÙñ ð
 —‘Ñ5©uÓ5Ó5ˆÜ×!Ò!Ô"3°VÓ<ˆô !×6Ò6Ó8ˆã ˆAØœ×)Ò)Ô*;¸QÓ?Õ?Ùñ !ð rA   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr§  ©r  r@  s     r?   r«  Ú"Branch.is_empty.<locals>.<genexpr>Ö	  s   é € Ð7ª A—:‘:—<�<ªùrC  rD  rp  s    r?   r  ÚBranch.is_emptyÕ	  s   € ÜÑ7¨¯ªÓ7Ó7Ð7rA   c                 ón   • [        U 5      [        U5      L =(       a    U R                  UR                  :H  $ r§  )rê  rÝ   r¦  s     r?   r¨  ÚBranch.__eq__Ø	  s'   € Ü�D‹zœT %›[Ð(×L¨T¯]©]¸e¿n¹nÑ-LÐLrA   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr§  r®  r@  s     r?   r«  Ú#Branch.max_width.<locals>.<genexpr>Ü	  rB  rC  )rE  rÝ   rp  s    r?   r¯  ÚBranch.max_widthÛ	  rF  rA   )rÝ   N)!rB   rC   rD   rE   r;   rz  rÁ   r,  r‚  r…  r‰  r�  r‘  r–  rœ  rÎ  Ústaticmethodr(  r*  r)  rh  ru  rƒ  r~  r+  r€  r‹  rx  ry  r  r¨  r¯  rG   rH   rA   r?   rÛ   rÛ   V  sF  † ò!ò2ò!9òFOòòò9ò<ò>ò!òò(ð ñ
ó ð
ð ñ'.ó ð'.ðR ñ&/ó ð&/ðP ñó ðð0 ñó ðð4 ñó ðð6 ñLó ðLð ñó ðð6 ñó ðð2 ñó ðð ñ@ó ð@ð ñó ðò*8òMõ9rA   rÛ   c                   óD   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)rŠ  iÞ	  c                 óŒ   • [         R                  U 5        Xl        X l        X0l        U R
                  U R                  4U l        g r§  )rm  r;   r    ro  rÐ   rb   ro  )r<   r    ro  rÐ   s       r?   r;   ÚCallGroup.__init__ß	  s3   € Ü×Ñ˜4Ô ØŒ	ØŒ
Ø Œà—N‘N D§J¡JÐ.ˆ�	rA   c                 óž  •  [        U R                  5      U l        SU R                  s=::  a  U R                  R                  ::  d  O  [        SXR                  5      eU R                  S:”  a=  U R                  R                  U R                     S:”  a  [        SXR                  5      eU R                  R                  R                  XU45        U R                  U R                  4U l        g ! [         aQ     U R                  R                  U R                     U l         GN! [
         a    [        SXR                  5      ef = ff = f)Nr`  r   ra  r/   zambiguous group reference)r$  ro  r;  r    Úgroup_indexr‰   r'   rÐ   r†  Úopen_group_countÚgroup_callsrc   rb   ro  rx  s       r?   rz  Ú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¿m¹mÓLÐLà�	‰	×Ñ×$Ñ$ d°UÐ%;Ô<à—N‘N D§J¡JÐ.ˆ�	øô ó 	OðOØ!ŸY™Y×2Ñ2°4·:±:Ñ>�—
øÜó OÜÐ5°wÇÁÓNÐNðOúð	Oús   ‚C1 Ã1
EÃ<(D'Ä'!EÅEc                 óD   • [        SU R                  U R                  5      e©Nzgroup reference not allowed©r'   r3   rÐ   rp  s    r?   r…  ÚCallGroup.remove_capturesú	  ó   € ÜÐ1°4·<±<ÀÇÁÓOÐOrA   c                 ó<   • [         R                  U R                  4/$ r§  )rß  Ú
GROUP_CALLÚcall_refr�  s      r?   rœ  ÚCallGroup._compileý	  s   € Ü—‘ §¡Ð.Ð/Ð/rA   c                 ó\   • [        SR                  [        U-  U R                  5      5        g )Nz{}GROUP_CALL {})rÈ  r9   rÉ  ro  rÌ  s      r?   rÎ  ÚCallGroup.dump 
  s    € ÜÐ×&Ñ&¤v°¡¸¿
¹
ÓCÕDrA   c                 ón   • [        U 5      [        U5      L =(       a    U R                  UR                  :H  $ r§  )rê  ro  r¦  s     r?   r¨  ÚCallGroup.__eq__
  ó'   € Ü�D‹zœT %›[Ð(×F¨T¯Z©Z¸5¿;¹;Ñ-FÐFrA   c                 ó   • [         $ r§  r  rp  s    r?   r¯  ÚCallGroup.max_width
  ó   € ÜÐrA   c                 ó   • S U l         g r§  ©r    rp  s    r?   Ú__del__ÚCallGroup.__del__	
  ó	   € Øˆ�	rA   )ro  ro  r    rÐ   N)rB   rC   rD   rE   r;   rz  r…  rœ  rÎ  r¨  r¯  rÎ  rG   rH   rA   r?   rŠ  rŠ  Þ	  s-   † ò/ò/ò&Pò0òEòGòõrA   rŠ  c                   ó    • \ rS rSrS rS rSrg)ÚCallRefi
  c                 ó   • Xl         X l        g r§  )ÚrefÚparsed)r<   rÔ  rÕ  s      r?   r;   ÚCallRef.__init__
  s   € ØŒØ�rA   c                 óœ   • [         R                  U R                  4/U R                  R	                  UU5      -   [         R
                  4/-   $ r§  )rß  ÚCALL_REFrÔ  rÕ  rœ  r  r�  s      r?   rœ  ÚCallRef._compile
  sE   € Ü—+‘+˜tŸx™xÐ(Ð)¨D¯K©K×,@Ñ,@ÀØ
ó-ñ Ü—V‘V�J�<ñ ð 	!rA   )rÕ  rÔ  N©rB   rC   rD   rE   r;   rœ  rG   rH   rA   r?   rÒ  rÒ  
  s   † òõ!rA   rÒ  c                   óB  • \ rS rSr\S4\R                  \S4\R                  \	S4\R                  \
S4\R                  \S4\R                  \S4\R                  \	S4\R                  \
S4\R                  0rS\S4S jrS rSS jrS rS rS	 rS
 rS rS rS rSrg)r»   i
  FTc                 ó  • [         R                  U 5        Xl        [        U5      U l        [
        U   U l        [        U5      U l        U R                  (       aO  U R                  [        -  [        :X  a4  [        R                  " [        [        U R                  5      5      U l        O[        U R                  5      U l        U R                  U R                  U R                  U R                  U R                  4U l        g r§  )rm  r;   rg   r«   r¼   rs  r´   r¶   r›  r   rŸ   r¢  rŸ  r¤  rb   ro  )r<   rg   r¼   r´   r¶   s        r?   r;   ÚCharacter.__init__
  s¦   € ä×Ñ˜4Ô ØŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒà�M�M˜tŸ™´Ñ?Ü
óä ×*Ò*Ô+<¼cÀ$Ç*Á*»oÓNˆD�Kä˜dŸj™j›/ˆDŒKà—^‘^ T§Z¡Z°·±Ø
�/‰/˜4Ÿ>™>ð+ˆ�	rA   c                 ó0   • [        U R                  XU5      $ r§  )r»   rg   ru  s       r?   rt  ÚCharacter.rebuild-
  s   € Ü˜Ÿ™ X¸9ÓEÐErA   c                 ó   • U $ r§  rH   ©r<   r    r°   r¸   s       r?   rÁ   ÚCharacter.optimise0
  r  rA   c                 ó   • [        U /5      $ r§  r¹  r•  s     r?   r–  ÚCharacter.get_firstset3
  r»  rA   c                 ó   • grˆ  rH   rp  s    r?   r™  ÚCharacter.has_simple_start6
  r‹  rA   c                 óÔ  • SnU R                   (       a	  U[        -  nU R                  (       a	  U[        -  nU(       a	  U[        -  n[        U R                  U R                  U4   UU R                  /5      n[        U R                  5      S:”  aC  [        U[        U R                   Vs/ s H  n[        U5      PM     snU R                  S9/5      nUR                  X5      $ s  snf )Nr   r/   r³   )r¼   r¾  r¶   ÚZEROWIDTH_OPr¿  ÚPrecompiledCoderÂ  r´   rg   rf   r¤  rÛ   rÐ  rù   r®   )r<   r°   ry  r—   rÄ   rÆ   s         r?   rœ  ÚCharacter._compile9
  sÄ   € ØˆØ�=�=Ø”[Ñ ˆEØ�>�>Ø”\Ñ!ˆEÞØ”XÑˆEä §¡¨T¯_©_¸gÐ-EÑ FÈØ
�*‰*ð ó ˆô ˆt�{‰{Ó˜aÓä˜4¤¸¿ºÓ(Eº°A¬¨Q®¹Ñ(EØŸ™ñ"*ð +ó ,ˆDð �|‰|˜GÓ+Ð+ùò )Fs   Â*C%c           	      óê   • [        [        U R                  5      5      R                  S5      n[	        SR                  [        U-  [        U R                     U[        U R                     5      5        g )NÚbuz{}CHARACTER {} {}{})ÚasciirŸ  rg   ÚlstriprÈ  r9   rÉ  rË  r¼   Ú	CASE_TEXTr´   ©r<   rÍ  r°   Údisplays       r?   rÎ  ÚCharacter.dumpL
  sV   € Üœ˜DŸJ™J›Ó(×/Ñ/°Ó5ˆÜÐ#×*Ñ*¬6°F©?Ü
�4—=‘=Ñ
! 7¬I°d·o±oÑ,FóHõ 	IrA   c                 ó8   • XR                   :H  U R                  :H  $ r§  )rg   r¼   ©r<   rý   s     r?   ÚmatchesÚCharacter.matchesQ
  s   € Ø—j‘jÑ  T§]¡]Ñ2Ð2rA   c                 ó,   • [        U R                  5      $ r§  )rf   r¤  rp  s    r?   r¯  ÚCharacter.max_widthT
  s   € Ü�4—;‘;ÓÐrA   c                 óp   • U R                   (       d  g[        S U R                   5       5      U l        SU 4$ )Nr  c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr§  ©rù   ©rª  rÆ   s     r?   r«  Ú0Character.get_required_string.<locals>.<genexpr>[
  s   é € Ð&C²{°!¤s¨1§v v²{ùrc  r   )r¼   r…   r¤  Úfolded_charactersr•  s     r?   r°  ÚCharacter.get_required_stringW
  s,   € Ø�}�}Øä!&Ñ&C°t·{²{Ó&CÓ!CˆÔà�$ˆwˆrA   )ro  r´   r¤  rþ  r¼   rg   r¶   N©F)rB   rC   rD   rE   rº   rß  Ú	CHARACTERr   ÚCHARACTER_IGNr   r›  ÚCHARACTER_REVÚCHARACTER_IGN_REVrÂ  r;   rt  rÁ   r–  r™  rœ  rÎ  rõ  r¯  r°  rG   rH   rA   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ò õrA   r»   c                   ón   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)r~  i_
  c                 ój   • [         R                  U 5        Xl        X l        X0l        X@l        XPl        g r§  )rm  r;   r    ro  Úyes_itemÚno_itemrÐ   )r<   r    ro  r  r  rÐ   s         r?   r;   ÚConditional.__init__`
  s)   € Ü×Ñ˜4Ô ØŒ	ØŒ
Ø ŒØŒØ �rA   c                 ó  •  [        U R                  5      U l        SU R                  s=::  a  U R                  R                  ::  d  O  [        SXR                  5      eU R                  R                  XU5        U R                  R                  XU5        g ! [         aj     U R                  R                  U R                     U l         N±! [
         a1    U R                  S:X  a
  SU l          NÕ[        SXR                  5      ef = ff = f)NÚDEFINEr   ra  r`  )r$  ro  r;  r    r·  r‰   r'   rÐ   r†  r  rz  r  rx  s       r?   rz  ÚConditional.fix_groupsh
  sØ   € ð	IÜ˜TŸZ™Z›ˆDŒJð �D—J‘JÕ7 $§)¡)×"7Ñ"7Õ7ÜÐ1°7¿M¹MÓJÐJà�‰× Ñ  °5Ô9Ø�‰×Ñ °%Õ8øô ó 		IðIØ!ŸY™Y×2Ñ2°4·:±:Ñ>�–
øÜó IØ—:‘: Ó)ð "#�D—Jä °¿-¹-ÓHÐHðIúð		Iús)   ‚B Â
DÂ#(CÃ!DÃ.DÃ1DÄDc                 ó°   • U R                   R                  X5      nU R                  R                  X5      n[        XR                  X4U R
                  5      $ r§  )r  rÁ   r  r~  ro  rÐ   )r<   r    r°   r  r  s        r?   rÁ   ÚConditional.optimise|
  sA   € Ø—=‘=×)Ñ)¨$Ó8ˆØ—,‘,×'Ñ'¨Ó6ˆä˜4§¡¨XÀÇÁÓNÐNrA   c                 ó†   • U R                   R                  U5      U l         U R                  R                  U5      U l        U $ r§  )r  r‚  r  r�  s     r?   r‚  ÚConditional.pack_characters‚
  s3   € ØŸ™×5Ñ5°dÓ;ˆŒØ—|‘|×3Ñ3°DÓ9ˆŒØˆrA   c                 ó€   • U R                   R                  5       U l         U R                  R                  5       U l        g r§  )r  r…  r  rp  s    r?   r…  ÚConditional.remove_captures‡
  s*   € ØŸ™×5Ñ5Ó7ˆŒØ—|‘|×3Ñ3Ó5ˆ�rA   c                 óx   • U R                   R                  5       =(       a    U R                  R                  5       $ r§  )r  r‰  r  rp  s    r?   r‰  ÚConditional.is_atomic‹
  s'   € Ø�}‰}×&Ñ&Ó(×E¨T¯\©\×-CÑ-CÓ-EÐErA   c                 óx   • U R                   R                  5       =(       a    U R                  R                  5       $ r§  )r  r�  r  rp  s    r?   r�  ÚConditional.can_be_affixŽ
  s'   € Ø�}‰}×)Ñ)Ó+×K°·±×0IÑ0IÓ0KÐKrA   c                 óx   • U R                   R                  5       =(       d    U R                  R                  5       $ r§  )r  r‘  r  rp  s    r?   r‘  ÚConditional.contains_group‘
  s'   € Ø�}‰}×+Ñ+Ó-×N°·±×1LÑ1LÓ1NÐNrA   c                 óp   • U R                   R                  U5      U R                  R                  U5      -  $ r§  )r  r–  r  r•  s     r?   r–  ÚConditional.get_firstset”
  s0   € Ø—‘×*Ñ*¨7Ó3Ø
�,‰,×
#Ñ
# GÓ
,ñ-ð 	.rA   c                 óz  • [         R                  U R                  4/nUR                  U R                  R                  X5      5        U R                  R                  X5      nU(       a1  UR                  [         R                  45        UR                  U5        UR                  [         R                  45        U$ r§  )
rß  ÚGROUP_EXISTSro  rÃ   r  r®   r  rc   rU  r  ©r<   r°   ry  rÄ   Úadd_codes        r?   rœ  ÚConditional._compile˜
  s~   € Ü—‘ $§*¡*Ð-Ð.ˆØ�‰�D—M‘M×)Ñ)¨'Ó9Ô:Ø—<‘<×'Ñ'¨Ó7ˆÞØ�K‰KœŸ™˜Ô$Ø�K‰K˜Ô!à�‰”R—V‘V�JÔàˆrA   c                 óZ  • [        SR                  [        U-  U R                  5      5        U R                  R                  US-   U5        U R                  R                  5       (       dA  [        SR                  [        U-  5      5        U R                  R                  US-   U5        g g )Nz{}GROUP_EXISTS {}r/   rX  )rÈ  r9   rÉ  ro  r  rÎ  r  r  rÌ  s      r?   rÎ  ÚConditional.dump¤
  s}   € ÜÐ!×(Ñ(¬°&©¸$¿*¹*ÓEÔFØ�‰×Ñ˜6 A™: wÔ/Ø�|‰|×$Ñ$×&Ñ&Ü�&—-‘-¤¨¡Ó0Ô1Ø�L‰L×Ñ˜f q™j¨'Õ2ð 'rA   c                 óx   • U R                   R                  5       =(       a    U R                  R                  5       $ r§  )r  r  r  rp  s    r?   r  ÚConditional.is_empty«
  s'   € Ø�}‰}×%Ñ%Ó'×C¨D¯L©L×,AÑ,AÓ,CÐCrA   c                 óÊ   • [        U 5      [        U5      L =(       aG    U R                  U R                  U R                  4UR                  UR                  UR                  4:H  $ r§  )rê  ro  r  r  r¦  s     r?   r¨  ÚConditional.__eq__®
  sR   € Ü�D‹zœT %›[Ð(÷ H¨d¯j©j¸$¿-¹-Ø
�,‰,ð.Ø!ŸK™K¨¯©¸¿¹ÐGñ.Hð 	HrA   c                 óz   • [        U R                  R                  5       U R                  R                  5       5      $ r§  ©rE  r  r¯  r  rp  s    r?   r¯  ÚConditional.max_width²
  ó)   € Ü�4—=‘=×*Ñ*Ó,¨d¯l©l×.DÑ.DÓ.FÓGÐGrA   c                 ó   • S U l         g r§  rÍ  rp  s    r?   rÎ  ÚConditional.__del__µ
  rÐ  rA   )ro  r    r  rÐ   r  N)rB   rC   rD   rE   r;   rz  rÁ   r‚  r…  r‰  r�  r‘  r–  rœ  rÎ  r  r¨  r¯  rÎ  rG   rH   rA   r?   r~  r~  _
  sT   † ò!ò9ò(Oòò
6òFòLòOò.ò
ò3òDòHòHõrA   r~  c                   ó0   • \ rS rSr\R
                  rSrSrg)ÚDefaultBoundaryi¸
  ÚDEFAULT_BOUNDARYrH   N)	rB   rC   rD   rE   rß  r.  rÂ  rÊ  rG   rH   rA   r?   r-  r-  ¸
  s   † Ø×!Ñ!€GØ!ƒHrA   r-  c                   ó0   • \ rS rSr\R
                  rSrSrg)ÚDefaultEndOfWordi¼
  ÚDEFAULT_END_OF_WORDrH   N)	rB   rC   rD   rE   rß  r1  rÂ  rÊ  rG   rH   rA   r?   r0  r0  ¼
  s   † Ø×$Ñ$€GØ$ƒHrA   r0  c                   ó0   • \ rS rSr\R
                  rSrSrg)ÚDefaultStartOfWordiÀ
  ÚDEFAULT_START_OF_WORDrH   N)	rB   rC   rD   rE   rß  r4  rÂ  rÊ  rG   rH   rA   r?   r3  r3  À
  s   † Ø×&Ñ&€GØ&ƒHrA   r3  c                   ó0   • \ rS rSr\R
                  rSrSrg)rñ   iÄ
  ÚEND_OF_LINErH   N)	rB   rC   rD   rE   rß  r6  rÂ  rÊ  rG   rH   rA   r?   rñ   rñ   Ä
  ó   † Ø�n‰n€GØƒHrA   rñ   c                   ó0   • \ rS rSr\R
                  rSrSrg)rð   iÈ
  ÚEND_OF_LINE_UrH   N)	rB   rC   rD   rE   rß  r9  rÂ  rÊ  rG   rH   rA   r?   rð   rð   È
  ó   † Ø×Ñ€GØƒHrA   rð   c                   ó0   • \ rS rSr\R
                  rSrSrg)ÚEndOfStringiÌ
  ÚEND_OF_STRINGrH   N)	rB   rC   rD   rE   rß  r=  rÂ  rÊ  rG   rH   rA   r?   r<  r<  Ì
  r:  rA   r<  c                   ó0   • \ rS rSr\R
                  rSrSrg)ró   iÐ
  ÚEND_OF_STRING_LINErH   N)	rB   rC   rD   rE   rß  r?  rÂ  rÊ  rG   rH   rA   r?   ró   ró   Ð
  s   † Ø×#Ñ#€GØ#ƒHrA   ró   c                   ó0   • \ rS rSr\R
                  rSrSrg)rò   iÔ
  ÚEND_OF_STRING_LINE_UrH   N)	rB   rC   rD   rE   rß  rA  rÂ  rÊ  rG   rH   rA   r?   rò   rò   Ô
  s   † Ø×%Ñ%€GØ%ƒHrA   rò   c                   ó0   • \ rS rSr\R
                  rSrSrg)Ú	EndOfWordiØ
  ÚEND_OF_WORDrH   N)	rB   rC   rD   rE   rß  rD  rÂ  rÊ  rG   rH   rA   r?   rC  rC  Ø
  r7  rA   rC  c                   ó   • \ rS rSrSrS rSrg)ÚFailureiÜ
  ÚFAILUREc                 ó&   • [         R                  4/$ r§  )rß  rG  r�  s      r?   rœ  ÚFailure._compileß
  s   € Ü—‘�ÐÐrA   rH   N©rB   rC   rD   rE   rÊ  rœ  rG   rH   rA   r?   rF  rF  Ü
  s   † Ø€Hõ rA   rF  c                   ó`   • \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rSrg)r  iâ
  Nc                 óÚ  • [         R                  U 5        Uc  0 nXl        X l        SU;   a%  S H  nX2S   ;   d  M  UR	                  US5        M!     [        U5      [        S5      -  (       a  S H  nUR	                  US5        M     OS H  nUR	                  US5        M     UR	                  SS5        SU;   a  S H  nUS   R	                  US5        M     g SSSUS   S   S.US'   g )	NrD  rH  r  r  rw   r   r/   )r  ry   r|   rE  )rm  r;   r  r   r  r¹   )r<   r  r   rw   s       r?   r;   ÚFuzzy.__init__ã
  sû   € Ü×Ñ˜4Ô ØÑØˆKØ$ŒØ&Ôð �[Ó Û�Ø FÑ+Õ+Ø×*Ñ*¨1¨iÖ8ñ ô ˆ{Óœc %›j×(Û�Ø×&Ñ& q¨&Ö1ò ó �Ø×&Ñ& q¨)Ö4ñ ð 	×Ñ˜s IÔ.ð �[Ó Û�Ø˜FÑ#×.Ñ.¨q°!Ö4ò ð )*°¸Ø˜#Ñ˜qÑ!ñ##ˆK˜ÒrA   c                 ó<   • U R                   R                  XS5        g rˆ  rí  rx  s       r?   rz  ÚFuzzy.fix_groups  s   € Ø�‰×"Ñ" 7°TÕ:rA   c                 óF   • U R                   R                  U5      U l         U $ r§  ró  r�  s     r?   r‚  ÚFuzzy.pack_characters	  rõ  rA   c                 óD   • U R                   R                  5       U l         U $ r§  r÷  rp  s    r?   r…  ÚFuzzy.remove_captures  rù  rA   c                 ó6   • U R                   R                  5       $ r§  ©r  r‰  rp  s    r?   r‰  ÚFuzzy.is_atomic  r  rA   c                 ó6   • U R                   R                  5       $ r§  rÿ  rp  s    r?   r‘  ÚFuzzy.contains_group  r  rA   c                 ó:  • / nS HF  nU R                   U   nUR                  US   5        UR                  US   c  [        OUS   5        MH     S H$  nUR                  U R                   S   U   5        M&     U R                   S   S   nUR                  Uc  [        OU5        SnU(       a	  U[        -  nU R                   R	                  S5      nU(       au  [
        R                  U4[        U5      -   /UR                  US5      -   [
        R                  4/-   U R                  R                  US5      -   [
        R                  4/-   $ [
        R                  U4[        U5      -   /U R                  R                  US5      -   [
        R                  4/-   $ )	NÚdiser   r/   rH  rD  rE  r'  T)r   rc   r  rÀ  ræ   rß  Ú	FUZZY_EXTr…   r®   rU  r  r  ÚFUZZY)r<   r°   ry  Ú	argumentsrw   Úvr—   r'  s           r?   rœ  ÚFuzzy._compile  s…  € àˆ	ÛˆAØ× Ñ  Ñ#ˆAØ×Ñ˜Q˜q™TÔ"Ø×Ñ¨!¨A©$©,�Y¸A¸a¹DÖAñ ó ˆ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°;ñ?ð 	@rA   c                 ó¾   • U R                  5       nU(       a  SU-   n[        SR                  [        U-  U5      5        U R                  R                  US-   U5        g )Nr^  z	{}FUZZY{}r/   )Ú_constraints_to_stringrÈ  r9   rÉ  r  rÎ  )r<   rÍ  r°   r   s       r?   rÎ  Ú
Fuzzy.dump5  sN   € Ø×1Ñ1Ó3ˆÞØ Ñ+ˆKÜˆk× Ñ ¤¨&¡°+Ó>Ô?Ø�‰×Ñ˜V a™Z¨Õ1rA   c                 ó6   • U R                   R                  5       $ r§  r  rp  s    r?   r  ÚFuzzy.is_empty<  r  rA   c                 ó®   • [        U 5      [        U5      L =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r§  )rê  r  r   r¦  s     r?   r¨  ÚFuzzy.__eq__?  sL   € Ü�T“
œd 5›kÐ)÷ E¨d¯o©oØ
×
Ñ
ñ/÷ EØ#×/Ñ/°5×3DÑ3DÑDð	FrA   c                 ó   • [         $ r§  r  rp  s    r?   r¯  ÚFuzzy.max_widthC  rË  rA   c                 ó  • / nS Ha  nU R                   U   u  p4US:X  a  M  SnUS:”  a  SR                  U5      nXR-  nUb  USR                  U5      -  nUR                  U5        Mc     / nS H=  nU R                   S   U   nUS:”  d  M  UR                  SR                  Xr5      5        M?     U R                   S   S   nUb8  US:”  a2  S	R                  S
R                  U5      U5      nUR                  U5        SR                  U5      $ )NÚidsr   rp   z{}<=z<={}rD  rÚ  rE  z{}<={}r  r!  )r   r9   rc   re   )	r<   r   rÏ   rl  rE  ÚconrD  rI  Úlimits	            r?   ra  ÚFuzzy._constraints_to_stringF  s  € ØˆãˆDØ×'Ñ'¨Ñ-‰HˆCØ�a‹xÙàˆCà�Q‹wØ—m‘m CÓ(�à‰KˆCà‰Ø�v—}‘} SÓ)Ñ)�à×Ñ˜sÖ#ñ ð" ˆÛˆDØ×$Ñ$ VÑ,¨TÑ2ˆEØ�q�yØ—‘˜FŸM™M¨%Ó6Ö7ñ ð
 × Ñ  Ñ(¨Ñ/ˆØÑ ¨£Ø—?‘? 3§8¡8¨D£>°5Ó9ˆDØ×Ñ˜tÔ$à�x‰x˜Ó$Ð$rA   )r   r  r§  )rB   rC   rD   rE   r;   rz  r‚  r…  r‰  r‘  rœ  rÎ  r  r¨  r¯  ra  rG   rH   rA   r?   r  r  â
  sA   † ô!#òF;òòò+ò0ò@ò<2ò*òFòõ%rA   r  c                   ó&   • \ rS rSrS rS rS rSrg)rÑ  ig  c           	      ó†   • [        [        [        [        5       SS 5      [	        5       /5      5      nUR                  X5      $ rÝ  )r„  rú   r
  r­   ÚGraphemeBoundaryr®   )r<   r°   ry  Úgrapheme_matchers       r?   rœ  ÚGrapheme._compileh  sA   € ô "¤(¬J´v³xÀÀDÓ,IÜ
Ó
ð,ó #ó  Ðð  ×'Ñ'¨Ó7Ð7rA   c                 óF   • [        SR                  [        U-  5      5        g )Nz
{}GRAPHEME)rÈ  r9   rÉ  rÌ  s      r?   rÎ  ÚGrapheme.dumpp  s   € Üˆl×!Ñ!¤&¨6¡/Ó2Õ3rA   c                 ó   • [         $ r§  r  rp  s    r?   r¯  ÚGrapheme.max_widths  rË  rA   rH   N)rB   rC   rD   rE   rœ  rÎ  r¯  rG   rH   rA   r?   rÑ  rÑ  g  s   † ò8ò4õrA   rÑ  c                   ó   • \ rS rSrS rSrg)rp  iv  c                 ó(   • [         R                  S4/$ rÝ  )rß  ÚGRAPHEME_BOUNDARYr�  s      r?   r®   ÚGraphemeBoundary.compilew  s   € Ü×%Ñ% qÐ)Ð*Ð*rA   rH   N)rB   rC   rD   rE   r®   rG   rH   rA   r?   rp  rp  v  s   † õ+rA   rp  c                   óŠ   • \ rS rSr\R
                  rSrS rS r	S r
S rS rS rS	 rS
 rS rS rS rS rS rS rS rSrg)r	  iz  ÚGREEDY_REPEATc                 óR   • [         R                  U 5        Xl        X l        X0l        g r§  )rm  r;   r  r  r  )r<   r  r  r  s       r?   r;   ÚGreedyRepeat.__init__~  s   € Ü×Ñ˜4Ô Ø$ŒØ"ŒØ"�rA   c                 ó<   • U R                   R                  XU5        g r§  rí  rx  s       r?   rz  ÚGreedyRepeat.fix_groups„  rï  rA   c                 ó„   • U R                   R                  X5      n[        U 5      " X0R                  U R                  5      $ r§  )r  rÁ   rê  r  r  ©r<   r    r°   r  s       r?   rÁ   ÚGreedyRepeat.optimise‡  s/   € Ø—_‘_×-Ñ-¨dÓ<ˆ
ä�DŒz˜*§n¡n°d·n±nÓEÐErA   c                 óF   • U R                   R                  U5      U l         U $ r§  ró  r�  s     r?   r‚  ÚGreedyRepeat.pack_charactersŒ  rõ  rA   c                 óD   • U R                   R                  5       U l         U $ r§  r÷  rp  s    r?   r…  ÚGreedyRepeat.remove_captures�  rù  rA   c                 óv   • U R                   U R                  :H  =(       a    U R                  R                  5       $ r§  )r  r  r  r‰  rp  s    r?   r‰  ÚGreedyRepeat.is_atomic”  s'   € Ø�~‰~ §¡Ñ/×O°D·O±O×4MÑ4MÓ4OÐOrA   c                 ó   • gr�  rH   rp  s    r?   r�  ÚGreedyRepeat.can_be_affix—  r“  rA   c                 ó6   • U R                   R                  5       $ r§  rÿ  rp  s    r?   r‘  ÚGreedyRepeat.contains_groupš  r  rA   c                 ó~   • U R                   R                  U5      nU R                  S:X  a  UR                  S 5        U$ r½  )r  r–  r  r½   )r<   r°   r¯   s      r?   r–  ÚGreedyRepeat.get_firstset�  s2   € Ø�_‰_×)Ñ)¨'Ó2ˆØ�>‰>˜QÓØ�F‰F�4ŒLàˆ	rA   c                 ó:  • U R                   U R                  /nU R                  c  UR                  [        5        OUR                  U R                  5        U R
                  R                  X5      nU(       d  / $ [        U5      /U-   [        R                  4/-   $ r§  )
rÂ  r  r  rc   r  r  r®   r…   rß  r  )r<   r°   ry  Úrepeatr  s        r?   rœ  ÚGreedyRepeat._compile¤  st   € Ø—,‘, §¡Ð/ˆØ�>‰>Ñ!Ø�M‰Mœ)Õ$à�M‰M˜$Ÿ.™.Ô)à—_‘_×,Ñ,¨WÓ<ˆ
ÞØˆIä�v“� *Ñ,´·±°
¨|Ñ;Ð<rA   c                 óê   • U R                   c  SnOU R                   n[        SR                  [        U-  U R                  U R
                  U5      5        U R                  R                  US-   U5        g )NÚINFú
{}{} {} {}r/   )r  rÈ  r9   rÉ  rÊ  r  r  rÎ  ©r<   rÍ  r°   rl  s       r?   rÎ  ÚGreedyRepeat.dump±  s^   € Ø�>‰>Ñ!Ø‰Eà—N‘NˆEÜˆl×!Ñ!¤&¨6¡/°4·=±=Ø
�.‰.˜%ó!ô 	"ð 	�‰×Ñ˜V a™Z¨Õ1rA   c                 ó6   • U R                   R                  5       $ r§  r  rp  s    r?   r  ÚGreedyRepeat.is_empty»  r  rA   c                 óÊ   • [        U 5      [        U5      L =(       aG    U R                  U R                  U R                  4UR                  UR                  UR                  4:H  $ r§  )rê  r  r  r  r¦  s     r?   r¨  ÚGreedyRepeat.__eq__¾  sT   € Ü�D‹zœT %›[Ð(÷ ¨d¯o©o¸t¿~¹~Ø
�.‰.ð.Ø#×.Ñ.°·±Ø
�/‰/ðñ.ð 	rA   c                 óv   • U R                   c  [        $ U R                  R                  5       U R                   -  $ r§  )r  r  r  r¯  rp  s    r?   r¯  ÚGreedyRepeat.max_widthÃ  s.   € Ø�>‰>Ñ!ÜÐà�‰×(Ñ(Ó*¨T¯^©^Ñ;Ð;rA   c                 ój  • U R                   c  [        OU R                   nU R                  S:X  a/  U R                  R	                  5       U-  n[        U[        5      S 4$ U R                  R                  U5      u  pEU(       a  XE4$ U R                  R	                  5       U-  n[        U[        5      S 4$ r½  )r  r  r  r  r¯  rl  r°  )r<   r°   r  r~   ÚofsÚreqs         r?   r°  Ú GreedyRepeat.get_required_stringÉ  s”   € Ø!%§¡Ñ!7•I¸T¿^¹^ˆ	Ø�>‰>˜QÓØ—‘×)Ñ)Ó+¨iÑ7ˆAÜ�qœ)Ó$ dÐ*Ð*à—?‘?×6Ñ6°wÓ?‰ˆÞØ�8ˆOà�O‰O×%Ñ%Ó'¨)Ñ3ˆÜ�1”iÓ  $Ð&Ð&rA   )r  r  r  N)rB   rC   rD   rE   rß  r|  rÂ  rÊ  r;   rz  rÁ   r‚  r…  r‰  r�  r‘  r–  rœ  rÎ  r  r¨  r¯  r°  rG   rH   rA   r?   r	  r	  z  s_   † Ø×Ñ€GØ€Hò#ò<òFò
òòPòò0òò=ò2ò*òò
<õ'rA   r	  c                   ó&   • \ rS rSrS rS rS rSrg)r  iÖ  c                 ó   • grˆ  rH   rp  s    r?   r‰  ÚPossessiveRepeat.is_atomic×  r‹  rA   c                 óz  • U R                   R                  X5      nU(       d  / $ U R                  U R                  /nU R                  c  UR                  [        5        OUR                  U R                  5        [        R                  4[        U5      /U-   [        R                  4[        R                  4/-   $ r§  )r  r®   rÂ  r  r  rc   r  rß  r  r…   r  )r<   r°   ry  r  r‘  s        r?   rœ  ÚPossessiveRepeat._compileÚ  s�   € Ø—_‘_×,Ñ,¨WÓ<ˆ
ÞØˆIà—,‘, §¡Ð/ˆØ�>‰>Ñ!Ø�M‰Mœ)Õ$à�M‰M˜$Ÿ.™.Ô)ä—)‘)�¤ f£Ð.°Ñ;ÄÇÁ¸zÜ�6‰6ˆ*ð?ñ ð 	rA   c                 ó2  • [        SR                  [        U-  5      5        U R                  c  SnOU R                  n[        SR                  [        US-   -  U R                  U R
                  U5      5        U R                  R                  US-   U5        g )Nr  r”  r•  r/   rW   )rÈ  r9   rÉ  r  rÊ  r  r  rÎ  r–  s       r?   rÎ  ÚPossessiveRepeat.dumpè  sz   € Üˆj×Ñ¤¨¡Ó0Ô1à�>‰>Ñ!Ø‰Eà—N‘NˆEÜˆl×!Ñ!¤&¨F°Q©JÑ"7¸¿¹Ø
�.‰.˜%ó!ô 	"ð 	�‰×Ñ˜V a™Z¨Õ1rA   rH   N)rB   rC   rD   rE   r‰  rœ  rÎ  rG   rH   rA   r?   r  r  Ö  s   † òòõ
2rA   r  c                   ót   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)r  iô  c                 ó`   • [         R                  U 5        Xl        X l        X0l        S U l        g r§  )rm  r;   r    ro  r  rÂ  )r<   r    ro  r  s       r?   r;   ÚGroup.__init__õ  s&   € Ü×Ñ˜4Ô ØŒ	ØŒ
Ø$Œàˆ�rA   c                 ó†   • XU4U R                   R                  U R                  '   U R                  R	                  XU5        g r§  )r    Údefined_groupsro  r  rz  rx  s       r?   rz  ÚGroup.fix_groupsý  s3   € Ø04¸uÐ/Eˆ�	‰	× Ñ  §¡Ñ,Ø�‰×"Ñ" 7°UÕ;rA   c                 óz   • U R                   R                  X5      n[        U R                  U R                  U5      $ r§  )r  rÁ   r  r    ro  r‚  s       r?   rÁ   ÚGroup.optimise  s-   € Ø—_‘_×-Ñ-¨dÓ<ˆ
ä�T—Y‘Y §
¡
¨JÓ7Ð7rA   c                 óF   • U R                   R                  U5      U l         U $ r§  ró  r�  s     r?   r‚  ÚGroup.pack_characters  rõ  rA   c                 ó6   • U R                   R                  5       $ r§  r÷  rp  s    r?   r…  ÚGroup.remove_captures
  ó   € Ø�‰×.Ñ.Ó0Ð0rA   c                 ó6   • U R                   R                  5       $ r§  rU  rp  s    r?   r‰  ÚGroup.is_atomic  r  rA   c                 ó   • gr�  rH   rp  s    r?   r�  ÚGroup.can_be_affix  r“  rA   c                 ó   • grˆ  rH   rp  s    r?   r‘  ÚGroup.contains_group  r‹  rA   c                 ó8   • U R                   R                  U5      $ r§  r  r•  s     r?   r–  ÚGroup.get_firstset  r  rA   c                 ó6   • U R                   R                  5       $ r§  r  rp  s    r?   r™  ÚGroup.has_simple_start  r	  rA   c                 ó
  • / nU R                   =pEUS:  a2  U R                  R                  U   nU R                  R                  U-
  nU R                   X4nU R                  R                  R                  U5      nUb  U[        R                  U4/-  nU[        R                  [        U(       + 5      XT4/-  nX0R                  R                  X5      -  nU[        R                  4/-  nUb  U[        R                  4/-  nU$ r½  )ro  r    Úprivate_groupsr†  Ú	call_refsræ   rß  rØ  ÚGROUPr$  r  r®   r  )r<   r°   ry  rÄ   Úpublic_groupÚprivate_groupr“  rÔ  s           r?   rœ  ÚGroup._compile  sê   € Øˆà'+§z¡zÐ1ˆØ˜1ÓØŸ9™9×3Ñ3°MÑBˆLØ ŸI™I×1Ñ1°MÑAˆMà�j‰j˜'Ð(ˆØ�i‰i×!Ñ!×%Ñ% cÓ*ˆØ‰?Ø”b—k‘k 3Ð'Ð(Ñ(ˆDà”"—(‘(œC G¤Ó,¨mÐJÐKÑKˆØ—‘×'Ñ'¨Ó7Ñ7ˆØ”"—&‘&��Ñˆà‰?Ø”b—f‘f�Z�LÑ ˆDàˆrA   c                 óÜ   • U R                   nUS:  a  U R                  R                  U   n[        SR	                  [
        U-  U5      5        U R                  R                  US-   U5        g )Nr   z
{}GROUP {}r/   )ro  r    rÁ  rÈ  r9   rÉ  r  rÎ  )r<   rÍ  r°   ro  s       r?   rÎ  Ú
Group.dump2  sW   € Ø—
‘
ˆØ�1‹9Ø—I‘I×,Ñ,¨UÑ3ˆEÜˆl×!Ñ!¤&¨6¡/°5Ó9Ô:Ø�‰×Ñ˜V a™Z¨Õ1rA   c                 óž   • [        U 5      [        U5      L =(       a1    U R                  U R                  4UR                  UR                  4:H  $ r§  )rê  ro  r  r¦  s     r?   r¨  ÚGroup.__eq__9  sB   € Ü�T“
œd 5›kÐ)÷ *¨t¯z©z¸4¿?¹?Ð.KØ�;‰;˜×(Ñ(Ð
)ñ/*ð 	+rA   c                 ó6   • U R                   R                  5       $ r§  r  rp  s    r?   r¯  ÚGroup.max_width=  r  rA   c                 ó8   • U R                   R                  U5      $ r§  r  r•  s     r?   r°  ÚGroup.get_required_string@  r  rA   c                 ó   • S U l         g r§  rÍ  rp  s    r?   rÎ  ÚGroup.__del__C  rÐ  rA   )rÂ  ro  r    r  N)rB   rC   rD   rE   r;   rz  rÁ   r‚  r…  r‰  r�  r‘  r–  r™  rœ  rÎ  r¨  r¯  r°  rÎ  rG   rH   rA   r?   r  r  ô  sR   † òò<ò8ò
ò1ò+òòò5ò2òò,2ò+ò+ò<õrA   r  c                   ó0   • \ rS rSr\R
                  rSrSrg)ÚKeepiF  ÚKEEPrH   N)	rB   rC   rD   rE   rß  rÓ  rÂ  rÊ  rG   rH   rA   r?   rÒ  rÒ  F  s   † Ø�g‰g€GØƒHrA   rÒ  c                   ó0   • \ rS rSr\R
                  rSrSrg)r
  iJ  ÚLAZY_REPEATrH   N)	rB   rC   rD   rE   rß  rÕ  rÂ  rÊ  rG   rH   rA   r?   r
  r
  J  r7  rA   r
  c                   ór   • \ rS rSrSSS.rS rS rS rS rS	 r	S
 r
S rS rS rS rS rS rS rS rSrg)rz  iN  ÚAHEADÚBEHINDrg  c                 óz   • [         R                  U 5        [        U5      U l        [        U5      U l        X0l        g r§  )rm  r;   r«   r{  r¼   r  )r<   r{  r¼   r  s       r?   r;   ÚLookAround.__init__Q  s+   € Ü×Ñ˜4Ô Ü˜6“lˆŒÜ˜X›ˆŒØ$�rA   c                 óP   • U R                   R                  XR                  U5        g r§  )r  rz  r{  rx  s       r?   rz  ÚLookAround.fix_groupsW  s   € Ø�‰×"Ñ" 7¯K©K¸Õ?rA   c                 óÞ   • U R                   R                  XR                  5      nU R                  (       a  UR	                  5       (       a  U$ [        U R                  U R                  U5      $ r§  )r  rÁ   r{  r¼   r  rz  r‚  s       r?   rÁ   ÚLookAround.optimiseZ  sL   € Ø—_‘_×-Ñ-¨d·K±KÓ@ˆ
Ø�=�=˜Z×0Ñ0×2Ñ2ØÐä˜$Ÿ+™+ t§}¡}°jÓAÐArA   c                 óF   • U R                   R                  U5      U l         U $ r§  ró  r�  s     r?   r‚  ÚLookAround.pack_charactersa  rõ  rA   c                 ó6   • U R                   R                  5       $ r§  r÷  rp  s    r?   r…  ÚLookAround.remove_capturese  rµ  rA   c                 ó6   • U R                   R                  5       $ r§  rU  rp  s    r?   r‰  ÚLookAround.is_atomich  r  rA   c                 ó6   • U R                   R                  5       $ r§  rû  rp  s    r?   r�  ÚLookAround.can_be_affixk  rý  rA   c                 ó6   • U R                   R                  5       $ r§  rÿ  rp  s    r?   r‘  ÚLookAround.contains_groupn  r  rA   c                 ó’   • U R                   (       a+  U R                  U:X  a  U R                  R                  U5      $ [	        S /5      $ r§  )r¼   r{  r  r–  r¹   r•  s     r?   r–  ÚLookAround.get_firstsetq  s5   € Ø�=�=˜TŸ[™[¨GÓ3Ø—?‘?×/Ñ/°Ó8Ð8ä�D�6‹{ÐrA   c                 óD  • SnU R                   (       a	  U[        -  nU(       a	  U[        -  nU(       a	  U[        -  n[        R
                  U[        U R                  (       + 5      4/U R                  R                  U R                  5      -   [        R                  4/-   $ r½  )r¼   r¾  r¿  rÀ  rß  Ú
LOOKAROUNDr$  r{  r  r®   r  rÃ  s       r?   rœ  ÚLookAround._compilew  s~   € ØˆØ�=�=Ø”[Ñ ˆEÞØ”XÑˆEÞØ”ZÑˆEä—-‘- ¬°·±¬OÓ(<Ð=Ð>Ø
�/‰/×
!Ñ
! $§+¡+Ó
.ñ/Ü35·6±6°*°ñ>ð 	?rA   c                 óì   • [        SR                  [        U-  U R                  U R                     [
        U R                     5      5        U R                  R                  US-   U R                  5        g )Nz{}LOOK{} {}r/   )	rÈ  r9   rÉ  Ú	_dir_textr{  rË  r¼   r  rÎ  rÌ  s      r?   rÎ  ÚLookAround.dumpƒ  sV   € Üˆm×"Ñ"¤6¨F¡?Ø
�.‰.˜Ÿ™Ñ
%¤x°·±Ñ'>ó@ô 	Aà�‰×Ñ˜V a™Z¨¯©Õ5rA   c                 ó\   • U R                   =(       a    U R                  R                  5       $ r§  )r¼   r  r  rp  s    r?   r  ÚLookAround.is_emptyˆ  s   € Ø�}‰}×; §¡×!9Ñ!9Ó!;Ð;rA   c                 óÊ   • [        U 5      [        U5      L =(       aG    U R                  U R                  U R                  4UR                  UR                  UR                  4:H  $ r§  )rê  r{  r¼   r  r¦  s     r?   r¨  ÚLookAround.__eq__‹  sT   € Ü�D‹zœT %›[Ð(÷ O¨d¯k©k¸4¿=¹=Ø
�/‰/ð.Ø$Ÿ|™|¨U¯^©^¸U×=MÑ=MÐNñ.Oð 	OrA   c                 ó   • gr½  rH   rp  s    r?   r¯  ÚLookAround.max_width�  rÒ  rA   )r{  r¼   r  N)rB   rC   rD   rE   rï  r;   rz  rÁ   r‚  r…  r‰  r�  r‘  r–  rœ  rÎ  r  r¨  r¯  rG   rH   rA   r?   rz  rz  N  sU   † Ø xÑ0€Iò%ò@òBòò1ò+ò.ò0òò
?ò6ò
<òOõrA   rz  c                   ór   • \ rS rSrSSS.rS rS rS rS rS	 r	S
 r
S rS rS rS rS rS rS rS rSrg)r‚  i’  r×  rØ  rg  c                 ó’   • [         R                  U 5        [        U5      U l        [        U5      U l        X0l        X@l        XPl        g r§  )rm  r;   r«   r{  r¼   r  r  r  )r<   r{  r¼   r  r  r  s         r?   r;   ÚLookAroundConditional.__init__•  s5   € Ü×Ñ˜4Ô Ü˜6“lˆŒÜ˜X›ˆŒØ$ŒØ ŒØ�rA   c                 ó¬   • U R                   R                  XU5        U R                  R                  XU5        U R                  R                  XU5        g r§  )r  rz  r  r  rx  s       r?   rz  Ú LookAroundConditional.fix_groups�  s>   € Ø�‰×"Ñ" 7°UÔ;Ø�‰× Ñ  °5Ô9Ø�‰×Ñ °%Õ8rA   c                 ó$  • U R                   R                  XR                  5      nU R                  R                  XR                  5      nU R                  R                  XR                  5      n[        U R                  U R                  UXE5      $ r§  )r  rÁ   r{  r  r  r‚  r¼   )r<   r    r°   r  r  r  s         r?   rÁ   ÚLookAroundConditional.optimise¢  sh   € Ø—_‘_×-Ñ-¨d·K±KÓ@ˆ
Ø—=‘=×)Ñ)¨$·±Ó<ˆØ—,‘,×'Ñ'¨¯k©kÓ:ˆä$ T§[¡[°$·-±-ÀØ
óð 	rA   c                 óÆ   • U R                   R                  U5      U l         U R                  R                  U5      U l        U R                  R                  U5      U l        U $ r§  )r  r‚  r  r  r�  s     r?   r‚  Ú%LookAroundConditional.pack_charactersª  sI   € ØŸ/™/×9Ñ9¸$Ó?ˆŒØŸ™×5Ñ5°dÓ;ˆŒØ—|‘|×3Ñ3°DÓ9ˆŒØˆrA   c                 ó¾   • U R                   R                  5       U l         U R                  R                  5       U l        U R                  R                  5       U l        g r§  )r  r…  r  r  rp  s    r?   r…  Ú%LookAroundConditional.remove_captures°  s>   € ØŸ/™/×9Ñ9Ó;ˆŒØŸ™×5Ñ5Ó7ˆŒØ—|‘|×3Ñ3Ó5ˆ�rA   c                 óº   • U R                   R                  5       =(       a;    U R                  R                  5       =(       a    U R                  R                  5       $ r§  )r  r‰  r  r  rp  s    r?   r‰  ÚLookAroundConditional.is_atomicµ  s@   € Ø—‘×)Ñ)Ó+÷ #°·±×0GÑ0GÓ0I÷ #Ø
�,‰,×
 Ñ
 Ó
"ð	$rA   c                 óº   • U R                   R                  5       =(       a;    U R                  R                  5       =(       a    U R                  R                  5       $ r§  )r  r�  r  r  rp  s    r?   r�  Ú"LookAroundConditional.can_be_affix¹  s@   € Ø—‘×,Ñ,Ó.÷ *°4·=±=×3MÑ3MÓ3O÷ *Ø�l‰l×'Ñ'Ó)ð	+rA   c                 óº   • U R                   R                  5       =(       d;    U R                  R                  5       =(       d    U R                  R                  5       $ r§  )r  r‘  r  r  rp  s    r?   r‘  Ú$LookAroundConditional.contains_group½  sD   € Ø—‘×.Ñ.Ó0÷ JØ
�-‰-×
&Ñ
&Ó
(÷JØ,0¯L©L×,GÑ,GÓ,Ið	KrA   c                 óh  • [         R                  [        U R                  5      [        U R                  (       + 5      4/nUR                  U R                  R                  U R                  U5      5        UR                  [         R                  45        UR                  U R                  R                  X5      5        U R                  R                  X5      nU(       a1  UR                  [         R                  45        UR                  U5        UR                  [         R                  45        U$ r§  )rß  ÚCONDITIONALr$  r¼   r{  rÃ   r  r®   rc   rU  r  r  r  r  s        r?   rœ  ÚLookAroundConditional._compileÁ  sÃ   € Ü—‘¤ T§]¡]Ó!3´S¸T¿[¹[¼Ó5IÐJÐKˆØ�‰�D—O‘O×+Ñ+¨D¯K©K¸Ó?Ô@Ø�‰”R—W‘W�KÔ Ø�‰�D—M‘M×)Ñ)¨'Ó9Ô:Ø—<‘<×'Ñ'¨Ó7ˆÞØ�K‰KœŸ™˜Ô$Ø�K‰K˜Ô!à�‰”R—V‘V�JÔàˆrA   c                 ó,  • [        SR                  [        U-  U R                  U R                     [
        U R                     5      5        U R                  R                  US-   U R                  5        [        SR                  [        U-  5      5        U R                  R                  US-   U5        U R                  R                  5       (       dA  [        SR                  [        U-  5      5        U R                  R                  US-   U5        g g )Nz{}CONDITIONAL {} {}r/   z{}EITHERrX  )rÈ  r9   rÉ  rï  r{  rË  r¼   r  rÎ  r  r  r  rÌ  s      r?   rÎ  ÚLookAroundConditional.dumpÏ  sË   € ÜÐ#×*Ñ*¬6°F©?Ø
�.‰.˜Ÿ™Ñ
%¤x°·±Ñ'>ó@ô 	Aà�‰×Ñ˜V a™Z¨¯©Ô5Üˆj×Ñ¤¨¡Ó0Ô1Ø�‰×Ñ˜6 A™: wÔ/Ø�|‰|×$Ñ$×&Ñ&Ü�&—-‘-¤¨¡Ó0Ô1Ø�L‰L×Ñ˜f q™j¨'Õ2ð 'rA   c                 óº   • U R                   R                  5       =(       a    U R                  R                  5       =(       d    U R                  R                  5       $ r§  )r  r  r  r  rp  s    r?   r  ÚLookAroundConditional.is_emptyÙ  s>   € Ø—‘×(Ñ(Ó*×G¨t¯}©}×/EÑ/EÓ/G÷ "Ø
�,‰,×
Ñ
Ó
!ð	#rA   c                 óÊ   • [        U 5      [        U5      L =(       aG    U R                  U R                  U R                  4UR                  UR                  UR                  4:H  $ r§  )rê  r  r  r  r¦  s     r?   r¨  ÚLookAroundConditional.__eq__Ý  sT   € Ü�D‹zœT %›[Ð(÷ M¨d¯o©o¸t¿}¹}Ø
�,‰,ð.Ø!×,Ñ,¨e¯n©n¸e¿m¹mÐLñ.Mð 	MrA   c                 óz   • [        U R                  R                  5       U R                  R                  5       5      $ r§  r'  rp  s    r?   r¯  ÚLookAroundConditional.max_widthá  r)  rA   c                 ó&   • U R                  5       S 4$ r§  r®  r•  s     r?   r°  Ú)LookAroundConditional.get_required_stringä  r²  rA   )r{  r  r¼   r  r  N)rB   rC   rD   rE   rï  r;   rz  rÁ   r‚  r…  r‰  r�  r‘  rœ  rÎ  r  r¨  r¯  r°  rG   rH   rA   r?   r‚  r‚  ’  sU   † Ø xÑ0€Iòò9ò
òò6ò
$ò+òKòò3ò#òMòHõ&rA   r‚  c                   ó    • \ rS rSrS rS rSrg)ré  iç  c                 ó   • Xl         g r§  ©rÄ   )r<   rÄ   s     r?   r;   ÚPrecompiledCode.__init__è  s   € Ø�	rA   c                 ó.   • [        U R                  5      /$ r§  )r…   rÄ   r�  s      r?   rœ  ÚPrecompiledCode._compileë  s   € Ü�d—i‘iÓ Ð!Ð!rA   r  NrÚ  rH   rA   r?   ré  ré  ç  s   † òõ"rA   ré  c                   ó>  • \ rS rSr\S4\R                  \S4\R                  \	S4\R                  \
S4\R                  \S4\R                  \S4\R                  \	S4\R                  \
S4\R                  0rS\SS4S jrS rSS jrS rS	 rS
 rS rS rS rSrg)rL  iî  FTr   c                 ó  • [         R                  U 5        Xl        [        U5      U l        [
        U   U l        [        U5      U l        XPl        U R                  U R                  U R                  U R                  U R                  4U l
        g r§  )rm  r;   rg   r«   r¼   rs  r´   r¶   rá  rb   ro  )r<   rg   r¼   r´   r¶   rá  s         r?   r;   ÚProperty.__init__õ  se   € ä×Ñ˜4Ô ØŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒØ Œà—^‘^ T§Z¡Z°·±Ø
�/‰/˜4Ÿ>™>ð+ˆ�	rA   c                 óF   • [        U R                  XUU R                  5      $ r§  )rL  rg   rá  ru  s       r?   rt  ÚProperty.rebuild  s    € Ü˜Ÿ
™
 H¸)Ø
�-‰-óð 	rA   c                 ó   • U $ r§  rH   rá  s       r?   rÁ   ÚProperty.optimise  r  rA   c                 ó   • [        U /5      $ r§  r¹  r•  s     r?   r–  ÚProperty.get_firstset  r»  rA   c                 ó   • grˆ  rH   rp  s    r?   r™  ÚProperty.has_simple_start  r‹  rA   c                 ó  • SnU R                   (       a	  U[        -  nU R                  (       a	  U[        -  nU(       a	  U[        -  nX0R
                  [        -  -  nU R                  U R                  U4   X0R                  4/$ r½  )
r¼   r¾  r¶   rè  r¿  rá  rÁ  rÂ  r´   rg   rÃ  s       r?   rœ  ÚProperty._compile  sl   € ØˆØ�=�=Ø”[Ñ ˆEØ�>�>Ø”\Ñ!ˆEÞØ”XÑˆEØ—‘Ô"3Ñ3Ñ3ˆØ—‘˜dŸo™o¨wÐ6Ñ7¸Ç
Á
ÐKÐLÐLrA   c                 ó  • [         U R                  S-	     nUS   US   U R                  S-     pT[        SR                  [        U-  [
        U R                     XE[        U R                     SS/U R                     5      5        g )NrZ   r   r/   iÿÿ  z{}PROPERTY {} {}:{}{}{}rp   rÇ  )
ÚPROPERTY_NAMESrg   rÈ  r9   rÉ  rË  r¼   rï  r´   rá  )r<   rÍ  r°   rÖ   rÏ   rg   s         r?   rÎ  ÚProperty.dump  sw   € Ü˜dŸj™j¨BÑ.Ñ/ˆØ˜1‘g˜t A™w t§z¡z°FÑ':Ñ;ˆeÜÐ'×.Ñ.¬v¸©Ü
�4—=‘=Ñ
! 4´	¸$¿/¹/Ñ0JØˆxˆ.˜Ÿ™Ñ
'ó)õ 	*rA   c                 ó^   • [         R                  " U R                  U5      U R                  :H  $ r§  )r   Úhas_property_valuerg   r¼   rô  s     r?   rõ  ÚProperty.matches   s"   € Ü×(Ò(¨¯©°RÓ8¸D¿M¹MÑIÐIrA   c                 ó   • grÝ  rH   rp  s    r?   r¯  ÚProperty.max_width#  rÒ  rA   )ro  r´   rá  r¼   rg   r¶   Nr   )rB   rC   rD   rE   rº   rß  ÚPROPERTYr   ÚPROPERTY_IGNr   r›  ÚPROPERTY_REVÚPROPERTY_IGN_REVrÂ  r;   rt  rÁ   r–  r™  rœ  rÎ  rõ  r¯  rG   rH   rA   r?   rL  rL  î  s¶   † Ø˜ˆ §¡¨j¸%Ð-@Ø‡o�o˜ %Ð(¨"¯+©+¸ÈÐ7NØ‡o�o˜ �~ r§¡¸ÀTÐ8JØ×Ñ˜H dÐ+¨R¯_©_¸~Ø
ð?Ø× Ñ ð	"€Gð (,¸Ø ô
+òôòòò	Mò*òJõrA   rL  c                   ó   • \ rS rSrSrS rSrg)ÚPrunei&  ÚPRUNEc                 ó&   • [         R                  4/$ r§  )rß  r6  r�  s      r?   rœ  ÚPrune._compile)  s   € Ü—‘�ˆ~ÐrA   rH   NrJ  rH   rA   r?   r5  r5  &  s   † Ø€HõrA   r5  c                   ó4  • \ rS rSr\S4\R                  \S4\R                  \	S4\R                  \
S4\R                  \S4\R                  \S4\R                  \	S4\R                  \
S4\R                  0rSrS\S4S jrS rSS jrS rS	 rS
 rS rSrg)r  i,  FTÚRANGEc                 ó4  • [         R                  U 5        Xl        X l        [	        U5      U l        [        U   U l        [	        U5      U l        U R                  U R                  U R                  U R
                  U R                  U R                  4U l
        g r§  )rm  r;   Úlowerr>  r«   r¼   rs  r´   r¶   rb   ro  )r<   r<  r>  r¼   r´   r¶   s         r?   r;   ÚRange.__init__3  sk   € ä×Ñ˜4Ô ØŒ
ØŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒà—^‘^ T§Z¡Z°·±¸T¿]¹]Ø
�/‰/˜4Ÿ>™>ð+ˆ�	rA   c                 óF   • [        U R                  U R                  XU5      $ r§  )r  r<  r>  ru  s       r?   rt  ÚRange.rebuild?  s   € Ü�T—Z‘Z §¡¨XÀ9ÓMÐMrA   c                 óÈ  • U R                   (       a  U R                  [        -  (       a  U(       a  U $ UR                  [        -  (       a  U R                  [
        -  [
        :w  a  U $ [        R                  " 5       n/ nU H‹  nU R                  [        U5      s=::  a  U R                  ::  d  M/  O  M3  [        R                  " [        U5      nUR                  [        U Vs/ s H  n[        U5      PM     snU R                  S95        M�     U(       d  U $ [        U5      U R                  U R                  -
  S-   :  a  UR!                  SU 5        [#        U5      $ s  snf )Nr³   r/   r   )r¼   r´   r   r—   r   r›  r   r£  r<  rù   r>  rŸ   r¢  rc   rÐ  rf   r-  rÛ   )	r<   r    r°   r¸   r¥  r  rý   r¤  rÆ   s	            r?   rÁ   ÚRange.optimiseB  s  € à�}�} T§_¡_´z×%AÆfØˆKð —‘œg×%¨4¯?©?¼^Ñ+KÜ
ó+àˆKô !×6Ò6Ó8ˆð ˆÛ!ˆBØ�z‰zœS ›WÕ2¨¯
©
×2Ñ2Ü×)Ò)Ô*;¸RÓ@�Ø—‘œV±VÓ$<²V°¤S¨¦V±VÑ$<Ø!Ÿ_™_ñ.ö /ñ "ö àˆKäˆu‹:˜Ÿ
™
 T§Z¡ZÑ/°!Ñ3Ó3à�L‰L˜˜DÔ!ä�e‹}Ðùò %=s   Ã#Ec                 óô   • SnU R                   (       a	  U[        -  nU R                  (       a	  U[        -  nU(       a	  U[        -  nU R
                  U R                  U4   X0R                  U R                  4/$ r½  )	r¼   r¾  r¶   rè  r¿  rÂ  r´   r<  r>  rÃ  s       r?   rœ  ÚRange._compilea  sg   € ØˆØ�=�=Ø”[Ñ ˆEØ�>�>Ø”\Ñ!ˆEÞØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸Ç
Á
Ø
�*‰*ðð ð 	rA   c           
      óD  • [        [        U R                  5      5      R                  S5      n[        [        U R                  5      5      R                  S5      n[        SR                  [        U-  [        U R                     X4[        U R                     5      5        g )Nrì  z{}RANGE {} {} {}{})rí  rŸ  r<  rî  r>  rÈ  r9   rÉ  rË  r¼   rï  r´   )r<   rÍ  r°   Údisplay_lowerÚdisplay_uppers        r?   rÎ  Ú
Range.dumpl  sr   € Üœc $§*¡*›oÓ.×5Ñ5°dÓ;ˆÜœc $§*¡*›oÓ.×5Ñ5°dÓ;ˆÜÐ"×)Ñ)¬&°6©/Ü
�4—=‘=Ñ
! =Ü
�D—O‘OÑ
$ó&õ 	'rA   c                 óˆ   • U R                   Us=:*  =(       a    U R                  :*  U R                  :H  $ s  U R                  :H  $ r§  )r<  r>  r¼   rô  s     r?   rõ  ÚRange.matchess  s5   € Ø—
‘
˜b×.Ó. D§J¡JÑ.°4·=±=Ñ@Ð@Ñ.°4·=±=Ñ@Ð@rA   c                 ó   • grÝ  rH   rp  s    r?   r¯  ÚRange.max_widthv  rÒ  rA   )ro  r´   r<  r¼   r>  r¶   Nr   )rB   rC   rD   rE   rº   rß  r:  r   Ú	RANGE_IGNr   r›  Ú	RANGE_REVÚRANGE_IGN_REVrÂ  rÊ  r;   rt  rÁ   rœ  rÎ  rõ  r¯  rG   rH   rA   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õrA   r  c                   ó(  • \ rS rSr\S4\R                  \S4\R                  \	S4\R                  \
S4\R                  \S4\R                  \S4\R                  \	S4\R                  \
S4\R                  0r\4S jrS rS rS rS rS	 rS
 rSrg)rÎ   iy  FTc                 ó¾   • [         R                  U 5        Xl        X l        X0l        [
        U   U l        U R                  U R                  U R                  4U l        g r§  )	rm  r;   r    ro  rÐ   rs  r´   rb   ro  )r<   r    ro  rÐ   r´   s        r?   r;   ÚRefGroup.__init__€  sE   € Ü×Ñ˜4Ô ØŒ	ØŒ
Ø ŒÜ1°*Ñ=ˆŒà—N‘N D§J¡J°·±Ð?ˆ�	rA   c                 óÊ  •  [        U R                  5      U l        SU R                  s=::  a  U R                  R                  ::  d  O  [        SXR                  5      eU R                  U R                  U R                  4U l        g ! [         aP     U R                  R                  U R                     U l         N¡! [
         a    [        SXR                  5      ef = ff = f)Nra  r/   r`  )r$  ro  r;  r    r·  r‰   r'   rÐ   r†  rb   r´   ro  rx  s       r?   rz  ÚRefGroup.fix_groups‰  sµ   € ð	EÜ˜TŸZ™Z›ˆDŒJð �D—J‘JÕ7 $§)¡)×"7Ñ"7Õ7ÜÐ1°7¿M¹MÓJÐJà—N‘N D§J¡J°·±Ð?ˆ�	øô ó 	EðEØ!ŸY™Y×2Ñ2°4·:±:Ñ>�–
øÜó EÜ˜O¨W·m±mÓDÐDðEúð	Eús   ‚B Â
C"Â(B=Â=!CÃC"c                 óD   • [        SU R                  U R                  5      er¼  r½  rp  s    r?   r…  ÚRefGroup.remove_captures—  r¿  rA   c                 óv   • SnU(       a	  U[         -  nU R                  U R                  U4   X0R                  4/$ r½  )r¿  rÂ  r´   ro  rÃ  s       r?   rœ  ÚRefGroup._compileš  s8   € ØˆÞØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸Ç
Á
ÐKÐLÐLrA   c                 ó€   • [        SR                  [        U-  U R                  [        U R
                     5      5        g )Nz{}REF_GROUP {}{})rÈ  r9   rÉ  ro  rï  r´   rÌ  s      r?   rÎ  ÚRefGroup.dump   s0   € ÜÐ ×'Ñ'¬°©¸¿¹Ü
�D—O‘OÑ
$ó&õ 	'rA   c                 ó   • [         $ r§  r  rp  s    r?   r¯  ÚRefGroup.max_width¤  rË  rA   c                 ó   • S U l         g r§  rÍ  rp  s    r?   rÎ  ÚRefGroup.__del__§  rÐ  rA   )ro  r´   ro  r    rÐ   N)rB   rC   rD   rE   rº   rß  Ú	REF_GROUPr   ÚREF_GROUP_IGNr   r›  ÚREF_GROUP_FLDÚREF_GROUP_REVÚREF_GROUP_IGN_REVÚREF_GROUP_FLD_REVrÂ  r;   rz  r…  rœ  rÎ  r¯  rÎ  rG   rH   rA   r?   rÎ   rÎ   y  s´   † Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð :@ô @ò@òPòMò'òõrA   rÎ   c                   ó0   • \ rS rSr\R
                  rSrSrg)rÌ  iª  ÚSEARCH_ANCHORrH   N)	rB   rC   rD   rE   rß  re  rÂ  rÊ  rG   rH   rA   r?   rÌ  rÌ  ª  r:  rA   rÌ  c                   ó¨   • \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rS rS rS r\S 5       r\S 5       r\S 5       rS rS rS rS rSrg)rú   i®  Nc                 óD   • [         R                  U 5        Uc  / nXl        g r§  )rm  r;   r  )r<   r  s     r?   r;   ÚSequence.__init__¯  s   € Ü×Ñ˜4Ô Ø‰=ØˆEà�
rA   c                 óN   • U R                    H  nUR                  XU5        M     g r§  )r  rz  )r<   r3   r°   ry  r|   s        r?   rz  ÚSequence.fix_groups¶  s   € Ø—”ˆAØ�L‰L˜¨5Ö1ò rA   c                 óê   • / nU R                    HW  nUR                  X5      n[        U[        5      (       a  UR	                  UR                   5        MF  UR                  U5        MY     [        U5      $ r§  )r  rÁ   r0   rú   rÃ   rc   rk  )r<   r    r°   r  r|   s        r?   rÁ   ÚSequence.optimiseº  sX   € àˆØ—”ˆAØ—
‘
˜4Ó)ˆAÜ˜!œX×&Ñ&Ø—‘˜QŸW™WÖ%à—‘˜Q–ñ ô ˜UÓ#Ð#rA   c                 ó”  ^• / n/ n[         nU R                   GH‹  n[        U5      [        L až  UR                  (       a�  UR
                  (       d|  UR                  U:w  aO  UR                  (       d  [        TUR                  5      (       a#  [        R                  TUXB5        UR                  nUR                  UR                  5        M´  [        U5      [        L d  [        U5      [        L a|  UR                  U:w  aN  UR                  (       d  [        U4S jU 5       5      (       a#  [        R                  TUXB5        UR                  nUR                  UR                   5        GMT  [        R                  TX4U5        UR                  UR#                  T5      5        GMŽ     [        R                  TX4U5        [%        U5      $ )z+Packs sequences of characters into strings.c              3   ó<   >#   • U  H  n[        TU5      v •  M     g 7fr§  ©r§   ©rª  rÆ   r    s     €r?   r«  Ú+Sequence.pack_characters.<locals>.<genexpr>Û  s$   øé € ð +"Ú ð DE¬:°d¸A×+>Ð+>Ú ùó   ƒ)rº   r  rê  r»   r¼   r¶   r´   r§   rg   rú   Ú_flush_charactersrc   rÐ  r4  r  rÃ   r5  r‚  rk  )r<   r    r  r5  r´   r|   s    `    r?   r‚  ÚSequence.pack_charactersÆ  sN  ø€ àˆØˆ
Üˆ
Ø—•ˆAÜ�A‹wœ)Ò#¨¯
¯
¸1¿;¿;Ø—<‘< :Ó-ð —|—|¤z°$¸¿¹×'@Ñ'@Ü ×2Ñ2°4¸Ø$ô-ð &'§\¡\˜
à×!Ñ! !§'¡'Ö*Ü�a“œFÒ"¤d¨1£g´Ò&8Ø—<‘< :Ó-ð —|—|¤sô +"Ù ó+"÷ ("ñ ("ä ×2Ñ2°4¸Ø$ô-ð &'§\¡\˜
à×!Ñ! !§,¡,×/ä×*Ñ*¨4°ÈÔOà—‘˜Q×.Ñ.¨tÓ4×5ñ7 ô: 	×"Ñ" 4¨ÀÔGä˜UÓ#Ð#rA   c                 ón   • U R                    Vs/ s H  oR                  5       PM     snU l         U $ s  snf r§  )r  r…  )r<   r|   s     r?   r…  ÚSequence.remove_capturesì  s-   € Ø37·:²:Ó>²:¨a×'Ñ'Ö)±:Ñ>ˆŒ
Øˆùò ?r<  c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr§  r?  ©rª  r|   s     r?   r«  Ú%Sequence.is_atomic.<locals>.<genexpr>ñ  ó   é € Ð5ª* Q—;‘;—=�=ª*ùrC  ©r°  r  rp  s    r?   r‰  ÚSequence.is_atomicð  ó   € ÜÑ5¨$¯*ª*Ó5Ó5Ð5rA   c                 ó   • gr�  rH   rp  s    r?   r�  ÚSequence.can_be_affixó  r“  rA   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr§  rM  ry  s     r?   r«  Ú*Sequence.contains_group.<locals>.<genexpr>÷  s   é € Ð:ªz¨!×#Ñ#×%Ð%ªzùrC  )r  r  rp  s    r?   r‘  ÚSequence.contains_groupö  s   € ÜÑ:¨t¯zªzÓ:Ó:Ð:rA   c                 óè   • [        5       nU R                  nU(       a  UR                  5         U H1  nX$R                  U5      -  nS U;  a  Us  $ UR	                  S 5        M3     U[        S /5      -  $ r§  )r¹   r  r°   r–  Údiscard)r<   r°   r¯   r  r|   s        r?   r–  ÚSequence.get_firstsetù  sd   € Ü‹UˆØ—
‘
ˆÞØ�M‰MŒOÛˆAØ—.‘. Ó)Ñ)ˆBØ˜2‹~Ø’	Ø�J‰J�tÖñ	 ð ”C˜˜“KÑÐrA   c                 ót   • [        U R                  5      =(       a    U R                  S   R                  5       $ r½  )r«   r  r™  rp  s    r?   r™  ÚSequence.has_simple_start  s'   € Ü�D—J‘JÓ×D D§J¡J¨q¡M×$BÑ$BÓ$DÐDrA   c                 ó’   • U R                   nU(       a  US S S2   n/ nU H#  nUR                  UR                  X5      5        M%     U$ rS  )r  rÃ   r®   )r<   r°   ry  ÚseqrÄ   r|   s         r?   rœ  ÚSequence._compile	  sF   € Ø�j‰jˆÞØ‘d˜�d‘)ˆCàˆÛˆAØ�K‰K˜Ÿ	™	 'Ó1Ö2ñ ð ˆrA   c                 óL   • U R                    H  nUR                  X5        M     g r§  )r  rÎ  )r<   rÍ  r°   r|   s       r?   rÎ  ÚSequence.dump  s   € Ø—”ˆAØ�F‰F�6Ö#ò rA   c                 ó.  ^ • U(       d  g U[         -  (       a   [        U 4S jU 5       5      (       d  [        nU[        -  [        :X  a„  [        R                  U5      nU Hh  nUR                  n[        U5      S:X  a(  UR                  [        US   UR                  S95        MF  UR                  [        XeR                  S95        Mj     OD[        U5      S:X  a  UR                  [        US   US95        OUR                  [        XS95        / US S & g )Nc              3   ó<   >#   • U  H  n[        TU5      v •  M     g 7fr§  ro  rp  s     €r?   r«  Ú-Sequence._flush_characters.<locals>.<genexpr>  s   øé € Ð?²J¨q”z $¨×*Ð*²Jùrr  r/   r   r³   )r   r  rº   r›  rú   Ú_fix_full_casefoldr5  rf   rc   r»   r´   rÐ  )r    r5  r´   r  Úliteralsr  Úcharss   `      r?   rs  ÚSequence._flush_characters  sÓ   ø€ æØð œ
×"ÜÔ?±JÓ?×?Ñ?Ü#�
àœÑ'¬NÓ:Ü×2Ñ2°:Ó>ˆHã �ØŸ™�ä�u“: “?Ø—L‘L¤¨5°©8ÀÇÁÑ!PÖQà—L‘L¤¨¿/¹/Ñ!JÖKò !ô �:‹ !Ó#Ø—‘œY z°!¡}ÀÑLÕMà—‘œV JÑFÔGàˆ
‘1‰rA   c                 óô  • [         R                  " 5        Vs/ s H  n[         R                  " [        U5      PM      nn[         R                  " [        SR	                  S U  5       5      5      R                  5       n/ nU HX  nUR                  " U5      nUS:¼  d  M  UR                  Xf[        U5      -   45        UR                  " XVS-   5      nUS:¼  a  M;  MZ     Sn/ n[        R                  U5       HJ  u  pšXy:  a  UR                  [        XU	 [        S95        UR                  [        X	U
 [        S95        U
nML     U[        U 5      :  a  UR                  [        XS  [        S95        U$ s  snf )Nrp   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr§  ©rŸ  rü  s     r?   r«  Ú.Sequence._fix_full_casefold.<locals>.<genexpr>:  s   é € ð =Úˆaô >AÀ¿V¸VÚùrc  r   r/   r³   )r   r£  rŸ   r¢  re   r<  Úfindrc   rf   rú   Ú_merge_chunksr4  r   r›  )r5  rÆ   Úexpandedr¡   Úchunksrw   Úfoundr4   r“  r   r#  s              r?   r’  ÚSequence._fix_full_casefold4  s`  € ô
 ×
&Ò
&Ô
(ó*Ú
(ð @A”F×$Ò$Ô%6¸Ö:Ù
(ð 	ð *ä×!Ò!Ô"3°R·W±Wñ =Ùó=ó 6ó  ß %¡£ð 	àˆãˆAØ—K’K “NˆEà˜1•*Ø—‘˜u¬c°!«f¡nÐ5Ô6ØŸš A¨q¡yÓ1�ð ˜1—*ñ ð ˆØˆä"×0Ñ0°Ö8‰JˆEØ‹{Ø—‘¤¨
¸Ð(?Ü'ñ!)ô *ð �O‰OœG J°sÐ$;Ü'ñ)ô *àŠCñ 9ð ”�Z“Ó Ø�O‰OœG J¨uÐ$6Ä:ÑNÔOàˆùò9*s   ˜%E5c                 óæ   • [        U 5      S:  a  U $ U R                  5         U S   u  p/ nU SS   H+  u  pEXB::  a  [        X%5      nM  UR                  X45        XEp!M-     UR                  X45        U$ )NrW   r   r/   )rf   ÚsortrE  rc   )r�  r   r#  Ú
new_chunksr|   rw   s         r?   r›  ÚSequence._merge_chunksV  sx   € äˆv‹;˜‹?ØˆMà�‰Œà˜A‘Y‰
ˆØˆ
à˜1˜3“L‰DˆAØ‹xÜ˜#“k’à×!Ñ! 5 ,Ô/Ø’sñ !ð 	×Ñ˜5˜,Ô'àÐrA   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr§  r©  r   s     r?   r«  Ú$Sequence.is_empty.<locals>.<genexpr>l  s   é € Ð4ª A—:‘:—<�<ªùrC  r|  rp  s    r?   r  ÚSequence.is_emptyk  s   € ÜÑ4¨¯ªÓ4Ó4Ð4rA   c                 ón   • [        U 5      [        U5      L =(       a    U R                  UR                  :H  $ r§  )rê  r  r¦  s     r?   r¨  ÚSequence.__eq__n  rÈ  rA   c                 ó:   • [        S U R                   5       5      $ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr§  r®  ry  s     r?   r«  Ú%Sequence.max_width.<locals>.<genexpr>r  r{  rC  )Úsumr  rp  s    r?   r¯  ÚSequence.max_widthq  r~  rA   c                 óœ   • U R                   nU(       a  US S S2   nSnU H&  nUR                  U5      u  pVX5-  nU(       d  M#  X64s  $    US 4$ r2  )r  r°  )r<   r°   r‹  rŒ  r|   rŸ  r   s          r?   r°  ÚSequence.get_required_stringt  s\   € Ø�j‰jˆÞØ‘d˜�d‘)ˆCàˆãˆAØ×,Ñ,¨WÓ5‰HˆCØ‰MˆFßˆsØ�{Ò"ñ	 ð �tˆ|ÐrA   rj  r§  )rB   rC   rD   rE   r;   rz  rÁ   r‚  r…  r‰  r�  r‘  r–  r™  rœ  rÎ  r²  rs  r’  r›  r  r¨  r¯  r°  rG   rH   rA   r?   rú   rú   ®  s’   † ôò2ò
$ò$$òLò6òò;ò òEò	ò$ð ñó ðð6 ñó ððB ñó ðò(5òGò6õrA   rú   c                   óT   • \ rS rSrS\S4S jrS rS rS rS r	S	 r
S
 rS rS rSrg)rŠ  iƒ  TFc                 ó@  • [         R                  U 5        Xl        [        U5      U l        [        U5      U l        [        U   U l        [        U5      U l	        SU l
        U R                  U R                  U R                  U R                  U R                  4U l        g rÝ  )rm  r;   r    r…   r  r«   r¼   rs  r´   r¶   Ú
char_widthrb   ro  )r<   r    r  r¼   r´   r¶   s         r?   r;   ÚSetBase.__init__„  sr   € ä×Ñ˜4Ô ØŒ	Ü˜5“\ˆŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒàˆŒà—^‘^ T§Z¡Z°·±Ø
�/‰/˜4Ÿ>™>ð+ˆ�	rA   c                 ó†   • [        U 5      " U R                  U R                  XU5      R                  U R                  S5      $ r�  )rê  r    r  rÁ   ru  s       r?   rt  ÚSetBase.rebuild’  s4   € Ü�DŒz˜$Ÿ)™) T§Z¡Z°Ø
óß‘X˜dŸi™i¨Ó/ð	0rA   c                 ó   • [        U /5      $ r§  r¹  r•  s     r?   r–  ÚSetBase.get_firstset–  r»  rA   c                 ó   • grˆ  rH   rp  s    r?   r™  ÚSetBase.has_simple_start™  r‹  rA   c                 ór  • SnU R                   (       a	  U[        -  nU R                  (       a	  U[        -  nU(       a	  U[        -  nU R
                  U R                  U4   U4/nU R                   H"  nUR                  UR                  5       5        M$     UR                  [        R                  45        U$ r½  )r¼   r¾  r¶   rè  r¿  rÂ  r´   r  rÃ   r®   rc   rß  r  )r<   r°   ry  r—   rÄ   rj   s         r?   rœ  ÚSetBase._compileœ  sŽ   € ØˆØ�=�=Ø”[Ñ ˆEØ�>�>Ø”\Ñ!ˆEÞØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸Ð?Ð@ˆØ—”ˆAØ�K‰K˜Ÿ	™	›Ö$ñ ð 	�‰”R—V‘V�JÔàˆrA   c           	      óô   • [        SR                  [        U-  U R                  [        U R
                     [        U R                     5      5        U R                   H  nUR                  US-   U5        M     g )NrÆ  r/   )
rÈ  r9   rÉ  rÊ  rË  r¼   rï  r´   r  rÎ  )r<   rÍ  r°   ry   s       r?   rÎ  ÚSetBase.dump¬  s[   € Üˆk× Ñ ¤¨&¡°$·-±-Ü
�4—=‘=Ñ
!¤9¨T¯_©_Ñ#=ó?ô 	@à—”ˆAØ�F‰F�6˜A‘:˜wÖ'ò rA   c                 ó”  • U R                   (       a  U R                  [        -  (       a  U(       a  U $ U R                  R                  [
        -  (       a  U R                  [        -  [        :w  a  U $ [        R                  " 5       n/ n[        5       nU H”  nU R                  [        U5      5      (       d  M$  [        R                  " [        U5      nXu;  d  MF  UR                  [        U Vs/ s H  n[        U5      PM     snU R                  S95        UR!                  U5        M–     U(       d  U $ [#        U /U-   5      $ s  snf r‰  )r¼   r´   r   r    r—   r   r›  r   r£  r¹   rõ  rù   rŸ   r¢  rc   rÐ  r½   rÛ   )	r<   r    r¸   r¥  r  Úseenrý   r¤  rÆ   s	            r?   Ú_handle_case_foldingÚSetBase._handle_case_folding²  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   Ã/Ec                 óð  • U R                   (       a  U R                  [        -  (       d  gU R                  R                  [
        -  (       a  U R                  [        -  [        :w  a  g[        R                  " 5       n[        5       nU HP  nU R                  [        U5      5      (       d  M$  [        R                  " [        U5      nUR                  U5        MR     U(       d  g[        S U 5       5      $ )Nr/   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr§  r_  )rª  r¤  s     r?   r«  Ú$SetBase.max_width.<locals>.<genexpr>ç  s   é € Ð2ªT 6”3�v—;�;ªTùrc  )r¼   r´   r   r    r—   r   r›  r   r£  r¹   rõ  rù   rŸ   r¢  r½   rE  )r<   r¥  rÀ  rý   r¤  s        r?   r¯  ÚSetBase.max_widthÐ  s°   € à�}�} T§_¡_´z×%AØð —‘—‘¤7×*°·±Ü
ñ1Ü+ó0,àô !×6Ò6Ó8ˆô ‹uˆÛ!ˆBØ�|‰|œC ›G×$Ó$Ü×)Ò)Ô*;¸RÓ@�Ø—‘˜Ö ñ "ö
 ØäÑ2©TÓ2Ó2Ð2rA   c                 ó   • S U l         g r§  rÍ  rp  s    r?   rÎ  ÚSetBase.__del__é  rÐ  rA   )ro  r´   r³  r    r  r¼   r¶   N)rB   rC   rD   rE   rº   r;   rt  r–  r™  rœ  rÎ  rÁ  r¯  rÎ  rG   rH   rA   r?   rŠ  rŠ  ƒ  s7   † Ø-1¸fØô+ò0òòòò (ò&ò<3õ2rA   rŠ  c                   ó  • \ rS rSr\S4\R                  \S4\R                  \	S4\R                  \
S4\R                  \S4\R                  \S4\R                  \	S4\R                  \
S4\R                  0rSrS	S jrS rSrg)
r  iì  FTÚSET_DIFFc                 óL  ^^• U R                   n[        U5      S:”  a  US   [        TUSS  5      /n[        U5      S:X  a8  US   R                  U R                  U R
                  S9R                  TTU5      $ [        UU4S jU 5       5      U l         U R                  TU5      $ )NrW   r   r/   rµ   c              3   óD   >#   • U  H  oR                  TTS S9v •  M     g7f)Tr·   N)rÁ   )rª  rj   r    r°   s     €€r?   r«  Ú#SetDiff.optimise.<locals>.<genexpr>ý  s'   øé € ð Ú
ð GHŸ:™: d¨G¸D˜:ÕAÚ
ùó   ƒ )	r  rf   r¿   r¾   r´   r¶   rÁ   r…   rÁ  )r<   r    r°   r¸   r  s    ``  r?   rÁ   ÚSetDiff.optimiseô  s¥   ù€ Ø—
‘
ˆÜˆu‹:˜‹>Ø˜1‘Xœx¨¨e°A°C¨kÓ:Ð;ˆEäˆu‹:˜‹?Ø˜‘8×&Ñ&°$·/±/ØŸ™ð 'ð (ß(0©°°wÀÓ(GðHô õ Ù
óó ˆŒ
ð ×(Ñ(¨¨vÓ6Ð6rA   c                 ó®   • U R                   S   R                  U5      =(       a#    U R                   S   R                  U5      (       + nX R                  :H  $ ©Nr   r/   ©r  rõ  r¼   ©r<   rý   rj   s      r?   rõ  ÚSetDiff.matches  sB   € Ø�J‰J�q‰M×!Ñ! "Ó%×G¨d¯j©j¸©m×.CÑ.CÀBÓ.GÔ*GˆØ—M‘MÑ!Ð!rA   rj  Nr   )rB   rC   rD   rE   rº   rß  rÊ  r   ÚSET_DIFF_IGNr   r›  ÚSET_DIFF_REVÚSET_DIFF_IGN_REVrÂ  rÊ  rÁ   rõ  rG   rH   rA   r?   r  r  ì  sŒ   † Ø˜ˆ §¡¨j¸%Ð-@Ø‡o�o˜ %Ð(¨"¯+©+¸ÈÐ7NØ‡o�o˜ �~ r§¡¸ÀTÐ8JØ×Ñ˜H dÐ+¨R¯_©_¸~Ø
ð?Ø× Ñ ð	"€Gð
 €Hô7õ"rA   r  c                   ó  • \ rS rSr\S4\R                  \S4\R                  \	S4\R                  \
S4\R                  \S4\R                  \S4\R                  \	S4\R                  \
S4\R                  0rSrS	S jrS rSrg)
r  i  FTÚ	SET_INTERc                 óÂ  • / nU R                    Hg  nUR                  XSS9n[        U[        5      (       a.  UR                  (       a  UR                  UR                   5        MV  UR                  U5        Mi     [        U5      S:X  a7  US   R                  U R                  U R                  S9R                  XU5      $ [        U5      U l         U R                  X5      $ ©NTr·   r/   r   rµ   )r  rÁ   r0   r  r¼   rÃ   rc   rf   r¾   r´   r¶   r…   rÁ  ©r<   r    r°   r¸   r  rj   s         r?   rÁ   ÚSetInter.optimise  s¶   € ØˆØ—”ˆAØ—
‘
˜4°�
Ð6ˆAÜ˜!œX×&Ñ&¨1¯:¯:à—‘˜QŸW™WÖ%à—‘˜Q–ñ ô ˆu‹:˜‹?Ø˜‘8×&Ñ&°$·/±/ØŸ™ð 'ð (ß(0©°ÀÓ(GðHô ˜5“\ˆŒ
à×(Ñ(¨Ó6Ð6rA   c                 ó^   ^• [        U4S jU R                   5       5      nX R                  :H  $ )Nc              3   óD   >#   • U  H  oR                  T5      v •  M     g 7fr§  ©rõ  ©rª  ry   rý   s     €r?   r«  Ú#SetInter.matches.<locals>.<genexpr>!  ó   øé € Ð2¢z !—	‘	˜"—�¢zùrÎ  )r°  r  r¼   rÓ  s    ` r?   rõ  ÚSetInter.matches   ó$   ø€ ÜÔ2 t§z¢zÓ2Ó2ˆØ—M‘MÑ!Ð!rA   rj  Nr   )rB   rC   rD   rE   rº   rß  rÙ  r   ÚSET_INTER_IGNr   r›  ÚSET_INTER_REVÚSET_INTER_IGN_REVrÂ  rÊ  rÁ   rõ  rG   rH   rA   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õ$"rA   r  c                   ó  • \ rS rSr\S4\R                  \S4\R                  \	S4\R                  \
S4\R                  \S4\R                  \S4\R                  \	S4\R                  \
S4\R                  0rSrS	S jrS rSrg)
r  i$  FTÚSET_SYM_DIFFc                 óÂ  • / nU R                    Hg  nUR                  XSS9n[        U[        5      (       a.  UR                  (       a  UR                  UR                   5        MV  UR                  U5        Mi     [        U5      S:X  a7  US   R                  U R                  U R                  S9R                  XU5      $ [        U5      U l         U R                  X5      $ rÛ  )r  rÁ   r0   r  r¼   rÃ   rc   rf   r¾   r´   r¶   r…   rÁ  rÜ  s         r?   rÁ   ÚSetSymDiff.optimise,  s¶   € ØˆØ—”ˆAØ—
‘
˜4°�
Ð6ˆAÜ˜!œZ×(Ñ(¨Q¯Z¯Zà—‘˜QŸW™WÖ%à—‘˜Q–ñ ô ˆu‹:˜‹?Ø˜‘8×&Ñ&°$·/±/ØŸ™ð 'ð (ß(0©°ÀÓ(GðHô ˜5“\ˆŒ
à×(Ñ(¨Ó6Ð6rA   c                 ón   • SnU R                    H  nX#R                  U5      :g  nM     X R                  :H  $ r�  rÒ  )r<   rý   rj   ry   s       r?   rõ  ÚSetSymDiff.matches>  s4   € ØˆØ—”ˆAØ—Y‘Y˜r“]Ñ"ŠAñ ð —M‘MÑ!Ð!rA   rj  Nr   )rB   rC   rD   rE   rº   rß  rê  r   ÚSET_SYM_DIFF_IGNr   r›  ÚSET_SYM_DIFF_REVÚSET_SYM_DIFF_IGN_REVrÂ  rÊ  rÁ   rõ  rG   rH   rA   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õ$"rA   r  c                   ó  • \ rS rSr\S4\R                  \S4\R                  \	S4\R                  \
S4\R                  \S4\R                  \S4\R                  \	S4\R                  \
S4\R                  0rSrS
S jrS rS rSrg	)r¿   iE  FTÚ	SET_UNIONc                 óP  • / nU R                    Hˆ  nUR                  XSS9n[        U[        5      (       a.  UR                  (       a  UR                  UR                   5        MV  [        U[        5      (       a  [        5       s  $ UR                  U5        MŠ     [        5       [        5       4nU HX  n[        U[        5      (       d  M  XeR                     R                  UR                  UR                  UR                  45        MZ     US   US   -  (       a
  [        5       $ [        U5      S:X  aQ  US   nUR                  UR                  U R                  :H  U R                  U R                  S9R                  XU5      $ [!        U5      U l         U R#                  X5      $ )NTr·   r   r/   )r¼   r´   r¶   )r  rÁ   r0   r¿   r¼   rÃ   r­   rc   r¹   rL  r½   rg   r´   r¶   rf   r¾   r…   rÁ  )r<   r    r°   r¸   r  rj   Ú
propertiesry   s           r?   rÁ   ÚSetUnion.optimiseM  sB  € ØˆØ—”ˆAØ—
‘
˜4°�
Ð6ˆAÜ˜!œX×&Ñ&¨1¯:¯:à—‘˜QŸW™WÖ%Ü˜Aœv×&Ñ&Ü“x’à—‘˜Q–ñ ô “eœS›U�^ˆ
ãˆAÜ˜!œX×&Ó&ØŸ:™:Ñ&×*Ñ*¨A¯G©G°Q·\±\À1Ç;Á;Ð+OÖPñ ð �a‰=˜: a™=×(Ü“8ˆOäˆu‹:˜‹?Ø�a‘ˆAØ—<‘<¨¯©°t·}±}Ñ)DØŸ™ØŸ™ð  ð (ç(0©°ÀÓ(GðHô ˜5“\ˆŒ
à×(Ñ(¨Ó6Ð6rA   c                 óp  • SnU R                   (       a	  U[        -  nU R                  (       a	  U[        -  nU(       a	  U[        -  n[        [        5      / pTU R                   HR  n[        U[        5      (       a)  XFR                      R                  UR                  5        MA  UR                  U5        MT     U R                  U R                  U4   U4/nUR                  5        Hƒ  u  p‰SnU(       a	  U[        -  n[        U	5      S:X  a&  UR                  [        R                   X9S   45        ML  UR                  [        R"                  U[        U	5      4[%        U	5      -   5        M…     U H"  nUR'                  UR)                  5       5        M$     UR                  [        R*                  45        U$ rÑ  )r¼   r¾  r¶   rè  r¿  r   rÀ   r  r0   r»   rc   rg   rÂ  r´   rf   rß  r  ÚSTRINGr…   rÃ   r®   r  )
r<   r°   ry  r—   r5  Úothersrj   rÄ   r¼   Úvaluess
             r?   rœ  ÚSetUnion._compilem  sK  € ØˆØ�=�=Ø”[Ñ ˆEØ�>�>Ø”\Ñ!ˆEÞØ”XÑˆEä(¬Ó.°�FØ—”ˆAÜ˜!œY×'Ñ'ØŸ:™:Ñ&×-Ñ-¨a¯g©gÖ6à—‘˜aÖ ñ	 ð —‘˜dŸo™o¨wÐ6Ñ7¸Ð?Ð@ˆà *× 0Ñ 0Ö 2ÑˆHØˆEÞØœÑ$�Ü�6‹{˜aÓØ—‘œRŸ\™\¨5¸±)Ð<Ö=à—‘œRŸY™Y¨¬s°6«{Ð;¼eÀF»mÑKÖLñ !3ó ˆAØ�K‰K˜Ÿ	™	›Ö$ñ ð 	�‰”R—V‘V�JÔàˆrA   c                 ó^   ^• [        U4S jU R                   5       5      nX R                  :H  $ )Nc              3   óD   >#   • U  H  oR                  T5      v •  M     g 7fr§  rà  rá  s     €r?   r«  Ú#SetUnion.matches.<locals>.<genexpr>�  rã  rÎ  )r  r  r¼   rÓ  s    ` r?   rõ  ÚSetUnion.matches�  rå  rA   rj  Nr   )rB   rC   rD   rE   rº   rß  ró  r   ÚSET_UNION_IGNr   r›  ÚSET_UNION_REVÚSET_UNION_IGN_REVrÂ  rÊ  rÁ   rœ  rõ  rG   rH   rA   r?   r¿   r¿   E  sŸ   † Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð
 €Hô7ò@ õD"rA   r¿   c                   ó0   • \ rS rSrSr\R                  rSrg)ÚSkipi“  ÚSKIPrH   N)	rB   rC   rD   rE   rÊ  rß  r  rÂ  rG   rH   rA   r?   r  r  “  s   † Ø€HØ�g‰gƒGrA   r  c                   ó0   • \ rS rSr\R
                  rSrSrg)rî   i—  ÚSTART_OF_LINErH   N)	rB   rC   rD   rE   rß  r  rÂ  rÊ  rG   rH   rA   r?   rî   rî   —  r:  rA   rî   c                   ó0   • \ rS rSr\R
                  rSrSrg)rí   i›  ÚSTART_OF_LINE_UrH   N)	rB   rC   rD   rE   rß  r	  rÂ  rÊ  rG   rH   rA   r?   rí   rí   ›  ó   † Ø× Ñ €GØ ƒHrA   rí   c                   ó0   • \ rS rSr\R
                  rSrSrg)rï   iŸ  ÚSTART_OF_STRINGrH   N)	rB   rC   rD   rE   rß  r  rÂ  rÊ  rG   rH   rA   r?   rï   rï   Ÿ  r
  rA   rï   c                   ó0   • \ rS rSr\R
                  rSrSrg)ÚStartOfWordi£  ÚSTART_OF_WORDrH   N)	rB   rC   rD   rE   rß  r  rÂ  rÊ  rG   rH   rA   r?   r  r  £  r:  rA   r  c                   ó(  • \ rS rSr\S4\R                  \S4\R                  \	S4\R                  \
S4\R                  \S4\R                  \S4\R                  \	S4\R                  \
S4\R                  0r\4S jrS rS rS rS rS	 rS
 rSrg)rÐ  i§  FTc                 ó°  • [        U5      U l        [        U   U l        U R                  [        -  [        :X  aR  / nU R                   H?  n[
        R                  " [        [        U5      5      nUR                  S U 5       5        MA     OU R                  n[        U5      U l
        SU l        U R                  U R                  U R                  4U l        g )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr§  rû  rü  s     r?   r«  Ú"String.__init__.<locals>.<genexpr>¶  s   é € Ð(@º°A¬¨Q¯¨ºùrc  F)r…   r5  rs  r´   r›  r   rŸ   r¢  rŸ  rÃ   rþ  Úrequiredrb   ro  )r<   r5  r´   rþ  r¦   r¤  s         r?   r;   ÚString.__init__®  s¥   € Ü 
Ó+ˆŒÜ1°*Ñ=ˆŒà�O‰OœnÑ,´Ó?Ø "ÐØŸœ�Ü×)Ò)Ô*;¼SÀ»YÓG�Ø!×(Ñ(Ñ(@¹Ó(@Ö@ò (ð !%§¡Ðä!&Ð'8Ó!9ˆÔØˆŒà—N‘N D§O¡O°T·_±_ÐDˆ�	rA   c                 óp   • U(       a  SnOSn[        [        U R                  U   U R                  S9/5      $ )Nr3  r   r³   )r¹   r»   r5  r´   )r<   r°   r4   s      r?   r–  ÚString.get_firstset¿  s:   € ÞØ‰CàˆCÜ”I˜dŸo™o¨cÑ2Ø—_‘_ñ&ð 'ó (ð 	(rA   c                 ó   • grˆ  rH   rp  s    r?   r™  ÚString.has_simple_startÇ  r‹  rA   c                 óØ   • SnU(       a	  U[         -  nU R                  (       a	  U[        -  nU R                  U R                  U4   U[        U R                  5      4U R                  -   /$ r½  )r¿  r  ÚREQUIRED_OPrÂ  r´   rf   rþ  rÃ  s       r?   rœ  ÚString._compileÊ  sj   € ØˆÞØ”XÑˆEØ�=�=Ø”[Ñ ˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸Ü
ˆd×$Ñ$Ó
%ð'Ø)-×)?Ñ)?ñ@ð Að 	ArA   c                 óà   • [        SR                  S U R                   5       5      5      R                  S5      n[	        SR                  [        U-  U[        U R                     5      5        g )Nrp   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr§  r˜  rü  s     r?   r«  ÚString.dump.<locals>.<genexpr>Ô  s   é € Ð@²¨1¤ A§ ²ùrc  rì  z{}STRING {}{})	rí  re   r5  rî  rÈ  r9   rÉ  rï  r´   rð  s       r?   rÎ  ÚString.dumpÓ  sS   € Ü˜Ÿ™Ñ@°·²Ó@Ó@ÓA×HÑHÈÓNˆÜˆo×$Ñ$¤V¨f¡_°gÜ
�D—O‘OÑ
$ó&õ 	'rA   c                 ó,   • [        U R                  5      $ r§  )rf   rþ  rp  s    r?   r¯  ÚString.max_widthØ  s   € Ü�4×)Ñ)Ó*Ð*rA   c                 ó
   • SU 4$ r½  rH   r•  s     r?   r°  ÚString.get_required_stringÛ  s   € Ø�$ˆwˆrA   )ro  r´   r5  rþ  r  N)rB   rC   rD   rE   rº   rß  rø  r   Ú
STRING_IGNr   r›  Ú
STRING_FLDÚ
STRING_REVÚSTRING_IGN_REVÚSTRING_FLD_REVrÂ  r;   r–  r™  rœ  rÎ  r¯  r°  rG   rH   rA   r?   rÐ  rÐ  §  s¢   † Ø˜ˆ §	¡	¨J¸Ð+>ÀÇÁØ�Ð˜Ÿ™ ^°UÐ$;¸R¿]¹]Øˆt€n�b—m‘m j°$Ð%7¸×9JÑ9JØ�Ð˜Ÿ™¨¸Ð'=Ø×Ñð	€Gð /5ô Eò"(òòAò'ò
+õrA   rÐ  c                   ó   • \ rS rSrS rSrg)r4  iÞ  c                 óä   • SR                  S U R                   5       5      n[        U5      R                  S5      n[	        SR                  [        U-  U[        U R                     5      5        g )Nrp   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr§  r˜  rü  s     r?   r«  ÚLiteral.dump.<locals>.<genexpr>à  s   é € Ð:ª/ Qœ#˜aŸ&˜&ª/ùrc  rì  z{}LITERAL MATCH {}{})	re   r5  rí  rî  rÈ  r9   rÉ  rï  r´   )r<   rÍ  r°   Úliteralrñ  s        r?   rÎ  ÚLiteral.dumpß  sX   € Ø—'‘'Ñ:¨$¯/ª/Ó:Ó:ˆÜ˜“.×'Ñ'¨Ó-ˆÜÐ$×+Ñ+¬F°V©O¸WÜ
�D—O‘OÑ
$ó&õ 	'rA   rH   N)rB   rC   rD   rE   rÎ  rG   rH   rA   r?   r4  r4  Þ  s   † õ'rA   r4  c                   ó,   • \ rS rSr\4S jrS rS rSrg)rÓ   iå  c                 ón  • Xl         X l        [        U   U l        U R                  U R                  U R                  4U l        X R                  4U l        U R                  UR                  ;  a,  [        UR                  5      UR                  U R                  '   U R                   R                  U R                     nU R                   R                  U R                     nU R                  nU R                   R                  [        -  nXc-  n/ nU H\  n	[        U	[        5      (       a  U	 V
s/ s H  n
[        U
5      PM     n	n
UR                  U	 V
s/ s H  n
[!        X£S9PM     sn
5        M^     UR#                  [        SS9  U Vs/ s H  n[%        U5      PM     snU l        g s  sn
f s  sn
f s  snf )Nr³   T)r“  r°   )r    rÏ   rs  r´   rb   ro  Úset_keyÚnamed_lists_usedrf   rí  r—   r�   r0   r1   rù   rc   r»   r¡  rú   rÝ   )r<   r    rÏ   r´   re  r  rá  Ú
fold_flagsÚchoicesr¡   rÆ   Úchoices               r?   r;   ÚStringSet.__init__æ  sc  € ØŒ	ØŒ	Ü1°*Ñ=ˆŒà—N‘N D§I¡I¨t¯©Ð>ˆŒ	àŸo™oÐ.ˆŒØ�<‰<˜t×4Ñ4Ó4Ü25°d×6KÑ6KÓ2LˆD×!Ñ! $§,¡,Ñ/à—	‘	×*Ñ*¨4¯<©<Ñ8ˆØ—	‘	× Ñ  §¡Ñ+ˆà—_‘_ˆ
à—9‘9—?‘?¤^Ñ3ˆØÑ*ˆ
àˆãˆFÜ˜&¤#×&Ñ&Ù*0Ó1ª& Qœ#˜až&©&�Ð1à�N‰NÙóÚð EFœI aÔ?Ùñö ñ	 ð 	�‰œ dˆÑ+á8?Ó@º¨fœ &Ö)¹Ñ@ˆ�ùò 2ùòùò As   Ä.F(ÅF-
Æ
F2c                 ó€   • [        SR                  [        U-  U R                  [        U R
                     5      5        g )Nz{}STRING_SET {}{})rÈ  r9   rÉ  rÏ   rï  r´   rÌ  s      r?   rÎ  ÚStringSet.dump  s0   € ÜÐ!×(Ñ(¬°&©¸$¿)¹)Ü
�D—O‘OÑ
$ó&õ 	'rA   c                 ó   • S U l         g r§  rÍ  rp  s    r?   rÎ  ÚStringSet.__del__  rÐ  rA   )ro  rÝ   r´   r    rÏ   r2  N)	rB   rC   rD   rE   rº   r;   rÎ  rÎ  rG   rH   rA   r?   rÓ   rÓ   å  s   † Ø.4ô AòB'õrA   rÓ   c                   ób   • \ rS rSrSrS rSS jrSS jrSS jrSS jr	SS jr
S	 rS
 rS rSrg)ÚSourcei  z1Scanner for the regular expression source string.c                 óÀ   • [        U[        5      (       a  Xl        [        U l        OUR
                  " S5      U l        S U l        SU l        SU l        US S U l        g )Nzlatin-1c                 ó   • [        U /5      $ r§  )rY  r†  s    r?   r�  Ú!Source.__init__.<locals>.<lambda>  s
   € ¤u¨a¨S¤zrA   r   F)	r0   r1   r¡   rŸ  Ú	char_typeÚdecoder4   r_  rX  )r<   r¡   s     r?   r;   ÚSource.__init__  sN   € Ü�fœc×"Ñ"Ø ŒKÜ ˆD�Nà Ÿ-š-¨	Ó2ˆDŒKÙ1ˆDŒNàˆŒØ!ˆÔØ˜3˜Q�<ˆ�rA   c                 ó0  • U R                   nU R                  n U R                  (       aD  U(       d=   X#   R                  5       (       a  US-  nOX#   S:X  a  UR                  " SU5      nOOM<  X#   $ ! [
         a    US S s $ [         a    US S s $ f = f©Nr/   rS  r-   r   )r¡   r4   r_  Úisspacere  rd  r;  )r<   Úoverride_ignorer¡   r4   s       r?   rh  ÚSource.peek  sœ   € Ø—‘ˆØ�h‰hˆð	 Ø× × ®ØØ‘{×*Ñ*×,Ñ,à˜q™™Ø™¨Ó+à$Ÿlšl¨4°Ó5™àñ ð ‘;ÐøÜó 	 à˜3˜Q�<ÒÜó 	 à˜3˜Q�<Òð	 ús   šAA3 Á3BÂBÂBc                 ót  • U R                   nU R                  n U R                  (       aD  U(       d=   X#   R                  5       (       a  US-  nOX#   S:X  a  UR                  " SU5      nOOM<  X#   nUS-   U l        U$ ! [
         a    X0l        US S s $ [         a    [        U5      U l        US S s $ f = frE  )r¡   r4   r_  rF  re  rd  r;  rf   )r<   rG  r¡   r4   rý   s        r?   ræ   Ú
Source.get4  s»   € Ø—‘ˆØ�h‰hˆð	 Ø× × ®ØØ‘{×*Ñ*×,Ñ,à˜q™™Ø™¨Ó+à$Ÿlšl¨4°Ó5™àñ ð ‘ˆBØ˜Q‘wˆDŒHØˆIøÜó 	 àŒHØ˜3˜Q�<ÒÜó 	 ä˜6“{ˆDŒHØ˜3˜Q�<Òð	 ús   šA$A? Á?B7ÂB7Â6B7c                 óZ  • U R                   nU R                  n U R                  (       a‰  / n[        U5      U:  af   X#   R	                  5       (       a  US-  nOX#   S:X  a  UR
                  " SU5      nOOM<  UR                  X#   5        US-  n[        U5      U:  a  Mf  SR                  U5      nOX#X1-    nU[        U5      -  nX0l        U$ ! [         a$    [        U5      U l        SR                  W5      s $ [         a$    [        U5      U l        SR                  W5      s $ f = f©Nr/   rS  r-   rp   )
r¡   r4   r_  rf   rF  re  rc   re   rd  r;  )r<   r5   r¡   r4   Ú	substrings        r?   Úget_manyÚSource.get_manyP  s  € Ø—‘ˆØ�h‰hˆð 	&Ø× × Ø�	ä˜)“n uÓ,ØØ!™;×.Ñ.×0Ñ0à 1™H™CØ#™[¨CÓ/à"(§,¢,¨t°SÓ"9™Cà!ñ ð ×$Ñ$ V¡[Ô1Ø˜1‘H�Cô ˜)“n uÕ,ð ŸG™G IÓ.‘	à"¨©Ð5�	Ø”s˜9“~Ñ%�àŒHØÐøÜó 	&ä˜6“{ˆDŒHØ—7‘7˜9Ó%Ò%Üó 	&ä˜6“{ˆDŒHØ—7‘7˜9Ó%Ò%ð	&ús   šBC Â"-C Ã+D*Ã=*D*Ä)D*c                 ó‚  • U R                   nU R                  nU R                  (       a‚  U(       d{   / n XE   R                  5       (       a  US-  nOAXE   S:X  a  UR                  " SU5      nO%XE   U;   U:X  a  UR                  XE   5        US-  nOOM`  XPl        SR                  W5      $  XE   U;   U:X  a  US-  nXE   U;   U:X  a  M  X@R                  U nXPl        U$ ! [         a    [        U5      U l         Na[         a    [        U5      U l         N|f = f! [         a    X@R                  U nXPl        Us $ f = frL  )
r¡   r4   r_  rF  re  rc   rd  rf   r;  re   )r<   Útest_setrZ  rï  r¡   r4   rM  s          r?   rL  ÚSource.get_whilev  sI  € Ø—‘ˆØ�h‰hˆà××¦[ð'Ø�	àØ‘{×*Ñ*×,Ñ,à˜q™™Ø™¨Ó+à$Ÿlšl¨4°Ó5™Ø ™+¨Ñ1°gÓ=Ø!×(Ñ(¨©Ô5Ø˜q™™àñ ð ”ð —7‘7˜9Ó%Ð%ð!Ø‘{ hÑ.°7Ó:Ø˜1‘H�Cð ‘{ hÑ.°7Õ:ð #§8¡8¨cÐ2�	à”à Ð øô# ó 'ä˜v›;�–Üó 'ä˜v›;�–ð'ûô ó !à"§8¡8¨cÐ2�	à”à Ò ð!ús0   ²A)C  Â-D Ã
D Ã DÃ<DÄDÄ D>Ä=D>c                 ó°  • U R                   nU R                  n U R                  (       aN   X4   R                  5       (       a  US-  nO.X4   S:X  a  UR                  " SU5      nOX4   U;   U:X  a  US-  nOOMM  X4   U;   U:X  a  US-  nX4   U;   U:X  a  M  X@l        g ! [
         a    [        U5      U l         g [         a    [        U5      U l         g f = f)Nr/   rS  r-   )r¡   r4   r_  rF  re  rd  rf   r;  )r<   rQ  rZ  r¡   r4   s        r?   Ú
skip_whileÚSource.skip_while¦  sØ   € Ø—‘ˆØ�h‰hˆð	#Ø× × ØØ‘{×*Ñ*×,Ñ,à˜q™™Ø™¨Ó+à$Ÿlšl¨4°Ó5™Ø ™+¨Ñ1°gÓ=Ø˜q™™àñ ð ‘{ hÑ.°7Ó:Ø˜1‘H�Cð ‘{ hÑ.°7Õ:ð �HøÜó 	#ä˜6“{ˆDŽHÜó 	#ä˜6“{ˆDŽHð	#ús   šA:B ÂB ÂCÂ9CÃCc                 óœ  • U R                   nU R                  nU R                  (       a]   U HO  n X#   R                  5       (       a  US-  nOX#   S:X  a  UR                  " SU5      nOOM<  X#   U:w  a    gUS-  nMQ     X0l        gUR                  " X5      (       d  gU[        U5      -   U l        g! [
         a     g[         a     gf = f)NTr/   rS  r-   F)	r¡   r4   r_  rF  re  rd  r;  rN  rf   )r<   rM  r¡   r4   rÆ   s        r?   rÚ   ÚSource.matchÃ  sÕ   € Ø—‘ˆØ�h‰hˆà××ðÛ"�AØØ!™;×.Ñ.×0Ñ0à 1™H™CØ#™[¨CÓ/à"(§,¢,¨t°SÓ"9™Cà!ñ ð ‘{ aÓ'Ù$à˜1‘H’Cñ #ð  ”àð ×$Ò$ Y×4Ñ4ØàœS ›^Ñ+ˆDŒHàøô ó áÜó áðús   «AB3 Á7B3 Â3
CÂ?	CÃ
Cc                 ó�   • U R                  U5      (       d0  [        SR                  U5      U R                  U R                  5      eg )Nz
missing {})rÚ   r'   r9   r¡   r4   )r<   rM  s     r?   r^  ÚSource.expectê  s8   € Ø�z‰z˜)×$Ñ$Ü˜×+Ñ+¨IÓ6¸¿¹ÀTÇXÁXÓNÐNð %rA   c                 ó"  • U R                   nU R                  n U R                  (       a=   X   R                  5       (       a  US-  nOX   S:X  a  UR                  " SU5      nOOM<  U[        U5      :¬  $ ! [         a     g[         a     gf = f)NTr/   rS  r-   )r¡   r4   r_  rF  re  rf   rd  r;  )r<   r¡   r4   s      r?   Úat_endÚSource.at_endî  s�   € Ø—‘ˆØ�h‰hˆð	Ø× × ØØ‘{×*Ñ*×,Ñ,Ø˜q™™Ø™¨Ó+Ø$Ÿlšl¨4°Ó5™àñ ð œ#˜f›+Ñ%Ð%øÜó 	áÜó 	áð	ús   šAA6 Á6
BÂ	BÂB)rA  r_  r4   rX  r¡   Nr   )r/   )TF)T)rB   rC   rD   rE   rF   r;   rh  ræ   rN  rL  rT  rÚ   r^  r[  rG   rH   rA   r?   r=  r=    s6   † Ù7ò
 ô ô0 ô8$&ôL.!ô`#ò:%òNOõrA   r=  c                   ó>   • \ rS rSrSrSS0 4S jrS
S jrS rS rS	r	g)ÚInfoi  z"Info about the regular expression.r   Nc                 ó   • U[         U[        -  =(       d    [           -  nXl        Xl        SU l        X0l        SU l        0 U l        0 U l	        X l
        0 U l        / U l        0 U l        0 U l        / U l        0 U l        g ©NFr   )ÚDEFAULT_FLAGSr  r  r—   rœ  r“  rí  r†  r·  Ú
group_namerA  r3  Úopen_groupsr¸  r­  r¹  rÁ  )r<   r—   rA  rí  s       r?   r;   ÚInfo.__init__  s   € Ø” ¬Ñ 5×I¼/ÑJÑJˆØŒ
Ø!ÔØ"ˆÔàŒàˆÔØˆÔØˆŒØ"ŒØ "ˆÔØˆÔØ "ˆÔØ ˆÔØˆÔØ ˆÕrA   c                 ó
  • U R                   R                  U5      nUce   U =R                  S-  sl        Ub  U R                  U R                  ;  a  OM5  U R                  nU(       a  X R                   U'   XR                  U'   X R                  ;   a)  [        U R                  5      S-   * nX R                  U'   UnU R                  R                  U5        U R                  R                  US5      S-   U R                  U'   U$ ri  )	r·  ræ   r†  rb  rc  rf   rÁ  rc   r¸  )r<   rÏ   ro  Úgroup_aliass       r?   r]  ÚInfo.open_group  só   € Ø× Ñ ×$Ñ$ TÓ*ˆØ‰=ØØ× Ò  AÑ%Õ Ø‘< 4×#3Ñ#3¸4¿?¹?Ó#JØñ ð
 ×$Ñ$ˆEÞØ).× Ñ  Ñ&Ø)-—‘ Ñ&à×$Ñ$Ó$ô   × 3Ñ 3Ó4°qÑ8Ð9ˆKØ/4×Ñ Ñ,ØˆEà×Ñ×Ñ Ô&Ø'+×'<Ñ'<×'@Ñ'@ÀÈÓ'JÈQÑ'Nˆ×Ñ˜eÑ$àˆrA   c                 ó8   • U R                   R                  5         g r§  )rc  r  rp  s    r?   r`  ÚInfo.close_group4  s   € Ø×Ñ×ÑÕrA   c                 óì   • U R                   [        -  =(       d    [        nU[        :X  a  gUR	                  5       (       a  [        U5      nOU R                  R                  U5      nX0R                  ;   $ r�  )	r—   r  r  r"   r¡  r$  r·  ræ   rc  )r<   rÏ   r	  ro  s       r?   rw  ÚInfo.is_open_group7  s[   € ð —:‘:¤Ñ-×A´/ˆØ”hÓØà�<‰<�>‰>Ü˜“I‰Eà×$Ñ$×(Ñ(¨Ó.ˆEà×(Ñ(Ñ(Ð(rA   )rA  r­  r—   rœ  r¹  r†  r·  rb  r“  rí  r3  r¸  rc  rÁ  r§  )
rB   rC   rD   rE   rF   r;   r]  r`  rw  rG   rH   rA   r?   r^  r^    s    † Ù(à¨$°rô !ô&ò4õ)rA   r^  c                 ó
  • 0 n/ nU R                    Hã  u  pEnUR                  XV4nUR                  U5      nUcµ  UR                  S:X  a[  [        U R                  [
        -  5      n	[        U[        5      n
Xš4XV4:w  a&  UR                  [        [        U5      U5      XV45        O;U R                  UR                     nUS   nUSS XV4:w  a  UR                  XÅU45        [        U5      nX‚U'   X„l        Må     X l        X0l        g)zcChecks whether the reverse and fuzzy features of the group calls match
the groups which they call.
Nr   r/   )r¹  ro  ræ   r«   r—   r   r0   r  rc   rÒ  rf   r­  rÂ  rÂ  Úadditional_groups)r    rÕ  rÂ  rm  Úcallr°   ry  r“  rÔ  ÚrevÚfuzÚdef_inforo  s                r?   Ú_check_group_featuresrr  E  s	  € ð €IØÐØ $× 0Ô 0Ñˆ�uà�z‰z˜7Ð*ˆØ�m‰m˜CÓ ˆØ‰;à�z‰z˜Q‹ä˜4Ÿ:™:¬Ñ/Ó0�Ü  ¬Ó/�Ø�: 'Ð!1Ó1ð &×,Ñ,¬g´c¸)³nÀfÓ.MØð.&ô 'øð  ×.Ñ.¨t¯z©zÑ:�Ø  ™�Ø˜A˜C�> gÐ%5Ó5ð &×,Ñ,¨e¸eÐ-DÔEä�i“.ˆCØ �c‰NàŽñ9 !1ð< „NØ.ÕrA   c                 óò   • U R                  [        U[        -  5      5      u  p#U(       aD  SUl        U[        :¼  a  SnUR
                  nU[        -  (       d
  U[        ) -  nUR                  nOSnSnSnX%U4$ )z>Gets the required string and related info of a parsed pattern.Tr3  r   rH   )r°  r«   r   r  r  r´   r   rþ  )rÕ  r—   Ú
req_offsetr  Ú	req_flagsÚ	req_charss         r?   Ú_get_required_stringrw  l  s{   € ð "×5Ñ5´d¸5Ä7¹?Ó6KÓLÑ€JÞØ ˆÔØœÓ"ØˆJà×'Ñ'ˆ	Øœ—Øœ'˜Ñ!ˆIà×.Ñ.‰	àˆ
Øˆ	Øˆ	à )Ð+Ð+rA   c                   ó$   • \ rS rSrSS jrS rSrg)r(   i�  c                 ó@  • Xl         / nU H¦  u  pE[        U5      n[        X&R                  5      n[	        UR
                  [        -  5      Ul        [        Xg5      nUR                  5       (       d!  [        SUR                  UR                  5      eUR                  UR                  5       5        M¨     [        U5      n[        U5       V	V
s/ s H  u  pš[!        XyS-   U
5      PM     nn	n
[#        U5      n[	        UR
                  [$        -  5      nUR'                  X{5      nUR)                  U5      n[+        UUR
                  5      u  pÍn[-        Xx5        UR.                  (       a!  [        SWR                  UR                  5      e[	        UR
                  [$        -  5      nUR1                  U5      [2        R4                  4/-   n[7        U5      nUR9                  5       (       d+   [;        XxR=                  U5      5      n[7        U5      nUU-   nUR
                  [@        -  =(       d    [B        nUS[D        [F        4;  a  [I        S5      e[J        R0                  " S U[L        -  U-  U0 0 0 / XÍU[O        U5      5      U l(        g s  sn
n	f ! [>         a     N†f = f)Nzunbalanced parenthesisr/   z(recursive regex not supported by Scannerr   z5VERSION0 and VERSION1 flags are mutually incompatible))Úlexiconr=  r^  rA  r«   r—   r&   r_  rÞ   r[  r'   r¡   r4   rc   r…  Ú	enumerater  rÛ   r   rÁ   r‚  rw  rr  rÂ  r®   rß  ÚSUCCESSrÇ   r™  r±   r–  rR   r  r  r    r"   r;  r   r›  rf   Úscanner)r<   rz  r—   ÚpatternsÚphraseÚactionrÜ   r    rÕ  r¿  rz   r°   rt  rv  ru  rÄ   Úfs_coder	  s                     r?   r;   ÚScanner.__init__‚  sJ  € ØŒð ˆÛ%‰NˆFä˜F“^ˆFÜ˜×/Ñ/Ó0ˆDÜ"& t§z¡z´GÑ';Ó"<ˆFÔÜ# FÓ1ˆFØ—=‘=—?‘?ÜÐ4°f·m±mØ—*‘*óð ð �O‰O˜F×2Ñ2Ó4Ö5ñ &ô �E‹{ˆÜ6?ÀÔ6IÔJÒ6I©d¨a”E˜$ A¡ qÖ)Ñ6IˆÑJÜ˜Ó!ˆô �t—z‘z¤GÑ+Ó,ˆØ—‘ Ó/ˆØ×'Ñ'¨Ó-ˆô ,@ÀØ
�*‰*ó,Ñ(ˆ
˜yô 	˜dÔ+ð �>�>ÜÐ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 
°yÜ
ˆh‹-óˆ�ùóc KøôF "ó Ùðús   ÃJ
Ç,*J Ê
JÊJc                 óz  • / nUR                   nU R                  R                  U5      R                  nSn U" 5       nU(       d  OqUR                  5       nXW:X  a  O[U R                  UR
                  S-
     S   n[        US5      (       a  X`l        U" XR                  5       5      nUb  U" U5        UnM€  X!US  4$ )Nr   r/   Ú__call__)rc   r}  rÚ   r#  rz  Ú	lastindexrˆ   ro  )	r<   r¡   r8  rc   rÚ   ry   rj   Újr€  s	            r?   ÚscanÚScanner.scanË  s·   € ØˆØ—‘ˆØ—‘×$Ñ$ VÓ,×2Ñ2ˆØˆØÙ“ˆAÞØØ—‘“ˆAØ‹vØØ—\‘\ !§+¡+°¡/Ñ2°1Ñ5ˆFÜ�v˜z×*Ñ*Ø”
Ù §g¡g£iÓ0�ØÑ!Ù�v”ØˆAñ ð ˜a˜c�|Ð#Ð#rA   )rz  rÚ   r}  N)r   )rB   rC   rD   rE   r;   r‡  rG   rH   rA   r?   r(   r(   �  s   † ôGõR$rA   r(   r’  ÚÚÚr-   ÚÚ	Ú)ru   rv   rx   Únr{   Útr^  ÚDigitTÚBlankÚSpaceÚWord)r  r	   Úhr|   r   r~   r#   rõ  )r  r	   r|   r   r~   r#   )r   rv   r   ÚKrj   r   ÚZÚz)rv   r   rj   r   )ÚFAILr   r6  r  )r‚   r   r³  r`  (  Úenumr¡   rò  Úcollectionsr   Úregexr   Ú__all__r:   r'   rJ   rO   rR   ÚIntFlagr)   r   r   r
   r   r   r   r   r   r   r   r   r   r   r&   r    r"   r$   r   r   r	   r   r   r   r   r   r   r   r   r   r   r!   r#   r%   r   r  r  r�   ra  r›  ÚSCOPED_FLAGSÚ	frozensetÚascii_lettersr/  r<  r3  rÿ  Ú	octdigitsr¨  Ú	hexdigitsrº  rç   rñ  rþ  r  Úget_code_sizeÚBYTES_PER_CODEÚBITS_PER_CODEr  r�  rÉ   rº   r›  r¢  rs  rÉ  ÚOPCODESr�   rß  r{  r2  ry   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+  r2  r0  r1  r,  rF  r)  r#  ré   ra  rb  r[  rc  r}  rd  re  rf  ri  rg  r‘  r—  r™  rj  r�  r\  r²  r·  r¼  rè   rÚ  rà  rÊ  rË  rÍ  rÎ  rÏ  r÷  rì   r  r  r  r  r  r  r  r%  r*  r9  r?  r¹   rJ  rM  rú  r[  rU  rW  rV  rÉ  r¾  rè  r¿  rÀ  r  rÁ  rË  rï  rk  rm  rµ  rë   r­   rê   r„  r   rÛ   rŠ  rÒ  r»   r~  r-  r0  r3  rñ   rð   r<  ró   rò   rC  rF  r  rÑ  rp  r	  r  r  rÒ  r
  rz  r‚  ré  rL  r5  r  rÎ   rÌ  rú   rŠ  r  r  r  r¿   r  rî   rí   rï   r  rÐ  r4  rÓ   r=  r^  rr  rw  r(   Úget_propertiesrK  r)  r  rü  rP  rú  ræ   rÏ   Úprop_valuesrE  rf   Úval_namerR  rÙ  rø  rù  rØ  ÚdictrÖ  r‹   r×  rÕ  rÓ  rÔ  rÒ  rl  rH   rA   r?   Ú<module>r­     s¢  ðó  Û Û Ý #å ò€ô*ˆIô *ô>	�yô 	ô	�ô 	ô	�Yô 	ô1�—‘ô 1ðj 	�‰€Ø×Ñ€	Ø�‰€Ø	×	Ñ	€Ø×%Ñ%€Ø×Ñ€Ø×!Ñ!€
Ø	×	Ñ	€Ø×Ñ€	Ø�‰€Ø
×
Ñ
€Ø×Ñ€Ø
×
Ñ
€Ø
×
Ñ
€Ø×Ñ€Ø×Ñ€Ø‡~�~€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡\�\€Ø‡\�\€Ø‡K�K€Ø‡K�K€Ø‡K�K€à€à˜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ò=òòTòlòò@5ð  )°)Ñ<€òò4ò ò<ò01ò;òz
Aòòòò6
òHò4$òZ*òx"?òHò"
4ò)FòVò(
òò$	'ò'ò'òò ò"ò&!@òF5ô
ò&2ò.ò2òQ5òf4òBò* ò.	1ò'ò2ò "1òHò,ò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ô ô:ˆ)ô ô&	2ˆSô 	2ôˆ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ô "ô6ˆyô 6ôpˆMô ôKˆIô KôZ/ˆyô /ôb�=ô ôSˆyô Sôjgˆiô gôR"ˆgô "ô4"ˆwô "ô<"�ô "ôBL"ˆwô L"ô\ˆ=ô ô�-ô ô!�;ô !ô!�Mô !ô�-ô ô5ˆYô 5ôn'ˆfô 'ô'�ô '÷Rtñ t÷l?)ñ ?)òB%/òN,÷*^$ñ ^$ðB ×"Ó"Ó$€
ð €Ø$.×$4Ò$4Ö$6Ñ €IÑ �˜Ø&×*Ò*¨7°R¸°HÓ=Ñ€Dˆ+Ùˆt�Y CÑ(€DØ" KÐ/€N�7Ñà"ŸLšLžNÑˆ�&Ù! +§/¢/°&¸"Ó"=¸xØñˆ�FÓó +ñ %7ð 
Ø	Ø	Ø	Ø	Ø	Ø	ñÐ ð €ØÐ ñ 
˜˜w¨Ó	-Ù	˜˜w¨Ó	.Ù	˜˜w¨Ó	-Ù	˜˜w¨Ó	-Ù	˜˜w¨Ó	.Ù	˜˜v tÓ	,Ù	˜˜v uÓ	-ñ€ñ ˜_Ó-Ð Ø × Ò Ù	˜˜w¨°~Ñ	FÙ	˜˜w¨¸Ñ	GÙ	˜˜w¨°~Ñ	FÙ	˜˜w¨¸Ñ	GÙ	˜˜v t°nÑ	EÙ	˜˜v u°~Ñ	Fñô ñ ˜Ó/Ñ Ù × Ò Ù	˜˜w¨Ð7GÑ	HÙ	˜˜w¨Ð8HÑ	IÙ	˜˜w¨Ð7GÑ	HÙ	˜˜w¨Ð8HÑ	IÙ	˜˜v tÐ6FÑ	GÙ	˜˜v uÐ7GÑ	Hñ ô ñ 
‹Ù	‹Ù	�%‹Ù	‹Ù	‹Ù	‹Ù	‹Ù	‹ñ	Ñ ñ Ñ.Ó/Ñ Ù × Ò Ù	˜>Ñ	*Ù	�% .Ñ	1Ù	˜nÑ	-Ù	˜NÑ	+ñ	ô ñ  Ñ 0Ó1Ñ Ù × Ò Ù	Ð+Ñ	,Ù	�%Ð"2Ñ	3Ù	Ð.Ñ	/Ù	Ð,Ñ	-ñ	!ô ñ Ñ-Ó.Ñ Ù × Ò Ù	Ó	Ù	˜Ó	Ù	Ó	Ù	Ó	ñ	ô ñ ‹IÙ	‹Ù‹WÙ‹Fñ		‚rA   