ó
    /j-j“T  ã                   óÌ  • % S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
JrJrJrJrJrJrJrJr  SSKJr  SSKJrJrJrJrJr  SSKJr  SS	KJr  \R>                  " \ 5      r!\	" \"5      RF                  S
-  RI                  5       r% " S S\&5      r' " S S5      r(\\)\\)S4   4   r* " S S\(5      r+ " S S\(5      r, " S S\,5      r- " S S\(5      r. " S S\+5      r/ " S S\.5      r00 r1\\2\/4   \3S'   0 r4\\2\\0   4   \3S'   S\2S\4S  jr5S\2S\(4S! jr6S=S\2S"\7S\.4S# jjr8\" S$5      r9\" S%5      r:\" S&5      r;\" S'5      r<\" S(5      r=\" S)5      r>\" S*5      r?\" S+5      r@\" S,5      rA\" S-5      rB\" S.5      rC\" S/5      rD\" S05      rE\" S15      rF\" S25      rG\" S35      rH\" S5      S4\IS\24S5 j5       rJ " S6 S75      rKS8\IS\K4S9 jrL " S: S;\+5      rMS8\IS\M4S< jrNg)>zæAdobe character mapping (CMap) support.

CMaps provide the mapping between character codes and Unicode
code-points to character ids (CIDs).

More information is available on:

  https://github.com/adobe-type-tools/cmap-resources

é    N)Úbisect_left)ÚPath)ÚAnyÚDictÚIterableÚIteratorÚListÚTextIOÚTupleÚUnion)ÚPDFSyntaxError)ÚKWDÚObjectParserÚ	PDFObjectÚ	PSKeywordÚliteral_name)Úchoplist)Ú	lru_cacheÚcmapc                   ó   • \ rS rSrSrg)Ú	CMapErroré/   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚI/home/mande/repo/quber/.venv/lib/python3.13/site-packages/playa/cmapdb.pyr   r   /   s   † Úr   r   c                   óz   • \ rS rSrSrS\SS4S jrS\4S jrS\	S	\SS4S
 jr
SS jrS\S\\\\4      4S jrSrg)ÚCMapBaseé3   r   ÚkwargsÚreturnNc                 ó.   • UR                  5       U l        g ©N)ÚcopyÚattrs©Úselfr$   s     r    Ú__init__ÚCMapBase.__init__6   s   € Ø%+§[¡[£]ˆ�
r   c                 ó@   • U R                   R                  SS5      S:g  $ )NÚWModer   ©r)   Úget©r+   s    r    Úis_verticalÚCMapBase.is_vertical9   s   € Ø�z‰z�~‰~˜g qÓ)¨QÑ.Ð.r   ÚkÚvc                 ó    • X R                   U'   g r'   ©r)   ©r+   r5   r6   s      r    Úset_attrÚCMapBase.set_attr<   ó   € Ø�
‰
�1Šr   c                 ó   • g r'   r   ©r+   r   s     r    Úuse_cmapÚCMapBase.use_cmap?   s   € Ør   Úcodec                 ó   • [         er'   )ÚNotImplementedError)r+   rA   s     r    ÚdecodeÚCMapBase.decodeB   s   € Ü!Ð!r   r8   ©r   r"   r%   N)r   r   r   r   Údebugr   r,   Úboolr3   Ústrr:   r?   Úbytesr   r   ÚintrD   r   r   r   r    r"   r"   3   sf   † Ø€Eð3 ð 3¨ô 3ð/˜Tô /ð˜#ð  #ð ¨$ô ôð"˜5ð " X¨e°E¸3°JÑ.?Ñ%@÷ "r   r"   ÚCodeToCIDMapc            	       ó¾   • \ rS rSrS\\\4   SS4S jrS\4S jrS\	SS4S jr
S	\S\\\\4      4S
 jr\R                   SS4S\S\\S4   S	\\S4   SS4S jjrSrg)ÚCMapéJ   r$   r%   Nc                 ó@   • [         R                  " U 40 UD6  0 U l        g r'   )r"   r,   Úcode2cidr*   s     r    r,   ÚCMap.__init__K   s   € Ü×Ò˜$Ñ) &Ò)Ø&(ˆ�r   c                 ó>   • SU R                   R                  S5      -  $ )Nz
