Ë
    Bêñi`1  ã                   óÌ  — U d dl m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ZdZ G d	„ d
ee«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Zeez  ez  ez  Zeed<   dej6                  defd„Zde
j:                  d e
j:                  de
j:                  fd!„Zde
j:                  d e
j:                  de
j:                  fd"„Zde
j:                  d e
j:                  de
j:                  fd#„Z de
j:                  d e
j:                  de
j:                  fd$„Z!de
j:                  d e
j:                  d%ej6                  de
j:                  fd&„Z"de
j:                  d e
j:                  d%ej6                  de
j:                  fd'„Z#d(ejH                  dejH                  fd)„Z%d(ejH                  dejH                  fd*„Z&ded e
j:                  d%ej6                  de
j:                  fd+„Z'ded e
j:                  d%ej6                  de
j:                  fd,„Z(d-e)e   d e
j:                  d%ej6                  de
j:                  fd.„Z*ded e
j:                  d%ej6                  de
j:                  fd/„Z+ded e
j:                  d%ej6                  de
j:                  fd0„Z,ded e
j:                  d%ej6                  de
j:                  fd1„Z-y)2é    )ÚEnum)Ú	TypeAlias)ÚpermutationsN)Úcommon_types)Úmodelsgýô  €>ç        c                   ó   — e Zd ZdZdZy)ÚDistanceOrderÚbigger_is_betterÚsmaller_is_betterN)Ú__name__Ú
__module__Ú__qualname__ÚBIGGER_IS_BETTERÚSMALLER_IS_BETTER© ó    ú_/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/qdrant_client/local/distances.pyr
   r
      s   „ Ø)ÐØ+Ñr   r
   c                   óf   — e Zd Z	 	 	 ddeee      dz  deee      dz  dej                  dz  fd„Zy)Ú	RecoQueryNÚpositiveÚnegativeÚstrategyc                 óÀ  — |€J d«       ‚|| _         |�|ng }|�|ng }|D �cg c]  }t        j                  |«      ‘Œ c}| _        |D �cg c]  }t        j                  |«      ‘Œ c}| _        t        j
                  | j                  «      j                  «       rJ d«       ‚t        j
                  | j                  «      j                  «       rJ d«       ‚y c c}w c c}w )Nz#Recommend strategy must be providedz%Positive vectors must not contain NaNz%Negative vectors must not contain NaN)r   ÚnpÚarrayr   r   ÚisnanÚany)Úselfr   r   r   Úvectors        r   Ú__init__zRecoQuery.__init__   sÁ   € ð Ð#ÐJÐ%JÓJÐ#à ˆŒØ'Ð3‘8¸ˆØ'Ð3‘8¸ˆàPXÖ0YÀf´·±¸&Õ1AÒ0YˆŒØPXÖ0YÀf´·±¸&Õ1AÒ0YˆŒä—8‘8˜DŸM™MÓ*×.Ñ.Ô0ÐYÐ2YÓYÐ0Ü—8‘8˜DŸM™MÓ*×.Ñ.Ô0ÐYÐ2YÓYÐ0Ð0ùò	 1ZùÚ0Ys   ¡CÁ	C)NNN)r   r   r   ÚlistÚfloatr   ÚRecommendStrategyr!   r   r   r   r   r      sY   „ ð .2Ø-1Ø48ñ	Zà�t˜E‘{Ñ# dÑ*ðZð �t˜E‘{Ñ# dÑ*ðZð ×*Ñ*¨TÑ1ô	Zr   r   c                   ó(   — e Zd Zdee   dee   fd„Zy)ÚContextPairr   r   c                 ó<  — t        j                  |«      | _        t        j                  |«      | _        t        j                  | j                  «      j                  «       rJ d«       ‚t        j                  | j                  «      j                  «       rJ d«       ‚y )Nz$Positive vector must not contain NaNz$Negative vector must not contain NaN)r   r   r   r   r   r   )r   r   r   s      r   r!   zContextPair.__init__*   so   € Ü*,¯(©(°8Ó*<ˆŒÜ*,¯(©(°8Ó*<ˆŒä—8‘8˜DŸM™MÓ*×.Ñ.Ô0ÐXÐ2XÓXÐ0Ü—8‘8˜DŸM™MÓ*×.Ñ.Ô0ÐXÐ2XÓXÐ0Ð0r   N©r   r   r   r"   r#   r!   r   r   r   r&   r&   )   s    „ ðY  e¡ð Y¸¸U¹ô Yr   r&   c                   ó(   — e Zd Zdee   dee   fd„Zy)ÚDiscoveryQueryÚtargetÚcontextc                 ó®   — t        j                  |«      | _        || _        t        j                  | j                  «      j                  «       rJ d«       ‚y )Nú"Target vector must not contain NaN)r   r   r+   r,   r   r   )r   r+   r,   s      r   r!   zDiscoveryQuery.__init__3   sA   € Ü(*¯©°Ó(8ˆŒØˆŒä—8‘8˜DŸK™KÓ(×,Ñ,Ô.ÐTÐ0TÓTÐ.Ð.r   N)r   r   r   r"   r#   r&   r!   r   r   r   r*   r*   2   s!   „ ðU˜t E™{ð U°T¸+Ñ5Fô Ur   r*   c                   ó   — e Zd Zdee   fd„Zy)ÚContextQueryÚcontext_pairsc                 ó   — || _         y ©N)r1   )r   r1   s     r   r!   zContextQuery.__init__;   s
   € Ø*ˆÕr   N)r   r   r   r"   r&   r!   r   r   r   r0   r0   :   s   „ ð+ d¨;Ñ&7ô +r   r0   c                   ó"   — e Zd Zdee   defd„Zy)ÚFeedbackItemr    Úscorec                 ó®   — t        j                  |«      | _        || _        t        j                  | j                  «      j                  «       rJ d«       ‚y )Nú$Feedback vector must not contain NaN)r   r   r    r6   r   r   )r   r    r6   s      r   r!   zFeedbackItem.__init__@   sA   € Ü—h‘h˜vÓ&ˆŒØˆŒ
Ü—8‘8˜DŸK™KÓ(×,Ñ,Ô.ÐVÐ0VÓVÐ.Ð.r   Nr(   r   r   r   r5   r5   ?   s   „ ðW˜t E™{ð W°5ô Wr   r5   c                   ó    — e Zd Zdededefd„Zy)ÚNaiveFeedbackCoefficientsÚaÚbÚcc                 ó.   — || _         || _        || _        y r3   )r;   r<   r=   )r   r;   r<   r=   s       r   r!   z"NaiveFeedbackCoefficients.__init__G   s   € ØˆŒØˆŒØˆ�r   N)r   r   r   r#   r!   r   r   r   r:   r:   F   s   „ ð˜%ð  Eð ¨eô r   r:   c                   óH   — e Zd Zdej                  dej                  defd„Zy)ÚFeedbackContextPairr   r   Úpartial_computationc                 ó.   — || _         || _        || _        y r3   ©r   r   rA   )r   r   r   rA   s       r   r!   zFeedbackContextPair.__init__N   s   € ð !ˆŒØ ˆŒØ#6ˆÕ r   N)r   r   r   ÚtypesÚ
NumpyArrayr#   r!   r   r   r   r@   r@   M   s+   „ ð7Ø×(Ñ(ð7Ø49×4DÑ4Dð7Ø[`ô7r   r@   c                   ó,   — e Zd Zdee   dee   defd„Zy)ÚNaiveFeedbackQueryr+   ÚfeedbackÚcoefficientsc                 óF  — t        j                  |«      | _        || _        || _        t        j
                  | j                  «      j                  «       rJ d«       ‚| j                  D ]6  }t        j
                  |j                  «      j                  «       sŒ1J d«       ‚ y )Nr.   r8   )r   r   r+   rH   rI   r   r   r    )r   r+   rH   rI   Úitems        r   r!   zNaiveFeedbackQuery.__init__W   s‚   € ô —h‘h˜vÓ&ˆŒØ ˆŒØ(ˆÔä—8‘8˜DŸK™KÓ(×,Ñ,Ô.ÐTÐ0TÓTÐ.Ø—M‘Mò 	[ˆDÜ—x‘x §¡Ó,×0Ñ0Õ2ÐZÐ4ZÓZÐ2ñ	[r   N)r   r   r   r"   r#   r5   r:   r!   r   r   r   rG   rG   V   s0   „ ð[à�U‘ð[ð �|Ñ$ð[ð 0ô	[r   rG   ÚDenseQueryVectorÚdistanceÚreturnc                 óÖ   — | t         j                  j                  k(  rt        j                  S | t         j                  j
                  k(  rt        j                  S t        j                  S )zn
    Convert distance to order
    Args:
        distance: distance to convert
    Returns:
        order
    )r   ÚDistanceÚEUCLIDr
   r   Ú	MANHATTANr   )rM   s    r   Údistance_to_orderrS   i   sL   € ð ”6—?‘?×)Ñ)Ò)Ü×.Ñ.Ð.Ø	”V—_‘_×.Ñ.Ò	.Ü×.Ñ.Ð.ä×)Ñ)Ð)r   ÚqueryÚvectorsc                 óz  — t         j                  j                  |d¬«      dd…t         j                  f   }|t        j                  |dk7  |t
        «      z  }t        | j                  «      dk(  rVt         j                  j                  | «      }| t        j                  |dk7  |t
        «      z  } t        j                  || «      S t         j                  j                  | d¬«      dd…t         j                  f   }| t        j                  |dk7  |t
        «      z  } t        j                  | |j                  «      S )z¶
    Calculate cosine distance between query and vectors
    Args:
        query: query vector
        vectors: vectors to calculate distance with
    Returns:
        distances
    éÿÿÿÿ©ÚaxisNr   é   )
