§
    ù²Åj*  ã                   óÂ   — d dl Z d dlmZ d dlmZmZmZmZmZ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  G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        ZdS )é    N)ÚPath)ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚUnion)ÚImageé   )Úcheck_integrityÚdownload_and_extract_archiveÚdownload_urlÚverify_str_arg)ÚVisionDatasetc                   ó  ‡ — e Zd ZdZdZddddœZddd	d
ddddœZddddœZdZ	 	 	 d(de	e
ef         de
de
de
dee         dee         deddfˆ fd„Zde
dej        fd „Zdefd!„Zd)d"„Zd#e
d$e	ee
f         de
fd%„Zde
fd&„Zdefd'„Zˆ xZS )*Ú_LFWzlfw-pyz http://vis-www.cs.umass.edu/lfw/)Úlfwzlfw.tgzÚ a17d05bd522c52d84eca14327a23d494)Úlfw_funneledzlfw-funneled.tgzÚ 1b42dfed7d15c9b2dd63d5e5840c86ad)zlfw-deepfunneledzlfw-deepfunneled.tgzÚ 68331da3eb755a505a502b5aacb3c201)ÚoriginalÚfunneledÚdeepfunneledÚ 9f1ba174e4e1c508ff7cdf10ac338a7dÚ 5132f7440eb68cf58910c8a45a2ac10bÚ 4f27cbf15b2da4a85c1907eb4181ad21Ú 450f0863dd89e85e73936a6d71a3474bÚ e4bf5be0a43b5dcd9dc5ccfcb8fb19c5Ú 54eaac34beb6d042ed3a7d883e247a21Ú a6d0a479bd074669f656265a6e693f6d)z	pairs.txtzpairsDevTest.txtzpairsDevTrain.txtz
people.txtzpeopleDevTest.txtzpeopleDevTrain.txtúlfw-names.txtÚ ÚDevTrainÚDevTest©Ú10foldÚtrainÚtestr#   NFÚrootÚsplitÚ	image_setÚviewÚ	transformÚtarget_transformÚdownloadÚreturnc                 ó  •— t          ¦   «                              t          j                             || j        ¦  «        ||¬¦  «         t          |                     ¦   «         d| j         	                    ¦   «         ¦  «        | _
        | j        | j
                 \  }| _        | _        t          |                     ¦   «         dddg¦  «        | _        t          |                     ¦   «         dg d¢¦  «        | _        | j        › | j        | j                 › d�| _        g | _        |r|                      ¦   «          |                      ¦   «         st)          d	¦  «        ‚t          j                             | j        |¦  «        | _        d S )
N)r/   r0   r-   r.   ÚpeopleÚpairsr,   r'   z.txtzHDataset not found or corrupted. You can use download=True to download it)ÚsuperÚ__init__ÚosÚpathÚjoinÚbase_folderr   ÚlowerÚ	file_dictÚkeysr-   ÚfilenameÚmd5r.   r,   Ú
annot_fileÚlabels_fileÚdatar1   Ú_check_integrityÚRuntimeErrorr+   Ú
images_dir)
Úselfr+   r,   r-   r.   r/   r0   r1   rF   Ú	__class__s
            €úIC:\Projects\Historical\venv\Lib\site-packages\torchvision/datasets/lfw.pyr7   z_LFW.__init__!   s<  ø€ õ 	‰Œ×Ò�œŸš d¨DÔ,<Ñ=Ô=ÈÐeuÐÑvÔvÐvå'¨	¯ªÑ(9Ô(9¸;ÈÌ×H[ÒH[ÑH]ÔH]Ñ^Ô^ˆŒØ.2¬n¸T¼^Ô.LÑ+ˆ
