Ë
    fùP  ã                   ó  — d dl mZ d dlZddlmZ  G d„ dej                  «      Z G d„ dej                  «      Z G d	„ d
ej                  «      Z
 G d„ dej                  «      Z G d„ d«      Zdd„Zd„ Zd„ Z G d„ d«      Zdd„Zy)é    )ÚlinesepNé   )Úget_table_type_namec                   óD   — e Zd Zdej                  fdej
                  fgZy)ÚOffsetUnionÚoffsetuÚoffsetN)Ú__name__Ú
__module__Ú__qualname__ÚctÚc_uint16Úc_int16Ú_fields_© ó    ú2/usr/lib/python3/dist-packages/bcc/disassembler.pyr   r      s   „ Ø˜BŸK™KÐ(¨8°R·Z±ZÐ*@ÐA�Hr   r   c                   óD   — e Zd Zdej                  fdej
                  fgZy)ÚImmUnionÚimmuÚimmN)r
   r   r   r   Úc_uint32Úc_int32r   r   r   r   r   r      s   „ Ø˜Ÿ™Ð%¨¨r¯z©zÐ':Ð;�Hr   r   c                   óv   — e Zd ZdZdZdej                  fdej                  dfdej                  dfdefdefgZ	y	)
ÚBPFInstrFieldsr   )ÚoÚiÚopcodeÚdsté   Úsrcr   r   N)
r
   r   r   Ú_pack_Ú_anonymous_r   Úc_uint8r   r   r   r   r   r   r   r      sJ   „ Ø€FØ€KØ˜2Ÿ:™:Ð&Ø˜Ÿ
™
 AÐ&Ø˜Ÿ
™
 AÐ&Ø�kÐ"Ø�h�ð	!�Hr   r   c                   ó8   — e Zd ZdZdZdefdej                  fgZy)ÚBPFInstrr   ÚsÚinstrN)	r
   r   r   r"   r#   r   r   Úc_uint64r   r   r   r   r&   r&   "   s$   „ Ø€FØ€KØ�nÐ%¨°·±Ð'=Ð>�Hr   r&   c                   óX  — e Zd ZdZg d¢Zi dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#d$“i d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“dEdF“¥i dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“d]d^“d_d`“dadb“dcdd“dedf“dgdh“¥i didj“dkdl“dmdn“dodp“dqdr“dsdt“dudv“dwdx“dydz“d{d|“d}d~“dd€“d�d‚“dƒd„“d…d†“d‡dˆ“d‰dŠ“¥i d‹dŒ“d�dŽ“d�d�“d‘d’“d“d”“d•d–“d—d˜“d™dš“d›dœ“d�dž“dŸd “d¡d¢“d£d¤“d¥d¦“d§d¨“d©dª“d«d¬“¥d­d®d¯d°d±d²d³d´dµd¶d·d¶d¸œ¥Zed¹„ «       Zyº)»Ú
