+
    kHàjƒ<  ã                  ó:  a € 0 t $ R t^ RIH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 ^ RIt^ RI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HtHtH t H!t!H"t" ]PF                  ! ]$4      t%RR	R
RRRR/RR	RRRRR/RR	RRRRR//t&R]'R&   Rt(Rt)Rs*R]'R&   / t+R]'R&   Rt,Rt-RRR R!R"R#R$R$R%R%R&R&R'R'/t.R(R)0t/R(t0^t1^xt2RDt3REt4R* R+ lt5RFR, R- llt6R. R/ lt7R0 R1 lt8R2 R3 lt9R4 R5 lt:RFR6 R7 llt;RFR8 R9 llt<R: R; lt=R< R= lt>R> R? lt? ! R@ RA]4      t@RB RC ltAR# )Guú   xAI ``grok-imagine-image`` backend: text-to-image (``/v1/images/generations``) and editing
(``/v1/images/edits``), base64 output saved to cache. Selection: ``model`` kwarg â†’
``XAI_IMAGE_MODEL`` â†’ ``image_gen.xai.model`` â†’ :data:`DEFAULT_MODEL`.)ÚannotationsN)ÚPath)ÚAnyÚDictÚListÚOptionalÚTuple)ÚDEFAULT_ASPECT_RATIOÚresolve_aspect_ratioÚsuccess_response)ÚStaticImageGenProviderÚcatalog_rowsÚcollect_source_imagesÚerror_factoryÚload_image_gen_configÚmaterialize_imageÚ	post_json)Úbuild_xai_storage_optionsÚhermes_xai_user_agentÚ"maybe_mark_xai_storage_notice_seenÚread_xai_imagine_storage_configÚresolve_xai_http_credentialsÚxai_storage_notice_textzgrok-imagine-imageÚdisplayzGrok Imagine ImageÚspeedz~5-10sÚ	strengthszFast, high-qualityzgrok-imagine-image-2.0zGrok Imagine Image 2.0z~10-20sz?Typography/layout-aware; legible small text; strongest quality.zgrok-imagine-image-qualityzGrok Imagine Image (Quality)z9Higher fidelity / detail; slower than the standard model.údict[str, dict[str, Any]]Ú_MODELSz1Optional[tuple[dict[str, dict[str, Any]], float]]Ú_LIVE_CACHEzHdict[tuple[str, Optional[str]], tuple[dict[str, dict[str, Any]], float]]Ú_LIVE_CACHE_BY_CREDENTIALg     Àr@g      $@Ú	landscapez16:9Úsquareú1:1Úportraitz9:16z4:3z3:4z3:2z2:3Ú1kÚ2kc               ó    € V ^8„  d   QhRRRR/# )é   Úcredsúdict[str, Any]ÚreturnÚstr© )Úformats   "ÚC/home/ubuntu/.hermes/hermes-agent/plugins/image_gen/xai/__init__.pyÚ__annotate__r/   B   s   € ÷ Sñ S�^ð S¨ñ Só    c                ó„   € \        V P                  R 4      ;'       g    R4      P                  4       P                  R4      # )Úbase_urlzhttps://api.x.ai/v1Ú/)r+   ÚgetÚstripÚrstrip)r(   s   &r.   Ú	_base_urlr7   B   s3   € Üˆu�y‰y˜Ó$×=Ð=Ð(=Ó>×DÑDÓF×MÑMÈcÓRÐRr0   c               ó    € V ^8„  d   QhRRRR/# ©r'   r(   úOptional[dict[str, Any]]r*   r   r,   )r-   s   "r.   r/   r/   F   s   € ÷ ñ Ð6ð ÐB[ñ r0   c                óJ  € V f   \        4       p \        V P                  R4      ;'       g    R4      P                  4       pV'       g   \	        R4      h\
        P                  ! \        V 4       R2RRV 2R\        4       /\        R	7      pVP                  4        VP                  4       p/ pVP                  R
