§
    g˜ºh@¾  ã                   ó  — 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 d dlm	Z	 d dl
mZmZ d dlZd dlmZ 	 d dlZn# e$ r	 esd dlZY nw xY wd dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZmZm Z   ej!        d¦  «        Z" G d„ de#¦  «        Z$d„ Z%d„ Z&d„ Z' G d„ dej(        j)        ¦  «        Z* G d„ dej(        j+        ¦  «        Z,d„ Z- G d„ dej(        j.        ¦  «        Z/ G d„ de¦  «        Z0 G d„ de¦  «        Z1dS )é    N)Ú	lru_cache)Úchain)ÚTYPE_CHECKINGÚLiteral)ÚAbstractBufferedFile)ÚAsyncFileSystem)ÚDEFAULT_CALLBACK)Ú
filesystemÚopenÚsplit_protocol)ÚAsyncFileSystemWrapper)Ú
isfilelikeÚmerge_offset_rangesÚother_pathszfsspec.referencec                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚReferenceNotReachablec                 óP   •—  t          ¦   «         j        |Ž  || _        || _        d S ©N)ÚsuperÚ__init__Ú	referenceÚtarget)Úselfr   r   ÚargsÚ	__class__s       €úh/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/fsspec/implementations/reference.pyr   zReferenceNotReachable.__init__   s)   ø€ Ø�‰ŒÔ˜$ÐÐØ"ˆŒØˆŒˆˆó    c                 ó&   — d| j         › d| j        › �S )NzReference "z" failed to fetch target )r   r   ©r   s    r   Ú__str__zReferenceNotReachable.__str__$   s   € ØS˜Tœ^ÐSÐSÀdÄkÐSÐSÐSr   )Ú__name__Ú
__module__Ú__qualname__r   r    Ú__classcell__©r   s   @r   r   r      sN   ø€ € € € € ðð ð ð ð ð
Tð Tð Tð Tð Tð Tð Tr   r   c                 ó^   — t          t          |                      ¦   «         ¦  «        ¦  «        S r   )ÚnextÚiterÚvalues)Úds    r   Ú_firstr+   (   s    € Ý•�Q—X’X‘Z”ZÑ Ô Ñ!Ô!Ð!r   c                 óø   — |                      | ¦  «        }t          |t          t          f¦  «        rFt          |d         t          ¦  «        r-|d         rt          |d         ¦  «        d         n|d         S d S d S ©Nr   )ÚgetÚ
isinstanceÚlistÚtupleÚstrr   )ÚpathÚ
referencesÚrefs      r   Ú_prot_in_referencesr6   ,   s{   € Ø
�.Š.˜Ñ
Ô
€CÝ�#��e�}Ñ%Ô%ð ?­*°S¸´V½SÑ*AÔ*Að ?Ø,/°¬FÐ>�~˜c !œfÑ%Ô% aÔ(Ð(¸¸A¼Ð>ð?ð ?ð ?ð ?r   c                 óÖ   — t          | t          ¦  «        rt          | |¦  «        | giS i }| D ];}t          ||¦  «        }|                     |g ¦  «                             |¦  «         Œ<|S r   )r/   r2   r6   Ú
setdefaultÚappend)Úpathsr4   Úoutr3   Úprotocols        r   Ú_protocol_groupsr=   2   sy   € Ý�%�ÑÔð AÝ# E¨:Ñ6Ô6¸¸Ð@Ð@Ø
€CØð 2ð 2ˆÝ& t¨ZÑ8Ô8ˆØ�Š�x Ñ$Ô$×+Ò+¨DÑ1Ô1Ð1Ð1Ø€Jr   c                   ó   — e Zd Zd„ ZdS )ÚRefsValuesViewc              #   óÜ  K  — | j         j                             ¦   «         D ]*}t          j        |¦  «                             ¦   «         V — Œ+| j         j                             ¦   «         E d {V —† | j                              ¦   «         D ]b}| j                              |¦  «        }t          |¦  «        dk    r| j         |dz            V — ŒB| j          
                    |¦  «        E d {V —† Œcd S )Nr   ú/0)Ú_mappingÚ	zmetadatar)   ÚjsonÚdumpsÚencodeÚ_itemsÚlistdirÚ_get_chunk_sizesÚlenÚ_generate_all_records)r   ÚvalÚfieldÚchunk_sizess       r   Ú__iter__zRefsValuesView.__iter__=   s
  è è € Ø”=Ô*×1Ò1Ñ3Ô3ð 	+ð 	+ˆCÝ”*˜S‘/”/×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ø”=Ô'×.Ò.Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø”]×*Ò*Ñ,Ô,ð 	Bð 	BˆEØœ-×8Ò8¸Ñ?Ô?ˆKÝ�;ÑÔ 1Ò$Ð$Ø”m E¨D¡LÔ1Ð1Ð1Ð1ØØ”}×:Ò:¸5ÑAÔAÐAÐAÐAÐAÐAÐAÐAÐAð	Bð 	Br   N©r!   r"   r#   rO   © r   r   r?   r?   <   s(   € € € € € ð	Bð 	Bð 	Bð 	Bð 	Br   r?   c                   ó   — e Zd Zd„ ZdS )ÚRefsItemsViewc                 ó~   — t          | j                             ¦   «         | j                             ¦   «         ¦  «        S r   )ÚziprB   Úkeysr)   r   s    r   rO   zRefsItemsView.__iter__J   s.   € Ý�4”=×%Ò%Ñ'Ô'¨¬×)=Ò)=Ñ)?Ô)?Ñ@Ô@Ð@r   NrP   rQ   r   r   rS   rS   I   s(   € € € € € ðAð Að Að Að Ar   rS   c                 óx   — d}d}t          | d d d…         |d d d…         ¦  «        D ]\  }}|||z  z  }||z  }Œ|S )Nr   é   éÿÿÿÿ)rU   )ÚidxÚsizesrL   ÚmultÚiÚss         r   Úravel_multi_indexr_   N   sZ   € Ø
€CØ€DÝ�C˜˜˜"˜”I˜u T T r Tœ{Ñ+Ô+ð ð ‰ˆˆ1Øˆq�4‰x‰ˆØ�‰	ˆˆØ€Jr   c                   óV  — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Z	 	 	 	 	 d&ded	         fd
„Zd„ Z	d„ Z
ed'd„¦   «         Z e¦   «         d„ ¦   «         Zd(d„Zd„ Z ed¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd)d „Zd)d!„Zd"„ Zd#„ Zd$„ Z d%„ Z!dS )*ÚLazyReferenceMapperao  This interface can be used to read/write references from Parquet stores.
    It is not intended for other types of references.
    It can be used with Kerchunk's MultiZarrToZarr method to combine
    references into a parquet store.
    Examples of this use-case can be found here:
    https://fsspec.github.io/kerchunk/advanced.html?highlight=parquet#parquet-storagec                 ó   — dd l }|S r-   )Únumpy)r   Únps     r   rd   zLazyReferenceMapper.np`   s   € àÐÐÐàˆ	r   c                 ó   — dd l }|S r-   )Úpandas)r   Úpds     r   rg   zLazyReferenceMapper.pdf   s   € àÐÐÐàˆ	r   Né€   é
   ÚfastparquetÚengine)rj   Úpyarrowc                 óJ  — || _         i | _        || _        || _        || _        | j         dz   | _        |€t          j        d¦  «        n|| _        | j         	                    |p| j         ¦  «        | _
        ddlm} | j        dk    r |d¦  «        €t          d¦  «        ‚dS dS )aà  

        This instance will be writable, storing changes in memory until full partitions
        are accumulated or .flush() is called.

        To create an empty lazy store, use .create()

        Parameters
        ----------
        root : str
            Root of parquet store
        fs : fsspec.AbstractFileSystem
            fsspec filesystem object, default is local filesystem.
        cache_size : int, default=128
            Maximum size of LRU cache, where cache_size*record_size denotes
            the total number of references that can be loaded in memory at once.
        categorical_threshold : int
            Encode urls as pandas.Categorical to reduce memory footprint if the ratio
            of the number of unique urls to total number of refs for each variable
            is greater than or equal to this number. (default 10)
        engine: Literal["fastparquet","pyarrow"]
            Engine choice for reading parquet files. (default is "fastparquet")
        z/{field}/refs.{record}.parqNÚfiler   )Ú	find_specrl   z)engine choice `pyarrow` is not installed.)ÚrootrN   Ú
cat_threshrk   Ú
cache_sizeÚurlÚfsspecr
   ÚfsÚunstrip_protocolÚout_rootÚimportlib.utilro   ÚImportError)r   rp   ru   rw   rr   Úcategorical_thresholdrk   ro   s           r   r   zLazyReferenceMapper.__init__l   s¼   € ðB ˆŒ	ØˆÔØ/ˆŒØˆŒØ$ˆŒØ”9Ð<Ñ<ˆŒà/1¨z•&Ô# FÑ+Ô+Ð+¸rˆŒØœ×0Ò0°Ð1F¸T¼YÑGÔGˆŒà,Ð,Ð,Ð,Ð,Ð,àŒ;˜)Ò#Ð#¨	¨	°)Ñ(<Ô(<Ð(DÝÐIÑJÔJÐJð $Ð#Ð(DÐ(Dr   c                 ój   — |dv r!|                       ¦   «          | j        |         S t          |¦  «        ‚)N)rG   Úrecord_sizerC   )ÚsetupÚ__dict__ÚAttributeError©r   Úitems     r   Ú__getattr__zLazyReferenceMapper.__getattr__œ   s6   € ØÐ9Ð9Ð9Ø�JŠJ‰LŒLˆLà”= Ô&Ð&Ý˜TÑ"Ô"Ð"r   c                 óN  ‡ — i ‰ _         ‰ j                             d                     ‰ j        dg¦  «        ¦  «        ‰ j         d<   t          j        ‰ j         d         ¦  «        }|d         ‰ _        |d         ‰ _        t          ‰ j
        ¬¦  «        ˆ fd„¦   «         }|‰ _        d S )Nú/ú