BPFDecoderr   )]ÚunspecÚmap_lookup_elemÚmap_update_elemÚmap_delete_elemÚ
probe_readÚktime_get_nsÚtrace_printkÚget_prandom_u32Úget_smp_processor_idÚskb_store_bytesÚl3_csum_replaceÚl4_csum_replaceÚ	tail_callÚclone_redirectÚget_current_pid_tgidÚget_current_uid_gidÚget_current_commÚget_cgroup_classidÚskb_vlan_pushÚskb_vlan_popÚskb_get_tunnel_keyÚskb_set_tunnel_keyÚperf_event_readÚredirectÚget_route_realmÚperf_event_outputÚskb_load_bytesÚget_stackidÚ	csum_diffÚskb_get_tunnel_optÚskb_set_tunnel_optÚskb_change_protoÚskb_change_typeÚskb_under_cgroupÚget_hash_recalcÚget_current_taskÚprobe_write_userÚcurrent_task_under_cgroupÚskb_change_tailÚskb_pull_dataÚcsum_updateÚset_hash_invalidÚget_numa_node_idÚskb_change_headÚxdp_adjust_headÚprobe_read_strÚget_socket_cookieÚget_socket_uidÚset_hashÚ
setsockoptÚskb_adjust_roomÚredirect_mapÚsk_redirect_mapÚsock_map_updateÚxdp_adjust_metaÚperf_event_read_valueÚperf_prog_read_valueÚ
getsockoptÚoverride_returnÚsock_ops_cb_flags_setÚmsg_redirect_mapÚmsg_apply_bytesÚmsg_cork_bytesÚmsg_pull_dataÚbindÚxdp_adjust_tailÚskb_get_xfrm_stateÚ	get_stackÚskb_load_bytes_relativeÚ
fib_lookupÚsock_hash_updateÚmsg_redirect_hashÚsk_redirect_hashÚlwt_push_encapÚlwt_seg6_store_bytesÚlwt_seg6_adjust_srhÚlwt_seg6_actionÚ	rc_repeatÚ
rc_keydownÚskb_cgroup_idÚget_current_cgroup_idÚget_local_storageÚsk_select_reuseportÚskb_ancestor_cgroup_idÚsk_lookup_tcpÚsk_lookup_udpÚ
sk_releaseÚmap_push_elemÚmap_pop_elemÚmap_peek_elemÚmsg_push_dataÚmsg_pop_dataÚrc_pointer_relr    )Úadd32Údstimmú+=é    é   )ÚjaÚjoffNé@   é   )ÚaddrŠ   r‹   r�   é   )r‰   Údstsrcr‹   rŒ   é   )r’   r”   r‹   r�   é   )Úsub32rŠ   ú-=rŒ   é   )ÚjeqÚ
jdstimmoffú==r�   é   )ÚsubrŠ   r˜   r�   é   )Úlddwr    Nr�   é   )r—   r”   r˜   rŒ   é   )rš   Ú
jdstsrcoffrœ   r�   é   )rž   r”   r˜   r�   rŒ   )ÚldabswÚldabsNrŒ   é$   )Úmul32rŠ   ú*=rŒ   é%   )Újgtr›   ú>r�   é'   )ÚmulrŠ   r©   r�   é(   )Úldabshr¦   Né   é,   )r¨   r”   r©   rŒ   é-   )r«   r£   r¬   r�   é/   )r®   r”   r©   r�   é0   )Úldabsbr¦   Né   é4   )Údiv32rŠ   ú/=rŒ   é5   )Újger›   ú>=r�   é7   )ÚdivrŠ   rº   r�   é8   )Úldabsdwr¦   Nr�   é<   )r¹   r”   rº   rŒ   é=   )r¼   r£   r½   r�   é?   )r¿   r”   rº   r�   r�   )ÚldindwÚldindNrŒ   éD   )Úor32Ú	dstimm_bwú|=rŒ   éE   )Újsetr›   ú&r�   éG   )ÚorrÉ   rÊ   r�   éH   )ÚldindhrÆ   Nr±   éL   )rÈ   r”   rÊ   rŒ   éM   )rÌ   r£   rÍ   r�   éO   )rÏ   r”   rÊ   r�   éP   )ÚldindbrÆ   Nr·   éT   )Úand32rÉ   ú&=rŒ   éU   )Újner›   ú!=r�   éW   )ÚandrÉ   rÙ   r�   éX   )ÚldinddwrÆ   Nr�   é\   )rØ   r”   rÙ   rŒ   é]   )rÛ   r£   rÜ   r�   é_   )rÞ   r”   rÙ   r�   éa   )ÚldxwÚ
ldstsrcoffNrŒ   éb   )ÚstwÚ
sdstoffimmNrŒ   éc   )ÚstxwÚ
sdstoffsrcNrŒ   éd   )Úlsh32rŠ   ú<<=rŒ   ée   )Újsgtr›   ús>r�   ég   )ÚlshrŠ   rï   r�   éi   )Úldxhræ   Nr±   éj   )Ústhré   Nr±   ék   )Ústxhrì   Nr±   él   )rî   r”   rï   rŒ   ém   )rñ   r£   rò   r�   éo   )rô   r”   rï   r�   éq   )Úldxbræ   Nr·   ér   )Ústbré   Nr·   és   )Ústxbrì   Nr·   ét   )Úrsh32rŠ   ú>>=rŒ   éu   )Újsger›   ús>=r�   éw   )ÚrshrŠ   r  r�   éy   )Úldxdwræ   Nr�   éz   )Ústdwré   Nr�   é{   )Ústxdwrì   Nr�   é|   )r  r”   r  rŒ   é}   )r  r£   r	  r�   é   )r  r”   r  r�   é„   )Úneg32r   ú~rŒ   é…   )Úcallr  Nr�   é‡   )Únegr   r  r�   é”   )Úmod32rŠ   ú%=rŒ   é•   )Úexitr   Nr�   é—   )ÚmodrŠ   r  r�   éœ   )r  r”   r  rŒ   éŸ   )r"  r”   r  r�   é¤   )Úxor32rÉ   ú^=rŒ   é¥   )Újltr›   ú<r�   é§   )ÚxorrÉ   r'  r�   é¬   )r&  r”   r'  rŒ   é­   )r)  r£   r*  r�   é¯   )r,  r”   r'  r�   é´   )Úmov32rŠ   ú=rŒ   éµ   )Újler›   ú<=r�   é·   )ÚmovrŠ   r2  r�   )r1  r”   r2  rŒ   )r4  r£   r5  r�   )r7  r”   r2  r�   )Úarsh32rŠ   ús>>=rŒ   )Újsltr›   ús<r�   )ÚarshrŠ   r9  r�   )r8  r”   r9  rŒ   )r:  r£   r;  r�   )r<  r”   r9  r�   )Újsler›   zs<=r�   )Úendian32r”   ÚendianrŒ   )é¼   é½   é¿   éÄ   éÅ   éÇ   éÌ   éÍ   éÏ   éÕ   éÜ   éÝ   c                 ó   — 	 | j                   |j                     \  }}}}|dk(  rd|j                  ||j                  fz  dfS |dk(  rd|j                  ||j                  fz  dfS |dk(  r&dd|j
                  z  ||j
                  z   d	z   fz  dfS |d