<CMap: %s>ÚCMapNamer0   r2   s    r    Ú__repr__ÚCMap.__repr__O   s   € Ø˜dŸj™jŸn™n¨ZÓ8Ñ8Ð8r   r   c                 óÈ   ^• [        U[        5      (       d   [        [        U5      5      5       eS[        S[        SS 4U4S jjmT" U R
                  UR
                  5        g )NÚdstÚsrcr%   c                 óŠ   >• UR                  5        H.  u  p#[        U[        5      (       a  X0U'   M   0 nX@U'   T" XC5        M0     g r'   )ÚitemsÚ
isinstancerK   )rX   rY   r5   r6   Údr(   s        €r    r(   ÚCMap.use_cmap.<locals>.copyU   s<   ø€ ØŸ	™	ž‘�Ü˜a¤×%Ñ%Ø˜“Fà&(�AØ˜‘FÙ˜–Jò $r   )r\   rN   rI   ÚtyperL   rQ   )r+   r   r(   s     @r    r?   ÚCMap.use_cmapR   sQ   ø€ Ü˜$¤×%Ñ%Ð6¤s¬4°«:£Ó6Ð%ð	”lð 	¬ð 	¸$÷ 	ñ 	ˆT�]‰]˜DŸM™MÕ*r   rA   c              #   ó  #   • U R                   n/ n[        U5       Hi  nXB;   aP  X$   nUR                  U5        [        U[        5      (       a"  [        U5      U4v •  U R                   nUS S 2	 MT  UnMX  U R                   nUS S 2	 Mk     g 7fr'   )rQ   ÚiterÚappendr\   rK   rJ   )r+   rA   r]   ÚsubstrÚiÚxs         r    rD   ÚCMap.decode`   sz   é € Ø�M‰MˆØˆÜ�d–ˆAØ‹vØ‘D�Ø—‘˜aÔ Ü˜a¤×%Ñ%Ü ›-¨Ð*Ò*ØŸ™�AØšqš	à’Aà—M‘M�Øš1’Iò ùs   ‚BB
r   ÚoutrQ   .c                 óì   • Uc  U R                   nSn[        UR                  5       5       HF  u  pEX44-   n[        U[        5      (       a  UR                  SXe4-  5        M6  U R                  XUS9  MH     g )Nr   zcode %r = cid %d
)rh   rQ   rA   )rQ   Úsortedr[   r\   rK   ÚwriteÚdump)r+   rh   rQ   rA   r5   r6   Úcs          r    rl   Ú	CMap.dumpq   sj   € ð ÑØ—}‘}ˆHØˆDÜ˜8Ÿ>™>Ó+Ö,‰DˆAØ�t‘ˆAÜ˜!œS×!Ñ!Ø—	‘	Ð.°!°Ñ7Ö8à—	‘	˜c°A�	Ó6ò -r   ©rQ   )r   r   r   r   r   rI   rK   r,   rU   r"   r?   rJ   r   r   rD   ÚsysÚstdoutr
   rL   rl   r   r   r   r    rN   rN   J   s®   † ð)  s¨C x¡ð )°Tô )ð9˜#ô 9ð+˜Xð +¨$ô +ð˜5ð  X¨e°E¸3°JÑ.?Ñ%@ô ð& —j‘jØ.2Ø "ñ	7àð7ð ˜ dÐ*Ñ+ð7ð �C˜�H‰oð	7ð
 
