
"""simple docstring"""




import tempfile
import unittest

from transformers import SPIECE_UNDERLINE, BatchEncoding, PLBartTokenizer, is_torch_available
from transformers.testing_utils import (
    get_tests_dir,
    nested_simplify,
    require_sentencepiece,
    require_tokenizers,
    require_torch,
)

from ...test_tokenization_common import TokenizerTesterMixin


UpperCAmelCase__      :    Dict    							= get_tests_dir('fixtures/test_sentencepiece.model')


if is_torch_available():
					from transformers.models.plbart.modeling_plbart import shift_tokens_right

UpperCAmelCase__      :    Any    							= 5_0_0_0_3
UpperCAmelCase__      :    Tuple    							= 5_0_0_0_2



@require_sentencepiece
@require_tokenizers
class 	lowerCAmelCase_						(a__ ,					unittest.TestCase  ):


				"""simple docstring"""



				__UpperCamelCase      :						Optional[Any]					       =   PLBartTokenizer
				__UpperCamelCase      :						Optional[Any]					       =   None
				__UpperCamelCase      :						Dict					       =   False



				def 	__magic_name__    (self    )					->		Optional[int]:



											"""simple docstring"""




											super().setUp()

											# We have a SentencePiece fixture for testing
											SCREAMING_SNAKE_CASE__						:       List[Any]           =   PLBartTokenizer(SCREAMING_SNAKE_CASE__   ,       language_codes="""base"""   ,       keep_accents=SCREAMING_SNAKE_CASE__    )
											tokenizer.save_pretrained(self.tmpdirname    )



				def 	__magic_name__    (self    )					->		Optional[Any]:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Tuple           =   PLBartTokenizer(SCREAMING_SNAKE_CASE__   ,       language_codes="""base"""   ,       keep_accents=SCREAMING_SNAKE_CASE__    )

											SCREAMING_SNAKE_CASE__						:       Tuple           =   tokenizer.tokenize("""This is a test"""    )
											self.assertListEqual(SCREAMING_SNAKE_CASE__   ,       ["""▁This""", """▁is""", """▁a""", """▁t""", """est"""]    )

											self.assertListEqual(
											    tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE__    )   ,       [value + tokenizer.fairseq_offset for value in [2_85, 46, 10, 1_70, 3_82]]   ,       )

											SCREAMING_SNAKE_CASE__						:       int           =   tokenizer.tokenize("""I was born in 92000, and this is falsé."""    )
											self.assertListEqual(
											    SCREAMING_SNAKE_CASE__   ,       [
											        SPIECE_UNDERLINE + """I""",
											        SPIECE_UNDERLINE + """was""",
											        SPIECE_UNDERLINE + """b""",
											        """or""",
											        """n""",
											        SPIECE_UNDERLINE + """in""",
											        SPIECE_UNDERLINE + """""",
											        """9""",
											        """2""",
											        """0""",
											        """0""",
											        """0""",
											        """,""",
											        SPIECE_UNDERLINE + """and""",
											        SPIECE_UNDERLINE + """this""",
											        SPIECE_UNDERLINE + """is""",
											        SPIECE_UNDERLINE + """f""",
											        """al""",
											        """s""",
											        """é""",
											        """.""",
											    ]   ,       )
											SCREAMING_SNAKE_CASE__						:       int           =   tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE__    )
											self.assertListEqual(
											    SCREAMING_SNAKE_CASE__   ,       [
											        value + tokenizer.fairseq_offset
											        for value in [8, 21, 84, 55, 24, 19, 7, 2, 6_02, 3_47, 3_47, 3_47, 3, 12, 66, 46, 72, 80, 6, 2, 4]
											    ]   ,       )

											SCREAMING_SNAKE_CASE__						:       Any           =   tokenizer.convert_ids_to_tokens(SCREAMING_SNAKE_CASE__    )
											self.assertListEqual(
											    SCREAMING_SNAKE_CASE__   ,       [
											        SPIECE_UNDERLINE + """I""",
											        SPIECE_UNDERLINE + """was""",
											        SPIECE_UNDERLINE + """b""",
											        """or""",
											        """n""",
											        SPIECE_UNDERLINE + """in""",
											        SPIECE_UNDERLINE + """""",
											        """<unk>""",
											        """2""",
											        """0""",
											        """0""",
											        """0""",
											        """,""",
											        SPIECE_UNDERLINE + """and""",
											        SPIECE_UNDERLINE + """this""",
											        SPIECE_UNDERLINE + """is""",
											        SPIECE_UNDERLINE + """f""",
											        """al""",
											        """s""",
											        """<unk>""",
											        """.""",
											    ]   ,       )

											SCREAMING_SNAKE_CASE__						:       Dict           =   tokenizer.vocab_size
											SCREAMING_SNAKE_CASE__						:       Union[str, Any]           =   [tokenizer.convert_ids_to_tokens(SCREAMING_SNAKE_CASE__    ) for x in range(end - 4   ,       SCREAMING_SNAKE_CASE__    )]

											self.assertListEqual(SCREAMING_SNAKE_CASE__   ,       ["""__java__""", """__python__""", """__en_XX__""", """<mask>"""]    )

											SCREAMING_SNAKE_CASE__						:       str           =   """java.lang.Exception, python.lang.Exception, javascript, php, ruby, go"""
											SCREAMING_SNAKE_CASE__						:       Tuple           =   tokenizer(SCREAMING_SNAKE_CASE__    ).input_ids
											self.assertEqual(
											    tokenizer.decode(SCREAMING_SNAKE_CASE__   ,       skip_special_tokens=SCREAMING_SNAKE_CASE__   ,       clean_up_tokenization_spaces=SCREAMING_SNAKE_CASE__    )   ,       SCREAMING_SNAKE_CASE__   ,       )



				def 	__magic_name__    (self    )					->		int:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Any           =   PLBartTokenizer(SCREAMING_SNAKE_CASE__   ,       language_codes="""multi"""   ,       keep_accents=SCREAMING_SNAKE_CASE__    )

											SCREAMING_SNAKE_CASE__						:       Tuple           =   tokenizer.tokenize("""This is a test"""    )
											self.assertListEqual(SCREAMING_SNAKE_CASE__   ,       ["""▁This""", """▁is""", """▁a""", """▁t""", """est"""]    )

											self.assertListEqual(
											    tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE__    )   ,       [value + tokenizer.fairseq_offset for value in [2_85, 46, 10, 1_70, 3_82]]   ,       )

											SCREAMING_SNAKE_CASE__						:       Union[str, Any]           =   tokenizer.tokenize("""I was born in 92000, and this is falsé."""    )
											self.assertListEqual(
											    SCREAMING_SNAKE_CASE__   ,       [
											        SPIECE_UNDERLINE + """I""",
											        SPIECE_UNDERLINE + """was""",
											        SPIECE_UNDERLINE + """b""",
											        """or""",
											        """n""",
											        SPIECE_UNDERLINE + """in""",
											        SPIECE_UNDERLINE + """""",
											        """9""",
											        """2""",
											        """0""",
											        """0""",
											        """0""",
											        """,""",
											        SPIECE_UNDERLINE + """and""",
											        SPIECE_UNDERLINE + """this""",
											        SPIECE_UNDERLINE + """is""",
											        SPIECE_UNDERLINE + """f""",
											        """al""",
											        """s""",
											        """é""",
											        """.""",
											    ]   ,       )
											SCREAMING_SNAKE_CASE__						:       Tuple           =   tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE__    )
											self.assertListEqual(
											    SCREAMING_SNAKE_CASE__   ,       [
											        value + tokenizer.fairseq_offset
											        for value in [8, 21, 84, 55, 24, 19, 7, 2, 6_02, 3_47, 3_47, 3_47, 3, 12, 66, 46, 72, 80, 6, 2, 4]
											    ]   ,       )

											SCREAMING_SNAKE_CASE__						:       Dict           =   tokenizer.convert_ids_to_tokens(SCREAMING_SNAKE_CASE__    )
											self.assertListEqual(
											    SCREAMING_SNAKE_CASE__   ,       [
											        SPIECE_UNDERLINE + """I""",
											        SPIECE_UNDERLINE + """was""",
											        SPIECE_UNDERLINE + """b""",
											        """or""",
											        """n""",
											        SPIECE_UNDERLINE + """in""",
											        SPIECE_UNDERLINE + """""",
											        """<unk>""",
											        """2""",
											        """0""",
											        """0""",
											        """0""",
											        """,""",
											        SPIECE_UNDERLINE + """and""",
											        SPIECE_UNDERLINE + """this""",
											        SPIECE_UNDERLINE + """is""",
											        SPIECE_UNDERLINE + """f""",
											        """al""",
											        """s""",
											        """<unk>""",
											        """.""",
											    ]   ,       )
											SCREAMING_SNAKE_CASE__						:       List[Any]           =   tokenizer.vocab_size
											SCREAMING_SNAKE_CASE__						:       Dict           =   [tokenizer.convert_ids_to_tokens(SCREAMING_SNAKE_CASE__    ) for x in range(end - 7   ,       SCREAMING_SNAKE_CASE__    )]

											self.assertListEqual(
											    SCREAMING_SNAKE_CASE__   ,       ["""__java__""", """__python__""", """__en_XX__""", """__javascript__""", """__php__""", """__ruby__""", """__go__"""]    )
											SCREAMING_SNAKE_CASE__						:       str           =   """java.lang.Exception, python.lang.Exception, javascript, php, ruby, go"""
											SCREAMING_SNAKE_CASE__						:       str           =   tokenizer(SCREAMING_SNAKE_CASE__    ).input_ids
											self.assertEqual(
											    tokenizer.decode(SCREAMING_SNAKE_CASE__   ,       skip_special_tokens=SCREAMING_SNAKE_CASE__   ,       clean_up_tokenization_spaces=SCREAMING_SNAKE_CASE__    )   ,       SCREAMING_SNAKE_CASE__   ,       )






