



"""simple docstring"""






import unittest

from transformers import DebertaVaTokenizer, DebertaVaTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


_lowercase : str      						=						get_tests_dir("fixtures/spiece.model")

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


					'''simple docstring'''





					_a   			=							DebertaVaTokenizer
					_a   			=							DebertaVaTokenizerFast
					_a   			=							True
					_a   			=							True



					def 		snake_case       (       self							:  Tuple     )->					Optional[int]:
								super().setUp()

								# We have a SentencePiece fixture for testing
								lowerCamelCase__		:		int			=DebertaVaTokenizer(lowerCamelCase,  unk_token='''<unk>'''     )
								tokenizer.save_pretrained(self.tmpdirname     )



					def 		snake_case       (       self							:  List[str],  lowerCamelCase							:  int     )->					Dict:
								lowerCamelCase__		:		Tuple			='''this is a test'''
								lowerCamelCase__		:		Any			='''this is a test'''
								return input_text, output_text



					def 		snake_case       (       self							:  List[str]     )->					List[str]:
								lowerCamelCase__		:		List[str]			='''<pad>'''
								lowerCamelCase__		:		Optional[Any]			=0

								self.assertEqual(self.get_tokenizer()._convert_token_to_id(lowerCamelCase     ),  lowerCamelCase     )
								self.assertEqual(self.get_tokenizer()._convert_id_to_token(lowerCamelCase     ),  lowerCamelCase     )



					def 		snake_case       (       self							:  Optional[Any]     )->					int:
								lowerCamelCase__		:		Dict			=list(self.get_tokenizer().get_vocab().keys()     )
								self.assertEqual(vocab_keys[0],  '''<pad>'''     )
								self.assertEqual(vocab_keys[1],  '''<unk>'''     )
								self.assertEqual(vocab_keys[-1],  '''[PAD]'''     )
								self.assertEqual(len(lowerCamelCase     ),  3_0001     )



					def 		snake_case       (       self							:  List[Any]     )->					Tuple:
								self.assertEqual(self.get_tokenizer().vocab_size,  3_0000     )



					def 		snake_case       (       self							:  Union[str, Any]     )->					Any:
								# fmt: off
								lowerCamelCase__		:		Union[str, Any]			=''' \tHeLLo!how  \n Are yoU?  '''
								lowerCamelCase__		:		List[str]			=['''▁hello''', '''!''', '''how''', '''▁are''', '''▁you''', '''?''']
								# fmt: on

								lowerCamelCase__		:		int			=DebertaVaTokenizer(lowerCamelCase,  do_lower_case=lowerCamelCase     )
								lowerCamelCase__		:		str			=tokenizer.convert_ids_to_tokens(tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		str			=DebertaVaTokenizerFast(lowerCamelCase,  do_lower_case=lowerCamelCase     )
								lowerCamelCase__		:		List[str]			=rust_tokenizer.convert_ids_to_tokens(rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )



					@unittest.skip('''There is an inconsistency between slow and fast tokenizer due to a bug in the fast one.'''     )
					def 		snake_case       (       self							:  int     )->					Optional[int]:
								pass



					@unittest.skip('''There is an inconsistency between slow and fast tokenizer due to a bug in the fast one.'''     )
					def 		snake_case       (       self							:  Optional[int]     )->					Any:
								pass



					def 		snake_case       (       self							:  List[Any]     )->					Optional[Any]:
								# fmt: off
								lowerCamelCase__		:		Any			='''I was born in 92000, and this is falsé.'''
								lowerCamelCase__		:		List[str]			=['''▁''', '''<unk>''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', '''▁''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''<unk>''', '''▁''', '''.''', ]
								# fmt: on

								lowerCamelCase__		:		Tuple			=DebertaVaTokenizer(lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		List[Any]			=tokenizer.convert_ids_to_tokens(tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		int			=DebertaVaTokenizerFast(lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		Optional[Any]			=rust_tokenizer.convert_ids_to_tokens(rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )



					def 		snake_case       (       self							:  Optional[Any]     )->					int:
								# fmt: off
								lowerCamelCase__		:		List[str]			='''I was born in 92000, and this is falsé.'''
								lowerCamelCase__		:		List[Any]			=['''▁i''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', '''▁''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''<unk>''', '''▁''', '''.''', ]
								# fmt: on

								lowerCamelCase__		:		List[str]			=DebertaVaTokenizer(lowerCamelCase,  do_lower_case=lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		Tuple			=tokenizer.convert_ids_to_tokens(tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		Dict			=DebertaVaTokenizerFast(lowerCamelCase,  do_lower_case=lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		Any			=rust_tokenizer.convert_ids_to_tokens(rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )



					def 		snake_case       (       self							:  str     )->					Union[str, Any]:
								# fmt: off
								lowerCamelCase__		:		Dict			='''I was born in 92000, and this is falsé.'''
								lowerCamelCase__		:		List[str]			=['''▁i''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''<unk>''', '''.''', ]
								# fmt: on

								lowerCamelCase__		:		Optional[Any]			=DebertaVaTokenizer(lowerCamelCase,  do_lower_case=lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		Dict			=tokenizer.convert_ids_to_tokens(tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		Dict			=DebertaVaTokenizerFast(lowerCamelCase,  do_lower_case=lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		Dict			=rust_tokenizer.convert_ids_to_tokens(rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )



					def 		snake_case       (       self							:  Dict     )->					Union[str, Any]:
								# fmt: off
								lowerCamelCase__		:		List[Any]			='''I was born in 92000, and this is falsé.'''
								lowerCamelCase__		:		Optional[Any]			=['''▁''', '''<unk>''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', '''▁''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''<unk>''', '''▁''', '''.''', ]
								# fmt: on

								lowerCamelCase__		:		str			=DebertaVaTokenizer(lowerCamelCase,  do_lower_case=lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		Any			=tokenizer.convert_ids_to_tokens(tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		Optional[int]			=DebertaVaTokenizerFast(lowerCamelCase,  do_lower_case=lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		Dict			=rust_tokenizer.convert_ids_to_tokens(rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )



					def 		snake_case       (       self							:  int     )->					List[str]:
								# fmt: off
								lowerCamelCase__		:		List[Any]			=''' \tHeLLo!how  \n Are yoU?  '''
								lowerCamelCase__		:		List[str]			=['''▁''', '''<unk>''', '''e''', '''<unk>''', '''o''', '''!''', '''how''', '''▁''', '''<unk>''', '''re''', '''▁yo''', '''<unk>''', '''?''']
								# fmt: on

								lowerCamelCase__		:		Any			=DebertaVaTokenizer(lowerCamelCase,  do_lower_case=lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		Optional[int]			=tokenizer.convert_ids_to_tokens(tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		int			=DebertaVaTokenizerFast(lowerCamelCase,  do_lower_case=lowerCamelCase,  split_by_punct=lowerCamelCase     )
								lowerCamelCase__		:		List[str]			=rust_tokenizer.convert_ids_to_tokens(rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )

								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )



					def 		snake_case       (       self							:  str     )->					Any:
								lowerCamelCase__		:		Optional[Any]			=self.get_tokenizer()
								lowerCamelCase__		:		List[Any]			=self.get_rust_tokenizer()

								lowerCamelCase__		:		Optional[Any]			='''I was born in 92000, and this is falsé.'''

								lowerCamelCase__		:		List[Any]			=tokenizer.convert_ids_to_tokens(tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )
								lowerCamelCase__		:		Any			=rust_tokenizer.convert_ids_to_tokens(rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		Tuple			=tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )
								lowerCamelCase__		:		str			=rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		List[str]			=self.get_rust_tokenizer()
								lowerCamelCase__		:		str			=tokenizer.encode(lowerCamelCase     )
								lowerCamelCase__		:		Dict			=rust_tokenizer.encode(lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )



					def 		snake_case       (       self							:  Any     )->					List[str]:
								lowerCamelCase__		:		Optional[int]			='''This is a test'''
								lowerCamelCase__		:		List[Any]			=[13, 1, 4398, 25, 21, 1289]
								lowerCamelCase__		:		str			=['''▁''', '''T''', '''his''', '''▁is''', '''▁a''', '''▁test''']
								lowerCamelCase__		:		List[str]			=['''▁''', '''<unk>''', '''his''', '''▁is''', '''▁a''', '''▁test''']

								lowerCamelCase__		:		Optional[Any]			=DebertaVaTokenizer(lowerCamelCase,  keep_accents=lowerCamelCase     )
								lowerCamelCase__		:		str			=DebertaVaTokenizerFast(lowerCamelCase,  keep_accents=lowerCamelCase     )

								lowerCamelCase__		:		str			=tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )
								lowerCamelCase__		:		Tuple			=tokenizer.tokenize(lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )
								lowerCamelCase__		:		Any			=tokenizer.convert_ids_to_tokens(lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		Tuple			=rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )
								lowerCamelCase__		:		Optional[int]			=rust_tokenizer.tokenize(lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )
								lowerCamelCase__		:		Tuple			=rust_tokenizer.convert_ids_to_tokens(lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								# fmt: off
								lowerCamelCase__		:		List[str]			='''I was born in 92000, and this is falsé.'''
								lowerCamelCase__		:		Optional[Any]			=[13, 1, 23, 386, 19, 561, 3050, 15, 17, 48, 25, 8256, 18, 1, 9]
								lowerCamelCase__		:		Dict			=['''▁''', '''I''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''é''', '''.''', ]
								lowerCamelCase__		:		Union[str, Any]			=['''▁''', '''<unk>''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''<unk>''', '''.''', ]
								# fmt: on

								lowerCamelCase__		:		List[str]			=tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )
								lowerCamelCase__		:		List[str]			=tokenizer.tokenize(lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )
								lowerCamelCase__		:		Optional[Any]			=tokenizer.convert_ids_to_tokens(lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )

								lowerCamelCase__		:		str			=rust_tokenizer.encode(lowerCamelCase,  add_special_tokens=lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )
								lowerCamelCase__		:		Any			=rust_tokenizer.tokenize(lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )
								lowerCamelCase__		:		int			=rust_tokenizer.convert_ids_to_tokens(lowerCamelCase     )
								self.assertListEqual(lowerCamelCase,  lowerCamelCase     )



					def 		snake_case       (       self							:  Dict     )->					str:
								lowerCamelCase__		:		Any			=DebertaVaTokenizer(lowerCamelCase     )

								lowerCamelCase__		:		Tuple			=tokenizer.encode('''sequence builders'''     )
								lowerCamelCase__		:		Optional[Any]			=tokenizer.encode('''multi-sequence build'''     )

								lowerCamelCase__		:		str			=tokenizer.build_inputs_with_special_tokens(lowerCamelCase     )
								lowerCamelCase__		:		Tuple			=tokenizer.build_inputs_with_special_tokens(lowerCamelCase,  lowerCamelCase     )

								self.assertEqual([tokenizer.cls_token_id] + text + [tokenizer.sep_token_id],  lowerCamelCase     )
								self.assertEqual(
								    [tokenizer.cls_token_id] + text + [tokenizer.sep_token_id] + text_a + [tokenizer.sep_token_id],  lowerCamelCase,  )




					@slow
					def 		snake_case       (       self							:  Union[str, Any]     )->					Any:
								# fmt: off
								lowerCamelCase__		:		Tuple			={'''input_ids''': [[1, 3_9867, 36, 1_9390, 486, 27, 3_5052, 8_1436, 18, 6_0685, 1225, 7, 3_5052, 8_1436, 18, 9367, 1_6899, 18, 1_5937, 53, 594, 773, 18, 1_6287, 3_0465, 36, 1_5937, 6, 4_1139, 38, 3_6979, 6_0763, 191, 6, 3_4132, 99, 6, 5_0538, 390, 4_3230, 6, 3_4132, 2779, 2_0850, 14, 699, 1072, 1194, 36, 382, 1_0901, 53, 7, 699, 1072, 2084, 36, 2_0422, 630, 53, 19, 105, 3049, 1896, 1053, 1_6899, 1506, 11, 3_7978, 4243, 7, 1237, 3_1869, 200, 1_6566, 654, 6, 3_5052, 8_1436, 7, 5_5630, 1_3593, 4, 2], [1, 26, 1_5011, 13, 667, 8, 1053, 18, 2_3611, 1237, 7_2356, 1_2820, 34, 10_4134, 1209, 35, 1_3313, 6627, 21, 202, 347, 7, 164, 2399, 11, 46, 4485, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 5, 1232, 2864, 1_5785, 1_4951, 105, 5, 8581, 1250, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], '''token_type_ids''': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], '''attention_mask''': [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}  # noqa: E501
								# fmt: on

								self.tokenizer_integration_test_util(
								    expected_encoding=lowerCamelCase,  model_name='''microsoft/deberta-v2-xlarge''',  revision='''ad6e42c1532ddf3a15c39246b63f5559d558b670''',  )









"""simple docstring"""






from __future__ import annotations






def      snake_case__   (		__lowerCamelCase				:    int							,		__lowerCamelCase				:    int	):
			"""simple docstring"""
			if b == 0:
						return (1, 0)
			((lowerCamelCase__)	,   (lowerCamelCase__))		:		Any			=extended_euclid(__lowerCamelCase							,		a % b	)
			lowerCamelCase__		:		Optional[Any]			=a // b
			return (y, x - k * y)






def      snake_case__   (		__lowerCamelCase				:    int							,		__lowerCamelCase				:    int							,		__lowerCamelCase				:    int							,		__lowerCamelCase				:    int	):
			"""simple docstring"""
			((lowerCamelCase__)	,   (lowerCamelCase__))		:		Any			=extended_euclid(__lowerCamelCase							,		__lowerCamelCase	)
			lowerCamelCase__		:		List[Any]			=na * na
			lowerCamelCase__		:		Union[str, Any]			=ra * x * na + ra * y * na
			return (n % m + m) % m






def      snake_case__   (		__lowerCamelCase				:    int							,		__lowerCamelCase				:    int	):
			"""simple docstring"""
			((lowerCamelCase__)	,   (lowerCamelCase__))		:		int			=extended_euclid(__lowerCamelCase							,		__lowerCamelCase	)
			if b < 0:
						lowerCamelCase__		:		Any			=(b % n + n) % n
			return b






def      snake_case__   (		__lowerCamelCase				:    int							,		__lowerCamelCase				:    int							,		__lowerCamelCase				:    int							,		__lowerCamelCase				:    int	):
			"""simple docstring"""
			lowerCamelCase__	,   lowerCamelCase__		:		Any			=invert_modulo(__lowerCamelCase							,		__lowerCamelCase	), invert_modulo(__lowerCamelCase							,		__lowerCamelCase	)
			lowerCamelCase__		:		Tuple			=na * na
			lowerCamelCase__		:		Optional[Any]			=ra * x * na + ra * y * na
			return (n % m + m) % m


if __name__ == "__main__":
		from doctest import testmod

		testmod(name="chinese_remainder_theorem", verbose=True)
		testmod(name="chinese_remainder_theorem2", verbose=True)
		testmod(name="invert_modulo", verbose=True)
		testmod(name="extended_euclid", verbose=True)




