§
    ‚Štj×s  ã                   óÊ  — d Z ddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZmZ ddlmZ ddlmZ  ej        e¦  «        Z G d„ dej        ¦  «        Z ej!        j"        d„ ¦   «         Z#d„ Z$ G d„ dej        ¦  «        Z% G d„ dej        ¦  «        Z& G d„ dej        ¦  «        Z' G d„ dej        ¦  «        Z(d„ Z)d„ Z* G d„ dej        ¦  «        Z+ G d„ d e¦  «        Z, G d!„ d"ej        ¦  «        Z-e G d#„ d$e¦  «        ¦   «         Z.e G d%„ d&e.¦  «        ¦   «         Z/ ed'¬(¦  «         G d)„ d*ee.¦  «        ¦   «         Z0g d+¢Z1dS ),zPyTorch ViTDet backbone.é    N)Únné   )Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚGradientCheckpointingLayer)ÚBackboneOutputÚBaseModelOutput)ÚPreTrainedModel)Úauto_docstringÚlogging)Úcan_return_tupleé   )ÚVitDetConfigc                   óL   ‡ — e Zd ZdZˆ fd„Zd„ Zdej        dej        fd„Zˆ xZ	S )ÚVitDetEmbeddingsz·
    This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
    `hidden_states` (patch embeddings) to be consumed by a Transformer.
    c                 óX  •— t          ¦   «                              ¦   «          |j        |j        }}|j        |j        }}t          |t          j        j	        ¦  «        r|n||f}t          |t          j        j	        ¦  «        r|n||f}|d         |d         z  |d         |d         z  z  }|| _
        || _        || _        || _        |j        r8|dz   }t          j        t          j        d||j        ¦  «        ¦  «        | _        nd | _        t          j        ||||¬¦  «        | _        d S )Nr   r   )Úkernel_sizeÚstride)ÚsuperÚ__init__Úpretrain_image_sizeÚ
patch_sizeÚnum_channelsÚhidden_sizeÚ
isinstanceÚcollectionsÚabcÚIterableÚ
image_sizeÚnum_patchesÚ use_absolute_position_embeddingsr   Ú	ParameterÚtorchÚzerosÚposition_embeddingsÚConv2dÚ
projection)	ÚselfÚconfigr!   r   r   r   r"   Únum_positionsÚ	__class__s	           €úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/vitdet/modeling_vitdet.pyr   zVitDetEmbeddings.__init__*   s$  ø€ Ý‰Œ×ÒÑÔÐØ!'Ô!;¸VÔ=N�Jˆ
Ø$*Ô$7¸Ô9K�kˆå#-¨j½+¼/Ô:RÑ#SÔ#SÐq�Z�ZÐZdÐfpÐYqˆ
Ý#-¨j½+¼/Ô:RÑ#SÔ#SÐq�Z�ZÐZdÐfpÐYqˆ
Ø! !”}¨
°1¬Ñ5¸*ÀQ¼-È:ÐVWÌ=Ñ:XÑYˆØ$ˆŒØ$ˆŒØ(ˆÔØ&ˆÔàÔ2ð 	,à'¨!™OˆMÝ')¤|µE´KÀÀ=ÐRXÔRdÑ4eÔ4eÑ'fÔ'fˆDÔ$Ð$à'+ˆDÔ$åœ) L°+È:Ð^hÐiÑiÔiˆŒˆˆó    c                 ó  — |r|dd…dd…f         }|j         d         }t          t          j        |¦  «        ¦  «        }||z  |k    rt	          d¦  «        ‚t
          j                             ¦   «         s||k    s||k    rit          j	         
                    |                     d||d¦  «                             dddd¦  «        ||fdd	¬
¦  «        }|                     dddd¦  «        S |                     d||d¦  «        S )a¯  
        Calculate absolute positional embeddings. If needed, resize embeddings and remove cls_token dimension for the
        original embeddings.

        Args:
            abs_pos_embeddings (`torch.Tensor`):
                Absolute positional embeddings with (1, num_position, num_channels).
            has_cls_token (`bool`):
                If true, has 1 embedding in abs_pos_embeddings for cls token.
            height (`int`):
                Height of input image tokens.
            width (`int`):
                Width of input image tokens.

        Returns:
            Absolute positional embeddings after processing with shape (1, height, width, num_channels)
        Nr   z5Absolute position embeddings must be a square number.éÿÿÿÿr   r   é   ÚbicubicF)ÚsizeÚmodeÚalign_corners)ÚshapeÚintÚmathÚsqrtÚ
