§
    ‚ŠtjÇl  ã                   ó.  — d Z ddlZddlmZ ddlm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mZ ddlmZ ddlmZmZmZmZ ddlmZmZ ddlmZ ddlmZ  ej         e!¦  «        Z" ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         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(	 	 dAdej$        dej)        d ej)        d!ej)        d"ej)        dz  d#e*dz  d$e*d%ee         f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/ G d/„ d0ej$        ¦  «        Z0 G d1„ d2e¦  «        Z1 G d3„ d4ej$        ¦  «        Z2e G d5„ d6e¦  «        ¦   «         Z3e G d7„ d8e3¦  «        ¦   «         Z4 G d9„ d:ej$        ¦  «        Z5 G d;„ d<ej$        ¦  «        Z6 ed=¬¦  «         G d>„ d?e3¦  «        ¦   «         Z7g d@¢Z8dS )BzPyTorch YOLOS model.é    N)ÚCallable)Ú	dataclass)Únné   )ÚACT2FN)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚlogging)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputsé   )ÚYolosConfigz5
    Output type of [`YolosForObjectDetection`].
    )Úcustom_introc                   ó  — e Zd ZU dZdZej        dz  ed<   dZe	dz  ed<   dZ
ej        dz  ed<   dZej        dz  ed<   dZee	         dz  ed<   dZej        dz  ed<   dZeej                 dz  ed	<   dZeej                 dz  ed
<   dS )ÚYolosObjectDetectionOutputa2  
    loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` are provided)):
        Total loss as a linear combination of a negative log-likelihood (cross-entropy) for class prediction and a
        bounding box loss. The latter is defined as a linear combination of the L1 loss and the generalized
        scale-invariant IoU loss.
    loss_dict (`Dict`, *optional*):
        A dictionary containing the individual losses. Useful for logging.
    logits (`torch.FloatTensor` of shape `(batch_size, num_queries, num_classes + 1)`):
        Classification logits (including no-object) for all queries.
    pred_boxes (`torch.FloatTensor` of shape `(batch_size, num_queries, 4)`):
        Normalized boxes coordinates for all queries, represented as (center_x, center_y, width, height). These
        values are normalized in [0, 1], relative to the size of each individual image in the batch (disregarding
        possible padding). You can use [`~YolosImageProcessor.post_process`] to retrieve the unnormalized bounding
        boxes.
    auxiliary_outputs (`list[Dict]`, *optional*):
        Optional, only returned when auxiliary losses are activated (i.e. `config.auxiliary_loss` is set to `True`)
        and labels are provided. It is a list of dictionaries containing the two above keys (`logits` and
        `pred_boxes`) for each decoder layer.
    last_hidden_state (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*):
        Sequence of hidden-states at the output of the last layer of the decoder of the model.
    NÚlossÚ	loss_dictÚlogitsÚ
pred_boxesÚauxiliary_outputsÚlast_hidden_stateÚhidden_statesÚ
attentions)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚFloatTensorÚ__annotations__r   Údictr   r   r   Úlistr   r    Útupler!   © ó    úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/yolos/modeling_yolos.pyr   r   %   sç   € € € € € € ðð ð, &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø!€Iˆt�d‰{Ð!Ð!Ñ!Ø'+€FˆEÔ Ñ$Ð+Ð+Ñ+Ø+/€J�Ô! DÑ(Ð/Ð/Ñ/Ø+/Ð�t˜D”z DÑ(Ð/Ð/Ñ/Ø26Ð�uÔ(¨4Ñ/Ð6Ð6Ñ6Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ð6Ð6r-   r   c                   óP   ‡ — e Zd ZdZdeddfˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚYolosEmbeddingszT
    Construct the CLS token, detection tokens, position and patch embeddings.

    ÚconfigÚreturnNc                 óF  •— t          ¦   «                              ¦   «          t          j        t	          j        dd|j        ¦  «        ¦  «        | _        t          j        t	          j        d|j        |j        ¦  «        ¦  «        | _	        t          |¦  «        | _        | j        j        }t          j        t	          j        d||j        z   dz   |j        ¦  «        ¦  «        | _        t          j        |j        ¦  «        | _        t#          |¦  «        | _        || _        d S ©Nr   )ÚsuperÚ__init__r   Ú	Parameterr&   ÚzerosÚhidden_sizeÚ	cls_tokenÚnum_detection_tokensÚdetection_tokensÚYolosPatchEmbeddingsÚpatch_embeddingsÚnum_patchesÚposition_embeddingsÚDropoutÚhidden_dropout_probÚdropoutÚ$InterpolateInitialPositionEmbeddingsÚinterpolationr1   )Úselfr1   r?   Ú	__class__s      €r.   r6   zYolosEmbeddings.__init__R   sã   ø€ Ý‰Œ×ÒÑÔÐåœ¥e¤k°!°Q¸Ô8JÑ&KÔ&KÑLÔLˆŒÝ "¤­U¬[¸¸FÔ<WÐY_ÔYkÑ-lÔ-lÑ mÔ mˆÔÝ 4°VÑ <Ô <ˆÔØÔ+Ô7ˆÝ#%¤<ÝŒK˜˜;¨Ô)DÑDÀqÑHÈ&ÔJ\Ñ]Ô]ñ$
ô $
ˆÔ õ ”z &Ô"<Ñ=Ô=ˆŒÝAÀ&ÑIÔIˆÔØˆŒˆˆr-   Úpixel_valuesc                 óˆ  — |j         \  }}}}|                      |¦  «        }|                     ¦   «         \  }}}| j                             |dd¦  «        }	| j                             |dd¦  «        }
t          j        |	||
fd¬¦  «        }|                      | j	        ||f¦  «        }||z   }|  
                    |¦  «        }|S )Néÿÿÿÿr   ©Údim)Úshaper>   Úsizer:   Úexpandr<   r&   ÚcatrE   r@   rC   )rF   rH   Ú
batch_sizeÚnum_channelsÚheightÚwidthÚ
embeddingsÚseq_lenÚ_Ú
cls_tokensr<   r@   s               r.   ÚforwardzYolosEmbeddings.forwarda   sÐ   € Ø2>Ô2DÑ/ˆ
�L &¨%Ø×*Ò*¨<Ñ8Ô8ˆ
à!+§¢Ñ!2Ô!2Ñˆ
�G˜Qð ”^×*Ò*¨:°r¸2Ñ>Ô>ˆ
ØÔ0×7Ò7¸
ÀBÈÑKÔKÐÝ”Y 
¨JÐ8HÐIÈqÐQÑQÔQˆ
ð #×0Ò0°Ô1IÈFÐTYÈ?Ñ[Ô[ÐàÐ"5Ñ5ˆ
Ø—\’\ *Ñ-Ô-ˆ
àÐr-   ©
r"   r#   r$   r%   r   r6   r&   ÚTensorrY   Ú__classcell__©rG   s   @r.   r0   r0   L   s{   ø€ € € € € ðð ð
˜{ð ¨tð ð ð ð ð ð ð E¤Lð °U´\ð ð ð ð ð ð ð ð r-   r0   c                   ó8   ‡ — e Zd Zdˆ fd„Zddej        fd„Zˆ xZS )rD   r2   Nc                 óV   •— t          ¦   «                              ¦   «          || _        d S ©N©r5   r6   r1   ©rF   r1   rG   s     €r.   r6   z-InterpolateInitialPositionEmbeddings.__init__w   ó$   ø€ Ý‰Œ×ÒÑÔÐØˆŒˆˆr-   ©i   i@  c                 ó®  — |d d …dd d …f         }|d d …d f         }|d d …| j         j         d …d d …f         }|d d …d| j         j         …d d …f         }|                     dd¦  «        }|j        \  }}}| j         j        d         | j         j        z  | j         j        d         | j         j        z  }
}	|                     |||	|
¦  «        }|\  }}|| j         j        z  || j         j        z  }}t          j         	                    |||fdd¬¦  «        }| 
                    d¦  «                             dd¦  «        }t          j        |||fd¬¦  «        }|S )Nr   r   é   ÚbicubicF©rN   ÚmodeÚalign_cornersrK   )r1   r;   Ú	transposerM   Ú
image_sizeÚ
patch_sizeÚviewr   Ú
functionalÚinterpolateÚflattenr&   rP   )rF   Ú	pos_embedÚimg_sizeÚcls_pos_embedÚdet_pos_embedÚpatch_pos_embedrQ   r9   rV   Úpatch_heightÚpatch_widthrS   rT   Únew_patch_heightÚnew_patch_widthÚscale_pos_embeds                   r.   rY   z,InterpolateInitialPositionEmbeddings.forward{   sŒ  € Ø! ! ! ! Q¨¨¨ 'Ô*ˆØ% a a a¨ gÔ.ˆØ! ! ! ! d¤kÔ&FÐ%FÐ%HÐ%HÈ!È!È!Ð"KÔLˆØ# A A A q¨D¬KÔ,LÐ+LÐ'LÈaÈaÈaÐ$OÔPˆØ)×3Ò3°A°qÑ9Ô9ˆØ+:Ô+@Ñ(ˆ
�K ð ŒKÔ" 1Ô%¨¬Ô)?Ñ?ØŒKÔ" 1Ô%¨¬Ô)?Ñ?ð "ˆð *×.Ò.¨z¸;ÈÐVaÑbÔbˆà ‰ˆ�Ø,2°d´kÔ6LÑ,LÈeÐW[ÔWbÔWmÑNm˜/ÐÝœ-×3Ò3ØÐ#3°_Ð"EÈIÐejð 4ñ 
ô 
ˆð *×1Ò1°!Ñ4Ô4×>Ò>¸qÀ!ÑDÔDˆÝœ) ]°OÀ]Ð$SÐYZÐ[Ñ[Ô[ˆØÐr-   ©r2   N©rd   ©r"   r#   r$   r6   r&   r[   rY   r\   r]   s   @r.   rD   rD   v   s_   ø€ € € € € ðð ð ð ð ð ðð ¸%¼,ð ð ð ð ð ð ð ð r-   rD   c                   ó8   ‡ — e Zd Zdˆ fd„Zddej        fd„Zˆ xZS )Ú InterpolateMidPositionEmbeddingsr2   Nc                 óV   •— t          ¦   «                              ¦   «          || _        d S r`   ra   rb   s     €r.   r6   z)InterpolateMidPositionEmbeddings.__init__”   rc   r-   rd   c                 ó  — |d d …d d …dd d …f         }|d d …d f         }|d d …d d …| j         j         d …d d …f         }|d d …d d …d| j         j         …d d …f         }|                     dd¦  «        }|j        \  }}}}	| j         j        d         | j         j        z  | j         j        d         | j         j        z  }}
|                     ||z  ||
|¦  «        }|\  }}|| j         j        z  || j         j        z  }}t          j         	                    |||fdd¬¦  «        }| 
                    d¦  «                             dd¦  «                             ¦   «                              ||||z  |¦  «        }t          j        |||fd¬¦  «        }|S )	Nr   r   rf   r   rg   Frh   rK   )r1   r;   rk   rM   rl   rm   rn   r   ro   rp   rq   Ú