@require_torch
@require_sentencepiece
@require_tokenizers
class 	lowerCAmelCase_						(unittest.TestCase  ):


				"""simple docstring"""



				__UpperCamelCase      :						Optional[int]					       =   '''uclanlp/plbart-python-en_XX'''
				__UpperCamelCase      :						Tuple					       =   [
				    '''def maximum(a,b,c):NEW_LINE_INDENTreturn max([a,b,c])''',
				    '''def sum(a,b,c):NEW_LINE_INDENTreturn sum([a,b,c])''',
				]
				__UpperCamelCase      :						Optional[int]					       =   [
				    '''Returns the maximum value of a b c.''',
				    '''Sums the values of a b c.''',
				]
				__UpperCamelCase      :						Union[str, Any]					       =   [
				    134,
				    5452,
				    33460,
				    33441,
				    33463,
				    33465,
				    33463,
				    33449,
				    988,
				    20,
				    33456,
				    19,
				    33456,
				    771,
				    39,
				    4258,
				    889,
				    3318,
				    33441,
				    33463,
				    33465,
				    33463,
				    33449,
				    2471,
				    2,
				    PYTHON_CODE,
				]



				@classmethod
				def 	__magic_name__    (cls    )					->		Dict:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       PLBartTokenizer           =   PLBartTokenizer.from_pretrained(
											    cls.checkpoint_name   ,       language_codes="""base"""   ,       src_lang="""python"""   ,       tgt_lang="""en_XX"""    )
											SCREAMING_SNAKE_CASE__						:       Dict           =   1
											return cls



				def 	__magic_name__    (self    )					->		List[Any]:



											"""simple docstring"""




											self.assertEqual(self.tokenizer.fairseq_tokens_to_ids["""__java__"""]   ,       5_00_01    )
											self.assertEqual(self.tokenizer.fairseq_tokens_to_ids["""__python__"""]   ,       5_00_02    )
											self.assertEqual(self.tokenizer.fairseq_tokens_to_ids["""__en_XX__"""]   ,       5_00_03    )



				def 	__magic_name__    (self    )					->		List[str]:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Dict           =   self.tokenizer.batch_encode_plus(self.src_text    ).input_ids[0]
											self.assertListEqual(self.expected_src_tokens   ,       SCREAMING_SNAKE_CASE__    )



				def 	__magic_name__    (self    )					->		Tuple:



											"""simple docstring"""




											self.assertIn(SCREAMING_SNAKE_CASE__   ,       self.tokenizer.all_special_ids    )
											SCREAMING_SNAKE_CASE__						:       int           =   [EN_CODE, 90_37, 3_34_42, 57, 7_52, 1_53, 14, 56, 18, 9, 2]
											SCREAMING_SNAKE_CASE__						:       Tuple           =   self.tokenizer.decode(SCREAMING_SNAKE_CASE__   ,       skip_special_tokens=SCREAMING_SNAKE_CASE__    )
											SCREAMING_SNAKE_CASE__						:       int           =   self.tokenizer.decode(generated_ids[1:]   ,       skip_special_tokens=SCREAMING_SNAKE_CASE__    )
											self.assertEqual(SCREAMING_SNAKE_CASE__   ,       SCREAMING_SNAKE_CASE__    )
											self.assertNotIn(self.tokenizer.eos_token   ,       SCREAMING_SNAKE_CASE__    )



				def 	__magic_name__    (self    )					->		Dict:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   ["""def sum(a,b,c):NEW_LINE_INDENTreturn sum([a,b,c])""" * 20]
											self.assertIsInstance(src_text[0]   ,       SCREAMING_SNAKE_CASE__    )
											SCREAMING_SNAKE_CASE__						:       Tuple           =   10
											SCREAMING_SNAKE_CASE__						:       Dict           =   self.tokenizer(SCREAMING_SNAKE_CASE__   ,       max_length=SCREAMING_SNAKE_CASE__   ,       truncation=SCREAMING_SNAKE_CASE__    ).input_ids[0]
											self.assertEqual(ids[-2]   ,       2    )
											self.assertEqual(ids[-1]   ,       SCREAMING_SNAKE_CASE__    )
											self.assertEqual(len(SCREAMING_SNAKE_CASE__    )   ,       SCREAMING_SNAKE_CASE__    )



				def 	__magic_name__    (self    )					->		List[str]:



											"""simple docstring"""




											self.assertListEqual(self.tokenizer.convert_tokens_to_ids(["""<mask>""", """__java__"""]    )   ,       [5_00_04, 5_00_01]    )



				def 	__magic_name__    (self    )					->		Dict:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Any           =   tempfile.mkdtemp()
											SCREAMING_SNAKE_CASE__						:       Any           =   self.tokenizer.fairseq_tokens_to_ids
											self.tokenizer.save_pretrained(SCREAMING_SNAKE_CASE__    )
											SCREAMING_SNAKE_CASE__						:       List[Any]           =   PLBartTokenizer.from_pretrained(SCREAMING_SNAKE_CASE__    )
											self.assertDictEqual(new_tok.fairseq_tokens_to_ids   ,       SCREAMING_SNAKE_CASE__    )



				@require_torch
				def 	__magic_name__    (self    )					->		List[str]:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       List[Any]           =   self.tokenizer(self.src_text   ,       text_target=self.tgt_text   ,       padding=SCREAMING_SNAKE_CASE__   ,       return_tensors="""pt"""    )
											SCREAMING_SNAKE_CASE__						:       Union[str, Any]           =   shift_tokens_right(batch["""labels"""]   ,       self.tokenizer.pad_token_id    )

											# fairseq batch: https://gist.github.com/sshleifer/cba08bc2109361a74ac3760a7e30e4f4
											self.assertEqual(batch.input_ids[1][-2:].tolist()   ,       [2, PYTHON_CODE]    )
											self.assertEqual(batch.decoder_input_ids[1][0]   ,       SCREAMING_SNAKE_CASE__    )
											self.assertEqual(batch.decoder_input_ids[1][-1]   ,       2    )
											self.assertEqual(batch.labels[1][-2:].tolist()   ,       [2, EN_CODE]    )



				@require_torch
				def 	__magic_name__    (self    )					->		Dict:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Optional[int]           =   self.tokenizer(
											    self.src_text   ,       text_target=self.tgt_text   ,       padding=SCREAMING_SNAKE_CASE__   ,       truncation=SCREAMING_SNAKE_CASE__   ,       max_length=len(self.expected_src_tokens    )   ,       return_tensors="""pt"""   ,       )
											SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   shift_tokens_right(batch["""labels"""]   ,       self.tokenizer.pad_token_id    )

											self.assertIsInstance(SCREAMING_SNAKE_CASE__   ,       SCREAMING_SNAKE_CASE__    )

											self.assertEqual((2, 26)   ,       batch.input_ids.shape    )
											self.assertEqual((2, 26)   ,       batch.attention_mask.shape    )
											SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   batch.input_ids.tolist()[0]
											self.assertListEqual(self.expected_src_tokens   ,       SCREAMING_SNAKE_CASE__    )
											self.assertEqual(2   ,       batch.decoder_input_ids[0, -1]    )  # EOS
											# Test that special tokens are reset
											self.assertEqual(self.tokenizer.prefix_tokens   ,       []    )
											self.assertEqual(self.tokenizer.suffix_tokens   ,       [self.tokenizer.eos_token_id, PYTHON_CODE]    )



				def 	__magic_name__    (self    )					->		Optional[int]:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Dict           =   self.tokenizer(self.src_text   ,       padding=SCREAMING_SNAKE_CASE__   ,       truncation=SCREAMING_SNAKE_CASE__   ,       max_length=3   ,       return_tensors="""pt"""    )
											SCREAMING_SNAKE_CASE__						:       int           =   self.tokenizer(
											    text_target=self.tgt_text   ,       padding=SCREAMING_SNAKE_CASE__   ,       truncation=SCREAMING_SNAKE_CASE__   ,       max_length=10   ,       return_tensors="""pt"""    )
											SCREAMING_SNAKE_CASE__						:       Optional[int]           =   targets["""input_ids"""]
											SCREAMING_SNAKE_CASE__						:       Dict           =   shift_tokens_right(SCREAMING_SNAKE_CASE__   ,       self.tokenizer.pad_token_id    )

											self.assertEqual(batch.input_ids.shape[1]   ,       3    )
											self.assertEqual(batch.decoder_input_ids.shape[1]   ,       10    )



				@require_torch
				def 	__magic_name__    (self    )					->		List[str]:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Union[str, Any]           =   self.tokenizer._build_translation_inputs(
											    """A test"""   ,       return_tensors="""pt"""   ,       src_lang="""en_XX"""   ,       tgt_lang="""java"""    )

											self.assertEqual(
											    nested_simplify(SCREAMING_SNAKE_CASE__    )   ,       {
											        # A, test, EOS, en_XX
											        """input_ids""": [[1_50, 2_42, 2, 5_00_03]],
											        """attention_mask""": [[1, 1, 1, 1]],
											        # java
											        """forced_bos_token_id""": 5_00_01,
											    }   ,       )






