§
    ÎÐj'Š  ã            .       óô  — d dl mZ d dlZd dlmZmZ d dlZd dlZd dl	m
c mZ d dlmZmZ d dlmZ d dlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZ ddlmZ d dlm c mZ! dddœde"de"de"dej#        dej$        de"de"de"fd„Z%dˆdedede"de&e'e&         z  de(de&d e)e&ef         fd!„Z*d‰d"ede"d e)e&ef         fd#„Z+deded"ede&e'e&         z  d$ed%e&d e)e&ef         fd&„Z,d'„ Z-d(„ Z.	 	 	 	 dŠddd)œd*edz  d+e'de"dej#        d,e"dz  d-e"dz  de"de"d.e"d e/e)e&ef         e"e"f         fd/„Z0d0e1d1e1d2efd3„Z2	 d‹d8e1d9e1d:e1d;e1d ee1ge1f         f
d<„Z3d2ed0e1d1e1d efd=„Z4d>e"d?e"dej#        d e'e1         fd@„Z5d>e"d?e"dej#        d e'e1         fdA„Z6dBedCe1d efdD„Z7dEedCe1d efdF„Z8	 dŒdIedJe1dKe1d e/eef         fdL„Z9dHdMdNdOœdPedEedQedRedSedTedUedKe1dVe"dWe"d efdX„Z: G dY„ dZ¦  «        Z;d[d\œd]ed^ed_ed`e"dae;dCe1d efdb„Z<d‰dcede"d efdd„Z=d‰dcede"d efde„Z>d?e"d>e"d e1fdf„Z?	 	 	 	 d�d>e"d?e"dhe1die1dCe(dej#        d e'e1         fdj„Z@	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dŽdned"edoedpedqedredse'e1         dte1due1dz  dvedwedxedyedz  dzedz  d{edz  d|e)dz  de"dz  de"dz  d}e"d~e"dejA        dz  d€e1dz  f,d�„ZB	 	 	 	 	 	 	 	 d�d*ed+e'de"dej#        d,e"dz  d-e"dz  de"dƒed„         de"d e)e&ef         fd…„ZCdcede"de"d efd†„ZDdcede"de"de"d ef
d‡„ZEdS )�é    )Útext_encoding_progressN)ÚCallableÚLiteral)Ú	rearrangeÚrepeat)ÚImage)ÚTensoré   )ÚFlux)ÚAutoEncoder)Ú
HFEmbedder)ÚCannyImageEncoderÚDepthImageEncoderÚReduxImageEncoder)ÚPREFERED_KONTEXT_RESOLUTIONSé   é   )ÚchannelsÚ
patch_sizeÚnum_samplesÚheightÚwidthÚdeviceÚdtypeÚseedr   r   c          
      ó6  — t          j        |¬¦  «                             |¦  «        }|dk    rQ|dk    rKt          j        | |dt	          j        |dz  ¦  «        z  dt	          j        |dz  ¦  «        z  |||¬¦  «        S t          j        | ||||||¬¦  «        S )N©r   r   r   )r   r   Ú	generator)ÚtorchÚ	GeneratorÚmanual_seedÚrandnÚmathÚceil)	r   r   r   r   r   r   r   r   r   s	            ú<C:\Users\johnn\OneDrive\Documents\AI\models\flux\sampling.pyÚ	get_noiser&      s¹   € õ ” vÐ.Ñ.Ô.×:Ò:¸4Ñ@Ô@€IØ�2‚~€~˜*¨š/˜/ÝŒ{ØØà•”	˜& 2™+Ñ&Ô&Ñ&Ø•”	˜% "™*Ñ%Ô%Ñ%ØØØð	
ñ 	
ô 	
ð 		
õ Œ;ØØØØØØØðñ ô ð ó    FÚcudaÚt5ÚclipÚbsÚpromptÚnegÚreturnc           	      óT  — t          t          | j        j        j        ¦  «        t          |j        j        j        j        ¦  «        z   t          |t          ¦  «        rdnt          |¦  «        ¬¦  «        5  |dk    r$t          |t          ¦  «        st          |¦  «        }t          |t          ¦  «        r|g} | |¦  «        }|j
        d         dk    r|dk    rt          |d|¬¦  «        }t          j        ||j
        d         d|¬¦  «        } ||¦  «        }|j
        d         dk    r|dk    rt          |d|¬¦  «        }|rdnd	|                     |¦  «        |rd
nd|                     |¦  «        |rdnd|                     |¦  «        icd d d ¦  «         S # 1 swxY w Y   d S )Nr
   )Úprompt_countr   ú1 ... -> bs ...©r+   é   r   Úneg_txtÚtxtÚneg_txt_idsÚtxt_idsÚneg_vecÚvec)r   ÚlistÚ	hf_moduleÚencoderÚblockÚ
text_modelÚlayersÚ
isinstanceÚstrÚlenÚshaper   r   ÚzerosÚto)	r)   r*   r+   r,   r-   r   r5   r7   r9   s	            r%   Úprepare_promptrF   7   s  € Ý	¥ R¤\Ô%9Ô%?Ñ @Ô @Å4ÈÌÔHaÔHiÔHpÑCqÔCqÑ qõ  FPð  QWõ  Y\ñ  F]ô  F]ð  Anð  ABð  ABõ  cfð  gmñ  cnô  cnð  
oñ  
oô  
oð 
ð 
Ø�Š7ˆ7�: f­cÑ2Ô2ˆ7Ý�V‘”ˆBå�f�cÑ"Ô"ð 	Ø�XˆFØˆb�‰jŒjˆØŒ9�QŒ<˜1ÒÐ  a¢ Ý˜Ð/°BÐ7Ñ7Ô7ˆCÝ”+˜b #¤)¨A¤,°¸&ÐAÑAÔAˆàˆd�6‰lŒlˆØŒ9�QŒ<˜1ÒÐ  a¢ Ý˜Ð/°BÐ7Ñ7Ô7ˆCð Ð'ˆIˆI %¨¯ª°©¬Ø Ð/ˆMˆM i°·²¸FÑ1CÔ1CØÐ'ˆIˆI %¨¯ª°©¬ð
ð
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   Á6DFÆF!Æ$F!Úimgc                 ó  — | j         \  }}}}t          | d||¬¦  «        } | j         d         dk    r|dk    rt          | d|¬¦  «        } t          j        ||z  ||z  d| j        ¬¦  «        }|d	         t          j        ||z  | j        ¬¦  «        d d …d f         z   |d	<   |d
         t          j        ||z  | j        ¬¦  «        d d d …f         z   |d
<   t          |d|¬¦  «        }| |                     | j        ¦  «        dœS )Nú&b c (h ph) (w pw) -> b (h w) (c ph pw)©ÚphÚpwr   r
   r1   r2   r3   r   ©.r
   ©.r   úh w c -> b (h w) c©Úb)rG   Úimg_ids)rC   r   r   r   rD   r   ÚarangerE   )rG   r   r+   ÚcÚhÚwrR   s          r%   Úprepare_imgrW   N   s%  € Ø”)�K€Bˆˆ1ˆaå
�CÐAÀjÐU_Ð
`Ñ
`Ô
`€CØ
„y�„|�qÒÐ˜R !šV˜VÝ�SÐ+°Ð3Ñ3Ô3ˆåŒk˜!˜z™/¨1°
©?¸AÀcÄjÐQÑQÔQ€GØ˜f”o­¬°Q¸*±_ÈSÌZÐ(XÑ(XÔ(XÐYZÐYZÐYZÐ\`ÐY`Ô(aÑa€GˆF�OØ˜f”o­¬°Q¸*±_ÈSÌZÐ(XÑ(XÔ(XÐY]Ð_`Ð_`Ð_`ÐY`Ô(aÑa€GˆF�OÝ�WÐ2°bÐ9Ñ9Ô9€Gð Ø—:’:˜cœjÑ)Ô)ðð ð r'   r<   Úimg_cond_pathc                 óà  — |j         \  }}}}	|dk    r$t          |t          ¦  «        st          |¦  «        }t	          j        |¦  «                             d¦  «        }
t          j        ¦   «         5   ||
¦  «        }
d d d ¦  «         n# 1 swxY w Y   |
 	                    t          j
        ¦  «        }
|
j         d         dk    r|dk    rt          |
d|¬¦  «        }
t          |ddd¬¦  «        }|j         d         dk    r|dk    rt          |d|¬¦  «        }t          j        |dz  |	dz  d	|j        ¬
¦  «        }|d         t          j        |dz  |j        ¬
¦  «        d d …d f         z   |d<   |d         t          j        |	dz  |j        ¬
¦  «        d d d …f         z   |d<   t          |d|¬¦  «        }t          |t          ¦  «        r|g} | |¦  «        }t          j        ||
 	                    |¦  «        fd¬¦  «        }|j         d         dk    r|dk    rt          |d|¬¦  «        }t          j        ||j         d         d	|j        ¬
