+
    i\  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Ht ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RIHt ^RIHt ^RI H!t! ^RI"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t. ]P^                  ! ]04      t1]Pd                  ! 4       R R	 l4       t3R
 R lt4]Pd                  ! 4       R R l4       t5]! R]$]%4      t6R R lt7 ! R R]4      t8 ! R R4      t9 ! R R]:]$4      t; ! R R4      t< ! R R]<4      t= ! R R]<4      t> ! R R]<4      t? ! R R ]:]$4      t@ ! R! R"4      tA ! R# R$4      tB ! R% R&]P                  R'R(7      tDR# ))i    N)Path)BinaryIOCallableClassVarDict	GeneratorIterableList
NamedTupleOptionalPatternSequenceTupleTypeVar)bus)config)__version__)	JsonError
JsonObject	JsonValueget_boolget_dictget_enumget_intget_objvget_strget_strvjson_merge_patchtypecheckedc                sF    V ^8  d   QhR\         R\        \         ,          /# )   accept_languagereturn)strr   format   "5/usr/lib/python3.14/site-packages/cockpit/packages.py__annotate__r%   <   s     - -3 -8C= -    c                s   \         P                  RV 4       . pV P                  R4       F  pVP                  4       P	                  4       p\         P                  RV4       VP                  R4      w  r4p \        T;'       g    R4      pT'       g   Kk  \         P                  RY64       TP                  Y634       TP                  R4      w  r4pKH  	  VP                  R R	R
7       \         P                  RV4       . pV F'  w  r9VR8X  d    MW89  g   K  VP                  V4       K)  	  \         P                  RV4       \        V4      #   \         d     EK4  i ; i)a4  Parse the Accept-Language header, if it exists.

Returns an ordered list of languages, with fallbacks inserted, and
truncated to the position where 'en' would have otherwise appeared, if
applicable.

https://tools.ietf.org/html/rfc7231#section-5.3.5
https://datatracker.ietf.org/doc/html/rfc4647#section-3.4
zparse_accept_language(%r)Z,z
  entry %rz;q=g      ?z    adding %r q=%r-c                 s    V ^,          # )    )Zpair   &r$   <lambda>Z'parse_accept_language.<locals>.<lambda>Y   s    ar&   TkeyZreversez  sorted list is %rZenz  results list is %r)loggerdebugsplitstriplower	partitionZfloat
ValueErrorappendZ
rpartitionZsorttuple)
r   Zlocales_with_qentrylocale_ZqstrZqZ_regionZresultsZ_qs
   &         r$   parse_accept_languager:   ;   s4    LL,o>N &&s+##%\5)//%04	dkkc"A fLL-v9!!6+.!'!2!23!7Fw ,  0$?
LL&7 G$
T> NN6"	 % LL'1>5  		s   6EEEc                0    V ^8  d   QhR\         R\         /# )r   versionr   r    r!   r#   r$   r%   r%   l   s     B BS BS Br&   c                sP    RP                  R V P                  R4       4       4      # )z7Convert a version string to a form that can be compared.c              3   sB   "   T F  qP                  ^4      x  K  	  R# 5i)i   N)Zzfill).0Zpart   & r$   	<genexpr>Z"sortify_version.<locals>.<genexpr>o   s     A.@dJJqMM.@s   )joinr0   )r<   r*   r$   sortify_versionrC   l   s"     88AgmmC.@AAAr&   c                s$    V ^8  d   QhR\         /# r   r   r=   r!   r#   r$   r%   r%   s   s     & & &r&   c                 s    R FJ  p \         P                  P                  \         P                  P                  V R4      4      '       g   KH  V u # 	  \        P                  R4       R# )zcDetect libexecdir on current machine

This only works for systems which have cockpit-ws installed.
cockpit-askpasszCould not detect libexecdirz/nonexistent/libexec)z/usr/local/libexecz/usr/libexecz/usr/local/lib/cockpitz/usr/lib/cockpit)ospathexistsrB   r.   warning)	candidates    r$   get_libexecdirrK   r   sK     j	77>>"'',,y2CDEE j 	45%r&   Jc                r;   )r   objr   )rL   r!   r#   r$   r%   r%      s      !  r&   c                 s   \        V \        4      '       dN   R V 9   d-   \        P                  ! R4      pVe   V P	                  R V4      # V P	                  R\        4       4      # \        V \        4      '       d/   V P                  4        UUu/ uF  w  r#V\        V4      bK  	  upp# \        V \        4      '       d   V  Uu. uF  p\        V4      NK  	  up# V # u uppi u upi )z${libexecdir}/cockpit-askpassrE   z${libexecdir})

