+
    œ°³j¨a  ã                   óZ  € R t ^ RIt^ RIHt ^ RIt^ RIHt ^RIHt ^RI	H
t
 ^RIHtHt ^RIHt ^RIHt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 ^RIH t H!t! ^RI"H#t# ^RI$H%t% ]PL                  ! ]'4      t( ! R R]PR                  4      t* ! R R]PR                  4      t+R2R R llt, ! R R]PR                  4      t- ! R R]PR                  4      t. ! R R]PR                  4      t/ ! R R]PR                  4      t0 ! R R]PR                  4      t1 ! R R ]PR                  4      t2 ! R! R"]PR                  4      t3 ! R# R$]4      t4] ! R% R&]4      4       t5 ! R' R(]54      t6] ! R) R*]54      4       t7]! R+R,7       ! R- R.]54      4       t8]! R/R,7       ! R0 R1]]54      4       t9. R3Ot:R# )4zPyTorch DINOv2 model.N)ÚCallable)Únn)Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚGradientCheckpointingLayer)ÚBackboneOutputÚBaseModelOutputÚBaseModelOutputWithPoolingÚImageClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚloggingÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs©ÚDinov2Configc                   ój   a a€ ] tR t^&t o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tRtVt	V ;t
# )
ÚDinov2EmbeddingszE
Construct the CLS token, mask token, position and patch embeddings.
c                ó$   <€ V ^8„  d   QhRS[ RR/# ©é   ÚconfigÚreturnNr   )ÚformatÚ__classdict__s   "€Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/dinov2/modeling_dinov2.pyÚ__annotate__ÚDinov2Embeddings.__annotate__+   s   ø€ ÷ ñ ™|ð °ñ ó    c                óœ  <€ \         SV `  4        \        P                  ! \        P
                  ! ^^VP                  4      4      V n        VP                  '       d;   \        P                  ! \        P                  ! ^VP                  4      4      V n
        \        V4      V n        V P                  P                  p\        P                  ! \        P
                  ! ^V^,           VP                  4      4      V n        \        P                  ! VP                   4      V n        VP$                  V n        VP                  V n        Wn        R# )é   N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚrandnÚhidden_sizeÚ	cls_tokenÚuse_mask_tokenÚzerosÚ
mask_tokenÚDinov2PatchEmbeddingsÚpatch_embeddingsÚnum_patchesÚposition_embeddingsÚDropoutÚhidden_dropout_probÚdropoutÚ
patch_sizer   )Úselfr   r4   Ú	__class__s   && €r"   r)   ÚDinov2Embeddings.__init__+   sÛ   ø€ Ü‰ÑÔäŸš¤e§k¢k°!°Q¸×8JÑ8JÓ&KÓLˆŒØ× × Ð Ü Ÿlšl¬5¯;ª;°q¸&×:LÑ:LÓ+MÓNˆDŒOÜ 5°fÓ =ˆÔØ×+Ñ+×7Ñ7ˆÜ#%§<¢<´·²¸A¸{ÈQ½ÐPV×PbÑPbÓ0cÓ#dˆÔ Ü—z’z &×"<Ñ"<Ó=ˆŒØ ×+Ñ+ˆŒØ$×3Ñ3ˆÔØŽr%   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   Ú
embeddingsÚheightÚwidthr   )r+   ÚTensorÚint)r    r!   s   "€r"   r#   r$   9   s;   ø€ ÷ &Dñ &D±5·<±<ð &DÉð &DÑUXð &DÑ]b×]iÑ]iñ &Dr%   c                óX  € VP                   ^,          ^,
          pV P                  P                   ^,          ^,
          p\        P                  P	                  4       '       g   WE8X  d   W#8X  d   V P                  # V P                  R,          pV P                  R,          pVP                   R	,          pW P
                  ,          p	W0P
                  ,          p
\        VR,          4      pVP                  ^W»V4      pVP                  ^ ^^^4      pVP                  p\        P                  P                  VP                  \        P                  4      Wš3RRR7      P                  VR7      pVP                  ^ ^^^4      P                  ^R	V4      p\        P                   ! Wg3^R7      # )
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 interpolation at torch.float32 precision.

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_corners©Údtype©Údim)ºNNN:Nr'   N©rL   :r'   NNéÿÿÿÿ)Úshaper5   r+   ÚjitÚ
is_tracingr9   r   ÚreshapeÚpermuterI   r   Ú
functionalÚinterpolateÚtoÚfloat32ÚviewÚcat)r:   r>   r?   r@   r4   Únum_positionsÚclass_pos_embedÚpatch_pos_embedrK   Ú
new_heightÚ	new_widthÚsqrt_num_positionsÚtarget_dtypes   &&&&         r"   Úinterpolate_pos_encodingÚ)Dinov2Embeddings.interpolate_pos_encoding9   sp  € ð !×&Ñ& qÕ)¨AÕ-ˆØ×0Ñ0×6Ñ6°qÕ9¸AÕ=ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×+Ñ+Ð+à×2Ñ2°5Õ9ˆØ×2Ñ2°5Õ9ˆà×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆØ&×,Ñ,ˆÜŸ-™-×3Ñ3Ø×ÑœuŸ}™}Ó-ØÐ(ØØð	 4ó 
÷
 ‰"�<ˆ"Ó
 ð 	ð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆä�yŠy˜/Ð;ÀÔCÐCr%   c                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# )r   Úpixel_valuesÚbool_masked_posNr   ©r+   rA   )r    r!   s   "€r"   r#   r$   a   s7   ø€ ÷ ñ ¡E§L¡Lð Á5Ç<Á<ÐRVÕCVð Ñbg×bnÑbnñ r%   c                óV  € VP                   w  r4rVV P                  P                  P                  P                  pV P                  VP                  VR 7      4      pVel   V P                  '       dZ   \        P                  ! VP                  R4      V P                  P                  VP                  4      P                  ^ 4      V4      pV P                  P                  VRR4      p	\        P                  ! W˜3^R7      pW€P                  W…V4      ,           pV P                  V4      pV# )rH   rJ   rN   )rO   r3   Ú