r   ÚlinalgÚnormÚnewaxisÚwhereÚEPSILONÚlenÚshapeÚdotÚT)rT   rU   Úvectors_normÚ
query_norms       r   Úcosine_similarityrf   y   sç   € ô —9‘9—>‘> '°�>Ó3²A´r·z±z°MÑB€LØŒr�x‰x˜¨Ñ+¨\¼7ÓCÑC€Gä
ˆ5�;‰;Ó˜1ÒÜ—Y‘Y—^‘^ EÓ*ˆ
Ø”—‘˜*¨Ñ+¨Z¼ÓAÑAˆÜ�v‰v�g˜uÓ%Ð%ä—‘—‘ ¨B�Ó/²´2·:±:°Ñ>€JØ	ŒR�X‰X�j CÑ'¨´WÓ=Ñ=€EÜ�6‰6�%˜Ÿ™Ó#Ð#r   c                 óž   — t        | j                  «      dk(  rt        j                  || «      S t        j                  | |j                  «      S )z³
    Calculate dot product between query and vectors
    Args:
        query: query vector.
        vectors: vectors to calculate distance with
    Returns:
        distances
    rZ   )r`   ra   r   rb   rc   ©rT   rU   s     r   Údot_productri   �   s;   € ô ˆ5�;‰;Ó˜1ÒÜ�v‰v�g˜uÓ%Ð%ä�v‰v�e˜WŸY™YÓ'Ð'r   c                 óì   — t        | j                  «      dk(  r$t        j                  j	                  || z
  d¬«      S t        j                  j	                  || dd…t        j
                  f   z
  d¬«      S )zº
    Calculate euclidean distance between query and vectors
    Args:
        query: query vector.
        vectors: vectors to calculate distance with
    Returns:
        distances
    rZ   rW   rX   N)r`   ra   r   r[   r\   r]   rh   s     r   Úeuclidean_distancerk   ž   sY   € ô ˆ5�;‰;Ó˜1ÒÜ�y‰y�~‰~˜g¨™o°Bˆ~Ó7Ð7ä�y‰y�~‰~˜g¨ªa´·±¨mÑ(<Ñ<À2ˆ~ÓFÐFr   c                 ó  — t        | j                  «      dk(  r-t        j                  t        j                  || z
  «      d¬«      S t        j                  t        j                  || dd…t        j
                  f   z
  «      d¬«      S )zº
    Calculate manhattan distance between query and vectors
    Args:
        query: query vector.
        vectors: vectors to calculate distance with
    Returns:
        distances
    rZ   rW   rX   N)r`   ra   r   ÚsumÚabsr]   rh   s     r   Úmanhattan_distancero   ­   s_   € ô ˆ5�;‰;Ó˜1ÒÜ�v‰v”b—f‘f˜W u™_Ó-°BÔ7Ð7ä�v‰v”b—f‘f˜W uªQ´·
±
¨]Ñ';Ñ;Ó<À2ÔFÐFr   Údistance_typec                 óº  — t        j                  | «      j                  «       rJ d«       ‚|t        j                  j
                  k(  rt        | |«      S |t        j                  j                  k(  rt        | |«      S |t        j                  j                  k(  rt        | |«      S |t        j                  j                  k(  rt        | |«      S t        d|› �«      ‚)Nú!Query vector must not contain NaNzUnknown distance type )r   r   r   r   rP   ÚCOSINErf   ÚDOTri   rQ   rk   rR   ro   Ú
ValueError©rT   rU   rp   s      r   Úcalculate_distancerw   ¼   s³   € ô �x‰x˜‹×"Ñ"Ô$ÐIÐ&IÓIÐ$àœŸ™×.Ñ.Ò.Ü  ¨Ó0Ð0Ø	œ&Ÿ/™/×-Ñ-Ò	-Ü˜5 'Ó*Ð*Ø	œ&Ÿ/™/×0Ñ0Ò	0Ü! %¨Ó1Ð1Ø	œ&Ÿ/™/×3Ñ3Ò	3Ü! %¨Ó1Ð1äÐ1°-°ÐAÓBÐBr   c                 ó  — t        j                  | «      j                  «       rJ d«       ‚|t        j                  j
                  k(  rHt        j                  || z
  t         j                  ¬«      j                  dt         j                  ¬«       S |t        j                  j                  k(  rHt        j                  || z
  t         j                  ¬«      j                  dt         j                  ¬«       S t        | ||«      S )z`
    Calculate same internal distances as in core, rather than the final displayed distance
    rr   ©ÚdtyperZ   )rY   rz   )r   r   r   r   rP   rQ   ÚsquareÚfloat32rm   rR   rn   rw   rv   s      r   Úcalculate_distance_corer}   Í   s·   € ô �x‰x˜‹×"Ñ"Ô$ÐIÐ&IÓIÐ$àœŸ™×.Ñ.Ò.Ü—	‘	˜' E™/´·±Ô<×@Ñ@ÀaÌrÏzÉzÐ@ÓZÐZÐZØœŸ™×1Ñ1Ò1Ü—‘�w ‘¬b¯j©jÔ9×=Ñ=À1ÌBÏJÉJÐ=ÓWÐWÐWä! %¨°-Ó@Ð@r   Úxc                 óž   — t        j                  | «      st        j                  | «      r| S | t        j                  dt	        | «      «      z  S )Nç      ð?)r   r   ÚisinfÚaddrn   ©r~   s    r   Úfast_sigmoidr„   Ý   s6   € Ü	‡x�x�„{”b—h‘h˜q”kàˆØŒr�v‰v�cœ3˜q›6Ó"Ñ"Ð"r   c                 óF   — dt        j                  t        | «      d«      z  S )Ng      à?r€   )r   r‚   r„   rƒ   s    r   Úscaled_fast_sigmoidr†   ä   s   € Ø”"—&‘&œ a›¨#Ó.Ñ/Ð/r   c                 ór  ‡‡— dt         t        j                     dt        j                  fˆˆfd„} || j                  «      } || j                  «      }t        j                  ||kD  t        j                  d„ |D «       |j                  «      t        j                  d„ |D «       |j                  «      «      S )NÚexamplesrN   c                 ób  •— ‰j                   d   }g }| D ]   }t        |‰‰«      }|j                  |«       Œ" t        |«      dk(  r4|j                  t	        j
                  |t        j                   «      «       t	        j                  |t        j                  ¬«      j                  d¬«      }|S ©Nr   ry   rX   )