¦  «        } ||¦  «        }|j         d         dk    r|dk    rt          |d|¬¦  «        }|| 	                    |j        ¦  «        | 	                    |j        ¦  «        | 	                    |j        ¦  «        | 	                    |j        ¦  «        dœS )Nr
   ÚRGBr   r1   r2   rI   r   rJ   r3   r   rM   rN   rO   rP   éþÿÿÿ©Údim)rG   rR   r5   r7   r9   )rC   r@   rA   rB   r   ÚopenÚconvertr   Úno_gradrE   Úbfloat16r   r   rD   r   rS   Úcat)r)   r*   rG   r,   r<   rX   r+   Ú_rU   rV   Úimg_condrR   r5   r7   r9   s                  r%   Úprepare_reduxre   c   s   € ð ”)�K€Bˆˆ1ˆaØ	ˆQ‚w€w•z &­#Ñ.Ô.€wÝ�‰[Œ[ˆåŒz˜-Ñ(Ô(×0Ò0°Ñ7Ô7€HÝ	Œ‰Œð %ð %Ø�7˜8Ñ$Ô$ˆð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð �{Š{�5œ>Ñ*Ô*€HØ„~�aÔ˜AÒÐ " q¢& &Ý˜(Ð$5¸"Ð=Ñ=Ô=ˆå
�CÐAÀaÈAÐ
NÑ
NÔ
N€CØ
„y�„|�qÒÐ˜R !šV˜VÝ�SÐ+°Ð3Ñ3Ô3ˆåŒk˜!˜q™& ! q¡&¨!°C´JÐ?Ñ?Ô?€GØ˜f”o­¬°Q¸!±VÀCÄJÐ(OÑ(OÔ(OÐPQÐPQÐPQÐSWÐPWÔ(XÑX€GˆF�OØ˜f”o­¬°Q¸!±VÀCÄJÐ(OÑ(OÔ(OÐPTÐVWÐVWÐVWÐPWÔ(XÑX€GˆF�OÝ�WÐ2°bÐ9Ñ9Ô9€Gå�&�#ÑÔð Ø�ˆØ
ˆ"ˆV‰*Œ*€CÝ
Œ)�S˜(Ÿ+š+ cÑ*Ô*Ð+°Ð
4Ñ
4Ô
4€CØ
„y�„|�qÒÐ˜R !šV˜VÝ�SÐ+°Ð3Ñ3Ô3ˆÝŒk˜"˜cœi¨œl¨A°c´jÐAÑAÔA€Gà
ˆ$ˆv‰,Œ,€CØ
„y�„|�qÒÐ˜R !šV˜VÝ�SÐ+°Ð3Ñ3Ô3ˆð Ø—:’:˜cœjÑ)Ô)Ø�vŠv�c”jÑ!Ô!Ø—:’:˜cœjÑ)Ô)Ø�vŠv�c”jÑ!Ô!ðð ð s   Á1B	Â	BÂBc                 óø   ‡— d}| j         | j        }}||z  Št          ˆfd„t          D ¦   «         ¦  «        \  }}}||z  |z  }||z  |z  }||f| j        k    r"|                      ||ft          j        ¦  «        } | S )Nr   c              3   óN   •K  — | ]\  }}t          ‰||z  z
  ¦  «        ||fV — Œ d S ©N)Úabs)Ú.0rV   rU   Úaspect_ratios      €r%   ú	<genexpr>zresizeinput.<locals>.<genexpr>˜   sP   øè è € ð 'ð 'Ù.2¨a°�ˆ\˜A ™EÑ!Ñ	"Ô	" A qÐ)ð'ð 'ð 'ð 'ð 'ð 'r'   )r   r   Úminr   ÚsizeÚresizer   ÚLANCZOS)rG   Úmultiple_ofÚimage_heightÚimage_widthrc   rk   s        @r%   Úresizeinputrt   ”   s¬   ø€ Ø€KØ #¤
¨C¬I�+€LØ Ñ-€LÝ#&ð 'ð 'ð 'ð 'Ý6Rð'ñ 'ô 'ñ $ô $Ñ €A€{�Lð  Ñ,¨{Ñ:€KØ ;Ñ.°Ñ<€LØ�\Ð" c¤hÒ.Ð.Ø�jŠj˜+ |Ð4µe´mÑDÔDˆØ€Jr'   c                 ó   — ddl m}m}  ||                     | dz  |dz  ft          j        j        ¬¦  «        ¦  «        }t          j        |dk    dd¦  «        dd…         }| 	                    dd	¬
¦  «         	                    dd¬
¦  «         
                    d¦  «        }|                     dd	d¦  «                             |¦  «        }||dœS )Nr   )Úconvert_image_to_tensorÚconvert_tensor_to_imager   )Úresampleg      à¿ç      ð?ç        r
   éÿÿÿÿr\   r[   )Úimg_msk_latentsÚimg_msk_rebuilt)Úshared.utils.utilsrv   rw   ro   r   Ú
Resamplingrp   r   ÚwhereÚrepeat_interleaveÚ	unsqueezeÚreshaperE   )Útarget_widthÚtarget_heightÚimg_maskr   rv   rw   Úimage_mask_latentsÚimage_mask_rebuilts           r%   Ú
build_maskr‰   ¢   s  € ØSÐSÐSÐSÐSÐSÐSÐSà0Ð0°·²À,ÐRTÑBTÐVcÐgiÑViÐAjÕuzô  vFô  vN°ñ  2Oô  2Oñ  Pô  PÐÝœÐ%7¸Ò%<¸bÀ"ÑFÔFÀqÈÀsÔKÐØ+×=Ò=¸bÀbÐ=ÑIÔI×[Ò[Ð\^ÐdfÐ[ÑgÔg×qÒqÐrsÑtÔtÐà+×3Ò3°A°r¸1Ñ=Ô=×@Ò@ÀÑHÔHÐà-Ø-ðð ð r'   )r   Únoise_channelsÚaeÚimg_cond_listr„   r…   rŠ   c          
      óH  — |d u}
d }d }|d k    rg }d}d}t          |¦  «        D �]ˆ\  }}|
r5|j        ||fk    r'|                     ||ft          j        j        ¦  «        }nt          |¦  «        }|j        \  }}|dz  |dz  }}t          j        |¦  «        }t          j
        |¦  «                             ¦   «         dz  dz
  }t          |d¦  «        }| €t          d¦  «        ‚t          j        ¦   «         5  |                      |                     |¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |                     t          j        ¦  «        }t          |ddd¬	¦  «        }|j        d         d
k    r|d
k    rt'          |d|¬¦  «        }d }t          j        |dz  |dz  d|j        ¬¦  «        }d
|d<   |d         t          j        |dz  |j        ¬¦  «        d d …d f         z   |z   |d<   |d         t          j        |dz  |j        ¬¦  «        d d d …f         z   |z   |d<   t'          |d|¬¦  «        }||dz  z  }||dz  z  }|€d|z  }|€d|z  }|                     |¦  «        }|dk    r||}}�ŒXt          j        ||gd
¬¦  «        t          j        ||gd
¬¦  «        }}�ŒŠ||dœ}|�%|                     t3          ||||¦  «        ¦  «         t5          ||||t          j        ||	|¬¦  «        }|                     t7          ||¬¦  «        ¦  «         |||fS )Nr   é   g     à_@ry   zh w c -> 1 c h wz3Image conditioning is not supported for this model.rI   r   rJ   r
   r1   r2   r3   r   ©.r   rM   rN   rO   rP   r\   )Úimg_cond_seqÚimg_cond_seq_ids)r   r   r   r   r   ©r   )Ú	enumeratern   ro   r   r   rp   rt   ÚnpÚarrayr   Ú
