+
    œ°³jà  ã                   óz  € ^ RI Ht ^ RIHt ^ RIt^ RIHu Ht ^ RIHt ^RI	H
t ^RIHt ^RIHt ^RIHtHtHtHt ^R	IHt ^R
IHt ^RIHtHtHt ^RIHtHt ^RI H!t! ^RI"H#t#H$t$H%t%H&t&H't'H(t( ^RI)H*t* ^RI+H,t, ^RI-H.t. ^RI/H0t0H1t1H2t2 ]&Pf                  ! ]44      t5]$ ! R R]4      4       t6]$! RR7      ] ! R R]4      4       4       t7]$! RR7      ] ! R R]4      4       4       t8]$! RR7      ] ! R R]4      4       4       t9 ! R R ]Pt                  4      t;R! R" lt<ROR# R$ llt= ! R% R&]Pt                  4      t> ! R' R(]Pt                  4      t? ! R) R*]4      t@ ! R+ R,]Pt                  4      tA]$ ! R- R.]64      4       tB ! R/ R0]Pt                  4      tC ! R1 R2]Pt                  4      tD ! R3 R4]Pt                  4      tE ! R5 R6]Pt                  4      tF ! R7 R8]Pt                  4      tG ! R9 R:]Pt                  4      tH ! R; R<]Pt                  4      tI ! R= R>]Pt                  4      tJ ! R? R@]Pt                  4      tK]$] ! RA RB]4      4       4       tL]$! RCR7       ! RD RE]64      4       tM ! RF RG]Pt                  4      tN ! RH RI]Pt                  4      tO]$! RJR7       ! RK RL]64      4       tP ! RM RN]6]4      tQ. RPOtRR# )Qé    )ÚCallable)Ú	dataclassN)Únn)Úinitialization)ÚACT2FN)ÚCache)Ú%ClassifierFreeGuidanceLogitsProcessorÚGenerationMixinÚGenerationModeÚLogitsProcessorList)ÚGenerateDecoderOnlyOutput)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚModelOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingÚtorch_compilable_checkÚ	torch_int)Úmerge_with_config_defaults)Úcapture_outputs)Ú	AutoModel)ÚJanusConfigÚJanusVisionConfigÚJanusVQVAEConfigc                   ód   a a€ ] tR t^/t oRtR	tRtR.tRR.tRt	Rt
RtV 3R ltV3R ltRtVtV ;t# )
ÚJanusPreTrainedModelÚmodelTÚJanusVisionEncoderLayerÚpast_key_valuesÚcausal_maskc                ó  <€ \         SV `  V4       \        V\        4      '       db   \        P
                  ! VP                  \        P                  ! VP                  P                  R,          4      P                  R4      4       R# R# )é   Néÿÿÿÿ©r(   r)   )ÚsuperÚ_init_weightsÚ
isinstanceÚJanusVisionEmbeddingsÚinitÚcopy_Úposition_idsÚtorchÚarangeÚshapeÚexpand)ÚselfÚmoduleÚ	__class__s   &&€Úi/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/janus/modeling_janus.pyr,   Ú"JanusPreTrainedModel._init_weights<   s^   ø€ Ü‰Ñ˜fÔ%Ü�fÔ3×4Ò4Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÕ9VÓ,W×,^Ñ,^Ð_fÓ,gÖhñ 5ó    c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ©é   Úconfig©r   )ÚformatÚ__classdict__s   "€r9   Ú__annotate__Ú!JanusPreTrainedModel.__annotate__/   s   ø‡ ‚ áÑò r;   © ©ÚimageÚtext)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_can_compile_fullgraphr,   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r8   rB   s   @@r9   r"   r"   /   sK   ù‡ € ð  ÐØ(ÐØ&*Ð#Ø2Ð3ÐØ#4°mÐ"DÐØÐØ€Nà!Ðõi÷ … r;   r"   z9
    Base class for Janus VQ-VAE mode model outputs.
    )Úcustom_introc                   ó8   a € ] tR t^Bt o RtRtRtV 3R ltRtV t	R# )ÚJanusVQVAEOutputzë
decoded_pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
    Reconstructed pixel values after encoding and decoding the input.
embedding_loss (`torch.FloatTensor`):
    Embedding loss.
Nc                óv   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   # )r>   NÚdecoded_pixel_valuesÚembedding_loss©r2   ÚFloatTensor)rA   rB   s   "€r9   rC   ÚJanusVQVAEOutput.__annotate__B   s5   ø‡ ‚ ñ  ×+Ñ+¨dÕ2Ñ9ñ ñ ×%Ñ%¨Õ,Ñ3ò r;   rE   )
rI   rJ   rK   rL   Ú__doc__r^   r_   rU   rV   rW   ©rB   s   @r9   r\   r\   B   s   ø‡ € ñð 6:ÐØ/3€N÷ ƒ r;   r\   zy
    Base class for Janus model's outputs that may also contain a past key/values (to speed up sequential decoding).
    c                   óD   a € ] tR t^Tt o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚJanusBaseModelOutputWithPastaa  
last_hidden_state (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
    Sequence of hidden-states at the output of the last layer of the model.

    If `past_key_values` is used only the last hidden-state of the sequences of shape `(batch_size, 1,
    hidden_size)` is output.
image_hidden_states (`tuple(torch.FloatTensor)`, *optional*):
    Tuple of `torch.FloatTensor` (one for the output of the image embeddings, `(batch_size, num_images,
    sequence_length, hidden_size)`.

    image_hidden_states of the model produced by the vision encoder, and optionally by the perceiver
Nc                ó  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )r>   NÚlast_hidden_stater%   Úhidden_statesÚ
attentionsÚimage_hidden_states©r2   ra   r   Útuple)rA   rB   s   "€r9   rC   Ú)JanusBaseModelOutputWithPast.__annotate__T   s…   ø‡ ‚ ñ( ×(Ñ(¨4Õ/Ñ6ñ) ñ* ˜T•\Ñ(ñ+ ñ, ™×*Ñ*Õ+¨dÕ2Ñ9ñ- ñ. ‘e×'Ñ'Õ(¨4Õ/Ñ6ñ/ ñ0 ™u×0Ñ0Õ1°DÕ8Ñ?ò1 r;   rE   )rI   rJ   rK   rL   rc   rh   r%   ri   rj   rk   rU   rV   rW   rd   s   @r9   rf   rf   T   s.   ø‡ € ñð 37ÐØ$(€OØ59€MØ26€JØ;?Ð÷1 ƒ r;   rf   zQ
    Base class for Janus causal language model (or autoregressive) outputs.
    c                   óH   a € ] tR t^ot o RtRtRtRtRtRt	Rt
V 3R ltRtV tR# )ÚJanusCausalLMOutputWithPasta1  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Language modeling loss (for next-token prediction).
logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.vocab_size)`):
    Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
    It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

    Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
    `past_key_values` input) to speed up sequential decoding.
image_hidden_states (`tuple(torch.FloatTensor)`, *optional*):
    Tuple of `torch.FloatTensor` (one for the output of the image embeddings, `(batch_size, num_images,
    sequence_length, hidden_size)`.

    image_hidden_states of the model produced by the vision encoder, and optionally by the perceiver
Nc                óJ  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )r>   NÚlossÚlogitsr%   ri   rj   rk   rl   )rA   rB   s   "€r9   rC   Ú(JanusCausalLMOutputWithPast.__annotate__o   s�   ø‡ ‚ ñ0 ×
Ñ
˜dÕ
"Ñ)ñ1 ñ2 ×Ñ Õ$Ñ+ñ3 ñ4 ˜T•\Ñ(ñ5 ñ6 ™×*Ñ*Õ+¨dÕ2Ñ9ñ7 ñ8 ‘e×'Ñ'Õ(¨4Õ/Ñ6ñ9 ñ: ™u×0Ñ0Õ1°DÕ8Ñ?ò; r;   rE   )rI   rJ   rK   rL   rc   rr   rs   r%   ri   rj   rk   rU   rV   rW   rd   s   @r9   rp   rp   o   s2   ø‡ € ñð" &*€DØ'+€FØ$(€OØ59€MØ26€JØ;?Ð÷; ƒ r;   rp   c                   óf   a a€ ] tR t^�t oV3R lV 3R lltV3R lR ltRV3R lR lltRtVtV ;t	# )	r.   c                ó    <€ V ^8„  d   QhRS[ /# r=   ©r   )rA   rB   s   "€r9   rC   Ú"JanusVisionEmbeddings.__annotate__�   s   ø€ ÷ jñ jÑ0ñ jr;   c                óŽ  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        VP                  V n        \        P                  ! VP                  V P                  V P                  V P                  R R7      V n
        V P
                  V P                  ,          ^,          V n        V P                  V n        \        P                  ! V P                  V P                  4      V n        \        P                  ! \         P"                  ! V P                  4      P%                  R4      RR7      V n        R# )Úvalid)Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚpaddingF)Ú
persistentNr*   )r+   Ú__init__r?   Úhidden_sizeÚ	embed_dimÚ
image_sizeÚ
patch_sizer   ÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingÚBufferr2   r3   r5   r1   ©r6   r?   r8   s   &&€r9   r�   ÚJanusVisionEmbeddings.__init__�   sá   ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?Øô 
ˆÔð !ŸO™O¨t¯©Õ>À1ÕDˆÔØ!×-Ñ-ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÔÜŸIšI¤e§l¢l°4×3EÑ3EÓ&F×&MÑ&MÈgÓ&VÐchÔiˆÖr;   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r>   Ú
embeddingsÚheightÚwidthÚreturn©r2   ÚTensorÚint)rA   rB   s   "€r9   rC   rx   ¤   s5   ø€ ÷ $ñ $±5·<±<ð $Éð $ÑUXð $Ñ]b×]iÑ]iñ $r;   c                óÌ  € VP                   ^,          pV P                  P                  P                   ^ ,          p\        P                  P                  4       '       g(   WE8X  d"   W#8X  d   V P                  V P                  4      # V P                  P                  P                  ^ 4      pVP                   R,          pW P                  ,          pW0P                  ,          p	\        VR,          4      p
VP                  ^WªV4      pVP                  ^ ^^^4      p\        P                  P                  VW‰3RRR7      pVP                  ^ ^^^4      P                  ^RV4      pV# )aè  
This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
images. This method is also adapted to support torch.jit tracing and no class embeddings.

Adapted from:
- https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
- https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
g      à?ÚbicubicF)ÚsizeÚmodeÚalign_cornersr)   )r4   rŒ   Úweightr2   ÚjitÚ
is_tracingr1   Ú	unsqueezer…   r   ÚreshapeÚpermuter   Ú
functionalÚinterpolateÚview)r6   r‘   r’   r“   r‰   rŠ   Úpatch_pos_embedÚdimÚ
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&       r9   Úinterpolate_pos_encodingÚ.JanusVisionEmbeddings.interpolate_pos_encoding¤   s:  € ð !×&Ñ& qÕ)ˆØ×/Ñ/×6Ñ6×<Ñ<¸QÕ?ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×*Ñ*¨4×+<Ñ+<Ó=Ð=à×1Ñ1×8Ñ8×BÑBÀ1ÓEˆà×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆäŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆØÐr;   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# )r>   Úpixel_valuesr«   r”   )r2   r–   Úbool)rA   rB   s   "€r9   rC   rx   Ê   s-   ø€ ÷ ñ ¡E§L¡Lð ÉDð Ñ]b×]iÑ]iñ r;   c                óf  € VP                   w   r4pV P                  P                  P                  pV P                  VP	                  VR 7      4      pVP                  ^4      P                  ^^4      pV'       d   V P                  W„V4      p	MV P                  V P                  4      p	W‰,           pV# ))Údtype)
r4   rˆ   r�   r±   ÚtoÚflattenÚ	transposer«   rŒ   r1   )
r6   r®   r«   Ú_r’   r“   Útarget_dtypeÚpatch_embedsr‘   Ú
pos_embedss
   &&&       r9   ÚforwardÚJanusVisionEmbeddings.forwardÊ   sœ   € Ø*×0Ñ0Ñˆˆ1�eØ×+Ñ+×2Ñ2×8Ñ8ˆØ×+Ñ+¨L¯O©OÀ,¨OÓ,OÓPˆØ!×)Ñ)¨!Ó,×6Ñ6°q¸!Ó<ˆ