4      ;'       g    VP                  R4      ;'       g    .  F½  p\        V\        4      '       d+   VP                  R4      ;'       g    VP                  R4      MRp\        V\        4      '       g   K]  VP                  4       '       g   Ku  RVP                  R4      ;'       g    . RVP                  R4      ;'       g    . /WFP                  4       &   K¿  	  V# )zZ``{model_id: {"input_modalities", "aliases"}}`` from the live endpoint; raises on failure.NÚapi_keyÚ zno xAI credentialsz/image-generation-modelsÚAuthorizationúBearer ú
User-Agent)ÚheadersÚtimeoutÚmodelsÚdataÚidÚnameÚinput_modalitiesÚaliases)r   r+   r4   r5   ÚRuntimeErrorÚrequestsr7   r   Ú_LIVE_TIMEOUTÚraise_for_statusÚjsonÚ
isinstanceÚdict)r(   r<   ÚresponseÚpayloadÚoutÚentryÚmodel_ids   &      r.   Ú_fetch_live_modelsrU   F   sY  € à‚}Ü,Ó.ˆÜ�%—)‘)˜IÓ&×,Ð,¨"Ó-×3Ñ3Ó5€GßÜÐ/Ó0Ð0Ü�|Š|Ü�UÓÐ
Ð4Ð5Ø  G¨G¨9Ð"5°|ÔEZÓE\Ð]Üô€Hð ×ÑÔØ�m‰m‹o€GØ%'€CØ—‘˜XÓ&×CÐC¨'¯+©+°fÓ*=×CÐCÀÒCˆÜ;EÀeÌT×;RÒ;R�5—9‘9˜T“?×7Ð7 e§i¡i°Ó&7øÐX\ˆÜ�h¤×$Ô$¨¯©×)9Ô)9à" E§I¡IÐ.@Ó$A×$GÐ$GÀRÈÐTY×T]ÑT]Ð^gÓTh×TnÐTnÐlnð%ˆC—‘Ó Ó!ñ Dð €Jr0   c               ó   € V ^8„  d   QhRR/# ©r'   r*   r   r,   )r-   s   "r.   r/   r/   ]   s   € ÷ ñ Ð/ñ r0   c                 ó¼  € ^ RI Hp  V ! 4       fs   \        e>   \        P                  ! 4       \        ^,          ,
          \
        8  d   \        ^ ,          # \        R4      \        P                  ! 4       3s\        ^ ,          # ^ RIHp  \        4       p\        V4      V! VP                  R4      4      3p\        P                  V4      pVe6   \        P                  ! 4       V^,          ,
          \
        8  d
   V^ ,          # \        V4      pV\        P                  ! 4       3\        V&   V#   \         d#   p\        P                  RT4       / p Rp?LÃRp?ii ; i)z.Cached live catalog (``{}`` when unreachable).)Úget_hermes_home_overrideN)Úfingerprint_secret_valueú,xAI live image model catalog unavailable: %sr<   )Úhermes_constantsrY   r   ÚtimeÚ	monotonicÚ_LIVE_CACHE_TTLÚ_fetch_live_models_or_emptyÚagent.credential_persistencerZ   r   Ú	ExceptionÚloggerÚdebugr7   r4   r   )rY   rZ   r(   ÚexcÚkeyÚcachedÚlives          r.   Ú_live_modelsri   ]   s
  € õ :áÓ!Ò)ÜÒ"¤t§~¢~Ó'7¼+Àa½.Õ'HÌ?Ô'ZÜ˜q•>Ð!Ü2°4Ó8¼$¿.º.Ó:JÐKˆÜ˜1�~ÐåEðÜ,Ó.ˆô �UÓÑ5°e·i±iÀ	Ó6JÓKÐ
L€CÜ&×*Ñ*¨3Ó/€FØÒœdŸnšnÓ.°¸µÕ:¼_ÔLØ�a�yÐÜ& uÓ-€DØ&*¬D¯NªNÓ,<Ð%=Ô˜cÑ"Ø€Køô ô Ü�‰ÐCÀSÔIØ�ûðús   Â	
D. Ä.EÄ9EÅEc               ó    € V ^8„  d   QhRRRR/# r9   r,   )r-   s   "r.   r/   r/   x   s   € ÷ ñ Ð'?ð ÐD]ñ r0   c                ó–   €  V f   \        4       # \        V 4      #   \         d#   p\        P                  RT4       / u R p?# R p?ii ; i)Nr[   )rU   rb   rc   rd   )r(   re   s   & r.   r`   r`   x   sD   € ðØ',¢}Ô!Ó#ÐSÔ:LÈUÓ:SÐSøÜô Ü�‰ÐCÀSÔIØ�	ûðús   ‚ �
 ›A¦A½AÁAc               ó   € V ^8„  d   QhRR/# rW   r,   )r-   s   "r.   r/   r/   €   s   € ÷ ñ Ð+ñ r0   c                 ój  € \        4       p V '       g   \        \        4      # / pV  FQ  p\        P                  V4      ;'       g	    RVRRRR/p/ VCRW,          P                  R4      ;'       g    . /CW&   KS  	  \        P	                  4        F   w  r#VP                  V\        V4      4       K"  	  V# )z¥Live ids + curated metadata (unknown live models get generic text; curated entries the live