from_numpyÚfloatr   Ú
ValueErrorr`   ÚencoderE   ra   rC   r   rD   r   rS   rb   Úupdater‰   r&   rW   )r‹   rŒ   r   r   r„   r…   r+   r†   r   rŠ   Úres_match_outputr�   r‘   Úheight_offsetÚwidth_offsetÚcond_nord   r   r   Úimg_cond_latentsÚimg_cond_idsÚreturn_dictrG   s                          r%   Úprepare_kontextr¢   °   s  € ð   tÐ+Ðà€LØÐØ˜ÒÐ¨b˜mØ€MØ€LÝ& }Ñ5Ô5ð )Vñ )VÑˆ�Øð 	-ØŒ} ¨}Ð =Ò=Ð=Ø#Ÿ?š?¨L¸-Ð+HÍ%ÔJZÔJbÑcÔc�øå" 8Ñ,Ô,ˆHØ œ‰ˆˆvØ ™
 F¨a¡Kˆvˆå”8˜HÑ%Ô%ˆÝÔ# HÑ-Ô-×3Ò3Ñ5Ô5¸Ñ=ÀÑCˆÝ˜XÐ'9Ñ:Ô:ˆØˆ:ÝÐRÑSÔSÐSÝŒ]‰_Œ_ð 	>ð 	>Ø!Ÿyšy¨¯ª°VÑ)<Ô)<Ñ=Ô=Ðð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð ,×.Ò.­u¬~Ñ>Ô>ÐÝ$Ð%5Ð7_ÐdeÐjkÐlÑlÔlÐØŒ>˜!Ô Ò!Ð! b¨1¢f fÝ%Ð&6Ð8IÈbÐQÑQÔQÐØˆõ ”{ 6¨Q¡;°¸±
¸AÐFVÔF]Ð^Ñ^Ô^ˆØ ˆ�VÑØ+¨FÔ3µe´lÀ6ÈQÁ;ÐWgÔWnÐ6oÑ6oÔ6oÐpqÐpqÐpqÐswÐpwÔ6xÑxð  |Iñ   Iˆ�VÑØ+¨FÔ3µe´lÀ5ÈAÁ:ÐVfÔVmÐ6nÑ6nÔ6nÐosÐuvÐuvÐuvÐovÔ6wÑwð  {Gñ   Gˆ�VÑÝ˜lÐ,@ÀBÐGÑGÔGˆØ˜& A™+Ñ%ˆØ˜ !™Ñ#ˆàÐØ˜u™9ˆLØÐ Ø ™JˆMØ#—’ vÑ.Ô.ˆØ�aŠ<ˆ<Ø.>ÀÐ*ˆL‰Lå/4¬y¸,ÐHXÐ9YÐ_`Ð/aÑ/aÔ/aÕchÔclÐn~ð  AMð  nNð  TUð  dVñ  dVô  dVÐ*ˆL‰Lð %Ø,ðð €Kð ÐØ×Ò�: l°MÀ8ÈVÑTÔTÑUÔUÐUå
Ø
ØØØÝŒnØØØð	ñ 	ô 	€Cð ×Ò•{ 3°:Ð>Ñ>Ô>Ñ?Ô?Ð?à˜ |Ð3Ð3s   Ã8)D-Ä-D1	Ä4D1	ÚmuÚsigmaÚtc                 ól   — t          j        | ¦  «        t          j        | ¦  «        d|z  dz
  |z  z   z  S ©Nr
   ©r#   Úexp)r£   r¤   r¥   s      r%   Ú
time_shiftrª     ó/   € ÝŒ8�B‰<Œ<�4œ8 B™<œ<¨1¨q©5°1©9¸Ñ*>Ñ>Ñ?Ð?r'   é   ç      à?é   çffffffò?Úx1Úy1Úx2Úy2c                 ó8   ‡‡— ||z
  || z
  z  Š|‰| z  z
  Šˆˆfd„S )Nc                 ó   •— ‰| z  ‰z   S rh   © )ÚxrQ   Úms    €€r%   ú<lambda>z"get_lin_function.<locals>.<lambda>  s   ø€ �Q˜‘U˜Q‘Y€ r'   r¶   )r°   r±   r²   r³   rQ   r¸   s       @@r%   Úget_lin_functionrº     s7   øø€ ð 
ˆb‰�R˜"‘WÑ€AØ
ˆQ�‰V‰€AØÐÐÐÐÐr'   c                 ól   — t          j        |¦  «        t          j        |¦  «        d| z  dz
  |z  z   z  S r§   r¨   )r¥   r£   r¤   s      r%   Úgeneralized_time_snr_shiftr¼     r«   r'   Ú	num_stepsÚimage_seq_lenc                 ó¢   — t          || ¦  «        }t          j        dd| dz   |¬¦  «        }t          ||d¦  «        }|                     ¦   «         S )Nr
   r   r   ry   )Úcompute_empirical_mur   Úlinspacer¼   Útolist)r½   r¾   r   r£   Ú	timestepss        r%   Úget_schedule_flux2rÄ     sP   € Ý	˜m¨YÑ	7Ô	7€BÝ”˜q ! Y°¡]¸6ÐBÑBÔB€IÝ*¨9°b¸#Ñ>Ô>€IØ×ÒÑÔÐr'   c                 ó^  — | dk    rdgS d}d}|dz
  | |z   dz
  z  }|dz
  | z  }d|t          j        | t           j        |¬¦  «        z  z   }|                     d¬¦  «        }||z  d|dz
  |z  z   z  }t          j        ||                     d¦  «        g¦  «        }|                     ¦   «         S )	zU
    pi-FLUX.2 FlowMapSDE schedule with shift=3.2 and final_step_size_scale=0.5.
    r   rz   çš™™™™™	@r­   ry   ©r   r   ©rm   r
   )r   rS   Úfloat32Úclamprb   Ú	new_zerosrÂ   )	r½   r¾   r   ÚshiftÚfinal_step_size_scaleÚendÚstepÚraw_timestepsÚsigmass	            r%   Úget_schedule_piflux2rÒ     sÍ   € ð �A‚~€~ØˆuˆØ€EØÐØ  3Ñ&¨9Ð7LÑ+LÈsÑ+RÑ
S€CØ�#‰I˜Ñ"€DØ˜$¥¤¨i½u¼}ÐU[Ð!\Ñ!\Ô!\Ñ\Ñ\€MØ!×'Ò'¨AÐ'Ñ.Ô.€MØ�]Ñ" a¨5°1©9¸Ñ*EÑ&EÑF€FÝŒY˜ × 0Ò 0°Ñ 3Ô 3Ð4Ñ5Ô5€FØ�=Š=‰?Œ?Ðr'   Úraw_trÌ   c                 ó$   — || z  d|dz
  | z  z   z  S r§   r¶   )rÓ   rÌ   s     r%   Ú_flow_map_sde_warp_trÕ   0  s   € Ø�5‰=˜A ¨¡¨eÑ 3Ñ3Ñ4Ð4r'   Úsigma_tc                 ó   — | |d|z
  | z  z   z  S r§   r¶   )rÖ   rÌ   s     r%   Ú_flow_map_sde_unwarp_trØ   4  s   € Ø�e˜q 5™y¨GÑ3Ñ3Ñ4Ð4r'   rz   ç�íµ ÷Æ°>rÑ   rU   Úepsc                 ó  — | d d…         }| dd …         }d|z
  }d|z
  }|dk    rt          j        |¦  «        }n'||z  }||z  ||z                       |¬¦  «        z  |z  }||z  }	|	||	z                        |¬¦  «        z  }
|
|fS )Nr{   r
   rz   rÈ   )r   Ú	ones_likerÊ   )rÑ   rU   rÚ   Ú
sigmas_srcÚ	sigmas_toÚ
alphas_srcÚ	alphas_toÚm_valsÚh2Úsigmas_to_mul_mÚ
sigmas_dsts              r%   Ú"_flow_map_sde_calculate_sigmas_dstrå   8  s³   € ð ˜˜˜”€JØ�q�r�r”
€IØ�Z‘€JØ�I‘€IàˆC‚x€xÝ” Ñ,Ô,ˆˆà�‰UˆØ˜jÑ(¨J¸Ñ,B×+IÒ+IÈcÐ+IÑ+RÔ+RÑRÐWYÑYˆà &Ñ(€OØ  I°Ñ$?×#FÒ#FÈ3Ð#FÑ#OÔ#OÑO€JØ�vÐÐr'   éüÿÿÿéýÿÿÿ)rÚ   Úgm_dimÚchannel_dimÚsigma_t_srcÚx_t_srcÚx_tÚgm_meansÚgm_varsÚgm_logweightsrè   ré   c                óH  — |                       |¬¦  «        } |                      |¬¦  «        }d| z
  }
d|z
  }|
