+
    ˜qgj·O  ã                   ó´  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHtHtHt ^RI	H
t
 ^RIHtHt ^RIHt ^RIHt ^RIHt ^RIHt ^R	IHt ^R
IHt ] P4                  ! ]4      tRtRtRtRt Rt!Rt"R t#R2R lt$R t%R t&R t'R t(R t)R t*R t+R t,R3R lt-R t.R t/R t0R t1R  t2R4R! lt3R" t4R# t5R$ t6R% t7R& t8R' t9R( t:R) t;R* t<R+ t=R, t>R- t?R. t@R/ tAR0 tBR1 tCR# )5é    N)ÚperformanceÚsubpÚutil)ÚConfig)ÚPostCustomScriptÚPreCustomScript)Ú
ConfigFile)ÚNicConfigurator)ÚPasswordConfigurator)ÚGuestCustErrorEnum)ÚGuestCustEventEnum)ÚGuestCustStateEnumz/var/log/cloud-init.logÚqueryNicsSupportedÚ	connectedú/var/run/vmware-imcÚ	deployPkgzenable-custom-scriptsc                 óD  € V '       g   R # RpRp \         P                  RV 4       \        P                  ! RV .^ .R7      w  rV'       d   VP                  4       pW3#   \         d7   p\         P                  R4       \         P                  T4        R p?Y3# R p?ii ; i)NÚ zError sending the RPC commandzSending RPC command: %szvmware-rpctool)ÚrcszFailed to send RPC command)ÚloggerÚdebugr   ÚrstripÚ	ExceptionÚ	exception)ÚrpcÚoutÚerrÚes   &   ÚU/usr/lib/python3/dist-packages/cloudinit/sources/helpers/vmware/imc/guestcust_util.pyÚsend_rpcr    ,   s�   € ßÙà
€CØ
)€CðÜ�‰Ð.°Ô4Ü—Y’YÐ 0°#Ð6¸Q¸CÔ@‰
ˆçØ—*‘*“,ˆCð
 ˆ:Ðøô	 ô Ü�‰Ð1Ô2Ü×Ñ˜×Ðàˆ:Ðûð	ús   �AA ÁBÁ)*BÂBc                 ó‚   € R pV'       d   \         R,           V,           pM\         pRWV3,          p\        V4      w  rVWV3# )r   Ú@zdeployPkg.update.state %d %d %s)ÚCLOUDINIT_LOG_FILEr    )Ú	custstateÚ	custerrorÚerrormessageÚmessager   r   r   s   &&&    r   Úset_customization_statusr(   B   s@   € Ø€GçÜ$ sÕ*¨\Õ9‰ä$ˆà
+¨yÀWÐ.MÕ
M€CÜ˜#“�J€SØˆ:Ðó    c           	     ój  € V '       g   R# Rp\         P                  P                  V 4      '       g   R# \        P                  ! RV  24      ;_uu_ 4        \        V R4      ;_uu_ 4       pVP                  V4      pRRR4       RRR4       X#   + '       g   i     L; i  + '       g   i     X# ; i)zƒReads the NICS from the specified file path and returns the content

@param nicsfilepath: Absolute file path to the NICS.txt file.
Ni   zReading Úr)ÚosÚpathÚexistsr   ÚTimedÚopenÚread)ÚnicsfilepathÚ	NICS_SIZEÚfpÚnicss   &   r   Úget_nics_to_enabler6   O   s‡   € ÷ Ùà€IÜ�7‰7�>‰>˜,×'Ò'Ùä	×	Ò	˜X l ^Ð4×	5Õ	5´tØ�c÷8ô 8à	Ø�w‰w�yÓ!ˆ÷8×	5ð
 €K÷8÷ 8ú×	5Ö	5ð
 €Kús$   ÁB!Á*B	Á<B!ÂBÂB!Â!B2	c                 ó¸  € V '       g   \         P                  R 4       R# ^p^p^p\        V4       EF  p\         P                  RV4       \	        \
        P                  \        P                  V 4      w  rVV'       g   \        P                  ! W#,          4       Kk  V\        8w  d   \         P                  R4        R# \        V4       Fq  p\	        \
        P                  \        P                  V 4      w  rVV'       d&   V\        8X  d   \         P                  RV4         R# \        P                  ! V4       Ks  	  EK  	  \         P                  RV4       R# )zNo Nics foundNz(Trying to connect interfaces, attempt %dz-NICS connection status query is not supportedzNICS are connected on %d secondz2Can't connect network interfaces after %d attempts)r   ÚwarningÚranger   r(   r   ÚGUESTCUST_STATE_RUNNINGr   ÚGUESTCUST_EVENT_ENABLE_NICSÚtimeÚsleepÚQUERY_NICS_SUPPORTEDÚGUESTCUST_EVENT_QUERY_NICSÚNICS_STATUS_CONNECTEDÚinfo)r5   ÚenableNicsWaitRetriesÚenableNicsWaitCountÚenableNicsWaitSecondsÚattemptr   Ú_errÚcounts   &       r   Úenable_nicsrH   f   s  € ßÜ�‰�Ô'ÙàÐØÐØÐäÐ.×/ˆÜ�‰Ð?ÀÔIÜ.Ü×6Ñ6Ü×:Ñ:Øó