list omits are kept); the static table alone when the API is unreachable.r   r   r=   r   z-New xAI Imagine model (from live xAI catalog)rG   )ri   rO   r   r4   ÚitemsÚ
setdefault)rh   ÚmergedrT   Úmetas       r.   Ú_catalogrr   €   s®   € ô ‹>€DßÜ”G‹}ÐØ(*€FÛˆÜ�{‰{˜8Ó$÷ 
ð 
Ø�x ¨"¨kÐ;jð)
ˆð f˜dÐeÐ$6¸½×8JÑ8JÐK]Ó8^×8dÐ8dÐbdÑeˆÓñ	 ô
 "Ÿ-™-ž/‰ˆØ×Ñ˜(¤D¨£JÖ/ñ *à€Mr0   c               ó   € V ^8„  d   QhRR/# ©r'   r*   úOptional[str]r,   )r-   s   "r.   r/   r/   ‘   s   € ÷ 5ñ 5˜=ñ 5r0   c                 ój   € \        R 4      P                  R4      p \        V \        4      '       d   V # R# )ÚxaiÚmodelN)r   r4   rN   r+   )Úvalues    r.   Ú_configured_modelrz   ‘   s.   € Ü! %Ó(×,Ñ,¨WÓ5€EÜ˜u¤c×*Ò*ˆ5Ð4°Ð4r0   c               ó    € V ^8„  d   QhRRRR/# )r'   Úcaller_modelru   r*   ztuple[str, dict[str, Any]]r,   )r-   s   "r.   r/   r/   –   s   € ÷ Mñ M ð MÐ:Tñ Mr0   c                ó  € \        4       pV \        P                  P                  R4      \	        4       3 F  pV'       g   K  W!9   g   K  W!V,          3u # 	  \
        VP                  \
        \        \
        ,          4      3# )ub   caller kwarg â†’ ``XAI_IMAGE_MODEL`` â†’ config â†’ default, validated against the merged catalog.ÚXAI_IMAGE_MODEL)rr   ÚosÚenvironr4   rz   ÚDEFAULT_MODELr   )r|   ÚcatalogÚ	candidates   &  r.   Ú_resolve_modelr„   –   sb   € ä‹j€GØ"¤B§J¡J§N¡NÐ3DÓ$EÔGXÓGZÓ[ˆ	ß‰9˜Ö-Ø iÕ0Ð0Ò0ñ \ô ˜'Ÿ+™+¤m´W¼]Õ5KÓLÐLÐLr0   c               ó    € V ^8„  d   QhRRRR/# )r'   r|   ru   r*   r+   r,   )r-   s   "r.   r/   r/   Ÿ   s   € ÷  ñ   mð  ¸sñ  r0   c                ó  € \        4       pT ;'       g2    \        P                  P                  R4      ;'       g    \	        4       pV'       d/   W!9   d)   RW,          P                  R4      ;'       g    . 9   d   V# \
        # )zaEdit model: an explicit selection that accepts image input, else the documented quality baseline.r~   ÚimagerG   )rr   r   r€   r4   rz   Ú_EDIT_FALLBACK_MODEL)r|   r‚   Úexplicits   &  r.   Ú_resolve_edit_modelrŠ   Ÿ   sb   € ä‹j€GØ×WÐWœrŸz™zŸ~™~Ð.?Ó@×WÐWÔDUÓDW€Hß�HÔ'¨G¸Õ8I×8MÑ8MÐN`Ó8a×8gÐ8gÐegÔ,hØˆÜÐr0   c               ó   € V ^8„  d   QhRR/# )r'   r*   r+   r,   )r-   s   "r.   r/   r/   ¨   s   € ÷ [ñ [˜Sñ [r0   c                 óˆ   € \        R 4      P                  R4      p \        V \        4      '       d   V \        9   d   V # \
        # )rw   Ú
resolution)r   r4   rN   r+   Ú_XAI_RESOLUTIONSÚDEFAULT_RESOLUTION)Úress    r.   Ú_resolve_resolutionr‘   ¨   s7   € Ü
 Ó
&×
*Ñ
*¨<Ó
8€CÜ˜S¤#×&Ò&¨3Ô2BÔ+Bˆ3ÐZÔHZÐZr0   c               ó    € V ^8„  d   QhRRRR/# )r'   Úsourcer+   r*   zdict[str, str]r,   )r-   s   "r.   r/   r/   ­   s   € ÷ lñ l˜Sð l ^ñ lr0   c                ó^  € V P                  4       p V P                  4       P                  \        4      '       d   RV RR/# ^ RIp^ RIHp V! V 4       \        \        P                  P                  V 4      R4      ;_uu_ 4       pVP                  4       pRRR4       \        P                  P                  V 4      ^,          P                  R4      ;'       g    RP                  4       pVR	8X  d   R
pRRV RVP                  X4      P                  R4       2RR/#   + '       g   i     L�; i)z]Edit ``image`` field: URL / data URI pass through; local paths are inlined as ``data:`` URIs.ÚurlÚtypeÚ	image_urlN)Úraise_if_read_blockedÚrbÚ.ÚpngÚjpgÚjpegzdata:image/z;base64,zutf-8)r5   ÚlowerÚ
startswithÚ_REMOTE_PREFIXESÚbase64Úagent.file_safetyr˜   Úopenr   ÚpathÚ
expanduserÚreadÚsplitextÚlstripÚ	b64encodeÚdecode)r“   r¡   r˜   ÚfhÚrawÚexts   &     r.   Ú_xai_image_fieldr®   ­   sï   € à�\‰\‹^€FØ‡|�|ƒ~× Ñ Ô!1×2Ò2Ø�v˜v {Ð3Ð3Ûå7á˜&Ô!Ü	Œb�g‰g× Ñ  Ó(¨$×	/Ô	/°2Ø�g‰g‹iˆ÷ 
0ä�7‰7×Ñ˜FÓ# AÕ&×-Ñ-¨cÓ2×;Ð;°e×
BÑ
BÓ
D€CØ
ˆe„|ØˆØ�[   X¨f×.>Ñ.>¸sÓ.C×.JÑ.JÈ7Ó.SÐ-TÐUÐW]Ð_jÐkÐk÷ 
0×	/ús   ÂDÄD,	c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r'   Úsource_imagesz	list[str]r—   ru   Úfailr   r*   r:   r,   )r-   s   "r.   r/   r/   ¿   s,   € ÷ ñ ØðØ)6ðØ>Aðàñr0   c                ó¬  € \        V 4      \        8”  d   V! R\         R2R4      # \        V 4       FŸ  w  r4VP                  4       P	                  \
        4      '       g.   \        V4      P                  4       P                  4       '       d   K]  V^ 8H  ;'       d    T;'       d    VP                  4       V8H  pV'       d   RMRpV! V R2R4      u # 	  R# )	z\Edit-request guard: at most 3 sources, each a remote URL/data URI or an existing local file.z#xAI image editing supports at most z source imagesÚtoo_many_referencesr—   Úreference_image_urlszc must be a public HTTPS URL or data URI (e.g. the `image`/`public_url` from a prior Imagine result)Úinvalid_image_urlN)
ÚlenÚ_MAX_SOURCE_IMAGESÚ	enumeraterž   rŸ   r    r   r¥   Úis_filer5   )r°   r—   r±   Úindexr“   Ú
is_primaryÚfields   &&&    r.   Ú_check_source_imagesr½   ¿   sÎ   € ô ˆ=ÓÔ.Ô.ÙØ1Ô2DÐ1EÀ^ÐTÐVkó
ð 	
ô # =Ö1‰ˆØ�<‰<‹>×$Ñ$Ô%5×6Ò6¼$¸v»,×:QÑ:QÓ:S×:[Ñ:[×:]Ò:]ÙØ˜a‘Z×MÐM I×MÐM°)·/±/Ó2CÀvÑ2Mˆ
ß)‘Ð/EˆÙØˆgð Jð Jàó!ò 	!ñ 2ñ r0   c                  ó|   € ] tR t^ÓtRtRtRtR R ltR R ltR R	 lt	R
 R lt
