§
    ¥”jÁz  ã            
       óv  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZ dd	lmZmZmZmZmZ dd
lmZm Z m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2 ddl3m4Z4 e G d„ d¦  «        ¦   «         Z5dee6e7f         de7fd„Z8	 d5de7de5dee7         fd„Z9	 d5de7de5de7dee7         fd„Z:dddœZ;de7fd„Z<	 d5de7de7dee7         de7fd „Z=ej>         G d!„ d"ej?        ¦  «        ¦   «         Z@ G d#„ d$ejA        e-¦  «        ZB G d%„ d&e%e jC        ¦  «        ZD G d'„ d(eDe0¦  «        ZE G d)„ d*eDe1¦  «        ZF G d+„ d,eDe2¦  «        ZG ejH        d-¦  «        ZId.„ ZJd/„ ZKd0„ ZLd1ejM        fd2„ZNe*jO         G d3„ d4e*¦  «        ¦   «         ZP e-jO        eB¦  «         dS )6é    N)Ú	dataclass)Úsha256Úsha384Úsha512)ÚDictÚOptionalÚTupleÚUnion)Úcore)ÚCipherÚ
algorithmsÚmodes)ÚgenericÚmiscé   )Úcompute_o_value_legacyÚcompute_o_value_legacy_prepÚcompute_u_value_r2Úcompute_u_value_r34Úlegacy_normalise_pw)Úaes_cbc_decryptÚaes_cbc_encryptÚrc4_encrypt)	Ú
AuthResultÚ
AuthStatusÚCryptFilterÚCryptFilterBuilderÚCryptFilterConfigurationÚIdentityCryptFilterÚPdfKeyNotAvailableErrorÚSecurityHandlerÚSecurityHandlerVersion)ÚSerialisableCredentialÚSerialisedCredential)ÚAESCryptFilterMixinÚAESGCMCryptFilterMixinÚRC4CryptFilterMixin)ÚStandardPermissionsc                   óN   — e Zd ZU eed<   eed<   eed<   ededd fd„¦   «         ZdS )Ú_R6KeyEntryÚ
hash_valueÚvalidation_saltÚkey_saltÚentryÚreturnc                 ó~   — t          |¦  «        dk    sJ ‚t          |d d…         |dd…         |dd…         ¦  «        S )Né0   é    é(   )Úlenr*   )Úclsr.   s     úo/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/pdf_utils/crypt/standard.pyÚ
from_bytesz_R6KeyEntry.from_bytes/   sC   € å�5‰zŒz˜RÒÐÐÐÝ˜5  " œ: u¨R°¨U¤|°U¸2¸b¸5´\ÑBÔBÐBó    N)Ú__name__Ú
__module__Ú__qualname__ÚbytesÚ__annotations__Úclassmethodr7   © r8   r6   r*   r*   )   sk   € € € € € € àÐÐÑØÐÐÑØ€O€O�OàðC˜uð C¨ð Cð Cð Cñ „[ðCð Cð Cr8   r*   Úpasswordr/   c                 ó�   — t          | t          ¦  «        r(| sdS ddlm}  || ¦  «                             d¦  «        } | d d…         S )Nr8   r   )Úsaslprepzutf-8é   )Ú
isinstanceÚstrÚ	_saslpreprB   Úencode)r@   rB   s     r6   Ú_r6_normalise_pwrH   5   s^   € Ý�(�CÑ Ô ð 6àð 	Ø�3Ø'Ð'Ð'Ð'Ð'Ð'à�8˜HÑ%Ô%×,Ò,¨WÑ5Ô5ˆØ�D�S�DŒ>Ðr8   Úpw_bytesr.   Úu_entryc                 óD   — t          | |j        |¦  «        }||j        k    S ©N)Ú_r6_hash_algor,   r+   )rI   r.   rJ   Úpurported_hashs       r6   Ú_r6_password_authenticaterO   @   s&   € õ # 8¨UÔ-BÀGÑLÔL€NØ˜UÔ-Ò-Ð-r8   Úe_entryc                 ó˜   — t          | |j        |¦  «        }t          |¦  «        dk    sJ ‚t          ||t	          d¦  «        d¬¦  «        S )Nr2   é   F©ÚkeyÚdataÚivÚuse_padding)rM   r-   r4   r   r<   )rI   r.   rP   rJ   Ú
interm_keys        r6   Ú_r6_derive_file_keyrY   G   sT   € õ ˜x¨¬¸ÑAÔA€JÝˆw‰<Œ<˜2ÒÐÐÐÝØ˜W­¨r©¬Àðñ ô ð r8   TF)éT   éF   Úinput_bytesc                 ó:   — t          d„ | D ¦   «         ¦  «        dz  S )Nc              3   ó    K  — | ]	}|d z  V — Œ
dS )é   Nr?   )Ú.0Úbs     r6   ú	<genexpr>z_bytes_mod_3.<locals>.<genexpr>Y   s&   è è € Ð*Ð*˜ˆq�1‰uÐ*Ð*Ð*Ð*Ð*Ð*r8   r_   )Úsum)r\   s    r6   Ú_bytes_mod_3rd   W   s$   € åÐ*Ð*˜kÐ*Ñ*Ô*Ñ*Ô*¨QÑ.Ð.r8   Úcurrent_saltc                 óŽ  — t          | ¦  «        }t          |¦  «        dk    sJ ‚|                     |¦  «         |r*t          |¦  «        dk    sJ ‚|                     |¦  «         |                     ¦   «         }t           t          t
          f}dx}}|dk     s	||dz
  k    rœ| |z   |pdz   dz  }t          |dd…         ||dd…         d	¬
¦  «        d         }	|t          |	dd…         ¦  «                 }
 |
