+
     Gi&P  c                   s    ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RItR tR tR tRtR tR tR tR	 tR
 tR tR tR tR tR tR tRRRRRRRRRRRRRRRR R!R"/	tR# tR$ tR% t R# )&i    Nc                 s    \         P                  ! R 4      eB   R R.p\        P                  P                  P                  WRR7      p\        V^ ,          4      # ^ # )lxc-infoz	--versionTZoutput_return)shutilwhichtoolshelpersrunuserZint)argscommandZversion_str   &  &/usr/lib/waydroid/tools/helpers/lxc.pyget_lxc_versionr      sL    ||J+{+mm'',,T$,O;q>""    c                 s   V'       d(   \         P                  P                  V4      '       g   R # RpWaR,           ,          pVf
   VR,          pWbR,           ,          pWcR,           ,          pWd,          pV P                  V4       R# )Fzlxc.mount.entry =  i   NNT)ospathexistsappend)nodessrcdistmnt_typeoptionscheckZentrys   &&&&&& r   add_node_entryr      sh    RWW^^C(( E	3YE|2w	CZE	^E	E	LLr   c                 sb  a . oRAV3R llpV! RRRRR4       V! R4       V! R4       V! R	4       V! R
4       V! R4       V! R4       V! R4       V! RRR7       V! R4       V! R4       V! R4       V! R4       V! R4       \         P                  P                  P                  V 4      w  r#V! V4       \        P                  ! R4       F  pV! V4       K  	  \        P                  ! R4       F  pV! V4       K  	  \        P                  ! R4       F  pV! V4       K  	  \        P                  ! R4       F  pV! V4       K  	  V! RV P
                  ,           RRR7       V! RV P                  ,           RRR7       V! RV P                  ,           RRR7       V P                  R8w  d&   V! R R!4      '       g   \        R"4      hV! R#R$R%R7       V! RR&R'R(R4       V! R)4       V! R*R+4       V! R,RR7       V! \         P                  P                  R-,          R.R/R7       V! R04       V! R1R2R7       V! R3RR7       V! R4RR7       V! R54       V! R64       V! R74       V! R84       V! RR9RR:R4       V! R;R<R2R7       V! RR=RR:R4       V! RR>RR:R4       V! RR?RR:R4       V! R@R/R7       S# )BNnonec                 s    < \        SWW#V4      # N)r   )r   r   r   r   r   r   s   &&&&&r   
