§
    Ý˜ºhªø  ã                   óæ  — d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZmZ ddlmZmZmZ ddlmZmZmZmZ dd	lmZ  ej        e¦  «        ZdŸd„Zdedefd„Zd„ Z  G d„ d¦  «        Z! G d„ de!¦  «        Z"dedefd„Z# G d„ d¦  «        Z$ G d„ de$¦  «        Z% G d„ de$¦  «        Z& G d„ de$¦  «        Z' G d„ de$¦  «        Z( G d „ d!e$¦  «        Z) G d"„ d#e$¦  «        Z* G d$„ d%e$¦  «        Z+ G d&„ d'e$¦  «        Z, G d(„ d)e$¦  «        Z- G d*„ d+e$¦  «        Z. G d,„ d-e$¦  «        Z/ G d.„ d/e$¦  «        Z0 G d0„ d1e0¦  «        Z1 G d2„ d3e0¦  «        Z2 G d4„ d5e0¦  «        Z3 G d6„ d7e0¦  «        Z4 G d8„ d9e0¦  «        Z5 G d:„ d;e0¦  «        Z6 G d<„ d=e0¦  «        Z7 G d>„ d?e0¦  «        Z8 G d@„ dAe0¦  «        Z9 G dB„ dCe0¦  «        Z: G dD„ dEe0¦  «        Z; G dF„ dGe0¦  «        Z< G dH„ dIe0¦  «        Z= G dJ„ dKe0¦  «        Z> G dL„ dMe0¦  «        Z? G dN„ dOe0¦  «        Z@ G dP„ dQe$¦  «        ZA G dR„ dSe0¦  «        ZB G dT„ dUe$¦  «        ZC G dV„ dWe$¦  «        ZD G dX„ dYe$¦  «        ZE G dZ„ d[e0¦  «        ZF G d\„ d]e0¦  «        ZG G d^„ d_e0¦  «        ZH G d`„ dae$¦  «        ZI G db„ dce0¦  «        ZJ G dd„ dee0¦  «        ZKdf„ ZL G dg„ dh¦  «        ZMi die1“dje-“dke2“dle%“dmeB“dneE“doe3“dpeC“dqe*“dre%“dse/“dte4“due%“dve%“dwe%“dxe%“dye%“i dze1“d{e'“d|e*“d}e+“d~e%“de%“d€e-“d�e9“d‚e-“dƒe-“d„e%“d…eI“d†e5“d‡e6“dˆe(“d‰e%“dŠe-“¥i d‹e7“dŒe)“d�e>“dŽe,“d�e%“d�e;“d‘e<“d’e%“d“e-“d”e.“d•e8“d–e%“d—e?“d˜e@“d™eA“dše9“d›e:“¥e&eFeHeHeGeHdœœ¥ZNd de	fdž„ZOdS )¡zù
Utilities to convert slow tokenizers in their fast tokenizers counterparts.

All the conversions are grouped here to gather SentencePiece dependencies outside of the fast tokenizers files and
allow to make our dependency on SentencePiece optional.
é    N)ÚOptional)Úversion)Ú
AddedTokenÚRegexÚ	TokenizerÚdecodersÚnormalizersÚpre_tokenizersÚ
processors)ÚBPEÚUnigramÚ	WordPieceé   )Úis_protobuf_availableÚis_sentencepiece_availableÚloggingÚrequires_backends)ÚPROTOBUF_IMPORT_ERRORÚ c                 ó  — t          ¦   «         rddlm} |S t          ¦   «         rGdd l}t          j        |j        j        ¦  «        t          j        d¦  «        k     rddl	m} nddl	m
} |S t          t          j        | ¦  «        ¦  «        ‚)Nr   )Úsentencepiece_model_pb2z4.0.0)Úsentencepiece_model_pb2_new)r   Úsentencepiecer   r   Úgoogle.protobufr   ÚparseÚprotobufÚ__version__Útransformers.utilsr   ÚImportErrorr   Úformat)Úerror_messager   Úgoogles      úk/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/transformers/convert_slow_tokenizer.pyÚimport_protobufr$   #   s®   € Ý!Ñ#Ô#ð 'Ø9Ð9Ð9Ð9Ð9Ð9à&Ð&ÝÑÔð 	GØÐÐÐåŒ=˜œÔ4Ñ5Ô5½¼ÀgÑ8NÔ8NÒNÐNØBÐBÐBÐBÐBÐBÐBàaÐaÐaÐaÐaÐaØ&Ð&åÕ/Ô6°}ÑEÔEÑFÔFÐFó    Úadd_prefix_spaceÚreturnc                 ó:   — | rd}t          |dd¦  «        sd}nd}|S )NÚalwaysÚlegacyTÚfirstÚnever)Úgetattr)r&   Úoriginal_tokenizerÚprepend_schemes      r#   Ú_get_prepend_schemer0   4   s5   € Øð !Ø!ˆÝÐ)¨8°TÑ:Ô:ð 	%Ø$ˆNøà ˆØÐr%   c                 óª  ‡ — |d u}|rt          |¦  «        n‰ }g }|                     ¦   «         D ]„\  }}g }t          dt          |¦  «        ¦  «        D ]6}|d |…         ||d …         }	}|‰ v r|	‰ v r|                     ||	|f¦  «         Œ7t          |ˆ fd„¬¦  «        }|                     |¦  «         Œ…t          |d„ |¬¦  «        }d„ |D ¦   «         }|S )Nr   c                 ó<   •— ‰| d                  ‰| d                  fS ©Nr   r   © )ÚxÚvocabs    €r#   ú<lambda>z!generate_merges.<locals>.<lambda>I   s   ø€ ¨U°1°Q´4¬[¸%ÀÀ!Ä¼+Ð,F€ r%   ©Úkeyc                 ód   — | d         t          | d         ¦  «        t          | d         ¦  «        fS )Né   r   r   )Úlen©Úvals    r#   r7   z!generate_merges.<locals>.<lambda>L   s%   € ¨S°¬VµS¸¸Q¼±[´[Å#ÀcÈ!ÄfÁ+Ä+Ð,N€ r%   ©r9   Úreversec                 ó.   — g | ]}|d          |d         f‘ŒS ©r   r   r4   )Ú.0r>   s     r#   ú
<listcomp>z#generate_merges.<locals>.<listcomp>M   s%   € Ð1Ð1Ð1 3ˆs�1Œv�s˜1”vÐÐ1Ð1Ð1r%   )ÚdictÚitemsÚranger<   ÚappendÚsortedÚextend)
r6   Úvocab_scoresr@   ÚmergesÚmergeÚpiece_scoreÚlocalÚindexÚpiece_lÚpiece_rs
   `         r#   Úgenerate_mergesrS   >   s  ø€ Ø $Ð&€GØ)0Ð;•4˜Ñ%Ô%Ð%°e€Là€FØ*×0Ò0Ñ2Ô2ð ð Ñˆˆ{ØˆÝ˜1�c %™jœjÑ)Ô)ð 	>ð 	>ˆEØ$ V e Vœ}¨e°E°F°F¬m�WˆGØ˜%ÐÐ G¨uÐ$4Ð$4Ø—’˜g w°Ð<Ñ=Ô=Ð=øÝ�uÐ"FÐ"FÐ"FÐ"FÐGÑGÔGˆØ�Š�eÑÔÐÐå�FÐ NÐ NÐX_Ð`Ñ`Ô`€FØ1Ð1¨&Ð1Ñ1Ô1€FØ€Mr%   c                   óX   — e Zd ZdZdefd„Zddeeeef         e	e         f         fd„Z
dS )ÚSentencePieceExtractorzl
    Extractor implementation for SentencePiece trained models. https://github.com/google/sentencepiece
    Úmodelc                 ó„   — t          | d¦  «         ddlm}  |¦   «         | _        | j                             |¦  «         d S )Nr   r   )ÚSentencePieceProcessor)r   r   rX   ÚspÚLoad)ÚselfrV   rX   s      r#   Ú__init__zSentencePieceExtractor.__init__V   sN   € Ý˜$ Ñ0Ô0Ð0Ø8Ð8Ð8Ð8Ð8Ð8à(Ð(Ñ*Ô*ˆŒØŒ�Š�UÑÔÐÐÐr%   Nr'   c                 ó”   ‡— | j         Šˆfd„t          ‰                     ¦   «         ¦  «        D ¦   «         }t          ||¦  «        }||fS )úÂ
        By default will return vocab and merges with respect to their order, by sending `vocab_scores` we're going to
        order the merges with respect to the piece scores instead.
        c                 ó<   •— i | ]}‰                      |¦  «        |“ŒS r4   ©Úid_to_piece©rC   rP   rY   s     €r#   ú
<dictcomp>z2SentencePieceExtractor.extract.<locals>.<dictcomp>c   ó'   ø€ ÐTÐTÐT°%�—’ Ñ&Ô&¨ÐTÐTÐTr%   )rY   rG   ÚGetPieceSizerS   ©r[   rK   r6   rL   rY   s       @r#   ÚextractzSentencePieceExtractor.extract]   sP   ø€ ð
 ŒWˆØTÐTÐTÐT½5ÀÇÂÑARÔARÑ;SÔ;SÐTÑTÔTˆå  ¨Ñ5Ô5ˆà�fˆ}Ðr%   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr\   ÚtuplerE   ÚintÚlistrg   r4   r%   r#   rU   rU   Q   so   € € € € € ðð ð˜cð ð ð ð ð
ð 
¨E°$°s¸C°x´.À$ÀuÄ+Ð2MÔ,Nð 
ð 
ð 
ð 
ð 
ð 
r%   rU   c                   óH   — e Zd Zddeeeef         ee         f         fd„ZdS )ÚGemmaSentencePieceExtractorNr'   c                 óÌ   ‡— | j         Šˆfd„t          ‰                     ¦   «         ¦  «        D ¦   «         }d|vr|                     d¦  «        |d<   t	          ||¦  «        }||fS )r^   c                 ó<   •— i | ]}‰                      |¦  «        |“ŒS r4   r`   rb   s     €r#   rc   z7GemmaSentencePieceExtractor.extract.<locals>.<dictcomp>q   rd   r%   ú	ú<0x09>)rY   rG   re   ÚgetrS   rf   s       @r#   rg   z#GemmaSentencePieceExtractor.extractk   sr   ø€ ð
 ŒWˆØTÐTÐTÐT½5ÀÇÂÑARÔARÑ;SÔ;SÐTÑTÔTˆð �uÐÐØŸ)š) HÑ-Ô-ˆE�$‰KÝ  ¨Ñ5Ô5ˆØ�fˆ}Ðr%   rh   )	ri   rj   rk   rn   rE   rm   ro   rp   rg   r4   r%   r#   rr   rr   j   sJ   € € € € € ðð ¨E°$°s¸C°x´.À$ÀuÄ+Ð2MÔ,Nð ð ð ð ð ð r%   rr   Úpiecec                 óv   — t          | ¦  «        dk     p&| d         dk    p| d                              ¦   «          S )Nr;   éÿÿÿÿú,éþÿÿÿ)r<   Úisdigit)rx   s    r#   Úcheck_number_commar~   {   s8   € Ýˆu‰:Œ:˜Š>ÐH˜U 2œY¨#Ò-ÐH°U¸2´Y×5FÒ5FÑ5HÔ5HÐ1HÐHr%   c                   ó    — e Zd Zd„ Zdefd„ZdS )Ú	Converterc                 ó   — || _         d S rh   )r.   )r[   r.   s     r#   r\   zConverter.__init__€   s   € Ø"4ˆÔÐÐr%   r'   c                 ó   — t          ¦   «         ‚rh   )ÚNotImplementedError©r[   s    r#   Ú	convertedzConverter.convertedƒ   s   € Ý!Ñ#Ô#Ð#r%   N)ri   rj   rk   r\   r   r…   r4   r%   r#   r€   r€      s>   € € € € € ð5ð 5ð 5ð$˜9ð $ð $ð $ð $ð $ð $r%   r€   c                   ó   — e Zd Zdefd„ZdS )ÚBertConverterr'   c           	      ó¸  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	�||f||	fg¬
¦  «        |_        t1          j        d¬¦  «        |_        |S )N©Ú	unk_tokenFÚbasic_tokenizerT©Ú
clean_textÚhandle_chinese_charsÚstrip_accentsÚ	lowercaseú:0 $A:0 ú:0ú:0 $B:1 ú:1©ÚsingleÚpairÚspecial_tokensú##©Úprefix©r.   r6   r   r   rm   rŠ   Úhasattrr‹   Útokenize_chinese_charsr�   Údo_lower_caser	   ÚBertNormalizerÚ
normalizerr
   ÚBertPreTokenizerÚpre_tokenizerÚ	cls_tokenÚ	sep_tokenÚcls_token_idÚsep_token_idr   ÚTemplateProcessingÚpost_processorr   Údecoder©