ValueErrorr%   ÚjitÚ
is_tracingr   Ú
functionalÚinterpolateÚreshapeÚpermute)r*   Úabs_pos_embeddingsÚhas_cls_tokenÚheightÚwidthÚnum_positionr4   Únew_abs_pos_embeddingss           r.   Úget_absolute_positionsz'VitDetEmbeddings.get_absolute_positions@   s  € ð$ ð 	;Ø!3°A°A°A°q°r°r°EÔ!:ÐØ)Ô/°Ô2ˆÝ•4”9˜\Ñ*Ô*Ñ+Ô+ˆØ�$‰;˜,Ò&Ð&ÝÐTÑUÔUÐUåŒ9×ÒÑ!Ô!ð 	D d¨f¢n n¸Àº¸å%'¤]×%>Ò%>Ø"×*Ò*¨1¨d°D¸"Ñ=Ô=×EÒEÀaÈÈAÈqÑQÔQØ˜e�_ØØ#ð	 &?ñ &ô &Ð"ð *×1Ò1°!°Q¸¸1Ñ=Ô=Ð=à%×-Ò-¨a°¸ÀÑCÔCÐCr/   Úpixel_valuesÚreturnc                 óp  — |j         d         }|| j        k    rt          d| j        › d|› d�¦  «        ‚|                      |¦  «        }| j        �f|                     dddd¦  «        }||                      | j        d|j         d         |j         d         ¦  «        z   }|                     dddd¦  «        }|S )	Nr   zoMake sure that the channel dimension of the pixel values match with the one set in the configuration. Expected z	 but got ú.r   r2   r   T)r7   r   r;   r)   r'   rA   rH   )r*   rI   r   Ú
embeddingss       r.   ÚforwardzVitDetEmbeddings.forwardf   së   € Ø#Ô)¨!Ô,ˆØ˜4Ô,Ò,Ð,ÝðIØ!Ô.ðIð IØ9EðIð Ið Iñô ð ð —_’_ \Ñ2Ô2ˆ
àÔ#Ð/à#×+Ò+¨A¨q°!°QÑ7Ô7ˆJà# d×&AÒ&AØÔ(¨$°
Ô0@ÀÔ0CÀZÔEUÐVWÔEXñ'ô 'ñ ˆJð $×+Ò+¨A¨q°!°QÑ7Ô7ˆJàÐr/   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rH   r%   ÚTensorrN   Ú__classcell__©r-   s   @r.   r   r   $   s€   ø€ € € € € ðð ð
jð jð jð jð jð,$Dð $Dð $DðL E¤Lð °U´\ð ð ð ð ð ð ð ð r/   r   c                 ó¬  — t          dt          | |¦  «        z  dz
  ¦  «        }|j        d         |k    r‚t          j                             |                     d|j        d         d¦  «                             ddd¦  «        |d¬¦  «        }|                     d|¦  «                             dd¦  «        }n|}t          j	        | ¦  «        dd…df         t          || z  d¦  «        z  }t          j	        |¦  «        ddd…f         t          | |z  d¦  «        z  }||z
  |dz
  t          | |z  d¦  «        z  z   }|| 
                    ¦   «                  S )	a�  
    Get relative positional embeddings according to the relative positions of query and key sizes.

    Args:
        q_size (`int`):
            Size of query q.
        k_size (`int`):
            Size of key k.
        rel_pos (`torch.Tensor`):
            Relative position embeddings (num_embeddings, num_channels).

    Returns:
        Extracted positional embeddings according to relative positions.
    r2   r   r   r1   Úlinear)r4   r5   Ng      ð?)r8   Úmaxr7   r   r>   r?   r@   rA   r%   ÚarangeÚlong)Úq_sizeÚk_sizeÚrel_posÚmax_rel_distÚrel_pos_resizedÚq_coordsÚk_coordsÚrelative_coordss           r.   Úget_rel_posrc   |   sQ  € õ  �q�3˜v vÑ.Ô.Ñ.°Ñ2Ñ3Ô3€Là„}�QÔ˜<Ò'Ð'åœ-×3Ò3Ø�OŠO˜A˜wœ}¨QÔ/°Ñ4Ô4×<Ò<¸QÀÀ1ÑEÔEØØð 4ñ 
ô 
ˆð
 *×1Ò1°"°lÑCÔC×KÒKÈAÈqÑQÔQˆˆà!ˆõ Œ|˜FÑ#Ô# A A A t GÔ,­s°6¸F±?ÀCÑ/HÔ/HÑH€HÝŒ|˜FÑ#Ô# D¨!¨!¨! GÔ,­s°6¸F±?ÀCÑ/HÔ/HÑH€HØ (Ñ*¨v¸©z½SÀÈ&ÁÐRUÑ=VÔ=VÑ.VÑV€Oà˜?×/Ò/Ñ1Ô1Ô2Ð2r/   c                 ó¼  — |\  }}|\  }}	t          |||¦  «        }
t          ||	|¦  «        }|j        \  }}}|                     ||||¦  «        }t          j        d||
¦  «        }
t          j        d||¦  «        }|                      |||||	¦  «        |
dd…dd…dd…dd…df         z   |dd…dd…dd…ddd…f         z                        |||z  ||	z  ¦  «        } | S )aÀ  
    Calculate decomposed Relative Positional Embeddings as introduced in
    [MViT2](https://github.com/facebookresearch/mvit/blob/19786631e330df9f3622e5402b4a419a263a2c80/mvit/models/attention.py).

    Args:
        attn (`torch.Tensor`):
            Attention map.
        queries (`torch.Tensor`):
            Query q in the attention layer with shape (batch_size, queries_height * queries_width, num_channels).
        rel_pos_h (`torch.Tensor`):
            Relative position embeddings (Lh, num_channels) for height axis.
        rel_pos_w (`torch.Tensor`):
            Relative position embeddings (Lw, num_channels) for width axis.
        q_size (`tuple[int]`):
            Spatial sequence size of query q with (queries_height, queries_width).
        k_size (`tuple[int]`):
            Spatial sequence size of key k with (keys_height, keys_width).

    Returns:
        attn (Tensor): attention map with added relative positional embeddings.
    zbhwc,hkc->bhwkzbhwc,wkc->bhwkN)rc   r7   r@   r%   ÚeinsumÚview)ÚattnÚqueriesÚ	rel_pos_hÚ	rel_pos_wr[   r\   Úqueries_heightÚqueries_widthÚkeys_heightÚ
keys_widthÚrelative_heightÚrelative_widthÚ
batch_sizeÚ_ÚdimÚr_qÚrelative_weights                    r.   Ú!add_decomposed_relative_positionsrv   ¡   s  € ð, %+Ñ!€N�MØ$Ñ€K�Ý! .°+¸yÑIÔI€OÝ  °
¸IÑFÔF€Nà œÑ€J��3Ø
�/Š/˜* n°mÀSÑ
IÔ
I€CÝ”lÐ#3°S¸/ÑJÔJ€OÝ”lÐ#3°S¸.ÑIÔI€Oð 	�	Š	�*˜n¨m¸[È*ÑUÔUØ
˜!˜!˜!˜Q˜Q˜Q    1 1 1 dÐ*Ô
+ñ	,à
˜!˜!˜!˜Q˜Q˜Q    4¨¨¨Ð*Ô
+ñ	,÷ ‚dˆ:�~¨Ñ5°{ÀZÑ7OÑPÔPð	 	ð €Kr/   c                   ó,   ‡ — e Zd ZdZdˆ fd„	Zdd„Zˆ xZS )ÚVitDetAttentionz=Multi-head Attention block with relative position embeddings.Nc                 ó  •— t          ¦   «                              ¦   «          |j        }|j        }|| _        ||z  }|dz  | _        t          j        ||dz  |j        ¬¦  «        | _	        t          j        ||¦  «        | _
        |j        | _        | j        rrt          j        t          j        d|d         z  dz
  |¦  «        ¦  «        | _        t          j        t          j        d|d         z  dz
  |¦  «        ¦  «        | _        dS dS )zô
        Args:
            config (`VitDetConfig`):
                Model configuration.
            input_size (`tuple[int]`, *optional*):
                Input resolution, only required in case relative position embeddings are added.
        g      à¿r   ©Úbiasr2   r   r   N)r   r   r   Únum_attention_headsÚ	num_headsÚscaler   ÚLinearÚqkv_biasÚqkvÚprojÚ use_relative_position_embeddingsr$   r%   r&   ri   rj   )r*   r+   Ú