| z  }||z  }|                     ¦   «         |                     ¦   «         z
  }||z  |z  ||z  | z  z
  }|                     |¦  «        }|                     |¦  «        }||z  dz                         |¬¦  «        }||z  |z   |z  }||d|z  |z  z
  z                       |	d¬¦  «        |z  }||z                        |¬¦  «        }||z                       |¬¦  «        S )NrÈ   r
   r­   T)r]   Úkeepdimr\   )rÊ   Úsquarer‚   ÚsumÚsoftmax)rê   rÖ   rë   rì   rí   rî   rï   rÚ   rè   ré   Úalpha_t_srcÚalpha_tÚalpha_over_sigma_t_srcÚalpha_over_sigma_tÚzetaÚnuÚdenomÚ	out_meansÚlogweights_deltaÚout_weightss                       r%   Ú_gmflow_posterior_meanrÿ   K  sW  € ð ×#Ò#¨Ð#Ñ,Ô,€KØ�mŠm ˆmÑ$Ô$€Gà�k‘/€KØ�'‰k€Gà(¨;Ñ6ÐØ  7Ñ*Ðà×$Ò$Ñ&Ô&Ð)?×)FÒ)FÑ)HÔ)HÑH€DØ	˜cÑ	! GÑ	+Ð.DÀwÑ.NÐQ\Ñ.\Ñ	\€Bà	�Š�fÑ	Ô	€BØ�>Š>˜&Ñ!Ô!€DØ�t‰^˜aÑ×&Ò&¨3Ð&Ñ/Ô/€Eà˜2‘ Ñ(¨EÑ1€IØ  B¨¨t©°hÑ)>Ñ$>Ñ?×DÒDÈÐ^bÐDÑcÔcÐfkÑkÐØ Ð#3Ñ3×<Ò<ÀÐ<ÑHÔH€Kà˜Ñ#×(Ò(¨VÐ(Ñ4Ô4Ð4r'   c                   óª   — e Zd Z	 ddeeef         dedededdf
d„Zedeeef         d	ed
edeeef         fd„¦   «         Z	d	ed
edefd„Z
deddfd„ZdS )Ú_GMFlowPolicyç-Cëâ6?Údenoising_outputrë   rê   rÚ   r.   Nc                 ó(  — || _         |                     ¦   «         | _        || _         |j        g |                     ¦   «         ¢| j        |                     ¦   «         z
  dgz  ¢R Ž | _        |                      || j         | j        ¦  «        | _        d S r§   )	rë   r]   ÚndimrÚ   rƒ   rn   rê   Ú	_u_to_x_0Údenoising_output_x_0)Úselfr  rë   rê   rÚ   s        r%   Ú__init__z_GMFlowPolicy.__init__p  s˜   € ð ˆŒØ—K’K‘M”MˆŒ	ØˆŒØ.˜;Ô.ð 
Ø×ÒÑÔð
Ø$(¤I°·²Ñ0AÔ0AÑ$AÀaÀSÑ#Hð
ð 
ð 
ˆÔð %)§N¢NÐ3CÀTÄ\ÐSWÔScÑ$dÔ$dˆÔ!Ð!Ð!r'   rì   rÖ   c                 óî   — |                      d¦  «        }|                      d¦  «        }||| d         z  z
  }| d         dz                       ¦   «         |                     ¦   «         z  }||| d         dœS )Nr
   ÚmeansÚlogstdsr   Ú
logweights)r  rî   r  )r‚   r©   rò   )r  rì   rÖ   Ú	means_x_0rî   s        r%   r  z_GMFlowPolicy._u_to_x_0  s|   € à�mŠm˜AÑÔˆØ×#Ò# AÑ&Ô&ˆØ˜'Ð$4°WÔ$=Ñ=Ñ=ˆ	Ø# IÔ.°Ñ2×7Ò7Ñ9Ô9¸G¿NºNÑ<LÔ<LÑLˆØ"¨wÐFVÐWcÔFdÐeÐeÐer'   c           
      ó,  —  |j         g |                     ¦   «         ¢| j        |                     ¦   «         z
  dgz  ¢R Ž }| j        d         }| j        d         }| j        d         }|| j        k                         ¦   «         rK|| j        k                         ¦   «         r.|                     d¬¦  «        |z   	                    d¬¦  «        }n&t          | j        || j        ||||| j        ¬¦  «        }||z
  |                     | j        ¬¦  «        z  S )Nr
   r  rî   r  r\   )rÚ   rÈ   )rƒ   rn   r  r]   r  rê   Úallrë   rô   ró   rÿ   rÚ   rÊ   )r  rì   rÖ   r  rî   r  Úx_0s          r%   Úpiz_GMFlowPolicy.pi‡  s  € Ø!�'”/ÐX 7§<¢<¡>¤>ÐX°d´iÀ'Ç+Â+Á-Ä-Ñ6OÐTUÐSVÑ5VÐXÐXÐXˆØÔ)¨'Ô2ˆØÔ+¨IÔ6ˆØÔ.¨|Ô<ˆ
à�tÔ'Ò'×,Ò,Ñ.Ô.ð 	°C¸4¼<Ò4G×3LÒ3LÑ3NÔ3Nð 	Ø×%Ò%¨!Ð%Ñ,Ô,¨uÑ4×9Ò9¸aÐ9Ñ@Ô@ˆCˆCå(ØÔ ØØ”ØØØØØ”Hð	ñ 	ô 	ˆCð �c‘	˜WŸ]š]¨t¬x˜]Ñ8Ô8Ñ8Ð8r'   Útemperaturec                 ó®   — |dk    rd S t          || j        ¦  «        }| j        }|d         |z                       d¬¦  «        |d<   |d         |z  |d<   d S )Nry   r  r
   r\   rî   )ÚmaxrÚ   r  Úlog_softmax)r  r  Úgms      r%   Útemperature_z_GMFlowPolicy.temperature_œ  sf   € Ø˜#ÒÐØˆFÝ˜+ t¤xÑ0Ô0ˆØÔ&ˆØ˜|Ô,¨{Ñ:×GÒGÈAÐGÑNÔNˆˆ<ÑØ˜9œ¨Ñ3ˆˆ9‰ˆˆr'   )r  )Ú__name__Ú
__module__Ú__qualname__ÚdictrA   r	   r—   r	  Ústaticmethodr  r  r  r¶   r'   r%   r  r  o  s  € € € € € ð ðeð eà˜s F˜{Ô+ðeð ðeð ð	eð
 ðeð 