�D”M 4¤8å" 4§:¢:¡<¤<°¸(ÀGÐ9LÑMÔMˆŒ	Ý# E§K¢K¡M¤M°7Ð<WÐ<WÐ<WÑXÔXˆŒ
Ø"œiÐJ¨¬¸¼Ô)DÐJÐJÐJˆÔØ!ˆŒ	àð 	Ø�MŠM‰OŒOˆOà×$Ò$Ñ&Ô&ð 	kÝÐiÑjÔjÐjåœ'Ÿ,š, t¤y°*Ñ=Ô=ˆŒˆˆó    r9   c                 ó¨   — t          |d¦  «        5 }t          j         |¦  «        }|                     d¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )NÚrbÚRGB)Úopenr   Úconvert)rG   r9   ÚfÚimgs       rI   Ú_loaderz_LFW._loader=   s�   € Ý�$˜ÑÔð 	& Ý”*˜Q‘-”-ˆCØ—;’;˜uÑ%Ô%ð	&ð 	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   ‘)AÁAÁAc                 óÂ  — t          t          j                             | j        | j        ¦  «        | j        ¦  «        }t          t          j                             | j        | j        ¦  «        | j        | j                 ¦  «        }|r|sdS | j	        dk    rHt          t          j                             | j        | j
        ¦  «        | j        | j
                 ¦  «        S dS )NFr4   T)r   r8   r9   r:   r+   r?   r@   rB   Ú	checksumsr.   Únames)rG   Úst1Úst2s      rI   rD   z_LFW._check_integrityB   s«   € Ý�bœgŸlšl¨4¬9°d´mÑDÔDÀdÄhÑOÔOˆÝ�bœgŸlšl¨4¬9°dÔ6FÑGÔGÈÌÐX\ÔXhÔIiÑjÔjˆØð 	˜#ð 	Ø�5ØŒ9˜Ò Ð Ý"¥2¤7§<¢<°´	¸4¼:Ñ#FÔ#FÈÌÐW[ÔWaÔHbÑcÔcÐcØˆtrJ   c                 ó<  — |                       ¦   «         rd S | j        › | j        › �}t          || j        | j        | j        ¬¦  «         t          | j        › | j        › �| j        ¦  «         | j        dk    r%t          | j        › | j	        › �| j        ¦  «         d S d S )N)r?   r@   r4   )