ç#Ø×6Ñ6°zÈ5ÓQ‰Jà×0Ñ0°×1BÑ1BÓCˆJàÕ,ˆ
àÐr;   )	r?   rƒ   r„   r‰   rŠ   rˆ   r…   rŒ   r1   )F)
rI   rJ   rK   rL   r�   r«   r¹   rV   rW   rX   rY   s   @@r9   r.   r.   �   s+   ù‡ € ÷jó j÷($ð $÷L÷ ò r;   r.   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r>   ri   Ún_repr”   r•   )rA   s   "r9   rC   rC   Ú   s.   € ÷ 	Uñ 	UœUŸ\™\ð 	U´#ð 	U¼%¿,¹,ñ 	Ur;   c                ó˜   € V P                   w  r#rEV^8X  d   V # V R,          P                  W#WV4      p V P                  W#V,          WE4      # )zÈ
This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
)ºNNNr¾   Nr¾   r¾   )r4   r5   r¡   )ri   r¼   ÚbatchÚnum_key_value_headsÚslenÚhead_dims   &&    r9   Ú	repeat_kvrÃ   Ú   sU   € ð
 2?×1DÑ1DÑ.€E Ø�„zØÐØ!Ð"2Õ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÕ(CÀTÓTÐTr;   c                ó   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        R	\
        \        ,          /# )
r>   r7   ÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropoutÚkwargs)r   ÚModuler2   r–   Úfloatr   r   )rA   s   "r9   rC   rC   æ   sw   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ð%ô Ô'Õ(ñ%r;   c                 ó"  € \        W P                  4      p\        W0P                  4      p	\        P                  ! WP	                  ^^4      4      V,          p
Ve	   W¤,           p
\
        P                  P                  V
R\        P                  R7      P                  VP                  4      p
\
        P                  P                  W¦V P                  R7      p
\        P                  ! W©4      pVP	                  ^^4      P                  4       pWº3# )r>   )r§   r±   )ÚpÚtrainingr)   )rÃ   Únum_key_value_groupsr2   Úmatmulr´   r   r£   ÚsoftmaxÚfloat32r²   r±   rÊ   rÐ   Ú
contiguous)r7   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   Ú
key_statesÚvalue_statesÚattn_weightsÚattn_outputs   &&&&&&&,    r9   Úeager_attention_forwardrÚ   æ   sÒ   € ô ˜3× ;Ñ ;Ó<€JÜ˜U×$?Ñ$?Ó@€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÕL€LØÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r;   c                   óX   a a€ ] tR t^ÿt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )ÚJanusVisionAttentionz(Attention Class for Janus Vision Encoderc                ó    <€ V ^8„  d   QhRS[ /# r=   rw   )rA   rB   s   "€r9   rC   Ú!JanusVisionAttention.__annotate__  s   ø€ ÷ Qñ QÑ0ñ Qr;   c                ó¬  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        V P                  V P                  ,          V n        V P                  V P                  ,          V P                  8w  d'   \        R V P                   RV P                   R24      hV P                  R,          V n	        VP                  V n
        VP                  pVP                  pRV n        ^V n        \        P                   ! V P                  V P                  V P                  ,          VP"                  R7      V n        \        P                   ! V P                  V P                  V P                  ,          VP"                  R7      V n        \        P                   ! V P                  V P                  V P                  ,          VP"                  R7      V n        \        P                   ! V P                  V P                  4      V n        V^ 8”  d   \        P,                  ! V4      M\        P.                  ! 4       V n        V'       d!   \        P0                  ! V P                  4      M\        P.                  ! 4       V n        V'       d(   \        P0                  ! V P                  4      V n        R# \        P.                  ! 4       V n        R# )z;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).F©ÚbiasNç      à¿)r+   r�   r?   r‚   rƒ   Únum_attention_headsÚ	num_headsrÂ   Ú
ValueErrorÚscaleÚattention_dropoutÚprojection_dropoutÚuse_qk_normÚ	is_causalrÑ   r   ÚLinearÚattention_biasÚq_projÚk_projÚv_projÚprojection_layerÚDropoutÚIdentityÚ	LayerNormÚq_normÚk_norm)r6   r?   Úproj_dropoutÚqk_normr8   s   &&  €r9   r�   ÚJanusVisionAttention.__init__  sÔ  ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ×3Ñ3ˆŒØŸ™¨$¯.©.Õ8ˆŒØ�=‰=˜4Ÿ>™>Õ)¨T¯^©^Ô;ÜØMÈdÏnÉnÐM]ð ^Ø—N‘NÐ# 2ð'óð ð —]‘] DÕ(ˆŒ
Ø!'×!9Ñ!9ˆÔØ×0Ñ0ˆØ×$Ñ$ˆØˆŒð %&ˆÔ!ä—i’i §¡°·±ÀÇÁÕ0NÐU[×UjÑUjÔkˆŒÜ—i’i §¡°·±ÀÇÁÕ0NÐU[×UjÑUjÔkˆŒÜ—i’i §¡°·±ÀÇÁÕ0NÐU[×UjÑUjÔkˆŒÜ "§	¢	¨$¯.©.¸$¿.¹.Ó IˆÔØ>JÈQÔ>N¤"§*¢*¨\Ô":ÔTV×T_ÒT_ÓTaˆÔç6=”b—l’l 4§>¡>Ô2Ä2Ç;Â;Ã=ˆŒß6=”b—l’l 4§>¡>Ó2ˆŽÄ2Ç;Â;Ã=ˆŽr;   c                ór   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          /# )r>   ri   rÈ   NrË   )r2   r–   r   r   )rA   rB   s   "€r9   rC   rÞ     s<   ø€ ÷ )$ñ )$á—|‘|ð)$ñ Ÿ™ tÕ+ð)$ñ Ñ+Õ,ñ	)$r;   c           	     ó&  € VP                  4       w  rEpV P                  V4      pV P                  V4      pV P                  V4      p	VP	                  RV P
                  V P                  4      pV P                  V4      pVP	                  RV P
                  V P                  4      pV P                  V4      pVP	                  WEV P
                  V P                  4      P                  ^^4      pVP	                  WEV P
                  V P                  4      P                  ^^4      pV	P                  WEV P
                  V P                  4      P                  ^^4      p	\        P                  ! V P                  P                  \        4      p
T
! V VVV	V3RV P                   '       g   RMV P"                  RV P$                  RV P&                  /VB w  r¼VP	                  WEV P(                  4      pV P+                  V4      pV P-                  V4      pWÜ3# )r(   rÊ   ç        rÉ   rê   r)   )rš   rí   rî   rï   r¡   rä   rÂ   rô   rõ   r´   r¥   r   Úget_interfacer?   Ú_attn_implementationrÚ   rÐ   rç   ræ   rê   rƒ   rð   rè   )r6   ri   rÈ   rË   Ú
batch_sizeÚseq_lenrµ   Úquery_statesrÖ   r×   Úattention_interfacerÙ   rØ   Úoutputs   &&&,          r9   r¹   ÚJanusVisionAttention.forward  sÙ  € ð "/×!3Ñ!3Ó!5Ñˆ
˜Qà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆà#×+Ñ+¨B°·±ÀÇÁÓNˆØ—{‘{ <Ó0ˆà×'Ñ'¨¨D¯N©N¸D¿M¹MÓJˆ
Ø—[‘[ Ó,ˆ
à#×+Ñ+¨JÀÇÁÐQU×Q^ÑQ^Ó_×iÑiÐjkÐmnÓoˆØ×'Ñ'¨
¸T¿^¹^ÈTÏ]É]Ó[×eÑeÐfgÐijÓkˆ
Ø#×(Ñ(¨¸d¿n¹nÈdÏmÉmÓ\×fÑfÐghÐjkÓlˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ
%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð
%
ð —J‘Jð
%
ð —n‘nð
%
ð ñ
%
Ñ!ˆð "×)Ñ)¨*¸t¿~¹~ÓNˆà×&Ñ& {Ó3ˆØ×(Ñ(¨Ó0ˆØÐ#Ð#r;   )rç   r?   rƒ   rÂ   rê   rõ   rî   rä   rÑ   rè   rð   rô   rí   ræ   rï   ©N©
rI   rJ   rK   rL   rc   r�   r¹   rV   rW   rX   rY   s   @@r9   rÜ   rÜ   ÿ   s#   ù‡ € Ù2÷Qó Q÷:)$÷ )$ò )$r;   rÜ   c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚJanusVisionMLPiK  c                ó    <€ V ^8„  d   QhRS[ /# r=   rw   )rA   rB   s   "€r9   rC   ÚJanusVisionMLP.__annotate__L  s   ø€ ÷ ?ñ ?Ñ0ñ ?r;   c                ó  <€ \         SV `  4        Wn        \        VP                  VP
                  ,          4      V n        \        VP                  ,          V n	        \        P                  ! VP                  V P                  4      V n        \        P                  ! V P                  VP                  4      V n        \        P                  ! VP                  4      V n        \        P                  ! VP                  4      V n        R # r  )r+   r�   r?   r—   r‚   Ú	mlp_ratioÚintermediate_sizer   Ú
hidden_actÚactivation_fnr   rë   Úfc1Úfc2rñ   Úhidden_dropout_rateÚdropout1Údropout2rŽ   s   &&€r9   r�   ÚJanusVisionMLP.__init__L  s¬   ø€ Ü‰ÑÔØŒÜ!$ V×%7Ñ%7¸&×:JÑ:JÕ%JÓ!KˆÔÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜V×/Ñ/°×1GÑ1GÓHˆŒÜ—9’9˜T×3Ñ3°V×5GÑ5GÓHˆŒÜŸ
š
 6×#=Ñ#=Ó>ˆŒÜŸ
š
 6×#=Ñ#=Ó>ˆŽr;   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r>   ri   r”   ©r2   r–   )rA   rB   s   "€r9   rC   r	  V  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r;   c                ó°   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV P	                  V4      pV# r  )r  r  r  r  r  ©r6   ri   s   &&r9   r¹   ÚJanusVisionMLP.forwardV  sP   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ mÓ4ˆØŸ™ Ó/ˆØŸ™ mÓ4ˆØÐr;   )r  r?   r  r  r  r  r  ©	rI   rJ   rK   rL   r�   r¹   rV   rW   rX   rY   s   @@r9   r  r  K  s   ù‡ € ÷?ó ?÷÷ ð r;   r  c                   óZ   a a€ ] tR tRt oV3R lV 3R llt]V3R lR l4       tRtVtV ;t	# )r$   i_  c                ó    <€ V ^8„  d   QhRS[ /# r=   rw   )rA   rB   s   "€r9   rC   Ú$JanusVisionEncoderLayer.__annotate__`  s   ø€ ÷ ñ Ñ0ñ r;   c                óV  <€ \         SV `  4        VP                  V n        \        P
                  ! V P                  VP                  R 7      V n        \        V4      V n	        \        P
                  ! V P                  VP                  R 7      V n
        \        V4      V n        Wn        R# ©)ÚepsN)r+   r�   r‚   rƒ   r   ró   Úlayer_norm_epsÚlayer_norm1rÜ   Ú	self_attnÚlayer_norm2r  Úmlpr?   rŽ   s   &&€r9   r�   Ú JanusVisionEncoderLayer.__init__`  sr   ø€ Ü‰ÑÔØ×+Ñ+ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÔÜ-¨fÓ5ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÔÜ! &Ó)ˆŒØŽr;   c                ó~   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[,          RS[ P                  /# )r>   ri   rÈ   rË   r”   )r2   r–   r   r   ra   )rA   rB   s   "€r9   rC   r  j  sG   ø€ ÷ ñ á—|‘|ðñ Ÿ™ðñ Ñ+Õ,ð	ñ
 
×	Ñ	ñr;   c                óÄ   € TpV P                  V4      pV P                  ! RR VRV/VB w  rWA,           pTpV P                  V4      pV P                  V4      pWA,           pV# )ri   rÈ   rE   )r#  r$  r%  r&  )r6   ri   rÈ   rË   Úresidualrµ   s   &&&,  r9   r¹   ÚJanusVisionEncoderLayer.forwardi  s   € ð !ˆà×(Ñ(¨Ó7ˆØŸ>š>ñ 
Ø'ð
à)ð
ð ñ
Ñˆð
 !Õ0ˆà ˆØ×(Ñ(¨Ó7ˆØŸ™ Ó/ˆØ Õ0ˆàÐr;   )r?   rƒ   r#  r%  r&  r$  )
rI   rJ   rK   rL   r�   r   r¹   rV   rW   rX   rY   s   @@r9   r$   r$   _  s(   ù‡ € ÷ó ð ÷ó ÷ð r;   r$   c                   ób   a a€ ] tR tRt oRtV3R lV 3R llt]RV3R lR ll4       tRtVt	V ;t
# )	ÚJanusVisionEncoderi‚  z§
Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
[`JanusVisionEncoderLayer`].