isinstancer    shutilZwhichreplacerK   dictitemspatch_libexecdirlist)rM   Zabs_askpassr-   valueitems   &    r$   rS   rS      s    #s*c1 ,,'89K&{{#BKPP{{?N,<==	C		?Byy{K{%e,,{KK	C		36734 &377
	 L7s   CC!c                   s4   a  ] tR t^t o RtRtV 3R ltRtV tR# )DocumentNc                sj   < V ^8  d   Qh/ S[ ;R&   S[;R&   S[S[,          ;R&   S[S[,          ;R&   # )r   datacontent_typecontent_encodingcontent_security_policy)r   r    r	   r"   __classdict__   "r$   r%   ZDocument.__annotate__   s<     
N   sm*  &c]1	 r&   r)   )	__name__
__module____qualname____firstlineno__rZ   r[   __annotate_func____static_attributes____classdictcell__r]      @r$   rW   rW      s      '+-1	  r&   rW   c                   s2   a  ] tR t^t o V 3R lR ltRtV tR# )PackagesListenerc                   < V ^8  d   QhRR/# r   r   Nr)   r\   r^   r$   r%   ZPackagesListener.__annotate__   s     : : :r&   c                s    R# )z+Called when the packages have been reloadedNr)   selfr*   r$   packages_loadedZ PackagesListener.packages_loaded   s    r&   r)   N)r_   r`   ra   rb   rm   rd   re   rf   rg   r$   rh   rh      s     : :r&   rh   c                   s>   a a ] tR t^t oV3R lV 3R lltRtVtV ;t# )BridgeConfigc                    < V ^8  d   QhRS[ /# )r   rU   )r   r\   r^   r$   r%   ZBridgeConfig.__annotate__   s     0 0j 0r&   c                s6  < \         SV `  V4       \        V R R4      V n        \	        V RRR.R4      V n        \        V RRR7      V n        \        V R/ 4      V n	        V P                  '       g   V P                  '       g   \        VR	4      h\        V R
R4      V n        \        V R4      V n        V P                  '       g   \        VR4      h\        V RRV P                  9   4      V n        V P                  ;'       g    V P                  ^ ,          V n        R# )labelNmethodspawnZStartTransientUnit
privilegedF)Zdefaultmatchz&must have match rules or be privilegedenvironzspawn vector must be non-emptypolkitZpkexecr)   )super__init__r   rp   r   rq   r   rs   r   rt   r   r   ru   rr   rv   name)rl   rU   	__class__s   &&r$   rx   ZBridgeConfig.__init__   s     T7D1
tX9M/NPWX"4uEdGR0
tzzzE#KLLi4dG,
zzzE#CDDtXx4::/EFJJ//$**Q-	r&   )ru   rp   rt   rq   ry   rv   rs   rr   )r_   r`   ra   rb   rx   rd   re   __classcell__rz   r]      @@r$   rn   rn      s     0 0 0r&   rn   c                   sD   a  ] tR t^t o V 3R lR ltV 3R lR ltRtV tR# )	Conditionc                0   < V ^8  d   QhRS[ S[,          /# rD   r   r    r\   r^   r$   r%   Condition.__annotate__   s     " "Xc] "r&   c                    \         hNZNotImplementedErrorrk   r*   r$   get_condition_filesZCondition.get_condition_files       !!r&   c                >   < V ^8  d   QhRS[ S[.S[3,          RS[/# r   path_existsr   r   r    boolr\   r^   r$   r%   r      s&     " "3%+!6 "4 "r&   c                r   r   r   rl   r      &&r$   checkZCondition.check   r   r&   r)   N)r_   r`   ra   rb   r   r   rd   re   rf   rg   r$   r~   r~      s     " "" "r&   r~   c                   sh   a  ] tR t^t o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )ConstantConditionc                s$   < V ^8  d   QhRS[ RR/# )r   rU   r   N)r   r\   r^   r$   r%   ConstantCondition.__annotate__   s       $ r&   c                   Wn         R # r   rU   rl   rU   s   &$r$   rx   ZConstantCondition.__init__   s    
r&   c                ro   rD   r=   r\   r^   r$   r%   r      s     2 2 2r&   c                s"    R V P                    R2# )zConstantCondition()r   rk   r*   r$   __str__ZConstantCondition.__str__   s    #DJJ<q11r&   c                r   rD   r   r\   r^   r$   r%   r      s      Xc] r&   c                s    . # r   r)   rk   r*   r$   r   Z%ConstantCondition.get_condition_files   s    	r&   c                r   r   r   r\   r^   r$   r%   r      s&      3%+!6 4 r&   c                    V P                   # r   r   r   r   r$   r   ZConstantCondition.check   s    zzr&   r   N
r_   r`   ra   rb   rx   r   r   r   rd   re   rf   rg   r$   r   r      s-      2 2  r&   r   c                   sh   a  ] tR t^t o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )PathExistsConditionc                s*   < V ^8  d   QhRS[ RS[RR/# )r   rG   rH   r   Nr    r   r\   r^   r$   r%    PathExistsCondition.__annotate__   s"      S T d r&   c               s    Wn         W n        R # r   rG   rH   )rl   rG   rH   s   &&$r$   rx   ZPathExistsCondition.__init__   s    	r&   c                ro   rD   r=   r\   r^   r$   r%   r      s     K K Kr&   c                s>    R V P                   : RV P                   R2# )zPathExistsCondition(z	, exists=r   r   rk   r*   r$   r   ZPathExistsCondition.__str__   s    %dii])DKK=JJr&   c                r   rD   r   r\   r^   r$   r%   r      s      Xc] r&   c              #  s*   "   V P                   x  R # 5ir   )rG   rk   r*   r$   r   Z'PathExistsCondition.get_condition_files   s     iis   c                r   r   r   r\   r^   r$   r%   r      s&     5 53%+!6 54 5r&   c                s@    V P                   V! V P                  4      8H  # r   rH   rG   r   r   r$   r   ZPathExistsCondition.check   s    {{k$))444r&   r   Nr   rf   rg   r$   r   r      s/      K K 5 5r&   r   c                   sh   a  ] tR t^t o V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR	tV t	R
# )DisjunctiveConditionc                s4   < V ^8  d   QhRS[ S[,          RR/# )r   
conditionsr   N)r   r~   r\   r^   r$   r%   !DisjunctiveCondition.__annotate__   s      % %8I#6 %4 %r&   c                r   r   r   )rl   r   r   r$   rx   ZDisjunctiveCondition.__init__   s    $r&   c                ro   rD   r=   r\   r^   r$   r%   r      s     U U Ur&   c                sN    R RP                  R V P                   4       4       R2# )zDisjunctiveCondition(, c              3   s8   "   T F  p\        V4      x  K  	  R # 5ir   r=   )r?   cr@   r$   rA   Z/DisjunctiveCondition.__str__.<locals>.<genexpr>   s     0QAQs   r   )rB   r   rk   r*   r$   r   ZDisjunctiveCondition.__str__   s&    &tyy0Q0Q'Q&RRSTTr&   c                r   rD   r   r\   r^   r$   r%   r           7 7Xc] 7r&   c              #  h   "   V P                    F  pVP                  4        R j  xL
  K  	  R #  L
5ir   r   r   rl   	conditionr@   r$   r   Z(DisjunctiveCondition.get_condition_files   (     I 44666 )6   #202c                r   r   r   r\   r^   r$   r%   r      s*     B B3%+!6 B4 Br&   c                s   a \         ;QJ d)    V3R  lV P                   4       F  '       g   K   R# 	  R# ! V3R  lV P                   4       4      # )c              3   sD   <"   T F  qP                  S4      x  K  	  R # 5ir   )r   )r?   r   r   s   & r$   rA   Z-DisjunctiveCondition.check.<locals>.<genexpr>   s     AA77;''s    TF)anyr   r   s   &fr$   r   ZDisjunctiveCondition.check   s4    sAAssAsAsAAAAr&   r   Nr   rf   rg   r$   r   r      s1     % %U U7 7B Br&   r   c                   s   a a ] tR t^t o];'       d	    ]! ]4      tV3R lV 3R lltV3R lR ltV3R lR lt	Rt
VtV ;t# )Manifestc                &   < V ^8  d   QhRS[ RS[/# )r   rG   rU   )r    r   r\   r^   r$   r%   Manifest.__annotate__   s     ^ ^T ^* ^r&   c                s,  < \         SV `  V4       Wn        \        V R V P                  P                  4      V n        \        V R\        4      V n        \        V R^4      V n	        \        V RR4      V n
        \        V RV P                  4      V n        V P                  et   \        V R/ 4      pVP                  4        FP  w  rEVR8w  d   \!        VR	4      h\#        \%        V\&        4      4      V P                  8  g   KB  \!        VR
