+
    QV-jmC  ã                   ó>  € ^ RI t ^ RIHtHt ^ RIHt ^ RIHtHtH	t	H
t
HtHtHt ^ RIt^ RIt^RIHt ^RIHt ^RIHt ^RIHtHtHt ^R	IHtHt ]'       d   ^ RIt^ R
I H!t! ^RI"H#t#  ! R R]4      t$] ! R R4      4       t%R R lt&R R lt'R R lt(RR R llt)R# )é    N)Ú	dataclassÚfield)ÚPath)ÚTYPE_CHECKINGÚAnyÚClassVarÚLiteralÚOptionalÚ	TypedDictÚUnion)Úconfig)ÚDownloadConfig)Ú
array_cast)Úis_local_pathÚis_remote_urlÚxopen)Úno_op_if_value_is_nullÚstring_to_dict©ÚVideoDecoder)ÚFeatureTypec                   ó,   a € ] tR t^t o V 3R ltRtV tR# )ÚExamplec                óR   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   # )é   ÚpathÚbytes)r
   Ústrr   )ÚformatÚ__classdict__s   "€Úh/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/datasets/features/video.pyÚ__annotate__ÚExample.__annotate__   s#   ø‡ ‚ Ù
‘3�-Ññ á‘E�?Ñò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r    s   @r!   r   r      s   ø‡ ‡ „ r$   r   c                   óF  a € ] tR t^t o RtRtRtRt^tRt	Rt
]! RRR7      tR	t]P                  ! R
]P                   ! 4       R]P"                  ! 4       /4      t]! R RRR7      tR tV 3R lR ltRV 3R lR lltV 3R lR ltV 3R lR ltRV 3R lR lltV 3R ltRtV tR# )ÚVideouô
  
Video [`Feature`] to read video data from a video file.

Input: The Video feature accepts as input:
- A `str`: Absolute path to the video file (i.e. random access is allowed).
- A `pathlib.Path`: path to the video file (i.e. random access is allowed).
- A `dict` with the keys:

    - `path`: String with relative path of the video file in a dataset repository.
    - `bytes`: Bytes of the video file.

  This is useful for parquet or webdataset files which embed video files.

- A `torchcodec.decoders.VideoDecoder`: torchcodec video decoder object.

Output: The Video features output data as `torchcodec.decoders.VideoDecoder` objects.