contiguousr&   rP   )rF   rr   rs   rt   ru   rv   ÚdepthrQ   r9   rV   rw   rx   rS   rT   ry   rz   r{   s                    r.   rY   z(InterpolateMidPositionEmbeddings.forward˜   sÍ  € Ø! ! ! ! Q Q Q¨¨1¨1¨1 *Ô-ˆØ% a a a¨ gÔ.ˆØ! ! ! ! Q Q Q¨¬Ô)IÐ(IÐ(KÐ(KÈQÈQÈQÐ"NÔOˆØ# A A A q q q¨!¨t¬{Ô/OÐ.OÐ*OÐQRÐQRÐQRÐ$RÔSˆØ)×3Ò3°A°qÑ9Ô9ˆØ2AÔ2GÑ/ˆˆz˜;¨ð ŒKÔ" 1Ô%¨¬Ô)?Ñ?ØŒKÔ" 1Ô%¨¬Ô)?Ñ?ð "ˆð *×.Ò.¨u°zÑ/AÀ;ÐP\Ð^iÑjÔjˆØ ‰ˆ�Ø,2°d´kÔ6LÑ,LÈeÐW[ÔWbÔWmÑNm˜/ÐÝœ-×3Ò3ØÐ#3°_Ð"EÈIÐejð 4ñ 
ô 
ˆð ×#Ò# AÑ&Ô&ßŠY�q˜!‰_Œ_ßŠZ‰\Œ\ßŠT�%˜Ð%5¸Ñ%GÈÑUÔUð	 	õ  œ) ]°OÀ]Ð$SÐYZÐ[Ñ[Ô[ˆØÐr-   r|   r}   r~   r]   s   @r.   r€   r€   “   s_   ø€ € € € € ðð ð ð ð ð ðð ¸%¼,ð ð ð ð ð ð ð ð r-   r€   c                   óF   ‡ — e Zd ZdZˆ fd„Zdej        dej        fd„Zˆ xZS )r=   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                 óÌ  •— 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  }|| _        || _        || _        || _
        t          j        ||||¬¦  «        | _        d S )Nr   r   )Úkernel_sizeÚstride)r5   r6   rl   rm   rR   r9   Ú
isinstanceÚcollectionsÚabcÚIterabler?   r   ÚConv2dÚ
projection)rF   r1   rl   rm   rR   r9   r?   rG   s          €r.   r6   zYolosPatchEmbeddings.__init__»   sá   ø€ Ý‰Œ×ÒÑÔÐØ!'Ô!2°FÔ4E�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ˆØ$ˆŒØ$ˆŒØ(ˆÔØ&ˆÔåœ) L°+È:Ð^hÐiÑiÔiˆŒˆˆr-   rH   r2   c                 óÊ   — |j         \  }}}}|| j        k    rt          d¦  «        ‚|                      |¦  «                             d¦  «                             dd¦  «        }|S )NzeMake sure that the channel dimension of the pixel values match with the one set in the configuration.rf   r   )rM   rR   Ú
ValueErrorrŽ   rq   rk   )rF   rH   rQ   rR   rS   rT   rU   s          r.   rY   zYolosPatchEmbeddings.forwardÊ   sm   € Ø2>Ô2DÑ/ˆ
�L &¨%Ø˜4Ô,Ò,Ð,ÝØwñô ð ð —_’_ \Ñ2Ô2×:Ò:¸1Ñ=Ô=×GÒGÈÈ1ÑMÔMˆ
ØÐr-   )	r"   r#   r$   r%   r6   r&   r[   rY   r\   r]   s   @r.   r=   r=   ´   sm   ø€ € € € € ðð ðjð jð jð jð jð E¤Lð °U´\ð ð ð ð ð ð ð ð r-   r=   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingrC   Úkwargsc                 ó®  — |€|                      d¦  «        dz  }t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |d¬¦  «        }t          j                             ||| j        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «         	                    ¦   «         }	|	|fS )NrJ   ç      à¿rf   r   rK   )ÚpÚtrainingr   )
rN   r&   Úmatmulrk   r   ro   ÚsoftmaxrC   rœ   rƒ   )
r’   r“   r”   r•   r–   r—   rC   r˜   Úattn_weightsÚattn_outputs
             r.   Úeager_attention_forwardr¡   Ö   sÈ   € ð €Ø—*’*˜R‘.”. DÑ(ˆõ ”<  s§}¢}°Q¸Ñ':Ô':Ñ;Ô;¸gÑE€LàÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2Ð(Ñ>Ô>€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r-   c                   ór   ‡ — e Zd Zdefˆ fd„Zdej        dee         de	ej        ej        f         fd„Z
ˆ xZS )ÚYolosSelfAttentionr1   c                 ó¤  •— t          ¦   «                              ¦   «          |j        |j        z  dk    r0t	          |d¦  «        s t          d|j        › d|j        › d�¦  «        ‚|| _        |j        | _        t          |j        |j        z  ¦  «        | _        | j        | j        z  | _	        |j
        | _        | j        dz  | _        d| _        t          j        |j        | j	        |j        ¬¦  «        | _        t          j        |j        | j	        |j        ¬¦  «        | _        t          j        |j        | j	        |j        ¬¦  «        | _        d S )	Nr   Úembedding_sizezThe hidden size z4 is not a multiple of the number of attention heads ú.rš   F)Úbias)r5   r6   r9   Únum_attention_headsÚhasattrr�   r1   ÚintÚattention_head_sizeÚall_head_sizeÚattention_probs_dropout_probÚdropout_probr—   Ú	is_causalr   ÚLinearÚqkv_biasr“   r”   r•   rb   s     €r.   r6   zYolosSelfAttention.__init__ô   sB  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸aÒ?Ð?ÍÐPVÐXhÑHiÔHiÐ?Ýð7 6Ô#5ð 7ð 7ØÔ3ð7ð 7ð 7ñô ð ð
 ˆŒØ#)Ô#=ˆÔ Ý#& vÔ'9¸FÔ<VÑ'VÑ#WÔ#WˆÔ Ø!Ô5¸Ô8PÑPˆÔØ"Ô?ˆÔØÔ/°Ñ5ˆŒØˆŒå”Y˜vÔ1°4Ô3EÈFÌOÐ\Ñ\Ô\ˆŒ