ra   r}   Úappendr`   r   ÚfullÚinfr   r|   Úmax)rˆ   Úvector_countÚscoresÚexampler6   Úbest_scoresrp   rU   s         €€r   Úget_best_scoresz8calculate_recommend_best_scores.<locals>.get_best_scoresë   s”   ø€ Ø—}‘} QÑ'ˆð *,ˆØò 	!ˆGÜ+¨G°W¸mÓLˆEØ�M‰M˜%Õ ð	!ô
 ˆv‹;˜!ÒØ�M‰Mœ"Ÿ'™' ,´·±°Ó8Ô9Ü—h‘h˜v¬R¯Z©ZÔ8×<Ñ<À!Ð<ÓDˆàÐr   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr3   ©r†   ©Ú.0Úxis     r   ú	<genexpr>z2calculate_recommend_best_scores.<locals>.<genexpr>  s   è ø€ Ò;°Ô(¨×,Ñ;ùó   ‚c              3   ó4   K  — | ]  }t        |«       –— Œ y ­wr3   r•   r–   s     r   r™   z2calculate_recommend_best_scores.<locals>.<genexpr>  s   è ø€ Ò<°"Ô)¨"Ó-Ô-Ñ<ùs   ‚)	r"   rD   rE   r   r   r   r^   Úfromiterrz   )rT   rU   rp   r“   ÚposÚnegs    ``   r   Úcalculate_recommend_best_scoresrŸ   è   s�   ù€ ð¤$¤u×'7Ñ'7Ñ"8ð ¼U×=MÑ=Mö ñ  ˜%Ÿ.™.Ó
)€CÙ
˜%Ÿ.™.Ó
)€Cô �8‰8Øˆc‰	Ü
�‰Ñ;°sÔ;¸S¿Y¹YÓGÜ
�‰Ñ<¸Ô<¸c¿i¹iÓHóð r   c                 ó´   ‡‡— dt         t        j                     dt        j                  fˆˆfd„} || j                  «      } || j                  «      }||z
  S )Nrˆ   rN   c                 óB  •— ‰j                   d   }g }| D ]   }t        |‰‰«      }|j                  |«       Œ" t        |«      dk(  r$|j                  t	        j
                  |«      «       t	        j                  |t        j                  ¬«      j                  d¬«      }|S rŠ   )	ra   r}   r‹   r`   r   Úzerosr   r|   rm   )rˆ   r�   r�   r‘   r6   Ú
