Ë
    S^(hT  ã                   ó|  — d Z ddl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ddlmZ ddlmZmZ ddlZddlmZmZ dd	lmZ  e«       rddlZ e«       rdd
lmZ ddlmZ  ej:                  e«      Z	 dd„Z dee!   dejD                  dee!e
jD                  f   de!dee!   ejD                  ff
d„Z#d„ Z$d„ Z%d„ Z&d„ Z'y)z!PyTorch - Flax general utilities.é    N)ÚUnpicklingError)ÚDictÚTuple)Ú
from_bytes)Úflatten_dictÚunflatten_dicté   )Úis_safetensors_availableÚis_torch_available)Úlogging)Ú	safe_open)Ú	load_filec                 ób  — |sët         j                  j                  |«      }t        j	                  d|› �«       |j                  d«      rCi }t        |d¬«      5 }|j                  «       D ]  }|j                  |«      ||<   Œ 	 ddd«       nR	 ddl	} |j                  |dd	¬
«      }t        j	                  dt        d„ |j                  «       D «       «      d›d�«       t!        || «      }	|	S t#        || «      }	|	S # 1 sw Y   Œ%xY w# t        t        f$ r t        j                  d«       ‚ w xY w)z(Load pytorch checkpoints in a flax modelzLoading PyTorch weights from ú.safetensorsÚflax)Ú	frameworkNr   zËLoading a PyTorch model in Flax, requires both PyTorch and Flax to be installed. Please see https://pytorch.org/ and https://flax.readthedocs.io/en/latest/installation.html for installation instructions.ÚcpuT)Úmap_locationÚweights_onlyzPyTorch checkpoint contains c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­w©N)Únumel)Ú.0Úts     úf/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/modeling_flax_pytorch_utils.pyú	<genexpr>z=load_pytorch_checkpoint_in_flax_state_dict.<locals>.<genexpr>K   s   è ø€ Ò:eÈ¸1¿7¹7¿9Ñ:eùs   ‚ú,z parameters.)ÚosÚpathÚabspathÚloggerÚinfoÚendswithr   ÚkeysÚ
get_tensorÚtorchÚImportErrorÚModuleNotFoundErrorÚerrorÚloadÚsumÚvaluesÚ"convert_pytorch_state_dict_to_flaxÚ*convert_pytorch_sharded_state_dict_to_flax)
Ú
flax_modelÚpytorch_checkpoint_pathÚ
is_shardedÚallow_missing_keysÚpt_pathÚpt_state_dictÚfÚkr&   Úflax_state_dicts
             r   Ú*load_pytorch_checkpoint_in_flax_state_dictr8   1   s3  € ñ
 Ü—'‘'—/‘/Ð"9Ó:ˆÜ�‰Ð3°G°9Ð=Ô>à×Ñ˜NÔ+ØˆMÜ˜7¨fÔ5ð 7¸ØŸ™›ò 7�AØ'(§|¡|°A£�M !Ò$ñ7÷7ð 7ðÛð '˜EŸJ™J w¸UÐQUÔVˆMÜ�K‰KÐ6´sÑ:eÈm×NbÑNbÓNdÔ:eÓ7eÐfgÐ6hÐhtÐuÔvä<¸]ÈJÓWˆð Ðô EÐE\Ð^hÓiˆØÐ÷+7ð 7ûô  Ô!4Ð5ò Ü—‘ð%ôð
 ðús   Á*C<ÂD Ã<DÄ&D.Úpt_tuple_keyÚ	pt_tensorÚrandom_flax_state_dictÚmodel_prefixÚreturnc                 ó®  ‡‡— dt         t           dt        fˆˆfd„}| dd dz   }| d   dv r ||«      r||fS | dd dz   }| d   d	k(  r || «      s||fS | dd d
z   }| d   dk(  r || «      s||fS | dd dz   }| d   dk(  r ||«      r||fS | dd dz   }| d   dk(  r/|j                  dk(  r  || «      s|j	                  dddd«      }||fS | dd dz   }| d   dk(  r || «      s|j
                  }||fS | dd dz   }| d   dk(  r||fS | dd dz   }| d   dk(  r||fS d}| ddd…   dk(  r	| d   dz   }n| ddd…   dk(  r| d   dz   }|�| dd |fz   }||fS | |fS )zYRename PT weight names to corresponding Flax weight names and reshape tensor if necessaryÚkeyr=   c                 óD   •— t        t        ‰«      | ‰f| z   hz  «      dkD  S )zAChecks if `key` of `(prefix,) + key` is in random_flax_state_dictr   )ÚlenÚset)r?   r<   r;   s    €€r   Úis_key_or_prefix_key_in_dictzCrename_key_and_reshape_tensor.<locals>.is_key_or_prefix_key_in_dict\   s+   ø€ ä”3Ð-Ó.°#¸°ÈÑ7LÐ1MÑMÓNÐQRÑRÐRó    Néÿÿÿÿ)Úscale)ÚweightÚgamma)ÚmeanÚrunning_mean)ÚvarÚrunning_var)Ú	embeddingrG   )Úkernelé   é   é   r	   r   ©rG   rH   )ÚbiasÚbetaéýÿÿÿ)ÚparametrizationsÚ	original0éþÿÿÿÚ_g)rV   Ú	original1Ú_v)r   ÚstrÚboolÚndimÚ	transposeÚT)r9   r:   r;   r<   rC   Úrenamed_pt_tuple_keyÚnames     ``   r   Úrename_key_and_reshape_tensorrc   T   sX  ù€ ðS¬%´©*ð S¼ö Sð
 (¨¨Ð,¨zÑ9ÐØ�BÑÐ.Ñ.Ñ3OÐPdÔ3eØ# YÐ.Ð.ð (¨¨Ð,¨yÑ8ÐØ�BÑ˜>Ò)Ñ2NÈ|Ô2\Ø# YÐ.Ð.ð (¨¨Ð,¨xÑ7ÐØ�BÑ˜=Ò(Ñ1MÈlÔ1[Ø# YÐ.Ð.ð (¨¨Ð,¨~Ñ=ÐØ�BÑ˜8Ò#Ñ(DÐEYÔ(ZØ# YÐ.Ð.ð (¨¨Ð,¨{Ñ:ÐØ�BÑ˜8Ò#¨	¯©¸!Ò(;ÑD`ÐamÔDnØ×'Ñ'¨¨1¨a°Ó3ˆ	Ø# YÐ.Ð.ð (¨¨Ð,¨{Ñ:ÐØ�BÑ˜8Ò#Ñ,HÈÔ,VØ—K‘Kˆ	Ø# YÐ.Ð.ð (¨¨Ð,¨{Ñ:ÐØ�BÑ˜7Ò"Ø# YÐ.Ð.ð (¨¨Ð,¨yÑ8ÐØ�BÑ˜6Ò!Ø# YÐ.Ð.ð €DØ�B�E˜�EÑÐ?Ò?Ø˜BÑ $Ñ&‰Ø	�b�e˜!�eÑ	Ð AÒ	AØ˜BÑ $Ñ&ˆØÐØ+¨C¨RÐ0°D°7Ñ:ÐØ# YÐ.Ð.à˜Ð"Ð"rD   c           
      óð  — t        «       xr: t        t        t        | j	                  «       «      «      t
        j                  «      }|rt
        j                  nd}| j                  «       D ��ci c]  \  }}||j                  “Œ }}}|rX| j                  «       D ]E  \  }}|j                  |k(  r|j                  «       }|j                  «       j                  «       | |<   ŒG |j                  }d|j                  v r|j                  d   }n|j                  }t        |«      }	d|j                  v r)t        |j                  d   «      }
