+
    =l jr  ã                   ó„  € ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIH	t	 ^ RI
HtHtHtHtHt ^ RIHtHtHtHtHtHtHt ^ RIHt ^ RIHtHt ^ R	IHtHt ^ R
I H!t!H"t" ^ RI#H$t$ ^ RI%H&t&H't'H(t(H)t) ^ RI*H+t+H,t,H-t-H.t. ^ RI/H0t0 ^ RI1H2t2 ]Pf                  ! 4       t4]Pj                  ! ]Pl                  ! ]74      4      t8Rt9Rt:Rt;])Px                  Pz                  ]2P|                  ]P~                  ,           ]2P€                  ,           ])P‚                  Pz                  ]2P„                  ]P†                  ,           ]2P€                  ,           ])Pˆ                  Pz                  ]2PŠ                  ]PŒ                  ,           ]2P€                  ,           ])PŽ                  Pz                  ]2PŠ                  ]P�                  ,           ]2P€                  ,           ])P’                  Pz                  ]2P”                  ]P–                  ,           ]2P€                  ,           ]&P˜                  Pz                  ]2P|                  ]Pš                  ,           ]2P€                  ,           ]&Pœ                  Pz                  ]2PŠ                  ]Pž                  ,           ]2P€                  ,           ]9]2P|                  ]P                   ,           ]2P€                  ,           ]:]2P|                  ]P¢                  ,           ]2P€                  ,           ];]2P|                  ]P¤                  ,           ]2P€                  ,           /
tSRtTRtURP­                  ]P®                  ]P°                  ]P²                  ]P´                  R7      t[Rt\Rt]/ RRbRRbR]P¼                  ! 4       bRRbRR bR!RbR"RbR#RbR$. bR%](P‚                  Pz                  bR&]P¾                  bR'/ bR(. bR)R*R+R,R+R-R+R.. R/])Pˆ                  Pz                  /bR0R,R+R*R+R-R+R1. /bR2R bt`R3 taR4 R5 ltbR6 R7 ltcR8 R9 ltdR: R; lteRMR< R= lltfR> R? ltgRMR@ RA llthRB RC ltiRD RE ltjRNRF RG lltkRH RI ltlRMRJ RK lltmRL tnR# )Oé    N)ÚOrderedDict)ÚdatetimeÚtimezone)ÚEnum)ÚAnyÚDictÚListÚOptionalÚTuple)Úevent_loggerÚ
exceptionsÚ	livepatchÚlockÚmessagesÚutilÚversion)Ú_is_attached)ÚUA_CONFIGURABLE_KEYSÚUAConfig)Úget_available_resourcesÚget_contract_information)ÚATTACH_FAIL_DATE_FORMATÚPRINT_WRAP_WIDTH)Úentitlement_factory)ÚContractStatusÚUserFacingAvailabilityÚUserFacingConfigStatusÚUserFacingStatus)Úmachine_tokenÚnoticesÚstate_filesÚuser_config_file)ÚNotice)ÚTxtColorÚ	essentialÚstandardÚadvancedz({name: <17}{available: <11}{description}zJ{name: <17}{available: <11}{entitled: <11}{auto_enabled: <16}{description}z4{name: <17}{entitled: <10}{status: <13}{description})ÚnameÚentitledÚstatusÚdescriptionz4{name: <17}{entitled: <19}{status: <22}{description}z={marker} {name: <15}{entitled: <19}{status: <22}{description}Ú_doczUContent provided in json response is currently considered Experimental and may changeÚ_schema_versionz0.1r   Ú
machine_idÚattachedFÚ	effectiveÚexpiresÚoriginÚservicesÚexecution_statusÚexecution_detailsÚfeaturesr    ÚcontractÚidÚ r(   Ú
created_atÚproductsÚtech_support_levelÚaccountÚexternal_account_idsÚ	simulatedc           	      ó4  € V P                  4        Uu. uFy  pR VP                  P                  '       g   VP                  P                  MVP                  P                  RVP
                  P                  RVP
                  P                  /NK{  	  up# u upi )r(   Úreason_codeÚreason)Úblocking_incompatible_servicesÚentitlementÚ
is_variantr(   Úvariant_nameÚ	named_msgÚmsg)ÚentÚservices   & Ú1/usr/lib/python3/dist-packages/uaclient/status.pyÚ_get_blocked_by_servicesrL   �   s�   € ð ×9Ñ9Ô;óñ <ˆGð à×*Ñ*×5×5Ð5ð ×#Ñ#×(Ò(à×(Ñ(×5Ñ5à˜7×,Ñ,×1Ñ1Ø�g×'Ñ'×+Ñ+ó	
ñ <ñð ùò s   “!BµABc                óF   € V ^8„  d   QhR\         \        \        3,          /# ©é   Úreturn©r   Ústrr   )Úformats   "rK   Ú__annotate__rT   œ   s   € ÷ 8ñ 8ä	Œ#Œsˆ(…^ñ8ó    c                 ót  € R pRpV P                  4       pV P                  4       pV P                  V9   d   RMRp/ pV\        P                  8X  d   \
        P                  p	MóV P                  V9   d$   \
        P                  p	WP                  ,          pM¿V P                  4       w  ršV	\
        P                  8X  d   RV
P                  RV
P                  /pMV
'       d   V
P                  pV	\
        P                  8X  d   RpV P                  '       dA   V P                  P                  4        UUu/ uF  w  r¼V\        V! VR7      VV4      bK  	  ppp\        V 4      pRV P                  RV P                   R	VP"                  R
V	P"                  RVRVRVRVRV/	pV P$                  '       g   WŽR&   V# u uppi )Nr9   ÚnoÚyesÚcodeÚmessage)Úcfgr(   r+   r)   r*   Ústatus_detailsÚdescription_overrideÚ	availableÚ
blocked_byÚwarningÚvariants)Ústatus_description_overrideÚcontract_statusr(   r   Ú
UNENTITLEDr   ÚUNAVAILABLEÚINAPPLICABLEÚuser_facing_statusÚWARNINGrH   ra   ÚitemsÚ_attached_service_statusrL   Úpresentation_namer+   ÚvaluerE   )rI   Úinapplicable_resourcesr[   r`   r\   r]   rc   r^   ra   Ú
ent_statusÚdetailsrF   Úvariant_clsr_   Úservice_statuss   &&&            rK   rj   rj   œ   s¯  € ð €GØ€NØ×:Ñ:Ó<ÐØ×)Ñ)Ó+€OØŸ™Ð$:Ô:‘À€IØ€Hàœ.×3Ñ3Ô3Ü%×1Ñ1‰
à�8‰8Ð-Ô-Ü)×6Ñ6ˆJØ#9¿(¹(Õ#CÑ à"%×"8Ñ"8Ó":ÑˆJØÔ-×5Ñ5Ô5à˜GŸL™LØ˜wŸ{™{ð‘÷ Ø!(§¡�àÔ-×:Ñ:Ô:Ø �	à�|�|ˆ|ð 69·\±\×5GÑ5GÔ5Iôñ 6JÑ1˜ð !Ô":Ù#¨Ô,Ø.Øó#ò ñ
 6Jð ñ ô *¨#Ó.€Jð 	�×%Ñ%Ø�s—‘Ø�O×)Ñ)Ø�*×"Ñ"Ø˜.ØÐ 4Ø�YØ�jØ�7ð
€Nð �>�>ˆ>Ø%-�zÑ"àÐùó5s   Ä2 F4c                óR   € V ^8„  d   QhR\         R\        \        \        3,          /# ©rO   r[   rP   ©r   r   rR   r   )rS   s   "rK   rT   rT   ×   s&   € ÷ Dñ Dœ(ð D¤t¬C´¨H¥~ñ DrU   c                ó  € \         P                  ! \        P                  4       \         P                  ! \        P                  4       \        V 4      P                  '       d%   \         P                  ! \        P                  4       \        P                  ! \        4      p\        P                  ! V 4      pVP                  R,          pVR,          p\        P                  P                  pTP!                  RVR,          RRRVP#                  R4      R\         P$                  ! 4       ;'       g    . R	R
VR
,          RVR,          RVP#                  RR4      RVP#                  R. 4      RV/RRVP&                  R,          R
VP&                  R
,          RVP&                  P#                  RR4      RVP&                  P#                  R. 4      //4       VP#                  R4      '       d   VP(                  VR&   VP#                  R4      '       d   VR,          VR&   VP                  P#                  R4      pV'       g   \+        V 4      p\-        VR R7       Uu/ uF5  pVP#                  R4      '       d   K  VR,          VP#                  R4      bK7  	  ppV FB  p \/        WP#                  RR4      R7      p	TR,          P5                  \7        Y˜T 4      4       KD  	  VR,          P9                  R R7       VP;                  4       P#                  R / 4      P#                  R!4      p
V
'       d5   V
P#                  R"/ 4      P#                  R#4      pV'       d   W±R	,          R&   V# u upi   \0        P2                   d     Kê  i ; i)$z8Return configuration of attached status as a dictionary.ÚmachineTokenInfoÚcontractInfor.   Ú	machineIdr/   Tr2   r    r7   r8   r(   r:   Ú	createdAtr9   r;   r<   r=   r>   ÚexternalAccountIDsÚeffectiveTor1   ÚeffectiveFromr0   ÚavailableResourcesc                 ó&   € V P                  R R4      # ©r(   r9   ©Úget©Úxs   &rK   Ú<lambda>Ú"_attached_status.<locals>.<lambda>  s   € ¸¿¹¸fÀbÔ8IrU   ©Úkeyr^   r+   ©r[   r(   r3   c                 ó&   € V P                  R R4      # r   r€   r‚   s   &rK   r„   r…     ó   € ¨A¯E©E°&¸"Ô,=rU   ÚsupportrD   ÚaffordancesÚsupportLevel)r    Úremover#   ÚAUTO_ATTACH_RETRY_FULL_NOTICEÚAUTO_ATTACH_RETRY_TOTAL_FAILUREr   Úis_attached_and_contract_validÚCONTRACT_EXPIREDÚcopyÚdeepcopyÚDEFAULT_STATUSr   Úget_machine_token_filer   rf   rl   Úupdater�   Úlistr=   Úcontract_expiry_datetimer   Úsortedr   r   ÚEntitlementNotFoundErrorÚappendrj   ÚsortÚentitlements)r[   ÚresponseÚmachine_token_filerv   rw   r<   Ú	resourcesÚresourcerm   rI   r‹   r�   s   &           rK   Ú_attached_statusr£   ×   s  € ä‡N‚N”6×7Ñ7Ô8Ü‡N‚N”6×9Ñ9Ô:Ü�CÓ×7×7Ð7Ü�Š”v×.Ñ.Ô/ä�}Š}œ^Ó,€HÜ&×=Ò=¸cÓBÐØ)×7Ñ7Ð8JÕKÐØ# NÕ3€LÜ)×6Ñ6×<Ñ<ÐØ‡O�OàÐ*¨;Õ7Ø˜Ø�l×&Ñ& xÓ0Ø”w—|’|“~×+Ð+¨ØØ�l 4Õ(Ø˜ VÕ,Ø˜l×.Ñ.¨{¸BÓ?Ø˜L×,Ñ,¨Z¸Ó<Ø$Ð&8ðð ØÐ*×2Ñ2°6Õ:ØÐ(×0Ñ0°Õ6ØÐ0×8Ñ8×<Ñ<¸[È"ÓMØ&Ð(:×(BÑ(B×(FÑ(FØ(¨"ó)ð	ð	
ôð. ×Ñ˜×&Ò&Ø0×IÑIˆ�ÑØ×Ñ˜×(Ò(Ø ,¨_Õ =ˆ�Ñà"×0Ñ0×4Ñ4Ð5IÓJ€IßÜ+¨CÓ0ˆ	ô ˜yÑ.IÕJóáJˆHØ�|‰|˜K×(ô 	6ˆ�Õ˜(Ÿ,™, }Ó5Ò5ÙJð ð ó ˆð	Ü%¨#·L±LÀÈÓ4LÔMˆCð 	�Õ×#Ñ#Ü$ SÀ#ÓFö	
ñ ð ˆZÕ×ÑÑ"=ÐÔ>ð 	×'Ñ'Ó)×-Ñ-¨i¸Ó<×@Ñ@ÀÓOð ÷ Ø—{‘{ =°"Ó5×9Ñ9¸.ÓIˆßØ9E�ZÕ Ð!5Ñ6Ø€Oùò1øô ×2Ñ2ô 	Úð	ús   ÉM'É9M'ÊM,Í,NÎNc                óR   € V ^8„  d   QhR\         R\        \        \        3,          /# rs   rt   )rS   s   "rK   rT   rT     s"   € ÷ +ñ +œHð +¬¬c´3¨h­ñ +rU   c                ó   € \         P                  ! \        4      p\        V 4      pV EF  pVP	                  R4      '       d   \
        P                  P                  pM\
        P                  P                  p \        WP	                  RR4      R7      pTP                  R8X  dD   \        P                   ! 4       \        P"                  P$                  8X  d   TP'                  4       pMRpTR	,          P)                  RTP	                  R
TR,          4      RTP*                  RTRT/4       EK  	  VR	,          P-                  R R7       V#   \        P                   d,    \        P                  RTP	                  RR4      4        EKd  i ; i)z#Return unattached status as a dict.r^   r(   r9   rˆ   z@Ignoring availability of unknown service %s from contract serverzwithout a 'name' keyr   Nr3   ÚpresentedAsr+   r]   c                 ó&   € V P                  R R4      # r   r€   r‚   s   &rK   r„   Ú$_unattached_status.<locals>.<lambda>G  rŠ   rU   r†   )r“   r”   r•   r   r�   r   Ú	AVAILABLErl   re   r   r   r›   ÚLOGÚdebugr(   r   Úon_supported_kernelÚLivepatchSupportÚUNSUPPORTEDrb   rœ   r+   r�   )r[   rŸ   r¡   r¢   r^   rI   Údescr_overrides   &      rK   Ú_unattached_statusr°     sO  € ô �}Š}œ^Ó,€Hä'¨Ó,€IÜˆØ�<‰<˜×$Ò$Ü.×8Ñ8×>Ñ>‰Iä.×:Ñ:×@Ñ@ˆIð		Ü%¨#·L±LÀÈÓ4LÔMˆCð �H‰H˜Ô#Ü×-Ò-Ó/Ü×)Ñ)×5Ñ5ô6ð !×<Ñ<Ó>‰Nà!ˆNà�Õ×#Ñ#à˜Ÿ™ ]°H¸VÕ4DÓEØ˜sŸ™Ø&¨Ø˜Yð	÷	
ñ7 ðF ˆZÕ×ÑÑ"=ÐÔ>à€Oøô; ×2Ñ2ô 	Ü�I‰Iðà—‘˜VÐ%;Ó<ôó
 ð	ús   Á9EÅ;FÆFc                óF   € V ^8„  d   QhR\         \        \        3,          /# rN   rQ   )rS   s   "rK   rT   rT   L  s   € ÷ ,ñ ,œt¤C¬ H�~ñ ,rU   c                ón  € \         pVP                  P                  p\        P                  p\
        P                  ! 4       w  rE\        P                  ! 4       ;'       g    . pV^ 8”  d8   VP                  P                  p\        P                  P                  WER7      pMX\        P                  P                  '       d9   VP                  P                  pRp\        P                   P                  VR7      pRVRVRVRV P"                  RV P$                  R	V P&                  /p\(        P*                  P,                  P/                  4       p	\0         FS  p
\3        W
4      '       g   K  Wš,          e   K"  \5        W
4      p\7        V\8        4      '       d   VP                  pW¹V
&   KU  	  W˜R,          R
&   V# )a/  Return a dict with execution_status, execution_details and notices.

Values for execution_status will be one of UserFacingConfigStatus
enum:
    inactive, active, reboot-required
execution_details will provide more details about that state.
notices is a list of tuples with label and description items.
)ÚpidÚlock_holderzconfiguration changes)Ú	operationr4   r5   r    Úconfig_pathÚconfigr6   Ú	ua_config)r   ÚINACTIVErl   r   ÚNO_ACTIVE_OPERATIONSr   Úcheck_lock_infor    r˜   ÚACTIVEÚ	LOCK_HELDrS   r!   Úreboot_cmd_marker_fileÚ
is_presentÚREBOOTREQUIREDÚENABLE_REBOOT_REQUIRED_TMPLÚcfg_pathr[   r6   r"   Úuser_configÚpublic_configÚto_dictr   ÚhasattrÚgetattrÚ
isinstancer   )r[   Ú
userStatusÚ
status_valÚstatus_descÚlock_pidr´   Únotices_listrµ   Úretr¸   r‡   Úvals   &           rK   Ú_get_config_statusrÐ   L  sm  € ô (€JØ×$Ñ$×*Ñ*€JÜ×/Ñ/€KÜ"×2Ò2Ó4Ñ€XÜ—<’<“>×'Ð' R€LØ�!„|Ø×&Ñ&×,Ñ,ˆ
Ü×(Ñ(×/Ñ/Øð 0ó 
‰ô 
×	+Ñ	+×	6×	6Ð	6Ø×.Ñ.×4Ñ4ˆ
Ø+ˆ	Ü×:Ñ:×AÑAØð Bó 
ˆð 	˜JØ˜[Ø�<Ø�s—|‘|Ø�#—'‘'Ø�C—L‘Lð€Cô !×,Ñ,×:Ñ:×BÑBÓD€Iß#ˆÜ�3×Ô ¥Ô!7Ü˜#Ó#ˆCÜ˜#œt×$Ò$Ø—i‘i�Ø �c‹Nñ $ð "+ˆ…M�+Ñà€JrU   c                ó^   € V ^8„  d   QhR\         R\        R\        \        \        3,          /# )rO   r[   Úshow_allrP   )r   Úboolr   rR   r   )rS   s   "rK   rT   rT   {  s)   € ÷ ñ ”ð ¤Dð ´T¼#¼s¸(µ^ñ rU   c                ó¨  € \        V 4      P                  '       d   \        V 4      pM\        V 4      pVP	                  \        V 4      4       \        P                  ! 4       '       d    \        P                  P                  V4       V'       g?   VP                  R. 4       Uu. uF  pVP                  RR4      R8X  g   K  VNK   	  ppWBR&   V# u upi )zôReturn status as a dict, using a cache for non-root users

When unattached, get available resources from the contract service
to report detailed availability of different resources for this
machine.

Write the status-cache when called by root.
r3   r^   rX   )r   Úis_attachedr£   r°   r—   rÐ   r   Úwe_are_currently_rootr!   Ústatus_cache_fileÚwriter�   )r[   rÒ   rŸ   rJ   Úavailable_servicess   &&   rK   r*   r*   {  s·   € ô �CÓ×$×$Ð$Ü# CÓ(‰ä% cÓ*ˆà‡O�OÔ& sÓ+Ô,ä×!Ò!×#Ò#Ü×%Ñ%×+Ñ+¨HÔ5çð $Ÿ<™<¨
°BÔ7ó
á7�Ø�{‰{˜;¨Ó.°%Ñ7÷ ˆGÙ7ð 	ð 
ð
  2�Ñà€Oùò
s   Â#CÃCc                ó–   € V ^8„  d   QhR\         \        \        \        3,          ,          R\        R\        \        \        3,          /# )rO   rž   Úentitlement_namerP   )r	   r   rR   r   )rS   s   "rK   rT   rT   ™  s>   € ÷ Gñ GÜ”tœC¤˜H•~Õ&ðGÜ:=ðGä	Œ#Œsˆ(…^ñGrU   c           
     ó  € V  Fu  pVP                  R4      V8X  g   K  RVP                  R4      '       d   RMRRVP                  R/ 4      P                  R4      '       d   RMRRVP                  R/ 4      /u # 	  RRRRR/ /# )	z0Extract information from the entitlements array.Útyper)   rX   rW   Úauto_enabledÚobligationsÚenableByDefaultrŒ   r€   )rž   rÛ   rD   s   && rK   Ú_get_entitlement_informationrá   ™  s’   € ó $ˆØ�?‰?˜6Ó"Ð&6Ö6à [§_¡_°Z×%@Ò%@™EÀdØà"—‘ }°bÓ9×=Ñ=Ø)÷ò ñ ð à˜{Ÿ™¨}¸bÓAð
ò 
ñ $ð ˜˜n¨d°MÀ2ÐFÐFrU   c          	      ó€   € V ^8„  d   QhR\         R\        R\        \        \         \        3,          \
        3,          /# )rO   ÚtokenrÒ   rP   )rR   rÓ   r   r   r   Úint)rS   s   "rK   rT   rT   ­  s;   € ÷ uñ uÜðuÜ#ðuä
Œ4””S��>œ3ÐÕñurU   c                ó˜
  € ^ p\         P                  ! \        4      p \        W4      pTP                  R/ 4      pTP                  R/ 4      pTP                  RRTP                  RR4      R	TP                  R	R4      R
TP                  RR4      RTP                  R. 4      /RR	TP                  R	R4      RTP                  R4      R
TP                  RR4      RTP                  R. 4      /RR/4       \        P                  ! \        P                  4      p	TP                  R4      '       dì   TP                  R4      TR&   TR,          p
Y©,
          pTP                  4       ^ 8:  d²   \         P"                  P%                  TR,          R,          T
P'                  \(        4      R7      p\*        P-                  TP.                  TP0                  R7       \*        P3                  \         P4                  R,           TP.                  ,           R,           4       ^pTP                  R4      '       dì   TP                  R4      TR&   TR,          pY�,
          pTP                  4       ^ 8:  d²   \         P6                  P%                  TR,          R,          TP'                  \(        4      R7      p\*        P-                  TP.                  TP0                  R7       \*        P3                  \         P4                  R,           TP.                  ,           R,           4       ^p\9        T 4      p\;        TR R7       Uu. uF  pTR,          '       d   K  TR	,          NK  	  ppTP                  R. 4      pT F–  pTP                  R	R4      p \=        T TR7      p\A        TT4      pTR,          PC                  R	TP                  RTP0                  4      R TPD                  R!TR!,          R"TR",          RTP0                  T9  d   R#MR$/4       K˜  	  TR,          PG                  R% R7       \A        TR&4      pTR!,          '       d-   TR',          P                  R(4      pT'       d   TTR,          R)&   TP                  \I        T 4      4       T'       g@   TP                  R. 4       Uu. uF  pTP                  RR#4      R#8X  g   K  TNK   	  ppTTR&   YC3#   \        P
                   d@   p\        TR4      '       d'   TP                  R8X  d   \        P                  ! 4       hThRp?ii ; iu upi   \        P>                   d     EKÔ  i ; iu upi )*zŠGet a status dictionary based on a token.

Returns a tuple with the status dictionary and an integer value - 0 for
success, 1 for failure
rY   i‘  Nrw   ÚaccountInfor7   r8   r9   r(   r:   ry   r;   r=   r>   rz   r?   Tr{   r1   )Úcontract_idÚdate)Ú	error_msgÚ
error_codeÚ
r|   r0   c                 ó   € V R ,          # ©r(   © r‚   s   &rK   r„   Ú!simulate_status.<locals>.<lambda>÷  s   € ¸¸&¾	rU   r†   r^   ÚresourceEntitlementsrˆ   r3   r¦   r+   r)   rÞ   rX   rW   c                 ó&   € V P                  R R4      # r   r€   r‚   s   &rK   r„   rï     rŠ   rU   r‹   rŒ   r�   r<   )%r“   r”   r•   r   r   ÚContractAPIErrorrÆ   rY   ÚAttachInvalidTokenErrorr�   r—   r   Únowr   ÚutcÚtotal_secondsr   ÚE_ATTACH_FORBIDDEN_EXPIREDrS   Ústrftimer   ÚeventÚerrorrH   r(   ÚinfoÚSTATUS_TOKEN_NOT_VALIDÚE_ATTACH_FORBIDDEN_NOT_YETr   rš   r   r›   rá   rœ   r+   r�   rÐ   )r[   rã   rÒ   rÎ   rŸ   Úcontract_informationÚeÚcontract_infoÚaccount_inforô   Úexpiration_datetimeÚdeltarZ   Úeffective_datetimer¡   r¢   rm   rž   rÛ   rI   Úentitlement_informationr‹   r�   rJ   rÙ   s   &&&                      rK   Úsimulate_statusr  ­  sÛ  € ð €CÜ�}Š}œ^Ó,€HðÜ7¸ÓCÐð )×,Ñ,¨^¸RÓ@€MØ'×+Ñ+¨M¸2Ó>€Là‡O�OàØ�m×'Ñ'¨¨bÓ1Ø˜×)Ñ)¨&°"Ó5Ø˜m×/Ñ/°¸RÓ@Ø˜M×-Ñ-¨j¸"Ó=ð	ð Ø˜×(Ñ(¨°Ó4Ø�l×&Ñ& tÓ,Ø˜l×.Ñ.¨{¸BÓ?Ø&¨×(8Ñ(8Ø(¨"ó)ð	ð ˜ð	
ôô( �,Š,”x—|‘|Ó
$€CØ×Ñ˜×'Ò'Ø+×/Ñ/°Ó>ˆ�ÑØ& yÕ1ÐØ#Õ)ˆØ×ÑÓ  AÔ%Ü×9Ñ9×@Ñ@Ø$ ZÕ0°Õ6Ø(×1Ñ1Ô2IÓJð Aó ˆGô �K‰K '§+¡+¸'¿,¹,ˆKÔGÜ�J‰JÜ×/Ñ/°$Õ6¸¿¹ÕDÀtÕKôð ˆCØ×Ñ˜×)Ò)Ø -× 1Ñ 1°/Ó Bˆ�ÑØ% kÕ2ÐØÕ(ˆØ×ÑÓ  AÔ%Ü×9Ñ9×@Ñ@Ø$ ZÕ0°Õ6Ø'×0Ñ0Ô1HÓIð Aó ˆGô �K‰K '§+¡+¸'¿,¹,ˆKÔGÜ�J‰JÜ×/Ñ/°$Õ6¸¿¹ÕDÀtÕKôð ˆCä'¨Ó,€Iô ˜yÑ.AÕBóáBˆHØ˜×$Ñ$ô 	ˆ�×ÐÙBð ð ð !×$Ñ$Ð%;¸RÓ@€LÛˆØ#Ÿ<™<¨°Ó3Ðð	Ü%¨#Ð4DÔEˆCô #?ØÐ*ó#
Ðð 	�Õ×#Ñ#à˜Ÿ™ ]°C·H±HÓ=Ø˜sŸ™ØÐ3°JÕ?ØÐ 7¸Õ GØØ ŸX™XÐ-CÔC‘EÈðö
	
ñ ð( ˆZÕ×ÑÑ"=ÐÔ>ä*¨<¸ÓC€GØˆz×ÔØ˜}Õ-×1Ñ1°.ÓAˆßØ9EˆH�ZÕ Ð!5Ñ6à‡O�OÔ& sÓ+Ô,çð $Ÿ<™<¨
°BÔ7ó
á7�Ø�{‰{˜;¨Ó.°%Ñ7÷ ˆGÙ7ð 	ð 
ð
  2ˆ�Ñàˆ=ÐøôQ ×&Ñ&ô Ü�1�f×Ò !§&¡&¨C¤-Ü×4Ò4Ó6Ð6Øˆûðüòvøô ×2Ñ2ô 	Ûð	üò6
sA   žS Ì6T%ÍT%ÎT*Ò UÒ>UÓT"Ó#:TÔT"Ô*UÕUc                ó0   € V ^8„  d   QhR\         R\         /# )rO   ÚstringrP   )rR   )rS   s   "rK   rT   rT   %  s   € ÷ ñ ¤ð ¬ñ rU   c                óx   € \         P                  P                  4       '       d   \        P	                  W 4      # T # )z=Return colorized string if using a tty, else original string.)ÚsysÚstdoutÚisattyÚSTATUS_HUMANIZE_COLORIZEr�   )r  s   &rK   Úfor_human_colorizedr  %  s6   € ô �:‰:×Ñ×Òô 	!×$Ñ$ VÓ4ðð ðrU   c                ó\   € V ^8„  d   QhR\         \         \        ,          ,          R\        /# )rO   ÚcommandsrP   )r	   rR   )rS   s   "rK   rT   rT   .  s"   € ÷ ñ ¤¤T¬#¥Y¥ð ´Cñ rU   c                 óT  € R pV  F,  pV'       d
   VR,          pVRP                  V4      ,          pK.  	  RP                  \        P                  ! V\        ^,
          RR7      4      pRV9   d   RpRpMR	pR
pRP	                  \
        P                  VVV\
        P                  R7      # )r9   z && Ú z \
z  )ÚwidthÚsubsequent_indentrë   z{
  z
}z{ z }z%{color}{prefix}{content}{suffix}{end})ÚcolorÚprefixÚcontentÚsuffixÚend)ÚjoinÚtextwrapÚwrapr   rS   r$   ÚDISABLEGREYÚENDC)r  r  ÚcmdÚwrapped_contentr  r  s   &     rK   Úcolorize_commandsr!  .  s¨   € Ø€GÛˆßØ�vÕˆGØ�3—8‘8˜C“=Õ Šñ ð —l‘lÜ�ŠØÔ,¨qÕ0ÀTô	
ó€Oð
 ˆÔØˆØ‰àˆØˆØ2×9Ñ9Ü×"Ñ"ØØØÜ�M‰Mð :ó ð rU   c                ó    € V ^8„  d   QhR\         \        \        \        3,          ,          R\        \        ,          R\         \        ,          /# )rO   Úcolumn_dataÚheaderrP   )r	   r   rR   r
   )rS   s   "rK   rT   rT   J  s9   € ÷ ñ Ü”eœC¤˜H•oÕ&ðÜ08¼µðä	Œ#…YñrU   c           	     óŽ  € . pV'       d   VP                  V4       \        V  Uu. uF  p\        V^ ,          4      NK  	  up4      pV^ 8”  dB   RP                  V4      pTP	                  V  Uu. uF  q5P                  ! V!  NK  	  up4       V# TP	                  V  Uu. uF  q3^,          NK  	  up4       V# u upi u upi u upi )z’Return a list of content lines to print to console for a section

Content lines will be center-aligned based on max value length of first
column.
z{{:>{}}}: {{}})rœ   ÚmaxÚlenrS   Úextend)r#  r$  r  ÚpairÚtemplate_lengthÚtemplates   &&    rK   Úget_section_column_contentr,  J  s±   € ð €GßØ�‰�vÔÜ±KÓ@±K¨Dœ3˜t A�wž<±KÑ@ÓA€OØ˜ÔØ#×*Ñ*¨?Ó;ˆØ�‰¹;ÓG¹;°4Ÿš¨Ô.¹;ÑGÔHð €Nð 	�‰©KÓ8©K D˜QŸ˜©KÑ8Ô9Ø€Nùò Aùò Hùò 9s   ¥B8Á.B=ÂCc                óF   € V ^8„  d   QhR\         \        ,          R\        /# )rO   r1   rP   )r
   r   rR   )rS   s   "rK   rT   rT   _  s   € ÷ %ñ %œH¤XÕ.ð %´3ñ %rU   c                 ó�   € V f   \         P                  #  V P                  4       p V P	                  R4      #   \         d     Li ; i)Nz%c %Z)r   ÚSTATUS_CONTRACT_EXPIRES_UNKNOWNÚ
astimezoneÚ	Exceptionrø   )r1   s   &rK   Úformat_expiresr2  _  sM   € Ø‚Ü×7Ñ7Ð7ðØ×$Ñ$Ó&ˆð ×Ñ˜GÓ$Ð$øô ô Ùðús   –7 ·AÁAc                ó^   € V ^8„  d   QhR\         \        \        3,          R\        R\        /# )rO   r*   rÒ   rP   )r   rR   r   rÓ   )rS   s   "rK   rT   rT   i  s.   € ÷ yñ yœ4¤¤S �>ð y´Tð yÄcñ yrU   c                óÌ  € V P                  R4      '       Eg    V P                  R4      '       dÙ   V P                  RR4      '       g   \        P                  # \        P	                  \        P
                  \        P                  \        P                  \        P                  \        P                  R7      .pV P                  R. 4       F(  pVP                  \        P                  ! R&/ VB 4       K*  	  RP                  V4      # V P                  RR4      '       g   \        P                  .pMö\        P	                  \        P
                  \        P                  \        P                  R7      .pV P                  R. 4       F�  pVP                  R4      pV'       d   TMVP                  R	R
4      pVP                  R4      R8X  d   \        P                  M\        P                  pVP                  \        P	                  VP                  RR
4      VVR7      4       KŸ  	  V P                  R4      pV'       d1   VP                  \        P                  4       VP!                  V4       V P                  R4      '       dy   VP                  R\        P"                  ,           4       \%        V P                  R/ 4      P'                  4       4       F%  w  r‰VP                  RP	                  W‰4      4       K'  	  V'       g"   VP!                  R
\        P(                  .4       VP!                  R
\        P*                  P,                  .4       \.        P0                  ! 4       \.        P2                  P4                  8X  d"   VP!                  R
\        P6                  .4       RP                  V4      # . p
RpV P                  RR4      '       g   \        P                  .pEM\8        .pV P                  R. 4       EFð  pVP                  RR
4      pVP                  R4      pV'       d   TMVP                  R	R
4      pRVP                  RR
4      R\;        V4      R\;        VP                  RR
4      4      R	V/pVP                  RR4      pVe(   VP                  RR4      pVe   V
P                  V4       VP                  R4      pV'       d&   V'       g   RpRP	                  VR,          4      VR&   VP                  \<        P                  ! R&/ VB 4       V'       g   EK*  V'       g   EK5  \?        VP'                  4       4       Fž  w  pw  ppV\A        V4      ^,
          8w  d   RMRpVP                  \B        P	                  VVP                  R4      \;        VP                  RR
4      4      \;        VP                  RR
4      4      VP                  R	R
4      R7      4       K   	  EKó  	  V'       d1   VP                  R
4       VP                  \        PD                  4       V P                  R4      '       g   \A        V
4      ^ 8”  d|   VP                  R
4       VP                  \        P                  4       V P                  R4      pV'       d   VP!                  V4       \A        V
4      ^ 8”  d   VP!                  V
4       V P                  R4      '       dy   VP                  R\        P"                  ,           4       \%        V P                  R/ 4      P'                  4       4       F%  w  r‰VP                  RP	                  W‰4      4       K'  	  VP                  R
4       V'       gH   V'       d!   VP                  \        PF                  4       MVP                  \        P(                  4       VP                  \        PH                  P	                  RR7      4       . pV P                  R/ 4      P                  RR4      pV'       d"   VP                  \        PJ                  V34       V P                  R / 4      P                  RR4      pV'       d"   VP                  \        PL                  V34       V P                  R!R4      R"8w  d†   VP                  \        PN                  \Q        V P                  R#4      4      34       V P                  R / 4      P                  R$R4      pVP                  \        PR                  \;        V4      34       V'       d-   VP                  R
4       VP!                  \U        VR%7      4       RP                  V4      # )'z&Format status dict for tabular output.r/   r?   r3   N)r(   r^   r)   rÞ   r+   rë   )r(   r^   r+   r]   r+   r9   r^   rX   r(   r    r6   z{}: {}Fr)   r*   r`   rZ   ra   Tz{}*u   â”œu   â””)Úmarkerr(   r)   r*   r+   zpro enable <service>)Úcommandr=   Úunknownr7   r2   Úfreer1   r<   )r#  rî   )+r�   r   ÚSTATUS_NO_SERVICES_AVAILABLEÚSTATUS_SIMULATED_TMPLrS   ÚSTATUS_SERVICEÚSTATUS_AVAILABLEÚSTATUS_ENTITLEDÚSTATUS_AUTO_ENABLEDÚSTATUS_DESCRIPTIONrœ   r  ÚSTATUS_UNATTACHED_TMPLÚSTANDALONE_YESÚSTANDALONE_NOÚSTATUS_NOTICESr(  ÚSTATUS_FEATURESrš   ri   ÚSTATUS_ALL_HINTÚE_UNATTACHEDrH   r   r¬   r­   r®   Ú)LIVEPATCH_KERNEL_NOT_SUPPORTED_UNATTACHEDÚSTATUS_HEADERr  ÚSTATUS_TMPLÚ	enumerater'  ÚVARIANT_STATUS_TMPLÚSTATUS_SERVICE_HAS_VARIANTSÚSTATUS_ALL_HINT_WITH_VARIANTSÚ"STATUS_FOOTER_ENABLE_SERVICES_WITHÚSTATUS_FOOTER_ACCOUNTÚSTATUS_FOOTER_SUBSCRIPTIONÚSTATUS_FOOTER_VALID_UNTILr2  ÚSTATUS_FOOTER_SUPPORT_LEVELr,  )r*   rÒ   r  rJ   r¯   r+   r^   r    r‡   rl   Úservice_warningsÚhas_variantsrq   r)   Úfmt_argsr`   Úwarning_messagera   ÚidxÚ_Úvariantr5  ÚpairsÚaccount_nameÚcontract_namer<   s   &&                        rK   Úformat_tabularr]  i  sc  € à�:‰:�j×!Ó!Ø�:‰:�k×"Ò"Ø—:‘:˜j¨$×/Ò/Ü×<Ñ<Ð<ô &×,Ñ,Ü!×0Ñ0Ü&×7Ñ7Ü%×5Ñ5Ü!)×!=Ñ!=Ü (× ;Ñ ;ð -ó ðˆGð "Ÿ:™: j°"Ö5�Ø—‘Ô4×;Ò;ÑF¸gÑFÖGñ 6ð —9‘9˜WÓ%Ð%à�z‰z˜* d×+Ò+Ü×<Ñ<Ð=‰Gô '×-Ñ-Ü!×0Ñ0Ü&×7Ñ7Ü (× ;Ñ ;ð .ó ðˆGð "Ÿ:™: j°"Ö5�Ø!(§¡Ð-CÓ!D�÷ &ñ #à Ÿ™ ]°BÓ7ð ð —{‘{ ;Ó/°5Ô8ô ×+Ò+ä!×/Ñ/ð ð
 —‘Ü*×1Ñ1Ø$Ÿ[™[¨°Ó4Ø"+Ø$/ð 2ó öñ 6ð( —*‘*˜YÓ'ˆßØ�N‰Nœ8×2Ñ2Ô3Ø�N‰N˜7Ô#à�:‰:�j×!Ò!Ø�N‰N˜4¤(×":Ñ":Õ:Ô;Ü$ V§Z¡Z°
¸BÓ%?×%EÑ%EÓ%GÖH‘
�Ø—‘˜xŸ™¨sÓ:Ö;ñ I÷ Ø�N‰N˜B¤× 8Ñ 8Ð9Ô:à�‰˜œH×1Ñ1×5Ñ5Ð6Ô7ä×)Ò)Ó+Ü×)Ñ)×5Ñ5ô6ð �N‰NØ”X×GÑGÐHôð �y‰y˜Ó!Ð!àÐØ€LØ�:‰:�j $×'Ò'Ü×8Ñ8Ð9Šä �/ˆØ$Ÿj™j¨°R×8ˆNØ%×)Ñ)¨*°bÓ9ˆHØ+×/Ñ/Ð0FÓGˆN÷ "ñ à#×'Ñ'¨°rÓ:ð ð ˜×*Ñ*¨6°2Ó6ØÔ/°Ó9ØÔ-Ø"×&Ñ& x°Ó4óð ˜{ðˆHð %×(Ñ(¨°DÓ9ˆGØÒ"Ø")§+¡+¨i¸Ó">�Ø"Ò.Ø$×+Ñ+¨OÔ<Ø%×)Ñ)¨*Ó5ˆHß§Ø#�Ø#(§<¡<°¸Õ0@Ó#A�˜Ñ à�N‰Nœ;×-Ò-Ñ9°Ñ9Ô:ßŠxŸHšHÜ)2°8·>±>Ó3CÖ)DÑ%�C™˜!˜WØ&)¬S°«]¸QÕ->Ô&>™UÀE�FØ—N‘NÜ+×2Ñ2Ø#)Ø!(§¡¨VÓ!4Ü%8Ø '§¡¨J¸Ó ;ó&ô $7Ø '§¡¨H°bÓ 9ó$ð )0¯©°MÀ2Ó(Fð 3ó 
öô *Eñ9 9÷X Ø�‰�rÔØ�‰”x×;Ñ;Ô<à‡z�z�)×Ò¤Ð$4Ó 5¸Ô 9Ø�‰�rÔØ�‰”x×.Ñ.Ô/Ø—*‘*˜YÓ'ˆßØ�N‰N˜7Ô#ÜÐÓ  1Ô$Ø�N‰NÐ+Ô,à‡z�z�*×ÒØ�‰�tœh×6Ñ6Õ6Ô7Ü  §¡¨J¸Ó!;×!AÑ!AÓ!CÖD‰JˆCØ�N‰N˜8Ÿ?™?¨3Ó6Ö7ñ Eà‡N�N�2ÔçßØ�N‰Nœ8×AÑAÕBà�N‰Nœ8×3Ñ3Ô4à‡N�NÜ×3Ñ3×:Ñ:Ø*ð 	;ó 	
ôð
 €Eà—:‘:˜i¨Ó,×0Ñ0°¸ÓC€LßØ�‰”h×4Ñ4°lÐCÔDà—J‘J˜z¨2Ó.×2Ñ2°6¸9ÓE€MßØ�‰”h×9Ñ9¸=ÐIÔJà‡z�z�(˜DÓ! VÔ+Ø�‰ä×2Ñ2Ü˜vŸz™z¨)Ó4Ó5ðô	