V R24      h	  R# R# )ry   bridgespriorityzcontent-security-policy r   NrequiresZcockpitznon-cockpit requirement listedzrequired cockpit version (z	) not met)rw   rx   rG   r   ry   r   rn   r   r   r   cspparse_conditionr   COCKPIT_VERSIONr   rR   r   rC   r   r    )rl   rG   rU   r   ry   r<   rz   s   &&&   r$   rx   ZManifest.__init__   s    	D&$))..9	i>j!44!:B?"4t7K7KL +j"5H!)!19$#D*JKK";w#<=@T@TT#G/I'R[-\]]	 "2 ,r&   c                r   )r   rU   r   )r   r~   r\   r^   r$   r%   r   
  s     1 1Z 1I 1r&   c                sZ   \        V4      ^8w  d   \        VR4      hRV9   d   \        \        VR4      RR7      # RV9   d   \        \        VR4      RR7      # RV9   d!   \	        \        VRV P                  4      4      # \        P                  RV P                  V4       \        RR	7      # )
r(   z'must contain exactly one key/value pairzpath-existsT)rH   zpath-not-existsFr   z0  %s: ignoring unknown predicate in manifest: %sr   )Zlenr   r   r   r   r   r   r.   rI   rG   r   r   r   r$   r   ZManifest.parse_condition
  s    u:?E#LMME!&wum'DTRR%'&wu6G'HQVWWe^'t?S?S(TUU NNMtyyZ_`$400r&   c                r   rD   r   r\   r^   r$   r%   r     r   r&   c              #  r   r   r   r   r@   r$   r   ZManifest.get_condition_files  r   r   )r   r   r   ry   rG   r   )r_   r`   ra   rb   r   rC   r   rx   r   r   rd   re   r{   r|   r}   r$   r   r      s<     !BBok&BO^ ^$1 1$7 7 7r&   r   c                   s   a  ] tR tRt o ]P
                  ! R4      tRtRtV 3R lR lt	V 3R lR lt
V 3R lR	 ltV 3R
 lR ltV 3R lR ltV 3R lR ltV 3R ltRtV tR# )Packagei!  z%(po|po\.manifest)\.([^.]+)\.js(\.gz)?Nc                ro   )r   manifest)r   r\   r^   r$   r%   Package.__annotate__/  s     * * *r&   c                sx    Wn         VP                  V n        VP                  V n        VP                  V n        R # r   )r   ry   rG   r   )rl   r   r   r$   rx   ZPackage.__init__/  s*     MM	MM	 ))r&   c                ri   rj   r)   r\   r^   r$   r%   r   5  s     +M +M +Mr&   c                sf   V P                   e   R# / V n         R/ R/ /V n        V P                  P                  R4       EF3  p\	        VP                  V P                  4      4      pVR9   d   K1  \        P                  P                  V4      pV'       dt   VP                  ^4      pVP                  ^4      pVP                  4       P                  RR4      p\        P                  RWFV4       W P                  V R	2,          V&   K  \        P                  ! R
RV4      p\        P                  RWB4       W P                   V&   V P                   P!                  VP                  RR4      V4       EK6  	  V P                  R,          '       g#   V P                  R,          V P                  R&   R# R# )zEnsure that the package has been scanned.

This allows us to defer scanning the files of the package until we know
that we'll actually use it.
Nzpo.jspo.manifest.jsZ*r>   r9   r'   zAdding translation %r %r -> %rz.jsz.gz$r   zAdding content %r -> %rz.min.)r>   z..zmanifest.json)filestranslationsrG   Zrglobr    Zrelative_tor   PO_JS_RE	fullmatchZgroupr2   rP   r.   r/   reZsubZ
setdefault)rl   filery   Zpo_matchZbasenamer8   Zlower_locales   &      r$   ensure_scannedZPackage.ensure_scanned5  sf    ::!
$b*:B?IIOOC(Dt''		23D33''11$7H#>>!,!*%||~55c3?=xW[\DH!!XJc"23LA 66'2t46G'+

8$ 

%%h&6&6w&DdK5 ):   !122262C2CG2LD./ 3r&   c                ro   rD   r=   r\   r^   r$   r%   r   b  s     ] ]S ]r&   c                sT   R RRRRRRRRRRRR	R/pV P                   P                  P                  R
4       FC  pVP                  4       pV'       g   K  VP                  4       P	                  R4      w  r4pWQV&   KE  	  RP                  R VP                  4        4       4      R,           # )zdefault-srcz'self'zconnect-srczform-actionzbase-uriz
object-srcz'none'zfont-srcz'self' data:zimg-src; c              3   s6   "   T F  w  rV R V R2x  K  	  R# 5i)r   r   Nr)   )r?   ZkZv   &  r$   rA   Z6Package.get_content_security_policy.<locals>.<genexpr>s  s     ?1#Qqcs   z block-all-mixed-content)r   r   r0   r1   r3   rB   rR   )rl   ZpolicyrV   r-   r9   rU      &     r$   get_content_security_policyZ#Package.get_content_security_policyb  s    888(~
 MM%%++C0D::<Dt $

 6 6s ;#s	 1 xx???B\\\r&   c                r   )r   filenamer   )r    rW   r\   r^   r$   r%   r   u  s     b b# b( br&   c                s   \         P                  ! V4      w  r#R pVf   RpM'VP                  R4      '       d   V P                  4       pV P                  V,          p\
        P                  RV4       \        VP                  R4      W#V4      # )Nz
