§
    ù²ÅjQ@  ã                   óö  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZ
d dlZ
d dlZd dlmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlZd dlZd dlmZ ddl m!Z!m"Z" dZ#dHd	e$d
ee$ej%        f         de&ddfd„Z'dIdee$ej%        f         de&de$fd„Z(dee$ej%        f         de$dede)fd„Z*dJdee$ej%        f         dee$         de)fd„Z+dKd	e$de&de$fd„Z,d	e$dee$         fd„Z-	 	 	 dLd	e$dee$ej%        f         d
eee$ej%        f                  dee$         de&ddfd„Z.dMdee$ej%        f         de)dee$         fd„Z/dMdee$ej%        f         de$de)dee$         fd „Z0	 	 dNd!e$dee$ej%        f         d
eee$ej%        f                  dee$         fd"„Z1d#ee$ej%        f         d$ee$ej%        f         d%ee$         ddfd&„Z2ej3        ej4        d'œZ5ee$e&f         e6d(<   d#ee$ej%        f         d$ee$ej%        f         d%ee$         ddfd)„Z7e2e7d*œZ8ee$eee$ej%        f         ee$ej%        f         ee$         gdf         f         e6d+<   e j9        ej9        ej9        d,œZ:ee$ed-ef         f         e6d.<   d/d/d0d1œZ;ee$eee$         ee$         f         f         e6d2<   d3ee$ej%        f         dee$ee$         ee$         f         fd4„Z<	 	 dOd#ee$ej%        f         d$eee$ej%        f                  d5e)dej%        fd6„Z=	 	 dOd#ee$ej%        f         d$eee$ej%        f                  d5e)dee$ej%        f         fd7„Z>	 	 	 	 dPd	e$d8ee$ej%        f         d9eee$ej%        f                  d
eee$ej%        f                  dee$         d5e)ddfd:„Z?d;ede$fd<„Z@ ed=e$eA¦  «        ZB	 	 	 dQd>eBd?ee$         d@eeeB                  dAee$         deBf
dB„ZCdRdCee$ej%        f         dDe&dejD        fdE„ZEdFejF        dejF        fdG„ZGdS )Sé    N)
ÚAnyÚCallableÚDictÚIOÚIterableÚListÚOptionalÚTupleÚTypeVarÚUnion)Úurlparse)Útqdmé   )Ú#_download_file_from_remote_locationÚ_is_remote_location_availablezpytorch/visioné €  ÚurlÚfilenameÚ
chunk_sizeÚreturnc                 ó:  — t           j                             t           j                             | dt          i¬¦  «        ¦  «        5 }t          |d¦  «        5 }t          |j        dd¬¦  «        5 }|                     |¦  «        x}rN| 	                    |¦  «         | 
                    t          |¦  «        ¦  «         |                     |¦  «        x}°Nd d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nú