rD   Údownload_url_prefixr?   r   r+   r@   r   rB   r.   rU   )rG   Úurls     rI   r1   z_LFW.downloadK   s¯   € Ø× Ò Ñ"Ô"ð 	ØˆFØÔ)Ð:¨4¬=Ð:Ð:ˆÝ$ S¨$¬)¸d¼mÐQUÔQYÐZÑZÔZÐZÝ˜Ô0ÐD°$Ô2BÐDÐDÀdÄiÑPÔPÐPØŒ9˜Ò Ð Ý˜DÔ4ÐB°d´jÐBÐBÀDÄIÑNÔNÐNÐNÐNð !Ð rJ   ÚidentityÚnoc           	      óv   — t           j                             | j        ||› dt	          |¦  «        d›d�¦  «        S )NÚ_Ú04dz.jpg)r8   r9   r:   rF   Úint)rG   r[   r\   s      rI   Ú	_get_pathz_LFW._get_pathT   s6   € ÝŒw�|Š|˜DœO¨X¸(Ð7VÐ7VÅSÈÁWÄWÐ7VÐ7VÐ7VÐ7VÑWÔWÐWrJ   c                 ó&   — d| j         › d| j        › �S )NzAlignment: z
Split: )r-   r,   ©rG   s    rI   Ú
extra_reprz_LFW.extra_reprW   s   € ØB˜Tœ^ÐBÐB°d´jÐBÐBÐBrJ   c                 ó*   — t          | j        ¦  «        S )N)ÚlenrC   rc   s    rI   Ú__len__z_LFW.__len__Z   s   € Ý�4”9‰~Œ~ÐrJ   )NNF)r2   N)Ú__name__Ú
__module__Ú__qualname__r;   rY   r=   rT   rA   rU   r
   Ústrr   r   r   Úboolr7   r   rR   rD   r1   r`   ra   rd   rg   Ú__classcell__©rH   s   @rI   r   r      sÔ  ø€ € € € € à€KØ<Ðð KØ\Øhðð €Ið 8Ø>Ø?Ø8Ø?Ø@Ø;ðð €Ið ¨¸YÐGÐG€JØ€Eð )-Ø/3Øð>ð >à�C˜�IÔð>ð ð>ð ð	>ð
 ð>ð ˜HÔ%ð>ð # 8Ô,ð>ð ð>ð 
ð>ð >ð >ð >ð >ð >ð8&˜Cð & E¤Kð &ð &ð &ð &ð
 $ð ð ð ð ðOð Oð Oð OðX #ð X¨5°°c°¬?ð X¸sð Xð Xð Xð XðC˜Cð Cð Cð Cð Cð˜ð ð ð ð ð ð ð ð rJ   r   c                   óä   ‡ — e Zd ZdZ	 	 	 	 	 ddededed	ee         d
ee         deddfˆ fd„Zde	e
e         e
e         f         fd„Zdeeef         fd„Zdede	eef         fd„Zdefˆ fd„Zˆ xZS )Ú	LFWPeopleaê  `LFW <http://vis-www.cs.umass.edu/lfw/>`_ Dataset.

    Args:
        root (str or ``pathlib.Path``): Root directory of dataset where directory
            ``lfw-py`` exists or will be saved to if download is set to True.
        split (string, optional): The image split to use. Can be one of ``train``, ``test``,
            ``10fold`` (default).
        image_set (str, optional): Type of image funneling to use, ``original``, ``funneled`` or
            ``deepfunneled``. Defaults to ``funneled``.
        transform (callable, optional): A function/transform that  takes in a PIL image
            and returns a transformed version. E.g, ``transforms.RandomRotation``
        target_transform (callable, optional): A function/transform that takes in the
            target and transforms it.
        download (bool, optional): If true, downloads the dataset from the internet and
            puts it in root directory. If dataset is already downloaded, it is not
            downloaded again.

    r(   r   NFr+   r,   r-   r/   r0   r1   r2   c           	      óÊ   •— t          ¦   «                              |||d|||¦  «         |                      ¦   «         | _        |                      ¦   «         \  | _        | _        d S )Nr4   )r6   r7   Ú_get_classesÚclass_to_idxÚ_get_peoplerC   Útargets©rG   r+   r,   r-   r/   r0   r1   rH   s          €rI   r7   zLFWPeople.__init__r   s]   ø€ õ 	‰Œ×Ò˜˜u i°¸9ÐFVÐX`ÑaÔaÐaà ×-Ò-Ñ/Ô/ˆÔØ"&×"2Ò"2Ñ"4Ô"4ÑˆŒ	�4”<�<�<rJ   c           	      óÌ  — g g }}t          t          j                             | j        | j        ¦  «        ¦  «        5 }|                     ¦   «         }| j        dk    rt          |d         ¦  «        dfnd\  }}t          |¦  «        D ]Â}t          ||         ¦  «        }d„ ||dz   ||z   dz   …         D ¦   «         }	||dz   z  }t          |	¦  «        D ]v\  }
\  }}t          dt          |¦  «        dz   ¦  «        D ]M}|                      ||¦  «        }|                     |¦  «         |                     | j        |         ¦  «         ŒNŒwŒÃ	 d d d ¦  «         n# 1 swxY w Y   ||fS )Nr(   r   r   )r   r   c                 ó\   — g | ])}|                      ¦   «                              d ¦  «        ‘Œ*S ©ú	©Ústripr,   ©Ú.0Úlines     rI   ú
<listcomp>z)LFWPeople._get_people.<locals>.<listcomp>ˆ   s.   € Ð^Ð^Ð^°t˜$Ÿ*š*™,œ,×,Ò,¨TÑ2Ô2Ð^Ð^Ð^rJ   )rN   r8   r9   r:   r+   rB   Ú	readlinesr,   r`   ÚrangeÚ	enumeratera   Úappendrs   )rG   rC   ru   rP   ÚlinesÚn_foldsÚsÚfoldÚn_linesr4   Úir[   Únum_imgsÚnumrQ   s                  rI   rt   zLFWPeople._get_people€   sÎ  € Ø˜BˆgˆÝ•"”'—,’,˜tœy¨$Ô*:Ñ;Ô;Ñ<Ô<ð 	DÀØ—K’K‘M”MˆEØ/3¬z¸XÒ/EÐ/E�#˜e Aœh™-œ-¨Ð+Ð+È6‰JˆG�Qå˜g™œð Dð D�Ý˜e Aœh™-œ-�Ø^Ð^¸uÀQÈÁUÈQÐQXÉ[Ð[\É_ÐE\Ô?]Ð^Ñ^Ô^�Ø�W˜q‘[Ñ �Ý/8¸Ñ/@Ô/@ð Dð DÑ+�AÑ+˜ (Ý$ Q­¨H©¬¸Ñ(9Ñ:Ô:ð Dð D˜Ø"Ÿnšn¨X°sÑ;Ô;˜ØŸš CÑ(Ô(Ð(ØŸš tÔ'8¸Ô'BÑCÔCÐCÐCðDðDð	Dð		Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dð �Wˆ}Ðs   ¼DEÅEÅEc                 ó  — t          t          j                             | j        | j        ¦  «        ¦  «        5 }|                     ¦   «         }d„ |D ¦   «         }d d d ¦  «         n# 1 swxY w Y   d„ t          |¦  «        D ¦   «         }|S )Nc                 óf   — g | ].}|                      ¦   «                              ¦   «         d          ‘Œ/S )r   r{   r}   s     rI   r€   z*LFWPeople._get_classes.<locals>.<listcomp>•   s1   € Ð?Ð?Ð?°�T—Z’Z‘\”\×'Ò'Ñ)Ô)¨!Ô,Ð?Ð?Ð?rJ   c                 ó   — i | ]\  }}||“Œ	S © r�   )r~   rŠ   Únames      rI   ú
<dictcomp>z*LFWPeople._get_classes.<locals>.<dictcomp>–   s   € Ð@Ð@Ð@¡G A t˜˜aÐ@Ð@Ð@rJ   )rN   r8   r9   r:   r+   rU   r�   rƒ   )rG   rP   r…   rU   rs   s        rI   rr   zLFWPeople._get_classes’   sÊ   € Ý•"”'—,’,˜tœy¨$¬*Ñ5Ô5Ñ6Ô6ð 	@¸!Ø—K’K‘M”MˆEØ?Ð?¸Ð?Ñ?Ô?ˆEð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð AÐ@­y¸Ñ/?Ô/?Ð@Ñ@Ô@ˆØÐs   ¸!A%Á%A)Á,A)Úindexc                 óÔ   — |                       | j        |         ¦  «        }| j        |         }| j        �|                      |¦  «        }| j        �|                      |¦  «        }||fS )z�
        Args:
            index (int): Index

        Returns:
            tuple: Tuple (image, target) where target is the identity of the person.
        )rR   rC   ru   r/   r0   )rG   r“   rQ   Útargets       rI   Ú__getitem__zLFWPeople.__getitem__™   sg   € ð �lŠl˜4œ9 UÔ+Ñ,Ô,ˆØ”˜eÔ$ˆàŒ>Ð%Ø—.’. Ñ%Ô%ˆCàÔ Ð,Ø×*Ò*¨6Ñ2Ô2ˆFà�Fˆ{ÐrJ   c                 ót   •— t          ¦   «                              ¦   «         dt          | j        ¦  «        › �z   S )Nz
