Ë
    S^(hŸ  ã                   óŽ  — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZmZ d
dlmZ d
dlm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*m+Z+m,Z,m-Z- d
dl.m/Z/m0Z0m1Z1  e1jd                  e3«      Z4dZ5dZ6dZ7dZ8dZ9e$dz  Z$eeeedœZ:e5e8dœZ; e0e$«       G d„ de)«      «       Z<y)z‘
Tokenization classes for fast tokenizers (provided by HuggingFace's tokenizers library). For slow (python) tokenizers
see tokenization_utils.py
é    N)Údefaultdict)ÚIterable)ÚAnyÚOptionalÚUnion)ÚEncoding)Ú	Tokenizer)ÚDecoder)Ú
BpeTrainerÚUnigramTrainerÚWordLevelTrainerÚWordPieceTraineré   )Úconvert_slow_tokenizer)Úconvert_gguf_tokenizer)Úload_gguf_checkpoint)ÚPreTrainedTokenizer)
ÚINIT_TOKENIZER_DOCSTRINGÚ
AddedTokenÚBatchEncodingÚPreTokenizedInputÚPreTokenizedInputPairÚPreTrainedTokenizerBaseÚSpecialTokensMixinÚ	TextInputÚTextInputPairÚTruncationStrategy)ÚPaddingStrategyÚadd_end_docstringsÚloggingztokenizer.jsonzspecial_tokens_map.jsonztokenizer_config.jsonztokenizer.modelzadded_tokens.jsonu¡  
        tokenizer_object ([`tokenizers.Tokenizer`]):
            A [`tokenizers.Tokenizer`] object from ðŸ¤— tokenizers to instantiate from. See [Using tokenizers from ðŸ¤—
            tokenizers](../fast_tokenizers) for more information.
        tokenizer_file ([`str`]):
            A path to a local JSON file representing a previously serialized [`tokenizers.Tokenizer`] object from ðŸ¤—
            tokenizers.
)ÚBPEÚUnigramÚ	WordLevelÚ	WordPiece)Útokenizer_fileÚ
vocab_filec            )       ó0  ‡ — e Zd ZU dZeZdZeed<   ˆ fd„Z	e
defd„«       Ze
defd„«       Ze
defd„«       Zdeeef   fd	„Ze
deeef   fd
„«       Ze
deeef   fd„«       Ze
deeef   fd„«       Zdeeef   fd„Zdefd„Ze
defd„«       Ze
defd„«       Z	 	 	 	 	 	 	 dEdedee   dee   dedededededeeee f   e!e   f   fd„Z"de#ee$e   f   de#ee!e   f   fd„Z%dedefd„Z&d edee   fd!„Z'dFd"e!e#eef      defd#„Z(dFd$edefd%„Z)	 dFd&e#ee!e   f   d'ede#ee!e   f   fd(„Z*dGd)ed$ee   d*ede!e   fd+„Z+d,e,d-e-d.ed/ed0ee   d1ee   fd2„Z.de,j^                  e-j`                  dd3ddddddddddddfd4e#e!e1   e!e2   e!e3   e!e4   f   d*ed,e,d-e-d.ee   d/ed5ed0ee   d1ee   d6ee   dee   dee   dededededed7ede5f&d8„Z6dde,j^                  e-j`                  dd3ddddddddddddfd)e#e1e3f   d9ee#e1e3f      d*ed,e,d-e-d.ee   d/ed5ed0ee   d1ee   d6ee   dee   dee   dededededed7ede5f(d:„Z7de!e   defd;„Z8	 	 dHd<e#ee!e   f   d'ed=ee   defd>„Z9	 	 dId?e#ee:jv                  f   d@ee   dAee   dBee   dee   f
dC„Z<	 	 	 dJdD„Z=ˆ xZ>S )KÚPreTrainedTokenizerFastaQ  
    Base class for all fast tokenizers (wrapping HuggingFace tokenizers library).

    Inherits from [`~tokenization_utils_base.PreTrainedTokenizerBase`].

    Handles all the shared methods for tokenization and special tokens, as well as methods for
    downloading/caching/loading pretrained tokenizers, as well as adding tokens to the vocabulary.

    This class also contains the added tokens in a unified way on top of all tokenizers so we don't have to handle the
    specific vocabulary augmentation methods of the various underlying dictionary structures (BPE, sentencepiece...).
    NÚslow_tokenizer_classc           	      ó@  •— |j                  dd «      }|j                  dd «      }|j                  dd «      }|j                  dd «      }|j                  dd«      }|j                  di «      }|j                  dd«      | _        |r|€| j                  €t	        d	«      ‚|�t        j                  |«      }	�n|�|st        j                  |«      }	nõ|rt        |«      }	nç|�lt        |j                  d