Args:
    config: JanusVisionConfig
c                ó    <€ V ^8„  d   QhRS[ /# r=   rw   )rA   rB   s   "€r9   rC   ÚJanusVisionEncoder.__annotate__‹  s   ø€ ÷ ,ñ ,Ñ0ñ ,r;   c                óÖ   <€ \         SV `  4        Wn        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        R V n	        R# u upi )FN)
r+   r�   r?   r   Ú
ModuleListÚrangeÚnum_hidden_layersr$   ÚlayersÚgradient_checkpointing©r6   r?   rµ   r8   s   && €r9   r�   ÚJanusVisionEncoder.__init__‹  sT   ø€ Ü‰ÑÔØŒÜ—m’mÌeÐTZ×TlÑTlÔNmÓ$nÑNmÈÔ%<¸VÖ%DÑNmÑ$nÓoˆŒØ&+ˆÖ#ùò %os   ½A&c                ó^   <€ V ^8„  d   QhRS[ P                  R,          RS[S[,          RS[/# )r>   rÈ   NrË   r”   )r2   r–   r   r   r   )rA   rB   s   "€r9   rC   r/  “  s?   ø€ ÷ @ñ @ñ Ÿ™ tÕ+ð@ñ Ñ+Õ,ð	@ñ
 
ñ@r;   c                óX   € TpV P                    F  pV! VV3/ VB pK  	  \        VR 7      # ))rh   )r4  r   )r6   Úinputs_embedsrÈ   rË   ri   Úencoder_layers   &&&,  r9   r¹   ÚJanusVisionEncoder.forward’  s>   € ð &ˆØ!Ÿ[œ[ˆMÙ)ØØñð ñŠMñ )ô °Ô?Ð?r;   )r?   r5  r4  r  )rI   rJ   rK   rL   rc   r�   r   r¹   rV   rW   rX   rY   s   @@r9   r-  r-  ‚  s6   ù‡ € ñ÷,ó ,ð ÷@ñ @ó ÷@ð @r;   r-  c                   ó¦   a a€ ] tR tRt oRtRtR]R]/tV3R lV 3R llt	]
]! RR7      ]RV3R	 lR
 ll4       4       4       tR tV3R ltRtVtV ;t# )ÚJanusVisionModeli¤  r®   ri   rj   c                ó    <€ V ^8„  d   QhRS[ /# r=   rw   )rA   rB   s   "€r9   rC   ÚJanusVisionModel.__annotate__®  s   ø€ ÷ 	ñ 	Ñ0ñ 	r;   c                óö   <€ \         SV `  V4       Wn        VP                  p\	        V4      V n        \        V4      V n        \        P                  ! W!P                  R 7      V n        V P                  4        R# r   )r+   r�   r?   r‚   r.   r‘   r-  Úencoderr   ró   r"  Úpost_layernormÚ	post_init)r6   r?   rƒ   r8   s   && €r9   r�   ÚJanusVisionModel.__init__®  sY   ø€ Ü‰Ñ˜Ô ØŒØ×&Ñ&ˆ	ä/°Ó7ˆŒÜ)¨&Ó1ˆŒÜ Ÿlšl¨9×:OÑ:OÔPˆÔà�‰Ör;   F)Útie_last_hidden_statesc          	      ót   <€ V ^8„  d   QhRS[ P                  R,          RS[RS[S[,          RS[S[,          /# )r>   r®   Nr«   rË   r”   )r2   ra   r¯   r   r   rm   r   )rA   rB   s   "€r9   rC   r@  ¼  sJ   ø€ ÷ 
ñ 
á×'Ñ'¨$Õ.ð
ñ #'ð
ñ Ñ+Õ,ð	
ñ
 
Ñ+Õ	+ñ
r;   c                óô   € Vf   \        R4      hV P                  WR7      pV P                  ! RRV/VB pVP                  pV P	                  V4      pVR,          pV P	                  V4      p\        VVR7      # )Nz You have to specify pixel_values)r«   r:  )rh   Úpooler_outputrE   )r¾   r   r¾   )rå   r‘   rB  rh   rC  r   )r6   r®   r«   rË   ri   Úencoder_outputsrh   Úpooled_outputs   &&&,    r9   r¹   ÚJanusVisionModel.forward¹  s‘   € ð ÒÜÐ?Ó@Ð@àŸ™¨˜Óhˆà+/¯<ª<ñ ,
Ø'ð,
àñ,
ˆð
 ,×=Ñ=ÐØ ×/Ñ/Ð0AÓBÐà)¨'Õ2ˆØ×+Ñ+¨MÓ:ˆä)Ø/Ø'ô
ð 	
r;   c                ó   € V P                   # r  )r‘   )r6   s   &r9   Úget_input_embeddingsÚ%JanusVisionModel.get_input_embeddings×  s   € Ø�‰Ðr;   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r=   rw   )rA   rB   s   "€r9   rC   r@  ¤  s   ø‡ ‚ ñ Ñò	 r;   )r?   r‘   rB  rC  )rG   ©NF)rI   rJ   rK   rL   Úmain_input_namerN   r$   rÜ   Ú_can_record_outputsr�   r   r   r   r¹   rN  rU   rV   rW   rX   rY   s   @@r9   r>  r>  ¤  sk   ù‡ € à$€OØ!Ðð 	Ð0ØÐ*ðÐ÷
	ó 	ð  Ù¨EÔ2Ø÷
ñ 
ó ó 3ó  ð
ò6÷g … r;   r>  c                   óD   a a€ ] tR tRt oV3R lV 3R lltR tRtVtV ;t# )ÚJanusVisionAlignerMLPiÛ  c                ó    <€ V ^8„  d   QhRS[ /# r=   rw   )rA   rB   s   "€r9   rC   Ú"JanusVisionAlignerMLP.__annotate__Ü  s   ø€ ÷ 7ñ 7Ñ0ñ 7r;   c           	     ó–  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! \        ^VP                  4       Uu. uF.  p\        P                  ! VP
                  VP
                  4      NK0  	  up4      V n
        \        VP                  ,          V n        R# u upi ©r(   N)r+   r�   r   rë   r‚   Úprojection_dimr  r1  r2  ÚdepthÚhidden_layersr   r  r  r6  s   && €r9   r�   ÚJanusVisionAlignerMLP.__init__Ü  s’   ø€ Ü‰ÑÔä—9’9˜V×/Ñ/°×1FÑ1FÓGˆŒÜŸ]š]ÜNSÐTUÐW]×WcÑWcÔNdÓeÑNdÈŒR�YŠY�v×,Ñ,¨f×.CÑ.CÖDÑNdÑeó