.zmetadatar|   Úmetadata)Úmaxsizec                 ó*  •‡— ‰j                              | |¬¦  «        }t          j        ‰j                             |¦  «        ¦  «        }	 ‰j                             |‰j        ¬¦  «        Šˆfd„‰j	        D ¦   «         }n# t          $ r d}Y nw xY w|S )zcached parquet file loader)rM   Úrecord)rk   c                 óF   •— i | ]}|‰|                               ¦   «         “ŒS rQ   )Úto_numpy)Ú.0ÚcÚdfs     €r   ú
<dictcomp>z@LazyReferenceMapper.setup.<locals>.open_refs.<locals>.<dictcomp>´   s)   ø€ Ð@Ð@Ð@°˜˜2˜aœ5Ÿ>š>Ñ+Ô+Ð@Ð@Ð@r   N)rs   ÚformatÚioÚBytesIOru   Úcat_filerg   Úread_parquetrk   ÚcolumnsÚOSError)rM   r‰   r3   ÚdataÚrefsrŽ   r   s        @€r   Ú	open_refsz,LazyReferenceMapper.setup.<locals>.open_refs­   s£   øø€ ð ”8—?’?¨°v�?Ñ>Ô>ˆDÝ”:˜dœg×.Ò.¨tÑ4Ô4Ñ5Ô5ˆDðØ”W×)Ò)¨$°t´{Ð)ÑCÔC�Ø@Ð@Ð@Ð@°R´ZÐ@Ñ@Ô@��øÝð ð ð Ø���ðøøøàˆKs   Á4B ÂBÂB)rG   ru   r“   Újoinrp   rD   Úloadsr|   rC   r   rr   r™   )r   Úmetr™   s   `  r   r}   zLazyReferenceMapper.setup£   s®   ø€ ØˆŒØ$(¤G×$4Ò$4Ø�HŠH�d”i Ð.Ñ/Ô/ñ%
ô %
ˆŒ�LÑ!õ Œj˜œ \Ô2Ñ3Ô3ˆØ˜}Ô-ˆÔØ˜ZœˆŒõ 
˜4œ?Ð	+Ñ	+Ô	+ð		ð 		ð 		ð 		ñ 
,Ô	+ð		ð #ˆŒˆˆr   é'  c                 óˆ  — i |dœ}|€t          j        j        | fi |pi ¤Ž\  }} |                     | ¦  «        r|                     | d¬¦  «         |                     | d¬¦  «         |                     d                     | dg¦  «        t          j	        |¦  «         
                    ¦   «         ¦  «         t          | |fi |¤ŽS )aJ  Make empty parquet reference set

        First deletes the contents of the given directory, if it exists.

        Parameters
        ----------
        root: str
            Directory to contain the output; will be created
        storage_options: dict | None
            For making the filesystem to use for writing is fs is None
        fs: FileSystem | None
            Filesystem for writing
        record_size: int
            Number of references per parquet file
        kwargs: passed to __init__

        Returns
        -------
        LazyReferenceMapper instance
        ©r†   r|   NT©Ú	recursive©Úexist_okr„   r…   )rt   ÚcoreÚ	url_to_fsÚexistsÚrmÚmakedirsÚpiperš   rD   rE   rF   ra   )rp   Ústorage_optionsru   r|   Úkwargsrœ   s         r   ÚcreatezLazyReferenceMapper.create»   sÈ   € ð, ¨kÐ:Ð:ˆØˆ:Ý”{Ô,¨TÐMÐM°oÐ6KÈÐMÐM‰HˆB�Ø�9Š9�T‰?Œ?ð 	(Ø�EŠE�$ $ˆEÑ'Ô'Ð'Ø
�Š�D 4ˆÑ(Ô(Ð(Ø
�Š�—’˜$ Ð-Ñ.Ô.µ´
¸3±´×0FÒ0FÑ0HÔ0HÑIÔIÐIÝ" 4¨Ð6Ð6¨vÐ6Ð6Ð6r   c                 óB   — d„ | j         D ¦   «         }t          |¦  «        S )zList top-level directoriesc              3   óx   K  — | ]5}|                      d ¦  «        °|                     dd¦  «        d         V — Œ6dS )ú.zr„   rX   r   N)Ú
startswithÚrsplit©rŒ   Úps     r   ú	<genexpr>z.LazyReferenceMapper.listdir.<locals>.<genexpr>Ý   sG   è è € ÐVÐV¨À1Ç<Â<ÐPTÑCUÔCUÐV�—’˜˜aÑ Ô  Ô#ÐVÐVÐVÐVÐVÐVr   )rC   Úset)r   Údirss     r   rH   zLazyReferenceMapper.listdirÚ   s&   € ð WÐV¨T¬^ÐVÑVÔVˆÝ�4‰yŒyÐr   Ú Tc                 ó  ‡ ‡‡— ‰                      d¦  «        Š‰r‰dz   ndŠ‰                      ¦   «         }ˆfd„|D ¦   «         }|r“ˆfd„t          dgd„ ‰ j        D ¦   «         d„ ‰ j        D ¦   «         ¦  «        D ¦   «         }|du r$|                     |¦  «         t          |¦  «        S d	„ |D ¦   «         }ˆ fd
„|D ¦   «         }t          ||z   d„ ¬¦  «        S ‰}t          ˆfd„‰ j        D ¦   «         ˆfd„‰ j        D ¦   «         z   ¦  «        }ˆ fd„|D ¦   «         }‰                      |¦  «        }	|du rt          |¦  «        t          |	¦  «        z   S ‰  
                    |¦  «        }
d„ t          |	|
¦  «        D ¦   «         }||z   S )zShortcut file listingsr„   r·   c                 ól   •— g | ]0}|                      ‰¦  «        rd |                     ‰¦  «        v¯.|‘Œ1S ©r„   ©r°   Úlstrip)rŒ   r*   Úpathdashs     €r   ú
<listcomp>z*LazyReferenceMapper.ls.<locals>.<listcomp>å   sP   ø€ ð 
ð 
ð 
àØ�|Š|˜HÑ%Ô%ð
ð +.°Q·X²X¸hÑ5GÔ5GÐ*GÐ*Gð à*GÐ*GÐ*Gr   c                 ól   •— h | ]0}|                      ‰¦  «        rd |                     ‰¦  «        v¯.|’Œ1S rº   r»   )rŒ   Úfr½   s     €r   ú	<setcomp>z)LazyReferenceMapper.ls.<locals>.<setcomp>ë   sU   ø€ ð ð ð àð
 —<’< Ñ)Ô)ðð /2¸¿ºÀ(Ñ9KÔ9KÐ.KÐ.Kð ð /LÐ.KÐ.Kr   r…   c              3   ó   K  — | ]}|V — Œd S r   rQ   ©rŒ   Únames     r   r´   z)LazyReferenceMapper.ls.<locals>.<genexpr>ï   s"   è è € Ð5Ð5˜d�TÐ5Ð5Ð5Ð5Ð5Ð5r   c              3   ó   K  — | ]}|V — Œd S r   rQ   rÃ   s     r   r´   z)LazyReferenceMapper.ls.<locals>.<genexpr>ð   s"   è è € Ð2Ð2˜d�TÐ2Ð2Ð2Ð2Ð2Ð2r   Fc                 ó   — g | ]}|d ddœ‘Œ	S )Ú	directoryr   ©rÄ   ÚtypeÚsizerQ   rÃ   s     r   r¾   z*LazyReferenceMapper.ls.<locals>.<listcomp>÷   s"   € ÐWÐWÐWÈ$ ¨kÀ1ÐEÐEÐWÐWÐWr   c           
      óœ   •— g | ]H}|d t          |‰j        v rt          j        ‰j        |         ¦  «        n‰j        |         ¦  «        dœ‘ŒIS ©rn   rÈ   ©rJ   rC   rD   rE   rG   ©rŒ   rÄ   r   s     €r   r¾   z*LazyReferenceMapper.ls.<locals>.<listcomp>ø   su   ø€ ð ð ð ð ð !Ø"Ýà 4¤>Ð1Ð1õ œ
 4¤>°$Ô#7Ñ8Ô8Ð8à!œ[¨Ô.ñô ðð ðð ð r   c                 ó   — | d         S )NrÄ   rQ   )r^   s    r   ú<lambda>z(LazyReferenceMapper.ls.<locals>.<lambda>  s
   € ¸A¸f¼I€ r   ©Úkeyc                 óD   •— g | ]}|                      ‰› d �¦  «        ¯|‘ŒS rº   ©r°   ©rŒ   rÄ   r3   s     €r   r¾   z*LazyReferenceMapper.ls.<locals>.<listcomp>  s0   ø€ ÐLÐLÐL�d°·²À4À
À
À
Ñ0KÔ0KÐLˆTÐLÐLÐLr   c                 óD   •— g | ]}|                      ‰› d �¦  «        ¯|‘ŒS rº   rÔ   rÕ   s     €r   r¾   z*LazyReferenceMapper.ls.<locals>.<listcomp>  s0   ø€ ÐKÐKÐK˜¨t¯ªÀ$¸z¸z¸zÑ/JÔ/JÐKˆtÐKÐKÐKr   c           
      óœ   •— g | ]H}|d t          |‰j        v rt          j        ‰j        |         ¦  «        n‰j        |         ¦  «        dœ‘ŒIS rÌ   rÍ   rÎ   s     €r   r¾   z*LazyReferenceMapper.ls.<locals>.<listcomp>
  su   ø€ ð 
ð 
ð 
ð ð ØÝà˜tœ~Ð-Ð-õ ”J˜tœ~¨dÔ3Ñ4Ô4Ð4àœ TÔ*ñô ðð ð
ð 
ð 
r   c                 ó<   — g | ]\  }}|d          ¯|d|d         dœ‘ŒS )r   rn   rY   rÈ   rQ   )rŒ   rÄ   Úrecs      r   r¾   z*LazyReferenceMapper.ls.<locals>.<listcomp>  sD   € ð 
ð 
ð 
á��cØ�1Œvð
Ø 6°3°r´7Ð;Ð;ð
ð 
ð 
r   )ÚrstriprH   r   rC   rG   ÚupdateÚsortedrµ   Ú_keys_in_fieldr0   rK   rU   )r   r3   ÚdetailÚdirnamesr¶   ÚothersÚdirinfoÚfileinforM   rV   ÚrecsÚrecinfor½   s   ``          @r   ÚlszLazyReferenceMapper.lsà   s;  øøø€ à�{Š{˜3ÑÔˆØ!%Ð-�4˜#‘:�:¨2ˆØ—<’<‘>”>ˆð
ð 
ð 
ð 
àð
ñ 
ô 
ˆð
 ð 	Gðð ð ð åØ!�NØ5Ð5 d¤nÐ5Ñ5Ô5Ø2Ð2 d¤kÐ2Ñ2Ô2ñô ðñ ô ˆFð ˜ˆˆØ—’˜dÑ#Ô#Ð#Ý˜f‘~”~Ð%ØWÐWÐRVÐWÑWÔWˆGðð ð ð ð #ðñ ô ˆHõ ˜' HÑ,Ð2EÐ2EÐFÑFÔFÐFØˆÝØLÐLÐLÐL˜dœnÐLÑLÔLØKÐKÐKÐK ¤ÐKÑKÔKñLñ
ô 
ˆð
ð 
ð 
ð 
ð ð
ñ 
ô 
ˆð ×"Ò" 5Ñ)Ô)ˆà�Uˆ?ˆ?Ý˜‘<”<¥$ t¡*¤*Ñ,Ð,Ø×)Ò)¨%Ñ0Ô0ˆð
ð 
å   t™_œ_ð
ñ 
ô 
ˆð
 ˜'Ñ!Ð!r   c                 ó(  ‡‡— || j         v r| j         |         S || j        v r1t          j        | j        |         ¦  «                             ¦   «         S d|vs|                      |¦  «        rt          |¦  «        ‚|                     dd¦  «        \  }}|                      |¦  «        \  }Š}| j          	                    ||fi ¦  «         	                    ‰d¦  «        }|€t          ‚|r|S |dk    rdS 	 |  
                    ||¦  «        Šn/# t          t          t          f$ r}t          |¦  «        |‚d}~ww xY wg d¢}ˆˆfd„|D ¦   «         }	|	d	         }
|
�|
S |	d         €t          d
¦  «        ‚|	dd…         ddgk    r
|	dd…         S |	dd…         S )zfGet the reference for one key

        Returns bytes, one-element list or three-element list.
        r„   rX   FNr   r   ©r3   ÚoffsetrÊ   Úrawc                 ó8   •— g | ]}|‰v r‰|         ‰         nd ‘ŒS r   rQ   )rŒ   r�   r˜   Úris     €€r   r¾   z5LazyReferenceMapper._load_one_key.<locals>.<listcomp>>  s-   ø€ ÐIÐIÐI¸A A¨ I I�T˜!”W˜R”[�[°4ÐIÐIÐIr   rY   z1This reference does not exist or has been deletedé   )rG   rC   rD   rE   rF   Ú_is_metaÚKeyErrorr±   Ú_key_to_recordr.   r™   Ú
ValueErrorÚ	TypeErrorÚFileNotFoundError)r   rÒ   rM   Ú_r‰   Ú
chunk_sizeÚmaybeÚexcr•   Ú	selectionré   r˜   rë   s              @@r   Ú_load_one_keyz!LazyReferenceMapper._load_one_key"  sÉ  øø€ ð
 �$”+ÐÐØ”;˜sÔ#Ð#Ø�D”NÐ"Ð"Ý”:˜dœn¨SÔ1Ñ2Ô2×9Ò9Ñ;Ô;Ð;Ø˜ˆ^ˆ^˜tŸ}š}¨SÑ1Ô1ˆ^Ý˜3‘-”-ÐØ—:’:˜c 1Ñ%Ô%‰ˆˆqØ!%×!4Ò!4°SÑ!9Ô!9Ñˆ��JØ”—’ ¨ °Ñ4Ô4×8Ò8¸¸UÑCÔCˆØˆ=åˆNØð 	ØˆLØ˜1Š_ˆ_Ø�3ð	)Ø—>’> %¨Ñ0Ô0ˆDˆDøÝ�IÕ'8Ð9ð 	)ð 	)ð 	)Ý˜3‘-”- SÐ(øøøøð	)øøøà3Ð3Ð3ˆØIÐIÐIÐIÐIÀÐIÑIÔIˆ	Ø˜ŒmˆØˆ?ØˆJØ�QŒ<ÐÝÐNÑOÔOÐOØ�Q�q�SŒ>˜a ˜VÒ#Ð#à˜R˜a˜R”=Ð à˜˜!˜Œ}Ðs   Ã4D ÄD7Ä"D2Ä2D7i   c                 ó2  — |                      dd¦  «        \  }}|                      |¦  «        }t          |¦  «        dk    rdS d„ |                     d¦  «        D ¦   «         }t	          ||¦  «        }|| j        z  }|| j        z  }||t          |¦  «        fS )z3Details needed to construct a reference for one keyr„   rX   r   )r   r   r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rQ   )Úint©rŒ   r�   s     r   r¾   z6LazyReferenceMapper._key_to_record.<locals>.<listcomp>Q  s   € Ð6Ð6Ð6 •S˜‘V”VÐ6Ð6Ð6r   ú.)r±   rI   rJ   Úsplitr_   r|   )	r   rÒ   rM   ÚchunkrN   Ú	chunk_idxÚchunk_numberr‰   rë   s	            r   rï   z"LazyReferenceMapper._key_to_recordJ  s£   € ð —z’z # qÑ)Ô)‰ˆˆuØ×+Ò+¨EÑ2Ô2ˆÝˆ{ÑÔ˜qÒ Ð Ø�7Ø6Ð6 U§[¢[°Ñ%5Ô%5Ð6Ñ6Ô6ˆ	Ý(¨°KÑ@Ô@ˆØ Ô!1Ñ1ˆØ˜DÔ,Ñ,ˆØ�r�3˜{Ñ+Ô+Ð+Ð+r   c                 ó´   — || j         vrC| j        |› d�         }d„ t          |d         |d         ¦  «        D ¦   «         }|pdg| j         |<   | j         |         S )z6The number of chunks along each axis for a given fieldz/.zarrayc                 óB   — g | ]\  }}t          j        ||z  ¦  «        ‘ŒS rQ   )ÚmathÚceil)rŒ   r^   r�   s      r   r¾   z8LazyReferenceMapper._get_chunk_sizes.<locals>.<listcomp>[  s7   € ð ð ð Ù%) Q¨•”	˜!˜a™%Ñ Ô ðð ð r   ÚshapeÚchunksrX   )rN   rC   rU   )r   rM   ÚzarrayÚ
size_ratios       r   rI   z$LazyReferenceMapper._get_chunk_sizesW  sz   € à˜Ô(Ð(Ð(Ø”^ uÐ$6Ð$6Ð$6Ô7ˆFðð Ý-0°¸´À&ÈÔBRÑ-SÔ-Sðñ ô ˆJð '1Ð&7°Q°CˆDÔ˜UÑ#ØÔ Ô&Ð&r   c                 ó
  — |                       ||¦  «        }t          t          |                     ¦   «         Ž ¦  «        }t	          |¦  «        dk    rd„ |D ¦   «         S t	          |¦  «        dk    r|d         S d„ |D ¦   «         S )z8The references for a given parquet file of a given fieldrì   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   ©r0   ©rŒ   Úts     r   r´   z7LazyReferenceMapper._generate_record.<locals>.<genexpr>g  s(   è è € Ð(Ð( •D˜‘G”GÐ(Ð(Ð(Ð(Ð(Ð(r   rX   ré   c              3   ód   K  — | ]+}|d          st          |dd …         ¦  «        n|d          V — Œ,dS )rì   Nr  r  s     r   r´   z7LazyReferenceMapper._generate_record.<locals>.<genexpr>m  sA   è è € ÐBÐB¸! q¨¤tÐ5•D˜˜2˜A˜2œ‘K”K�K°°1´ÐBÐBÐBÐBÐBÐBr   )r™   r(   rU   r)   rJ   )r   rM   r‰   r˜   Úits        r   Ú_generate_recordz$LazyReferenceMapper._generate_recorda  s‚   € à�~Š~˜e VÑ,Ô,ˆÝ•#�t—{’{‘}”}Ð%Ñ&Ô&ˆÝˆt‰9Œ9˜Š>ˆ>à(Ð( RÐ(Ñ(Ô(Ð(Ý�‰YŒY˜!Š^ˆ^à˜”;Ðð CÐB¸rÐBÑBÔBÐBr   c              #   óÜ   K  — d}|                       |¦  «        D ]}||z  }Œt          j        || j        z  ¦  «        }t	          |¦  «        D ]}|                      ||¦  «        E d{V —† ŒdS )zJLoad all the references within a field by iterating over the parquet filesrX   N)rI   r  r  r|   Úranger  )r   rM   ÚnrecÚchr‰   s        r   rK   z)LazyReferenceMapper._generate_all_recordso  s”   è è € àˆØ×'Ò'¨Ñ.Ô.ð 	ð 	ˆBØ�B‰JˆDˆDÝŒy˜ Ô 0Ñ0Ñ1Ô1ˆÝ˜D‘k”kð 	<ð 	<ˆFØ×,Ò,¨U°FÑ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð	<ð 	<r   c                 ó    — t          | ¦  «        S r   )r?   r   s    r   r)   zLazyReferenceMapper.valuesx  s   € Ý˜dÑ#Ô#Ð#r   c                 ó    — t          | ¦  «        S r   )rS   r   s    r   ÚitemszLazyReferenceMapper.items{  s   € Ý˜TÑ"Ô"Ð"r   c                 ó    — t          | ¦  «        S r   )Úidr   s    r   Ú__hash__zLazyReferenceMapper.__hash__~  s   € Ý�$‰xŒxˆr   c                 ó,   — |                       |¦  «        S r   )rø   )r   rÒ   s     r   Ú__getitem__zLazyReferenceMapper.__getitem__�  s   € Ø×!Ò! #Ñ&Ô&Ð&r   c                 ó”  — d|v r›|                       |¦  «        s†|                     dd¦  «        \  }}|                      |¦  «        \  }}}| j                             ||fi ¦  «        }|||<   t          |¦  «        | j        k    r|                      ||¦  «         d S d S t          |d¦  «        r'| 	                    ¦   «          
                    ¦   «         }	n,t          |t          ¦  «        r| 
                    ¦   «         }	n|}	|	| j        |<   t          j        |	¦  «        }
i | j                             |i ¦  «        ¥|
¥| j        |<   d S )Nr„   rX   Úto_bytes)rí   r±   rï   rG   r8   rJ   r|   ÚwriteÚhasattrr  Údecoder/   ÚbytesrD   r›   rC   r.   )r   rÒ   ÚvaluerM   rÿ   r‰   r]   ró   ÚsubdictrL   Ú	new_values              r   Ú__setitem__zLazyReferenceMapper.__setitem__„  sC  € Ø�#ˆ:ˆ:˜dŸmšm¨CÑ0Ô0ˆ:ØŸ:š: c¨1Ñ-Ô-‰LˆE�5Ø×.Ò.¨sÑ3Ô3‰LˆF�A�qØ”k×,Ò,¨e°V¨_¸bÑAÔAˆGØˆG�A‰JÝ�7‰|Œ|˜tÔ/Ò/Ð/Ø—
’
˜5 &Ñ)Ô)Ð)Ð)Ð)ð 0Ð/õ �u˜jÑ)Ô)ð Ø—n’nÑ&Ô&×-Ò-Ñ/Ô/��Ý˜E¥5Ñ)Ô)ð Ø—l’l‘n”n��à�Ø"ˆDŒK˜ÑÝœ
 3™œˆIØ"N T¤^×%7Ò%7¸¸RÑ%@Ô%@Ð"NÀIÐ"NˆDŒN˜3ÑÐÐr   c                 ó4   — |                       d¦  «        pd| v S )Nr¯   z/.zrÔ   rÑ   s    r   rí   zLazyReferenceMapper._is_meta˜  s   € à�~Š~˜dÑ#Ô#Ð3 u° |Ð3r   c                 ó¤  — || j         v r
| j         |= d S || j        v r
| j        |= d S d|v r›|                      |¦  «        s†|                     dd¦  «        \  }}|                      |¦  «        \  }}}| j                              ||fi ¦  «        }d ||<   t          |¦  «        | j        k    r|                      ||¦  «         d S d S d | j         |<   d S )Nr„   rX   )	rG   rC   rí   r±   rï   r8   rJ   r|   r   )r   rÒ   rM   ró   r‰   r]   r%  s          r   Ú__delitem__zLazyReferenceMapper.__delitem__œ  só   € Ø�$”+ÐÐØ”˜CÐ Ð Ð Ø�D”NÐ"Ð"Ø”˜sÐ#Ð#Ð#à�cˆzˆz $§-¢-°Ñ"4Ô"4ˆzØŸ:š: c¨1Ñ-Ô-‘��qØ#×2Ò2°3Ñ7Ô7‘�˜˜1Øœ+×0Ò0°%¸°À"ÑEÔE�Ø!�˜‘
Ý�w‘<”< 4Ô#3Ò3Ð3Ø—J’J˜u fÑ-Ô-Ð-Ð-Ð-ð 4Ð3ð $(�”˜CÑ Ð Ð r   c           	      ó`  — dd l }dd l}dd l}| j        ||f         }d}	t	          |¦  «        | j        k     r(	 |                      ||¦  «        }	n# t          $ r Y nw xY w|	r!|	d         }
|	d         }|	d         }|	d         }n||                     | j        |j	        d¬¦  «        }
| 
                    | j        d	¬¦  «        }| 
                    | j        d	¬¦  «        }|                     | j        |j	        d¬¦  «        }|                     ¦   «         D ]Ê\  }}t          |t          ¦  «        r|t          |