make_entryZ-generate_nodes_lxc_config.<locals>.make_entry(   s    eS5IIr   tmpfsZdevz
nosuid 0 0Fz	/dev/zeroz	/dev/nullz	/dev/full/dev/ashmemz	/dev/fusez/dev/ionz/dev/ttyz	/dev/charzbind,create=dir,optional 0 0r   z/dev/kgsl-3d0z
/dev/mali0z/dev/pvr_syncz
/dev/pmsg0z/dev/dxgz/dev/fb*z/dev/graphics/fb*z/dev/video*z/dev/dma_heap/*z/dev/z
dev/binderr   zdev/vndbinderzdev/hwbinderMAINLINE/dev/hwbinderzdev/host_hwbinderz(Binder node "hwbinder" of host not foundz/vendorZvendor_extrazrbind,optional 0 0zdev/ptsZdevptsz-defaults,mode=644,ptmxmode=666,create=dir 0 0z	/dev/uhidz/dev/net/tunzdev/tunz/sys/module/lowmemorykiller
host_permszvendor/etc/host-permissionszbind,optional 0 0z/dev/sw_syncz/sys/kernel/debugzrbind,create=dir,optional 0 0z/sys/class/leds/vibratorz*/sys/devices/virtual/timed_output/vibratorz/dev/Vcodecz/dev/MTK_SMIz/dev/mdp_syncz/dev/mtk_cmdqZ	mnt_extraz	nodev 0 0z	/mnt/wslgzmnt_extra/wslgZtmpvarr   z/system/etc/libnfc-nci.conf)Nr   zbind,create=file,optional 0 0T)r   r   gpu
getDriNodeglobZBINDER_DRIVERZVNDBINDER_DRIVERZHWBINDER_DRIVERvendor_typeOSErrorconfigdefaults)r   r   Zrender_Znr   s   &    @r   generate_nodes_lxc_configr.   &   s   EJ wwe<{{{}{zz{$BC ||z!!,,T2IFvYYz"1 #YY*+1 ,YY}%1 &YY()1 * w+++\Gw...uMw---~UK:%/+>??DEE9n6JK vy(,[]bc{ ~y) ,6TU u||$$\2,6IK ~",KL )57;57 }~ wWk5A{,68 wwU;wwU;wwU; ,6IJLr   zlxc-waydroidc                 s   R p\         P                  ! R4      '       d2   \        P                  P                  P                  V RR.R R7      ^ 8H  pV'       gN   \         P                  ! R4      '       d2   \        P                  P                  P                  V . ROR R7      ^ 8H  p \        RR4      ;_uu_ 4       pV\        VP                  4       9   ,          pRRR4       V#   + '       g   i     T# ; i   R p T# ; i)	Fz
aa-enabledz--quietr!   	systemctlz&/sys/kernel/security/apparmor/profilesZrN)r/   z	is-activez-qZapparmor)	r   r   r   r   r   r   openLXC_APPARMOR_PROFILEread)r   Zenabledfr
   r   get_apparmor_statusr4      s    G||L!!==$$))$y0IQV)W[\\v||K00==$$))$0\di)jnoo:C@@A,89G A N	 A@ NNs*   &C7 :C#C7 #C4	.C7 4C7 7C>c                 s   \         P                  P                  R ,          R,           p\        V 4      pV^ 8X  d   \	        R4      h\         P                  P
                  R,           p\         P                  P
                  R,           pVR,           .pV^8:  d   VP                  VR,           4       Me\        ^^4       FU  pV\        V4      ,           pW&8  g   K  \        P                  P                  V4      '       g   KD  VP                  V4       KW  	  RRV.p\         P                  P                  P                  W4       R	R
RP                  RP!                  R V 4       4      VR,           4      .p\         P                  P                  P                  W4       RRRP                  \"        P$                  ! 4       4      VR,           .p\         P                  P                  P                  W4       RRWAR,           .p\         P                  P                  P                  W4       \'        V 4      p	V P(                  R,           p
\+        V
R4      pV	 F  pVP-                  VR,           4       K  	  VP/                  4        RW.p\         P                  P                  P                  W4       \+        \        P                  P!                  VR4      RR7      P/                  4        R# )lxc	/waydroidzLXC is not installedz/data/configs/config_z/data/configs/waydroid.seccompZbaseZ1mkdirz-pZshz-czcat {} > "{}"r   c              3   sD   "   T F  pR P                  V4      x  K  	  R# 5i)z"{0}"N)format).0w   & r   	<genexpr>Z!set_lxc_config.<locals>.<genexpr>   s     <hXgSTW^^A=N=NXgs    z/configZsedz-izs/LXCARCH/{}/Zcpz-fprz/waydroid.seccompz/config_nodesr:   
mvZconfig_session)ZmodeN)r   r+   r,   r   r*   Z	tools_srcr   Zrangestrr   r   r   r   r   r   r8   joinplatformZmachiner.   workr0   writeclose)r   lxc_pathZlxc_verZconfig_pathsZseccomp_profileZconfig_snippetsZverZsnippetr	   r   config_nodes_tmp_pathconfig_nodesnodes   &            r   set_lxc_configrI      s>   ||$$U+k9Hd#G!|,--<<)),CCLll,,/OOO$v-/O!||c12A;C"SX-G~"''.."9"9&&w/ 
 h'G	MM4)T,33CHH<hXg<h4hjru~j~  AG	MM4)dO2283C3C3EFS\H\]G	MM4)V_9L.LMG	MM4)%d+E II7-s3L4$;' *5G	MM4) 	h 0	1<BBDr   c                 s  aa . oRVV3R llpV! R\         P                  P                  R,          RR7      '       g   \        R4      h\        P
                  P                  \        P
                  P                  SR,          SR,          4      4      p\        P
                  P                  \        P
                  P                  \         P                  P                  R,          \         P                  P                  R	,          4      4      pV! W4R