Ý”9˜VÔ/°Ô1CÈ&Ì/ÐZÑZÔZˆŒÝ”Y˜vÔ1°4Ô3EÈFÌOÐ\Ñ\Ô\ˆŒ
ˆ
ˆ
r-   r    r˜   r2   c                 ó~  — |j         d         }|d| j        | j        f} |                      |¦  «        j        |Ž                      dd¦  «        } |                      |¦  «        j        |Ž                      dd¦  «        } |                      |¦  «        j        |Ž                      dd¦  «        }t          j	        | j
        j        t          ¦  «        } || |||d f| j        | j        | j        sdn| j        dœ|¤Ž\  }	}
|	                     ¦   «         d d…         | j        fz   }|	                     |¦  «        }	|	|
fS )Nr   rJ   r   rf   r‘   )r¯   r—   rC   éþÿÿÿ)rM   r¨   r«   r”   rn   rk   r•   r“   r   Úget_interfacer1   Ú_attn_implementationr¡   r¯   r—   rœ   r®   rN   r¬   Úreshape)rF   r    r˜   rQ   Ú	new_shapeÚ	key_layerÚvalue_layerÚquery_layerÚattention_interfaceÚcontext_layerÚattention_probsÚnew_context_layer_shapes               r.   rY   zYolosSelfAttention.forward  sd  € ð
 #Ô(¨Ô+ˆ