ˆÔô $ F×$5Ñ$5Õ6ˆÖùò fó   Á(4Cc                ó€   € V P                  V4      pV P                   F  pV P                  V4      pV! V4      pK  	  V# r  ©r  r\  r  ©r6   ri   Úlayers   && r9   r¹   ÚJanusVisionAlignerMLP.forwardå  óB   € ØŸ™ Ó/ˆØ×'Ô'ˆEØ ×.Ñ.¨}Ó=ˆMÙ! -Ó0ŠMñ (ð Ðr;   ©r  r  r\  r  rY   s   @@r9   rU  rU  Û  ó   ù‡ € ÷7ó 7÷ò r;   rU  c                   óf   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltV3R lR ltR	tVt	V ;t
# )
ÚJanusVQVAEVectorQuantizerií  aÇ  
A module for vector quantization using learned embedding vectors.

This module implements the quantization process similar to the one described in
the VQ-VAE (Vector Quantized Variational AutoEncoder) paper. It quantizes continuous
input vectors into discrete codebook vectors, which are learned during training.
Current implementation improves over previous ones by avoiding costly matrix multiplications
and allowing for post-hoc remapping of indices.
c                ó    <€ V ^8„  d   QhRS[ /# r=   ©r    )rA   rB   s   "€r9   rC   Ú&JanusVQVAEVectorQuantizer.__annotate__ø  s   ø€ ÷ 9ñ 9Ñ/ñ 9r;   c                ó  <€ \         SV `  4        VP                  V n        VP                  V n        \        VR R4      V n        \        P                  ! V P                  V P                  4      V n	        VP                  .^,          V n        R# )Úbetag      Ð?N)r+   r�   Únum_embeddingsrƒ   Úembedding_dimÚgetattrrm  r   r‹   Ú	embeddingr‰   Úquant_state_dimsrŽ   s   &&€r9   r�   Ú"JanusVQVAEVectorQuantizer.__init__ø  sn   ø€ Ü‰ÑÔØ$×3Ñ3ˆÔØ#×-Ñ-ˆÔÜ˜F F¨DÓ1ˆŒ	äŸš d×&9Ñ&9¸4×;MÑ;MÓNˆŒØ!'×!3Ñ!3Ð 4°qÕ 8ˆÖr;   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r>   Úhidden_stater  )rA   rB   s   "€r9   rC   rk    s   ø€ ÷ >ñ >¡E§L¡Lñ >r;   c           
     ó¸  € VP                  ^ ^^^4      P                  4       pVP                  RV P                  4      p\        P
                  ! V^,          ^RR7      \        P
                  ! V P                  P                  ^,          ^R7      ,           ^\        P                  ! RW P                  P                  P                  ^ ^4      4      ,          ,
          p\        P                  ! V^R7      pV P                  V4      P                  VP                  4      p\        P                  ! VP                  4       V,
          ^,          4      V P                  \        P                  ! WQP                  4       ,
          ^,          4      ,          ,           pWV,
          P                  4       ,           pVP                  ^ ^^^4      P                  4       pWVV3# )r   T)r§   Úkeepdim©r§   z	bd,dn->bnr)   )r¢   rÕ   r¥   ro  r2   Úsumrq  r�   Úeinsumr´   Úargminr4   ÚmeanÚdetachrm  )r6   ru  Úhidden_state_flattenedÚ	distancesÚmin_encoding_indicesÚhidden_state_quantrr   s   &&     r9   r¹   Ú!JanusVQVAEVectorQuantizer.forward  s  € Ø#×+Ñ+¨A¨q°!°QÓ7×BÑBÓDˆØ!-×!2Ñ!2°2°t×7IÑ7IÓ!JÐô �IŠIÐ,¨aÕ/°QÀÔEÜ�iŠi˜Ÿ™×-Ñ-¨qÕ0°aÔ8õ9à”%—,’,˜{Ð,BÇNÁN×DYÑDY×DcÑDcÐdeÐghÓDiÓjÕjõkð 	ô  %Ÿ|š|¨I¸1Ô=ÐØ!Ÿ^™^Ð,@ÓA×FÑFÀ|×GYÑGYÓZÐô �zŠzÐ-×4Ñ4Ó6¸ÕEÈ!ÕKÓLÈtÏyÉyÔ[`×[eÒ[eØ×"5Ñ"5Ó"7Õ7¸AÕ=ó\
õ P
õ 
ˆð
 *À,Õ-N×,VÑ,VÓ,XÕXÐð 0×7Ñ7¸¸1¸aÀÓC×NÑNÓPÐà!Ð)=Ð=Ð=r;   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r>   Úimage_tokensr”   ©r2   Ú
LongTensorra   )rA   rB   s   "€r9   rC   rk    s'   ø€ ÷ "ñ "©u×/?Ñ/?ð "ÁE×DUÑDUñ "r;   c                óT  € VP                   ^ ,          pV P                  P                  P                   R,          pV P                  V4      p\        P                  ! V^RR7      pVP                  V.V P                  OVN54      pVP                  ^ ^^^4      P                  4       pV# )r   )rÏ   r§   r)   )	r4   rq  r�   ÚFÚ	normalizer¥   rr  r¢   rÕ   )r6   r…  rþ   Úemb_dimr�  s   &&   r9   Úget_codebook_entryÚ,JanusVQVAEVectorQuantizer.get_codebook_entry  sž   € Ø!×'Ñ'¨Õ*ˆ
Ø—~‘~×,Ñ,×2Ñ2°2Õ6ˆð "Ÿ^™^¨LÓ9ÐäŸ[š[Ð);¸qÀbÔIÐð 0×4Ñ4°jÐ5bÀ4×CXÑCXÐ5bÐZaÑ5bÓcÐØ/×7Ñ7¸¸1¸aÀÓC×NÑNÓPÐà!Ð!r;   )rm  rq  ro  rn  rr  )rI   rJ   rK   rL   rc   r�   r¹   rŒ  rV   rW   rX   rY   s   @@r9   rh  rh  í  s-   ù‡ € ñ÷9ó 9÷>ð >÷6"÷ "ð "r;   rh  c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )ÚJanusVQVAEResnetBlocki,  c                óô  <€ \         SV `  4        W n        Vf   TMTV n        W@n        \
        P                  P                  ^ VRRR7      V n        \
        P                  P                  W#^^^R7      V n
        \
        P                  P                  ^ VRRR7      V n        \
        P                  P                  VP                  4      V n        \
        P                  P                  W3^^^R7      V n        V P                  V P                  8w  dg   V P                  '       d+   \
        P                  P                  W#^^^R7      V n        R # \
        P                  P                  W#^^^ R7      V n        R # R # )Nç�íµ ÷Æ°>T©Ú
num_groupsr‡   r!  Úaffine©r}   r~   r   )r+   r�   r{   r|   Úuse_conv_shortcutr2   r   Ú	GroupNormÚnorm1r†   Úconv1Únorm2rñ   rÊ   Úconv2Úconv_shortcutÚnin_shortcut)r6   r?   r{   r|   rœ  r8   s   &&&&&€r9   r�   ÚJanusVQVAEResnetBlock.__init__-  s(  ø€ ô 	‰ÑÔØ&ÔØ+7Ò+?™KÀ\ˆÔØ!.Ôä—X‘X×'Ñ'°2ÀKÐUYÐbfÐ'ÓgˆŒ
Ü—X‘X—_‘_ [ÈAÐVWÐab�_ÓcˆŒ
Ü—X‘X×'Ñ'°2ÀLÐVZÐcgÐ'ÓhˆŒ
Ü—x‘x×'Ñ'¨¯©Ó7ˆŒÜ—X‘X—_‘_ \ÈQÐWXÐbc�_ÓdˆŒ
Ø×Ñ˜t×0Ñ0Ô0Ø×%×%Ð%Ü%*§X¡X§_¡_°[Ð\]ÐfgÐqr _Ó%s�Ö"ä$)§H¡H§O¡O°KÐ[\ÐefÐpq OÓ$r�Ö!ñ	 1r;   c                óâ  € TpV P                  V4      pV\        P                  ! V4      ,          pV P                  V4      pV P	                  V4      pV\        P                  ! V4      ,          pV P                  V4      pV P                  V4      pV P                  V P                  8w  d=   V P                  '       d   V P                  V4      pW!,           # V P                  V4      pW!,           # r  )r˜  r2   Úsigmoidr™  rš  rÊ   r›  r{   r|   r–  rœ  r�  )r6   ri   r*  s   && r9   r¹   ÚJanusVQVAEResnetBlock.forwardD  sÉ   € Ø ˆØŸ
™
 =Ó1ˆØœŸš }Ó5Õ5ˆØŸ
™
 =Ó1ˆàŸ
™
 =Ó1ˆØœŸš }Ó5Õ5ˆØŸ™ ]Ó3ˆØŸ
™
 =Ó1ˆà×Ñ˜t×0Ñ0Ô0Ø×%×%Ð%Ø×-Ñ-¨hÓ7�ð Õ'Ð'ð  ×,Ñ,¨XÓ6�àÕ'Ð'r;   )
r™  r›  rœ  rÊ   r{   r�  r˜  rš  r|   r–  rQ  r  rY   s   @@r9   r�  r�  ,  s   ù‡ € ÷s÷.(ò (r;   r�  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚJanusVQVAEAttnBlockiX  c                óÀ  <€ \         SV `  4        Wn        \        P                  P                  ^ VRRR7      V n        \        P                  P                  W^^^ R7      V n        \        P                  P                  W^^^ R7      V n	        \        P                  P                  W^^^ R7      V n
        \        P                  P                  W^^^ R7      V n        R# )é    r‘  Tr’  r•  N)r+   r�   r{   r2   r   r—  Únormr†   ÚqÚkÚvÚproj_out©r6   r{   r8   s   &&€r9   r�   ÚJanusVQVAEAttnBlock.__init__Y  s­   ø€ Ü‰ÑÔØ&Ôä—H‘H×&Ñ&°"À;ÐTXÐaeÐ&ÓfˆŒ	Ü—‘—‘ ÀqÐQRÐ\]�Ó^ˆŒÜ—‘—‘ ÀqÐQRÐ\]�Ó^ˆŒÜ—‘—‘ ÀqÐQRÐ\]�Ó^ˆŒÜŸ™Ÿ™¨ÈaÐXYÐcd˜ÓeˆŽr;   c                ó�  € TpV P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pVP                  w  rgr‰VP                  WgW‰,          4      P                  ^ ^^4      pVP                  WgW‰,          4      p\        P                  ! W44      p
V
\        V4      R,          ,          p
\        P                  ! V
^R7      p
VP                  WgW‰,          4      pV
P                  ^ ^^4      p
\        P                  ! WZ4      P                  WgW‰4      pV P                  V4      pW+,           # )r   rx  râ   )r¦  r§  r¨  r©  r4   r¡   r¢   r2   Úbmmr—   r‰  rÓ   rª  )r6   ri   r*  r   rÖ   r×   rþ   Úchannelsr’   r“   rØ   rÙ   s   &&          r9   r¹   ÚJanusVQVAEAttnBlock.forwardc  s  € Ø ˆØŸ	™	 -Ó0ˆØ—v‘v˜mÓ,ˆØ—V‘V˜MÓ*ˆ
Ø—v‘v˜mÓ,ˆð /;×.@Ñ.@Ñ+ˆ
˜fØ#×+Ñ+¨JÀ&Å.ÓQ×YÑYÐZ[Ð]^Ð`aÓbˆØ×'Ñ'¨
¸f½nÓMˆ
Ü—y’y Ó:ˆØ#¤s¨8£}¸Õ'>Õ?ˆÜ—y’y °1Ô5ˆð $×+Ñ+¨JÀ&Å.ÓQˆØ#×+Ñ+¨A¨q°!Ó4ˆÜ—i’i Ó;×CÑCÀJÐZ`Óhˆà—m‘m KÓ0ˆØÕ%Ð%r;   )r{   r¨  r¦  rª  r§  r©  r  rY   s   @@r9   r£  r£  X  s   ù‡ € õf÷&ò &r;   r£  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚJanusVQVAEConvDownsamplei{  c                ób   <€ \         SV `  4        \        P                  ! W^^^ R7      V n        R# ©é   r•  N)r+   r�   r   r†   Úconvr«  s   &&€r9   r�   Ú!JanusVQVAEConvDownsample.__init__|  s%   ø€ Ü‰ÑÔÜ—I’I˜kÀAÈaÐYZÔ[ˆŽ	r;   c                ó\   € \         P                  ! VRR^ R7      pV P                  V4      pV# )r   Úconstant)Úpadr›   rÇ   )r   r(   r   r(   )r‰  rº  r¶  r  s   &&r9   r¹   Ú JanusVQVAEConvDownsample.forward€  s+   € äŸš˜m°ÀJÐVWÔXˆØŸ	™	 -Ó0ˆØÐr;   ©r¶  r  rY   s   @@r9   r²  r²  {  s   ù‡ € õ\÷ò r;   r²  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚJanusVQVAEConvUpsamplei‡  c                ót   <€ \         SV `  4        \        P                  P	                  W^^^R7      V n        R# r´  )r+   r�   r2   r   r†   r¶  r«  s   &&€r9   r�   ÚJanusVQVAEConvUpsample.__init__ˆ  s,   ø€ Ü‰ÑÔÜ—H‘H—O‘O KÈ!ÐTUÐ_`�OÓaˆŽ	r;   c                óZ   € \         P                  ! VR RR7      pV P                  V4      pV# )g       @Únearest)Úscale_factorr›   )r‰  r¤   r¶  r  s   &&r9   r¹   ÚJanusVQVAEConvUpsample.forwardŒ  s(   € ÜŸš mÀ#ÈIÔVˆØŸ	™	 -Ó0ˆØÐr;   r¼  r  rY   s   @@r9   r¾  r¾  ‡  s   ù‡ € õb÷ò r;   r¾  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚJanusVQVAEMidBlocki’  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r>   r?   r¯  )r    r—   )rA   rB   s   "€r9   rC   ÚJanusVQVAEMidBlock.__annotate__“  s   ø€ ÷ 
ñ 
Ñ/ð 
¹3ñ 
r;   c                ó�   <€ \         SV `  4        \        VVVR 7      V n        \	        V4      V n        \        VVVR 7      V n        R# )©r?   r{   r|   N)r+   r�   r�  Úblock_1r£  Úattn_1Úblock_2)r6   r?   r¯  r8   s   &&&€r9   r�   ÚJanusVQVAEMidBlock.__init__“  sF   ø€ Ü‰ÑÔÜ,ØØ Ø!ô
ˆŒô
 *¨(Ó3ˆŒÜ,ØØ Ø!ô
ˆŽr;   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  r  )rA   rB   s   "€r9   rC   rÈ  ¡  ó#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r;   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r  )rË  rÌ  rÍ  r  s   &&r9   r¹   ÚJanusVQVAEMidBlock.forward¡  s2   € ØŸ™ ]Ó3ˆØŸ™ MÓ2ˆØŸ™ ]Ó3ˆØÐr;   )rÌ  rË  rÍ  r  rY   s   @@r9   rÆ  rÆ  ’  s   ù‡ € ÷
ó 
÷÷ ð r;   rÆ  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚJanusVQVAEEncoderi¨  c           
     óú  <€ \         SV `  4        \        VP                  4      V n        VP
                  V n        VP                  pVP                  pVP                  pVP                  pVP                  p\        P                  P                  W2^^^R7      V n        R\        V4      ,           pWpn        \        P                   ! 4       V n        \%        V P                  4       EF  p\        P                   ! 4       p	\        P                   ! 4       p
