§
    Hºieo  ã                   óX  — d Z ddlZddlZddlmZmZ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ddlZddlZddlZddlZ G d„ dej        j        ¦  «        Z G d„ dej        j        ¦  «        Zd„ Zeej        j        ej        j        dz  ej        j        dz  edz  e e!e e!f         Z"d	„ Z# G d
„ d¦  «        Z$ G d„ dej%        j&        ¦  «        Z' G d„ dej%        j(        ¦  «        Z)ddej*        j+        ej*        j+        dddej        j,        df	dedej        j        e-z  dz  de dz  dej*        j.        e-z  dz  dej*        j.        e-z  dej/        j0        e-z  dz  de e-z  dz  dej        j1        dz  dej        j        e-z  dz  de!deej2        j3                 fd„Z4dS )z
DNS Zones.é    N)ÚAnyÚIterableÚListÚSetÚTupleÚcastc                   ó   — e Zd ZdZdS )ÚUnknownOriginzUnknown originN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úQ/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/zonefile.pyr
   r
   &   s   € € € € € ØÐÐÐr   r
   c                   ó   — e Zd ZdZdS )ÚCNAMEAndOtherDataz!A node has a CNAME and other dataNr   r   r   r   r   r   *   s   € € € € € Ø+Ð+Ð+Ð+r   r   c                 ó¸  — t           j        j                             |¦  «        }|                      |¦  «        }|€d S |                     ¦   «         }|t           j        j        j        k    r)|t           j        j        j        k    rt          d¦  «        ‚|t           j        j        j        k    r)|t           j        j        j        k    rt          d¦  «        ‚d S d S )Nz1rdataset type is not compatible with a CNAME nodez9CNAME rdataset is not compatible with a regular data node)	ÚdnsÚnodeÚNodeKindÚclassify_rdatasetÚget_nodeÚclassifyÚCNAMEÚREGULARr   )ÚtxnÚnameÚrdatasetÚrdataset_kindr   Ú	node_kinds         r   Ú_check_cname_and_other_datar#   .   sÀ   € Ý”HÔ%×7Ò7¸ÑAÔA€MØ�<Š<˜ÑÔ€DØ€|àˆØ—’‘”€Ià•S”XÔ&Ô,Ò,Ð,Ø�SœXÔ.Ô6Ò6Ð6åÐ SÑTÔTÐTà•S”XÔ&Ô.Ò.Ð.Ø�SœXÔ.Ô4Ò4Ð4åØGñ
ô 
ð 	
ð 	/Ð.Ø4Ð4r   c                 ób   — |                       ¦   «         } |                      d¦  «        sd| z   } | S )Nú$)ÚupperÚ
startswith)Úss    r   Ú_upper_dollarizer)   Q   s1   € Ø	�Š‰	Œ	€AØ�<Š<˜ÑÔð Ø�!‰GˆØ€Hr   c                   ó@  — e Zd ZdZ	 	 	 	 	 	 	 ddej        j        dej        j        dej	        j
        ded	eee         z  d
ej        j        dz  dedz  dej        j        dz  dej        j        dz  dedz  fd„Zd„ Zd„ Zd„ Zdedeeeeeef         fd„Zd„ Zdd„ZdS )ÚReaderz(Read a DNS zone file into a transaction.FTNÚtokÚrdclassr   Úallow_includeÚallow_directivesÚ
force_nameÚ	force_ttlÚforce_rdclassÚforce_rdtypeÚdefault_ttlc                 óf  — || _         |j                             ¦   «         \  | _        | _        }| j        | _        d| _        d| _        |�|}
|
€d| _        d| _	        n|
| _        d| _	        | j        | _
        || _        || _        g | _        d | _        |  |du r&h d£| _        |r| j                             d¦  «         n6|du rt#          ¦   «         | _        nt#          d„ |D ¦   «         ¦  «        | _        || _        || _        || _        |	| _        | j                             t.          ¦  «         d S )Nr   FT>   ú$TTLú$ORIGINú	$GENERATEú$INCLUDEc              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N)r)   )Ú.0Úds     r   ú	<genexpr>z"Reader.__init__.<locals>.<genexpr>†   s+   è è € Ð)XÐ)XÀ!Õ*:¸1Ñ*=Ô*=Ð)XÐ)XÐ)XÐ)XÐ)XÐ)Xr   )r,   ÚmanagerÚorigin_informationÚzone_originÚ