ðeð eð eð eð ðf D¨¨f¨Ô$5ð f¸Fð fÈVð fÐX\Ð]`ÐbhÐ]hÔXið fð fð fñ „\ðfð9�fð 9 vð 9°&ð 9ð 9ð 9ð 9ð*4¨ð 4°$ð 4ð 4ð 4ð 4ð 4ð 4r'   r  rÆ   )rÌ   Ú	x_t_startÚsigma_t_startÚsigma_t_endÚtotal_substepsÚpolicyc                ó0  — |                       d¦  «        }|                      ¦   «         } |j        |g|dz
  dgz  ¢R Ž } |j        |g|dz
  dgz  ¢R Ž }t          ||¦  «        }t          ||¦  «        }	||	z
  }
|
|z                       ¦   «                              t          j        ¦  «                             d¬¦  «        }|
|z  }| 	                    ¦   «         }|}|}| }t          |                     ¦   «         ¦  «        D ]”}|                     ||¦  «        }||z
                       d¬¦  «        }t          ||¦  «        }||||z
  z  z   }||k    }t          j        |||¦  «        }t          j        |||¦  «        }t          j        |||¦  «        }Œ•|S )Nr   r
   rÈ   )rn   r]   rƒ   rØ   ÚroundrE   r   ÚlongrÊ   r  ÚrangeÚitemr  rÕ   r€   )r  r  r   r!  r"  rÌ   Únum_batchesr  Úraw_t_startÚ	raw_t_endÚdelta_raw_tÚnum_substepsÚsubstep_sizeÚmax_num_substepsrÓ   rÖ   rì   Ú
substep_idÚuÚraw_t_minusÚsigma_t_minusÚ	x_t_minusÚactive_masks                          r%   Ú_policy_rolloutr5  ¥  s¶  € ð —.’. Ñ#Ô#€KØ�=Š=‰?Œ?€DØ)�MÔ)¨+ÐK¸$À¹(ÀqÀcÑ9IÐKÐKÐK€MØ%�+Ô% kÐG°d¸Q±hÀ1À#Ñ5EÐGÐGÐG€Kå(¨¸Ñ>Ô>€KÝ& {°EÑ:Ô:€IØ 	Ñ)€KØ .Ñ0×7Ò7Ñ9Ô9×<Ò<½U¼ZÑHÔH×NÒNÐSTÐNÑUÔU€LØ Ñ-€LØ#×'Ò'Ñ)Ô)Ðà€EØ€GØ
€CåÐ,×1Ò1Ñ3Ô3Ñ4Ô4ð =ð =ˆ
Ø�IŠI�c˜7Ñ#Ô#ˆØ˜|Ñ+×2Ò2°qÐ2Ñ9Ô9ˆÝ,¨[¸%Ñ@Ô@ˆØ˜!˜}¨wÑ6Ñ7Ñ7ˆ	Ø" ZÒ/ˆÝŒk˜+ y°#Ñ6Ô6ˆÝ”+˜k¨=¸'ÑBÔBˆÝ”˜K¨°eÑ<Ô<ˆˆà€Jr'   r·   c                 óÎ   — | j         \  }}}}|||z  z  }|                      ||||||¦  «        } |                      dddddd¦  «                             ||||z  ||z  ¦  «        } | S )Nr   r
   é   r   é   r3   ©rC   ÚviewÚpermuterƒ   )r·   r   ÚbszÚpacked_channelsrU   rV   r   s          r%   Ú_unpack_latent_piflux2r>  Ë  sx   € Ø!"¤Ñ€Cˆ˜!˜QØ :°
Ñ#:Ñ;€HØ	�Šˆs�H˜j¨*°a¸Ñ;Ô;€AØ	�	Š	�!�Q˜˜1˜a Ñ#Ô#×+Ò+¨C°¸1¸z¹>È1ÈzÉ>ÑZÔZ€AØ€Hr'   c                 óÒ   — | j         \  }}}}||z  }||z  }|                      ||||||¦  «        } |                      dddddd¦  «                             |||z  |z  ||¦  «        } | S )Nr   r
   r3   r8  r   r7  r9  )r·   r   r<  r   rU   rV   Úh_packedÚw_packeds           r%   Ú_pack_latent_piflux2rB  Ó  s„   € Øœ'Ñ€Cˆ�1�aØ�J‰€HØ�J‰€HØ	�Šˆs�H˜h¨
°H¸jÑIÔI€AØ	�	Š	�!�Q˜˜1˜a Ñ#Ô#×+Ò+ØˆX˜
Ñ" ZÑ/°¸8ñ	ô 	€Að €Hr'   c                 ó¾   — d\  }}d\  }}| dk    r|| z  |z   }t          |¦  «        S || z  |z   }|| z  |z   }||z
  dz  }	|d|	z  z
  }
|	|z  |
z   }t          |¦  «        S )N)gÒúÖT	è?gÁÅ’_þ?)g  w:Â/&?gDèwÌ:Ý?iÌ  g     Àg@g      i@©r—   )r¾   r½   Úa1Úb1Úa2Úb2r£   Úm_200Úm_10ÚarQ   s              r%   rÀ   rÀ   Þ  sŽ   € Ø'�F€BˆØ#�F€Bˆà�tÒÐØ�-Ñ "Ñ$ˆÝ�R‰yŒyÐà�Ñ Ñ#€EØ�Ñ Ñ"€Dà	�‰˜Ñ€AØ�˜‘	Ñ€AØ	
ˆY‰˜Ñ	€Bå�‰9Œ9Ðr'   TÚ
base_shiftÚ	max_shiftc                 óº   — t          j        dd| dz   |¬¦  «        }|r+ t          ||¬¦  «        |¦  «        }t          |d|¦  «        }|                     ¦   «         S )Nr
   r   r   )r±   r³   ry   )r   rÁ   rº   rª   rÂ   )r½   r¾   rL  rM  rÌ   r   rÃ   r£   s           r%   Úget_schedulerO  ï  sj   € õ ”˜q ! Y°¡]¸6ÐBÑBÔB€Ið ð 3à:Õ °	Ð:Ñ:Ô:¸=ÑIÔIˆÝ˜r 3¨	Ñ2Ô2ˆ	à×ÒÑÔÐr'   ç      @rŽ   é€   ÚmodelrR   r5   r7   r9   rÃ   ÚguidancerÍ   r4   r6   r8   rd   r�   r‘   ÚNAGÚvae_scale_factorÚpiflow_substepsÚpiflow_generatorÚpiflow_gm_temperaturec%                 óÈ  ‡ ‡‡‡‡‡
‡‡‡‡‡‡‡R‡S‡T‡U‡V‡W— |||j         d         ||dœŠS|�|‰Sd<   |d k    r |dd d¦  «         |}%t          ‰ dd¦  «        }&d x}'}(d x})x}*}+d\  },}-d }.|�*	 t          |¦  «        }.n# t          t          f$ r d }.Y nw xY wd }/d }0|€d	n|ŠW|��Å|&�s|.d
v �rü‰��[‰�ö‰j         d         dk    rå‰d d …d d…df         }1‰d         |1k    }2|!€E‰|2                              ‰j         d         d‰j         d         ¦  «                             ¦   «         }!|2 }3|3                     ¦   «         rg‰|3                              ‰j         d         d‰j         d         ¦  «        Š‰|3                              ‰j         d         d‰j         d         ¦  «        Šnhd Šd Šnc|j         d         }4|!€ ‰d d …d |4…f                              ¦   «         }!‰j         d         |4k    rd Šd Šn‰d d …|4d …f         Š‰�‰d d …|4d …f         Šddlm	}5 ddddd
œ 
                    |.d¦  «        }6 |5|6¬¦  «        }/d	}d	}|j         d         |j         d         k    rK|                     |j         d         |j         d         |j         d         ¦  «                             ¦   «         }0n|}0|/d u |!€‰�‰                     ¦   «         }!t          j        |!¦  «        }7|d	k     r*t          t          |d d…         ¦  «        d	|z
  z  ¦  «        }-t!          j        t          |d d…         ¦  «        |z  ¦  «        }8|,s7||-         }9|!d	|9z
  z  |7|9z  z   }:|:                     |¦  «        }d }:||-d …         }|&r‘‰d d …d |j         d         …f         };t          |;d                              ¦   «                              ¦   «         dz   ¦  «        }'t          |;d                              ¦   «                              ¦   «         dz   ¦  «        }(t          |¦  «        dz
  }<|d k    r/ddlm}=  |=‰ |t          |%¦  «        ¦  «          |dd d|<¬¦  «         ddlm}> t          j        |j         d         f||j        |j        ¬¦  «        ŠR|&r…t          |¦  «        dk    rrt          j        ||j        t          j        ¬¦  «        })t=          |)d¬¦  «        \  }*}+|$€6t          |¦  «        dz
  }?t?          t'          d|?dz
  z  d¦  «        d	¦  «        }$tA          tC          |d d…         |dd …         ¦  «        ¦  «        D �]¼\  }@\  }A}B|> "                    ‰ |-|@z   ¦  «         |j#        r d S |�!|d	k     r|@|-k    r|,r|Adz  }9|!d	|9z
  z  ||9z  z   }t          j        |j         d         f|A|j        |j        ¬¦  «        ŠVˆRˆˆˆˆˆˆSˆ ˆ
ˆˆˆVˆˆˆfd„}Cd „ }D|/�)|�'|�%|@|<dz
  k     r |/|C|D‰Wd	||!|7‰V|0|||¬!¦  «        }|€ d S  |C|‰W¦  «        \  ŠUŠT‰Ud k    r d S |&�rMtI          ‰UtJ          ¦  «        �r7‰Wdk    rˆTˆUˆWfd"„‰UD ¦   «         ŠUt          ‰ d#d¦  «        }EtM          |d$|'|(¬%¦  «        }FtO          |F|E¬&¦  «         (                    ¦   «         }Gd'„ ‰U )                    ¦   «         D ¦   «         ŠU|)|@                              |j         d         ¦  «        }H|*|@                              |j         d         ¦  «        }ItU          ‰U|G|H¦  «        }J|$�1|@t          |¦  «        dz
  k    r|$d	k     r|J +                    |$¦  «         tY          |G|H|I|"|Jd(¬)¦  «        }G|)|@dz            }K|+|@         }Ld|Kz
  }Mt          j-        |Lt          j.        |L¦  «        ¦  «        sž|#�'|Gj        j/        d*k    rt          j        |G|#¬+¦  «        }Nn&t          j0        |Gj         |Gj        |Gj        ¬¦  «        }N|M|K|Lz  z   |Gz  |Kd|L 1                    ¦   «         z
   2                    d¬,¦  «         3                    ¦   «         z  |Nz  z   }Gti          |G|E¬&¦  «        }FtM          |Fd-¦  «                             |j        ¦  «        }n>‰Wdk    r |D‰U‰T‰W‰V¦  «        ŠU|B|Az
  }O|	�|@t          |¦  «        dz
  k    r|O|	z  }O||O‰Uz  z  }|�&|@|8k     r |B}9|!d	|9z
  z  |7|9z  z   }P|Pd|z
  z  ||z  z   }d }P|�. ||¦  «         5                    dd¦  «        }Q ||@|Qd| ¬.¦  «         �Œ¾|S )/Nr
   )ÚpipelineÚcallbackÚimg_lenÚsiglip_embeddingÚsiglip_embedding_idsrT  r{   TÚpiflowF)Fr   ry   )r   r3   r7  r8  r7  r   r�   )ÚLanPaintr   r8  é
   é   )ÚNStepsrM   rN   )Úupdate_loras_slists)Úoverride_num_inference_steps)Úoffload)r   r   rz   )rU   gš™™™™™¹?iè  rÇ   c                 ó”  •— | }‰
}‰�t          j        |‰fd¬¦  «        }‰�0t          j        |‰fd¬¦  «        }t          j        |‰	fd¬¦  «        }‰r|dk    rK ‰d||‰g‰g‰g‰‰dœ‰¤Žd         }|d k    rdS d }|dk    r! ‰d||‰g‰g‰g‰‰dœ‰¤Žd         }|d k    rdS n! ‰d||‰‰g‰‰g‰‰g‰‰dœ‰¤Ž\  }}|d k    rdS ||fS )Nr{   r\   r
   )rG   rR   Útxt_listÚtxt_ids_listÚy_listrÃ   rS  r   )NNr¶   )r   rb   )ÚlatentsÚ	cfg_scaleÚ	img_inputÚimg_input_idsÚ
noise_predÚneg_noise_predÚguidance_vecrd   r�   r‘   rR   Ú
joint_passÚkwargsrR  r4   r6   r8   Út_vecr5   r7   r9   s         €€€€€€€€€€€€€€€r%   Ú	run_modelzdenoise.<locals>.run_model¥  s¦  ø€ ØˆIØ#ˆMØÐ#Ý!œI y°(Ð&;ÀÐDÑDÔD�	ØÐ'Ý!œI y°,Ð&?ÀQÐGÑGÔG�	Ý %¤	¨=Ð:JÐ*KÐQRÐ SÑ SÔ S�Øð '& ¨a¢ Ø"˜Uð 	Ø!Ø)Ø!˜UØ") Ø˜5Ø#Ø)ð	ð 	ð ð	ð 	ð ô	�
ð  Ò%Ð%Ø%˜:Ø!%�Ø˜q’=�=Ø%* Uð 	&Ø%Ø -Ø") Ø&1 ]Ø '˜yØ"'Ø!-ð	&ð 	&ð !ð	&ð 	&ð ô	&�Nð &¨Ò-Ð-Ø)˜zøà-2¨Uð 	.Ø!Ø)Ø! 7˜^Ø")¨;Ð!7Ø ˜>Ø#Ø)ð	.ð 	.ð ð	.ð 	.Ñ*�
˜Nð  Ò%Ð%Ø%˜:Ø˜~Ð-Ð-r'   c                 ó(   — |dk    r||| |z
  z  z   S | S r§   r¶   )ro  rp  rl  r¥   s       r%   Úcfg_predictionsz denoise.<locals>.cfg_predictions×  s&   € Ø˜1Š}ˆ}Ø%¨	°ZÀ.Ñ5PÑ(QÑQÐQØÐr'   )r   r   rU  c                 óL   •— i | ] }|‰|         ‰‰|         ‰|         z
  z  z   “Œ!S r¶   r¶   )rj   ÚkÚneg_predÚpredÚtrue_cfg_scales     €€€r%   ú
<dictcomp>zdenoise.<locals>.<dictcomp>ó  s7   ø€ Ð`Ð`Ð`ÐVW˜˜8 Aœ;¨¸4À¼7ÀXÈaÄ[Ñ;PÑ)QÑQÐ`Ð`Ð`r'   Úpiflow_patch_sizezb (h w) c -> b c h w)rU   rV   r’   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r¶   rD  )rj   ry  Úvs      r%   r}  zdenoise.<locals>.<dictcomp>ú  s&   € Ð:Ð:Ð:¡T Q¨�A�q—w’w‘y”yÐ:Ð:Ð:r'   rÆ   )r!  r"  rÌ   Úcpu)r   rÈ   zb c h w -> b (h w) c)Úpreview_meta)6rC   ÚgetattrÚintÚ	TypeErrorr˜   r:  ÚcloneÚanyÚshared.lanpaintr`  ÚgetÚexpandÚ
contiguousr   Ú
randn_likerB   r#   r$   rE   r  r'  Úshared.utils.loras_mutipliersrd  Úmmgprf  Úfullr   r   ÚtensorrÉ   rå   rm   r“   ÚzipÚset_step_no_for_loraÚ
_interruptr@   r  r   r>  r—   Úitemsr  r  r5  ÚallcloserÜ   Útyper"   rò   rÊ   ÚsqrtrB  Ú	transpose)XrR  rG   rR   r5   r7   r9   rÃ   rS  Úreal_guidance_scalerÍ   r4   r6   r8   rd   r�   r‘   r]  r^  rT  r[  rZ  Úloras_slistsÚunpack_latentrr  r|   r}   Údenoising_strengthÚmasking_strengthÚ
model_moder   r   rU  r‚  Úoriginal_image_latentsrV  rW  rX  Úoriginal_timestepsÚ	is_piflowÚpiflow_spatial_hÚpiflow_spatial_wÚpiflow_sigmasÚpiflow_sigmas_dstÚpiflow_m_valsÚmorphÚ
first_stepÚmodel_mode_intÚlanpaint_procÚlanpaint_maskÚfirst_tÚ
first_maskÚ	keep_maskÚbase_lenr`  Úlanpaint_stepsr"   Úmasked_stepsÚlatent_noise_factorrk  Úbase_img_idsÚupdated_num_stepsrd  rf  ÚnfeÚiÚt_currÚt_prevru  rw  r   Ú
img_packedÚimg_unpackedrê   Úsigma_t_dstr"  Ú
sigma_t_tor¸   Ú
alpha_t_toÚnoiseÚ	step_sizeÚnoisy_imageÚpreviewrq  rs  rz  r{  rt  r|  sX   ` ````    ``````       `                                                          @@@@@@r%   ÚdenoiserÂ    s5  øøøøøøøøøøøøøøøøøø€ ð\ ØØ”9˜Q”<Ø,Ø 4ðð €Fð €Øˆˆu‰à�4ÒÐØˆ��T˜4Ñ Ô Ð à"ÐÝ˜˜x¨Ñ/Ô/€IØ*.Ð.ÐÐ'Ø8<Ð<€MÐ<Ð%¨à Ñ€Eˆ:Ø€NØÐð	"Ý  ™_œ_ˆNˆNøÝ�:Ð&ð 	"ð 	"ð 	"Ø!ˆNˆNˆNð	"øøøà€MØ€MØ/Ð7�S�SÐ=P€NØÑ"Øñ (	&˜^¨|Ð;Ñ;ØÑ'Ø#Ð/Ð4DÔ4JÈ2Ô4NÐRSÒ4SÐ4SØ.¨q¨q¨q°"°1°"°a¨xÔ8�GØ!1°&Ô!9¸WÒ!D�JØ-Ð5Ø1=¸jÔ1I×1NÒ1NØ(Ô.¨qÔ1°2°|Ô7IÈ"Ô7Mñ2ô 2çš%™'œ'ð /ð ", �IØ —}’}‘”ð 	0Ø'3°IÔ'>×'CÒ'CØ(Ô.¨qÔ1°2°|Ô7IÈ"Ô7Mñ(ô (˜ð ,<¸IÔ+F×+KÒ+KØ,Ô2°1Ô5°rÐ;KÔ;QÐRTÔ;Uñ,ô ,Ð(Ð(ð (,˜Ø+/Ð(Ð(à"œy¨œ|�HØ-Ð5Ø1=¸a¸a¸aÀÀ(À¸lÔ1K×1QÒ1QÑ1SÔ1SÐ.Ø#Ô)¨!Ô,°Ò8Ð8Ø'+˜Ø+/Ð(Ð(à'3°A°A°A°x°y°y°LÔ'A˜Ø+Ð7Ø/?ÀÀÀÀ8À9À9ÀÔ/MÐ,Ø0Ð0Ð0Ð0Ð0Ð0Ø!" q¨R°BÐ7Ð7×;Ò;¸NÈAÑNÔNˆNØ$˜H¨NÐ;Ñ;Ô;ˆMØ!$ÐØ"ÐØÔ$ RÔ(¨C¬I°b¬MÒ9Ð9Ø /× 6Ò 6°s´yÀ´|ÀSÄYÈqÄ\ÐSVÔS\Ð]^ÔS_Ñ `Ô `× kÒ kÑ mÔ m��à /�Ø Ð%Ð%Ø!Ð)¨lÐ.FØ%1×%7Ò%7Ñ%9Ô%9Ð"ÝÔ Ð!7Ñ8Ô8ˆØ Ò"Ð"Ý�S ¨3¨B¨3¤Ñ0Ô0°BÐ9KÑ4KÑLÑMÔMˆJÝ”y¥ Y¨s°¨s¤^Ñ!4Ô!4Ð7GÑ!GÑHÔHˆØð 	/Ø"+¨JÔ"7ÐØ-°#Ð8KÑ2KÑLÈuÐWjÑOjÑjˆGØ—*’*˜S‘/”/ˆCØˆGØ! * + +Ô.ˆIð ð FØ˜q˜q˜q - 3¤9¨Q¤< -Ð/Ô0ˆÝ˜|¨FÔ3×7Ò7Ñ9Ô9×>Ò>Ñ@Ô@À1ÑDÑEÔEÐÝ˜|¨FÔ3×7Ò7Ñ9Ô9×>Ò>Ñ@Ô@À1ÑDÑEÔEÐå˜9‘~”~ qÑ(ÐØ�4ÒÐØEÐEÐEÐEÐEÐEØÐ˜E <µÐ5GÑ1HÔ1HÑIÔIÐIØˆ��T˜4Ð@QÐRÑRÔRÐRØÐÐÐÐÐå”:˜sœy¨œ|˜o¨xÀÄ
ÐRUÔR[Ð\Ñ\Ô\€LØð H•S˜‘^”^ aÒ'Ð'Ýœ Y°s´zÍÌÐWÑWÔWˆÝ+MØ˜Sð,
ñ ,
ô ,
Ñ(Ð˜=ð !Ð(Ý�i‘.”. 1Ñ$ˆCÝ$'­¨C°3¸±7©O¸SÑ(AÔ(AÀ3Ñ$GÔ$GÐ!å(­¨Y°s¸°s¬^¸YÀqÀrÀr¼]Ñ)KÔ)KÑLÔLð TCñ TCÑˆÑˆF�FØ×$Ò$ U¨J¸!©OÑ<Ô<Ð<ØÔð 	Ø�4�4àÐ&Ð+=¸rÒ+AÐ+AÀaÈ:ÂoÀoÐZ_ÀoØ"(¨¡+ÐØ)¨cÐ4GÑ.GÑHÈ3ÐQdÑKdÑdˆCå”
˜CœI aœL˜?¨F¸#¼)ÈCÌJÐWÑWÔWˆð0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ð 0	.ðd	ð 	ð 	ð
 Ð$¨Ð);ÀÐ@QÐVWÐZkÐnoÑZoÒVoÐVoØ�-ØØØØØØ&ØØØØØØ!1ðñ ô ˆCð ˆ{Ø�t�tà"˜ 3¨Ñ7Ô7‰ˆˆhØ�4Š<ˆ<   àñ 2	$� D­$Ñ/Ô/ñ 2	$Ø Ò!Ð!Ø`Ð`Ð`Ð`Ð`Ð`Ð[_Ð`Ñ`Ô`�å  Ð(;¸QÑ?Ô?ˆJÝ"ØÐ+Ð/?ÐCSðñ ô ˆJõ 2°*ÈÐTÑTÔT×ZÒZÑ\Ô\ˆLØ:Ð:¨T¯ZªZ©\¬\Ð:Ñ:Ô:ˆDà'¨Ô*×1Ò1°#´)¸A´,Ñ?Ô?ˆKØ+¨AÔ.×5Ò5°c´iÀ´lÑCÔCˆKÝ" 4¨°{ÑCÔCˆFà%Ð1Ø�˜Y™œ¨!Ñ+Ò+Ð+Ø)¨CÒ/Ð/à×#Ò#Ð$9Ñ:Ô:Ð:Ý*ØØØØ.ØØðñ ô ˆLð ' q¨1¡uÔ-ˆJØ˜aÔ ˆAØ˜Z™ˆJÝ”> !¥U¤_°QÑ%7Ô%7Ñ8Ô8ð .Ø#Ð/°LÔ4GÔ4LÐPUÒ4UÐ4UÝ!Ô,¨\ÐEUÐVÑVÔV�E�Eå!œK¨Ô(:À<ÔCVÐ^jÔ^pÐqÑqÔq�EØ *¨Z¸!©^Ñ ;¸|ÑKÈjØ˜Ÿš™
œ
‘Nß’%˜A�%‘,”,Ÿtšt™vœvñO&à(-ñO.ñ  .�õ .¨lÀzÐRÑRÔRˆJÝ˜JÐ(>Ñ?Ô?×BÒBÀ3Ä9ÑMÔMˆCˆCà Ò!Ð!Ø&� t¨X°~ÀuÑMÔM�à ™ˆIØ$Ð0°Q½#¸i¹.¼.È1Ñ:LÒ5LÐ5LØ%Ð(=Ñ=�	Ø�9˜tÑ#Ñ#ˆCàÐ&¨1¨|Ò+;Ð+;Ø"(Ðà1°cÐ<OÑ6OÑPÐSXÐ[nÑSnÑnˆKØ 1 _Ñ#4Ñ5¸È3Ñ9NÑNˆCØˆKàÐØ#�m CÑ(Ô(×2Ò2°1°QÑ7Ô7ˆGØˆH�Q˜ °\ÐBÑBÔBÐBùð €Js   Á'A7 Á7BÂBÚdÚpe©rÃ  rU   rV   Úoc                 ó  ‡ ‡— |dv sJ ‚|d k    rg }|
s't          |¦  «        D ]\  }}t          |¦  «        ||<   Œˆ ˆfd„|D ¦   «         }t          |||‰t          j        |¬¦  «        }|j        \  }}}}t          |d||¬¦  «        }|j        d         dk    r|dk    rt          |d|¬	¦  «        }t          j        ||z  ||z  d
|j	        ¬¦  «        }|d         t          j
        ||z  |j	        ¬¦  «        d d …d f         z   |d<   |d         t          j
        ||z  |j	        ¬¦  «        d d d …f         z   |d<   t          |d|¬¦  «        }d x}}|rdx}}n