W'V,          ,          pW&V,          ,          p\%        V P
                  4       FU  pV	P'                  \)        VVVR7      4       TpW€P                  ^,
          8X  g   K;  V
P'                  \+        V4      4       KW  	  \        P,                  ! 4       pWžn        W®n        W€P                  ^,
          8w  d   \3        V4      Vn        V P"                  P'                  V4       EK   	  \7        VX4      V n        \        P                  P;                  ^ VRRR7      V n        \        P                  P                  TV'       d
   ^V,          MT^^^R7      V n        R# )rµ  r•  rÊ  r‘  Tr’  N©r(   ) r+   r�   ÚlenÚchannel_multiplierÚnum_resolutionsÚnum_res_blocksÚbase_channelsr{   Údouble_latentÚlatent_channelsr2   r   r†   Úconv_inrm   Úin_channel_multiplierr1  Údownr2  Úappendr�  r£  rÌ   ÚblockÚattnr²  Ú
downsamplerÆ  Úmidr—  Únorm_outÚconv_out)r6   r?   rÛ  r{   rÜ  rÝ  rØ  rß  Úi_levelrâ  rã  Úblock_inÚ	block_outÚi_blockrà  r8   s   &&             €r9   r�   ÚJanusVQVAEEncoder.__init__©  sò  ø€ Ü‰ÑÔä" 6×#<Ñ#<Ó=ˆÔØ$×3Ñ3ˆÔØ×,Ñ,ˆØ×(Ñ(ˆØ×,Ñ,ˆØ ×0Ñ0ˆØ#×6Ñ6Ðä—x‘x—‘ {ÈqÐYZÐde�ÓfˆŒà $¤uÐ-?Ó'@Õ @ÐØ%:Ô"Ü—M’M“OˆŒ	Ü˜T×1Ñ1×2ˆGÜ—M’M“OˆEÜ—=’=“?ˆDØ$¸WÕ'EÕEˆHØ%¸7Õ(CÕCˆIÜ  ×!4Ñ!4Ö5�Ø—‘Ü)Ø%Ø$,Ø%.ôôð %�Ø×2Ñ2°QÕ6Ö6Ø—K‘KÔ 3°HÓ =Ö>ñ 6ô —9’9“;ˆDØŒJØŒIØ×.Ñ.°Õ2Ô2Ü":¸8Ó"D�”Ø�I‰I×Ñ˜T×"ñ- 3ô0 & f¨hÓ7ˆŒäŸ™×*Ñ*°bÀxÐUYÐbfÐ*ÓgˆŒÜŸ™Ÿ™Øß#0ˆA�Ö°oØØØð (ó 
ˆŽr;   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r>   r®   )r2   r‡  )rA   rB   s   "€r9   rC   ÚJanusVQVAEEncoder.__annotate__Ü  s   ø€ ÷ !ñ !¡E×$4Ñ$4ñ !r;   c                ó   € V P                  V4      .p\        V P                  4       EF  p\        V P                  4       Fš  pV P                  V,          P
                  V,          ! VR,          4      p\        V P                  V,          P                  4      ^ 8”  d+   V P                  V,          P                  V,          ! V4      pVP                  V4       Kœ  	  W0P                  ^,
          8w  g   KÐ  VP                  V P                  V,          P                  VR,          4      4       EK  	  VR,          pV P                  V4      pV P                  V4      pV\        P                  ! V4      ,          pV P                  V4      pV# r*   )rÞ  r2  rÙ  rÚ  rà  râ  r×  rã  rá  rä  rå  ræ  r2   r   rç  )r6   r®   ri   rè  rë  ru  rh   s   &&     r9   r¹   ÚJanusVQVAEEncoder.forwardÜ  sB  € àŸ™ lÓ3Ð4ˆÜ˜T×1Ñ1×2ˆGÜ  ×!4Ñ!4Ö5�Ø#Ÿy™y¨Õ1×7Ñ7¸Ö@Ø! "Õ%ó �ô �t—y‘y Õ)×.Ñ.Ó/°!Ô3Ø#'§9¡9¨WÕ#5×#:Ñ#:¸7Ö#CÀLÓ#Q�LØ×$Ñ$ \Ö2ñ 6ð ×.Ñ.°Õ2Ö2Ø×$Ñ$ T§Y¡Y¨wÕ%7×%BÑ%BÀ=ÐQSÕCTÓ%U×Vñ 3ð *¨"Õ-ÐØ ŸH™HÐ%6Ó7Ðð !ŸM™MÐ*;Ó<ÐØœUŸ]š]Ð+<Ó=Õ=ÐØ ŸM™MÐ*;Ó<ÐØ Ð r;   )rÞ  rç  rà  rß  rå  ræ  rÚ  rÙ  r  rY   s   @@r9   rÔ  rÔ  ¨  s   ù‡ € õ1
÷f!÷ !ð !r;   rÔ  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚJanusVQVAEDecoderiõ  c           
     ó¾  <€ \         SV `  4        \        VP                  4      V n        VP
                  V n        VP                  pVP                  pVP                  pW!P                  V P                  ^,
          ,          ,          p\        P                  P                  W5^^^R7      V n        \        W4      V n        \        P                  ! 4       V n        \#        \%        V P                  4      4       EF  p\        P                  ! 4       p\        P                  ! 4       pW!P                  V,          ,          p	\%        V P
                  ^,           4       FU  p
VP'                  \)        VVV	R7      4       T	pW`P                  ^,
          8X  g   K;  VP'                  \+        V4      4       KW  	  \        P,                  ! 4       pW{n        W‹n        V^ 8w  d   \3        V4      Vn        V P                   P'                  V4       EK  	  \        P                  P7                  ^ VRRR7      V n        \        P                  P                  WT^^^R7      V n        R# )r(   r•  rÊ  r‘  Tr’  N)r+   r�   r×  rØ  rÙ  rÚ  rÛ  rÝ  r|   r2   r   r†   rÞ  rÆ  rå  r1  ÚupÚreversedr2  rá  r�  r£  rÌ   râ  rã  r¾  Úupsampler—  ræ  rç  )r6   r?   rÛ  rÝ  r|   ré  rè  râ  rã  rê  rë  rô  r8   s   &&          €r9   r�   ÚJanusVQVAEDecoder.__init__ö  sÍ  ø€ Ü‰ÑÔä" 6×#<Ñ#<Ó=ˆÔØ$×3Ñ3ˆÔØ×,Ñ,ˆØ ×0Ñ0ˆØ×*Ñ*ˆð !×#<Ñ#<¸T×=QÑ=QÐTUÕ=UÕ#VÕVˆô —x‘x—‘ ÈaÐXYÐcd�ÓeˆŒô & fÓ7ˆŒô —-’-“/ˆŒÜ¤ d×&:Ñ&:Ó ;×<ˆGÜ—M’M“OˆEÜ—=’=“?ˆDØ%×(AÑ(AÀ'Õ(JÕJˆIÜ  ×!4Ñ!4°qÕ!8Ö9�Ø—‘Ü)Ø%Ø$,Ø%.ôôð %�Ø×2Ñ2°QÕ6Ö6Ø—K‘KÔ 3°HÓ =Ö>ñ :ô —’“ˆBØŒHØŒGØ˜!Œ|Ü4°XÓ>�”Ø�G‰G�N‰N˜2×ñ) =ô. Ÿ™×*Ñ*°bÀxÐUYÐbfÐ*ÓgˆŒÜŸ™Ÿ™¨ÈAÐVWÐab˜ÓcˆŽr;   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r>   ru  r”   r`   )rA   rB   s   "€r9   rC   ÚJanusVQVAEDecoder.__annotate__$  s'   ø€ ÷ ñ ¡E×$5Ñ$5ð ¹%×:KÑ:Kñ r;   c                ó¾  € V P                  V4      pV P                  V4      p\        V P                  4       Fâ  p\        V P                  ^,           4       F„  pV P
                  V,          P                  V,          ! V4      p\        V P
                  V,          P                  4      ^ 8”  g   KZ  V P
                  V,          P                  V,          ! V4      pK†  	  W P                  ^,
          8w  g   KÀ  V P
                  V,          P                  V4      pKä  	  V P                  V4      pV\        P                  ! V4      ,          pV P                  V4      pV# rÖ  )rÞ  rå  r2  rÙ  rÚ  rô  râ  r×  rã  rö  ræ  r2   r   rç  )r6   ru  rè  rë  s   &&  r9   r¹   ÚJanusVQVAEDecoder.forward$  s  € Ø—|‘| LÓ1ˆð —x‘x Ó-ˆô ˜T×1Ñ1Ö2ˆGÜ  ×!4Ñ!4°qÕ!8Ö9�Ø#Ÿw™w wÕ/×5Ñ5°gÖ>¸|ÓL�Ü�t—w‘w˜wÕ'×,Ñ,Ó-°Ö1Ø#'§7¡7¨7Õ#3×#8Ñ#8¸Ö#AÀ,Ó#O’Lñ :ð ×.Ñ.°Õ2Ö2Ø#Ÿw™w wÕ/×8Ñ8¸ÓF’ñ 3ð —}‘} \Ó2ˆØœŸš lÓ3Õ3ˆØ—}‘} \Ó2ˆØÐr;   )rÞ  rç  rå  ræ  rÚ  rÙ  rô  r  rY   s   @@r9   rò  rò  õ  s   ù‡ € õ,d÷\÷ ð r;   rò  c                   ó<   a € ] tR tRt o RtRtRtRtV 3R ltRt	V t