‰ˆ÷
 Ü�JŠJÐ*ÕBÔCÙàÔ&Ô&Ü�N‰NÐJÔKÚäÐ.Ö/ˆEÜ2Ü"×:Ñ:Ü"×=Ñ=Øó‰KˆS÷
 �sÔ3Ô3Ü—‘Ð=¸uÔEÛä�JŠJÐ,Ö-ô 0ñ 0ô6 ‡N�NØ<Øör)   c                ó¾  € \         P                  ! R4      '       g   \        P                  R4       V# RRRW.p \         P                   ! V4      pTp\        P                  ! R	TP                  4      pT'       d9   TP                  ^4      P                  4       p\        P                  R
YT4       T# \        P                  RT TT4       T#   \         P                   dz   pTP
                  ^E8X  d(   \        P                  RRP                  T4      T4       M5\        P                  RY5P
                  4       \        P                  T4       Tu Rp?# Rp?ii ; i)a  Return the value of [section] key from VMTools configuration.

@param section: String of section to read from VMTools config
@returns: String value from key in [section] or defaultVal if
          [section] is not present or vmware-toolbox-cmd is
          not installed.
zvmware-toolbox-cmdz9vmware-toolbox-cmd not installed, returning default valueÚconfigÚgetzRvmware-toolbox-cmd returned 69 (unavailable) for cmd: %s. Return default value: %sÚ zFailed running %s[%s]Nz([^=]+)=(.*)zGet tools config: [%s] %s = %sz<Tools config: [%s] %s is not found, return default value: %s)r   Úwhichr   r   ÚProcessExecutionErrorÚ	exit_codeÚjoinÚerrorr   ÚreÚmatchÚstdoutÚgroupÚstrip)ÚsectionÚkeyÚ
defaultValÚcmdr   r   ÚretValueÚms   &&&     r   Úget_tools_configr]   �   s$  € ô �:Š:Ð*×+Ò+Ü�‰ØGô	
ð Ðà ¨5°'Ð
?€CðÜ�iŠi˜‹nˆð €HÜ
�Š� #§*¡*Ó-€AßØ—7‘7˜1“:×#Ñ#Ó%ˆÜ�‰Ð5°wÀXÔNð €Oô 	�‰ØJØØØô		
ð €Oøô5 ×%Ñ%ô Ø�;‰;˜"ÔÜ�L‰Lð,à—‘˜“Øõ	ô �L‰LÐ0°#·{±{ÔCÜ×Ñ˜QÔØÕûðús   »C ÃEÃ#A.EÅEÅEc                 ób   € V '       d'   V P                   '       d   R V,          p\        V4      # R# )zinfo-set guestinfo.gc.status %sN)Úpost_gc_statusr    )rJ   ÚgcMsgr   s   && r   Úset_gc_statusra   Â   s'   € ß�&×'×'Ð'Ø/°%Õ7ˆÜ˜‹}ÐÙr)   c                  ó   € \         # ©N)ÚIMC_DIR_PATH© r)   r   Úget_imc_dir_pathrf   É   s   € ÜÐr)   c                 ó   € / R R / 3w  rVrx\        VR4       \        V4      w  rX\        W4      p	V	'       d   \        WW44      '       g   R# \	        W4      '       g   R#  \
        P                  R4       \        VRRVP                  4      VR&   \        T4       \        \         P"                  \$        P&                  4       \        TR4       YVYx3#   \         d2   p