User-Agent©ÚheadersÚwbÚBT)ÚtotalÚunitÚ
unit_scale)ÚurllibÚrequestÚurlopenÚRequestÚ
USER_AGENTÚopenr   ÚlengthÚreadÚwriteÚupdateÚlen)r   r   r   ÚresponseÚfhÚpbarÚchunks          úKC:\Projects\Historical\venv\Lib\site-packages\torchvision/datasets/utils.pyÚ_urlretriever0      s¼  € Ý	Œ×	Ò	¥¤× 6Ò 6°sÀ\ÕS]ÐD^Ð 6Ñ _Ô _Ñ	`Ô	`ð (ÐdlÝ�(˜DÑ!Ô!ð 	( R­°H´OÈ#ÐZ^Ð)_Ñ)_Ô)_ð 	(ÐcgØ#Ÿ=š=¨Ñ4Ô4Ð4�%ð (Ø—’˜‘”�Ø—’�C ™JœJÑ'Ô'Ð'ð $Ÿ=š=¨Ñ4Ô4Ð4�%ð (ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s[   ÁDÁC8Á/A&C!ÃC8Ã!C%Ã%C8Ã(C%Ã)C8Ã,DÃ8C<	Ã<DÃ?C<	Ä DÄDÄDé   Úfpathc                 ór  — t           j        dk    rt          j        d¬¦  «        }nt          j        ¦   «         }t	          | d¦  «        5 }|                     |¦  «        x}r,|                     |¦  «         |                     |¦  «        x}°,d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         S )N)é   é	   F)ÚusedforsecurityÚrb)ÚsysÚversion_infoÚhashlibÚmd5r%   r'   r)   Ú	hexdigest)r2   r   r;   Úfr.   s        r/   Úcalculate_md5r>   #   sé   € õ Ô˜6Ò!Ð!ÝŒk¨%Ð0Ñ0Ô0ˆˆåŒk‰mŒmˆÝ	ˆe�TÑ	Ô	ð ˜aØ—v’v˜jÑ)Ô)Ð)ˆeð 	Ø�JŠJ�uÑÔÐð —v’v˜jÑ)Ô)Ð)ˆeð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð �=Š=‰?Œ?Ðs   Á
ABÂBÂ!Br;   Úkwargsc                 ó$   — |t          | fi |¤Žk    S ©N)r>   )r2   r;   r?   s      r/   Ú	check_md5rB   1   s   € Ø•- Ð0Ð0¨Ð0Ð0Ò0Ð0ó    c                 ól   — t           j                             | ¦  «        sdS |€dS t          | |¦  «        S )NFT)ÚosÚpathÚisfilerB   )r2   r;   s     r/   Úcheck_integrityrH   5   s7   € ÝŒ7�>Š>˜%Ñ Ô ð ØˆuØ
€{ØˆtÝ�U˜CÑ Ô Ð rC   r4   Úmax_hopsc           	      ót  — | }dt           dœ}t          |dz   ¦  «        D ]�}t          j                             t          j                             | |¬¦  «        ¦  «        5 }|j        | k    s|j        €| cd d d ¦  «         c S |j        } d d d ¦  «         n# 1 swxY w Y   Œ‚t          d|› d|› d| › d�¦  «        ‚)	NÚHEAD)ÚMethodr   é   r   zRequest to z
 exceeded z( redirects. The last redirect points to ú.)r$   Úranger    r!   r"   r#   r   ÚRecursionError)r   rI   Úinitial_urlr   Ú_r+   s         r/   Ú_get_redirect_urlrS   =   s3  € Ø€KØ­zÐ:Ð:€Gå�8˜a‘<Ñ Ô ð 	
ð 	
ˆÝŒ^×#Ò#¥F¤N×$:Ò$:¸3ÈÐ$:Ñ$PÔ$PÑQÔQð 	ÐU]ØŒ|˜sÒ"Ð" h¤lÐ&:Øð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð ”,ˆCð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øõ Øi˜+ÐiÐi°ÐiÐiÐcfÐiÐiÐiñ
ô 
ð 	
s   ÁBÂBÂB	ÂB	c                 ó¾   — t          | ¦  «        }t          j        d|j        ¦  «        €d S t          j        d|j        ¦  «        }|€d S |                     d¦  «        S )Nz(drive|docs)[.]google[.]comz/file/d/(?P<id>[^/]*)Úid)r   ÚreÚmatchÚnetlocrF   Úgroup)r   ÚpartsrW   s      r/   Ú_get_google_drive_file_idr[   M   sW   € Ý�S‰MŒM€Eå	„xÐ.°´Ñ=Ô=ÐEØˆtåŒHÐ-¨u¬zÑ:Ô:€EØ€}Øˆtà�;Š;�tÑÔÐrC   ÚrootÚmax_redirect_hopsc                 ó   — t           j                             |¦  «        }|st           j                             | ¦  «        }t          j        t           j                             ||¦  «        ¦  «        }t          j        |d¬¦  «         t          ||¦  «        rdS t          ¦   «         rt          || ¦  «         n¥t          | |¬¦  «        } t          | ¦  «        }|�t          ||||¦  «        S 	 t          | |¦  «         n_# t          j        j        t"          f$ rA}| dd…         dk    r'|                      dd¦  «        } t          | |¦  «         n|‚Y d}~nd}~ww xY wt          ||¦  «        st'          d	¦  «        ‚dS )
a¯  Download a file from a url and place it in root.

    Args:
        url (str): URL to download file from
        root (str): Directory to place downloaded file in
        filename (str, optional): Name to save the file under. If None, use the basename of the URL
        md5 (str, optional): MD5 checksum of the download. If None, do not check
        max_redirect_hops (int, optional): Maximum number of redirect hops allowed
    T©Úexist_okN)rI   é   Úhttpszhttps:zhttp:úFile not found or corrupted.)rE   rF   Ú