Classes (identities): )r6   rd   rf   rs   )rG   rH   s    €rI   rd   zLFWPeople.extra_repr¬   s2   ø€ Ý‰wŒw×!Ò!Ñ#Ô#Ð&YÅÀTÔEVÑAWÔAWÐ&YÐ&YÑYÐYrJ   ©r(   r   NNF)rh   ri   rj   Ú__doc__rk   r   r   rl   r7   r	   r   r`   rt   r   rr   r   r–   rd   rm   rn   s   @rI   rp   rp   ^   sU  ø€ € € € € ðð ð, Ø#Ø(,Ø/3Øð5ð 5àð5ð ð5ð ð	5ð
 ˜HÔ%ð5ð # 8Ô,ð5ð ð5ð 
ð5ð 5ð 5ð 5ð 5ð 5ð˜U 4¨¤9¨d°3¬iÐ#7Ô8ð ð ð ð ð$˜d 3¨ 8œnð ð ð ð ð ð ¨¨s°C¨x¬ð ð ð ð ð&Z˜Cð Zð Zð Zð Zð Zð Zð Zð Zð Zð ZrJ   rp   c                   óì   ‡ — e Zd ZdZ	 	 	 	 	 ddededed	ee         d
ee         deddfˆ fd„Zdede	e
e	eef                  e
e	eef                  e
e         f         fd„Zdede	eeef         fd„Zˆ xZS )ÚLFWPairsa÷  `LFW <http://vis-www.cs.umass.edu/lfw/>`_ Dataset.

    Args:
        root (str or ``pathlib.Path``): Root directory of dataset where directory
            ``lfw-py`` exists or will be saved to if download is set to True.
        split (string, optional): The image split to use. Can be one of ``train``, ``test``,
            ``10fold``. Defaults to ``10fold``.
        image_set (str, optional): Type of image funneling to use, ``original``, ``funneled`` or
            ``deepfunneled``. Defaults to ``funneled``.
        transform (callable, optional): A function/transform that takes in a PIL image
            and returns a transformed version. E.g, ``transforms.RandomRotation``
        target_transform (callable, optional): A function/transform that takes in the
            target and transforms it.
        download (bool, optional): If true, downloads the dataset from the internet and
            puts it in root directory. If dataset is already downloaded, it is not
            downloaded again.

    r(   r   NFr+   r,   r-   r/   r0   r1   r2   c           	      ó°   •— t          ¦   «                              |||d|||¦  «         |                      | j        ¦  «        \  | _        | _        | _        d S )Nr5   )r6   r7   Ú
