+
    ˜qgj  ã                   óÜ   € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ]P                  ! ]	4      t
RtRtRR R lltRR R lltR	 t] P                   RR
 l4       tRR R lltRR R lltR# )é    N)Úutilz/run/cloud-init/tmpz/var/tmp/cloud-initc                ó$   € V ^8„  d   QhR\         /# ©é   Ú	needs_exe©Úbool)Úformats   "Ú6/usr/lib/python3/dist-packages/cloudinit/temp_utils.pyÚ__annotate__r      s   € ÷ 
,ñ 
,¬4ñ 
,ó    c                 óú   € V e   V # V'       d   \         # \        P                  ! 4       ^ 8X  d/   \        P                  ! 4       '       d   R\
        ,           # \
        # \        P                  P                  RR4      # )Nz/var/ÚTMPDIRz/tmp)Ú_EXE_ROOT_TMPDIRÚosÚgetuidr   Úis_BSDÚ_ROOT_TMPDIRÚenvironÚget)Úodirr   s   &&r   Úget_tmp_ancestorr      sU   € ØÒØˆßÜÐÜ	‡y‚yƒ{�aÔÜ�;Š;�=Š=Øœ\Õ)Ð)äÐÜ�:‰:�>‰>˜( FÓ+Ð+r   c                ó$   € V ^8„  d   QhR\         /# r   r   )r
   s   "r   r   r      s   € ÷ ñ ¬Dñ r   c                ó6  € \        W4      p\        P                  P                  V4      '       g.   \        P                  ! V4       \        P
                  ! VR4       V'       d4   \        P                  ! VR4      '       d   \        P                  RV4       V# )a  Return the proper 'dir' argument for tempfile functions.

When root, cloud-init will use /run/cloud-init/tmp to avoid
any cleaning that a distro boot might do on /tmp (such as
systemd-tmpfiles-clean).

If the caller of this function (mkdtemp or mkstemp) was provided
with a 'dir' argument, then that is respected.

@param odir: original 'dir' arg to 'mkdtemp' or other.
@param needs_exe: Boolean specifying whether or not exe permissions are
    needed for tempdir. This is needed because /run is mounted noexec.
iÿ  ÚnoexeczDRequested temporal dir with exe permission `%s` is mounted as noexec)
r   r   ÚpathÚisdirÚmakedirsÚchmodr   Úhas_mount_optÚLOGÚwarning)r   r   Útdirs   && r   Ú_tempfile_dir_argr$      sl   € ô ˜DÓ,€DÜ�7‰7�=‰=˜×ÒÜ
�Š�DÔÜ
�Š��vÔçÜ×Ò˜d H×-Ò-Ü�K‰Kð%àôð
 €Kr   c                  óˆ   a€ \        4       V R &   \        P                  ! R/ V B oR pVSn        V3R lp\	        SRV4       S# )Údirc                 ó¨   €  \         P                  ! V 4       R #   \         d-   pTP                  \        P                  8w  d   Th R p?R # R p?ii ; i©N)r   ÚunlinkÚOSErrorÚerrnoÚENOENT)r   Úes   & r   Ú_unlink_if_existsÚ0ExtendedTemporaryFile.<locals>._unlink_if_existsB   s<   € ð	Ü�IŠI�dŽOøÜô 	Ø�w‰wœ%Ÿ,™,Ô&Ø�õ 'ûð	ús   ‚ šA¥!AÁAc                  ó>   <€ S P                  S P                  4       R # r(   )r)   Úname)Úfhs   €r   Ú
unlink_nowÚ)ExtendedTemporaryFile.<locals>.unlink_nowP   s   ø€ Ø
�	‰	�"—'‘'Ör   r3   © )r$   ÚtempfileÚNamedTemporaryFiler)   Úsetattr)Úkwargsr.   r3   r2   s   ,  @r   ÚExtendedTemporaryFiler:   ;   sH   ø€ Ü%Ó'€Fˆ5�MÜ	×	$Ò	$Ñ	. vÑ	.€Bò
ð "€B„Iõô ˆB�˜jÔ)Ø€Ir   c              +   ó”   "  € \        R/ VB p Vx € \        P                  ! W R 7       R#   \        P                  ! Y R 7       i ; i5i))Úignore_errorsNr5   )ÚmkdtempÚshutilÚrmtree)Úrmtree_ignore_errorsr9   r#   s   &, r   ÚtempdirrA   W   s7   é € ô
 Ñ�VÑ€Dð@ØŠ
ä�Š�d×?øŒ�Š�dÖ?üs   ‚A�, “A¬AÁAc                ó$   € V ^8„  d   QhR\         /# r   r   )r
   s   "r   r   r   c   ó   € ÷ /ñ /¤ñ /r   c                 óH   € \        W4      p \        P                  ! RR V /VB # ©r&   r5   )r$   r6   r=   ©r&   r   r9   s   &&,r   r=   r=   c   ó%   € Ü
˜CÓ
+€CÜ×ÒÑ. Ð. vÑ.Ð.r   c                ó$   € V ^8„  d   QhR\         /# r   r   )r
   s   "r   r   r   h   rC   r   c                 óH   € \        W4      p \        P                  ! RR V /VB # rE   )r$   r6   ÚmkstemprF   s   &&,r   rJ   rJ   h   rG   r   )NF)F)Ú
contextlibr+   Úloggingr   r>   r6   Ú	cloudinitr   Ú	getLoggerÚ__name__r!   r   r   r   r$   r:   ÚcontextmanagerrA   r=   rJ   r5   r   r   Ú<module>rQ      sq   ðó Û Û Û 	Û Û å à×Ò˜Ó!€Ø$€Ø(Ð ÷
,÷ò:ð8 ×Ñó@ó ð@÷/÷
/ñ /r   