Ø  DÔ$<¸dÔ>VÐVˆ	à0�D—H’H˜]Ñ+Ô+Ô0°)Ð<×FÒFÀqÈ!ÑLÔLˆ	Ø4�d—j’j Ñ/Ô/Ô4°iÐ@×JÒJÈ1ÈaÑPÔPˆØ4�d—j’j Ñ/Ô/Ô4°iÐ@×JÒJÈ1ÈaÑPÔPˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð *=Ð)<ØØØØØð
*
ð ”nØ”LØ#œ}ÐC�C�C°$Ô2Cð
*
ð 
*
ð ð
*
ð 
*
Ñ&ˆ�ð #0×"4Ò"4Ñ"6Ô"6°s¸°sÔ";¸tÔ?QÐ>SÑ"SÐØ%×-Ò-Ð.EÑFÔFˆà˜oÐ-Ð-r-   )r"   r#   r$   r   r6   r&   r[   r   r   r+   rY   r\   r]   s   @r.   r£   r£   ó   s‘   ø€ € € € € ð]˜{ð ]ð ]ð ]ð ]ð ]ð ]ð(.à”|ð.ð Ð+Ô,ð.ð 
ˆuŒ|˜Uœ\Ð)Ô	*ð	.ð .ð .ð .ð .ð .ð .ð .r-   r£   c                   óZ   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        dej        fd„Zˆ xZ	S )ÚYolosSelfOutputz¢
    The residual connection is defined in YolosLayer instead of here (as is the case with other models), due to the
    layernorm applied before each block.
    r1   c                 óÌ   •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        d S r`   )	r5   r6   r   r°   r9   ÚdenserA   rB   rC   rb   s     €r.   r6   zYolosSelfOutput.__init__1  sJ   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ý”z &Ô"<Ñ=Ô=ˆŒˆˆr-   r    Úinput_tensorr2   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r`   ©rÂ   rC   ©rF   r    rÃ   s      r.   rY   zYolosSelfOutput.forward6  s*   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØÐr-   rZ   r]   s   @r.   rÀ   rÀ   +  s   ø€ € € € € ðð ð
>˜{ð >ð >ð >ð >ð >ð >ð
 U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r-   rÀ   c                   óX   ‡ — e Zd Zdefˆ fd„Zdej        dee         dej        fd„Z	ˆ xZ
S )ÚYolosAttentionr1   c                 ó˜   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        d S r`   )r5   r6   r£   Ú	attentionrÀ   Úoutputrb   s     €r.   r6   zYolosAttention.__init__>  s;   ø€ Ý‰Œ×ÒÑÔÐÝ+¨FÑ3Ô3ˆŒÝ% fÑ-Ô-ˆŒˆˆr-   r    r˜   r2   c                 óT   —  | j         |fi |¤Ž\  }}|                      ||¦  «        }|S r`   )rÊ   rË   )rF   r    r˜   Úself_attn_outputrW   rË   s         r.   rY   zYolosAttention.forwardC  s<   € ð
 -˜dœn¨]ÐEÐE¸fÐEÐEÑÐ˜!Ø—’Ð-¨}Ñ=Ô=ˆØˆr-   )r"   r#   r$   r   r6   r&   r[   r   r   rY   r\   r]   s   @r.   rÈ   rÈ   =  s~   ø€ € € € € ð.˜{ð .ð .ð .ð .ð .ð .ð