input_sizers   r}   Úhead_dimr-   s         €r.   r   zVitDetAttention.__init__Í   sõ   ø€ õ 	‰Œ×ÒÑÔÐàÔ ˆØÔ.ˆ	à"ˆŒØ˜)Ñ#ˆØ˜t‘^ˆŒ
å”9˜S #¨¡'°´Ð@Ñ@Ô@ˆŒÝ”I˜c 3Ñ'Ô'ˆŒ	à06Ô0WˆÔ-ØÔ0ð 	Xåœ\­%¬+°a¸*ÀQ¼-Ñ6GÈ!Ñ6KÈXÑ*VÔ*VÑWÔWˆDŒNÝœ\­%¬+°a¸*ÀQ¼-Ñ6GÈ!Ñ6KÈXÑ*VÔ*VÑWÔWˆDŒNˆNˆNð	Xð 	Xr/   Fc           	      ó4  — |j         \  }}}}|                      |¦  «                             |||z  d| j        d¦  «                             ddddd¦  «        }|                     d|| j        z  ||z  d¦  «                             d¦  «        \  }}	}
|| j        z  |	                     dd¦  «        z  }| j        r"t          ||| j
        | j        ||f||f¦  «        }|                     d¬¦  «        }||
z  }|                     || j        ||d¦  «        }|                     ddddd¦  «        }|                     |||d¦  «        }|                      |¦  «        }|r8|                     || j        |j         d         |j         d         ¦  «        }||f}n|f}|S )	Nr   r1   r2   r   r   é   éþÿÿÿ)rs   )r7   r�   r@   r}   rA   Úunbindr~   Ú	transposerƒ   rv   ri   rj   Úsoftmaxrf   r‚   )r*   Úhidden_stateÚoutput_attentionsrq   rD   rE   rr   r�   rh   ÚkeysÚvaluesÚattention_scoresÚattention_probsÚoutputss                 r.   rN   zVitDetAttention.forwardç   sÆ  € Ø'3Ô'9Ñ$ˆ
�F˜E 1à�hŠh�|Ñ$Ô$×,Ò,¨Z¸À%¹ÈÈDÌNÐ\^Ñ_Ô_×gÒgÐhiÐklÐnoÐqrÐtuÑvÔvˆà #§¢¨A¨z¸D¼NÑ/JÈFÐUZÉNÐ\^Ñ _Ô _× fÒ fÐghÑ iÔ iÑˆ��và# d¤jÑ0°D·N²NÀ2ÀrÑ4JÔ4JÑJÐàÔ0ð 	Ý@Ø  '¨4¬>¸4¼>ÈFÐTYÈ?Ð]cÐejÐ\kñ ô  Ðð +×2Ò2°rÐ2Ñ:Ô:ˆà&¨Ñ/ˆØ#×(Ò(¨°T´^ÀVÈUÐTVÑWÔWˆØ#×+Ò+¨A¨q°!°Q¸Ñ:Ô:ˆØ#×+Ò+¨J¸ÀÀrÑJÔJˆØ—y’y Ñ.Ô.ˆàð 	&Ø-×5Ò5Ø˜DœN¨OÔ,AÀ"Ô,EÀÔG\Ð]_ÔG`ñô ˆOð $ _Ð5ˆGˆGà#�oˆGàˆr/   ©N©F©rO   rP   rQ   rR   r   rN   rT   rU   s   @r.   rx   rx   Ê   s]   ø€ € € € € ØGÐGðXð Xð Xð Xð Xð Xð4ð ð ð ð ð ð ð r/   rx   c                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚVitDetLayerNormaL  
    A LayerNorm variant, popularized by Transformers, that performs point-wise mean and variance normalization over the
    channel dimension for inputs that have shape (batch_size, channels, height, width).
    https://github.com/facebookresearch/ConvNeXt/blob/d1fa8f6fef0a165b27399986cc2bdacc92777e40/models/convnext.py#L119
    ç�íµ ÷Æ°>c                 ó  •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        t          j        t	          j        |¦  «        ¦  «        | _        || _	        |f| _
        d S r“   )r   r   r   r$   r%   ÚonesÚweightr&   r{   ÚepsÚnormalized_shape)r*   r�   rœ   r-   s      €r.   r   zVitDetLayerNorm.__init__  si   ø€ Ý‰Œ×ÒÑÔÐÝ”l¥5¤:Ð.>Ñ#?Ô#?Ñ@Ô@ˆŒÝ”L¥¤Ð-=Ñ!>Ô!>Ñ?Ô?ˆŒ	ØˆŒØ!1Ð 3ˆÔÐÐr/   c                 ó"  — |                      dd¬¦  «        }||z
                       d¦  «                              dd¬¦  «        }||z
  t          j        || j        z   ¦  «        z  }| j        d d …d d f         |z  | j        d d …d d f         z   }|S )Nr   T)Úkeepdimr2   )ÚmeanÚpowr%   r:   rœ   r›   r{   )r*   ÚxÚuÚss       r.   rN   zVitDetLayerNorm.forward  s‘   € Ø�FŠF�1˜dˆFÑ#Ô#ˆØ�‰U�KŠK˜‰NŒN×Ò ¨4ÐÑ0Ô0ˆØ�‰U•e”j  T¤X¡Ñ.Ô.Ñ.ˆØŒK˜˜˜˜4 ˜Ô&¨Ñ*¨T¬Y°q°q°q¸$À°}Ô-EÑEˆØˆr/   )r˜   r•   rU   s   @r.   r—   r—     sV   ø€ € € € € ðð ð4ð 4ð 4ð 4ð 4ð 4ðð ð ð ð ð ð r/   r—   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚVitDetResBottleneckBlockz�
    The standard bottleneck residual block without the last activation layer. It contains 3 conv layers with kernels
    1x1, 3x3, 1x1.
    c                 óÌ  •— t          ¦   «                              ¦   «          t          j        ||dd¬¦  «        | _        t          |¦  «        | _        t          |j                 | _	        t          j        ||ddd¬¦  «        | _
        t          |¦  «        | _        t          |j                 | _        t          j        ||dd¬¦  «        | _        t          |¦  «        | _        dS )ar  
        Args:
            config (`VitDetConfig`):
                Model configuration.
            in_channels (`int`):
                Number of input channels.
            out_channels (`int`):
                Number of output channels.
            bottleneck_channels (`int`):
                Number of output channels for the 3x3 "bottleneck" conv layers.
        r   Frz   r   )Úpaddingr{   N)r   r   r   r(   Úconv1r—   Únorm1r   Ú
hidden_actÚact1Úconv2Únorm2Úact2Úconv3Únorm3)r*   r+   Úin_channelsÚout_channelsÚbottleneck_channelsr-   s        €r.   r   z!VitDetResBottleneckBlock.__init__$  sÂ   ø€ õ 	‰Œ×ÒÑÔÐÝ”Y˜{Ð,?ÀÈÐOÑOÔOˆŒ
Ý$Ð%8Ñ9Ô9ˆŒ
Ý˜6Ô,Ô-ˆŒ	å”YÐ2Ð4GÈÐTUÐ\aÐbÑbÔbˆŒ
Ý$Ð%8Ñ9Ô9ˆŒ
Ý˜6Ô,Ô-ˆŒ	å”YÐ2°LÀ!È%ÐPÑPÔPˆŒ
Ý$ \Ñ2Ô2ˆŒ
ˆ
ˆ
r/   c                 óX   — |}|                       ¦   «         D ]} ||¦  «        }Œ||z   }|S r“   )Úchildren)r*   r¢   ÚoutÚlayers       r.   rN   z VitDetResBottleneckBlock.forward<  s;   € ØˆØ—]’]‘_”_ð 	ð 	ˆEØ�%˜‘*”*ˆCˆCà�#‰gˆØˆ
r/   r•   rU   s   @r.   r¦   r¦     sQ   ø€ € € € € ðð ð
3ð 3ð 3ð 3ð 3ð0ð ð ð ð ð ð r/   r¦   c                   óP   ‡ — e Zd Zdededdfˆ fd„Zdej        dej        fd„Zˆ xZS )Ú	VitDetMlpÚin_featuresÚhidden_featuresrJ   Nc                 ó  •— t          ¦   «                              ¦   «          t          j        ||¦  «        | _        t
          |j                 | _        t          j        ||¦  «        | _        t          j	        |j
        ¦  «        | _        d S r“   )r   r   r   r   Úfc1r   r«   ÚactÚfc2ÚDropoutÚdropout_probÚdrop)r*   r+   r»   r¼   r-   s       €r.   r   zVitDetMlp.__init__F  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”9˜[¨/Ñ:Ô:ˆŒÝ˜&Ô+Ô,ˆŒÝ”9˜_¨kÑ:Ô:ˆŒÝ”J˜vÔ2Ñ3Ô3ˆŒ	ˆ	ˆ	r/   r¢   c                 óØ   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r“   )r¾   r¿   rÃ   rÀ   )r*   r¢   s     r.   rN   zVitDetMlp.forwardM  sR   € Ø�HŠH�Q‰KŒKˆØ�HŠH�Q‰KŒKˆØ�IŠI�a‰LŒLˆØ�HŠH�Q‰KŒKˆØ�IŠI�a‰LŒLˆàˆr/   )	rO   rP   rQ   r8   r   r%   rS   rN   rT   rU   s   @r.   rº   rº   E  sx   ø€ € € € € ð4¨Cð 4À#ð 4È$ð 4ð 4ð 4ð 4ð 4ð 4ð˜œð ¨%¬,ð ð ð ð ð ð ð ð r/   rº   c           	      ój  — | j         \  }}}}| |z  }| |z  }t          j                             | ddd|d|f¦  «        } ||z   ||z   }	}||z  }