"""simple docstring"""




UpperCAmelCase__      :    List[str]    							= [
    9_9_9,
    8_0_0,
    7_9_9,
    6_0_0,
    5_9_9,
    5_0_0,
    4_0_0,
    3_9_9,
    3_7_7,
    3_5_5,
    3_3_3,
    3_1_1,
    2_8_8,
    2_6_6,
    2_4_4,
    2_2_2,
    2_0_0,
    1_9_9,
    1_7_7,
    1_5_5,
    1_3_3,
    1_1_1,
    8_8,
    6_6,
    4_4,
    2_2,
    0,
]

UpperCAmelCase__      :    int    							= [
    9_9_9,
    9_7_6,
    9_5_2,
    9_2_8,
    9_0_5,
    8_8_2,
    8_5_8,
    8_5_7,
    8_1_0,
    7_6_2,
    7_1_5,
    7_1_4,
    5_7_2,
    4_2_9,
    4_2_8,
    2_8_6,
    2_8_5,
    2_3_8,
    1_9_0,
    1_4_3,
    1_4_2,
    1_1_8,
    9_5,
    7_1,
    4_7,
    2_4,
    0,
]

UpperCAmelCase__      :    int    							= [
    9_9_9,
    9_8_8,
    9_7_7,
    9_6_6,
    9_5_5,
    9_4_4,
    9_3_3,
    9_2_2,
    9_1_1,
    9_0_0,
    8_9_9,
    8_7_9,
    8_5_9,
    8_4_0,
    8_2_0,
    8_0_0,
    7_9_9,
    7_6_6,
    7_3_3,
    7_0_0,
    6_9_9,
    6_5_0,
    6_0_0,
    5_9_9,
    5_0_0,
    4_9_9,
    4_0_0,
    3_9_9,
    3_5_0,
    3_0_0,
    2_9_9,
    2_6_6,
    2_3_3,
    2_0_0,
    1_9_9,
    1_7_9,
    1_5_9,
    1_4_0,
    1_2_0,
    1_0_0,
    9_9,
    8_8,
    7_7,
    6_6,
    5_5,
    4_4,
    3_3,
    2_2,
    1_1,
    0,
]