\        R\        T
4      \        P                  T4       Ru R p
?
# R p
?
ii ; i)NÚStartedz#Preparing the Network configurationTÚnetworkz%Error preparing Network ConfigurationÚ
Successful)NNNN)ra   Ú)get_non_network_data_from_vmware_cust_cfgÚcheck_markersÚdo_special_customizationÚrecheck_markersr   r   Ú%get_network_data_from_vmware_cust_cfgÚosfamilyr   Úset_cust_error_statusÚstrr   Ú$GUESTCUST_EVENT_NETWORK_SETUP_FAILEDÚconnect_nicsr(   r   ÚGUESTCUST_STATE_DONEr   ÚGUESTCUST_ERROR_SUCCESS)Ú	cloud_dirÚscripts_cpathÚcust_cfgÚcust_cfg_dirÚdistroÚmdÚudÚvdÚcfgÚis_special_customizationr   s   &&&&&      r   Úget_data_from_imc_cust_cfgr�   Í   s  € ð ˜$  bÐ(�O€BˆBÜ�(˜IÔ&Ü9¸(ÓC�I€RÜ,¨YÓAÐßÜ'Ø \÷
ò 
ð ,Ð+Ü˜9×/Ò/Ø'Ð'ð(Ü�‰Ð:Ô;Ü=Ø�d˜D &§/¡/ó
ˆˆ9‰ô �ÔÜÜ×/Ñ/Ü×2Ñ2ôô �(˜LÔ)Ø�BÐÐøô ô (ÜØ3Ü�‹FÜ×CÑCØô		
ð (Õ'ûð(ús   Á0C ÃDÃ&DÄDÄDc                 ó  € \        V R 4       RRRr2pV P                  pV'       Edc   \        P                  P	                  \        4       V4      p\        P                  P                  V4      '       g&   \        RRV,          \        P                  V 4       R#  \        P                  ! V4      p \        P                  R4       \         P"                  ! T4      pT P*                  pT'       dš   \        P                  P	                  \        4       T4      p\        P                  P                  T4      '       g&   \        RRT,          \        P                  T 4       R#  \        P                  ! T4      P-                  R	R
4      p\/        \0        P2                  \&        P4                  4       \        V R4       WV3#   \         d2   p\        R\        T4      \        P                  T 4       Ru Rp?# Rp?ii ; i  \         P$                   d1   p\        R\        T4      \&        P(                  T 4        Rp?ELdRp?ii ; i  \         d2   p\        R\        T4      \        P                  T 4       Ru Rp?# Rp?ii ; i)rh   Nz,Error locating the cloud-init meta data filezMeta data file is not found: %sz'Error loading cloud-init meta data filez'Validating if meta data is valid or notz&Error parsing the cloud-init meta dataz+Error locating the cloud-init userdata filezUserdata file is not found: %sÚr   z&Error loading cloud-init userdata filerj   )NNN)ra   Úmeta_data_namer,   r-   rP   rf   r.   rq   r   Ú GUESTCUST_EVENT_CUSTOMIZE_FAILEDr   Úload_text_filer   rr   r   r   ÚyamlÚ	safe_loadÚ	YAMLErrorr   Ú!GUESTCUST_ERROR_WRONG_META_FORMATÚuser_data_nameÚreplacer(   r   ru   rv   )	ry   r|   r}   r~   Úmd_fileÚmd_pathr   Úud_fileÚud_paths	   &        r   Ú#get_data_from_imc_raw_data_cust_cfgr‘   õ   s  € Ü�(˜IÔ&Ø�t˜TˆB€BØ×%Ñ%€Gß€wÜ—'‘'—,‘,Ô/Ó1°7Ó;ˆÜ�w‰w�~‰~˜g×&Ò&Ü!Ø>Ø1°GÕ;Ü"×CÑCØô	ð &Ð%ð		&Ü×$Ò$ WÓ-ˆBð		Ü�L‰LÐBÔCÜ—’ Ó#ˆBð ×)Ñ)ˆßÜ—g‘g—l‘lÔ#3Ó#5°wÓ?ˆGÜ—7‘7—>‘> '×*Ò*Ü%ØAØ4°wÕ>Ü&×GÑGØô	ð *Ð)ð	*Ü×(Ò(¨Ó1×9Ñ9¸$ÀÓC�ô Ü×/Ñ/Ü×2Ñ2ôô �(˜LÔ)Ø�Bˆ<Ðøô_ ô 	&Ü!Ø9Ü�A“Ü"×CÑCØô	ð &Õ%ûð	&ûô �~‰~ô 	Ü!Ø8Ü�A“Ü"×DÑDØ÷	ò ûð	ûô* ô *Ü%Ø<Ü˜“FÜ&×GÑGØô	ð *Õ)ûð*úsT   ÂG Â1+H  Å#&I ÇG=Ç&G8Ç2G=Ç8G=È IÈ%I É IÉJÉ&I?É9JÉ?Jc                 óH  € / / r!V P                   '       dJ   V P                  '       d)   V P                   R ,           V P                  ,           VR&   MV P                   VR&   V P                  '       d   V P                  VR&   V P                  '       d   V P                  VR&   W3# )Ú.zlocal-hostnameÚtimezonezinstance-id)Ú	host_nameÚdomain_namer”   Úinstance_id)ry   r|   r   s   &  r   rk   rk   7  s—   € Ø�"ˆØ××ÐØ××Ðà×"Ñ" SÕ(¨8×+?Ñ+?Õ?ð ÐÒ ð $,×#5Ñ#5ˆBÐÑ Ø××ÐØ"×+Ñ+ˆˆJ‰Ø××ÐØ$×0Ñ0ˆˆ=ÑØˆ9Ðr)   c                 ó’   € \        V P                  V P                  V P                  V4      pVP	                  W#4      p\        V4      # rc   )r
   r5   Úname_serversÚdns_suffixesÚgenerateÚgen_v2_network_config)ry   Úuse_system_devicesÚ	configurerp   ÚnicConfiguratorÚethernets_dicts   &&&&  r   ro   ro   G  sG   € ô &Ø�‰Ø×ÑØ×ÑØó	€Oð %×-Ñ-¨iÓB€Nä  Ó0Ð0r)   c                 ó   € R ^RV /# )ÚversionÚ	ethernetsre   )r    s   &r   rœ   rœ   U  s   € Ø�q˜+ ~Ð6Ð6r)   c                 óè   € \         P                  P                  V R 4      p\         P                  P                  V4      '       d-   \        P                  RV4       \        \        V4      4       R# R# )znics.txtz%s file found, to connect nicsN)r,   r-   rP   r.   r   r   rH   r6   )rz   Ú	nics_files   & r   rt   rt   Y  sK   € Ü—‘—‘˜\¨:Ó6€IÜ	‡w�w‡~�~�i× Ò Ü�‰Ð5°yÔAÜÔ& yÓ1Ö2ñ !r)   c                 ó<   € \         P                  ! V R R4      '       * # )Údisable_vmware_customizationT©r   Úget_cfg_option_bool)Úsys_cfgs   &r   Úis_vmware_cust_enabledr«   `  s"   € Ü×'Ò'ØÐ/°óô ð r)   c                 ó2   € \         P                  ! V R R4      # )Úallow_raw_dataTr¨   )Úds_cfgs   &r   Úis_raw_data_cust_enabledr¯   f  s   € Ü×#Ò# FÐ,<¸dÓCÐCr)   c                 ó  € \        V 4      p\        P                  ! R 4      ;_uu_ 4        \        RV4      pRRR4       X'       d   \        P                  RV4       V# \        P                  R4       R#   + '       g   i     LG; i)ú3Waiting for VMware customization configuration filezcust.cfgNz3Found VMware customization configuration file at %sz0No VMware customization configuration file found)Úget_max_wait_from_cfgr   r/   Úwait_for_cust_cfg_filer   r   )r®   Úmax_waitÚcust_cfg_file_paths   &  r   Úget_cust_cfg_filer¶   j  sr   € ô % VÓ,€HÜ	×	Ò	Ø=÷
õ 
ô 4°JÀÓIÐ÷
÷ Ü�‰ØAØô	
ð "Ð!ä�‰ÐGÔHÙ÷
÷ 
ús   ªA6Á6B	c                 ó  € ^ pW8:  d   ^pWA8  d|   \         P                  P                  W04      p\         P                  P                  V4      '       d   V# \        P                  R4       \        P                  ! V4       WB,          pK�  R# )r   r±   N)r,   r-   rP   Úisfiler   r   r<   r=   )ÚfilenameÚmaxwaitÚnaplenÚdirpathÚwaitedÚfileFullPaths   &&&&  r   r³   r³   �  si   € ð €FØÔØˆà
Ô
Ü—w‘w—|‘| GÓ6ˆÜ�7‰7�>‰>˜,×'Ò'ØÐÜ�‰ÐJÔKÜ�
Š
�6ÔØÕŠÙr)   c                 óî   € ^pRpTpV '       g   V#  \        V P                  W!4      4      pV^ 8  d   \        P	                  RVVV4       TpV#   \         d    \        P	                  RTT4        LGi ; i)é   Úvmware_cust_file_max_waitzFailed to get '%s', using %sz/Invalid value '%s' for '%s', using '%s' instead)ÚintrK   Ú
ValueErrorr   r8   )r®   Údefault_max_waitÚmax_wait_cfg_optionr´   s   &   r   r²   r²   ’  s‡   € ØÐØ5ÐØ€HßØˆð
Ü�v—z‘zÐ"5ÓHÓIˆð �!„|Ü�‰Ø=ØØØô		
ð $ˆØ€Oøô ô 
Ü�‰Ø*ØØö	
ð
ús   ’A Á"A4Á3A4c                 ó�   € VP                   p\        V\        P                  P	                  V R 4      4      pT;'       d    V'       * # )Údata)Ú	marker_idÚcheck_marker_existsr,   r-   rP   )rw   ry   Úproduct_markerÚhas_marker_files   &&  r   rl   rl   «  s>   € Ø×'Ñ'€NÜ)ØœŸ™Ÿ™ Y°Ó7ó€Oð ×1Ð1 /Ô1Ð1r)   c                óÄ   € V '       g   R# \         P                  P                  VRV ,           R,           4      p\         P                  P                  V4      '       d   R# R# )aK  
Check the existence of a marker file.
Presence of marker file determines whether a certain code path is to be
executed. It is needed for partial guest customization in VMware.
@param markerid: is an unique string representing a particular product
                 marker.
@param: marker_dir: The directory in which markers exist.
Fú.markerfile-ú.txtT)r,   r-   rP   r.   )ÚmarkeridÚ
marker_dirÚ
markerfiles   && r   rÉ   rÉ   ³  sA   € ÷ ÙÜ—‘—‘˜j¨.¸8Õ*CÀfÕ*LÓM€JÜ	‡w�w‡~�~�j×!Ò!ÙÙr)   c                 óT   € VP                   pV'       d   \        W4      '       g   R # R# )FT)rÈ   Úcreate_marker_file)rw   ry   rÊ   s   && r   rn   rn   Ä  s!   € Ø×'Ñ'€NßÜ! )×6Ò6ÙÙr)   c                 óì   €  \        VP                  \        P                  P	                  V R 4      4       R#   \
         d1   p\        R\        T4      \        P                  T4        Rp?R# Rp?ii ; i)rÇ   zError creating marker filesNFT)