sum_scoresrp   rU   s         €€r   Úget_sum_scoresz6calculate_recommend_sum_scores.<locals>.get_sum_scores
  sŠ   ø€ Ø—}‘} QÑ'ˆà)+ˆØò 	!ˆGÜ+¨G°W¸mÓLˆEØ�M‰M˜%Õ ð	!ô ˆv‹;˜!ÒØ�M‰Mœ"Ÿ(™( <Ó0Ô1ä—X‘X˜f¬B¯J©JÔ7×;Ñ;ÀÐ;ÓCˆ
àÐr   )r"   rD   rE   r   r   )rT   rU   rp   r¤   r�   rž   s    ``   r   Úcalculate_recommend_sum_scoresr¥     sO   ù€ ð¤¤e×&6Ñ&6Ñ!7ð ¼E×<LÑ<Lö ñ ˜Ÿ™Ó
(€CÙ
˜Ÿ™Ó
(€Cà�‰9Ðr   r,   c           	      ój  — t        j                  |j                  d   t         j                  ¬«      }| D ]u  }t	        |j
                  ||«      }t	        |j                  ||«      }t        j                  t        ||kD  ||k(  «      D ��cg c]  \  }}|rdn|rdnd‘Œ c}}«      }	||	z  }Œw |S c c}}w )Nr   ry   rZ   rW   )	r   r¢   ra   Úint32r}   r   r   r   Úzip)