à”|ðð Ð+Ô,ðð 
Œð	ð ð ð ð ð ð ð r-   rÈ   c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚYolosIntermediater1   c                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S r`   )r5   r6   r   r°   r9   Úintermediate_sizerÂ   r‰   Ú
hidden_actÚstrr   Úintermediate_act_fnrb   s     €r.   r6   zYolosIntermediate.__init__O  sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r-   r    r2   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r`   )rÂ   rÔ   )rF   r    s     r.   rY   zYolosIntermediate.forwardW  s,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐr-   ©	r"   r#   r$   r   r6   r&   r[   rY   r\   r]   s   @r.   rÏ   rÏ   N  sj   ø€ € € € € ð9˜{ð 9ð 9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð r-   rÏ   c                   óV   ‡ — e Zd Zdefˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚYolosOutputr1   c                 óÌ   •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        ¦  «        | _	        d S r`   )
r5   r6   r   r°   rÑ   r9   rÂ   rA   rB   rC   rb   s     €r.   r6   zYolosOutput.__init___  sJ   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ý”z &Ô"<Ñ=Ô=ˆŒˆˆr-   r    rÃ   r2   c                 ód   — |                       |¦  «        }|                      |¦  «        }||z   }|S r`   rÅ   rÆ   s      r.   rY   zYolosOutput.forwardd  s4   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØ%¨Ñ4ˆØÐr-   rÖ   r]   s   @r.   rØ   rØ   ^  su   ø€ € € € € ð>˜{ð >ð >ð >ð >ð >ð >ð
 U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r-   rØ   c                   ó\   ‡ — e Zd ZdZdefˆ fd„Zdej        dee	         dej        fd„Z
ˆ xZS )Ú
YolosLayerz?This corresponds to the Block class in the timm implementation.r1   c                 óz  •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _	        t          j        |j        |j        ¬¦  «        | _        t          j        |j        |j        ¬¦  «        | _        d S )Nr   ©Úeps)r5   r6   Úchunk_size_feed_forwardÚseq_len_dimrÈ   rÊ   rÏ   ÚintermediaterØ   rË   r   Ú	LayerNormr9   Úlayer_norm_epsÚlayernorm_beforeÚlayernorm_afterrb   s     €r.   r6   zYolosLayer.__init__o  sš   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ'¨Ñ/Ô/ˆŒÝ-¨fÑ5Ô5ˆÔÝ! &Ñ)Ô)ˆŒÝ "¤¨VÔ-?ÀVÔEZÐ [Ñ [Ô [ˆÔÝ!œ|¨FÔ,>ÀFÔDYÐZÑZÔZˆÔÐÐr-   r    r˜   r2   c                 óÖ   — |                       |¦  «        } | j        |fi |¤Ž}||z   }|                      |¦  «        }|                      |¦  «        }|                      ||¦  «        }|S r`   )rå   rÊ   ræ   râ   rË   )rF   r    r˜   Úhidden_states_normÚattention_outputÚlayer_outputs         r.   rY   zYolosLayer.forwardy  s‚   € ð
 "×2Ò2°=ÑAÔAÐØ)˜4œ>Ð*<ÐGÐGÀÐGÐGÐð )¨=Ñ8ˆð ×+Ò+¨MÑ:Ô:ˆØ×(Ò(¨Ñ6Ô6ˆð —{’{ <°Ñ?Ô?ˆàÐr-   )r"   r#   r$   r%   r   r6   r&   r[   r   r   rY   r\   r]   s   @r.   rÜ   rÜ   l  s‹   ø€ € € € € ØIÐIð[˜{ð [ð [ð [ð [ð [ð [ðà”|ðð Ð+Ô,ðð 
Œð	ð ð ð ð ð ð ð r-   rÜ   c                   óJ   ‡ — e Zd Zdeddfˆ fd„Zdej        dededefd„Z	ˆ xZ
S )	ÚYolosEncoderr1   r2   Nc                 óø  •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d‰j	        d         ‰j	        d         z  ‰j
        dz  z  z   ‰j        z   }‰j        r6t          j        t          j        ‰j        dz
  d|‰j        ¦  «        ¦  «        nd | _        ‰j        rt%          ‰¦  «        nd | _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r,   )rÜ   )Ú.0rW   r1   s     €r.   ú