,          4      '       g   \        R4      h\        P
                  P                  SR,          R4      p\        P
                  P                  \         P                  P                  R,          R4      pV! WVR
,          4       V! SR,          RRR7      '       g   \        R4      h\         P                  P                  R,          R,           pV P                  R,           p\        VR4      p	S F  p
V	P                  V
R,           4       K  	  V	P                  4        RW.p\         P                  P                  P                  W4       R # )Nc           	      s  <a  \         ;QJ d    V 3R  lR 4       F  '       g   K   RM	  RM! V 3R  lR 4       4      '       d    \        P                  ! RS ,           4       R# Vfz   \        P                  P                  S 4      '       d6   \        \        P                  ! S 4      P                  4      SR,          8w  d    \        P                  ! RS ,           4       R# \        SS WVRR7      # )c              3   ,   <"   T F	  qS9   x  K  	  R # 5ir    )r9   xr      & r   r<   ZBgenerate_session_lxc_config.<locals>.make_entry.<locals>.<genexpr>   s     .ACx   TFz5User-provided mount path contains illegal character: Zuser_idz/User-provided mount path is not owned by user: r!   )r=   Z)
anyloggingZwarningr   r   r   r?   statZst_uidr   )r   r   r   r   r   sessions   f&&&r   r   Z/generate_session_lxc_config.<locals>.make_entry   s    3..333....OOSVYYZ<!4!4 !4!459KKOOMPSSTeS$'OOr   r   Zcontainer_xdg_runtime_dirzcreate=dir 0 0r    z,Failed to create XDG_RUNTIME_DIR mount pointZxdg_runtime_dirZwayland_displayZcontainer_wayland_displayr   zFailed to bind Wayland socketZpulse_runtime_pathZnativeZcontainer_pulse_runtime_pathZwaydroid_dataZdataz	rbind 0 0zFailed to bind userdatar5   r6   z/config_sessionr:   r=   r>   )Nr   zrbind,create=file 0 0)r   r+   r,   r*   r   r   Zrealpathr@   rB   r0   rC   rD   r   r   r   )r   rR   r   Zwayland_host_socketZwayland_container_socketZpulse_host_socketZpulse_container_socketrE   rF   rG   rH   r	   r   s   &f          @r   generate_session_lxc_configrS      s   EP P gu||445PQ[kllDEE''**277<<@Q8RT[\mTn+op!ww//U\\=R=RSn=oqvq}q}  rG  rG  Hc  rd  1e   f)B+GHH566 W-A%BHMWW\\%,,*?*?@^*_aij "<=go.LL/00||$$U+k9H II(99-s3L4$;' *5G	MM4)r   c                 s  a  V 3R  lpV 3R lp. p\         P                  P                  R4      '       g   VP                  R4       VP                  R4       VP                  R4       \        P
                  P                  P                  S R4      p\        P
                  P                  P                  S 4      w  rVV! R4      pV'       g   V! R4      '       d   R	pV'       g;   V'       d   R
pRpVP                  RV,           4       MRpRpVP                  R4       VP                  RV,           4       VR8w  d   VP                  RV,           4       \        P
                  P                  P                  S R4      pVR8w  d=   VP                  RR4      pVP                  RR4      pVP                  RV,           4       \        P
                  P                  P                  S R4      p	V	R8w  d   VP                  RV	,           4       \        P
                  P                  P                  S R4      p