|	¦  «                             ¦   «         }|	t          |	¦  «        dz
           }|dz  }|dk     °“||dz
  k    °œ|dd…         S )u3   
    Algorithm 2.B in ISO 32000-2 Â§ 7.6.4.3.4
    é   r1   r   é@   r2   r8   NrR   FrS   r   )r   r4   ÚupdateÚdigestr   r   r   rd   )rI   re   rJ   Úinitial_hashÚkÚhashesÚround_noÚlast_byte_valÚk1ÚeÚ	next_hashs              r6   rM   rM   \   st  € õ ˜(Ñ#Ô#€LÝˆ|ÑÔ Ò!Ð!Ð!Ð!Ø×Ò˜Ñ%Ô%Ð%Øð %Ý�7‰|Œ|˜rÒ!Ð!Ð!Ð!Ø×Ò˜GÑ$Ô$Ð$Ø×ÒÑÔ€AÝ•f�fÐ%€FØ Ð €Hˆ}Ø
�RŠ-ˆ-˜=¨8°b©=Ò8Ð8Ø˜‰l˜g˜n¨Ñ-°Ñ3ˆÝØ�#�2�#”˜R A b¨ e¤H¸%ð
ñ 
ô 
à
ôˆð
 �<¨¨#¨2¨#¬Ñ/Ô/Ô0ˆ	ØˆI�a‰LŒL×ÒÑ!Ô!ˆØ�#˜a™&œ& 1™*œˆØ�A‰ˆð �RŠ-ˆ-˜=¨8°b©=Ò8Ð8ð ˆSˆbˆSŒ6€Mr8   c                   óZ   — e Zd ZdZdZdZdZdZdZdZ		 de
j        fd	„Zedd
„¦   «         ZdS )Ú StandardSecuritySettingsRevisionz;Indicate the standard security handler revision to emulate.é   r_   é   é   é   Nr/   c                 ób   — | j         }|€t          j        ¦   «         nt          j        |¦  «        S rL   )Úvaluer   Ú
NullObjectÚNumberObject)ÚselfÚvals     r6   Úas_pdf_objectz.StandardSecuritySettingsRevision.as_pdf_objectˆ   s.   € ØŒjˆà$' K�GÔÑ Ô Ð µWÔ5IÈ#Ñ5NÔ5Nð	
r8   c                 óZ   — 	 t          |¦  «        S # t          $ r t           j        cY S w xY wrL   )rt   Ú
ValueErrorÚOTHER)r5   rz   s     r6   Úfrom_numberz,StandardSecuritySettingsRevision.from_numberŽ   s?   € ð	:Ý3°EÑ:Ô:Ð:øÝð 	:ð 	:ð 	:Ý3Ô9Ð9Ð9Ð9ð	:øøøs   ‚ ‘*©*)r/   rt   )r9   r:   r;   Ú__doc__Ú	RC4_BASICÚRC4_EXTENDEDÚRC4_OR_AES128ÚAES256ÚAES_GCMr‚   r   Ú	PdfObjectr   r>   rƒ   r?   r8   r6   rt   rt   z   s{   € € € € € àEÐEà€IØ€LØ€MØ€FØ€GØ€Eðð
˜wÔ0ð 
ð 
ð 
ð 
ð ð:ð :ð :ñ „[ð:ð :ð :r8   rt   c                   ó|   — e Zd Zdej        fdej        ddifgZedefd„¦   «         Zde	fd„Z
ede	fd	„¦   «         Zd
S )Ú_PasswordCredentialÚ	pwd_bytesÚid1ÚoptionalTr/   c                 ó   — dS )Nr�   r?   ©r5   s    r6   Úget_namez_PasswordCredential.get_nameœ   s   € àˆ{r8   c                 ó*   — |                       ¦   «         S rL   )Údump©r}   s    r6   Ú
_ser_valuez_PasswordCredential._ser_value    s   € Ø�yŠy‰{Œ{Ðr8   rU   c                 ó|   — 	 t                                |¦  «        S # t          $ r t          j        d¦  «        ‚w xY w)Nz)Failed to deserialise password credential)rŒ   Úloadr�   r   ÚPdfReadError)r5   rU   s     r6   Ú_deser_valuez _PasswordCredential._deser_value£   sM   € ð	QÝ&×+Ò+¨DÑ1Ô1Ð1øÝð 	Qð 	Qð 	QÝÔ#Ð$OÑPÔPÐPð	Qøøøs   ‚ œ;N)r9   r:   r;   r   ÚOctetStringÚ_fieldsr>   rE   r’   r<   r–   rš   r?   r8   r6   rŒ   rŒ   –   s¨   € € € € € à	�dÔ&Ð'Ø	�Ô  :¨tÐ"4Ð5ð€Gð
 ð˜ð ð ð ñ „[ðð˜Eð ð ð ð ð ðQ ð Qð Qð Qñ „[ðQð Qð Qr8   rŒ   c                   ój   ‡ — e Zd ZU dZdZed         ed<   ed„ ¦   «         Zˆ fd„Z	de
fd„Zˆ fd	„Zˆ xZS )
ÚStandardCryptFilterzB
    Crypt filter for use with the standard security handler.
    NÚStandardSecurityHandlerÚ_handlerc                 ó\   — t          | j        t          ¦  «        r| j        j        S t          ‚rL   )rD   r    rŸ   Ú_auth_failedÚNotImplementedErrorr•   s    r6   r¢   z StandardCryptFilter._auth_failed²   s(   € å�d”mÕ%<Ñ=Ô=ð 	.Ø”=Ô-Ð-Ý!Ð!r8   c                 ó�   •— t          |t          ¦  «        st          ‚t          ¦   «                              |¦  «         d | _        d S rL   )rD   rŸ   Ú	TypeErrorÚsuperÚ_set_security_handlerÚ_shared_key)r}   ÚhandlerÚ	__class__s     €r6   r§   z)StandardCryptFilter._set_security_handler¸   sA   ø€ Ý˜'Õ#:Ñ;Ô;ð 	ÝˆOÝ‰Œ×%Ò% gÑ.Ô.Ð.ØˆÔÐÐr8   r/   c                 óF   — | j         sJ ‚| j                              ¦   «         S rL   )r    Úget_file_encryption_keyr•   s    r6   Úderive_shared_encryption_keyz0StandardCryptFilter.derive_shared_encryption_key¾   s$   € ØŒ}ÐÐÐØŒ}×4Ò4Ñ6Ô6Ð6r8   c                 ó€   •— t          ¦   «                              ¦   «         }t          j        | j        ¦  «        |d<   |S )Nú/Length)r¦   r   r   r|   Úkeylen)r}   Úresultrª   s     €r6   r   z!StandardCryptFilter.as_pdf_objectÂ   s6   ø€ Ý‘”×&Ò&Ñ(Ô(ˆõ $Ô0°´Ñ=Ô=ˆˆyÑØˆr8   )r9   r:   r;   r„   r    r   r=   Úpropertyr¢   r§   r<   r­   r   Ú__classcell__©rª   s   @r6   rž   rž   «   s©   ø€ € € € € € ðð ð 59€HˆhÐ0Ô1Ð8Ð8Ñ8àð"ð "ñ „Xð"ð
 ð  ð  ð  ð  ð7¨eð 7ð 7ð 7ð 7ðð ð ð ð ð ð ð ð r8   rž   c                   ó   — e Zd ZdZdS )ÚStandardAESCryptFilterz=
    AES crypt filter for the standard security handler.
    N©r9   r:   r;   r„   r?   r8   r6   r¶   r¶   Ê   ó   € € € € € ðð ð 	€Dr8   r¶   c                   ó   — e Zd ZdZdS )ÚStandardAESGCMCryptFilterzA
    AES-GCM crypt filter for the standard security handler.
    Nr·   r?   r8   r6   rº   rº   Ò   r¸   r8   rº   c                   ó   — e Zd ZdZdS )ÚStandardRC4CryptFilterz=
    RC4 crypt filter for the standard security handler.
    Nr·   r?   r8   r6   r¼   r¼   Ú   r¸   r8   r¼   z/StdCFc                 ód   — t          t          t          | ¬¦  «        it          t          ¬¦  «        S ©N©r°   ©Údefault_stream_filterÚdefault_string_filter)r   ÚSTD_CFr¼   r¿   s    r6   Ú_std_rc4_configrÄ   å   ó3   € Ý#Ý	Õ'¨vÐ6Ñ6Ô6Ð7Ý$Ý$ðñ ô ð r8   c                 ód   — t          t          t          | ¬¦  «        it          t          ¬¦  «        S r¾   )r   rÃ   r¶   r¿   s    r6   Ú_std_aes_configrÇ   í   rÅ   r8   c                  ó`   — t          t          t          ¦   «         it          t          ¬¦  «        S )NrÀ   )r   rÃ   rº   r?   r8   r6   Ú_std_gcm_configrÉ   õ   s.   € Ý#Ý	Õ*Ñ,Ô,Ð-Ý$Ý$ðñ ô ð r8   Úcfdictc                 óT   — |                       dd¦  «        }t          |dz  ¬¦  «        S )Nr¯   r3   rg   r¿   )Úgetr¼   )rÊ   Ú_acts_as_defaultÚkeylen_bitss      r6   Ú#_build_legacy_standard_crypt_filterrÏ   ý   s-   € ð —*’*˜Y¨Ñ+Ô+€KÝ!¨¸Ñ)9Ð:Ñ:Ô:Ð:r8   c                   óÚ  ‡ — e Zd ZU dZ ej        d¦  «        e ej        d¦  «        d„  ej        d¦  «        d„  ej        d¦  «        d„  ej        d	¦  «        d
