§
    HºiA.  ã                   ób  — d Z ddlZddlZddlmZmZmZmZ ddlZ	ddl
Z	ddlZ	ddlZ	ddlZ	ddlZ	ddlZ	ddlZ	 G d„ de	j        j        ¦  «        Ze	j        j        Ze	j        j        Ze	j        j        Ze	j        j        Ze	j        j        Ze	j        j        Z G d„ de	j        j        ¦  «        ZdS )zDNS Versioned Zones.é    N)ÚCallableÚDequeÚSetÚcastc                   ó   — e Zd ZdZdS )ÚUseTransactionz-To alter a versioned zone, use a transaction.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úR/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/versioned.pyr   r      s   € € € € € Ø7Ð7Ð7Ð7r   r   c                   ó   ‡ — e Zd ZU g d¢ZeZeg ej        j        f         e	d<   ej
        j        ddfdej        j        ez  dz  dej
        j        deded egedz  f         dz  fˆ fd	„Z	 d(d
edz  dedz  defd„Zd)dedefd„Zd„ Zd„ Zd„ Zdedz  ddfd„Zded egedz  f         dz  ddfd„Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!	 d)dej        j        ez  dedej        j        fˆ fd „Z"dej        j        ez  ddfd!„Z#ej$        j%        dfdej        j        ez  d"ej$        j&        ez  d#ej$        j&        ez  dedej'        j(        f
ˆ fd$„Z)ej$        j%        dfdej        j        ez  d"ej$        j&        ez  d#ej$        j&        ez  dedej'        j(        dz  f
ˆ fd%„Z*ej$        j%        fdej        j        ez  d"ej$        j&        ez  d#ej$        j&        ez  ddfd&„Z+dej        j        ez  dej'        j(        ddfd'„Z,ˆ xZ-S )*ÚZone)Ú	_versionsÚ_versions_lockÚ
_write_txnÚ_write_waitersÚ_write_eventÚ_pruning_policyÚ_readersÚnode_factoryTNÚoriginÚrdclassÚ
relativizeÚpruning_policyc                 ó˜  •— t          ¦   «                              |||¦  «         t          j        ¦   «         | _        t          j        ¦   «         | _        |€| j        | _	        n|| _	        d| _
        d| _        t          j        ¦   «         | _        t          ¦   «         | _        |                      dt!          | d¬¦  «        |¦  «         dS )aÂ  Initialize a versioned zone object.

        *origin* is the origin of the zone.  It may be a ``dns.name.Name``,
        a ``str``, or ``None``.  If ``None``, then the zone's origin will
        be set by the first ``$ORIGIN`` line in a zone file.

        *rdclass*, an ``int``, the zone's rdata class; the default is class IN.

        *relativize*, a ``bool``, determine's whether domain names are
        relativized to the zone's origin.  The default is ``True``.

        *pruning policy*, a function taking a ``Zone`` and a ``Version`` and returning
        a ``bool``, or ``None``.  Should the version be pruned?  If ``None``,
        the default policy, which retains one version is used.
        NT)Úreplacement)ÚsuperÚ__init__ÚcollectionsÚdequer   Ú	threadingÚLockÚ_version_lockÚ_default_pruning_policyr   r   r   r   Úsetr   Ú_commit_version_unlockedÚWritableVersion)Úselfr   r   r   r   Ú	__class__s        €r   r!   zZone.__init__-   s¾   ø€ õ, 	‰Œ×Ò˜ ¨*Ñ5Ô5Ð5Ý)4Ô):Ñ)<Ô)<ˆŒÝ&œ^Ñ-Ô-ˆÔØÐ!Ø#'Ô#?ˆDÔ Ð à#1ˆDÔ Ø.2ˆŒØ48ˆÔÝ6AÔ6GÑ6IÔ6IˆÔÝ*-©%¬%ˆŒØ×%Ò%Ø•/ $°DÐ9Ñ9Ô9¸6ñ	