r[   r6   Ú	tokenizerrž   r�   rŸ   ÚclsÚsepr¦   r§   s
             r#   r…   zBertConverter.convertedˆ   óy  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ5Ð5 Ð5Ð5¨cÐ5Ð5Ð5à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr%   N©ri   rj   rk   r   r…   r4   r%   r#   r‡   r‡   ‡   ó/   € € € € € ð#˜9ð #ð #ð #ð #ð #ð #r%   r‡   c                   ó   — e Zd Zdefd„ZdS )ÚSplinterConverterr'   c           
      óš  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }d}	| j         j        }
| j         j        }| j         j        }| j                              d¦  «        }| j         j        dk    r|› d|› d	|	› d	|› d
|› d�
}n|› d|› d
|› d	|	› d	|› d�
}t3          j        |› d|› d�|||
f||f||f|	|fg¬¦  «        |_        t9          j        d¬¦  «        |_        |S )Nr‰   Fr‹   TrŒ   ú.Úrightr‘   ú r“   r”   r’   r•   r™   rš   )r.   r6   r   r   rm   rŠ   r�   r‹   rž   r�   rŸ   r	   r    r¡   r
   r¢   r£   r¤   r¥   Úquestion_tokenr¦   r§   Úquestion_token_idÚconvert_tokens_to_idsÚpadding_sider   r¨   r©   r   rª   )r[   r6   r¬   rž   r�   rŸ   r­   r®   ÚquestionÚdotr¦   r§   r¹   Údot_token_idr—   s                  r#   r…   zSplinterConverter.converted¯   s  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆÝ�tÔ.Ô=Ñ>Ô>ˆØˆØÔ.Ô;ˆØÔ.Ô;ˆØ Ô3ÔEÐØÔ.×DÒDÀSÑIÔIˆàÔ"Ô/°7Ò:Ð:ØÐHÐH 8ÐHÐH¨cÐHÐH°CÐHÐHÀÐHÐHÐHˆDˆDàÐHÐH 3ÐHÐH°ÐHÐH¸3ÐHÐHÀÐHÐHÐHˆDå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*Øà�lÐ#Ø�lÐ#ØÐ,Ð-Ø�lÐ#ð	ð	$
ñ 	$
ô 	$
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr%   Nr°   r4   r%   r#   r³   r³   ®   s/   € € € € € ð.˜9ð .ð .ð .ð .ð .ð .r%   r³   c                   ó   — e Zd Zdefd„ZdS )ÚFunnelConverterr'   c           	      ó¸  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	�||f||	fg¬
¦  «        |_        t1          j        d¬¦  «        |_        |S )Nr‰   Fr‹   TrŒ   z:2 $A:0 r’   r“   r”   r•   r™   rš   rœ   r«   s
             r#   r…   zFunnelConverter.convertedá   r¯   r%   Nr°   r4   r%   r#   rÀ   rÀ   à   r±   r%   rÀ   c                   ó   — e Zd Zdefd„ZdS )ÚMPNetConverterr'   c                 ó¾  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	|› d
�||f||	fg¬¦  «        |_        t1          j        d¬¦  «        |_        |S )Nr‰   Fr‹   TrŒ   r‘   r’   z:0 r“   r”   r•   r™   rš   rœ   r«   s
             r#   r…   zMPNetConverter.converted  s�  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ=Ð= Ð=Ð=¨Ð=Ð=°cÐ=Ð=Ð=à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr%   Nr°   r4   r%   r#   rÃ   rÃ     r±   r%   rÃ   c                   ó   — e Zd Zdefd„ZdS )ÚOpenAIGPTConverterr'   c           
      ó  — | j         j        }t          | j         j                             ¦   «         ¦  «        }| j         j        }t          t          ||d t          |¦  «        dd¬¦  «        ¦  «        }| 	                    t          |¦  «        ¦  «        �#| 
                    t          |¦  «        g¦  «         t          j        d¬¦  «        |_        t          j        ¦   «         |_        t#          j        d¬¦  «        |_        |S )Nú</w>F)r6   rL   ÚdropoutrŠ   Úend_of_word_suffixÚfuse_unkT)r�   ©Úsuffix)r.   Úencoderrp   Ú	bpe_ranksÚkeysrŠ   r   r   rm   Útoken_to_idÚadd_special_tokensr	   r    r¡   r
   r¢   r£   r   Ú
BPEDecoderrª   ©r[   r6   rL   rŠ   r¬   s        r#   r…   zOpenAIGPTConverter.converted/  sì   € ØÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆØÔ+Ô5ˆ	åÝØØØÝ˜i™.œ.Ø#)Øðñ ô ñ	
ô 	
ˆ	ð × Ò ¥ Y¡¤Ñ0Ô0Ð<Ø×(Ò(­#¨i©.¬.Ð)9Ñ:Ô:Ð:å*Ô9ÀDÐIÑIÔIˆ	ÔÝ"0Ô"AÑ"CÔ"Cˆ	ÔÝ$Ô/°vÐ>Ñ>Ô>ˆ	ÔàÐr%   Nr°   r4   r%   r#   rÆ   rÆ   .  s/   € € € € € ð˜9ð ð ð ð ð ð r%   rÆ   c            	       ój   — e Zd Z	 ddeeeef                  deeeeef                           de	fd„Z
dS )ÚGPT2ConverterNr6   rL   r'   c           
      ó  — |s| j         j        }|st          | j         j        ¦  «        }t	          t          ||d ddd¬¦  «        ¦  «        }t          | j         dd¦  «        }t          j        |¬¦  «        |_	        t          j        ¦   «         |_        t          | j         dd¦  «        r>| j         j        }| j         j        }t          j        |› d�|› d�||fg¬	¦  «        |_        nt          j        d¬
¦  «        |_        |S )Nr   F©r6   rL   rÉ   Úcontinuing_subword_prefixrÊ   rË   r&   ©r&   Úadd_bos_tokenz:0 $A:0z:0 $A:0 $B:1r•   ©Útrim_offsets)r.   rÎ   rp   rÏ   r   r   r-   r
   Ú	ByteLevelr£   r   rª   Ú	bos_tokenÚbos_token_idr   r¨   r©   )r[   r6   rL   r¬   r&   Úbosrà   s          r#   r…   zGPT2Converter.convertedJ  s1  € ð ð 	4ØÔ+Ô3ˆEØð 	=Ý˜$Ô1Ô;Ñ<Ô<ˆFåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ # 4Ô#:Ð<NÐPUÑVÔVÐÝ"0Ô":ÐL\Ð"]Ñ"]Ô"]ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ�4Ô*¨O¸UÑCÔCð 	PØÔ)Ô3ˆCØÔ2Ô?ˆLÝ'1Ô'DØ���ØÐ)Ð)Ð)à˜,Ð'ð ð(ñ (ô (ˆIÔ$Ð$õ (2Ô';ÈÐ'OÑ'OÔ'OˆIÔ$ØÐr%   ©NN©ri   rj   rk   r   rE   rm   ro   rp   rn   r   r…   r4   r%   r#   rÖ   rÖ   I  sj   € € € € € à`dð$ð $Ø˜d 3¨ 8œnÔ-ð$Ø>FÀtÈEÐRUÐWZÐRZÌOÔG\Ô>]ð$à	ð$ð $ð $ð $ð $ð $r%   rÖ   c                   ó   — e Zd Zdefd„ZdS )ÚHerbertConverterr'   c           	      ó.  — d}d}| j         j        }t          | j         j                             ¦   «         ¦  «        }||d         d         v r
|dd …         }t          t          ||d | j         j        |¬¦  «        ¦  «        }t          j	        dd¬¦  «        |_
        t          j        ¦   «         |_        t          j        |¬¦  «        |_        t#          j        | j         j        | j         j        f| j         j        | j         j        f¬	¦  «        |_        |S )
Nz	#version:rÈ   r   r   )rÉ   rŠ   rÊ   F)r�   r�   rÌ   )r®   r­   )r.   rÎ   rp   rÏ   rÐ   r   r   rŠ   r	   r    r¡   r
   r¢   r£   r   rÓ   rª   r   ÚBertProcessingr¥   r§   r¤   r¦   r©   )r[   Útokenizer_info_strÚtoken_suffixr6   rL   r¬   s         r#   r…   zHerbertConverter.convertedr  s  € Ø(ÐØˆàÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆØ ¨¤¨1¤Ð-Ð-Ø˜A˜B˜B”ZˆFåÝØØØØÔ1Ô;Ø#/ðñ ô ñ
ô 
ˆ	õ  +Ô9ÀEÐY^Ð_Ñ_Ô_ˆ	ÔÝ"0Ô"AÑ"CÔ"Cˆ	ÔÝ$Ô/°|ÐDÑDÔDˆ	ÔÝ#-Ô#<ØÔ(Ô2°DÔ4KÔ4XÐYØÔ(Ô2°DÔ4KÔ4XÐYð$
ñ $
ô $
ˆ	Ô ð
 Ðr%   Nr°   r4   r%   r#   rå   rå   q  ó/   € € € € € ð˜9ð ð ð ð ð ð r%   rå   c            	       ój   — e Zd Z	 ddeeeef                  deeeeef                           de	fd„Z
dS )ÚQwen2ConverterNr6   rL   r'   c                 ó"  — |s| j         j        }|s+t          | j         j                             ¦   «         ¦  «        }t          t          ||d d dddd¬¦  «        ¦  «        }t          j        ¦   «         |_	        t          j        t          j        t          d¦  «        dd¬¦  «        t          j        t          | j         dd¦  «        d¬¦  «        g¦  «        |_        t#          j        ¦   «         |_        t'          j        d¬	¦  «        |_        |S )
Nr   F)r6   rL   rÉ   rŠ   rÙ   rÊ   rË   Úbyte_fallbackzn(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+Úisolated©ÚbehaviorÚinvertr&   ©r&   Ú	use_regexrÜ   )r.   rÎ   rp   rÏ   rÐ   r   r   r	   ÚNFCr¡   r
   ÚSequenceÚSplitr   rÞ   r-   r£   r   rª   r   r©   )r[   r6   rL   r¬   s       r#   r…   zQwen2Converter.converted‘  s1  € ð ð 	4ØÔ+Ô3ˆEØð 	DÝ˜$Ô1Ô;×@Ò@ÑBÔBÑCÔCˆFåÝØØØØØ*,Ø#%ØØ#ð	ñ 	ô 	ñ
ô 
ˆ	õ  +œÑ0Ô0ˆ	Ôå"0Ô"9åÔ$Ýð Nñô ð (Ø ðñ ô õ Ô(Ý%,¨TÔ-DÐFXÐZ_Ñ%`Ô%`Ø#ðñ ô ðñ#
ô #
ˆ	Ôõ  %Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#7ÀUÐ#KÑ#KÔ#Kˆ	Ô àÐr%   râ   rã   r4   r%   r#   rì   rì   �  sj   € € € € € à`dð*ð *Ø˜d 3¨ 8œnÔ-ð*Ø>FÀtÈEÐRUÐWZÐRZÌOÔG\Ô>]ð*à	ð*ð *ð *ð *ð *ð *r%   rì   c                   ó   — e Zd Zdefd„ZdS )ÚRobertaConverterr'   c           
      ó”  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        |j	        ¬¦  «        |_
        t          j        ¦   «         |_        t          j        |j        |j        f|j        |j        f|j	        d¬¦  «        |_        |S )Nr   FrØ   rÚ   T©r®   r­   r&   rÝ   )r.   rÎ   rp   rÏ   rÐ   r   r   r
   rÞ   r&   r£   r   rª   r   ÚRobertaProcessingr¥   r§   r¤   r¦   r©   ©r[   Úotr6   rL   r¬   s        r#   r…   zRobertaConverter.converted¿  sÎ   € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#?Ø”˜rœÐ/Ø”˜rœÐ/ØÔ0Øð	$
ñ $
ô $
ˆ	Ô ð Ðr%   Nr°   r4   r%   r#   rù   rù   ¾  ó/   € € € € € ð˜9ð ð ð ð ð ð r%   rù   c                   ó   — e Zd Zdefd„ZdS )ÚRoFormerConverterr'   c           	      óÈ  — ddl m} | j        j        }t	          t          |t          | j        j        ¦  «        ¬¦  «        ¦  «        }d}d}t          | j        d¦  «        r"| j        j	        j
        }| j        j	        j        }t          j        dd||¬¦  «        |_        t          j                              ||¦  «        ¦  «        |_        t          | j        j        ¦  «        }t          | j        j        ¦  «        }| j        j        }| j        j        }	t/          j        |› d|› d	�|› d|› d