„ iZeej        e	f         e
d<   edefd„¦   «         Zeddd ej        ¦   «         ddfdedefd„¦   «         Zed ej        ¦   «         dddfdededefd„¦   «         Zed+d„¦   «         Z	 	 	 	 	 	 	 d,dedededee         dee         f
ˆ fd„Zed ej        defd!„¦   «         Zed ej        fd"„¦   «         Zedefˆ fd#„¦   «         Z d$„ Z!d%efd&„Z"d%efd'„Z#	 d-d%ee         de$fd(„Z%de&e'ee         f         fd)„Z(defd*„Z)ˆ xZ*S ).rŸ   a•  
    Implementation of the standard (password-based) security handler.

    You shouldn't have to instantiate :class:`.StandardSecurityHandler` objects
    yourself. For encrypting new documents, use :meth:`build_from_pw`
    or :meth:`build_from_pw_legacy`.

    For decrypting existing documents, pyHanko will take care of instantiating
    security handlers through :meth:`.SecurityHandler.build`.
    z/V2z/AESV2c                 ó"   — t          d¬¦  «        S )NrR   r¿   ©r¶   ©Ú_Ú__s     r6   ú<lambda>z StandardSecurityHandler.<lambda>  ó   € Õ4JØð5
ñ 5
ô 5
€ r8   z/AESV3c                 ó"   — t          d¬¦  «        S )Nr2   r¿   rÒ   rÓ   s     r6   rÖ   z StandardSecurityHandler.<lambda>  r×   r8   z/AESV4c                 ó   — t          ¦   «         S rL   )rº   rÓ   s     r6   rÖ   z StandardSecurityHandler.<lambda>  s   € Õ4MÑ4OÔ4O€ r8   z	/Identityc                 ó   — t          ¦   «         S rL   )r   rÓ   s     r6   rÖ   z StandardSecurityHandler.<lambda>  s   € Õ7JÑ7LÔ7L€ r8   Ú_known_crypt_filtersr/   c                 ó*   — t          j        d¦  «        S )Nú	/Standard)r   Ú
NameObjectr‘   s    r6   r’   z StandardSecurityHandler.get_name  s   € åÔ! +Ñ.Ô.Ð.r8   NrR   TÚrevÚpermsc
                 óP  — t          |¦  «        }|�t          |¦  «        n|}|t          j        k    rt          |› d�¦  «        ‚|t          j        k    rd}n|r|t          j        k    rd}t          |||j        |¦  «        }|t          j        k    rL|t          j        z  t          j	        z  t          j
        z  t          j        z  }t          ||||¦  «        \  }}nt          ||j        |||||	¦  «        \  }}|t          j        k    rt          j        }n)|t          j        k    rt          j        }nt          j        }|t          j        k    r%|€#|rt#          d¬¦  «        }nt%          |¬¦  «        } | d||||||||	dœ|
¤Ž}||_        t)          ||dœ¦  «        |_        |S )	aÁ  
        Initialise a legacy password-based security handler, to attach to a
        :class:`~.pyhanko.pdf_utils.writer.PdfFileWriter`.
        Any remaining keyword arguments will be passed to the constructor.

        .. danger::
            The functionality implemented by this handler is deprecated in the
            PDF standard. We only provide it for testing purposes, and to
            interface with legacy systems.

        :param rev:
            Security handler revision to use, see
            :class:`.StandardSecuritySettingsRevision`.
        :param id1:
            The first part of the document ID.
        :param desired_owner_pass:
            Desired owner password.
        :param desired_user_pass:
            Desired user password.
        :param keylen_bytes:
            Length of the key (in bytes).
        :param use_aes128:
            Use AES-128 instead of RC4 (default: ``True``).
        :param perms:
            Permission bits to set
        :param crypt_filter_config:
            Custom crypt filter configuration. PyHanko will supply a reasonable
            default if none is specified.
        :return:
            A :class:`StandardSecurityHandler` instance.
        Nz/ is not supported by this bootstrapping method.é   rR   r¿   )ÚversionÚrevisionÚlegacy_keylenÚ