R R lt]3RRRR/R R llltRtR# )ÚXAIImageGenProviderz#xAI ``grok-imagine-image`` backend.rw   z
xAI (Grok)c               ó   € V ^8„  d   QhRR/# )r'   r*   Úboolr,   )r-   s   "r.   r/   Ú XAIImageGenProvider.__annotate__Ù   s   € ÷ Cñ C˜dñ Cr0   c                	óF   € \        \        4       P                  R 4      4      # )r<   )rÁ   r   r4   ©Úselfs   &r.   Úis_availableÚ XAIImageGenProvider.is_availableÙ   s   € ÜÔ0Ó2×6Ñ6°yÓAÓBÐBr0   c               ó   € V ^8„  d   QhRR/# )r'   r*   zlist[dict[str, Any]]r,   )r-   s   "r.   r/   rÂ   Ü   s   € ÷ Kñ KÐ1ñ Kr0   c                	ó*   € \        \        4       R4      # )r   )r   r   r   )r   rr   rÄ   s   &r.   Úlist_modelsÚXAIImageGenProvider.list_modelsÜ   s   € ÜœH›JÐ(IÓJÐJr0   c               ó   € V ^8„  d   QhRR/# rt   r,   )r-   s   "r.   r/   rÂ   ß   s   € ÷ ,ñ ,˜}ñ ,r0   c                	ó<   € \        \        \        4       4      R 4      # ©N)ÚnextÚiterrr   rÄ   s   &r.   Údefault_modelÚ!XAIImageGenProvider.default_modelß   s   € ä”Dœ›Ó$ dÓ+Ð+r0   c               ó   € V ^8„  d   QhRR/# ©r'   r*   r)   r,   )r-   s   "r.   r/   rÂ   ã   s   € ÷ 	
ñ 	
 .ñ 	
