§
    ¥”j\Ü  ã                   ó"  — d 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mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ ddlmZmZm Z m!Z!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ g d¢Z0 ej1        e2¦  «        Z3 G d„ de¦  «        Z4 G d„ d¦  «        Z5 G d„ de¦  «        Z6 G d„ de¦  «        Z7 G d„ d¦  «        Z8dd d!d"d#d$d%d&œZ9d'„ e9 :                    ¦   «         D ¦   «         Z;dTd)ej<        fd*„Z= ed+¬,¦  «         G d-„ d.¦  «        ¦   «         Z>e G d/„ d0e¦  «        ¦   «         Z?e G d1„ d2e¦  «        ¦   «         Z@e G d3„ d4e¦  «        ¦   «         ZAe G d5„ d6e¦  «        ¦   «         ZB ed+¬,¦  «         G d7„ d8¦  «        ¦   «         ZC G d9„ d:e¦  «        ZD ed+¬,¦  «         G d;„ d<¦  «        ¦   «         ZE ed+¬,¦  «         G d=„ d>¦  «        ¦   «         ZF ed+¬,¦  «         G d?„ d@¦  «        ¦   «         ZG ed+¬,¦  «         G dA„ dB¦  «        ¦   «         ZH	 	 	 dUdCe&fdD„ZIdVdCe&dEeJfdF„ZK	 dTdGe&fdH„ZL	 	 dWdIe$dJe
eJ         dKe
eM         fdL„ZNdMe&dNeHfdO„ZOdMe&dPejP        dNeHfdQ„ZQ G dR„ dSejP        ¦  «        ZRdS )XzQ
Utilities to deal with signature form fields and their properties in PDF files.
é    N)Ú	dataclass)ÚEnumÚFlagÚunique)ÚListÚOptionalÚSetÚTupleÚUnion)Úx509)ÚKeyUsage)Úgeneric)Ú
RawContent)Úenumerate_fields_in©Úpdf_nameÚ
pdf_string)ÚBoxConstraints)ÚOrderedEnumÚPdfReadErrorÚPdfWriteErrorÚget_and_applyÚrd)Ú
PdfHandler)ÚBasePdfFileWriter)ÚSigningErrorÚUnacceptableSignerError)ÚAuthorityWithCert)ÚInvalidCertificateError)ÚValidationPath)ÚFieldMDPActionÚFieldMDPSpecÚInvisSigSettingsÚMDPPermÚSeedLockDocumentÚSeedValueDictVersionÚSigCertConstraintFlagsÚSigCertConstraintsÚSigCertKeyUsageÚSigFieldSpecÚSigSeedSubFilterÚSigSeedValFlagsÚSigSeedValueSpecÚSignatureFormFieldÚVisibleSigSettingsÚappend_signature_fieldÚapply_sig_field_spec_propertiesÚensure_sig_flagsÚenumerate_sig_fieldsÚprepare_sig_fieldc                   ó"   — e Zd ZdZdZ	 dZ	 dZdS )r$   zL
    Indicates a ``/DocMDP`` level.

    Cf. Table 254  in ISO 32000-1.
    é   é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
NO_CHANGESÚ
FILL_FORMSÚANNOTATE© ó    úb/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/sign/fields.pyr$   r$   =   s=   € € € € € ðð ð €Jðð €Jðð €Hðð rA   r$   c                   ó>   — e Zd ZdZddee         fd„Zd„ Zdefd„Z	dS )	ÚSeedSignatureTypea+  
    Signature type indicator to be embedded into the seed value dictionary
    attached to a signature field.

    :param mdp_perm:
        If not ``None``, indicates that the signature field is intended for
        a certification signature. The :class:`MDPPerm` value passed as the
        ``mdp_perm`` parameter indicates the modification policy that the
        certification signature should use.

        A value of ``None`` indicates that the signature field is intended for
        an approval signature (i.e. a non-certification signature).
    NÚmdp_permc                 ó   — || _         d S ©N©rE   )ÚselfrE   s     rB   Ú__init__zSeedSignatureType.__init__j   s   € Ø ˆŒˆˆrA   c                 óL   — t          |t          ¦  «        o|j        | j        k    S rG   )Ú
isinstancerD   rE   ©rI   Úothers     rB   Ú__eq__zSeedSignatureType.__eq__m   s&   € å�uÕ/Ñ0Ô0ð 0Ø” $¤-Ò/ð	
rA   Úreturnc                 ó   — | j         d uS rG   rH   ©rI   s    rB   Úcertification_signaturez)SeedSignatureType.certification_signatures   s   € ØŒ} DÐ(Ð(rA   rG   )
r9   r:   r;   r<   r   r$   rJ   rO   ÚboolrS   r@   rA   rB   rD   rD   [   sm   € € € € € ðð ð!ð ! ¨'Ô!2ð !ð !ð !ð !ð
ð 
ð 
ð)¨ð )ð )ð )ð )ð )ð )rA   rD   c                   óF   — e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
	 d	Z	 d
ZdS )r,   a¬  
    Flags for the ``/Ff`` entry in the seed value dictionary for a signature
    field. These mark which of the constraints are to be strictly enforced,
    as opposed to optional ones.

    .. warning::
        The flags :attr:`LEGAL_ATTESTATION` and :attr:`APPEARANCE_FILTER` are
        processed in accordance with the specification when creating a
        signature, but support is nevertheless limited.

        * PyHanko does not support legal attestations at all, so given that
          the :attr:`LEGAL_ATTESTATION` requirement flag only restricts the
          legal attestations that can be used by the signer, pyHanko can safely
          ignore it when signing.

          On the other hand, since the validator is not aware of
          legal attestations either, it cannot validate signatures that
          make :attr:`~.SigSeedValueSpec.legal_attestations` a mandatory
          constraint.
        * Since pyHanko does not define any named appearances, setting
          the :attr:`APPEARANCE_FILTER` flag and the
          :attr:`~.SigSeedValueSpec.appearance` entry in the seed value
          dictionary will make pyHanko refuse to sign the document.

          When validating, the situation is different: since pyHanko has no
          way of knowing whether the signer used the named appearance imposed
          by the seed value dictionary, it will simply emit a warning and
          continue validating the signature.
    r6   r7   é   é   é   é    é@   é€   é   N)r9   r:   r;   r<   ÚFILTERÚ	SUBFILTERÚVÚREASONSÚLEGAL_ATTESTATIONÚADD_REV_INFOÚDIGEST_METHODÚLOCK_DOCUMENTÚAPPEARANCE_FILTERr@   rA   rB   r,   r,   w   s‡   € € € € € ðð ð< €Fðð
 €Iðð 	
€Aðð €Gðð Ððð €Lðð €Mðð €Mðð Ððð rA   r,   c                   óF   — e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
	 eez  Zd	S )
r'   a^  
    Flags for the ``/Ff`` entry in the certificate seed value dictionary for
    a dictionary field. These mark which of the constraints are to be
    strictly enforced, as opposed to optional ones.

    .. warning::
        While this enum records values for all flags, not all corresponding
        constraint types have been implemented yet.
    r6   r7   rV   rW   rX   rY   rZ   N)r9   r:   r;   r<   ÚSUBJECTÚISSUERÚOIDÚ
SUBJECT_DNÚRESERVEDÚ	KEY_USAGEÚURLÚUNSUPPORTEDr@   rA   rB   r'   r'   Å   s}   € € € € € ðð ð €Gðð €Fðð €Cðð €Jðð €Hðð €Iðð €Cðð ˜S‘.€Kðð rA   r'   c                   óè   — e Zd ZdZ	 	 ddee         dee         fd„Zd„ Zed„ ¦   «         Z	e	 	 ddee
e                  dee
e                  fd„¦   «         Zd	e
e         fd
„Zd	e
e         fd„Zd„ ZdS )r)   uï  
    Encodes the key usage bits that must (resp. must not) be active on the
    signer's certificate.

    .. note::
        See Â§ 4.2.1.3 in :rfc:`5280` and :class:`.KeyUsage` for more
        information on key usage extensions.

    .. note::
        The human-readable names of the key usage extensions are recorded
        in ``camelCase`` in :rfc:`5280`, but this class uses
        the naming convention of :class:`.KeyUsage` in ``asn1crypto``.
        The conversion is done by replacing ``camelCase`` with ``snake_case``.
        For example, ``nonRepudiation`` becomes ``non_repudiation``, and
        ``digitalSignature`` turns into ``digital_signature``.

    .. note::
        This class is intended to closely replicate the definition of the
        KeyUsage entry Table 235 in ISO 32000-1.
        In particular, it does *not* provide a mechanism to deal
        with extended key usage extensions (cf. Â§ 4.2.1.12 in :rfc:`5280`).

    :param must_have:
        The :class:`.KeyUsage` object encoding the key usage extensions
        that must be present on the signer's certificate.
    :param forbidden:
        The :class:`.KeyUsage` object encoding the key usage extensions
        that must *not* be present on the signer's certificate.
    NÚ	must_haveÚ	forbiddenc                 ó–   — |�|nt          t          ¦   «         ¦  «        | _        |�|nt          t          ¦   «         ¦  «        | _        d S rG   )r   Úsetrp   rq   )rI   rp   rq   s      rB   rJ   zSigCertKeyUsage.__init__  s<   € ð
 '0Ð&;˜˜ÅÍ#É%Ì%ÁÄˆŒØ&/Ð&;˜˜ÅÍ#É%Ì%ÁÄˆŒˆˆrA   c                 ó|   ‡ ‡— dt           fˆ fd„Šd                     ˆfd„t          d¦  «        D ¦   «         ¦  «        S )z•
        Encode the key usage requirements in the format specified in the PDF
        specification.

        :return:
            A string.
        Úbitc                 óD   •— ‰j         |          rdS ‰j        |          rdS dS )NÚ1Ú0ÚX©rp   rq   )ru   rI   s    €rB   Úfmt_bitz4SigCertKeyUsage.encode_to_sv_string.<locals>.fmt_bit-  s0   ø€ ØŒ~˜cÔ"ð Ø�sØ” Ô$ð Ø�sà�srA   Ú c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rG   r@   )Ú.0ru   r{   s     €rB   ú	<genexpr>z6SigCertKeyUsage.encode_to_sv_string.<locals>.<genexpr>5  s+   øè è € Ð8Ð8¨�w�w˜s‘|”|Ð8Ð8Ð8Ð8Ð8Ð8rA   é	   )ÚintÚjoinÚrange)rI   r{   s   `@rB   Úencode_to_sv_stringz#SigCertKeyUsage.encode_to_sv_string$  sX   øø€ ð	�ð 	ð 	ð 	ð 	ð 	ð 	ð �wŠwÐ8Ð8Ð8Ð8­u°Q©x¬xÐ8Ñ8Ô8Ñ8Ô8Ð8rA   c                 óœ   ‡— ‰dd…         Šˆfd„}t          t           |d¦  «        ¦  «        t           |d¦  «        ¦  «        ¬¦  «        S )a  
        Parse a PDF KeyUsage string into an instance of
        :class:`.SigCertKeyUsage`. See Table 235 in ISO 32000-1.

        :param ku_str:
            A PDF KeyUsage string.
        :return:
            An instance of :class:`.SigCertKeyUsage`.
        Nr€   c                 ó<   •‡ — t          ˆ fd„‰D ¦   «         ¦  «        S )Nc              3   ó,   •K  — | ]}|‰k    rd ndV — ŒdS )r6   r   Nr@   )r~   ÚvalÚwith_vals     €rB   r   zISigCertKeyUsage.read_from_sv_string.<locals>._as_tuple.<locals>.<genexpr>E  s/   øè è € ÐGÐG¸˜c Xšo˜o˜˜°1ÐGÐGÐGÐGÐGÐGrA   )Útuple)r‰   Úku_strs   `€rB   Ú	_as_tuplez6SigCertKeyUsage.read_from_sv_string.<locals>._as_tupleD  s'   øø€ ÝÐGÐGÐGÐGÀÐGÑGÔGÑGÔGÐGrA   rw   rx   rz   )r)   r   )Úclsr‹   rŒ   s    ` rB   Úread_from_sv_stringz#SigCertKeyUsage.read_from_sv_string7  so   ø€ ð ˜˜˜”ˆð	Hð 	Hð 	Hð 	Hð 	Hõ Ý˜y˜y¨™~œ~Ñ.Ô.Ý˜y˜y¨™~œ~Ñ.Ô.ð