÷7ð 7r   rN   c                   ó6   • \ rS rSrS\S\\\\4      4S jrSr	g)ÚIdentityCMapé‚   rA   r%   c                 óº   ^• [        T5      S-  nU(       aE  U4S j[        S[        T5      S5       5       n[        R                  " SU-  T5      n[	        X45      $ g)Né   c              3   ó2   >#   • U  H  nTXS -    v •  M     g7f)rv   Nr   ©Ú.0rf   rA   s     €r    Ú	<genexpr>Ú&IdentityCMap.decode.<locals>.<genexpr>†   s   øé € ÐEÒ.D¨�T˜! !™e•_Ò.Dùó   ƒr   z>%dHr   ©ÚlenÚrangeÚstructÚunpackÚzip©r+   rA   ÚnÚcodesÚcidss    `   r    rD   ÚIdentityCMap.decodeƒ   sL   ø€ Ü�‹I˜‰NˆÞÜE¬e°A´s¸4³yÀ!Ô.DÓEˆEÜ—=’= ¨!¡¨TÓ2ˆDÜ�uÓ#Ð#àr   r   N©
r   r   r   r   rJ   r   r   rK   rD   r   r   r   r    rs   rs   ‚   ó#   † ð˜5ð  X¨e°E¸3°JÑ.?Ñ%@÷ r   rs   c                   ó6   • \ rS rSrS\S\\\\4      4S jrSr	g)ÚIdentityCMapByteé�   rA   r%   c                 óž   ^• [        T5      nU(       a:  U4S j[        U5       5       n[        R                  " SU-  T5      n[	        X45      $ g)Nc              3   ó2   >#   • U  H  nTXS -    v •  M     g7f)é   Nr   rx   s     €r    rz   Ú*IdentityCMapByte.decode.<locals>.<genexpr>‘   s   øé € Ð7ªh¨�T˜! !™e•_ªhùr|   z>%dBr   r}   rƒ   s    `   r    rD   ÚIdentityCMapByte.decodeŽ   s?   ø€ Ü�‹IˆÞÜ7¬e°A¬hÓ7ˆEÜ—=’= ¨!¡¨TÓ2ˆDÜ�uÓ#Ð#àr   r   Nrˆ   r   r   r    r‹   r‹   �   r‰   r   r‹   c                   ó|   • \ rS rSrS\\\4   SS4S jrS\4S jrS\S\4S jr	\
R                  4S	\SS4S
 jjrSrg)Ú
UnicodeMapé˜   r$   r%   Nc                 ó@   • [         R                  " U 40 UD6  0 U l        g r'   )r"   r,   Ú
cid2unichrr*   s     r    r,   ÚUnicodeMap.__init__™   s   € Ü×Ò˜$Ñ) &Ò)Ø*,ˆ�r   c                 ó>   • SU R                   R                  S5      -  $ )Nz<UnicodeMap: %s>rT   r0   r2   s    r    rU   ÚUnicodeMap.__repr__�   s   € Ø! D§J¡J§N¡N°:Ó$>Ñ>Ð>r   Úcidc                 ól   • XR                   ;  a  [        R                  SX5        gU R                   U   $ )Nz"CID %d not found in Unicode map %sÚ )r–   ÚlogÚwarning)r+   rš   s     r    Ú
get_unichrÚUnicodeMap.get_unichr    s-   € Ø—o‘oÓ%Ü�K‰KÐ<¸cÔHØØ�‰˜sÑ#Ð#r   rh   c                 ó†   • [        U R                  R                  5       5       H  u  p#UR                  SX#4-  5        M     g )Nzcid %d = unicode %r
)rj   r–   r[   rk   )r+   rh   r5   r6   s       r    rl   ÚUnicodeMap.dump¦   s4   € Ü˜4Ÿ?™?×0Ñ0Ó2Ö3‰DˆAØ�I‰IÐ-°°Ñ6Ö7ò 4r   ©r–   )r   r   r   r   r   rI   rK   r,   rU   rŸ   rp   rq   r
   rl   r   r   r   r    r“   r“   ˜   s]   † ð-  s¨C x¡ð -°Tô -ð?˜#ô ?ð$˜cð $ cô $ð "%§¡ñ 8˜ð 8°÷ 8ð 8r   r“   c                   ó8   ^ • \ rS rSrS\S\SS4U 4S jjrSrU =r$ )ÚPyCMapé«   ÚnameÚdatar%   Nc                 óh   >• [         TU ]  US9  US   U l        US   (       a  SU R                  S'   g g )N©rT   ÚCODE2CIDÚIS_VERTICALr�   r/   )Úsuperr,   rQ   r)   )r+   r§   r¨   Ú	__class__s      €r    r,   ÚPyCMap.__init__¬   s:   ø€ Ü‰Ñ $ÐÑ'Ø˜ZÑ(ˆŒØ�×Ø"#ˆD�J‰J�wÒð r   ro   )	r   r   r   r   rI   r   r,   r   Ú__classcell__©r®   s   @r    r¥   r¥   «   s"   ø† ð$˜Sð $¨ð $°÷ $õ $r   r¥   c                   ó<   ^ • \ rS rSrS\S\S\SS4U 4S jjrSrU =r	$ )	ÚPyUnicodeMapé³   r§   r¨   Úverticalr%   Nc                 óv   >• [         TU ]  US9  U(       a  US   U l        SU R                  S'   g US   U l        g )Nrª   ÚCID2UNICHR_Vr�   r/   ÚCID2UNICHR_H)r­   r,   r–   r)   )r+   r§   r¨   rµ   r®   s       €r    r,   ÚPyUnicodeMap.__init__´   s<   ø€ Ü‰Ñ $ÐÑ'ÞØ" >Ñ2ˆDŒOØ"#ˆD�J‰J�wÒà" >Ñ2ˆD�Or   r£   )