r0   c           
     	ó\   € \        R 4      pRpV'       d   VRV 2,          pRRRRRVR. R	R
/# )Ú	image_genzVgrok-imagine-image - text-to-image & image editing; uses xAI Grok OAuth or XAI_API_KEYz. rF   zxAI Grok Imagine (image)ÚbadgeÚpaidÚtagÚenv_varsÚ
post_setupÚxai_grok)r   )rÅ   Ústorage_noticerÙ   s   &  r.   Úget_setup_schemaÚ$XAIImageGenProvider.get_setup_schemaã   sH   € ä0°Ó=ˆØfˆßØ�R˜Ð'Ð(Õ(ˆCàÐ.°¸ÀÈÈZÐY[Ø˜*ð
ð 	
r0   c               ó   € V ^8„  d   QhRR/# rÔ   r,   )r-   s   "r.   r/   rÂ   î   s   € ÷ 
ñ 
˜nñ 
r0   c                	ó   € R RR.R^R\         /# )Ú
modalitiesÚtextr‡   Úmax_reference_imagesÚmax_source_images)r·   rÄ   s   &r.   ÚcapabilitiesÚ XAIImageGenProvider.capabilitiesî   s#   € ð ˜6 7Ð+Ð-CÀQØÔ!3ð
ð 	
r0   r—   Nr´   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r'   Úpromptr+   Úaspect_ratior—   ru   r´   zOptional[list[str]]Úkwargsr   r*   r)   r,   )r-   s   "r.   r/   rÂ   õ   sP   € ÷ _Bñ _BØð_BØ),ð_Bà ð_Bà?Rð_Bð ð_Bð 
ñ	_Br0   c               ó^  € \        4       p\        VP                  R4      ;'       g    R4      P                  4       p\        VP                  R4      ;'       g    R4      P                  4       ;'       g    RpV'       g   \	        W‚4      ! RR4      # \        VP                  R4      4      w  rš\        V4      p\        4       p\        W44      p\	        W‹\        VR7      p\        WÓV4      pV'       d   V# \        V4      pR	R
V 2RRR\        4       /p\        V4      p\        RRRR7      p\        R4      p\!        R4      pV'       dd   \#        VP                  R4      4      p	 V Uu. uF  p\%        V4      NK  	  ppRT	RT/p\)        T4      ^8X  d   T^ ,          TR&   MTTR&   T R2pM#RV	RVR\*        P                  VR4      RV/pV R2pVe   VVR&   \	        W‹W‘R7      p\-        VVV\.        RR 7      w  ppV'       dZ   VP0                  R!8X  d,   \2        P5                  R"VP6                  VP8                  4       V! VP4                  VP:                  4      # VP                  R#. 4      pV'       g
   V! R$R%4      # V^ ,          p\=        V\>        4      '       d   VP                  R&4      MRp \=        V \>        4      '       d   T M/ p V P                  R'4      p!\=        V!\        4      '       d   T!MRp!V!'       d   T!p"ME\A        VP                  R(4      VP                  R)4      R*V	 2RRW‘V\2        R+7	      w  p"pV'       d   V# R,\        VR-,          4      /p#V'       g   VV#R&   V'       d   VV#R.&   V!'       d   V!V#R'&   T#PC                  \D         U$u/ uF  p$V$V 9   g   K  V$V V$,          bK  	  up$4       VP                  R/4      '       d   VR/,          V#R/&   \G        T"Y‘TRV'       d	   RV#R17      # R0V#R17      # u upi   \&         d   pT! RT 2RT	R7      u Rp?# Rp?ii ; iu up$i )2už   Text-to-image, or editing via ``/v1/images/edits`` (JSON body â€” xAI does not support the