ñ 
ô 
ð 	
rA   c                 ó˜   — t          t          |€t          ¦   «         n|¦  «        t          |€t          ¦   «         n|¦  «        ¬¦  «        S )aŸ  
        Initialise a :class:`.SigCertKeyUsage` object from two sets.

        :param must_have:
            The key usage extensions that must be present on the signer's
            certificate.
        :param forbidden:
            The key usage extensions that must *not* be present on the signer's
            certificate.
        :return:
            A :class:`.SigCertKeyUsage` object encoding these.
        Nrz   )r)   r   rs   )r�   rp   rq   s      rB   Ú	from_setszSigCertKeyUsage.from_setsL  sK   € õ$ Ý¨	Ð(9�s™uœu˜u¸yÑIÔIÝ¨	Ð(9�s™uœu˜u¸yÑIÔIð
ñ 
ô 
ð 	
rA   rP   c                 ó   — | j         j        S )zr
        Return the set of key usage extensions that must be present
        on the signer's certificate.
        )rp   ÚnativerR   s    rB   Úmust_have_setzSigCertKeyUsage.must_have_setc  ó   € ð
 Œ~Ô$Ð$rA   c                 ó   — | j         j        S )zv
        Return the set of key usage extensions that must not be present
        on the signer's certificate.
        )rq   r’   rR   s    rB   Úforbidden_setzSigCertKeyUsage.forbidden_setj  r”   rA   c                 óÔ   — t          |t          ¦  «        oS|                      ¦   «         |                     ¦   «         k    o)|                      ¦   «         |                     ¦   «         k    S rG   )rL   r)   r“   r–   rM   s     rB   rO   zSigCertKeyUsage.__eq__q  s^   € å�u�oÑ.Ô.ð >Ø×"Ò"Ñ$Ô$¨×(;Ò(;Ñ(=Ô(=Ò=ð>à×"Ò"Ñ$Ô$¨×(;Ò(;Ñ(=Ô(=Ò=ð	
rA   ©NN)r9   r:   r;   r<   r   r   rJ   r„   ÚclassmethodrŽ   r	   Ústrr�   r“   r–   rO   r@   rA   rB   r)   r)   ý   s+  € € € € € ðð ð@ )-Ø(,ðQð Qà˜HÔ%ðQð ˜HÔ%ðQð Qð Qð Qð9ð 9ð 9ð& ð
ð 
ñ „[ð
ð( ð )-Ø(,ð
ð 
à˜C œHÔ%ð
ð ˜C œHÔ%ð
ð 
ð 
ñ „[ð
ð,%˜s 3œxð %ð %ð %ð %ð%˜s 3œxð %ð %ð %ð %ð
ð 
ð 
ð 
ð 
rA   r)   ÚCNÚSerialNumberÚCÚLÚSTÚOÚOU)z2.5.4.3z2.5.4.5z2.5.4.6z2.5.4.7z2.5.4.8z2.5.4.10z2.5.4.11c                 ó   — i | ]\  }}||“Œ	S r@   r@   )r~   ÚkÚvs      rB   ú
<dictcomp>r¥   ƒ  s   € ÐDÐDÐD¡$ ! Q˜˜AÐDÐDÐDrA   FÚnamec              #   óª   K  — | j         }|D ]F}|D ]A}|d         }|d         }|j        }|rt                               ||¦  «        }||j        fV — ŒBŒGd S )NÚtypeÚvalue)ÚchosenÚdottedÚname_type_abbrevsÚgetr’   )r¦   Úabbreviate_oidsÚrdnsÚrdnÚtype_and_valueÚoidr©   Úkeys           rB   Úx509_name_keyval_pairsr´   †  sŠ   è è € Ø!œ[€DØð $ð $ˆØ!ð 
	$ð 
	$ˆNØ!/°Ô!7ˆCð # 7Ô+ˆEØ”*ˆCØð 6Ý'×+Ò+¨C°Ñ5Ô5�à�u”|Ð#Ð#Ð#Ð#Ð#ð
	$ð$ð $rA   T)Úfrozenc                   ór  — e Zd ZU dZ ed¦  «        Zeed<   	 dZee	e
j                          ed<   	 dZee
j                 ed<   	 dZee	e
j                          ed<   	 dZee         ed<   	  ed	¦  «        Zej        ed
<   	 dZee	e                  ed<   	 ed„ ¦   «         Zd„ Zde
j        dee         fd„ZdS )r(   z¢
    This part of the seed value dictionary allows the document author
    to set constraints on the signer's certificate.

    See Table 235 in ISO 32000-1.
    r   ÚflagsNÚsubjectsÚ
subject_dnÚissuersÚinfo_urlz/BrowserÚurl_typeÚ	key_usagec                 óÀ  ‡— t          |t          j        ¦  «        r|                     ¦   «         }	 |d         dk    rt	          d¦  «        ‚n# t
          $ r Y nw xY wt          |                     dd¦  «        ¦  «        }d„ |                     dd¦  «        D ¦   «         }d	„ |                     d
d¦  «        D ¦   «         }d„ Št          j	         
                    ˆfd„|                     dd¦  «        D ¦   «         ¦  «        }d„ }t          |d|¦  «        }|                     d¦  «        }|                     d¦  «        }	||pd|pd|pd||dœ}
|�|	�|	|
d<    | di |
¤ŽS )zä
        Read a PDF dictionary into a :class:`.SigCertConstraints` object.

        :param pdf_dict:
            A :class:`~.generic.DictionaryObject`.
        :return:
            A :class:`.SigCertConstraints` object.
        ú/Typeú/SVCertz!Object /Type entry is not /SVCertú/Ffr   c                 óV   — g | ]&}t           j                             |j        ¦  «        ‘Œ'S r@   ©r   ÚCertificateÚloadÚoriginal_bytes©r~   Úcerts     rB   ú