perm_flagsÚodataÚudataÚcrypt_filter_configÚencrypt_metadata©r�   rŽ   r?   )r   rt   r‡   r�   r…   r   rz   r(   ÚALLOW_FORM_FILLINGÚALLOW_ASSISTIVE_TECHNOLOGYÚALLOW_REASSEMBLYÚALLOW_HIGH_QUALITY_PRINTINGr   r   r"   ÚRC4_40ÚRC4_LONGER_KEYSrÇ   rÄ   r¨   rŒ   Ú_credential)r5   rß   rŽ   Údesired_owner_passÚdesired_user_passÚkeylen_bytesÚ
use_aes128rà   ré   rê   ÚkwargsÚo_entryrJ   rT   rã   Úshs                   r6   Úbuild_from_pw_legacyz,StandardSecurityHandler.build_from_pw_legacy!  s6  € õZ 1Ð1CÑDÔDÐð !Ð,õ  Ð 1Ñ2Ô2Ð2à#ð 	ð
 Õ1Ô?Ò?Ð?ÝØÐGÐGÐGñô ð ð Õ2Ô<Ò<Ð<ØˆLˆLàð	ØÕ"BÔ"PÒPÐPàˆLÝ(ØÐ 1°3´9¸lñ
ô 
ˆð
 Õ2Ô<Ò<Ð<ð Ý%Ô8ñ9å%Ô@ñAõ &Ô6ñ7õ &ÔAñ	Bð õ .Ø! 7¨E°3ñô ‰LˆG�S�Sõ /Ø!Ø”	ØØØØØ ñô ‰LˆG�Sð Õ2Ô@Ò@Ð@Ý,Ô:ˆGˆGØÕ4Ô>Ò>Ð>Ý,Ô3ˆGˆGå,Ô<ˆGð Õ3ÔAÒAÐAØ#Ð+àð KÝ&5¸RÐ&@Ñ&@Ô&@Ð#Ð#å&5¸\Ð&JÑ&JÔ&JÐ#àˆSð 

ØØØ&ØØØØ 3Ø-ð

ð 

ð ð

ð 

ˆð ˆŒÝ,Ø,°SÐ9Ð9ñ
ô 
ˆŒð ˆ	r8   FÚpdf_macÚuse_gcmc                 ó  — t          |¦  «        }|�t          |¦  «        n|}	t          j        d¦  «        }
t          j        d¦  «        }t          j        d¦  «        }t          |	|¦  «        }||z   |z   }t          |	|¦  «        }t	          ||
t          d¦  «        d¬¦  «        \  }}t          |¦  «        dk    sJ ‚t          j        d¦  «        }t          j        d¦  «        }t          |||¦  «        }||z   |z   }t          |||¦  «        }t	          ||
t          d¦  «        d¬¦  «        \  }}t          |¦  «        dk    sJ ‚|r|t          j         z  }| 	                    ¦   «         ddd…         }|dz   |rd	nd
z   dz   t          j        d¦  «        z   }t          t          j        |
¦  «        t          j        ¦   «         ¦  «        }|                     ¦   «         }|                     |¦  «        |                     ¦   «         z   }|rt          j        d¦  «        }nd}|rt$          j        }t(          j        }nt$          j        }t(          j        } | d||d||||||||dœ|¤Ž} |
| _        t/          d|i¦  «        | _        | S )a»  
        Initialise a password-based security handler backed by AES-256,
        to attach to a :class:`~.pyhanko.pdf_utils.writer.PdfFileWriter`.
        This handler will use the new PDF 2.0 encryption scheme.

        Any remaining keyword arguments will be passed to the constructor.

        :param desired_owner_pass:
            Desired owner password.
        :param desired_user_pass:
            Desired user password.
        :param perms:
            Desired usage permissions.
        :param encrypt_metadata:
            Whether to set up the security handler for encrypting metadata
            as well.
        :param pdf_mac:
            Include an ISO/TS 32004 MAC.
        :param use_gcm:
            Use AES-GCM (ISO/TS 32003) to encrypt strings and streams.

            .. danger::
                Due to the way PDF encryption works, the authentication
                guarantees of AES-GCM only apply to the content of individual
                strings and streams. The PDF file structure itself is not
                authenticated. Document-level integrity protection is provided
                by the ``pdf_mac=True`` option.

            .. warning::
                This option is disabled by default because support for
                ISO/TS 32003 is not available in mainstream PDF
                software yet. This default may change in the future.
        :return:
            A :class:`StandardSecurityHandler` instance.
        Nr2   rg   rR   F)rW   éÿÿÿÿs   ÿÿÿÿó   Tó   Fó   adbrv   )rã   rä   rå   ræ   rç   rè   ÚoeseedÚueseedÚencrypted_permsrê   Úkdf_saltr�   r?   )rH   ÚsecretsÚtoken_bytesrM   r   r<   r4   r(   ÚTOLERATE_MISSING_PDF_MACÚas_bytesr   r   ÚAESr   ÚECBÚ	encryptorri   Úfinalizer"   r‰   rt   rˆ   r¨   rŒ   rò   )!r5   ró   rô   rà   rê   rû   rü   r÷   Úowner_pw_bytesÚuser_pw_bytesÚencryption_keyÚu_validation_saltÚ
u_key_saltÚu_hashrJ   Úu_interm_keyrÔ   Úue_seedÚo_validation_saltÚ
o_key_saltÚo_hashrø   Úo_interm_keyÚoe_seedÚperms_bytesÚextd_perms_bytesÚcipherr  r  r  rã   rä   rù   s!                                    r6   Úbuild_from_pwz%StandardSecurityHandler.build_from_pwœ  së  € õ\ *Ð*<Ñ=Ô=ˆð !Ð,õ Ð.Ñ/Ô/Ð/àð 	õ
 !Ô,¨RÑ0Ô0ˆÝ#Ô/°Ñ2Ô2ÐÝÔ(¨Ñ+Ô+ˆ
Ý˜}Ð.?Ñ@Ô@ˆØÐ,Ñ,¨zÑ9ˆÝ$ ]°JÑ?Ô?ˆÝ$Ø˜.­%°©)¬)Àð
ñ 
ô 
‰
ˆˆ7õ �7‰|Œ|˜rÒ!Ð!Ð!Ð!å#Ô/°Ñ2Ô2ÐÝÔ(¨Ñ+Ô+ˆ
Ý˜~Ð/@À'ÑJÔJˆØÐ,Ñ,¨zÑ9ˆÝ$ ^°ZÀÑIÔIˆÝ$Ø˜.­%°©)¬)Àð
ñ 
ô 
‰
ˆˆ7õ �7‰|Œ|˜rÒ!Ð!Ð!Ð!àð 	CàÕ)ÔBÐBÑBˆEØ—n’nÑ&Ô& t t¨ tÔ,ˆàØñà'Ð1ˆtˆt¨Tñ3ð ñõ Ô! !Ñ$Ô$ñ	%ð 	õ �
œ ~Ñ6Ô6½¼	¹¼ÑDÔDˆØ×$Ò$Ñ&Ô&ˆ	à×ÒÐ-Ñ.Ô.°×1CÒ1CÑ1EÔ1EÑEð 	ð ð 	ÝÔ*¨2Ñ.Ô.ˆHˆHàˆHàð 	?Ý,Ô4ˆGÝ7Ô?ˆHˆHå,Ô3ˆGÝ7Ô>ˆHàˆSð 
ØØØØØØØØØ+Ø-Øð
ð 
ð ð
ð 
ˆð (ˆŒÝ,¨k¸>Ð-JÑKÔKˆŒØˆ	r8   rw   c                 ól  — t          | ¦  «        t          |¦  «        cxk    rdk    sn t          j        d|› d�¦  «        ‚|r+|r)t          |¦  «        t          |¦  «        cxk    rdk    sn t          j        d|› d�¦  «        ‚|rt          |¦  «        dk    rt          j        d|› d�¦  «        ‚d S )Nr1   z2/U and /O entries must be 48 bytes long in a rev. z security handlerr2   z;/UE and /OE must be present and be 32 bytes long in a rev. rR   z6/Perms must be present and be 16 bytes long in a rev. )r4   r   ÚPdfError)rè   rç   r  r  r  rß   s         r6   Ú_check_r6_valuesz(StandardSecurityHandler._check_r6_values  s  € å�E‘
”
�c %™jœjÐ.Ð.Ò.Ð.¨BÒ.Ð.Ð.Ð.Ý”-ð/Øð/ð /ð /ñô ð ð ð 	˜Vð 	­C°©K¬K½3¸v¹;¼;Ð,LÐ,LÒ,LÐ,LÈ"Ò,LÐ,LÐ,LÐ,LÝ”-ð/Øð/ð /ð /ñô ð ð ð 	¥# oÑ"6Ô"6¸"Ò"<Ð"<Ý”-ð/Øð/ð /ð /ñô ð ð #=Ð"<r8   rã   rä   ræ   ré   r  c                 ó8  •— |€•|t           j        k    rt          d¦  «        }nu|t           j        k    rt          |¦  «        }nU|t           j        k    rt          ¦   «         }n6|t           j        k    r|€t          d¦  «        }nt          j	        d¦  «        ‚t          ¦   «                              ||||
||¬¦  «         || _        || _        | j        t          j        z   | _        |t"          j        k    r4| j                             |||||	¦  «         || _        || _        |	| _        nRt/          |¦  «        t/          |¦  «        cxk    rdk    sn t          j	        d¦  «        ‚d x| _        x| _        | _        || _        || _        d | _        d| _        d S )Nrâ   r2   z1Could not impute a reasonable crypt filter config)rê   Úcompat_entriesr  zD/U and /O entries must be 32 bytes long in a legacy security handlerF)r"   rð   rÄ   rñ   r‰   rÉ   rˆ   rÇ   r   r   r¦   Ú__init__rä   rà   r(   r  Ú_mac_requiredrt   rª   r!  r  r  r  r4   rç   rè   r¨   r¢   )r}   rã   rä   rå   ræ   rç   rè   r  r  r  rê   ré   r#  r  rª   s                 €r6   r$  z StandardSecurityHandler.__init__+  sØ  ø€ ð  Ð&ØÕ0Ô7Ò7Ð7Ý&5°aÑ&8Ô&8Ð#Ð#ØÕ2ÔBÒBÐBÝ&5°mÑ&DÔ&DÐ#Ð#ØÕ2Ô:Ò:Ð:Ý&5Ñ&7Ô&7Ð#Ð#àÕ1Ô8Ò8Ð8Ø'Ð/õ '6°bÑ&9Ô&9Ð#Ð#å”mØGñô ð õ 	‰Œ×ÒØØØØ-Ø)Øð 	ñ 	
ô 	
ð 	
ð !ˆŒØˆŒ
àŒJÕ,ÔEÑEð
ˆÔð Õ7Ô>Ò>Ð>ØŒN×+Ò+Ø�u˜f f¨oñô ð ð !ˆDŒKØ ˆDŒKØ#2ˆDÔ Ð å˜‘J”J¥# e¡*¤*Ð2Ð2Ò2Ð2°Ò2Ð2Ð2Ð2Ý”mð.ñô ð ð @DÐCˆDŒKÐC˜$œ+¨Ô(<ØˆŒ
ØˆŒ
Ø,0ˆÔØ!ˆÔÐÐr8   Úencrypt_dictc                 óÀ  — |                      dd¦  «        }|dz  dk    rt          j        d¦  «        ‚|dz  }	 |d         }|d         }n"# t          $ r t          j        d¦  «        ‚w xY wd	t          j        d
t          fd„}d	t          j        d
t          fd„}t          || 	                    d|t          j
        ¦   «         ¬¦  «        |j        dd…         |j        dd…         | 	                    d|¦  «        | 	                    d|¦  «        | 	                    d|¦  «        | 	                    dt          d¬¦  «        | 	                    dd„ ¦  «        ¬¦	  «	        S )a  
        Gather and preprocess the "easy" metadata values in an encryption
        dictionary, and turn them into constructor kwargs.

        This function processes ``/Length``, ``/P``, ``/Perms``, ``/O``, ``/U``,
        ``/OE``, ``/UE`` and ``/EncryptMetadata``.
        r¯   r3   rg   r   z"Key length must be a multiple of 8ú/Oú/Uz!/O and /U entries must be presentÚxr/   c                 ó¤   — t          | t          j        t          j        f¦  «        s$t	          j        dt          | ¦  «        › �¦  «        ‚| j        S )NzExpected string, but got )rD   r   ÚTextStringObjectÚByteStringObjectr   r™   ÚtypeÚoriginal_bytes©r*  s    r6   Ú