projectionÚweightrI   rV   r/   r+   ÚwhereÚ	unsqueezer1   r.   ÚexpandrY   ra   r8   )
r:   rd   re   Ú
batch_sizeÚ_r?   r@   r`   r>   Ú
cls_tokenss
   &&&       r"   ÚforwardÚDinov2Embeddings.forwarda   sö   € Ø'3×'9Ñ'9Ñ$ˆ
�vØ×,Ñ,×7Ñ7×>Ñ>×DÑDˆØ×*Ñ*¨<¯?©?À¨?Ó+NÓOˆ
àÒ&¨4×+>×+>Ð+>ÜŸšØ×)Ñ)¨"Ó-¨t¯©×/AÑ/AÀ*×BRÑBRÓ/S×/]Ñ/]Ð^_Ó/`ÐblóˆJð
 —^‘^×*Ñ*¨:°r¸2Ó>ˆ
Ü—Y’Y 
Ð7¸QÔ?ˆ
ð  ×"?Ñ"?À
ÐTYÓ"ZÕZˆ
à—\‘\ *Ó-ˆ
àÐr%   )r.   r   r8   r1   r3   r9   r5   r/   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r)   ra   rp   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r;   r!   s   @@r"   r   r   &   s0   ù‡ € ñ÷ó ÷&Dð &D÷P÷ ò r%   r   c                   óH   a a€ ] tR t^wt oRtV 3R ltV3R lR ltRtVtV ;t	# )r2   zÜ
This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
`hidden_states` (patch embeddings) of shape `(batch_size, seq_length, hidden_size)` to be consumed by a
Transformer.
c                ó  <€ \         SV `  4        VP                  VP                  r2VP                  VP
                  rT\        V\        P                  P                  4      '       d   TMW"3p\        V\        P                  P                  4      '       d   TMW33pV^,          V^,          ,          V^ ,          V^ ,          ,          ,          pW n        W0n        W@n        W`n
        \        P                  ! WEW3R7      V n        R# )r'   )Úkernel_sizeÚstrideN)r(   r)   Ú
image_sizer9   Únum_channelsr-   Ú
isinstanceÚcollectionsÚabcÚIterabler4   r   ÚConv2drh   )r:   r   r€   r9   r�   r-   r4   r;   s   &&     €r"   r)   ÚDinov2PatchEmbeddings.__init__~   sÃ   ø€ Ü‰ÑÔØ!'×!2Ñ!2°F×4EÑ4E�JØ$*×$7Ñ$7¸×9KÑ9K�kä#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ü#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ø! !•}¨
°1­Õ5¸*ÀQ½-È:ÐVWÍ=Õ:XÕYˆØ$ŒØ$ŒØ(ÔØ&ÔäŸ)š) LÈ:ÔiˆŽr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   rd   r   rf   )r    r!   s   "€r"   r#   Ú"Dinov2PatchEmbeddings.__annotate__�   s#   ø€ ÷ ñ ¡E§L¡Lð ±U·\±\ñ r%   c                óä   € VP                   ^,          pW P                  8w  d   \        RV P                   RV R24      hV P                  V4      P	                  ^4      P                  ^^4      pV# )r'   zoMake sure that the channel dimension of the pixel values match with the one set in the configuration. Expected z	 but got Ú.)rO   r�   Ú
ValueErrorrh   ÚflattenÚ	transpose)r:   rd   r�   r>   s   &&  r"   rp   ÚDinov2PatchEmbeddings.forward�   sx   € Ø#×)Ñ)¨!Õ,ˆØ×,Ñ,Ô,ÜðØ!×.Ñ.Ð/¨y¸¸ÀaðIóð ð —_‘_ \Ó2×:Ñ:¸1Ó=×GÑGÈÈ1ÓMˆ
ØÐr%   )r€   r�   r4   r9   rh   ©
rs   rt   ru   rv   rw   r)   rp   rx   ry   rz   r{   s   @@r"   r2   r2   w   s   ù‡ € ñõj÷÷ ð r%   r2   c                ó  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R,          R\        R	\
        \        ,          /# )
r   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingr8   Úkwargs)r   ÚModuler+   rA   Úfloatr   r   )r    s   "r"   r#   r#   ™   s{   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô �T�\ð%ô ð%ô Ô'Õ(ñ%r%   c                 ó¶  € Vf   VP                  R4      R,          p\        P                  ! WP                  ^^4      4      V,          pVe	   W„,           p\        P
                  P                  VRR7      p\        P
                  P                  W†V P                  R7      p\        P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )NrJ   )ÚpÚtrainingrN   ç      à¿)