<listcomp>z6SigCertConstraints.from_pdf_object.<locals>.<listcomp>â  s<   € ð 
ð 
ð 
àõ Ô×!Ò! $Ô"5Ñ6Ô6ð
ð 
ð 
rA   ú/Subjectr@   c                 óV   — g | ]&}t           j                             |j        ¦  «        ‘Œ'S r@   rÃ   rÇ   s     rB   rÉ   z6SigCertConstraints.from_pdf_object.<locals>.<listcomp>æ  s<   € ð 
ð 
ð 
àõ Ô×!Ò! $Ô"5Ñ6Ô6ð
ð 
ð 
rA   ú/Issuerc                 óp   — | dd …         } t                                |                      ¦   «         | ¦  «        S )Nr6   )Úname_type_abbrevs_revr­   Úupper)Úattrs    rB   Úformat_attrz7SigCertConstraints.from_pdf_object.<locals>.format_attrë  s/   € à˜˜˜”8ˆDõ )×,Ò,¨T¯ZªZ©\¬\¸4Ñ@Ô@Ð@rA   c                 ó\   •— i | ](}|                      ¦   «         D ]\  }} ‰|¦  «        |“ŒŒ)S r@   )Úitems)r~   Údn_dirrÐ   r©   rÑ   s       €rB   r¥   z6SigCertConstraints.from_pdf_object.<locals>.<dictcomp>ó  sX   ø€ ð ð ð àØ#)§<¢<¡>¤>ðð ñ  �D˜%ð �˜DÑ!Ô! 5ðð ð ð rA   ú
/SubjectDNc                 ó   — d„ | D ¦   «         S )Nc                 óB   — g | ]}t                                |¦  «        ‘ŒS r@   )r)   rŽ   ©r~   Úkus     rB   rÉ   zOSigCertConstraints.from_pdf_object.<locals>.parse_key_usage.<locals>.<listcomp>û  s&   € ÐJÐJÐJÀ•O×7Ò7¸Ñ;Ô;ÐJÐJÐJrA   r@   ©rˆ   s    rB   Úparse_key_usagez;SigCertConstraints.from_pdf_object.<locals>.parse_key_usageú  s   € ØJÐJÀcÐJÑJÔJÐJrA   ú	/KeyUsageú/URLú/URLTypeN)r·   r¸   r¹   rº   r»   r½   r¼   )rL   r   ÚIndirectObjectÚ
get_objectr   ÚKeyErrorr'   r­   r   ÚNameÚbuildr   )r�   Úpdf_dictr·   r¸   rº   Úsubject_dnsrÛ   r½   Úurlr¼   ÚkwargsrÑ   s              @rB   Úfrom_pdf_objectz"SigCertConstraints.from_pdf_objectÏ  sß  ø€ õ �h¥Ô 6Ñ7Ô7ð 	-Ø×*Ò*Ñ,Ô,ˆHð	Ø˜Ô  IÒ-Ð-Ý"Ð#FÑGÔGÐGð .øåð 	ð 	ð 	ØˆDð	øøøå& x§|¢|°E¸1Ñ'=Ô'=Ñ>Ô>ˆð
ð 
à Ÿš Z°Ñ4Ô4ð
ñ 
ô 
ˆð
ð 
à Ÿš Y°Ñ3Ô3ð
ñ 
ô 
ˆð
	Að 	Að 	Aõ ”i—o’oðð ð ð à&Ÿlšl¨<¸Ñ<Ô<ðñ ô ñ
ô 
ˆð	Kð 	Kð 	Kõ " (¨K¸ÑIÔIˆ	à�lŠl˜6Ñ"Ô"ˆØ—<’< 
Ñ+Ô+ˆàØ Ð( DØ%Ð-¨Ø� $ØØ"ð
ð 
ˆð ˆ?˜xÐ3Ø!)ˆF�:ÑØˆsˆ}ˆ}�Vˆ}ˆ}Ðs   ±A Á
AÁAc           	      óT  — t          j        t          d¦  «        t          d¦  «        t          d¦  «        t          j        | j        j        ¦  «        i¦  «        }| j        �3t          j        d„ | j        D ¦   «         ¦  «        |t          d¦  «        <   | j        rUt          j        t          j        d„ t          | j        d¬	¦  «        D ¦   «         ¦  «        g¦  «        |t          d
¦  «        <   | j
        �3t          j        d„ | j
        D ¦   «         ¦  «        |t          d¦  «        <   | j        �;t          | j        ¦  «        |t          d¦  «        <   | j        |t          d¦  «        <   | j        �3t          j        d„ | j        D ¦   «         ¦  «        |t          d¦  «        <   |S )z›
        Render this :class:`.SigCertConstraints` object to a PDF dictionary.

        :return:
            A :class:`~.generic.DictionaryObject`.
        r¿   rÀ   rÁ   Nc              3   ób   K  — | ]*}t          j        |                     ¦   «         ¦  «        V — Œ+d S rG   ©r   ÚByteStringObjectÚdumprÇ   s     rB   r   z3SigCertConstraints.as_pdf_object.<locals>.<genexpr>  sF   è è € ð ?ð ?Ø:>•Ô(¨¯ª©¬Ñ5Ô5ð?ð ?ð ?ð ?ð ?ð ?rA   rÊ   c                 óT   — i | ]%\  }}t          d |z   ¦  «        t          |¦  «        “Œ&S )ú/r   )r~   r³   r©   s      rB   r¥   z4SigCertConstraints.as_pdf_object.<locals>.<dictcomp>%  sB   € ð ð ð á *  Uõ % S¨3¡YÑ/Ô/µ¸EÑ1BÔ1Bðð ð rA   T)r®   rÕ   c              3   ób   K  — | ]*}t          j        |                     ¦   «         ¦  «        V — Œ+d S rG   rë   rÇ   s     rB   r   z3SigCertConstraints.as_pdf_object.<locals>.<genexpr>/  sF   è è € ð >ð >Ø:>•Ô(¨¯ª©¬Ñ5Ô5ð>ð >ð >ð >ð >ð >rA   rÌ   rÝ   rÞ   c              3   óX   K  — | ]%}t          |                     ¦   «         ¦  «        V — Œ&d S rG   )r   r„   rØ   s     rB   r   z3SigCertConstraints.as_pdf_object.<locals>.<genexpr>7  sO   è è € ð @ð @Ø9;•
˜2×1Ò1Ñ3Ô3Ñ4Ô4ð@ð @ð @ð @ð @ð @rA   rÜ   )r   ÚDictionaryObjectr   ÚNumberObjectr·   r©   r¸   ÚArrayObjectr¹   r´   rº   r»   r   r¼   r½   ©rI   Úresults     rB   Úas_pdf_objectz SigCertConstraints.as_pdf_object  sØ  € õ Ô)å˜Ñ!Ô!¥8¨IÑ#6Ô#6Ý˜‘”¥Ô!5°d´jÔ6FÑ!GÔ!Gðñ
ô 
ˆð Œ=Ð$Ý+2Ô+>ð ?ð ?ØBFÄ-ð?ñ ?ô ?ñ ,ô ,ˆF•8˜JÑ'Ô'Ñ(ð Œ?ð 	õ .5Ô-@åÔ,ðð å.DØ $¤Àð/ñ /ô /ðñ ô ñô ð	ñ.ô .ˆF•8˜LÑ)Ô)Ñ*ð Œ<Ð#Ý*1Ô*=ð >ð >ØBFÄ,ð>ñ >ô >ñ +ô +ˆF•8˜IÑ&Ô&Ñ'ð Œ=Ð$Ý'1°$´-Ñ'@Ô'@ˆF•8˜FÑ#Ô#Ñ$Ø+/¬=ˆF•8˜JÑ'Ô'Ñ(àŒ>Ð%Ý,3Ô,?ð @ð @Ø?C¼~ð@ñ @ô @ñ -ô -ˆF•8˜KÑ(Ô(Ñ)ð ˆrA   ÚsignerÚvalidation_pathc                 óÞ  ‡
— | j         }|t          j        z  rt          d¦  «        ‚|t          j        z  r0| j        �)d„ | j        D ¦   «         }|j        |vrt          d¦  «        ‚|t          j        z  rZ| j	        �S|€t          d¦  «        ‚d„ | 
                    ¦   «         D ¦   «         }| j	        D ]}|j        |v r nŒt          d¦  «        ‚|t          j        z  r€| j        ryt          t          | j        ¦  «        ¦  «        }t          t          |j        ¦  «        ¦  «        Š
t!          ˆ
fd„|D ¦   «         ¦  «        st          d	| j        j        z   ¦  «        ‚|t          j        z  r~| j        �yd
dlm} | j        D ]Z}		  ||	                     ¦   «         |	                     ¦   «         d¬¦  «                             |¦  «          dS # t2          $ r Y ŒWw xY wt          d¦  «        ‚dS dS )aŒ  
        Evaluate whether a signing certificate satisfies the required
        constraints of this :class:`.SigCertConstraints` object.

        :param signer:
            The candidate signer's certificate.
        :param validation_path:
            Validation path of the signer's certificate.
        :raises UnacceptableSignerError:
            Raised if the conditions are not met.
        zRCertificate constraint flags include mandatory constraints that are not supported.Nc              3   ó$   K  — | ]}|j         V — Œd S rG   )Úissuer_serial©r~   Úss     rB   r   z2SigCertConstraints.satisfied_by.<locals>.<genexpr>Z  s$   è è € ÐAÐA¨a˜!œ/ÐAÐAÐAÐAÐAÐArA   z+Signer certificate not on SVCert whitelist.zValidation path not provided.c                 óP   — h | ]#}t          |t          ¦  «        ¯|j        j        ’Œ$S r@   )rL   r   Úcertificaterü   )r~   Ú	authoritys     rB   ú	<setcomp>z2SigCertConstraints.satisfied_by.<locals>.<setcomp>g  s?   € ð  ð  ð  àÝ˜iÕ):Ñ;Ô;ð ØÔ%Ô3ð ð  ð  rA   z<Signer certificate cannot be traced back to approved issuer.c              3   ó    •K  — | ]}|‰v V — Œ	d S rG   r@   )r~   rÐ   Úsubject_names     €rB   r   z2SigCertConstraints.satisfied_by.<locals>.<genexpr>€  s(   øè è € ÐIÐI°�t˜|Ð+ÐIÐIÐIÐIÐIÐIrA   zASubject does not have some of the following required attributes: r6   )ÚKeyUsageConstraintsT)r½   Úkey_usage_forbiddenÚmatch_all_key_usageszeThe signer satisfies none of the key usage extension profiles specified in the seed value dictionary.)r·   r'   rn   ÚNotImplementedErrorrg   r¸   rü   r   rh   rº   Úiter_authoritiesrj   r¹   Úlistr´   ÚsubjectÚallÚhuman_friendlyrl   r½   Úvalidation.settingsr  r“   r–   Úvalidater   )rI   rø   rù   r·   Ú