R# )ÚJanusVQVAEModelOutputi9  a‘  
quantized_last_hidden_state (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
    Quantized last hidden state from the VQ-VAE model.
image_tokens (`torch.FloatTensor` of shape `(batch_size, config.vocab_size`):
    Indices of the image tokens predicted by the VQ-VAE model.
embedding_loss (`torch.FloatTensor`):
    The embedding loss computed during quantization.
Nc                ó¤   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   # )r>   NÚquantized_last_hidden_stater…  r_   r`   )rA   rB   s   "€r9   rC   Ú"JanusVQVAEModelOutput.__annotate__9  sM   ø‡ ‚ ñ "'×!2Ñ!2°TÕ!9Ñ@ñ ñ ×#Ñ# dÕ*Ñ1ñ ñ ×%Ñ%¨Õ,Ñ3ò r;   rE   )rI   rJ   rK   rL   rc   rÿ  r…  r_   rU   rV   rW   rd   s   @r9   rý  rý  9  s$   ø‡ € ñð =AÐØ-1€LØ/3€N÷ ƒ r;   rý  aS  
    The VQ-VAE model used in Janus for encoding/decoding images into discrete tokens.
    This model follows the "Make-a-scene: Scene-based text-to-image generation with human priors" paper from
    [ Oran Gafni, Adam Polyak, Oron Ashual, Shelly Sheynin, Devi Parikh, and Yaniv
    Taigman](https://huggingface.co/papers/2203.13131).
    c                   óÀ   a a€ ] tR tRt o. ROtR]R]/tRtV3R lV 3R llt	]
]V3R lR l4       4       tV3R	 lR
 lt]]V3R lR l4       4       tV3R ltRtVtV ;t# )Ú
JanusVQVAEiJ  ri   rj   r®   c                ó    <€ V ^8„  d   QhRS[ /# r=   rj  )rA   rB   s   "€r9   rC   ÚJanusVQVAE.__annotate___  s   ø€ ÷ 
ñ 
Ñ/ñ 
r;   c                ó¼  <€ \         SV `  V4       \        V4      V n        \	        V4      V n        \        P                  P                  VP                  VP                  ^4      V n        \        P                  P                  VP                  VP                  ^4      V n        V P                  4        \        V4      V n        RV n        V P#                  4        R# )r(   FN)r+   r�   rÔ  rB  rh  Úquantizer2   r   r†   rÝ  rƒ   Ú
quant_convÚpost_quant_convÚevalrò  Údecoderr5  rD  rŽ   s   &&€r9   r�   ÚJanusVQVAE.__init___  sš   ø€ Ü‰Ñ˜Ô ä(¨Ó0ˆŒÜ1°&Ó9ˆŒÜŸ(™(Ÿ/™/¨&×*@Ñ*@À&×BRÑBRÐTUÓVˆŒÜ$Ÿx™xŸ™¨v×/?Ñ/?À×AWÑAWÐYZÓ[ˆÔØ�	‰	ŒÜ(¨Ó0ˆŒØ&+ˆÔ#Ø�‰Ör;   c                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# ©r>   r®   rË   r”   )r2   r‡  r   r   rý  )rA   rB   s   "€r9   rC   r  m  s/   ø€ ÷ 	
ñ 	
¡5×#3Ñ#3ð 	
¹vÑFXÕ?Yð 	
Ñ^sñ 	
r;   c                óŒ   € V P                  V4      pV P                  V4      pV P                  V4      w  rVp\        VVVVR 7      # ))rh   rÿ  r…  r_   )rB  r  r  rý  )r6   r®   rË   ri   Úconv_hidden_statesrÿ  Úemb_lossÚindicess   &&,     r9   ÚencodeÚJanusVQVAE.encodek  sO   € ð Ÿ™ \Ó2ˆØ!Ÿ_™_¨]Ó;ÐØ9=¿¹ÐGYÓ9ZÑ6Ð#¨wÜ$Ø+Ø(CØ Ø#ô	
ð 	
r;   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r„  r†  )rA   rB   s   "€r9   rC   r  x  s'   ø€ ÷ ñ ¡5×#3Ñ#3ð ¹×8IÑ8Iñ r;   c                óÜ  € VP                   ^,          V P                  P                  ^ ,          V P                  P                  ^,          ,          8w  dZ   \        RV P                  P                  ^ ,          V P                  P                  ^,          ,           RVP                    R24      hV P                  P	                  V4      pV P                  V4      pV P                  V4      pV# )a  
Decodes quantized token IDs into pixel values.
Args:
    image_tokens (torch.LongTensor): Batch of token IDs.
Returns:
    pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
        Pixel values decoded from the token IDs.
z4Expected `image_tokens` to have shape `(batch_size, z)`, but got shape `z`.)r4   r  rr  rå   rŒ  r  r
  )r6   r…  Úcodebook_entryri   r®   s   &&   r9   ÚdecodeÚJanusVQVAE.decodex  sã   € ð ×Ñ˜aÕ  D§M¡M×$BÑ$BÀ1Õ$EÈÏÉ×HfÑHfÐghÕHiÕ$iÔiÜØFÀtÇ}Á}×GeÑGeÐfgÕGhÐko×kxÑkx÷  lJñ  lJð  KLõ  lMõ  HMð  GNð N"Ø".×"4Ñ"4Ð!5°Rð9óð ð Ÿ™×9Ñ9¸,ÓGˆØ×,Ñ,¨^Ó<ˆØ—|‘| MÓ2ˆØÐr;   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          /# )r>   r®   r”   )r2   ra   rm   )rA   rB   s   "€r9   rC   r  �  s?   ø€ ÷ 	Uñ 	Uá×'Ñ'ð	Uñ 
‰u× Ñ ¡%×"3Ñ"3Ð3Õ	4ñ		Ur;   c                óÒ   € VP                   ^ ,          pV P                  ! V3RR/VB pV P                  VP                  P	                  VR4      4      p\        WTP                  4      # )r   Úreturn_dictTr)   )r4   r  r  r…  r¥   r\   r_   )r6   r®   rË   rþ   Úencode_outputsr^   s   &&,   r9   r¹   ÚJanusVQVAE.forward‹  sa   € ð "×'Ñ'¨Õ*ˆ
ØŸš \ÑN¸tÐNÀvÑNˆØ#Ÿ{™{¨>×+FÑ+F×+KÑ+KÈJÐXZÓ+[Ó\ÐäÐ 4×6SÑ6SÓTÐTr;   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r=   rj  )rA   rB   s   "€r9   rC   r  J  s   ø‡ ‚ ñ Ñò r;   )r
  rB  r5  r  r  r  )r£  r�  rh  )rI   rJ   rK   rL   rP   r�  r£  rS  rR  r�   r   r   r  r  r   r   r¹   rU   rV   rW   rX   rY   s   @@r9   r  r  J  s€   ù‡ € òÐð 	Ð.ØÐ)ðÐð %€O÷
ó 
ð  Ø÷	
ó ó  ð	
÷ð ð& Ø÷	Uó ó ð	U÷G … r;   r  c                   óD   a a€ ] tR tRt oV3R lV 3R lltR tRtVtV ;t# )ÚJanusVQVAEAlignerMLPi™  c                ó    <€ V ^8„  d   QhRS[ /# r=   rj  )rA   rB   s   "€r9   rC   Ú!JanusVQVAEAlignerMLP.__annotate__š  s   ø€ ÷ 7ñ 7Ñ/ñ 7r;   c           	     ó–  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        P                  ! \        ^VP                  4       Uu. uF.  p\        P                  ! VP
                  VP
                  4      NK0  	  up4      V n
        \        VP                  ,          V n        R# u upi rY  )r+   r�   r   rë   rƒ   rZ  r  r1  r2  r3  r\  r   r  r  r6  s   && €r9   r�   ÚJanusVQVAEAlignerMLP.__init__š  s’   ø€ Ü‰ÑÔä—9’9˜V×-Ñ-¨v×/DÑ/DÓEˆŒÜŸ]š]ÜNSÐTUÐW]×WoÑWoÔNpÓqÑNpÈŒR�YŠY�v×,Ñ,¨f×.CÑ.CÖDÑNpÑqó
ˆÔô $ F×$5Ñ$5Õ6ˆÖùò rr^  c                ó€   € V P                  V4      pV P                   F  pV P                  V4      pV! V4      pK  	  V# r  r`  ra  s   && r9   r¹   ÚJanusVQVAEAlignerMLP.forward£  rd  r;   re  r  rY   s   @@r9   r   r   ™  rf  r;   r   c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚJanusVQVAEHeadi«  zOHead used for sampling tokens in image generation, replacing the usual lm head.c                ó    <€ V ^8„  d   QhRS[ /# r=   rj  )rA   rB   s   "€r9   rC   ÚJanusVQVAEHead.__annotate__®  s   ø€ ÷ Sñ SÑ/ñ Sr;   c                ó  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      V n        \        VP                  ,          V n	        \        P                  ! VP
                  VP                  4      V n        R # r  )r+   r�   r   rë   Úimage_token_embed_dimrZ  rª  r   r  r  rn  Úvision_headrŽ   s   &&€r9   r�   ÚJanusVQVAEHead.__init__®  s^   ø€ Ü‰ÑÔÜŸ	š	 &×">Ñ">À×@UÑ@UÓVˆŒÜ# F×$5Ñ$5Õ6ˆÔÜŸ9š9 V×%:Ñ%:¸F×<QÑ<QÓRˆÖr;   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  )r2   r–   Útensor)rA   rB   s   "€r9   rC   r*  ´  rÐ  r;   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r  )rª  r  r-  r  s   &&r9   r¹   ÚJanusVQVAEHead.forward´  s6   € ØŸ™ mÓ4ˆØ×*Ñ*¨=Ó9ˆØ×(Ñ(¨Ó7ˆØÐr;   )r  rª  r-  r  rY   s   @@r9   r(  r(  «  s#   ù‡ € ÙY÷Só S÷÷ ð r;   r(  zl
    The Janus model which consists of a siglip vision backbone, a Llama language model and a VQ model.
    c                   ó    a a€ ] tR tRt oV3R lV 3R llt]]V3R lR l4       4       tV3R lR lt]]RV3R lR	 ll4       4       t	R
t
VtV ;t# )Ú
JanusModeli»  c                ó    <€ V ^8„  d   QhRS[ /# r=   r@   )rA   rB   s   "€r9   rC   ÚJanusModel.__annotate__Á  s   ø€ ÷ ñ ™{ñ r;   c                óÄ  <€ \         SV `  V4       Wn        \        P	                  VP
                  4      V n        \        V P                  P                  4      V n        \        P	                  VP                  4      V n        \        P                  ! V P                  P                  P                  V P                  P                  P                  4      V n        \#        V P                  P                  4      V n        \'        V P                  P                  4      V n        \*        P,                  ! VP.                  R 7      V n        RV n        V P5                  4        R# ))r?   FN)r+   r�   r?   r>  Ú_from_configÚvision_configÚvision_modelrU  Úalignerr  Ú	vq_configÚvqmodelr   r‹   rn  rƒ   Úgeneration_embeddingsr   Úgeneration_alignerr(  Úgeneration_headr   Úfrom_configÚtext_configÚlanguage_modelr5  rD  rŽ   s   &&€r9   r�   ÚJanusModel.__init__Á  sï   ø€ Ü‰Ñ˜Ô ØŒä,×9Ñ9¸&×:NÑ:NÓOˆÔÜ,¨T×->Ñ->×-EÑ-EÓFˆŒä!×.Ñ.¨v×/?Ñ/?Ó@ˆŒô &(§\¢\°$·,±,×2EÑ2E×2TÑ2TÐVZ×VbÑVb×ViÑVi×VsÑVsÓ%tˆÔ"Ü"6°t·|±|×7JÑ7JÓ"KˆÔÜ-¨d¯l©l×.AÑ.AÓBˆÔä'×3Ò3¸6×;MÑ;MÔNˆÔà&+ˆÔ#à�‰Ör;   c                ó`   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          /# r  )r2   ra   r   r   rm   r   )rA   rB   s   "€r9   rC   r6  Ø  s7   ø€ ÷ ñ Ù!×-Ñ-ðÙ9?Ñ@RÕ9Sðá	Ñ+Õ	+ñr;   c                óp   € V P                   ! V3R R/VB pV P                  VP                  4      Vn        V# )r  T)r:  r;  rh   rI  )r6   r®   rË   Úvision_outputss   &&, r9   Úget_image_featuresÚJanusModel.get_image_featuresÖ  s;   € ð
 ×*Ò*¨<ÑTÀTÐTÈVÑTˆØ'+§|¡|°N×4TÑ4TÓ'UˆÔ$àÐr;   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r>   Ú	input_idsr:  Úimage_featuresr†  )rA   rB   s   "€r9   rC   r6  à  s7   ø€ ÷ "ñ "Ù×)Ñ)ð"Ù:?×:KÑ:Kð"Ù]b×]nÑ]nñ"r;   c           
     óX  € Vfo   W P                  4       ! \        P                  ! RV P                  P                  \        P
                  VP                  R7      4      8H  pVP                  R4      pMWP                  P                  8H  pVP                  4       pVP                  ^ ,          VP                  ^,          ,          pVP                  R4      P                  VP                  4      p\        WRP                  R,          ,          VP                  4       8H  RV RV 24       V# )z×