j        ¦  «        d
k    r/|d         |
j        j        vr|
                     |d         ¦  «        }
|d         |
|<   t	          |¦  «        dk    r|d         ||<   |d         ||<   Œ–|€d |
|<   d||<   d||<   d ||<   Œ­|j                             |¦  «        ||<   ŒË|                     |
|||dœd¬¦  «        }|j                             ¦   «         |j                             ¦   «         pdz  | j        k    r|d                              d
¦  «        |d<   dddœ}ddg}|p| j        › d|› d|› d�}| j                             |p| j        › d|› �d¬¦  «         | j        dk    rddi}n)| j        dk    rd||dœ}nt=          | j        › d�¦  «        ‚ |j        |f| j        |ptA          | j        dd ¦  «        dddœ|¤Ž | !                    ¦   «          | j         "                    ||f¦  «         d S )Nr   Fr3   rè   rÊ   ré   ÚO)ÚdtypeÚint64ÚcategoryrX   é   rç   )Úcopyr#  Úutf8)ré   r3   r„   z/refs.z.parqTr¢   rl   Úwrite_statisticsrj   )ÚstatsÚobject_encodingÚ	has_nullsz not supportedrª   Úzstd)rk   rª   ÚcompressionÚindex)#Úkerchunk.dfrc   rf   rG   rJ   r|   r™   r–   ÚfullÚnanÚzerosr  r/   r0   r2   r-  Ú
categoriesÚadd_categoriesrŽ   Ú	_proc_rawÚ	DataFramer3   ÚcountÚnuniquerq   Úastyperw   ru   Úmkdirsrk   ÚNotImplementedErrorÚ
to_parquetÚgetattrÚclearÚpop)r   rM   r‰   Úbase_urlrª   Úkerchunkrd   rg   Ú	partitionÚoriginalr:   Úoffsetsr[   ÚrawsÚjr—   rŽ   r5  r6  ÚfnÚdf_backend_kwargss                        r   r   zLazyReferenceMapper.write­  sÖ  € àÐÐÐØÐÐÐØÐÐÐà”K ¨ Ô0ˆ	ØˆÝˆy‰>Œ>˜DÔ,Ò,Ð,ðØŸ>š>¨%°Ñ8Ô8��øÝð ð ð Ø�ðøøøð ð 		@Ø˜VÔ$ˆEØ˜xÔ(ˆGØ˜VÔ$ˆEØ˜E”?ˆDˆDà—G’G˜DÔ,¨b¬f¸C�GÑ@Ô@ˆEØ—h’h˜tÔ/°w�hÑ?Ô?ˆGØ—H’H˜TÔ-°W�HÑ=Ô=ˆEØ—7’7˜4Ô+¨R¬V¸3�7Ñ?Ô?ˆDØ —’Ñ(Ô(ð 	6ð 	6‰GˆAˆtÝ˜$¥Ñ%Ô%ð 6å˜œÑ$Ô$¨
Ò2Ð2Ø˜Qœ u¤{Ô'=Ð=Ð=à!×0Ò0°°a´Ñ9Ô9�EØ œ7��a‘Ý�t‘9”9˜q’=�=Ø!% a¤�G˜A‘JØ# Aœw�E˜!‘HøØ�à��a‘Ø�˜‘
Ø��a‘Ø��Q‘�ð #œ+×/Ò/°Ñ5Ô5��Q‘�à�\Š\àØ!ØØð	ð ð ð ñ 
ô 
ˆð Œ7�=Š=‰?Œ?˜bœgŸošoÑ/Ô/Ð4°1Ñ5¸¼ÒGÐGØ˜Fœ×*Ò*¨:Ñ6Ô6ˆBˆv‰JØ")°6Ð:Ð:ˆØ˜U�Oˆ	àÐ)˜DœMÐFÐF¨EÐFÐF¸ÐFÐFÐFˆØŒ�Š˜(Ð3 d¤mÐ=Ð=°eÐ=Ð=ÈˆÑMÔMÐMàŒ;˜)Ò#Ð#Ø!3°UÐ ;ÐÐØŒ[˜MÒ)Ð)àØ#2Ø&ð!ð !ÐÐõ &¨¬Ð&DÐ&DÐ&DÑEÔEÐEØˆŒØð	
à”;Ø+ð 9Ý�t”wÐ 1°4Ñ8Ô8ØØð	
ð 	
ð  ð	
ð 	
ð 	
ð 	�ŠÑÔÐØŒ�Š˜ ˜Ñ(Ô(Ð(Ð(Ð(s   ·A Á
AÁAc                 ó¦  — t          | j        ¦  «        D ]5}t          |t          ¦  «        r|\  }}|                      ||||¬¦  «         Œ6t          | j        ¦  «        D ]@}|dk    r8d|v r4t          j        | j                             |¦  «        ¦  «        | j        |<   ŒA| j        | j	        dœ}| j         
                    ¦   «          t          j        |¦  «                             ¦   «         | j        d<   | j                             d                     |p| j        dg¦  «        | j        d         ¦  «         | j                             ¦   «          dS )zŒOutput any modified or deleted keys

        Parameters
        ----------
        base_url: str
            Location of the output
        )rK  rª   r…   r¯   rŸ   r„   N)r0   rG   r/   r1   r   rD   r›   rJ  rC   r|   rI  rE   rF   ru   r©   rš   rw   r™   Úcache_clear)r   rK  rª   ÚthingrM   r‰   Úkrœ   s           r   ÚflushzLazyReferenceMapper.flush  sT  € õ ˜$œ+Ñ&Ô&ð 	ð 	ˆEÝ˜%¥Ñ'Ô'ð Ø %‘��vØ—