_get_byteszFStandardSecurityHandler.gather_encryption_metadata.<locals>._get_bytesƒ  sP   € ÝØ•GÔ,­gÔ.FÐGñô ð Oõ Ô'Ð(MÅDÈÁGÄGÐ(MÐ(MÑNÔNÐNØÔ#Ð#r8   c                 óŽ   — t          | t          j        ¦  «        rt          j        | ¦  «        S t          j        d| › d�¦  «        ‚)NzCannot parse z as a permission indicator)rD   r   r|   r(   Úfrom_sint32r   r™   r0  s    r6   Ú_parse_permissionszNStandardSecurityHandler.gather_encryption_metadata.<locals>._parse_permissionsŠ  sK   € Ý˜!�WÔ1Ñ2Ô2ð Ý*Ô6°qÑ9Ô9Ð9åÔ'ØA AÐAÐAÐAñô ð r8   ú/P)ÚdefaultNr1   ú/OEú/UEú/Permsú/EncryptMetadataTú/KDFSaltc                 ó`   — t          | t          j        t          j        f¦  «        r| j        nd S rL   )rD   r   r,  r-  r/  r0  s    r6   rÖ   zDStandardSecurityHandler.gather_encryption_metadata.<locals>.<lambda>£  s6   € å!Ø�GÔ4µgÔ6NÐOñô ð�AÔ$Ð$ð ð r8   )	rå   ræ   rç   rè   r  r  r  rê   r  )rÌ   r   r   ÚKeyErrorr   rŠ   r<   r(   ÚdictÚget_and_applyÚallow_everythingr/  Úbool)r5   r&  rÎ   r°   rç   rè   r1  r4  s           r6   Úgather_encryption_metadataz2StandardSecurityHandler.gather_encryption_metadatam  sº  € ð #×&Ò& y°"Ñ5Ô5ˆØ˜!‰O Ò!Ð!Ý”-Ð DÑEÔEÐEØ Ñ!ˆð	EØ  Ô&ˆEØ  Ô&ˆEˆEøÝð 	Eð 	Eð 	EÝ”-Ð CÑDÔDÐDð	Eøøøð	$�'Ô+ð 	$µð 	$ð 	$ð 	$ð 	$ð	¥'Ô"3ð 	Õ8Kð 	ð 	ð 	ð 	õ Ø Ø#×1Ò1ØØ"Ý+Ô<Ñ>Ô>ð 2ñ ô ð
 Ô& s¨ sÔ+ØÔ& s¨ sÔ+Ø×-Ò-¨e°ZÑ@Ô@Ø×-Ò-¨e°ZÑ@Ô@Ø(×6Ò6°xÀÑLÔLØ)×7Ò7Ø"¥D°$ð 8ñ ô ð "×/Ò/Øðð ñ	ô 	ð
ñ 
ô 
ð 	
s   ºA ÁA*c                 óâ   — t          j        |d         ¦  «        }t                               |d         ¦  «        }t          d|||                      |¦  «        dœ|                      |¦  «        ¤ŽS )Nú/Vú/R)rã   rä   ré   r?   )r"   rƒ   rt   rŸ   Úprocess_crypt_filtersrB  )r5   r&  ÚvÚrs       r6   Úinstantiate_from_pdf_objectz3StandardSecurityHandler.instantiate_from_pdf_object­  s|   € õ #Ô.¨|¸DÔ/AÑBÔBˆÝ,×8Ò8¸ÀdÔ9KÑLÔLˆÝ&ð 
ØØØ #× 9Ò 9¸,Ñ GÔ Gð
ð 
ð ×,Ò,¨\Ñ:Ô:ð	
ð 
ð 	
r8   c                 ó8   •— t          ¦   «         j        p| j        S rL   )r¦   Úpdf_mac_enabledr%  )r}   rª   s    €r6   rK  z'StandardSecurityHandler.pdf_mac_enabledº  s   ø€ å‰wŒwÔ&Ð<¨$Ô*<Ð<r8   c                 óÞ  — t          j        ¦   «         }t          j        d¦  «        |d<   t          j        | j        ¦  «        |d<   t          j        | j        ¦  «        |d<   t          j        | j                             ¦   «         ¦  «        |d<   | j	        rt          j        | j	        ¦  «        |d<   | j
        s| j        t          j        k    rt          j        | j        dz  ¦  «        |d<   | j                             ¦   «         |d	<   | j                             ¦   «         |d
<   | j        t          j        k    rHt          j        | j        ¦  «        |d<   |                     | j                             ¦   «         ¦  «         | j        t*          j        k    rTt          j        | j        ¦  «        |d<   t          j        | j        ¦  «        |d<   t          j        | j        ¦  «        |d<   |S )NrÝ   z/Filterr(  r)  r5  r;  rg   r¯   rD  rE  r:  r7  r8  r9  )r   ÚDictionaryObjectrÞ   r-  rç   rè   r|   rà   Ú	as_sint32Ú	_kdf_saltÚ_compat_entriesrã   r"   rñ   r°   r   rä   ÚBooleanObjectrê   ri   ré   rt   rˆ   r  r  r  )r}   r±   s     r6   r   z%StandardSecurityHandler.as_pdf_object¾  s©  € ÝÔ)Ñ+Ô+ˆÝ#Ô.¨{Ñ;Ô;ˆˆyÑÝÔ/°´
Ñ;Ô;ˆˆt‰ÝÔ/°´
Ñ;Ô;ˆˆt‰ÝÔ+¨D¬J×,@Ò,@Ñ,BÔ,BÑCÔCˆˆt‰ØŒ>ð 	JÝ!(Ô!9¸$¼.Ñ!IÔ!IˆF�:Ñð Ô ð	FàŒ|Õ5ÔEÒEÐEå 'Ô 4°T´[À1±_Ñ EÔ EˆF�9ÑØ”|×1Ò1Ñ3Ô3ˆˆt‰Ø”}×2Ò2Ñ4Ô4ˆˆt‰ØŒ<Õ0Ô@Ò@Ð@Ý)0Ô)>ØÔ%ñ*ô *ˆFÐ%Ñ&ð �MŠM˜$Ô2×@Ò@ÑBÔBÑCÔCÐCØŒ=Õ<ÔCÒCÐCÝ#Ô4°T´[ÑAÔAˆF�5‰MÝ#Ô4°T´[ÑAÔAˆF�5‰MÝ&Ô7¸Ô8LÑMÔMˆF�8ÑØˆr8   rŽ   c           	      ó  — | j         }| j        }|t          j        k    r t	          || j        | j        |¦  «        \  }}nEt          ||j        | j	        | j        | j        || j
        ¦  «        \  }}|d d…         }|d d…         }||k    |fS )NrR   )rä   rè   rt   r…   r   rç   rà   r   rz   r°   rê   )r}   rŽ   r@   rß   Ú
user_tokenÚuser_tok_suppliedrT   s          r6   Ú_auth_user_password_legacyz2StandardSecurityHandler._auth_user_password_legacyÚ  s¨   € ØŒmˆØ”Zˆ
ØÕ2Ô<Ò<Ð<Ý%7Ø˜$œ* d¤j°#ñ&ô &Ñ"Ð˜s˜sõ &9ØØ”	Ø”Ø”
Ø”
ØØÔ%ñ&ô &Ñ"Ð˜sð !2°#°2°#Ô 6ÐØ# C R CœˆJà  JÒ.°Ð3Ð3r8   c                 ó$  ‡— t          ||dœ¦  «        }| j        }t          ||j        | j        ¦  «        }|t
          j        k    rt          || j        ¦  «        }nH| j        }t          ddd¦  «        D ]-Št          ˆfd„|D ¦   «         ¦  «        }t          ||¦  «        }Œ.|}|                      ||¦  «        \  }	}|	r|| _        t          j        |fS |                      ||¦  «        \  }
}|
r|| _        t          j        |fS t          j        d fS )Nrë   é   rþ   c              3   ó"   •K  — | ]	}|‰z  V — Œ
d S rL   r?   )r`   ra   Úis     €r6   rb   z?StandardSecurityHandler._authenticate_legacy.<locals>.<genexpr>û  s'   øè è € Ð3Ð3¨!  A¡Ð3Ð3Ð3Ð3Ð3Ð3r8   )rŒ   rä   r   rz   r°   rt   r…   r   rç   Úranger<   rU  rò   r   ÚOWNERÚUSERÚFAILED)r}   rŽ   r@   Úcredrß   rT   Úprp_userpassr~   Únew_keyÚowner_passwordÚuser_passwordrY  s              @r6   Ú_authenticate_legacyz,StandardSecurityHandler._authenticate_legacyð  s1  ø€ Ý"°À#Ð#FÐ#FÑGÔGˆð ŒmˆÝ)¨(°C´I¸t¼{ÑKÔKˆØÕ2Ô<Ò<Ð<Ý& s¨D¬JÑ7Ô7ˆLˆLà”*ˆCÝ˜2˜r 2Ñ&Ô&ð 0ð 0�ÝÐ3Ð3Ð3Ð3¨sÐ3Ñ3Ô3Ñ3Ô3�Ý! '¨3Ñ/Ô/��ØˆLØ"×=Ò=¸cÀ<ÑPÔPÑˆ˜Øð 	)Ø#ˆDÔÝÔ# SÐ(Ð(ð "×<Ò<¸SÀ(ÑKÔKÑˆ�sØð 	(Ø#ˆDÔÝ”? CÐ'Ð'ÝÔ  $Ð&Ð&r8   c                 óx  — t          |t          ¦  «        rt          j        |¦  «        }t          |t          t
          t          f¦  «        s%t          j        dt          |¦  «        › d�¦  «        ‚t          |t          ¦  «        r|d         j
        }|d         j
        }| j        }|t          j        k    r|                      |¦  «        \  }}n>|€t          j        d¦  «        ‚t          |¦  «        }|                      ||¦  «        \  }}|�|| _        d| _        nd| _        t'          || j        ¬	¦  «        S )