V
R8w  d=   V
P                  RR4      p
V
P                  RR4      p
VP                  RV
,           4       V! R4      pV'       gP   V'       dH   \        P
                  P                  P                  S \         P                  P                  V4      4      pV'       d   VP                  RV,           4       \        P
                  P                  P                  S R4      pVR 8w  dK   V! R!4      pVR8w  d   VP                  R"V,           4       M"S P                  R#8X  d   VP                  R$4       \        P
                  P                  P                  S R%4      pVR8X  d   R&pVP                  R'V,           4       S P                  \        P                  P                   R(,          9  dF   VP                  R)S P"                  ,           4       VP                  R*S P$                  ,           4       MVP                  R+4       VP                  R,\        P                  P&                  ,           4       S P                  R#8X  d   VP                  R-4       R: EF  p\        P
                  P                  P                  S R.V,           4      pVR8w  d)   VP                  R/V,           R0,           V,           4       Kd  \         P                  P)                  R1V,           4      '       g   K  \+        R1V,           4      ;_uu_ 4       pVP-                  4       P/                  4       P1                  R24      pVR8w  d'   VP                  R/V,           R0,           V,           4       R3R3R34       EK  	  \        P
                  P                  P                  S R44      pVR8w  d   VP                  R5V,           4       \        P                  P3                  S 4      pVR6,          P5                  4        F[  w  pp\7        V4       F'  w  ppVR0,           V9   g   K  VP9                  V4       K)  	  VP                  VR0,           V,           4       K]  	  \+        S P:                  R7,           R84      pV F  pVP=                  VR9,           4       K  	  VP?                  4        R3#   + '       g   i     EKT  ; i);c                 sN  < R V ,           RRRR.pV F  p\         P                  P                  P                  SV4      pVR8w  g   K6  R	 FS  pVR,           V ,           R,           V,           R,           p\        P
                  P                  V4      '       g   KO  Vu u # 	  K  	  R# )
zro.hardware.zro.hardwarezro.product.boardzro.archzro.board.platform z/hw/Z.z.so)z/odm/libz
/odm/lib64z/vendor/libz/vendor/lib64z/system/libz/system/lib64)r   r   propshost_getr   r   isfile)ZhardwareZhardware_propsppropZlibZhal_filer   s   &     r   find_halZ!make_base_props.<locals>.find_hal   s    X%!  A==&&//a8DrzuC"V|h6<tCeKHww~~h//# v   r   c                 s   < SP                   R 8X  d   R#  \        P                  ! R4      pWP                  4       9   #     R# ; i)r"   Fr#   )r)   gbinderZServiceManagerZ	list_sync)ZintfZsmr   rM   r   	find_hidlZ"make_base_props.<locals>.find_hidl   sB    z)	''8B<<>))	s	   '> Ar   zsys.use_memfd=truezro.adb.secure=1zro.debuggable=0zro.hardware.eglgrallocz;android.hardware.graphics.allocator@4.0::IAllocator/defaultZandroidZgbmZmesazgralloc.gbm.device=ZdefaultZswiftshaderzdebug.stagefright.ccodec=0zro.hardware.gralloc=rT   zro.hardware.egl=zmedia.settings.xmlzvendor/zvendor_extra/zodm/z
odm_extra/zmedia.settings.xml=zdebug.stagefright.ccodeczdebug.stagefright.ccodec=zro.vendor.extension_libraryzro.vendor.extension_library=vulkanzro.hardware.vulkan=ro.treble.enabledtruecamerazro.hardware.camera=r"   zro.hardware.camera=v4l2zro.opengles.versionZ196610zro.opengles.version=Zpreinstalled_images_pathszwaydroid.system_ota=zwaydroid.vendor_ota=zwaydroid.updater.disabled=truezwaydroid.tools_version=zro.vndk.lite=truezro.product.vendor.zro.product.waydroid.=z/proc/device-tree/Z Nzro.vendor.build.fingerprintzro.build.fingerprint=Z
propertiesz/waydroid_base.propr:   r=   )ZbrandZdeviceZmanufacturerZmodelZname) r   r   r   r   r   r   rU   rV   r&   r'   ZreplaceZgetVulkanDriverZbasenamer)   Zimages_pathr+   r,   Z
system_otaZ
vendor_otaZversionrW   r0   r2   stripZrstripZloaditemsZ	enumerateZpoprB   rC   rD   )r   rZ   r\   rU   ZeglZdrir-   r]   Zmedia_profilesZccodecZext_libraryr^   treblera   ZopenglesZproductZprop_productr3   Zf_valueZprop_fpZcfgkvZidxZelemZ
base_propsrY   s   f                          r   make_base_propsrh      s:     E77>>-(()* 
LL"#	LL"#
--


&
&t->
?C]]))$/FCy!GRSSGGCLL.45GC12	LL''12
by'#-.]]((11$8LMN'//	?K'//E*^;<]]  ))$0JKF|069:--%%..t5RSKb!)))_E!))&,?3kABhFc""2249I9I#9NO*V34]]  ))$0CDF(#R<LL.78:-67}}""++D2GHH2~	LL'(23u||445PQQ+doo=>+doo=>56	LL*U\\-A-AAB:%()G}}**33&022LL/'9C?,NOww~~2W<==.899Qffhnn.55f=G"}%;%,&-/2&35<&= > :9 H mm!!**41NOG"},w67 ,,