’
ØØØ%Ø$3ð	 ñ ô ð øõ �d”kÑ"Ô"ð 	Cð 	CˆAØ�LÒ Ð  T¨Q Y YÝ$(¤J¨t¬{¯ª¸qÑ/AÔ/AÑ$BÔ$B�”˜qÑ!øØœ>¸$Ô:JÐKÐKˆØŒ×ÒÑÔÐÝ$(¤J¨s¡O¤O×$:Ò$:Ñ$<Ô$<ˆŒ�LÑ!ØŒ�ŠØ�HŠH�hÐ/ $¤-°Ð>Ñ?Ô?ØŒK˜Ô%ñ	
ô 	
ð 	
ð 	Œ×"Ò"Ñ$Ô$Ð$Ð$Ð$r   c                 ó2  — d}|                       ¦   «         D ]G}|                     d¦  «        r|dz  }Œ|t          j        |                      |¦  «        ¦  «        z  }ŒH|t          | j        ¦  «        z  }|t          d„ | j        D ¦   «         ¦  «        z  }|S )Nr   rý   rX   c              3   óD   K  — | ]}t          |t          ¦  «        °d V — ŒdS )rX   N)r/   r1   )rŒ   ró   s     r   r´   z.LazyReferenceMapper.__len__.<locals>.<genexpr>/  s1   è è € ÐHÐH˜1µ:¸aÅÑ3GÔ3GÐH�QÐHÐHÐHÐHÐHÐHr   )	rH   r°   r  ÚprodrI   rJ   rC   ÚsumrG   )r   rB  rM   s      r   Ú__len__zLazyReferenceMapper.__len__%  s¢   € àˆØ—\’\‘^”^ð 	Að 	AˆEØ×Ò Ñ$Ô$ð AØ˜‘
��à�œ 4×#8Ò#8¸Ñ#?Ô#?Ñ@Ô@Ñ@��Ø•�T”^Ñ$Ô$Ñ$ˆà•ÐHÐH ¤ÐHÑHÔHÑHÔHÑHˆØˆr   c              #   ó  K  — t          | j        ¦  «        }|                     | j        ¦  «         |D ]}t	          |t
          ¦  «        r|V — Œ|                      ¦   «         D ]"}|                      |¦  «        D ]
}|| v r|V — ŒŒ#d S r   )rµ   rC   rÛ   rG   r/   r2   rH   rÝ   )r   ÚmetasÚbitrM   rW  s        r   rO   zLazyReferenceMapper.__iter__2  s¬   è è € õ �D”NÑ#Ô#ˆØ�Š�T”[Ñ!Ô!Ð!Øð 	ð 	ˆCÝ˜#�sÑ#Ô#ð Ø�	�	�	øØ—\’\‘^”^ð 	ð 	ˆEØ×(Ò(¨Ñ/Ô/ð ð �Ø˜�9�9Ø�G�G�Gøðð	ð 	r   c                 óT   — 	 |                       |¦  «         dS # t          $ r Y dS w xY w)NTF)rø   rî   r€   s     r   Ú__contains__z LazyReferenceMapper.__contains__?  sB   € ð	Ø×Ò˜tÑ$Ô$Ð$Ø�4øÝð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ ™
'¦'c              #   óô   K  — |                       |¦  «        }t          |¦  «        dk    r	|dz   V — dS t          j        d„ |D ¦   «         Ž }|D ])}|dz   d                     d„ |D ¦   «         ¦  «        z   V — Œ*dS )z|List key names in given field

        Produces strings like "field/x.y" appropriate from the chunking of the array
        r   rA   Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   )r  )rŒ   r]   s     r   r´   z5LazyReferenceMapper._keys_in_field.<locals>.<genexpr>O  s(   è è € Ð"AÐ"A°¥5¨¡8¤8Ð"AÐ"AÐ"AÐ"AÐ"AÐ"Ar   r„   rý   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rQ   )r2   rü   s     r   r¾   z6LazyReferenceMapper._keys_in_field.<locals>.<listcomp>Q  s   € Ð)>Ð)>Ð)>°Q­#¨a©&¬&Ð)>Ð)>Ð)>r   )rI   rJ   Ú	itertoolsÚproductrš   )r   rM   rN   ÚindsÚinds        r   rÝ   z"LazyReferenceMapper._keys_in_fieldF  s¯   è è € ð
 ×+Ò+¨EÑ2Ô2ˆÝˆ{ÑÔ˜qÒ Ð Ø˜$‘,ÐÐÐØˆFÝÔ Ð"AÐ"A°[Ð"AÑ"AÔ"AÐBˆØð 	@ð 	@ˆCØ˜#‘+ §¢Ð)>Ð)>¸#Ð)>Ñ)>Ô)>Ñ ?Ô ?Ñ?Ð?Ð?Ð?Ð?ð	@ð 	@r   )NNrh   ri   rj   )NNr�   )r·   T©NN)"r!   r"   r#   Ú__doc__Úpropertyrd   rg   r   r   r‚   r}   Ústaticmethodr¬   r   rH   rå   rø   rï   rI   r  rK   r)   r  r  r  r'  rí   r*  r   rX  r]  rO   rb  rÝ   rQ   r   r   ra   ra   W   sY  € € € € € ðYð Yð ðð ñ „Xðð
 ðð ñ „Xðð ØØØ Ø4Að.Kð .Kð Ð0Ô1ð.Kð .Kð .Kð .Kð`#ð #ð #ð#ð #ð #ð0 ð7ð 7ð 7ñ „\ð7ð< €Y�[„[ðð ñ „[ðð
@"ð @"ð @"ð @"ðD&ð &ð &ðP €Yˆt�_„_ð
,ð 
,ñ „_ð
,ð'ð 'ð 'ðCð Cð Cð<ð <ð <ð$ð $ð $ð#ð #ð #ðð ð ð'ð 'ð 'ðOð Oð Oð( ð4ð 4ñ „\ð4ð(ð (ð (ð"S)ð S)ð S)ð S)ðj!%ð !%ð !%ð !%ðFð ð ðð ð ðð ð ð@ð @ð @ð @ð @r   ra   c                   ó  ‡ — e Zd ZdZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 d(ˆ fd	„	Zd)d
„Zd)d„Zd)d„Z	d„ Z
d„ Zefd„Zd*d„Zd+d„Zd,d„Zd„ Zd,d„Zd„ Zd„ Zd„ Zd-d„Zd.d„Zd„ Zd„ Zd„ Zd.d„Zd/ˆ fd „	Zd!„ Zd"„ Zd#„ Zd0d%„Z d0d&„Z!d'„ Z"ˆ xZ#S )1ÚReferenceFileSystema×  View byte ranges of some other file as a file system
    Initial version: single file system target, which must support
    async, and must allow start and end args in _cat_file. Later versions
    may allow multiple arbitrary URLs for the targets.
    This FileSystem is read-only. It is designed to be used with async
    targets (for now). We do not get original file details from the target FS.
    Configuration is by passing a dict of references at init, or a URL to
    a JSON file containing the same; this dict
    can also contain concrete data for some set of paths.
    Reference dict format:
    {path0: bytes_data, path1: (target_url, offset, size)}
    https://github.com/fsspec/kerchunk/blob/main/README.md
    r   FNTé ú  é @Brh   c                 óp  •—  t          ¦   «         j        di |¤Ž || _        |	| _        |
| _        i | _        i | _        i | _        || _        || _	        t          |t          ¦  «        rçt          di |p|pi ¤d|i¤Ž}t          j        j        |fi |¤Ž\  }}|                     |¦  «        rqt          j        |dfi |¤Ž5 }t$                               d|¦  «         t)          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |                      ||	¦  «         nIt$                               d|¦  «         t/          |||¬¦  «        | _        n|                      ||	¦  «         t          |t          ¦  «        rEd„ |                     ¦   «         D ¦   «         | _        d| j        vrt5          d¦  «        | j        d<   dS |�8t          |j        t8          ¦  «        r|j        d	         n|j        }|| j        |<   |€{| j                             ¦   «         D ]a}t=          |¦  «        r
 |¦   «         }t          j                             |¦  «        \  }}|r"|| j        vrt5          |fi |pi ¤Ž}|| j        |<   Œb|€ž| j                             ¦   «         D ]„}t=          |¦  «        r
 |¦   «         }t          |t@          ¦  «        rT|d	         rLt          j                             |d	         ¦  «        \  }}|| j        vrt5          |fi |pi ¤Ž}|| j        |<    nŒ…|r"|| j        vrt5          |fi |pi ¤Ž}|| j        |<   |pt5          d¦  «        | j        d<   | j                             ¦   «         D ]I\  }}|j!        stE          || j#        ¬
¦  «        | j        |<   Œ+| j#        |j#        z  rtI          d¦  «        ‚ŒJdS )a  
        Parameters
        ----------
        fo : dict or str
            The set of references to use for this instance, with a structure as above.
            If str referencing a JSON file, will use fsspec.open, in conjunction
            with target_options and target_protocol to open and parse JSON at this
            location. If a directory, then assume references are a set of parquet
            files to be loaded lazily.
        target : str
            For any references having target_url as None, this is the default file
            target to use
        ref_storage_args : dict
            If references is a str, use these kwargs for loading the JSON file.
            Deprecated: use target_options instead.
        target_protocol : str
            Used for loading the reference file, if it is a path. If None, protocol
            will be derived from the given path
        target_options : dict
            Extra FS options for loading the reference file ``fo``, if given as a path
        remote_protocol : str
            The protocol of the filesystem on which the references will be evaluated
            (unless fs is provided). If not given, will be derived from the first
            URL that has a protocol in the templates or in the references, in that
            order.
        remote_options : dict
            kwargs to go with remote_protocol
        fs : AbstractFileSystem | dict(str, (AbstractFileSystem | dict))
            Directly provide a file system(s):
                - a single filesystem instance
                - a dict of protocol:filesystem, where each value is either a filesystem
                  instance, or a dict of kwargs that can be used to create in
                  instance for the given protocol

            If this is given, remote_options and remote_protocol are ignored.
        template_overrides : dict
            Swap out any templates in the references file with these - useful for
            testing.
        simple_templates: bool
            Whether templates can be processed with simple replace (True) or if
            jinja  is needed (False, much slower). All reference sets produced by
            ``kerchunk`` are simple in this sense, but the spec allows for complex.
        max_gap, max_block: int
            For merging multiple concurrent requests to the same remote file.
            Neighboring byte ranges will only be merged when their
            inter-range gap is <= ``max_gap``. Default is 64KB. Set to 0
            to only merge when it requires no extra bytes. Pass a negative
            number to disable merging, appropriate for local target files.
            Neighboring byte ranges will only be merged when the size of
            the aggregated range is <= ``max_block``. Default is 256MB.
        cache_size : int
            Maximum size of LRU cache, where cache_size*record_size denotes
            the total number of references that can be loaded in memory at once.
            Only used for lazily loaded references.
        kwargs : passed to parent class
        r<   ÚrbzRead reference from URL %sNz$Open lazy reference dict from URL %s)ru   rr   c           	      óœ   — i | ]I\  }}|t          |t          ¦  «        r,t          j        |                     d d¦  «        d         fi |¤Žn|“ŒJS )ú:rX   r   )r/   Údictrt   r
   rþ   )rŒ   rW  Úoptss      r   r�   z0ReferenceFileSystem.__init__.<locals>.<dictcomp>Ï  sl   € ð ð ð ñ �A�tð å! $­Ñ-Ô-ð•FÔ% a§g¢g¨c°1¡o¤o°aÔ&8ÐAÐA¸DÐAÐAÐAàð	ð ð r   rn   r   )ÚasynchronouszEReference-FS's target filesystem must have same value of asynchronousrQ   )%r   r   r   Útemplate_overridesÚsimple_templatesÚ	templatesÚfssÚ	_dircacheÚmax_gapÚ	max_blockr/   r2   rv  rt   r¤   r¥   Úisfiler   ÚloggerÚinforD   ÚloadÚ_process_referencesra   r4   r  r
   r<   r1   r)   Úcallabler   r0   Ú
async_implr   rx  rð   )r   Úfor   Úref_storage_argsÚtarget_protocolÚtarget_optionsÚremote_protocolÚremote_optionsru   ry  rz  r~  r  rr   r«   ÚdicÚref_fsÚfo2rÀ   Útextr5   r<   ró   rW  r   s                           €r   r   zReferenceFileSystem.__init__f  s„  ø€ ðR 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒØ"4ˆÔØ 0ˆÔØˆŒØˆŒØˆŒØˆŒØ"ˆŒÝ�b�#ÑÔð 	=Ýð ð Ø#Ð; ~Ð;¸ðð ØGVðð ð ˆCõ !œ+Ô/°Ð:Ð:°cÐ:Ð:‰KˆF�CØ�}Š}˜SÑ!Ô!ð å”[  TÐ1Ð1¨SÐ1Ð1ð (°QÝ—K’KÐ <¸bÑAÔAÐAÝœ9 Q™<œ<�Dð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð ×(Ò(¨Ð/AÑBÔBÐBÐBõ —’ÐBÀBÑGÔGÐGÝ"5ØØØ)ð#ñ #ô #�”�ð ×$Ò$ RÐ);Ñ<Ô<Ð<Ý�b�$ÑÔð 	ðð ð  "Ÿxšx™zœzðñ ô ˆDŒHð ˜4œ8Ð#Ð#Ý!+¨FÑ!3Ô!3�”˜‘ØˆFØˆ>õ #-¨R¬[½%Ñ"@Ô"@ÐQ�”˜A”�ÀbÄkð ð )+ˆDŒH�_Ñ%àÐ"à”~×,Ò,Ñ.Ô.ð ,ð ,�Ý˜C‘=”=ð  Ø˜#™%œ%�CÝ$œk×8Ò8¸Ñ=Ô=‘�˜!Øð , °´Ð 8Ð 8Ý# HÐGÐG°Ð1EÀ2ÐGÐG�BØ)+�D”H˜XÑ&øØÐ"ð ”×-Ò-Ñ/Ô/ð 	ð 	�Ý˜C‘=”=ð  Ø˜#™%œ%�CÝ˜c¥4Ñ(Ô(ð ¨S°¬Vð Ý"(¤+×"<Ò"<¸SÀ¼VÑ"DÔ"D‘K�H˜aØ t¤xÐ/Ð/Ý'¨ÐKÐK°^Ð5IÀrÐKÐK˜Ø-/˜œ Ñ*à˜øàð 	+˜°d´hÐ>Ð>Ý˜OÐFÐF°Ð0DÀ"ÐFÐFˆBØ(*ˆDŒH�_Ñ%àÐ1�z¨&Ñ1Ô1ˆŒ�‰à”H—N’NÑ$Ô$ð 	ð 	‰DˆAˆqØ”<ð Ý4°QÀTÔEVÐWÑWÔW�”˜‘�ØÔ" Q¤^Ñ3ð Ý ð&ñô ð ðð	ð 	s   Â>0C:Ã:C>ÄC>c           
      óŠ  — |                       |¦  «        }t                               d|› �¦  «         	 | j        |         }n"# t          $ r}t          |¦  «        |‚d }~ww xY wt          |t          ¦  «        r|                     ¦   «         }t          |d¦  «        r| 
                    ¦   «         }t          |t          ¦  «        rTt                               d|› d�¦  «         |                     d¦  «        rt          j        |dd …         ¦  «        }|d d fS t          |¦  «        dk    r-t                               d|› d|› �¦  «         |d	         }||}}n]|\  }}	}
t                               d|› d
|› d|	› d|
› �¦  «         |	|
z   }|�|d	k    r|	|z   }n||z   }n|	}|�|d	k    r|	|z   }n||z   }n|}|€| j        }|||fS )Nzcat: r  zReference: z, type bytesó   base64:é   rX   z, whole file => r   z => z	, offset z, size )Ú_strip_protocolr�  Údebugr4   rî   rò   r/   r2   rF   r!  r  r#  r°   Úbase64Ú	b64decoderJ   r   )r   r3   ÚstartÚendÚpartrö   rs   Ústart1Úend1Ústart0rÊ   Úend0s               r   Ú_cat_commonzReferenceFileSystem._cat_common  s  € Ø×#Ò# DÑ)Ô)ˆÝ�Š�^˜T�^�^Ñ$Ô$Ð$ð	3Ø”? 4Ô(ˆDˆDøÝð 	3ð 	3ð 	3Ý# DÑ)Ô)¨sÐ2øøøøð	3øøøå�d�CÑ Ô ð 	!Ø—;’;‘=”=ˆDÝ�4˜Ñ$Ô$ð 	#Ø—=’=‘?”?ˆDÝ�d�EÑ"Ô"ð 	$Ý�LŠLÐ9 tÐ9Ð9Ð9Ñ:Ô:Ð:Ø�Š˜zÑ*Ô*ð 2ÝÔ'¨¨Q¨R¨R¬Ñ1Ô1�Ø˜˜tÐ#Ð#åˆt‰9Œ9˜Š>ˆ>Ý�LŠLÐC tÐCÐC¸TÐCÐCÑDÔDÐDØ�q”'ˆCØ  #�DˆFˆFà $ÑˆC�˜Ý�LŠLÐT tÐTÐT°ÐTÐT¸vÐTÐTÈdÐTÐTÑUÔUÐUØ˜D‘=ˆDàÐ Ø˜A’:�:Ø# e™^�F�Fà! E™\�F�Fà�ØˆØ˜!’8�8Ø! C™<�D�Dà #™:�D�Dà�Øˆ;Ø”+ˆCØ�F˜DÐ Ð s   ´A Á
A!ÁAÁA!c              ‹   ó:  K  — |                       |||¬¦  «        \  }}}t          |t          ¦  «        r
|||…         S t          |¦  «        \  }}		 | j        |                              |||¬¦  «        ƒ d {V —†S # t          $ r}
t          ||¦  «        |
‚d }
~
ww xY w©N)r˜  r™  )rŸ  r/   r#  r   r|  Ú	_cat_fileÚ	Exceptionr   ©r   r3   r˜  r™  r«   Úpart_or_urlr�  rž  r<   ró   Úes              r   r¢  zReferenceFileSystem._cat_file3  sß   è è € Ø$(×$4Ò$4°TÀÈCÐ$4Ñ$PÔ$PÑ!ˆ�V˜TÝ�k¥5Ñ)Ô)ð 	*Ø˜u S˜yÔ)Ð)Ý$ [Ñ1Ô1‰ˆ�!ð	BØœ (Ô+×5Ò5Ø 6¨tð 6ñ ô ð ð ð ð ð ð ð øõ ð 	Bð 	Bð 	BÝ'¨¨kÑ:Ô:ÀÐAøøøøð	Bøøøs   Á(A: Á:
BÂBÂBc                 ó*  — |                       |||¬¦  «        \  }}}t          |t          ¦  «        r
|||…         S t          |¦  «        \  }}		 | j        |                              |||¬¦  «        S # t          $ r}
t          ||¦  «        |
‚d }
~
ww xY wr¡  )rŸ  r/   r#  r   r|  r“   r£  r   r¤  s              r   r“   zReferenceFileSystem.cat_file?  s²   € Ø$(×$4Ò$4°TÀÈCÐ$4Ñ$PÔ$PÑ!ˆ�V˜TÝ�k¥5Ñ)Ô)ð 	*Ø˜u S˜yÔ)Ð)Ý$ [Ñ1Ô1‰ˆ�!ð	BØ”8˜HÔ%×.Ò.¨{À&ÈdÐ.ÑSÔSÐSøÝð 	Bð 	Bð 	BÝ'¨¨kÑ:Ô:ÀÐAøøøøð	Bøøøs   Á"A2 Á2
BÁ<BÂBc                 ó   — || j         |<   dS )z2Temporarily add binary data or reference as a fileN©r4   )r   r3   r$  ró   s       r   Ú	pipe_filezReferenceFileSystem.pipe_fileI  s   € à %ˆŒ˜ÑÐÐr   c              ‹   ó  K  — |                       |¦  «        rt          j        |d¬¦  «        S |                      |¦  «        ƒ d {V —†}t	          |d¦  «        5 }|                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©NTr¢   Úwb)ÚisdirÚosr¨   r¢  r   r   )r   ÚrpathÚlpathr«   r—   rÀ   s         r   Ú	_get_filezReferenceFileSystem._get_fileM  sÒ   è è € Ø�:Š:�eÑÔð 	5Ý”;˜u¨tÐ4Ñ4Ô4Ð4Ø—^’^ EÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*ˆÝ�%˜ÑÔð 	 !Ø�GŠG�D‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁA<Á<B ÂB c                 óÄ  — |                       |¦  «        rt          j        |d¬¦  «        S  | j        |fi |¤Ž}|                     t          |¦  «        ¦  «         t          |¦  «        r|                     |¦  «         n=t          |d¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   | 	                    t          |¦  «        ¦  «         d S r¬  )
r®  r¯  r¨   r“   Úset_sizerJ   r   r   r   Úabsolute_update)r   r°  r±  Úcallbackr«   r—   rÀ   s          r   Úget_filezReferenceFileSystem.get_fileT  s  € Ø�:Š:�eÑÔð 	5Ý”;˜u¨tÐ4Ñ4Ô4Ð4ØˆtŒ}˜UÐ-Ð- fÐ-Ð-ˆØ×Ò�#˜d™)œ)Ñ$Ô$Ð$Ý�eÑÔð 	Ø�KŠK˜ÑÔÐÐå�e˜TÑ"Ô"ð  aØ—’˜‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à× Ò ¥ T¡¤Ñ+Ô+Ð+Ð+Ð+s   ÂB3Â3B7Â:B7c                 óŽ  ‡ — |r‰                       d¦  «         ‰                      ||¬¦  «        }t          j        dd¬¦  «        }t	          ||¦  «        }|r"‰                      ˆ fd„|D ¦   «         ¦  «        }n‰                      |¦  «        }t          ||¦  «        D ]%\  }}	||v r|                     |	||         ¦  «         Œ&d S )Nr·   r    rn   T)Ú
auto_mkdirc                 ó>   •— g | ]}‰                      |¦  «        °|‘ŒS rQ   )r®  )rŒ   Úrr   s     €r   r¾   z+ReferenceFileSystem.get.<locals>.<listcomp>h  s(   ø€ ÐCÐCÐC 1°T·Z²ZÀ±]´]ÐC˜QÐCÐCÐCr   )rå   Úexpand_pathrt   r
   r   ÚcatrU   rª  )
r   r°  r±  r¡   r«   ru   Útargetsr—   ÚremoteÚlocals
   `         r   r.   zReferenceFileSystem.get`  sÞ   ø€ Øð 	à�GŠG�B‰KŒKˆKØ× Ò  °)Ð Ñ<Ô<ˆÝÔ˜v°$Ð7Ñ7Ô7ˆÝ˜e UÑ+Ô+ˆØð 	#Ø—8’8ÐCÐCÐCÐC¨ÐCÑCÔCÑDÔDˆDˆDà—8’8˜E‘?”?ˆDÝ  ¨Ñ0Ô0ð 	2ð 	2‰MˆF�EØ˜ˆ~ˆ~Ø—’˜U D¨¤LÑ1Ô1Ð1øð	2ð 	2r   Úraisec           	      ó°  — t          |t          ¦  «        r	|rt          ‚t          |t          ¦  «        r"|st	          d„ |D ¦   «         ¦  «        rt          ‚t          || j        ¦  «        }i }|                     ¦   «         D �]\  }}| j        |         }	g g g g f\  }
}}}|D ]·}	 |  	                    |¦  «        \  }}}t          |t          t          f¦  «        sŒ9	 |
                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         Œ�# t          $ r}|dk    r‚ |dk    r|||<   Y d }~Œ°d }~ww xY wg }g }g }g }t          ¦   «         }t          |
|||¦  «        D ]�\  }}}}t          |t          ¦  «        r|||<   Œ"|€i|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         ŒŽt          |
|||¦  «        D ]a\  }}}}|�X||vrT|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         Œbt!          t          |¦  «        t          |¦  «        t          |¦  «        d| j        | j        ¬¦  «        \  }}}|	                     |||¦  «        }t          |
|||¦  «        D ]›\  }}}}||v rŒt          ||||¦  «        D ]|\  }}}}||k    r-|�|€)t          |t(          ¦  «        r|||<   Œ,|||…         ||<   Œ:||k    r<||k    r6||k    r0t          |t(          ¦  «        r|||<   Œg|||z
  ||z
  pd …         ||<   Œ}Œœ�Œ|                     ¦   «                              ¦   «         D ]`\  } }!t          |!t(          ¦  «        rF| | j        v r=||          }"t-          | | j        |          ¦  «        }#|"|#_        |dk    r|#‚|dk    r|#|| <   Œat1          |¦  «        dk    r(t          |t          ¦  «        rd|vrt3          |¦  «        S |S )Nc              3   ó   K  — | ]}d |v V — Œ	dS )Ú*NrQ   r²   s     r   r´   z*ReferenceFileSystem.cat.<locals>.<genexpr>r  s&   è è € Ð7OÐ7OÀQ¸¸q¸Ð7OÐ7OÐ7OÐ7OÐ7OÐ7Or   rÁ  ÚomitT)Úsortr~  r  rX   rÄ  )r/   r2   rF  r0   Úanyr=   r4   r  r|  rŸ  r#  r9   rò   rµ   rU   Úaddr   r~  r  Ú