expanduserÚbasenameÚfspathÚjoinÚmakedirsrH   r   r   rS   r[   Údownload_file_from_google_driver0   r    ÚerrorÚURLErrorÚOSErrorÚreplaceÚRuntimeError)r   r\   r   r;   r]   r2   Úfile_idÚes           r/   Údownload_urlrq   Z   sŸ  € õ  Œ7×Ò˜dÑ#Ô#€DØð )Ý”7×#Ò# CÑ(Ô(ˆÝŒI•b”g—l’l 4¨Ñ2Ô2Ñ3Ô3€Eå„K�˜tÐ$Ñ$Ô$Ð$õ �u˜cÑ"Ô"ð Øˆå$Ñ&Ô&ð Ý+¨E°3Ñ7Ô7Ð7Ð7õ   Ð.?Ð@Ñ@Ô@ˆõ ,¨CÑ0Ô0ˆØÐÝ2°7¸DÀ(ÈCÑPÔPÐPð	Ý˜˜eÑ$Ô$Ð$Ð$øÝ”Ô%¥wÐ/ð 	ð 	ð 	Ø�2�A�2Œw˜'Ò!Ð!Ø—k’k (¨GÑ4Ô4�Ý˜S %Ñ(Ô(Ð(Ð(à�ð )Ð(Ð(Ð(Ð(øøøøð	øøøõ ˜5 #Ñ&Ô&ð ;ÝÐ9Ñ:Ô:Ð:ð;ð ;s   Ã/D  Ä EÄ7EÅEFÚprefixc                 óª   ‡ — t           j                             ‰ ¦  «        Š ˆ fd„t          j        ‰ ¦  «        D ¦   «         }|du rˆ fd„|D ¦   «         }|S )a  List all directories at a given root

    Args:
        root (str): Path to directory whose folders need to be listed
        prefix (bool, optional): If true, prepends the path to each result, otherwise
            only returns the name of the directories found
    c                 óŽ   •— g | ]A}t           j                             t           j                             ‰|¦  «        ¦  «        ¯?|‘ŒBS © )rE   rF   Úisdirrg   )Ú.0Úpr\   s     €r/   ú
<listcomp>zlist_dir.<locals>.<listcomp>˜   s=   ø€ ÐWÐWÐW˜µ"´'·-²-ÅÄÇÂÈTÐSTÑ@UÔ@UÑ2VÔ2VÐW�1ÐWÐWÐWrC   Tc                 óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S ru   ©rE   rF   rg   ©rw   Údr\   s     €r/   ry   zlist_dir.<locals>.<listcomp>š   s)   ø€ ÐBÐBÐB°•r”w—|’| D¨!Ñ,Ô,ÐBÐBÐBrC   ©rE   rF   rd   Úlistdir)r\   rr   Údirectoriess   `  r/   Úlist_dirr�   �   se   ø€ õ Œ7×Ò˜dÑ#Ô#€DØWÐWÐWÐW�bœj¨Ñ.Ô.ÐWÑWÔW€KØ�€~€~ØBÐBÐBÐB°kÐBÑBÔBˆØÐrC   Úsuffixc                 ó®   ‡ ‡— t           j                             ‰ ¦  «        Š ˆ ˆfd„t          j        ‰ ¦  «        D ¦   «         }|du rˆ fd„|D ¦   «         }|S )a¾  List all files ending with a suffix at a given root

    Args:
        root (str): Path to directory whose folders need to be listed
        suffix (str or tuple): Suffix of the files to match, e.g. '.png' or ('.jpg', '.png').
            It uses the Python "str.endswith" method and is passed directly
        prefix (bool, optional): If true, prepends the path to each result, otherwise
            only returns the name of the files found
    c                 ó¸   •— g | ]V}t           j                             t           j                             ‰|¦  «        ¦  «        ¯?|                     ‰¦  «        ¯T|‘ŒWS ru   )rE   rF   rG   rg   Úendswith)rw   rx   r\   r‚   s     €€r/   ry   zlist_files.<locals>.<listcomp>©   sQ   ø€ ÐiÐiÐi�1­B¬G¯NªN½2¼7¿<º<ÈÈaÑ;PÔ;PÑ,QÔ,QÐiÐVW×V`ÒV`ÐagÑVhÔVhÐiˆQÐiÐiÐirC   Tc                 óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S ru   r{   r|   s     €r/   ry   zlist_files.<locals>.<listcomp>«   s)   ø€ Ð6Ð6Ð6¨1•”—’˜d AÑ&Ô&Ð6Ð6Ð6rC   r~   )r\   r‚   rr   Úfiless   ``  r/   Ú
