
    $g^                      @    d Z ddlmZmZ dZdZd Zd Z	d Z
d Zd	 Zd
S )z=Fallback routines for Python's standard library socket module    )unpackpack   
   c                     t          | t                    st          dt          |           z            t	          |           dk    rt          d          dt          d|           z  S )zR
    Convert an IP address from 32-bit packed binary format to string format.
    zstring type expected, not %s   *invalid length of packed IP address stringz%d.%d.%d.%d4B)
isinstancestr	TypeErrortypelen
ValueError_unpack)	packed_ips    P/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/netaddr/fbsocket.py	inet_ntoar      sf     i%% J6iHIII
9~~EFFF743333    c                 d   g }g }d }d}t          |           D ]K\  }}|dk    r
||}|dz  }n!|dk    r|                    ||f           d }d}|                    |           L|dk    r|                    ||f           t          |          dk    r|                    d            |d         }|D ]}|d         |d         k    r|}|\  }	}
|d|
         dgz   ||
|	z   d          z   }|d         dk    r|                    dd           |d         dk    r|                    d           |S )Nr   0   c                     | d         S )Nr    )xs    r   <lambda>z&_compact_ipv6_tokens.<locals>.<lambda>8   s
    QqT r   )key )	enumerateappendr   sortinsert)tokens
new_tokens	positionsstart_index
num_tokensidxtokenbest_positionpositionlength	start_idxs              r   _compact_ipv6_tokensr/      s   JIKJ  '' ! !
UC<<"!!OJJA~~  *k!:;;;KJ%     A~~*k2333 9~~>>***!!! 	) 	)H{]1--- (+),t3jVASAUAU6VV
 a=Ba$$$b>Rb!!!r   c                    | t           k    rt          |          S | t          k    rt          |          dk    st	          |t
                    st          d          d t          d|          D             }t          t          d|                    }d}t          t          |                    D ]\  }}|}|d|z  z  }||z  }d|cxk     rdk    sn |dz	  dk    r<t          d	gd
 |dd         D             R  }t          |          }	|dd         |	gz   }d                    t          |                    S t          d| z            )zBConvert an packed IP address of the given family to string format.   r	   c                     g | ]}d |z  S )%xr   .0is     r   
<listcomp>zinet_ntop.<locals>.<listcomp>U   s    >>>q$(>>>r   z>8Hr     l        z>2Hc                 .    g | ]}t          |d           S r1   intr4   s     r   r7   zinet_ntop.<locals>.<listcomp>a   s     (I(I(IQ(I(I(Ir   N:zunknown address family %d)AF_INETr   AF_INET6r   r   bytesr   r   listr    reversed_packjoinr/   )
afr   r$   wordsint_valr6   numwordpacked_ipv4ipv4_strs
             r   	inet_ntoprN   K   ss   	W}}###	xy>>Rz)U'C'CIJJJ>>GE9$=$=>>> WUI..//00 	% 	%FAsD26>DnGGG))))z))))W]f-D-DJ(I(IVBCC[(I(I(IJJJK --HAbD\XJ.Fxx,V445554r9:::r   c                 6   t          | t                    rt          d| z            }|                     d          }t	          |          dk    rg }|D ]}|                    d          s(|                    d          rt	          |          dk    r|	 t          |          }n# t          $ r |w xY w|dz	  dk    r||                    t          d	|                     d

                    |          S |t          dt          |                      )a  
    Convert an IP address in string format (123.45.67.89) to the 32-bit packed
    binary format used in low-level network functions. Differs from inet_aton
    by only support decimal octets. Using octal or hexadecimal values will
    raise a ValueError exception.
    illegal IP address string %r.r   0xr   r      r   Br   (inet_pton() argument 2 must be str, not )r   r   OSErrorsplitr   
startswithr=   r   r!   rE   rF   r   r   )	ip_stringinvalid_addrr$   rH   r*   octets         r   _inet_pton_af_inetr\   j   s=    )S!! =	IJJ%% v;;!E 
0 
0##D)) 'e.>.>s.C.C 'E