|	j!                  |
«       i }||vxr2 || j#                  «       D �ch c]  }|j%                  d«      d   ’Œ c}v }||v xr2 || j#                  «       D �ch c]  }|j%                  d«      d   ’Œ c}v}| j                  «       D �]}  \  }}t'        |j%                  d«      «      }||   |k(  }|d   |k(  }|r|r|dd  }t)        |||	|«      \  }}|f|z   |	v }|r|r|f|z   }||	v rH|j*                  |	|   j*                  k7  r,t-        d|› d|	|   j*                  › d	|j*                  › d�«      ‚d|j                  v rˆd
|d   v sd|d   v rt/        j0                  |«      |d|z   <   Œád|d   v r|j3                  |d «       Œû|st/        j0                  |«      n$t/        j0                  |t.        j                  ¬«      |d|z   <   �Œ?|st/        j0                  |«      n$t/        j0                  |t.        j                  ¬«      ||<   �Œ€ t5        |«      S c c}}w c c}w c c}w )NÚbfloat16ÚparamsÚbatch_statsú.r   r	   ú1PyTorch checkpoint seems to be incorrect. Weight ú was expected to be of shape ú	, but is rI   rE   rK   ©rg   Únum_batches_tracked©Údtype©rf   )r   Ú
isinstanceÚnextÚiterr,   r&   ÚTensorre   Úitemsro   Úfloatr   ÚnumpyÚbase_model_prefixrf   r   Úupdater$   ÚsplitÚtuplerc   ÚshapeÚ
ValueErrorÚjnpÚasarrayÚpopr   )r4   r/   Úfrom_binre   r6   ÚvÚweight_dtypesr<   Úflax_model_paramsr;   Úflax_batch_statsr7   Ú$load_model_with_head_into_base_modelÚ$load_base_model_into_model_with_headÚpt_keyr:   r9   Úis_bfloat_16Úhas_base_model_prefixÚflax_keyÚflax_tensorÚrequire_base_model_prefixs                         r   r-   r-   —   s•  € ä!Ó#Òd¬
´4¼¸]×=QÑ=QÓ=SÓ8TÓ3UÔW\×WcÑWcÓ(d€HÙ!)Œu�~Š~¨z€Hà,9×,?Ñ,?Ó,A×B¡D A q�Q˜Ÿ™‘ZÐB€MÑBáØ!×'Ñ'Ó)ò 	/‰DˆAˆqà�w‰w˜(Ò"Ø—G‘G“I�Ø Ÿu™u›wŸ}™}›ˆM˜!Òð		/ð ×/Ñ/€Lð �:×$Ñ$Ñ$Ø&×-Ñ-¨hÑ7Ñà&×-Ñ-ÐÜ)Ð*;Ó<Ðð ˜
×)Ñ)Ñ)Ü'¨
×(9Ñ(9¸-Ñ(HÓIÐØ×%Ñ%Ð&6Ô7à€Oà,8Ð@QÐ,Qò ,Ø°-×2DÑ2DÓ2FÖG¨Q˜Ÿ™ › a›ÒGÐGð )ð -9Ð<MÐ,Mò ,Ø°m×6HÑ6HÓ6JÖK°˜QŸW™W S›\¨!›_ÒKÐKð )ð
 +×0Ñ0Ó2ó ,Ñˆ�	Ü˜VŸ\™\¨#Ó.Ó/ˆØ$ VÑ,°Ñ8ˆð !-¨Q¡°<Ñ ?ÐÙ/Ñ4IØ'¨¨Ð+ˆLô !>Ø˜)Ð%;¸\ó!
Ñˆ�+ð
 &2 O°hÑ$>ÐBXÐ$XÐ!Ù/Ñ4MØ$�¨Ñ1ˆHàÐ-Ñ-Ø× Ñ Ð$:¸8Ñ$D×$JÑ$JÒJÜ ØGÈÀxÐOlØ-¨hÑ7×=Ñ=Ð>¸iÈ×HYÑHYÐGZÐZ[ð]óð ð ˜J×-Ñ-Ñ-Ø˜ "™Ñ%¨°(¸2±,Ñ)>Ü?B¿{¹{È;Ó?W�Ð 0°8Ñ ;Ñ<Øà$¨°©Ñ4Ø×#Ñ# H¨dÔ3Øñ 1=”—‘˜KÔ(Ä#Ç+Á+ÈkÔad×amÑamÔBnð ˜K¨(Ñ2Ó3ñ 1=”—‘˜KÔ(Ä#Ç+Á+ÈkÔad×amÑamÔBnð ˜HÓ%ðU,ô\ ˜/Ó*Ð*ùó_ Cùò4 Hùò Ls   Á.M(Å5M.Æ-M3c                 óì  — dd l }i }| D �]H  } |j                  |d¬«      }|j                  «       D ��ci c]  \  }}||j                  “Œ }}}|j                  «       D ��ci c]M  \  }}||j                  |j                  k7  r|j                  «       n|j                  «       j                  «       “ŒO }}}|j                  }	d|j                  v rB|j                  d   }
t        |
«      }|j                  t        |j                  d   «      «       n|j                  }
t        |
«      }|	|
vxr2 |	|j                  «       D �ch c]  }|j                  d«      d   ’Œ c}v }|	|
v xr2 |	|j                  «       D �ch c]  }|j                  d«      d   ’Œ c}v}|j                  «       D �]¥  \  }}t        |j                  d«      «      }||   |j                  k(  }|d   |	k(  }|r|r|dd  }t        ||||	«      \  }}|	f|z   |v }|r|r|	f|z   }||v rH|j                  ||   j                  k7  r,t!        d|› d	||   j                  › d
|j                  › d�«      ‚d|j                  v r¦d|d   v rt#        j$                  |«      |d|z   <   Œäd|d   v rt#        j$                  |«      |d|z   <   �Œd|d   v r|j'                  |d «       �Œ#|st#        j$                  |«      n$t#        j$                  |t"        j                  ¬«      |d|z   <   �Œg|st#        j$                  |«      n$t#        j$                  |t"        j                  ¬«      ||<   �Œ¨ �ŒK t)        |«      S c c}}w c c}}w c c}w c c}w )Nr   T)r   rg   rf   rh   r	   ri   rj   rk   rI   rE   rl   rK   rm   rn   rp   )r&   r*   ru   ro   re   rw   rv   rx   rf   r   ry   r$   rz   r{   rc   r|   r}   r~   r   r€   r   )Úshard_filenamesr/   r&   r7   Ú
shard_filer4   r6   r‚   rƒ   r<   r„   r;   r†   r‡   rˆ   r:   r9   r‰   rŠ   r‹   rŒ   r�   s                         r   r.   r.   ó   s¨  € Ûð €OØ%ó Jˆ
à"˜Ÿ
™
 :¸DÔAˆØ0=×0CÑ0CÓ0E×F©¨¨1˜˜AŸG™G™ÐFˆÑFàYf×YlÑYlÓYn÷