cat_rangesr£  r1  r   Ú	__cause__rJ   r+   )$r   r3   r¡   Úon_errorr«   Ú
proto_dictr;   Úprotor:   ru   ÚurlsÚstartsÚendsÚvalid_pathsr³   Úur^   r¦  ÚerrÚurls2Ústarts2Úends2Úpaths2Úwhole_filesÚ	new_pathsÚ
new_startsÚnew_endsÚ	bytes_outrd   ÚnsÚneÚbrW  ÚvÚexÚnew_exs$                                       r   r½  zReferenceFileSystem.cato  sï  € Ý�d�CÑ Ô ð 	& Yð 	&Ý%Ð%Ý�d�DÑ!Ô!ð 	& yð 	&µCÐ7OÐ7OÈ$Ð7OÑ7OÔ7OÑ4OÔ4Oð 	&Ý%Ð%å% d¨D¬OÑ<Ô<ˆ
ØˆØ&×,Ò,Ñ.Ô.ð I	Bñ I	B‰LˆE�5Ø”˜%”ˆBØ.0°"°b¸"¨nÑ+ˆD�&˜$ Øð *ð *�ð*Ø"×.Ò.¨qÑ1Ô1‘G�A�q˜!Ý% a­%µ¨Ñ6Ô6ð !à ð!ð —K’K ‘N”N�NØ—M’M !Ñ$Ô$Ð$Ø—K’K ‘N”N�NØ×&Ò& qÑ)Ô)Ð)Ð)øõ )ð %ð %ð %Ø 7Ò*Ð*ØØ 6Ò)Ð)Ø!$˜˜A™øøøøøøøøøð	%øøøð ˆEØˆGØˆEØˆFÝ™%œ%ˆKÝ! $¨°°kÑBÔBð %ð %‘
��1�a˜Ý˜a¥Ñ'Ô'ð 
%à�C˜‘F�FØ�Yð  —O’O AÑ&Ô&Ð&Ø—L’L ‘O”O�OØ—N’N 1Ñ%Ô%Ð%Ø—L’L ‘O”O�OØ—M’M !Ñ$Ô$Ð$øÝ! $¨°°kÑBÔBð %ð %‘
��1�a˜à�= Q¨kÐ%9Ð%9Ø—L’L ‘O”O�OØ—N’N 1Ñ%Ô%Ð%Ø—L’L ‘O”O�OØ—M’M !Ñ$Ô$Ð$øõ /BÝ�U‘”Ý�W‘”Ý�U‘”ØØœØœ.ð/ñ /ô /Ñ+ˆI�z 8ð Ÿš i°¸XÑFÔFˆIõ " $¨°°kÑBÔBð Bð B‘
��1�a˜Ø˜�8�8ØÝ%(¨°JÀÈ)Ñ%TÔ%Tð 
Bð 
B‘M�B˜˜B Ø˜Q’w�w B J°"°*Ý% a­Ñ3Ô3ð ,Ø%&˜C ™F˜Fà%& q¨ s¤V˜C ™F˜FØ˜qš˜ Q¨"¢W W°°b²°Ý% a­Ñ3Ô3ð BØ%&˜C ™F˜Fà%& q¨2¡v°°R±Ð0@¸DÐ'@Ô%A˜C ™Føð
BñBð —H’H‘J”J×$Ò$Ñ&Ô&ð 		$ð 		$‰DˆAˆqå˜!�YÑ'Ô'ð $¨A°´Ð,@Ð,@Ø˜”V�Ý.¨q°$´/À!Ô2DÑEÔE�Ø#%�Ô Ø˜wÒ&Ð&Ø �LØ Ò'Ð'Ø#�C˜‘Føåˆs‰8Œ8�qŠ=ˆ=�Z¨­cÑ2Ô2ˆ=°sÀ$°°Ý˜#‘;”;ÐØˆ
s   Â$5D0Ä0
EÄ:EÅEc                 óÂ   — |                      dd ¦  «        }|€|                      |¦  «         d S |dk    r|                      ||¬¦  «         d S t          d|› �¦  «        ‚)NÚversionrX   )ry  z Unknown reference spec version: )r.   Ú_process_references0Ú_process_references1rð   )r   r4   ry  Úverss       r   r„  z'ReferenceFileSystem._process_referencesÑ  st   € Ø�~Š~˜i¨Ñ.Ô.ˆØˆ<Ø×%Ò% jÑ1Ô1Ð1Ð1Ð1Ø�QŠYˆYØ×%Ò% jÐEWÐ%ÑXÔXÐXÐXÐXåÐFÀÐFÐFÑGÔGÐGr   c                 óz   — t          |t          ¦  «        rd„ |                     ¦   «         D ¦   «         }|| _        dS )z&Make reference dict for Spec Version 0c                 ól   — i | ]1\  }}|t          |t          ¦  «        rt          j        |¦  «        n|“Œ2S rQ   )r/   rv  rD   rE   )rŒ   rÒ   rL   s      r   r�   z<ReferenceFileSystem._process_references0.<locals>.<dictcomp>á  sI   € ð ð ð á�C˜ð ­
°3½Ñ(=Ô(=ÐF•T”Z ‘_”_�_À3ðð ð r   N)r/   rv  r  r4   )r   r4   s     r   rå  z(ReferenceFileSystem._process_references0Ü  sK   € å�j¥$Ñ'Ô'ð 	ðð à *× 0Ò 0Ñ 2Ô 2ðñ ô ˆJð %ˆŒˆˆr   c                 óò  ‡ ‡— ‰ j         r‰ j        rdd lŠi ‰ _        ‰                      |                     di ¦  «        ¦  «         t          d¦  «        ˆˆ fd„¦   «         }|                     di ¦  «                             ¦   «         D �],\  }}t          |t          ¦  «        rD| 
                    d¦  «        r$t          j        |dd …         ¦  «        ‰ j        |<   |‰ j        |<   Œ_t          |t          ¦  «        rt          j        |¦  «        ‰ j        |<   Œ‘‰ j        rŠ|d         }d|v rM‰ j         r; |                     dd	¦  «                             d