|› d�||f||	fg¬¦  «        |_        t5          j        d¬¦  «        |_        |S )Nr   )ÚJiebaPreTokenizerr‰   Fr‹   TrŒ   r‘   r’   r“   r”   r•   r™   rš   )Ú"models.roformer.tokenization_utilsr  r.   r6   r   r   rm   rŠ   r�   r‹   r�   rŸ   r	   r    r¡   r
   ÚPreTokenizerÚcustomr£   r¤   r¥   r¦   r§   r   r¨   r©   r   rª   )
r[   r  r6   r¬   r�   rŸ   r­   r®   r¦   r§   s
             r#   r…   zRoFormerConverter.convertedÜ  s‹  € ØIÐIÐIÐIÐIÐIàÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	àˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!&Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"=×"DÒ"DÐEVÐEVÐW\ÑE]ÔE]Ñ"^Ô"^ˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ5Ð5 Ð5Ð5¨cÐ5Ð5Ð5à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr%   Nr°   r4   r%   r#   r  r  Û  r±   r%   r  c                   ó   — e Zd Zdefd„ZdS )ÚDebertaConverterr'   c           
      óÄ  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        |j	        ¬¦  «        |_
        t          j        ¦   «         |_        t          j        ddd| j                              d¦  «        fd| j                              d¦  «        fg¬	¦  «        |_        |S )
Nr   FrØ   rÚ   ú[CLS]:0 $A:0 [SEP]:0ú![CLS]:0 $A:0 [SEP]:0 $B:1 [SEP]:1ú[CLS]ú[SEP]r•   )r.   rÎ   rp   rÏ   rÐ   r   r   r
   rÞ   r&   r£   r   rª   r   r¨   rº   r©   rý   s        r#   r…   zDebertaConverter.converted  sê   € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#@Ø)Ø4à˜$Ô1×GÒGÈÑPÔPÐQØ˜$Ô1×GÒGÈÑPÔPÐQðð$
ñ $
ô $
ˆ	Ô ð Ðr%   Nr°   r4   r%   r#   r  r    rê   r%   r  c                   ó`   ‡ — e Zd ZdZeZi Zˆ fd„Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
efd„Zˆ xZS )ÚSpmConverterFc                 ó¸  •— t          | d¦  «          t          ¦   «         j        |Ž  t          ¦   «         }|                     ¦   «         }t          | j        j        d¦  «        5 }|                     | 	                    ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _
        | j
        j        j        r| j        st          j        d¦  «         d S d S d S )Nr   Úrba  The sentencepiece tokenizer that you are converting to a fast tokenizer uses the byte fallback option which is not implemented in the fast tokenizers. In practice this means that the fast version of the tokenizer can produce unknown tokens whereas the sentencepiece version would have converted these unknown tokens into a sequence of byte tokens matching the original piece of text.)r   Úsuperr\   r$   Ú
ModelProtoÚopenr.   Ú
vocab_fileÚParseFromStringÚreadÚprotoÚtrainer_specrî   Úhandle_byte_fallbackÚwarningsÚwarn)r[   ÚargsÚ	model_pb2ÚmÚfÚ	__class__s        €r#   r\   zSpmConverter.__init__&  s"  ø€ Ý˜$ 
Ñ+Ô+Ð+à�‰ŒÔ˜$ÐÐõ $Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�$Ô)Ô4°dÑ;Ô;ð 	(¸qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
àŒ:Ô"Ô0ð 	¸Ô9Rð 	ÝŒMðeñô ð ð ð ð	ð 	ð 	ð 	s   Á$(BÂBÂBc                 ó$   — d„ |j         D ¦   «         S )Nc                 ó*   — g | ]}|j         |j        f‘ŒS r4   ©rx   Úscore©rC   rx   s     r#   rD   z&SpmConverter.vocab.<locals>.<listcomp><  s!   € ÐEÐEÐE¨u�”˜eœkÐ*ÐEÐEÐEr%   ©Úpieces©r[   r  s     r#   r6   zSpmConverter.vocab;  s   € ØEÐE¸¼ÐEÑEÔEÐEr%   c                 ó   — |j         j        S rh   )r  Úunk_idr)  s     r#   r+  zSpmConverter.unk_id>  s   € ØÔ!Ô(Ð(r%   c           
      óŽ  ‡ — |j         j        }‰                      |¦  «        }|dk    r8t          t	          |‰                      |¦  «        ‰ j        ¬¦  «        ¦  «        }n•|dk    r€‰                      ‰ j        j	        ¦  «         
                    |¦  «        \  }}d„ t          |¦  «        D ¦   «         }t          t          |||j         j        d‰ j        d ¬¦  «        ¦  «        }nt          d¦  «        ‚ˆ fd„t          |j        ¦  «        D ¦   «         }|                     d	„ t#          |d
„ ¬¦  «        D ¦   «         ¦  «         |S )Nr   ©r+  rî   r;   c                 ó    — i | ]\  }\  }}||“ŒS r4   r4   )rC   ÚiÚwordr%  s       r#   rc   z*SpmConverter.tokenizer.<locals>.<dictcomp>P  s#   € ÐQÐQÐQÑ%5 Q©¨¨u˜˜qÐQÐQÐQr%   T)rŠ   rË   rî   rÉ   z]You're trying to run a `Unigram` model but you're file was trained with a different algorithmc                 ój   •— g | ]/\  }}|j         d v ¯||j        |j         dk    p|j        ‰j        v f‘Œ0S ©)é   é   r3  ©Útyperx   r˜   ©rC   ÚidÚpr[   s      €r#   rD   z*SpmConverter.tokenizer.<locals>.<listcomp>e  óR   ø€ ð 
ð 
ð 
á��AØŒv˜ÐÐð �”˜!œ& Aš+ÐG¨¬°DÔ4GÐ)GÐHàÐÐr%   c                 ó:   — g | ]\  }}}t          |d |¬¦  «        ‘ŒS )F©Ú
normalizedÚspecial©r   ©rC   r8  Útokenr>  s       r#   rD   z*SpmConverter.tokenizer.<locals>.<listcomp>k  s=   € ð ð ð á&�B˜˜wõ ˜5¨U¸GÐDÑDÔDðð ð r%   c                 ó   — | d         S ©Nr   r4   ©r5   s    r#   r7   z(SpmConverter.tokenizer.<locals>.<lambda>m  ó   € ÐQRÐSTÔQU€ r%   r8   )r  Ú
model_typer6   r   r   r+  r  ÚSpmExtractorr.   r  rg   Ú	enumerater   Ú	unk_pieceÚ	Exceptionr(  Ú
add_tokensrI   )	r[   r  rF  rK   r¬   Ú_rL   Ú	bpe_vocabÚspm_added_tokenss	   `        r#   r¬   zSpmConverter.tokenizerA  s‹  ø€ ØÔ'Ô2ˆ
Ø—z’z %Ñ(Ô(ˆà˜Š?ˆ?Ý!ÝØ ØŸ;š; uÑ-Ô-Ø"&Ô";ðñ ô ñô ˆIˆIð ˜1Š_ˆ_Ø×)Ò)¨$Ô*AÔ*LÑMÔM×UÒUÐVbÑcÔc‰IˆAˆvØQÐQ½À<Ñ9PÔ9PÐQÑQÔQˆIÝ!ÝØØØ#Ô0Ô:Ø!Ø"&Ô";Ø ðñ ô ñ	ô 	ˆIˆIõ Øoñô ð ð
ð 
ð 
ð 
å" 5¤<Ñ0Ô0ð
ñ 
ô 
Ðð
 	×Òðð å*0Ð1AÀ~À~Ð*VÑ*VÔ*Vðñ ô ñ	
ô 	
ð 	
ð Ðr%   c                 ó
  — |j         j        }t          j        dd¬¦  «        t          j        t          d¦  «        d¦  «        g}|st          j        |¦  «        S t          j        t          j        |¦  «        g|z   ¦  «        S )NFT)Úleftr¶   ú {2,}õ   â–�)Únormalizer_specÚprecompiled_charsmapr	   ÚStripÚReplacer   rö   ÚPrecompiled©r[   r  rT  Ú_normalizerss       r#   r¡   zSpmConverter.normalizers  s€   € Ø$Ô4ÔIÐåÔ 5°Ð5Ñ5Ô5ÝÔ¥ g¡¤°Ñ6Ô6ð
ˆð $ð 	hÝÔ'¨Ñ5Ô5Ð5åÔ'­Ô)@ÐAUÑ)VÔ)VÐ(WÐZfÑ(fÑgÔgÐgr%   c                 óX   — t          || j        ¦  «        }t          j        ||¬¦  «        S ©N©Úreplacementr/   )r0   r.   r
   Ú	Metaspace©r[   r]  r&   r/   s       r#   r£   zSpmConverter.pre_tokenizer~  s,   € Ý,Ð-=¸tÔ?VÑWÔWˆÝÔ'°KÐP^Ð_Ñ_Ô_Ð_r%   c                 ó   — d S rh   r4   r„   s    r#   r©   zSpmConverter.post_processor‚  s   € Øˆtr%   c                 óX   — t          || j        ¦  «        }t          j        ||¬¦  «        S r[  )r0   r.   r   r^  r_  s       r#   rª   zSpmConverter.decoder…  s+   € Ý,Ð-=¸tÔ?VÑWÔWˆÝÔ!¨kÈ.ÐYÑYÔYÐYr%   r'   c                 óx  — |                       | j        ¦  «        }|                      | j        ¦  «        }|�||_        d}d}t          | j        d¦  «        r| j        j        }|                      ||¦  «        }|�||_        |                      ||¦  «        |_        |                      ¦   «         }|r||_        |S )NrR  Tr&   )	r¬   r  r¡   r�   r.   r&   r£   rª   r©   )r[   r¬   r¡   r]  r&   r£   r©   s          r#   r…   zSpmConverter.converted‰  sÈ   € Ø—N’N 4¤:Ñ.Ô.ˆ	ð —_’_ T¤ZÑ0Ô0ˆ
ØÐ!Ø#-ˆIÔ àˆØÐÝ�4Ô*Ð,>Ñ?Ô?ð 	HØ#Ô6ÔGÐà×*Ò*¨;Ð8HÑIÔIˆØÐ$Ø&3ˆIÔ#à ŸLšL¨Ð6FÑGÔGˆ	ÔØ×,Ò,Ñ.Ô.ˆØð 	6Ø'5ˆIÔ$àÐr%   )ri   rj   rk   r  rU   rG  r˜   r\   r6   r+  r¬   r¡   r£   r©   rª   r   r…   Ú__classcell__©r!  s   @r#   r  r  !  sÙ   ø€ € € € € Ø ÐØ)€LØ€Nðð ð ð ð ð*Fð Fð Fð)ð )ð )ð0ð 0ð 0ðd	hð 	hð 	hð`ð `ð `ðð ð ðZð Zð Zð˜9ð ð ð ð ð ð ð ð r%   r  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚAlbertConverterc                 ó$   — d„ |j         D ¦   «         S )Nc                 ót   — g | ]5}t          |j        ¦  «        r|j        |j        fn|j        |j        d z
  f‘Œ6S ©éd   ©r~   rx   r%  r&  s     r#   rD   z)AlbertConverter.vocab.<locals>.<listcomp>¤  óX   € ð 
ð 
ð 
àõ +=¸U¼[Ñ*IÔ*IÐoˆUŒ[˜%œ+Ð&Ð&ÐPUÔP[Ð]bÔ]hÐknÑ]nÐOoð
ð 
ð 
r%   r'  r)  s     r#   r6   zAlbertConverter.vocab£  ó%   € ð
ð 
àœð
ñ 
ô 
ð 	
r%   c                 óf  — t          j        dd¦  «        t          j        dd¦  «        g}| j        j        sL|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         | j        j        r&|                     t          j        ¦   «         ¦  «         |j	        j
        }|r'|                     t          j        |¦  «        ¦  «         |                     t          j        t          d¦  «        d¦  «        ¦  «         t          j        |¦  «        S ©Nz``ú"z''rQ  r·   ©r	   rV  r.   Úkeep_accentsrH   ÚNFKDÚStripAccentsrŸ   Ú	LowercaserS  rT  rW  r   rö   ©r[   r  Úlist_normalizersrT  s       r#   r¡   zAlbertConverter.normalizer©  ó  € åÔ  cÑ*Ô*ÝÔ  cÑ*Ô*ð