relativizeÚcurrent_originÚlast_ttlÚlast_ttl_knownr4   Údefault_ttl_knownÚ	last_nameÚzone_rdclassr   Úsaved_stateÚcurrent_fileÚallowed_directivesÚaddÚsetr0   r1   r2   r3   Úcheck_put_rdatasetr#   )Úselfr,   r-   r   r.   r/   r0   r1   r2   r3   r4   Ú_s               r   Ú__init__zReader.__init__[   sY  € ð ˆŒØ14´×1OÒ1OÑ1QÔ1QÑ.ˆÔ	˜4œ?¨AØ"Ô.ˆÔØˆŒØ#ˆÔØÐ Ø#ˆKØÐØ ˆDÔØ%*ˆDÔ"Ð"à*ˆDÔØ%)ˆDÔ"ØÔ,ˆŒØ#ˆÔØˆŒØ13ˆÔØ(,ˆÔØÐ)Ø˜tÐ#Ð#Ø&FÐ&FÐ&FˆDÔ#Øð 8ØÔ'×+Ò+¨JÑ7Ô7Ð7øØ Ð&Ð&õ '*¡e¤eˆDÔ#Ð#õ '*Ð)XÐ)XÐGWÐ)XÑ)XÔ)XÑ&XÔ&XˆDÔ#Ø$ˆŒØ"ˆŒØ*ˆÔØ(ˆÔØŒ×#Ò#Õ$?Ñ@Ô@Ð@Ð@Ð@r   c                 ód   — 	 | j                              ¦   «         }|                     ¦   «         rd S Œ0r;   )r,   ÚgetÚis_eol_or_eof©rO   Útokens     r   Ú	_eat_linezReader._eat_line�   s4   € ð	Ø”H—L’L‘N”NˆEØ×"Ò"Ñ$Ô$ð Ø�ð	r   c                 ó‚   — | j                              ¦   «         }|                     ¦   «         st          j        j        ‚|S r;   )r,   rS   Úis_identifierr   Ú	exceptionÚSyntaxErrorrU   s     r   Ú_get_identifierzReader._get_identifier“   s5   € Ø”—’‘”ˆØ×"Ò"Ñ$Ô$ð 	,Ý”-Ô+Ð+Øˆr   c           	      ó
  — d}| j         �	| j         }�n.| j        €t          ‚| j                             d¬¦  «        }|                     ¦   «         s&| j                             || j        ¦  «        | _        nI| j                             ¦   «         }|                     ¦   «         rdS | j         	                    |¦  «         | j        }|€t          j                             d¦  «        ‚| j        €J ‚|                     | j        ¦  «        s|                      ¦   «          dS | j        r|                     | j        ¦  «        }| j        �| j        }|| _        d| _        n€|                      ¦   «         }d}	 t          j                             |j        ¦  «        }|| _        d| _        d}n4# t          j        j        $ r | j         	                    |¦  «         Y nw xY w| j        �| j        }n©|                      ¦   «         }	 t          j                             |j        ¦  «        }nE# t          j        j        $ r ‚ t6          $ r$ | j        }| j         	                    |¦  «         Y nw xY w|| j        k    rt          j                             d¦  «        ‚|€�|                      ¦   «         }d}	 t          j                             |j        ¦  «        }|| _        d| _        d}nQ# t          j        j        $ r: | j        r| j        }n| j        r| j        }| j         	                    |¦  «         Y nw xY w| j        �| j        }np|                      ¦   «         }	 t          j                              |j        ¦  «        }n6# t6          $ r) t          j                             d|j        › d�¦  «        ‚w xY w	 t          j!                             ||| j        | j        | j        | j        ¦  «        }n# t          j        j        $ r ‚ t6          $ r^ tE          j#        ¦   «         dd…         \  }}t          j                             d	tI          |¦  «        › d
tI          |¦  «        › �¦  «        ‚w xY w| j        sZ|t          j         j%        k    rEtM          t          j'        j(        j%        j%        |¦  «        }	|	j)        | _        d| _        |€|	j)        }|€t          j                             d¦  «        ‚| j*         +                    |||¦  «         dS )z&Process one line from a DNS zone file.NT)Úwant_leadingzthe last used name is undefinedúRR class is not zone's classúunknown rdatatype 'ú'é   úcaught exception ú: úMissing default TTL value),r0   rC   r
   r,   rS   Úis_whitespaceÚas_namerG   rT   Úungetr   rZ   r[   rA   Úis_subdomainrW   rB   r1   rD   rE   r\   ÚttlÚ	from_textÚvalueÚBadTTLr2   Ú
rdataclassÚ	ExceptionrH   rF   r4   r3   Ú	rdatatypeÚrdataÚsysÚexc_infoÚstrÚSOAr   ÚrdtypesÚANYÚminimumr   rL   )
rO   rV   r   rj   r-   ÚrdtypeÚrdÚtyÚvaÚsoa_rds
             r   Ú_rr_linezReader._rr_line™   s  € àˆàŒ?Ð&Ø”?ˆD‰DàÔ"Ð*Ý#Ð#Ø”H—L’L¨d�LÑ3Ô3ˆEØ×&Ò&Ñ(Ô(ð &Ø!%¤×!1Ò!1°%¸Ô9LÑ!MÔ!M�”�àœŸš™œ�Ø×&Ò&Ñ(Ô(ð à�FØ”—’˜uÑ%Ô%Ð%Ø”>ˆDØˆ|Ý”m×/Ò/Ð0QÑRÔRÐRØÔ#Ð/Ð/Ð/Ø×$Ò$ TÔ%5Ñ6Ô6ð Ø—’Ñ Ô Ð Ø�ØŒð 9Ø—’ tÔ'7Ñ8Ô8�ð Œ>Ð%Ø”.ˆCØˆDŒMØ"&ˆDÔÐà×(Ò(Ñ*Ô*ˆEØˆCð&Ý”g×'Ò'¨¬Ñ4Ô4�Ø #�”Ø&*�Ô#Ø��øÝ”7”>ð &ð &ð &Ø”—’˜uÑ%Ô%Ð%Ð%Ð%ð&øøøð ÔÐ)ØÔ(ˆGˆGà×(Ò(Ñ*Ô*ˆEð&Ýœ.×2Ò2°5´;Ñ?Ô?��øÝ”=Ô,ð ð ð ØÝð &ð &ð &ØÔ+�Ø”—’˜uÑ%Ô%Ð%Ð%Ð%ð&øøøð ˜$Ô+Ò+Ð+Ý”m×/Ò/Ð0NÑOÔOÐOàˆ;à×(Ò(Ñ*Ô*ˆEØˆCð
&Ý”g×'Ò'¨¬Ñ4Ô4�Ø #�”Ø&*�Ô#Ø��øÝ”7”>ð &ð &ð &ØÔ)ð (ØÔ*�C�CØÔ(ð (Øœ-�CØ”—’˜uÑ%Ô%Ð%Ð%Ð%ð&øøøð ÔÐ(ØÔ&ˆFˆFà×(Ò(Ñ*Ô*ˆEðVÝœ×0Ò0°´Ñ=Ô=��øÝð Vð Vð VÝ”m×/Ò/Ð0TÀeÄkÐ0TÐ0TÐ0TÑUÔUÐUðVøøøð	VÝ”×$Ò$ØØØ”ØÔ#Ø”ØÔ ñô ˆBˆBøõ Œ}Ô(ð 	ð 	ð 	àÝð 	Vð 	Vð 	Võ ”|‘~”~ b q bÔ)‰HˆR�Ý”-×+Ò+Ð,TÅÀBÁÄÐ,TÐ,TÍ3ÈrÉ7Ì7Ð,TÐ,TÑUÔUÐUð	Vøøøð Ô%ð 		%¨&µC´MÔ4EÒ*EÐ*Eõ �#œ+œ/Ô-Ô1°2Ñ6Ô6ˆFØ%œ~ˆDÔØ%)ˆDÔ"Øˆ{à”n�ð ˆ;Ý”-×+Ò+Ð,GÑHÔHÐHàŒ�Š�T˜3 Ñ#Ô#Ð#Ð#Ð#sP   Å54F* Æ*.GÇGÈ$H' È'?I)É(I)Ê/4K$ Ë$AL2Ì1L2Í$M> Í>3N1Î58O. Ï.A<Q*ÚsideÚreturnc                 óÐ  — t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }d}d}d}d}d}	|                     |¦  «        }
|
r#|
                     ¦   «         \  }}}}}	|dk    rd}nv|                     |¦  «        }|r%|                     ¦   «         \  }}}|dk    rd}d}d}	n:|                     |¦  «        }|r#|                     ¦   «         \  }}}}|dk    rd}d}	t	          |¦  «        }t	          |¦  «        }|dvr"t
          j                             d	|› �¦  «        ‚|	d