SDK's multipart ``images.edit()``) when source images are supplied.r<   r=   Úproviderrw   zSNo xAI credentials found. Configure xAI OAuth in `hermes model` or set XAI_API_KEY.Úmissing_api_keyrx   )rx   ré   r>   r?   zContent-Typezapplication/jsonr@   rÖ   zhermes-xai-imager›   )Úfilename_prefixÚ	extensionz)Could not load source image for editing: Úio_error)rx   Nré   r‡   Úimagesz/images/editsrê   r"   r�   z/images/generationsÚstorage_optionsÚxAI)rA   rQ   rB   ÚlabelÚhttpzxAI image gen failed (%d): %srD   zxAI returned no image dataÚempty_responseÚfile_outputÚ
public_urlÚb64_jsonr•   Úxai_)Úprefixrõ   rí   rx   ré   ÚaspectÚlogÚstorage_enabledÚenabledrÝ   Úusagerã   )r‡   rx   ré   rê   rí   ÚmodalityÚextra)$r   r+   r4   r5   r   r„   r
   r‘   r   rˆ   r½   rÁ   r   r7   r   r   r   rŠ   r®   rb   r¶   Ú_XAI_ASPECT_RATIOSr   Ú_REQUEST_TIMEOUTÚkindrc   ÚerrorÚstatusÚmessageÚ