|	|z  }|                      ||
||||¦  «        } |                      dddddd¦  «                             ¦   «                              d|||¦  «        }|||	ffS )a  
    Partition into non-overlapping windows with padding if needed.

    Args:
        hidden_state (`torch.Tensor`):
            Input tokens with [batch_size, height, width, num_channels].
        window_size (`int`):
            Window size.

    Returns:
        `tuple(torch.FloatTensor)` comprising various elements:
        - windows: windows after partition with [batch_size * num_windows, window_size, window_size, num_channels].
        - (padded_height, padded_width): padded height and width before partition
    r   r   r   r2   r‡   é   r1   )r7   r   r>   Úpadrf   rA   Ú
contiguous)rŒ   Úwindow_sizerq   rD   rE   r   Ú
pad_heightÚ	pad_widthÚpadded_heightÚpadded_widthÚn_hÚn_wÚwindowss                r.   Úwindow_partitionrÑ   W  sç   € ð /;Ô.@Ñ+€J�˜˜|ð �'˜[Ñ(€JØ�˜;Ñ&€IÝ”=×$Ò$ \°A°q¸!¸YÈÈ:Ð3VÑWÔW€LØ"(¨:Ñ"5°u¸yÑ7H�<€Mà
˜;Ñ
&€CØ
˜+Ñ
%€CØ×$Ò$ Z°°kÀ3ÈÐUaÑbÔb€LØ×"Ò" 1 a¨¨A¨q°!Ñ4Ô4×?Ò?ÑAÔA×FÒFÀrÈ;ÐXcÐeqÑrÔr€GØ�] LÐ1Ð1Ð1r/   c                 óX  — |\  }}|\  }}||z  }||z  }	| j         d         ||	z  z  }
|                      |
||	||d¦  «        }|                     dddddd¦  «                             ¦   «         }|                     |
||d¦  «        }|dd…d|…d|…dd…f                              ¦   «         S )	aB  
    Window unpartition into original sequences and removing padding.

    Args:
        windows (`torch.Tensor`):
            Input tokens with [batch_size * num_windows, window_size, window_size, num_channels].
        window_size (`int`):
            Window size.
        pad_height_width (`tuple[int]`):
            Padded height and width (padded_height, padded_width).
        height_width (`tuple[int]`):
            Original height and width before padding.

    Returns:
        hidden_state: unpartitioned sequences with [batch_size, height, width, num_channels].
    r   r1   r   r   r2   r‡   rÆ   N)r7   rf   rA   rÈ   )rÐ   rÉ   Úpad_height_widthÚheight_widthrÌ   rÍ   rD   rE   rÎ   rÏ   rq   rŒ   s               r.   Úwindow_unpartitionrÕ   v  sÎ   € ð" #3Ñ€M�<Ø �M€FˆEØ