Ðð Ô&Ô3ð 	@Ø×#Ò#¥KÔ$4Ñ$6Ô$6Ñ7Ô7Ð7Ø×#Ò#¥KÔ$<Ñ$>Ô$>Ñ?Ô?Ð?ØÔ"Ô0ð 	=Ø×#Ò#¥KÔ$9Ñ$;Ô$;Ñ<Ô<Ð<à$Ô4ÔIÐàð 	SØ×#Ò#¥KÔ$;Ð<PÑ$QÔ$QÑRÔRÐRà×Ò¥Ô 3µE¸'±N´NÀCÑ HÔ HÑIÔIÐIÝÔ#Ð$4Ñ5Ô5Ð5r%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S ©Nr
  r  r  r  r•   ©r   r¨   r.   rº   r„   s    r#   r©   zAlbertConverter.post_processor¼  óY   € ÝÔ,Ø)Ø4à˜$Ô1×GÒGÈÑPÔPÐQØ˜$Ô1×GÒGÈÑPÔPÐQðð
ñ 
ô 
ð 	
r%   N©ri   rj   rk   r6   r¡   r©   r4   r%   r#   rf  rf  ¢  óA   € € € € € ð
ð 
ð 
ð6ð 6ð 6ð&
ð 
ð 
ð 
ð 
r%   rf  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚBarthezConverterc                 ó
   — d}|S ©Nr3  r4   ©r[   r  r+  s      r#   r+  zBarthezConverter.unk_idÈ  ó   € ØˆØˆr%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S ©Nz<s> $A </s>z<s> $A </s> </s> $B </s>ú<s>ú</s>r•   r{  r„   s    r#   r©   zBarthezConverter.post_processorÌ  óY   € ÝÔ,Ø Ø+à˜Ô/×EÒEÀeÑLÔLÐMØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r%   N)ri   rj   rk   r+  r©   r4   r%   r#   r€  r€  Ç  s2   € € € € € ðð ð ð
ð 
ð 
ð 
ð 
r%   r€  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚCamembertConverterc                 óR   — g d¢}|d„ |j         dd …         D ¦   «         z  }|dgz  }|S )N))z
<s>NOTUSEDç        ©ú<pad>r�  )z</s>NOTUSEDr�  ©z<unk>r�  )z<unk>NOTUSEDiœÿÿÿc                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z,CamembertConverter.vocab.<locals>.<listcomp>á  ó!   € ÐKÐKÐK°�5”; ¤Ð,ÐKÐKÐKr%   r   ©z<mask>r�  r'  ©r[   r  r6   s      r#   r6   zCamembertConverter.vocabØ  sK   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØ�/Ð"Ñ"ˆØˆr%   c                 ó   — dS r‚  r4   r)  s     r#   r+  zCamembertConverter.unk_idå  s   € àˆqr%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S r†  r{  r„   s    r#   r©   z!CamembertConverter.post_processoré  r‰  r%   N©ri   rj   rk   r6   r+  r©   r4   r%   r#   r‹  r‹  ×  sA   € € € € € ðð ð ðð ð ð
ð 
ð 
ð 
ð 
r%   r‹  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚDebertaV2Converterc                 ó  — g }| j         j        r(|                     t          j        d¬¦  «        ¦  «         t          || j         ¦  «        }|                     t          j        ||¬¦  «        ¦  «         t          j        |¦  «        S )Nrï   )rñ   r\  )r.   Úsplit_by_punctrH   r
   ÚPunctuationr0   r^  rö   )r[   r]  r&   Úlist_pretokenizersr/   s        r#   r£   z DebertaV2Converter.pre_tokenizerõ  sƒ   € ØÐØÔ"Ô1ð 	WØ×%Ò%¥nÔ&@È*Ð&UÑ&UÔ&UÑVÔVÐVÝ,Ð-=¸tÔ?VÑWÔWˆØ×!Ò!¥.Ô":À{ÐcqÐ"rÑ"rÔ"rÑsÔsÐsÝÔ&Ð'9Ñ:Ô:Ð:r%   c                 ó²  — g }| j         j        r&|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         |j        j        }|r'|                     t          j        |¦  «        ¦  «         |                     t          j	        t          d¦  «        d¦  «        ¦  «         t          j        |¦  «        S )NrQ  r·   )r.   rŸ   rH   r	   ru  rU  rS  rT  rW  rV  r   rö   rv  s       r#   r¡   zDebertaV2Converter.normalizerý  s¾   € ØÐØÔ"Ô0ð 	=Ø×#Ò#¥KÔ$9Ñ$;Ô$;Ñ<Ô<Ð<Ø×Ò¥Ô 1Ñ 3Ô 3Ñ4Ô4Ð4à$Ô4ÔIÐØð 	SØ×#Ò#¥KÔ$;Ð<PÑ$QÔ$QÑRÔRÐRØ×Ò¥Ô 3µE¸'±N´NÀCÑ HÔ HÑIÔIÐIåÔ#Ð$4Ñ5Ô5Ð5r%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rz  r{  r„   s    r#   r©   z!DebertaV2Converter.post_processor
  r|  r%   N)ri   rj   rk   r£   r¡   r©   r4   r%   r#   r™  r™  ô  sA   € € € € € ð;ð ;ð ;ð6ð 6ð 6ð
ð 
ð 
ð 
ð 
r%   r™  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚMBartConverterc                 ó`   — g d¢}|d„ |j         dd …         D ¦   «         z  }|g d¢z  }|dgz  }|S )N©©r‡  r�  rŽ  ©rˆ  r�  r�  c                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z(MBartConverter.vocab.<locals>.<listcomp>  r’  r%   r3  )©Úar_ARr�  ©Úcs_CZr�  ©Úde_DEr�  ©Úen_XXr�  ©Úes_XXr�  ©Úet_EEr�  ©Úfi_FIr�  ©Úfr_XXr�  ©Úgu_INr�  ©Úhi_INr�  ©Úit_ITr�  ©Úja_XXr�  ©Úkk_KZr�  ©Úko_KRr�  ©Últ_LTr�  ©Úlv_LVr�  ©Úmy_MMr�  ©Úne_NPr�  ©Únl_XXr�  ©Úro_ROr�  ©Úru_RUr�  ©Úsi_LKr�  ©Útr_TRr�  ©Úvi_VNr�  ©Úzh_CNr�  r“  r'  r”  s      r#   r6   zMBartConverter.vocab  sf   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØð 
ð 
ð 
ñ 	
ˆð6 	�/Ð"Ñ"ˆØˆr%   c                 ó   — dS r‚  r4   r)  s     r#   r+  zMBartConverter.unk_id<  ó   € Øˆqr%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz$A </s> en_XXz$A $B </s> en_XXr®  rˆ  r•   r{  r„   s    r#   r©   zMBartConverter.post_processor?  óY   € ÝÔ,Ø"Ø#à˜$Ô1×GÒGÈÑPÔPÐQØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r%   Nr—  r4   r%   r#   r¡  r¡    sB   € € € € € ð$ð $ð $ðLð ð ð
ð 
ð 
ð 
ð 
r%   r¡  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚMBart50Converterc                 ó`   — g d¢}|d„ |j         dd …         D ¦   «         z  }|g d¢z  }|dgz  }|S )Nr£  c                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z*MBart50Converter.vocab.<locals>.<listcomp>R  r’  r%   r3  )4r§  r©  r«  r­  r¯  r±  r³  rµ  r·  r¹  r»  r½  r¿  rÁ  rÃ  rÅ  rÇ  rÉ  rË  rÍ  rÏ  rÑ  rÓ  rÕ  r×  )Úaf_ZAr�  )Úaz_AZr�  )Úbn_INr�  )Úfa_IRr�  )Úhe_ILr�  )Úhr_HRr�  )Úid_IDr�  )Úka_GEr�  )Úkm_KHr�  )Úmk_MKr�  )Úml_INr�  )Úmn_MNr�  )Úmr_INr�  )Úpl_PLr�  )Úps_AFr�  )Úpt_XXr�  )Úsv_SEr�  )Úsw_KEr�  )Úta_INr�  )Úte_INr�  )Úth_THr�  )Útl_XXr�  )Úuk_UAr�  )Úur_PKr�  )Úxh_ZAr�  )Úgl_ESr�  )Úsl_SIr�  r“  r'  r”  s      r#   r6   zMBart50Converter.vocabK  sh   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØð  Rð  Rð  Rñ  	RˆØ�/Ð"Ñ"ˆØˆr%   c                 ó   — dS r‚  r4   r)  s     r#   r+  zMBart50Converter.unk_idW  rÚ  r%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nzen_XX $A </s>zen_XX $A $B </s>r®  rˆ  r•   r{  r„   s    r#   r©   zMBart50Converter.post_processorZ  rÜ  r%   Nr—  r4   r%   r#   rÞ  rÞ  J  sA   € € € € € ð
ð 
ð 
ðð ð ð
ð 
ð 
ð 
ð 
r%   rÞ  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚNllbConverterc                 óF   — g d¢}|d„ |j         dd …         D ¦   «         z  }|S )Nr£  c                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z'NllbConverter.vocab.<locals>.<listcomp>m  r’  r%   r3  r'  r”  s      r#   r6   zNllbConverter.vocabf  ó>   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØˆr%   c                 ó   — dS r‚  r4   r)  s     r#   r+  zNllbConverter.unk_idp  rÚ  r%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nzeng_Latn $A </s>zeng_Latn $A $B </s>Úeng_Latnrˆ  r•   r{  r„   s    r#   r©   zNllbConverter.post_processors  sY   € ÝÔ,Ø%Ø&à˜TÔ4×JÒJÈ:ÑVÔVÐWØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r%   Nr—  r4   r%   r#   rÿ  rÿ  e  sA   € € € € € ðð ð ðð ð ð
ð 
ð 
ð 
ð 
r%   rÿ  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚSeamlessM4TConverterc                 óF   — g d¢}|d„ |j         dd …         D ¦   «         z  }|S )N)rŽ  r�  r¤  r¥  c                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z.SeamlessM4TConverter.vocab.<locals>.<listcomp>†  r’  r%   r3  r'  r”  s      r#   r6   zSeamlessM4TConverter.vocab  r  r%   c                 ó   — | j         j        S rh   )r.   Úunk_token_idr)  s     r#   r+  zSeamlessM4TConverter.unk_id‰  s   € ØÔ&Ô3Ð3r%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz__eng__ $A </s>z__eng__ $A $B </s>Ú__eng__rˆ  r•   r{  r„   s    r#   r©   z#SeamlessM4TConverter.post_processorŒ  sY   € ÝÔ,Ø$Ø%à˜DÔ3×IÒIÈ)ÑTÔTÐUØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r%   Nr—  r4   r%   r#   r  r  ~  sA   € € € € € ðð ð ð4ð 4ð 4ð
ð 
ð 
ð 
ð 
r%   r  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚXLMRobertaConverterc                 óR   — g d¢}|d„ |j         dd …         D ¦   «         z  }|dgz  }|S )Nr£  c                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z-XLMRobertaConverter.vocab.<locals>.<listcomp>Ÿ  r’  r%   r3  r“  r'  r”  s      r#   r6   zXLMRobertaConverter.vocab˜  sK   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØ�/Ð"Ñ"ˆØˆr%   c                 ó
   — d}|S r‚  r4   rƒ  s      r#   r+  zXLMRobertaConverter.unk_id£  r„  r%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S r†  r{  r„   s    r#   r©   z"XLMRobertaConverter.post_processor§  r‰  r%   Nr—  r4   r%   r#   r  r  —  óA   € € € € € ð	ð 	ð 	ðð ð ð
ð 
ð 
ð 
ð 
r%   r  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚXLNetConverterc                 ó$   — d„ |j         D ¦   «         S )Nc                 ót   — g | ]5}t          |j        ¦  «        r|j        |j        fn|j        |j        d z
  f‘Œ6S ri  rk  r&  s     r#   rD   z(XLNetConverter.vocab.<locals>.<listcomp>´  rl  r%   r'  r)  s     r#   r6   zXLNetConverter.vocab³  rm  r%   c                 óf  — t          j        dd¦  «        t          j        dd¦  «        g}| j        j        sL|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         | j        j        r&|                     t          j        ¦   «         ¦  «         |j	        j
        }|r'|                     t          j        |¦  «        ¦  «         |                     t          j        t          d¦  «        d¦  «        ¦  «         t          j        |¦  «        S ro  rq  rv  s       r#   r¡   zXLNetConverter.normalizer¹  rx  r%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz$A:0 <sep>:0 <cls>:2z!$A:0 <sep>:0 $B:1 <sep>:1 <cls>:2z<sep>z<cls>r•   r{  r„   s    r#   r©   zXLNetConverter.post_processorÌ  r|  r%   Nr}  r4   r%   r#   r  r  ²  r~  r%   r  c                   ó   — e Zd ZdS )ÚReformerConverterN©ri   rj   rk   r4   r%   r#   r  r  ×  ó   € € € € € Ø€Dr%   r  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚRemBertConverterc                 ó>  — t          j        dd¦  «        t          j        dd¦  «        t          j        t          d¦  «        d¦  «        g}| j        j        sL|                     t          j        ¦   «         ¦  «         |                     t          j        ¦   «         ¦  «         | j        j        r&|                     t          j	        ¦   «         ¦  «         |j
        j        }|r'|                     t          j        |¦  «        ¦  «         t          j        |¦  «        S ro  )r	   rV  r   r.   rr  rH   rs  rt  rŸ   ru  rS  rT  rW  rö   rv  s       r#   r¡   zRemBertConverter.normalizerÝ  sý   € åÔ  cÑ*Ô*ÝÔ  cÑ*Ô*ÝÔ¥ g¡¤°Ñ4Ô4ð