d¦  «        j        di ‰ j        ¤Ž}n ||¦  «        }t%          |¦  «        dk    r|gn||d         |d         g‰ j        |<   �Œ"|‰ j        |<   �Œ.‰ j                             ‰                      |                     dg ¦  «        ¦  «        ¦  «         d S )Nr   r{  iè  c                 óN   •—  ‰                      | ¦  «        j        di ‰j        ¤ŽS ©NrQ   )ÚTemplateÚrenderr{  )rÒ  Újinja2r   s    €€r   Ú_render_jinjaz?ReferenceFileSystem._process_references1.<locals>._render_jinjaí  s*   ø€ à,�6—?’? 1Ñ%Ô%Ô,Ð>Ð>¨t¬~Ð>Ð>Ð>r   r˜   zbase64:r“  ú{{Ú{z}}Ú}rX   r0  ÚgenrQ   )rz  r{  rï  r4   Ú_process_templatesr.   r   r  r/   r2   r°   r–  r—  rv  rD   rE   Úreplacer�   rJ   rÛ   Ú_process_gen)r   r4   ry  rð  rW  rà  rÒ  rï  s   `      @r   ræ  z(ReferenceFileSystem._process_references1ç  s  øø€ ØÔ$ð 	¨¬ð 	ØˆMˆMˆMØˆŒØ×Ò 
§¢¨{¸BÑ ?Ô ?Ñ@Ô@Ð@å	�4‰Œð	?ð 	?ð 	?ð 	?ð 	?ñ 
Œð	?ð —N’N 6¨2Ñ.Ô.×4Ò4Ñ6Ô6ð 	'ñ 	'‰DˆAˆqÝ˜!�SÑ!Ô!ð 'Ø—<’< 	Ñ*Ô*ð AÝ)/Ô)9¸!¸A¸B¸B¼%Ñ)@Ô)@�D”O AÑ&Ø%&�” Ñ"Ð"Ý˜A�tÑ$Ô$ð 'Ý%)¤Z°¡]¤]�” Ñ"Ð"Ø”ð 'Ø�a”D�Ø˜1�9�9ØÔ,ð -ð$˜AŸIšI d¨CÑ0Ô0ß$šW T¨3Ñ/Ô/Ü#ð6ð 6à&*¤nð6ð 6ð ˜ð *˜M¨!Ñ,Ô,˜Ý,/°©F¬F°aªK¨K a S S¸aÀÀ1ÄÀqÈÄt¸_�” Ñ"Ñ"à%&�” Ñ"Ñ"ØŒ×Ò˜t×0Ò0°·²ÀÀrÑ1JÔ1JÑKÔKÑLÔLÐLÐLÐLr   c                 óÐ   ‡— i | _         | j        �|                     | j        ¦  «         |                     ¦   «         D ]'\  }}d|v rdd lŠ|fˆfd„	| j         |<   Œ|| j         |<   Œ(d S )Nrñ  r   c                 óD   •—  ‰                      | ¦  «        j        di |¤ŽS rì  )rí  rî  )Útempr«   rï  s     €r   rÐ   z8ReferenceFileSystem._process_templates.<locals>.<lambda>  s7   ø€ ð >¸V¿_º_Øñ>ô >äð>#ð >#à!ð>#ð >#€ r   )r{  ry  rÛ   r  rï  )r   ÚtmprW  rà  rï  s       @r   rõ  z&ReferenceFileSystem._process_templates  s˜   ø€ ØˆŒØÔ"Ð.Ø�JŠJ�tÔ.Ñ/Ô/Ð/Ø—I’I‘K”Kð 	&ð 	&‰DˆAˆqØ�qˆyˆyØ���à01ð %#ð %#ð %#ð %#ð %#�”˜qÑ!Ð!ð %&�”˜qÑ!Ð!ð	&ð 	&r   c           	      óÊ  ‡— i }|D �][}d„ |d                               ¦   «         D ¦   «         Šˆfd„t          j        ‰                     ¦   «         Ž D ¦   «         }|D �]}dd l} |                     |d         ¦  «        j        d
i |¤| j        ¤Ž} |                     |d         ¦  «        j        d
i |¤| j        ¤Ž}d|v r�d|v r}t           |                     |d         ¦  «        j        d
i |¤| j        ¤Ž¦  «        }	t           |                     |d         ¦  «        j        d
i |¤| j        ¤Ž¦  «        }
||	|
g||<   Œæd|v d|v z  rt          d	¦  «        ‚|g||<   �Œ�Œ]|S )Nc                 óÂ   — i | ]\\  }}|t          |t          ¦  «        r|n>t          |                     d d¦  «        |d         |                     dd¦  «        ¦  «        “Œ]S )r˜  r   ÚstopÚsteprX   )r/   r0   r  r.   )rŒ   rW  rà  s      r   r�   z4ReferenceFileSystem._process_gen.<locals>.<dictcomp>  st   € ð ð ð ñ �A�qð å! !¥TÑ*Ô*ðO�A�Aå˜qŸušu W¨aÑ0Ô0°!°F´)¸Q¿UºUÀ6È1Ñ=MÔ=MÑNÔNð	ð ð r   Ú
dimensionsc              3   óv   •K  — | ]3}t          t          ‰                     ¦   «         |¦  «        ¦  «        V — Œ4d S r   )rv  rU   rV   )rŒ   r)   Ú	dimensions     €r   r´   z3ReferenceFileSystem._process_gen.<locals>.<genexpr>!  sS   øè è € ð ð àõ •S˜ŸšÑ)Ô)¨6Ñ2Ô2Ñ3Ô3ðð ð ð ð ð r   r   rÒ   rs   rè   Úlengthz^Both 'offset' and 'length' are required for a reference generator entry if either is provided.rQ   )
r  rf  rg  r)   rï  rí  rî  r{  rû   rð   )r   Úgensr;   rô  ÚproductsÚprrï  rÒ   rs   rè   r  r  s              @r   r÷  z ReferenceFileSystem._process_gen  sã  ø€ ØˆØð  	%ñ  	%ˆCðð ð   Ô-×3Ò3Ñ5Ô5ðñ ô ˆIðð ð ð å'Ô/°×1AÒ1AÑ1CÔ1CÐDðñ ô ˆHð ð %ñ %�Ø���à8�f—o’o c¨%¤jÑ1Ô1Ô8ÐPÐP¸2ÐPÀÄÐPÐP�Ø8�f—o’o c¨%¤jÑ1Ô1Ô8ÐPÐP¸2ÐPÀÄÐPÐP�Ø �O�O¨(°c¨/¨/Ý Ø=˜Ÿš¨¨H¬Ñ6Ô6Ô=ÐUÐUÀÐUÀdÄnÐUÐUñô �Fõ !Ø=˜Ÿš¨¨H¬Ñ6Ô6Ô=ÐUÐUÀÐUÀdÄnÐUÐUñô �Fð !$ V¨VÐ4�C˜‘H�HØ #�o¨(°c¨/Ñ:ð %Ý$ðKñô ð ð
 !$˜u�C˜‘H‘Hñ'%ð( ˆ