rE   r+   ÚmatmulrŽ   r   rT   Úsoftmaxr8   r�   Ú
contiguous)
r’   r“   r”   r•   r–   r—   r8   r˜   Úattn_weightsÚattn_outputs
   &&&&&&&,  r"   Úeager_attention_forwardr¤   ™   s±   € ð ‚Ø—*‘*˜R“. DÕ(ˆô —<’< §}¡}°Q¸Ó':Ó;¸gÕE€LàÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r%   c                   óP   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tVtV ;t# )ÚDinov2SelfAttentionc                ó    <€ V ^8„  d   QhRS[ /# ©r   r   r   )r    r!   s   "€r"   r#   Ú Dinov2SelfAttention.__annotate__·   s   ø€ ÷ ]ñ ]™|ñ ]r%   c                óh  <€ \         SV `  4        VP                  VP                  ,          ^ 8w  d9   \	        VR4      '       g'   \        RVP                   RVP                   R24      hWn        VP                  V n        \        VP                  VP                  ,          4      V n        V P                  V P                  ,          V n	        VP                  V n        V P                  R,          V n        RV n        \        P                  ! VP                  V P                  VP                   R7      V n        \        P                  ! VP                  V P                  VP                   R7      V n        \        P                  ! VP                  V P                  VP                   R7      V n        R# )	é    Úembedding_sizezThe hidden size z4 is not a multiple of the number of attention heads r‹   F©ÚbiasNrž   )r(   r)   r-   Únum_attention_headsÚhasattrrŒ   r   rB   Úattention_head_sizeÚall_head_sizeÚattention_probs_dropout_probÚdropout_probr—   Ú	is_causalr   ÚLinearÚqkv_biasr“   r”   r•   ©r:   r   r;   s   &&€r"   r)   ÚDinov2SelfAttention.__init__·   sG  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Õ:¸aÔ?ÌÐPVÐXh×HiÒHiÜØ" 6×#5Ñ#5Ð"6ð 7Ø×3Ñ3Ð4°Að7óð ð
 ŒØ#)×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÕ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔØ"×?Ñ?ˆÔØ×/Ñ/°Õ5ˆŒØˆŒä—Y’Y˜v×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÈ&Ï/É/ÔZˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŽ
r%   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[ P                  S[ P                  3,          /# ©r   Úhidden_statesr˜   r   )r+   rA   r   r   Útuple)r    r!   s   "€r"   r#   r©   Ë   sE   ø€ ÷ .ñ .á—|‘|ð.ñ Ñ+Õ,ð.ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ	.r%   c           	     óÔ  € VP                   ^ ,          pVRV P                  V P                  3pV P                  V4      P                  ! V!  P                  ^^4      pV P                  V4      P                  ! V!  P                  ^^4      pV P                  V4      P                  ! V!  P                  ^^4      p\        P                  ! V P                  P                  \        4      pT! V VVVR3RV P                  RV P                  RV P                  '       g   RMV P                   /VB w  ršV	P#                  4       RR V P$                  3,           pV	P'                  V4      p	Wš3# )r«   Nrµ   r—   r8   ç        rN   éþÿÿÿ)rO   r¯   r±   r”   rX   rŽ   r•   r“   r   Úget_interfacer   Ú_attn_implementationr¤   rµ   r—   r�   r´   rE   r²   rR   )r:   r¼   r˜   rm   Ú	new_shapeÚ	key_layerÚvalue_layerÚquery_layerÚattention_interfaceÚcontext_layerÚattention_probsÚnew_context_layer_shapes   &&,         r"   rp   ÚDinov2SelfAttention.forwardË   s_  € ð
 #×(Ñ(¨Õ+ˆ
Ø  D×$<Ñ$<¸d×>VÑ>VÐVˆ	à—H‘H˜]Ó+×0Ò0°)Ñ<×FÑFÀqÈ!ÓLˆ	Ø—j‘j Ó/×4Ò4°iÑ@×JÑJÈ1ÈaÓPˆØ—j‘j Ó/×4Ò4°iÑ@×JÑJÈ1ÈaÓPˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ *=ØØØØØñ
*
ð —n‘nð
*
ð —L‘Lð
*
ð  $Ÿ}Ÿ}˜}‘C°$×2CÑ2Cð
*
ð ñ
*
Ñ&ˆð #0×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÕ"SÐØ%×-Ñ-Ð.EÓFˆàÐ-Ð-r%   )
r²   r±   r   r´   rµ   r”   r¯   r“   r—   r•   ©	rs   rt   ru   rv   r)   rp   rx   ry   rz   r{   s   @@r"   r¦   r¦   ¶   s    ù‡ € ÷]ó ]÷(.÷ .ð .r%   r¦   c                   óT   a a€ ] tR t^î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	# )ÚDinov2SelfOutputz—
The residual connection is defined in Dinov2Layer instead of here (as is the case with other models), due to the
layernorm applied before each block.
c                ó    <€ V ^8„  d   QhRS[ /# r¨   r   )r    r!   s   "€r"   r#   ÚDinov2SelfOutput.__annotate__ô   s   ø€ ÷ >ñ >™|ñ >r%   c                óÎ   <€ \         SV `  4        \        P                  ! VP                  VP                  4      V n        \        P                  ! VP                  4      V n        R # rr   )	r(   r)   r   r¶   r-   Údenser6   r7   r8   r¸   s   &&€r"   r)   ÚDinov2SelfOutput.__init__ô   sB   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
Ü—z’z &×"<Ñ"<Ó=ˆŽr%   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   r¼   Úinput_tensorr   rf   )r    r!   s   "€r"   r#   rÐ   ù   s1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r%   c                óJ   € V P                  V4      pV P                  V4      pV# rr   ©rÒ   r8   )r:   r¼   rÕ   s   &&&r"   rp   ÚDinov2SelfOutput.forwardù   s$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØÐr%   r×   r�   r{   s   @@r"   rÎ   rÎ   î   s#   ù‡ € ñ÷
>ó >÷
÷ ð 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# )ÚDinov2Attentioné   c                ó    <€ V ^8„  d   QhRS[ /# r¨   r   )r    r!   s   "€r"   r#   ÚDinov2Attention.__annotate__  s   ø€ ÷ /ñ /™|ñ /r%   c                ód   <€ \         SV `  4        \        V4      V n        \	        V4      V n        R # rr   )r(   r)   r¦   Ú	attentionrÎ   Úoutputr¸   s   &&€r"   r)   ÚDinov2Attention.__init__  s&   ø€ Ü‰ÑÔÜ,¨VÓ4ˆŒÜ& vÓ.ˆŽr%   c                ód   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[ P                  /# r»   )r+   rA   r   r   )r    r!   s   "€r"   r#   rÝ     s7   ø€ ÷ ñ á—|‘|ðñ Ñ+Õ,ðñ 
�‰ñ	r%   c                óR   € V P                   ! V3/ VB w  r4V P                  W14      pV# rr   ©rß   rà   )r:   r¼   r˜   Úself_attn_outputrn   rà   s   &&,   r"   rp   ÚDinov2Attention.forward  s/   € ð
 #Ÿnšn¨]ÑE¸fÑEÑÐØ—‘Ð-Ó=ˆØˆr%   rä   rÌ   r{   s   @@r"   rÚ   rÚ      s   ù‡ € ÷/ó /÷
÷ ð 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# )ÚDinov2LayerScalei  c                ó   <€ V ^8„  d   QhRR/# ©r   r   N© )r    r!   s   "€r"   r#   ÚDinov2LayerScale.__annotate__  s   ø€ ÷ ^ñ ^ $ñ ^r%   c                ó¸   <€ \         SV `  4        \        P                  ! VP                  \
        P                  ! VP                  4      ,          4      V n        R # rr   )	r(   r)   r   r*   Úlayerscale_valuer+   Úonesr-   Úlambda1r¸   s   &&€r"   r)   ÚDinov2LayerScale.__init__  s8   ø€ Ü‰ÑÔÜ—|’| F×$;Ñ$;¼e¿jºjÈ×I[ÑI[Ó>\Õ$\Ó]ˆŽr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   Úhidden_stater   rf   )r    r!   s   "€r"   r#   rì     s#   ø€ ÷ +ñ +¡E§L¡Lð +±U·\±\ñ +r%   c                ó&   € WP                   ,          # rr   ©rð   ©r:   rô   s   &&r"   rp   ÚDinov2LayerScale.forward  s   € ØŸl™lÕ*Ð*r%   rö   rÌ   r{   s   @@r"   rè   rè     s    ù‡ € ÷^ó ^÷+÷ +ð +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# )Ú	Dinov2MLPi  c                ó   <€ V ^8„  d   QhRR/# rê   rë   )r    r!   s   "€r"   r#   ÚDinov2MLP.__annotate__  s   ø€ ÷ 	Gñ 	G $ñ 	Gr%   c                óš  <€ \         SV `  4        VP                  ;r#\        VP                  VP                  ,          4      p\
        P                  ! W$R R7      V n        \        VP                  \        4      '       d   \        VP                  ,          V n        MVP                  V n        \
        P                  ! WCR R7      V n        R# )Tr­   N)r(   r)   r-   rB   Ú	mlp_ratior   r¶   Úfc1r‚   Ú
hidden_actÚstrr   Ú
activationÚfc2©r:   r   Úin_featuresÚout_featuresÚhidden_featuresr;   s   &&   €r"   r)   ÚDinov2MLP.__init__  s�   ø€ Ü‰ÑÔØ%+×%7Ñ%7Ð7ˆÜ˜f×0Ñ0°6×3CÑ3CÕCÓDˆÜ—9’9˜[ÀÔEˆŒÜ�f×'Ñ'¬×-Ò-Ü$ V×%6Ñ%6Õ7ˆD�Oà$×/Ñ/ˆDŒOÜ—9’9˜_ÀÔFˆŽr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ró   rf   )r    r!   s   "€r"   r#   rü   %  s#   ø€ ÷ ñ ¡E§L¡Lð ±U·\±\ñ r%   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# rr   )rÿ   r  r  r÷   s   &&r"   rp   ÚDinov2MLP.forward%  s2   € Ø—x‘x Ó-ˆØ—‘ |Ó4ˆØ—x‘x Ó-ˆØÐr%   )r  rÿ   r  rÌ   r{   s   @@r"   rú   rú     s    ù‡ € ÷	Gó 	G÷÷ ð 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# )ÚDinov2SwiGLUFFNi,  c                ó   <€ V ^8„  d   QhRR/# rê   rë   )r    r!   s   "€r"   r#   ÚDinov2SwiGLUFFN.__annotate__-  s   ø€ ÷ Oñ O $ñ Or%   c                ój  <€ \         SV `  4        VP                  ;r#\        VP                  VP                  ,          4      p\        V^,          ^,          4      ^,           ^,          ^,          p\
        P                  ! V^V,          RR7      V n        \
        P                  ! WCRR7      V n        R# )r   Tr­   N)	r(   r)   r-   rB   rþ   r   r¶   Ú
weights_inÚweights_outr  s   &&   €r"   r)   ÚDinov2SwiGLUFFN.__init__-  s†   ø€ Ü‰ÑÔØ%+×%7Ñ%7Ð7ˆÜ˜f×0Ñ0°6×3CÑ3CÕCÓDˆÜ˜°Õ2°QÕ6Ó7¸!Õ;ÀÕAÀAÕEˆäŸ)š) K°°_Õ1DÈ4ÔPˆŒÜŸ9š9 _ÈÔNˆÖr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ró   rf   )r    r!   s   "€r"   r#   r  6  s#   ø€ ÷ (ñ (¡E§L¡Lð (±U·\±\ñ (r%   c                ó¼   € V P                  V4      pVP                  ^RR7      w  r#\        P                  P	                  V4      V,          pV P                  V4      # )r   rJ   rN   )r  Úchunkr   rT   Úsilur  )r:   rô   Úx1Úx2Úhiddens   &&   r"   rp   ÚDinov2SwiGLUFFN.forward6  sQ   € Ø—‘ |Ó4ˆØ×#Ñ# A¨2Ð#Ó.‰ˆÜ—‘×#Ñ# BÓ'¨"Õ,ˆØ×Ñ Ó'Ð'r%   )r  r  rÌ   r{   s   @@r"   r  r  ,  s    ù‡ € ÷Oó O÷(÷ (ð (r%   r  c                   ój   a a€ ] tR tRt oRtR
V3R lV 3R llltV3R lR ltV3R lR ltR	tVt	V ;t
# )ÚDinov2DropPathi>  zÃStochastic depth (DropPath) per sample, for residual blocks.

Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
<https://arxiv.org/abs/1603.09382>`_.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Ú	drop_probr   N)rš   )r    r!   s   "€r"   r#   ÚDinov2DropPath.__annotate__E  s   ø€ ÷ #ñ #¡%ð #°$ñ #r%   c                ó0   <€ \         SV `  4        Wn        R # rr   )r(   r)   r  )r:   r  r;   s   &&€r"   r)   ÚDinov2DropPath.__init__E  s   ø€ Ü‰ÑÔØ"Žr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r¼   r   rf   )r    r!   s   "€r"   r#   r   I  s#   ø€ ÷ <ñ <¡U§\¡\ð <±e·l±lñ <r%   c                ó˜  € V P                   R 8X  g   V P                  '       g   V# ^V P                   ,
          pVP                  ^ ,          3RVP                  ^,
          ,          ,           p\        P
                  ! W1P                  VP                  R7      p\        P                  ! WB,           4      pVP                  V4      V,          # )r¿   )rI   Údevice)r'   )
r  r�   rO   Úndimr+   ÚrandrI   r&  ÚfloorÚdiv)r:   r¼   Ú	keep_probrO   Úrandom_tensors   &&   r"   rp   ÚDinov2DropPath.forwardI  s•   € Ø�>‰>˜SÔ ¨¯¯¨Ø Ð Ø˜Ÿ™Õ&ˆ	Ø×$Ñ$ QÕ'Ð)¨D°M×4FÑ4FÈÕ4JÕ,KÕKˆÜŸ
š
 5×0CÑ0CÈM×L`ÑL`ÔaˆÜŸš MÕ$=Ó>ˆØ× Ñ  Ó+¨mÕ;Ð;r%   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   )r  )r    r!   s   "€r"   r#   r   R  s   ø€ ÷ %ñ %™Cñ %r%   c                ó    € R V P                    2# )zp=©r  ©r:   s   &r"   Ú
