\h,UddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z GddZde efdZdefdZdefdZd edefd Zej*d Ze eefed <Gd de Zde efdZde efdZde efdZdede eeffdZej<de eeffdZded ededefdZ ddddZ!ded ede efdZ"y)N)IODictIterator NamedTupleOptionalTuplecheZdZGddeZdZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd eeddfdZy)_ELFFileHeaderceZdZdZy)$_ELFFileHeader._InvalidELFFileHeaderz7 An invalid ELF file header was found. N)__name__ __module__ __qualname____doc__c/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py_InvalidELFFileHeaderr s rriFLE(>l~iifilereturnNcfdtdtffd }|d|_|j|jk7rtj |d|_|j |j|jhvrtj |d|_ |j|j|jhvrtj |d|_ |d|_ |d|_jd|_|j|jk(rdnd}|j|jk(rd nd}|j|jk(rd nd }|j |jk(r|n|}|||_|||_|||_|||_|||_|||_|||_|||_|||_|||_|||_|||_|||_y) Nfmtrc jtj|}tj||}|dS#tj$rt j wxYw)Nr)readstructcalcsizeunpackerrorr r)rdataresultrs rr#z'_ELFFileHeader.__init__..unpack$s_ =yy!56*0--T*B!9 << =$::<< =s :A(A*z>IBzHzQ)strint e_ident_magicELF_MAGIC_NUMBERr r e_ident_class ELFCLASS32 ELFCLASS64 e_ident_data ELFDATA2LSB ELFDATA2MSBe_ident_version e_ident_osabie_ident_abiversionr e_ident_pade_type e_machine e_versione_entrye_phoffe_shoffe_flagse_ehsize e_phentsizee_phnum e_shentsizee_shnum e_shstrndx)selfrr#format_hformat_iformat_qformat_ps ` r__init__z_ELFFileHeader.__init__#s   $D\   !6!6 6 668 8#C[   doot%G G 668 8"3K   T%5%5t7G7G$H H 668 8%c{#C["(+99Q<,,0@0@@4d,,0@0@@4d,,0@0@@4d#11T__D8(X& ))h' h' h' h' x( !(+h' !(+h'  *r)r rr ValueErrorrr,r.r/r1r2EM_386EM_S390EM_ARM EM_X86_64EF_ARM_ABIMASKEF_ARM_ABI_VER5EF_ARM_ABI_FLOAT_HARDrbytesrIrrrr r se  "JJKK FG FIN O&&+RY&+4&+rr rc ttjd5}t|}ddd|S#1swYSxYw#tt tj f$rYywxYw)Nrb)opensys executabler OSError TypeErrorr)f elf_headers r_get_elf_headerr\Lsa #..$ ' +1'*J +   +  Y D D Es#? 2?<??A A cft}|y|j|jk(}||j|jk(z}||j |j k(z}||j|jz|jk(z}||j|jz|jk(z}|SNF) r\r-r.r0r1r8rMr=rOrPrQr[r&s r_is_linux_armhfr`Us!"J  % %)>)> >F j%%)?)???F j""j&7&777F Z666  # #$$F Z===  ) )**F Mrct}|y|j|jk(}||j|jk(z}||j |j k(z}|Sr^)r\r-r.r0r1r8rKr_s r_is_linux_i686rbhsd "J  % %)>)> >F j%%)?)???F j""j&7&777F MrarchcF|dk(r tS|dk(r tS|dvS)Narmv7li686>ppc64s390xx86_64aarch64ppc64le)r`rb)rcs r_have_compatible_abirlrs/ x   v~ E EErcy)N2rrrrrosr_LAST_GLIBC_MINORc"eZdZUeed<eed<y) _GLibCVersionmajorminorN)r rrr*__annotations__rrrrrrrs J Jrrrc tjd}|J|j\}}|S#ttt t f$rYywxYw)zJ Primary implementation of glibc_version_string using os.confstr. CS_GNU_LIBC_VERSIONN)osconfstrsplitAssertionErrorAttributeErrorrXrJ)version_string_versions r_glibc_version_string_confstrrsX$9:)))#))+ 7 N NGZ @s,0A  A c ddl} |jd} |j}|j |_|}t|ts|jd}|S#t$rYywxYw#t$rYywxYw#t $rYywxYw)zG Fallback implementation of glibc_version_string using ctypes. rNascii) ctypes ImportErrorCDLLrXgnu_get_libc_versionr|c_char_prestype isinstancer)decode)rprocess_namespacer version_strs r_glibc_version_string_ctypesrs""KK-0EE$*?? +-K k3 '!((1 G $  s3A A/ A> A,+A,/ A;:A;> B  B c.txs tS)z9Returns glibc version string, or None if not using glibc.)rrrrr_glibc_version_stringrs ( * L.J.LLrrctjd|}|stjd|ztyt |j dt |j dfS)a3Parse glibc version. We use a regexp instead of str.split because we want to discard any random junk that might come after the minor version -- this might happen in patched/forked versions of glibc (e.g. Linaro's version of glibc uses version strings like "2.20-2014.11"). See gh-3588. z$(?P[0-9]+)\.(?P[0-9]+)z=Expected glibc version with 2 components major.minor, got: %srrsrt)rematchwarningswarnRuntimeWarningr*group)rms r_parse_glibc_versionrs` 8+FA   $ %   qwww #aggg&6"7 77rc2t}|yt|S)Nr)rr)rs r_get_glibc_versionrs')K  ,,rnamerct}||kry ddl}t|dr'|j |d|d|}| t |Sy|t ddk(r!t|drt |jS|t dd k(r!t|d rt |jS|t dd k(r!t|d rt |jSy#t$rYywxYw) NFrTmanylinux_compatiblerrmanylinux1_compatible manylinux2010_compatiblemanylinux2014_compatible) r _manylinuxrhasattrrboolrrrrr)rrcr sys_glibcrr&s r_is_compatiblers"$I7z1200WQZN  < -1%% :6 7 889 9-2&& :9 : ;;< <-2&& :9 : ;;< < ! sC C&%C& manylinux2014 manylinux2010 manylinux1))rr)rr)rrlinuxc#Kt|sytdd}|dvr tdd}tt}|g}t|jdz ddD]&}t |}|j t||(|D]}|j|jk(r |j}nd}t|j|dD]|}t|j|} dj| } t| || r|jd| | tvsRt| } t| || si|jd| ~yw) Nr>rfrirrzmanylinux_{}_{}r) rlrrrrangersrpappendrtformatrreplace_LEGACY_MANYLINUX_MAP) rrctoo_old_glibc2 current_glibcglibc_max_list glibc_major glibc_minor glibc_max min_minor glibc_versiontag legacy_tags r platform_tagsr sN  %"1b)N !!&q!,!#5#78M#_N]0014a<G ' 4 mKEFG$= ??n22 2&,,II )R@ =K))//;GM*#**M:Cc47mmGS11 552=A !*dMB--<< = =sDEE.E)# collections functoolsrxrr!rVrtypingrrrrrrr r\rr`rbr)rl defaultdictrpr*rurrrrrr lru_cacherrrrrrrrsf BB:+:+z.1&FsFtF%GJ x}&)hsm)XMx}M 8c8eCHo8&-E#s(O--C-D8   "="=C"=HSM"=r