ð $ŸZ™Z¨
°BÓ7×;Ñ;Ø  )ó
Ðð 	�‰ä×4Ñ4Ü#Ð$6Ó7ðô	
÷ Ø�‰�rÔØ�‰Ô1¸eÔDÔEà�9‰9�WÓÐrU   c                óh  € \        V 4      pRp\        4       pWR&   V F?  pVR,          V8X  g   VP                  R4      V8X  g   K)   \        WR,          R7      pTp M	  Vf   \        P                  ! VR7      h\        V 4      P                  '       d(   \        X/ V 4      pVR,          pVR,          VR&   W„R&   MHVR,          '       d   \        P                  P                  p	M\        P                  P                  p	W”R&   XP                  VR	&   V#   \        P
                   d     EK  i ; i)
z°Return help information from an uaclient service as a dict

:param name: Name of the service for which to return help data.

:raises: UbuntuProError when no help is available.
Nr(   r¦   rˆ   rí   r*   r)   r^   Úhelp)r   r   r�   r   r   r›   ÚNoHelpContentr   rÕ   rj   r   r©   rl   re   Ú	help_info)
r[   r(   r¡   Úhelp_resourceÚresponse_dictr¢   Úhelp_entrq   Ú
status_msgr^   s
   &&        rK   r_  r_  %  s)  € ô (¨Ó,€IØ€Mô
  “M€MØ �&ÑãˆØ�FÕ˜tÔ# x§|¡|°MÓ'BÀdÖ'JðÜ.°3ÀfÕ=MÔN�ð %ˆMÙñ ð ÒÜ×&Ò&¨DÔ1Ð1ä�CÓ×$×$Ð$Ü1°(¸BÀÓDˆØ# HÕ-ˆ
à$2°:Õ$>ˆ�jÑ!Ø",�hÒð ˜×%Ô%Ü.×8Ñ8×>Ñ>‰Iä.×:Ñ:×@Ñ@ˆIà%.�kÑ"à$×.Ñ.€M�&ÑØÐøô1 ×6Ñ6ô Ûðús   ÁDÄD1Ä0D1)F)N)or“   Úloggingr
  r  Úcollectionsr   r   r   Úenumr   Útypingr   r   r	   r
   r   Úuaclientr   r   r   r   r   r   r   Ú(uaclient.api.u.pro.status.is_attached.v1r   Úuaclient.configr   r   Úuaclient.contractr   r   Úuaclient.defaultsr   r   Úuaclient.entitlementsr   Ú(uaclient.entitlements.entitlement_statusr   r   r   r   Úuaclient.filesr   r    r!   r"   Úuaclient.files.noticesr#   Úuaclient.messagesr$   Úget_event_loggerrù   Ú	getLoggerÚreplace_top_level_logger_nameÚ__name__rª   Ú	ESSENTIALÚSTANDARDÚADVANCEDr¼   rl   ÚOKGREENÚSTATUS_STATUS_ENABLEDr  r¹   ÚFAILÚSTATUS_STATUS_DISABLEDrf   r  ÚSTATUS_STATUS_INAPPLICABLEre   ÚSTATUS_STATUS_UNAVAILABLErh   ÚWARNINGYELLOWÚSTATUS_STATUS_WARNINGÚENTITLEDÚSTATUS_ENTITLED_ENTITLEDrd   ÚSTATUS_ENTITLED_UNENTITLEDÚSTATUS_SUPPORT_ESSENTIALÚSTATUS_SUPPORT_STANDARDÚSTATUS_SUPPORT_ADVANCEDr  r@  r:  rS   r;  r=  ÚSTATUS_STATUSr?  rH  rI  rK  Úget_versionrº   r•   rL   rj   r£   r°   rÐ   r*   rá   r  r  r!  r,  r2  r]  r_  rî   rU   rK   Ú<module>r‹     s4  ðÛ Û Û 
Û Ý #ß 'Ý ß 3Õ 3÷÷ ñ õ Bß :ß Oß GÝ 5÷ó ÷ó õ *Ý &à×%Ò%Ó'€Ø×Ò˜×:Ò:¸8ÓDÓE€ð €	Ø€Ø€ð
 ×Ñ×!Ñ!Ø×Ñ˜8×9Ñ9Õ9¸H¿M¹MÕIà×Ñ×#Ñ#Ø�‰˜×7Ñ7Õ7¸(¿-¹-ÕGà×!Ñ!×'Ñ'Ø×ÑØ
×
-Ñ
-õ	.à
�-‰-õ	ð × Ñ ×&Ñ&Ø×ÑØ
×
,Ñ
,õ	-à
�-‰-õ	ð ×Ñ×"Ñ"Ø×Ñ ×!?Ñ!?Õ?À(Ç-Á-ÕOà×Ñ×!Ñ!Ø×Ñ˜8×<Ñ<Õ<¸x¿}¹}ÕLà×Ñ×#Ñ#Ø×ÑØ
×
-Ñ
-õ	.à
�-‰-õ	ð ˆx×ÑØ×'Ñ'õ(à‡m�mõð ˆh×ÑØ×&Ñ&õ'à‡m�mõð ˆh×ÑØ×&Ñ&õ'à‡m�mõðE%Ð ðP DÐ ðNÐ ð G×MÑMØ	×	 Ñ	 Ø×%Ñ%Ø×!Ñ!Ø×+Ñ+ð	 Nó €ð E€àCð ðØ
ð #ðð �uðð ˆw×"Ò"Ó$ð	ð
 �$ðð �ðð �ðð ˆtðð ˆdðð �ðð Ð.×7Ñ7×=Ñ=ðð ˜×6Ñ6ðð �ðð ˆrðð ØˆbØ�Ø�bØ�BØÐ.×;Ñ;×AÑAððð, Ø�ØˆbØ�bØ ð	ð-ð8 �ð9€ò@õ8õvDõN+õ\,÷^õ<G÷(uõpõ÷8õ*%÷yôx,rU   