ô 	
ð 	
ð 	
ð 	
r   ÚidÚserialÚreturnc                 ó  — |�|�t          d¦  «        ‚| j        5  |�:d }t          | j        ¦  «        D ]}|j        |k    r|} nŒ|€t          d¦  «        ‚nì|�Ý| j        rt          j        j	        }n| j
        €J ‚| j
        }d }t          | j        ¦  «        D ]‹}|j                             |¦  «        }|rm|                     | j        t          j        j        ¦  «        }|€ŒKt#          t          j        j        j        j        |d         ¦  «        }|r|j        |k    r|} nŒŒ|€t          d¦  «        ‚n| j        d         }t+          | d|¦  «        }	| j                             |	¦  «         |	cd d d ¦  «         S # 1 swxY w Y   d S )Nz!cannot specify both id and serialzversion not foundr   zserial not foundéÿÿÿÿF)Ú
ValueErrorr&   Úreversedr   r-   ÚKeyErrorr   ÚdnsÚnameÚemptyr   ÚnodesÚgetÚget_rdatasetr   Ú	rdatatypeÚSOAr   ÚrdtypesÚANYr.   ÚTransactionr   Úadd)
r+   r-   r.   ÚversionÚvÚonameÚnÚrdsÚsoaÚtxns
             r   ÚreaderzZone.readerR   sû  € ð ˆ>˜fÐ0ÝÐ@ÑAÔAÐAØÔð  	ð  	Øˆ~Ø�Ý! $¤.Ñ1Ô1ð ð �AØ”t˜r’z�zØ"#˜Ø˜ð "ð �?Ý"Ð#6Ñ7Ô7Ð7ð #àÐ#Ø”?ð (ÝœHœN�E�Eàœ;Ð2Ð2Ð2Ø œK�EØ�Ý! $¤.Ñ1Ô1ð 	"ð 	"�AØœŸš EÑ*Ô*�AØð "ØŸnšn¨T¬\½3¼=Ô;LÑMÔM˜Ø˜;Ø$Ý"¥3¤;¤?Ô#6Ô#:¸CÀ¼FÑCÔC˜Øð " 3¤:°Ò#7Ð#7Ø&'˜GØ!˜EøØ�?Ý"Ð#5Ñ6Ô6Ð6ð #ð œ.¨Ô,�Ý˜d E¨7Ñ3Ô3ˆCØŒM×Ò˜cÑ"Ô"Ð"ØðA 	ð  	ð  	ð  	ñ  	ô  	ð  	ð  	ð  	ð  	ð  	ð  	øøøð  	ð  	ð  	ð  	ð  	ð  	s   ›EE=Å=FÆFFr   c                 ó„  — d }	 | j         5  | j        €6|| j        k    r+t          | |d¬¦  «        | _        d | _        	 d d d ¦  «         nYt	          j        ¦   «         }| j                             |¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «          Œž| j         	                    ¦   «          | j        S )NT)Úmake_immutable)