«      «      }
|
d   d   }|
d   }|
d   }t        ||«      \  }	}|j                  |«       t        |«      dkD  r‹|j                  |«       ny| j                  �"|dur | j                  |i |¤Ž}t        |«      }	nK|s>|j                  d
d «      | _        |j                  dg «      | _        t        | d¬«      }	d }nt	        d«      ‚|	| _        |�|j                  |j"                  «       d| _        | j                   j&                  }|�q | j                   j(                  d$i |¤Ž |j+                  d|d   «       |j+                  d|d   «       |j+                  d|d   «       |j+                  d|d   «       n| j                   j-                  «        | j                   j.                  }|�… | j                   j0                  d$i |¤Ž |j+                  d|d   «       |j+                  d|d   «       |j+                  d|d   «       |j+                  d|d   «       |j+                  d|d   «       t3        ‰| �h  d$i |¤Ž | j6                  | j                   _        | j:                  D �ch c]  }t=        t?        |«      «      ’Œ }}tA        |jC                  «       d „ ¬!«      D ��cg c]  \  }}t=        t?        |«      «      |vr|‘Œ }}}tE        | jF                  jI                  «       «      |D �cg c]  }tK        |«      ‘Œ c}z   }|| jL                  D �cg c]  }||vsŒ||vsŒ|‘Œ c}z  }t        |«      dkD  r–g }| jN                  }|D ]p  }tQ        |tR        «      r|jT                  xs tK        |«      |v ntK        |«      |v }tQ        |tJ        «      rtS        ||¬"«      }n||_*        |jW                  |«       Œr |r| jY                  |«       	 t[        j\                  | j^                  j`                  jc                  «       «      }|j                  d| j                  «      | j                  k7  rFte        tf        |j                  d#«      «      }| j                  |d<    |d$i |¤Ž| j^                  _0        y y c c}w c c}}w c c}w c c}w # th        $ r Y y w xY w)%NÚtokenizer_objectÚ__slow_tokenizerÚ	gguf_filer%   Ú	from_slowFÚadded_tokens_decoderÚadd_prefix_spacez‚Cannot instantiate this tokenizer from a slow version. If it's based on sentencepiece, make sure you have sentencepiece installed.r&   ÚconfigÚ
model_typeÚ	tokenizerÚtokenizer_configr   Úadditional_special_tokensT)Úfrom_tiktokena9  Couldn't instantiate the backend tokenizer from one of: 
(1) a `tokenizers` library serialization file, 
(2) a slow tokenizer instance to convert or 
(3) an equivalent slow tokenizer class to instantiate and convert. 
You need to have sentencepiece or tiktoken installed to convert a slow tokenizer to a fast one.Ú
max_lengthÚtruncation_sideÚ	directionÚstrideÚtruncation_strategyÚstrategyÚ	pad_tokenÚpad_token_type_idÚpad_type_idÚpadding_sideÚlengthÚpad_to_multiple_ofc                 ó   — | d   S ©Nr   © )Úxs    úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/tokenization_utils_fast.pyú<lambda>z2PreTrainedTokenizerFast.__init__.<locals>.<lambda>¸   s   € ÐSTÐUVÑSW€ ó    ©Úkey)ÚspecialÚtyperE   )5ÚpopÚgetr0   r)   Ú
ValueErrorÚcopyÚdeepcopyÚTokenizerFastÚ	from_filer   r   r   ÚupdateÚlenr&   r5   Ú
_tokenizerÚinit_kwargsÚ_decode_use_source_tokenizerÚ
truncationÚenable_truncationÚ
setdefaultÚno_truncationÚpaddingÚenable_paddingÚsuperÚ__init__Úsplit_special_tokensÚencode_special_tokensr/   ÚhashÚreprÚsortedÚitemsÚlistÚadded_tokens_encoderÚkeysÚstrÚall_special_tokens_extendedÚall_special_tokensÚ
isinstancer   rL   ÚappendÚ
add_tokensÚjsonÚloadsÚbackend_tokenizerÚpre_tokenizerÚ__getstate__ÚgetattrÚpre_tokenizers_fastÚ	Exception)ÚselfÚargsÚkwargsr+   Úslow_tokenizerr-   Úfast_tokenizer_filer.   r/   Úfast_tokenizerÚ
gguf_paramÚarchitectureÚtokenizer_dictr4   Úadditional_kwargsÚ_truncationÚ_paddingÚtokenÚadded_tokens_decoder_hashÚindexÚtokens_to_addÚencoderÚtokensÚspecial_tokensÚ
is_specialÚpre_tok_stateÚpre_tok_classÚ	__class__s                              €rG   ra   z PreTrainedTokenizerFast.__init__b   sx  ø€ Ø!Ÿ:™:Ð&8¸$Ó?ÐØŸ™Ð$6¸Ó=ˆØ—J‘J˜{¨DÓ1ˆ	Ø$Ÿj™jÐ)9¸4Ó@ÐØ—J‘J˜{¨EÓ2ˆ	Ø%Ÿz™zÐ*@À"ÓEÐØ &§
¡
Ð+=¸uÓ EˆÔá˜Ð/°D×4MÑ4MÐ4UÜð0óð ð
 Ð'Ü!Ÿ]™]Ð+;Ó<ŠNØ Ð,±Yä*×4Ñ4Ð5HÓI‰NÙä3°NÓC‰NØÐ"ä-¨f¯j©j¸Ó.FÓGˆJØ% hÑ/°Ñ=ˆLØ'¨Ñ4ˆNØ)Ð*<Ñ=ÐÜ0FÀ|ÐUcÓ0dÑ-ˆNÐ-Ø�M‰MÐ*Ô+ÜÐ$Ó%¨Ò)Ø—‘Ð/Õ0Ø×&Ñ&Ð2°~ÈUÑ7Rà6˜T×6Ñ6¸ÐGÀÑGˆNÜ3°NÓC‰NÙà$Ÿj™j¨°tÓ<ˆDŒOØ-3¯Z©ZÐ8SÐUWÓ-XˆDÔ*Ü3°DÈÔMˆNØ!‰Näðróð ð )ˆŒàÐ%Ø�M‰M˜.×4Ñ4Ô5à,1ˆÔ)à—o‘o×0Ñ0ˆàÐ"Ø-ˆD�O‰O×-Ñ-Ñ<°Ò<Ø×Ñ˜l¨K¸Ñ,EÔFØ×ÑÐ/°¸[Ñ1IÔJØ×Ñ˜h¨°HÑ(=Ô>Ø×ÑÐ3°[ÀÑ5LÕMà�O‰O×)Ñ)Ô+à—?‘?×*Ñ*ˆØÐØ*ˆD�O‰O×*Ñ*Ñ6¨XÒ6Ø×Ñ˜k¨8°KÑ+@ÔAØ×ÑÐ1°8¸MÑ3JÔKØ×Ñ˜n¨h°{Ñ.CÔDØ×Ñ˜l¨H°XÑ,>Ô?Ø×ÑÐ2°HÐ=QÑ4RÔSô 	‰ÑÑ"˜6Ò"Ø04×0IÑ0Iˆ�‰Ô-àDH×D]ÑD]Ö$^¸5¤T¬$¨u«+Õ%6Ð$^Ð!Ð$^ô !'Ð';×'AÑ'AÓ'CÉÔ X÷
á��uÜ”D˜“KÓ Ð(AÑAò ð
ˆñ 
ô
 �t×0Ñ0×5Ñ5Ó7Ó8ÐTaÖ;bÈ5¼CÀ½JÒ;bÑbˆàØ#×?Ñ?ö
ØÀ5ÐPWÒCWÐ\aÐivÒ\vŠEò
ñ 	
ˆô ˆ}Ó Ò!ØˆFØ!×4Ñ4ˆNØ&ò 
%�ô " %¬Ô4ð —]‘]ÒB¤c¨%£j°NÑ&Bä˜U› ~Ð5ð ô
 ˜e¤SÔ)Ü& u°jÔA‘Eà$.�E”MØ—‘˜eÕ$ð
%ñ Ø—‘ Ô'ð
	Ü ŸJ™J t×'=Ñ'=×'KÑ'K×'XÑ'XÓ'ZÓ[ˆMØ× Ñ Ð!3°T×5JÑ5JÓKÈt×OdÑOdÒdÜ 'Ô(;¸]×=NÑ=NÈvÓ=VÓ W�Ø48×4IÑ4I�Ð0Ñ1Ù7DÑ7UÀ}Ñ7U�×&Ñ&Õ4ð eùò? %_ùó
ùò
 <cùò
øô6 ò 	ñ ð		ús7   Í+U<Î'"VÏ2VÐ	VÐ"VÐ'VÓB%V Ö	VÖVÚreturnc                  ó   — y)NTrE   ©ry   s    rG   Úis_fastzPreTrainedTokenizerFast.is_fastÞ   s   € àrI   c                  ó   — y)zÒ
        `bool`: Whether or not the slow tokenizer can be saved. Usually for sentencepiece based slow tokenizer, this
        can only be `True` if the original `"sentencepiece.model"` was not deleted.
        TrE   r’   s    rG   Úcan_save_slow_tokenizerz/PreTrainedTokenizerFast.can_save_slow_tokenizerâ   s   € ð rI   c                 ó:   — | j                   j                  d¬«      S )zP
        `int`: Size of the base vocabulary (without the added tokens).
        F©Úwith_added_tokens©rW   Úget_vocab_sizer’   s    rG   Ú
vocab_sizez"PreTrainedTokenizerFast.vocab_sizeê   s   € ð
 �‰×-Ñ-ÀÐ-ÓFÐFrI   c                 ó:   — | j                   j                  d¬«      S )NTr—   )rW   Ú	get_vocabr’   s    rG   r�   z!PreTrainedTokenizerFast.get_vocabñ   s   € Ø�‰×(Ñ(¸4Ð(Ó@Ð@rI   c                 ó"   — | j                  «       S ©N)r�   r’   s    rG   ÚvocabzPreTrainedTokenizerFast.vocabô   s   € à�~‰~ÓÐrI   c                 ó–   — t        | j                  j                  «       d„ ¬«      D ��ci c]  \  }}|j                  |“Œ c}}S c c}}w )zÃ
        Returns the sorted mapping from string to index. The added tokens encoder is cached for performance
        optimisation in `self._added_tokens_encoder` for the slow tokenizers.
        c                 ó   — | d   S rD   rE   ©Úitems    rG   rH   z>PreTrainedTokenizerFast.added_tokens_encoder.<locals>.<lambda>þ   ó   € ÐdhÐijÑdk€ rI   rJ   ©rf   r/   rg   Úcontent©ry   ÚvÚks      rG   ri   z,PreTrainedTokenizerFast.added_tokens_encoderø   s;   € ô *0°×0IÑ0I×0OÑ0OÓ0QÑWkÔ)l×m¡  A�—	‘	˜1‘ÓmÐmùÓmó   ªAc                 ó6   — | j                   j                  «       S )z¦
        Returns the added tokens in the vocabulary as a dictionary of index to AddedToken.

        Returns:
            `Dict[str, int]`: The added tokens.
        )rW   Úget_added_tokens_decoderr’   s    rG   r/   z,PreTrainedTokenizerFast.added_tokens_decoder   s   € ð �‰×7Ñ7Ó9Ð9rI   c                 ó–   — t        | j                  j                  «       d„ ¬«      D ��ci c]  \  }}|j                  |“Œ c}}S c c}}w )z¡
        Returns the added tokens in the vocabulary as a dictionary of token to index.

        Returns:
            `Dict[str, int]`: The added tokens.
        c                 ó   — | d   S rD   rE   r£   s    rG   rH   z9PreTrainedTokenizerFast.get_added_vocab.<locals>.<lambda>  r¥   rI   rJ   r¦   r¨   s      rG   Úget_added_vocabz'PreTrainedTokenizerFast.get_added_vocab
  s;   € ô *0°×0IÑ0I×0OÑ0OÓ0QÑWkÔ)l×m¡  A�—	‘	˜1‘ÓmÐmùÓmr«   c                 ó:   — | j                   j                  d¬«      S )zD
        Size of the full vocabulary with the added tokens.
        Tr—   r™   r’   s    rG   Ú__len__zPreTrainedTokenizerFast.__len__  s   € ð �‰×-Ñ-ÀÐ-ÓEÐErI   c                 ó   — | j                   S )zc
        `tokenizers.implementations.BaseTokenizer`: The Rust tokenizer used as a backend.
        )rW   r’   s    rG   rs   z)PreTrainedTokenizerFast.backend_tokenizer  s   € ð
 �‰ÐrI   c                 ó.   — | j                   j                  S )zU
        `tokenizers.decoders.Decoder`: The Rust decoder for this tokenizer.
        )rW   Údecoderr’   s    rG   rµ   zPreTrainedTokenizerFast.decoder   s   € ð
 �‰×&Ñ&Ð&rI   FTÚencodingÚreturn_token_type_idsÚreturn_attention_maskÚreturn_overflowing_tokensÚreturn_special_tokens_maskÚreturn_offsets_mappingÚreturn_lengthÚverbosec	                 óJ  — |€d| j                   v }|€d| j                   v }|r|j                  �|g|j                  z   }	n|g}	t        t        «      }
|	D ]Ê  }|
d   j	                  |j
                  «       |r|
d   j	                  |j                  «       |r|
d   j	                  |j                  «       |r|
d   j	                  |j                  «       |r|
d   j	                  |j                  «       |sŒ¤|
d   j	                  t        |j
                  «      «       ŒÌ |
|	fS )a¢  
        Convert the encoding representation (from low-level HuggingFace tokenizer output) to a python Dict and a list
        of encodings, take care of building a batch from overflowing tokens.

        Overflowing tokens are converted to additional examples (like batches) so the output values of the dict are
        lists (overflows) of lists (tokens).

        Output shape: (overflows, sequence length)
        Útoken_type_idsÚattention_maskÚ	input_idsÚspecial_tokens_maskÚoffset_mappingrA   )Úmodel_input_namesÚoverflowingr   rh   ro   ÚidsÚtype_idsrÀ   rÂ   ÚoffsetsrV   )ry   r¶   r·   r¸   r¹   rº   r»   r¼   r½   Ú	encodingsÚencoding_dictÚes               rG   Ú_convert_encodingz)PreTrainedTokenizerFast._convert_encoding'  s$  € ð( !Ð(Ø$4¸×8NÑ8NÐ$NÐ!Ø Ð(Ø$4¸×8NÑ8NÐ$NÐ!á$¨×)=Ñ)=Ð)IØ!˜
 X×%9Ñ%9Ñ9‰Ià!˜
ˆIä#¤DÓ)ˆØò 	;ˆAØ˜+Ñ&×-Ñ-¨a¯e©eÔ4á$ØÐ.Ñ/×6Ñ6°q·z±zÔBÙ$ØÐ.Ñ/×6Ñ6°q×7GÑ7GÔHÙ)ØÐ3Ñ4×;Ñ;¸A×<QÑ<QÔRÙ%ØÐ.Ñ/×6Ñ6°q·y±yÔAÚØ˜hÑ'×.Ñ.¬s°1·5±5«zÕ:ð	;ð ˜iÐ'Ð'rI   rŠ   c                 óŒ   — t        |t        «      r| j                  |«      S |D �cg c]  }| j                  |«      ‘Œ c}S c c}w )aX  
        Converts a token string (or a sequence of tokens) in a single integer id (or a Iterable of ids), using the
        vocabulary.

        Args:
            tokens (`str` or `Iterable[str]`): One or several token(s) to convert to token id(s).

        Returns:
            `int` or `List[int]`: The token id or list of token ids.
        )rn   rk   Ú#_convert_token_to_id_with_added_voc)ry   rŠ   r…   s      rG   Úconvert_tokens_to_idsz-PreTrainedTokenizerFast.convert_tokens_to_idsV  s>   € ô �fœcÔ"Ø×;Ñ;¸FÓCÐCàMSÖTÀE�×8Ñ8¸Õ?ÒTÐTùÒTs   ¦Ar…   c                 óX   — | j                   j                  |«      }|€| j                  S |S rŸ   )rW   Útoken_to_idÚunk_token_id)ry   r…   r‡   s      rG   rÎ   z;PreTrainedTokenizerFast._convert_token_to_id_with_added_vocf  s,   € Ø—‘×+Ñ+¨EÓ2ˆØˆ=Ø×$Ñ$Ð$ØˆrI   r‡   c                 óJ   — | j                   j                  t        |«      «      S rŸ   )rW   Úid_to_tokenÚint)ry   r‡   s     rG   Ú_convert_id_to_tokenz,PreTrainedTokenizerFast._convert_id_to_tokenl  s   € Ø�‰×*Ñ*¬3¨u«:Ó6Ð6rI   Ú
new_tokensc                 ór   — |r| j                   j                  |«      S | j                   j                  |«      S rŸ   )rW   Úadd_special_tokensrp   )ry   r×   r‹   s      rG   Ú_add_tokensz#PreTrainedTokenizerFast._add_tokenso  s/   € ÙØ—?‘?×5Ñ5°jÓAÐAà�‰×)Ñ)¨*Ó5Ð5rI   Úpairc                 ó8   — | j                   j                  |«      S )aG  
        Returns the number of added tokens when encoding a sequence with special tokens.

        <Tip>

        This encodes a dummy input and checks the number of added tokens, and is therefore not efficient. Do not put
        this inside your training loop.

        </Tip>

        Args:
            pair (`bool`, *optional*, defaults to `False`):
                Whether the number of added tokens should be computed in the case of a sequence pair or a single
                sequence.

        Returns:
            `int`: Number of special tokens added to sequences.
        )rW   Únum_special_tokens_to_add)ry   rÛ   s     rG   rÝ   z1PreTrainedTokenizerFast.num_special_tokens_to_addu  s   € ð& �‰×8Ñ8¸Ó>Ð>rI   rÆ   Úskip_special_tokensc                 óú   — t        |t        «      r| j                  j                  |«      S g }|D ]H  }t        |«      }|r|| j                  v rŒ|j                  | j                  j                  |«      «       ŒJ |S )aì  
        Converts a single index or a sequence of indices in a token or a sequence of tokens, using the vocabulary and
        added tokens.

        Args:
            ids (`int` or `List[int]`):
                The token id (or token ids) to convert to tokens.
            skip_special_tokens (`bool`, *optional*, defaults to `False`):
                Whether or not to remove special tokens in the decoding.

        Returns:
            `str` or `List[str]`: The decoded token(s).
        )rn   rÕ   rW   rÔ   Úall_special_idsro   )ry   rÆ   rÞ   rŠ   r‡   s        rG   Úconvert_ids_to_tokensz-PreTrainedTokenizerFast.convert_ids_to_tokensŠ  su   € ô  �cœ3ÔØ—?‘?×.Ñ.¨sÓ3Ð3ØˆØò 	>ˆEÜ˜“JˆEÙ" u°×0DÑ0DÑ'DØØ�M‰M˜$Ÿ/™/×5Ñ5°eÓ<Õ=ð		>ð
 ˆrI   ÚtextrÙ   c                 óJ   —  | j                   d|||dœ|¤Žj                  «       S )N)râ   Ú	text_pairrÙ   rE   )Úencode_plusrŠ   )ry   râ   rÛ   rÙ   r{   s        rG   Útokenizez PreTrainedTokenizerFast.tokenize¤  s,   € Øˆt×ÑÐk T°TÐN`ÑkÐdjÑk×rÑrÓtÐtrI   Úpadding_strategyr;   r7   r:   rB   r@   c                 óÆ  — | j                   j                  }| j                   j                  }|t        j                  k(  r|�|| j                   j                  «        na|||j                  | j                  dœ}	|€d}