<listcomp>z)YolosEncoder.__init__.<locals>.<listcomp>’  s!   ø€ Ð#`Ð#`Ð#`¸1¥J¨vÑ$6Ô$6Ð#`Ð#`Ð#`r-   Fr   r   rf   )r5   r6   r1   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayerÚgradient_checkpointingrl   rm   r;   Úuse_mid_position_embeddingsr7   r&   r8   r9   Úmid_position_embeddingsr€   rE   )rF   r1   Ú
seq_lengthrG   s    ` €r.   r6   zYolosEncoder.__init__�  s  øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#`Ð#`Ð#`Ð#`ÅÀfÔF^Ñ@_Ô@_Ð#`Ñ#`Ô#`ÑaÔaˆŒ
Ø&+ˆÔ#ð �Ô" 1Ô%¨Ô(9¸!Ô(<Ñ<ÀÔ@QÐSTÑ@TÑTÑUÐX^ÔXsÑsð 	ð Ô1ð	�BŒLÝ”ØÔ,¨qÑ0ØØØÔ&ñ	ô ñô ð ð ð 	Ô$ð JPÔIkÐuÕ=¸fÑEÔEÐEÐquˆÔÐÐr-   r    rS   rT   c                 ó  — | j         j        r|                      | j        ||f¦  «        }t	          | j        ¦  «        D ]:\  }} ||¦  «        }| j         j        r|| j         j        dz
  k     r|||         z   }Œ;t          |¬¦  «        S )Nr   )r   )r1   rö   rE   r÷   Ú	enumeraterô   ró   r	   )rF   r    rS   rT   Ú$interpolated_mid_position_embeddingsÚiÚlayer_modules          r.   rY   zYolosEncoder.forward§  s¦   € ð Œ;Ô2ð 	uØ37×3EÒ3EÀdÔFbÐekÐmrÐdsÑ3tÔ3tÐ0å(¨¬Ñ4Ô4ð 	\ð 	\‰OˆAˆ|Ø(˜L¨Ñ7Ô7ˆMàŒ{Ô6ð \Ø˜œÔ5¸Ñ9Ò:Ð:Ø$1Ð4XÐYZÔ4[Ñ$[�Møå°Ð?Ñ?Ô?Ð?r-   )r"   r#   r$   r   r6   r&   r[   rª   r	   rY   r\   r]   s   @r.   rì   rì   Ž  s›   ø€ € € € € ðv˜{ð v¨tð vð vð vð vð vð vð0@à”|ð@ð ð@ð ð	@ð
 
ð@ð @ð @ð @ð @ð @ð @ð @r-   rì   c                   óH   — e Zd ZU eed<   dZdZdZdZg Z	dZ
dZdZdZeedœZdS )ÚYolosPreTrainedModelr1   ÚvitrH   )ÚimageT)r    r!   N)r"   r#   r$   r   r(   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendrÜ   r£   Ú_can_record_outputsr,   r-   r.   rÿ   rÿ   º  se   € € € € € € àÐÐÑØÐØ$€OØ!ÐØ&*Ð#ØÐØ€NØÐØÐØ"&Ðà#Ø(ðð ÐÐÐr-   rÿ   c            
       ó®   ‡ — e Zd Zddedefˆ fd„Zdefd„Ze e	d¬¦  «        e
	 dd