Ðð
 Ô&Ô3ð 	@Ø×#Ò#¥KÔ$4Ñ$6Ô$6Ñ7Ô7Ð7Ø×#Ò#¥KÔ$<Ñ$>Ô$>Ñ?Ô?Ð?ØÔ"Ô0ð 	=Ø×#Ò#¥KÔ$9Ñ$;Ô$;Ñ<Ô<Ð<à$Ô4ÔIÐàð 	SØ×#Ò#¥KÔ$;Ð<PÑ$QÔ$QÑRÔRÐRåÔ#Ð$4Ñ5Ô5Ð5r%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rz  r{  r„   s    r#   r©   zRemBertConverter.post_processorð  r|  r%   N)ri   rj   rk   r¡   r©   r4   r%   r#   r   r   Û  s2   € € € € € ð6ð 6ð 6ð&
ð 
ð 
ð 
ð 
r%   r   c                   ó   — e Zd ZdS )ÚBertGenerationConverterNr  r4   r%   r#   r$  r$  û  r  r%   r$  c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚPegasusConverterc                 óp  — | j         j        df| j         j        dfg}| j         j        �|| j         j        dfgz  }| j         j        �,| j         j        | j         j        k     r|| j         j        dfgz  }|d„ t          d| j         j        ¦  «        D ¦   «         z  }|d„ |j        dd …         D ¦   «         z  }|S )Nr�  c                 ó   — g | ]
}d |› d�df‘ŒS )z<unk_ú>g      YÀr4   ©rC   r/  s     r#   rD   z*PegasusConverter.vocab.<locals>.<listcomp>  s%   € Ð[Ð[Ð[¨Q�<˜1�<�<�< Ð(Ð[Ð[Ð[r%   r;   c                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z*PegasusConverter.vocab.<locals>.<listcomp>  r’  r%   )	r.   Ú	pad_tokenÚ	eos_tokenÚmask_token_sentÚ
mask_tokenÚmask_token_idÚoffsetrG   r(  r”  s      r#   r6   zPegasusConverter.vocab   sÚ   € àÔ$Ô.°Ð4ØÔ$Ô.°Ð4ð
ˆð
 Ô"Ô2Ð>Ø�tÔ.Ô>ÀÐDÐEÑEˆEð Ô#Ô.Ð:ØÔ'Ô5¸Ô8OÔ8VÒVÐVà�tÔ.Ô9¸3Ð?Ð@Ñ@ˆEàÐ[Ð[µ%¸¸4Ô;RÔ;YÑ2ZÔ2ZÐ[Ñ[Ô[Ñ[ˆØÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØˆr%   c                 ó4   — |j         j        | j        j        z   S rh   )r  r+  r.   r1  r)  s     r#   r+  zPegasusConverter.unk_id  s   € ØÔ!Ô(¨4Ô+BÔ+IÑIÐIr%   c                 ó¢   — t          || j        ¦  «        }t          j        t          j        ¦   «         t          j        ||¬¦  «        g¦  «        S r[  )r0   r.   r
   rö   ÚWhitespaceSplitr^  r_  s       r#   r£   zPegasusConverter.pre_tokenizer  sO   € Ý,Ð-=¸tÔ?VÑWÔWˆÝÔ&åÔ.Ñ0Ô0ÝÔ(°[ÐQ_Ð`Ñ`Ô`ðñ
ô 
ð 	
r%   c                 óp   — | j         j        }|| j         j        fg}t          j        d|gdd|g|¬¦  «        S )Nú$Aú$Br•   )r.   r-  Úeos_token_idr   r¨   )r[   Úeosr˜   s      r#   r©   zPegasusConverter.post_processor  sI   € ØÔ%Ô/ˆà�$Ô)Ô6Ð7ð
ˆõ Ô,°T¸3°KÀtÈTÐSVÐFWÐhvÐwÑwÔwÐwr%   N)ri   rj   rk   r6   r+  r£   r©   r4   r%   r#   r&  r&  ÿ  sX   € € € € € ðð ð ð&Jð Jð Jð
ð 
ð 
ðxð xð xð xð xr%   r&  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚT5Converterc                 ó‚   — | j         j        }d„ |j        D ¦   «         }|d„ t          |dz
  dd¦  «        D ¦   «         z  }|S )Nc                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z%T5Converter.vocab.<locals>.<listcomp>*  s!   € ÐFÐFÐF°�%”+˜uœ{Ð+ÐFÐFÐFr%   c                 ó   — g | ]
}d |› d�df‘ŒS )z
<extra_id_r)  r�  r4   r*  s     r#   rD   z%T5Converter.vocab.<locals>.<listcomp>+  s)   € ÐUÐUÐU¨qÐ$ Ð$Ð$Ð$ cÐ*ÐUÐUÐUr%   r   rz   )r.   Ú
_extra_idsr(  rG   )r[   r  Únum_extra_idsr6   s       r#   r6   zT5Converter.vocab(  sR   € ØÔ/Ô:ˆØFÐF¸¼ÐFÑFÔFˆØÐUÐUµE¸-È!Ñ:KÈRÐQSÑ4TÔ4TÐUÑUÔUÑUˆØˆr%   c                 ón   — t          j        ddgg d¢d| j                             d¦  «        fg¬¦  «        S ©Nr6  rˆ  )r6  rˆ  r7  rˆ  r•   r{  r„   s    r#   r©   zT5Converter.post_processor.  óJ   € ÝÔ,Ø˜&�>Ø-Ð-Ð-à˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r%   N)ri   rj   rk   r6   r©   r4   r%   r#   r;  r;  '  s2   € € € € € ðð ð ð
ð 
ð 
ð 
ð 
r%   r;  c                   ó   — e Zd Zd„ ZdS )ÚUdopConverterc                 ón   — t          j        ddgg d¢d| j                             d¦  «        fg¬¦  «        S rB  r{  r„   s    r#   r©   zUdopConverter.post_processor9  rC  r%   N©ri   rj   rk   r©   r4   r%   r#   rE  rE  8  s#   € € € € € ð
ð 
ð 
ð 
ð 
r%   rE  c                   ó   — e Zd Zdefd„ZdS )ÚWhisperConverterr'   c           
      ó`  — | j         j        }t          | j         j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        | j         j	        ¬¦  «        |_
        t          j        ¦   «         |_        | j         j        }| j                              |¦  «        }| j         j        }| j         j        }d                     d„ |D ¦   «         ¦  «        }t%          j        |› d|› d�|› d	|› d
�||fgt)          ||¦  «        ¢¬¦  «        |_        |S )Nr   FrØ   rÚ   r·   c                 ó   — g | ]}|› d �‘ŒS )r’   r4   ©rC   rA  s     r#   rD   z.WhisperConverter.converted.<locals>.<listcomp>Z  s   € Ð#GÐ#GÐ#G°U u L L LÐ#GÐ#GÐ#Gr%   z $A:0 r’   z $A:0 $B:1 r”   r•   )r.   rÎ   rp   rÏ   rÐ   r   r   r
   rÞ   r&   r£   r   rª   Úprefix_tokensÚconvert_ids_to_tokensr-  r8  Újoinr   r¨   Úzipr©   )	r[   r6   rL   r¬   Úprefix_token_idsÚprefixesr9  r8  Úprefix_templates	            r#   r…   zWhisperConverter.convertedD  sQ  € ØÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈDÔLcÔLtÐ"uÑ"uÔ"uˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔàÔ2Ô@ÐØÔ*×@Ò@ÐAQÑRÔRˆØÔ%Ô/ˆØÔ.Ô;ˆØŸ(š(Ð#GÐ#G¸hÐ#GÑ#GÔ#GÑHÔHˆÝ#-Ô#@Ø%Ð4Ð4¨SÐ4Ð4Ð4Ø#Ð7Ð7°Ð7Ð7Ð7à�lÐ#ðå�XÐ/Ñ0Ô0ðð$
ñ $
ô $
ˆ	Ô ð Ðr%   Nr°   r4   r%   r#   rI  rI  C  s/   € € € € € ð ˜9ð  ð  ð  ð  ð  ð  r%   rI  c                   ó   — e Zd Zd„ ZdS )ÚBigBirdConverterc           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S rz  r{  r„   s    r#   r©   zBigBirdConverter.post_processorh  r|  r%   NrG  r4   r%   r#   rU  rU  g  s#   € € € € € ð
ð 
ð 
ð 
ð 
r%   rU  c                   ó   — e Zd Zdefd„ZdS )ÚCLIPConverterr'   c                 ó
  — | j         j        }t          | j         j                             ¦   «         ¦  «        }| j         j        }t          t          ||d dddt          |¦  «        ¬¦  «        ¦  «        }t          j
        t          j        ¦   «         t          j        t          d¦  «        d¦  «        t          j        ¦   «         g¦  «        |_        t!          j
        t!          j        t          d¦  «        dd	¬
¦  «        t!          j        d¬¦  «        g¦  «        |_        t)          j        ¦   «         |_        t-          j        | j         j        | j         j        f| j         j        | j         j        fdd¬¦  «        |_        |S )Nr   rÈ   F©r6   rL   rÉ   rÙ   rÊ   rË   rŠ   z\s+r·   z9's|'t|'re|'ve|'m|'ll|'d|[\p{L}]+|[\p{N}]|[^\s\p{L}\p{N}]+ÚremovedTrð   rÚ   rû   )r.   rÎ   rp   rÏ   rÐ   rŠ   r   r   rm   r	   rö   rõ   rV  r   ru  r¡   r
   r÷   rÞ   r£   r   rª   r   rü   r-  r8  rß   rà   r©   rÔ   s        r#   r…   zCLIPConverter.convertedt  ss  € ØÔ'Ô/ˆÝ�dÔ-Ô7×<Ò<Ñ>Ô>Ñ?Ô?ˆØÔ+Ô5ˆ	åÝØØØØ*,Ø#)ØÝ˜i™.œ.ðñ ô ñ

ô 

ˆ	õ  +Ô3ÝŒ_ÑÔ¥Ô 3µE¸&±M´MÀ3Ñ GÔ GÍÔI^ÑI`ÔI`Ðañ 
ô  
ˆ	Ôõ #1Ô"9åÔ$ÝÐZÑ[Ô[Ø&Øðñ ô õ
 Ô(¸%Ð@Ñ@Ô@ðñ	#
ô 	#
ˆ	Ôõ %Ô.Ñ0Ô0ˆ	Ôõ $.Ô#?ØÔ(Ô2°DÔ4KÔ4XÐYØÔ(Ô2°DÔ4KÔ4XÐYØ"Øð	$
ñ $
ô $
ˆ	Ô ð Ðr%   Nr°   r4   r%   r#   rX  rX  s  s/   € € € € € ð'˜9ð 'ð 'ð 'ð 'ð 'ð 'r%   rX  c                   ó   — e Zd Zdefd„ZdS )ÚLayoutLMv2Converterr'   c           	      ó¸  — | j         j        }t          t          |t	          | j         j        ¦  «        ¬¦  «        ¦  «        }d}d}d}t          | j         d¦  «        r3| j         j        j        }| j         j        j	        }| j         j        j
        }t          j        d|||¬¦  «        |_        t          j        ¦   «         |_        t	          | j         j        ¦  «        }t	          | j         j        ¦  «        }| j         j        }| j         j        }	t+          j        |› d|› d�|› d|› d|› d	�||f||	fg¬
¦  «        |_        t1          j        d¬¦  «        |_        |S )Nr‰   FTr‹   rŒ   r‘   r’   r“   r”   r•   r™   rš   rœ   r«   s
             r#   r…   zLayoutLMv2Converter.convertedŸ  sy  € ØÔ'Ô-ˆÝ�i¨½¸TÔ=TÔ=^Ñ9_Ô9_Ð`Ñ`Ô`ÑaÔaˆ	à!&ÐØˆØˆÝ�4Ô*Ð,=Ñ>Ô>ð 	RØ%)Ô%<Ô%LÔ%cÐ"Ø Ô3ÔCÔQˆMØ Ô3ÔCÔQˆMå*Ô9ØØ!7Ø'Ø#ð	 