Obtains multimodal placeholder mask from `input_ids` or `inputs_embeds`, and checks that the placeholder token count is
equal to the length of multimodal features. If the lengths are different, an error is raised.
©r±   Údevicez6Image features and image tokens do not match, tokens: z, features: rE   r)   )rN  r2   Úfullr?   Úimage_token_idÚlongrO  Úallry  r4   r    r²   r   Únumel)r6   rK  r:  rL  Úspecial_image_maskÚn_image_tokensÚn_image_featuress   &&&&   r9   Úget_placeholder_maskÚJanusModel.get_placeholder_maskà  s  € ð ÒØ!.×2KÑ2KÔ2MÜ—
’
˜2˜tŸ{™{×9Ñ9ÄÇÁÐTa×ThÑThÔió3ñ "Ðð "4×!7Ñ!7¸Ó!;Ñà!*¯k©k×.HÑ.HÑ!HÐà+×/Ñ/Ó1ˆØ)×/Ñ/°Õ2°^×5IÑ5IÈ!Õ5LÕLÐØ/×9Ñ9¸"Ó=×@Ñ@À×AUÑAUÓVÐÜØ×0Ñ0°Õ4Õ4¸×8LÑ8LÓ8NÑNØDÀ^ÐDTÐT`ÐaqÐ`rÐsô	
ð "Ð!r;   c                ó:  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[R,          R	S[S[ P                  ,          R
S[/	# )r>   rK  Nr®   rÈ   r1   r%   r:  Ú	use_cacheÚlogits_to_keepr”   )r2   r‡  ra   r–   r   r¯   r—   rf   )rA   rB   s   "€r9   rC   r6  ú  s«   ø€ ÷ ,
ñ ,
á×#Ñ# dÕ*ð,
ñ ×'Ñ'¨$Õ.ð,
ñ Ÿ™ tÕ+ð	,
ñ
 ×&Ñ&¨Õ-ð,
ñ  �ð,
ñ ×(Ñ(¨4Õ/ð,
ñ ˜$•;ð,
ñ ™eŸl™lÕ*ð,
ñ 
&ñ,
r;   c	                óP  € VR J VR J,          '       d   \        R4      hVf   V P                  4       ! V4      pVe‹   V P                  VRR7      P                  p
V
P	                  RVP
                  R,          4      pVP                  VP                  VP                  4      pV P                  WVR7      pVP                  WË4      pV P                  ! RRVRVRVRVR	VR
V/V	B p\        VP                  VP                  VP                  VP                   Ve   X
R7      # R R7      # )NzaYou cannot specify both input_ids and inputs_embeds at the same time, and must specify either oneT)r  )r:  rL  r:  rÈ   r1   r%   r[  r\  )rh   r%   ri   rj   rk   r)   rE   )rå   rN  rH  rI  r¡   r4   r²   rO  r±   rX  Úmasked_scatterrC  rf   rh   r%   ri   rj   )r6   rK  r®   rÈ   r1   r%   r:  r[  r\  rË   Úimage_embedsrL  Úimage_attention_maskÚ	lm_outputs   &&&&&&&&&,    r9   r¹   ÚJanusModel.forwardø  sl  € ð ˜Ð -°tÐ";×<Ô<ÜØsóð ð Ò Ø ×5Ñ5Ô7¸	ÓBˆMàÒ#Ø×2Ñ2°<ÈTÐ2ÓR×`Ñ`ˆLØ)×1Ñ1°"°m×6IÑ6IÈ"Õ6MÓNˆNØ+×.Ñ.¨}×/CÑ/CÀ]×EXÑEXÓYˆNØ#'×#<Ñ#<ØÀ~ð $=ó $Ð ð *×8Ñ8Ð9MÓ^ˆMà×'Ò'ñ 
Ø'ð
à)ð
ð &ð
ð ,ð	
ð
  ð
ð *ð
ð ñ
ˆ	ô ,Ø'×9Ñ9Ø%×5Ñ5Ø#×1Ñ1Ø ×+Ñ+Ø0<Ò0H ô
ð 	
ð
 OSô
ð 	
r;   )	r;  r?   r?  r>  r@  r5  rC  r:  r=  )NNNNNNNr   )rI   rJ   rK   rL   r�   r   r   rH  rX  r¹   rV   rW   rX   rY   s   @@r9   r4  r4  »  s[   ù‡ € ÷ó ð* Ø÷ó ó ð÷"ð "ð0 Ø÷,
ñ ,
ó ó ÷,
ð ,
r;   r4  c                   óà   a a€ ] tR tRt oRR/tRtRtV3R lV 3R lltV3R lR lt]	]
RV3R	 lR
 ll4       4       tV3R lR lt]P                  ! 4       RV3R lV 3R lll4       tRtVtV ;t# )ÚJanusForConditionalGenerationi)  zlm_head.weightz(model.language_model.embed_tokens.weightTc                ó    <€ V ^8„  d   QhRS[ /# r=   r@   )rA   rB   s   "€r9   rC   Ú*JanusForConditionalGeneration.__annotate__.  s   ø€ ÷ ñ ™{ñ r;   c                óþ   <€ \         SV `  V4       Wn        \        V4      V n        \
        P                  ! VP                  P                  VP                  P                  R R7      V n
        V P                  4        R# )Frà   N)r+   r�   r?   r4  r#   r   rë   rB  r‚   Ú