||z  ||z  }}t          |¦  «        D �]y\  }}|j        \  }}}}t          |ddd¬¦  «        }|j        d         dk    r|dk    rt          |d|¬	¦  «        }t          j        |dz  |dz  d
|j	        ¬¦  «        }|	r|dz   |d<   |dv r|nd}|dv r|nd}|d         t          j
        |dz  |j	        ¬¦  «        d d …d f         z   |z   |d<   |d         t          j
        |dz  |j	        ¬¦  «        d d d …f         z   |z   |d<   t          |d|¬¦  «        }|€d|z  }|€d|z  }|                     ‰¦  «        }|dk    r||}}n0t          j        ||gd¬¦  «        t          j        ||gd¬¦  «        }}||dz  z  }||dz  z  }�Œ{||                     |j	        ¦  «        ||dœ||fS )NrÅ  c                 ó  •— g | ]}}‰                      t          j        |¦  «        d z  dz
                       d¦  «                             ‰t
          j        ¦  «        ¦  «                             t
          j        ¦  «        ‘Œ~S )g       @ry   r   )r™   ÚTVFÚ	to_tensorr‚   rE   r   rÉ   ra   )rj   Úref_imgr‹   r   s     €€r%   ú
<listcomp>z$prepare_multi_ip.<locals>.<listcomp>K  s}   ø€ ð ð ð ð ð 	�	Š	ÝŒ]˜7Ñ#Ô# cÑ)¨CÑ/ßŠY�q‰\Œ\ßŠR��œÑ&Ô&ñ	
ô 	
÷ Š"�UŒ^Ñ
Ô
ðð ð r'   )r   r   r   rI   rJ   r   r
   r1   r2   r3   r   rM   rN   rO   rP   r   r�   >   rÃ  rU   >   rÃ  rV   rŽ   r\   )rG   rR   r�   r‘   )r“   rt   r&   r   ra   rC   r   r   rD   r   rS   rE   rb   ) r‹   rŒ   r   r   r„   r…   r+   rÄ  Úconditions_zero_startÚset_cond_indexr›   r   r¶  rd   Úref_imgsrG   rT   rU   rV   rR   r�   r‘   Ú