ÙQUÐQRÐTUˆA˜AŸG™G u§~¡~Ò5ˆq�w‰wŒy¸1¿7¹7»9¿?¹?Ó;LÑLð
ˆñ 
ð "×3Ñ3ˆð ˜J×-Ñ-Ñ-Ø *× 1Ñ 1°(Ñ ;Ðä%1Ð2CÓ%DÐ"Ø"×)Ñ)¬,°z×7HÑ7HÈÑ7WÓ*XÕYà *× 1Ñ 1ÐÜ%1Ð2CÓ%DÐ"à0<ÐDUÐ0Uò 0
Ø°m×6HÑ6HÓ6JÖK°˜QŸW™W S›\¨!›_ÒKÐKð 	-ð 1=Ð@QÐ0Qò 0
Ø¸-×:LÑ:LÓ:NÖ O°Q §¡¨£¨a£Ò OÐOð 	-ð "/×!4Ñ!4Ó!6ó /	ÑˆF�IÜ  §¡¨cÓ!2Ó3ˆLØ(¨Ñ0°E·N±NÑBˆLð %1°¡O°|Ñ$CÐ!Ù3Ñ8MØ+¨A¨BÐ/�ô %BØ˜iÐ)?Àó%Ñ!ˆH�kð *6¨¸(Ñ(BÐF\Ð(\Ð%Ù3Ñ8QØ(˜?¨XÑ5�àÐ1Ñ1Ø×$Ñ$Ð(>¸xÑ(H×(NÑ(NÒNÜ$ØKÈFÈ8ÐSpØ1°(Ñ;×AÑAÐBÀ)ÈK×L]ÑL]ÐK^Ð^_ðaóð ð  
× 1Ñ 1Ñ1Ø˜X b™\Ñ)ÜCFÇ;Á;È{ÓC[�OÐ$4°xÑ$?Ñ@ØØ˜H R™LÑ(ÜCFÇ;Á;È{ÓC[�OÐ$4°xÑ$?Ñ@Ùà(¨H°R©LÑ8Ø#×'Ñ'¨°$Ô7Ùñ 5A”C—K‘K Ô,ÄcÇkÁkÐR]Ôeh×eqÑeqÔFrð   ¨hÑ 6Ó7ñ 5A”C—K‘K Ô,ÄcÇkÁkÐR]Ôeh×eqÑeqÔFrð   Ó)ò[/	ð7JôV ˜/Ó*Ð*ùóQ Gùó
ùò" Lùò !Ps   ´M Á!AM&ÅM,Å:M1c                 óÜ  — t         j                  j                  |«      }t        j	                  d|› �«       t        t        d| j                  j                  z   «      }|j                  d«      rt        |«      }t        |d¬«      }n1t        |d«      5 }	 t        ||j                  «       «      }	 d	d	d	«       t#        | «      S # t        $ r t!        d|› d�«      ‚w xY w# 1 sw Y   Œ1xY w)
ú(Load flax checkpoints in a PyTorch modelzLoading Flax weights from ÚFlaxr   rh   )ÚsepÚrbzUnable to convert z  to Flax deserializable object. N)r   r   r    r!   r"   ÚgetattrÚtransformersÚ	__class__Ú__name__r#   Úsafe_load_filer   Úopenr   Úreadr   ÚEnvironmentErrorÚ"load_flax_weights_in_pytorch_model)ÚmodelÚflax_checkpoint_pathÚflax_clsr7   Ústate_fs        r   Ú%load_flax_checkpoint_in_pytorch_modelr£   K  sè   € äŸ7™7Ÿ?™?Ð+?Ó@ÐÜ
‡K�KÐ,Ð-AÐ,BÐCÔDô ”| V¨e¯o©o×.FÑ.FÑ%FÓG€Hð ×$Ñ$ ^Ô4Ü(Ð)=Ó>ˆÜ(¨¸cÔB‰äÐ&¨Ó-ð 	t°ðtÜ",¨X°w·|±|³~Ó"F‘÷	tô .¨e°_ÓEÐEøô #ò tÜ&Ð);Ð<PÐ;QÐQqÐ'rÓsÐsðtú÷	tð 	tús   ÂC"ÂCÃCÃC"Ã"C+c                 óB
  — 	 ddl }t        t        j                  j                  d„ |«      «      j                  «       }t        |«      r6t        j                  d«       t        j                  j                  d„ |«      }t        |«      }| j                  «       }| j                  |v xr< | j                  |j                  «       D �ch c]  }|j                  d«      d   ’Œ c}v}| j                  |vxr< | j                  |j                  «       D �ch c]  }|j                  d«      d   ’Œ c}v }g }	t!        |j                  «       «      }