r   c                 ó  — dg i| _         | j                             ¦   «         }|D �]_\  }}t          |t          t
          f¦  «        st          |d¦  «        rt          |¦  «        }nt          |¦  «        dk    rd }n|\  }}}d|v r|                     dd¦  «        d         nd}|}|g}|r>|| j         vr5|  	                    |¦  «        }| 
                    |¦  «         |r	|| j         v°5|                     ¦   «          t          ||dd …         ¦  «        D ]I\  }	}
|
| j         vsJ ‚|	| j         v sJ ‚| j         |	          
                    |
dddœ¦  «         g | j         |
<   ŒJ| j         |          
                    |d|dœ¦  «         �Œad S )	Nr·   r  rX   r„   r   rÇ   rÈ   rn   )Údircacher4   r  r/   r#  r2   r!  rJ   r±   Ú_parentr9   ÚreverserU   )r   r  r3   rš  rÊ   ró   ÚparÚpar0ÚsubdirsÚparentÚchilds              r   Ú_dircache_from_itemsz(ReferenceFileSystem._dircache_from_items;  sÖ  € Ø˜R˜ˆŒØŒ_×"Ò"Ñ$Ô$ˆØð 	Tñ 	T‰JˆD�$Ý˜$¥­ Ñ-Ô-ð "µ¸¸zÑ1JÔ1Jð "Ý˜4‘y”y��Ý�T‘”˜a’�Ø��à!‘
��1�dØ,/°4¨K¨K�$—+’+˜c 1Ñ%Ô% aÔ(Ð(¸RˆCØˆDØ�fˆGØð %˜4 t¤}Ð4Ð4à—|’| DÑ)Ô)�Ø—’˜tÑ$Ô$Ð$ð ð %˜4 t¤}Ð4Ð4ð
 �OŠOÑÔÐÝ!$ W¨g°a°b°b¬kÑ!:Ô!:ð *ð *‘�˜à D¤MÐ1Ð1Ð1Ð1Ø ¤Ð.Ð.Ð.Ð.Ø”˜fÔ%×,Ò,Ø"¨KÀÐCÐCñô ð ð (*�”˜eÑ$Ð$àŒM˜#Ô×%Ò%¨t¸VÈTÐ&RÐ&RÑSÔSÐSÑSð3	Tð 	Tr   rs  c                 ó   — |                       |¦  «        \  }}}t          |t          ¦  «        rt          j        |||…         ¦  «        S t          |¦  «        \  }	}
|€|€ | j        |	         j        ||f||dœ|¤ŽS t          | ||f||dœ|¤ŽS )N)Ú
block_sizeÚcache_options)	rŸ  r/   r#  r‘   r’   r   r|  Ú_openÚReferenceFile)r   r3   Úmoder  r  r«   r¥  r�  rž  r<   ró   s              r   r  zReferenceFileSystem._openY  sÜ   € Ø$(×$4Ò$4°TÑ$:Ô$:Ñ!ˆ�V˜Tõ �k¥5Ñ)Ô)ð 	8Ý”:˜k¨&°¨+Ô6Ñ7Ô7Ð7å$ [Ñ1Ô1‰ˆ�!Øˆ>˜d˜lØ+�4”8˜HÔ%Ô+ØØðð &Ø+ð	ð ð
 ðð ð õ ØØØð