ñ  
ô  
ˆ	Ôõ #1Ô"AÑ"CÔ"Cˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ*Ð* 3Ð*Ð*Ð*ØÐ5Ð5 Ð5Ð5¨cÐ5Ð5Ð5à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô õ %Ô.°dÐ;Ñ;Ô;ˆ	ÔàÐr%   Nr°   r4   r%   r#   r]  r]  ž  r±   r%   r]  c                   ó   — e Zd Zdefd„ZdS )ÚBlenderbotConverterr'   c           
      ó‚  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd¬¦  «        ¦  «        }t          j        |j	        ¬¦  «        |_
        t          j        ¦   «         |_        t          j        d|j        › d�|j        |j        fg¬¦  «        |_        |S )Nr   FrØ   rÚ   z$A:0 r’   )r–   r˜   )r.   rÎ   rp   rÏ   rÐ   r   r   r
   rÞ   r&   r£   r   rª   r   r¨   r-  r8  r©   rý   s        r#   r…   zBlenderbotConverter.convertedÆ  sÎ   € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%Øðñ ô ñ	
ô 	
ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	ÔÝ#-Ô#@Ø+˜2œ<Ð+Ð+Ð+à”˜rœÐ/ðð$
ñ $
ô $
ˆ	Ô ð Ðr%   Nr°   r4   r%   r#   r`  r`  Å  rÿ   r%   r`  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚXGLMConverterc                 óT   — g d¢}|d„ |j         dd …         D ¦   «         z  }|g d¢z  }|S )Nr£  c                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z'XGLMConverter.vocab.<locals>.<listcomp>ê  r’  r%   r3  ))z<madeupword0>r�  )z<madeupword1>r�  )z<madeupword2>r�  )z<madeupword3>r�  )z<madeupword4>r�  )z<madeupword5>r�  )z<madeupword6>r�  r'  r”  s      r#   r6   zXGLMConverter.vocabã  s[   € ð
ð 
ð 
ˆð 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØð  zð  zð  zñ  	zˆØˆr%   c                 ó
   — d}|S r‚  r4   rƒ  s      r#   r+  zXGLMConverter.unk_idî  r„  r%   c           	      óœ   — t          j        ddd| j                             d¦  «        fd| j                             d¦  «        fg¬¦  «        S )Nz</s> $Az</s> $A </s> </s> $Br‡  rˆ  r•   r{  r„   s    r#   r©   zXGLMConverter.post_processorò  sY   € ÝÔ,ØØ'à˜Ô/×EÒEÀeÑLÔLÐMØ˜Ô0×FÒFÀvÑNÔNÐOðð
ñ 
ô 
ð 	
r%   Nr—  r4   r%   r#   rc  rc  â  r  r%   rc  c                   ó>   — e Zd ZdZeZddhZ	 d„ Zd„ Zd„ Z	d„ Z
d„ Zd	S )
ÚGemmaConverterTz<start_of_turn>z<end_of_turn>c                 ó,   — t          j        dd¦  «        S ©Nr·   rR  )r	   rV  r)  s     r#   r¡   zGemmaConverter.normalizer  s   € ÝÔ" 3¨Ñ.Ô.Ð.r%   c                 ó  — | j         j        df| j         j        df| j         j        dfg}|d„ |j        dd …         D ¦   «         z  }t          d„ |D ¦   «         ¦  «        s.t          d„ t          |¦  «        D ¦   «         d ¦  «        }|�d||<   |S )Nr�  c                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z(GemmaConverter.vocab.<locals>.<listcomp>  r’  r%   r3  c              3   ó.   K  — | ]}|d          dk    V — ŒdS )r   ru   Nr4   )rC   r5   s     r#   ú	<genexpr>z'GemmaConverter.vocab.<locals>.<genexpr>  s*   è è € Ð/Ð/ A�1�Q”4˜4’<Ð/Ð/Ð/Ð/Ð/Ð/r%   c              3   ó8   K  — | ]\  }}|d          dk    ¯|V — ŒdS )r   rv   Nr4   )rC   r/  r5   s      r#   ro  z'GemmaConverter.vocab.<locals>.<genexpr>  s4   è è € Ð"VÐ"V©¨¨AÀQÀqÄTÈXÒEUÐEU 1ÐEUÐEUÐEUÐEUÐ"VÐ"Vr%   )ru   r�  )r.   r,  r-  rß   r(  ÚanyÚnextrH  )r[   r  r6   Úoverride_indexs       r#   r6   zGemmaConverter.vocab  s¶   € àÔ$Ô.°Ð4ØÔ$Ô.°Ð4ØÔ$Ô.°Ð4ð
ˆð
 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆõ Ð/Ð/¨Ð/Ñ/Ô/Ñ/Ô/ð 	4Ý!Ð"VÐ"Vµ¸5Ñ1AÔ1AÐ"VÑ"VÔ"VÐX\Ñ]Ô]ˆNØÐ)Ø(3��nÑ%àˆr%   c                 ó,   — t          j        dd¦  «        S )Nr·   Úmerged_with_previous)r
   r÷   ©r[   r]  r&   s      r#   r£   zGemmaConverter.pre_tokenizer   s   € ÝÔ# CÐ)?Ñ@Ô@Ð@r%   c                 ó
   — d}|S r‚  r4   rƒ  s      r#   r+  zGemmaConverter.unk_id#  r„  r%   c                 óš   — t          j        t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g¦  «        S )NrR  r·   )r   rö   rV  ÚByteFallbackÚFuserv  s      r#   rª   zGemmaConverter.decoder'  sA   € ÝÔ åÔ  ¨Ñ,Ô,ÝÔ%Ñ'Ô'Ý”‘”ðñ
ô 
ð 	
r%   N)ri   rj   rk   r  rr   rG  r˜   r¡   r6   r£   r+  rª   r4   r%   r#   ri  ri  ý  s|   € € € € € ØÐØ.€Là'¨Ð9€Nðð/ð /ð /ðð ð ð Að Að Aðð ð ð
ð 
ð 
ð 
ð 
r%   ri  c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚLlamaConverterTc                 óä   — | j                              d¦  «        df| j                              d¦  «        df| j                              d¦  «        dfg}|d„ |j        dd …         D ¦   «         z  }|S )Nr   r�  r   r;   c                 ó*   — g | ]}|j         |j        f‘ŒS r4   r$  r&  s     r#   rD   z(LlamaConverter.vocab.<locals>.<listcomp>:  r’  r%   r3  )r.   rN  r(  r”  s      r#   r6   zLlamaConverter.vocab4  s   € àÔ$×:Ò:¸1Ñ=Ô=¸sÐCØÔ$×:Ò:¸1Ñ=Ô=¸sÐCØÔ$×:Ò:¸1Ñ=Ô=¸sÐCð
ˆð
 	ÐKÐK¸%¼,ÀqÀrÀrÔ:JÐKÑKÔKÑKˆØˆr%   c                 ó
   — d}|S rC  r4   rƒ  s      r#   r+  zLlamaConverter.unk_id=  r„  r%   c                 óÖ   — t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g}|r|t          j        dd¬¦  «        gz  }t          j        |¦  «        S ©NrR  r·   r   )ÚcontentrP  ©r   rV  ry  rz  rU  rö   ©r[   r]  r&   Úsequences       r#   rª   zLlamaConverter.decoderA  óe   € åÔ˜U CÑ(Ô(ÝÔ!Ñ#Ô#ÝŒM‰OŒOð
ˆð
 ð 	>Ø�œ°¸!Ð<Ñ<Ô<Ð=Ñ=ˆHÝÔ  Ñ*Ô*Ð*r%   c                 óð   — t          | j        dd¦  «        r_g }t          | j        dd¦  «        r|t          j        d¬¦  «        gz  }|t          j        dd¬¦  «        gz  }t          j        |¦  «        S d S )Nr*   Tr&   rR  )Úprependr·   )Úpatternr‚  )r-   r.   r	   ÚPrependrV  rö   )r[   r  r…  s      r#   r¡   zLlamaConverter.normalizerK  s…   € Ý�4Ô*¨H°dÑ;Ô;ð 	2ØˆHÝ�tÔ.Ð0BÀDÑIÔIð AØ�[Ô0¸Ð?Ñ?Ô?Ð@Ñ@�Ø�Ô,°SÀ%ÐHÑHÔHÐIÑIˆHÝÔ'¨Ñ1Ô1Ð1Øˆtr%   c                 óŠ   — t          | j        dd¦  «        s,t          || j        ¦  «        }t          j        ||d¬¦  «        S d S )Nr*   TF©r]  r/   Úsplit)r-   r.   r0   r
   r^  r_  s       r#   r£   zLlamaConverter.pre_tokenizerT  sL   € Ý�tÔ.°¸$Ñ?Ô?ð 	qÝ0Ð1AÀ4ÔCZÑ[Ô[ˆNÝ!Ô+¸ÐTbÐjoÐpÑpÔpÐpØˆtr%   c                 ó   — d S rh   r4   r„   s    r#   r©   zLlamaConverter.post_processorZ  s   € àˆtr%   N)
ri   rj   rk   r  r6   r+  rª   r¡   r£   r©   r4   r%   r#   r|  r|  1  st   € € € € € ØÐðð ð ðð ð ð+ð +ð +ðð ð ðð ð ðð ð ð ð r%   r|  c                   ó   — e Zd Zdefd„ZdS )ÚMarkupLMConverterr'   c                 ó(  — | j         }|j        }t          |j                             ¦   «         ¦  «        }t          t          ||d ddd| j         j        ¬¦  «        ¦  «        }t          j	        |j
        ¬¦  «        |_        t          j	        ¦   «         |_        t          | j         j        ¦  «        }t          | j         j        ¦  «        }| j         j        }| j         j        }t'          j        |› d|› �|› d|› d|› �||f||fg¬¦  «        |_        |S )Nr   FrZ  rÚ   z $A z $B r•   )r.   rÎ   rp   rÏ   rÐ   r   r   rŠ   r
   rÞ   r&   r£   r   rª   rm   r¤   r¥   r¦   r§   r   r¨   r©   )	r[   rþ   r6   rL   r¬   r­   r®   r¦   r§   s	            r#   r…   zMarkupLMConverter.converted`  s1  € ØÔ$ˆØ”
ˆÝ�b”l×'Ò'Ñ)Ô)Ñ*Ô*ˆåÝØØØØ*,Ø#%ØØÔ1Ô;ðñ ô ñ

ô 

ˆ	õ #1Ô":ÈBÔL_Ð"`Ñ"`Ô"`ˆ	ÔÝ$Ô.Ñ0Ô0ˆ	Ôå�$Ô)Ô3Ñ4Ô4ˆÝ�$Ô)Ô3Ñ4Ô4ˆØÔ.Ô;ˆØÔ.Ô;ˆå#-Ô#@ØÐ$Ð$˜sÐ$Ð$ØÐ+Ð+˜SÐ+Ð+ cÐ+Ð+à�lÐ#Ø�lÐ#ðð$
ñ $
ô $
ˆ	Ô ð Ðr%   Nr°   r4   r%   r#   r�  r�  _  s/   € € € € € ð"˜9ð "ð "ð "ð "ð "ð "r%   r�  c                   ó,   — e Zd ZdZdd„Zd„ Zd„ Zd„ ZdS )ÚMoshiConverterTNc                 óL  — t          | d¦  «         t                               | |¦  «         t          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _        d S ©Nr   r  ©	r   r€   r\   r$   r  r  r  r  r  )r[   r  Úmodel_max_lengthÚkwargsr  r  r   s          r#   r\   zMoshiConverter.__init__ˆ  sÏ   € Ý˜$ 
Ñ+Ô+Ð+å×Ò˜4 Ñ,Ô,Ð,õ $Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�*˜dÑ#Ô#ð 	( qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
ó   Á(BÂBÂBc                 óÆ   — |j         j        }t          j        dd¦  «        g}|st          j        |¦  «        S t          j        t          j        |¦  «        g|z   ¦  «        S rk  )rS  rT  r	   rV  rö   rW  rX  s       r#   r¡   zMoshiConverter.normalizer•  sg   € Ø$Ô4ÔIÐåÔ  UÑ+Ô+ð
ˆð $ð 	hÝÔ'¨Ñ5Ô5Ð5åÔ'­Ô)@ÐAUÑ)VÔ)VÐ(WÐZfÑ(fÑgÔgÐgr%   c                 óÖ   — t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g}|r|t          j        dd¬¦  «        gz  }t          j        |¦  «        S r�  rƒ  r„  s       r#   rª   zMoshiConverter.decoderŸ  r†  r%   c                 ó4   — d}t          j        ||d¬¦  «        S )Nr+   FrŒ  )r
   r^  r_  s       r#   r£   zMoshiConverter.pre_tokenizer©  s!   € Ø ˆÝÔ'°KÐP^ÐfkÐlÑlÔlÐlr%   rh   )ri   rj   rk   r  r\   r¡   rª   r£   r4   r%   r#   r“  r“  …  sc   € € € € € ØÐðð ð ð ðhð hð hð+ð +ð +ðmð mð mð mð mr%   r“  c                   óD   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )ÚHeliumConverterTNc                 óL  — t          | d¦  «         t                               | |¦  «         t          ¦   «         }|                     ¦   «         }t          |d¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   || _        d S r•  r–  )r[   r  r  r  r  r   s         r#   r\   zHeliumConverter.__init__±  sÍ   € Ý˜$ 