|j#                  «       D �]Q  \  }}|d   | j                  k(  }dj%                  | j                  f|z   «      |v }|r|r|dd }n|r|r| j                  f|z   }|d	   d
k(  rA|j&                  dk(  r2dj%                  |«      |vr|dd	 dz   }t)        j*                  |d«      }n_|d	   d
k(  r(dj%                  |«      |vr|dd	 dz   }|j,                  }n/|d	   dv r	|dd	 dz   }nd|d	   v r	|dd	 dz   }nd|d	   v r|dd	 dz   }d|v rdj%                  |dd «      }ndj%                  |«      }i }|D ]b  }|j                  d«      }d}|ddd…   ddgk(  r	|d   dz   }n|ddd…   ddgk(  r|d   dz   }|€ŒD|dd |gz   }dj%                  |«      }|||<   Œd ||v r||   }||v r¡|j.                  ||   j.                  k7  r,t1        d|› d||   j.                  › d|j.                  › d�«      ‚t3        |t4        j6                  «      st5        j8                  |«      n|} |j:                  |«      ||<   |
j=                  |«       �ŒA|	j?                  |«       �ŒT | jA                  |«       tC        |
«      }
tE        |	«      dkD  r_t        j                  d| jF                  jH                  › d |	› d!| jF                  jH                  › d"| jF                  jH                  › d#�	«       n-t        j                  d$| jF                  jH                  › d%�«       tE        |
«      dkD  r2t        j                  d&| jF                  jH                  › d'|
› d(�«       | S t        j                  d)| jF                  jH                  › d*| jF                  jH                  › d+�«       | S # t        t        f$ r t        j	                  d«       ‚ w xY wc c}w c c}w ),r’   r   NzÍLoading a Flax weights in PyTorch, requires both PyTorch and Flax to be installed. Please see https://pytorch.org/ and https://flax.readthedocs.io/en/latest/installation.html for installation instructions.c                 ó<   — | j                   t        j                  k(  S r   )ro   r~   re   )Úxs    r   ú<lambda>z4load_flax_weights_in_pytorch_model.<locals>.<lambda>o  s   € ÀÇÁÌCÏLÉLÑAX€ rD   z€Found ``bfloat16`` weights in Flax model. Casting all ``bfloat16`` weights to ``float32`` before loading those in PyTorch model.c                 ó~   — | j                   t        j                  k(  r| j                  t        j
                  «      S | S r   )ro   r~   re   ÚastypeÚnpÚfloat32rp   s    r   r§   z4load_flax_weights_in_pytorch_model.<locals>.<lambda>x  s'   € ¸¿¹ÌÏÉÒ8T˜6Ÿ=™=¬¯©Ó4€ ÐZ`€ rD   rh   r	   rE   rN   rO   rR   )rQ   rP   r   r	   )rF   rM   rI   )rJ   rK   )rL   rg   rU   rP   rV   rW   rX   rY   rZ   r[   z.Flax checkpoint seems to be incorrect. Weight rj   rk   zQSome weights of the Flax model were not used when initializing the PyTorch model z: z,