r,   rU   rp   Úoverall_ranksÚpairr�   rž   Ú	is_biggerÚis_equalÚ
pair_rankss
             r   Úcalculate_discovery_ranksr®     s±   € ô
 —H‘H˜WŸ]™]¨1Ñ-´R·X±XÔ>€MØò $ˆä% d§m¡m°W¸mÓLˆÜ% d§m¡m°W¸mÓLˆä—X‘Xô ,/¨s°S©y¸#À¹*Ó+E÷á'�I˜xñ ‘©¡A°rÑ9óó
ˆ
ð 	˜Ñ#‰ð$ð Ðùós   Â
B/c                 ó¾   — t        | j                  ||«      }t        | j                  ||«      }t	        j
                  d„ |D «       t        j                  «      }||z   S )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr3   r•   r–   s     r   r™   z-calculate_discovery_scores.<locals>.<genexpr>?  s   è ø€ Ò? RÔ	˜R×	 Ñ?ùrš   )r®   r,   r}   r+   r   rœ   r|   )rT   rU   rp   ÚranksÚdistances_to_targetÚsigmoided_distancess         r   Úcalculate_discovery_scoresr´   6  sW   € ô & e§m¡m°W¸mÓL€Eô 2°%·,±,ÀÈÓWÐäŸ+™+Ù?Ð+>Ô?ÄÇÁóÐð Ð&Ñ&Ð&r   c                 óˆ  — t        j                  |j                  d   t         j                  ¬«      }| j                  D ]€  }t        |j                  ||«      }t        |j                  ||«      }||z
  t        z
  }t        j                  d„ t        j                  |d«      D «       t         j                  «      }||z  }Œ‚ |S )Nr   ry   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr3   )r„   r–   s     r   r™   z+calculate_context_scores.<locals>.<genexpr>P  s   è ø€ ÒD "Œ\˜"×ÑDùrš   r   )r   r¢   ra   r|   r1   r}   r   r   r_   rœ   Úminimum)	rT   rU   rp   Úoverall_scoresrª   r�   rž   Ú