list_filesrˆ   ž   sh   øø€ õ Œ7×Ò˜dÑ#Ô#€DØiÐiÐiÐiÐi�œ
 4Ñ(Ô(ÐiÑiÔi€EØ�€~€~Ø6Ð6Ð6Ð6°Ð6Ñ6Ô6ˆØ€LrC   ro   c                 óÀ  — 	 ddl }n# t          $ r t          d¦  «        ‚w xY wt          j                             |¦  «        }|s| }t          j        t          j                             ||¦  «        ¦  «        }t          j        |d¬¦  «         t          ||¦  «        rdS | 
                    | |dt          ¬¦  «         t          ||¦  «        st          d¦  «        ‚dS )	af  Download a Google Drive file from  and place it in root.

    Args:
        file_id (str): id of file to be downloaded
        root (str): Directory to place downloaded file in
        filename (str, optional): Name to save the file under. If None, use the id of the file.
        md5 (str, optional): MD5 checksum of the download. If None, do not check
    r   Nz`To download files from GDrive, 'gdown' is required. You can install it with 'pip install gdown'.Tr_   F)rU   ÚoutputÚquietÚ
user_agentrc   )ÚgdownÚModuleNotFoundErrorrn   rE   rF   rd   rf   rg   rh   rH   Údownloadr$   )ro   r\   r   r;   r�   r2   s         r/   ri   ri   ¯   sö   € ð
ØˆˆˆˆøÝð 
ð 
ð 
ÝØnñ
ô 
ð 	
ð
øøøõ
 Œ7×Ò˜dÑ#Ô#€DØð ØˆÝŒI•b”g—l’l 4¨Ñ2Ô2Ñ3Ô3€Eå„K�˜tÐ$Ñ$Ô$Ð$å�u˜cÑ"Ô"ð Øˆà	‡N‚N�g e°5ÅZ€NÑPÔPÐPå˜5 #Ñ&Ô&ð ;ÝÐ9Ñ:Ô:Ð:ð;ð ;s   ‚ ‡!Ú	from_pathÚto_pathÚcompressionc                 óª   — t          j        | |rd|dd …         › �nd¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzr:rM   Úr)Útarfiler%   Ú
extractall)r�   r‘   r’   Útars       r/   Ú_extract_tarr˜   Ô   s¥   € õ 
Œ�i¸;Ð!OÐ!7 k°!°"°"¤oÐ!7Ð!7Ð!7ÈCÑ	PÔ	Pð  ÐTWØ�Š�wÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  s   ¥AÁAÁA)ú.bz2ú.xzÚ_ZIP_COMPRESSION_MAPc                 óÂ   — t          j        | d|rt          |         nt           j        ¬¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr”   )r’   )ÚzipfileÚZipFiler›   Ú
ZIP_STOREDr–   )r�   r‘   r’   Úzips       r/   Ú_extract_zipr¡   á   sª   € õ 
ŒØ�3ÈÐ$lÕ$8¸Ô$EÐ$EÕZaÔZlð
ñ 
ô 
ð  à	Ø�Š�wÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  s   ±AÁAÁA)ú.tarz.zipÚ_ARCHIVE_EXTRACTORS)r™   ú.gzrš   .Ú_COMPRESSED_FILE_OPENERS)r¢   r™   )r¢   r¤   )z.tbzz.tbz2z.tgzÚ_FILE_TYPE_ALIASESÚfilec                 óô  — t          j        | ¦  «        j        }|st          d| › d�¦  «        ‚|d         }|t          v r|gt          |         ¢R S |t
          v r||dfS |t          v r1t          |¦  «        dk    r|d         }|t
          v r||z   ||fS |d|fS t          t          t          ¦  «        t          t
          ¦  «        z  t          t          ¦  «        z  ¦  «        }t          d|› d|› d	�¦  «        ‚)
a  Detect the archive type and/or compression of a file.

    Args:
        file (str): the filename

    Returns:
        (tuple): tuple of suffix, archive type, and compression

    Raises:
        RuntimeError: if file has no suffix or suffix is not supported
    zFile 'zP' has no suffixes that could be used to detect the archive type and compression.éÿÿÿÿNrM   éþÿÿÿz&Unknown compression or archive type: 'z'.
Known suffixes are: 'z'.)
ÚpathlibÚPathÚsuffixesrn   r¦   r£   r¥   r*   ÚsortedÚset)r§   r­   r‚   Úsuffix2Úvalid_suffixess        r/   Ú_detect_file_typer²   ú   s4  € õ Œ|˜DÑ!Ô!Ô*€HØð 
ÝØk�TÐkÐkÐkñ
ô 
ð 	
ð �bŒ\€Fð Õ#Ð#Ð#ØÐ4Õ+¨FÔ3Ð4Ð4Ð4ð Õ$Ð$Ð$Ø�v˜tÐ#Ð#ð Õ)Ð)Ð)åˆx‰=Œ=˜1ÒÐØ˜r”lˆGð Õ-Ð-Ð-Ø Ñ'¨°&Ð8Ð8à�t˜VÐ#Ð#å�CÕ 2Ñ3Ô3µcÕ:MÑ6NÔ6NÑNÕQTÕUmÑQnÔQnÑnÑoÔo€NÝ
ÐsÀÐsÐsÐaoÐsÐsÐsÑ
tÔ
tÐtrC   Úremove_finishedc                 ó&  — t          | ¦  «        \  }}}|st          d|› d�¦  «        ‚|€>t          j        t	          j        | ¦  «                             ||�|nd¦  «        ¦  «        }t          |         } || d¦  «        5 }t          |d¦  «        5 }| 	                    | 
                    ¦   «         ¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |rt	          j        | ¦  «         t          j        |¦  «        S )a©  Decompress a file.

    The compression is automatically detected from the file name.

    Args:
        from_path (str): Path to the file to be decompressed.
        to_path (str): Path to the decompressed file. If omitted, ``from_path`` without compression extension is used.
        remove_finished (bool): If ``True``, remove the file after the extraction.

    Returns:
        (str): Path to the decompressed file.
    z*Couldn't detect a compression from suffix rN   NÚ r7   r   )r²   rn   r«   r¬   rE   rf   rm   r¥   r%   r(   r'   Úremove)	r�   r‘   r³   r‚   Úarchive_typer’   Úcompressed_file_openerÚrfhÚwfhs	            r/   Ú_decompressr»   %  sŒ  € õ" ):¸)Ñ(DÔ(DÑ%€FˆL˜+Øð SÝÐQÈÐQÐQÐQÑRÔRÐRà€Ý”,�rœy¨Ñ3Ô3×;Ò;¸FÐT`ÐTlÀLÀLÐrtÑuÔuÑvÔvˆõ 6°kÔBÐà	Ð	 	¨4Ñ	0Ô	0ð °C½¸gÀtÑ9LÔ9Lð ÐPSØ�	Š	�#—(’(‘*”*ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð Ý