- This IS expected if you are initializing zÖ from a Flax model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a FlaxBertForPreTraining model).
- This IS NOT expected if you are initializing z¤ from a Flax model that you expect to be exactly identical (e.g. initializing a BertForSequenceClassification model from a FlaxBertForSequenceClassification model).z3All Flax model weights were used when initializing z.
zSome weights of zE were not initialized from the Flax model and are newly initialized: zo
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.zAll the weights of z‹ were initialized from the Flax model.
If your task is similar to the task the model of the checkpoint was trained on, you can already use z* for predictions without further training.)%r&   r'   r(   r!   r)   r   ÚjaxÚ	tree_utilÚtree_mapr,   ÚanyÚwarningÚ
state_dictrx   r$   rz   rB   ru   Újoinr^   r~   r_   r`   r|   r}   rq   rª   Úndarrayr   Ú
from_numpyÚremoveÚappendÚload_state_dictÚlistrA   r˜   r™   )Úpt_modelÚ
flax_stater&   Úis_type_bf16r7   Úpt_model_dictr6   r†   r‡   Úunexpected_keysÚmissing_keysÚflax_key_tuplerŒ   rŠ   r�   r‹   Úspecial_pt_namesr?   Úkey_componentsrb   Úkey_to_checks                        r   rž   rž   a  s¼  € ðÛô  ¤§¡× 6Ñ 6Ñ7XÐZdÓ eÓf×mÑmÓo€LÜ
ˆ<Ôô 	�‰ð5ô	
ô —]‘]×+Ñ+Ù`Ðbló
ˆ
ô # :Ó.€OØ×'Ñ'Ó)€Mà,4×,FÑ,FÈ*Ð,Tò ,Ø×"Ñ"ÀM×DVÑDVÓDXÖ*Y¸q¨1¯7©7°3«<¸«?Ò*YÐYð )ð -5×,FÑ,FÈjÐ,Xò ,Ø×"Ñ"À×@RÑ@RÓ@TÖ&U¸1 q§w¡w¨s£|°A£Ò&UÐUð )ð
 €OÜ�}×)Ñ)Ó+Ó,€Là'6×'<Ñ'<Ó'>ó A-Ñ#ˆ˜Ø .¨qÑ 1°X×5OÑ5OÑ OÐØ$'§H¡H¨h×.HÑ.HÐ-JÈ^Ñ-[Ó$\Ð`mÐ$mÐ!ñ 0Ñ4IØ+¨A¨BÐ/‰NÙ1Ñ6OØ&×8Ñ8Ð:¸^ÑKˆNð ˜"Ñ Ò)¨k×.>Ñ.>À!Ò.CÈÏÉÐQ_ÓH`ÐhuÑHuà+¨C¨RÐ0°;Ñ>ˆNÜŸ-™-¨°\ÓB‰KØ˜BÑ 8Ò+°·±¸Ó0HÐP]Ñ0]à+¨C¨RÐ0°;Ñ>ˆNØ%Ÿ-™-‰KØ˜BÑÐ#9Ñ9Ø+¨C¨RÐ0°;Ñ>‰Nð �~ bÑ)Ñ)Ø+¨C¨RÐ0Ð3DÑD‰NØ�n RÑ(Ñ(Ø+¨C¨RÐ0Ð3CÑCˆNà˜JÑ&Ø—x‘x ¨q¨rÐ 2Ó3‰Hà—x‘x Ó/ˆHð Ðà ò 
	5ˆCØ ŸY™Y s›^ˆNØˆDØ˜b˜e !˜eÑ$Ð);¸[Ð(IÒIØ% bÑ)¨DÑ0‘Ø   A Ñ&Ð+=¸{Ð*KÒKØ% bÑ)¨DÑ0�ØÑØ!/°°Ð!4¸°vÑ!=�Ø"Ÿx™x¨Ó7�Ø14Ð  Ò.ð
	5ð Ð'Ñ'Ø'¨Ñ1ˆHà�}Ñ$Ø× Ñ  M°(Ñ$;×$AÑ$AÒAÜ ØDÀ^ÐDTð U&Ø&3°HÑ&=×&CÑ&CÐ%DÀIÈk×N_ÑN_ÐM`Ð`aðcóð ô >HÈÔUW×U_ÑU_Ô=`œbŸj™j¨Ô5Ðfq�Ø*:¨%×*:Ñ*:¸;Ó*G�˜hÑ'à×#Ñ# HÖ-ð ×"Ñ" 8Ö,ðCA-ðF ×Ñ˜]Ô+ô ˜Ó%€Lä
ˆ?Ó˜aÒÜ�‰ðØ×"Ñ"×+Ñ+Ð,¨B¨Ð.?ð @Ø×"Ñ"×+Ñ+Ð,ð -8à8@×8JÑ8J×8SÑ8SÐ7Tð U9ð	9õ	
ô 	�‰ÐLÈX×M_ÑM_×MhÑMhÐLiÐilÐmÔnÜ
ˆ<Ó˜1ÒÜ�‰Ø˜x×1Ñ1×:Ñ:Ð;ð <Ø)˜Nð +5ð5ô	
ð €Oô 	�‰Ø! (×"4Ñ"4×"=Ñ"=Ð!>ð ?#à#+×#5Ñ#5×#>Ñ#>Ð"?Ð?iðkô	
ð €OøôI Ô,Ð-ò Ü�‰ðô	
ð
 	ðüò2 +Zùò 'Vs   ‚S. ÃTÄTÓ.&T)F)(Ú__doc__r   Úpickler   Útypingr   r   r¬   Ú	jax.numpyrw   r~   rª   Úflax.serializationr   Úflax.traverse_utilr   r   r—   Ú r
   r   Úutilsr   r&   Úsafetensorsr   Úsafetensors.flaxr   rš   Ú
get_loggerr™   r!   r8   r\   r³   rc   r-   r.   r£   rž   © rD   r   ú<module>rÏ      sÚ   ðñ (ã 	Ý "ß ã 
Ý Û Ý )ß ;ã ç :Ý ñ ÔÛáÔÝ%Ý<ð 
ˆ×	Ñ	˜HÓ	%€ð INó ðF@#Ø˜‘*ð@#à�z‰zð@#ð !  c§k¡kÐ!1Ñ2ð@#ð ð	@#ð
 ˆC�j�"—*‘*Ðó@#òFT+òxP+òpFó,IrD   