extra_reprÚDinov2DropPath.extra_reprR  s   € Ø�D—N‘NÐ#Ð$Ð$r%   r1  )r¿   )rs   rt   ru   rv   rw   r)   rp   r3  rx   ry   rz   r{   s   @@r"   r  r  >  s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %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	# )ÚDinov2LayeriV  zCThis corresponds to the Block class in the original implementation.c                ó$   <€ V ^8„  d   QhRS[ RR/# r   r   )r    r!   s   "€r"   r#   ÚDinov2Layer.__annotate__Y  s   ø€ ÷ 5ñ 5™|ð 5°ñ 5r%   c                ó.  <€ \         SV `  4        \        P                  ! VP                  VP
                  R 7      V n        \        V4      V n        \        V4      V n
        VP                  R8”  d   \        VP                  4      M\        P                  ! 4       V n        \        P                  ! VP                  VP
                  R 7      V n        VP                   '       d   \#        V4      V n        M\'        V4      V n        \        V4      V n        R# )©Úepsr¿   N)r(   r)   r   Ú	LayerNormr-   Úlayer_norm_epsÚnorm1rÚ   rß   rè   Úlayer_scale1Údrop_path_rater  ÚIdentityÚ	drop_pathÚnorm2Úuse_swiglu_ffnr  Úmlprú   Úlayer_scale2r¸   s   &&€r"   r)   ÚDinov2Layer.__init__Y  sÀ   ø€ Ü‰ÑÔä—\’\ &×"4Ñ"4¸&×:OÑ:OÔPˆŒ
Ü(¨Ó0ˆŒÜ,¨VÓ4ˆÔØBH×BWÑBWÐZ]ÔB]œ¨×(=Ñ(=Ô>Ôce×cnÒcnÓcpˆŒä—\’\ &×"4Ñ"4¸&×:OÑ:OÔPˆŒ
à× × Ð Ü& vÓ.ˆD�Hä  Ó(ˆDŒHÜ,¨VÓ4ˆÖr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r$  rf   )r    r!   s   "€r"   r#   r8  i  s'   ø€ ÷ ñ á—|‘|ðñ 
�‰ñr%   c                ó2  € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      V,           pV P	                  V4      pV P                  V4      pV P                  V4      pV P                  V4      V,           pV# rr   )r>  rß   r?  rB  rC  rE  rF  )r:   r¼   Úhidden_states_normÚself_attention_outputÚlayer_outputs   &&   r"   rp   ÚDinov2Layer.forwardi  s”   € ð "ŸZ™Z¨Ó6ÐØ $§¡Ð/AÓ BÐØ $× 1Ñ 1Ð2GÓ HÐð Ÿ™Ð'<Ó=ÀÕMˆð —z‘z -Ó0ˆØ—x‘x Ó-ˆØ×(Ñ(¨Ó6ˆð —~‘~ lÓ3°mÕCˆàÐr%   )rß   rB  r?  rF  rE  r>  rC  r�   r{   s   @@r"   r6  r6  V  s!   ù‡ € ÙM÷5ó 5÷ ÷ ð r%   r6  c                   ó¤   a a€ ] tR tRt oRtRtRtRtR.tRt	Rt
RtRtR]R]/t]P"                  ! 4       V3R lV 3R	 ll4       tV3R
 ltRtVtV ;t# )ÚDinov2PreTrainedModeli  Údinov2rd   Tr6  r¼   Ú