D
!CL!'')1"5)IC#$		# * 	QsU1W	 * dii"77=J% + :99s   A[[,c                 s   \         P                  P                  \        P                  P
                  R ,          4      '       g6   \         P                  ! \        P                  P
                  R ,          4       \        P                  P                  P                  V R4      pVR8w  d   R# \        P                  P                  P                  V R4      p. pVP                  \        P                  ! R4      4       \         P                  P                  R4      '       d   VP                  R4       VP                  \        P                  ! R4      4       \         P                  P                  R4      '       d   VP                  R4       VR	8w  d   VP                  \        P                  ! R
P                  V4      4      4       \         P                  P                  RP                  V4      4      '       d!   VP                  RP                  V4      4       V F9  p\        P                  ! V\        P                  P
                  R ,          4       K;  	  R# )r$   r_   r`   Nzro.boot.product.hardware.skuz./vendor/etc/permissions/android.hardware.nfc.*z7/vendor/etc/permissions/android.hardware.consumerir.xmlz+/odm/etc/permissions/android.hardware.nfc.*z4/odm/etc/permissions/android.hardware.consumerir.xmlrT   z2/odm/etc/permissions/sku_{}/android.hardware.nfc.*z;/odm/etc/permissions/sku_{}/android.hardware.consumerir.xml)r   r   r   r   r+   r,   r7   r   rU   rV   extendr(   r   r8   r   copy)r   re   ZskuZ	copy_listZfilenames   &    r   setup_host_permsrk   a  s   77>>%,,//=>>
&&|45]]  ))$0CDF
--


&
&t-K
LCI		BCE	ww~~OPPRS		?@B	ww~~LMMOP
byIIJQQRUVW	Y77>>W^^_bcddMTTUXY[ Hell33LAB r   c                 s    R R\         P                  P                  R,          RRR.p \         P                  P                  P                  WRR7      P                  4       #    \        P                  ! R4        R	# ; i)
r    -Pr5   -nwaydroidz-sHTr   z*Couldn't get LXC status. Assuming STOPPED.ZSTOPPED)	r   r+   r,   r   r   r   rc   rP   infor   r	   r;   r   statusrq   }  si    4!6!6u!=tZQVWG}}  %%d4%HNNPPABs   8A" "A=c                 s   \        V 4      p^
pVR8w  dY   V^ 8  dR   \        V 4      p\        P                  ! RP                  V4      4       V^,
          p\        P
                  ! ^4       K_  VR8w  d   \        R4      hR# )i
   RUNNINGz,waiting {} seconds for container to start...zcontainer failed to startN)rq   rP   ro   r8   timeZsleepr*   )r   Z