acceptableÚpath_iss_serialsÚissuerÚrequirement_listr  rÙ   r  s             @rB   Úsatisfied_byzSigCertConstraints.satisfied_by=  sŸ  ø€ ð$ ”
ˆØÕ)Ô5Ñ5ð 	Ý%ð*ñô ð ð
 Õ*Ô2Ñ2ð		àŒmÐ'ð BÐA°4´=ÐAÑAÔAˆJØÔ#¨:Ð5Ð5Ý-ØAñô ð ð Õ*Ô1Ñ1ð 	°t´|Ð7OØÐ&Ý-Ð.MÑNÔNÐNð ð  à!0×!AÒ!AÑ!CÔ!Cð ñ  ô  Ðð
 œ,ð ð �ØÔ'Ð+;Ð;Ð;Ø�Eð <õ .ðñô ð ð Õ*Ô5Ñ5ð 	¸4¼?ð 	õ  $Õ$:¸4¼?Ñ$KÔ$KÑLÔLÐÝÕ 6°v´~Ñ FÔ FÑGÔGˆLÝÐIÐIÐIÐIÐ8HÐIÑIÔIÑIÔIð Ý-ð#Ø%)¤_Ô%CñDñô ð ð
 Õ*Ô4Ñ4ð	àŒnÐ(Ø@Ð@Ð@Ð@Ð@Ð@à”nð ð �ð	Ø'Ð'Ø"$×"2Ò"2Ñ"4Ô"4Ø,.×,<Ò,<Ñ,>Ô,>à-1ð	ñ ô ÷
 ’h˜vÑ&Ô&Ð&Ø�E�EøÝ.ð ð ð Ø�Hðøøøõ .ðQñô ð ð#	ð 	à(Ð(s   ÆAGÇ
GÇG)r9   r:   r;   r<   r'   r·   Ú__annotations__r¸   r   r   r   rÄ   r¹   râ   rº   r»   rš   r   r¼   r   Ú
NameObjectr½   r)   r™   rè   r÷   r    r  r@   rA   rB   r(   r(   —  sk  € € € € € € ðð ð %;Ð$:¸1Ñ$=Ô$=€EÐ!Ð=Ð=Ñ=ðð 26€Hˆh�t˜DÔ,Ô-Ô.Ð5Ð5Ñ5ðð '+€J�˜œÔ#Ð*Ð*Ñ*ðð
 15€GˆX�d˜4Ô+Ô,Ô-Ð4Ð4Ñ4ðð #€Hˆh�sŒmÐ"Ð"Ñ"ðð $, 8¨JÑ#7Ô#7€HˆgÔ Ð7Ð7Ñ7ðð
 26€Iˆx˜˜_Ô-Ô.Ð5Ð5Ñ5ðð ð;ð ;ñ „[ð;ðz.ð .ð .ð`\àÔ ð\ð " .Ô1ð\ð \ð \ð \ð \ð \rA   r(   c                   óT   — e Zd ZdZ ed¦  «        Z ed¦  «        Z ed¦  «        ZdS )r+   z=
    Enum declaring all supported ``/SubFilter`` values.
    z/adbe.pkcs7.detachedz/ETSI.CAdES.detachedz/ETSI.RFC3161N)r9   r:   r;   r<   r   ÚADOBE_PKCS7_DETACHEDÚPADESÚETSI_RFC3161r@   rA   rB   r+   r+   œ  sJ   € € € € € ðð ð $˜8Ð$:Ñ;Ô;ÐØˆHÐ+Ñ,Ô,€EØ�8˜OÑ,Ô,€L€L€LrA   r+   c                   óT   — e Zd ZdZ ed¦  «        Z ed¦  «        Z ed¦  «        ZdS )ÚSigAuthTypezA
    Enum declaring all supported ``/Prop_AuthType`` values.
    ÚPINÚPasswordÚFingerprintN)r9   r:   r;   r<   r   r  ÚPASSWORDÚFINGERPRINTr@   rA   rB   r  r  §  sG   € € € € € ðð ð ˆ*�UÑ
Ô
€CØˆz˜*Ñ%Ô%€HØ�*˜]Ñ+Ô+€K€K€KrA   r  c                   ó"   — e Zd ZdZdZ	 dZ	 dZdS )r&   zU
    Specify the minimal compliance level for a seed value dictionary processor.
    r6   r7   r8   N)r9   r:   r;   r<   ÚPDF_1_5ÚPDF_1_7ÚPDF_2_0r@   rA   rB   r&   r&   ²  s=   € € € € € ðð ð €Gðð €Gðð €Gðð rA   r&   c                   óX   — e Zd ZdZ ed¦  «        Z	  ed¦  «        Z	  ed¦  «        ZdS )r%   zï
    Provides a recommendation to the signer as to whether the document should
    be locked after signing.
    The corresponding flag in :attr:`.SigSeedValueSpec.flags` determines whether
    this constraint is a required constraint.
    z/truez/falsez/autoN)r9   r:   r;   r<   r   ÚLOCKÚDO_NOT_LOCKÚSIGNER_DISCRETIONr@   rA   rB   r%   r%   È  s\   € € € € € ðð ð ˆ8�GÑÔ€Dðð �(˜8Ñ$Ô$€Kðð !˜ Ñ)Ô)Ððð rA   r%   c                   óÒ  — e Zd ZU dZ ed¦  «        Zeed<   	 dZee	e
                  ed<   	 dZee
         ed<   	 dZeed<   	 dZee         ed	<   	 dZee	e                  ed
<   	 dZee	e
                  ed<   	 dZee         ed<   	 dZee         ed<   	 dZeeedf         ed<   	 dZee	e
                  ed<   	 dZee         ed<   	 dZee
         ed<   	 d„ Zed„ ¦   «         Z d„ Z!dS )r-   z?
    Python representation of a PDF seed value dictionary.
    r   r·   NÚreasonsÚtimestamp_server_urlFÚtimestamp_requiredrÈ   Ú
subfiltersÚdigest_methodsÚadd_rev_infoÚseed_signature_typeÚsv_dict_versionÚlegal_attestationsÚlock_documentÚ
appearancec                 ó  — t           j        }t          j        t	          d¦  «        t	          d¦  «        t	          d¦  «        t          j        | j        j        ¦  «        i¦  «        }| j        �3t          j	        d„ | j        D ¦   «         ¦  «        |t	          d¦  «        <   | j
        �5t           j        }t          j        | j
        ¦  «        |t	          d¦  «        <   | j        �Ht           j        }t          j	        t          t          | j        ¦  «        ¦  «        |t	          d¦  «        <   | j        �3t          j	        d	„ | j        D ¦   «         ¦  «        |t	          d
¦  «        <   | j        �{t           j        }t          j        t	          d¦  «        t          | j        ¦  «        t	          d¦  «        t          j        | j        rdnd¦  «        i¦  «        |t	          d¦  «        <   | j        �)| j                             ¦   «         |t	          d¦  «        <   | j        �Z| j        j        }t          j        t	          d¦  «        t          j        |�|j        nd¦  «        i¦  «        |t	          d¦  «        <   | j        �3t          j	        d„ | j        D ¦   «         ¦  «        |t	          d¦  «        <   | j        �(t           j        }| j        j        |t	          d¦  «        <   | j        �$t          | j        ¦  «        |t	          d¦  «        <   | j        }|�At          j        t9          |t           ¦  «        r|j        n|¦  «        |t	          d¦  «        <   n)t          j        |j        ¦  «        |t	          d¦  «        <   |S )z™
        Render this :class:`.SigSeedValueSpec` object to a PDF dictionary.

        :return:
            A :class:`~.generic.DictionaryObject`.
        r¿   ú/SVrÁ   Nc              3   ó$   K  — | ]}|j         V — Œd S rG   )r©   )r~   Úsfs     rB   r   z1SigSeedValueSpec.as_pdf_object.<locals>.<genexpr>o  s=   è è € ð Að AØ�”ðAð Að Að Að Að ArA   ú
/SubFilterú/AddRevInfoú/DigestMethodc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rG   ©r   )r~   Úreasons     rB   r   z1SigSeedValueSpec.as_pdf_object.<locals>.<genexpr>}  s;   è è € ð ?ð ?Ø'-•
˜6Ñ"Ô"ð?ð ?ð ?ð ?ð ?ð ?rA   ú/ReasonsrÝ   r6   r   ú
/TimeStampú/Certú/Pú/MDPc              3   ó4   K  — | ]}t          |¦  «        V — Œd S rG   r>  )r~   Úatts     rB   r   z1SigSeedValueSpec.as_pdf_object.<locals>.<genexpr>–  sA   è è € ð Hð HØ$'•
˜3‘”ðHð Hð Hð Hð Hð HrA   ú/LegalAttestationú/LockDocumentú/AppearanceFilterú/V)r&   r#  r   rò   r   ró   r·   r©   r.  rô   r0  r$  ÚBooleanObjectr/  Úmapr   r+  r,  r-  rÈ   r÷   r1  rE   r3  r4  r%  r5  r2  rL   )rI   Úmin_versionrö   rE   Úspecified_versions        rB   r÷   zSigSeedValueSpec.as_pdf_object_  so  € õ +Ô2ˆÝÔ)å˜Ñ!Ô!¥8¨E¡?¤?Ý˜‘”¥Ô!5°d´jÔ6FÑ!GÔ!Gðñ
ô 
ˆð Œ?Ð&Ý-4Ô-@ð Að AØ#'¤?ðAñ Aô Añ .ô .ˆF•8˜LÑ)Ô)Ñ*ð ÔÐ(Ý.Ô6ˆKÝ.5Ô.CØÔ!ñ/ô /ˆF•8˜MÑ*Ô*Ñ+ð ÔÐ*Ý.Ô6ˆKÝ07Ô0CÝ•J Ô 3Ñ4Ô4ñ1ô 1ˆF•8˜OÑ,Ô,Ñ-ð Œ<Ð#Ý+2Ô+>ð ?ð ?Ø15´ð?ñ ?ô ?ñ ,ô ,ˆF•8˜JÑ'Ô'Ñ(ð Ô$Ð0Ý.Ô6ˆKÝ-4Ô-Eå˜VÑ$Ô$¥j°Ô1JÑ&KÔ&KÝ˜U‘O”O¥WÔ%9Ø!Ô4Ð;˜˜¸!ñ&ô &ðñ.ô .ˆF•8˜LÑ)Ô)Ñ*ð Œ9Ð Ø(,¬	×(?Ò(?Ñ(AÔ(AˆF•8˜GÑ$Ô$Ñ%ØÔ#Ð/ØÔ/Ô8ˆHÝ'.Ô'?å˜T‘N”N¥GÔ$8Ø*2Ð*>˜œ˜ÀAñ%ô %ðñ(ô (ˆF•8˜FÑ#Ô#Ñ$ð Ô"Ð.Ý4;Ô4Gð Hð HØ+/Ô+BðHñ Hô Hñ 5ô 5ˆF•8Ð/Ñ0Ô0Ñ1ð ÔÐ)Ý.Ô6ˆKØ04Ô0BÔ0HˆF•8˜OÑ,Ô,Ñ-ØŒ?Ð&Ý4>¸t¼Ñ4OÔ4OˆF•8Ð/Ñ0Ô0Ñ1à Ô0ÐØÐ(Ý%,Ô%9åÐ/Õ1EÑFÔFð'Ð!Ô'Ð'à&ñ&ô &ˆF•8˜D‘>”>Ñ"Ð"õ &-Ô%9¸+Ô:KÑ%LÔ%LˆF•8˜D‘>”>Ñ"ØˆrA   c                 óX  ‡— t          |t          j        ¦  «        r|                     ¦   «         }	 |d         dk    rt	          d¦  «        ‚n# t
          $ r Y nw xY wt          |                     dd¦  «        ¦  «        }	 |d         }|t          j        z  r|dk    rt          d|z  ¦  «        ‚n# t
          $ r Y nw xY w	 |d	         }t          j        j        }|t          j        z  r||k    rt          d
|z  ¦  «        ‚t          |¦  «        }n# t
          $ r d}Y nw xY w	 t          |d         ¦  «        }n# t
          $ r d}Y nw xY w|                     dd¦  «        Šd}‰�ˆfd„}t           |¦   «         ¦  «        }	 d„ |d         D ¦   «         }	n# t
          $ r d}	Y nw xY wt!          |dt          ¦  «        }
t!          |dt          ¦  «        }d„ }t!          |d|¦  «        }d„ }t!          |d|¦  «        }|                     dd¦  «        }|                     di ¦  «        }|                     dd¦  «        }t          |                     dd¦  «        ¦  «        }|                     dd¦  «        }|�t"                               |¦  «        } | ||
||||	|||||||¬¦  «        S )zÃ
        Read from a seed value dictionary.

        :param pdf_dict:
            A :class:`~.generic.DictionaryObject`.
        :return:
            A :class:`.SigSeedValueSpec` object.
        r¿   r7  zObject /Type entry is not /SVrÁ   r   z/Filterz/Adobe.PPKLitezVSignature handler '%s' is not available, only the default /Adobe.PPKLite is supported.rJ  z/Seed value dictionary version %s not supported.Nr;  r:  c               3   óZ   •K  — ‰D ]$} 	 t          | ¦  «        V — Œ# t          $ r Y Œ!w xY wd S rG   )r+   Ú
ValueError)rþ   Úsubfilter_reqss    €rB   Ú_subfiltersz5SigSeedValueSpec.from_pdf_object.<locals>._subfiltersÞ  s\   øè è € Ø'ð ð �AðÝ.¨qÑ1Ô1Ð1Ð1Ð1Ð1øÝ%ð ð ð Ø˜ðøøøðð s   ‰›
(§(c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r@   )Úlowerrý   s     rB   rÉ   z4SigSeedValueSpec.from_pdf_object.<locals>.<listcomp>è  s    € ÐKÐKÐK¨A˜aŸgšg™iœiÐKÐKÐKrA   r<  r@  rG  c                 ó¸   — 	 | d         }t          |dk    rd nt          |¦  «        ¦  «        S # t          t          t          f$ r t          d| › d�¦  «        ‚w xY w)NrC  r   z/MDP entry z5 in seed value dictionary is not correctly formatted.)rD   r$   rá   Ú	TypeErrorrQ  r   )Úmdprˆ   s     rB   Úread_mdp_dictz7SigSeedValueSpec.from_pdf_object.<locals>.read_mdp_dictï  sz   € ðØ˜$”i�Ý(°¸²°¨¨½wÀs¹|¼|ÑLÔLÐLøÝ�i­Ð4ð ð ð Ý"ð+ #ð +ð +ð +ñô ð ðøøøs	   ‚+. ®+ArD  c                 ód   — 	 t          | ¦  «        S # t          $ r t          d| › d�¦  «        ‚w xY w)Nz/LockDocument entry 'z' is invalid.)r%   rQ  r   rÚ   s    rB   Úread_lock_documentz<SigSeedValueSpec.from_pdf_object.<locals>.read_lock_documentû  sO   € ðOÝ'¨Ñ,Ô,Ð,øÝð Oð Oð OÝ"Ð#M¸3Ð#MÐ#MÐ#MÑNÔNÐNðOøøøs   ‚ ‘/rH  rI  rA  rÝ   rB  )r·   r+  r,  rÈ   r.  r/  r0  r-  r3  r1  r2  r4  r5  )rL   r   rß   rà   r   rá   r,   r­   r]   r   r&   r%  r©   r_   rT   r
  r   r(   rè   )r�   rä   r·   Ú
sig_filterrM  Ú	supportedr0  r.  rS  r/  r+  r3  rY  Úsignature_typer[  r4  Úappearance_filterÚtimestamp_dictr,  r-  Úcert_constraintsrR  s                        @rB   rè   z SigSeedValueSpec.from_pdf_objectª  s˜  ø€ õ �h¥Ô 6Ñ7Ô7ð 	-Ø×*Ò*Ñ,Ô,ˆHð	Ø˜Ô  EÒ)Ð)Ý"Ð#BÑCÔCÐCð *øåð 	ð 	ð 	ØˆDð	øøøõ   §¢¨U°AÑ 6Ô 6Ñ7Ô7ˆð
	Ø! )Ô,ˆJØ�Ô.Ñ.ð ØÐ.Ò.Ð.å"ð;Ø=GñHñô ð øøõ ð 	ð 	ð 	ØˆDð	øøøð
	Ø" 4œ.ˆKÝ,Ô4Ô:ˆIØ•Ô(Ñ(ð ¨[¸9Ò-DÐ-DÝ"ØEØ!ñ"ñô ð õ /¨{Ñ;Ô;ˆKˆKøÝð 	ð 	ð 	ØˆKˆKˆKð	øøøð	 Ý ¨Ô 7Ñ8Ô8ˆLˆLøÝð 	 ð 	 ð 	 ØˆLˆLˆLð	 øøøð "Ÿš l°DÑ9Ô9ˆØˆ
ØÐ%ðð ð ð ð õ ˜k˜k™mœmÑ,Ô,ˆJð	"ØKÐK°¸/Ô1JÐKÑKÔKˆNˆNøÝð 	"ð 	"ð 	"Ø!ˆNˆNˆNð	"øøøõ   ¨*µdÑ;Ô;ˆÝ*¨8Ð5HÍ$ÑOÔOÐð	ð 	ð 	õ ' x°¸ÑGÔGˆð	Oð 	Oð 	Oõ &Ø�oÐ'9ñ
ô 
ˆð %ŸLšLÐ)<¸dÑCÔCÐØ!Ÿš l°BÑ7Ô7ˆØ-×1Ò1°&¸$Ñ?Ô?ÐÝ! .×"4Ò"4°U¸AÑ">Ô">Ñ?Ô?ÐØ#Ÿ<š<¨°Ñ6Ô6ÐØÐ'Ý1×AÒAØ ñ ô  Ðð ˆsØØØ!5Ø!Ø!Ø)Ø%Ø1Ø1Ø .Ø'Ø'Ø(ð
ñ 
ô 
ð 	
sZ   ±A Á
AÁAÂ/B1 Â1
B>Â=B>ÃAD ÄD!Ä D!Ä%D; Ä;E
Å	E
ÆF ÆF&Æ%F&c                 ó@   — ddl m} | j        r || j        ¦  «        S dS )zè
        Return a timestamper object based on the :attr:`timestamp_server_url`
        attribute of this :class:`.SigSeedValueSpec` object.

        :return:
            A :class:`~.pyhanko.sign.timestamps.HTTPTimeStamper`.
        r   )ÚHTTPTimeStamperN)Úpyhanko.sign.timestampsrc  r,  )rI   rc  s     rB   Úbuild_timestamperz"SigSeedValueSpec.build_timestamper  s>   € ð 	<Ð;Ð;Ð;Ð;Ð;àÔ$ð 	>Ø"�? 4Ô#<Ñ=Ô=Ð=ð	>ð 	>rA   )"r9   r:   r;   r<   r,   r·   r  r+  r   r   rš   r,  r-  rT   rÈ   r(   r.  r+   r/  r0  r1  rD   r2  r   r&   r�   r3  r4  r%   r5  r÷   r™   rè   re  r@   rA   rB   r-   r-   ä  sì  € € € € € € ðð ð -˜_¨QÑ/Ô/€Eˆ?Ð/Ð/Ñ/ðð $(€GˆX�d˜3”iÔ Ð'Ð'Ñ'ðð +/Ð˜( 3œ-Ð.Ð.Ñ.ðð  %Ð˜Ð$Ð$Ñ$ðð
 *.€Dˆ(Ð%Ô
&Ð-Ð-Ñ-ðð 48€J�˜Ð.Ô/Ô0Ð7Ð7Ñ7ðð +/€N�H˜T #œYÔ'Ð.Ð.Ñ.ðð $(€L�(˜4”.Ð'Ð'Ñ'ð
ð 8<Ð˜Ð"3Ô4Ð;Ð;Ñ;ð	ð ?C€O�UÐ/°°dÐ:Ô;ÐBÐBÑBðð /3Ð˜  c¤Ô+Ð2Ð2Ñ2ðð& 15€M�8Ð,Ô-Ð4Ð4Ñ4ðð !%€J�˜”Ð$Ð$Ñ$ð
ðIð Ið IðV ðp
ð p
ñ „[ðp
ðd>ð >ð >ð >ð >rA   r-   c                   óX   — e Zd ZdZ ed¦  «        Z	  ed¦  «        Z	  ed¦  «        ZdS )r!   z9
    Marker for the scope of a ``/FieldMDP`` policy.
    z/Allz/Includez/ExcludeN)r9   r:   r;   r<   r   ÚALLÚINCLUDEÚEXCLUDEr@   rA   rB   r!   r!   +  s[   € € € € € ðð ð ˆ(�6Ñ
Ô
€Cðð ˆh�zÑ"Ô"€Gðð ˆh�zÑ"Ô"€Gðð rA   r!   c                   ó²   — e Zd ZU dZeed<   	 dZeee	                  ed<   	 de
j        fd„Zde
j        fd„Zde
j        fd„Zedd	„¦   «         Zd
e	defd„ZdS )r"   z‹``/FieldMDP`` policy description.

    This class models both field lock dictionaries and ``/FieldMDP``
    transformation parameters.
    ÚactionNÚfieldsrP   c                 óì   — t          j        t          d¦  «        | j        j        i¦  «        }| j        t
          j        k    r1t          j        t          t          | j
        pd¦  «        ¦  «        |d<   |S )z˜
        Render this ``/FieldMDP`` policy description as a PDF dictionary.

        :return:
            A :class:`~.generic.DictionaryObject`.
        ú/Actionr@   ú/Fields)r   rò   r   rk  r©   r!   rg  rô   rL  r   rl  rõ   s     rB   r÷   zFieldMDPSpec.as_pdf_objectT  sq   € õ Ô)å˜Ñ#Ô# T¤[Ô%6ðñ
ô 
ˆð
 Œ;�.Ô,Ò,Ð,Ý 'Ô 3Ý•J ¤Ð 1¨rÑ2Ô2ñ!ô !ˆF�9Ñð ˆrA   c                 óv   — |                       ¦   «         }t          d¦  «        |d<   t          d¦  «        |d<   |S )a"  
        Render this ``/FieldMDP`` policy description as a PDF dictionary,
        ready for inclusion into the ``/TransformParams`` entry of a
        ``/FieldMDP`` dictionary associated with a signature object.

        :return:
            A :class:`~.generic.DictionaryObject`.
        z/TransformParamsr¿   z/1.2rJ  ©r÷   r   rõ   s     rB   Úas_transform_paramsz FieldMDPSpec.as_transform_paramsf  s=   € ð ×#Ò#Ñ%Ô%ˆÝ"Ð#5Ñ6Ô6ˆˆw‰Ý Ñ'Ô'ˆˆt‰ØˆrA   c                 óR   — |                       ¦   «         }t          d¦  «        |d<   |S )zè
        Render this ``/FieldMDP`` policy description as a PDF dictionary,
        ready for inclusion into the ``/Lock`` dictionary of a signature field.

        :return:
            A :class:`~.generic.DictionaryObject`.
        z/SigFieldLockr¿   rq  rõ   s     rB   Úas_sig_field_lockzFieldMDPSpec.as_sig_field_locku  s+   € ð ×#Ò#Ñ%Ô%ˆÝ" ?Ñ3Ô3ˆˆw‰ØˆrA   c                 óö   — 	 t          |d         ¦  «        }n# t          $ r t          d¦  «        ‚w xY w|t           j        k    r'	 |d         }n# t          $ r t          d¦  «        ‚w xY wd} | ||¬¦  «        S )zØ
        Read a PDF dictionary into a :class:`.FieldMDPSpec` object.

        :param pdf_dict:
            A :class:`~.generic.DictionaryObject`.
        :return:
            A :class:`.FieldMDPSpec` object.
        rn  z/Action is required.ro  z,/Fields is required when /Action is not /AllN)rk  rl  )r!   rá   r   rg  )r�   rä   rk  rl  s       rB   rè   zFieldMDPSpec.from_pdf_object‚  s²   € ð	7Ý# H¨YÔ$7Ñ8Ô8ˆFˆFøÝð 	7ð 	7ð 	7ÝÐ5Ñ6Ô6Ð6ð	7øøøð •^Ô'Ò'Ð'ðØ! )Ô,��øÝð ð ð Ý"ØBñô ð ðøøøð
 ˆFØˆs˜&¨Ð0Ñ0Ô0Ð0s   ‚ ˜2ÁA ÁA)Ú
field_namec                 ó¼   — | j         t          j        k    rdS | j         t          j        k    }| j        pdD ]$}|                     |dz   ¦  «        s||k    r|c S Œ%| S )a   
        Adjudicate whether a field should be locked by the policy described by
        this :class:`.FieldMDPSpec` object.

        :param field_name:
            The name of a form field.
        :return:
            ``True`` if the field should be locked, ``False`` otherwise.
        Tr@   ú.)rk  r!   rg  rh  rl  Ú
startswith)rI   rv  Úlock_resultÚscoped_field_names       rB   Ú	is_lockedzFieldMDPSpec.is_lockedœ  s„   € ð Œ;�.Ô,Ò,Ð,Ø�4à”k¥^Ô%;Ò;ˆØ!%¤Ð!2°ð 	#ð 	#Ðð ×%Ò%Ð&7¸#Ñ&=Ñ>Ô>ð#àÐ!2Ò2Ð2à"Ð"Ð"Ð"ð 3ð ˆÐrA   )rP   r"   )r9   r:   r;   r<   r!   r  rl  r   r   rš   r   rò   r÷   rr  rt  r™   rè   rT   r|  r@   rA   rB   r"   r"   A  sï   € € € € € € ðð ð ÐÐÑðð #'€FˆH�T˜#”YÔÐ&Ð&Ñ&ðð
˜wÔ7ð ð ð ð ð$ WÔ%=ð ð ð ð ð 7Ô#;ð ð ð ð ð ð1ð 1ð 1ñ „[ð1ð2 Cð ¨Dð ð ð ð ð ð rA   r"   c                   óB   — e Zd ZU dZdZeed<   	 dZeed<   	 dZeed<   dS )r#   aÓ  
    Invisible signature widget generation settings.

    These settings exist because there is no real way of including an untagged
    invisible signature in a document that complies with the requirements
    of both PDF/A-2 (or -3) and PDF/UA-1.

    Compatibility with PDF/A (the default) requires the print flag to be set.
    Compatibility with PDF/UA requires the hidden flag to be set (which is
    banned in PDF/A) or the box to be outside the crop box.
    TÚset_print_flagFÚset_hidden_flagÚbox_out_of_boundsN)	r9   r:   r;   r<   r~  rT   r  r  r€  r@   rA   rB   r#   r#   ¶  sa   € € € € € € ð
ð 
ð  €N�DÐÐÑðð "€O�TÐ!Ð!Ñ!ðð $Ð�tÐ#Ð#Ñ#ðð rA   r#   c                   óB   — e Zd ZU dZdZeed<   	 dZeed<   	 dZeed<   dS )r/   zh
    .. versionadded:: 0.14.0

    Additional flags used when setting up visible signature widgets.
    TÚrotate_with_pageÚscale_with_page_zoomÚprint_signatureN)	r9   r:   r;   r<   r‚  rT   r  rƒ  r„  r@   rA   rB   r/   r/   Ú  sb   € € € € € € ðð ð "Ð�dÐ!Ð!Ñ!ðð "&Ð˜$Ð%Ð%Ñ%ðð !€O�TÐ Ð Ñ ðð rA   r/   c                   óR  — e Zd ZU dZeed<   	 dZeed<   	 dZe	e
eeeef                  ed<   	 dZe	e         ed<   	 dZe	e         ed<   	 dZe	e         ed	<   	 d
Zeed<   	 dZeed<   	  e¦   «         Zeed<   	 dZe	e         ed<   	  e¦   «         Zeed<   	 de	ej                 fd„ZdS )r*   z/Description of a signature field to be created.Úsig_field_namer   Úon_pageNÚboxÚseed_value_dictÚfield_mdp_specÚdoc_mdp_update_valueTÚcombine_annotationFÚempty_field_appearanceÚinvis_sig_settingsÚreadable_field_nameÚvisible_sig_settingsrP   c                 óš   — | j         €d S | j                              ¦   «         }| j        �!t          j        | j        j        ¦  «        |d<   |S )NrC  )rŠ  rt  r‹  r   ró   r©   rõ   s     rB   Úformat_lock_dictionaryz#SigFieldSpec.format_lock_dictionary[  sN   € ØÔÐ&Ø�4ØÔ$×6Ò6Ñ8Ô8ˆð Ô$Ð0Ý"Ô/°Ô0IÔ0OÑPÔPˆF�4‰LØˆrA   )r9   r:   r;   r<   rš   r  r‡  r�   rˆ  r   r
   r‰  r-   rŠ  r"   r‹  r$   rŒ  rT   r�  r#   rŽ  r�  r/   r�  r   rò   r’  r@   rA   rB   r*   r*   ý  sx  € € € € € € à9Ð9àÐÐÑðð €GˆSÐÐÑð	ð 04€Cˆ�%˜˜S # sÐ*Ô+Ô	,Ð3Ð3Ñ3ðð 37€O�XÐ.Ô/Ð6Ð6Ñ6ðð .2€N�H˜\Ô*Ð1Ð1Ñ1ðð /3Ð˜( 7Ô+Ð2Ð2Ñ2ðð  $Ð˜Ð#Ð#Ñ#ðð
 $)Ð˜DÐ(Ð(Ñ(ðð ,<Ð+;Ñ+=Ô+=ÐÐ(Ð=Ð=Ñ=ðð *.Ð˜ #œÐ-Ð-Ñ-ðð 0BÐ/AÑ/CÔ/CÐÐ,ÐCÐCÑCðð¨°Ô1IÔ(Jð ð ð ð ð ð rA   r*   Úwriterc                 óx  — |d         |dd …         }}|D ]N}t          |t          j        ¦  «        sJ ‚|                     ¦   «         }	|	                     dd ¦  «        |k    r nuŒO|�|s|}	nt          j        ¦   «         }	t          |¦  «        |	d<   |�||	d<   |                      |	¦  «        }|                     |¦  «         |  	                    |¦  «         d}|s||fS 	 |	d         }
n?# t          $ r2 t          j        ¦   «         x}
|	d<   |  	                    |	¦  «         d}Y nw xY wt          | |
||||¬¦  «        S )Nr   r6   ú/Tz/ParentTú/Kids)Ú
parent_refÚmodifiedÚ	field_obj)rL   r   rß   rà   r­   rò   r   Ú
add_objectÚappendÚupdate_containerrá   rô   Ú_insert_or_get_field_at)r“  rl  Úpathr—  r˜  r™  Úcurrent_partialÚtailÚ	field_refÚfieldÚkidss              rB   r�  r�  f  s•  € ð ! œG T¨!¨"¨"¤X�T€Oàð ð ˆ	Ý˜)¥WÔ%;Ñ<Ô<Ð<Ð<Ð<Ø×$Ò$Ñ&Ô&ˆØ�9Š9�T˜4Ñ Ô  OÒ3Ð3ØˆEð 4ð Ð ¨Ð ØˆEˆEõ Ô,Ñ.Ô.ˆEÝ  Ñ1Ô1ˆˆd‰ØÐ!Ø)ˆE�)ÑØ×%Ò% eÑ,Ô,ˆ	Ø�Š�iÑ Ô Ð Ø×Ò Ñ'Ô'Ð'Øˆàð #Ø˜Ð"Ð"ðØ�WŒ~ˆˆøÝð ð ð Ý 'Ô 3Ñ 5Ô 5Ð5ˆˆu�W‰~Ø×Ò Ñ&Ô&Ð&Øˆˆˆðøøøõ #ØØØØØØðñ ô ð s   ÃC( Ã(9D$Ä#D$Úlock_sig_flagsc                 ó<  — | j         d         }|rW|                     dd¦  «        }t          j        d¦  «        |d<   d|v }|r|d= |dk    s|r|                      |¦  «         dS dS |                     t          d¦  «        t          j        d¦  «        ¦  «         dS )a  
    Ensure the SigFlags setting is present in the AcroForm dictionary,
    and the /NeedAppearances setting is cleared if necessary.

    :param writer:
        A PDF writer.
    :param lock_sig_flags:
        Whether to flag the document as append-only.
    ú	/AcroFormz	/SigFlagsNr8   z/NeedAppearancesr6   )Úrootr­   r   ró   rœ  Ú
setdefaultr   )r“  r¤  ÚformÚorig_sig_flagsÚhas_need_appearancess        rB   r2   r2   ™  s¿   € ð Œ;�{Ô#€Dàð 	HØŸš +¨tÑ4Ô4ˆÝ#Ô0°Ñ3Ô3ˆˆ[ÑØ1°TÐ9ÐØð 	)ØÐ'Ð(Ø˜QÒÐÐ"6ÐØ×#Ò# DÑ)Ô)Ð)Ð)Ð)ð Ðð 	�Š� Ñ-Ô-­wÔ/CÀAÑ/FÔ/FÑGÔGÐGÐGÐGrA   Úupdate_writerc                 ó¸  — 	 |d         }	 |d         }n(# t           $ r t          j        ¦   «         x}|d<   Y nw xY wt          || t	          ¦   «         d¬¦  «        }d}	 t          |¦  «        \  }	}
}|
�t          d| z  ¦  «        ‚n$# t          $ r |rt          d| z  ¦  «        ‚Y nw xY wd}n–# t           $ r‰ |rt          d	¦  «        ‚t          j        ¦   «         }| 	                    |¦  «        |t          d¦  «        <   t          j        ¦   «         }||t          d¦  «        <   |                     ¦   «          d
}d}Y nw xY w|�d|fS |                     d¦  «        d         }d|i} |j        di |¤Ž t          | fi |¤Ž}t          |||                      d¦  «        |¬¦  «        \  }}|                     ||¦  «         |s|                     |¦  «         d
|fS )zÓ
    Returns a tuple of a boolean and a reference to a signature field.
    The boolean is ``True`` if the field was created, and ``False`` otherwise.

    .. danger::
        This function is internal API.
    r¦  ro  ú/Sig)Ú	with_nameÚ	refs_seenÚtarget_field_typeNz:Signature field with name %s appears to be filled already.z,No empty signature field with name %s found.Fz"This file does not contain a form.Tr   Úinclude_on_pagerx  )rž  r™  r@   )rá   r   rô   r   rs   Únextr   ÚStopIterationrò   rš  r   Úupdate_rootÚfind_page_for_modificationÚupdater.   r�  ÚsplitÚregister_widget_annotationrœ  )r†  r§  r¬  Úexisting_fields_onlyrç   r©  rl  Ú
candidatesÚsig_field_refrv  r©   Úform_createdÚpage_refÚsig_form_kwargsÚ	sig_fieldÚcreateds                   rB   r4   r4   ´  s”  € ð)Ø�KÔ ˆð	=Ø˜)”_ˆFˆFøÝð 	=ð 	=ð 	=Ý'.Ô':Ñ'<Ô'<Ð<ˆF�T˜)‘_�_�_ð	=øøøõ )ØØ$Ý‘e”eØ$ð	
ñ 
ô 
ˆ
ð ˆð	Ý/3°JÑ/?Ô/?Ñ,ˆJ˜˜}ØÐ Ý"ØPØ$ñ%ñô ð ð !øõ
 ð 	ð 	ð 	Ø#ð Ý"ØBØ$ñ%ñô ð ðð ð	øøøð ˆˆøÝð ð ð àð 	EÝÐCÑDÔDÐDåÔ'Ñ)Ô)ˆØ&3×&>Ò&>¸tÑ&DÔ&Dˆ�X�kÑ"Ô"Ñ#ÝÔ$Ñ&Ô&ˆØ$*ˆ�X�iÑ Ô Ñ!à×!Ò!Ñ#Ô#Ð#ØˆØˆˆˆðøøøð Ð Ø�mÐ#Ð#ð ×7Ò7¸Ñ:Ô:¸1Ô=€HØ(¨(Ð3€OØ€OÔÐ$Ð$˜VÐ$Ð$Ð$Ý" >ÐEÐE°_ÐEÐE€IÝ4ØØØ×!Ò! #Ñ&Ô&Øð	ñ ô Ñ€Gˆ]ð ×(Ò(¨¸ÑFÔFÐFð ð /Ø×&Ò& vÑ.Ô.Ð.Ø�ÐÐsQ   ‚B- ‹ “B- ”"9¶B- ¸9¹$B- Á'B ÂB- ÂB'Â$B- Â&B'Â'B- Â-BE Ä?E ÚhandlerÚfilled_statusr¯  c              #   ó¢   K  — 	 | j         d         d         }n# t          $ r Y dS w xY wt          |||t          ¦   «         d¬¦  «        E d{V —† dS )aâ  
    Enumerate signature fields.

    :param handler:
        The :class:`~.rw_common.PdfHandler` to operate on.
    :param filled_status:
        Optional boolean. If ``True`` (resp. ``False``) then all filled
        (resp. empty) fields are returned. If left ``None`` (the default), then
        all fields are returned.
    :param with_name:
        If not ``None``, only look for fields with the specified name.
    :return:
        A generator producing signature fields.
    r¦  ro  Nr®  )rÃ  r¯  r°  r±  )r§  rá   r   rs   )rÂ  rÃ  r¯  rl  s       rB   r3   r3     s”   è è € ð(Ø”˜kÔ*¨9Ô5ˆˆøÝð ð ð Øˆˆðøøøõ #ØØ#ØÝ‘%”%Ø ðñ ô ð ð ð ð ð ð ð ð ð s   „ ˜
&¥&Úpdf_outÚsig_field_specc                 óœ  — | j         }|                      |j        ¦  «        d         }t          |j        || d|j        ||j        |j        |j        ¬¦	  «	        \  }}t          | d¬¦  «         |st          d|j        z  ¦  «        ‚|                     ¦   «         }t          | ||¬¦  «         |j        ��|j        \  }}}	}
t          |	|z
  ¦  «        }t          |
|z
  ¦  «        }|rä|rät          j        ¦   «         x|j        t#          d¦  «        <   }|j        rVd	d
||fz  d||fz  dg}t'          d                     |¦  «        t+          ||¬¦  «        ¬¦  «                             ¦   «         }n2t'          dt+          ||¬¦  «        ¬¦  «                             ¦   «         }|                      |¦  «        |t#          d¦  «        <   dS dS dS dS )zè
    Append signature fields to a PDF file.

    :param pdf_out:
        Incremental writer to house the objects.
    :param sig_field_spec:
        A :class:`.SigFieldSpec` object describing the signature field
        to add.
    r   F)r¬  rº  rˆ  r²  rŒ  Úinvis_settingsÚvisible_settings)r“  r¤  z,Signature field with name %s already exists.)rÀ  rÆ  Nz/APó   qs$   q 0.95 0.95 0.95 rg 0 0 %g %g re f Qs   0.5 w 0 0 %g %g re Só   Qó    )ÚwidthÚheight)rˆ  rA   z/N)r§  r¶  r‡  r4   r†  rˆ  rŒ  rŽ  r�  r2   r   rà   r1   Úabsr   rò   Ú
annot_dictr   r�  r   r‚   r   Úas_form_xobjectrš  )rÅ  rÆ  r§  r¾  Úfield_createdr¼  rÀ  ÚllxÚllyÚurxÚuryÚwÚhÚap_dictÚappearance_cmdsÚ	ap_streams                   rB   r0   r0   '  s<  € ð Œ<€Dà×1Ò1°.Ô2HÑIÔIÈ!ÔL€HÝ#4ØÔ%ØØØ"ØÔØ Ø)Ô<Ø%Ô8Ø'Ô<ð
$ñ 
$ô 
$Ñ €M�=õ ˜G°EÐ:Ñ:Ô:Ð:Øð 
ÝØ:ØÔ+ñ,ñ
ô 
ð 	
ð
 ×(Ò(Ñ*Ô*€IÝ#Ø˜9°^ðñ ô ð ð ÔÑ%Ø+Ô/ÑˆˆS�#�sÝ��c‘	‰NŒNˆÝ��c‘	‰NŒNˆØð 	D�ð 	DåÔ(Ñ*Ô*ðˆIÔ ¥¨%¡¤Ñ1°Gð Ô4ð $ð à;¸qÀ!¸fÑDà+¨q°!¨fÑ4Øð#�õ 'Ø—I’I˜oÑ.Ô.Ý&¨Q°qÐ9Ñ9Ô9ðñ ô ÷ "’/Ñ#Ô#ð �	õ
 'Ø�^°!¸AÐ>Ñ>Ô>ðñ ô ç!’/Ñ#Ô#ð ð '.×&8Ò&8¸Ñ&CÔ&CˆG•H˜T‘N”NÑ#Ð#Ð#ð5 &Ð%ð	Dð 	Dð 	Dð 	DrA   rÀ  c                 ój  — |j         �)t          j        |j         ¦  «        |t          d¦  «        <   |j        �>|                      |j                             ¦   «         ¦  «        }||t          d¦  «        <   |                     ¦   «         }|�'|                      |¦  «        |t          d¦  «        <   dS dS )zT
    Internal function to apply field spec properties to a newly created field.
    Nz/TUr7  z/Lock)r�  r   ÚTextStringObjectr   r‰  rš  r÷   r’  )rÅ  rÀ  rÆ  Úsv_refÚlocks        rB   r1   r1   j  s¹   € ð Ô)Ð5Ý%,Ô%=ØÔ.ñ&
ô &
ˆ	•(˜5‘/”/Ñ"ð Ô%Ð1à×#Ò#ØÔ*×8Ò8Ñ:Ô:ñ
ô 
ˆð &,ˆ	•(˜5‘/”/Ñ"à×0Ò0Ñ2Ô2€DØÐØ'.×'9Ò'9¸$Ñ'?Ô'?ˆ	•(˜7Ñ#Ô#Ñ$Ð$Ð$ð ÐrA   c                   ód   ‡ — e Zd Zddd e¦   «          e¦   «         ddœdedefˆ fd„Zdefd„Zˆ xZS )	r.   NT)rˆ  r²  rŒ  rÈ  rÉ  Úannot_flagsrÈ  rÉ  c                ó.  •— |�Jd„ |D ¦   «         }t          |d         |d         z
  ¦  «        ot          |d         |d         z
  ¦  «         }	n%|j        rdnd}
t          j        |
¦  «        gdz  }d}	t	          ¦   «                              t          d	¦  «        t          d
¦  «        t          d¦  «        t          |¦  «        i¦  «         || _        |r| }nt          j	        ¦   «         }t          d¦  «        |d<   t          d¦  «        |d<   |€Ad}|	r|j
        r|dz  }|j        r|dz  }n$|j        r|dz  }|j        s|dz  }|j        s|dz  }t          j        |¦  «        |d<   t          j        |¦  «        |d<   || _        |�||d<   || _        d S )Nc                 óP   — g | ]#}t          j        t          |¦  «        ¦  «        ‘Œ$S r@   )r   ÚFloatObjectr   )r~   Úxs     rB   rÉ   z/SignatureFormField.__init__.<locals>.<listcomp>�  s)   € Ð<Ð<Ð<°1•GÔ'­¨1©¬Ñ.Ô.Ð<Ð<Ð<rA   r   r7   r6   r8   iñØÿÿrV   Tz/FTr®  r•  z/Annotr¿   z/Widgetz/Subtyper[   rW   rX   z/Fz/RectrC  )rÏ  r€  r   rä  ÚsuperrJ   r   r   rŒ  rò   r  r~  r„  rƒ  r‚  ró   rô   r¾  rÐ  )rI   rv  rˆ  r²  rŒ  rÈ  rÉ  rá  ÚrectÚ	invisibleÚcoordrÐ  Ú	__class__s               €rB   rJ   zSignatureFormField.__init__„  sá  ø€ ð ˆ?Ø<Ð<¸Ð<Ñ<Ô<ˆDÝ   Q¤¨#¨a¬&¡Ñ1Ô1ÐJµc¸#¸a¼&À3ÀqÄ6¹/Ñ6JÔ6JÐKˆIˆIà+Ô=ÐD�E�EÀ1ˆEÝÔ'¨Ñ.Ô.Ð/°!Ñ3ˆDØˆIå‰Œ×Òõ ˜‘”¥¨&Ñ!1Ô!1Ý˜‘”¥
¨:Ñ 6Ô 6ðñ	
ô 	
ð 	
ð #5ˆÔàð 	4ØˆJˆJå Ô1Ñ3Ô3ˆJõ ' xÑ0Ô0ˆ
�7ÑÝ!)¨)Ñ!4Ô!4ˆ
�:ÑàÐà$ˆKØð +Ø!Ô1ð (Ø 4Ñ'�KØ!Ô0ð )Ø 5Ñ(�Køà#Ô3ð )Ø 5Ñ(�KØ'Ô<ð *Ø 6Ñ)�KØ'Ô8ð +Ø 7Ñ*�Kå"Ô/°Ñ<Ô<ˆ
�4ÑÝ%Ô1°$Ñ7Ô7ˆ
�7Ñà'ˆŒØÐ&Ø.ˆJ�tÑà$ˆŒˆˆrA   r“  c                 ó¸   — | j         }| j        s.|                     |¦  «        }t          j        |g¦  «        | d<   n|}|                     | j        |¦  «         d S )Nr–  )rÐ  rŒ  rš  r   rô   Úregister_annotationr¾  )rI   r“  r¼  rÐ  Ú	annot_refs        rB   r¹  z-SignatureFormField.register_widget_annotationÃ  sd   € ð ”_ˆ
ØÔ&ð 	&Ø×)Ò)¨*Ñ5Ô5ˆIÝ#Ô/°°Ñ<Ô<ˆD�‰MˆMà%ˆIØ×"Ò" 4¤=°)Ñ<Ô<Ð<Ð<Ð<rA   )	r9   r:   r;   r#   r/   rJ   r   r¹  Ú__classcell__)rê  s   @rB   r.   r.   ƒ  sž   ø€ € € € € ð
 ØØØ+;Ð+;Ñ+=Ô+=Ø/AÐ/AÑ/CÔ/CØð=%ð =%ð =%ð )ð=%ð -ð=%ð =%ð =%ð =%ð =%ð =%ð~	=Ø'ð	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=rA   r.   )F)NFN)Tr˜   )Sr<   ÚloggingÚdataclassesr   Úenumr   r   r   Útypingr   r   r	   r
   r   Ú
asn1cryptor   Úasn1crypto.x509r   Úpyhanko.pdf_utilsr   Úpyhanko.pdf_utils.contentr   Úpyhanko.pdf_utils.form_toolsr   Úpyhanko.pdf_utils.genericr   r   Úpyhanko.pdf_utils.layoutr   Úpyhanko.pdf_utils.miscr   r   r   r   r   Úpyhanko.pdf_utils.rw_commonr   Úpyhanko.pdf_utils.writerr   Úpyhanko.sign.generalr   r   Úpyhanko_certvalidator.authorityr   Úpyhanko_certvalidator.errorsr   Úpyhanko_certvalidator.pathr    Ú__all__Ú	getLoggerr9   Úloggerr$   rD   r,   r'   r)   r¬   rÓ   rÎ   râ   r´   r(   r+   r  r&   r%   r-   r!   r"   r#   r/   r*   r�  rT   r2   r4   rš   r3   r0   rò   r1   r.   r@   rA   rB   ú<module>r     sO  ððð ð €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4à Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø <Ð <Ð <Ð <Ð <Ð <Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ =Ð =Ð =Ð =Ð =Ð =Ø @Ð @Ð @Ð @Ð @Ð @Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð €ð. 
ˆÔ	˜8Ñ	$Ô	$€ðð ð ð ð ˆkñ ô ð ð<)ð )ð )ð )ð )ñ )ô )ð )ð8Kð Kð Kð Kð K�dñ Kô Kð Kð\5ð 5ð 5ð 5ð 5˜Tñ 5ô 5ð 5ðpy
ð y
ð y
ð y
ð y
ñ y
ô y
ð y
ðz ØØØØØØðð Ð ð EÐDÐ*;×*AÒ*AÑ*CÔ*CÐDÑDÔDÐ ð$ð $ ¤ð $ð $ð $ð $ð" €�$ÐÑÔðAð Að Að Að Añ Aô Añ ÔðAðH ð-ð -ð -ð -ð -�tñ -ô -ñ „ð-ð ð,ð ,ð ,ð ,ð ,�$ñ ,ô ,ñ „ð,ð ðð ð ð ð ˜;ñ ô ñ „ðð* ðð ð ð ð �tñ ô ñ „ðð6 €�$ÐÑÔðC>ð C>ð C>ð C>ð C>ñ C>ô C>ñ ÔðC>ðL
ð ð ð ð �Tñ ô ð ð, €�$ÐÑÔðqð qð qð qð qñ qô qñ Ôðqðh €�$ÐÑÔð ð  ð  ð  ð  ñ  ô  ñ Ôð ðF €�$ÐÑÔðð ð ð ð ñ ô ñ ÔððD €�$ÐÑÔðeð eð eð eð eñ eô eñ ÔðeðX ØØð0ð 0Øð0ð 0ð 0ð 0ðfHð HÐ.ð HÀð Hð Hð Hð Hð> ð	Nð Nð %ðNð Nð Nð Nðf %)Ø#ðð Øðà˜D”>ðð ˜Œ}ðð ð ð ðD@DØð@DØ0<ð@Dð @Dð @Dð @DðF@Øð@àÔ'ð@ð !ð@ð @ð @ð @ð2I=ð I=ð I=ð I=ð I=˜Ô1ñ I=ô I=ð I=ð I=ð I=rA   