n |	D �ci c]  }||j                  |d«      “Œ }
}|
|	k7  r | j                   j                  di |	¤Ž |t        j                  k(  r|�| j                   j                  «        yy|t        j                  k(  r|nd}||�|n| j                  | j                  | j                   | j"                  |dœ}	||	k7  r | j                   j$                  di |	¤Ž yyc c}w )a•  
        Define the truncation and the padding strategies for fast tokenizers (provided by HuggingFace tokenizers
        library) and restore the tokenizer settings afterwards.

        The provided tokenizer has no padding / truncation strategy before the managed section. If your tokenizer set a
        padding / truncation strategy before, then it will be reset to no padding / truncation when exiting the managed
        section.

        Args:
            padding_strategy ([`~utils.PaddingStrategy`]):
                The kind of padding that will be applied to the input
            truncation_strategy ([`~tokenization_utils_base.TruncationStrategy`]):
                The kind of truncation that will be applied to the input
            max_length (`int`):
                The maximum size of a sequence.
            stride (`int`):
                The stride to use when handling overflow.
            pad_to_multiple_of (`int`, *optional*):
                If set will pad the sequence to a multiple of the provided value. This is especially useful to enable
                the use of Tensor Cores on NVIDIA hardware with compute capability `>= 7.5` (Volta).
            padding_side (`str`, *optional*):
                The side on which the model should have padding applied. Should be selected between ['right', 'left'].
                Default value is picked from the class attribute of the same name.
        N)r7   r:   r<   r9   )rA   r9   Úpad_idr=   r?   rB   rE   )rW   rZ   r^   r   ÚDO_NOT_TRUNCATEr]   Úvaluer8   rO   r[   r   Ú
DO_NOT_PADÚ
no_paddingÚ
MAX_LENGTHr@   Úpad_token_idr=   r>   r_   )ry   rç   r;   r7   r:   rB   r@   rƒ   r„   ÚtargetÚcurrentrª   rA   s                rG   Úset_truncation_and_paddingz2PreTrainedTokenizerFast.set_truncation_and_padding§  sZ  € ðB —o‘o×0Ñ0ˆØ—?‘?×*Ñ*ˆàÔ"4×"DÑ"DÒDØÐ&Ø—‘×-Ñ-Õ/ð )Ø Ø/×5Ñ5Ø!×1Ñ1ñ	ˆFð Ð"Ø‘à@FÖG¸1˜1˜kŸo™o¨a°Ó6Ñ6ÐG�ÐGà˜&Ò Ø1�—‘×1Ñ1Ñ;°FÒ;àœ×9Ñ9Ò9ØÐ#Ø—‘×*Ñ*Õ,ð $ð $4´×7QÑ7QÒ#Q‘ZÐW[ˆFà Ø-9Ð-E™\È4×K\ÑK\Ø×+Ñ+Ø!Ÿ^™^Ø#×5Ñ5Ø&8ñˆFð ˜6Ò!Ø.�—‘×.Ñ.Ñ8°Ó8ð "ùò% Hs   ÂEr   Úbatch_text_or_text_pairsÚis_split_into_wordsÚreturn_tensorsrb   c                 ó
  — t        |t        t        f«      st        dt	        |«      › d�«      ‚| j                  ||||||	¬«       | j                  j                  |k7  r|| j                  _        | j                  j                  |||¬«      }|D �cg c]  }| j                  ||||||||¬«      ‘Œ }}i }|d   d   j                  «       D ]'  }|D ���cg c]  \  }}||   D ]  }|‘Œ Œ }}}}|||<   Œ) |D ���cg c]  \  }}|D ]  }|‘Œ Œ }}}}|r2g }t        |«      D ]  \  }\  }}||gt        |d   «      z  z  }Œ ||d<   |d   D ]  } | j                  | ||«       Œ t        |||