ej        d	z  dee         defd„¦   «         ¦   «         ¦   «         Zˆ xZS )Ú
YolosModelTr1   Úadd_pooling_layerc                 óJ  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          j        |j	        |j
        ¬¦  «        | _        |rt          |¦  «        nd| _        |                      ¦   «          dS )zv
        add_pooling_layer (bool, *optional*, defaults to `True`):
            Whether to add a pooling layer
        rÞ   N)r5   r6   r1   r0   rU   rì   Úencoderr   rã   r9   rä   Ú	layernormÚYolosPoolerÚpoolerÚ	post_init)rF   r1   r  rG   s      €r.   r6   zYolosModel.__init__Î  s�   ø€ õ
 	‰Œ×Ò˜Ñ Ô Ð ØˆŒå)¨&Ñ1Ô1ˆŒÝ# FÑ+Ô+ˆŒåœ fÔ&8¸fÔ>SÐTÑTÔTˆŒØ->ÐH•k &Ñ)Ô)Ð)ÀDˆŒð 	�ŠÑÔÐÐÐr-   r2   c                 ó   — | j         j        S r`   )rU   r>   )rF   s    r.   Úget_input_embeddingszYolosModel.get_input_embeddingsß  s   € ØŒÔ/Ð/r-   F)Útie_last_hidden_statesNrH   r˜   c                 ó8  — |€t          d¦  «        ‚|                      |¦  «        }|j        dd …         \  }}|                      |||¬¦  «        }|j        }|                      |¦  «        }| j        �|                      |¦  «        nd }t          ||¬¦  «        S )Nz You have to specify pixel_valuesr³   )rS   rT   )r   Úpooler_output)r�   rU   rM   r  r   r  r  r
   )	rF   rH   r˜   Úembedding_outputrS   rT   Úencoder_outputsÚsequence_outputÚpooled_outputs	            r.   rY   zYolosModel.forwardâ  s¥   € ð ÐÝÐ?Ñ@Ô@Ð@àŸ?š?¨<Ñ8Ô8Ðà$Ô*¨2¨3¨3Ô/‰ˆ�Ø+/¯<ª<Ð8HÐQWÐ_d¨<Ñ+eÔ+eˆØ)Ô;ˆØŸ.š.¨Ñ9Ô9ˆØ8<¼Ð8O˜Ÿš OÑ4Ô4Ð4ÐUYˆå)¸OÐ[hÐiÑiÔiÐir-   )Tr`   )r"   r#   r$   r   Úboolr6   r=   r  r   r   r   r&   r[   r   r   r
   rY   r\   r]   s   @r.   r  r  Ì  sî   ø€ € € € € ðð ˜{ð ¸tð ð ð ð ð ð ð"0Ð&:ð 0ð 0ð 0ð 0ð  Ø€_¨EÐ2Ñ2Ô2Øð -1ðjð jà”l TÑ)ðjð Ð+Ô,ðjð 
$ð	jð jð jñ „^ñ 3Ô2ñ  Ôðjð jð jð jð jr-   r  c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )r  r1   c                 óÀ   •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        ¦   «         | _        d S r`   )r5   r6   r   r°   r9   rÂ   ÚTanhÚ
activationrb   s     €r.   r6   zYolosPooler.__init__ù  sC   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ'™)œ)ˆŒˆˆr-   r    r2   c                 ór   — |d d …df         }|                       |¦  «        }|                      |¦  «        }|S )Nr   )rÂ   r"  )rF   r    Úfirst_token_tensorr  s       r.   rY   zYolosPooler.forwardþ  s@   € ð +¨1¨1¨1¨a¨4Ô0ÐØŸ
š
Ð#5Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØÐr-   rÖ   r]   s   @r.   r  r  ø  sj   ø€ € € € € ð$˜{ð $ð $ð $ð $ð $ð $ð
 U¤\ð °e´lð ð ð ð ð ð ð ð r-   r  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚYolosMLPPredictionHeadz°
    Very simple multi-layer perceptron (MLP, also called FFN), used to predict the normalized center coordinates,
    height and width of a bounding box w.r.t. an image.

    c                 óÚ   •— t          ¦   «                              ¦   «          || _        |g|dz
  z  }t          j        d„ t          |g|z   ||gz   ¦  «        D ¦   «         ¦  «        | _        d S )Nr   c              3   óF   K  — | ]\  }}t          j        ||¦  «        V — Œd S r`   )r   r°   )rï   ÚnÚks      r.   ú	<genexpr>z2YolosMLPPredictionHead.__init__.<locals>.<genexpr>  s0   è è € Ð#gÐ#g¹¸¸1¥B¤I¨a°¡O¤OÐ#gÐ#gÐ#gÐ#gÐ#gÐ#gr-   )r5   r6   Ú
num_layersr   rñ   ÚzipÚlayers)rF   Ú	input_dimÚ
hidden_dimÚ
output_dimr,  ÚhrG   s         €r.   r6   zYolosMLPPredictionHead.__init__  so   ø€ Ý‰Œ×ÒÑÔÐØ$ˆŒØˆL˜J¨™NÑ+ˆÝ”mÐ#gÐ#gÅÀYÀKÐRSÁOÐUVÐZdÐYeÑUeÑ@fÔ@fÐ#gÑ#gÔ#gÑgÔgˆŒˆˆr-   c                 ó¼   — t          | j        ¦  «        D ]F\  }}|| j        dz
  k     r(t          j                              ||¦  «        ¦  «        n
 ||¦  «        }ŒG|S r4   )rú   r.  r,  r   ro   Úrelu)rF   Úxrü   rô   s       r.   rY   zYolosMLPPredictionHead.forward  sd   € Ý! $¤+Ñ.Ô.ð 	Vð 	V‰HˆAˆuØ01°D´OÀaÑ4GÒ0GÐ0G•”×"Ò" 5 5¨¡8¤8Ñ,Ô,Ð,ÈUÈUÐSTÉXÌXˆAˆAØˆr-   )r"   r#   r$   r%   r6   rY   r\   r]   s   @r.   r&  r&    sV   ø€ € € € € ðð ðhð hð hð hð hðð ð ð ð ð ð r-   r&  zy
    YOLOS Model (consisting of a ViT encoder) with object detection heads on top, for tasks such as COCO detection.
    c                   óŽ   ‡ — e Zd Zdefˆ fd„Zd„ Zee	 d
dej	        de
e         dz  dee         defd	„¦   «         ¦   «         Zˆ xZS )ÚYolosForObjectDetectionr1   c                 ó6  •— t          ¦   «                              |¦  «         t          |d¬¦  «        | _        t	          |j        |j        |j        dz   d¬¦  «        | _        t	          |j        |j        dd¬¦  «        | _        |  	                    ¦   «          d S )NF)r  r   r   )r/  r0  r1  r,  é   )
r5   r6   r  r   r&  r9   Ú
num_labelsÚclass_labels_classifierÚbbox_predictorr  rb   s     €r.   r6   z YolosForObjectDetection.__init__!  s¦   ø€ Ý‰Œ×Ò˜Ñ Ô Ð õ ˜f¸Ð>Ñ>Ô>ˆŒõ (>ØÔ(°VÔ5GÐTZÔTeÐhiÑTiÐvwð(
ñ (
ô (
ˆÔ$õ 5ØÔ(°VÔ5GÐTUÐbcð
ñ 
ô 
ˆÔð
 	�ŠÑÔÐÐÐr-   c                 óV   — d„ t          |d d…         |d d…         ¦  «        D ¦   «         S )Nc                 ó   — g | ]
\  }}||d œ‘ŒS ))r   r   r,   )rï   ÚaÚbs      r.   rð   z9YolosForObjectDetection._set_aux_loss.<locals>.<listcomp>5  s$   € ÐgÐgÐg±4°1°a˜1¨AÐ.Ð.ÐgÐgÐgr-   rJ   )r-  )rF   Úoutputs_classÚoutputs_coords      r.   Ú_set_aux_lossz%YolosForObjectDetection._set_aux_loss4  s6   € ØgÐg½3¸}ÈSÈbÈSÔ?QÐS`ÐadÐbdÐadÔSeÑ;fÔ;fÐgÑgÔgÐgr-   NrH   Úlabelsr˜   r2   c           
      ó2  —  | j         |fi |¤Ž}|j        }|dd…| j        j         d…dd…f         }|                      |¦  «        }|                      |¦  «                             ¦   «         }d\  }}	}
|�}d\  }}| j        j        rC|j        }|                      |¦  «        }|                      |¦  «                             ¦   «         }|  	                    ||| j
        || j        ||¦  «        \  }}	}