k(  rd|j                  ||j                  fz  dfS |dk(  r=d|j                  ||j                  d|j
                  z  ||j
                  z   d	z   fz  dfS |dk(  r=d|j                  ||j                  d|j
                  z  ||j
                  z   d	z   fz  dfS |dk(  rh|€t        d«      ‚|j                  dk(  rd|j                  |j                  fz  d	fS |j                  dz  |j                  z  }d|j                  |fz  d	fS |dk(  rd|›d|j                  ›d�dfS |dk(  r!d||j                  d|j                  z  fz  dfS |dk(  r,d|j                  ||j                  d|j
                  z  fz  dfS |dk(  r,d||j                  d|j
                  z  |j                  fz  dfS |dk(  r,d ||j                  d|j
                  z  |j                  fz  dfS |d!k(  rd"|j                  |||j                  fz  dfS |d#k(  r[|j                  | j                  k7  r,	 d$|| j                  |j                     |j                  fz  dfS |›d&d|j                  z  ›�dfS |d'k(  r|dfS t        d(«      ‚# t        $ r d%||j                  fz  dfcY S w xY w# t        $ r d)|j                  z  cY S w xY w)*NrŠ   z	r%d %s %dr   rÉ   zr%d %s 0x%xr�   zgoto %s <%d>z%+dr   r”   z
r%d %s r%dr›   zif r%d %s %d goto pc%s <%d>r£   zif r%d %s r%d goto pc%s <%d>r    z1lddw requires two instructions to be disassembledzr%d = <map at fd #%d>rŒ   z
r%d = 0x%xr¦   zr0 = *(uz*)skb[ú]rÆ   zr0 = *(u%d*)skb[r%d %s]ræ   zr%d = *(u%d*)(r%d %s)ré   z*(u%d*)(r%d %s) = %drì   z*(u%d*)(r%d %s) = r%dr   zr%d = %s (u%s)r%dr  z%s bpf_%s#%dz%s <unknown helper #%d>ú r   zunknown opcode classzunknown <0x%x>)Úopcodesr   r   r   r   r	   r!   Ú	ExceptionÚBPF_PSEUDO_CALLÚbpf_helpersÚ
IndexErrorÚKeyError)	Úclsr   ÚwÚw1ÚnameÚopclassÚopÚbitsr   s	            r   ÚdecodezBPFDecoder.decodeé   sþ  € ðF	1Ø&)§k¡k°!·(±(Ñ&;Ñ#ˆD�'˜2˜tØ˜(Ò"Ø" a§e¡e¨R°·±Ð%7Ñ7¸Ð:Ð:à˜KÒ'Ø$¨¯©¨r°1·6±6Ð':Ñ:¸AÐ=Ð=à˜FÒ"Ø%¨°!·(±(Ñ);Ø)*¨Q¯X©X©¸Ñ)9ð);ñ ;Ø<=ð>ð >ð ˜HÒ$Ø# q§u¡u¨b°!·%±%Ð&8Ñ8¸!Ð;Ð;à˜LÒ(Ø4¸¿¹¸rÀ1Ç5Á5Ø6;¸q¿x¹xÑ6HØ67¸!¿(¹(±lÀQÑ6Fð8Hñ HàIJðKð Kð ˜LÒ(Ø5¸¿¹ÀÀAÇEÁEØ7<ÀÇÁÑ7IØ78¸1¿8¹8±|ÀaÑ7Gð9Iñ IàJKðLð Lð ˜FÒ"ð �:Ü#Ð$WÓXÐXØ—6‘6˜Q’;Ø2°a·e±e¸Q¿U¹U°^ÑCÀQÐFÐFØ—v‘v ‘| q§u¡uÑ,�Ø# q§u¡u¨c lÑ2°AÐ5Ð5à˜GÓ#Ú04°a·e³eÐ<¸aÐ?Ð?à˜GÒ#Ø0°D¸!¿%¹%Ø49¸Q¿U¹U±Oð4Eñ EØFGðHð Hð ˜LÒ(Ø.°!·%±%¸¸q¿u¹uØ27¸1¿8¹8Ñ2Dð2Fñ FØGHðIð Ið ˜LÒ(Ø-°°q·u±uØ16¸!¿(¹(Ñ1CÀQÇUÁUð1Lñ LØMNðOð Oð ˜LÒ(Ø.°$¸¿¹Ø27¸1¿8¹8Ñ2DÀaÇeÁeð2Mñ MØNOðPð Pð ˜EÒ!Ø*¨a¯e©e°R¸¸q¿u¹uÐ-EÑEÀqÐHÐHà˜FÒ"Ø—5‘5˜C×/Ñ/Ò/ðKØ-°°s·±ÀqÇvÁvÑ7NÐPQ×PVÑPVÐ0WÑWÐYZÐZÐZò #'¨°·±ªÐ8¸!Ð;Ð;Ø˜FÒ"Ø˜Q�w�äÐ 6Ó7Ð7øô &ò KØ8¸BÀÇÁ¸<ÑGÈÐJÒJðKûô ò 	1Ø# q§x¡xÑ0Ò0ð	1ús˜   ‚A L2 Á"L2 Á&*L2 Â"L2 Â4AL2 Ã6AL2 Ä8=L2 Å6.L2 Æ%L2 Æ?%L2 Ç%0L2 È0L2 É0L2 É8#L2 ÊL2 Ê;*L Ë&L2 Ë<L2 ÌL2 ÌL/Ì,L2 Ì.L/Ì/L2 Ì2MÍMN)r
   r   r   rQ  rR  rO  Úclassmethodr\  r   r   r   r+   r+   '   s½  „ Ø€Oò\%€Kð|`@ˆtÐ=ð `@ØÐ=ð`@àÐ=ð`@ð Ð=ð`@ð Ð=ð	`@ð
 Ð=ð`@ð Ð=ð`@ð Ð=ð`@ð Ð=ð`@ð Ð=ð`@ð Ð=ð`@ð Ð=ð`@ð Ð=ð`@ð Ð=ð`@ð Ð=ð`@ð Ð=ð`@ð  Ð=ñ!`@ð" Ð=ð#`@ð$ Ð=ð%`@ð& Ð=ð'`@ð( Ð=ð)`@ð* Ð=ð+`@ð, Ð=ð-`@ð. Ð=ð/`@ð0 Ð=ð1`@ð2 Ð=ð3`@ð4 Ð=ð5`@ð6 Ð=ð7`@ð8 Ð=ð9`@ð: Ð=ð;`@ð< Ð=ð=`@ð> Ð=ð?`@ð@ Ð=ðA`@ðB Ð=òC`@ðD Ð=ðE`@ðF Ð=ðG`@ðH Ð=ðI`@ðJ Ð=ðK`@ðL Ð=ðM`@ðN Ð=ðO`@ðP Ð=ðQ`@ðR Ð=ðS`@ðT Ð=ðU`@ðV Ð=ðW`@ðX Ð=ðY`@ðZ Ð=ð[`@ð\ Ð=ð]`@ð^ Ð=ð_`@ð` Ð=ða`@ðb Ð=ðc`@ðd Ð=òe`@ðf Ð=ðg`@ðh Ð=ði`@ðj Ð=ðk`@ðl Ð=ðm`@ðn Ð=ðo`@ðp Ð=ðq`@ðr Ð=ðs`@ðt Ð=ðu`@ðv Ð=ðw`@ðx Ð=ðy`@ðz Ð=ð{`@ð| Ð=ð}`@ð~ Ð=ð`@ð@ Ð=ðA`@ðB Ð=ðC`@ðD Ð=ðE`@ðF Ð=òG`@ðH Ð=ðI`@ðJ Ð=ðK`@ðL Ð=ðM`@ðN Ð=ðO`@ðP Ð=ðQ`@ðR Ð=ðS`@ðT Ð=ðU`@ðV Ð=ðW`@ðX Ð=ðY`@ðZ Ð=ð[`@ð\ Ð=ð]`@ð^ Ð=ð_`@ð` Ð=ða`@ðb Ð=ðc`@ðd Ð=ðe`@ðf Ð=ðg`@ðh Ð=ñi`@ðj >Ø=Ø=Ø=Ø=Ø=Ø=Ø=Ø=Ø=Ø=Ø=òA`@€GðD ñG1ó ñG1r   r+   c                 ó^   — t         j                  | ||«      \  }}d| |j                  |fz  |fS )Nz%4d: (%02x) %s)r+   r\  r   )r   Úw0rW  r(   Úskips        r   Údisassemble_instructionra  3  s5   € Ü×#Ñ# A r¨2Ó.�K€Eˆ4Ø˜q "§)¡)¨UÐ3Ñ3°TÐ9Ð9r   c                 ó   — t        j                  t        j                  | «      t        j                  t        «      «      }t        t        | «      dz  «      }|d   }d}g }t        d|«      D ]:  }||   }|r|dz  }d|z  }nt        |dz
  ||«      \  }}|j                  |«       |}Œ< t        |dz
  |d «      \  }}|j                  |«       |S )Nr·   r   r   z%4d:      (64-bit upper word))