˜;Ñ
&€CØ
˜+Ñ
%€CØ”˜qÔ! c¨C¡iÑ0€JØ—<’< 
¨C°°kÀ;ÐPRÑSÔS€LØ×'Ò'¨¨1¨a°°A°qÑ9Ô9×DÒDÑFÔF€LØ×$Ò$ Z°ÀÈbÑQÔQ€Là˜˜˜˜7˜F˜7 F U F¨A¨A¨AÐ-Ô.×9Ò9Ñ;Ô;Ð;r/   c                   ó^   ‡ — e Zd ZdZd
deddfˆ fd„Zdej        dej        fd„Zde	fd	„Z
ˆ xZS )ÚVitDetDropPathzÏ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>`_.
    ç        Ú	drop_probrJ   Nc                 óV   •— t          ¦   «                              ¦   «          || _        d S r“   )r   r   rÙ   )r*   rÙ   r-   s     €r.   r   zVitDetDropPath.__init__›  s$   ø€ Ý‰Œ×ÒÑÔÐØ"ˆŒˆˆr/   Úhidden_statesc                 ó  — | j         dk    s| j        s|S d| j         z
  }|j        d         fd|j        dz
  z  z   }t	          j        ||j        |j        ¬¦  «        }t	          j        ||z   ¦  «        }| 	                    |¦  «        |z  S )NrØ   r   r   )r   )ÚdtypeÚdevice)
rÙ   Útrainingr7   Úndimr%   ÚrandrÝ   rÞ   ÚfloorÚdiv)r*   rÛ   Ú	keep_probr7   Úrandom_tensors        r.   rN   zVitDetDropPath.forwardŸ  s“   € ØŒ>˜SÒ Ð ¨¬Ð Ø Ð Ø˜œÑ&ˆ	ØÔ$ QÔ'Ð)¨D°MÔ4FÈÑ4JÑ,KÑKˆÝœ
 5°Ô0CÈMÔL`ÐaÑaÔaˆÝœ M°IÑ$=Ñ>Ô>ˆØ× Ò  Ñ+Ô+¨mÑ;Ð;r/   c                 ó   — d| j         › �S )Nzp=)rÙ   ©r*   s    r.   Ú
extra_reprzVitDetDropPath.extra_repr¨  s   € Ø$�D”NÐ$Ð$Ð$r/   )rØ   )rO   rP   rQ   rR   Úfloatr   r%   rS   rN   Ústrrè   rT   rU   s   @r.   r×   r×   ”  s›   ø€ € € € € ðð ð#ð # %ð #°$ð #ð #ð #ð #ð #ð #ð< U¤\ð <°e´lð <ð <ð <ð <ð%˜Cð %ð %ð %ð %ð %ð %ð %ð %r/   r×   c                   óž   ‡ — e Zd ZdZ	 ddededededd	f
ˆ fd
„Z	 dde	j
        dedee	j
        e	j
        f         ee	j
                 z  fd„Zˆ xZS )ÚVitDetLayerzCThis corresponds to the Block class in the original implementation.r   Fr+   Údrop_path_raterÉ   Úuse_residual_blockrJ   Nc                 ó  •— t          ¦   «                              ¦   «          |j        }|j        }t	          |t
          t          f¦  «        r|n||f}|j        }t	          |t
          t          f¦  «        r|n||f}|d         |d         z  |d         |d         z  f}t          j	        ||j
        ¬¦  «        | _        t          ||dk    r|n||f¬¦  «        | _        |dk    rt          |¦  «        nt          j        ¦   «         | _        t          j	        ||j
        ¬¦  «        | _        t%          ||t'          ||j        z  ¦  «        ¬¦  «        | _        || _        || _        | j        rt1          ||||dz  ¬¦  «        | _        d S d S )	Nr   r   )rœ   )r„   rØ   )r+   r»   r¼   r2   )r+   r²   r³   r´   )r   r   r   r!   r   ÚlistÚtupler   r   Ú	LayerNormÚlayer_norm_epsrª   rx   Ú	attentionr×   ÚIdentityÚ	drop_pathr®   rº   r8   Ú	mlp_ratioÚmlprÉ   rî   r¦   Úresidual)
r*   r+   rí   rÉ   rî   rs   r!   r   r„   r-   s
            €r.   r   zVitDetLayer.__init__¯  sŸ  ø€ õ 	‰Œ×ÒÑÔÐàÔ ˆàÔ&ˆ