UpperCAmelCase__      :    int    							= [
    9_9_9,
    9_9_5,
    9_9_2,
    9_8_9,
    9_8_5,
    9_8_1,
    9_7_8,
    9_7_5,
    9_7_1,
    9_6_7,
    9_6_4,
    9_6_1,
    9_5_7,
    9_5_6,
    9_5_1,
    9_4_7,
    9_4_2,
    9_3_7,
    9_3_3,
    9_2_8,
    9_2_3,
    9_1_9,
    9_1_4,
    9_1_3,
    9_0_8,
    9_0_3,
    8_9_7,
    8_9_2,
    8_8_7,
    8_8_1,
    8_7_6,
    8_7_1,
    8_7_0,
    8_6_4,
    8_5_8,
    8_5_2,
    8_4_6,
    8_4_0,
    8_3_4,
    8_2_8,
    8_2_7,
    8_2_0,
    8_1_3,
    8_0_6,
    7_9_9,
    7_9_2,
    7_8_5,
    7_8_4,
    7_7_7,
    7_7_0,
    7_6_3,
    7_5_6,
    7_4_9,
    7_4_2,
    7_4_1,
    7_3_3,
    7_2_4,
    7_1_6,
    7_0_7,
    6_9_9,
    6_9_8,
    6_8_8,
    6_7_7,
    6_6_6,
    6_5_6,
    6_5_5,
    6_4_5,
    6_3_4,
    6_2_3,
    6_1_3,
    6_1_2,
    5_9_8,
    5_8_4,
    5_7_0,
    5_6_9,
    5_5_5,
    5_4_1,
    5_2_7,
    5_2_6,
    5_0_5,
    4_8_4,
    4_8_3,
    4_6_2,
    4_4_0,
    4_3_9,
    3_9_6,
    3_9_5,
    3_5_2,
    3_5_1,
    3_0_8,
    3_0_7,
    2_6_4,
    2_6_3,
    2_2_0,
    2_1_9,
    1_7_6,
    1_3_2,
    8_8,
    4_4,
    0,
]