_get_pairsrF   Ú
pair_namesrC   ru   rv   s          €rI   r7   zLFWPairs.__init__Ä   sO   ø€ õ 	‰Œ×Ò˜˜u i°¸)ÐEUÐW_Ñ`Ô`Ð`à37·?²?À4Ä?Ñ3SÔ3SÑ0ˆŒ˜œ D¤L L LrJ   rF   c           	      óª  — g g g }}}t          t          j                             | j        | j        ¦  «        ¦  «        5 }|                     ¦   «         }| j        dk    r=|d                              d¦  «        \  }}t          |¦  «        t          |¦  «        }}ndt          |d         ¦  «        }}d}	t          |¦  «        D �]s}
d„ ||	|	|z   …         D ¦   «         }d„ ||	|z   |	d|z  z   …         D ¦   «         }|	d|z  z  }	|D ]—}|  
                    |d         |d         ¦  «        |  
                    |d         |d         ¦  «        d}}}|                     |d         |d         f¦  «         |                     ||f¦  «         |                     |¦  «         Œ˜|D ]—}|  
                    |d         |d         ¦  «        |  
                    |d         |d         ¦  «        d}}}|                     |d         |d         f¦  «         |                     ||f¦  «         |                     |¦  «         Œ˜�Œu	 d d d ¦  «         n# 1 swxY w Y   |||fS )	Nr(   r   rz   r   c                 ó\   — g | ])}|                      ¦   «                              d ¦  «        ‘Œ*S ry   r{   r}   s     rI   r€   z'LFWPairs._get_pairs.<locals>.<listcomp>Ý   s.   € Ð ]Ð ]Ð ]¸d §¢¡¤×!3Ò!3°DÑ!9Ô!9Ð ]Ð ]Ð ]rJ   c                 ó\   — g | ])}|                      ¦   «                              d ¦  «        ‘Œ*S ry   r{   r}   s     rI   r€   z'LFWPairs._get_pairs.<locals>.<listcomp>Þ   s.   € Ð"oÐ"oÐ"oÀ 4§:¢:¡<¤<×#5Ò#5°dÑ#;Ô#;Ð"oÐ"oÐ"orJ   é   é   )rN   r8   r9   r:   r+   rB   r�   r,   r`   r‚   ra   r„   )rG   rF   rž   rC   ru   rP   r…   r†   Ún_pairsr‡   rˆ   Úmatched_pairsÚunmatched_pairsÚpairÚimg1Úimg2Úsames                    rI   r�   zLFWPairs._get_pairsÑ   s«  € Ø$&¨¨B˜'�Dˆ
