
    i              
           S SK JrJrJrJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr  S SKJr  S SKJr  S SKJr  S	rS
r\" SS9SSS.S\S   S-  S\\-  \-  S-  S\\\-     4S jj5       rg)    )IPv4AddressIPv4NetworkIPv6AddressIPv6Network
ip_network)Literal)InvalidArgument)
check_type)binarysampled_from)integers)SearchStrategy)defines_strategy)z	0.0.0.0/8z
10.0.0.0/8z100.64.0.0/10z127.0.0.0/8z169.254.0.0/16z172.16.0.0/12z192.0.0.0/24z192.0.0.0/29z192.0.0.8/32z192.0.0.9/32z192.0.0.10/32z192.0.0.170/32z192.0.0.171/32z192.0.2.0/24z192.31.196.0/24z192.52.193.0/24z192.88.99.0/24z192.168.0.0/16z192.175.48.0/24z198.18.0.0/15z198.51.100.0/24z203.0.113.0/24z240.0.0.0/4z255.255.255.255/32)z::1/128z::/128z::ffff:0:0/96z64:ff9b::/96z64:ff9b:1::/48z100::/64z	2001::/23z	2001::/32z2001:1::1/128z2001:1::2/128z2001:2::/48z2001:3::/32z2001:4:112::/48z2001:10::/28z2001:20::/28z2001:db8::/32z	2002::/16z2620:4f:8000::/48zfc00::/7z	fe80::/10T)force_reusable_valuesN)vnetworkr         r   returnc                    U b'  [        [        U S5        U S;  a  [        SU < S35      eUc  [        SSS9R	                  [
        5      [        [        5      R                  S 5      -  n[        S	S	S9R	                  [        5      [        [        5      R                  S
 5      -  nU S:X  a  U$ U S:X  a  U$ X#-  $ [        U[        5      (       a  [        U5      n[        [        [        4US5        [        U[        [        45      (       d   eU SUR                   4;  a  [        SU < SU< 35      eUR                   S:X  a  [
        O[        n[#        [        US   5      [        US   5      5      R	                  U5      $ )a  Generate IP addresses - ``v=4`` for :class:`~python:ipaddress.IPv4Address`\ es,
``v=6`` for :class:`~python:ipaddress.IPv6Address`\ es, or leave unspecified
to allow both versions.

``network`` may be an :class:`~python:ipaddress.IPv4Network` or
:class:`~python:ipaddress.IPv6Network`, or a string representing a network such as
``"127.0.0.0/24"`` or ``"2001:db8::/32"``.  As well as generating addresses within
a particular routable network, this can be used to generate addresses from a
reserved range listed in the
`IANA <https://www.iana.org/assignments/iana-ipv4-special-registry/>`__
`registries <https://www.iana.org/assignments/iana-ipv6-special-registry/>`__.

If you pass both ``v`` and ``network``, they must be for the same version.
Nr   r   zv=z, but only v=4 or v=6 are validr   )min_sizemax_sizec                     [        U S9$ Nr   ip_addressesr   s    h/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/hypothesis/strategies/_internal/ipaddress.py<lambda>ip_addresses.<locals>.<lambda>f   	    ,w"?       c                     [        U S9$ r   r   r   s    r   r    r!   i   r"   r#   r   r   z is incompatible with network=r   )r
   intr	   r   mapr   r   SPECIAL_IPv4_RANGESflatmapr   SPECIAL_IPv6_RANGES
isinstancestrr   r   r   versionr   )r   r   foursix	addr_types        r   r   r   I   sg   ( 	}33F?!RQD(G"HII q1-11+>B

'?
@A b2.22;?,C

'?
@A 6K6Jz'3W%[)7I>g[9::::w''$C7*EFF&!3IC
OS%56::9EEr#   )	ipaddressr   r   r   r   r   typingr   hypothesis.errorsr	   hypothesis.internal.validationr
   $hypothesis.strategies._internal.corer   r   'hypothesis.strategies._internal.numbersr   *hypothesis.strategies._internal.strategiesr   %hypothesis.strategies._internal.utilsr   r)   r+   r-   r    r#   r   <module>r;      s    U T  - 5 E < E B 6 0 - #6:,Ft}t,F ;,t3,F K+-.	,F .,Fr#   