¬	«      S c c}w c c}}}w c c}}}w )
Nz:batch_text_or_text_pairs has to be a list or a tuple (got ú))rç   r;   r7   r:   rB   r@   )rÙ   Úis_pretokenized)r¶   r·   r¸   r¹   rº   r»   r¼   r½   r   rÁ   Úoverflow_to_sample_mapping)Útensor_type)rn   Útuplerh   Ú	TypeErrorrM   rò   rW   rc   Úencode_batchrÌ   rj   Ú	enumeraterV   Ú&_eventual_warn_about_too_long_sequencer   )!ry   ró   rÙ   rç   r;   r7   r:   rô   rB   r@   rõ   r·   r¸   r¹   rº   r»   r¼   r½   rb   rÉ   r¶   Útokens_and_encodingsÚsanitized_tokensrK   r¤   Ú_rË   ÚstackÚsanitized_encodingsrù   ÚiÚtoksrÁ   s!                                    rG   Ú_batch_encode_plusz*PreTrainedTokenizerFast._batch_encode_plusò  s  € ô. Ð2´U¼D°MÔBÜØLÌTÐRjÓMkÐLlÐlmÐnóð ð
 	×'Ñ'Ø-Ø 3Ø!ØØ1Ø%ð 	(ô 	
ð �?‰?×0Ñ0Ð4HÒHØ4HˆD�O‰OÔ1à—O‘O×0Ñ0Ø$Ø1Ø/ð 1ó 
ˆ	ð. &ö 
ð ð ×"Ñ"Ø!Ø&;Ø&;Ø*CØ+EØ'=Ø+Øð #õ 	ð 
Ðð  
ð( ÐØ'¨Ñ*¨1Ñ-×2Ñ2Ó4ò 	*ˆCØ&:×NÐN™7˜4 ÀDÈÁIÒN¸q’QÐN�QÐNˆEÒNØ$)Ð˜SÒ!ð	*ð 1E×SÐS¡W Q¨ÈdÒSÈšqÐS˜qÐSÐÒSñ %Ø)+Ð&Ü )Ð*>Ó ?ò K‘�‘9�D˜!Ø*¨q¨c´C¸¸[Ñ8IÓ4JÑ.JÑJÑ*ðKà=WÐÐ9Ñ:à)¨+Ñ6ò 	XˆIØ×7Ñ7¸	À:ÈwÕWð	XäÐ-Ð/BÐP^Ô_Ð_ùòI 
ùô, OùäSs   Â E2ÃE7
Ã<E>rä   c                 ó¢  — |r||fgn|g} | j                   |fi d|“d|“d|“d|“d|“d|“d|	“d|
“d	|“d
|“d|“d|“d|“d|“d|“d|“d|“|¤Ž}|€`|s^t        |j                  «       D ��ci c].  \  }}|t        |«      dkD  rt	        |d   t
        «      r|d   n|“Œ0 c}}|j                  «      }| j                  |d   ||«       |S c c}}w )Nrô   rÙ   rç   r;   r7   r:   rB   r@   rõ   r·   r¸   r¹   rº   r»   r¼   r½   rb   r   rÁ   )r  r   rg   rV   rn   rh   rÉ   rÿ   )ry   râ   rä   rÙ   rç   r;   r7   r:   rô   rB   r@   rõ   r·   r¸   r¹   rº   r»   r¼   r½   rb   r{   Úbatched_inputÚbatched_outputrK   rë   s                            rG   Ú_encode_plusz$PreTrainedTokenizerFast._encode_plusM  sg  € ñ. 09˜$ 	Ð*Ñ+¸t¸fˆØ0˜×0Ñ0Øò
á 3ð
ñ  2ð
ñ .ð	
ñ
 !4ð
ñ "ð
ñ ð
ñ  2ð
ñ &ð
ñ *ð
ñ #8ð
ñ #8ð
ñ '@ð
ñ (Bð
ñ $:ð
ñ  (ð!
ñ" ð#
ñ$ "6Øñ'
ˆð0 Ð!Ñ*CÜ*ð '5×&:Ñ&:Ó&<÷á"˜˜Uð ¤c¨%£j°1¢n¼ÀEÈ!ÁHÌdÔ9S˜% š(ÐY^Ñ^óð ×(Ñ(óˆNð 	×3Ñ3°NÀ;Ñ4OÐQ[Ð]dÔeàÐùós   Á-3C
c                 óš   — | j                   j                  �%| j                   j                  j                  |«      S dj                  |«      S )Nú )rs   rµ   ÚdecodeÚjoin)ry   rŠ   s     rG   Úconvert_tokens_to_stringz0PreTrainedTokenizerFast.convert_tokens_to_stringŠ  sJ   € ð ×%Ñ%×-Ñ-Ð9ð ×"Ñ"×*Ñ*×1Ñ1°&Ó9ð	
ð —‘˜&Ó!ð	
rI   Ú	token_idsÚclean_up_tokenization_spacesc                 óÞ   — |j                  dd«      | _        t        |t        «      r|g}| j                  j                  ||¬«      }|�|n| j                  }|r| j                  |«      }|S |S )NÚuse_source_tokenizerF)rÞ   )rN   rY   rn   rÕ   rW   r  r  Úclean_up_tokenization)ry   r  rÞ   r  r{   râ   Ú
clean_texts          rG   Ú_decodezPreTrainedTokenizerFast._decode‘  s~   € ð -3¯J©JÐ7MÈuÓ,UˆÔ)ä�i¤Ô%Ø"˜ˆIØ�‰×%Ñ% iÐEXÐ%ÓYˆð ,Ð7ñ )à×2Ñ2ð 	%ñ
 (Ø×3Ñ3°DÓ9ˆJØÐàˆKrI   Úsave_directoryÚ
file_namesÚlegacy_formatÚfilename_prefixc                 ó  — t        |«      }| j                  €|du rt        d«      ‚|du xs |du xr | j                  duxr | j                  }|du xs |du }|rÍt        j
                  j                  ||r|dz   ndt        z   «      }| j                  j                  «       D ��	ci c]  \  }}	|	| j                  k\  sŒ||	“Œ }
}}	|
rDt        |dd¬	«      5 }t        j                  |
d
dd¬«      dz   }|j                  |«       ddd«       | j                  ||¬«      }||z   |fz   }|rOt        j
                  j                  ||r|dz   ndt         z   «      }| j"                  j%                  |«       ||fz   }|S c c}	}w # 1 sw Y   Œ~xY w)z¹
        Save a tokenizer using the slow-tokenizer/legacy format: vocabulary + added tokens as well as in a unique JSON
        file containing {config + vocab + added-tokens}.
        NTz²Your tokenizer does not have a legacy version defined and therefore cannot register this version. You might consider leaving the legacy_format at `None` or setting it to `False`.Fú-Ú Úwzutf-8)r¶   é   )ÚindentÚ	sort_keysÚensure_asciiú
)r  )rk   r)   rP   r•   ÚosÚpathr  ÚADDED_TOKENS_FILEri   rg   r›   Úopenrq   ÚdumpsÚwriteÚsave_vocabularyÚTOKENIZER_FILErs   Úsave)ry   r  r  r  r  Ú	save_slowÚ	save_fastÚadded_tokens_fileÚtokr‡   Úadded_vocabÚfÚout_strÚvocab_filesr%   s                  rG   Ú_save_pretrainedz(PreTrainedTokenizerFast._save_pretrained©  s¹  € ô ˜^Ó,ˆà×$Ñ$Ð,°À$Ñ1FÜð`óð ð ˜dÐ"Ò; m°tÐ&;ò -Ø×)Ñ)°Ð5ò-à×,Ñ,ð 	ð
 " TÐ)ÒC¨]¸eÐ-Cˆ	áÜ "§¡§¡Ø¹/ °3Ò!6ÈrÔUfÑ fó!Ðð 9=×8QÑ8Q×8WÑ8WÓ8Y×v©*¨#¨uÐ]bÐfj×fuÑfuÓ]u˜3 ™:ÐvˆKÑvÙÜÐ+¨S¸7ÔCð %ÀqÜ"Ÿj™j¨¸QÈ$Ð]bÔcÐfjÑj�GØ—G‘G˜GÔ$÷%ð ×.Ñ.¨~ÈÐ.Ó_ˆKØ# kÑ1Ð5FÐ4HÑHˆJáÜŸW™WŸ\™\Ø¹/ °3Ò!6ÈrÔUcÑ cóˆNð ×"Ñ"×'Ñ'¨Ô7Ø# ~Ð&7Ñ7ˆJàÐùó! w÷%ð %ús   Â&E;Â>E;Ã.FÆF
