
    
3j4              
       0   S SK r S SKJr  S SKrS SKJr  S SKJs  Jr  S SK	J
r
  SSKJrJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SrSr " S S\R@                  5      r! " S S5      r" " S S\R@                  5      r#S\RH                  S\RH                  S\RH                  S\%S\RH                  4
S jr&\ " S S\R@                  5      5       r' " S S 5      r(\ " S! S"\R@                  5      5       r) " S# S$\\\\5      r*g)%    N)Literal)pad_sequence   )ConfigMixinregister_to_config)PeftAdapterMixin)FromOriginalModelMixin)	Attention)RMSNorm)maybe_allow_in_graph   )dispatch_attention_fn)zero_module)
ModelMixin       c                   F   ^  \ rS rSrSU 4S jjr\SS j5       rS rSrU =r	$ )TimestepEmbedder'   c           
         > [         TU ]  5         Uc  Un[        R                  " [        R                  " X2SS9[        R
                  " 5       [        R                  " X!SS95      U l        X0l        g )NTbias)super__init__nn
SequentialLinearSiLUmlpfrequency_embedding_size)selfout_sizemid_sizer    	__class__s       i/home/wildlama/miniconda3/lib/python3.13/site-packages/diffusers/models/controlnets/controlnet_z_image.pyr   TimestepEmbedder.__init__(   sX    H==II.tDGGIIIht4
 )A%    c                 r   [         R                  R                  SSS9   US-  n[         R                  " [        R
                  " U5      * [         R                  " SU[         R                  U R                  S9-  U-  5      nU S S 2S 4   R                  5       US    -  n[         R                  " [         R                  " U5      [         R                  " U5      /SS9nUS-  (       a4  [         R                  " U[         R                  " US S 2S S	24   5      /SS9nUsS S S 5        $ ! , (       d  f       g = f)
NcudaFenabledr   r   )startenddtypedevicedim   )torchampautocastexpmathlogarangefloat32r/   floatcatcossin
zeros_like)tr2   
max_periodhalffreqsargs	embeddings          r%   timestep_embedding#TimestepEmbedder.timestep_embedding4   s    YY6!8DII*%%1$emmdedldl(mmpttE QW:##%d3D		599T?EIIdO"D"MIQw!IIy%2B2B9QPRQRPRUCS2T&U[]^	 766s   C?D((
D6c                 F   U R                  XR                  5      nU R                  S   R                  R                  n[        U R                  S   SS 5      nUR                  (       a  UR                  U5      nOUb  UR                  U5      nU R                  U5      nU$ )Nr   compute_dtype)rG   r    r   weightr.   getattris_floating_pointto)r!   rA   t_freqweight_dtyperJ   t_embs         r%   forwardTimestepEmbedder.forwardA   s    ((,I,IJxx{))//_dC))YY|,F&YY}-F r'   )r    r   )Nr   )i'  )
__name__
__module____qualname____firstlineno__r   staticmethodrG   rR   __static_attributes____classcell__r$   s   @r%   r   r   '   s'    
A 
 
	 	r'   r   c                       \ rS rSrSrSrSrS r   SS\S\	R                  S\	R                  S-  S\	R                  S-  S	\	R                  S-  S
\	R                  4S jjrSrg)ZSingleStreamAttnProcessorN   z
Processor for Z-Image single stream attention that adapts the existing Attention class to match the behavior of the
original Z-ImageAttention module.
Nc                 D    [        [        S5      (       d  [        S5      eg )Nscaled_dot_product_attentionzlZSingleStreamAttnProcessor requires PyTorch 2.0. To use it, please upgrade PyTorch to version 2.0 or higher.)hasattrFImportError)r!   s    r%   r   #ZSingleStreamAttnProcessor.__init__W   s%    q899~  :r'   attnhidden_statesencoder_hidden_statesattention_mask	freqs_cisreturnc                    UR                  U5      nUR                  U5      nUR                  U5      nUR                  SUR                  S45      nUR                  SUR                  S45      nUR                  SUR                  S45      nUR
                  b  UR                  U5      nUR                  b  UR                  U5      nS[        R                  S[        R                  S[        R                  4S jn	Ub  U	" Xe5      nU	" Xu5      nUR                  n
UR                  U
5      UR                  U
5      pvUb  UR                  S:X  a  US S 2S S S S 24   n[        UUUUSSU R                  U R                  S	9nUR                  SS
5      nUR                  U
5      nUR                   S   " U5      n[#        UR                   5      S:  a  UR                   S   " U5      nU$ )Nr0   x_inri   rj   c           	         [         R                  R                  SSS9   [         R                  " U R	                  5       R
                  " / U R                  S S QSPSP76 5      nUR                  S5      n[         R                  " X!-  5      R                  S5      nUR                  U 5      sS S S 5        $ ! , (       d  f       g = f)Nr)   Fr*   r0   r   r   )r4   r5   r6   view_as_complexr<   reshapeshape	unsqueezeview_as_realflattentype_as)rl   ri   xx_outs       r%   apply_rotary_emb=ZSingleStreamAttnProcessor.__call__.<locals>.apply_rotary_embt   s    ##FE#:))$**,*>*>*W

3B*WQS*WUV*WX%//2	**1=9AA!D}}T*	 ;::s   BB77
Cr           F)	attn_mask	dropout_p	is_causalbackendparallel_configr   r   r3   )to_qto_kto_v	unflattenheadsnorm_qnorm_kr4   Tensorr.   rN   ndimr   _attention_backend_parallel_configrs   to_outlen)r!   re   rf   rg   rh   ri   querykeyvaluerw   r.   outputs               r%   __call__#ZSingleStreamAttnProcessor.__call__]   s    		-(ii&		-(TZZ$45mmBR 01TZZ$45 ;;"KK&E;;"++c"C	+5<< 	+ELL 	+U\\ 	+  $U6E"32C XXe_cffUms %.*=*=*B+AtT1,<=N .$++ 11	
 &--a3%((/Q.t{{a[[^F+Fr'    )NNN)rT   rU   rV   rW   __doc__r   r   r   r
   r4   r   r   rY   r   r'   r%   r]   r]   N   s    
  6:.2)->> ||>  %||d2	>
 t+> <<$&> 
> >r'   r]   c                   @   ^  \ rS rSrS\S\4U 4S jjrS rS rSrU =r	$ )FeedForward   r2   
hidden_dimc                    > [         TU ]  5         [        R                  " XSS9U l        [        R                  " X!SS9U l        [        R                  " XSS9U l        g )NFr   )r   r   r   r   w1w2w3)r!   r2   r   r$   s      r%   r   FeedForward.__init__   sD    ))C%8))J%8))C%8r'   c                 4    [         R                  " U5      U-  $ N)rb   silu)r!   x1x3s      r%   _forward_silu_gating FeedForward._forward_silu_gating   s    vvbzBr'   c                     U R                  U R                  U R                  U5      U R                  U5      5      5      $ r   )r   r   r   r   )r!   ru   s     r%   rR   FeedForward.forward   s.    wwt00TWWQZHIIr'   )r   r   r   )
rT   rU   rV   rW   intr   r   rR   rY   rZ   r[   s   @r%   r   r      s'    9C 9S 9J Jr'   r   value_noisyvalue_clean
noise_maskseq_lenrj   c           	          UR                  S5      n[        R                  " US:H  U R                  S5      R                  SUS5      UR                  S5      R                  SUS5      5      $ )Nr0   r3   )rq   r4   whereexpand)r   r   r   r   noise_mask_expandeds        r%   select_per_tokenr      sh     %..r2;;q a ''GR8a ''GR8 r'   c                      ^  \ rS rSr SS\S\S\S\S\S\4U 4S jjjr    SS
\R                  S\R                  S\R                  S\R                  S	-  S\R                  S	-  S\R                  S	-  S\R                  S	-  4S jjr
SrU =r$ )ZImageTransformerBlock   layer_idr2   n_heads
n_kv_headsnorm_epsqk_normc                   > [         TU ]  5         X l        X#-  U l        [	        US X#-  UU(       a  SOS SSS[        5       S9	U l        [        U[        US-  S-  5      S9U l	        Xl
        [        X%S9U l        [        X%S9U l        [        X%S9U l        [        X%S9U l        Xpl        U(       aA  ["        R$                  " ["        R&                  " [)        U[*        5      S	U-  S
S95      U l        g g )Nrms_normh㈵>F		query_dimcross_attention_dimdim_headr   r   epsr   out_bias	processorr      r2   r   r      Tr   )r   r   r2   head_dimr
   r]   	attentionr   r   feed_forwardr   r   attention_norm1	ffn_norm1attention_norm2	ffn_norm2
modulationr   r   r   minADALN_EMBED_DIMadaLN_modulation)	r!   r   r2   r   r   r   r   r   r$   s	           r%   r   ZImageTransformerBlock.__init__   s     	 # $^")Jt02

 (CCa!<LM &s9 3&s9 3$$&MM"))C_<UWX[^W^ei2j$kD! r'   Nru   rz   ri   adaln_inputr   adaln_noisyadaln_cleanc           	      X   U R                   (       Ga  UR                  S   nUb  U R                  U5      n	U R                  U5      n
U	R                  SSS9u  ppU
R                  SSS9u  nnnnUR	                  5       UR	                  5       pUR	                  5       UR	                  5       nnSU-   SU-   pSU-   SU-   nn[        XXX5      n[        UUXX5      n[        UUXX5      n[        UUXX5      nO_U R                  U5      nUR                  S5      R                  SSS9u  nnnnUR	                  5       UR	                  5       nnSU-   SU-   nnU R                  U R                  U5      U-  X#S9nUUU R                  U5      -  -   nUUU R                  U R                  U R                  U5      U-  5      5      -  -   nU$ U R                  U R                  U5      X#S9nXR                  U5      -   nXR                  U R                  U R                  U5      5      5      -   nU$ )Nr3   r   r1         ?r   rh   ri   )r   rp   r   chunktanhr   rq   r   r   r   r   r   r   )r!   ru   rz   ri   r   r   r   r   r   	mod_noisy	mod_cleanscale_msa_noisygate_msa_noisyscale_mlp_noisygate_mlp_noisyscale_msa_cleangate_msa_cleanscale_mlp_cleangate_mlp_clean	scale_msa	scale_mlpgate_msagate_mlpmodattn_outs                            r%   rR   ZImageTransformerBlock.forward   sL    ???ggajG% 11+>	 11+>	S\SbSbcdjkSbSlPS\SbSbcdjkSbSlP.1?1D1D1FH[H[H]1?1D1D1FH[H[H]363H#P_J_363H#P_J_,_zc	,_ozc	+NNJ`+NNJ` ++K8;>==;K;Q;QRSYZ;Q;[8	8Y%-]]_hmmo('*Yi9	 ~~$$Q')3I & H Ht33H===A Ht~~d.?.?q@QT]@].^___A  ~~d&:&:1&=i~mH((22A NN4#4#4T^^A5F#GHHAr'   )r   r   r   r   r2   r   r   r   r   r   r   )T)NNNNrT   rU   rV   rW   r   r<   boolr   r4   r   rR   rY   rZ   r[   s   @r%   r   r      s     'l'l 'l 	'l
 'l 'l 'l 'l\ ,0*.+/+/6<<6 <<6 <<	6
 \\D(6 LL4'6 \\D(6 \\D(6 6r'   r   c                       \ rS rSr   SS\S\\   S\\   4S jjr\SS\\   S\\   S\4S jj5       r	S	\
R                  4S
 jrSrg)RopeEmbedderi"  theta	axes_dims	axes_lensc                 t    Xl         X l        X0l        [        U5      [        U5      :X  d   S5       eS U l        g )Nz1axes_dims and axes_lens must have the same length)r   r   r   r   ri   )r!   r   r   r   s       r%   r   RopeEmbedder.__init__#  s6     
""9~Y/d1dd/r'   r2   r-   c                 ^   [         R                  " S5         / n[        [        X5      5       H  u  nu  pVSU[         R                  " SUS[         R
                  SS9U-  -  -  n[         R                  " XgR                  [         R
                  S9n[         R                  " X5      R                  5       n[         R                  " [         R                  " U5      U5      R                  [         R                  5      n	UR                  U	5        M     UsS S S 5        $ ! , (       d  f       g = f)Ncpur   r   r   r.   r/   )r/   r.   )r4   r/   	enumeratezipr:   float64outerr<   polar	ones_likerN   	complex64append)
r2   r-   r   ri   iderD   timestepfreqs_cis_is
             r%   precompute_freqs_cis!RopeEmbedder.precompute_freqs_cis/  s    \\% I&s3}5	6AuaAU]][`)ade)efg <<,,emmTH4::<#kk%//%*@%HKKEOO\  - 6  !  s   C=D
D,idsc                    UR                   S:X  d   eUR                  S   [        U R                  5      :X  d   eUR                  nU R
                  ce  U R                  U R                  U R                  U R                  S9U l        U R
                   Vs/ s H  o3R                  U5      PM     snU l        OMU R
                  S   R                  U:w  a0  U R
                   Vs/ s H  o3R                  U5      PM     snU l        / n[        [        U R                  5      5       H-  nUS S 2U4   nUR                  U R
                  U   U   5        M/     [        R                  " USS9$ s  snf s  snf )Nr   r0   )r   r   r1   )r   rp   r   r   r/   ri   r  r   r   rN   ranger   r4   r=   )r!   r  r/   ri   resultr   indexs          r%   r   RopeEmbedder.__call__<  s*   xx1}}yy}DNN 3333>>!!66t~~t~~]a]g]g6hDNDHNNSNyll62NSDN ~~a ''61HL!W9,,v"6!Ws4>>*+A1IEMM$..+E23 , yyR(( T "Xs   E,$E1)r   r   ri   r   N)      p@)   8   r  )@      r  )r  )rT   rU   rV   rW   r<   listr   r   rX   r  r4   r   r   rY   r   r'   r%   r   r   "  sw     +-	

 9
 9	
 
$s) 
$s) 
E 
 
)ELL )r'   r   c                      ^  \ rS rSr  SS\S\S\S\S\S\4U 4S jjjr SS
\R                  S\R                  S\R                  S\R                  S\R                  S	-  4
S jjr
SrU =r$ )ZImageControlTransformerBlockiP  r   r2   r   r   r   r   c	                   > [         T	U ]  5         X l        X#-  U l        [	        US X#-  UU(       a  SOS SSS[        5       S9	U l        [        U[        US-  S-  5      S9U l	        Xl
        [        X%S9U l        [        X%S9U l        [        X%S9U l        [        X%S9U l        Xpl        U(       a@  ["        R$                  " ["        R&                  " [)        U[*        5      S	U-  S
S95      U l        Xl        US:X  a9  [1        ["        R&                  " U R                  U R                  5      5      U l        [1        ["        R&                  " U R                  U R                  5      5      U l        g )Nr   r   Fr   r   r   r   r   r   Tr   r   )r   r   r2   r   r
   r]   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   block_idr   before_proj
after_proj)
r!   r   r2   r   r   r   r   r   r  r$   s
            r%   r   &ZImageControlTransformerBlock.__init__R  s'    	 # $^")Jt02

 (CCa!<LM &s9 3&s9 3$$&MM"))C_<UWX[^W^ei2j$kD! !q=*299TXXtxx+HID%bii$((&CDr'   Ncru   rz   ri   r   c           	         U R                   S:X  a  U R                  U5      U-   n/ nO0[        [        R                  " U5      5      nUR                  S5      nU R                  (       a  Uc   eU R                  U5      R                  S5      R                  SSS9u  pxpUR                  5       U
R                  5       pSU-   SU	-   pU R                  U R                  U5      U-  X4S9nXU R                  U5      -  -   nXU R                  U R                  U R!                  U5      U	-  5      5      -  -   nOcU R                  U R                  U5      X4S9nXR                  U5      -   nXR                  U R                  U R!                  U5      5      5      -   nU R#                  U5      nXlU/-  n[        R$                  " U5      nU$ )	Nr   r0   r3   r   r   r1   r   r   )r  r  r  r4   unbindpopr   r   rq   r   r   r   r   r   r   r   r   r  stack)r!   r  ru   rz   ri   r   all_cr   r   r   r   r   c_skips                r%   rR   %ZImageControlTransformerBlock.forward  s    ==A  #a'AEa)E		"A ??***7;7L7L[7Y7c7cde7f7l7lmntu7l7v4I!)(--/h#&?C)Oy ~~$$Q')3I & H t33H===A t~~d.?.?q@QT]@].^___A ~~d&:&:1&=i~mH((22A NN4#4#4T^^A5F#GHHA #!KKr'   )r   r  r   r   r   r  r  r2   r   r   r   r   r   r   )Tr   r   r   r[   s   @r%   r  r  P  s     .E.E .E 	.E
 .E .E .E .El ,0+<<+ <<+ <<	+
 <<+ \\D(+ +r'   r  c                   
  ^  \ rS rSrSr\            SS\\   S\\   S\S   S-  4U 4S jjj5       r	\
S	 5       r\S S
 j5       rS\R                  S\S\4S jr S!S\R                  S\S\S\R$                  S\S-  4
S jjrS\\R                     S\\R                     S\S\4S jrS\\R                     S\S\4S jr   S"S\\R                     S\\R                     S\\R                     S\4S jjrSrU =r$ )#ZImageControlNetModeli  TNcontrol_layers_placescontrol_refiner_layers_placesadd_control_noise_refiner)control_layerscontrol_noise_refinerc                   > [         TU ]  5         Xl        X0l        X l        X@l        SU R                  ;   d   e[        R                  " U R                   Vs/ s H  n[        XXXUS9PM     sn5      U l	        0 n[        [        XV5      5       H<  u  nu  nn[        R                  " UU-  U-  U R                  -  USS9nUUU SU 3'   M>     [        R                  " U5      U l        U R
                  S:X  a  S U l        OU R
                  S:X  aG  [        R                  " [!        U5       Vs/ s H  n[        SU-   UU	U
UUSUS	9PM     sn5      U l        OE[        R                  " [!        U5       Vs/ s H  n[#        SU-   UU	U
UUSS
9PM     sn5      U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        g s  snf s  snf s  snf )Nr   )r  Tr   -r&  r'  i  )r   r  )r   )r   r   r#  control_in_dimr$  r%  r   
ModuleListr  r&  r   r   r   
ModuleDictcontrol_all_x_embedderr'  r  r   t_scale
t_embedderall_x_embeddercap_embedderrope_embeddernoise_refinercontext_refinerx_pad_tokencap_pad_token)r!   r#  r$  r*  r%  all_patch_sizeall_f_patch_sizer2   n_refiner_layersr   r   r   r   r   r0  	patch_idx
patch_sizef_patch_size
x_embedderr   r$   s                       r%   r   ZImageControlNetModel.__init__  s$     	%:",-J*)B&D..... !mm 333A .ag8ghi3
 5>s>?d5e1I1
L<*#<z#IDL_L_#_adkopJ=GNj\<.9: 6f ')mmN&C#))-==)-D&++/FF)+ %**:$; %< 2x" #'!)	 %<*D&  *, %**:$; %< +x" #' %<*D& &*3748262637590426o" s   G0G$7G)c                 8   UR                   Ul         UR                  Ul        UR                  Ul        UR                  Ul        UR                  Ul        UR
                  Ul        UR                  Ul        UR                  Ul        UR                  Ul        U$ r   )	r.  r/  r0  r1  r2  r3  r4  r5  r6  )cls
controlnettransformers      r%   from_transformer&ZImageControlNetModel.from_transformer  s    (00
 + 6 6
$/$>$>
!"-":":
#.#<#<
 #.#<#<
 %0%@%@
"!,!8!8
#.#<#<
 r'   c                    Uc	  S U  5       n[        X5       VVs/ s H,  u  p4[        R                  " X3U-   [        R                  US9PM.     nnn[        R                  " USS9n[        R
                  " USS9$ s  snnf )Nc              3   &   #    U  H  nS v   M	     g7fr   Nr   .0_s     r%   	<genexpr>?ZImageControlNetModel.create_coordinate_grid.<locals>.<genexpr>  s     %1Qs   r   ij)indexingr0   r1   )r   r4   r:   int32meshgridr  )sizer,   r/   x0spanaxesgridss          r%   create_coordinate_grid,ZImageControlNetModel.create_coordinate_grid  so     =%%E^abg^no^nRZRTRd%++fM^notd3{{5b)) ps   3A;imager;  r<  c           	          X"UpenUR                  5       u  pxpX-  X-  X-  pnUR                  X{XlXMU5      nUR                  SSSSSSS5      R                  X-  U-  Xd-  U-  U-  5      nXX4XU44$ )zIPatchify a single image tensor: (C, F, H, W) -> (num_patches, patch_dim).r3   r      r   r      r   )rQ  viewpermutero   )r!   rX  r;  r<  pHpWpFCrb   HWF_tokensH_tokensW_tokenss                 r%   _patchify_image%ZImageControlNetModel._patchify_image  s    \ZZ\
a'(wH

1bBGaAq!Q2::8;NQY;Y[][beg[gjk[kl!i(h!???r'   featpos_grid_size	pos_startr/   noise_mask_valc           	         [        U5      nU* [        -  nXg-   nU R                  X#US9R                  SS5      n	US:  a  U R                  SSUS9R                  SS5      R	                  US5      n
[
        R                  " X/SS9n[
        R                  " XSS	 R	                  US5      /SS9n[
        R                  " [
        R                  " U[
        R                  US
9[
        R                  " U[
        R                  US
9/5      nO(U	nUn[
        R                  " U[
        R                  US
9nUb  U/U-  OS	nXXU4$ )z>Pad feature to SEQ_MULTI_OF, create position IDs and pad mask.)rQ  r,   r/   r   r   )r3   r3   r3   )r   r   r   r3   r1   r0   Nr   )
r   SEQ_MULTI_OFrV  rs   repeatr4   r=   zerosr   ones)r!   ri  rj  rk  r/   rl  ori_lenpad_len	total_lenori_pos_idspad_pos_idspos_idspadded_featpad_maskr   s                  r%   _pad_with_ids#ZImageControlNetModel._pad_with_ids'  s;    d)8|+%	 11}^d1emmnoqrsQ;++)TZ+[A# 
 ii :BG))T9+;+;GQ+G$HaPKyyKKuzz&IJJwejjHH "GK{{7%**VLH5C5On%	1UY
X*DDr'   	all_imageall_cap_featsc                 R   US   R                   n/ / / / 4u  pgp/ / / pn
[        X5       H  u  pU R                  U[        U5      [        U5      * [        -  -   SS4SU5      u  nnnnnU
R                  U5        UR                  U5        UR                  U5        U R                  XU5      u  nnu  nnnU R                  UUUU4US-   SS4U5      u  nnn  nUR                  U5        UR                  U5        UR                  U5        U	R                  U5        M     UU
UUUU	U4$ )z5Patchify for basic mode: single image per batch item.r   r3   )r3   r   r   )r/   r   rz  r   rn  r   rg  )r!   r|  r}  r;  r<  r/   all_img_outall_img_sizeall_img_pos_idsall_img_pad_maskall_cap_outall_cap_pos_idsall_cap_pad_maskrX  cap_featcap_outcap_pos_idscap_pad_maskcap_lenrJ  img_patchesrQ  F_tH_tW_timg_outimg_pos_idsimg_pad_masks                               r%   patchify_and_embed(ZImageControlNetModel.patchify_and_embedM  sb    1$$GI2rSU~D?9;R&6"9<OE=A=O=O3x=S]Nl+JJAqQS\^d>:G[, w'"";/##L1 261E1EeYe1f.KS#7;7I7Ic3_w{Aq.A684G[,1 w'%"";/##L1#  =( 
 	
r'   c           
         U=pEUn/ n[        U5       H  u  pU	R                  5       u  ppX-  X-  X-  npU	R                  XXoUUU5      n	U	R                  SSSSSSS5      R	                  X-  U-  Xd-  U-  U
-  5      n	[        U	5      nU* [        -  n[        R                  " XSS  R                  US5      /SS	9nUR                  U5        M     U$ )
Nr3   r   rZ  r   r   r[  r   r0   r1   )r   rQ  r\  r]  ro   r   rn  r4   r=   ro  r   )r!   r|  r;  r<  r^  r_  r`  all_image_outr   rX  ra  rb   rb  rc  rd  re  rf  image_ori_lenimage_padding_lenimage_padded_feats                       r%   patchifyZImageControlNetModel.patchifyr  s     !),HAJA!+,7AGQWhJJqB"hKEMM!Q1aA6>>x?RU]?]_a_fik_kno_opEJM"/< ? !&		5*2C2CDUWX2Y*Z`a b  !23 -  r'   ru   	cap_featscontrol_contextconditioning_scalec           
         U R                   bh  U R                  b[  U R                  bN  U R                  bA  U R                  b4  U R
                  b'  U R                  b  U R                  b  U R                  c  [        S5      eX`R                  R                  ;   d   eXpR                  R                  ;   d   e[        U5      nUS   R                  n	X R                   -  nU R                  U5      nU R                  XXg5      u  nnn
nnnnU Vs/ s H  n[        U5      PM     nn[!        S U 5       5      (       d   e[#        U5      nU R%                  XFU5      n[&        R(                  " USS9nU R*                  U SU 3   " U5      nU R                  U[&        R(                  " U5      '   [-        UR/                  USS95      n[1        USSS9n[&        R(                  " USS9nU R                  U SU 3   " U5      nUR3                  U5      nU R                  U[&        R(                  " U5      '   [-        UR/                  USS95      n[-        U R	                  [&        R(                  " USS95      R/                  U Vs/ s H  n[        U5      PM     snSS95      n[1        USSS9n[1        USSS9nUS S 2S UR4                  S	   24   n[&        R6                  " UU4[&        R8                  U	S
9n[;        U5       H  u  nnS	UUS U24'   M     U R<                  Gb  U R<                  S:X  a  U R>                  nO6U R<                  S:X  a  U R@                  nO[        SU R<                   S35      eU HP  n[&        RB                  " 5       (       a(  U RD                  (       a  U RG                  UXAUUU5      nME  U" XAUUU5      nMR     [&        RH                  " U5      S S n[&        RH                  " U5      S   n[;        U RJ                  5       VVs0 s H  u  nnUUU   U-  _M     nnnOS n[&        RB                  " 5       (       a[  U RD                  (       aJ  [;        U R
                  5       H0  u  nnU RG                  UUUUU5      nUc  M   UU;   d  M(  UUU   -   nM2     O?[;        U R
                  5       H&  u  nnU" UUUU5      nUc  M  UU;   d  M  UUU   -   nM(     U Vs/ s H  n[        U5      PM     nn[#        U5      n[&        R(                  " USS9nU R                  U5      nU R                  U[&        R(                  " U5      '   [-        UR/                  USS95      n[-        U R	                  [&        R(                  " USS95      R/                  U Vs/ s H  n[        U5      PM     snSS95      n[1        USSS9n[1        USSS9nUS S 2S UR4                  S	   24   n[&        R6                  " UU4[&        R8                  U	S
9n [;        U5       H  u  nnS	U US U24'   M     [&        RB                  " 5       (       a9  U RD                  (       a(  U R                   H  nU RG                  UUU U5      nM     OU R                   H  nU" UU U5      nM     / n!/ n"[M        U5       Hs  nUU   n#UU   n$U!RO                  [&        R(                  " UU   S U# UU   S U$ /5      5        U"RO                  [&        R(                  " UU   S U# UU   S U$ /5      5        Mu     [Q        UU5       V%V&s/ s H  u  n%n&U%U&-   PM     n'n%n&U'U! Vs/ s H  n[        U5      PM     sn:X  d   e[#        U'5      n([1        U!SSS9n![1        U"SSS9n"[&        R6                  " UU(4[&        R8                  U	S
9n)[;        U'5       H  u  nnS	U)US U24'   M     U R<                  (       dr  [&        RB                  " 5       (       a:  U RD                  (       a)  U R@                   H  nU RG                  UUUUU5      nM     OU R@                   H  nU" UUUU5      nM     / n*[M        U5       H@  nUU   n#UU   n$U*RO                  [&        R(                  " UU   S U# UU   S U$ /5      5        MB     [1        U*SSS9n*U R>                   HR  n[&        RB                  " 5       (       a)  U RD                  (       a  U RG                  UU*U!U)U"U5      n*MF  U" U*U!U)U"U5      n*MT     [&        RH                  " U*5      S S n[;        U RR                  5       VVs0 s H  u  nnUUU   U-  _M     n+nnU+$ s  snf s  snf s  snnf s  snf s  snf s  sn&n%f s  snf s  snnf )NzaRequired modules are `None`, use `from_transformer` to share required modules from `transformer`.r   c              3   8   #    U  H  o[         -  S :H  v   M     g7frG  )rn  rH  s     r%   rK  0ZImageControlNetModel.forward.<locals>.<genexpr>  s     A.Q|#q(.s   r1   r)  Try   )batch_firstpadding_valuer3   r   r&  r'  z.Unsupported `add_control_noise_refiner` type: .r0   )*r.  r/  r0  r1  r2  r3  r4  r5  r6  
ValueErrorconfigr7  r8  r   r/   r  allmaxr  r4   r=   r-  r  splitr   rt   rp   rp  r   r   r%  r&  r'  is_grad_enabledgradient_checkpointing_gradient_checkpointing_funcr  r$  r  r   r   r#  ),r!   ru   rA   r  r  r  r;  r<  bszr/   x_size	x_pos_idsr  x_inner_pad_maskcap_inner_pad_maskrJ  x_item_seqlensx_max_item_seqlenr   x_freqs_cisx_attn_maskr   r   layerslayerhintsidx	layer_idxnoise_refiner_block_samplescap_item_seqlenscap_max_item_seqlencap_freqs_ciscap_attn_maskunifiedunified_freqs_cisx_lenr  abunified_item_seqlensunified_max_item_seqlenunified_attn_maskcontrol_context_unifiedcontrolnet_block_sampless,                                               r%   rR   ZImageControlNetModel.forward  s	    LL &""*  (!!)!!)##+'!!)s  [[77777{{;;;;;!f1OOA ##A*K	
 +,,!Q#a&!,A.AAAAA/--\R))O;55Al^6TUVef7;7G7G		"23444^4KL&DX[\ IIaQ:,a~ >?B iil)-)9)9%))$
%&Q/04--eii	q.IJPPbkQlbk]^RUVWRXbkQlrsPtuC@";DPST!!\qwwqz\/2kk3(9":%**U[\#N3JAw'(K8G8$ 4 ))5--1AA,,//3JJ33 #QRVRpRpQqqr!stt((**t/J/J&*&G&G;['O ',O[Ze&fO   LL1#26E#ll?;B?O '00R0R&S+&SNC 5:(:::&S ( +'
 +/'  ""t'B'B$-d.@.@$A 	555eQ[Zef.: $?? ;I FF	 %B %.d.@.@$A 	5![+{C.: $?? ;I FF	 %B -66IqCFI6!"23IIiQ/	%%i0	373E3E	%))./0)9qAB	uyy!<=CCU`DaU`PQSVU`DaghCi
 !CP	$]TWX%a)=9??1+=)=&=>S*=$>ejjY_`#$45JAw)*M!XgX+& 6   ""t'B'B-- ==eYP]_lm	 . --!)]MJ	 . sA"1%E&q)GNN599ad6ElIaL'4J%KLM$$UYYAv0FVWHXYaZaHb/c%de	 
 366F2WX2W$!QA2WX#'@1A'@@@@"%&:";wDL():\_`!KK.E(Fejjagh#$89JAw-.a'k* : --$$&&4+F+F!77E&*&G&G[+'O 8
 "77E&+O[+Wb&cO 8 #%sA"1%E&q)G#**599oa6H%6PR[\]R^_g`gRh5i+jk  #//FTXhk"l((E$$&&4+F+F*.*K*K2G=NPacn+' +0+W6GIZ\g+' ) 45cr:MVW[WqWqMr$
Mr>3	IuSz$666Mr 	! $
 ('i -* Rm8+* 7 Eb6  Y'@N$
s0   e"e'e,)e2#e79e<ff)r%  r0  r1  r6  r4  r-  r*  r&  r#  r'  r$  r3  r2  r/  r.  r5  )NNNN)r   )r3   i   r      r  r   T)NNr   )r   r   r3   )rT   rU   rV   rW    _supports_gradient_checkpointingr   r  r   r   r   classmethodrC  rX   rV  r4   r   rg  tupler/   rz  r  r  r<   rR   rY   rZ   r[   s   @r%   r"  r"    s   '+$ ,037_cP7#CyP7 (,CyP7
 $++T#UX\#\P7 P7d 
 
 * *@U\\ @s @RU @  &*#Ell#E #E 	#E
 #E d
#EL#
ell+#
<@<N#
\_#
or#
J%  	D %((( %	(
 ell+( "( (r'   r"  )+r8   typingr   r4   torch.nnr   torch.nn.functional
functionalrb   torch.nn.utils.rnnr   configuration_utilsr   r   loadersr   loaders.single_file_modelr	   models.attention_processorr
   models.normalizationr   utils.torch_utilsr   attention_dispatchr   controlnets.controlnetr   modeling_utilsr   r   rn  Moduler   r]   r   r   r   r   r   r   r  r"  r   r'   r%   <module>r     s         + B ' ? 3 + 5 6 0 ' #ryy #NM MbJ")) J  	
 \\ `RYY ` `H+) +)\ \BII \ \~](J5EG] ](r'   