UpperCAmelCase__      :    Tuple    							= [
    9_9_9,
    9_9_7,
    9_9_5,
    9_9_2,
    9_9_0,
    9_8_8,
    9_8_6,
    9_8_4,
    9_8_1,
    9_7_9,
    9_7_7,
    9_7_5,
    9_7_2,
    9_7_0,
    9_6_8,
    9_6_6,
    9_6_4,
    9_6_1,
    9_5_9,
    9_5_7,
    9_5_6,
    9_5_4,
    9_5_1,
    9_4_9,
    9_4_6,
    9_4_4,
    9_4_1,
    9_3_9,
    9_3_6,
    9_3_4,
    9_3_1,
    9_2_9,
    9_2_6,
    9_2_4,
    9_2_1,
    9_1_9,
    9_1_6,
    9_1_4,
    9_1_3,
    9_1_0,
    9_0_7,
    9_0_5,
    9_0_2,
    8_9_9,
    8_9_6,
    8_9_3,
    8_9_1,
    8_8_8,
    8_8_5,
    8_8_2,
    8_7_9,
    8_7_7,
    8_7_4,
    8_7_1,
    8_7_0,
    8_6_7,
    8_6_4,
    8_6_1,
    8_5_8,
    8_5_5,
    8_5_2,
    8_4_9,
    8_4_6,
    8_4_3,
    8_4_0,
    8_3_7,
    8_3_4,
    8_3_1,
    8_2_8,
    8_2_7,
    8_2_4,
    8_2_1,
    8_1_7,
    8_1_4,
    8_1_1,
    8_0_8,
    8_0_4,
    8_0_1,
    7_9_8,
    7_9_5,
    7_9_1,
    7_8_8,
    7_8_5,
    7_8_4,
    7_8_0,
    7_7_7,
    7_7_4,
    7_7_0,
    7_6_6,
    7_6_3,
    7_6_0,
    7_5_6,
    7_5_2,
    7_4_9,
    7_4_6,
    7_4_2,
    7_4_1,
    7_3_7,
    7_3_3,
    7_3_0,
    7_2_6,
    7_2_2,
    7_1_8,
    7_1_4,
    7_1_0,
    7_0_7,
    7_0_3,
    6_9_9,
    6_9_8,
    6_9_4,
    6_9_0,
    6_8_5,
    6_8_1,
    6_7_7,
    6_7_3,
    6_6_9,
    6_6_4,
    6_6_0,
    6_5_6,
    6_5_5,
    6_5_0,
    6_4_6,
    6_4_1,
    6_3_6,
    6_3_2,
    6_2_7,
    6_2_2,
    6_1_8,
    6_1_3,
    6_1_2,
    6_0_7,
    6_0_2,
    5_9_6,
    5_9_1,
    5_8_6,
    5_8_0,
    5_7_5,
    5_7_0,
    5_6_9,
    5_6_3,
    5_5_7,
    5_5_1,
    5_4_5,
    5_3_9,
    5_3_3,
    5_2_7,
    5_2_6,
    5_1_9,
    5_1_2,
    5_0_5,
    4_9_8,
    4_9_1,
    4_8_4,
    4_8_3,
    4_7_4,
    4_6_6,
    4_5_7,
    4_4_9,
    4_4_0,
    4_3_9,
    4_2_8,
    4_1_8,
    4_0_7,
    3_9_6,
    3_9_5,
    3_8_1,
    3_6_6,
    3_5_2,
    3_5_1,
    3_3_0,
    3_0_8,
    3_0_7,
    2_8_6,
    2_6_4,
    2_6_3,
    2_4_2,
    2_2_0,
    2_1_9,
    1_7_6,
    1_7_5,
    1_3_2,
    1_3_1,
    8_8,
    4_4,
    0,
]