UV&&'JJEE! ' ' '&&' QJ1$$&&U3..////88E??"
PtIPP
Q
QQs   B&&B3c           	         | t           k    rt          |          S | t          k    rt          d|z            }g }t	          |t
                    st          dt          |                     d|v r|d|v r|dk    rd                                dz  S 	 |	                    d          \  }}n# t          $ r |w xY wg }g }|dk    r|	                    d          }|dk    r|	                    d          }t          |          rd	|d
         v rt          |                                          }|                    dt          d|dd                   d         z             |                    dt          d|dd                   d         z             t          |          t          |          z   }	d|	cxk    rdk    sn |dt          |          t          |          z   z
  }
d |D             d t          |
          D             z   d |D             z   }	 ||z   D ]#}t!          |d          }d|cxk    rdk    sn |$nk# t          $ r |w xY wd|v rT|	                    d          }d	|v r|dd
         }|dd
         g dk    r||d
                                         dvr|t          |          dk    r|t          |                                          }|                    dt          d|dd                   d         z             |                    dt          d|dd                   d         z             d |D             }nt          |          dk    r|	 d |D             }|D ]}d|cxk    rdk    sn |n# t          $ r |w xY wd |D             }n|d                    |          S t          d| z            )z|
    Convert an IP address from string format to a packed string suitable for
    use with low-level network functions.
    rP   rU   r   z:: r1   r   r?   rQ   r   r3   >Hr   r   r      rS   c           	      J    g | ] }t          d t          |d                    !S r_   r1   rE   r=   r4   s     r   r7   zinet_pton.<locals>.<listcomp>   s*    ;;;QtSBZZ((;;;r   c                 6    g | ]}d                                  S )z  )encoder4   s     r   r7   zinet_pton.<locals>.<listcomp>   s$    @@@1:$$&&@@@r   c           	      J    g | ] }t          d t          |d                    !S rb   rc   r4   s     r   r7   zinet_pton.<locals>.<listcomp>   s*    ===q5s1bzz**===r   r8   N)r   r   r   r   r   )r   ffffc           	      J    g | ] }t          d t          |d                    !S rb   rc   r4   s     r   r7   zinet_pton.<locals>.<listcomp>   s*    FFF!eD#a**55FFFr   c                 .    g | ]}t          |d           S r;   r<   )r5   r*   s     r   r7   zinet_pton.<locals>.<listcomp>   s     AAAc%nnAAAr   c                 .    g | ]}t          d |          S )r_   )rE   r4   s     r   r7   zinet_pton.<locals>.<listcomp>   s     999Q%a..999r   r   zUnknown address family %d)r@   r\   rA   rV   r   r   r   r   re   rW   r   r   popr!   r   ranger=   lowerrF   )rG   rY   rZ   valuesprefixsuffixl_prefixl_suffixrM   token_countgap_sizer*   rK   r$   ipv6_prefixs                  r   	inet_ptonrv      s   
 
W}}!),,,	x=	IJJ)S)) 	ZXtIXXYYY)9D  }}++#!*!6!6 # # #""# HH||!<<,,||!<<,, 8}} H!4!4-hllnn==wtXac]'C'CA'F FGGGwtXac]'C'CA'F FGGGh--#h--7K,,,,u,,,,""CMMCMM9:H <;(;;;@@h@@@A==H===> 
#%0 + +Eub>>D........** /+  # # #""# i"--)##"("+K"3B3'+D+D+DDD**"2,,..mCC** 6{{a''**1&**,,??HMM$x!})E)Ea)H"HIIIMM$x!})E)Ea)H"HIIIFFvFFFFF 6{{a''**'AA&AAAF!' / / E3333V3333"..  4/ " ' ' '&&' :9&999""xx4r9:::s$   B1 1B>#)I I7"N N'N)__doc__structr   r   r   rE   r@   rA   r   r/   rN   r\   rv   r   r   r   <module>ry      s    D C 3 3 3 3 3 3 3 3 
4 
4 
4, , ,^; ; ;>R R RDi; i; i; i; i;r   