t          ||	|||
|j        |j        |j        ¬¦  «        S )a`	  
        labels (`list[Dict]` of len `(batch_size,)`, *optional*):
            Labels for computing the bipartite matching loss. List of dicts, each dictionary containing at least the
            following 2 keys: `'class_labels'` and `'boxes'` (the class labels and bounding boxes of an image in the
            batch respectively). The class labels themselves should be a `torch.LongTensor` of len `(number of bounding
            boxes in the image,)` and the boxes a `torch.FloatTensor` of shape `(number of bounding boxes in the image,
            4)`.

        Examples:

        ```python
        >>> from transformers import AutoImageProcessor, AutoModelForObjectDetection
        >>> 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()))

        >>> image_processor = AutoImageProcessor.from_pretrained("hustvl/yolos-tiny")
        >>> model = AutoModelForObjectDetection.from_pretrained("hustvl/yolos-tiny")

        >>> inputs = image_processor(images=image, return_tensors="pt")
        >>> outputs = model(**inputs)

        >>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
        >>> target_sizes = torch.tensor([image.size[::-1]])
        >>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)[
        ...     0
        ... ]

        >>> for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
        ...     box = [round(i, 2) for i in box.tolist()]
        ...     print(
        ...         f"Detected {model.config.id2label[label.item()]} with confidence "
        ...         f"{round(score.item(), 3)} at location {box}"
        ...     )
        Detected remote with confidence 0.991 at location [46.48, 72.78, 178.98, 119.3]
        Detected remote with confidence 0.908 at location [336.48, 79.27, 368.23, 192.36]
        Detected cat with confidence 0.934 at location [337.18, 18.06, 638.14, 373.09]
        Detected cat with confidence 0.979 at location [10.93, 53.74, 313.41, 470.67]
        Detected remote with confidence 0.974 at location [41.63, 72.23, 178.09, 119.99]
        ```N)NNN)NN)r   r   r   r   r   r   r    r!   )r   r   r1   r;   r;  r<  ÚsigmoidÚauxiliary_lossr    Úloss_functionÚdevicer   r!   )rF   rH   rD  r˜   Úoutputsr  r   r   r   r   r   rA  rB  râ   s                 r.   rY   zYolosForObjectDetection.forward7  sV  € ðn /7¨d¬h°|Ð.NÐ.NÀvÐ.NÐ.NˆØ!Ô3ˆð *¨!¨!¨!¨d¬kÔ.NÐ-NÐ-PÐ-PÐRSÐRSÐRSÐ*SÔTˆð ×-Ò-¨oÑ>Ô>ˆØ×(Ò(¨Ñ9Ô9×AÒAÑCÔCˆ
à-=Ñ*ˆˆiÐ*ØÐØ+5Ñ(ˆM˜=ØŒ{Ô)ð LØ&Ô4�Ø $× <Ò <¸\Ñ JÔ J�Ø $× 3Ò 3°LÑ AÔ A× IÒ IÑ KÔ K�Ø15×1CÒ1CØ˜ ¤¨Z¸¼ÀmÐUbñ2ô 2Ñ.ˆD�)Ð.õ *ØØØØ!Ø/Ø%Ô7Ø!Ô/ØÔ)ð	
ñ 	
ô 	
ð 		
r-   r`   )r"   r#   r$   r   r6   rC  r   r   r&   r'   r*   r)   r   r   r   rY   r\   r]   s   @r.   r7  r7    sÐ   ø€ € € € € ð˜{ð ð ð ð ð ð ð&hð hð hð Øð %)ðS
ð S
àÔ'ðS
ð �T”
˜TÑ!ðS
ð Ð+Ô,ð	S
ð
 
$ðS
ð S
ð S
ñ „^ñ ÔðS
ð S
ð S
ð S
ð S
r-   r7  )r7  r  rÿ   )Nr‘   )9r%   Úcollections.abcrŠ   r   Údataclassesr   r&   r   Úactivationsr   Úmodeling_layersr   Úmodeling_outputsr	   r
   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_yolosr   Ú
get_loggerr"   Úloggerr   ÚModuler0   rD   r€   r=   r[   Úfloatr¡   r£   rÀ   rÈ   rÏ   rØ   rÜ   rì   rÿ   r  r  r&  r7  Ú__all__r,   r-   r.   ú<module>r[     s>  ðð Ð à Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð 
ˆÔ	˜HÑ	%Ô	%€ð €ððñ ô ð
 ð7ð 7ð 7ð 7ð 7 ñ 7ô 7ñ „ñô ð7ðB'ð 'ð 'ð 'ð '�b”iñ 'ô 'ð 'ðTð ð ð ð ¨2¬9ñ ô ð ð:ð ð ð ð  r¤yñ ô ð ðBð ð ð ð ˜2œ9ñ ô ð ðP !Øð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð:4.ð 4.ð 4.ð 4.ð 4.˜œñ 4.ô 4.ð 4.ðpð ð ð ð �b”iñ ô ð ð$ð ð ð ð �R”Yñ ô ð ð"ð ð ð ð ˜œ	ñ ô ð ð 
ð 
ð 
ð 
ð 
�"”)ñ 
ô 
ð 
ðð ð ð ð Ð+ñ ô ð ðD)@ð )@ð )@ð )@ð )@�2”9ñ )@ô )@ð )@ðX ðð ð ð ð ˜?ñ ô ñ „ðð" ð(jð (jð (jð (jð (jÐ%ñ (jô (jñ „ð(jðVð ð ð ð �"”)ñ ô ð ð ð ð ð ð ˜RœYñ ô ð ð& €ððñ ô ð
l
ð l
ð l
ð l
ð l
Ð2ñ l
ô l
ñô ð
l
ð^ LÐ
KÐ
K€€€r-   