text/plainz	text/htmlz  loading data from %sZrb)		mimetypesZ
guess_typeZ
startswithr   rG   r.   r/   rW   Zopen)rl   r   rY   rZ   r[   rG   s   &&    r$   	load_fileZPackage.load_fileu  s{    )2)=)=h)G&"&'L$$[11&*&F&F&H#yy8#-t4		$I`aar&   c                s<   < V ^8  d   QhRS[ RS[S[ ,          RS[/# )r   rG   localesr   )r    r   rW   r\   r^   r$   r%   r     s&     9 9S 98C= 9X 9r&   c                sf   V P                  4        V P                  f   Q hV FY  p\        P                  ! \        4      ;_uu_ 4        V P                  V P                  V,          V,          4      uuR R R 4       u # 	  \        \        P                  ! 4       R4      #   + '       g   i     K  ; i)Ntext/javascript)	r   r   
contextlibZsuppressKeyErrorr   rW   ioBytesIO)rl   rG   r   r8      &&& r$   load_translationZPackage.load_translation  s      ,,, F$$X..~~d&7&7&=f&EF /.  

&788 /..s   )BB0c                ,   < V ^8  d   QhRS[ RS[RS[/# r   rG   headersr   r    r   rW   r\   r^   r$   r%   r     s"     	4 	4c 	4J 	48 	4r&   c                s   V P                  4        V P                  f   Q hV P                  f   Q hWP                  9   d(   \        \	        VRR4      4      pV P                  W4      # V P                  V P                  V,          4      # )NAccept-Languager   )r   r   r   r:   r   r   r   )rl   rG   r   r   r   r$   	load_pathZPackage.load_path  sz    zz%%%  ,,,$$$+GG=NPR,STG((77>>$**T"233r&   c                s   < V ^8  d   Qh/ S[ S[S[,          ,          ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[S[S[S[S[S[3,          3,          ,          ;R&   S[S[S[S[3,          ,          ;R&   # )r   r   r   ry   rG   r   r   r   )r   r
   r    r   r    Zintr	   r   r\   r^   r$   r%   r   !  s     ws|$[ 
   I  J  M  4T#s(^ 345<  DcN#* r&   )r   r   ry   rG   r   r   )r_   r`   ra   rb   r   compiler   r   r   rx   r   r   r   r   r   rc   rd   re   rf   rg   r$   r   r   !  sk     ')zz2Z'[H 9=L&*E* *+M +MZ] ]&b b9 9	4 	4_  r&   r   c                   s   a  ] tR tRt o V 3R lR lt]V 3R lR l4       t]V 3R lR l4       t]V 3R lR	 l4       t]V 3R
 lR l4       t	V 3R lR lt
V 3R lR ltRtV tR# )PackagesLoaderi  c                r   )r   rG   r   r   r\   r^   r$   r%   PackagesLoader.__annotate__  s     $ $ $ $r&   c                s@    \         P                  P                  V4      # r   )rF   rG   rH   )rl   rG   r   r$   r   ZPackagesLoader.path_exists  s    ww~~d##r&   c                r   rD   r   r\   r^   r$   r%   r     s     	: 	:(3- 	:r&   c              #  sB  "    \         P                  R ,          x   \         P                  R,          P                  R4       Rj  xL
  R#   \         d%    \         P                  P	                  R4      x   L_i ; i L8  \         d    R Rj  xL 
   R# i ; i5i)ZXDG_DATA_HOMEz~/.local/shareZXDG_DATA_DIRSZ:N)z/usr/local/sharez
/usr/share)rF   ru   r   rG   Z
expanduserr0   )clsr*   r$   get_xdg_data_dirsZ PackagesLoader.get_xdg_data_dirs  s~     	7**_--	:zz/288===	  	7''$$%566	7 > 	:999	:sc   BA )B B B B,A=:B<A==B B BBBBBBc                s,   < V ^8  d   QhRS[ RS[RS[ /# )r   r   parentr   )r   r    r\   r^   r$   r%   r     s"     * *j *$ *: *r&   c                s   VR ,          \         P                  ! VP                   R24      \         P                  VP                   R2,          .pV Fa  p \        P
                  ! VP                  4       4      p\        X\        4      '       g   \        P                  RT4       KV  \        Y4      pKc  	  \        V4      #   \         d     K~  \        P                   d!   p\        P                  RYF4        Rp?LRp?ii ; i)zoverride.jsonz.override.json%s: %sNz%%s: override file is not a dictionary)r   Zlookup_configry   ZDOT_CONFIG_COCKPITjsonloadsZ
read_bytesZFileNotFoundErrorJSONDecodeErrorr.   rI   rN   rQ   r   rS   )r   r   r   Zoverride_filesZoverride_fileZoverrideexcs   &&&    r$   patch_manifestZPackagesLoader.patch_manifest  s     _$  FKK=!?@%%6;;-~(FF
 ,M=&*jj1I1I1K&L h--FV';H ,  )) % '' =x<<=s$   $CDD#D$C??Dc                r   rD   )r   r   r\   r^   r$   r%   r     s     7 7x1 7r&   c              #  s  "   V P                  4        F  p\        P                  R V4       \        V4      P	                  R4       F  p\        P                  RV4        \
        P                  ! VP                  4       4      p\        T\        4      '       g   \        P                  RT4       Kl  TP                  pT P                  Y54      p \        YS4      x  K  	  K  	  R#   \
        P                   d"   p\        P                  RY$4        Rp?K  Rp?ii ; i  \         d#   p\        P!                  RY$4        Rp?EK  Rp?ii ; i5i)z$Scanning for manifest files under %szcockpit/*/manifest.jsonzConsidering file %sr   Nz!%s: json document isn't an objectz%s %s)r   r.   r/   r    Zglobr   r   Z	read_textr   ZerrorrN   rQ   r   r   r   r   rI   )r   Zdatadirr   r   r   r   r   r$   load_manifestsZPackagesLoader.load_manifests  s     ,,.GLL?IW**+DE2D9#zz$..*:;H "(D11LL!DdK--h?7"644 F / ++ LL45 ! 7NN7D667s[   AE $C'AED 
E'D<DEDE E+EEEEc                r   rD   r   r\   r^   r$   r%   r     s     6 6HSM 6r&   c              #  sp   "   V P                  4        F  pVP                  4        R j  xL
  K  	  R #  L
5ir   )r   r   )r   r   r@   r$   r   Z"PackagesLoader.get_condition_files  s-     **,H33555 -5s   '646c                r   )r   r   r   )r   r   r\   r^   r$   r%   r     s       d r&   c                s    VP                    FH  pVP                  V P                  4      '       d   K&  \        P	                  R VP
                  V4        R# 	  R# )z2  hiding package %s as its %s condition is not metFT)r   r   r   r.   r/   rG   )rl   r   r   s   && r$   check_conditionsZPackagesLoader.check_conditions  sH    !,,I??4#3#344QS[S`S`bkl -
 r&   c                sF   < V ^8  d   QhRS[ S[S[S[3,          ,          /# rD   )r   r   r    r   r\   r^   r$   r%   r     s"      xc7l(;< r&   c              #  s0  "   \         P                  R 4       \        P                  ! \        4      pV P                  4        FD  p\         P                  RVP                  4       WP                  ,          P                  V4       KF  	  \         P                  R4       \         P                  R4       VP                  4        F  w  r4\        VR RR7       Fn  p V P                  V4      '       d3   \         P                  RW5P                  4       V\        V4      3x   Ka   \         P                  R	VP                  4       Kp  	  K  	  \         P                  R4       R
#   \         d$    \         P                  RTP                  4        Lli ; i5i)z)Scanning for available package manifests:z  %s/manifest.jsonzdone.zSelecting packages to serve:c                 r   r   r   )r   r*   r$   r+   Z.PackagesLoader.load_packages.<locals>.<lambda>  s
    XEVEVr&   Tr,   z  creating package %s -> %sz1  %s: ignoring package with invalid manifest filez  ignoring %s: unmet conditionsN)r.   r/   collectionsZdefaultdictrT   r   rG   ry   r5   rR   sortedr   r   r   rI   )rl   Znamesr   ry   Z
candidatesrJ   r   r$   load_packagesZPackagesLoader.load_packages  s0    @A+6+B+B4+H++-HLL-x}}=-- ''1 . 	W34 %D $J4V`de	h,,Y77%BD..Y"GI$666 8 >	O f !. 	W	 ! hNN#VXaXfXfghs,   CFAE%"AF%+FFFFr)   N)r_   r`   ra   rb   r   Zclassmethodr   r   r   r   r   r   rd   re   rf   rg   r$   r   r     ss     $ $ 	: 	: * *0 7 7* 6 6  r&   r   c                   s  a  ] tR tRt o RV 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 lt]P                  P                  RRR7      t]P                  P                  4       V 3R lR l4       t]P                  P                  4       V 3R lR l4       tV 3R lR ltV 3R lR lt]P$                  ! R4      tV 3R lR ltV 3R ltRtV tR# )Packagesi  Nc                sF   < V ^8  d   QhRS[ S[,          RS[ S[,          /# )r   listenerloader)r	   rh   r   r\   r^   r$   r%   Packages.__annotate__  s'     + +*:!; +HUcLd +r&   c                sr    Wn         T;'       g    \        4       V n        V P                  4        R V n        R# )FN)r   r   r   loadsaw_first_reload_hint)rl   r   r   s   &&&r$   rx   ZPackages.__init__  s,     00 0		 &+"r&   c                ri   rj   r)   r\   r^   r$   r%   r     s     A Ad Ar&   c           
     sj   \        V P                  P                  4       4      V n        \        P
                  ! V P                  P                  4        UUu/ uF  w  rV\        VP                  4      bK  	  upp4      V n        \        P                  R \        V P                  4      4       R# u uppi )zPackages loaded: %sN)rQ   r   r   packagesr   ZdumpsrR   r   	manifestsr.   r/   rT   )rl   ry   packager   r$   r   ZPackages.load  s|    T[[6689W[WdWdWjWjWl$mWlmdT40@0@+A%AWl$mn*D,?@ %ns   !B/
