





'''simple docstring'''



_SCREAMING_SNAKE_CASE					=    [sum(int(c, 1_0) ** 2 for c in i.__str__()) for i in range(1_0_0_0_0_0)]




def    _lowerCAmelCase						(				lowerCamelCase_			:  int				):
			__lowercase										=							0
			while number:
						# Increased Speed Slightly by checking every 5 digits together.
						sum_of_digits_squared += DIGITS_SQUARED[number % 1_0_0_0_0_0]
						number //= 1_0_0_0_0_0

			return sum_of_digits_squared


# There are 2 Chains made,
# One ends with 89 with the chain member 58 being the one which when declared first,
# there will be the least number of iterations for all the members to be checked.

# The other one ends with 1 and has only one element 1.

# So 58 and 1 are chosen to be declared at the starting.

# Changed dictionary to an array to quicken the solution
_SCREAMING_SNAKE_CASE					=    [None] * 1_0_0_0_0_0_0_0
_SCREAMING_SNAKE_CASE					=    True
_SCREAMING_SNAKE_CASE					=    False




def    _lowerCAmelCase						(				lowerCamelCase_			:  int				):




			if CHAINS[number - 1] is not None:
						return CHAINS[number - 1]  # type: ignore

			__lowercase										=							chain(next_number(__a				)				)
			__lowercase										=							number_chain

			while number < 1_0_0_0_0_0_0_0:
						__lowercase										=							number_chain
						number *= 1_0

			return number_chain




def    _lowerCAmelCase						(				lowerCamelCase_			:  int = 1_0_0_0_0_0_0_0				):




			for i in range(1		, __a				):
						if CHAINS[i] is None:
									chain(i + 1				)

			return CHAINS[:number].count(__a				)


if __name__ == "__main__":
	import doctest

	doctest.testmod()
	print(f'''{solution() = }''')












'''simple docstring'''



import json
from typing import TYPE_CHECKING, List, Optional, Tuple

from tokenizers import pre_tokenizers

from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import logging


if TYPE_CHECKING:
	from transformers.pipelines.conversational import Conversation


_SCREAMING_SNAKE_CASE					=    logging.get_logger(__name__)

_SCREAMING_SNAKE_CASE					=    {'''vocab_file''': '''vocab.json''', '''merges_file''': '''merges.txt''', '''tokenizer_file''': '''tokenizer.json'''}

_SCREAMING_SNAKE_CASE					=    {
    '''tokenizer_file''': {
        '''EleutherAI/gpt-neox-20b''': '''https://huggingface.co/EleutherAI/gpt-neox-20b/resolve/main/tokenizer.json''',
    },
}

_SCREAMING_SNAKE_CASE					=    {
    '''gpt-neox-20b''': 2_0_4_8,
}






class 							__lowercase       (      lowerCAmelCase__						):







	'''simple docstring'''

	a    :				List[Any]											=       VOCAB_FILES_NAMES
	a    :				Optional[Any]											=       PRETRAINED_VOCAB_FILES_MAP
	a    :				Optional[int]											=       PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
	a    :				List[str]											=       ["input_ids", "attention_mask"]


	def __init__(self     ,_lowerCamelCase=None     ,_lowerCamelCase=None     ,_lowerCamelCase=None     ,_lowerCamelCase="<|endoftext|>"     ,_lowerCamelCase="<|endoftext|>"     ,_lowerCamelCase="<|endoftext|>"     ,_lowerCamelCase=False     ,**_lowerCamelCase     ,)							->							Optional[Any]:







				'''simple docstring'''





				super().__init__(
				    _lowerCamelCase     ,_lowerCamelCase     ,tokenizer_file=_lowerCamelCase     ,unk_token=_lowerCamelCase     ,bos_token=_lowerCamelCase     ,eos_token=_lowerCamelCase     ,add_prefix_space=_lowerCamelCase     ,**_lowerCamelCase     ,)

				__lowercase										=							json.loads(self.backend_tokenizer.pre_tokenizer.__getstate__() )
				if pre_tok_state.get('''add_prefix_space'''     ,_lowerCamelCase ) != add_prefix_space:
							__lowercase										=							getattr(_lowerCamelCase     ,pre_tok_state.pop('''type''' ) )
							__lowercase										=							add_prefix_space
							__lowercase										=							pre_tok_class(**_lowerCamelCase )

				__lowercase										=							add_prefix_space


	def 						_UpperCAmelCase     (self     ,_lowerCamelCase     ,_lowerCamelCase = None )							->							Tuple[str]:







				'''simple docstring'''





				__lowercase										=							self._tokenizer.model.save(_lowerCamelCase     ,name=_lowerCamelCase )
				return tuple(_lowerCamelCase )


	def 						_UpperCAmelCase     (self     ,_lowerCamelCase )							->							List[int]:







				'''simple docstring'''





				__lowercase										=							[]
				for is_user, text in conversation.iter_texts():
							input_ids.extend(self.encode(_lowerCamelCase     ,add_special_tokens=_lowerCamelCase ) + [self.eos_token_id] )

				if len(_lowerCamelCase ) > self.model_max_length:
							__lowercase										=							input_ids[-self.model_max_length :]
				return input_ids





