§
    ‚+j«	  ã                   óž   — d dl Zd dlZd dlmZ d dlmZmZ d„ Zg d¢g d¢g d¢dœZ	 G d	„ d
ej
        ¦  «        Z G d„ de¦  «        Zdefd„ZdS )é    N)Úoverride)ÚComfyExtensionÚioc                 ó<  — t          j        ddt          | ¦  «        ¦  «        }t          j        | ddd…         ¦  «        }t          j        dd|¦  «        }t          j        |||¦  «        }t          j        |¦  «        ddd…                              ¦   «         }|S )zS
    Performs log-linear interpolation of a given array of decreasing numbers.
    r   é   Néÿÿÿÿ)ÚnpÚlinspaceÚlenÚlogÚinterpÚexpÚcopy)Út_stepsÚ	num_stepsÚxsÚysÚnew_xsÚnew_ysÚinterped_yss          ú?/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_optimalsteps.pyÚloglinear_interpr   
   s†   € õ 
ŒQ˜3˜w™<œ<Ñ	(Ô	(€BÝ	Œ˜˜˜"˜”Ñ	Ô	€BåŒ[˜˜A˜yÑ)Ô)€FÝŒYv˜r 2Ñ&Ô&€Få”&˜‘.”.   2 Ô&×+Ò+Ñ-Ô-€KØÐó    )g½ãÉåï?gQkšwœ¢ï?g$(~Œ¹kï?ç333333ï?g¶óýÔxéî?gÊTÁ¨¤Nî?gX¨5Í;Ní?g?ÆÜµ„ê?g3Ä±.n£á?gà- øÑ?çü©ñÒMbP?)ç      ð?g•C‹lçï?g×£p=
×ï?g-²ï§Æï?gƒÀÊ¡E¶ï?gÙÎ÷Sã¥ï?g/Ý$•ï?ç…ëQ¸…ï?g\Âõ(\ï?r   ç‰A`åÐ"ï?ç`åÐ"Ûùî?g¸…ëQ¸î?gƒÀÊ¡Eî?gD‹lçû©í?gw¾Ÿ/Ýì?gÙÎ÷Sã¥ë?g¢E¶óýÔè?gsh‘í|?á?g9´Èv¾ŸÊ?r   ))gX9´Èv¾ï?g®Gáz®ï?gV-²ï?r   g•C‹lï?g²ï§ÆKï?r   r   g—nƒÀî?gåÐ"Ûù~î?g“V-î?g˜nƒÀÊí?gòÒMbXí?gÍÌÌÌÌÌì?gþÔxé&1ì?gÛù~j¼të?g9´Èv¾Ÿê?gD‹lçû©é?gÏ÷Sã¥›è?g1¬Zdç?g®Gázæ?gyé&1¬ä?g^ºI+ã?gš™™™™™á?gÕxé&1à?gw¾Ÿ/ÝÜ?gî|?5^ºÙ?g¸…ëQ¸Ö?g•C‹lçÓ?gHáz®GÑ?gV-²Í?gF¶óýÔxÉ?goƒÀÊ¡Å?gçû©ñÒMÂ?g¸…ëQ¸¾?gB`åÐ"Û¹?g/Ý$µ?gìQ¸…ë±?gV-²­?gú~j¼t“¨?r   ©ÚFLUXÚWanÚChromac                   óJ   — e Zd Zed„ ¦   «         Zedej        fd„¦   «         ZdS )ÚOptimalStepsSchedulerc                 ó:  — t          j        ddt           j                             dg d¢¬¦  «        t           j                             dddd	¬
¦  «        t           j                             ddddd¬¦  «        gt           j                             ¦   «         g¬¦  «        S )Nr%   zmodel/sampling/schedulersÚ
model_typer    )ÚoptionsÚstepsé   é   iè  )ÚdefaultÚminÚmaxÚdenoiser   ç        g{®Gáz„?)r,   r-   r.   Ústep)Únode_idÚcategoryÚinputsÚoutputs)r   ÚSchemaÚComboÚInputÚIntÚFloatÚSigmasÚOutput)Úclss    r   Údefine_schemaz#OptimalStepsScheduler.define_schema   sŽ   € åŒyØ+Ø0å”—’˜|Ð5NÐ5NÐ5NÑOÔOÝ”—’˜W¨b°a¸TÑBÔBÝ”—’˜y°#¸3ÀCÈdÑSÔSðõ ”	× Ò Ñ"Ô"ðð
ñ 
ô 
ð 	
r   Úreturnc                 ó|  — |}|dk     r>|dk    r&t          j        t          j        g ¦  «        ¦  «        S t	          ||z  ¦  «        }t
          |         d d …         }|dz   t          |¦  «        k    rt          ||dz   ¦  «        }||dz    d …         }d|d<   t          j        t          j        |¦  «        ¦  «        S )Nr   r0   r   r   r   )r   Ú
NodeOutputÚtorchÚFloatTensorÚroundÚNOISE_LEVELSr   r   )r=   r'   r)   r/   Útotal_stepsÚsigmass         r   ÚexecutezOptimalStepsScheduler.execute-   s»   € àˆØSŠ=ˆ=Ø˜#Š~ˆ~Ý”}¥UÔ%6°rÑ%:Ô%:Ñ;Ô;Ð;Ý ¨¡Ñ0Ô0ˆKå˜jÔ)¨!¨!¨!Ô,ˆØA‰I#˜f™+œ+Ò%Ð%Ý% f¨e°a©iÑ8Ô8ˆFà˜+¨™/Ð*Ð+Ð+Ô,ˆØˆˆr‰
ÝŒ}UÔ.¨vÑ6Ô6Ñ7Ô7Ð7r   N)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr>   r   rA   rH   © r   r   r%   r%      sV   € € € € € Øð
ð 
ñ „[ð
ð ð8°2´=ð 8ð 8ð 8ñ „[ð8ð 8ð 8r   r%   c                   óL   — e Zd Zedeeej                          fd„¦   «         ZdS )ÚOptimalStepsExtensionr?   c              ƒ   ó   K  — t           gS ©N)r%   )Úselfs    r   Úget_node_listz#OptimalStepsExtension.get_node_list?   s   è è € õ "ð
ð 	
r   N)	rI   rJ   rK   r   ÚlistÚtyper   Ú	ComfyNoderS   rM   r   r   rO   rO   >   sE   € € € € € Øð
 T¨$¨r¬|Ô*<Ô%=ð 
ð 
ð 
ñ „Xð
ð 
ð 
r   rO   r?   c               ƒ   ó"   K  — t          ¦   «         S rQ   )rO   rM   r   r   Úcomfy_entrypointrX   F   s   è è € Ý Ñ"Ô"Ð"r   )Únumpyr	   rB   Útyping_extensionsr   Úcomfy_api.latestr   r   r   rE   rV   r%   rO   rX   rM   r   r   ú<module>r\      s  ðð Ð Ð Ð Ø €€€à &Ð &Ð &Ð &Ð &Ð &Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðð ð ð nÐmÐmð Vð  Vð  Vð bð  bð  bðð €ð
8ð 8ð 8ð 8ð 8˜BœLñ 8ô 8ð 8ðB
ð 
ð 
ð 
ð 
˜Nñ 
ô 
ð 
ð#Ð 5ð #ð #ð #ð #ð #ð #r   