vocab_sizeÚlm_headrD  rŽ   s   &&€r9   r�   Ú&JanusForConditionalGeneration.__init__.  sZ   ø€ Ü‰Ñ˜Ô ØŒÜ Ó'ˆŒ
Ü—y’y ×!3Ñ!3×!?Ñ!?À×ASÑAS×A^ÑA^ÐejÔkˆŒð 	�‰Ör;   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r>   Úinputsr”   r  )rA   rB   s   "€r9   rC   rf  7  s#   ø€ ÷ ñ ¹e¿l¹lð ÉuÏ|É|ñ r;   c                ór   € V P                   P                  V4      pV P                   P                  V4      pV# r  )r#   r>  r?  )r6   rl  ru  s   && r9   Ú'prepare_embeddings_for_image_generationÚEJanusForConditionalGeneration.prepare_embeddings_for_image_generation7  s0   € Ø—z‘z×7Ñ7¸Ó?ˆØ—z‘z×4Ñ4°\ÓBˆØÐr;   c                óx  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          R	S[R,          R
S[S[ P                  ,          RS[S[,          RS[	/# )r>   rK  Nr®   rÈ   r1   r%   r:  Úlabelsr[  r\  rË   r”   )
r2   r‡  ra   r–   r   r¯   r—   r   r   rp   )rA   rB   s   "€r9   rC   rf  >  sÐ   ø€ ÷ /
ñ /
á×#Ñ# dÕ*ð/
ñ ×'Ñ'¨$Õ.ð/
ñ Ÿ™ tÕ+ð	/
ñ
 ×&Ñ&¨Õ-ð/
ñ  �ð/
ñ ×(Ñ(¨4Õ/ð/
ñ × Ñ  4Õ'ð/
ñ ˜$•;ð/
ñ ™eŸl™lÕ*ð/
ñ Ñ+Õ,ð/
ñ 
%ñ/
r;   c
                óÄ  € V P                   ! RRVRVRVRVRVRVRV/V
B pVP                  p\        V	\        4      '       d   \	        V	) R4      MT	pV P                  VR	VR	3,          4      pRpVe7   V P                  ! RR
VRVRV P                  P                  P                  /V
B p\        VVVP                  VP                  VP                  VP                  R7      # )a…  
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
    config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
    (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.
rK  r®   rÈ   r1   r%   r:  r[  Nr¾   rs   rq  rh  )rr   rs   r%   ri   rj   rk   rE   )r#   rh   r-   r—   Úsliceri  Úloss_functionr?   rB  rh  rp   r%   ri   rj   rk   )r6   rK  r®   rÈ   r1   r%   r:  rq  r[  r\  rË   Úoutputsri   Úslice_indicesrs   rr   s   &&&&&&&&&&,     r9   r¹   Ú%JanusForConditionalGeneration.forward<  s'  € ð* —*’*ñ 	
Øð	
à%ð	
ð *ð	
ð &ð		
ð
 ,ð	
ð (ð	
ð  ð	
ð ñ	
ˆð  ×1Ñ1ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆàˆØÒØ×%Ò%ñ ØðØ&,ðØ9=¿¹×9PÑ9P×9[Ñ9[ðØ_eñˆDô +ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø '× ;Ñ ;ô
ð 	
r;   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r>   r…  r  )rA   rB   s   "€r9   rC   rf  o  s   ø€ ÷ 
ñ 
±·±ñ 
r;   c                óx   € V P                   P                  P                  V4      pVP                  ^ ^^^4      pV# )zü
Decodes generated image tokens from language model to continuous pixel values
with VQGAN module via upsampling.
Args:
    image_tokens (`torch.LongTensor` of shape `(batch_size, num_of_tokens)`):
        The tensors corresponding to the input images.
)r#   r=  r  r¢   )r6   r…  Údecoded_images   && r9   Údecode_image_tokensÚ1JanusForConditionalGeneration.decode_image_tokenso  s:   € ð Ÿ
™
×*Ñ*×1Ñ1°,Ó?ˆØ%×-Ñ-¨a°°A°qÓ9ˆØÐr;   c                ó~   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[R,          /# )r>   rl  NrÈ   Úlogits_processor)r2   r–   r‡  r   )rA   rB   s   "€r9   rC   rf  |  sG   ø€ ÷ $ñ $á—‘˜tÕ#ð$ñ ×(Ñ(¨4Õ/ð$ñ .°Õ4ñ	$r;   c                óz  <€ VP                  R R4      pV P                  ! VP                  RR4      3/ VB w  rgVR8X  d   \        S%V `  ! RRVRVRVRR/VB # VP	                  4       \
        P                  \
        P                  39  d   \        R4      hVP                  4        V P                  VP                  4       4       Ve   TM	\        4       pRVR	&   VP                  f   \        P                  R
4       ^Vn        VP                  VR&   V P!                  WP"                  V4      w  r‰pVP$                  VP&                  rº\)        VP*                  4      ^8w  d   \        RVP*                   R24      hVRJpV P-                  WlVP&                  R7       VP                  '       d=   VP                  ^8”  d,   VP/                  \1        VP                  4      4       RVn        V P3                  VVP*                  ^,          VRVVR7      pV P4                  ! RRVRVRVP6                  /VB w  r‡V P8                  P:                  P<                  P>                  pVP*                  w  rïVPA                  ^^4      pVP                  RR4      pVPA                  ^^4      pW'R&   VVR1R3,          VP"                  8g  VVR1R3,          VPB                  R,          8g  ,          pVVR1R3,          PE                  VVPF                  4       V PI                  4       ! V4      pVPK                  RR4      fN   T PM                  VPN                  ;'       g    RV^,          \Q        VPR                  Wß,           4      VR7      VR&   \T        PV                  ! Wí3W«R7      pVPX                  pVPZ                  pVP\                  pVP^                  pVP`                  pV'       d   V'       d   RMRpV'       d   V'       d   RMRpV'       d   V'       d   RMRpV'       d   V'       d   RMRp\c        V4       EFl  pV Pd                  ! RRVRVRR/VB pRV9   d&   VR,          Pg                  VP&                  4      VR&   V P8                  Ph                  ! R/ VBRVRV/B pV Pk                  VV4      pVPl                  R ,          Po                  4       p V P8                  Pq                  V 4      p!V! VV!4      p"VPr                  '       dA   \T        Pt                  ! V"RR7      p#\T        Pv                  ! V#^R7      Py                  R4      p$M\T        Pz                  ! V"RR7      p$V$VRV3&   \T        P|                  ! V$V$.4      p$V$P                  R4      p$V P�                  V$4      pEKo  	  V'       di   V'       d   VX!3,          pV'       d   VX Pƒ                  4       3,          pV'       d   VXP„                  ,          pV'       d   VXP†                  ,          pV'       d   \‰        VX!VVVXPŠ                  R7      # V# )!Úgeneration_moderH   Úgeneration_configNrl  rÈ   Úguidance_scalez’Got incompatible mode for Image Generation, should be one of greedy or sampling. Ensure that beam search is de-activated by setting `num_beams=1`.Tr[  zU`guidance_scale` is required for CFG but not provided. Setting to default value of 5.z;Expected input ids of shape (batch_size, seq_len), but got z3Passing `inputs embeds` is not supported currently.)rO  )r�  Úinput_ids_seq_lengthÚencoder_input_idsÚprefix_allowed_tokens_fnr~  rO  rK  Úexpand_sizer¾   Úboi_token_idr%   Ústatic)Úcache_implementationrþ   Úmax_cache_lenÚmodel_kwargsrN  r:  Úis_first_iterationÚoutput_attentionsÚoutput_hidden_statesrx  )Únum_samples)Ú	sequencesÚscoresrs   rj   ri   r%   rE   r)   )r¾   r)   r¾   )FÚpopÚ_prepare_generation_configr+   ÚgenerateÚget_generation_moder   ÚSAMPLEÚGREEDY_SEARCHrå   ÚvalidateÚ_validate_model_kwargsÚcopyr   r‚  ÚloggerÚwarningÚ_prepare_model_inputsÚbos_token_idr±   rO  r×  r4   Ú_prepare_special_tokensrá  r	   Ú_get_logits_processorÚ_expand_inputs_for_generationÚnum_return_sequencesr#   r:  r?   Únum_image_tokensÚrepeatÚgeneration_kwargsÚmasked_fill_Úpad_token_idrN  ÚgetÚ_prepare_static_cacher‰  ÚmaxÚ
max_lengthr2   Úzerosr�  rŽ  Úoutput_scoresÚoutput_logitsÚreturn_dict_in_generater2  Úprepare_inputs_for_generationr²   rC  Ú#_update_model_kwargs_for_generationrh   Úcloner@  Ú	do_samplerÓ   ÚmultinomialÚsqueezeÚargmaxÚcatr    rn  rÍ   rj   ri   r   r%   )&r6   rl  rÈ   r~  rË   r€  r�  r‹  rK  Úmodel_input_namer±   rO  Úkwargs_has_attention_maskr£  rþ   rÿ   Úinput_tokensÚmaskr:  Úgenerated_tokensr�  rŽ  r­  r®  r¯  Ú
raw_scoresÚ
raw_logitsÚdecoder_hidden_statesÚdecoder_attentionsÚiÚmodel_inputsru  ru  r‘  Únext_token_scoresÚprobsÚ
next_tokenr8   s&   &&&&,                                €r9   r”  Ú&JanusForConditionalGeneration.generate{  sL  ø€ ð !Ÿ*™*Ð%6¸Ó?ˆØ*.×*IÒ*IØ�J‰JÐ*¨DÓ1ñ+
Ø5;ñ+
Ñ'Ðð
 ˜fÔ$ä‘7Ò#ñ Øðà-ðð #4ðð  $ð	ð
 ñð ð ×0Ñ0Ó2¼>×;PÑ;PÔR`×RnÑRnÐ:oÔoÜðTóð ð 	×"Ñ"Ô$Ø×#Ñ# L×$5Ñ$5Ó$7Ô8ð 0@Ò/KÑ+ÔQdÓQfÐð %)ˆ�[Ñ!à×+Ñ+Ò3Ü�N‰NÐrÔsØ/0ÐÔ,Ø):×)IÑ)IˆÐ%Ñ&ð 59×4NÑ4NØ×2Ñ2°Ló5
Ñ1ˆ	 \ð "Ÿ™¨×)9Ñ)9ˆväˆy�‰Ó 1Ô$ÜØMÈiÏoÉoÐM^ØEðFóð ð %3¸$Ð$>Ð!Ø×$Ñ$Ð%6ÐZc×ZjÑZjÐ$Ôkð ×+×+Ð+Ð0A×0PÑ0PÐSTÔ0TØ×#Ñ#Ô$IÐJ[×JjÑJjÓ$kÔlØ/3ÐÔ,ð  ×5Ñ5Ø/Ø!*§¡°Õ!3Ø'Ø%)Ø-Øð 6ó 
Ðð #'×"DÒ"Dñ #
Øð#
à)ð#
ð *×>Ñ>ð#
ð ñ	#
Ñˆ	ð  Ÿ:™:×2Ñ2×9Ñ9×JÑJÐØ'Ÿo™oÑˆ
à ×'Ñ'¨¨1Ó-ˆØ%×)Ñ)Ð*:¸DÓAˆØ'×.Ñ.¨q°!Ó4ˆØ)7Ð%Ñ&ð ˜Z™[¨!˜^Õ,Ð0A×0NÑ0NÑNØ˜™ a˜Õ(Ð,=×,OÑ,OÐP^Õ,_Ñ_õ
ˆð 	�Z‘[ !�^Õ$×1Ñ1°$Ð8I×8VÑ8VÔWà×1Ñ1Ô3°LÓAˆà×ÑÐ-¨tÓ4Ò<à.2×.HÑ.HØ%6×%KÑ%K×%WÐ%WÈxà%¨�>ä!Ð"3×">Ñ">Ð@PÕ@ZÓ[Ø)ð /Ió /ˆLÐ*Ñ+ô !Ÿ;š;¨
Ð'EÈUÔbÐð .×?Ñ?ÐØ0×EÑEÐØ)×7Ñ7ˆØ)×7Ñ7ˆØ"3×"KÑ"KÐç3¿‘RÈDˆ
ß3¿‘RÈDˆ
ß'>×CW¡Ð^bÐß$;×@Q™RÐX\ÐäÐ'×(ˆAð  ×=Ò=ñ Ø+ðØ7CðØX\ðØ`lñˆLð   <Ô/Ø1=Ð>NÕ1O×1RÑ1RÐS`×SgÑSgÓ1h�Ð-Ñ.à—j‘j×/Ò/ñ Øñà"3ðð &:òˆGð  ×CÑCÀGÈ\ÓZˆLØ"×4Ñ4°XÕ>×DÑDÓFˆLð —Z‘Z×/Ñ/°Ó=ˆFÙ 0°¸FÓ CÐð !×*×*Ð*ÜŸšÐ&7¸RÔ@�Ü"×.Ò.¨uÀ!ÔD×LÑLÈRÓP‘
ä"Ÿ\š\Ð*;ÀÔD�
à%/Ð˜Q ˜TÑ"ô Ÿš J°
Ð#;Ó<ˆJØ#×-Ñ-¨bÓ1ˆJà ×HÑHÈÓT‹MñQ )÷T #ßØ˜v˜iÕ'�
ßØ˜|×1Ñ1Ó3Ð5Õ5�
ß Ø" g×&8Ñ&8Õ8Ð"ß#Ø%¨×)>Ñ)>Õ>Ð%ç"Ü,Ø*ØØ!Ø-Ø3Ø '× 7Ñ 7ôð ð $Ð#r;   )r?   ri  r#   rF   )	NNNNNNNNr   )NNN)rI   rJ   rK   rL   Ú_tied_weights_keysÚoutput_modalitiesrT   r�   rn  r   r   r¹   r{  r2   Úno_gradr”  rV   rW   rX   rY   s   @@r9   rd  rd  )  s…   ù‡ € Ø*Ð,VÐWÐØ)ÐØ!Ð÷ó ÷ð ð
 Ø÷/
ñ /
ó ó ð/
÷b
ð 
ð ‡]‚]ƒ_÷$ô $ó ÷$ð $r;   rd  )rû   )r"   rd  r4  r  r>  )SÚcollections.abcr   Údataclassesr   r2   Útorch.nn.functionalr   r£   r‰  Ú r   r/   Úactivationsr   Úcache_utilsr   Ú
generationr	   r
   r   r   Úgeneration.utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úautor   Úconfiguration_janusr   r   r    Ú
get_loggerrI   r›  r"   r\   rf   rp   rÌ   r.   rÃ   rÚ   rÜ   r  r$   r-  r>  rU  rh  r�  r£  r²  r¾  rÆ  rÔ  rò  rý  r  r   r(  r4  rd  Ú__all__rE   r;   r9   Ú<module>rÝ     sß  ðõ* %Ý !ã ß Ð Ý å &Ý !Ý  ß uÓ uÝ 9Ý 9ß XÑ Xß FÝ &ß u× uÝ 7Ý 5Ý ß QÑ Qð 
×	Ò	˜HÓ	%€ð ôi˜?ó ió ðiñ$ ðôð
 ô	4�{ó 	4ó óð	4ñ ðôð
 ô@ ;ó @ó óð@ñ* ðôð
 ô@ +ó @ó óð@ô4H˜BŸI™Iô HõV	U÷%ô2I$˜2Ÿ9™9ô I$ôX�R—Y‘Yô ô( Ð8ô  ôF@˜Ÿ™ô @ðD ô3Ð+ó 3ó ð3ôl˜BŸI™Iô ô$<" §	¡	ô <"ô~)(˜BŸI™Iô )(ôX &˜"Ÿ)™)ô  &ôF	˜rŸy™yô 	ô˜RŸY™Yô ô˜Ÿ™ô ô,J!˜Ÿ	™	ô J!ôZA˜Ÿ	™	ô AðH Ø
ô4Ð6ó 4ó ó ð4ñ ðôôDUÐ%ó DUóðDUôN˜2Ÿ9™9ô ô$�R—Y‘Yô ñ  ðôô
f
Ð%ó f
óð
f
ôRR$Ð$8¸/ô R$òj t‚r;   