Ý•"”'—,’,˜tœy¨$Ô*:Ñ;Ô;Ñ<Ô<ð 	)ÀØ—K’K‘M”MˆEØŒz˜XÒ%Ð%Ø#(¨¤8§>¢>°$Ñ#7Ô#7Ñ �˜Ý#& w¡<¤<µ°W±´˜��à#$¥c¨%°¬(¡m¤m˜�ØˆAå˜g™œð )ñ )�Ø ]Ð ]ÀeÈAÐPQÐT[ÑP[ÈOÔF\Ð ]Ñ ]Ô ]�Ø"oÐ"oÈÈaÐRYÉkÐ\]ÐabÐelÑalÑ\mÐNmÔHnÐ"oÑ"oÔ"o�Ø�Q˜‘[Ñ �Ø)ð )ð )�DØ'+§~¢~°d¸1´g¸tÀA¼wÑ'GÔ'GÈÏÊÐX\Ð]^ÔX_ÐaeÐfgÔahÑIiÔIiÐkl ˜$�DØ×%Ò% t¨A¤w°°Q´Ð&8Ñ9Ô9Ð9Ø—K’K  t Ñ-Ô-Ð-Ø—N’N 4Ñ(Ô(Ð(Ð(Ø+ð )ð )�DØ'+§~¢~°d¸1´g¸tÀA¼wÑ'GÔ'GÈÏÊÐX\Ð]^ÔX_ÐaeÐfgÔahÑIiÔIiÐkl ˜$�DØ×%Ò% t¨A¤w°°Q´Ð&8Ñ9Ô9Ð9Ø—K’K  t Ñ-Ô-Ð-Ø—N’N 4Ñ(Ô(Ð(Ð(ñ	)ð)ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð0 ˜4 Ð(Ð(s   ¾G:IÉI	ÉI	r“   c                 ó4  — | j         |         \  }}|                      |¦  «        |                      |¦  «        }}| j        |         }| j        �*|                      |¦  «        |                      |¦  «        }}| j        �|                      |¦  «        }|||fS )z¿
        Args:
            index (int): Index

        Returns:
            tuple: (image1, image2, target) where target is `0` for different indentities and `1` for same identities.
        )rC   rR   ru   r/   r0   )rG   r“   r¨   r©   r•   s        rI   r–   zLFWPairs.__getitem__í   s“   € ð ”Y˜uÔ%‰
ˆˆdØ—\’\ $Ñ'Ô'¨¯ª°dÑ);Ô);ˆdˆØ”˜eÔ$ˆàŒ>Ð%ØŸš¨Ñ-Ô-¨t¯~ª~¸dÑ/CÔ/C�$ˆDàÔ Ð,Ø×*Ò*¨6Ñ2Ô2ˆFà�T˜6Ð!Ð!rJ   r˜   )rh   ri   rj   r™   rk   r   r   rl   r7   r	   r   r`   r�   r   r–   rm   rn   s   @rI   r›   r›   °   s8  ø€ € € € € ðð ð, Ø#Ø(,Ø/3ØðTð TàðTð ðTð ð	Tð
 ˜HÔ%ðTð # 8Ô,ðTð ðTð 
ðTð Tð Tð Tð Tð Tð) Sð )¨U°4¸¸cÀ3¸h¼Ô3HÈ$ÈuÐUXÐZ]ÐU]ÌÔJ_ÐaeÐfiÔajÐ3jÔ-kð )ð )ð )ð )ð8" ð "¨¨s°C¸¨}Ô)=ð "ð "ð "ð "ð "ð "ð "ð "rJ   r›   )r8   Úpathlibr   Útypingr   r   r   r   r   r	   r
   ÚPILr   Úutilsr   r   r   r   Úvisionr   r   rp   r›   r�   rJ   rI   ú<module>r±      sJ  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dà Ð Ð Ð Ð Ð à ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ø !Ð !Ð !Ð !Ð !Ð !ðPð Pð Pð Pð Pˆ=ñ Pô Pð PðfOZð OZð OZð OZð OZ�ñ OZô OZð OZðdO"ð O"ð O"ð O"ð O"ˆtñ O"ô O"ð O"ð O"ð O"rJ   