c           	      óÀ	  — t        j                  | j                  j                  «       «      }|j	                  d«      }|j	                  d«      }	d}
|d   d   dk(  ri |d   d<   g |d   d<   np|d   d   d	k(  r=|d   d
   �]|d   d
   }|d   d   |   d   }
|�	|
|v r||
   }
d|d   d
<   |
dgg|d   d<   n(|d   d   dv r	i |d   d<   nt        d|d   d   › d�«      ‚|�"d|d   v r|d   d   |v r||d   d      |d   d<   t        j                  t        j                  |«      «      }g }|D ]b  }|j	                  dd«      }|j	                  dd«      }|d   d   d	k7  r|sŒ5|�|d   |v r||d      |d<   |j                  t        d'i |¤Ž«       Œd |�|j                  |«       |d   d   dk(  rd|vr|d   d   �|d   d   |d<   |d   d   dk(  rd|vr|d   d   �|d   d   |d<   |d   d   d	k(  r|
�|
|d<   |d   �V|d   d   dk(  s*|d   d   dk(  r@d|d   v r9t        d„ |d   d   D «       «      r!t        j                  j                  «       |d<   t         |d   d      } |d'||dœ|¤Ž}|j#                  |||¬«       |	��&t        j                  |j                  «       «      }d|	v rŽ|	d   D ]†  }|	d   |   d   }|�|D �cg c]  }|j%                  ||«      ‘Œ }}||	d   |   d<   |D ]   }|j'                  |«      }|�Œt        d «      ‚ |D �cg c]  }|j'                  |«      ‘Œ c}|	d   |   d!<   Œˆ d"D ]?  }||	v sŒ|	|   \  }}|�	||v r||   }|j'                  |«      }|€t        d «      ‚||g|	|<   ŒA |	|d<   t        j                  t        j                  |«      «      }| j(                  j+                  «       }t,        j.                  j+                  «       }|j1                  d#«       |D ]”  }t3        | |«      €Œt3        | |«      }|�	||v r||   }| j4                  j%                  |d«      }t7        |t        «      r=t        ||j8                  |j:                  |j<                  |j>                  d$¬%«      ||<   Œ�|||<   Œ– | j@                  }|�|j                  |«       tC        |«      dkD  r||d#<    | jD                  d'd&|i|¤ŽS c c}w c c}w )(uf  
        Trains a tokenizer on a new corpus with the same defaults (in terms of special tokens or tokenization pipeline)
        as the current one.

        Args:
            text_iterator (generator of `List[str]`):
                The training corpus. Should be a generator of batches of texts, for instance a list of lists of texts
                if you have everything in memory.
            vocab_size (`int`):
                The size of the vocabulary you want for your tokenizer.
            length (`int`, *optional*):
                The total number of sequences in the iterator. This is used to provide meaningful progress tracking
            new_special_tokens (list of `str` or `AddedToken`, *optional*):
                A list of new special tokens to add to the tokenizer you are training.
            special_tokens_map (`Dict[str, str]`, *optional*):
                If you want to rename some of the special tokens this tokenizer uses, pass along a mapping old special
                token name to new special token name in this argument.
            kwargs (`Dict[str, Any]`, *optional*):
                Additional keyword arguments passed along to the trainer from the ðŸ¤— Tokenizers library.

        Returns:
            [`PreTrainedTokenizerFast`]: A new tokenizer of the same type as the original one, trained on
            `text_iterator`.

        Úadded_tokensÚpost_processorNÚmodelrM   r!   r    Úmergesr"   Úunk_idr   g        )r#   r$   z;This method does not support this type of tokenizer (found z-) only BPE, Unigram, WordLevel and WordPiece.Ú	unk_tokenrL   Úidr§   Úcontinuing_subword_prefixÚend_of_word_suffixrt   Ú	ByteLevelÚSequenceÚpretokenizersc              3   ó,   K  — | ]  }|d    dk(  –— Œ y­w)rM   rA  NrE   )Ú.0Úpretokenizers     rG   ú	<genexpr>zBPreTrainedTokenizerFast.train_new_from_iterator.<locals>.<genexpr>B  s"   è ø€ ò à$ð ! Ñ(¨KÕ7ñùs   ‚Úinitial_alphabet)r›   r‹   )rA   Útrainerr‹   rŠ   zQAttempted to set a token in the post processor that does not exist in the mappingrÆ   )ÚclsÚsepr5   T)Úsingle_wordÚlstripÚrstripÚ