Ñ+Ô+Ð+å×Ò˜4 Ñ,Ô,Ð,å#Ñ%Ô%ˆ	à× Ò Ñ"Ô"ˆÝ�*˜dÑ#Ô#ð 	( qØ×Ò˜aŸfšf™hœhÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àˆŒ
ˆ
ˆ
r™  c                 ó¸  ‡ — ‰                       |¦  «        }t          t          |‰                      |¦  «        ‰ j        ¬¦  «        ¦  «        }ˆ fd„t          |j        ¦  «        D ¦   «         }|                     d„ t          |d„ ¬¦  «        D ¦   «         ¦  «         |                     t          ddd¬¦  «        g¦  «         | 
                    d	d
¬¦  «         |S )Nr-  c                 ój   •— g | ]/\  }}|j         d v ¯||j        |j         dk    p|j        ‰j        v f‘Œ0S r2  r5  r7  s      €r#   rD   z-HeliumConverter.tokenizer.<locals>.<listcomp>Ê  r:  r%   c                 ó<   — g | ]\  }}}t          |d |d¬¦  «        ‘ŒS )FT)r=  r>  Úsingle_wordr?  r@  s       r#   rD   z-HeliumConverter.tokenizer.<locals>.<listcomp>Ð  s@   € ð ð ð á&�B˜˜wõ ˜5¨U¸GÐQUÐVÑVÔVðð ð r%   c                 ó   — | d         S rC  r4   rD  s    r#   r7   z+HeliumConverter.tokenizer.<locals>.<lambda>Ò  rE  r%   r8   ú
Fr<  r�  r3  )r,  Úpad_id)r6   r   r   r+  r  rH  r(  rK  rI   r   Úenable_padding)r[   r  rK   r¬   rN  s   `    r#   r¬   zHeliumConverter.tokenizer½  s  ø€ Ø—z’z %Ñ(Ô(ˆÝÝØØ—{’{ 5Ñ)Ô)Ø"Ô7ðñ ô ñ
ô 
ˆ	ð
ð 
ð 
ð 
å" 5¤<Ñ0Ô0ð
ñ 
ô 
Ðð
 	×Òðð å*0Ð1AÀ~À~Ð*VÑ*VÔ*Vðñ ô ñ	
ô 	
ð 	
ð 	×Ò�j¨¸%ÈÐOÑOÔOÐPÑQÔQÐQØ× Ò ¨7¸1Ð Ñ=Ô=Ð=ØÐr%   c                 ót   — g }|j         D ]-}|j        dk    r|d|j        fgz  }Œ||j        |j        fgz  }Œ.|S )Nz<0x0A>r¥  )r(  rx   r%  )r[   r  r6   rx   s       r#   r6   zHeliumConverter.vocabÙ  sX   € ØˆØ”\ð 	6ð 	6ˆEØŒ{˜hÒ&Ð&Ø˜4 ¤Ð-Ð.Ñ.��à˜5œ;¨¬Ð4Ð5Ñ5��Øˆr%   c                 ó
   — d}|S rC  r4   rƒ  s      r#   r+  zHeliumConverter.unk_idâ  r„  r%   c                 óÒ   — t          j        dd¦  «        t          j        ¦   «         t          j        ¦   «         g}|t          j        dd¬¦  «        gz  }t          j        |¦  «        S r�  rƒ  r„  s       r#   rª   zHeliumConverter.decoderæ  s]   € åÔ˜U CÑ(Ô(ÝÔ!Ñ#Ô#ÝŒM‰OŒOð
ˆð
 	•X”^¨C°aÐ8Ñ8Ô8Ð9Ñ9ˆÝÔ  Ñ*Ô*Ð*r%   c                 óx   — t          j        t          j        d¦  «        t          j        dd¦  «        g¦  «        S rk  )r	   rö   rŠ  rV  r)  s     r#   r¡   zHeliumConverter.normalizerï  s2   € ÝÔ#¥[Ô%8¸Ñ%=Ô%=½{Ô?RÐSWÐY^Ñ?_Ô?_Ð$`ÑaÔaÐar%   c                 óR   — t          j        t          j        dd¦  «        g¦  «        S )Nr¥  Ú
contiguous)r
   rö   r÷   rv  s      r#   r£   zHeliumConverter.pre_tokenizerò  s#   € ÝÔ&­Ô(<¸TÀ<Ñ(PÔ(PÐ'QÑRÔRÐRr%   c                 ó:   — t          j        ddgg d¢dg¬¦  «        S )Nr‡  r6  )r‡  r6  r‡  r7  )r‡  r   r•   )r   r¨   r„   s    r#   r©   zHeliumConverter.post_processorõ  s@   € ÝÔ,àØððð ð ð ðð
ñ 
ô 
ð 	
r%   rh   )ri   rj   rk   r  r\   r¬   r6   r+  rª   r¡   r£   r©   r4   r%   r#   rž  rž  ®  s�   € € € € € ØÐð
ð 
ð 
ð 
ðð ð ð8ð ð ðð ð ð+ð +ð +ðbð bð bðSð Sð Sð
ð 
ð 
ð 
ð 
r%   rž  c            	      ó\  — t          t          t          d¦  «        t          d¦  «        dz   ¦  «        ¦  «        t          t          t          d¦  «        t          d¦  «        dz   ¦  «        ¦  «        z   t          t          t          d¦  «        t          d¦  «        dz   ¦  «        ¦  «        z   } | dd…         }d	}t          d
¦  «        D ]8}|| vr2|                      |¦  «         |                     d
|z   ¦  «         |dz  }Œ9d„ |D ¦   «         }t	          t          | |¦  «        ¦  «        S )a8  
    Returns list of utf-8 byte and a mapping to unicode strings. We specifically avoids mapping to whitespace/control
    characters the bpe code barfs on.

    The reversible bpe codes work on unicode strings. This means you need a large # of unicode characters in your vocab
    if you want to avoid UNKs. When you're at something like a 10B token dataset you end up needing around 5K for
    decent coverage. This is a significant percentage of your normal, say, 32K bpe vocab. To avoid that, we want lookup
    tables between utf-8 bytes and unicode strings.
    ú!ú~r   õ   Â¡õ   Â¬õ   Â®õ   Ã¿Nr   é   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r4   )Úchr)rC   Úns     r#   rD   z$bytes_to_unicode.<locals>.<listcomp>  s   € Ð	Ð	Ð	�Q�#ˆa‰&Œ&Ð	Ð	Ð	r%   )rp   rG   ÚordrH   rE   rP  )ÚbsÚcsr¹  Úbs       r#   Úbytes_to_unicoder¾    s  € õ 	�U•3�s‘8”8�S ™XœX¨™\Ñ*Ô*Ñ+Ô+­dµ5½¸T¹¼ÅCÈÁIÄIÐPQÁMÑ3RÔ3RÑ.SÔ.SÑSÕVZÕ[`ÕadÐeiÑajÔajÕloÐptÑluÔluÐxyÑlyÑ[zÔ[zÑV{ÔV{Ñ{ð ð 
ˆAˆAˆAŒ€BØ	€AÝ�4‰[Œ[ð ð ˆØ�Bˆ;ˆ;Ø�IŠI�a‰LŒLˆLØ�IŠI�d˜Q‘hÑÔÐØ�‰FˆAøØ	Ð	˜"Ð	Ñ	Ô	€BÝ•�B˜‘”ÑÔÐr%   c                   óJ   ‡ — e Zd ZdZ	 	 	 	 dˆ fd„	Zdefd„Zd„ Zd	efd
„Z	ˆ xZ
S )ÚTikTokenConverterz'
    A general tiktoken converter.
    Nús(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}{1,3}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+Fc                 ó¾   •—  t          ¦   «         j        |Ž  || _        || _        || _        t          |t          ¦  «        r|                     ¦   «         n|| _        d S rh   )	r  r\   r  r‰  r&   Ú
isinstancerE   rÐ   Úadditional_special_tokens)r[   r  r‰  r&   rÄ  r  r˜  r!  s          €r#   r\   zTikTokenConverter.__init__%  sg   ø€ ð 	�‰ŒÔ˜$ÐÐØ$ˆŒØˆŒØ 0ˆÔõ Ð3µTÑ:Ô:ð+Ð%×*Ò*Ñ,Ô,Ð,à*ð 	Ô&Ð&Ð&r%   Útiktoken_urlc                 óf  ‡‡‡— 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w ||¦  «        Št	          ¦   «         Šˆfd„Šg }i }‰                     ¦   «         D ]®\  }}|| ‰|¦  «        <   t          |¦  «        dk    rŒ'g }t          dt          |¦  «        ¦  «        D ]=}|d |…         ||d …         }
}	|	‰v r#|
‰v r|	|
z   ‰v r|                     |	|
|f¦  «         Œ>t          |ˆfd„d¬¦  «        }| 
                    |¦  «         Œ¯t          |d	„ d¬¦  «        }ˆfd
„|D ¦   «         }||fS )Nr   )Úload_tiktoken_bpezY`tiktoken` is required to read a `tiktoken` file. Install it with `pip install tiktoken`.c                 ól   •— d                      ˆfd„|                      d¦  «        D ¦   «         ¦  «        S )Nr   c                 ó:   •— g | ]}‰t          |¦  «                 ‘ŒS r4   )rº  )rC   ÚcharÚbyte_encoders     €r#   rD   zdTikTokenConverter.extract_vocab_merges_from_model.<locals>.token_bytes_to_string.<locals>.<listcomp>D  s$   ø€ ÐTÐTÐT¸˜L­¨T©¬Ô3ÐTÐTÐTr%   zlatin-1)rO  Údecode)r½  rË  s    €r#   Útoken_bytes_to_stringzPTikTokenConverter.extract_vocab_merges_from_model.<locals>.token_bytes_to_stringC  s6   ø€ Ø—7’7ÐTÐTÐTÐTÀÇÂÈÑ@SÔ@SÐTÑTÔTÑUÔUÐUr%   r   c                 ó<   •— ‰| d                  ‰| d                  fS r3   r4   )r5   rÏ   s    €r#   r7   zCTikTokenConverter.extract_vocab_merges_from_model.<locals>.<lambda>Q  s   ø€ °¸1¸Q¼4´À)ÈAÈaÌDÄ/Ð0R€ r%   Fr?   c                 ó   — | d         S )Nr;   r4   r=   s    r#   r7   zCTikTokenConverter.extract_vocab_merges_from_model.<locals>.<lambda>S  s
   € °°A´€ r%   c                 óT   •— g | ]$} ‰|d          ¦  «         ‰|d         ¦  «        f‘Œ%S rB   r4   )rC   r>   rÍ  s     €r#   rD   zETikTokenConverter.extract_vocab_merges_from_model.<locals>.<listcomp>T  s?   ø€ ÐcÐcÐcÐUXÐ(Ð(¨¨Q¬Ñ0Ô0Ð2GÐ2GÈÈAÌÑ2OÔ2OÐPÐcÐcÐcr%   )Útiktoken.loadrÇ  rJ  Ú