c                ri   rj   r)   r\   r^   r$   r%   r     s     I Id Ir&   c           	     s   \        V P                  4       F  pV P                  V,          p. p\        P                  ! \	        VP
                  R / 4      P                  4       \	        VP
                  R/ 4      P                  4       4       F?  p\        V\        4      '       g   K  \        VRR4      pVf   K.  VP                  V4       KA  	  \        VR RRP                  V4      R RVP                   24       K  	  R# )ZmenuZtoolsrp   NZ20r   r   Z40)r   r   	itertoolsZchainr   r   valuesrN   rQ   r   r5   ZprintrB   rG   )rl   ry   r   Z	menuitemsr7   rp   r   r$   showZPackages.show  s    4==)DmmD)GI"W--vr:AACW--w;BBDF eT**#E7D9E(!((/F T"IQtyy3B7qGH *r&   c                r   rD   )r   rn   r\   r^   r$   r%   r   '  s     & &H\$: &r&   c                s6   a  R  V 3R llp\        V! 4       4      # )c                s@    V ^8  d   QhR\         \        RR3,          /# rj   )r   rn   r!   r#   r$   r%   Z1Packages.get_bridge_configs.<locals>.__annotate__(  s     	4 	4ytT)AB 	4r&   c               3   s   <"   \        SP                  P                  4       R  R7       F!  p V P                  P                   Rj  xL
  K#  	  R#  L