Œ	�)ÑÔÐåŒ<˜Ñ Ô Ð s6   ÂCÂ(CÂ;CÃC	ÃCÃC	ÃCÃC"Ã%C"c           
      óB  ‡ — dt           j        dt          t          t           j        f         fˆ fd„}|€t          j                             ‰ ¦  «        }t          ‰ ¦  «        \  }}}|slt          ‰ t          j         	                    |t          j         
                    ‰ ¦  «                             |d¦  «        ¦  «        |¬¦  «        } ||¦  «        S t          |         } |‰ ||¦  «         |rt	          j        ‰ ¦  «          |t          j        |¦  «        ¦  «        S )aD  Extract an archive.

    The archive type and a possible compression is automatically detected from the file name. If the file is compressed
    but not an archive the call is dispatched to :func:`decompress`.

    Args:
        from_path (str): Path to the file to be extracted.
        to_path (str): Path to the directory the file will be extracted to. If omitted, the directory of the file is
            used.
        remove_finished (bool): If ``True``, remove the file after the extraction.

    Returns:
        (str): Path to the directory the file was extracted to.
    Úret_pathr   c                 óZ   •— t          ‰t          ¦  «        rt          j        | ¦  «        S | S rA   )Ú
isinstanceÚstrrE   rf   )r½   r�   s    €r/   Úpath_or_strz$extract_archive.<locals>.path_or_str]  s*   ø€ Ý�i¥Ñ%Ô%ð 	Ý”9˜XÑ&Ô&Ð&àˆOrC   Nrµ   )r³   )r«   r¬   r   rÀ   rE   rF   Údirnamer²   r»   rg   re   rm   r£   r¶   )	r�   r‘   r³   rÁ   r‚   r·   r’   r½   Ú	extractors	   `        r/   Úextract_archiverÄ   I  s$  ø€ ð(�gœlð ­uµS½'¼,Ð5FÔ/Gð ð ð ð ð ð ð €Ý”'—/’/ )Ñ,Ô,ˆå(9¸)Ñ(DÔ(DÑ%€FˆL˜+Øð %ÝØÝŒG�LŠL˜¥"¤'×"2Ò"2°9Ñ"=Ô"=×"EÒ"EÀfÈbÑ"QÔ"QÑRÔRØ+ð
ñ 
ô 
ˆð
 ˆ{˜8Ñ$Ô$Ð$õ $ LÔ1€Ià€Iˆi˜ +Ñ.Ô.Ð.Øð Ý
Œ	�)ÑÔÐàˆ;•w”| GÑ,Ô,Ñ-Ô-Ð-rC   Údownload_rootÚextract_rootc                 ó  — t           j                             |¦  «        }|€|}|st           j                             | ¦  «        }t	          | |||¦  «         t           j                             ||¦  «        }t          |||¦  «         d S rA   )rE   rF   rd   re   rq   rg   rÄ   )r   rÅ   rÆ   r   r;   r³   Úarchives          r/   Údownload_and_extract_archiverÉ   y  s‚   € õ ”G×&Ò& }Ñ5Ô5€MØÐØ$ˆØð )Ý”7×#Ò# CÑ(Ô(ˆå��m X¨sÑ3Ô3Ð3åŒg�lŠl˜=¨(Ñ3Ô3€GÝ�G˜\¨?Ñ;Ô;Ð;Ð;Ð;rC   Úiterablec                 óL   — dd                      d„ | D ¦   «         ¦  «        z   dz   S )Nú'z', 'c                 ó,   — g | ]}t          |¦  «        ‘ŒS ru   )rÀ   )rw   Úitems     r/   ry   z#iterable_to_str.<locals>.<listcomp>Ž  s   € Ð=Ð=Ð=¨D�c $™iœiÐ=Ð=Ð=rC   )rg   )rÊ   s    r/   Úiterable_to_strrÏ   �  s-   € Ø�—’Ð=Ð=°HÐ=Ñ=Ô=Ñ>Ô>Ñ>ÀÑDÐDrC   ÚTÚvalueÚargÚvalid_valuesÚ
custom_msgc                 ó*  — t          | t          ¦  «        s:|€d}nd}|                     t          | ¦  «        |¬¦  «        }t	          |¦  «        ‚|€| S | |vr;|�|}n'd}|                     | |t          |¦  «        ¬¦  «        }t	          |¦  «        ‚| S )Nz'Expected type str, but got type {type}.z:Expected type str for argument {arg}, but got type {type}.)ÚtyperÒ   zPUnknown value '{value}' for argument {arg}. Valid values are {{{valid_values}}}.)rÑ   rÒ   rÓ   )r¿   rÀ   ÚformatrÖ   Ú
ValueErrorrÏ   )rÑ   rÒ   rÓ   rÔ   Úmsgs        r/   Úverify_str_argrÚ   ”  s§   € õ �e�SÑ!Ô!ð Øˆ;Ø;ˆCˆCàNˆCØ�jŠj�d 5™kœk¨sˆjÑ3Ô3ˆÝ˜‰oŒoÐàÐØˆà�LÐ Ð ØÐ!ØˆCˆCàdˆCØ—*’* 5¨cÅÐP\Ñ@]Ô@]�*Ñ^Ô^ˆCÝ˜‰oŒoÐà€LrC   Ú	file_nameÚslice_channelsc                 ó"  — t          | d¦  «        5 }|                     ¦   «                              ¦   «         }|dvrt          d¦  «        ‚t	          j        d|                     ¦   «         ¦  «        }|st          d¦  «        ‚d„ |                     ¦   «         D ¦   «         \  }}t          |                     ¦   «                              ¦   «         ¦  «        }|dk     rd}| }nd	}t          j
        ||d
z   ¬¦  «        }	ddd¦  «         n# 1 swxY w Y   |dk    rdnd}
|	                     |||
¦  «                             ddd¦  «        }	t          j        |	d¬¦  «        }	|	d|…dd…dd…f         }	|	                     t          j        ¦  «        S )aD  Read file in .pfm format. Might contain either 1 or 3 channels of data.

    Args:
        file_name (str): Path to the file.
        slice_channels (int): Number of channels to slice out of the file.
            Useful for reading different data formats stored in .pfm files: Optical Flows, Stereo Disparity Maps, etc.
    r7   )ó   PFs   PfzInvalid PFM files   ^(\d+)\s(\d+)\s$zMalformed PFM header.c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rA   )Úint)rw   Údims     r/   ú	<genexpr>z_read_pfm.<locals>.<genexpr>Á  s(   è è € Ð7Ð7˜S•�C‘”Ð7Ð7Ð7Ð7Ð7Ð7rC   r   ú<ú>r=   )ÚdtypeNrÞ   r4   rM   r   )Úaxis)r%   ÚreadlineÚrstriprØ   rV   rW   Ú	ExceptionÚgroupsÚfloatÚnpÚfromfileÚreshapeÚ	transposeÚflipÚastypeÚfloat32)rÛ   rÜ   r=   ÚheaderÚ	dim_matchÚwÚhÚscaleÚendianÚdataÚpfm_channelss              r/   Ú	_read_pfmrû   °  sÁ  € õ 
ˆi˜Ñ	Ô	ð 2 !Ø—’‘”×$Ò$Ñ&Ô&ˆØ˜Ð'Ð'ÝÐ/Ñ0Ô0Ð0å”HÐ1°1·:²:±<´<Ñ@Ô@ˆ	Øð 	5ÝÐ3Ñ4Ô4Ð4Ø7Ð7 I×$4Ò$4Ñ$6Ô$6Ð7Ñ7Ô7‰ˆˆ1å�a—j’j‘l”l×)Ò)Ñ+Ô+Ñ,Ô,ˆØ�1Š9ˆ9ØˆFØ�FˆEˆEàˆFåŒ{˜1 F¨S¡LÐ1Ñ1Ô1ˆð#2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð&  %š˜�1�1¨Q€Là�<Š<˜˜1˜lÑ+Ô+×5Ò5°a¸¸AÑ>Ô>€DÝŒ7�4˜aÐ Ñ Ô €DØ���    A A AÐ%Ô&€DØ�;Š;•r”zÑ"Ô"Ð"s   ‘C-D
Ä
DÄDÚtc                 ó6  —   |                       ¦   «                              t          j        ¦  «        j        g | j        ¢|                      ¦   «         ‘R Ž                      d¦  «        j        g | j        d d…         ¢d‘R Ž                      | j        ¦  «        S )Nr©   )Ú
contiguousÚviewÚtorchÚuint8ÚshapeÚelement_sizerð   rå   )rü   s    r/   Ú_flip_byte_orderr  Ô  s�   € àWÐ-ˆ�Š‰Œ×Ò�EœKÑ(Ô(Ô-ÐI¨q¬wÐI¸¿ºÑ8HÔ8HÐIÐIÐI×NÒNÈrÑRÔRÔWÐjÐYZÔY`ÐadÐbdÐadÔYeÐjÐgiÐjÐjÐj×oÒoÐpqÔpwÑxÔxðrC   )r   )r1   rA   )r4   )NNr4   )F)NN)NF)NNNF)NNN)r   )HÚbz2Úgzipr:   ÚlzmarE   Úos.pathr«   rV   r8   r•   r    Úurllib.errorÚurllib.requestr�   Útypingr   r   r   r   r   r   r	   r
   r   r   Úurllib.parser   Únumpyrì   r   Útorch.utils.model_zoor   Ú_internally_replaced_utilsr   r   r$   rÀ   r¬   rà   r0   r>   ÚboolrB   rH   rS   r[   rq   r�   rˆ   ri   r˜   Ú	ZIP_BZIP2ÚZIP_LZMAr›   Ú__annotations__r¡   r£   r%   r¥   r¦   r²   r»   rÄ   rÉ   rÏ   ÚbytesrÐ   rÚ   Úndarrayrû   ÚTensorr  ru   rC   r/   ú<module>r     sl  ðØ 
€
€
€
€
Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ø €€€Ø &Ð &Ð &Ð &Ð &Ð &à kÐ kÐ kÐ kÐ kÐ kÐ kÐ kà€
ð(ð (�cð ( U¨3°´Ð+<Ô%=ð (È3ð (Ð_cð (ð (ð (ð (ðð ˜˜s G¤LÐ0Ô1ð ¸sð ÐUXð ð ð ð ð1�U˜3 ¤Ð,Ô-ð 1°Cð 1À3ð 1È4ð 1ð 1ð 1ð 1ð!ð !˜5  g¤lÐ!2Ô3ð !¸(À3¼-ð !ÐSWð !ð !ð !ð !ð
ð 
˜3ð 
¨#ð 
°cð 
ð 
ð 
ð 
ð 
 3ð 
¨8°C¬=ð 
ð 
ð 
ð 
ð  48ØØð2;ð 2;Ø	ð2;à
��W”\Ð!Ô
"ð2;ð �u˜S '¤,Ð.Ô/Ô0ð2;ð 
�#Œð	2;ð
 ð2;ð 
ð2;ð 2;ð 2;ð 2;ðjð �5˜˜gœlÐ*Ô+ð °Tð ÀdÈ3Äið ð ð ð ðð �U˜3 ¤Ð,Ô-ð °sð ÀDð ÐUYÐZ]ÔU^ð ð ð ð ð( 48Øð	";ð ";Øð";à
��W”\Ð!Ô
"ð";ð �u˜S '¤,Ð.Ô/Ô0ð";ð 
�#Œð	";ð ";ð ";ð ";ðJ Ø�S˜'œ,Ð&Ô'ð Ø27¸¸W¼\Ð8IÔ2Jð ØYaÐbeÔYfð à	ð ð  ð  ð  ð ÔØÔð(ð (Ð �d˜3 ˜8”nð ð ñ ð Ø�S˜'œ,Ð&Ô'ð Ø27¸¸W¼\Ð8IÔ2Jð ØYaÐbeÔYfð à	ð ð  ð  ð  ð Øðwð wÐ �T˜#˜x¨¨s°G´LÐ/@Ô)AÀ5ÈÈgÌlÐIZÔC[Ð]eÐfiÔ]jÐ(kÐmqÐ(qÔrÐrÔsð ð ñ ð
 ŒHØŒ9ØŒ9ð:ð :Ð ˜$˜s H¨S°"¨WÔ$5Ð5Ô6ð ð ñ ð ØØðFð FÐ �D˜˜e H¨S¤M°8¸C´=Ð$@ÔAÐAÔBð ð ñ ð(u˜E # w¤|Ð"3Ô4ð (u¸¸sÀHÈSÄMÐS[Ð\_ÔS`Ð?`Ô9að (uð (uð (uð (uðZ 37Ø!ð!!ð !!Ø�S˜'œ,Ð&Ô'ð!!à�e˜C ¤Ð-Ô.Ô/ð!!ð ð!!ð „\ð	!!ð !!ð !!ð !!ðL 37Ø!ð-.ð -.Ø�S˜'œ,Ð&Ô'ð-.à�e˜C ¤Ð-Ô.Ô/ð-.ð ð-.ð ˆ3�”ÐÔð	-.ð -.ð -.ð -.ðf 8<Ø37ØØ!ð<ð <Ø	ð<à˜˜gœlÐ*Ô+ð<ð ˜5  g¤lÐ!2Ô3Ô4ð<ð �u˜S '¤,Ð.Ô/Ô0ð	<ð
 
�#Œð<ð ð<ð 
ð<ð <ð <ð <ð(E˜hð E¨3ð Eð Eð Eð Eð €GˆC��eÑÔ€ð
 Ø*.Ø $ð	ð Øðà	�#Œðð ˜8 Aœ;Ô'ðð ˜”ð	ð
 ðð ð ð ð8!#ð !#˜˜s G¤LÐ0Ô1ð !#À3ð !#ÈrÌzð !#ð !#ð !#ð !#ðH˜œð ¨¬ð ð ð ð ð ð rC   