ValueErrorr¾  rF   r<   rG   rH   rI   rJ   )r[   rÅ  rÇ  rL   r6   rA  ÚrankrO   rP   rQ   rR   rÏ   rË  rÍ  s              @@@r#   Úextract_vocab_merges_from_modelz1TikTokenConverter.extract_vocab_merges_from_model8  sÈ  øøø€ ð	Ø7Ð7Ð7Ð7Ð7Ð7Ð7øÝð 	ð 	ð 	ÝØkñô ð ð	øøøð
 &Ð% lÑ3Ô3ˆ	Ý'Ñ)Ô)ˆð	Vð 	Vð 	Vð 	Vð 	Vð ˆØˆØ$Ÿ?š?Ñ,Ô,ð 
	!ð 
	!‰KˆE�4Ø26ˆEÐ'Ð'¨Ñ.Ô.Ñ/Ý�5‰zŒz˜QŠˆØØˆEÝ˜q¥# e¡*¤*Ñ-Ô-ð ;ð ;�Ø#(¨¨%¨¤=°%¸¸¸´-˜�Ø˜iÐ'Ð'¨G°yÐ,@Ð,@ÀgÐPWÑFWÐ\eÐEeÐEeØ—L’L '¨7°DÐ!9Ñ:Ô:Ð:øÝ˜5Ð&RÐ&RÐ&RÐ&RÐ\aÐbÑbÔbˆEØ�MŠM˜%Ñ Ô Ð Ð Ý˜Ð$6Ð$6ÀÐFÑFÔFˆØcÐcÐcÐcÐ\bÐcÑcÔcˆØ�fˆ}Ðs   … Œ&c                 óÀ   — |                       | j        ¦  «        \  }}t          t          ||d¬¦  «        ¦  «        }t	          |j        d¦  «        rd|j        _        |S )NF)rË   Úignore_mergesT)rÔ  r  r   r   r�   rV   rÖ  )r[   rK   rL   r¬   s       r#   r¬   zTikTokenConverter.tokenizerW  s\   € Ø#×CÒCÀDÄOÑTÔTÑˆ�fÝ�c ,°ÀÐGÑGÔGÑHÔHˆ	Ý�9”? OÑ4Ô4ð 	1Ø,0ˆIŒOÔ)ØÐr%   r'   c                 ó�  — |                       ¦   «         }t          j        t          j        t	          | j        ¦  «        dd¬¦  «        t          j        | j        d¬¦  «        g¦  «        |_        t          j        ¦   «         |_
        |                     d„ | j        D ¦   «         ¦  «         t          j        d¬¦  «        |_        |S )Nrï   Frð   ró   c                 ó2   — g | ]}t          |d d¬¦  «        ‘ŒS )FTr<  r?  rL  s     r#   rD   z/TikTokenConverter.converted.<locals>.<listcomp>i  s'   € ÐkÐkÐkÀ5�Z˜¨%¸Ð>Ñ>Ô>ÐkÐkÐkr%   rÜ   )r¬   r
   rö   r÷   r   r‰  rÞ   r&   r£   r   rª   rÒ   rÄ  r   r©   )r[   r¬   s     r#   r…   zTikTokenConverter.converted^  s¿   € Ø—N’NÑ$Ô$ˆ	Ý"0Ô"9åÔ$¥U¨4¬<Ñ%8Ô%8À:ÐV[Ð\Ñ\Ô\ÝÔ(¸$Ô:OÐ[`ÐaÑaÔaðñ#
ô #
ˆ	Ôõ %Ô.Ñ0Ô0ˆ	Ôà×$Ò$ØkÐkÈDÔLjÐkÑkÔkñ	
ô 	
ð 	
õ $.Ô#7ÀUÐ#KÑ#KÔ#Kˆ	Ô àÐr%   )NrÁ  FN)ri   rj   rk   rl   r\   rm   rÔ  r¬   r   r…   rc  rd  s   @r#   rÀ  rÀ     s�   ø€ € € € € ðð ð ð KØØ"&ð
ð 
ð 
ð 
ð 
ð 
ð&¸Cð ð ð ð ð>ð ð ð˜9ð ð ð ð ð ð ð ð r%   rÀ  ÚAlbertTokenizerÚBartTokenizerÚBarthezTokenizerÚBertTokenizerÚBigBirdTokenizerÚBlenderbotTokenizerÚCamembertTokenizerÚCLIPTokenizerÚCodeGenTokenizerÚConvBertTokenizerÚDebertaTokenizerÚDebertaV2TokenizerÚDistilBertTokenizerÚDPRReaderTokenizerÚDPRQuestionEncoderTokenizerÚDPRContextEncoderTokenizerÚElectraTokenizerÚFNetTokenizerÚFunnelTokenizerÚGPT2TokenizerÚHerbertTokenizerÚLayoutLMTokenizerÚLayoutLMv2TokenizerÚLayoutLMv3TokenizerÚLayoutXLMTokenizerÚLongformerTokenizerÚLEDTokenizerÚLxmertTokenizerÚMarkupLMTokenizerÚMBartTokenizerÚMBart50TokenizerÚMPNetTokenizerÚMobileBertTokenizerÚMvpTokenizerÚNllbTokenizerÚOpenAIGPTTokenizerÚPegasusTokenizerÚQwen2TokenizerÚRealmTokenizerÚReformerTokenizerÚRemBertTokenizerÚRetriBertTokenizerÚRobertaTokenizerÚRoFormerTokenizerÚSeamlessM4TTokenizerÚSqueezeBertTokenizerÚT5TokenizerÚUdopTokenizerÚWhisperTokenizerÚXLMRobertaTokenizerÚXLNetTokenizer)ÚSplinterTokenizerÚXGLMTokenizerÚLlamaTokenizerÚCodeLlamaTokenizerÚGemmaTokenizerÚPhi3TokenizerFc                 óœ  — | j         j        }|t          v r,|s*t          |         } || ¦  «                             ¦   «         S 	 t                               d¦  «         t          | j        | j        ¬¦  «                             ¦   «         S # t          $ r7 t          dt          t                               ¦   «         ¦  «        › �¦  «        ‚w xY w)aˆ  
    Utilities to convert a slow tokenizer instance in a fast tokenizer instance.

    Args:
        transformer_tokenizer ([`~tokenization_utils_base.PreTrainedTokenizer`]):
            Instance of a slow tokenizer to convert in the backend tokenizer for
            [`~tokenization_utils_base.PreTrainedTokenizerFast`].
       from_tiktoken (bool, optional): Whether to use the `tiktoken` library to convert the tokenizer instead of sentencepiece.
            Defaults to False.

    Return:
        A instance of [`~tokenizers.Tokenizer`] to be used as the backend tokenizer of a
        [`~tokenization_utils_base.PreTrainedTokenizerFast`]
    zConverting from Tiktoken)r  rÄ  zÌConverting from SentencePiece and Tiktoken failed, if a converter for SentencePiece is available, provide a model path with a SentencePiece tokenizer.model file.Currently available slow->fast converters: )r!  ri   ÚSLOW_TO_FAST_CONVERTERSr…   ÚloggerÚinforÀ  r  rÄ  rJ  rÒ  rp   rÐ   )Útransformer_tokenizerÚfrom_tiktokenÚtokenizer_class_nameÚconverter_classs       r#   Úconvert_slow_tokenizerr  ®  sè   € ð  1Ô:ÔCÐØÕ6Ð6Ð6¸}Ð6Ý1Ð2FÔGˆØˆÐ4Ñ5Ô5×?Ò?ÑAÔAÐAð	Ý�KŠKÐ2Ñ3Ô3Ð3Ý$Ø0Ô;Ø*?Ô*Yðñ ô ÷ Ši‰kŒkðøõ ð 	ð 	ð 	Ýðeå>BÕCZ×C_ÒC_ÑCaÔCaÑ>bÔ>bðeð eñô ð ð	øøøs   ÁAB
 Â
AC)r   )F)Prl   r  Útypingr   Ú	packagingr   Ú
tokenizersr   r   r   r   r	   r
   r   Útokenizers.modelsr   r   r   Úutilsr   r   r   r   Úutils.import_utilsr   Ú
get_loggerri   r  r$   Úboolrm   r0   rS   rU   rr   r~   r€   r‡   r³   rÀ   rÃ   rÆ   rÖ   rå   rì   rù   r  r  r  rf  r€  r‹  r™  r¡  rÞ  rÿ  r  r  r  r  r   r$  r&  r;  rE  rI  rU  rX  r]  r`  rc  ri  r|  r�  r“  rž  r¾  rÀ  r  r  r4   r%   r#   ú<module>r#     s°  ððð ð €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð 
ˆÔ	˜HÑ	%Ô	%€ðGð Gð Gð Gð"¨$ð Àsð ð ð ð ðð ð ð&ð ð ð ð ñ ô ð ð2ð ð ð ð Ð"8ñ ô ð ð"I˜cð I dð Ið Ið Ið Ið$ð $ð $ð $ð $ñ $ô $ð $ð$ð $ð $ð $ð $�Iñ $ô $ð $ðN/ð /ð /ð /ð /˜	ñ /ô /ð /ðd$ð $ð $ð $ð $�iñ $ô $ð $ðN$ð $ð $ð $ð $�Yñ $ô $ð $ðNð ð ð ð ˜ñ ô ð ð6%ð %ð %ð %ð %�Iñ %ô %ð %ðPð ð ð ð �yñ ô ð ð>+ð +ð +ð +ð +�Yñ +ô +ð +ð\ð ð ð ð �yñ ô ð ð:$ð $ð $ð $ð $˜	ñ $ô $ð $ðNð ð ð ð �yñ ô ð ð>~ð ~ð ~ð ~ð ~�9ñ ~ô ~ð ~ðB"
ð "
ð "
ð "
ð "
�lñ "
ô "
ð "
ðJ
ð 
ð 
ð 
ð 
�|ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ð:
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ðB2
ð 2
ð 2
ð 2
ð 2
�\ñ 2
ô 2
ð 2
ðj
ð 
ð 
ð 
ð 
�|ñ 
ô 
ð 
ð6
ð 
ð 
ð 
ð 
�Lñ 
ô 
ð 
ð2
ð 
ð 
ð 
ð 
˜<ñ 
ô 
ð 
ð2
ð 
ð 
ð 
ð 
˜,ñ 
ô 
ð 
ð6"
ð "
ð "
ð "
ð "
�\ñ "
ô "
ð "
ðJ	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð
ð 
ð 
ð 
ð 
�|ñ 
ô 
ð 
ð@	ð 	ð 	ð 	ð 	˜lñ 	ô 	ð 	ð%xð %xð %xð %xð %x�|ñ %xô %xð %xðP
ð 
ð 
ð 
ð 
�,ñ 
ô 
ð 
ð"
ð 
ð 
ð 
ð 
�Lñ 
ô 
ð 
ð!ð !ð !ð !ð !�yñ !ô !ð !ðH	
ð 	
ð 	
ð 	
ð 	
�|ñ 	
ô 	
ð 	
ð(ð (ð (ð (ð (�Iñ (ô (ð (ðV$ð $ð $ð $ð $˜)ñ $ô $ð $ðNð ð ð ð ˜)ñ ô ð ð:
ð 
ð 
ð 
ð 
�Lñ 
ô 
ð 
ð61
ð 1
ð 1
ð 1
ð 1
�\ñ 1
ô 1
ð 1
ðh+ð +ð +ð +ð +�\ñ +ô +ð +ð\#ð #ð #ð #ð #˜	ñ #ô #ð #ðL&mð &mð &mð &mð &m�\ñ &mô &mð &mðRV
ð V
ð V
ð V
ð V
�lñ V
ô V
ð V
ðtð ð ð0Nð Nð Nð Nð Nñ Nô Nð Nðb:Ø�ð:àÐ%ð:ð Ð(ð:ð �]ð	:ð
 Ð(ð:ð Ð.ð:ð Ð,ð:ð �]ð:ð ˜ð:ð ˜ð:ð Ð(ð:ð Ð,ð:ð ˜=ð:ð ˜-ð:ð " =ð:ð  ! -ð!:ð" ˜ð#:ð :ð$ �_ð%:ð& �ð':ð( �]ð):ð* Ð(ð+:ð, ˜ð-:ð. ˜=ð/:ð0 Ð+ð1:ð2 Ð-ð3:ð4 Ð+ð5:ð6 Ð$ð7:ð8 �}ð9:ð: Ð*ð;:ð< �nð=:ð> Ð(ð?:ð@ �nðA:ðB ˜=ðC:ðD Ð$ðE:ð :ð :ðF �]ðG:ðH Ð,ðI:ðJ Ð(ðK:ðL �nðM:ðN �mðO:ðP Ð*ðQ:ðR Ð(ðS:ðT ˜-ðU:ðV Ð(ðW:ðX Ð*ðY:ðZ Ð0ð[:ð\ ˜Mð]:ð^ �;ð_:ð` �]ða:ðb Ð(ðc:ðd Ð.ðe:ðf �nðg:ð :ðh +Ø"Ø$Ø(Ø$Ø#ðs:ð :ð :Ð ðz!ð !È)ð !ð !ð !ð !ð !ð !r%   