normalizedrL   r+   rE   )#rq   rr   rW   Úto_strrN   rP   rS   Úfrom_strr)  ro   r   ÚextendÚanyrw   rA  ÚalphabetÚMODEL_TO_TRAINER_MAPPINGÚtrain_from_iteratorrO   rÑ   rX   rQ   r   ÚSPECIAL_TOKENS_ATTRIBUTESÚremoverv   Ú_special_tokens_maprn   rL  rM  rN  rO  r5   rV   r�   )ry   Útext_iteratorr›   rA   Únew_special_tokensÚspecial_tokens_mapr{   Útokenizer_jsonr8  r9  r=  r<  r3   r‹   Úadded_tokenrL   r  Útrainer_classrI  Útrained_tokenizer_jsonrK   rŠ   r…   Útoken_idÚspecial_tokenÚspecial_tokens_listÚspecial_token_fullr5   s                               rG   Útrain_new_from_iteratorz/PreTrainedTokenizerFast.train_new_from_iteratorÚ  s€  € ôD Ÿ™ D§O¡O×$:Ñ$:Ó$<Ó=ˆà%×)Ñ)¨.Ó9ˆà'×+Ñ+Ð,<Ó=ˆàˆ	à˜'Ñ" 6Ñ*¨eÒ3Ø/1ˆN˜7Ñ# GÑ,Ø02ˆN˜7Ñ# HÒ-Ø˜GÑ$ VÑ,°	Ò9Ø˜gÑ& xÑ0Ð<Ø'¨Ñ0°Ñ:�Ø*¨7Ñ3°GÑ<¸VÑDÀQÑG�	Ø%Ð1°iÐCUÑ6UØ 2°9Ñ =�IØ45�˜wÑ'¨Ñ1Ø5>ÀÐ4DÐ3E�˜wÑ'¨Ò0Ø˜GÑ$ VÑ,Ð0JÑJØ/1ˆN˜7Ñ# GÒ,äØMÈnÐ]dÑNeÐflÑNmÐMnð o>ð >óð ð Ð*Ø˜~¨gÑ6Ñ6Ø˜wÑ'¨Ñ4Ð8JÑJà3EÀnÐU\ÑF]Ð^iÑFjÑ3kˆN˜7Ñ# KÑ0ä!×*Ñ*¬4¯:©:°nÓ+EÓFˆ	ð ˆØ'ò 	=ˆKØ!—o‘o i°Ó6ˆGØ—‘  dÓ+ˆAØ˜gÑ& vÑ.°)Ò;ÁGØØ!Ð-°+¸iÑ2HÐL^Ñ2^Ø);¸KÈ	Ñ<RÑ)S�˜IÑ&Ø×!Ñ!¤*Ñ";¨{Ñ";Õ<ð	=ð Ð)Ø×!Ñ!Ð"4Ô5ð ˜7Ñ# FÑ+¨uÒ4Ø+°6Ñ9Ø˜wÑ'Ð(CÑDÐPà2@ÀÑ2IÐJeÑ2fˆFÐ.Ñ/à˜7Ñ# FÑ+¨uÒ4Ø$¨FÑ2Ø˜wÑ'Ð(<Ñ=ÐIà+9¸'Ñ+BÐCWÑ+XˆFÐ'Ñ(Ø˜'Ñ" 6Ñ*¨iÒ7¸IÐ<QØ"+ˆF�;ÑØ˜/Ñ*Ð6à˜Ñ/°Ñ7¸;ÒFØ! /Ñ2°6Ñ:¸jÒHØ# ~°oÑ'FÑFÜñ à(6°Ñ(GÈÑ(Xôô ô
 .A×-JÑ-J×-SÑ-SÓ-U�Ð)Ñ*ä0°ÀÑ1HÈÑ1PÑQˆÙÐ_¨:ÀnÑ_ÐX^Ñ_ˆØ×%Ñ% m¸FÈGÐ%ÔTàÑ%Ü%)§Z¡Z°	×0@Ñ0@Ó0BÓ%CÐ"à >Ñ1Ø)Ð*:Ñ;ò v�CØ+Ð,<Ñ=¸cÑBÀ8ÑL�FØ)Ð5ØTZÖ![È5Ð"4×"8Ñ"8¸ÀÕ"FÐ![˜Ð![ØFL�NÐ#3Ñ4°SÑ9¸(ÑCØ!'ò ˜Ø#,×#8Ñ#8¸Ó#?˜Ø#Ñ+Ü",Ø só#ð ðð ouÖCuÐejÀI×DYÑDYÐZ_ÕD`ÒCu�NÐ#3Ñ4°SÑ9¸%Ò@ðvð "0ò 