differenceÚpair_scoress	            r   Úcalculate_context_scoresr»   E  s£   € ô —X‘X˜gŸm™m¨AÑ.´b·j±jÔA€NØ×#Ñ#ò 	&ˆä% d§m¡m°W¸mÓLˆÜ% d§m¡m°W¸mÓLˆà˜3‘Y¤Ñ(ˆ
Ü—k‘kÙD¬¯
©
°:¸sÓ(CÔDÄbÇjÁjó
ˆð 	˜+Ñ%‰ð	&ð Ðr   c                 ó€  — g }t        | j                  «      dk\  r©t        | j                  d«      D ]�  }|d   |d   }}|j                  |j                  z
  }|t        k  rŒ0|| j
                  j                  z  | j
                  j                  z  }|j                  t        |j                  |j                  |¬«      «       Œ’ | j
                  j                  t        | j                  ||«      z  }	|D ]G  }
t        |
j                  ||«      }t        |
j                  ||«      }||z
  }|	|
j                   |z  z  }	ŒI |	S )Né   r   rZ   rC   )r`   rH   r   r6   Ú NAIVE_FEEDBACK_CONFIDENCE_MARGINrI   r<   r=   r‹   r@   r    r;   r}   r+   r   r   rA   )rT   rU   rp   r1   ÚpÚpositive_itemÚnegative_itemÚ
confidencerA   r6   rª   Úsim_posÚsim_negÚdeltas                 r   Úcalculate_naive_feedback_queryrÆ   W  s:  € ð 02€MÜ
ˆ5�>‰>Ó˜aÒÜ˜eŸn™n¨aÓ0ò 	ˆAØ+,¨Q©4°°1±˜=ˆMØ&×,Ñ,¨}×/BÑ/BÑBˆJàÔ=Ò=Øà#-¨u×/AÑ/A×/CÑ/CÑ#CÀu×GYÑGY×G[ÑG[Ñ"[ÐØ× Ñ Ü#Ø*×1Ñ1Ø*×1Ñ1Ø(;ôõð	ð  ×Ñ× Ñ Ô#:¸5¿<¹<ÈÐR_Ó#`Ñ`€Eàò 2ˆÜ)¨$¯-©-¸À-ÓPˆÜ)¨$¯-©-¸À-ÓPˆØ˜'Ñ!ˆà�×)Ñ)¨EÑ1Ñ1‰ð2ð €Lr   ).Úenumr   Útypingr   Ú	itertoolsr   Únumpyr   Úqdrant_client.conversionsr   rD   Úqdrant_client.httpr   r_   r¾   Ústrr
   r   r&   r*   r0   r5   r:   r@   rG   rL   Ú__annotations__rP   rS   rE   rf   ri   rk   ro   rw   r}   r|   r„   r†   rŸ   r¥   r"   r®   r´   r»   rÆ   r   r   r   ú<module>rÏ      su  ðÞ Ý Ý "ã å ;Ý %à
€ð $'Ð  ô,�C˜ô ,÷
Zñ Z÷(Yñ Y÷Uñ U÷+ñ +÷
Wñ W÷ñ ÷7ñ 7÷[ñ [ð  -¨|Ñ;¸iÑGÐJ\Ñ\Ð �)Ó \ð* §¡ð *°Mó *ð $˜U×-Ñ-ð $¸×8HÑ8Hð $ÈU×M]ÑM]ó $ð,(�u×'Ñ'ð (°%×2BÑ2Bð (Àu×GWÑGWó (ðG˜e×.Ñ.ð G¸×9IÑ9Ið GÈe×N^ÑN^ó GðG˜e×.Ñ.ð G¸×9IÑ9Ið GÈe×N^ÑN^ó GðCØ×ÑðCØ&+×&6Ñ&6ðCØGMÇÁðCà
×ÑóCð"AØ×ÑðAØ&+×&6Ñ&6ðAØGMÇÁðAà
×ÑóAð #�B—J‘Jð # 2§:¡:ó #ð0˜2Ÿ:™:ð 0¨"¯*©*ó 0ðØðØ$×/Ñ/ðØ@FÇÁðà
×Ñóð>ØðØ$×/Ñ/ðØ@FÇÁðà
×Ñóð0Ø�+Ñðà×Ñðð —?‘?ðð ×Ñó	ð.'Øð'Ø$)×$4Ñ$4ð'ØEKÇ_Á_ð'à
×Ñó'ðØðØ"'×"2Ñ"2ðØCIÇ?Á?ðà
×Ñóð$ØðØ(-×(8Ñ(8ðØIOÏÉðà
×Ñôr   