5i)c                 s    V P                   ) # r   r   )r   r*   r$   r+   ZDPackages.get_bridge_configs.<locals>.yield_configs.<locals>.<lambda>)  s    wO_O_N_r&   )r-   N)r   r   r   r   r   )r   rl   s    r$   yield_configsZ2Packages.get_bridge_configs.<locals>.yield_configs(  s>     !$--"6"6"8>_`"++3333 a3s   AAAA)r6   )rl   r   s   f r$   get_bridge_configsZPackages.get_bridge_configs'  s    	4 	4 ]_%%r&   Zsz{}r   c                ri   rj   r)   r\   r^   r$   r%   r   1  s     , , ,r&   c                sz    V P                  4        V P                  e   V P                  P                  4        R # R # r   )r   r   rm   rk   r*   r$   reloadZPackages.reload0  s*    		==$MM))+ %r&   c                ri   rj   r)   r\   r^   r$   r%   r   7  s     * *T *r&   c                sX    V P                   '       d   V P                  4        R V n         R# )TN)r   r   rk   r*   r$   reload_hintZPackages.reload_hint6  s    %%%KKM%)"r&   c                r   )r   r   i18nr   )r   r   rW   r\   r^   r$   r%   r   <  s'     #K #K #Kd #Kx #Kr&   c               s   \         P                  R 4       . pV'       d   \        \        VRR4      4      pV P                  P                  4        F  w  rVVR
9   d   K  VP                  RV4      pVP                  ;_uu_ 4        VP                  R8X  d0   \        P                  ! VP                  P                  4       4      pMVP                  P                  4       pRRR4       VP                  X4       K  	  VP                  RV P                  P                  4       ,           R,           4       \        \         P"                  ! RP%                  V4      4      R	4      #   + '       g   i     L; i)zServing /manifests.jsr   r   r   gzipNsh  
            (function (root, data) {
                if (typeof define === 'function' && define.amd) {
                    define(data);
                }

                if (typeof cockpit === 'object') {
                    cockpit.manifests = data;
                } else {
                    root.manifests = data;
                }
            }(this, s   ))s   