vr"t
          j                             d|	› �¦  «        ‚|||||	fS )Nz"^.*\$({(\+|-?)(\d+),(\d+),(.)}).*$z^.*\$({(\+|-?)(\d+)}).*$z^.*\$({(\+|-?)(\d+),(\d+)}).*$Ú ú+Ú0r=   )rƒ   ú-zinvalid offset sign )r=   ÚoÚxÚXÚnÚNzinvalid type )ÚreÚcompileÚmatchÚgroupsÚintr   rZ   r[   )rO   r   Úis_generate1Úis_generate2Úis_generate3ÚmodÚsignÚoffsetÚwidthÚbaseÚg1Úg2Úg3ÚioffsetÚiwidths                  r   Ú_parse_modifyzReader._parse_modify  sš  € õ ”zÐ"GÑHÔHˆÝ”zÐ"=Ñ>Ô>ˆÝ”zÐ"CÑDÔDˆð ˆØˆØˆØˆØˆØ×Ò Ñ%Ô%ˆØð 	Ø-/¯YªY©[¬[Ñ*ˆC��v˜u dØ�rŠzˆzØ�øà×#Ò# DÑ)Ô)ˆBØð Ø$&§I¢I¡K¤KÑ!��T˜6Ø˜2’:�:Ø�DØ�Ø��à!×'Ò'¨Ñ-Ô-�Øð Ø/1¯yªy©{¬{Ñ,�C˜˜v uØ˜r’z�zØ"˜Ø�Då�f‘+”+ˆÝ�U‘”ˆà�zÐ!Ð!Ý”-×+Ò+Ð,IÀ4Ð,IÐ,IÑJÔJÐJØÐ5Ð5Ð5Ý”-×+Ò+Ð,B¸DÐ,BÐ,BÑCÔCÐCà�D˜' 6¨4Ð/Ð/r   c           
      ó¬  ‡— | j         €t          ‚| j                             ¦   «         }	 t          j                             |j        ¦  «        \  }}}| j                             ¦   «         }|                     ¦   «         st          j	        j
        ‚n# t          $ r t          j	        j
        ‚w xY w	 |j        }| j                             ¦   «         }|                     ¦   «         st          j	        j
        ‚n# t          $ r t          j	        j
        ‚w xY w	 t          j                             |j        ¦  «        }|| _        d| _        | j                             ¦   «         }|                     ¦   «         st          j	        j
        ‚n„# t          j        j        $ rm | j        s&| j        st          j	         
                    d¦  «        ‚| j        r| j        }n.| j        r| j        }nt          j	         
                    d¦  «        ‚Y nw xY w	 t          j                             |j        ¦  «        }| j                             ¦   «         }|                     ¦   «         st          j	        j
        ‚n;# t          j	        j
        $ r t          j	        j
        ‚t          $ r
 | j        }Y nw xY w|| j        k    rt          j	         
                    d¦  «        ‚	 t          j                             |j        ¦  «        }| j                             ¦   «         }|                     ¦   «         st          j	        j
        ‚n6# t          $ r) t          j	         
                    d|j        › d�¦  «        ‚w xY w|j        }	dt*          dt,          d	t*          d