r   ÚcastÚc_char_pÚPOINTERr&   ÚintÚlenÚrangera  Úappend)	ÚbpfstrÚptrÚnuminstrr_  r`  Ú
instr_listr   rW  Ú	instr_strs	            r   Údisassemble_strro  7  sÓ   € Ü
�'‰'”"—+‘+˜fÓ%¤r§z¡z´(Ó';Ó
<€CÜ”3�v“; ‘?Ó#€HØ	ˆQ‰€BØ€DØ€JÜ�1�hÓò ˆØ�‰VˆÙØ�A‰IˆDØ7¸1Ñ=‰Iä5°a¸!±e¸RÀÓD‰OˆI�tØ×Ñ˜)Ô$Ø‰ðô .¨h¸©l¸BÀÓE�O€IˆtØ×Ñ�iÔ ØÐr   c                 óT   — d| z  g}|t        |«      z  }t        j                  |«      S )NzDisassemble of BPF program %s:)ro  r   Újoin)Ú	func_namerj  rm  s      r   Údisassemble_progrs  J  s-   € Ø2°iÑ@ÐA€JØ”/ &Ó)Ñ)€JÜ�<‰<˜
Ó#Ð#r   c                   ó,  — e Zd Zi ej                  d“ej
                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d	“ej                  d
“ej                  d“ej                  d“ej                   d“ej"                  d“ej$                  d“ej&                  dz  d“ej(                  dz  d“Zed„ «       Zedd„«       Zedd„«       Zed„ «       Zedd„«       Zy)Ú
MapDecoderÚ_BoolÚcharÚwchar_tzunsigned charÚshortzunsigned shortrf  zunsigned intÚlongzunsigned longz	long longzunsigned long longÚfloatÚdoublezlong doubleé   Ú__int128zunsigned __int128c                 óx  — 	 t        |t        j                  «      rd}|S t        |t        j                  «      rd}|S t        |t        j                  «      r7| j
                  |j                     dz   t        |j                  «      z   dz   }|S | j
                  |   }	 |S # t        $ r t        |«      }Y |S w xY w)NÚstructÚunionú[rM  )
Ú
issubclassr   Ú	StructureÚUnionÚArrayÚ	ctype2strÚ_type_ÚstrÚ_length_rT  )rU  ÚtÚfield_type_names      r   Úget_ct_namezMapDecoder.get_ct_nameb  s¹   € ð
	%Ü˜!œRŸ\™\Ô*Ø"*�ð Ðô ˜AœrŸx™xÔ(Ø")�ð Ðô ˜AœrŸx™xÔ(Ø"%§-¡-°·±Ñ"9¸CÑ"?Ä#ÀaÇjÁjÃ/Ñ"QÐTWÑ"W�ð
 Ðð #&§-¡-°Ñ"2‘ð Ðøô ò 	%Ü! !›f‰OØÐð	%ús"   ‚B!  B! ¾AB! ÂB! Â!B9Â8B9Nc                 ó*   — |sy|�d|||fz  S d||fz  S )NÚ z[%d,%d +%d bit]z	[%d +%d] r   )rU  r	   ÚsizeÚenabledÚ	bitoffsets        r   Úformat_size_infozMapDecoder.format_size_infoq  s/   € áØØÐ Ø$¨°	¸4Ð'@Ñ@Ð@Ø˜f d˜^Ñ+Ð+r   c           
      ó  — g }	 |j                   D ]ö  \  }}t        |t        j                  «      xs t        |t        j                  «      }| j                  |«      }	t        ||«      j                  }
t        j                  |«      }| j                  ||
z   ||«      }|rL|j                  |›|›|	›d�«       || j                  ||dz   ||
z   «      z  }|j                  |›d|›d�«       ŒÜ|j                  |›|›|	›d|›d�«       Œø 	 |S # t        $ rê d}|j                   D ]Õ  }t        |«      dk(  rE|\  }}}| j                  |«      }	| j                  ||||«      }|j                  d|||	||fz  «       n{|\  }}| j                  |«      }	t        ||«      j                  }
t        j                  |«      }d}d}| j                  ||
z   ||«      }|j                  |›|›|	›d|›d�«       ||
z  }||z  }Œ× Y |S w xY w)	Nz {ú  z} ú;rN  r   é   z%s%s%s %s:%d;)r   rƒ  r   r„  r…  r�  Úgetattrr	   Úsizeofr“  ri  Úprint_ct_mapÚ
ValueErrorrg  )rU  r‹  Úindentr	   ÚsizeinfoÚ	map_linesÚ
field_nameÚ
field_typeÚis_structuredrŒ  Úfield_offsetÚ
field_sizeÚsizedescÚoffset_bitsÚfieldÚ
field_bitss                   r   rš  zMapDecoder.print_ct_mapy  sG  € àˆ	ð.	*Ø*+¯*©*ò BÑ&�
˜JÜ!+¨J¼¿¹Ó!Eò "BÜ!+¨J¼¿¹Ó!Að à"%§/¡/°*Ó"=�Ü& q¨*Ó5×<Ñ<�ÜŸY™Y zÓ2�
Ø×/Ñ/°¸Ñ0EØ0:¸HóF�á Ø×$Ñ$±6¹8Â_Ð%UÔVØ ×!1Ñ!1°*Ø28¸4±-Ø28¸<Ñ2Gó"Iñ I�Ið ×$Ñ$²&º*Ð%EÕFà×$Ñ$±V¹XÚ5DÚ5?ð&Aõ BñBð\ Ðøô9 ò 	*àˆKØŸ™ò *�Ü�u“: ’?Ø9>Ñ6�J 
¨JØ&)§o¡o°jÓ&A�OØ"×3Ñ3°F¸KØ4<¸jó J�Hà×$Ñ$ _¸ÀØ8GØ8BØ8Bð8Dñ &Dõ Eð .3Ñ*�J 
Ø&)§o¡o°jÓ&A�OÜ#*¨1¨jÓ#9×#@Ñ#@�LÜ!#§¡¨:Ó!6�JØ!"�JØ"#�KØ"×3Ñ3°F¸\Ñ4IØ4>Àó J�Hà×$Ñ$±V¹XÚ5DÚ5?ð&Aô Bð ˜lÑ*�FØ˜zÑ)‘ñ1*ð2 Ðð9	*ús   „DD ÄC/G?Ç>G?c                 ó  — t        |t        j                  «      xs t        |t        j                  «      }| j	                  |«      }|r3d|z  g}|| j                  |d|¬«      z  }|j                  d|z  «       |S d|›d|›d�g}|S )Nz  %s {z    ©r�  z  } %s;r•  rN  r–  )rƒ  r   r„  r…  r�  rš  ri  )rU  r‹  rŸ  r�  r¡  Ú	type_namerž  s          r   Úprint_map_ctypezMapDecoder.print_map_ctype­  s—   € ä# A¤r§|¡|Ó4ò 1Ü# A¤r§x¡xÓ0ð 	à—O‘O AÓ&ˆ	ÙØ! YÑ/Ð0ˆIØ˜×)Ñ)¨!¨V¸hÐ)ÓGÑGˆIØ×Ñ˜Y¨*Ñ5Ô6ð Ðð ò
 (1²*Ð=Ð>ˆIØÐr   c                 óì   — d|||j                   |j                  fz  g}|| j                  |j                  d|¬«      z  }|| j                  |j                  d|¬«      z  }t        j                  |«      S )Nz-Layout of BPF map %s (type %s, FD %d, ID %d):Úkeyr©  Úvalue)Úmap_fdÚmap_idr«  ÚKeyÚLeafr   rq  )rU  Úmap_nameÚmap_objÚmap_typer�  rž  s         r   Ú
decode_mapzMapDecoder.decode_mapº  s~   € àDÈØHPØHOÏÉØHOÏÉðHXñ Xð Yˆ	ð 	�S×(Ñ(¨¯©°eÀhÐ(ÓOÑOˆ	Ø�S×(Ñ(¨¯©°wÈÐ(ÓRÑRˆ	Ü�|‰|˜IÓ&Ð&r   )FN)r�  r   F©F)r
   r   r   r   Úc_boolÚc_charÚc_wcharÚc_ubyteÚc_shortÚc_ushortÚc_intÚc_uintÚc_longÚc_ulongÚ
c_longlongÚc_ulonglongÚc_floatÚc_doubleÚc_longdoubleÚc_int64r)   r‡  r]  r�  r“  rš  r«  r¶  r   r   r   ru  ru  O  s„  „ ð9�—‘˜Hð 9Ø—‘˜Gð9à—‘˜Zð9ð —‘Ð-ð9ð —‘˜Xð	9ð
 —‘Ð/ð9ð —‘˜6ð9ð —‘˜Oð9ð —‘˜Gð9ð —‘Ð-ð9ð —‘ ð9ð —‘Ð!6ð9ð —‘˜Xð9ð —‘˜ið9ð —‘ .ð9ð —‘˜a‘ ð9ð  —‘˜q‘Ð"6ð!9€Ið$ ñó ðð ò,ó ð,ð ò1ó ð1ðf ñ
ó ð
ð ò'ó ñ'r   ru  c                 óJ   — t        |«      }t        j                  | |||¬«      S )Nr©  )r   ru  r¶  )r³  r´  rµ  r�  Úmap_type_names        r   r¶  r¶  Ä  s&   € Ü'¨Ó1€MÜ× Ñ  ¨7°MÈHÐ ÓUÐUr   )Nr·  )Úosr   Úctypesr   Útabler   r…  r   r   r„  r   r&   r+   ra  ro  rs  ru  r¶  r   r   r   ú<module>rÍ     s�   ðõ Û Ý &ôB�"—(‘(ô Bô<ˆr�x‰xô <ô!�R—\‘\ô !ô?ˆr�x‰xô ?÷
J1ñ J1óX:òò&$÷
s'ñ s'ôjVr   