r&   r   r   r?   r$   ÚEventr   ÚappendÚwaitÚ_setup_version)r+   r   Úevents      r   ÚwriterzZone.writery   s+  € Øˆð*	ØÔ#ð 2ð 2ð
 ”?Ð*¨u¸Ô8IÒ/IÐ/Iõ '2Ø˜k¸$ð'ñ 'ô '�D”Oð )-�DÔ%Øð!2ð 2ð 2ñ 2ô 2ð 2ð 2õ( "œÑ)Ô)�ØÔ#×*Ò*¨5Ñ1Ô1Ð1ð+2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ðR �JŠJ‰LŒLˆLðU*	ðX 	Œ×&Ò&Ñ(Ô(Ð(ØŒÐs   ‹2BÁ	-BÂBÂ	Bc                 ó¨   — t          | j        ¦  «        dk    r9| j                             ¦   «         | _        | j                             ¦   «          d S d S )Nr   )Úlenr   Úpopleftr   r(   )r+   s    r   Ú!_maybe_wakeup_one_waiter_unlockedz&Zone._maybe_wakeup_one_waiter_unlockedª   sR   € ÝˆtÔ"Ñ#Ô# aÒ'Ð'Ø $Ô 3× ;Ò ;Ñ =Ô =ˆDÔØÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#ð (Ð'r   c                 ó   — dS )NTr   )r+   ÚzonerA   s      r   r'   zZone._default_pruning_policy°   s   € Øˆtr   c                 óæ  — t          | j        ¦  «        dk    sJ ‚t          | j        ¦  «        dk    rt          d„ | j        D ¦   «         ¦  «        }n| j        d         j        }| j        d         j        |k     rs|                      | | j        d         ¦  «        rV| j                             ¦   «          | j        d         j        |k     r%|                      | | j        d         ¦  «        °Pd S d S d S d S )Nr   c              3   ó.   K  — | ]}|j         j        V — Œd S ©N)rA   r-   )Ú.0rG   s     r   ú	<genexpr>z0Zone._prune_versions_unlocked.<locals>.<genexpr>¿   s&   è è € ÐEÐE°˜Sœ[œ^ÐEÐEÐEÐEÐEÐEr   r1   )rR   r   r   Úminr-   r   rS   )r+   Ú
least_kepts     r   Ú_prune_versions_unlockedzZone._prune_versions_unlockedµ   sÿ   € Ý�4”>Ñ"Ô" QÒ&Ð&Ð&Ð&õ ˆtŒ}ÑÔ Ò!Ð!ÝÐEÐE°t´}ÐEÑEÔEÑEÔEˆJˆJàœ¨Ô+Ô.ˆJØŒn˜QÔÔ" ZÒ/Ð/°D×4HÒ4HØ�$”. Ô#ñ5
ô 5
Ð/ð ŒN×"Ò"Ñ$Ô$Ð$ð Œn˜QÔÔ" ZÒ/Ð/°D×4HÒ4HØ�$”. Ô#ñ5
ô 5
Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   Úmax_versionsc                 óv   ‡— ‰�‰dk     rt          d¦  «        ‚‰€d„ }nˆfd„}|                      |¦  «         dS )zYSet a pruning policy that retains up to the specified number
        of versions
        Né   zmax versions must be at least 1c                 ó   — dS )NFr   )rV   Ú_s     r   Úpolicyz%Zone.set_max_versions.<locals>.policyÏ   s   € Ø�ur   c                 ó4   •— t          | j        ¦  «        ‰k    S rY   )rR   r   )rV   rc   r_   s     €r   rd   z%Zone.set_max_versions.<locals>.policyÔ   s   ø€ Ý˜4œ>Ñ*Ô*¨\Ò9Ð9r   )r2   Úset_pruning_policy)r+   r_   rd   s    ` r   Úset_max_versionszZone.set_max_versionsÇ   ss   ø€ ð Ð#¨°qÒ(8Ð(8ÝÐ>Ñ?Ô?Ð?ØÐðð ð ð ð
:ð :ð :ð :ð :ð 	×Ò Ñ'Ô'Ð'Ð'Ð'r   rd   c                 óŽ   — |€| j         }| j        5  || _        |                      ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )aã  Set the pruning policy for the zone.

        The *policy* function takes a `Version` and returns `True` if
        the version should be pruned, and `False` otherwise.  `None`
        may also be specified for policy, in which case the default policy
        is used.

        Pruning checking proceeds from the least version and the first
        time the function returns `False`, the checking stops.  I.e. the
        retained versions are always a consecutive sequence.
        N)r'   r&   r   r^   )r+   rd   s     r   rf   zZone.set_pruning_policyÙ   s˜   € ð ˆ>ØÔ1ˆFØÔð 	,ð 	,Ø#)ˆDÔ Ø×)Ò)Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s   ‘:º>Á>c                 ó¢   — | j         5  | j                             |¦  «         |                      ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S rY   )r&   r   Úremover^   ©r+   rG   s     r   Ú	_end_readzZone._end_readí   s—   € ØÔð 	,ð 	,ØŒM× Ò  Ñ%Ô%Ð%Ø×)Ò)Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s   ˆ/AÁAÁAc                 óV   — | j         |k    sJ ‚d | _         |                      ¦   «          d S rY   )r   rT   rk   s     r   Ú_end_write_unlockedzZone._end_write_unlockedò   s4   € ØŒ #Ò%Ð%Ð%Ð%ØˆŒØ×.Ò.Ñ0Ô0Ð0Ð0Ð0r   c                 óp   — | j         5  |                      |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rY   )r&   rn   rk   s     r   Ú
_end_writezZone._end_write÷   sƒ   € ØÔð 	*ð 	*Ø×$Ò$ SÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   ˆ+«/²/c                 óÈ   — | j                              |¦  «         |                      ¦   «          |j        | _        | j        €|| _        |�|                      |¦  «         d S d S rY   )r   rL   r^   r8   r   rn   ©r+   rG   rA   r   s       r   r)   zZone._commit_version_unlockedû   sh   € ØŒ×Ò˜gÑ&Ô&Ð&Ø×%Ò%Ñ'Ô'Ð'Ø”]ˆŒ
ØŒ;ÐØ ˆDŒKàˆ?Ø×$Ò$ SÑ)Ô)Ð)Ð)Ð)ð ˆ?r   c                 ót   — | j         5  |                      |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rY   )r&   r)   rr   s       r   Ú_commit_versionzZone._commit_version  s›   € ØÔð 	@ð 	@Ø×)Ò)¨#¨w¸Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s   ˆ-­1´1c                 óf   — t          | j        ¦  «        dk    r| j        d         j        dz   }nd}|S )Nr   r1   ra   )rR   r   r-   )r+   r-   s     r   Ú_get_next_version_idzZone._get_next_version_id	  s7   € ÝˆtŒ~ÑÔ Ò"Ð"Ø” Ô#Ô&¨Ñ*ˆBˆBàˆBØˆ	r   r6   Úcreatec                 óX   •— |rt           ‚t          ¦   «                              |¦  «        S rY   )r   r    Ú	find_node)r+   r6   rw   r,   s      €r   ry   zZone.find_node  s+   ø€ ð ð 	!Ý Ð Ý‰wŒw× Ò  Ñ&Ô&Ð&r   c                 ó   — t           ‚rY   ©r   )r+   r6   s     r   Údelete_nodezZone.delete_node  s   € ÝÐr   ÚrdtypeÚcoversc                 óš   •— |rt           ‚t          ¦   «                              |||¦  «        }t          j                             |¦  «        S rY   )r   r    Úfind_rdatasetr5   ÚrdatasetÚImmutableRdataset©r+   r6   r}   r~   rw   r�   r,   s         €r   r€   zZone.find_rdataset  sD   ø€ ð ð 	!Ý Ð Ý‘7”7×(Ò(¨¨v°vÑ>Ô>ˆÝŒ|×-Ò-¨hÑ7Ô7Ð7r   c                 ó¢   •— |rt           ‚t          ¦   «                              |||¦  «        }|�t          j                             |¦  «        S d S rY   )r   r    r:   r5   r�   r‚   rƒ   s         €r   r:   zZone.get_rdataset&  sO   ø€ ð ð 	!Ý Ð Ý‘7”7×'Ò'¨¨f°fÑ=Ô=ˆØÐÝ”<×1Ò1°(Ñ;Ô;Ð;à�4r   c                 ó   — t           ‚rY   r{   )r+   r6   r}   r~   s       r   Údelete_rdatasetzZone.delete_rdataset5  s
   € õ Ðr   c                 ó   — t           ‚rY   r{   )r+   r6   r   s      r   Úreplace_rdatasetzZone.replace_rdataset=  s
   € õ Ðr   )NN)F).r	   r
   r   Ú	__slots__ÚNoder   r   r5   ÚnodeÚ__annotations__Ú
rdataclassÚINr6   ÚNameÚstrÚ
RdataClassÚboolÚVersionr!   Úintr?   rH   rP   rT   r'   r^   rg   rf   rl   rn   rp   r)   rt   rv   ry   r|   r;   ÚNONEÚ	RdataTyper�   ÚRdatasetr€   r:   r†   rˆ   Ú__classcell__)r,   s   @r   r   r       sK  ø€ € € € € € ðð ð €Ið 15€L�(˜2˜sœxœ}Ð,Ô-Ð4Ð4Ñ4ð
 .1¬^Ô->ØØJNð#
ð #
à”” Ñ# dÑ*ð#
ð ”Ô*ð#
ð ð	#
ð
 ! &¨'Ð!2°D¸4±KÐ!?Ô@À4ÑGð#
ð #
ð #
ð #
ð #
ð #
ðL ;?ð%ð %Ø˜‘*ð%Ø-0°4©Zð%à	ð%ð %ð %ð %ðN/ð / $ð /°;ð /ð /ð /ð /ðb$ð $ð $ðð ð ð
%ð %ð %ð$(¨S°4©Zð (¸Dð (ð (ð (ð (ð$,Ø ¨Ð0°$¸±+Ð=Ô>ÀÑEð,à	ð,ð ,ð ,ð ,ð(,ð ,ð ,ð
1ð 1ð 1ð
*ð *ð *ð*ð *ð *ð@ð @ð @ðð ð ð 9>ð'ð 'Ø”H”M CÑ'ð'Ø15ð'à	ŒŒð'ð 'ð 'ð 'ð 'ð 'ð ¤¤°Ñ 3ð ¸ð ð ð ð ð 14´Ô0BØð
8ð 
8àŒhŒm˜cÑ!ð
8ð ”Ô'¨#Ñ-ð
8ð ”Ô'¨#Ñ-ð	
8ð
 ð
8ð 
ŒÔ	ð
8ð 
8ð 
8ð 
8ð 
8ð 
8ð  14´Ô0BØðð àŒhŒm˜cÑ!ðð ”Ô'¨#Ñ-ðð ”Ô'¨#Ñ-ð	ð
 ðð 
ŒÔ	 Ñ	%ðð ð ð ð ð ð& 14´Ô0Bð	ð àŒhŒm˜cÑ!ðð ”Ô'¨#Ñ-ðð ”Ô'¨#Ñ-ð	ð
 
ðð ð ð ðØ”H”M CÑ'ðØ69´lÔ6Kðà	ðð ð ð ð ð ð ð r   r   )r   r"   r$   Útypingr   r   r   r   Údns.exceptionr5   Údns.nameÚdns.nodeÚdns.rdataclassÚdns.rdatasetÚdns.rdatatypeÚdns.rdtypes.ANY.SOAÚdns.zoneÚ	exceptionÚDNSExceptionr   rV   ÚVersionedNoderŠ   ÚImmutableVersionedNodeÚImmutableNoder“   r*   ÚImmutableVersionr?   r   r   r   r   ú<module>r¨      sP  ðð Ð à Ð Ð Ð Ø Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -à Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€ð8ð 8ð 8ð 8ð 8�S”]Ô/ñ 8ô 8ð 8ð
 „xÔ€Ø”Ô/€Ø
Œ(Ô
€Ø”(Ô*€Ø”8Ô,Ð ØŒhÔ"€ð`ð `ð `ð `ð `ˆ3Œ8Œ=ñ `ô `ð `ð `ð `r   