ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
bW]                 @   s6   d Z ddlZddlZddlmZ G dd dejZdS )zDNS name dictionary    N   )xrangec               @   sb   e Zd ZdZdddgZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )NameDicta  A dictionary whose keys are dns.name.Name objects.
    @ivar max_depth: the maximum depth of the keys that have ever been
    added to the dictionary.
    @type max_depth: int
    @ivar max_depth_items: the number of items of maximum depth
    @type max_depth_items: int
    	max_depthmax_depth_itemsZ__storec             O   s(   t  | _d| _d| _| jt || d S )Nr   )dict_NameDict__storer   r   update)selfargskwargs r   /usr/lib/python3.6/namedict.py__init__-   s    zNameDict.__init__c             C   s>   t || jkr| jd | _nt || jkr:t || _d| _d S )Nr   )lenr   r   )r
   keyr   r   r   Z__update_max_depth3   s
    
zNameDict.__update_max_depthc             C   s
   | j | S )N)r   )r
   r   r   r   r   __getitem__:   s    zNameDict.__getitem__c             C   s.   t |tjjstd|| j|< | j| d S )NzNameDict key must be a name)
isinstancednsnameName
ValueErrorr   _NameDict__update_max_depth)r
   r   valuer   r   r   __setitem__=   s    
zNameDict.__setitem__c             C   sT   | j j|}t|| jkr&| jd | _| jdkrPd| _x| j D ]}| j| q>W d S )Nr   r   )r   popr   r   r   r   )r
   r   r   kr   r   r   __delitem__C   s    
zNameDict.__delitem__c             C   s
   t | jS )N)iterr   )r
   r   r   r   __iter__L   s    zNameDict.__iter__c             C   s
   t | jS )N)r   r   )r
   r   r   r   __len__O   s    zNameDict.__len__c             C   s
   || j kS )N)r   )r
   r   r   r   r   has_keyR   s    zNameDict.has_keyc             C   sn   t |}|| jkr| j}x<t| dD ],}tjj||d }|| kr&|| | fS q&W | tjj }tjj|fS )a  Find the deepest match to I{name} in the dictionary.

        The deepest match is the longest name in the dictionary which is
        a superdomain of I{name}.

        @param name: the name
        @type name: dns.name.Name object
        @rtype: (key, value) tuple
        r   N)r   r   r   r   r   r   empty)r
   r   depthinvr   r   r   get_deepest_matchU   s    
zNameDict.get_deepest_matchN)__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r    r!   r'   r   r   r   r   r   !   s   
	r   )r+   collectionsZdns.namer   Z_compatr   MutableMappingr   r   r   r   r   <module>   s   