Ý#-¨j½4Å¸-Ñ#HÔ#HÐf�Z�ZÈzÐ[eÐNfˆ
àÔ&ˆ
Ý#-¨j½4Å¸-Ñ#HÔ#HÐf�Z�ZÈzÐ[eÐNfˆ
à  ”m z°!¤}Ñ4°jÀ´mÀzÐRSÄ}Ñ6TÐUˆ
Ý”\ #¨6Ô+@ÐAÑAÔAˆŒ
Ý(Ø¨[¸AÒ-=Ð-=˜z˜zÀKÐQ\ÐC]ð
ñ 
ô 
ˆŒð <JÈCÒ;OÐ;O�¨Ñ7Ô7Ð7ÕUWÔU`ÑUbÔUbˆŒÝ”\ #¨6Ô+@ÐAÑAÔAˆŒ
Ý F¸ÍSÐQTÐW]ÔWgÑQgÑMhÔMhÐiÑiÔiˆŒà&ˆÔà"4ˆÔØÔ"ð 	å4ØØØ Ø$'¨1¡Hð	ñ ô ˆDŒMˆMˆMð	ð 	r/   rÛ   r�   c                 ó˜  — |                      dddd¦  «        }|}|                      |¦  «        }| j        dk    r2|j        d         |j        d         }}t	          || j        ¦  «        \  }}|                      ||¬¦  «        }|d         }|dd …         }| j        dk    rt          || j        |||f¦  «        }||                      |¦  «        z   }||                      |                      |  	                    |¦  «        ¦  «        ¦  «        z   }|                      dddd¦  «        }| j
        r|                      |¦  «        }|f|z   }|S )Nr   r2   r   r   )r�   )rA   rª   rÉ   r7   rÑ   rô   rÕ   rö   rø   r®   rî   rù   )	r*   rÛ   r�   ÚshortcutrD   rE   rÓ   Úself_attention_outputsr’   s	            r.   rN   zVitDetLayer.forwardÒ  sh  € ð
 &×-Ò-¨a°°A°qÑ9Ô9ˆà ˆàŸ
š
 =Ñ1Ô1ˆð Ô˜aÒÐØ)Ô/°Ô2°MÔ4GÈÔ4J�EˆFÝ.>¸}ÈdÔN^Ñ._Ô._Ñ+ˆMÐ+à!%§¢ØØ/ð "0ñ "
ô "
Ðð /¨qÔ1ˆØ(¨¨¨Ô,ˆð Ô˜aÒÐÝ.¨}¸dÔ>NÐP`ÐciÐkpÐbqÑrÔrˆMð ! 4§>¢>°-Ñ#@Ô#@Ñ@ˆà%¨¯ª°t·x²xÀÇ
Â
È=Ñ@YÔ@YÑ7ZÔ7ZÑ([Ô([Ñ[ˆà%×-Ò-¨a°°A°qÑ9Ô9ˆàÔ"ð 	9Ø ŸMšM¨-Ñ8Ô8ˆMà Ð" WÑ,ˆàˆr/   )r   r   Fr”   )rO   rP   rQ   rR   r   ré   r8   Úboolr   r%   rS   rñ   rN   rT   rU   s   @r.   rì   rì   ¬  sÎ   ø€ € € € € ØMÐMð qvð!ð !Ø"ð!Ø49ð!ØLOð!Øimð!à	ð!ð !ð !ð !ð !ð !ðL #(ð'ð 'à”|ð'ð  ð'ð 
ˆuŒ|˜Uœ\Ð)Ô	*¨U°5´<Ô-@Ñ	@ð	'ð 'ð 'ð 'ð 'ð 'ð 'ð 'r/   rì   c                   ó\   ‡ — e Zd Zdeddfˆ fd„Z	 	 	 ddej        ded	ed
edee	z  f
d„Z
ˆ xZS )ÚVitDetEncoderr+   rJ   Nc           
      ó   •— t          ¦   «                              ¦   «          || _        |j        }d„ t	          j        d|j        |d¬¦  «        D ¦   «         }g }t          |¦  «        D ]E}|                     t          |||         ||j
        v r|j        nd||j        v ¬¦  «        ¦  «         ŒFt          j        |¦  «        | _        d| _        d S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Úitem)Ú.0r¢   s     r.   ú
<listcomp>z*VitDetEncoder.__init__.<locals>.<listcomp>  s    € ÐjÐjÐj q˜!Ÿ&š&™(œ(ÐjÐjÐjr/   r   Úcpu)rÞ   )rí   rÉ   rî   F)r   r   r+   Únum_hidden_layersr%   Úlinspacerí   ÚrangeÚappendrì   Úwindow_block_indicesrÉ   Úresidual_block_indicesr   Ú
ModuleListr¸   Úgradient_checkpointing)r*   r+   Údepthrí   ÚlayersÚir-   s         €r.   r   zVitDetEncoder.__init__ý  sí   ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ(ˆð kÐj­E¬N¸1¸fÔ>SÐUZÐchÐ,iÑ,iÔ,iÐjÑjÔjˆàˆÝ�u‘”ð 	ð 	ˆAØ�MŠMÝØØ#1°!Ô#4Ø67¸6Ô;VÐ6VÐ6V Ô 2Ð 2Ð\]Ø'(¨FÔ,IÐ'Ið	ñ ô ñô ð ð õ ”] 6Ñ*Ô*ˆŒ
Ø&+ˆÔ#Ð#Ð#r/   FTrÛ   r�   Úoutput_hidden_statesÚreturn_dictc                 ó  — |rdnd }|rdnd }t          | j        ¦  «        D ]/\  }}|r||fz   } |||¦  «        }	|	d         }|r||	d         fz   }Œ0|r||fz   }|st          d„ |||fD ¦   «         ¦  «        S t          |||¬¦  «        S )Nr  r   r   c              3   ó   K  — | ]}|®|V — Œ	d S r“   r  )r  Úvs     r.   ú	<genexpr>z(VitDetEncoder.forward.<locals>.<genexpr>,  s(   è è € ÐmÐm˜qÐ_`Ð_l˜Ð_lÐ_lÐ_lÐ_lÐmÐmr/   ©Úlast_hidden_staterÛ   Ú
attentions)Ú	enumerater¸   rñ   r   )
r*   rÛ   r�   r  r  Úall_hidden_statesÚall_self_attentionsr  Úlayer_moduleÚlayer_outputss
             r.   rN   zVitDetEncoder.forward  s÷   € ð #7Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4Ðå(¨¬Ñ4Ô4ð 		Pð 		P‰OˆAˆ|Ø#ð IØ$5¸Ð8HÑ$HÐ!à(˜L¨Ð8IÑJÔJˆMà)¨!Ô,ˆMà ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmÝØ+Ø+Ø*ð
ñ 
ô 
ð 	
r/   )FFT)rO   rP   rQ   r   r   r%   rS   rý   rñ   r   rN   rT   rU   s   @r.   rÿ   rÿ   ü  s¦   ø€ € € € € ð,˜|ð ,°ð ,ð ,ð ,ð ,ð ,ð ,ð2 #(Ø%*Ø ð
ð 
à”|ð
ð  ð
ð #ð	
ð
 ð