r   )ZstaticZbase1)r.   r/   r:   r   r   rR   r   rX   rZ   r   Z
decompressZreadr5   r   encoderW   r   r   rB   )	rl   r   r   Zchunksr   ry   r   ZtranslationrX   s	   &&$      r$   load_manifests_jsZPackages.load_manifests_js<  s%   ,-  +GG=NPR,STG!%!4!4!6.. &667GQ %%%"33v=#{/?/?/D/D/FG*//446	 & d# "7 	  ..//12 5>> 	? 

5::f#568IJJ+ &%s   AE""E2c                ro   rD   )rW   r\   r^   r$   r%   r   a  s     Q QX Qr&   c                s    \         P                  R 4       \        \        P                  ! V P
                  P                  4       4      R4      # )zServing /manifests.jsonzapplication/json)r.   r/   rW   r   r   r   r   rk   r*   r$   load_manifests_jsonZPackages.load_manifests_jsona  s3    ./

4>>#8#8#:;=OPPr&   z /(?:([^/]+)/)?((?:[^/]+/)*[^/]+)c                r   r   r   r\   r^   r$   r%   r   k  s"      c J 8 r&   c                s   \         P                  R V4       V P                  P                  V4      pVf   \	        RV 24      hVP                  4       w  rEVe#   V P                  V,          P                  WR4      # VR8X  d   V P                  VRR7      # VR8X  d   V P                  VRR7      # VR8X  d   V P                  4       # \        h)zpackages: serving %szInvalid HTTP path zmanifests.jsF)r   zmanifests-i18n.jsTzmanifests.json)r.   r/   PATH_REr   r4   Zgroupsr   r   r   r   r   )rl   rG   r   rt   Zpackagenamer   s   &&&   r$   r   ZPackages.load_pathk  s    +T2&&t,=1$899 %"==-77JJ'))')>>,,))')==))++--Nr&   c                sp   < V ^8  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[S[3,          ;R&   S[;R&   # )r   r   r   r   r   )r   r	   rh   r   r    r   r   r\   r^   r$   r%   r     sD      '((  3<     	 r&   )r   r   r   r   r   )NN)r_   r`   ra   rb   rx   r   r   r   r   Z	InterfaceZPropertyr   ZMethodr   r   r   r   r   r   r   r   rc   rd   re   rf   rg   r$   r   r     s     + +A A
I I& & &&s$&7I]], ,
 	]]* *
#K #KJQ Q jj	G S  r&   r   zcockpit.Packages)Z	interface)Er   r   Z	functoolsr   r   r   r   Zloggingr   rF   r   rO   Zpathlibr    Ztypingr   r   r   r   r   r   r   r   r	   r
   r   r   r   Zcockpit._vendor.systemd_ctypesr   r   r   Z_versionr   Zjsonutilr   r   r   r   r   r   r   r   r   r   r   r   Z	getLoggerr_   r.   Z	lru_cacher:   rC   rK   rL   rS   rW   rh   rQ   rn   r~   r   r   r   r   r   r   ZObjectr   r)   r&   r$   <module>r      s[       	     	 	       /  !    
		8	$
 - -`B & &" CY'$2z 2: :04 02" "	 5) 5B9 B *7tZ *7Zx4 x4vc cLzszz%7 zr&   