a   
        Authenticate a user to this security handler.

        :param credential:
            The credential to use (a password in this case).
        :param id1:
            First part of the document ID. This is mandatory for legacy
            encryption handlers, but meaningless otherwise.
        :return:
            An :class:`AuthResult` object indicating the level of access
            obtained.
        z]Standard authentication credential must be a string, byte string or _PasswordCredential, not ú.rŽ   r�   Nz+id1 must be specified for legacy encryptionFT)ÚstatusÚpermission_flags)rD   r$   r#   ÚdeserialiserŒ   rE   r<   r   r™   r.  Únativerä   rt   rˆ   Ú_authenticate_r6r   rc  r¨   r¢   r   rà   )r}   Ú
credentialrŽ   rß   ÚresrT   s         r6   Úauthenticatez$StandardSecurityHandler.authenticate
  sP  € õ �jÕ"6Ñ7Ô7ð 	HÝ/Ô;¸JÑGÔGˆJÝ˜*Õ':½CÅÐ&GÑHÔHð 	ÝÔ#ð+å˜JÑ'Ô'ð+ð +ð +ñô ð õ
 �jÕ"5Ñ6Ô6ð 	8Ø˜UÔ#Ô*ˆCØ# KÔ0Ô7ˆJð ŒmˆØÕ2Ô9Ò9Ð9Ø×,Ò,¨ZÑ8Ô8‰HˆC��àˆ{ÝÔ'ØAñô ð õ -¨ZÑ8Ô8ˆJØ×0Ò0°°jÑAÔA‰HˆC�Øˆ?Ø"ˆDÔØ %ˆDÔÐà $ˆDÔÝ °t´zÐBÑBÔBÐBr8   c           
      óð  — t          |¦  «        }t                               | j        ¦  «        }t                               | j        ¦  «        }t          ||| j        ¦  «        r)t          j        }t          ||| j	        | j        ¦  «        }nAt          ||¦  «        r#t          j
        }t          ||| j        ¦  «        }nt          j        d fS t          t          j        |¦  «        t!          j        ¦   «         ¦  «        }|                     ¦   «         }|                     | j        ¦  «        |                     ¦   «         z   }	|	dd…         dk    }