ð 
�Ñ	 ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r/   rÿ   c                   óœ   ‡ — e Zd ZU eed<   dZdZdZdZg Z	 e
j        ¦   «         dej        ej        z  ej        z  ddfˆ fd	„¦   «         Zˆ xZS )
ÚVitDetPreTrainedModelr+   ÚvitdetrI   )ÚimageTÚmodulerJ   Nc                 óV  •— t          ¦   «                              |¦  «         t          |t          j        t          j        f¦  «        rJt          j        |j        d| j	        j
        ¬¦  «         |j        �t          j        |j        ¦  «         dS dS t          |t          ¦  «        r(t          j        |j        d| j	        j
        ¬¦  «         dS t          |t          ¦  «        rZ| j	        j        rNt          j        |j        d| j	        j
        ¬¦  «         t          j        |j        d| j	        j
        ¬¦  «         dS t          |t&          ¦  «        rÕ|j        |j        |j        fD ]?}t          j        |j        dd¬¦  «         |j        �t          j        |j        d¦  «         Œ@|j        |j        fD ]4}t          j        |j        ¦  «         t          j        |j        ¦  «         Œ5t          j        |j        j        ¦  «         t          j        |j        j        ¦  «         dS dS )zInitialize the weightsrØ   )r    ÚstdNÚfan_outÚrelu)r5   Únonlinearityr   )r   Ú_init_weightsr   r   r   r(   ÚinitÚtrunc_normal_r›   r+   Úinitializer_ranger{   Úzeros_r   r'   rx   rƒ   ri   rj   r¦   r©   r­   r°   Úkaiming_normal_Ú	constant_rª   r®   Úones_r±   )r*   r$  r¸   r-   s      €r.   r*  z#VitDetPreTrainedModel._init_weights=  sü  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�rœy­"¬)Ð4Ñ5Ô5ð 	+ÝÔ˜vœ}°3¸D¼KÔ<YÐZÑZÔZÐZØŒ{Ð&Ý”˜FœKÑ(Ô(Ð(Ð(Ð(ð 'Ð&å˜Õ 0Ñ1Ô1ð 	+ÝÔ˜vÔ9ÀÈÌÔIfÐgÑgÔgÐgÐgÐgÝ˜¥Ñ0Ô0ð 	+°T´[Ô5að 	+ÝÔ˜vÔ/°c¸t¼{Ô?\Ð]Ñ]Ô]Ð]ÝÔ˜vÔ/°c¸t¼{Ô?\Ð]Ñ]Ô]Ð]Ð]Ð]Ý˜Õ 8Ñ9Ô9ð 
	+Ø œ,¨¬°f´lÐCð 2ð 2�ÝÔ$ U¤\¸	ÐPVÐWÑWÔWÐWØ”:Ð)Ý”N 5¤:¨qÑ1Ô1Ð1øØ œ,¨¬Ð5ð (ð (�Ý”
˜5œ<Ñ(Ô(Ð(Ý”˜EœJÑ'Ô'Ð'Ð'åŒK˜œÔ+Ñ,Ô,Ð,ÝŒK˜œÔ)Ñ*Ô*Ð*Ð*Ð*ð
	+ð 
	+r/   )rO   rP   rQ   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesr%   Úno_gradr   r   r(   rò   r*  rT   rU   s   @r.   r!  r!  4  s˜   ø€ € € € € € àÐÐÑØ ÐØ$€OØ!ÐØ&*Ð#ØÐà€U„]�_„_ð+ B¤I°´	Ñ$9¸B¼LÑ$Hð +ÈTð +ð +ð +ð +ð +ñ „_ð+ð +ð +ð +ð +r/   r!  c                   óŽ   ‡ — e Zd Zdefˆ fd„Zdefd„Ze	 	 	 	 ddej	        dz  de
dz  de
dz  d	e
dz  deez  f
d
„¦   «         Zˆ xZS )ÚVitDetModelr+   c                 óÐ   •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        |                      ¦   «          d S r“   )r   r   r+   r   rM   rÿ   ÚencoderÚ	post_init©r*   r+   r-   s     €r.   r   zVitDetModel.__init__Y  sX   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒå*¨6Ñ2Ô2ˆŒÝ$ VÑ,Ô,ˆŒð 	�ŠÑÔÐÐÐr/   rJ   c                 ó   — | j         j        S r“   ©rM   r)   rç   s    r.   Úget_input_embeddingsz VitDetModel.get_input_embeddingsc  ó   € ØŒÔ)Ð)r/   NrI   r�   r  r  c                 óH  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|€t	          d¦  «        ‚|                      |¦  «        }|                      ||||¬¦  «        }|d         }|s|f|dd…         z   S t          ||j        |j	        ¬¦  «        S )aß  
        Examples:

        ```python
        >>> from transformers import VitDetConfig, VitDetModel
        >>> import torch

        >>> config = VitDetConfig()
        >>> model = VitDetModel(config)

        >>> pixel_values = torch.randn(1, 3, 224, 224)

        >>> with torch.no_grad():
        ...     outputs = model(pixel_values)

        >>> last_hidden_states = outputs.last_hidden_state
        >>> list(last_hidden_states.shape)
        [1, 768, 14, 14]
        ```Nz You have to specify pixel_values)r�   r  r  r   r   r  )
r+   r�   r  r  r;   rM   r<  r   rÛ   r  )	r*   rI   r�   r  r  ÚkwargsÚembedding_outputÚencoder_outputsÚsequence_outputs	            r.   rN   zVitDetModel.forwardf  sæ   € ð8 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆàÐÝÐ?Ñ@Ô@Ð@àŸ?š?¨<Ñ8Ô8ÐàŸ,š,ØØ/Ø!5Ø#ð	 'ñ 
ô 
ˆð *¨!Ô,ˆàð 	<Ø#Ð%¨¸¸¸Ô(;Ñ;Ð;åØ-Ø)Ô7Ø&Ô1ð
ñ 
ô 
ð 	
r/   )NNNN)rO   rP   rQ   r   r   r   rA  r   r%   rS   rý   rñ   r   rN   rT   rU   s   @r.   r:  r:  W  sÛ   ø€ € € € € ð˜|ð ð ð ð ð ð ð*Ð&6ð *ð *ð *ð *ð ð -1Ø)-Ø,0Ø#'ð5
ð 5
à”l TÑ)ð5
ð   $™;ð5
ð # T™kð	5
ð
 ˜D‘[ð5
ð 
�Ñ	 ð5
ð 5
ð 5
ñ „^ð5
ð 5
ð 5
ð 5
ð 5
r/   r:  zF
    ViTDet backbone, to be used with frameworks like Mask R-CNN.
    )Úcustom_introc                   óš   ‡ — e Zd Zˆ fd„Zdefd„Zeee	 	 	 d
