ó
    oM‡jí> ã            +       ó´  • S r SSKrSSKJr  SSKJr  SSKrSSKrSSKrSSK	J
r
JrJrJrJrJrJrJrJr  SSKJrJrJrJr  SSKJrJrJrJrJrJrJrJ r 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,J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3  \#" 5       (       a  SSK4J5r5  SSK6J7r7  \$Rp                  " \95      r:SFS jr;SGS jr<SGS jr=SGS jr>SGS jr? SHS jr@S rASIS\B4S jjrCS\B4S jrDS rES  rF SJS! jrGS" rHS# rISKS$ jrJ/ S%QrK\K V s0 s H  o S   U S   _M     sn rL/ S&QrM\M V s0 s H  n \R�                  U S   5      U S   _M     sn rO\R                   " S'R£                  \OR¥                  5       5      5      rSSIS( jrT   SLS) jrUSIS* jrV SMS+\WS-  S,\WS-  4S- jjrX  SMS. jrY                           SNS/\W\Z\W\R¶                  4   -  S0\WS\BS-  S1\WS2\WS3\\S4\WS5\BS-  S6\\S-  S,\WS7\\S8\WS-  S9\WS-  S+\WS-  S:\\S-  S;\\S-  S<\\S=\1S-  S>\
S-  S?\/S@\/4*SA jjr]        SOSB\WS0\WS\BS3\\S5\BS-  S6\\S-  S,\WS7\\SC\\S-  SD\\S-  S@\/4SE jjr^gs  sn f s  sn f )Pz7Conversion script for the Stable Diffusion checkpoints.é    N)Únullcontext)ÚBytesIO)	ÚAutoFeatureExtractorÚBertTokenizerFastÚCLIPImageProcessorÚCLIPTextConfigÚCLIPTextModelÚCLIPTextModelWithProjectionÚCLIPTokenizerÚCLIPVisionConfigÚCLIPVisionModelWithProjectioné   )ÚAutoencoderKLÚControlNetModelÚPriorTransformerÚUNet2DConditionModel)	ÚDDIMSchedulerÚDDPMSchedulerÚDPMSolverMultistepSchedulerÚEulerAncestralDiscreteSchedulerÚEulerDiscreteSchedulerÚHeunDiscreteSchedulerÚLMSDiscreteSchedulerÚPNDMSchedulerÚUnCLIPScheduler)Úis_accelerate_availableÚlogging)ÚDIFFUSERS_REQUEST_TIMEOUT)Ú
get_deviceé   )ÚPaintByExampleImageEncoder)ÚLDMBertConfigÚLDMBertModel)ÚDiffusionPipelineé   )ÚStableDiffusionSafetyChecker)ÚStableUnCLIPImageNormalizer)Úinit_empty_weights)Úset_module_tensor_to_devicec                 óš   • US:¼  a#  SR                  U R                  S5      US 5      $ SR                  U R                  S5      SU 5      $ )z_
Removes segments. Positive values shave the first segments, negative shave the last segments.
r   Ú.N)ÚjoinÚsplit)ÚpathÚn_shave_prefix_segmentss     ÚÄC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\diffusers/pipelines/stable_diffusion/convert_from_ckpt.pyÚshave_segmentsr1   F   sL   € ð  !Ó#Ø�x‰x˜Ÿ
™
 3›Ð(?Ð(@ÐAÓBÐBà�x‰x˜Ÿ
™
 3›Ð(@Ð)@ÐAÓBÐBó    c                 ó,  • / nU  H‹  nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  S	S
5      nUR                  SS5      n[        XAS9nUR                  X4S.5        M�     U$ )úH
Updates paths inside resnets to the new naming scheme (local renaming)
zin_layers.0Únorm1zin_layers.2Úconv1zout_layers.0Únorm2zout_layers.3Úconv2zemb_layers.1Útime_emb_projÚskip_connectionÚconv_shortcut©r/   ©ÚoldÚnew©Úreplacer1   Úappend©Úold_listr/   ÚmappingÚold_itemÚnew_items        r0   Úrenew_resnet_pathsrH   P   s    € ð €GÛˆØ×#Ñ# M°7Ó;ˆØ×#Ñ# M°7Ó;ˆà×#Ñ# N°GÓ<ˆØ×#Ñ# N°GÓ<ˆà×#Ñ# N°OÓDˆØ×#Ñ#Ð$5°ÓGˆä! (Ñ\ˆà�‰˜xÑ9Ö:ñ ð €Nr2   c                 ó|   • / nU  H3  nUnUR                  SS5      n[        XAS9nUR                  X4S.5        M5     U$ )r4   Únin_shortcutr;   r<   r=   r@   rC   s        r0   Úrenew_vae_resnet_pathsrK   f   sJ   € ð €GÛˆØˆà×#Ñ# N°OÓDˆÜ! (Ñ\ˆà�‰˜xÑ9Ö:ñ ð €Nr2   c                 óF   • / nU  H  nUnUR                  X4S.5        M     U$ )úK
Updates paths inside attentions to the new naming scheme (local renaming)
r=   )rB   rC   s        r0   Úrenew_attention_pathsrN   v   s0   € ð €GÛˆØˆð 	�‰˜xÑ9Ö:ñ ð €Nr2   c                 óÀ  • / nU  HÕ  nUnUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  S	S
5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      n[        XAS9nUR                  X4S.5        M×     U$ )rM   znorm.weightzgroup_norm.weightz	norm.biaszgroup_norm.biaszq.weightzto_q.weightzq.biasz	to_q.biaszk.weightzto_k.weightzk.biasz	to_k.biaszv.weightzto_v.weightzv.biasz	to_v.biasúproj_out.weightzto_out.0.weightúproj_out.biaszto_out.0.biasr<   r=   r@   rC   s        r0   Úrenew_vae_attention_pathsrR   ‹   sð   € ð €GÛˆØˆà×#Ñ# MÐ3FÓGˆØ×#Ñ# KÐ1BÓCˆà×#Ñ# J°Ó>ˆØ×#Ñ# H¨kÓ:ˆà×#Ñ# J°Ó>ˆØ×#Ñ# H¨kÓ:ˆà×#Ñ# J°Ó>ˆØ×#Ñ# H¨kÓ:ˆà×#Ñ#Ð$5Ð7HÓIˆØ×#Ñ# O°_ÓEˆä! (Ñ\ˆà�‰˜xÑ9Ö:ñ) ð, €Nr2   c                 ó  • [        U [        5      (       d   S5       eUbæ  UR                  5        HÒ  u  pgX&   nUR                  S   S-  n	[	        UR                  5      S:X  a  SU	4OSn
UR                  S   US   -  S-  nUR                  USU	-  U-  4UR                  SS -   5      nUR                  X›-  SS9u  pÍnUR                  U
5      XS	   '   UR                  U
5      XS
   '   UR                  U
5      XS   '   MÔ     U  Hú  nUS   nUb  Xó;   a  M  UR                  SS5      nUR                  SS5      nUR                  SS5      nUb!  U H  nUR                  US   US   5      nM     SU;   =(       d    SU;   =(       a    SU;   nX&S      R                  nU(       a$  [	        U5      S:X  a  X&S      SS2SS2S4   X'   MÅ  U(       a%  [	        U5      S:X  a  X&S      SS2SS2SS4   X'   Mñ  X&S      X'   Mü     g)zñ
This does the final conversion step: take locally converted weights and apply a global renaming to them. It splits
attention layers, and takes into account additional replacements that may arise.

Assigns the weights to the new checkpoint.
z@Paths should be a list of dicts containing 'old' and 'new' keys.Nr   r   éÿÿÿÿÚnum_head_channelsr%   )ÚdimÚqueryÚkeyÚvaluer?   zmiddle_block.0zmid_block.resnets.0úmiddle_block.1úmid_block.attentions.0zmiddle_block.2zmid_block.resnets.1r>   úproj_attn.weightÚ
attentionsÚto_é   )Ú
isinstanceÚlistÚitemsÚshapeÚlenÚreshaper-   rA   )ÚpathsÚ
checkpointÚold_checkpointÚattention_paths_to_splitÚadditional_replacementsÚconfigr.   Úpath_mapÚ
old_tensorÚchannelsÚtarget_shapeÚ	num_headsrW   rX   rY   Únew_pathÚreplacementÚis_attn_weightrc   s                      r0   Úassign_to_checkpointrt   ©   sG  € ô �eœT×"Ñ"ÐfÐ$fÓfÐ"ð  Ñ+Ø6×<Ñ<Ö>‰NˆDØ'Ñ-ˆJØ!×'Ñ'¨Ñ*¨aÑ/ˆHä-0°×1AÑ1AÓ-BÀaÓ-G˜B ™>ÈbˆLà"×(Ñ(¨Ñ+¨vÐ6IÑ/JÑJÈaÑOˆIà#×+Ñ+¨Y¸¸H¹È	Ñ8QÐ,RÐU_×UeÑUeÐfgÐfhÐUiÑ,iÓjˆJØ *× 0Ñ 0°Ñ1FÈAÐ 0Ð NÑˆE˜à,1¯M©M¸,Ó,GˆJ Ñ(Ñ)Ø*-¯+©+°lÓ*CˆJ ‘Ñ'Ø,1¯M©M¸,Ó,GˆJ Ñ(Ó)ñ ?ó ˆØ˜‘;ˆð $Ñ/°HÓ4XÙð ×#Ñ#Ð$4Ð6KÓLˆØ×#Ñ#Ð$4Ð6NÓOˆØ×#Ñ#Ð$4Ð6KÓLˆà"Ñ.Û6�Ø#×+Ñ+¨K¸Ñ,>ÀÈEÑ@RÓS’ñ  7ð ,¨xÑ7×k¸LÈHÑ<T×<jÐY^ÐbjÑYjˆØ E™{Ñ+×1Ñ1ˆÞœc %›j¨A›oØ#1°u±+Ñ#>ºqÂ!ÀQ¸wÑ#GˆJÓ Þ¤ E£
¨a£Ø#1°u±+Ñ#>ºqÂ!ÀQÈ¸zÑ#JˆJÓ à#1°u±+Ñ#>ˆJÓ ò1 r2   c                 óD  • [        U R                  5       5      n/ SQnU H}  nSR                  UR                  S5      SS  5      U;   a'  X   R                  S:”  a  X   S S 2S S 2SS4   X'   MO  MQ  SU;   d  MY  X   R                  S:”  d  Mm  X   S S 2S S 2S4   X'   M     g )N)zquery.weightz
key.weightzvalue.weightr+   éþÿÿÿr    r   r\   )ra   Úkeysr,   r-   Úndim)rg   rw   Ú	attn_keysrX   s       r0   Úconv_attn_to_linearrz   à   s™   € Ü�
—‘Ó!Ó"€DÚ>€IÛˆØ�8‰8�C—I‘I˜c“N 2 3Ð'Ó(¨IÓ5Ø‰×#Ñ# aÓ'Ø",¡/²!²Q¸¸1°*Ñ"=�
“ñ (à 3Õ&Ø‰×#Ñ# aÕ'Ø",¡/²!²Q¸°'Ñ":�
“ò r2   Ú
image_sizec                 ó$  • U(       a  U S   S   S   S   nO5SU S   S   ;   a  U S   S   S   b  U S   S   S   S   nOU S   S   S   S   nU S   S   S   S   S   nUS	    Vs/ s H
  oSS
   U-  PM     nn/ nSn[        [        U5      5       H9  n	XƒS   ;   a  SOSn
UR                  U
5        U	[        U5      S-
  :w  d  M4  US-  nM;     / n[        [        U5      5       H%  n	XƒS   ;   a  SOSn
UR                  U
5        US-  nM'     US   b,  [        US   [        5      (       a  US   O[        US   5      nOSnS[        US   5      S-
  -  nSU;   a  US   OSnSU;   a  US   OSnU(       a/  Uc,  US
   US   -  n[        US	   5       Vs/ s H  nUU-  PM
     nnSnSnSnSnSnUS   b%  [        US   [        5      (       a  US   OUS   S   nSU;   a#  US   S:X  a  US;   a  SnSnOSnS U;   d   eUS    nX-  US!   [        U5      [        U5      US"   UUUUUUUUS#.nS$U;   a  US$   US%'   SU;   a   [        US   [        5      (       a  US   US&'   U(       a
  US'   US('   U$ US)   US)'   [        U5      US*'   U$ s  snf s  snf )+úJ
Creates a config for the diffusers based on the config of the LDM model.
ÚmodelÚparamsÚcontrol_stage_configÚunet_configNÚnetwork_configÚfirst_stage_configÚddconfigÚchannel_multÚmodel_channelsr%   Úattention_resolutionsÚCrossAttnDownBlock2DÚDownBlock2Dr    ÚCrossAttnUpBlock2DÚ	UpBlock2DÚtransformer_depthÚch_multrp   Úuse_linear_in_transformerFrU   Úcontext_dimr   Únum_classesÚ
sequential)é   é   Ú	text_timeé   Ú
projectionÚadm_in_channelsÚin_channelsÚnum_res_blocks)Úsample_sizer˜   Údown_block_typesÚblock_out_channelsÚlayers_per_blockÚcross_attention_dimÚattention_head_dimÚuse_linear_projectionÚclass_embed_typeÚaddition_embed_typeÚaddition_time_embed_dimÚ%projection_class_embeddings_input_dimÚtransformer_layers_per_blockÚdisable_self_attentionsÚonly_cross_attentionÚnum_class_embedsÚhint_channelsÚconditioning_channelsÚout_channelsÚup_block_types)Úrangerd   rB   r`   Úintra   Útuple)Úoriginal_configr{   Ú
controlnetÚunet_paramsÚ
vae_paramsÚmultrœ   r›   Ú
resolutionÚiÚ
block_typer¬   r¥   Úvae_scale_factorÚhead_dimr    Úhead_dim_multÚcr¡   r¢   r£   r¤   r�   rk   s                           r0   Úcreate_unet_diffusers_configr¼   ì   s¾  € ö Ø% gÑ.¨xÑ8Ð9OÑPÐQYÑZ‰ð ˜_¨WÑ5°hÑ?Ó?Ø Ñ(¨Ñ2°=ÑAÑMà)¨'Ñ2°8Ñ<¸]ÑKÈHÑU‰Kà)¨'Ñ2°8Ñ<Ð=MÑNÈxÑXˆKà  Ñ)¨(Ñ3Ð4HÑIÈ(ÑSÐT^Ñ_€JàKVÐWeÒKfÓgÒKfÀ4Ð&6Ñ7¸$Ô>ÑKfÐÐgàÐØ€JÜ”3Ð)Ó*Ö+ˆØ/9ÐI`Ñ=aÓ/aÑ+Ðgtˆ
Ø×Ñ 
Ô+Ø”Ð&Ó'¨!Ñ+Õ+Ø˜!‰OŠJñ	 ,ð €NÜ”3Ð)Ó*Ö+ˆØ-7ÐG^Ñ;_Ó-_Ñ)Ðepˆ
Ø×Ñ˜jÔ)Ø�qÑŠ
ñ ,ð
 Ð&Ñ'Ñ3ô ˜+Ð&9Ñ:¼C×@Ñ@ð Ð+Ò,ä�kÐ"5Ñ6Ó7ñ 	%ð ()Ð$àœS ¨IÑ!6Ó7¸!Ñ;Ñ<Ðà+6¸+Ó+Eˆ{˜;Ò'È4€Hà4OÐS^Ó4^ˆÐ/Ò0Ðdið ö àÑØ'Ð(8Ñ9¸[ÐI\Ñ=]Ñ]ˆMÜ37¸ÀNÑ8SÔ3TÓUÒ3T¨a˜¨Ô)Ñ3TˆHÐUàÐØÐØ"ÐØ,0Ð)Ø€Kà�=Ñ!Ñ-ô ˜+ mÑ4´c×:Ñ:ð ˜Ò&à˜]Ñ+¨AÑ.ð 	ð ˜Ó#Ø�}Ñ%¨Ó5Ø˜lÓ*à&1Ð#Ø*-Ñ'à#/Ð Ø$¨Ó3Ð3Ð3Ø4?Ð@QÑ4RÐ1ð "Ñ5Ø" =Ñ1Ü!Ð"2Ó3Ü#Ð$6Ó7Ø'Ð(8Ñ9Ø*Ø&Ø!6Ø,Ø2Ø#:Ø1VØ(Dñ€Fð  ! KÓ/Ø)4Ð5NÑ)OˆÐ%Ñ&à˜Ó#¬
°;¸}Ñ3MÌs×(SÑ(SØ%0°Ñ%?ˆÐ!Ñ"æØ*5°oÑ*FˆÐ&Ñ'ð
 €Mð "-¨^Ñ!<ˆˆ~ÑÜ#(¨Ó#8ˆÐÑ à€Mùòs hùòF Vs   Á$JÆJc           	      óÒ  • U S   S   S   S   S   nU S   S   S   S   S   nUS    Vs/ s H
  oBS   U-  PM     nn[        U5       VVs/ s H  u  pcUSU-  -  US	   ;  a  S
OSPM     nnn[        U5       VVs/ s H  u  pcUSU-  -  US	   ;  a  SOSPM     snnSSS2   nUUS   US   [        U5      [        U5      [        U5      US   US   S.n	U	$ s  snf s  snnf s  snnf )r}   r~   r   rƒ   r„   Ú	embed_dimr�   Úchr    Úattn_resolutionsÚDownEncoderBlock2DÚAttnDownEncoderBlock2DÚUpDecoderBlock2DÚAttnUpDecoderBlock2DNrT   r˜   Úout_chÚ
z_channelsr™   )rš   r˜   r«   r›   r¬   rœ   Úlatent_channelsr�   )Ú	enumerater¯   )
r°   r{   r³   Ú_r´   rœ   r¶   r›   r¬   rk   s
             r0   Úcreate_vae_diffusers_configrÊ   Y  s^  € ð ! Ñ)¨(Ñ3Ð4HÑIÈ(ÑSÐT^Ñ_€JØ˜Ñ  Ñ*Ð+?Ñ@ÀÑJÈ;ÑW€Aà>HÈÒ>SÓTÒ>S°d TÑ*¨TÔ1Ñ>SÐÐTô Ð0Ô1ôâ1‰DˆAð !+¨a°©dÑ 2¸*ÐEWÑ:XÓ XÑÐ^vÒvÙ1ð ñ ô Ð0Ô1ôâ1‰DˆAð )¨A¨q©DÑ0¸
ÐCUÑ8VÓVÑÐ\rÒrÙ1òñ ˆ€dñ€Nð "Ø! -Ñ0Ø" 8Ñ,Ü!Ð"2Ó3Ü Ó/Ü#Ð$6Ó7Ø% lÑ3Ø&Ð'7Ñ8ñ	€Fð €Mùò) Uùóùós   ªCÁCÁ;C#c                 óT   • [        U S   S   S   U S   S   S   U S   S   S   SS9nU$ )Nr~   r   Ú	timestepsÚlinear_startÚ
linear_endÚscaled_linear)Únum_train_timestepsÚ
beta_startÚbeta_endÚbeta_schedule)r   )r°   Ú	schedulars     r0   Úcreate_diffusers_schedularrÕ   w  sM   € ÜØ+¨GÑ4°XÑ>¸{ÑKØ" 7Ñ+¨HÑ5°nÑEØ  Ñ)¨(Ñ3°LÑAØ%ñ	€Ið Ðr2   c                 óz   • U S   S   S   S   n[        UR                  UR                  UR                  S-  S9nU$ )Nr~   r   Úcond_stage_configr_   )Úd_modelÚencoder_layersÚencoder_ffn_dim)r"   Ún_embedÚn_layer)r°   Úbert_paramsrk   s      r0   Úcreate_ldm_bert_configrÞ   �  sM   € Ø! 'Ñ*¨8Ñ4Ð5HÑIÈ(ÑS€KÜØ×#Ñ#Ø"×*Ñ*Ø#×+Ñ+¨aÑ/ñ€Fð
 €Mr2   c           
      óD  • U(       a  U nGOL0 n[        U R                  5       5      nU(       a  SnOSn[        S U 5       5      S:”  a   U(       a™  [        R	                  SU S35        [        R	                  S5        U Hd  n	U	R                  S5      (       d  M  S	S
R                  U	R                  S5      SS 5      -   n
U R                  U
5      XiR                  US
5      '   Mf     Oo[        S U 5       5      S:”  a  [        R	                  S5        U H>  n	U	R                  U5      (       d  M  U R                  U	5      XiR                  US
5      '   M@     0 nUS   US'   US   US'   US   US'   US   US'   US   c  ODUS   S:X  d	  US   S:X  a!  US   US'   US   US'   US   US '   US!   US"'   O[        S#US    35      eUS$   S%:X  a   US   US&'   US   US''   US   US('   US!   US)'   S*U;   a  US*   b  S+U;   a  US+   US,'   US-   US.'   US/   US0'   U(       d   US1   US2'   US3   US4'   US5   US6'   US7   US8'   [        U Vs1 s H.  nS9U;   d  M  SR                  UR                  S5      SS: 5      iM0     sn5      n[        U5       VV	s0 s H!  nXæ V	s/ s H  n	S;U 3U	;   d  M  U	PM     sn	_M#     nnn	[        U Vs1 s H.  nS<U;   d  M  SR                  UR                  S5      SS: 5      iM0     sn5      n[        U5       VV	s0 s H!  nXæ V	s/ s H  n	S=U 3U	;   d  M  U	PM     sn	_M#     nnn	[        U Vs1 s H.  nS>U;   d  M  SR                  UR                  S5      SS: 5      iM0     sn5      n[        U5       VV	s0 s H!  nXæ V	s/ s H  n	S?U 3U	;   d  M  U	PM     sn	_M#     nnn	[        SU5       GH  nUS-
  US@   S-   -  nUS-
  US@   S-   -  nUU    V	s/ s H  n	S;U SA3U	;   d  M  S;U SB3U	;  d  M  U	PM     nn	UU    V	s/ s H  n	S;U SC3U	;   d  M  U	PM     nn	S;U SD3U;   a8  UR                  S;U SD35      USEU SF3'   UR                  S;U SG35      USEU SH3'   [        U5      nS;U SA3SEU SIU 3SJ.n[        UX¶U/USK9  [        U5      (       d  Mé  [        U5      nS;U SC3SEU SLU 3SJ.n[        UX¶U/USK9  GM     USM   nUS   nUS:   n[        U5      n[        UX¶USN9  [        U5      n[        UX¶USN9  [        U5      nSOSPSJ.n[        UX¶U/USK9  [        U5       GH\  nUUS@   S-   -  nUUS@   S-   -  nUU    V s/ s H  n [!        U S:5      PM     n!n 0 n"U! HE  nUR                  S5      SM   [!        US5      n#nUU";   a  U"U   R#                  U#5        M?  U#/U"U'   MG     [        U"5      S:”  Ga`  UU    V	s/ s H  n	S?U SA3U	;   d  M  U	PM     nn	UU    V	s/ s H  n	S?U SC3U	;   d  M  U	PM     nn	[        U5      n[        U5      nS?U SA3SQU SIU 3SJ.n[        UX¶U/USK9  [%        U"R'                  5       5       V$V%s0 s H  u  n$n%U$[%        U%5      _M     n"n$n%SRSS/U"R)                  5       ;   aa  [        U"R)                  5       5      R+                  SRSS/5      n&US?U SU& ST3   USQU SU3'   US?U SU& SV3   USQU SW3'   [        U5      S::X  a  / n[        U5      (       a*  [        U5      nS?U SC3SQU SLU 3SJ.n[        UX¶U/USK9  GMó  GMö  [        U!SSX9nU HV  nSR                  S>[-        U5      USY   /5      n'SR                  SZ[-        U5      S[[-        U5      US\   /5      n(UU'   UU('   MX     GM_     U(       Ga+  SMn)UR                  S]U) S^35      US_'   UR                  S]U) S`35      USa'   U)S:-  n)SMn*U*Sb:  aJ  UR                  S]U) S^35      UScU* S^3'   UR                  S]U) S`35      UScU* S`3'   U*S-  n*U)S:-  n)U*Sb:  a  MJ  UR                  S]U) S^35      USd'   UR                  S]U) S`35      USe'   [        U5       H;  nUR                  SfU Sg35      UShU S^3'   UR                  SfU Si35      UShU S`3'   M=     UR                  Sj5      USk'   UR                  Sl5      USm'   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	f s  sn	nf s  sn	f s  sn	f s  sn f s  sn	f s  sn	f s  sn%n$f )nzF
Takes a state dict and a config, and returns a converted checkpoint.
zcontrol_model.zmodel.diffusion_model.c              3   óB   #   • U  H  oR                  S 5      v •  M     g7f©Ú	model_emaN©Ú
startswith©Ú.0Úks     r0   Ú	<genexpr>Ú.convert_ldm_unet_checkpoint.<locals>.<genexpr>Ÿ  s   é € Ð7²$¨Q�|‰|˜K×(Ð(²$ùó   ‚éd   zCheckpoint z" has both EMA and non-EMA weights.zÀIn this conversion only the EMA weights are extracted. If you want to instead extract the non-EMA weights (useful to continue fine-tuning), please make sure to remove the `--extract_ema` flag.zmodel.diffusion_modelz
model_ema.Ú r+   r%   Nc              3   óB   #   • U  H  oR                  S 5      v •  M     g7frá   rã   rå   s     r0   rè   ré   ª  s   é € Ð;²d°—<‘< ×,Ð,²dùrê   z»In this conversion only the non-EMA weights are extracted. If you want to instead extract the EMA weights (usually better for inference), please make sure to add the `--extract_ema` flag.útime_embed.0.weightztime_embedding.linear_1.weightztime_embed.0.biasztime_embedding.linear_1.biasztime_embed.2.weightztime_embedding.linear_2.weightztime_embed.2.biasztime_embedding.linear_2.biasr¡   Útimestepr–   zlabel_emb.0.0.weightzclass_embedding.linear_1.weightzlabel_emb.0.0.biaszclass_embedding.linear_1.biaszlabel_emb.0.2.weightzclass_embedding.linear_2.weightzlabel_emb.0.2.biaszclass_embedding.linear_2.biasz$Not implemented `class_embed_type`: r¢   r”   zadd_embedding.linear_1.weightzadd_embedding.linear_1.biaszadd_embedding.linear_2.weightzadd_embedding.linear_2.biasr¨   zlabel_emb.weightzclass_embedding.weightzinput_blocks.0.0.weightzconv_in.weightzinput_blocks.0.0.biaszconv_in.biaszout.0.weightzconv_norm_out.weightz
out.0.biaszconv_norm_out.biaszout.2.weightzconv_out.weightz
out.2.biaszconv_out.biasÚinput_blocksr    zinput_blocks.Úmiddle_blockzmiddle_block.Úoutput_blockszoutput_blocks.r�   z.0z.0.opz.1z.0.op.weightúdown_blocks.ú.downsamplers.0.conv.weightz
.0.op.biasú.downsamplers.0.conv.biasz	.resnets.r=   ©rj   rk   z.attentions.r   )rk   rZ   r[   ú
up_blocks.z	conv.biaszconv.weightz.conv.weightú.upsamplers.0.conv.weightz
.conv.biasú.upsamplers.0.conv.biasr<   r>   Ú	up_blocksÚresnetsr?   zinput_hint_block.z.weightz(controlnet_cond_embedding.conv_in.weightz.biasz&controlnet_cond_embedding.conv_in.biasé   z!controlnet_cond_embedding.blocks.z)controlnet_cond_embedding.conv_out.weightz'controlnet_cond_embedding.conv_out.biaszzero_convs.z	.0.weightzcontrolnet_down_blocks.z.0.biaszmiddle_block_out.0.weightzcontrolnet_mid_block.weightzmiddle_block_out.0.biaszcontrolnet_mid_block.bias)ra   rw   ÚsumÚloggerÚwarningrä   r,   r-   ÚpoprA   ÚNotImplementedErrorrd   r­   rH   rt   rN   r1   rB   Úsortedrb   ÚvaluesÚindexÚstr)+rg   rk   r.   Úextract_emar±   Úskip_extract_state_dictÚunet_state_dictrw   Úunet_keyrX   Úflat_ema_keyÚnew_checkpointÚlayerÚnum_input_blocksÚlayer_idrð   Únum_middle_blocksÚmiddle_blocksÚnum_output_blocksrò   r¶   Úblock_idÚlayer_in_block_idrû   r]   rf   Ú	meta_pathÚresnet_0Úresnet_1Úresnet_0_pathsÚresnet_1_pathsÚattentions_pathsÚnameÚoutput_block_layersÚoutput_block_listÚ
layer_namerç   Úvr  Úold_pathrq   Ú
orig_indexÚdiffusers_indexs+                                              r0   Úconvert_ldm_unet_checkpointr"  ‹  só  € ö Ø$Šð ˆÜ�J—O‘OÓ%Ó&ˆæØ'‰Hà/ˆHô Ñ7±$Ó7Ó7¸#Ó=Æ+Ü�N‰N˜[¨¨Ð.PÐQÔRÜ�N‰Nðrôó �Ø—>‘>Ð"9×:Ó:Ø#/°"·'±'¸#¿)¹)ÀC».ÈÈÐ:LÓ2MÑ#M�LØAKÇÁÐP\ÓA]�O§K¡K°¸"Ó$=Ó>ò ô
 Ñ;±dÓ;Ó;¸cÓAÜ—‘ðqôó
 �Ø—>‘> (×+Ó+ØAKÇÁÐPSÓAT�O§K¡K°¸"Ó$=Ó>ñ ð €Nà7FÐG\Ñ7]€NÐ3Ñ4Ø5DÐEXÑ5Y€NÐ1Ñ2Ø7FÐG\Ñ7]€NÐ3Ñ4Ø5DÐEXÑ5Y€NÐ1Ñ2àÐ Ñ!Ñ)àØ	Ð"Ñ	# zÓ	1°VÐ<NÑ5OÐS_Ó5_Ø<KÐLbÑ<cˆÐ8Ñ9Ø:IÐJ^Ñ:_ˆÐ6Ñ7Ø<KÐLbÑ<cˆÐ8Ñ9Ø:IÐJ^Ñ:_ˆÐ6Ò7ä!Ð$HÈÐPbÑIcÐHdÐ"eÓfÐfàÐ#Ñ$¨Ó3Ø:IÐJ`Ñ:aˆÐ6Ñ7Ø8GÐH\Ñ8]ˆÐ4Ñ5Ø:IÐJ`Ñ:aˆÐ6Ñ7Ø8GÐH\Ñ8]ˆÐ4Ñ5ð ˜VÓ#ØÐ%Ñ&Ñ2Ð9KÈÓ9^Ø7FÐGYÑ7ZˆNÐ3Ñ4à'6Ð7PÑ'Q€NÐ#Ñ$Ø%4Ð5LÑ%M€N�>Ñ"æØ1@ÀÑ1PˆÐ-Ñ.Ø/>¸|Ñ/LˆÐ+Ñ,Ø,;¸NÑ,KˆÐ(Ñ)Ø*9¸,Ñ*Gˆ�Ñ'ô ÉÓsÊ¸uÐ[iÐmrÑ[rÓ:˜CŸH™H U§[¡[°Ó%5°b°qÐ%9Ö:ÉÑsÓtÐô Ð.Ô/ôâ/ˆHð 	 /ÓW¢/˜3°}ÀXÀJÐ5OÐSVÑ5V—3¡/ÑWÒWÙ/ð ñ ô ÉÓtÊÀÐ\jÐnsÑ\sÓ;˜SŸX™X e§k¡k°#Ó&6°r¸Ð&:Ö;ÉÑtÓuÐô Ð/Ô0ôâ0ˆHð 	 /ÓW¢/˜3°}ÀXÀJÐ5OÐSVÑ5V—3¡/ÑWÒWÙ0ð ñ ô ÉÓuÊÀÐ\kÐotÑ\tÓ;˜SŸX™X e§k¡k°#Ó&6°r¸Ð&:Ö;ÉÑuÓvÐô Ð/Ô0ôâ0ˆHð 	 /ÓX¢/˜3°~ÀhÀZÐ5PÐTWÑ5W—3¡/ÑXÒXÙ0ð ñ ô
 �1Ð&×'ˆØ˜‘E˜vÐ&8Ñ9¸AÑ=Ñ>ˆØ ™U vÐ.@Ñ'AÀAÑ'EÑFÐð (¨š?ó
Ú*�C°¸a¸SÀÐ.CÀsÑ.J‹CÐQ^Ð_`Ð^aÐafÐOgÐorÑOr�C™?ð 	ð 
ð &2°!¢_ÓU¢_˜c¸-ÈÀsÈ"Ð8MÐQTÑ8T—c¡_ˆ
ÐUà˜1˜#˜\Ð*¨oÓ=ØSb×SfÑSfØ ˜s ,Ð/óTˆN˜\¨(¨Ð3NÐOÑPð Ra×QdÑQdØ ˜s *Ð-óRˆN˜\¨(¨Ð3LÐMÑNô # 7Ó+ˆØ+¨A¨3¨bÐ1¸LÈÈ
ÐR[Ð\mÐ[nÐ:oÑpˆ	ÜØ�>ÈYÈKÐ`fò	
ô ˆz�?‹?Ü)¨*Ó5ˆEà"/°¨s°"Ð 5ÀÈXÈJÐVbÐctÐbuÐ>vÑwˆIÜ Ø�~ÐQZÐP[Ðdjõñ7 (ð> ˜QÑ€HØ˜qÑ!€JØ˜QÑ€Hä'¨Ó1€NÜ˜¨ÐQWÒXä'¨Ó1€NÜ˜¨ÐQWÒXä,¨ZÓ8ÐØ(Ð1IÑJ€IÜØ˜.ÐT]ÐS^Ðgmòô Ð$×%ˆØ˜Ð 2Ñ3°aÑ7Ñ8ˆØ Ð(:Ñ!;¸aÑ!?Ñ@ÐØCPÐQRÒCSÓTÒCS¸4œ~¨d°AÖ6ÑCSÐÐTØÐã(ˆEØ#(§;¡;¨sÓ#3°AÑ#6¼ÀuÈaÓ8P�jˆHØÐ,Ó,Ø! (Ñ+×2Ñ2°:Ö>à/9¨lÐ! (Ó+ñ )ô Ð Ó! AÔ%Ø&3°AÒ&6ÓXÒ&6˜s¸NÈ1È#ÈRÐ:PÐTWÑ:W—sÑ&6ˆGÐXØ)6°qÒ)9Ó[Ò)9 #¸~ÈaÈSÐPRÐ=SÐWZÑ=ZŸ#Ñ)9ˆJÐ[ä/°Ó8ˆNÜ& wÓ/ˆEà"0°°°2Ð 6ÀÈHÈ:ÐU^Ð_pÐ^qÐ?rÑsˆIÜ Ø�~ÐQZÐP[Ðdjòô ;AÐAR×AXÑAXÓAZÔ:[Ô \Ò:[±$°!°Q ¤F¨1£I¢Ñ:[ÐÑ \Ø˜]Ð+Ð/@×/GÑ/GÓ/IÓIÜÐ.×5Ñ5Ó7Ó8×>Ñ>ÀÈ]Ð?[Ó\�ØSbØ$ Q C q¨¨¨|Ð<ñT� ¨H¨:Ð5NÐOÑPð RaØ$ Q C q¨¨¨zÐ:ñR� ¨H¨:Ð5LÐMÑNô
 �z“? aÓ'Ø!#�Jä�:�‰Ü-¨jÓ9�à+¨A¨3¨bÐ1Ø'¨ z°Ð>OÐ=PÐQñ�	ô %Ø˜>ÐU^ÐT_Ðhnõò ô 0Ð0CÐ]^Ñ_ˆNÛ&�ØŸ8™8 _´c¸!³f¸dÀ5¹kÐ$JÓK�ØŸ8™8 [´#°h³-ÀÌCÐPaÓLbÐdhÐinÑdoÐ$pÓq�à+:¸8Ñ+D�˜xÓ(ô	 'ñe &÷p ð ˆ
àET×EXÑEXØ 
˜|¨7Ð3óF
ˆÐAÑBð DS×CVÑCVØ 
˜|¨5Ð1óD
ˆÐ?Ñ@ð 	�a‰ˆ
àˆà Ó!Ø[j×[nÑ[nØ# J <¨wÐ7ó\ˆNÐ>¸Ð>OÈwÐWÑXð Zi×YlÑYlØ# J <¨uÐ5óZˆNÐ>¸Ð>OÈuÐUÑVð ˜qÑ ˆOØ˜!‰OˆJð  Õ!ð GV×FYÑFYØ 
˜|¨7Ð3óG
ˆÐBÑCð ET×DWÑDWØ 
˜|¨5Ð1óE
ˆÐ@ÑAô
 Ð'Ö(ˆAØCR×CVÑCVÐYdÐefÐdgÐgpÐWqÓCrˆNÐ4°Q°C°wÐ?Ñ@ØAP×ATÑATÐWbÐcdÐbeÐelÐUmÓAnˆNÐ4°Q°C°uÐ=Ó>ñ )ð
 9H×8KÑ8KÐLgÓ8hˆÐ4Ñ5Ø6E×6IÑ6IÐJcÓ6dˆÐ2Ñ3àÐùòK tùâWùóùò uùâWùóùò vùâXùóùò
ùò VùòV Uùò YùÚ[ùó !]sÀ   É
cÉ'cÊ
cÊcÊ-cÊ3cË
c#Ë'c#Ì
c-Ìc(Ì+c(Ì1c-Í
c3Í'c3Î
c=Îc8Î)c8Î/c=Ï,dÏ>dÐ
dÐdÐ+dÕd×d×,d×;dØdÙ#dãcã(c-ã8c=c           
      óÔ	  • 0 n[        U R                  5       5      n[        S U 5       5      (       a  SOSnU H>  nUR                  U5      (       d  M  U R	                  U5      X%R                  US5      '   M@     0 nUS   US'   US   US'   US   US'   US   US'   US   US	'   US
   US'   US   US'   US   US'   US   US'   US   US'   US   US'   US   US'   US   US'   US   US'   US   US'   US   US'   [        U Vs1 s H.  nSU;   d  M  SR                  UR                  S5      S S 5      iM0     sn5      n[        U5       V	Vs0 s H!  o™U Vs/ s H  nSU	 3U;   d  M  UPM     sn_M#     n
n	n[        U Vs1 s H.  nSU;   d  M  SR                  UR                  S5      S S 5      iM0     sn5      n[        U5       V	Vs0 s H!  o™U Vs/ s H  nSU	 3U;   d  M  UPM     sn_M#     nn	n[        U5       H•  nX­    Vs/ s H  nSU 3U;   d  M  SU S3U;  d  M  UPM     nnSU S 3U;   a8  UR                  SU S 35      US!U S"3'   UR                  SU S#35      US!U S$3'   [        U5      nSU S%3S&U S'3S(.n[        XöUU/US)9  M—     U Vs/ s H  nS*U;   d  M  UPM     nnS+n[        S,US,-   5       HF  nU Vs/ s H  nS-U 3U;   d  M  UPM     nn[        U5      nS.U 3S/US,-
   3S(.n[        XöUU/US)9  MH     U Vs/ s H  nS0U;   d  M  UPM     nn[        U5      nS1S2S(.n[        XöUU/US)9  [        U5        [        U5       H†  nUS,-
  U-
  nUU    Vs/ s H  nSU 3U;   d  M  SU S33U;  d  M  UPM     nnS4U S53U;   a   US4U S53   US6U S73'   US4U S83   US6U S93'   [        U5      nSU S%3S:U S'3S(.n[        XöUU/US)9  Mˆ     U Vs/ s H  nS;U;   d  M  UPM     nnS+n[        S,US,-   5       HF  nU Vs/ s H  nS<U 3U;   d  M  UPM     nn[        U5      nS.U 3S/US,-
   3S(.n[        XöUU/US)9  MH     U Vs/ s H  nS=U;   d  M  UPM     nn[        U5      nS1S2S(.n[        XöUU/US)9  [        U5        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f s  snf s  snf s  snf s  snf s  snf s  snf )>Nc              3   óB   #   • U  H  oR                  S 5      v •  M     g7f)úfirst_stage_model.Nrã   rå   s     r0   rè   Ú-convert_ldm_vae_checkpoint.<locals>.<genexpr>‡  s   é € Ð)[ÒVZÐQR¯,©,Ð7K×*LÐ*LÒVZùrê   r%  rì   zencoder.conv_in.weightzencoder.conv_in.biaszencoder.conv_out.weightzencoder.conv_out.biaszencoder.norm_out.weightzencoder.conv_norm_out.weightzencoder.norm_out.biaszencoder.conv_norm_out.biaszdecoder.conv_in.weightzdecoder.conv_in.biaszdecoder.conv_out.weightzdecoder.conv_out.biaszdecoder.norm_out.weightzdecoder.conv_norm_out.weightzdecoder.norm_out.biaszdecoder.conv_norm_out.biaszquant_conv.weightzquant_conv.biaszpost_quant_conv.weightzpost_quant_conv.biaszencoder.downr+   r   zdown.z
decoder.upzup.z.downsamplezencoder.down.z.downsample.conv.weightzencoder.down_blocks.rô   z.downsample.conv.biasrõ   z.blockró   z.resnetsr=   rö   zencoder.mid.blockr    r%   zencoder.mid.block_z
mid.block_zmid_block.resnets.zencoder.mid.attnz
mid.attn_1r[   z	.upsamplezdecoder.up.z.upsample.conv.weightzdecoder.up_blocks.rø   z.upsample.conv.biasrù   r÷   zdecoder.mid.blockzdecoder.mid.block_zdecoder.mid.attn)ra   rw   Úanyrä   ÚgetrA   rd   r,   r-   r­   r   rK   rt   rR   rz   )rg   rk   Úvae_state_dictrw   Úvae_keyrX   r  r  Únum_down_blocksr  Údown_blocksÚnum_up_blocksrú   r¶   rû   rf   r  Úmid_resnetsÚnum_mid_res_blocksÚmid_attentionsr  s                        r0   Úconvert_ldm_vae_checkpointr1  ƒ  s£  € à€NÜ�
—‘Ó!Ó"€DÜ&)Ñ)[ÑVZÓ)[×&[Ñ&[Ñ"Ðac€GÛˆØ�>‰>˜'×"Ó"Ø7A·~±~ÀcÓ7JˆNŸ;™; w°Ó3Ó4ñ ð €Nà/=Ð>VÑ/W€NÐ+Ñ,Ø-;Ð<RÑ-S€NÐ)Ñ*Ø0>Ð?XÑ0Y€NÐ,Ñ-Ø.<Ð=TÑ.U€NÐ*Ñ+Ø5CÐD]Ñ5^€NÐ1Ñ2Ø3AÐBYÑ3Z€NÐ/Ñ0à/=Ð>VÑ/W€NÐ+Ñ,Ø-;Ð<RÑ-S€NÐ)Ñ*Ø0>Ð?XÑ0Y€NÐ,Ñ-Ø.<Ð=TÑ.U€NÐ*Ñ+Ø5CÐD]Ñ5^€NÐ1Ñ2Ø3AÐBYÑ3Z€NÐ/Ñ0à*8Ð9LÑ*M€NÐ&Ñ'Ø(6Ð7HÑ(I€NÐ$Ñ%Ø/=Ð>VÑ/W€NÐ+Ñ,Ø-;Ð<RÑ-S€NÐ)Ñ*ô Á~ÓqÂ~¸eÐYgÐkpÑYpÓ9˜3Ÿ8™8 E§K¡K°Ó$4°R°aÐ$8Ö9Á~ÑqÓr€Oä_dÐetÔ_uôÚ_uÐS[¡.ÓN¢.˜3°e¸H¸:Ð4FÈ#Ñ4M—3¡.ÑNÒNÑ_uð ñ ô
 Á^ÓmÂ^¸EÐWcÐglÑWlÓ7˜Ÿ™ %§+¡+¨cÓ"2°2°AÐ"6Ö7Á^ÑmÓn€Mä]bÐcpÔ]qôÚ]qÐQY¡.ÓL¢.˜3°c¸(¸Ð4DÈÑ4K—3¡.ÑLÒLÑ]qð ñ ô �?Ö#ˆØ"-¢.Óm¢.˜3°e¸A¸3°KÀ3Ñ4F“3ÈUÐSTÐRUÐU`ÐKaÐilÑKl—3¡.ˆÐmà˜1˜#Ð4Ð5¸ÓGØTb×TfÑTfØ ˜sÐ"9Ð:óUˆNÐ1°!°Ð4OÐPÑQð Sa×RdÑRdØ ˜sÐ"7Ð8óSˆNÐ1°!°Ð4MÐNÑOô ' wÓ/ˆØ# A 3 fÐ-¸ÀQÀCÀxÐ6PÑQˆ	Ü˜U°NÐ]fÐ\gÐpvÔwñ $ñ #1ÓO¢.˜3Ð4GÈ3Ñ4N—3¡.€KÐOØÐÜ�1Ð(¨1Ñ,Ö-ˆÙ"-ÓQ¢+˜3Ð3EÀaÀSÐ1IÈSÑ1P—3¡+ˆÐQä& wÓ/ˆØ(¨¨Ð,Ð7IÈ!ÈaÉ%ÈÐ5QÑRˆ	Ü˜U°NÐ]fÐ\gÐpvÔwñ .ñ &4ÓQ¢^˜cÐ7IÈSÑ7P—c¡^€NÐQÜ% nÓ5€EØ$Ð-EÑF€IÜ˜°ÐYbÐXcÐlrÒsÜ˜Ô'ä�=Ö!ˆØ  1Ñ$ qÑ(ˆà$ XÒ.ó
Ú.�C°C¸°zÐ2BÀcÑ2I‹CÐPSÐT\ÐS]Ð]fÐNgÐorÑNr�CÑ.ð 	ð 
ð ˜˜
Ð"7Ð8¸NÓJØP^Ø˜h˜ZÐ'<Ð=ñQˆNÐ/°¨sÐ2KÐLÑMð O]Ø˜h˜ZÐ':Ð;ñOˆNÐ/°¨sÐ2IÐJÑKô ' wÓ/ˆØ! ( ¨6Ð2¸ZÈÀsÈ(Ð;SÑTˆ	Ü˜U°NÐ]fÐ\gÐpvÔwñ! "ñ$ #1ÓO¢.˜3Ð4GÈ3Ñ4N—3¡.€KÐOØÐÜ�1Ð(¨1Ñ,Ö-ˆÙ"-ÓQ¢+˜3Ð3EÀaÀSÐ1IÈSÑ1P—3¡+ˆÐQä& wÓ/ˆØ(¨¨Ð,Ð7IÈ!ÈaÉ%ÈÐ5QÑRˆ	Ü˜U°NÐ]fÐ\gÐpvÔwñ .ñ &4ÓQ¢^˜cÐ7IÈSÑ7P—c¡^€NÐQÜ% nÓ5€EØ$Ð-EÑF€IÜ˜°ÐYbÐXcÐlrÒsÜ˜Ô'ØÐùòS rùâNùóùò
 nùâLùóùò
 nùò Pùò Rùò Rùò
ùò  Pùò Rùò RsÀ   Ä
R"Ä'R"Å
R,ÅR'Å+R'Å1R,Æ
R2Æ'R2Ç
R<ÇR7Ç)R7Ç/R<ÈSÈSÈ*SÊ!
SÊ/SËSË SÌ
SÌ$SÍ1SÎSÎSÏ-
SÏ;SÐS Ð,S Ñ"
S%Ñ0S%Ò'R,Ò7R<c                 ó–  ^^^• S mS mUU4S jmU4S jn[        U5      R                  5       nU R                  R                  R                  UR
                  R                  l        U R                  R                  R                  R                  UR
                  R                  R                  l
        T" UR
                  R                  U R                  R                  5        U" UR
                  R                  U R                  R                  R                  5        T" UR                  U R                  R                  5        U$ )Nc                 ó²  • UR                   R                  U R                  R                  l        UR                  R                  U R
                  R                  l        UR                  R                  U R                  R                  l        UR                  R                  U R                  l        UR                  R                  U R                  l
        g ©N)Úto_qÚweightÚq_projÚdataÚto_kÚk_projÚto_vÚv_projÚto_outÚout_projÚbias)Úhf_attn_layerÚpt_attn_layers     r0   Ú_copy_attn_layerÚ5convert_ldm_bert_checkpoint.<locals>._copy_attn_layerï  s–   € Ø+8×+=Ñ+=×+DÑ+Dˆ×Ñ×#Ñ#Ô(Ø+8×+=Ñ+=×+DÑ+Dˆ×Ñ×#Ñ#Ô(Ø+8×+=Ñ+=×+DÑ+Dˆ×Ñ×#Ñ#Ô(à(5×(<Ñ(<×(CÑ(Cˆ×ÑÔ%Ø&3×&:Ñ&:×&?Ñ&?ˆ×ÑÕ#r2   c                 óH   • UR                   U l         UR                  U l        g r4  )r6  r?  )Ú	hf_linearÚ	pt_linears     r0   Ú_copy_linearÚ1convert_ldm_bert_checkpoint.<locals>._copy_linear÷  s   € Ø$×+Ñ+ˆ	ÔØ"Ÿ™ˆ	�r2   c                 ó2  >• T" U R                   US   S   5        T" U R                  US   S   5        T" U R                  US   S   5        US   S   nT" U R                  UR                  S   S   5        T" U R
                  UR                  S   5        g )Nr   r%   r    )Úself_attn_layer_normÚfinal_layer_normÚ	self_attnÚfc1ÚnetÚfc2)Úhf_layerÚpt_layerÚpt_mlprB  rG  s      €€r0   Ú_copy_layerÚ0convert_ldm_bert_checkpoint.<locals>._copy_layerû  s�   ø€ á�X×2Ñ2°H¸Q±KÀ±NÔCÙ�X×.Ñ.°¸±¸A±Ô?ñ 	˜×+Ñ+¨X°a©[¸©^Ô<ð ˜!‘˜Q‘ˆÙ�X—\‘\ 6§:¡:¨a¡=°Ñ#3Ô4Ù�X—\‘\ 6§:¡:¨a¡=Õ1r2   c                 ó`   >• [        U 5       H  u  p#US:w  a  X"-  nXUS-    nT" X45        M      g )Nr   r    )rÈ   )Ú	hf_layersÚ	pt_layersr¶   rP  rQ  rS  s        €r0   Ú_copy_layersÚ1convert_ldm_bert_checkpoint.<locals>._copy_layers  s8   ø€ Ü$ YÖ/‰KˆAØ�A‹vØ‘�Ø  Q¨¡UÐ+ˆHÙ˜Ö+ò	 0r2   )r#   ÚevalÚtransformerÚ	token_embr6  r~   Úembed_tokensÚpos_embÚembÚembed_positionsr8  Ú
layer_normÚnormÚlayersÚattn_layersÚ	to_logits)rg   rk   rX  Úhf_modelrB  rS  rG  s       @@@r0   Úconvert_ldm_bert_checkpointrg  î  sî   ú€ ò@ò(ö2õ,ô ˜FÓ#×(Ñ(Ó*€Hð *4×)?Ñ)?×)IÑ)I×)PÑ)P€H‡N�N×ÑÔ&Ø1;×1GÑ1G×1OÑ1O×1SÑ1S×1ZÑ1Z€H‡N�N×"Ñ"×)Ñ)Ô.ñ �—‘×*Ñ*¨J×,BÑ,B×,GÑ,GÔHñ �—‘×&Ñ&¨
×(>Ñ(>×(JÑ(J×(QÑ(QÔRá�×#Ñ# Z×%;Ñ%;×%EÑ%EÔFà€Or2   c           	      óâ  • UcN  Sn [         R                  " X1S9n[	        5       (       a  [
        O[        nU" 5          [        U5      nS S S 5        OUn[        U R                  5       5      n0 nSS/n	U H9  n
U	 H0  nU
R                  U5      (       d  M  X
   XŠ[        US-   5      S  '   M2     M;     [	        5       (       a'  UR                  5        H  u  pÍ[        WUSUS	9  M     W$ [        WS
5      (       a$  [        UR                  R                   5      (       d  UR#                  SS 5        UR%                  U5        U$ ! [         a    [        SU S35      ef = f! , (       d  f       GN= f)Núopenai/clip-vit-large-patch14©Úlocal_files_onlyúWith local_files_only set to zg, you must first locally save the configuration in the following path: 'openai/clip-vit-large-patch14'.úcond_stage_model.transformerz#conditioner.embedders.0.transformerr+   Úcpu©rY   Ú
embeddingsú"text_model.embeddings.position_ids)r   Úfrom_pretrainedÚ	ExceptionÚ
ValueErrorr   r(   r   r	   ra   rw   rä   rd   rb   r)   Úhasattrrp  Úposition_idsr   Úload_state_dict)rg   rk  Útext_encoderÚconfig_namerk   ÚctxÚ
text_modelrw   Útext_model_dictÚremove_prefixesrX   ÚprefixÚ
param_nameÚparams                 r0   Úconvert_ldm_clip_checkpointr�     sm  € ØÑØ5ˆð	Ü#×3Ò3°KÑcˆFô %<×$=Ñ$=Õ Ä;ˆÙ�UÜ& vÓ.ˆJ÷ ˆUð "ˆ
ä�
—‘Ó!Ó"€Dà€Oà5Ð7\Ð]€OãˆÛ%ˆFØ�~‰~˜f×%Ó%Ø<F¹O�¤C¨°©Ó$5Ð$7Ð 8Ó9ó &ñ ô
 × Ñ Ø!0×!6Ñ!6Ö!8ÑˆJÜ'¨
°JÀÈUÔSñ "9ð Ðô ˜
 L×1Ñ1´g¸j×>SÑ>S×>`Ñ>`×6aÑ6aØ×ÑÐ DÀdÔKà×"Ñ" ?Ô3àÐøô? ó 	ÜØ/Ð0@Ð/Að  Bið  jóð ð	ú÷ ŽUús   ‡E ½EÅEÅ
E.))Úpositional_embeddingz/text_model.embeddings.position_embedding.weight)útoken_embedding.weightz,text_model.embeddings.token_embedding.weight)zln_final.weightz"text_model.final_layer_norm.weight)zln_final.biasz text_model.final_layer_norm.bias)Útext_projectionztext_projection.weight)	)z
resblocks.ztext_model.encoder.layers.)Úln_1Úlayer_norm1)Úln_2Úlayer_norm2)z.c_fc.z.fc1.)z.c_proj.z.fc2.)z.attnz
.self_attn)z	ln_final.z(transformer.text_model.final_layer_norm.)rƒ  z8transformer.text_model.embeddings.token_embedding.weight)r‚  z;transformer.text_model.embeddings.position_embedding.weightÚ|c                 ó¤  • [         R                  " SUS9n[        U5      n[        U R	                  5       5      n0 nU H-  nUR                  S5      (       d  M  X   XV[        S5      S  '   M/     UR                  R                  U5        U R                  5        VVs0 s H,  u  pxUR                  S5      (       d  M  U[        S5      S  U_M.     n	nn/ SQS/S	/S
/S/S/S.n
0 nU	R                  5        H½  u  plUS [        S5       nUR                  U5      S   R                  S5      S   nUR                  U5      S   R                  U5      S   SS nX¯   n[        U5      n[        U5       H=  u  nnSR                  UUU/5      nUR                  S   U-  nUUU-  US-   U-   UU'   M?     M¿     UR                  R                  U5        UR                  R                  U S   U S   S.5        UR                   R                  U S   U S   S.5        ["        R$                  R'                  U S   5      UR(                  l        U$ s  snnf )Nri  rj  rm  zcond_stage_model.transformer.zcond_stage_model.mapperzcond_stage_model.mapper.res)z
attn1.to_qz
attn1.to_kz
attn1.to_vzattn1.to_out.0r5   Únorm3zff.net.0.projzff.net.2)z
attn.c_qkvzattn.c_projr…  r‡  zmlp.c_fcz
mlp.c_projzblocks.irT   r+   r   r%   zcond_stage_model.final_ln.biasz cond_stage_model.final_ln.weight)r?  r6  rQ   rP   Úlearnable_vector)r   rr  r!   ra   rw   rä   rd   r~   rw  rb   r-   rÈ   r,   rc   ÚmapperrK  Úproj_outÚtorchÚnnÚ	ParameterÚuncond_vectorr8  )rg   rk  rk   r~   rw   r|  rX   rç   r  Úkeys_mapperÚMAPPINGÚmapped_weightsrY   r~  Úsuffixr  Úmapped_namesÚ
num_splitsr¶   Úmapped_nameÚnew_namerc   s                         r0   Ú#convert_paint_by_example_checkpointr›  `  sp  € Ü×-Ò-Ð.MÐ`pÑq€FÜ& vÓ.€Eä�
—‘Ó!Ó"€Dà€OãˆØ�>‰>Ð8×9Ó9ØKUÉ?ˆO¤Ð$CÓ DÐ FÐGÓHñ ð
 
‡K�K×Ñ Ô0ð
 ×$Ñ$Ô&ôâ&‰DˆAØ�<‰<Ð1×2ó 	3ˆŒ#Ð+Ó
,Ð
.Ð/°Ò2Ù&ð ñ ò AØ(Ð)Ø�	Ø�	Ø$Ð%Ø!�lñ€Gð €NØ!×'Ñ'Ö)‰
ˆØÐ&”s˜:“Ð'ˆØ—‘˜6Ó" 2Ñ&×,Ñ,¨SÓ1°"Ñ5ˆØ�y‰y˜Ó  Ñ$×*Ñ*¨6Ó2°1Ñ5°a¸Ð;ˆØ‘}ˆä˜Ó&ˆ
Ü'¨Ö5‰NˆAˆ{Ø—x‘x ¨°fÐ =Ó>ˆHØ—K‘K ‘N jÑ0ˆEØ',¨Q°©Y¸!¸a¹%À5¹Ð'IˆN˜8Ó$ó 6ñ *ð 
‡L�L× Ñ  Ô0ð 
×Ñ×*Ñ*àÐ?Ñ@Ø Ð!CÑDñ	
ôð 
‡N�N×"Ñ"à˜Ñ/Ø Ð!2Ñ3ñ	
ôô  %Ÿx™x×1Ñ1°*Ð=OÑ2PÓQ€E×ÑÔØ€Lùóas   ÂIÂ=Ic                 ó  •  [         R                  " U40 UDSU0D6n[	        5       (       a  [
        O[        nU" 5          U(       a  [        U5      O
[        U5      nS S S 5        [        U R                  5       5      n	/ n
US:X  aB  UR                  S:X  a2  X© Vs/ s H  o»R                  S5      (       d  M  UPM     sn-  n
U
S/-  n
0 nUS	-   U ;   a  [        XS	-      R                  S
   5      nOSnWR                  R                   R#                  S5      US'   U	 GH¡  nXê;   a  M  U[%        U5      S  [&        ;   aN  UR)                  S	5      (       a  X   R*                  R-                  5       nOX   nXü[&        U[%        U5      S     '   UR                  US-   5      (       d  MŠ  U[%        US-   5      S  nUR)                  S5      (       ag  US [%        S5      *  n[.        R1                  S U5      nX   S U2S S 24   UUS-   '   X   XÝS-  2S S 24   UUS-   '   X   US-  S 2S S 24   UUS-   '   GM  UR)                  S5      (       aU  US [%        S5      *  n[.        R1                  S U5      nX   S U UUS-   '   X   XÝS-   UUS-   '   X   US-  S  UUS-   '   GMƒ  [.        R1                  S U5      nX   UU'   GM¤     [	        5       (       a(  UR3                  5        H  u  nn[5        UUSUS9  M     U$ [7        US5      (       a$  [7        UR                   R8                  5      (       d  UR;                  SS 5        UR=                  U5        U$ ! [         a    [        SU SU S35      ef = f! , (       d  f       GN= fs  snf )Nrk  rl  zH, you must first locally save the configuration in the following path: 'z'.ústabilityai/stable-diffusion-2é   z/cond_stage_model.model.transformer.resblocks.23z&cond_stage_model.model.text_projectionr„  r   é   rv  rq  ztransformer.z.in_proj_weightc                 óZ   • [         [        R                  " U R                  S5      5         $ ©Nr   ©Ú	protectedÚreÚescapeÚgroup©Úms    r0   Ú<lambda>Ú.convert_open_clip_checkpoint.<locals>.<lambda>Ú  ó   € ¼	Ä"Ç)Â)ÈAÏGÉGÐTUËJÓBWÒ8Xr2   z.q_proj.weightr    z.k_proj.weightz.v_proj.weightz.in_proj_biasc                 óZ   • [         [        R                  " U R                  S5      5         $ r¡  r¢  r§  s    r0   r©  rª  à  r«  r2   z.q_proj.biasz.k_proj.biasz.v_proj.biasc                 óZ   • [         [        R                  " U R                  S5      5         $ r¡  r¢  r§  s    r0   r©  rª  å  r«  r2   rn  ro  rp  )r   rr  rs  rt  r   r(   r   r
   r	   ra   rw   Únum_hidden_layersrä   r®   rc   r{  rp  Ú
get_bufferrd   Útextenc_conversion_mapÚendswithÚTÚ
contiguousÚtextenc_patternÚsubrb   r)   ru  rv  r   rw  )rg   ry  r~  Úhas_projectionrk  Úconfig_kwargsrk   rz  r{  rw   Úkeys_to_ignorerç   r|  rØ   rX   rY   Únew_keyr  r€  s                      r0   Úconvert_open_clip_checkpointrº  £  sÏ  € ð
Ü×/Ò/°Ñp¸}ÑpÐ_oÒpˆô !8× 9Ñ 9Õ
¼{€CÙ	�Þ<JÔ0°Ô8ÔP]Ð^dÓPeˆ
÷ 
ô �
—‘Ó!Ó"€Dà€NØÐ6Ó6¸6×;SÑ;SÐWYÓ;Yà dÓn¢d ¯l©lÐ;l×.mŸ1¡dÑnÑnˆØÐCÐDÑDˆà€OàÐ!Ñ! ZÓ/Ü�jÐ*;Ñ!;Ñ<×BÑBÀ1ÑEÓF‰àˆà<F×<QÑ<Q×<\Ñ<\×<gÑ<gÐhvÓ<w€OÐ8Ñ9äˆØÓ ÙØŒs�6‹{ˆ}ÐÔ!7Ó7Ø�|‰|Ð-×.Ñ.Ø"™×)Ñ)×4Ñ4Ó6‘à"™�àJOÔ2°3´s¸6³{°}Ð3EÑFÑGà�>‰>˜& >Ñ1×2Ó2Øœ#˜f ~Ñ5Ó6Ð8Ð9ˆGØ×ÑÐ 1×2Ñ2Ø!Ð";¤SÐ):Ó%;Ð$;Ð<�Ü)×-Ñ-Ñ.XÐZaÓb�Ø>H¹oÈhÈwÈhÒXYÈkÑ>Z� Ð*:Ñ :Ñ;Ø>H¹oÈgÐbcÑXcÐNcÒefÐNfÑ>g� Ð*:Ñ :Ñ;Ø>H¹oÈgÐXYÉkÉmÒ]^ÐN^Ñ>_� Ð*:Ñ :Ô;Ø×!Ñ! /×2Ñ2Ø!Ð"9¤S¨Ó%9Ð$9Ð:�Ü)×-Ñ-Ñ.XÐZaÓb�Ø<F¹OÈHÈWÐ<U� ¨.Ñ 8Ñ9Ø<F¹OÈGÐ`aÑVaÐ<b� ¨.Ñ 8Ñ9Ø<F¹OÈGÐVWÉKÈMÐ<Z� ¨.Ñ 8Ô9ä)×-Ñ-Ñ.XÐZaÓb�à+5©?� Ô(ñ9 ô< × Ñ Ø!0×!6Ñ!6Ö!8ÑˆJ˜Ü'¨
°JÀÈUÔSñ "9ð Ðô ˜
 L×1Ñ1´g¸j×>SÑ>S×>`Ñ>`×6aÑ6aØ×ÑÐ DÀdÔKà×"Ñ" ?Ô3àÐøôC ó 
ÜØ+Ð,<Ð+=ð  >Fð  GRð  FSð  SUð  Vó
ð 	
ð
ú÷ 
Žüò os"   ‚M ¿M4ÂNÂ7NÍM1Í4
Nc                 óZ  • U S   S   S   nUS   nUR                  S5      S   nUS:X  aL  UR                  R                  nUS:X  a"  [        5       n[        R
                  " S	US
9nXV4$ [        SU 35      eUS:X  a"  [        5       n[        R
                  " SUS
9nXV4$ [        SU 35      e)zÌ
Returns the image processor and clip image encoder for the img2img unclip pipeline.

We currently know of two types of stable unclip models which separately use the clip and the openclip image
encoders.
r~   r   Úembedder_configÚtargetr+   rT   ÚClipImageEmbedderzViT-L/14ri  rj  z<Unknown CLIP checkpoint name in stable diffusion checkpoint ÚFrozenOpenCLIPImageEmbedderz%laion/CLIP-ViT-H-14-laion2B-s32B-b79KzAUnknown CLIP image embedder class in stable diffusion checkpoint )r-   r   r~   r   r   rr  r  )r°   rk  Úimage_embedder_configÚsd_clip_image_embedder_classÚclip_model_nameÚfeature_extractorÚimage_encoders          r0   Ústable_unclip_image_encoderrÅ  õ  sì   € ð ,¨GÑ4°XÑ>Ð?PÑQÐà#8¸Ñ#BÐ Ø#?×#EÑ#EÀcÓ#JÈ2Ñ#NÐ à#Ð':Ó:Ø/×6Ñ6×<Ñ<ˆà˜jÓ(Ü 2Ó 4ÐÜ9×IÒIØ/ÐBRñˆMð  Ð+Ð+ô &Ð(dÐetÐduÐ&vÓwÐwà	%Ð)FÓ	FÜ.Ó0ÐÜ5×EÒEØ3ÐFVñ
ˆð Ð+Ð+ô	 "ØOÐPlÐOmÐnó
ð 	
r2   Úclip_stats_pathÚdevicec                 óÈ  • U S   S   S   nUS   nUR                  S5      S   nUS:X  a«  UR                  nUR                  nUR                  R                  nUR                  R
                  n[        US9n[        XgS	9n	S
U;   aL  Uc  [        S5      e[        R                  " XS9u  p«U
SSS24   n
USSS24   nU
US.nUR                  U5        X‰4$ [        SU 35      e)aQ  
Returns the noising components for the img2img and txt2img unclip pipelines.

Converts the stability noise augmentor into
1. a `StableUnCLIPImageNormalizer` for holding the CLIP stats
2. a `DDPMScheduler` for holding the noise schedule

If the noise augmentor config specifies a clip stats path, the `clip_stats_path` must be provided.
r~   r   Únoise_aug_configr½  r+   rT   ÚCLIPEmbeddingNoiseAugmentation)Úembedding_dim)rÐ   rÓ   rÆ  Nz6This stable unclip config requires a `clip_stats_path`©Úmap_location)ÚmeanÚstdzUnknown noise augmentor class: )r-   r   Útimestep_dimÚnoise_schedule_configrÌ   rÓ   r'   r   rt  r�  Úloadrw  r  )r°   rÆ  rÇ  rÉ  Únoise_aug_classrË  Úmax_noise_levelrÓ   Úimage_normalizerÚimage_noising_schedulerÚ	clip_meanÚclip_stdÚclip_stats_state_dicts                r0   Ú&stable_unclip_image_noising_componentsrÚ    s  € ð ' wÑ/°Ñ9Ð:LÑMÐØ& xÑ0€OØ%×+Ñ+¨CÓ0°Ñ4€OàÐ:Ó:Ø+×2Ñ2ÐØ(×5Ñ5ˆØ*×@Ñ@×JÑJˆØ(×>Ñ>×LÑLˆä6À]ÑSÐÜ"/ÀOÑ"qÐàÐ 0Ó0ØÑ&Ü Ð!YÓZÐZä"'§*¢*¨_Ñ"RÑˆIØ! $ª 'Ñ*ˆIØ ¢a Ñ(ˆHð "Øñ%Ð!ð
 ×,Ñ,Ð-BÔCð Ð4Ð4ô "Ð$CÀOÐCTÐ"UÓVÐVr2   c           	      ó®  • [        XSS9nXHS'   UR                  S5        Ub  XhS'   Ub  XxS'   [        5       (       a  [        O[        n	U	" 5          [        S0 UD6n
S S S 5        SU ;   a  SnOSn[        U UUUSUS	9n[        5       (       a'  UR                  5        H  u  pÞ[        W
US
US9  M     W
$ W
R                  U5        U
$ ! , (       d  f       Np= f)NT)r{   r±   Úupcast_attentionrš   r    rž   rî   F)r.   r  r±   r  rn  ro  © )
r¼   r   r   r(   r   r   r"  rb   r)   rw  )rg   r°   Úcheckpoint_pathr{   rÜ  r  r    rž   Úctrlnet_configrz  r±   r  Úconverted_ctrl_checkpointr  r€  s                  r0   Úconvert_controlnet_checkpointrá  G  s÷   € ô 2°/ÐeiÑj€NØ)9Ð%Ñ&à×Ñ�}Ô%àÑ(Ø2GÐ.Ñ/àÑ&Ø0CÐ,Ñ-ä 7× 9Ñ 9Õ
¼{€CÙ	�Ü$Ñ6 ~Ñ6ˆ
÷ 
ð
  
Ó*Ø"&Ñà"'Ðä ;ØØØØØØ 7ñ!Ðô × Ñ Ø!:×!@Ñ!@Ö!BÑˆJÜ'¨
°JÀÈUÔSñ "Cð
 Ðð 	×"Ñ"Ð#<Ô=àÐ÷3 
�ús   ÁCÃ
CÚcheckpoint_path_or_dictÚoriginal_config_fileÚprediction_typeÚ
model_typer  Úscheduler_typeÚnum_in_channelsrÜ  Úfrom_safetensorsÚstable_unclipÚstable_unclip_priorr±   ÚadapterÚload_safety_checkerÚsafety_checkerrÃ  Úpipeline_classÚreturnc                 ór  • SSK JnJnJnJnJn Jn!Jn"Jn#J	n$J
n%Jn&Jn'  US:X  a  Sn[        U [        5      (       aL  U
(       a  SSKJn(  U(" U SS9n)ONU	c  [#        5       n	[$        R&                  " X	S	9n)O,[$        R&                  " X	S	9n)O[        U [(        5      (       a  U n)S
W);   a  U)S
   n*O[*        R-                  S5        Sn*SU);   a  U)S   n)SU);   a  M  Ucâ  Sn+Sn,Sn-UU!:H  n.Sn/Ub  SU;   a  US   nOSn/U+U);   a0  U)U+   R.                  S   S:X  a  Ub  SU;   a  US   nOSn/U*S:X  a  SnO/U,U);   a  Ub  SU;   a  US   nOSn/OU-U);   a  Ub  SU;   a  US   nOSn/U.(       a  Sn/U/b-  [1        [2        R4                  " U/[6        S9R8                  5      nOK[;        US5       n0U0R=                  5       nSSS5        O%[;        US5       n0U0R=                  5       nSSS5        [>        R@                  " U5      n1UcQ  SU1S    S!   ;   aE  U1S    S!   S   b9  U1S    S!   S   S"   RC                  S#5      S   n[*        R-                  S$U 35        O.Uc+  U1S    S!   S%   b  U1S    S!   S%   S!   S&   S':X  a  S(nOS)nUc  SnUc  US*;  a  U(       d  U OUnO
US(:X  a  U%OU#nUc  UUU$U"4;   a  S+nUc	  UU!:X  a  S,nOUc  S-nS.U1S    S!   ;   a  UU1S    S!   S.   S!   S/'   OS%U1S    S!   ;   a  UU1S    S!   S%   S!   S/'   S0U1S    S!   ;   a*  U1S    S!   S0   S1:X  a  Uc
  U*S2:X  a  S3OSnUc
  U*S2:X  a  S4OS5nO
Uc  S3nUc  S4nUc4  S6U1S    S!   ;   a(  [        U [        5      (       a  U OS7n2[E        U)U1U2X(U5      nS8U1S    S!   ;   a  U1S    S!   S8   n3OS9n3US*;   a'  S:S;S<S=U3S3S>S?SS@SASB.n4[F        RH                  " U45      n5SCnODSDU1S    S!   ;   a  U1S    S!   SD   n6OSEn6SFU1S    S!   ;   a  U1S    S!   SF   n7OSGn7[K        U7S:U6U3S@S?S?USH9n5U5RM                  S?SI9  USJ:X  a1  [)        U5RN                  5      n8SU8SK'   [P        RH                  " U85      n5OÛUSL:X  a!  [R        RH                  " U5RN                  5      n5O´USM:X  a!  [T        RH                  " U5RN                  5      n5O�USC:X  a!  [F        RH                  " U5RN                  5      n5OfUSN:X  a!  [V        RH                  " U5RN                  5      n5O?USO:X  a!  [X        RH                  " U5RN                  5      n5OUSP:X  a  U5n5O[[        SQU SR35      eUU!:X  a  U1S    S!   S.   S!   SS   n[]        U1UST9n9UU9SU'   [        U [        5      (       a  U OS7n2[_        U)U9U2USV9n:[a        5       (       a  [b        O[d        n;U;" 5          [g        S‘0 U9D6n<SSS5        [a        5       (       a-  US*;  a&  U:Ri                  5        H  u  n=n>[k        W<U=SU>SW9  M     OW<Rm                  U:5        UcÅ  UcÂ  [o        U1UST9n?[q        U)U?5      n@S U1;   a!  S!U1S    ;   a  SXU1S    S!   ;   a  U1S    S!   SX   nAOSYnAWAU?SZ'   [a        5       (       a  [b        O[d        n;U;" 5          [s        S‘0 U?D6nSSS5        [a        5       (       a'  W@Ri                  5        H  u  n=n>[k        UU=SU>SW9  M     O*URm                  W@5        OUc  [r        Rt                  " UUS[9nUS\:X  Ga°  S]nBS^S_0nCUc  [w        U)WB4S`U0WCD6nDOUnD [x        Rt                  " S]SaUSb9nUc“  U(       a'  U" UWDUW<U5UUUSe9nE[}        UESf5      (       a  S?WEl?        WE$ UU!:X  a9  [J        Rt                  " SgShSi9n5[€        Rt                  " SgSjSi9nFU" UWDUW<U5UFUUSk9nEUE$ U" UWDUW<U5UUSl9nE[}        UESf5      (       a  S?WEl?        WE$ [ƒ        U1XÙSm9u  nGnHUSn:X  a  […        U15      u  nnIU&" UUIWGWHUWDW<U5USo9	nEUE$ USp:X  a£  Ub  USq:X  az  SrnJ[†        Rt                  " UJSsUSb9nK [x        Rt                  " StUS[9nL[ˆ        Rt                  " StUS[9nM[Š        Rt                  " WJSvUSb9nN[€        RH                  " UNRN                  5      nNO[�        SwU 35      eU'" WLWMWKWNWGWHUWDW<U5USx9nEUE$ [�        SyU 35      eUSz:X  aD  [�        U)5      nO [x        Rt                  " StUS[9n [�        Rt                  " S{US[9nU" UWOW<U5SUS}9nEUE$ US~:X  a|  [“        U)UUS9nD Uc  [x        Rt                  " StUS[9OUnU(       a*  [”        Rt                  " S{US[9n[�        Rt                  " S{US[9nU(       a  U" UWDUW<UU5UUS€9nEUE$ U" UWDUW<U5UUSl9nE WE$ US*;   Ga%  US):H  nPUPS?L a  Uc   [x        Rt                  " StUS[9nWPS?L a  Uc
  [“        U)US[9nUc   [x        Rt                  " S�S‚USƒ9nUc"  S�nBS…S†0nCWP(       a  S‡OSˆnQ[w        U)WB4UQSUS‰.WCD6n[a        5       (       a&  U:Ri                  5        H  u  n=n>[k        W<U=SU>SW9  M     U(       a  U" UUUUUW<UU5SSŠ9	nEUE$ U(       a  U" UUUUUW<UU5SS‹9	nEUE$ UUUUUW<U5SŒ.nRUU#:X  d  UU$:X  a  WRR—                  S�WP05        WP(       a  WRR—                  SŽS?05        U" S‘0 WRD6nE WE$ [™        U15      nS[›        U)US5      nD[œ        Rt                  " S�US[9nU" UUDUW<U5S�9nEWE$ ! , (       d  f       GNØ= f! , (       d  f       GNê= f! , (       d  f       GNG= f! , (       d  f       GNŒ= f! [z         a    [[        ScU Sd35      ef = f! [z         a    [[        ScU Su35      ef = f! [z         a    [[        ScU Su35      ef = f! [z         a    [[        ScU S|35      ef = f! [z         a    [[        ScU Su35      ef = f! [z         a    [[        ScU Su35      ef = f! [z         a    [[        ScU S„35      ef = f)’a“  
Load a Stable Diffusion pipeline object from a CompVis-style `.ckpt`/`.safetensors` file and (ideally) a `.yaml`
config file.

Although many of the arguments can be automatically inferred, some of these rely on brittle checks against the
global step count, which will likely fail for models that have undergone further fine-tuning. Therefore, it is
recommended that you override the default values and/or supply an `original_config_file` wherever possible.

Args:
    checkpoint_path_or_dict (`str` or `dict`): Path to `.ckpt` file, or the state dict.
    original_config_file (`str`):
        Path to `.yaml` config file corresponding to the original architecture. If `None`, will be automatically
        inferred by looking for a key that only exists in SD2.0 models.
    image_size (`int`, *optional*, defaults to 512):
        The image size that the model was trained on. Use 512 for Stable Diffusion v1.X and Stable Diffusion v2
        Base. Use 768 for Stable Diffusion v2.
    prediction_type (`str`, *optional*):
        The prediction type that the model was trained on. Use `'epsilon'` for Stable Diffusion v1.X and Stable
        Diffusion v2 Base. Use `'v_prediction'` for Stable Diffusion v2.
    num_in_channels (`int`, *optional*, defaults to None):
        The number of input channels. If `None`, it will be automatically inferred.
    scheduler_type (`str`, *optional*, defaults to 'pndm'):
        Type of scheduler to use. Should be one of `["pndm", "lms", "heun", "euler", "euler-ancestral", "dpm",
        "ddim"]`.
    model_type (`str`, *optional*, defaults to `None`):
        The pipeline type. `None` to automatically infer, or one of `["FrozenOpenCLIPEmbedder",
        "FrozenCLIPEmbedder", "PaintByExample"]`.
    is_img2img (`bool`, *optional*, defaults to `False`):
        Whether the model should be loaded as an img2img pipeline.
    extract_ema (`bool`, *optional*, defaults to `False`): Only relevant for
        checkpoints that have both EMA and non-EMA weights. Whether to extract the EMA weights or not. Defaults to
        `False`. Pass `True` to extract the EMA weights. EMA weights usually yield higher quality images for
        inference. Non-EMA weights are usually better to continue fine-tuning.
    upcast_attention (`bool`, *optional*, defaults to `None`):
        Whether the attention computation should always be upcasted. This is necessary when running stable
        diffusion 2.1.
    device (`str`, *optional*, defaults to `None`):
        The device to use. Pass `None` to determine automatically.
    from_safetensors (`str`, *optional*, defaults to `False`):
        If `checkpoint_path` is in `safetensors` format, load checkpoint with safetensors instead of PyTorch.
    load_safety_checker (`bool`, *optional*, defaults to `True`):
        Whether to load the safety checker or not. Defaults to `True`.
    safety_checker (`StableDiffusionSafetyChecker`, *optional*, defaults to `None`):
        Safety checker to use. If this parameter is `None`, the function will load a new instance of
        [StableDiffusionSafetyChecker] by itself, if needed.
    feature_extractor (`AutoFeatureExtractor`, *optional*, defaults to `None`):
        Feature extractor to use. If this parameter is `None`, the function will load a new instance of
        [AutoFeatureExtractor] by itself, if needed.
    pipeline_class (`str`, *optional*, defaults to `None`):
        The pipeline class to use. Pass `None` to determine automatically.
    local_files_only (`bool`, *optional*, defaults to `False`):
        Whether or not to only look at local files (i.e., do not try to download the model).
    vae (`AutoencoderKL`, *optional*, defaults to `None`):
        Variational Auto-Encoder (VAE) Model to encode and decode images to and from latent representations. If
        this parameter is `None`, the function will load a new instance of [CLIP] by itself, if needed.
    text_encoder (`CLIPTextModel`, *optional*, defaults to `None`):
        An instance of [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel)
        to use, specifically the [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)
        variant. If this parameter is `None`, the function will load a new instance of [CLIP] by itself, if needed.
    tokenizer (`CLIPTokenizer`, *optional*, defaults to `None`):
        An instance of
        [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer)
        to use. If this parameter is `None`, the function will load a new instance of [CLIPTokenizer] by itself, if
        needed.
    config_files (`dict[str, str]`, *optional*, defaults to `None`):
        A dictionary mapping from config file names to their contents. If this parameter is `None`, the function
        will load the config files by itself, if needed. Valid keys are:
            - `v1`: Config file for Stable Diffusion v1
            - `v2`: Config file for Stable Diffusion v2
            - `xl`: Config file for Stable Diffusion XL
            - `xl_refiner`: Config file for Stable Diffusion XL Refiner
    return: A StableDiffusionPipeline object representing the passed-in `.ckpt`/`.safetensors` file.
r   )ÚLDMTextToImagePipelineÚPaintByExamplePipelineÚ!StableDiffusionControlNetPipelineÚStableDiffusionInpaintPipelineÚStableDiffusionPipelineÚStableDiffusionUpscalePipelineÚ*StableDiffusionXLControlNetInpaintPipelineÚ StableDiffusionXLImg2ImgPipelineÚ StableDiffusionXLInpaintPipelineÚStableDiffusionXLPipelineÚStableUnCLIPImg2ImgPipelineÚStableUnCLIPPipelinezv-predictionÚv_prediction)Ú	load_filern  )rÇ  NrÌ  Úglobal_stepz"global_step key not found in modelÚ
state_dictzMmodel.diffusion_model.input_blocks.2.1.transformer_blocks.0.attn2.to_k.weightzEconditioner.embedders.1.model.transformer.resblocks.9.mlp.c_proj.biaszEconditioner.embedders.0.model.transformer.resblocks.9.mlp.c_proj.biasÚv1zjhttps://raw.githubusercontent.com/CompVis/stable-diffusion/main/configs/stable-diffusion/v1-inference.yamlrT   rŸ  Úv2zphttps://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/v2-inference-v.yamli°­ TÚxlzghttps://raw.githubusercontent.com/Stability-AI/generative-models/main/configs/inference/sd_xl_base.yamlÚ
xl_refinerzjhttps://raw.githubusercontent.com/Stability-AI/generative-models/main/configs/inference/sd_xl_refiner.yamlznhttps://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/x4-upscaling.yaml)ÚtimeoutÚrr×   r~   r   r½  r+   z1no `model_type` given, `model_type` inferred as: r‚   r�   r’   ÚSDXLúSDXL-Refiner)r  r  é	   é   r_   r�   r˜   Úparameterizationr  iøY Úepsiloné   i   r€   rì   rÌ   iè  rÏ   g_ÎQÚK?gú~j¼t“ˆ?Úlinearg      ð?Fr%   Úleading)rÓ   rÑ   rÒ   Úinterpolation_typerÐ   rä  Úsample_max_valueÚset_alpha_to_oneÚskip_prk_stepsÚsteps_offsetÚtimestep_spacingÚeulerrÍ   g{®Gáz”?rÎ   gÃõ(\�Âµ?)rÒ   rÓ   rÑ   rÐ   r  Úclip_sampler  rä  )r  Úpndmr  ÚlmsÚheunzeuler-ancestralÚdpmÚddimzScheduler of type z doesn't exist!r{   )r{   rÜ  )r.   r  ro  Úscale_factorgÿ²{ò°PÇ?Úscaling_factorrj  ÚFrozenOpenCLIPEmbedderr�  Ú	subfolderrx  rk  Ú	tokenizer)r   rk  rl  zd, you must first locally save the tokenizer in the following path: 'stabilityai/stable-diffusion-2'.)Úvaerx  r!  ÚunetÚ	schedulerr±   rí  rÃ  Úrequires_safety_checkerz(stabilityai/stable-diffusion-x4-upscalerr$  )r   Úlow_res_scheduler)r"  rx  r!  r#  r$  r&  rí  rÃ  )r"  rx  r!  r#  r$  rí  rÃ  )rÆ  rÇ  Úimg2img)	rÃ  rÄ  rÕ  rÖ  r!  rx  r#  r$  r"  Útxt2imgÚkarlozkakaobrain/karlo-v1-alphaÚpriorri  zc, you must first locally save the tokenizer in the following path: 'openai/clip-vit-large-patch14'.Úprior_schedulerz'unknown prior for stable unclip model: )Úprior_tokenizerÚprior_text_encoderr*  r+  rÕ  rÖ  r!  rx  r#  r$  r"  zunknown `stable_unclip` type: ÚPaintByExamplez'CompVis/stable-diffusion-safety-checkerzu, you must first locally save the feature_extractor in the following path: 'CompVis/stable-diffusion-safety-checker'.)r"  rÄ  r#  r$  rí  rÃ  ÚFrozenCLIPEmbedder)rk  rx  )r"  rx  r!  r#  r±   r$  rí  rÃ  z(laion/CLIP-ViT-bigG-14-laion2B-39B-b160kÚ!)Ú	pad_tokenrk  zŠ, you must first locally save the tokenizer in the following path: 'laion/CLIP-ViT-bigG-14-laion2B-39B-b160k' with `pad_token` set to '!'.Úprojection_dimr“   zconditioner.embedders.0.model.zconditioner.embedders.1.model.)r~  r¶  rk  )	r"  rx  r!  Útext_encoder_2Útokenizer_2r#  r±   r$  Úforce_zeros_for_empty_prompt)	r"  rx  r!  r3  r4  r#  rë  r$  r5  )r"  rx  r!  r3  r4  r#  r$  Úrequires_aesthetics_scorer5  zbert-base-uncased)ÚvqvaeÚbertr!  r#  r$  rÝ  )OÚ	diffusersrñ  rò  ró  rô  rõ  rö  r÷  rø  rù  rú  rû  rü  r`   r  Úsafetensors.torchrþ  r   r�  rÒ  Údictrþ   Údebugrc   r   Úrequestsr(  r   ÚcontentÚopenÚreadÚyamlÚ	safe_loadr-   rá  r   Úfrom_configr   Úregister_to_configrk   r   r   r   r   r   rt  r¼   r"  r   r(   r   r   rb   r)   rw  rÊ   r1  r   rr  rº  r   rs  ru  r%  r   rÚ  rÅ  r   r
   r   r  r›  r   r�  r&   ÚupdaterÞ   rg  r   )Trâ  rã  r{   rä  rå  r  ræ  rç  rÜ  rÇ  rè  ré  rê  rÆ  r±   rë  rì  rí  rÃ  rî  rk  Úvae_pathr"  rx  r3  r!  r4  Úconfig_filesrñ  rò  ró  rô  rõ  rö  r÷  rø  rù  rú  rû  rü  rB  rg   rÿ  Úkey_name_v2_1Úkey_name_sd_xl_baseÚkey_name_sd_xl_refinerÚ
is_upscaleÚ
config_urlÚfr°   r.   rÐ   Úscheduler_dictr$  rÑ   rÒ   rk   r�   Úconverted_unet_checkpointrz  r#  r  r€  Ú
vae_configÚconverted_vae_checkpointÚvae_scaling_factorry  r·  r{  Úpiper&  rÕ  rÖ  rÄ  Úkarlo_modelr*  r,  Úprior_text_modelr+  Úvision_modelÚ
is_refinerr~  Úpipeline_kwargsÚtext_configsT                                                                                       r0   Ú,download_from_original_stable_diffusion_ckptrZ  y  sÒ  € ÷R÷ ÷ ó ð ˜.Ó(Ø(ˆäÐ)¬3×/Ñ/ÞÝ@á"Ð#:À5ÑI‰Jà‰~Ü#›�Ü"ŸZšZÐ(?ÑU‘
ä"ŸZšZÐ(?ÑU‘
Ü	Ð+¬T×	2Ñ	2Ø,ˆ
ð ˜
Ó"Ø  Ñ/‰ä�‰Ð9Ô:Øˆð ˜*Ó
$Ø Ñ-ˆ
ð ˜*Õ
$ð Ñ#ØgˆØeÐØ!hÐØ#Ð'EÑEˆ
àˆ
ð Ñ#¨°Ó(<Ø#/°Ñ#5Ñ ð FˆJà˜JÓ&¨:°mÑ+D×+JÑ+JÈ2Ñ+NÐRVÓ+VàÑ'¨D°LÓ,@Ø'3°DÑ'9Ñ$ð P�
Ø˜fÓ$à#'Ð øØ  JÓ.àÑ'¨D°LÓ,@Ø'3°DÑ'9Ñ$ð G‘
Ø# zÓ1àÑ'¨L¸LÓ,HØ'3°LÑ'AÑ$ð J�
æð JˆJàÑ!Ü#*¬8¯<ª<¸
ÔLeÑ+f×+nÑ+nÓ#oÑ äÐ*¨CÔ0°AØ'(§v¡v£xÐ$÷ 1Ð0ô Ð&¨Ô,°Ø#$§6¡6£8Ð ÷ -ô —n’nÐ%9Ó:€Oð 	ÑØ ?°7Ñ#;¸HÑ#EÓEØ˜GÑ$ XÑ.Ð/BÑCÑOà$ WÑ-¨hÑ7Ð8KÑLÈXÑV×\Ñ\Ð]`ÓaÐbdÑeˆ
Ü�‰ÐHÈÈÐUÕVØ	Ñ	 °Ñ 8¸Ñ BÐCSÑ TÑ `Ø˜7Ñ# HÑ-Ð.>Ñ?ÀÑIÈ-ÑXÐ\`Ó`Ø‰Jà'ˆJØÑØˆJàÑàÐ5Ó5Þ<FÑ4ÐLm‰Nà:DÈÓ:NÑ6ÐTtˆNàÑ >Ø&Ø(Ø2ð6ó $ð
 ˆØÑ >Ð5SÓ#SØ‰Ø	Ñ	 Øˆà˜¨Ñ0°Ñ:Ó:ØUdˆ˜Ñ  Ñ*¨=Ñ9¸(ÑCÀMÒRØ	˜_¨WÑ5°hÑ?Ó	?ØXgˆ˜Ñ  Ñ*Ð+;Ñ<¸XÑFÀ}ÑUð 	˜o¨gÑ6°xÑ@Ó@Ø˜GÑ$ XÑ.Ð/AÑBÀcÓIàÑ"ð ,7¸&Ó+@™iÀnˆOØÑð !,¨vÓ 5™¸3ˆJøàÑ"Ø'ˆOØÑØˆJàÑÐ4¸ÈÑ8PÐQYÑ8ZÓZÜ*4Ð5LÌc×*RÑ*RÑ&ÐXZˆÜ2Ø˜¨¨zÈ[ó
ˆ
ð �o gÑ.¨xÑ8Ó8Ø-¨gÑ6°xÑ@ÀÑMÑà"ÐàÐ-Ó-à,Ø!ØØ"*Ø#6Ø(Ø #Ø %Ø"ØØ )ñ
ˆô +×6Ò6°~ÓFˆ	Ø ‰à˜_¨WÑ5°hÑ?Ó?Ø(¨Ñ1°(Ñ;¸NÑK‰JàˆJà˜?¨7Ñ3°HÑ=Ó=Ø& wÑ/°Ñ9¸,ÑG‰HàˆHÜ!ØØ)Ø!Ø 3ØØØ"Ø+ñ	
ˆ	ð × Ñ ¨UÐ Ñ3à˜ÓÜ�i×&Ñ&Ó'ˆØ#'ˆÐÑ Ü!×-Ò-¨fÓ5‰	Ø	˜5Ó	 Ü(×4Ò4°Y×5EÑ5EÓF‰	Ø	˜6Ó	!Ü)×5Ò5°i×6FÑ6FÓG‰	Ø	˜7Ó	"Ü*×6Ò6°y×7GÑ7GÓH‰	Ø	Ð,Ó	,Ü3×?Ò?À	×@PÑ@PÓQ‰	Ø	˜5Ó	 Ü/×;Ò;¸I×<LÑ<LÓM‰	Ø	˜6Ó	!Ø‰	äÐ-¨nÐ-=¸_ÐMÓNÐNàÐ7Ó7Ø$ WÑ-¨hÑ7¸ÑFÀxÑPÐQ]Ñ^ˆ
ô /¨È:ÑV€KØ&6€KÐ"Ñ#ä&0Ð1HÌ#×&NÑ&NÑ"ÐTV€DÜ ;Ø�K d¸ñ!Ðô !8× 9Ñ 9Õ
¼{€CÙ	�Ü#Ñ2 kÑ2ˆ÷ 
ô × Ñ ØÐ5Ó5Ø%>×%DÑ%DÖ%FÑ!�
˜EÜ+¨D°*¸eÈ5ÔQñ &Gøð 	×ÑÐ6Ô7ð Ñ˜C™KÜ0°ÈZÑXˆ
Ü#=¸jÈ*Ó#UÐ ð �Ó&Ø˜O¨GÑ4Ó4Ø /°'Ñ":¸8Ñ"DÓDà!0°Ñ!9¸(Ñ!CÀNÑ!SÑà!(Ðà'9ˆ
Ð#Ñ$ä$;×$=Ñ$=Õ Ä;ˆÙ�UÜÑ- *Ñ-ˆC÷ ô #×$Ñ$Ø%=×%CÑ%CÖ%EÑ!�
˜EÜ+¨C°¸UÈ%ÔPò &Fð ×ÑÐ 8Õ9Ø	‰Ü×+Ò+¨HÐGWÑXˆàÐ-Ô-Ø6ˆØ$ nÐ5ˆàÑÜ5Ø˜KñØ:JðØN[ñ‰Jð &ˆJð	Ü%×5Ò5Ø0¸KÐZjñˆIð Ñ ÞÙ%ØØ!+Ø'ØØ'Ø)Ø#1Ø&7ñ	�ô ˜4Ð!:×;Ñ;Ø38�DÔ0ðV €KðS  Ð#AÓAÜ)×9Ò9Ø>È+ñ�	ô %2×$AÒ$AØ>ÐJ]ñ%Ð!ñ &ØØ!+Ø'ØØ'Ø&7Ø#1Ø&7ñ	�ðB €Kñk &ØØ!+Ø'ØØ'Ø#1Ø&7ñ�ô ˜4Ð!:×;Ñ;Ø38�DÔ0ðV €KôQ 9_Ø°ñ9Ñ5ÐÐ5ð  	Ó)Ü3NÈÓ3_Ñ0Ð! =á2à&7Ø"/à%5Ø,Cà'Ø!+ØØ'àñ�ðB €Kðe  )Ó+Ø&Ñ.Ð2EÈÓ2PØ"=�KÜ,×<Ò<Ø#¨wÐIYñ�EðÜ*7×*GÒ*GØ;ÐN^ñ+˜ô (C×'RÒ'RØ7ÐJZñ(Ð$ô '6×&EÒ&EØ#Ð/@ÐScñ'�Oô '4×&?Ò&?À×@VÑ@VÓ&W‘Oä-Ð0WÐXkÐWlÐ.mÓnÐná+à$3Ø'7ØØ$3à%5Ø,Cà'Ø!+ØØ'àñ�ðp €KôM *Ð,JÈ=È/Ð*ZÓ[Ð[Ø	Ð'Ó	'Ü:¸:ÓFˆð	Ü%×5Ò5Ø/ÐBRñˆIð	Ü 4× DÒ DØ9ÐL\ñ!Ðñ &ØØ&ØØØØ/ñ
ˆðf €KðW 
Ð+Ó	+Ü0ØÐ)9Èñ
ˆ
ð		ð Ñ$ô ×-Ò-Ð.MÐ`pÒqàð ö Ü9×IÒIØ9ÐL\ñˆNô !5× DÒ DØ9ÐL\ñ!Ðö Ù!ØØ'Ø#ØØ%Ø#Ø-Ø"3ñ	ˆDðf €KñQ "ØØ'Ø#ØØ#Ø-Ø"3ñ‰DðP €Kð 
Ð/Ô	/Ø >Ñ1ˆ
à˜%Ò iÑ&7ðÜ)×9Ò9Ø3ÐFVñ�	ð ˜%Ò lÑ&:Ü6°zÐTdÑeˆLàÑðÜ+×;Ò;Ø>È#Ð`pñ�ð Ñ!ØDˆKØ-¨tÐ4ˆMÞ9CÑ5ÐIiˆFä9ØØðð Ø#Ø!1ñð  ñˆNô #×$Ñ$Ø%>×%DÑ%DÖ%FÑ!�
˜EÜ+¨D°*¸eÈ5ÔQñ &Gö Ù!ØØ)Ø#Ø-Ø'ØØ%Ø#Ø-1ñ
ˆDðd €KöO Ù!ØØ)Ø#Ø-Ø'ØØØ#Ø-1ñ
ˆDðL €Kð1 Ø ,Ø&Ø"0Ø*ØØ&ñˆOð Ð"BÓBØÐ"BÓBà×&Ñ&Ð(CÀZÐ'PÔQæØ×&Ñ&Ð(FÈÐ'NÔOá!Ñ4 OÑ4‰Dð €Kô -¨_Ó=ˆÜ0°¸[ÓIˆ
Ü%×5Ò5Ð6IÐ\lÑmˆ	Ù%¨C°jÈIÐ\`ÐluÑvˆà€K÷K 1Ö0ú÷ -Ö,ú÷` 
Žú÷6 ŽUûô4 ó 	ÜØ/Ð0@Ð/Að  Bfð  góð ð	ûôl %ó Ü(Ø;Ð<LÐ;Mð  Nqð  róð ðûôP ó 	ÜØ/Ð0@Ð/Að  Beð  fóð ð	ûô ó 	ÜØ/Ð0@Ð/Að  Bwð  xóð ð	ûô, ó 	ÜØ/Ð0@Ð/Að  Beð  fóð ð	ûôT ó Ü Ø3Ð4DÐ3Eð  Fið  jóð ðûô ó Ü Ø3Ð4DÐ3Eð  FPð  Qóð ðús„   Æj&Çj8Õ>k
ÙkÛ"k. ß'l âl( âm ãm" åm? æn ê&
j5ê8
kë

kë
k+ë.lìl%ì(mímí"m<í?nîn6rÞ  r    rž   c
                 ó\  • U(       aD  SSK Jn
  0 nU
" U SSS9 nUR                  5        H  nUR                  U5      X½'   M     S S S 5        O6Uc  [	        5       n[
        R                  " XS9nO[
        R                  " XS9nSU;   a  US   nSU;   a  M  [        US5       nUR                  5       nS S S 5        [        R                  " U5      nUb  XNS	   S
   S   S
   S'   SUS	   S
   ;  a  [        S5      e[        UUU UUUUU	S9nU$ ! , (       d  f       N˜= f! , (       d  f       Nq= f)Nr   )Ú	safe_openÚptrn  )Ú	frameworkrÇ  rÌ  r   r  r~   r   r�   r˜   r€   z5`control_stage_config` not present in original config)r    rž   )Úsafetensorsr\  rw   Ú
get_tensorr   r�  rÒ  r?  r@  rA  rB  rt  rá  )rÞ  rã  r{   r  rç  rÜ  rÇ  rè  r    rž   r\  rg   rM  rX   r°   r±   s                   r0   Ú&download_controlnet_from_original_ckptra     s;  € ö Ý)àˆ
Ù�°$¸uÒEÈØ—v‘v–x�Ø"#§,¡,¨sÓ"3�
“ñ  ÷ FÐEð ‰>Ü“\ˆFÜŸš OÑI‰JäŸš OÑIˆJð ˜*Ó
$Ø Ñ-ˆ
ð ˜*Õ
$ô 
Ð" CÔ	(¨AØ Ÿv™v›xÐ÷ 
)ä—n’nÐ%9Ó:€OàÑ"ØUd˜Ñ  Ñ*¨=Ñ9¸(ÑCÀMÑRà _°WÑ%=¸hÑ%GÓGÜÐPÓQÐQä.ØØØØØØØ3Ø/ñ	€Jð Ð÷I FÕEú÷ 
)Õ	(ús   ˜+DÂ!DÄ
DÄ
D+)r%   )r   )NNN)F)NFFF)FN)zcond_stage_model.model.FF)NN)NNNNFr  NNNFNNNNNTNNNFNNNNNNN)r  FNNNFNN)_Ú__doc__r¤  Ú
contextlibr   Úior   r=  r�  rA  Útransformersr   r   r   r   r	   r
   r   r   r   Úmodelsr   r   r   r   Ú
schedulersr   r   r   r   r   r   r   r   r   Úutilsr   r   Úutils.constantsr   Úutils.torch_utilsr   Údeprecated.paint_by_exampler!   Ú*latent_diffusion.pipeline_latent_diffusionr"   r#   Úpipeline_utilsr$   rí  r&   Ústable_unclip_image_normalizerr'   Ú
accelerater(   Úaccelerate.utilsr)   Ú
get_loggerÚ__name__rþ   r1   rH   rK   rN   rR   rt   rz   r®   r¼   rÊ   rÕ   rÞ   r"  r1  rg  r�  Útextenc_conversion_lstr°  Ú"textenc_transformer_conversion_lstr¥  r£  Úcompiler,   rw   r´  r›  rº  rÅ  r  rÚ  rá  r;  ÚTensorÚboolrZ  ra  )Úxs   0r0   Ú<module>ry     sã  ðñ >ã 	Ý "Ý ã Û Û ÷
÷ 
õ 
÷ó ÷
÷ 
õ 
÷ 6Ý 8Ý +Ý Dß TÝ .Ý 8Ý Gñ ×ÑÝ-Ý<à	×	Ò	˜HÓ	%€ôCôô,ô ô*ð> lpô4?òn	;ñj¸cõ jðZ¸Sô ò<òð afôuòphòV/ôd$òNÐ ñ /EÓEÒ.D¨˜A™$  !¡š*Ñ.DÑEÐ ò&Ð "ñ -OÓOÒ,N qˆR�Y‰Y�q˜‘t‹_˜a ™dÒ"Ñ,NÑO€	Ø—*’*˜SŸX™X i§n¡nÓ&6Ó7Ó8€ô@ðL %ØØôOôd",ðL OSñ*5Ø&)¨D¡jð*5ØADÀtÁõ*5ðh Øô/ðh !%Ø!ØØØØ Ø"&Ø$(ØØ"Ø $Ø&*Ø"&Ø"ØØ $Ø:>Ø59Ø(,ØØØØØØØØñ9d
Ø  4¨¨U¯\©\Ð(9Ñ#:Ñ:ðd
àðd
ð �d‘
ðd
ð ð	d
ð
 ðd
ð ðd
ð ðd
ð ˜4‘Zðd
ð ˜T‘kðd
ð ðd
ð ðd
ð ˜‘:ðd
ð ˜t™ðd
ð ˜4‘Zðd
ð �t‘ðd
ð  �D‰[ð!d
ð" ð#d
ð$ 1°4Ñ7ð%d
ð& ,¨dÑ2ð'd
ð( &ð)d
ð: õ;d
ðT ØØ"&Ø$(ØØ"Ø)-Ø'+ñ4Øð4àð4ð ð4ð ð	4ð
 ˜4‘Zð4ð ˜T‘kð4ð ð4ð ð4ð   $™;ð4ð  ™ð4ð ö4ùòe Fùò Ps   ÄIÄ#"I