UpperCAmelCase__      :    Union[str, Any]    							= [
    9_9_9,
    9_9_1,
    9_8_2,
    9_7_4,
    9_6_6,
    9_5_8,
    9_5_0,
    9_4_1,
    9_3_3,
    9_2_5,
    9_1_6,
    9_0_8,
    9_0_0,
    8_9_9,
    8_7_4,
    8_5_0,
    8_2_5,
    8_0_0,
    7_9_9,
    7_0_0,
    6_0_0,
    5_0_0,
    4_0_0,
    3_0_0,
    2_0_0,
    1_0_0,
    0,
]

UpperCAmelCase__      :    str    							= [
    9_9_9,
    9_9_2,
    9_8_5,
    9_7_8,
    9_7_1,
    9_6_4,
    9_5_7,
    9_4_9,
    9_4_2,
    9_3_5,
    9_2_8,
    9_2_1,
    9_1_4,
    9_0_7,
    9_0_0,
    8_9_9,
    8_7_9,
    8_5_9,
    8_4_0,
    8_2_0,
    8_0_0,
    7_9_9,
    7_6_6,
    7_3_3,
    7_0_0,
    6_9_9,
    6_5_0,
    6_0_0,
    5_9_9,
    5_0_0,
    4_9_9,
    4_0_0,
    3_9_9,
    3_0_0,
    2_9_9,
    2_0_0,
    1_9_9,
    1_0_0,
    9_9,
    0,
]

