
    +j                         S SK Jr  S SKrS SKJrJr  S r " S S\R                  5      r " S S\R                  5      r	 " S	 S
\5      r
S\
4S jrg)    )overrideN)ComfyExtensionioc                 T   U R                  U R                  S   S5      nUR                  UR                  S   S5      n[        R                  " X#-  SSS9n[        R                  " US-  SSS9S-   nXE-  nUR                  U R                  S   /S/U R                  S-
  -  -   5      $ )Nr      Tdimkeepdim   :0yE>)reshapeshapetorchsumndim)positivenegativepositive_flatnegative_flatdot_productsquared_normst_stars          6/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_cfg.pyoptimized_scaler   	   s    $$X^^A%6;M$$X^^A%6;M ))M9q$OK 99]a/QELL (G??HNN1-.!8I1JJKK    c                   l    \ rS rSr\S\R                  4S j5       r\S\R                  4S j5       r	Sr
g)CFGZeroStar   returnc           	          [         R                  " SS[         R                  R                  S5      /[         R                  R	                  SS9/S9$ )Nr   advanced/guidancemodelpatched_modeldisplay_name)node_idcategoryinputsoutputs)r   SchemaModelInputOutputclss    r   define_schemaCFGZeroStar.define_schema   sE    yy!(w' XX__/_BC
 	
r   c                 v    UR                  5       nS nUR                  U5        [        R                  " U5      $ )Nc                 ~    U S   nU S   nU S   nU S   nU S   n[        X#-
  X$-
  5      nXTUS-
  -  -   X-  SU-
  -  -   $ )N
cond_scaleinputcond_denoiseduncond_denoiseddenoised      ?)r   )argsguidance_scalexcond_puncond_poutalphas          r   cfg_zero_star*CFGZeroStar.execute.<locals>.cfg_zero_star'   sj    !,/NWA/*F-.Hz"C#AJ=EUS[11^5NRUX]R]5^^^r   )clone#set_model_sampler_post_cfg_functionr   
NodeOutput)r0   r#   mrB   s       r   executeCFGZeroStar.execute$   s2    KKM	_ 	
--m<}}Qr    N__name__
__module____qualname____firstlineno__classmethodr   r+   r1   rF   rH   __static_attributes__rJ   r   r   r   r      s>    
bii 
 
  r}}    r   r   c                   p    \ rS rSr\S\R                  4S j5       r\SS\R                  4S jj5       r	Sr
g)CFGNorm3   r    c                 $   [         R                  " SS[         R                  R                  S5      [         R                  R                  SSSSSS	9[         R
                  R                  S
SSSS9/[         R                  R                  SS9/SS9$ )NrS   r"   r#   strengthr:           g      Y@g{Gz?)defaultminmaxsteppre_cfgFTzIf true, rescale the combined noise BEFORE the sampler's CFG combine, without clamping (can amplify). Matches the norm-scaled CFG used by models like Lens. Default false keeps the original post-CFG x0-space attenuate-only behavior.)rX   optionaltooltipr$   r%   )r'   r(   r)   r*   is_experimental)r   r+   r,   r-   FloatBooleanr.   r/   s    r   r1   CFGNorm.define_schema4   s    yy(w'z3CUQUV

  !!3 ! 
 XX__/_BC '
 	
r   c                    ^ UR                  5       nU(       a  U4S jnUR                  U5        OU4S jnUR                  U5        [        R                  " U5      $ )Nc                 d  > U S   nU S   nU S   nX#X-
  -  -   n[         R                  R                  USSS9n[         R                  R                  USSS9n[         R                  " US:  XVR	                  S5      -  [         R
                  " U5      5      nXG-  nT	S	:w  a  T	U-  S	T	-
  U-  -   nU$ )
Nconduncondr5   r   Tr	   r   g-q=r:   )r   linalgvector_normwhere	clamp_min	ones_like)
r;   re   rf   r5   comb	cond_norm	comb_normrescalerescaledrV   s
            r   cfg_norm_pre%CFGNorm.execute.<locals>.cfg_norm_preP   s    F|h!,/
dm <<!LL44Tq$4O	!LL44Tq$4O	++M 3 3E ::OOI.
  >s?'(2cHn5LLHr   c                    > U S   nU S   n[         R                  " USSS9n[         R                  " USSS9nX4S-   -  R                  SSS	9nX%-  T-  $ )
Nr7   r9   r   Tr	   r   rW   r:   )rY   rZ   )r   normclamp)r;   r>   
pred_text_norm_full_condnorm_pred_textscalerV   s         r   cfg_norm!CFGNorm.execute.<locals>.cfg_normc   sg    o.!*-
!&F4!H!&JAt!L'D+@AHHSVYHZ!)H44r   )rD   set_model_sampler_cfg_functionrE   r   rF   )r0   r#   rV   r\   rG   rq   rz   s     `    r   rH   CFGNorm.executeL   sJ    KKM " ,,\:5 11(;}}Qr   rJ   N)FrK   rJ   r   r   rS   rS   3   s>    
bii 
 
.         r   rS   c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)CfgExtensionp   r    c                 "   #    [         [        /$ 7fN)r   rS   )selfs    r   get_node_listCfgExtension.get_node_listq   s      
 	
s   rJ   N)rL   rM   rN   rO   r   listtyper   	ComfyNoder   rQ   rJ   r   r   r   r   p   s)    
T$r||*<%= 
 
r   r   r    c                     #    [        5       $ 7fr   )r   rJ   r   r   comfy_entrypointr   y   s     >s   )typing_extensionsr   r   comfy_api.latestr   r   r   r   r   rS   r   r   rJ   r   r   <module>r      sM    &  /L ",,  6: bll : z
> 
 r   