lxc_statusZtimeoutr
   r   wait_for_runningrt     so    JG
	
!gkD\
:AA'J	LA+

1Y122 r   c                 s   R R\         P                  P                  R,          RRRRR.p\         P                  P                  P                  WRR	7       \        V 4        \        P                  ! V P                  R
4       R#     R# ; i)z	lxc-startrl   r5   z-Frm   rn   --z/initZ
background)Zoutputi  N)
r   r+   r,   r   r   r   rt   r   chmodZlogrp   r;   r   startrw     sp    D%,,"7"7">T:tW6G	MM4>T
5!s   !!B B	c                 s    R R\         P                  P                  R,          RRR.p\         P                  P                  P                  W4       R# )zlxc-stoprl   r5   rm   rn   z-kNr   r+   r,   r   r   r   rp   r;   r   stopry     s?    4||$$U+T:tEG	MM4)r   c                     R R\         P                  P                  R,          RR.p\         P                  P                  P                  W4       R# )z
lxc-freezerl   r5   rm   rn   Nrx   rp   r;   r   freezer{     s9    T5<<#8#8#?zRG	MM4)r   c                 rz   )zlxc-unfreezerl   r5   rm   rn   Nrx   rp   r;   r   unfreezer|     s<    t||$$U+T:?G	MM4)r   ZPATHz/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbinZANDROID_ROOTz/systemZANDROID_DATAz/dataZANDROID_STORAGEz/storageZANDROID_ART_ROOTz/apex/com.android.artZANDROID_I18N_ROOTz/apex/com.android.i18nZANDROID_TZDATA_ROOTz/apex/com.android.tzdataZANDROID_RUNTIME_ROOTz/apex/com.android.runtimeZBOOTCLASSPATHa  /apex/com.android.art/javalib/core-oj.jar:/apex/com.android.art/javalib/core-libart.jar:/apex/com.android.art/javalib/core-icu4j.jar:/apex/com.android.art/javalib/okhttp.jar:/apex/com.android.art/javalib/bouncycastle.jar:/apex/com.android.art/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/framework-atb-backward-compatibility.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar:/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar:/apex/com.android.os.statsd/javalib/framework-statsd.jar:/apex/com.android.permission/javalib/framework-permission.jar:/apex/com.android.sdkext/javalib/framework-sdkextensions.jar:/apex/com.android.wifi/javalib/framework-wifi.jar:/apex/com.android.tethering/javalib/framework-tethering.jarc           	      s   a	 \         P                  4       pR R\        P                  P                  R,          RRRRRR.	pR	R
.p \
        P                  ! V\
        P                  \
        P                  R7      pVP                  4       w  rVVP                  ^ 8X  d   VP                  4       P                  4        F_  pVP                  R^4      w  po	p\        ;QJ d    V	3R lV 4       F  '       g   K   RM	  RM! V	3R lV 4       4      '       g   K[  WS	&   Ka  	  TP                  4        U	Uu. uF  w  rT	R,           T,           NK  	  p
p	pT
 UUu. uF  pRT3 F  qNK  	  K  	  upp#     LS; iu upp	i u uppi )
lxc-attachrl   r5   rm   rn   --clear-envru   z/system/bin/catz/data/system/environ/classpathZ	CLASSPATHZSYSTEMSERVER)stdoutZstderrr   c              3   rJ   r   rK   )r9   Zpatternrf   rM   r   r<   Z-android_env_attach_options.<locals>.<genexpr>  s     ;7!|7rN   TFrb   z	--set-var)ANDROID_ENVrj   r   r+   r,   
subprocessZPopenZPIPEZDEVNULLZcommunicateZ
returncodeZdecodeZ
splitlinesZsplitrO   rd   )r   Z	local_envr	   ZallowedrX   Zoutr-   Zlinerg   rf   Zenvr%   rL   s   &        `   r   android_env_attach_optionsr     s:     "IT5<<#8#8#?Z "BDG N+G	WZ__ZEWEWX<<1

//1**S!,1a3;7;333;7;;;#$aL 2 $-??#4
5#4411s7Q;;#4C
59#{C&8A&8A99
59s%   B.E- 6E- E- 1E4E:-E1c                 s   \        V 4      pVR 8X  d   \        V 4       M.VR8w  d(   \        P                  ! RP	                  V4      4       R# RR\
        P                  P                  R,          RRR	.pVP                  \        V 4      4       V P                  R8w  d,   VP                  R
\        V P                  4      ,           4       V P                  R8w  d-   VP                  R\        V P                  4      ,           4       M<V P                  R8w  d,   VP                  R\        V P                  4      ,           4       V P                  '       g%   V P                  '       g   V P                   '       d   RpRpV P                  '       d   V'       d
   VR,          pVR,          pRpV P                  '       d   V'       d
   VR,          pVR,          pRpV P                   '       d   V'       d
   VR,          pVR,          pRpVP                  V4       V P"                  R8w  d5   V P                  '       g#   VP                  RV P"                  ,           4       VP                  R4       V P$                  '       d   VP                  V P$                  4       MVP                  R4       R p\&        P&                  ! \&        P(                  V4       \&        P&                  ! \&        P*                  V4       \,        P.                  ! \0        P,                  ! \2        P4                  P7                  4       4      P8                  4      p \:        P<                  ! V4       \0        P@                  ! \2        P4                  P7                  4       V4       VR 8X  d   \C        V 4       R# R#   \>         d     LVi ; i  \0        P@                  ! \2        P4                  P7                  4       T4       i ; i)ZFROZENrr   zWayDroid container is {}Nr}   rl   r5   rm   rn   r~   z--uid=z--gid=z--elevated-privileges=FZ|ZLSMTZCAPZCGROUPz
--context=ru   z/system/bin/shc                 s    \         hr   )KeyboardInterrupt)ZsignumZframes   &&r   mock_sigintZshell.<locals>.mock_sigint  s    r   )"rq   r|   rP   Zerrorr8   r   r+   r,   ri   r   uidr   r?   gidnolsmallcapsnocgroupcontextCOMMANDsignalZSIGTERMZSIGHUPrQ   ZS_IMODEr   sysr   ZfilenoZst_moder   r   r   rv   r{   )r   Zstater	   ZelevatedprivsZaddpiper   Zpermss   &      r   shellr     s   4LE	)	077>?T5<<#8#8#?Z0GNN-d34xx~xDHH-.xx~xDHH-.	4xDHH-.zzzT\\\T]]]0:::s"5 MG<<<s"5 MG===s"8#MG}%||T$***|DLL01NN4|||t||$'( 
MM&..+.
MM&---LL!2!2!45==>E-w 	""$e,t    	""$e,s$   N* *N85N; 7N88N; ;5O0c                 s    R .V n         V P                  '       d&   V P                   P                  V P                  4       RV n        RV n        RV n        RV n        RV n        RV n        \        V 4       R# )z/system/bin/logcatN)
r   ZARGSri   r   r   r   r   r   r   r   )r   s   &r   logcatr     s\    ()DLyyyDII&DHDHDJDLDMDL	$Kr   )!r   r   rP   r(   r   r   rQ   r   rs   rA   r[   Ztools.configr   Ztools.helpers.runr   r   r.   r1   r4   rI   rS   rh   rk   rq   rt   rw   ry   r{   r|   r   r   r   r   rK   r   r   <module>r      s     	      
     Wr & %EN$*LDNC8
3	*
**   ^IGz/157  L
:(9v
r   