de	j
        dedz  dedz  dedz  def
d	„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚVitDetBackbonec                 ó  •‡— t          ¦   «                              ‰¦  «         t          ‰¦  «        | _        t	          ‰¦  «        | _        ˆfd„t          ‰j        dz   ¦  «        D ¦   «         | _        |  	                    ¦   «          d S )Nc                 ó   •— g | ]	}‰j         ‘Œ
S r  )r   )r  rr   r+   s     €r.   r  z+VitDetBackbone.__init__.<locals>.<listcomp>ª  s   ø€ Ð]Ð]Ð]°A˜VÔ/Ð]Ð]Ð]r/   r   )
r   r   r   rM   rÿ   r<  r	  r  Únum_featuresr=  r>  s    `€r.   r   zVitDetBackbone.__init__¥  s   øø€ Ý‰Œ×Ò˜Ñ Ô Ð å*¨6Ñ2Ô2ˆŒÝ$ VÑ,Ô,ˆŒØ]Ð]Ð]Ð]½¸vÔ?WÐZ[Ñ?[Ñ9\Ô9\Ð]Ñ]Ô]ˆÔð 	�ŠÑÔÐÐÐr/   rJ   c                 ó   — | j         j        S r“   r@  rç   s    r.   rA  z#VitDetBackbone.get_input_embeddings¯  rB  r/   NrI   r  r�   r  c                 ó¾  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|                      |¦  «        }|                      |d||¬¦  «        }|r|j        n|d         }d}	t          | j        |¦  «        D ]\  }
}|
| j	        v r|	|fz  }	Œ|s!|r|	f|dd…         z   }n|	f|dd…         z   }|S t          |	|r|j        nd|j        ¬¦  «        S )aØ  
        Examples:

        ```python
        >>> from transformers import VitDetConfig, VitDetBackbone
        >>> import torch

        >>> config = VitDetConfig()
        >>> model = VitDetBackbone(config)

        >>> pixel_values = torch.randn(1, 3, 224, 224)

        >>> with torch.no_grad():
        ...     outputs = model(pixel_values)

        >>> feature_maps = outputs.feature_maps
        >>> list(feature_maps[-1].shape)
        [1, 768, 14, 14]
        ```NT)r  r�   r  r   r  r2   )Úfeature_mapsrÛ   r  )r+   r  r  r�   rM   r<  rÛ   ÚzipÚstage_namesÚout_featuresr
   r  )r*   rI   r  r�   r  rD  rE  r’   rÛ   rP  ÚstagerŒ   Úoutputs                r.   rN   zVitDetBackbone.forward²  sH  € ð< &1Ð%<�k�kÀ$Ä+ÔBYˆà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐàŸ?š?¨<Ñ8Ô8Ðà—,’,ØØ!%Ø/Ø#ð	 ñ 
ô 
ˆð 2=ÐL˜Ô-Ð-À'È!Ä*ˆàˆÝ#& tÔ'7¸Ñ#GÔ#Gð 	0ð 	0ÑˆE�<Ø˜Ô)Ð)Ð)Ø  Ñ/�øàð 	Ø#ð 7Ø&˜¨7°1°2°2¬;Ñ6��à&˜¨7°1°2°2¬;Ñ6�ØˆMåØ%Ø3GÐQ˜'Ô/Ð/ÈTØÔ)ð
ñ 
ô 
ð 	
r/   )NNN)rO   rP   rQ   r   r   rA  r   r   r   r%   rS   rý   r
   rN   rT   rU   s   @r.   rJ  rJ  Ÿ  sØ   ø€ € € € € ðð ð ð ð ð*Ð&6ð *ð *ð *ð *ð Ø Øð -1Ø)-Ø#'ð<
ð <
à”lð<
ð # T™kð<
ð   $™;ð	<
ð
 ˜D‘[ð<
ð 
ð<
ð <
ð <
ñ „^ñ !Ô ñ Ôð<
ð <
ð <
ð <
ð <
r/   rJ  )r:  r!  rJ  )2rR   Úcollections.abcr   r9   r%   r   Ú r   r+  Úactivationsr   Úbackbone_utilsr   r   Úmodeling_layersr	   Úmodeling_outputsr
   r   Úmodeling_utilsr   Úutilsr   r   Úutils.genericr   Úconfiguration_vitdetr   Ú
get_loggerrO   ÚloggerÚModuler   r<   Úscript_if_tracingrc   rv   rx   r—   r¦   rº   rÑ   rÕ   r×   rì   rÿ   r!  r:  rJ  Ú__all__r  r/   r.   ú<module>re     s­  ðð Ð à Ð Ð Ð Ø €€€à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø -Ð -Ð -Ð -Ð -Ð -Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø -Ð -Ð -Ð -Ð -Ð -Ø .Ð .Ð .Ð .Ð .Ð .ð 
ˆÔ	˜HÑ	%Ô	%€ðUð Uð Uð Uð U�r”yñ Uô Uð Uðp „Ôð!3ð !3ñ Ôð!3ðH&ð &ð &ðR;ð ;ð ;ð ;ð ;�b”iñ ;ô ;ð ;ð|ð ð ð ð �b”iñ ô ð ð,$ð $ð $ð $ð $˜rœyñ $ô $ð $ðNð ð ð ð �”	ñ ô ð ð$2ð 2ð 2ð><ð <ð <ð<%ð %ð %ð %ð %�R”Yñ %ô %ð %ð0Mð Mð Mð Mð MÐ,ñ Mô Mð Mð`5
ð 5
ð 5
ð 5
ð 5
�B”Iñ 5
ô 5
ð 5
ðp ð+ð +ð +ð +ð +˜Oñ +ô +ñ „ð+ðD ðD
ð D
ð D
ð D
ð D
Ð'ñ D
ô D
ñ „ðD
ðN €ððñ ô ð
M
ð M
ð M
ð M
ð M
�]Ð$9ñ M
ô M
ñô ð
M
ð` EÐ
DÐ
D€€€r/   