error_typerN   rO   r   ÚupdateÚ_FILE_OUTPUT_EXTRA_KEYSr   )%rÅ   ré   rê   r—   r´   rë   r(   r<   Úprovider_namerT   Ú_metarý   Úxai_resr°   Ú	edit_failÚerrÚis_editrA   r2   ró   rÝ   Ústorage_cfgr“   Úimage_fieldsre   rQ   Úendpoint_urlr±   ÚresultÚfailurerD   Úfirstrø   rù   Ú	image_refr  rf   s%   &&&$$,                               r.   ÚgenerateÚXAIImageGenProvider.generateõ   s  € ô -Ó.ˆÜ�e—i‘i 	Ó*×0Ð0¨bÓ1×7Ñ7Ó9ˆÜ˜EŸI™I jÓ1×:Ð:°UÓ;×AÑAÓC×LÐLÀuˆßÜ  Ô=ØeØ!ó#ð #ô )¨¯©°GÓ)<Ó=‰ˆÜ% lÓ3ˆÜ%Ó'ˆÜ-¨iÓNˆÜ! -Ô?SÐ\bÔcˆ	Ü" =¸YÓGˆßØˆJÜ�}Ó%ˆð ˜w w iÐ0°.ÐBTØÔ/Ó1ð
ˆô ˜UÓ#ˆÜ3ØÐ);ÀuôNˆä;¸KÓHˆÜ5°kÓBˆçÜ*¨6¯:©:°gÓ+>Ó?ˆHðpÙGTÓUÁ}¸VÔ 0°Ö 8Á}�ÐUð (/°¸(ÀFÐ&KˆGÜ�<Ó  AÔ%Ø#/°¥?�˜Ò à$0�˜Ñ!Ø&˜Z }Ð5‰Lð ˜ 8¨V°^ÔEW×E[ÑE[Ð\bÐdiÓEjØ˜gðˆGð '˜ZÐ':Ð;ˆLØÒ&Ø)8ˆGÐ%Ñ&ä˜]¸(ÔRˆÜ#Ø '°7ÔDTÐ\aôc‰ˆ�çØ�|‰|˜vÔ%Ü—‘Ð<¸g¿n¹nÈgÏoÉoÔ^Ù˜Ÿ™ w×'9Ñ'9Ó:Ð:ð �z‰z˜& "Ó%ˆßÙÐ4Ð6FÓGÐGØ�Q•ˆÜ2<¸UÄD×2IÒ2I�e—i‘i Ô.ÈtˆÜ%/°¼T×%BÒ%B‘kÈˆØ —_‘_ \Ó2ˆ
Ü#-¨j¼#×#>Ò#>‘ZÀDˆ
ßØ"‰Iô /Ø—	‘	˜*Ó% u§y¡y°Ó'7À$ÀxÀjÐ@QÐY^ÐinØ°fÄ&ôJ‰NˆI�s÷ Ø�
à!2´D¸ÀYÕ9OÓ4PÐ QˆßØ")ˆE�,ÑßØ&4ˆEÐ"Ñ#ßØ",ˆE�,ÑØ�‰Õ7NÓeÑ7N°ÐRUÐYdÑRdÔ+�c˜; sÕ+Ò+Ñ7NÑeÔfØ�:‰:�g×ÒØ# G�_ˆE�'‰NÜØ 8ÈÐZ_ß '�W¸5ôBð 	Bà-3¸5ôBð 	Bùòo  VøÜô pÙ Ð#LÈSÈEÐ!RÐT^ÐfnÔoÕoûðpüòf fs<   Å'P Å+O?Å?P Î	P*Î&P*Ï?P ÐP'ÐP"ÐP'Ð"P'r,   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úprovider_idrõ   rÆ   rÊ   rÑ   rÞ   ræ   r	   r  Ú__static_attributes__r,   r0   r.   r¿   r¿   Ó   sR   † Ù-à€KØ€EõCõKõ,õ	
õ
ð 0Dñ_Bà#'ð_BàUY÷_Bô _Br0   r¿   c               ó    € V ^8„  d   QhRRRR/# )r'   Úctxr   r*   ÚNoner,   )r-   s   "r.   r/   r/   W  s   € ÷ ;ñ ;�#ð ;˜$ñ ;r0   c                ó8   € V P                  \        4       4       R# )z3Register this provider with the image gen registry.N)Úregister_image_gen_providerr¿   )r$  s   &r.   Úregisterr(  W  s   € à×#Ñ#Ô$7Ó$9Ö:r0   )zhttp://zhttps://zdata:)ÚfilenameÚ
expires_atÚpublic_url_expires_atÚpublic_url_errorÚstorage_errorrÎ   )BÚ__conditional_annotations__r   Ú
__future__r   Úloggingr   r]   Úpathlibr   Útypingr   r   r   r   r   rJ   Úagent.image_gen_providerr	   r
   r   Úplugins.image_gen._commonr   r   r   r   r   r   r   Útools.xai_httpr   r   r   r   r   r   Ú	getLoggerr  rc   r   Ú__annotations__r�   rˆ   r   r   r_   rK   r  rŽ   r�   r·   r  r    r  r7   rU   ri   r`   rr   rz   r„   rŠ   r‘   r®   r½   r¿   r(  )r.  s   @r.   Ú<module>r8     s’  øðôNõ #ã Û 	Û Ý ß 3Õ 3ã ç aÑ a÷9÷ 9ñ 9÷\÷ \ð 
×	Ò	˜8Ó	$€ð ØÐ'¨°(¸KÐI]ðð ØÐ+¨W°iØÐVðð !ØÐ1°7¸IØÐPð#ð&€Ð	"ó ð %€à3Ð ð BF€Ð>Ó Eð giÐ ÐcÓ hØ€Ø€ð �˜ 5¨*°fØ	ˆ5�%˜  u¨e°UðÐ ð ˜$�<Ð ØÐ ØÐ ØÐ Ø3Ð ð\Ð õS÷õ.õ6õõ"5÷
M÷ õ[õ
lõ$ô(ABÐ0ô AB÷H;r0   