Args:
    decode (`bool`, defaults to `True`):
        Whether to decode the video data. If `False`,
        returns the underlying dictionary in the format `{"path": video_path, "bytes": video_bytes}`.
    stream_index (`int`, *optional*):
        The streaming index to use from the file. If `None` defaults to the "best" index.
    dimension_order (`str`, defaults to `NCHW`):
        The dimension order of the decoded frames.
        where N is the batch size, C is the number of channels,
        H is the height, and W is the width of the frames.
    num_ffmpeg_threads (`int`, defaults to `1`):
        The number of threads to use for decoding the video. (Recommended to keep this at 1)
    device (`str` or `torch.device`, defaults to `cpu`):
        The device to use for decoding the video.
    seek_mode (`str`, defaults to `exact`):
        Determines if frame access will be â€œexactâ€� or â€œapproximateâ€�.
        Exact guarantees that requesting frame i will always return frame i, but doing so requires an initial scan of the file.
        Approximate is faster as it avoids scanning the file, but less accurate as it uses the file's metadata to calculate where i probably is.
        read more [here](https://docs.pytorch.org/torchcodec/stable/generated_examples/approximate_mode.html#sphx-glr-generated-examples-approximate-mode-py)

Examples:

```py
>>> from datasets import Dataset, Video
>>> ds = Dataset.from_dict({"video":["path/to/Screen Recording.mov"]}).cast_column("video", Video())
>>> ds.features["video"]
Video(decode=True, id=None)
>>> ds[0]["video"]
<torchcodec.decoders._video_decoder.VideoDecoder object at 0x14a61e080>
>>> video = ds[0]["video"]
>>> video.get_frames_in_range(0, 10)
FrameBatch:
data (shape): torch.Size([10, 3, 50, 66])
pts_seconds: tensor([0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333, 0.4333,
        0.4333], dtype=torch.float64)
duration_seconds: tensor([0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167, 0.0167,
        0.0167], dtype=torch.float64)
>>> ds.cast_column('video', Video(decode=False))[0]["video]
{'bytes': None,
 'path': 'path/to/Screen Recording.mov'}
```
TNÚNCHWÚcpuÚexactF)ÚdefaultÚreprz torchcodec.decoders.VideoDecoderr   r   )r3   Úinitr4   c                ó   € V P                   # ©N)Úpa_type)Úselfs   &r!   Ú__call__ÚVideo.__call__f   s   € Ø�|‰|Ðr$   c                ó^   <€ V ^8„  d   QhRS[ S[S[S[S[S[P                  R3,          RS[/# )r   Úvaluer   Úreturn)r   r   r   Ú	bytearrayr   ÚnpÚndarray)r   r    s   "€r!   r"   ÚVideo.__annotate__i   s7   ø€ ÷ .Oñ .O¡E©#©u±iÁÉ"Ï*É*ÐVdÐ*dÕ$eð .OÑjqñ .Or$   c                ób  € Vf   \        R4      h\        P                  '       d   ^ RIHp MRp\        V\        4      '       d   \        P                  ! V4      p\        V\        4      '       d   RVRR/# \        V\        4      '       d   R\        VP                  4       4      RR/# \        V\        \        34      '       d   RRRV/# \        V\        P                  4      '       d   \        V4      # Ve   \        W4      '       d   \!        V4      # \        V\"        4      '       dn   VP%                  R4      VP%                  R4      rCVe,   \&        P(                  P+                  V4      '       d   RRRV/# Vf   Ve   RVRV/# \        RV R24      h\-        R\/        V4       24      h)	zãEncode example into a format for Arrow.

Args:
    value (`str`, `np.ndarray`, `bytes`, `bytearray`, `VideoDecoder` or `dict`):
        Data passed as input to Video feature.

Returns:
    `dict` with "path" and "bytes" fields