F�Ø  NÒ2Ø-¨mÑ<‘H�E˜1Ø)Ð5¸%ÐCUÑ:UØ 2°5Ñ 9˜Ø(×4Ñ4°UÓ;�HØÐ'Ü(Øoóð ð 6;¸HÐ4E�N =Ò1ð
Fð 8FÐ"Ð#3Ñ4Ü%×.Ñ.¬t¯z©zÐ:PÓ/QÓRˆIà×!Ñ!×&Ñ&Ó(ˆä0×JÑJ×OÑOÓQÐØ×"Ñ"Ð#>Ô?Ø(ò 	2ˆEÜ�t˜UÓ#Ñ/Ü '¨¨eÓ 4�Ø%Ð1°mÐGYÑ6YØ$6°}Ñ$E�Mà%)×%=Ñ%=×%AÑ%AÀ%ÈÓ%NÐ"ÜÐ0´*Ô=ä$.Ø%Ø$6×$BÑ$BØ1×8Ñ8Ø1×8Ñ8Ø#5×#@Ñ#@Ø $ô%�F˜5’Mð %2�F˜5’Mð%	2ð( %)×$BÑ$BÐ!ØÐ)Ø%×,Ñ,Ð-?Ô@ÜÐ(Ó)¨AÒ-Ø2KˆFÐ.Ñ/àˆt�~‰~ÑC¨yÐC¸FÑCÐCùòq "\ùò Dvs   ËSÌS)NNFFFFT)F)NF)FN)NN)NNN)?Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚVOCAB_FILES_NAMESÚvocab_files_namesr)   r   Ú__annotations__ra   ÚpropertyÚboolr“   r•   rÕ   r›   Údictrk   r�   r    ri   r   r/   r°   r²   rS   rs   ÚDecoderFastrµ   ÚEncodingFastr   rû   r   rh   rÌ   r   r   rÏ   rÎ   rÖ   rÚ   rÝ   rá   ræ   r   r   rò   rì   rê   r   r   r   r   r   r  r  r  r  r%  ÚPathLiker6  re  Ú__classcell__)r�   s   @rG   r(   r(   Q   s³  ø… ñ
ð *ÐØ04ÐÐ-Ó4ôzðx ð˜ò ó ðð ð¨ò ó ðð ðG˜Cò Gó ðGðA˜4  S ™>ó Að ð �t˜C ˜H‘~ò  ó ð ð ðn d¨3°¨8¡nò nó ðnð ð: d¨3°
¨?Ñ&;ò :ó ð:ðn  c¨3 h¡ó nðF˜ó Fð ð =ò ó ðð ð'˜ò 'ó ð'ð 15Ø04Ø*/Ø+0Ø',Ø#Øñ-(àð-(ð  (¨™~ð-(ð  (¨™~ð	-(ð
 $(ð-(ð %)ð-(ð !%ð-(ð ð-(ð ð-(ð 
ˆt�C˜�H‰~˜t LÑ1Ð1Ñ	2ó-(ð^U¨E°#°xÀ±}Ð2DÑ,Eð UÈ%ÐPSÐUYÐZ]ÑU^ÐP^ÑJ_ó Uð ¸ð Àó ð7¨#ð 7°(¸3±-ó 7ñ6 d¨5°°j°Ñ+AÑ&Bð 6Ð]`ó 6ñ?¨dð ?¸só ?ð, GLñØ˜˜d 3™i˜Ñ(ðØ?Cðà	ˆs�D˜‘Iˆ~Ñ	óñ4u˜Sð u¨°©ð uÐRVð uÐmqÐruÑmvó uðI9à)ðI9ð 0ðI9ð ð	I9ð
 ðI9ð % S™MðI9ð ˜s‘móI9ð` $(Ø,;×,FÑ,FØ2D×2TÑ2TØ$(ØØ$)Ø,0Ø&*Ø(,Ø04Ø04Ø*/Ø+0Ø',Ø#ØØ%*ñ+Y`à"'Ø�‰O˜T -Ñ0°$Ð7HÑ2IÈ4ÐPeÑKfÐfñ#
ðY`ð
 !ðY`ð *ðY`ð 0ðY`ð ˜S‘MðY`ð ðY`ð "ðY`ð % S™MðY`ð ˜s‘mðY`ð ! ™ðY`ð  (¨™~ðY`ð  (¨™~ðY`ð  $(ð!Y`ð" %)ð#Y`ð$ !%ð%Y`ð& ð'Y`ð( ð)Y`ð* #ð+Y`ð, 
ó-Y`ð| DHØ#'Ø,;×,FÑ,FØ2D×2TÑ2TØ$(ØØ$)Ø,0Ø&*Ø)-Ø04Ø04Ø*/Ø+0Ø',Ø#ØØ%*ñ);à�IÐ0Ð0Ñ1ð;ð ˜E )Ð->Ð">Ñ?Ñ@ð;ð !ð	;ð
 *ð;ð 0ð;ð ˜S‘Mð;ð ð;ð "ð;ð % S™Mð;ð ˜s‘mð;ð ! ™ð;ð  (¨™~ð;ð  (¨™~ð;ð $(ð;ð  %)ð!;ð" !%ð#;ð$ ð%;ð& ð';ð( #ð);ð, 
ó-;ðz
¨t°C©yð 
¸Só 
ð %*Ø7;ñ	à˜˜d 3™i˜Ñ(ðð "ðð '/¨t¡nð	ð 
óð8 )-Ø)-ñ/à˜c 2§;¡;Ð.Ñ/ð/ð ˜#‘Jð/ð   ‘~ð	/ð
 " #™ð/ð 
ˆs‰ó/ðj ØØ÷rDrI   r(   )=ri  rQ   rq   r%  Úcollectionsr   Úcollections.abcr   Útypingr   r   r   Útokenizers.pre_tokenizersÚpre_tokenizersrw   Ú
tokenizersr   rq  r	   rS   Útokenizers.decodersr
   rp  Útokenizers.trainersr   r   r   r   r   Úintegrations.ggmlr   Úmodeling_gguf_pytorch_utilsr   Útokenization_utilsr   Útokenization_utils_baser   r   r   r   r   r   r   r   r   r   Úutilsr   r   r    Ú
get_loggerrf  Úloggerr,  ÚSPECIAL_TOKENS_MAP_FILEÚTOKENIZER_CONFIG_FILEÚTIKTOKEN_VOCAB_FILEr'  rU  rj  r(   rE   rI   rG   ú<module>r†     sè   ðñó
 Û Û 	Ý #Ý $ß 'Ñ 'å 7Ý /Ý 1Ý 6ß ^Ó ^å :Ý 5Ý =Ý 3÷÷ ÷ ÷ @Ñ ?ð 
ˆ×	Ñ	˜HÓ	%€ð "€Ø3Ð Ø/Ð Ø'Ð ð (Ð à ð ñ Ð ð ØØ!Ø!ñ	Ð ð (6ÐEXÑYÐ ñ Ð,Ó-ôzDÐ5ó zDó .ñzDrI   