pe_shift_wÚ
pe_shift_hrž   rË  rc   Úref_h1Úref_w1Úref_img_ids1Úh_offsetÚw_offsets    `  `                            r%   Úprepare_multi_ipr×  3  sA  øø€ ð  Ð%Ð%Ð%Ð%Ð%à˜ÒÐ¨b˜màð 4Ý$ ]Ñ3Ô3ð 	4ð 	4‰KˆAˆxÝ)¨(Ñ3Ô3ˆM˜!ÑÐðð ð ð ð ð %ðñ ô €Hõ �R˜¨¸VÍ5Ì>Ð`dÐ
eÑ
eÔ
e€CØ”)�K€Bˆˆ1ˆaå
�CÐAÀjÐU_Ð
`Ñ
`Ô
`€CØ
„y�„|�qÒÐ˜R !šV˜VÝ�SÐ+°Ð3Ñ3Ô3ˆåŒk˜!˜z™/¨1°
©?¸AÀcÄjÐQÑQÔQ€GØ˜f”o­¬°Q¸*±_ÈSÌZÐ(XÑ(XÔ(XÐYZÐYZÐYZÐ\`ÐY`Ô(aÑa€GˆF�OØ˜f”o­¬°Q¸*±_ÈSÌZÐ(XÑ(XÔ(XÐY]Ð_`Ð_`Ð_`ÐY`Ô(aÑa€GˆF�OÝ�WÐ2°bÐ9Ñ9Ô9€GØ&*Ð*€LÐ#Øð BØ"#Ð#ˆ
�Z�Zà!" j¡°!°z±/�Jˆ
Ý% hÑ/Ô/ð !"ñ !"Ñˆ�Ø&œ}Ñˆˆ1ˆf�fÝØÐ=À!Èð
ñ 
ô 
ˆð Œ=˜Ô˜qÒ Ð  R¨!¢V VÝ˜WÐ&7¸BÐ?Ñ?Ô?ˆGÝ”{ 6¨Q¡;°¸!±¸QÀwÄ~ÐVÑVÔVˆØð 	/Ø#*¨Q¡;ˆL˜Ñ Ø!# zÐ!1Ð!1�:�:°qˆØ!# zÐ!1Ð!1�:�:°qˆà˜Ô ¥5¤<°¸!±ÀGÄNÐ#SÑ#SÔ#SÐTUÐTUÐTUÐW[ÐT[Ô#\Ñ\Ð_gÑgð 	�VÑð ˜Ô ¥5¤<°¸!±ÀGÄNÐ#SÑ#SÔ#SÐTXÐZ[ÐZ[ÐZ[ÐT[Ô#\Ñ\Ð_gÑgð 	�VÑõ ˜lÐ,@ÀBÐGÑGÔGˆàÐØ˜v™:ˆLØÐ Ø ™JˆMØ#—’ vÑ.Ô.ˆØ�aŠ<ˆ<Ø.5°|Ð*ˆLˆLå/4¬y¸,ÈÐ9PÐVWÐ/XÑ/XÔ/XÕZ_ÔZcÐeuð  xDð  eEð  KLð  [Mñ  [Mô  [MÐ*ˆLð 	�f ‘kÑ!ˆ
Ø�f ‘kÑ!ˆ
‰
ð Ø—:’:˜cœjÑ)Ô)Ø$Ø,ð	ð ð
 �lð#ð #r'   c           	      ó€   — t          | dt          j        |dz  ¦  «        t          j        |dz  ¦  «        dd¬¦  «        S )Nz&b (h w) (c ph pw) -> b c (h ph) (w pw)r   r   )rU   rV   rK   rL   )r   r#   r$   )r·   r   r   s      r%   ÚunpackrÙ  �  sG   € ÝØ	Ø0Ý
Œ)�F˜R‘KÑ
 Ô
 Ý
Œ)�E˜B‘JÑ
Ô
ØØðñ ô ð r'   c                 ób   — |                       dd¦  «        }t          j        |||f||¬¦  «        S )Nr
   r   )Úoutput_sizeÚkernel_sizeÚstride)r˜  ÚFÚfold)r·   r   r   r   Útokenss        r%   Úpatches_to_imagerá  š  s>   € Ø�[Š[˜˜AÑÔ€FÝŒ6ØØ˜U�OØØð	ñ ô ð r'   )Fr(   )r   )NNr
   N)r¬   r­   r®   r¯   )rz   rÙ   )r­   r¯   TN)rP  NNNNNNNNNNNNNNNFNNr
   r
   NNNrŽ   NNrQ  NN)NNr
   rÃ  FFTr   )FÚshared.utils.phase_progressr   r#   Útypingr   r   Únumpyr”   r   Útorch.nn.functionalÚnnÚ