|
| j        t/          j        t3          j        d|	d d…         ¦  «        d         ¦  «        k    z  }
	 t6          |	d                  }|
|| j        k    z  }
n# t:          $ r d}
Y nw xY w|
st=          j        d	¦  «        ‚tA          d
|i¦  «        | _!        ||fS )Né	   é   r  z<Irv   r   rg   FznFile decryption key didn't decrypt permission flags correctly -- file permissions may have been tampered with.r�   )"rH   r*   r7   rç   rè   rO   r   r[  rY   r  r\  r  r]  r   r   r
  r   r  Ú	decryptorri   r  r  rà   r(   Ú	from_uintÚstructÚunpackÚ_EXPECTED_PERMS_8rê   r=  r   r   rŒ   rò   )r}   r@   rI   Úo_entry_splitÚu_entry_splitr±   rT   r  rq  Údecrypted_p_entryÚperms_okÚdecr_metadata_flags               r6   rj  z(StandardSecurityHandler._authenticate_r68  sù  € Ý# HÑ-Ô-ˆÝ#×.Ò.¨t¬zÑ:Ô:ˆÝ#×.Ò.¨t¬zÑ:Ô:ˆå$ X¨}¸d¼jÑIÔIð 		+ÝÔ%ˆFÝ%Ø˜-¨¬°d´jñô ˆCˆCõ ' x°Ñ?Ô?ð 	+Ý”_ˆFÝ% h°¸t¼{ÑKÔKˆCˆCåÔ$ dÐ*Ð*õ �
œ sÑ+Ô+­U¬Y©[¬[Ñ9Ô9ˆØ×$Ò$Ñ&Ô&ˆ	à×Ò˜TÔ1Ñ2Ô2°Y×5GÒ5GÑ5IÔ5IÑIð 	ð
 % Q r TÔ*¨fÒ4ˆà�D”JÕ"5Ô"?ÝŒM˜$Ð 1°"°1°"Ô 5Ñ6Ô6°qÔ9ñ#
ô #
ò 
ñ 	
ˆð	å!2Ð3DÀQÔ3GÔ!HÐØÐ*¨dÔ.CÒCÑCˆHˆHøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøð ð 	Ý”-ðMñô ð õ /°¸XÐ/FÑGÔGˆÔØ�sˆ{Ðs   Æ!F6 Æ6GÇGc                 óH   — | j         }|€t          | j        rdnd¦  «        ‚|S )aQ  
        Retrieve the (global) file encryption key for this security handler.

        :return:
            The file encryption key as a :class:`bytes` object.
        :raise misc.PdfReadError:
            Raised if this security handler was instantiated from an encryption
            dictionary and no credential is available.
        NzAuthentication failed.z7No key available to decrypt, please authenticate first.)r¨   r    r¢   )r}   rT   s     r6   r¬   z/StandardSecurityHandler.get_file_encryption_keyg  s?   € ð ÔˆØˆ;Ý)àÔ$ðOÐ(Ð(àNñô ð ð
 ˆ
r8   )rw   )NNNTNTNrL   )+r9   r:   r;   r„   r   rÞ   rÏ   rÛ   r   r   r=   r>   rE   r’   r(   r@  rt   rú   rA  r  Ústaticmethodr!  r"   r   r   r<   r$  rM  r>  rB  rI  r²   rK  r   rU  rc  r   rm  r	   r   rj  r¬   r³   r´   s   @r6   rŸ   rŸ     s°  ø€ € € € € € ð	ð 	ð 	ˆÔ˜5Ñ!Ô!Ð#FØˆÔ˜8Ñ$Ô$ð '
ð '
ð 	ˆÔ˜8Ñ$Ô$ð '
ð '
ð 	ˆÔ˜8Ñ$Ô$Ð&OÐ&OØˆÔ˜;Ñ'Ô'Ð)LÐ)Lð
JÐ˜$˜wÔ1Ð3EÐEÔFð 
ð 
ñ 
ð ð/˜ð /ð /ð /ñ „[ð/ð ð ØØØ%IÐ%8Ô%IÑ%KÔ%KØ Øðxð xà-ðxð #ðxð xð xñ „[ðxðt ð Ø%IÐ%8Ô%IÑ%KÔ%KØØØðzð zð #ð	zð ðzð ðzð zð zñ „[ðzðx ðð ð ñ „\ðð2 ØØØØBFØØ$(ð@"ð @"à'ð@"ð 3ð@"ð
 (ð@"ð &Ð&>Ô?ð@"ð ˜5”/ð@"ð @"ð @"ð @"ð @"ð @"ðD ð=
Ø"Ô3ð=
à	ð=
ð =
ð =
ñ „[ð=
ð~ ð

Ø"Ô3ð

ð 

ð 

ñ „[ð

ð ð= ð =ð =ð =ð =ð =ñ „Xð=ðð ð ð84¨eð 4ð 4ð 4ð 4ð,'¨ð 'ð 'ð 'ð 'ð6 26ð+Cð +CØ'¨œð+Cà	ð+Cð +Cð +Cð +Cð\-¨E°*¸hÀu¼oÐ2MÔ,Nð -ð -ð -ð -ð^¨ð ð ð ð ð ð ð ð r8   rŸ   rL   )QÚabcÚenumr  rs  Údataclassesr   Úhashlibr   r   r   Útypingr   r   r	   r
   Ú
asn1cryptor   Ú&cryptography.hazmat.primitives.ciphersr   r   r   Úpyhanko.pdf_utilsr   r   Ú_legacyr   r   r   r   r   Ú_utilr   r   r   Úapir   r   r   r   r   r   r    r!   r"   Úcred_serr#   r$   Úfilter_mixinsr%   r&   r'   Úpermissionsr(   r*   rE   r<   rH   rO   rY   ru  rd   rM   ÚuniqueÚVersionEnumrt   ÚSequencerŒ   ÚABCrž   r¶   rº   r¼   rÞ   rÃ   rÄ   rÇ   rÉ   rM  rÏ   ÚregisterrŸ   r?   r8   r6   ú<module>r�     s=  ðØ 
€
€
€
Ø €€€Ø €€€Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à Ð Ð Ð Ð Ð Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð CÐ BÐ BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð ð ð ð ð
 -Ð ,Ð ,Ð ,Ð ,Ð ,ð ðCð Cð Cð Cð Cñ Cô Cñ „ðCð˜u S¨% ZÔ0ð °Uð ð ð ð ð EIð.ð .Øð.Ø'ð.Ø2:¸5´/ð.ð .ð .ð .ð  $ð	
ð 
Øð
àð
ð ð
ð �eŒ_ð	
ð 
ð 
ð 
ð   uÐ-Ð-Ð ð/˜eð /ð /ð /ð /ð FJðð ØðØ#(ðØ3;¸E´?ðà
ðð ð ð ð< „ð:ð :ð :ð :ð : tÔ'7ñ :ô :ñ „ð:ð6Qð Qð Qð Qð Q˜$œ-Ð)?ñ Qô Qð Qð*ð ð ð ð ˜+ s¤wñ ô ð ð>	ð 	ð 	ð 	ð 	Ð0Ð2Eñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð 3Ð5Kñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð0Ð2Eñ 	ô 	ð 	ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ðð ð ðð ð ð;ØÔ$ð;ð ;ð ;ð ;ð Ôðs	ð s	ð s	ð s	ð s	˜oñ s	ô s	ñ Ôðs	ðl  Ð Ô Ð 3Ñ 4Ô 4Ð 4Ð 4Ð 4r8   