Nzvalue must be providedr   r   r   zTA video sample should have one of 'path' or 'bytes' but they are missing or None in Ú.z!Unsupported encode_example type: )Ú
ValueErrorr   ÚTORCHCODEC_AVAILABLEÚtorchcodec.decodersr   Ú
isinstanceÚlistr@   Úarrayr   r   Úabsoluter   r?   rA   Úencode_np_arrayÚencode_torchcodec_videoÚdictÚgetÚosr   ÚisfileÚ	TypeErrorÚtype)r9   r=   r   r   Úbytes_s   &&   r!   Úencode_exampleÚVideo.encode_examplei   s{  € ð Š=ÜÐ5Ó6Ð6ä×&×&Ð&Þ8àˆLä�eœT×"Ò"Ü—H’H˜U“OˆEä�eœS×!Ò!Ø˜E 7¨DÐ1Ð1Ü˜œt×$Ò$ØœC §¡Ó 0Ó1°7¸DÐAÐAÜ˜¤¤yÐ1×2Ò2Ø˜D '¨5Ð1Ð1Ü˜œrŸz™z×*Ò*ä" 5Ó)Ð)ØÒ%¬*°U×*IÒ*Iä*¨5Ó1Ð1Ü˜œt×$Ò$Ø Ÿ9™9 VÓ,¨e¯i©i¸Ó.@�&ØÒ¤B§G¡G§N¡N°4×$8Ò$8à  v¨tÐ4Ð4ØÒ# tÒ'7à ¨°Ð6Ð6ä ØjÐkpÐjqÐqrÐsóð ô Ð?ÄÀUÃ¸}ÐMÓNÐNr$   c          	      ó|   <€ V ^8„  d   QhRS[ S[S[3,          RS[S[S[S[ S[S[3,          3,          ,          RR/# )r   r=   Útoken_per_repo_idr>   r   )r   r   r   r
   rN   Úbool)r   r    s   "€r!   r"   rB   ™   sO   ø€ ÷ Gñ Gá‘S™'�\Õ"ðGñ $¡D©©e±D¹#°IÕ.>Ð)>Õ$?Õ@ðGð 
ñ	Gr$   c           	     óî  € V P                   '       g   \        R4      h\        P                  '       d   ^ RIHp M\        R4      hVf   / p\        V\        4      '       d   TRrTMVR,          VR,          rTVf    Vf   \        RV R24      h\        V4      '       dB   V! VV P                  V P                  V P                  V P                  V P                  R	7      pMz\!        VVV P                  V P                  V P                  V P                  R
7      pM@V! VV P                  V P                  V P                  V P                  V P                  R	7      pRVRV/Vn        WFP$                  n        V# )a  Decode example video file into video data.

Args:
    value (`str` or `dict`):
        A string with the absolute video file path, a dictionary with
        keys:

        - `path`: String with absolute or relative video file path.
        - `bytes`: The bytes of the video file.
    token_per_repo_id (`dict`, *optional*):
        To access and decode
        video files from private repositories on the Hub, you can pass
        a dictionary repo_id (`str`) -> token (`bool` or `str`).

Returns:
    `torchcodec.decoders.VideoDecoder`
zMDecoding is disabled for this feature. Please use Video(decode=True) instead.r   z8To support decoding videos, please install 'torchcodec'.Nr   r   zBA video should have one of 'path' or 'bytes' but both are None in rD   ©Ústream_indexÚdimension_orderÚnum_ffmpeg_threadsÚdeviceÚ	seek_mode)rX   r]   r^   r_   r`   )ÚdecodeÚRuntimeErrorr   rF   rG   r   ÚImportErrorrH   r   rE   r   r\   r]   r^   r_   r`   Úhf_video_readerÚ_hf_encodedÚmetadatar   )r9   r=   rX   r   r   rT   Úvideos   &&&    r!   Údecode_exampleÚVideo.decode_example™   sT  € ð, �{�{ˆ{ÜÐnÓoÐoä×&×&Ð&Þ8ô ÐXÓYÐYàÒ$Ø "Ðä�eœS×!Ò!Ø  $‘&à  �=¨%°­.�&àŠ>ØŠ|Ü Ð#eÐfkÐelÐlmÐ!nÓoÐoÜ˜t×$Ò$Ù$ØØ!%×!2Ñ!2Ø$(×$8Ñ$8Ø'+×'>Ñ'>ØŸ;™;Ø"Ÿn™nô‘ô (ØØ&7Ø$(×$8Ñ$8Ø'+×'>Ñ'>ØŸ;™;Ø"Ÿn™nô‘ñ !ØØ!×.Ñ.Ø $× 4Ñ 4Ø#'×#:Ñ#:Ø—{‘{ØŸ.™.ôˆEð $ T¨7°FÐ;ˆÔØ"�‰ÔØˆr$   c                óH   <€ V ^8„  d   QhRS[ RS[S[R3,          3,          /# )r   r>   r   )r   rN   r   )r   r    s   "€r!   r"   rB   â   s(   ø€ ÷ 
ñ 
™˜}©d±3¸Ð3EÕ.FÐFÕGñ 
r$   c                óZ   € ^RI Hp V P                  '       d   V # RV! R4      RV! R4      /# )zfIf in the decodable state, return the feature itself, otherwise flatten the feature into a dictionary.)ÚValuer   Úbinaryr   Ústring)Úfeaturesrl   ra   )r9   rl   s   & r!   ÚflattenÚVideo.flattenâ   s8   € å#ð �{�{ˆ{ð ð	
ð ™˜x›Ø™˜h›ðð	
r$   c                ó�   <€ V ^8„  d   QhRS[ S[P                  S[P                  S[P                  3,          RS[P                  /# )r   Ústorager>   )r   ÚpaÚStringArrayÚStructArrayÚ	ListArray)r   r    s   "€r!   r"   rB   ï   s:   ø€ ÷ 21ñ 21¡E©"¯.©.¹"¿.¹.É"Ï,É,Ð*VÕ$Wð 21Ñ\^×\jÑ\jñ 21r$   c           
     óÖ  € \         P                  P                  VP                  4      '       dr   \         P                  ! R.\        V4      ,          \         P                  ! 4       R7      p\         P                  P                  W!.RR.VP                  4       R7      pEM°\         P                  P                  VP                  4      '       d‘   \        V\         P                  ! 4       4      p\         P                  ! R.\        V4      ,          \         P                  ! 4       R7      p\         P                  P                  W.RR.VP                  4       R7      pEMñ\         P                  P                  VP                  4      '       dr   \         P                  ! R.\        V4      ,          \         P                  ! 4       R7      p\         P                  P                  W.RR.VP                  4       R7      pEMQ\         P                  P                  VP                  4      '       Ed   VP                  P                  R4      ^ 8¼  d   VP!                  R4      pM<\         P                  ! R.\        V4      ,          \         P                  ! 4       R7      pVP                  P                  R4      ^ 8¼  d   VP!                  R4      pM<\         P                  ! R.\        V4      ,          \         P                  ! 4       R7      p\         P                  P                  W#.RR.VP                  4       R7      pEM\         P                  P#                  VP                  4      '       dâ   \         P                  ! VP%                  4        Uu. uF.  qDe'   \'        \(        P                  ! V4      4      R,          MRNK0  	  up\         P                  ! 4       R7      p\         P                  ! R.\        V4      ,          \         P                  ! 4       R7      p\         P                  P                  W#.RR.VP                  4       R7      p\        WP*                  4      # u upi )a·  Cast an Arrow array to the Video arrow storage type.
The Arrow types that can be converted to the Video pyarrow storage type are:

- `pa.string()` - it must contain the "path" data
- `pa.binary()` - it must contain the video bytes
- `pa.struct({"bytes": pa.binary()})`
- `pa.struct({"path": pa.string()})`
- `pa.struct({"bytes": pa.binary(), "path": pa.string()})`  - order doesn't matter
- `pa.list(*)` - it must contain the video array data

Args:
    storage (`Union[pa.StringArray, pa.StructArray, pa.ListArray]`):
        PyArrow array to cast.

Returns:
    `pa.StructArray`: Array in the Video arrow storage type, that is
        `pa.struct({"bytes": pa.binary(), "path": pa.string()})`.
N©rS   r   r   ©Úmask)rt   ÚtypesÚ	is_stringrS   rJ   Úlenrm   rv   Úfrom_arraysÚis_nullÚis_large_binaryr   rn   Ú	is_binaryÚ	is_structÚget_field_indexr   Úis_listÚ	to_pylistrL   r@   r8   )r9   rs   Úbytes_arrayÚ
path_arrayÚarrs   &&   r!   Úcast_storageÚVideo.cast_storageï   sù  € ô& �8‰8×Ñ˜gŸl™l×+Ò+ÜŸ(š( D 6¬C°«LÕ#8¼r¿yºy»{ÔKˆKÜ—n‘n×0Ñ0°+Ð1GÈ'ÐSYÐIZÐah×apÑapÓarÐ0ÓsŠGÜ�X‰X×%Ñ% g§l¡l×3Ò3Ü ØœŸš›óˆGô Ÿš 4 &¬3¨w«<Õ"7¼b¿iºi»kÔJˆJÜ—n‘n×0Ñ0°'Ð1FÈÐRXÐHYÐ`g×`oÑ`oÓ`qÐ0ÓrŠGÜ�X‰X×Ñ §¡×-Ò-ÜŸš 4 &¬3¨w«<Õ"7¼b¿iºi»kÔJˆJÜ—n‘n×0Ñ0°'Ð1FÈÐRXÐHYÐ`g×`oÑ`oÓ`qÐ0ÓrŠGÜ�X‰X×Ñ §¡×-Ó-Ø�|‰|×+Ñ+¨GÓ4¸Ô9Ø%Ÿm™m¨GÓ4‘ä Ÿhšh¨ v´°G³Õ'<Ä2Ç9Â9Ã;ÔO�Ø�|‰|×+Ñ+¨FÓ3°qÔ8Ø$Ÿ]™]¨6Ó2‘
äŸXšX t f¬s°7«|Õ&;Ä"Ç)Â)Ã+ÔN�
Ü—n‘n×0Ñ0°+Ð1JÈWÐV\ÐL]Ðdk×dsÑdsÓduÐ0ÓvŠGÜ�X‰X×Ñ˜gŸl™l×+Ò+ÜŸ(š(Øah×arÑarÔatÓuÑatÐZ]ºO”¤§¢¨#£Ó/°Ö8ÐQUÒUÑatÑuÜ—Y’Y“[ôˆKô Ÿš 4 &¬3¨w«<Õ"7¼b¿iºi»kÔJˆJÜ—n‘n×0Ñ0ØÐ)¨G°VÐ+<À;×CVÑCVÓCXð 1ó ˆGô ˜'§<¡<Ó0Ð0ùò vs   Î4Q&c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   rs   Úlocal_filesÚremote_filesr>   )rt   rv   rY   )r   r    s   "€r!   r"   rB   #  s;   ø€ ÷ C1ñ C1Ù—~‘~ðC1ÙLPðC1ÙgkðC1á	�‰ñC1r$   c           	     ó�  a€ Sf   / o\         V3R l4       p\        P                  ! VP                  4        Uu. uFl  pVed   VR,          fP   V'       d   \	        VR,          4      '       g!   V'       d(   \        VR,          4      '       d   V! VR,          4      M
VR,          MRNKn  	  up\        P                  ! 4       R7      p\        P                  ! VP                  R4      P                  4        Uu. uF\  pVeT   V'       d   \	        V4      '       g   V'       d1   \        V4      '       d    \        P                  P                  V4      MTMRNK^  	  up\        P                  ! 4       R7      p	\        P                  P                  Wy.RR.VP                  4       R7      p\        WP                   4      # u upi u upi )a·  Embed image files into the Arrow array.

Args:
    storage (`pa.StructArray`):
        PyArrow array to embed.
    token_per_repo_id (`dict`, optional):
        Dictionary repo_id -> token to fetch the files bytes.
    local_files (`bool`, defaults to `True`)
        Whether to embed local files data in the array

        <Added version="4.8.5"/>
    remote_files (`bool`, defaults to `True`)
        Whether to embed remote files data in the array.
        E.g. files with paths that start with hf:// or https://

        <Added version="4.8.5"/>

Returns:
    `pa.StructArray`: Array in the Video arrow storage type, that is
        `pa.struct({"bytes": pa.binary(), "path": pa.string()})`.
Nc                 ó²  <€ V P                  R 4      R,          pVP                  \        P                  4      '       d   \        P                  M\        P
                  p\        W4      pVe   SP                  VR,          4      MRp\        VR7      p\        V RVR7      ;_uu_ 4       pVP                  4       uuRRR4       #   + '       g   i     R# ; i)ú::NÚrepo_id©ÚtokenÚrb©Údownload_configéÿÿÿÿ)ÚsplitÚ
startswithr   ÚHF_ENDPOINTÚHUB_DATASETS_URLÚHUB_DATASETS_HFFS_URLr   rO   r   r   Úread)r   Ú
source_urlÚpatternÚsource_url_fieldsr”   r—   ÚfrX   s   &      €r!   Úpath_to_bytesÚ*Video.embed_storage.<locals>.path_to_bytes>  s£   ø€ àŸ™ DÓ)¨"Õ-ˆJà+5×+@Ñ+@Ä×ASÑAS×+TÒ+T”×'Ò'ÔZ`×ZvÑZvð ô !/¨zÓ CÐØK\ÒKhÐ%×)Ñ)Ð*;¸IÕ*FÔGÐnrˆEÜ,°5Ô9ˆOÜ�t˜T°?×CÕCÀqØ—v‘v“x÷ D×C×CÓCús   Â*CÃC	r   r   ry   rz   )r   rt   rJ   r†   r   r   rm   r   rP   r   Úbasenamern   rv   r   r€   r   r8   )
r9   rs   rX   r�   rŽ   r£   Úxr‡   r   rˆ   s
   &&f&&     r!   Úembed_storageÚVideo.embed_storage#  s”  ø€ ð0 Ò$Ø "Ðä	ô		 ó 
 ð		 ô —h’hð !×*Ñ*Ô,ó
ñ -�Að ’=ð	 ˜•zÒ)ß%¬-¸¸&½	×*BÒ*BÏÔYfÐghÐioÕgp×YqÒYqñ " ! F¥)Ô,ð ˜7žð òñ -ñ
ô —’“ô
ˆô —X’Xð $ŸM™M¨&Ó1×;Ñ;Ô=ó	ñ >�Dð Ò#÷ $¬°d×(;Ò(;ÇÔR_Ð`d×ReÒReô —G‘G×$Ñ$ TÔ*áð òñ >ñ	ô —’“ô
ˆ
ô —.‘.×,Ñ,¨kÐ-FÈÐRXÐHYÐ`g×`oÑ`oÓ`qÐ,ÓrˆÜ˜'§<¡<Ó0Ð0ùò7
ùò	s#   ¹F>ÁF>Á56F>Ã8GÄ	GÄ"8Gc                ó  <€ V ^8„  d   Qh/ S[ ;R&   S[S[,          ;R&   S[R,          ;R&   S[;R&   S[S[S[R3,          ,          ;R&   S[R,          ;R&   S[S[,          ;R&   S[S[,          ;R	&   S[S[,          ;R
&   S[;R&   # )r   ra   r\   r]   r^   útorch.devicer_   r`   ÚidÚdtyper8   Ú_type©r0   ÚNHWC©r2   Úapproximate)rY   r
   Úintr	   r   r   r   r   )r   r    s   "€r!   r"   rB      sÅ   ø‡ ‚ ñ| Ññ} ñ~ ™3•-Ñ&ñ ñ@ ˜^Õ,Ñ5ñA ñB ÑñC ñD ‘U™3 Ð.Õ/Õ0Ñ8ñE ñF Ð-Õ.Ñ8ñG ñH 	‘�Ñ7ñI ñL ‘C�=Ñ=ñM ñN ‘c�]ÑSñO ñP Ñ?òQ r$   r%   r7   )NTT)r&   r'   r(   r)   Ú__doc__ra   r\   r]   r^   r_   r`   r   r«   r¬   rt   Ústructrm   rn   r8   r­   r:   rU   rh   rp   rŠ   r§   r*   r+   r,   r-   s   @r!   r/   r/      s¶   ø‡ € ñ:ðx €FØ"&€LØ/5€OØÐØ38€FØ18€IÙ d°Ô7€Bà=€EØŸYšY¨°·²³¸fÀbÇiÂiÃkÐ'RÓS€GÙ˜w¨U¸Ô?€Eò÷.Oð .O÷`Gò G÷R
ð 
÷21ð 21÷hC1ò C1÷O ƒ r$   r/   c                ó(   € V ^8„  d   QhRRR\         /# ©r   rg   r   r>   )r   )r   s   "r!   r"   r"   i  s   € ÷  ñ  ˜.ð  ¬Uñ  r$   c                ó   € \        4       h)zOConvert a torchcodec Video object to bytes using native compression if possible©ÚNotImplementedError©rg   s   &r!   Úvideo_to_bytesr»   i  s   € ä
Ó
Ðr$   c                ó(   € V ^8„  d   QhRRR\         /# r¶   )r   )r   s   "r!   r"   r"   n  s   € ÷ 
ñ 
 >ð 
´gñ 
r$   c                 óT   € \        V R 4      '       d   V P                  # \        R4      h)re   zYEncoding a VideoDecoder that doesn't come from datasets.Video.decode() is not implemented)Úhasattrre   r¹   rº   s   &r!   rM   rM   n  s+   € Üˆu�m×$Ò$Ø× Ñ Ð ä!Øgó
ð 	
r$   c                óD   € V ^8„  d   QhR\         P                  R\        /# )r   rJ   r>   )r@   rA   r   )r   s   "r!   r"   r"   w  s   € ÷  ñ  œ2Ÿ:™:ð  ¬'ñ  r$   c                 ó   € \        4       hr7   r¸   )rJ   s   &r!   rL   rL   w  s   € Ü
Ó
Ðr$   c                ó  € V ^8„  d   QhR\         R\        \        \         \        \        \         3,          3,          ,          R\         R\
        R,          R\        R\        \        \         R3,          ,          R\
        R,          R	R
/# )r   r   rX   Ústreamr]   r^   r_   rª   r`   r>   r   r®   r°   )r   r
   rN   r   rY   r	   r²   )r   s   "r!   r"   r"   €  sŠ   € ÷ ñ Ü
ðä¤¤S¬%´´c°	Õ*:Ð%:Õ ;Õ<ðô ðô ˜^Õ,ð	ô
 ðô ”Uœ3 Ð.Õ/Õ0ðô Ð-Õ.ðð ñr$   c           	      óþ  € ^ RI Hp Vf   / pV P                  R4      R
,          pVP                  \        P
                  4      '       d   \        P                  M\        P                  p	\        W‰4      p
V
e   VP                  V
R,          4      MRp\        VR7      p\        V RVR7      p\        VP                  R4      4      ^8X  d   ^ M \        VP                  R4      ^,          4      pV! VVVVVVR	7      pV# )r   r   Nr‘   r’   r“   r•   r–   Ú:r[   r˜   )rG   r   r™   rš   r   r›   rœ   r�   r   rO   r   r   r~   r²   )r   rX   rÂ   r]   r^   r_   r`   r   rŸ   r    r¡   r”   r—   r¢   Ú	stream_idÚvds   &&&&&&&         r!   rd   rd   €  sè   € õ 1ð Ò ØÐØ—‘˜DÓ! "Õ%€JØ)3×)>Ñ)>¼v×?QÑ?Q×)RÒ)RŒf×%Ò%ÔX^×XtÑXt€GÜ& zÓ;ÐØCTÒC`Ð×!Ñ!Ð"3°IÕ">Ô?Ðfj€EÜ$¨5Ô1€OÜˆd�D¨/Ô:€Aô ˜Ÿ™ cÓ*Ó+¨qÔ0‘´c¸&¿,¹,ÀsÓ:KÈAÕ:NÓ6O€IÙ	Ø	ØØ'Ø-ØØô
€Bð €Ir$   )Nrg   r0   é   r1   r2   )*rP   Údataclassesr   r   Úpathlibr   Útypingr   r   r   r	   r
   r   r   Únumpyr@   Úpyarrowrt   Ú r   Údownload.download_configr   Útabler   Úutils.file_utilsr   r   r   Úutils.py_utilsr   r   ÚtorchrG   r   ro   r   r   r/   r»   rM   rL   rd   r%   r$   r!   Ú<module>rÓ      s   ðÛ 	ß (Ý ß T× TÑ Tã Û å Ý 5Ý ß BÑ Bß C÷ ÛÝ0å%ôˆiô ð
 ÷I1ð I1ó ðI1õX
 õ

õ ÷ñ r$   