attentionsc                ó€   <€ V ^8„  d   QhRS[ P                  S[ P                  ,          S[ P                  ,          RR/# )r   r’   r   N)r   r¶   r†   r<  )r    r!   s   "€r"   r#   Ú"Dinov2PreTrainedModel.__annotate__‘  s5   ø€ ÷ Iñ I¡B§I¡I±·	±	Õ$9¹B¿L¹LÕ$Hð IÈTñ Ir%   c                óz  <€ \         SV `  V4       \        V\        P                  \        P
                  34      '       dj   \        P                  ! VP                  RV P                  P                  R7       VP                  e#   \        P                  ! VP                  4       R# R# \        V\        4      '       d¯   \        P                  ! VP                  RV P                  P                  R7       \        P                  ! VP                  RV P                  P                  R7       V P                  P                   '       d#   \        P                  ! VP"                  4       R# R# \        V\$        4      '       d8   \        P&                  ! VP(                  V P                  P*                  4       R# R# )zInitialize the weightsr¿   )ÚmeanÚstdN)r(   Ú_init_weightsr‚   r   r¶   r†   ÚinitÚtrunc_normal_ri   r   Úinitializer_ranger®   Úzeros_r   r5   r.   r/   r1   rè   Ú	constant_rð   rî   )r:   r’   r;   s   &&€r"   rW  Ú#Dinov2PreTrainedModel._init_weights�  s  ø€ ô 	‰Ñ˜fÔ%Ü�fœrŸy™y¬"¯)©)Ð4×5Ò5Ü×Ò˜vŸ}™}°3¸D¿K¹K×<YÑ<YÕZØ�{‰{Ò&Ü—’˜FŸK™KÖ(ñ 'ä˜Ô 0×1Ò1Ü×Ò˜v×9Ñ9ÀÈÏÉ×IfÑIfÕgÜ×Ò˜v×/Ñ/°c¸t¿{¹{×?\Ñ?\Õ]Ø�{‰{×)×)Ð)Ü—’˜F×-Ñ-Ö.ñ *ä˜Ô 0×1Ò1Ü�NŠN˜6Ÿ>™>¨4¯;©;×+GÑ+GÖHñ 2r%   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r¨   r   )r    r!   s   "€r"   r#   rS    s   ø‡ ‚ áÑò r%   rë   )Úimage)rs   rt   ru   rv   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendr6  r¦   Ú_can_record_outputsr+   Úno_gradrW  Ú__annotate_func__rx   ry   rz   r{   s   @@r"   rO  rO    sy   ù‡ € ð !ÐØ$€OØ!ÐØ&*Ð#Ø&˜ÐØ€NØÐØÐØ"&Ðà˜ØÐ)ðÐð
 ‡]‚]ƒ_÷Iò Ió ðI÷% … r%   rO  c                   ór   a a€ ] tR tRt oV3R lV 3R llt]]! RR7      V3R lR l4       4       tRtVt	V ;t
# )	ÚDinov2Encoderi¡  c                ó    <€ V ^8„  d   QhRS[ /# r¨   r   )r    r!   s   "€r"   r#   ÚDinov2Encoder.__annotate__¢  s   ø€ ÷ ñ ™|ñ r%   c                óÞ   <€ \         SV `  V4       \        P                  ! \	        VP
                  4       Uu. uF  p\        V4      NK  	  up4      V n        V P                  4        R # u upi rr   )	r(   r)   r   Ú
ModuleListÚrangeÚnum_hidden_layersr6  ÚlayerÚ	post_init©r:   r   rn   r;   s   && €r"   r)   ÚDinov2Encoder.__init__¢  sQ   ø€ Ü‰Ñ˜Ô Ü—]’]ÄÀv×G_ÑG_ÔA`Ó#aÑA`¸A¤K°Ö$7ÑA`Ñ#aÓbˆŒ
Ø�‰Öùò $bs   ¸A*F)Útie_last_hidden_statesc                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# r»   )r+   rA   r   r   r
   )r    r!   s   "€r"   r#   ro  ©  s2   ø€ ÷ @ñ @¡U§\¡\ð @¹VÑDVÕ=Wð @Ñ\kñ @r%   c                óP   € V P                    F  pV! V4      pK  	  \        VR 7      # ))Úlast_hidden_state)rt  r
   )r:   r¼   r˜   Úlayer_modules   &&, r"   rp   ÚDinov2Encoder.forward§  s)   € ð !ŸJœJˆLÙ(¨Ó7ŠMñ 'ô °Ô?Ð?r%   )rt  )rs   rt   ru   rv   r)   r   r   rp   rx   ry   rz   r{   s   @@r"   rm  rm  ¡  s8   ù‡ € ÷ó ð
  Ù¨EÔ2÷@ó 3ó  ÷@ð @r%   rm  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t]]R	V3R lR ll4       4       tRt	Vt