r   r   r   r   rI   r   rH   r,   r   r°   r±   s   @r    r³   r³   ³   s)   ø† ð3˜Sð 3¨ð 3¸ð 3À÷ 3õ 3r   r³   Ú
CMAP_CACHEÚ
UMAP_CACHEr§   r%   c                 ó”  • U R                  SS5      n SU -  n[        U-  R                  5       n UR                  [        5      n[        R
                  " U5       n[        R                  " U5      sS S S 5        $ ! , (       d  f       g = f! [         a  n[        SU  35      UeS nAf[         a  n[        SU  S35      UeS nAff = f)NÚ rœ   z%s.pickle.gzz%Ignoring malicious or malformed CMap zCMap z not found in CMapDB)ÚreplaceÚCMAP_DIRÚresolveÚrelative_toÚgzipÚopenÚpickleÚloadÚ
ValueErrorÚKeyErrorÚFileNotFoundError)r§   ÚfilenameÚpklpathÚ_ÚgzfileÚes         r    Ú
_load_datarÎ   Á   s²   € Ø�<‰<˜˜bÓ!€DØ Ñ$€HÜ˜(Ñ"×+Ñ+Ó-€GðBØ×Ñ¤Ó)ˆÜ�YŠY�wÔ 6Ü—;’;˜vÓ&÷  ××ûäó NÜÐ>¸t¸fÐEÓFÈAÐMûÜó BÜ˜˜t˜fÐ$8Ð9Ó:ÀÐAûðBúsA   °+B ÁA;Á1	B Á;
B	ÂB Â	B Â
CÂB%Â%CÂ2CÃCc                 óê   • U S:X  a
  [        U SS9$ U S:X  a
  [        U SS9$ U S:X  a
  [        U SS9$ U S:X  a
  [        U SS9$ U [        ;   a	  [        U    $ [        U 5      n[	        X5      =[        U '   nU$ )Nz
Identity-Hr   )rT   r/   z
Identity-Vr�   ÚOneByteIdentityHÚOneByteIdentityV)rs   r‹   rº   rÎ   r¥   )r§   r¨   r   s      r    Úget_cmaprÒ   Ï   sŽ   € Øˆ|ÓÜ T°Ñ3Ð3Ø	�Ó	Ü T°Ñ3Ð3Ø	Ð#Ó	#Ü¨°QÑ7Ð7Ø	Ð#Ó	#Ü¨°QÑ7Ð7ØŒzÓÜ˜$ÑÐÜ�dÓ€DÜ$ TÓ0Ð0„JˆtÑ�tØ€Kr   rµ   c                 óÄ   •  [         U    U   $ ! [         a     Of = f[        SU -  5      nS Vs/ s H  n[        XU5      PM     Os  snf sn[         U '   [         U    U   $ )Nzto-unicode-%s)FT)r»   rÇ   rÎ   r³   )r§   rµ   r¨   r6   s       r    Úget_unicode_maprÔ   ß   sh   € ðÜ˜$Ñ Ñ)Ð)øÜó Ùðúä�o¨Ñ,Ó-€DÙ=JÓKº]¸œ T°Ö3º]ùÔK„JˆtÑÜ�dÑ˜HÑ%Ð%s   ‚ Ž
š°As	   begincmaps   endcmaps   usecmaps   defs   begincodespaceranges   endcodespaceranges   begincidranges   endcidranges   begincidchars
   endcidchars   beginbfranges
   endbfranges   beginbfchars	   endbfchars   beginnotdefranges   endnotdefrangeÚutf16c                 ó&   • U R                  SS5      $ )NzUTF-16BEÚignore)rD   )rÕ   s    r    Údecode_utf16_charrØ   ý   s   € à�<‰<˜
 HÓ-Ð-r   c                   óº   • \ rS rSrSrSS jrS\S\SS4S jrSS	 jr	S
\
S\
4S jrS\
S\\   4S jrS\S\
S\SS4S jrS\S\S\SS4S jrS\
S\
S\SS4S jrSrg)ÚToUnicodeMapi  z4ToUnicode map loaded from a PDF stream.  Not a CMap!r%   Nc                 ó<   • 0 U l         0 U l        / U l        / U l        g r'   ©r)   Úbytes2unicodeÚcode_lengthsÚ
code_spacer2   s    r    r,   ÚToUnicodeMap.__init__  s    € Ø%'ˆŒ
Ø/1ˆÔØ')ˆÔØ57ˆ�r   r5   r6   c                 ó    • X R                   U'   g r'   r8   r9   s      r    r:   ÚToUnicodeMap.set_attr  r<   r   c                 ó   • g r'   r   r>   s     r    r?   ÚToUnicodeMap.use_cmap  s   € àr   ÚstartÚendc                 ó  • [        U5      [        U5      :w  a  [        R                  SX5        g[        U5      n[        U R                  U5      nU R                  R                  XC5        U R                  R                  XAU45        g©zAdd a code-space rangez9Ignoring inconsistent code lengths in code space: %r / %rN©r~   r�   rž   r   rÞ   Úinsertrß   ©r+   rå   ræ   ÚcodelenÚposs        r    Úadd_code_rangeÚToUnicodeMap.add_code_range  óm   € äˆu‹:œ˜S›Ó!Ü�K‰KØKÈUôð Ü�e“*ˆÜ˜$×+Ñ+¨WÓ5ˆØ×Ñ× Ñ  Ô.Ø�‰×Ñ˜s¨C LÕ1r   rA   c              #   óæ  #   • SnSnU[        U5      :  aÚ  [        U R                  U R                  5       Hx  u  nu  pEXX#-    nXd:¼  d  M  Xe::  d  M  X`R                  ;   a  U R                  U   v •  O7[
        R                  SU5        [        [        R                  US5      5      v •  X#-  n  O.   [
        R                  SXS 5        [        X   5      v •  US-  nU[        U5      :  a  MÙ  gg7f)z/Decode a multi-byte string to Unicode sequencesr   r�   zUndefined character code %rÚbigúNo code space found for %rN)
r~   r‚   rÞ   rß   rÝ   r�   rG   ÚchrrK   Ú
from_bytes©r+   rA   Úidxrì   rå   ræ   rd   s          r    rD   ÚToUnicodeMap.decode  s×   é € àˆØˆØ”C˜“I‹oä),¨T×->Ñ->ÀÇÁÖ)PÑ%�™˜%Ø C¡MÐ2�ð •? v¥}Ø×!3Ñ!3Ó3Ø"×0Ñ0°Ñ8Ó8äŸ	™	Ð"?ÀÔHÜ!¤#§.¡.°¸Ó"?Ó@Ò@Ø‘N�CÙñ *Qô —	‘	Ð6¸¸T¸
ÔCÜ˜$™)“nÒ$Ø�q‘�ð# ”C˜“I�oùs   ‚AC1ÁC1ÁBC1Ã/C1rÕ   rì   c                 óT   • [        U5      U R                  UR                  US5      '   g ©Nrò   )rØ   rÝ   Úto_bytes)r+   rA   rÕ   rì   s       r    Úadd_code2bytesÚToUnicodeMap.add_code2bytes5  s"   € Ü<MÈeÓ<Tˆ×Ñ˜4Ÿ=™=¨°%Ó8Ò9r   Úoutcodec                 óV   • [        U5      nX@R                  UR                  US5      '   g rú   )rô   rÝ   rû   )r+   rA   rþ   rì   Úunis        r    Úadd_code2codeÚToUnicodeMap.add_code2code8  s$   € Ü�'‹lˆØ<?×Ñ˜4Ÿ=™=¨°%Ó8Ò9r   Ú
start_byteÚend_bytec                 ó  • [         R                  US5      n[         R                  US5      n[        U5      n[        U[        5      (       at  [        U5      XT-
  S-   :w  a  [
        R                  S5        [        [        XES-   5      U5       H.  u  px[        U[        5      (       d   eU R                  XxU5        M0     g [        U[        5      (       a`  [         R                  US5      n	[        U5      n
[        XT-
  S-   5       H*  nU R                  XK-   X›-   R                  U
S5      U5        M,     g [        U[         5      (       a/  [        XT-
  S-   5       H  nU R                  XK-   X;-   U5        M     g [        SU5      e)Nrò   r�   zPThe difference between the start and end offsets does not match the code length.zUnuspported character code %r)rK   rõ   r~   r\   Úlistr�   rž   r‚   r   rJ   rü   rû   r  rÆ   )r+   r  r  rA   rå   ræ   rì   rš   Úunicode_valueÚunibaseÚunilenre   s               r    Úadd_bf_rangeÚToUnicodeMap.add_bf_range<  sK  € Ü—‘˜z¨5Ó1ˆÜ�n‰n˜X uÓ-ˆÜ�j“/ˆÜ�dœD×!Ñ!Ü�4‹y˜C™K¨!™OÓ+Ü—‘ð>ôô '*¬%°¸Q±wÓ*?ÀÖ&FÑ"�Ü! -´×7Ñ7Ð7Ð7Ø×#Ñ# C¸Ö@ò 'Gô ˜œe×$Ñ$Ü—n‘n T¨5Ó1ˆGÜ˜“YˆFÜ˜3™;¨™?Ö+�Ø×#Ñ#Ø‘I ¡×5Ñ5°f¸eÓDÀgöò ,ô ˜œc×"Ñ"Ü˜3™;¨™?Ö+�Ø×"Ñ" 5¡9¨d©h¸Ö@ò ,ô Ð<¸dÓCÐCr   rÜ   ©r%   NrF   )r   r   r   r   Ú__doc__r,   rI   r   r:   r?   rJ   rî   r   rD   rK   rü   r  r   r
  r   r   r   r    rÚ   rÚ     sÆ   † Ù>ô8ð˜#ð  #ð ¨$ô ôð
2 Eð 
2°ô 
2ð˜5ð  X¨c¡]ô ð.U 3ð U¨uð U¸sð UÀtô Uð@ #ð @°ð @¸cð @Àdô @ðD uð D¸ð DÀYð DÐSW÷ Dr   rÚ   r¨   c                 óè	  • [        5       n/ n[        U 5      nSn  [        U5      u  pV[        U[        5      (       d  UR                  U5        M7  U[        L a  SnUS S 2	 OU[        L a  SnU(       d  U$ U[        L a>   UR                  5       nUR                  5       nUR                  [        U5      U5        GOÕU["        L a6   UR                  5       n	UR%                  ['        [        U	5      5      5        GO–U[*        L a  US S 2	 GO†U[,        L a�  [/        SU5       Hv  u  p«[        U
[0        5      (       d  [2        R5                  SU
U5        Us  $ [        U[0        5      (       d  [2        R5                  SU
U5        Us  $ UR7                  X«5        Mx     US S 2	 GOðU[8        L a  US S 2	 GOàU[:        L a¶  [/        SU5       HŸ  u  pÍn[        U[0        5      (       d  [2        R5                  S5        M2  [        U[0        5      (       d  [2        R5                  S5        M^  [=        U5      [=        U5      :w  a  [2        R5                  S	5        M�  UR?                  XÍU5        M¡     US S 2	 GO!U[@        L a  US S 2	 GOU[B        L az  [/        SU5       Hc  u  pþ[        U[0        5      (       d  M  [        U[D        5      (       d  M3  URG                  [D        RI                  US
5      U[=        U5      5        Me     US S 2	 GOŽU[J        L a  US S 2	 GO~U[L        L aµ  [/        SU5       HŸ  u  pÍn[        U[0        5      (       d  [2        R5                  S5        M2  [        U[0        5      (       d  [2        R5                  S5        M^  [=        U5      [=        U5      :w  a  [2        R5                  S	5        M�  UR?                  XÍU5        M¡     US S 2	 OÀU[N        L a  US S 2	 O±U[P        L ay  [/        SU5       Hc  u  pþ[        U[0        5      (       d  M  [        U[0        5      (       d  M3  URS                  [D        RI                  US
5      U[=        U5      5        Me     US S 2	 O/U[T        L a  US S 2	 O U[V        L a  US S 2	 OUR                  U5        GMz  ! [         a    UR	                  5          GM™  [
         a     U$ f = f! [        [         4 a     NCf = f! [        [         [(        4 a     N^f = f)NTFrv   ú-Start of code space range %r %r is not bytes.ú+End of code space range %r %r is not bytes.é   zThe start object is not a byte.zThe end object is not a byte.z.The start and end byte have different lengths.rò   ),rÚ   r   Únextr   ÚresetÚStopIterationr\   r   rc   ÚKEYWORD_BEGINCMAPÚKEYWORD_ENDCMAPÚKEYWORD_DEFÚpopr:   r   Ú
IndexErrorÚ	TypeErrorÚKEYWORD_USECMAPr?   rÒ   rÇ   ÚKEYWORD_BEGINCODESPACERANGEÚKEYWORD_ENDCODESPACERANGEr   rJ   r�   rž   rî   ÚKEYWORD_BEGINCIDRANGEÚKEYWORD_ENDCIDRANGEr~   r
  ÚKEYWORD_BEGINCIDCHARÚKEYWORD_ENDCIDCHARrK   r  rõ   ÚKEYWORD_BEGINBFRANGEÚKEYWORD_ENDBFRANGEÚKEYWORD_BEGINBFCHARÚKEYWORD_ENDBFCHARrü   ÚKEYWORD_BEGINNOTDEFRANGEÚKEYWORD_ENDNOTDEFRANGE)r¨   r   ÚstackÚparserÚin_cmaprí   Úobjr6   r5   ÚcmapnameÚ
start_codeÚend_coder  r  rA   rš   s                   r    Úparse_tounicoder/  W  s2  € Ü‹>€DØ€EÜ˜$Ó€Fà€Gà
ð		Ü˜F“|‰HˆCô ˜#œy×)Ñ)Ø�L‰L˜ÔÙàÔ#Ò#ØˆGØ’a‘Ø”OÒ#ØˆGÞØˆKà”+Òðà—I‘I“K�Ø—I‘I“K�Ø—‘œl¨1›o¨qÖ1ð ”OÒ#ðØ Ÿ9™9›;�Ø—‘œh¤|°HÓ'=Ó>Ö?ð Ô/Ò/Ø’a’ØÔ-Ò-Ü(0°°EÖ(:Ñ$�
Ü! *¬e×4Ñ4Ü—K‘KØGØ"Ø ôð
  ’KÜ! (¬E×2Ñ2Ü—K‘KØEØ"Ø ôð
  ’KØ×#Ñ# JÖ9ñ );ð  ’a’ØÔ)Ò)Ø’a’ØÔ'Ò'Ü.6°q¸%Ö.@Ñ*�
 dÜ! *¬e×4Ñ4Ü—K‘KÐ AÔBÙÜ! (¬E×2Ñ2Ü—K‘KÐ ?Ô@ÙÜ�z“?¤c¨(£mÓ3Ü—K‘KÐ PÔQÙØ×!Ñ! *¸Ö=ñ /Að ’a’ØÔ(Ò(Ø’a’ØÔ&Ò&Ü% a¨Ö/‘	�Ü˜c¤5×)Ó)¬j¸¼s×.CÓ.CØ×&Ñ&¤s§~¡~°c¸5Ó'AÀ4ÌÈSËÖRñ 0ð ’a’ØÔ(Ò(Ø’a’ØÔ&Ò&Ü.6°q¸%Ö.@Ñ*�
 dÜ! *¬e×4Ñ4Ü—K‘KÐ AÔBÙÜ! (¬E×2Ñ2Ü—K‘KÐ ?Ô@ÙÜ�z“?¤c¨(£mÓ3Ü—K‘KÐ PÔQÙØ×!Ñ! *¸Ö=ñ /Að ’a‘ØÔ'Ò'Ø’a‘ØÔ%Ò%Ü% a¨Ö/‘	�Ü˜c¤5×)Ó)¬j¸¼u×.EÓ.EØ×'Ñ'¬¯©°s¸EÓ(BÀDÌ#ÈcË(ÖSñ 0ð ’a‘ØÔ,Ò,Ø’a‘ØÔ*Ò*Ø’a‘ð �L‰L˜ÔòY øô ó 	ð �L‰LŒNÛÜó 	ØðF €KðI	ûô* ¤	Ð*ó Ùðûô ¤	¬8Ð4ó Ùðús;   œR Â ;S Ã3S ÒS Ò3	S Ò?S ÓSÓSÓS1Ó0S1c                   ó”   ^ • \ rS rSrSrSU 4S jjrS\S\4S jrS	\S\\	\\
4      4S
 jrS	\S\
SS4S jrS\S\S\
SS4S jrSrU =r$ )ÚEncodingCMapiÎ  z&Encoding map loaded from a PDF stream.r%   Nc                 óL   >• [         TU ]  5         0 U l        / U l        / U l        g r'   )r­   r,   Ú	bytes2cidrÞ   rß   )r+   r®   s    €r    r,   ÚEncodingCMap.__init__Ñ  s$   ø€ Ü‰ÑÔØ+-ˆŒØ')ˆÔØ57ˆ�r   rå   ræ   c                 ó  • [        U5      [        U5      :w  a  [        R                  SX5        g[        U5      n[        U R                  U5      nU R                  R                  XC5        U R                  R                  XAU45        grè   ré   rë   s        r    rî   ÚEncodingCMap.add_code_range×  rð   r   rA   c              #   ó~  #   • SnSnU[        U5      :  a¦  [        U R                  U R                  5       HH  u  nu  pEXX#-    nXd:¼  d  M  Xe::  d  M  X`R                  ;  a  US4v •  OX`R                  U   4v •  X#-  n  O*   [
        R                  SXS 5        XUS-    S4v •  US-  nU[        U5      :  a  M¥  gg7f)z0Decode a multi-byte string according to the CMapr   r�   ró   N)r~   r‚   rÞ   rß   r3  r�   rG   rö   s          r    rD   ÚEncodingCMap.decodeã  sÆ   é € àˆØˆØ”C˜“I‹oä),¨T×->Ñ->ÀÇÁÖ)PÑ%�™˜%Ø C¡MÐ2�ð •? v¥}Ø§^¡^Ó3ð
 % a˜i›à$§n¡n°VÑ&<Ð<Ò<Ø‘N�CÙñ *Qô& —	‘	Ð6¸¸T¸
ÔCð   q¡Ð)¨1Ð,Ò,Ø�q‘�ð3 ”C˜“I�oùs   ‚AB=ÁB=ÁA'B=Â;B=rš   c                 ó    • X R                   U'   g r'   )r3  )r+   rA   rš   s      r    Úadd_bytes2cidÚEncodingCMap.add_bytes2cid  s   € Ø"�‰�tÒr   r  r  c                 óð   • [         R                  US5      n[         R                  US5      n[        U5      n[        XT-
  S-   5       H+  nXG-   R	                  US5      nU R                  XƒU-   5        M-     g )Nrò   r�   )rK   rõ   r~   r   rû   r:  )	r+   r  r  rš   rå   ræ   rì   re   rf   s	            r    Úadd_cid_rangeÚEncodingCMap.add_cid_range  sf   € Ü—‘˜z¨5Ó1ˆÜ�n‰n˜X uÓ-ˆÜ�j“/ˆÜ�s‘{ Q‘Ö'ˆAØ‘×$Ñ$ W¨eÓ4ˆAØ×Ñ˜q¨¡'Ö*ò (r   )r3  rÞ   rß   r  )r   r   r   r   r  r,   rJ   rî   r   r   rK   rD   r:  r=  r   r°   r±   s   @r    r1  r1  Î  s   ø† Ù0÷8ð
2 Eð 
2°ô 
2ð˜5ð  X¨e°E¸3°JÑ.?Ñ%@ô ð># %ð #¨cð #°dô #ð+¨ð +¸ð +ÀSð +ÈT÷ +ò +r   r1  c                 ó  • [        5       n/ n[        U 5      n  [        U5      u  pE[        U[        5      (       d  UR                  U5        M7  U[        L a>   UR                  5       nUR                  5       nUR                  [        U5      U5        GOªU[        L a  [         R#                  S5        USS2	 GO…U[$        L a  USS2	 GOuU[&        L a�  [)        SU5       Hv  u  p‰[        U[*        5      (       d  [         R#                  SUU	5        Us  $ [        U	[*        5      (       d  [         R#                  SUU	5        Us  $ UR-                  X‰5        Mx     USS2	 GOßU[.        L a  USS2	 GOÏU[0        L aé  [)        SU5       HÓ  u  p«n[        U
[*        5      (       d  [         R#                  S5        Us  $ [        U[*        5      (       d  [         R#                  S5        Us  $ [        U[2        5      (       d  [         R#                  S	5        Us  $ [5        U
5      [5        U5      :w  a  [         R#                  S
5        Us  $ UR7                  X«U5        MÕ     USS2	 OÝU[8        L a  USS2	 OÎU[:        L aZ  [)        SU5       HD  u  pÜ[        U[*        5      (       d  M  [        U[2        5      (       d  M3  UR=                  XÜ5        MF     USS2	 OkU[>        L a  USS2	 O\U[@        L a  USS2	 OMU[B        L a  USS2	 O>U[D        L a  USS2	 O/U[F        L a  USS2	 O U[H        L a  USS2	 OUR                  U5        GM*  ! [         a    UR	                  5          GMI  [
         a     U$ f = f! [        [        4 a     NCf = f)zParse an Encoding CMap.z&usecmap not supported for EncodingCMapNrv   r  r  r  z0The start object of begincidrange is not a byte.z.The end object of begincidrange is not a byte.z.The cid object of begincidrange is not a byte.z?The start and end byte of begincidrange have different lengths.)%r1  r   r  r   r  r  r\   r   rc   r  r  r:   r   r  r  r  r�   rž   r  r  r   rJ   rî   r  r  rK   r~   r=  r   r!  r:  r"  r#  r$  r%  r&  r'  )r¨   r   r(  r)  rí   r+  r6   r5   r-  r.  r  r  rš   rA   s                 r    Úparse_encodingr@    s  € ä‹>€DØ€EÜ˜$Ó€Fà
ð	Ü˜F“|‰HˆCô ˜#œy×)Ñ)Ø�L‰L˜ÔÙà”+Òðà—I‘I“K�Ø—I‘I“K�Ø—‘œl¨1›o¨qÖ1ð ”OÒ#Ü�K‰KÐ@ÔAØ’a’ØÔ/Ò/Ø’a’ØÔ-Ò-Ü(0°°EÖ(:Ñ$�
Ü! *¬e×4Ñ4Ü—K‘KØGØ"Ø ôð
  ’KÜ! (¬E×2Ñ2Ü—K‘KØEØ"Ø ôð
  ’KØ×#Ñ# JÖ9ñ );ð  ’a’ØÔ)Ò)Ø’a’ØÔ'Ò'Ü-5°a¸Ö-?Ñ)�
 cÜ! *¬e×4Ñ4Ü—K‘KÐ RÔSØ’KÜ! (¬E×2Ñ2Ü—K‘KÐ PÔQØ’KÜ! #¤s×+Ñ+Ü—K‘KÐ PÔQØ’KÜ�z“?¤c¨(£mÓ3Ü—K‘KØYôð  ’KØ×"Ñ" :¸Ö=ñ .@ð  ’a‘ØÔ(Ò(Ø’a‘ØÔ&Ò&Ü% a¨Ö/‘	�Ü˜d¤E×*Ó*¬z¸#¼s×/CÓ/CØ×&Ñ& tÖ1ñ 0ð ’a‘ØÔ(Ò(Ø’a‘ØÔ&Ò&Ø’a‘ØÔ'Ò'Ø’a‘ØÔ%Ò%Ø’a‘ØÔ,Ò,Ø’a‘ØÔ*Ò*Ø’a‘ð �L‰L˜Ôòk øô ó 	Ø�L‰LŒNÛÜó 	Øð^ €Kða	ûô ¤	Ð*ó Ùðús)   šM Á;M1 ÍM.Í!	M.Í-M.Í1NÎN)F)Or  rÂ   ÚloggingrÄ   r€   rp   Úbisectr   Úpathlibr   Útypingr   r   r   r   r	   r
   r   r   Úplaya.exceptionsr   Úplaya.parserr   r   r   r   r   Úplaya.utilsr   Ú	functoolsr   Ú	getLoggerr   r�   Ú__file__ÚparentrÀ   r¿   Ú	Exceptionr   r"   rK   rL   rN   rs   r‹   r“   r¥   r³   rº   rI   Ú__annotations__r»   rÎ   rÒ   rH   rÔ   r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  rJ   rØ   rÚ   r/  r1  r@  r   r   r    Ú<module>rN     s�  ðò	ó Û Û Û Û 
Ý Ý ÷	÷ 	ó 	õ ,÷õ õ !å ð ×Ò˜Ó!€Ù�‹N×!Ñ! FÑ*×3Ñ3Ó5€ô	�	ô 	÷"ñ "ð( �C˜˜s NÐ2Ñ3Ð3Ñ4€ô57ˆ8ô 57ôp�8ô ô�|ô ô8�ô 8ô&$ˆTô $ô3�:ô 3ð !#€
ˆD��f�ÑÓ "Ø,.€
ˆD��d˜<Ñ(Ð(Ñ)Ó .ðB�Sð B˜Sô Bð�3ð ˜8ô ñ &˜#ð &¨ð &¸*õ &ñ ˜Ó%Ð Ù�j“/€Ù�j“/€Ù�&‹k€Ù!Ð"8Ó9Ð ÙÐ 4Ó5Ð ÙÐ,Ó-Ð Ù˜.Ó)Ð Ù˜?Ó+Ð Ù˜Ó'Ð Ù˜?Ó+Ð Ù˜Ó'Ð Ù˜.Ó)Ð Ù˜Ó%Ð ÙÐ2Ó3Ð ÙÐ.Ó/Ð ñ
 ˆ4ƒð.˜Uð . só .ó ð.÷RDñ RDðjt˜%ð t Lô tôn=+�4ô =+ð@\˜ð \ <õ \r   