ð "Ø'ð
ð 
ð ð
ð 
ð 	
r   c                 ó¶  — t                                d|¦  «         |                      |¦  «        }t          | j        t
          ¦  «        r?	 | j                             ||¦  «        S # t          $ r Y nw xY wt          d|› d�¦  «        ‚| j	        s|  
                    ¦   «          |                      |¦  «        }|€t          |¦  «        ‚|r|S d„ |D ¦   «         S )Nzlist %sú'z' is not a known keyc                 ó   — g | ]
}|d          ‘ŒS ©rÄ   rQ   )rŒ   Úos     r   r¾   z*ReferenceFileSystem.ls.<locals>.<listcomp>ƒ  s   € Ð'Ð'Ð'˜a��&”	Ð'Ð'Ð'r   )r�  r•  r”  r/   r4   ra   rå   rî   rò   r  r  Ú_ls_from_cache)r   r3   rÞ   r«   r;   s        r   rå   zReferenceFileSystem.lss  sù   € Ý�Š�Y Ñ%Ô%Ð%Ø×#Ò# DÑ)Ô)ˆÝ�d”oÕ':Ñ;Ô;ð 	DðØ”×)Ò)¨$°Ñ7Ô7Ð7øÝð ð ð Ø�ðøøøå#Ð$B¨Ð$BÐ$BÐ$BÑCÔCÐCØŒ}ð 	(Ø×%Ò%Ñ'Ô'Ð'Ø×!Ò! $Ñ'Ô'ˆØˆ;Ý# DÑ)Ô)Ð)Øð 	ØˆJØ'Ð' 3Ð'Ñ'Ô'Ð's   ÁA' Á'
A4Á3A4c                 óV   — |                       |¦  «        p|                      |¦  «        S r   )r®  r€  ©r   r3   r«   s      r   r¦   zReferenceFileSystem.exists…  s%   € Ø�zŠz˜$ÑÔÐ4 4§;¢;¨tÑ#4Ô#4Ð4r   c                 óÎ   ‡— | j         r	‰| j         v S t          | j        t          ¦  «        r‰| j                             ¦   «         v S t          ˆfd„| j        D ¦   «         ¦  «        S )Nc              3   óH   •K  — | ]}|                      ‰› d �¦  «        V — ŒdS )r„   NrÔ   )rŒ   ró   r3   s     €r   r´   z,ReferenceFileSystem.isdir.<locals>.<genexpr>�  s5   øè è € ÐIÐI°A�q—|’| t J J JÑ/Ô/ÐIÐIÐIÐIÐIÐIr   )r  r/   r4   ra   rH   rÇ  ©r   r3   s    `r   r®  zReferenceFileSystem.isdirˆ  sq   ø€ ØŒ=ð 	JØ˜4œ=Ð(Ð(Ý˜œÕ)<Ñ=Ô=ð 	JØ˜4œ?×2Ò2Ñ4Ô4Ð4Ð4õ ÐIÐIÐIÐI¸¼ÐIÑIÔIÑIÔIÐIr   c                 ó   — || j         v S r   r©  r!  s     r   r€  zReferenceFileSystem.isfile’  s   € Ø�t”Ð&Ð&r   c              ‹   ó$   K  —  | j         ||fi |¤ŽS r   )rå   )r   r3   rÞ   r«   s       r   Ú_lszReferenceFileSystem._ls•  s"   è è € ØˆtŒw�t˜VÐ.Ð. vÐ.Ð.Ð.r   c                 ó:  •‡ ‡— |r t          ¦   «         j        ‰f|||dœ|¤ŽS ‰r6‰                      ‰¦  «        Št          ˆfd„‰ j        D ¦   «         ¦  «        }nt          ‰ j        ¦  «        }|r)‰ j        s‰                      ¦   «          ˆ fd„|D ¦   «         S |S )N)ÚmaxdepthÚwithdirsrÞ   c              3   óF   •K  — | ]}|                      ‰¦  «        ¯|V — Œd S r   rÔ   )rŒ   rW  r3   s     €r   r´   z+ReferenceFileSystem.find.<locals>.<genexpr>Ÿ  s4   øè è € ÐHÐH˜Q°Q·\²\À$Ñ5GÔ5GÐH�qÐHÐHÐHÐHÐHÐHr   c                 óH   •— i | ]}|‰                      |¦  «        d          “ŒS )r   )r  )rŒ   rW  r   s     €r   r�   z,ReferenceFileSystem.find.<locals>.<dictcomp>¥  s.   ø€ Ð<Ð<Ð<°Q�A�t×*Ò*¨1Ñ-Ô-¨aÔ0Ð<Ð<Ð<r   )r   Úfindr”  rÜ   r4   r  r  )r   r3   r&  r'  rÞ   r«   r»  r   s   ``     €r   r*  zReferenceFileSystem.find˜  sØ   øøø€ Øð 	Ø•5‘7”7”<ØðØ'°(À6ðð ØMSðð ð ð ð 	(Ø×'Ò'¨Ñ-Ô-ˆDÝÐHÐHÐHÐH $¤/ÐHÑHÔHÑHÔHˆAˆAå�t”Ñ'Ô'ˆAØð 	Ø”=ð ,Ø×)Ò)Ñ+Ô+Ð+Ø<Ð<Ð<Ð<¸!Ð<Ñ<Ô<Ð<àˆHr   c                 ó&  ‡— | j                              ‰¦  «        }|�Vt          |t          t          f¦  «        r‰dt          |¦  «        dœS t          |¦  «        dk    r‰d|d         dœS ‰dd dœg}n,|                      ‰d¦  «        }ˆfd„|D ¦   «         }|s‰dddœS |d         d	         €]t          | j         ‰         d         ¦  «        \  }}| j        |          	                    | j         ‰         d         ¦  «        |d         d	<   |d         S )
Nrn   rÈ   rX   r0  Tc                 ó,   •— g | ]}|d          ‰k    ¯|‘ŒS r  rQ   )rŒ   r  r3   s     €r   r¾   z,ReferenceFileSystem.info.<locals>.<listcomp>µ  s'   ø€ Ð8Ð8Ð8˜! a¨¤i°4Ò&7Ð&7�AÐ&7Ð&7Ð&7r   rÇ   r   rÊ   )
r4   r.   r/   r2   r#  rJ   rå   r   r|  rÊ   )r   r3   r«   r;   Úout0Úprotró   s    `     r   r‚  zReferenceFileSystem.info©  s'  ø€ ØŒo×!Ò! $Ñ'Ô'ˆØˆ?Ý˜#¥¥U˜|Ñ,Ô,ð Fà $¨f½cÀ#¹h¼hÐGÐGÐGÝ�S‘”˜A’�Ø $¨f¸cÀ!¼fÐEÐEÐEà!%¨v¸tÐDÐDÐE��à—'’'˜$ Ñ%Ô%ˆCØ8Ð8Ð8Ð8˜sÐ8Ñ8Ô8ˆDØð FØ $¨kÀ1ÐEÐEÐEØ�Œ7�6Œ?Ð"å$ T¤_°TÔ%:¸1Ô%=Ñ>Ô>‰GˆD�!Ø"œh tœn×1Ò1°$´/À$Ô2GÈÔ2JÑKÔKˆD�ŒG�F‰OØ�AŒwˆr   c              ‹   ó0   K  — |                       |¦  «        S r   )r‚  r  s      r   Ú_infozReferenceFileSystem._info¾  s   è è € Ø�yŠy˜‰ŒÐr   c              ‹   ór   K  — | j                              |d ¦  «         | j                             ¦   «          d S r   )r4   rJ  r  rI  r  s      r   Ú_rm_filezReferenceFileSystem._rm_fileÁ  sA   è è € ØŒ×ÒØ�$ñ	
ô 	
ð 	
ð 	Œ×ÒÑÔÐÐÐr   Ú	overwritec              ‹   ó”   K  — |dk    r|                       |¦  «        rt          ‚|| j        |<   | j                             ¦   «          d S )Nr¬   )r¦   ÚFileExistsErrorr4   r  rI  )r   r3   r—   r  r«   s        r   Ú
_pipe_filezReferenceFileSystem._pipe_fileÇ  sN   è è € Ø�8ÒÐ §¢¨DÑ 1Ô 1ÐÝ!Ð!à $ˆŒ˜ÑØŒ×ÒÑÔÐÐÐr   c              ‹   ó  K  — |dk    r|                       |¦  «        rt          ‚t          |d¦  «        5 }|                     ¦   «         | j        |<   d d d ¦  «         n# 1 swxY w Y   | j                             ¦   «          d S )Nr¬   rs  )r¦   r5  r   Úreadr4   r  rI  )r   r±  r°  r  r«   rÀ   s         r   Ú	_put_filezReferenceFileSystem._put_fileÎ  s¸   è è € à�8ÒÐ §¢¨EÑ 2Ô 2ÐÝ!Ð!Ý�%˜ÑÔð 	. !Ø%&§V¢V¡X¤XˆDŒO˜EÑ"ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.àŒ×ÒÑÔÐÐÐs   µAÁA"Á%A"c                 óø  — i }| j                              ¦   «         D ]u\  }}t          |t          ¦  «        rV	 |                     d¦  «        ||<   Œ4# t
          $ r/ dt          j        |¦  «        z                        ¦   «         ||<   Y Œlw xY w|||<   Œvt          j	        |dfi |¤Ž5 }| 
                    t          j        d|dœ¦  «                             ¦   «         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z+Write modified references into new locationÚasciir’  r­  rX   )rä  r˜   N)r4   r  r/   r#  r"  ÚUnicodeDecodeErrorr–  Ú	b64encodert   r   r   rD   rE   rF   )r   rs   rª   r;   rW  rà  rÀ   s          r   Ú	save_jsonzReferenceFileSystem.save_jsonÖ  sj  € àˆØ”O×)Ò)Ñ+Ô+ð 	ð 	‰DˆAˆqÝ˜!�UÑ#Ô#ð ðIØŸXšX gÑ.Ô.�C˜‘F�FøÝ)ð Ið Ið IØ(­6Ô+;¸AÑ+>Ô+>Ñ>×FÒFÑHÔH�C˜‘F�F�FðIøøøð ��A‘�ÝŒ[˜˜dÐ6Ð6 oÐ6Ð6ð 	F¸!Ø�GŠG•D”J¨1°cÐ:Ð:Ñ;Ô;×BÒBÑDÔDÑEÔEÐEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fs#   ·AÁ6B	ÂB	Â%=C/Ã/C3Ã6C3)NNNNNNNNTrp  rq  rh   rj  )F)FrÁ  r   )rs  NN)T)NFF)r3  )$r!   r"   r#   rk  r<   Úcachabler   rŸ  r¢  r“   rª  r²  r	   r·  r.   r½  r„  rå  ræ  rõ  r÷  r  r  rå   r¦   r®  r€  r$  r*  r‚  r0  r2  r6  r9  r>  r$   r%   s   @r   ro  ro  T  s�  ø€ € € € € ðð ð €HØ€Hð
 ØØØØØØØØØØØð_ð _ð _ð _ð _ð _ðB*!ð *!ð *!ð *!ðX
Bð 
Bð 
Bð 
BðBð Bð Bð Bð&ð &ð &ðð ð ð /?ð 
,ð 
,ð 
,ð 
,ð2ð 2ð 2ð 2ð`ð `ð `ð `ðDHð Hð Hð Hð	%ð 	%ð 	%ðMð Mð Mð MðB&ð &ð &ð#ð #ð #ðJTð Tð Tð<
ð 
ð 
ð 
ð4(ð (ð (ð (ð$5ð 5ð 5ðJð Jð Jð'ð 'ð 'ð/ð /ð /ð /ðð ð ð ð ð ð"ð ð ð*ð ð ðð ð ðð ð ð ðð ð ð ðFð Fð Fð Fð Fð Fð Fr   ro  c                   óR   ‡ — e Zd Z	 	 	 	 	 	 d
ˆ fd„	Zed„ ¦   «         Zˆ fd„Zd	„ Zˆ xZS )r  rs  ÚdefaultTÚ	readaheadNc	           
      ó  •—  t          ¦   «         j        ||f||||||dœ|	¤Ž | j                             | j        ¦  «        \  }
| _        | _        t          |
¦  «        \  }}| j        j        |         | _	        |
| _
        d | _        d S )N)r  r  Ú
autocommitrÊ   Ú
cache_typer  )r   r   ru   rŸ  r3   r˜  r™  r   r|  Úsrc_fsÚsrc_pathÚ_f)r   ru   r3   r  r  rD  rE  r  rÊ   r«   r¥  r<   ró   r   s                €r   r   zReferenceFile.__init__æ  s¥   ø€ ð 	�‰ŒÔØØð
	
ð Ø!Ø!ØØ!Ø'ð
	
ð 
	
ð ð
	
ð 
	
ð 
	
ð -1¬G×,?Ò,?ÀÄ	Ñ,JÔ,JÑ)ˆ�T”Z ¤Ý$ [Ñ1Ô1‰ˆ�!Ø”g”k (Ô+ˆŒØ#ˆŒØˆŒˆˆr   c                 ó¢   — | j         �| j         j        r6 | j        j        | j        f| j        | j        | j        ddœ| j        ¤Ž| _         | j         S )NÚnone)r  r  rD  rE  )	rH  ÚclosedrF  r  rG  r  Ú	blocksizerD  r«   r   s    r   rÀ   zReferenceFile.f  s_   € àŒ7ˆ?˜dœgœnˆ?Ø'�d”kÔ'Ø”ðà”YØœ>Øœ?Ø!ðð ð ”+ðð ˆDŒGð Œwˆr   c                 ó„   •— | j         �| j                              ¦   «          t          ¦   «                              ¦   «         S r   )rH  Úcloser   )r   r   s    €r   rN  zReferenceFile.close  s,   ø€ ØŒ7ÐØŒG�MŠM‰OŒOˆOÝ‰wŒw�}Š}‰ŒÐr   c                 ó¾   — || j         z   }t          || j         z   | j        ¦  «        }| j                             |¦  «         | j                             ||z
  ¦  «        S r   )r˜  Úminr™  rÀ   Úseekr8  )r   r˜  r™  s      r   Ú_fetch_rangezReferenceFile._fetch_range  sR   € Ø˜œ
Ñ"ˆÝ�#˜œ
Ñ" D¤HÑ-Ô-ˆØŒ�Š�EÑÔÐØŒv�{Š{˜3 ™;Ñ'Ô'Ð'r   )rs  rA  TrB  NN)	r!   r"   r#   r   rl  rÀ   rN  rR  r$   r%   s   @r   r  r  å  s”   ø€ € € € € ð
 ØØØØØðð ð ð ð ð ð: ð
ð 
ñ „Xð
ðð ð ð ð ð
(ð (ð (ð (ð (ð (ð (r   r  )2r–  Úcollectionsr‘   rf  Úloggingr  r¯  Ú	functoolsr   r   Útypingr   r   Úfsspec.corert   Úfsspec.specr   ÚujsonrD   ry   Úfsspec.asynr   Úfsspec.callbacksr	   r
   r   r   Ú#fsspec.implementations.asyn_wrapperr   Úfsspec.utilsr   r   r   Ú	getLoggerr�  ÚRuntimeErrorr   r+   r6   r=   ÚabcÚ
ValuesViewr?   Ú	ItemsViewrS   r_   ÚMutableMappingra   ro  r  rQ   r   r   ú<module>rd     sù  ðØ €€€Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðØÐÐÐÐøØð ð ð Øð Øˆˆˆøøðøøøð (Ð 'Ð 'Ð 'Ð 'Ð 'Ø -Ð -Ð -Ð -Ð -Ð -Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø FÐ FÐ FÐ FÐ FÐ FØ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà	ˆÔ	Ð-Ñ	.Ô	.€ðTð Tð Tð Tð T˜Lñ Tô Tð Tð"ð "ð "ð?ð ?ð ?ðð ð ð
Bð 
Bð 
Bð 
Bð 
B�[”_Ô/ñ 
Bô 
Bð 
BðAð Að Að Að A�K”OÔ-ñ Aô Að Að
ð ð ðz@ð z@ð z@ð z@ð z@˜+œ/Ô8ñ z@ô z@ð z@ðzN
Fð N
Fð N
Fð N
Fð N
F˜/ñ N
Fô N
Fð N
Fðb4(ð 4(ð 4(ð 4(ð 4(Ð(ñ 4(ô 4(ð 4(ð 4(ð 4(s   ¼A ÁAÁA