UpperCAmelCase__      :    str    							= [
    9_9_9,
    9_9_6,
    9_9_2,
    9_8_9,
    9_8_5,
    9_8_2,
    9_7_9,
    9_7_5,
    9_7_2,
    9_6_8,
    9_6_5,
    9_6_1,
    9_5_8,
    9_5_5,
    9_5_1,
    9_4_8,
    9_4_4,
    9_4_1,
    9_3_8,
    9_3_4,
    9_3_1,
    9_2_7,
    9_2_4,
    9_2_0,
    9_1_7,
    9_1_4,
    9_1_0,
    9_0_7,
    9_0_3,
    9_0_0,
    8_9_9,
    8_9_1,
    8_8_4,
    8_7_6,
    8_6_9,
    8_6_1,
    8_5_3,
    8_4_6,
    8_3_8,
    8_3_0,
    8_2_3,
    8_1_5,
    8_0_8,
    8_0_0,
    7_9_9,
    7_8_8,
    7_7_7,
    7_6_6,
    7_5_5,
    7_4_4,
    7_3_3,
    7_2_2,
    7_1_1,
    7_0_0,
    6_9_9,
    6_8_8,
    6_7_7,
    6_6_6,
    6_5_5,
    6_4_4,
    6_3_3,
    6_2_2,
    6_1_1,
    6_0_0,
    5_9_9,
    5_8_5,
    5_7_1,
    5_5_7,
    5_4_2,
    5_2_8,
    5_1_4,
    5_0_0,
    4_9_9,
    4_8_5,
    4_7_1,
    4_5_7,
    4_4_2,
    4_2_8,
    4_1_4,
    4_0_0,
    3_9_9,
    3_7_9,
    3_5_9,
    3_4_0,
    3_2_0,
    3_0_0,
    2_9_9,
    2_7_9,
    2_5_9,
    2_4_0,
    2_2_0,
    2_0_0,
    1_9_9,
    1_6_6,
    1_3_3,
    1_0_0,
    9_9,
    6_6,
    3_3,
    0,
]