V ;t# )
ÚDinov2Modeli°  c                ó    <€ V ^8„  d   QhRS[ /# r¨   r   )r    r!   s   "€r"   r#   ÚDinov2Model.__annotate__²  s   ø€ ÷ 
ñ 
™|ñ 
r%   c                óô   <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        \        P                  ! VP                  VP                  R 7      V n        V P                  4        R# )r:  N)r(   r)   r   r   r>   rm  Úencoderr   r<  r-   r=  Ú	layernormru  r¸   s   &&€r"   r)   ÚDinov2Model.__init__²  sW   ø€ Ü‰Ñ˜Ô ØŒä*¨6Ó2ˆŒÜ$ VÓ,ˆŒäŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒð 	�‰Ör%   c                ó    <€ V ^8„  d   QhRS[ /# r/  ©r2   )r    r!   s   "€r"   r#   r�  ¾  ó   ø€ ÷ 0ñ 0Ñ&;ñ 0r%   c                ó.   € V P                   P                  # rr   ©r>   r3   r2  s   &r"   Úget_input_embeddingsÚ Dinov2Model.get_input_embeddings¾  ó   € Ø�‰×/Ñ/Ð/r%   c                ó†   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[S[,          RS[/# )r   rd   Nre   r˜   r   )r+   rA   r   r   r   )r    r!   s   "€r"   r#   r�  Ã  sK   ø€ ÷ 
ñ 
á—l‘l TÕ)ð
ñ Ÿ™¨Õ,ð
ñ Ñ+Õ,ð	
ñ
 
$ñ
r%   c                óü   € Vf   \        R4      hV P                  WR7      pV P                  ! V3/ VB pVP                  pV P	                  V4      pVR,          p\        VVVP                  VP                  R7      # )zÏ
bool_masked_pos (`torch.BoolTensor` of shape `(batch_size, sequence_length)`):
    Boolean masked positions. Indicates which patches are masked (1) and which aren't (0). Only relevant for
    pre-training.
z You have to specify pixel_values)re   )r{  Úpooler_outputr¼   rQ  )rL   r«   rL   )rŒ   r>   rƒ  r{  r„  r   r¼   rQ  )r:   rd   re   r˜   Úembedding_outputÚencoder_outputsÚsequence_outputÚpooled_outputs   &&&,    r"   rp   ÚDinov2Model.forwardÁ  sƒ   € ð ÒÜÐ?Ó@Ð@àŸ?™?¨<˜?ÓYÐà+/¯<ª<Ð8HÑ+SÈFÑ+SˆØ)×;Ñ;ˆØŸ.™.¨Ó9ˆØ'¨Õ0ˆä)Ø-Ø'Ø)×7Ñ7Ø&×1Ñ1ô	
ð 	
r%   )r   r>   rƒ  r„  ©NN)rs   rt   ru   rv   r)   r‹  r   r   rp   rx   ry   rz   r{   s   @@r"   r  r  °  s?   ù‡ € ÷
ó 
÷0ð 0ð Ø÷
ñ 
ó ó ÷
ð 
r%   r  z§
    Dinov2 Model transformer with an image classification head on top (a linear layer on top of the final hidden state
    of the [CLS] token) e.g. for ImageNet.
    )Úcustom_introc                   óh   a a€ ] tR tRt oV3R lV 3R llt]]RV3R lR ll4       4       tRtVt	V ;t
# )ÚDinov2ForImageClassificationià  c                ó$   <€ V ^8„  d   QhRS[ RR/# r   r   )r    r!   s   "€r"   r#   Ú)Dinov2ForImageClassification.__annotate__ç  s   ø€ ÷ ñ ™|ð °ñ r%   c                óB  <€ \         SV `  V4       VP                  V n        \        V4      V n        VP                  ^ 8”  d3   \
        P                  ! VP                  ^,          VP                  4      M\
        P                  ! 4       V n	        V P                  4        R# )r«   N)r(   r)   Ú
num_labelsr  rP  r   r¶   r-   rA  Ú
classifierru  r¸   s   &&€r"   r)   Ú%Dinov2ForImageClassification.__init__ç  sy   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ! &Ó)ˆŒð EK×DUÑDUÐXYÔDYŒB�IŠI�f×(Ñ(¨1Õ,¨f×.?Ñ.?Ô@Ô_a×_jÒ_jÓ_lð 	Œð
 	�‰Ör%   c                ó†   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[S[,          RS[/# )r   rd   NÚlabelsr˜   r   )r+   rA   r   r   r   )r    r!   s   "€r"   r#   r›  ÷  sK   ø€ ÷ 
ñ 
á—l‘l TÕ)ð
ñ —‘˜tÕ#ð
ñ Ñ+Õ,ð	
ñ
 
ñ
r%   c                óf  € V P                   ! V3/ VB pVP                  pVR,          pVR,          p\        P                  ! WgP	                  ^R7      .^R7      pV P                  V4      p	Rp
Ve   V P                  ! W)V P                  3/ VB p
\        V
V	VP                  VP                  R7      # )ab  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
rJ   N)ÚlossÚlogitsr¼   rQ  )rL   r«   rM   )rP  r{  r+   rY   rU  rž  Úloss_functionr   r   r¼   rQ  )r:   rd   r¡  r˜   Úoutputsr“  r.   Úpatch_tokensÚlinear_inputr¤  r£  s   &&&,       r"   rp   Ú$Dinov2ForImageClassification.forwardõ  s°   € ð /3¯kªk¸,Ñ.QÈ&Ñ.Qˆà!×3Ñ3ˆØ# DÕ)ˆ	Ø& uÕ-ˆä—y’y )×->Ñ->À1Ð->Ó-EÐ!FÈAÔNˆØ—‘ Ó.ˆàˆØÒØ×%Ò% f°d·k±kÑLÀVÑLˆDä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r%   )rž  rP  r�  r–  )rs   rt   ru   rv   r)   r   r   rp   rx   ry   rz   r{   s   @@r"   r™  r™  à  s5   ù‡ € ÷ó ð Ø÷
ñ 
ó ó ÷
ð 
r%   r™  zO
    Dinov2 backbone, to be used with frameworks like DETR and MaskFormer.
    c                   ót   a a€ ] tR tRt oV 3R ltV3R lR lt]]]V3R lR l4       4       4       t	Rt