functionalrÞ  Úeinopsr   r   ÚPILr   r	   rR  r   Úmodules.autoencoderr   Úmodules.conditionerr   Úmodules.image_embeddersr   r   r   Úutilr   Ú!torchvision.transforms.functionalÚ
transformsrÉ  r„  r   r   r&   rA   r:   Úboolr  rF   rW   re   rt   r‰   Útupler¢   r—   rª   rº   r¼   rÄ   rÒ   rÕ   rØ   rå   rÿ   r  r5  r>  rB  rÀ   rO  r    rÂ  r×  rÙ  rá  r¶   r'   r%   ú<module>rò     sK
  ðØ >Ð >Ð >Ð >Ð >Ð >Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø +Ð +Ð +Ð +Ð +Ð +Ø \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ø .Ð .Ð .Ð .Ð .Ð .Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ð Øð ð  ð  Øð àð ð ð ð ŒLð	 ð
 Œ;ð ð ð ð ð ð ð ð  ð  ð  ðF
ð 
�zð 
¨ð 
¸ð 
ÀcÈDÐQTÌIÁoð 
Ð\`ð 
Ðruð 
ð  DHð  ILð  NTð  ITô  DUð 
ð 
ð 
ð 
ð.ð �Vð ¨ð °T¸#¸v¸+Ô5Fð ð ð ð ð*/Øð/à
ð/ð 
ð/ð �$�s”)‰Oð	/ð
 ð/ð ð/ð 
ˆ#ˆvˆ+Ôð/ð /ð /ð /ðbð ð ðð ð ð&  $Ø $ØØðT4ð ØðT4ð T4ð T4Ø�dÑðT4àðT4ð ðT4ð ŒLð	T4ð
 ˜‘*ðT4ð ˜‘:ðT4ð 	ðT4ð ðT4ð ðT4ð ˆ4��V�Ô˜c 3Ð&Ô'ðT4ð T4ð T4ð T4ðn@�5ð @ ð @¨6ð @ð @ð @ð @ð
 EIðð ØðØðØ*/ðØ<Aðàˆuˆg�uˆnÔðð ð ð ð@ &ð @¨eð @¸Eð @Àfð @ð @ð @ð @ð #ð °cð À5Ä<ð ÐTXÐY^ÔT_ð ð ð ð ð Cð ¸ð ÀUÄ\ð ÐVZÐ[`ÔVað ð ð ð ð"5 ð 5¨uð 5¸ð 5ð 5ð 5ð 5ð5 Fð 5°5ð 5¸Vð 5ð 5ð 5ð 5ð
 26ðð ØðØðØ).ðà
ˆ6�6ˆ>Ôðð ð ð ð8 ØØð!5ð !5ð !5Øð!5àð!5ð ð!5ð 
ð	!5ð
 ð!5ð ð!5ð ð!5ð 
ð!5ð ð!5ð ð!5ð ð!5ð !5ð !5ð !5ðH34ð 34ð 34ð 34ð 34ñ 34ô 34ð 34ðz ð#ð #ð #Øð#àð#ð ð#ð ð	#ð
 ð#ð ð#ð ð#ð #ð #ð #ðLð ˜fð °#ð ¸fð ð ð ð ðð ˜Fð °ð ¸Fð ð ð ð ð¨ð ¸ð Àð ð ð ð ð( ØØØðð Øðàðð ðð ð	ð
 ðð ŒLðð 
ˆ%„[ðð ð ð ð< ØØ*.àØØØ"à"&Ø&*ØØØØØØØØØØØØØØØØØØ!àØ/3Ø*.ðUnð nØðnð 
ðnð ð	nð
 
ðnð ðnð 
ðnð �EŒ{ðnð ðnð ! 4™<ðnð ðnð ðnð  ð!nð" �t‰mð#nð& ˜4‘-ð'nð( ˜t‘mð)nð. 
�‰ð/nðD �$‰JðEnðF �‰:ðGnðH ðInðP ðQnðR ”o¨Ñ,ðSnðT ! 4™<ðUnð nð nð nðj	  $Ø $ØØ&)Ø!ØØØðY#ð Y#ØðY#àðY#ð ðY#ð ŒLð	Y#ð
 ˜‘*ðY#ð ˜‘:ðY#ð 	ðY#ð 	Ð"Ô#ðY#ð ðY#ð 
ˆ#ˆvˆ+ÔðY#ð Y#ð Y#ð Y#ðxˆfð ˜cð ¨#ð °&ð ð ð ð ð˜ð ¨ð °Cð ÀSð ÈVð ð ð ð ð ð r'   