fC% dZddlZdZdZGddeZGddeZd Zd2d Zd Z d Z dZ dZ dZ dZdZdZdZdZGddZdaejGddeZejGddeZGddZee_GddZGd d!eeZGd"d#eZGd$d%eeZGd&d'Zee_ee_Gd(d)ZGd*d+eeZ Gd,d-e Z!Gd.d/eeZ"Gd0d1Z#e#e _e#e"_dS)3z1.0N ceZdZdS)AddressValueErrorN__name__ __module__ __qualname__0/opt/alt/python311/lib64/python3.11/ipaddress.pyrr//r rceZdZdS)NetmaskValueErrorNrr r r rrrr rc t|S#ttf$rYnwxYw t|S#ttf$rYnwxYwt |d)Nz. does not appear to be an IPv4 or IPv6 address) IPv4Addressrr IPv6Address ValueErroraddresss r ip_addressrs 7### 0 1      7### 0 1      QQQ R RR&&9A  A Tc t||S#ttf$rYnwxYw t||S#ttf$rYnwxYwt |d)Nz. does not appear to be an IPv4 or IPv6 network) IPv4Networkrr IPv6Networkr)rstricts r ip_networkr9s 7F+++ 0 1      7F+++ 0 1      QQQ R RRs'';AAc t|S#ttf$rYnwxYw t|S#ttf$rYnwxYwt |d)Nz0 does not appear to be an IPv4 or IPv6 interface) IPv4Interfacerr IPv6Interfacerrs r ip_interfacer!Vs( W%%% 0 1      W%%% 0 1      SSS T TTrcj |dS#t$rtdwxYw)Nz&Address negative or too large for IPv4to_bytes OverflowErrorrrs r v4_int_to_packedr'xsO C""" CCCABBBC2cj |dS#t$rtdwxYw)Nz&Address negative or too large for IPv6r$rs r v6_int_to_packedr+sOC### CCCABBBCr(c t|d}t|dkrtd||S)N/zOnly one '/' permitted in )strsplitlenr)raddrs r _split_optional_netmaskr3sIK w<<  c " "D 4yy1}} HW H HIII Kr c#K t|}t|x}}|D]}|j|jdzkr||fV|}|} ||fVdSN)iternext_ip) addressesitfirstlastips r _find_address_ranger?s| iB88ED 6TX\ ! !+   E +r cf |dkr|St|||dz zS)Nrr6)min bit_length)numberbitss r _count_righthand_zero_bitsrEs> {{ tvg*6688 9 99r c#lK t|trt|tstd|j|jkrt|d|d||krt d|jdkrt }n"|jdkrt }nt d|j}|j}|j}||krmtt||||z dz dz }||||z f}|V|d|zz }|dz |j krdS||kkdSdS) Nz1first and last must be IP addresses, not networks and  are not of the same versionz*last IP address must be greater than firstr#zunknown IP versionr6) isinstance _BaseAddress TypeErrorversionrrr_max_prefixlenr9rArErB _ALL_ONES)r<r=r>ip_bits first_intlast_intnbitsnets r summarize_address_rangerUs2| , ,M l + +MKLLL } $$&'' ' t||EFFF }  !   -..."G IxH x  .y'BB )A-99;;a?AAb)Wu_-.. Q%Z q=BL ( ( E x      r c#zK t|}i}|re|}|}||}||||<n||kr||=|||ed}t |D]}||j|jkr|V|}dSN)listpopsupernetgetappendsortedvaluesbroadcast_address)r:to_mergesubnetsrTrZexistingr=s r _collapse_addresses_internalrcs0IHG  &llnn<<>>;;x((   #GH   __! OOH % % %  & Dgnn&&''  %)>>> r cL g}g}g}|D]2}t|trI|r1|dj|jkrt|d|dd||a|j|jkry|r1|dj|jkrt|d|dd ||j#t$r||j YwxYw|r1|dj|jkrt|d|dd||4tt|}|r8t|D](\}}| t||)t||zS)NrGrH)rJrK_versionrLr\ _prefixlenrNr>AttributeErrornetwork_addressr]setr?extendrUrc)r:addrsipsnetsr>r<r=s r collapse_addressesro0s" E C D b, ' '  /s2w'2;66!#SWWW!./// JJrNNNN ]b/ / / /s2w'2;66!#SWWW!./// / 25!!!!! / / / 2-..... / 0R)R[88!#T"XXX!/000 KKOOOO S  C ?.s33 ? ?KE4 LL0== > > > > ' 5 55s/C  $C10C1c t|tr|St|tr|St SrW)rJ _BaseNetwork_get_networks_keyrK_get_address_keyNotImplemented)objs r get_mixed_type_keyrvfsW"#|$$&$$&&& C & &&##%%% r ceZdZ dZedZedZedZedZdZ dZ e dZ e d Z e d Ze d Ze d Ze d ZdZdS)_IPAddressBaser c, |SrW)_explode_shorthand_ip_stringselfs r explodedz_IPAddressBase.explodedsH00222r c" t|SrWr/r{s r compressedz_IPAddressBase.compressedsI4yyr c, |SrW)_reverse_pointerr{s r reverse_pointerz_IPAddressBase.reverse_pointers $$&&&r cFdt|fz}t|)Nz%200s has no version specifiedtypeNotImplementedErrorr|msgs r rMz_IPAddressBase.versions".$t**>!#&&&r c|dkrd}t|||jfz||jkr!d}t|||j|jfzdS)Nrz-%d (< 0) is not permitted as an IPv%d addressz2%d (>= 2**%d) is not permitted as an IPv%d address)rrfrOrN)r|rrs r _check_int_addressz!_IPAddressBase._check_int_addresssn Q;;AC#C7DM*B$BCC C T^ # #FC#C7D4G+/=+:%:;; ; $ #r cjt|}||krd}t|||||jfzdS)Nz6%r (len %d != %d) is not permitted as an IPv%d address)r1rrf)r|r expected_len address_lenrs r _check_packed_addressz$_IPAddressBase._check_packed_addresssS'll , & &JC#C7K+7+H%HII I ' &r c( |j|j|z z SrW)rO)cls prefixlens r _ip_int_from_prefixz"_IPAddressBase._ip_int_from_prefixs }  :;;r c t||j}|j|z }||z }d|zdz }||kr4|jdz}||d}d}t||z|S)Nr6bigz&Netmask pattern %r mixes zeroes & ones)rErNr%r) rip_inttrailing_zeroesr leading_onesall_onesbyteslendetailsrs r _prefix_from_ip_intz"_IPAddressBase._prefix_from_ip_ints 5V585GII&8 0 Na' 8 # #)Q.Hooh66G:CS7]++ +r c,d|z}t|d)Nz%r is not a valid netmask)r)r netmask_strrs r _report_invalid_netmaskz&_IPAddressBase._report_invalid_netmasks)K7$$$.r c@ |r|s|| t|}n%#t$r||YnwxYwd|cxkr |jksn|||SNr)isasciiisdigitrintrrN)r prefixlen_strrs r _prefix_from_prefix_stringz)_IPAddressBase._prefix_from_prefix_strings %%'' 7M,A,A,C,C 7  ' ' 6 6 6 7M**II 7 7 7  ' ' 6 6 6 6 6 7Y4444#"44444  ' ' 6 6 6sAA21A2cT ||}n%#t$r||YnwxYw ||S#t$rYnwxYw||jz} ||S#t$r||YdSwxYwrW)_ip_int_from_stringrrrrrO)rip_strrs r _prefix_from_ip_stringz%_IPAddressBase._prefix_from_ip_strings  0,,V44FF  0 0 0  ' ' / / / / / 0  **622 2    D  #- 0**622 2 0 0 0  ' ' / / / / / / 0s/;;A A! A!/BB'&B'c t|ttfr ||jfSt|tst |}t |dkr|S|d|jfS)Nr6r)rJbytesrrNtupler3r1)rrs r _split_addr_prefixz!_IPAddressBase._split_addr_prefixsx  gs| , , /C.. .'5)) 7.g66G w<s xr cr |j|jko|j|jkS#t$r tcYSwxYwrW)r9rfrhrtr|others r __eq__z_BaseAddress.__eq__AsP "H )8 7 9 " " "! ! ! ! "s "66ct|tstS|j|jkrt |d|d|j|jkr|j|jkSdSNrGrHF)rJrKrtrfrLr9rs r __lt__z_BaseAddress.__lt__Hsp%.. "! ! =EN * *!TT555*++ + 8uy 8ei' 'ur ct|tstS|t||zSrWrJrrtrrs r __add__z_BaseAddress.__add__T7%%% "! !~~c$ii%/000r ct|tstS|t||z SrWrrs r __sub__z_BaseAddress.__sub__Yrr c@|jjdt|dSN()rrr/r{s r __repr__z_BaseAddress.__repr__^">222CIIII>>r cPt||jSrW)r/_string_from_ip_intr9r{s r __str__z_BaseAddress.__str__as 4++DH55666r c^ttt|jSrW)hashhexrr9r{s r __hash__z_BaseAddress.__hash__ds CDH &&'''r c|j|fSrWrfr{s r rsz_BaseAddress._get_address_keygs t$$r c |j|jffSrW)rr9r{s r rz_BaseAddress.__reduce__js~{**r c |r |ddkrtt||Stddl}|dat|}|s!t |S|\}}}|dkr|j dkrd}nd}|dkr|j }n |j dz}|r ||dzd z z }|r|d z }tt||d |||S) Nresrz(#?)(_?)([xbnX])nr#bxr6r.0) formatr/_address_fmt_rerecompile fullmatchsuper __format__groupsrfrNr) r|fmtrm alternategroupingfmt_basepadlenrs r rz_BaseAddress.__format__ms;  *c"gnn#d))S)) )  " III jj);<>r c\ t|jt|jz dzSr5)rr_rir{s r num_addressesz_BaseNetwork.num_addresses s+44)**S1E-F-FFJJr cFdt|fz}t|)Nz%%200s has no associated address classrrs r rz_BaseNetwork._address_classs$ 6d E!#&&&r c|jSrW)rgr{s r rz_BaseNetwork.prefixlens r c#K |j|jkst|d|dt|tstd|z||st |d|||krdS||jd|j}| \}}||kr||kr||r|V| \}}nI||r|V| \}}ntd|d|d|||kr||k||kr|VdS||kr|VdStd|d|d|) NrGrHz%s is not a network objectz not contained in r-z Error performing exclusion: s1: z s2: z other: ) rfrLrJrq subnet_ofrrrirraAssertionError)r|rs1s2s r address_excludez_BaseNetwork.address_excludes" F}..!TT555*++ +%.. B85@AA At$$ GEFF F D== F5+@+@+@+0??!<==BEkkbEkkr"" 6BB$$ 6BB%n&(bb"""ee&5666EkkbEkk ;;HHHHH 5[[HHHHH!."$""bbb%%"122 2r c |j|jkrt|d|d|j|jkrdS|j|jkrdS|j|jkrdS|j|jkrdSdS)NrGz are not of the same typerer6r)rfrLrirrs r compare_networksz_BaseNetwork.compare_networksgs @ =EN * *!TT555*++ +  %"7 7 72  %"7 7 71 <%- ' '2 <%- ' '1qr c, |j|j|jfSrW)rfrirr{s r rrz_BaseNetwork._get_networks_keys  t3T\BBr r6Nc#K |j|jkr|VdS|9||jkrtd|dkrtd||jz }|dkrtd|j|z}||jkrtd||fzt|j}t|jdz}t|jdz|z }t|||D]}|||f}|VdS)Nznew prefix must be longerr6(cannot set prefixlen_diff and new_prefixrzprefix length diff must be > 0z0prefix length diff %d is invalid for netblock %s) rgrNrrrir_r rr) r|prefixlen_diff new_prefix new_prefixlenstartendstepnew_addrcurrents r raz_BaseNetwork.subnetssR 2 ?d1 1 1JJJ F  !DO++ !<==="" !KLLL'$/9N A  =>> >.8 4. . .B!4F))** *D())$())A-DM""Q&>9eS$//  Hnnh %>??GMMMM  r ch |jdkr|S|9||jkrtd|dkrtd|j|z }|j|z }|dkrtd|j|fz|t |jt |j|zz|fS)Nrznew prefix must be shorterr6r#z;current prefixlen is %d, cannot have a prefixlen_diff of %d)rgrrrrrir)r|r$r%r&s r rZz_BaseNetwork.supernets ( ?a  K  !DO++ !=>>>"" !KLLL!_z9N7 1  M0122 2~~ $ % %T\):):n)L M  r c4 |jjo |jjSrW)ri is_multicastr_r{s r r.z_BaseNetwork.is_multicasts% $14&3 5r c |j|jkrt|d|d|j|jko|j|jkS#t$rtd|d|wxYw)NrGrHz*Unable to test subnet containment between )rfrLrir_rh)ars r _is_subnet_ofz_BaseNetwork._is_subnet_of s 4zQZ''1 J J1 J J JKKK%)::?'1+>> @ 4 4 43'(33/03344 4 4s AA A'c0 |||SrWr1rs r rz_BaseNetwork.subnet_ofs?!!$...r c0 |||SrWr3rs r supernet_ofz_BaseNetwork.supernet_ofsA!!%...r c4 |jjo |jjSrW)ri is_reservedr_r{s r r7z_BaseNetwork.is_reserved% $03&2 4r c4 |jjo |jjSrW)ri is_link_localr_r{s r r:z_BaseNetwork.is_link_local+s% $25&4 6r cP tfdjjDS)Nc3<K|]}j|voj|vVdSrWr ).0 priv_networkr|s r z*_BaseNetwork.is_private..?sWJJ#'<7:)\9JJJJJJr any _constants_private_networksr{s`r is_privatez_BaseNetwork.is_private6sQ JJJJ'+'HJJJJJ Jr c |j SrWrDr{s r is_globalz_BaseNetwork.is_globalC ?""r c4 |jjo |jjSrW)riis_unspecifiedr_r{s r rJz_BaseNetwork.is_unspecifiedNs% $36&5 7r c4 |jjo |jjSrW)ri is_loopbackr_r{s r rLz_BaseNetwork.is_loopbackZr8r )r6N)(rr r rrrrrrrrrr  functoolscached_propertyr_r rrrrrrrrr rrrarZr. staticmethodr1rr5r7r:rDrGrJrLr r r rqrqs ???@@@ ) ) )))) 6 6 6   """CCC L L L777777GGGAAXA>>X>??X?KKXK''X'XI2I2I2V...`CCC3333j''''R 5 5X 5 4 4\ 4////// 4 4X 466X6 J JX J##X# 7 7X 7 4 4X 4 4 4r rqceZdZgZdS)_BaseConstantsN)rr r rCr r r rQrQgsr rQceZdZ dZdZdezdz ZeZiZdZ e dZ e dZ e dZ e d Zd Zed Zed Zd S)_BaseV4r r#r.r6c t|SrWrr{s r rzz$_BaseV4._explode_shorthand_ip_strings4yyr c ||jvrt|tr,|}d|cxkr |jksn||n< ||}n%#t $r||}YnwxYwt| |}||f|j|<|j|Sr) _netmask_cacherJrrNrrrrrrrargrrs r _make_netmaskz_BaseV4._make_netmasks  c( ( (#s## @ Y<<<<#*<<<<<// :::@ # > >s C CII(@@@!$ : :3 ? ?III@"#"9"9)"D"DEEG&-y&8C s #!#&&s A##BBcF |std|d}t|dkrtd|z tt |j|dS#t$r}t|d|dd}~wwxYw)NAddress cannot be empty.r#zExpected 4 octets in %rr in )rr0r1r from_bytesmap _parse_octetr)rroctetsexcs r rz_BaseV4._ip_int_from_strings  ?#$=>> >c"" v;;!  #$=$FGG G J>>#c&6"?"?GG G J J J####vv$>??T I Js-A<< B BB c |std|r|sd}t||zt|dkrd}t||z|dkr |ddkrd}t||zt |d}|d krtd |z|S) NzEmpty octet not permittedz#Only decimal digits permitted in %rz$At most 3 characters permitted in %rrrz%Leading zeros are not permitted in %r zOctet %d (> 255) not permitted)rrrr1r)r octet_strr octet_ints r r`z_BaseV4._parse_octets  :899 9!!## . (9(9(;(; .7CS9_-- - y>>A  8CS9_-- -    !  3 39CS9_-- - 2&& s??= IJJ Jr c | dtt|ddS)Nr\r#r)joinr_r/r%)rrs r rz_BaseV4._string_from_ip_ints3 xxCE!:!:;;<<.?'LL343;LLLLLLr r@r{s`r rDzIPv4Address.is_private5s2 LLLL$/*KLLLLLLr c.||jjvo|j SrW)rB_public_networkrDr{s r rGzIPv4Address.is_globalAs4?::R4??RRr c ||jjvSrWrB_multicast_networkr{s r r.zIPv4Address.is_multicastF t999r c$ ||jjkSrW)rB_unspecified_addressr{s r rJzIPv4Address.is_unspecifiedQs t;;;r c ||jjvSrW)rB_loopback_networkr{s r rLzIPv4Address.is_loopback\s t888r c ||jjvSrWrB_linklocal_networkr{s r r:zIPv4Address.is_link_localf t999r N)rr r rrzrr|r7rM lru_cacherDrGr.rJrLr:r r r rrs69&I!6!6!6F**X*99X9YMMXMYSSXS::X:<<X<99X9::X:::r rceZdZdZejdZdZdZdZ dZ e j Z e dZe dZe d Ze d Zd S) rc||\}}t||t||fd|_|jj|_|jj|_dSNF)r)rrrzrrrrgr|rr2masks r rzzIPv4Interface.__init__sc,,W55 dT4((("D$<>>> |+ ,1r c|jjSrWrr r{s r r zIPv4Interface.hostmask{ |$$r cJd||j|jfzSrrr9rgr{s r rzIPv4Interface.__str__s+$2248<</++ +r ct||}|tus|s|S |j|jkS#t$rYdSwxYwr)rrrtrrhr|r address_equals r rzIPv4Interface.__eq__e#**477 N * *- *  <5=0 0   55  : AAct||}|turtS |j|jkp|j|jko|S#t$rYdSwxYwr)rrrtrrhr|r address_lesss r rzIPv4Interface.__lt__sz"))$66 > ) )! ! L5=0CLEM1Bl D   55 s!A AAcht|j|jt|jjfSrWrr9rgrrrir{s r rzIPv4Interface.__hash__(TXtDL4P0Q0QRSSSr c*t|jSrW)rr9r{s r r>zIPv4Interface.ip48$$$r cJ||jd|jSrrr{s r rzIPv4Interface.with_prefixlen,2248<<<<//+ +r cJ||jd|jSrrr9rr{s r rzIPv4Interface.with_netmask,2248<<<<,,( (r cJ||jd|jSrrr9r r{s r rzIPv4Interface.with_hostmask,2248<<<<--) )r N)rr r rzrMrNr rrrrrxrrr>rrrr r r rrqs222%%%+++      TTT *J %%X%++X+((X())X)))r rc\eZdZ eZddZeejdZ dS)rTc ||\}t|_||\|_|_t |j}|t |jz|kr=|rtd|zt|t |jz|_|j|jdz kr|j |_ dS|j|jkr fd|_ dSdS)N%s has host bits setr6c$tgSrW)rr2sr z&IPv4Network.__init__..+d"3"3!4r ) rrrirYrrgrrrNrrr|rrrr|r2s @r rzzIPv4Network.__init__s! D,,W55 d*400(,(:(:4(@(@% doT)** C %% % / / F !7$!>???'2636t|3D3D4E(F(F$ ?t2Q6 7 7DJJJ _!4 5 54444DJJJ6 5r cn |jtdvo|jtdv o|j S)N 100.64.0.0/10)rirr_rDr{s r rGzIPv4Network.is_globalsM )[-I-IIK*k/.J.JJL$O# %r NT) rr r rrrzrrMrrGr r r rrsf !N25252525hY % %X % % %r rceZdZedZedZedZedZededededededed ed ed ed ed edededgZedZ e dZ dS)_IPv4Constantsz169.254.0.0/16z 127.0.0.0/8z 224.0.0.0/4rz 0.0.0.0/8z 10.0.0.0/8z 172.16.0.0/12z 192.0.0.0/29z192.0.0.170/31z 192.0.2.0/24z192.168.0.0/16z 198.18.0.0/15z198.51.100.0/24z203.0.113.0/24z 240.0.0.0/4z255.255.255.255/32z0.0.0.0N) rr r rrrrrrCrrrr r r rrs8$%566# M22$]33!k/22O  K   L!! M"" $%% O$$ N## $%% N## $%% O$$ %&& $%% M"" ()) "$ M22&;y11r rceZdZ dZdZdezdz ZdZedZ eZ iZ e dZ e dZe d Ze d Ze dd Zd ZdZedZedZedZd S)_BaseV6r rIr.r6r0123456789ABCDEFabcdefc8 ||jvrt|tr,|}d|cxkr |jksn||n||}t ||}||f|j|<|j|Sr)rVrJrrNrrrrrWs r rYz_BaseV6._make_netmask=s  c( ( (#s## @ Y<<<<#*<<<<<// :::::3?? !#"9"9)"D"DEEG&-y&8C s #!#&&r c |std|d}d}t||krd||fz}t|d|dvr t|j}n'#t$r}t|d|dd}~wwxYw|d|d z d zz|d|d zz|jd z}t||krd |d z |fz}t|d}td t|d z D]"} || s|d |z}t|| }#||} t||z d z } |ds| d z} | rd}t||z|ds| d z} | rd}t||z|j| | zz } | d krd}t||jd z |fzn~t||jkrd}t||j|fz|dsd}t||z|dsd}t||zt|} d} d} d} t| D]%} | d z} | | || z} &| d | zz} t| dD]%} | d z} | | || z} &| S#t$r}t|d|dd}~wwxYw)Nr[:rdz At least %d parts expected in %rr\rer]%xr*r6z!At most %d colons permitted in %rz At most one '::' permitted in %rrz0Leading ':' only permitted as part of '::' in %rz1Trailing ':' only permitted as part of '::' in %rz/Expected at most %d other parts with '::' in %rz,Exactly %d parts expected without '::' in %r) rr0r1rrYr9r\ _HEXTET_COUNTr _parse_hextetr)rrparts _min_partsripv4_intrb _max_parts skip_indexiparts_hiparts_lo parts_skippedrs r rz_BaseV6._ip_int_from_stringQs  ?#$=>> > S!! u:: " "4 F7KKC#C(( ( %)   N&uyy{{337$ N N N'ccc66(BCCM N LL(b.F!:; < < < LLF!23 4 4 4 &* u:: " "5Av8NNC#C(( ( q#e**q.))  A8 )??T I Js1&B B)B$$B)0A7K(( L 2LL c |j|std|zt|dkrd}t||zt |dS)NzOnly hex digits permitted in %rr#z$At most 4 characters permitted in %rr*) _HEX_DIGITS issupersetrr1r)r hextet_strrs r rz_BaseV6._parse_hextetsq ))*55 M>KLL L z??Q  8CS:-.. .:r"""r c d}d}d}d}t|D]'\}}|dkr|dz }|dkr|}||kr|}|}#d}d}(|dkr2||z}|t|kr|dgz }dg|||<|dkrdg|z}|S)Nrerrr6) enumerater1) rhextetsbest_doublecolon_startbest_doublecolon_lendoublecolon_startdoublecolon_lenindexhextetbest_doublecolon_ends r _compress_hextetsz_BaseV6._compress_hextetss "$ &w// ' 'ME6}}1$$**(-%"%999+:(->*"#$&!! ! # #$:$8%9 $s7||33B4DF4G*+?? @%**$.r Nc |t|j}||jkrtdd|zfdt dddD}||}d|S)NzIPv6 address is too large%032xc Lg|] }dt||dzdz!S)rr#r*)rr=rhex_strs r z/_BaseV6._string_from_ip_int..s4KKKa4#ga!enb111KKKr rrr#r)rr9rOrrrrj)rrrrs @r rz_BaseV6._string_from_ip_ints  >\\F CM ! !899 9F"KKKK5B??KKK''00xx   r c t|trt|j}n9t|trt|j}nt|}||}d|zfdtdddD}t|ttfrdd ||j fzSd |S)Nrc*g|]}||dzS)r#r rs r rz8_BaseV6._explode_shorthand_ip_string..0s%999A1Q3999r rrr#rr) rJrr/rir r>rrrqrjrg)r|rrrrs @r rzz$_BaseV6._explode_shorthand_ip_strings  dK ( ( -..FF m , , \\FFYYF))&11F"9999q"a999 d\=9 : : @chhuoot?? ?xxr c| |jddddd}d|dzS)Nrerrr\z .ip6.arpa)r}replacerj)r| reverse_charss r rz_BaseV6._reverse_pointer5sB  ddd+33C<< xx &&44r cx |d\}}}|sd}n|rd|vrtd|z||fS)N%zInvalid IPv6 address: "%r") partitionr)rr2sepscope_ids r _split_scope_idz_BaseV6._split_scope_id>sb %..s33c8 KHH KSH__#$@6$IJJ JX~r c|jSrWrnr{s r roz_BaseV6.max_prefixlenRrpr c|jSrWrr{s r rMz_BaseV6.versionVrrr rW)rr r rrf IPV6LENGTHrOr frozensetrrNrVrrYrrrrrzrrOrrrorMr r r rr)sUIHJ!#IM)455KNN''['&eJeJ[eJN##[#2--[-^!!![!20555\&##X#Xr rceZdZ dZdZfdZdZfdZdZe dZ e dZ e d Z e d Z e d Ze d Ze ejd Ze dZe dZe dZe dZe dZe dZxZS)r)r9 _scope_idruc t|tr%||||_d|_dSt|t r?||dt|d|_d|_dSt|}d|vrtd|| |\}|_| ||_dS)Nr*rr-rw) rJrrr9rrrr^r/rrrrxs r rzzIPv6Address.__init__as " gs # #   # #G , , ,DH!DN F gu % %   & &w 3 3 3~~gu55DH!DN Fw<< (??#$D$D$DEE E#'#7#7#A#A $.++H55r cpt}|jr |dz|jzn|S)Nr)rrr)r|rrs r rzIPv6Address.__str__s3""04Jv|dn,,FJr c8t|j|jfSrW)rr9rr{s r rzIPv6Address.__hash__sTXt~.///r ct|}|turtS|sdS|jt |ddkS)NFr)rrrtrgetattr)r|rrrs r rzIPv6Address.__eq__sOu-- N * *! ! 5~ T!B!BBBr c0|jt|ffSrWrr{s r rzIPv6Address.__reduce__sT --r c |jSrW)rr{s r rzIPv6Address.scope_ids ~r c, t|jSrW)r+r9r{s r r|zIPv6Address.packedr}r c ||jjvSrWrr{s r r.zIPv6Address.is_multicastrr cP tfdjjDS)Nc3 K|]}|vV dSrWr )r=rr|s r r?z*IPv6Address.is_reserved..s'II419IIIIIIr )rArB_reserved_networksr{s`r r7zIPv6Address.is_reserveds2 IIIIdo&HIIIIIIr c ||jjvSrWrr{s r r:zIPv6Address.is_link_localrr c ||jjvSrW)rB_sitelocal_networkr{s r is_site_localzIPv6Address.is_site_locals t999r cp j}||jStfdjjDS)Nc3 K|]}|vV dSrWr rs r r?z)IPv6Address.is_private..rr ) ipv4_mappedrDrArBrC)r|r s` r rDzIPv6Address.is_privatesI &  ") )LLLL$/*KLLLLLLr c |j SrWrFr{s r rGzIPv6Address.is_globalrHr c |jdkSrrr{s r rJzIPv6Address.is_unspecified x1}r c |jdkSr5rr{s r rLzIPv6Address.is_loopbackrr cR |jdz dkrdSt|jdzS)Nrrr9rr{s r r zIPv6Address.ipv4_mapped s4  HNv % %448j0111r c |jdz dkrdSt|jdz dzt|jdzfS)N`i @rrr{s r teredozIPv6Address.teredosS  HNz ) )4TX^z9::TXI 2335 5r cX |jdz dkrdSt|jdz dzS)Npi Prrr{s r sixtofourzIPv6Address.sixtofour's8  HO & &4DHNj8999r )rr r rrzrrrrrrr|r.r7r:r rMrrDrGrJrLr rrrrs@r rr[s 93I&6&6&6PKKKKK000CCCCC...  X **X*::X:JJXJ::X: : :X :Y M MX M##X#XX 2 2X 2 5 5X 5 : :X : : : : :r rceZdZdZejdZfdZdZdZ dZ e j Z e dZe dZe d Ze d Ze d Ze d ZxZS) r c||\}}t||t||fd|_|jj|_|jj|_dSr)rrrzrrrrgrs r rzzIPv6Interface.__init__7rr c|jjSrWrr{s r r zIPv6Interface.hostmask?rr cXdt|jfzSr)rrrg)r|rs r rzIPv6Interface.__str__Cs*%''//++/++ +r ct||}|tus|s|S |j|jkS#t$rYdSwxYwr)rrrtrrhrs r rzIPv6Interface.__eq__Grrct||}|tur|S |j|jkp|j|jko|S#t$rYdSwxYwr)rrrtrrhrs r rzIPv6Interface.__lt__Ssz"))$66 > ) )  L5=0CLEM1Bl D   55 s!A AAcht|j|jt|jjfSrWrr{s r rzIPv6Interface.__hash___rr c*t|jSrW)rr9r{s r r>zIPv6Interface.ipdrr cJ||jd|jSrrr{s r rzIPv6Interface.with_prefixlenhrr cJ||jd|jSrrr{s r rzIPv6Interface.with_netmaskmrr cJ||jd|jSrrr{s r rzIPv6Interface.with_hostmaskrrr c0|jdko |jjSr)r9rrJr{s r rJzIPv6Interface.is_unspecifiedwsx1}<!<rrrrJrLrrs@r r r 5s@222%%%+++++      TTT *J %%X%++X+((X())X)==X=::X:::::r r c8eZdZ eZddZdZedZdS)rTc ||\}t|_||\|_|_t |j}|t |jz|kr=|rtd|zt|t |jz|_|j|jdz kr|j |_ dS|j|jkr fd|_ dSdS)Nrr6c$tgSrW)rrsr rz&IPv6Network.__init__..rr ) rrrirYrrgrrrNrrrs @r rzzIPv6Network.__init__s  <,,W55 d*400(,(:(:4(@(@% doT)** C %% % / / F !7$!>???'2636t|3D3D4E(F(F$ ?t2Q6 7 7DJJJ _ 3 3 34444DJJJ4 3r c#K t|j}t|j}t|dz|dzD]}||VdSr5rrs r rzIPv6Network.hostssu d*++.// w{IM22 ) )A%%a(( ( ( ( ( ) )r c4 |jjo |jjSrW)rir r_r{s r r zIPv6Network.is_site_locals% $25&4 6r Nr) rr r rrrzrrr r r r rrs_ !N.5.5.5.5` ) ) ) 6 6X 6 6 6r rcLeZdZedZedZededededededed ed ed edg Zed ed edededededededededededededgZedZdS)_IPv6Constantsz fe80::/10zff00::/8z::1/128z::/128z ::ffff:0:0/96z100::/64z 2001::/23z 2001:2::/48z 2001:db8::/32z 2001:10::/28zfc00::/7z::/8z100::/8z200::/7z400::/6z800::/5z1000::/4z4000::/3z6000::/3z8000::/3zA000::/3zC000::/3zE000::/4zF000::/5zF800::/6zFE00::/9z fec0::/10N) rr r rrrrCrrr r r r/r/s$[11$Z00  I H O$$ J K   M"" O$$ N## J K      F[[33 I I 6 6 I J 7 7 JZ!8!8 JZ!8!8 JZ!8!8 JZ!8!8 J %[11r r/r)$ __version__rMrsrrrrrrr!r'r+r3r?rErUrcrorvrxrtotal_orderingrKrqrQrBrSrrrrrrr rr/r r r r2sW    00000 00000000 000SSS:SSSS:UUUDCCC( C C C ( : : : 444n...b363636l2o,o,o,o,o,o,o,o,d hNhNhNhNhN>hNhNhNV D4D4D4D4D4>D4D4D4N ) JJJJJJJJZr:r:r:r:r:'<r:r:r:j@)@)@)@)@)K@)@)@)FO%O%O%O%O%'<O%O%O%d22222222>( ' ooooooood W:W:W:W:W:'<W:W:W:tH:H:H:H:H:KH:H:H:VY6Y6Y6Y6Y6'<Y6Y6Y6x22222222B( ' r