VtV ;t# )ÚDinov2Backbonei  c                óf  <€ \         SV `  V4       \        VP                  ^,           4       Uu. uF  q!P                  NK  	  upV n        \        V4      V n        \        V4      V n	        \        P                  ! VP                  VP                  R7      V n        V P                  4        R# u upi )r'   r:  N)r(   r)   rr  rs  r-   Únum_featuresr   r>   rm  rƒ  r   r<  r=  r„  ru  rv  s   && €r"   r)   ÚDinov2Backbone.__init__  s†   ø€ Ü‰Ñ˜Ô ä9>¸v×?WÑ?WÐZ[Õ?[Ô9\Ó]Ñ9\°A×/Ô/Ñ9\Ñ]ˆÔÜ*¨6Ó2ˆŒÜ$ VÓ,ˆŒäŸš f×&8Ñ&8¸f×>SÑ>SÔTˆŒð 	�‰Öùò ^s   ¯B.c                ó    <€ V ^8„  d   QhRS[ /# r/  r‡  )r    r!   s   "€r"   r#   ÚDinov2Backbone.__annotate__*  rˆ  r%   c                ó.   € V P                   P                  # rr   rŠ  r2  s   &r"   r‹  Ú#Dinov2Backbone.get_input_embeddings*  r�  r%   c                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# )r   rd   r˜   r   )r+   rA   r   r   r	   )r    r!   s   "€r"   r#   r°  0  s3   ø€ ÷ 8
ñ 8
á—l‘lð8
ñ Ñ+Õ,ð8
ñ 
ñ	8
r%   c                ó¨  € RVR&   V P                  V4      pV P                  ! V3/ VB pVP                  p. p\        V P                  V4       Fá  w  rxWpP
                  9   g   K  V P                  P                  '       d   V P                  V4      pV P                  P                  '       dq   VR,          pVP                  w  ršr¼V P                  P                  pVP                  W›V,          WÍ,          R4      pVP                  ^ ^^^4      P                  4       pVP                  V4       Kã  	  \!        \#        V4      VVP$                  R7      # )aÖ  
Examples:

```python
>>> from transformers import AutoImageProcessor, AutoBackbone
>>> import torch
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> processor = AutoImageProcessor.from_pretrained("facebook/dinov2-base")
>>> model = AutoBackbone.from_pretrained(
...     "facebook/dinov2-base", out_features=["stage2", "stage5", "stage8", "stage11"]
... )

>>> inputs = processor(image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 768, 16, 16]
```TÚoutput_hidden_states)Úfeature_mapsr¼   rQ  rM   rN   )r>   rƒ  r¼   ÚzipÚstage_namesr  r   Úapply_layernormr„  Úreshape_hidden_statesrO   r9   rR   rS   r¡   Úappendr	   r½   rQ  )r:   rd   r˜   r‘  rà   r¼   r¶  Ústagerô   rm   rn   r?   r@   r9   s   &&,           r"   rp   ÚDinov2Backbone.forward-  s2  € ðD *.ˆÐ%Ñ&àŸ?™?¨<Ó8ÐØ"&§,¢,Ð/?Ñ"JÀ6Ñ"JˆØ×,Ñ,ˆàˆÜ#& t×'7Ñ'7¸Ö#GÑˆEØ×)Ñ)Ö)Ø—;‘;×.×.Ð.Ø#'§>¡>°,Ó#?�LØ—;‘;×4×4Ð4Ø#/°Õ#6�Lð 4@×3EÑ3EÑ0�J 6Ø!%§¡×!7Ñ!7�JØ#/×#7Ñ#7¸
ÈjÕDXÐZ_ÕZmÐoqÓ#r�LØ#/×#7Ñ#7¸¸1¸aÀÓ#C×#NÑ#NÓ#P�LØ×#Ñ# LÖ1ñ $Hô Ü˜|Ó,Ø'Ø×(Ñ(ô
ð 	
r%   )r>   rƒ  r„  r­  )rs   rt   ru   rv   r)   r‹  r   r   r   rp   rx   ry   rz   r{   s   @@r"   r«  r«    s=   ù‡ € õ
÷0ð 0ð Ø Ø÷8
ó ó !ó ÷8
ð 8
r%   r«  )Nr¿   )r™  r  rO  r«  );rw   Úcollections.abcrƒ   r   r+   r   Ú r   rX  Úactivationsr   Úbackbone_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr	   r
   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_dinov2r   Ú
get_loggerrs   Úloggerr™   r   r2   r¤   r¦   rÎ   rÚ   rè   rú   r  r  r6  rO  rm  r  r™  r«  Ú__all__rë   r%   r"   Ú<module>rÍ     s�  ðñ ã Ý $ã Ý å &Ý !ß HÝ 9ß rÓ rß FÝ &ß KÓ Kß IÝ 5Ý .ð 
×	Ò	˜HÓ	%€ôN�r—y‘yô Nôb˜BŸI™Iô ÷D%ô:4.˜"Ÿ)™)ô 4.ôp�r—y‘yô ô$�b—i‘iô ô +�r—y‘yô +ô�—	‘	ô ô&(�b—i‘iô (ô$%�R—Y‘Yô %ô0&Ð,ô &ðR ôI˜Oó Ió ðIôB@Ð)ô @ð ô,
Ð'ó ,
ó ð,
ñ^ ðôô/
Ð#8ó /
óð/
ñd ðôô
K
�]Ð$9ó K
óð
K
ò\ e‚r%   