Úsetup_marker_filesrÈ   r,   r-   rP   r   rq   rr   r   r…   )rw   ry   r   s   && r   rÓ   rÓ   Ì  s`   € ð	Ü˜8×-Ñ-¬r¯w©w¯|©|¸IÀvÓ/NÔOñ øô ô ÜØ)Ü�‹FÜ×?Ñ?Øô		
õ ûðús   ‚48 ¸A3Á%A.Á.A3c                ó’  € \         P                  R4       \        P                  P	                  VRV ,           R,           4      p\        P
                  ! V4       FO  pVP                  R4      '       g   K  \        P                  ! \        P                  P	                  W4      4       KQ  	  \        VR4      P                  4        R# )a  
Create a new marker file.
Marker files are unique to a full customization workflow in VMware
environment.
@param marker_id: is an unique string representing a particular product
                  marker.
@param: marker_dir: The directory in which markers exist.
zHandle marker creationrÍ   rÎ   z.markerfileÚwN)r   r   r,   r-   rP   ÚlistdirÚ
startswithr   Údel_filer0   Úclose)rÈ   rÐ   Úmarker_fileÚfnames   &&  r   rÕ   rÕ   Ú  s�   € ô ‡L�LÐ)Ô*Ü—'‘'—,‘,˜z¨>¸IÕ+EÈÕ+NÓO€KÜ—’˜JÖ'ˆØ×Ñ˜M×*Ô*Ü�MŠMœ"Ÿ'™'Ÿ,™, zÓ9Ö:ñ (ô 	ˆ�cÓ× Ñ Ö"r)   c                 óF  € R pR pR pR pVP                   pV'       d    \        V4      pV'       d   \        WV4      p\        W4      pV'       d5   V'       d-   \        P
                  P                  V R4      p	\        WW)4      pV'       d   T;'       d    T;'       d    T# V# )Fzper-instance)Úcustom_script_nameÚcheck_custom_script_enablementÚdo_pre_custom_scriptÚdo_password_customizationr,   r-   rP   Údo_post_custom_script)
rx   ry   rz   r{   Úis_pre_custom_successfulÚis_password_custom_successfulÚis_post_custom_successfulÚis_custom_script_enabledÚcustom_scriptÚccScriptsDirs
   &&&&      r   rm   rm   ë  s¬   € Ø$ÐØ$)Ð!Ø %ÐØ$ÐØ×/Ñ/€MßÜ#AÀ(Ó#KÐ ß#Ü';Ø¨ó(Ð$ô %>¸hÓ$OÐ!ß×1Ü—w‘w—|‘| M°>ÓBˆÜ$9Ø \ó%
Ð!÷ à$÷ *ð *Ø-÷*ð *à)ð	
ð
 )Ð(r)   c                 óº   €  \        W4      pVP                  4        R#   \         d1   p\        R \	        T4      \
        P                  T 4        Rp?R# Rp?ii ; i)z(Error executing pre-customization scriptNFT)r   Úexecuter   rq   rr   r   r…   )ry   rè   rz   Úprecustr   s   &&&  r   rá   rá     sU   € ð
Ü! -Ó>ˆØ�‰Ôñ øô ô ÜØ6Ü�‹FÜ×?Ñ?Øô		
õ ûðús   ‚ ŸAª%AÁAc                 ó¼   €  \        WV4      pVP                  4        R#   \         d1   p\        R \	        T4      \
        P                  T 4        Rp?R# Rp?ii ; i)z)Error executing post-customization scriptNFT)r   rë   r   rq   rr   r   r…   )ry   rè   rz   ré   Úpostcustr   s   &&&&  r   rã   rã     sY   € ð
Ü# MÀÓNˆØ×ÑÔñ øô ô ÜØ7Ü�‹FÜ×?Ñ?Øô		
õ ûðús   ‚   A«%AÁAc                 óô   € R pRpV P                   '       d   \        P                  R4       Rp\        \        \
        V4      pVP                  4       R8w  d   \        RR\        P                  V 4       V# RpV# )FÚfalsez=Set default value to true due to customization configuration.Útruez-Custom script is disabled by VM Administratorz'Error checking custom script enablementT)
Údefault_run_post_scriptr   r   r]   ÚIMC_TOOLS_CONF_GROUPNAMEÚ"IMC_TOOLS_CONF_ENABLE_CUST_SCRIPTSÚlowerrq   r   ÚGUESTCUST_ERROR_SCRIPT_DISABLED)ry   rç   Údefault_valueÚcustom_script_enablements   &   r   rà   rà   $  s†   € Ø$ÐØ€MØ×'×'Ð'Ü�‰ØKô	
ð ˆÜ/Ü Ü*Øó Ðð
  ×%Ñ%Ó'¨6Ô1ÜØ;Ø5Ü×>Ñ>Øô		
ð $Ð#ð $(Ð Ø#Ð#r)   c                 óf  € \         P                  R 4       \        4       pV P                  p V P                  pV'       g	   V'       d   VP                  W4V4       R# \         P                  R4        R#   \         d1   p\        R\        T4      \        P                  T 4        Rp?R# Rp?ii ; i)zApplying password customizationzChanging password is not neededz%Error applying password configurationNFT)r   r   r   Úadmin_passwordÚreset_passwordrž   r   rq   rr   r   r…   )ry   r{   ÚpwdConfiguratorÚ	admin_pwdÚ	reset_pwdr   s   &&    r   râ   râ   =  s•   € Ü
‡L�LÐ2Ô3Ü*Ó,€OØ×'Ñ'€IðØ×+Ñ+ˆ	ßŸ	Ø×%Ñ% i¸FÔCñ ô �L‰LÐ:Õ;ñ øô ô ÜØ3Ü�‹FÜ×?Ñ?Øô		
õ ûðús#   ­A5 Á	A5 ÁA5 Á5B0Â %B+Â+B0c                 ó*   € \        \        V 4      4      # rc   )r   r	   )Úcfg_files   &r   Úparse_cust_cfgr  R  s   € Ü”*˜XÓ&Ó'Ð'r)   c                 ó”   € R R r!V P                   '       d   Rp\        P                  R4       W3# Rp\        P                  R4       W3# )FTz!raw cloudinit data cust cfg foundzvmware cust cfg found)r„   r   r   )ry   Úis_vmware_cust_cfgÚis_raw_data_cust_cfgs   &  r   Úget_cust_cfg_typer  V  sR   € Ø/4°eÐ,Ø××ÐØ#ÐÜ�‰Ð8Ô9ð Ð5Ð5ð "ÐÜ�‰Ð,Ô-ØÐ5Ð5r)   c                  óx   € Rp RpV  F/  p\        W!4      pV'       g   K  \        P                  RV4        R# 	  R# )ú/usr/lib/vmware-toolszlibdeployPkgPlugin.soz$Found the customization plugin at %sTF)r  z/usr/lib64/vmware-toolsz/usr/lib/open-vm-toolsz/usr/lib64/open-vm-toolsz'/usr/lib/x86_64-linux-gnu/open-vm-toolsz(/usr/lib/aarch64-linux-gnu/open-vm-toolsz%/usr/lib/i386-linux-gnu/open-vm-tools)Úsearch_filer   r   )Úsearch_pathsÚcust_pluginr-   Úcust_plugin_paths       r   Úis_cust_plugin_availabler  a  sG   € ð€Lð *€KÛˆÜ& tÓ9ÐßÑÜ�L‰LØ6Ð8Hôò ñ ñ r)   c                 ó¸   € V '       d	   V'       g   R # \         P                  ! V 4       F-  w  r#pW9   g   K  \         P                  P                  W!4      u # 	  R # rc   )r,   Úwalkr-   rP   )r¼   r¹   ÚrootÚ_dirsÚfiless   &&   r   r  r  v  s@   € ßŸ(Ùä Ÿgšg gÖ.Ñˆ�UØÖÜ—7‘7—<‘< Ó/Ò/ñ /ñ r)   c                óˆ   € \         P                  ! \        RW4       \        \        P
                  V4       \        W04       R# )zK
Set customization status to the underlying VMware Virtualization Platform
z%s: %sN)r   Úlogexcr   r(   r   r:   ra   )ÚprefixrQ   Úeventry   s   &&&&r   rq   rq   �  s-   € ô 	‡K‚K”˜ &Ô0ÜÔ/×GÑGÈÔOÜ�(Ö#r)   rc   )TFN)é´   é   r   )DÚloggingr,   rR   r<   r‡   Ú	cloudinitr   r   r   rJ   r   Úconfig_custom_scriptr   r   Úconfig_filer	   Ú
config_nicr
   Úconfig_passwdr   Úguestcust_errorr   Úguestcust_eventr   Úguestcust_stater   Ú	getLoggerÚ__name__r   r#   r>   r@   rd   ró   rô   r    r(   r6   rH   r]   ra   rf   r�   r‘   rk   ro   rœ   rt   r«   r¯   r¶   r³   r²   rl   rÉ   rn   rÓ   rÕ   rm   rá   rã   rà   râ   r  r  r  r  rq   re   r)   r   Ú<module>r#     s  ðó Û 	Û 	Û ã ç -Ñ -å ß CÝ #Ý 'Ý /Ý /Ý /Ý /à	×	Ò	˜8Ó	$€ð /Ð Ø+Ð Ø#Ð à$€à&Ð Ø%<Ð "ò
ô,
òò.'òT-òdòò%òP?òDô 1ò7ò3òòDòô.ò"ò22òò"òò#ò")ò6òò$ò2ò*(ò6òò*ô$r)   