t*          fd„}
dt*          dt,          dt*          d
t,          fˆfd„Š|                      |¦  «        \  }}}}}|                      |	¦  «        \  }}}}}t1          ||dz   |¦  «        D �]Ð} |
|||¦  «        } |
|||¦  «        } ‰|||¦  «        } ‰|||¦  «        }|                     d|› �|¦  «        }|	                     d|› �|¦  «        }t          j                             || j         | j        j        ¦  «        | _        | j        }| j        €J ‚|                     | j        ¦  «        s|                      ¦   «           dS | j         r|                      | j        ¦  «        }	 t          j!                             |||| j         | j         | j        ¦  «        }n# t          j	        j
        $ r ‚ t          $ r^ tE          j#        ¦   «         dd…         \  }}t          j	         
                    dt-          |¦  «        › dt-          |¦  «        › �¦  «        ‚w xY w| j$         %                    |||¦  «         �ŒÒdS )zPProcess one line containing the GENERATE statement from a DNS
        zone file.NTre   r_   r`   ra   ÚcounterÚoffset_signr•   r€   c                 ó"   — |dk    r|dz  }| |z   S )z0Calculate the index from the counter and offset.r…   éÿÿÿÿr   )rŸ   r    r•   s      r   Ú_calculate_indexz/Reader._generate_line.<locals>._calculate_index‰  s!   € à˜cÒ!Ð!Ø˜"‘�Ø˜VÑ#Ð#r   Úindexr—   r–   c                 óð   •— |dv r#t          | |¦  «                             |¦  «        S  ‰| d|¦  «        }d                     |ddd…         ¦  «        d|…         }|dk    r|                     ¦   «         }|S )zVFormat the index with the given base, and zero-fill it
            to the given width.)r=   r†   r‡   rˆ   r‡   ú.Nr¢   rŠ   )ÚformatÚzfillÚjoinr&   )r¤   r—   r–   ÚhexaÚnibblesÚ_format_indexs        €r   r¬   z,Reader._generate_line.<locals>._format_index�  sƒ   ø€ ð Ð+Ð+Ð+Ý˜e TÑ*Ô*×0Ò0°Ñ7Ô7Ð7ð !�= ¨¨UÑ3Ô3ˆDØ—h’h˜t D D b DœzÑ*Ô*¨6¨E¨6Ô2ˆGØ�sŠ{ˆ{Ø!Ÿ-š-™/œ/�ØˆNr   é   r%   rb   rc   rd   )&rC   r
   r,   rS   r   Úgrangerk   rl   rY   rZ   r[   ro   rj   rD   rE   rm   rF   r4   rn   rH   rp   r�   rt   r�   ÚrangeÚreplacer   Ú
idna_codecrG   rA   ri   rW   rB   rq   rr   rs   r   rL   ) rO   rV   ÚstartÚstopÚstepÚlhsrj   r-   ry   Úrhsr£   ÚlmodÚlsignÚloffsetÚlwidthÚlbaseÚrmodÚrsignÚroffsetÚrwidthÚrbaseÚiÚlindexÚrindexÚlzfindexÚrzfindexr   rq   rz   r{   r|   r¬   s                                   @r   Ú_generate_linezReader._generate_lineB  s  ø€ ð ÔÐ&ÝÐà”—’‘”ˆð	,Ý #¤
× 4Ò 4°U´[Ñ AÔ AÑˆE�4˜Ø”H—L’L‘N”NˆEØ×&Ò&Ñ(Ô(ð 0Ý”mÔ/Ð/ð0øåð 	,ð 	,ð 	,Ý”-Ô+Ð+ð	,øøøð	,Ø”+ˆCØ”H—L’L‘N”NˆEØ×&Ò&Ñ(Ô(ð 0Ý”mÔ/Ð/ð0øåð 	,ð 	,ð 	,Ý”-Ô+Ð+ð	,øøøð	MÝ”'×#Ò# E¤KÑ0Ô0ˆCØˆDŒMØ"&ˆDÔØ”H—L’L‘N”NˆEØ×&Ò&Ñ(Ô(ð 0Ý”mÔ/Ð/ð0øåŒwŒ~ð 	Mð 	Mð 	MØÔ'ð M¨4Ô+Að MÝ”m×/Ò/Ð0KÑLÔLÐLØÔ%ð MØÔ&��ØÔ$ð MØ”m��õ
 ”m×/Ò/Ð0KÑLÔLÐLøøð	Møøøð	(Ý”n×.Ò.¨u¬{Ñ;Ô;ˆGØ”H—L’L‘N”NˆEØ×&Ò&Ñ(Ô(ð 0Ý”mÔ/Ð/ð0øåŒ}Ô(ð 	,ð 	,ð 	,Ý”-Ô+Ð+Ýð 	(ð 	(ð 	(ØÔ'ˆGˆGˆGð	(øøøà�dÔ'Ò'Ð'Ý”-×+Ò+Ð,JÑKÔKÐKð	RÝ”]×,Ò,¨U¬[Ñ9Ô9ˆFØ”H—L’L‘N”NˆEØ×&Ò&Ñ(Ô(ð 0Ý”mÔ/Ð/ð0øåð 	Rð 	Rð 	RÝ”-×+Ò+Ð,PÀ%Ä+Ð,PÐ,PÐ,PÑQÔQÐQð	Røøøð Œkˆð	$¥cð 	$½ð 	$ÅSð 	$ÍSð 	$ð 	$ð 	$ð 	$ð	¥ð 	­Cð 	½ð 	Åð 	ð 	ð 	ð 	ð 	ð 	ð /3×.@Ò.@ÀÑ.EÔ.EÑ+ˆˆe�W˜f eØ.2×.@Ò.@ÀÑ.EÔ.EÑ+ˆˆe�W˜f eÝ�u˜d Q™h¨Ñ-Ô-ð .	(ñ .	(ˆAð &Ð% a¨°Ñ8Ô8ˆFØ%Ð% a¨°Ñ8Ô8ˆFà$�} V¨U°FÑ;Ô;ˆHØ$�} V¨U°FÑ;Ô;ˆHà—;’;˜z 4˜z˜z¨8Ñ4Ô4ˆDØ—K’K 
 D 
 
¨HÑ5Ô5ˆEå œX×/Ò/Ø�dÔ)¨4¬8Ô+>ñô ˆDŒNð ”>ˆDØÔ#Ð/Ð/Ð/Ø×$Ò$ TÔ%5Ñ6Ô6ð Ø—’Ñ Ô Ð Ø��ØŒð 9Ø—’ tÔ'7Ñ8Ô8�ðÝ”Y×(Ò(ØØØØÔ'Ø”OØÔ$ñô ��øõ ”=Ô,ð ð ð àÝð 	ð 	ð 	õ œ<™>œ>¨"¨1¨"Ô-‘��RÝ”m×/Ò/Ø<­¨B©¬Ð<Ð<µ3°r±7´7Ð<Ð<ñô ð ð	øøøð ŒH�LŠL˜˜s BÑ'Ô'Ð'Ñ'ð].	(ð .	(sZ   ªA&B ÂB-Â1AC7 Ã7DÄA0F ÆA>H	ÈH	ÈA"I0 É05J(Ê'J(ËA"L9 Ì93M,Ô3T7Ô7A<V3c           
      óÔ	  — 	 	 | j                              dd¦  «        }|                     ¦   «         r†| j        �| j                             ¦   «          t          | j        ¦  «        dk    rL| j                             d¦  «        \  | _         | _        | _	        | _        | _
        | _        | _        | _        Œ´dS |                     ¦   «         rŒË|                     ¦   «         r| j                              ¦   «          Œù|j        d         dk    �rt          | j        ¦  «        dk    �r|j                             ¦   «         }|| j        vr#t(          j                             d|› d�¦  «        ‚|d	k    r—| j                              ¦   «         }|                     ¦   «         st(          j                             d
¦  «        ‚t(          j                             |j        ¦  «        | _        d| _        | j                              ¦   «          �n|dk    rk| j                              ¦   «         | _        | j                              ¦   «          | j        €| j        | _        | j                             | j        ¦  «         �n­|dk    �rh| j                              ¦   «         }|j        }| j                              ¦   «         }|                     ¦   «         rOt(          j                             |j        | j        | j         j        ¦  «        }| j                              ¦   «          n:|                      ¦   «         st(          j                             d¦  «        ‚| j        }| j         !                    | j         | j        | j	        | j        | j
        | j        | j        | j        f¦  «         tE          |d¬¦  «        | _        t(          j#         $                    | j        |¦  «        | _         || _        n>|dk    r|  %                    ¦   «          n#t(          j                             d|› d�¦  «        ‚�Œ&| j          &                    |¦  «         |  '                    ¦   «          �ŒU# t(          j        j        $ r{}| j          (                    ¦   «         \  }}|€d}t(          j                             |› d|› d|› �¦  «        }tS          j*        ¦   «         d         }| +                    |¦  «        d‚d}~ww xY w)zÆRead a DNS zone file and build a zone object.

        @raises dns.zone.NoSOA: No SOA RR was found at the zone origin
        @raises dns.zone.NoNS: No NS RRset was found at the zone origin
        r­   TNr   r¢   r%   zzone file directive 'z' is not allowedr6   zbad $TTLr7   r9   zbad origin in $INCLUDEzutf-8)Úencodingr8   zUnknown zone file directive 'ra   zsyntax errorú:rd   rb   ),r,   rS   Úis_eofrJ   ÚcloseÚlenrI   ÚpoprC   rG   rD   rE   r4   rF   Úis_eolÚ
is_commentÚget_eolrl   rK   r&   r   rZ   r[   rY   rj   rk   Úget_namerA   r   Ú_set_originr   r±   rT   ÚappendÚopenÚ	tokenizerÚ	TokenizerrÆ   rh   r~   Úwhererr   rs   Úwith_traceback)	rO   rV   ÚcÚfilenameÚ
new_originÚdetailÚline_numberÚexÚtbs	            r   ÚreadzReader.readÎ  s–  € ðY	2ðQ ØœŸš T¨4Ñ0Ô0�Ø—<’<‘>”>ð MØÔ(Ð4ØÔ)×/Ò/Ñ1Ô1Ð1Ý˜4Ô+Ñ,Ô,¨qÒ0Ð0ð !Ô,×0Ò0°Ñ4Ô4ñ	Ø œHØ Ô/Ø œNØ Ô-Ø œMØ Ô/Ø Ô,Ø Ô2à Ø�EØ—\’\‘^”^ð =ØØ×%Ò%Ñ'Ô'ð ;Ø”H×$Ò$Ñ&Ô&Ð&ØØ”[ ”^ sÒ*Ñ*­s°4Ô3JÑ/KÔ/KÈaÒ/OÑ/Oð œ×)Ò)Ñ+Ô+�AØ Ô 7Ð7Ð7Ý!œm×7Ò7ØG°AÐGÐGÐGñô ð ð ˜F’{�{Ø $¤§¢¡¤˜Ø$×2Ò2Ñ4Ô4ð HÝ"%¤-×";Ò";¸JÑ"GÔ"GÐGÝ+.¬7×+<Ò+<¸U¼[Ñ+IÔ+I˜Ô(Ø15˜Ô.Øœ×(Ò(Ñ*Ô*Ð*Ñ*Ø˜iš˜Ø.2¬h×.?Ò.?Ñ.AÔ.A˜Ô+Øœ×(Ò(Ñ*Ô*Ð*ØÔ+Ð3Ø/3Ô/B˜DÔ,Øœ×,Ò,¨TÔ-@ÑAÔAÐAÑAØ˜jš™Ø $¤§¢¡¤˜Ø#(¤;˜Ø $¤§¢¡¤˜à ×.Ò.Ñ0Ô0ð =Ý),¬×);Ò);Ø %¤¨TÔ-@À$Ä(ÔBUñ*ô *˜Jð !œH×,Ò,Ñ.Ô.Ð.Ð.Ø!&×!4Ò!4Ñ!6Ô!6ð =Ý"%¤-×";Ò";Ð<TÑ"UÔ"UÐUà)-Ô)<˜JØÔ(×/Ò/à $¤Ø $Ô 3Ø $¤Ø $Ô 1Ø $¤Ø $Ô 3Ø $Ô 0Ø $Ô 6ð	ñô ð õ -1°ÀGÐ,LÑ,LÔ,L˜Ô)Ý#&¤=×#:Ò#:¸4Ô;LÈhÑ#WÔ#W˜œØ.8˜Ô+Ð+Ø˜kÒ)Ð)Ø×+Ò+Ñ-Ô-Ð-Ð-å!œm×7Ò7Ø@¸AÐ@Ð@Ð@ñô ð ñ Ø”—’˜uÑ%Ô%Ð%Ø—’‘”�ñcQ øõd Œ}Ô(ð 	2ð 	2ð 	2Ø&*¤h§n¢nÑ&6Ô&6Ñ#ˆX�{Øˆ~Ø'�Ý”×*Ò*¨hÐ+PÐ+P¸Ð+PÐ+PÈÐ+PÐ+PÑQÔQˆBÝ”‘” Ô"ˆBØ×#Ò# BÑ'Ô'¨TÐ1øøøøð	2øøøs    ‚B4Q Â8N Q ÑS'Ñ,A6S"Ó"S')FTNNNNN)r€   N)r   r   r   r   r   rÕ   rÖ   rn   Ú
RdataClassÚtransactionÚTransactionÚboolr   rt   r   ÚNamer�   rp   Ú	RdataTyperQ   rW   r\   r~   r   r�   rÆ   rà   r   r   r   r+   r+   X   sŠ  € € € € € Ø2Ð2ð $Ø15Ø+/Ø $Ø:>Ø7;Ø"&ð0Að 0AàŒ]Ô$ð0Að ”Ô*ð0Að Œ_Ô(ð	0Að
 ð0Að  ¨#¤Ñ.ð0Að ”H”M DÑ(ð0Að ˜‘:ð0Að ”~Ô0°4Ñ7ð0Að ”mÔ-°Ñ4ð0Að ˜4‘Zð0Að 0Að 0Að 0Aðdð ð ðð ð ðz$ð z$ð z$ðx+0 #ð +0¨%°°S¸#¸sÀCÐ0GÔ*Hð +0ð +0ð +0ð +0ðZJ(ð J(ð J(ðX`2ð `2ð `2ð `2ð `2ð `2r   r+   c                   ó`   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zˆ xZS )ÚRRsetsReaderTransactionc                 ód   •— |rJ ‚t          ¦   «                              |||¦  «         i | _        d S r;   )ÚsuperrQ   Ú	rdatasets)rO   r?   ÚreplacementÚ	read_onlyÚ	__class__s       €r   rQ   z RRsetsReaderTransaction.__init__2  s6   ø€ ØÐÐÐÝ‰Œ×Ò˜ +¨yÑ9Ô9Ð9ØˆŒˆˆr   c                 ó<   — | j                              |||f¦  «        S r;   )rë   rS   ©rO   r   ry   Úcoverss       r   Ú_get_rdatasetz%RRsetsReaderTransaction._get_rdataset7  s   € ØŒ~×!Ò! 4¨°Ð"8Ñ9Ô9Ð9r   c                 óú   — g }| j                              ¦   «         D ]$\  \  }}}}||k    r|                     |¦  «         Œ%t          |¦  «        dk    rd S t          j                             ¦   «         }||_         |S ©Nr   )rë   ÚitemsrÓ   rÌ   r   r   ÚNode)rO   r   rë   Úrdataset_namerP   r    r   s          r   Ú	_get_nodez!RRsetsReaderTransaction._get_node:  s�   € Øˆ	Ø/3¬~×/CÒ/CÑ/EÔ/Eð 	+ð 	+Ñ+Ñ!ˆ]˜A˜q 8Ø�}Ò$Ð$Ø× Ò  Ñ*Ô*Ð*øÝˆy‰>Œ>˜QÒÐØ�4ÝŒx�}Š}‰ŒˆØ"ˆŒØˆr   c                 ó4   — || j         ||j        |j        f<   d S r;   )rë   ry   rñ   )rO   r   r    s      r   Ú_put_rdatasetz%RRsetsReaderTransaction._put_rdatasetE  s   € ØCKˆŒ˜˜hœo¨x¬Ð?Ñ@Ð@Ð@r   c                 ó¤   — g }| j         D ]#}|d         |k    r|                     |¦  «         Œ$t          |¦  «        dk    r|D ]}| j         |= Œd S d S rô   )rë   rÓ   rÌ   )rO   r   ÚremoveÚkeys       r   Ú_delete_namez$RRsetsReaderTransaction._delete_nameH  st   € àˆØ”>ð 	#ð 	#ˆCØ�1Œv˜Š~ˆ~Ø—’˜cÑ"Ô"Ð"øÝˆv‰;Œ;˜Š?ˆ?Øð (ð (�Ø”N 3Ð'Ð'ð ˆ?ð(ð (r   c                 ó@   — 	 | j         |||f= d S # t          $ r Y d S w xY wr;   )rë   ÚKeyErrorrð   s       r   Ú_delete_rdatasetz(RRsetsReaderTransaction._delete_rdatasetR  s@   € ð	Ø”  f¨fÐ5Ð6Ð6Ð6øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ �
œc                 ó4   — | j         D ]\  }}}||k    r dS ŒdS ©NTF)rë   )rO   r   r‰   rP   s       r   Ú_name_existsz$RRsetsReaderTransaction._name_existsX  s3   € Ø”~ð 	ð 	‰GˆAˆq�!Ø�DŠyˆyØ�t�tð àˆur   c                 ó2   — t          | j        ¦  «        dk    S rô   )rÌ   rë   ©rO   s    r   Ú_changedz RRsetsReaderTransaction._changed^  s   € Ý�4”>Ñ"Ô" QÒ&Ð&r   c                 ón  — |r°|                       ¦   «         ržg }| j                             ¦   «         D ]d\  \  }}}}t          j                             ||j        |j        |j        ¦  «        }| 	                    |¦  «         | 
                    |¦  «         Œe| j                             |¦  «         d S d S d S r;   )r  rë   rõ   r   ÚrrsetÚRRsetr-   ry   rñ   ÚupdaterÓ   r?   Ú
set_rrsets)rO   ÚcommitÚrrsetsr   rP   r    r	  s          r   Ú_end_transactionz(RRsetsReaderTransaction._end_transactiona  sÄ   € Øð 	,�d—m’m‘o”oð 	,ØˆFØ*.¬.×*>Ò*>Ñ*@Ô*@ð %ð %Ñ&‘��q˜!˜hÝœ	ŸšØ˜(Ô*¨H¬O¸X¼_ñô �ð —’˜XÑ&Ô&Ð&Ø—’˜eÑ$Ô$Ð$Ð$ØŒL×#Ò# FÑ+Ô+Ð+Ð+Ð+ð	,ð 	,ð 	,ð 	,r   c                 ó   — d S r;   r   )rO   Úorigins     r   rÒ   z#RRsetsReaderTransaction._set_originl  s   € Øˆr   c                 ó   — t           ‚r;   ©ÚNotImplementedErrorr  s    r   Ú_iterate_rdatasetsz*RRsetsReaderTransaction._iterate_rdatasetso  ó   € Ý!Ð!r   c                 ó   — t           ‚r;   r  r  s    r   Ú_iterate_namesz&RRsetsReaderTransaction._iterate_namesr  r  r   )r   r   r   rQ   rò   rø   rú   rþ   r  r  r  r  rÒ   r  r  Ú__classcell__)rî   s   @r   rè   rè   1  sà   ø€ € € € € ðð ð ð ð ð
:ð :ð :ð	ð 	ð 	ðLð Lð Lð(ð (ð (ðð ð ðð ð ð'ð 'ð 'ð	,ð 	,ð 	,ðð ð ð"ð "ð "ð"ð "ð "ð "ð "ð "ð "r   rè   c                   óÊ   — e Zd Zej        j        dej        j        fdej        j        dz  de	dej        j
        fd„Zd„ Zdd„Zd	„ Zd
„ Zdeej        j                 ddfd„ZdS )ÚRRSetsReaderManagerFr  NrB   r-   c                 ó>   — || _         || _        || _        g | _        d S r;   )r  rB   r-   r  )rO   r  rB   r-   s       r   rQ   zRRSetsReaderManager.__init__w  s$   € ð ˆŒØ$ˆŒØˆŒØ-/ˆŒˆˆr   c                 ó   — t           ‚r;   r  r  s    r   ÚreaderzRRSetsReaderManager.reader‚  r  r   c                 ó0   — |du sJ ‚t          | dd¦  «        S r  )rè   )rO   rì   s     r   ÚwriterzRRSetsReaderManager.writer…  s%   € Ø˜dÐ"Ð"Ð"Ð"Ý& t¨T°5Ñ9Ô9Ð9r   c                 ó   — | j         S r;   )r-   r  s    r   Ú	get_classzRRSetsReaderManager.get_class‰  s
   € ØŒ|Ðr   c                 ó`   — | j         rt          j        j        }n| j        }| j        | j         |fS r;   )rB   r   r   Úemptyr  )rO   Ú	effectives     r   r@   z&RRSetsReaderManager.origin_informationŒ  s/   € ØŒ?ð 	$ÝœœˆIˆIàœˆIØ”˜Tœ_¨iÐ8Ð8r   r  r€   c                 ó   — || _         d S r;   )r  )rO   r  s     r   r  zRRSetsReaderManager.set_rrsets“  s   € ØˆŒˆˆr   )F)r   r   r   r   r   Úrootrn   ÚINrå   rä   rá   rQ   r  r   r"  r@   r   r	  r
  r  r   r   r   r  r  v  s×   € € € € € ð (+¤x¤}Ø Ø-0¬^Ô->ð		0ð 	0à”” Ñ$ð	0ð ð	0ð ”Ô*ð		0ð 	0ð 	0ð 	0ð"ð "ð "ð:ð :ð :ð :ðð ð ð9ð 9ð 9ð  c¤i¤oÔ!6ð ¸4ð ð ð ð ð ð r   r  FÚtextr   rj   r-   Údefault_rdclassry   r4   r±   r  rB   r€   c
                 óÚ  — t          |t          ¦  «        r0t          j                             |t          j        j        |¦  «        }t          |t          ¦  «        r!t          j                             |||¦  «        }t          |t          ¦  «        rt          j                             |¦  «        }t          |t          ¦  «        rt          j                             |¦  «        }|�%t          j        j         	                    |¦  «        }nd}t          j        j         	                    |¦  «        }|�%t          j
        j         	                    |¦  «        }nd}t          ||	|¦  «        }
|
                     d¦  «        5 }t          j                             | d|¬¦  «        }t!          |||d|||||¬¦	  «	        }|                     ¦   «          ddd¦  «         n# 1 swxY w Y   |
j        S )a‘	  Read one or more rrsets from the specified text, possibly subject
    to restrictions.

    *text*, a file object or a string, is the input to process.

    *name*, a string, ``dns.name.Name``, or ``None``, is the owner name of
    the rrset.  If not ``None``, then the owner name is "forced", and the
    input must not specify an owner name.  If ``None``, then any owner names
    are allowed and must be present in the input.

    *ttl*, an ``int``, string, or None.  If not ``None``, the the TTL is
    forced to be the specified value and the input must not specify a TTL.
    If ``None``, then a TTL may be specified in the input.  If it is not
    specified, then the *default_ttl* will be used.

    *rdclass*, a ``dns.rdataclass.RdataClass``, string, or ``None``.  If
    not ``None``, then the class is forced to the specified value, and the
    input must not specify a class.  If ``None``, then the input may specify
    a class that matches *default_rdclass*.  Note that it is not possible to
    return rrsets with differing classes; specifying ``None`` for the class
    simply allows the user to optionally type a class as that may be convenient
    when cutting and pasting.

    *default_rdclass*, a ``dns.rdataclass.RdataClass`` or string.  The class
    of the returned rrsets.

    *rdtype*, a ``dns.rdatatype.RdataType``, string, or ``None``.  If not
    ``None``, then the type is forced to the specified value, and the
    input must not specify a type.  If ``None``, then a type must be present
    for each RR.

    *default_ttl*, an ``int``, string, or ``None``.  If not ``None``, then if
    the TTL is not forced and is not specified, then this value will be used.
    if ``None``, then if the TTL is not forced an error will occur if the TTL
    is not specified.

    *idna_codec*, a ``dns.name.IDNACodec``, specifies the IDNA
    encoder/decoder.  If ``None``, the default IDNA 2003 encoder/decoder
    is used.  Note that codecs only apply to the owner name; dnspython does
    not do IDNA for names in rdata, as there is no IDNA zonefile format.

    *origin*, a string, ``dns.name.Name``, or ``None``, is the origin for any
    relative names in the input, and also the origin to relativize to if
    *relativize* is ``True``.

    *relativize*, a bool.  If ``True``, names are relativized to the *origin*;
    if ``False`` then any relative names in the input are made absolute by
    appending the *origin*.
    NTz<input>)r±   F)r/   r0   r1   r2   r3   r4   )Ú
isinstancert   r   r   rk   r'  rj   rn   rá   Úmakerp   ræ   r  r   rÕ   rÖ   r+   rà   r  )r)  r   rj   r-   r*  ry   r4   r±   r  rB   r?   r   r,   r  s                 r   Úread_rrsetsr.  —  sé  € õz �&�#ÑÔð GÝ”×#Ò# F­C¬H¬M¸:ÑFÔFˆÝ�$�ÑÔð <ÝŒx×!Ò! $¨°
Ñ;Ô;ˆÝ�#•sÑÔð %ÝŒg×Ò Ñ$Ô$ˆÝ�+�sÑ#Ô#ð 5Ý”g×'Ò'¨Ñ4Ô4ˆØÐÝ”.Ô+×0Ò0°Ñ9Ô9ˆˆàˆÝ”nÔ/×4Ò4°_ÑEÔE€OØÐÝ”Ô(×-Ò-¨fÑ5Ô5ˆˆàˆÝ! &¨*°oÑFÔF€GØ	�Š˜Ñ	Ô	ð  ÝŒm×%Ò% d¨IÀ*Ð%ÑMÔMˆÝØØØØ"ØØØ!ØØ#ð

ñ 

ô 

ˆð 	�Š‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð Œ>Ðs   Æ AGÇGÇ"G)5r   r‹   rr   Útypingr   r   r   r   r   r   Údns.exceptionr   Ú
dns.grangeÚdns.nameÚdns.nodeÚ	dns.rdataÚdns.rdataclassÚdns.rdatatypeÚdns.rdtypes.ANY.SOAÚ	dns.rrsetÚdns.tokenizerÚdns.transactionÚdns.ttlrZ   ÚDNSExceptionr
   r   r#   rÕ   rÖ   r   rå   r�   rä   ÚSavedStateTyper)   r+   râ   rã   rè   ÚTransactionManagerr  rn   r(  r'  rt   rá   rp   ræ   Ú	IDNACodecr	  r
  r.  r   r   r   ú<module>r@     s]  ðð$ Ð à 	€	€	€	Ø 
€
€
€
Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€ðð ð ð ð �C”MÔ.ñ ô ð ð,ð ,ð ,ð ,ð ,˜œÔ2ñ ,ô ,ð ,ð
ð 
ð 
ð. Ø„MÔØ„H„M�DÑØ„H„M�DÑØˆ$�JØØØØð
ô	€ðð ð ðV2ð V2ð V2ð V2ð V2ñ V2ô V2ð V2ðrB"ð B"ð B"ð B"ð B"˜cœoÔ9ñ B"ô B"ð B"ðJð ð ð ð ˜#œ/Ô<ñ ô ð ðF (,ØØ69´nÔ6GØ7:´~Ô7HØ37Ø$(Ø,0Ø),¬¬Øð]ð ]Ø
ð]à
Œ(Œ-˜#Ñ
 Ñ
$ð]ð 
ˆt‰ð]ð Œ^Ô&¨Ñ,¨tÑ3ð	]ð
 ”^Ô.°Ñ4ð]ð ŒMÔ# cÑ)¨DÑ0ð]ð �s‘˜TÑ!ð]ð ”Ô" TÑ)ð]ð ŒHŒM˜CÑ $Ñ&ð]ð ð]ð 
ˆ#Œ)Œ/Ôð]ð ]ð ]ð ]ð ]ð ]r   