
import math

from ...configuration_utils import PretrainedConfig
from ...utils import logging


__a  			=					logging.get_logger(__name__)

__a  			=					{
    'facebook/data2vec-base-960h': 'https://huggingface.co/facebook/data2vec-audio-base-960h/resolve/main/config.json',
    # See all Data2VecAudio models at https://huggingface.co/models?filter=data2vec-audio
}
class  lowercase__(				UpperCAmelCase							):



	"""simple docstring"""




	a			:Union[str, Any]         =	'data2vec-audio'
	def __init__(       self  :			Optional[int]       ,							SCREAMING_SNAKE_CASE_  :			Any=3_2       ,							SCREAMING_SNAKE_CASE_  :			Union[str, Any]=7_6_8       ,							SCREAMING_SNAKE_CASE_  :			int=1_2       ,							SCREAMING_SNAKE_CASE_  :			Dict=1_2       ,							SCREAMING_SNAKE_CASE_  :			Optional[Any]=3_0_7_2       ,							SCREAMING_SNAKE_CASE_  :			Dict="gelu"       ,							SCREAMING_SNAKE_CASE_  :			List[Any]=0.1       ,							SCREAMING_SNAKE_CASE_  :			Dict=0.1       ,							SCREAMING_SNAKE_CASE_  :			Tuple=0.1       ,							SCREAMING_SNAKE_CASE_  :			List[str]=0.0       ,							SCREAMING_SNAKE_CASE_  :			int=0.1       ,							SCREAMING_SNAKE_CASE_  :			List[Any]=0.1       ,							SCREAMING_SNAKE_CASE_  :			List[Any]=0.02       ,							SCREAMING_SNAKE_CASE_  :			Any=1e-5       ,							SCREAMING_SNAKE_CASE_  :			List[Any]="gelu"       ,							SCREAMING_SNAKE_CASE_  :			List[Any]=(5_1_2, 5_1_2, 5_1_2, 5_1_2, 5_1_2, 5_1_2, 5_1_2)       ,							SCREAMING_SNAKE_CASE_  :			Optional[int]=(5, 2, 2, 2, 2, 2, 2)       ,							SCREAMING_SNAKE_CASE_  :			str=(1_0, 3, 3, 3, 3, 2, 2)       ,							SCREAMING_SNAKE_CASE_  :			Any=False       ,							SCREAMING_SNAKE_CASE_  :			Tuple=1_6       ,							SCREAMING_SNAKE_CASE_  :			Union[str, Any]=1_9       ,							SCREAMING_SNAKE_CASE_  :			Tuple=5       ,							SCREAMING_SNAKE_CASE_  :			Dict=0.05       ,							SCREAMING_SNAKE_CASE_  :			List[Any]=1_0       ,							SCREAMING_SNAKE_CASE_  :			Union[str, Any]=2       ,							SCREAMING_SNAKE_CASE_  :			List[str]=0.0       ,							SCREAMING_SNAKE_CASE_  :			str=1_0       ,							SCREAMING_SNAKE_CASE_  :			Union[str, Any]=0       ,							SCREAMING_SNAKE_CASE_  :			int="sum"       ,							SCREAMING_SNAKE_CASE_  :			List[str]=False       ,							SCREAMING_SNAKE_CASE_  :			Union[str, Any]=False       ,							SCREAMING_SNAKE_CASE_  :			Optional[int]=2_5_6       ,							SCREAMING_SNAKE_CASE_  :			str=(5_1_2, 5_1_2, 5_1_2, 5_1_2, 1_5_0_0)       ,							SCREAMING_SNAKE_CASE_  :			Any=(5, 3, 3, 1, 1)       ,							SCREAMING_SNAKE_CASE_  :			Any=(1, 2, 3, 1, 1)       ,							SCREAMING_SNAKE_CASE_  :			Optional[Any]=5_1_2       ,							SCREAMING_SNAKE_CASE_  :			Tuple=0       ,							SCREAMING_SNAKE_CASE_  :			str=1       ,							SCREAMING_SNAKE_CASE_  :			Optional[int]=2       ,							SCREAMING_SNAKE_CASE_  :			Tuple=False       ,							SCREAMING_SNAKE_CASE_  :			Optional[Any]=3       ,							SCREAMING_SNAKE_CASE_  :			Union[str, Any]=2       ,							SCREAMING_SNAKE_CASE_  :			Any=3       ,							SCREAMING_SNAKE_CASE_  :			Any=None       ,							**SCREAMING_SNAKE_CASE_  :			Any       ,							)       ->     List[str]:
					super().__init__(**SCREAMING_SNAKE_CASE_       ,							pad_token_id=SCREAMING_SNAKE_CASE_       ,							bos_token_id=SCREAMING_SNAKE_CASE_       ,							eos_token_id=SCREAMING_SNAKE_CASE_       )
					lowercase_       =					hidden_size
					lowercase_       =					feat_extract_activation
					lowercase_       =					list(SCREAMING_SNAKE_CASE_       )
					lowercase_       =					list(SCREAMING_SNAKE_CASE_       )
					lowercase_       =					list(SCREAMING_SNAKE_CASE_       )
					lowercase_       =					conv_bias
					lowercase_       =					num_conv_pos_embeddings
					lowercase_       =					num_conv_pos_embedding_groups
					lowercase_       =					conv_pos_kernel_size
					lowercase_       =					len(self.conv_dim       )
					lowercase_       =					num_hidden_layers
					lowercase_       =					intermediate_size
					lowercase_       =					hidden_act
					lowercase_       =					num_attention_heads
					lowercase_       =					hidden_dropout
					lowercase_       =					attention_dropout
					lowercase_       =					activation_dropout
					lowercase_       =					feat_proj_dropout
					lowercase_       =					final_dropout
					lowercase_       =					layerdrop
					lowercase_       =					layer_norm_eps
					lowercase_       =					initializer_range
					lowercase_       =					vocab_size
					lowercase_       =					use_weighted_layer_sum

					if (
					    (len(self.conv_stride       ) != self.num_feat_extract_layers)
					    or (len(self.conv_kernel       ) != self.num_feat_extract_layers)
					    or (len(self.conv_dim       ) != self.num_feat_extract_layers)
					):
									raise ValueError(
									    '''Configuration for convolutional layers is incorrect. It is required that `len(config.conv_dim)` =='''
									    ''' `len(config.conv_stride)` == `len(config.conv_kernel)`, but is `len(config.conv_dim) ='''
									    f''' {len(self.conv_dim       )}`, `len(config.conv_stride) = {len(self.conv_stride       )}`,'''
									    f''' `len(config.conv_kernel) = {len(self.conv_kernel       )}`.'''       )

					# fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
					lowercase_       =					mask_time_prob
					lowercase_       =					mask_time_length
					lowercase_       =					mask_time_min_masks
					lowercase_       =					mask_feature_prob
					lowercase_       =					mask_feature_length
					lowercase_       =					mask_feature_min_masks

					# ctc loss
					lowercase_       =					ctc_loss_reduction
					lowercase_       =					ctc_zero_infinity

					# adapter
					lowercase_       =					add_adapter
					lowercase_       =					adapter_kernel_size
					lowercase_       =					adapter_stride
					lowercase_       =					num_adapter_layers
					lowercase_       =					output_hidden_size or hidden_size

					# SequenceClassification-specific parameter. Feel free to ignore for other classes.
					lowercase_       =					classifier_proj_size

					# XVector-specific parameters. Feel free to ignore for other classes.
					lowercase_       =					list(SCREAMING_SNAKE_CASE_       )
					lowercase_       =					list(SCREAMING_SNAKE_CASE_       )
					lowercase_       =					list(SCREAMING_SNAKE_CASE_       )
					lowercase_       =					xvector_output_dim




	@property
	def 						_lowercase  (       self  :			Any       )       ->     Optional[int]:
					return math.prod(self.conv_stride       )












lowerCamelCase       :       Optional[Any]        =				'''ABCDEFGHIJKLMNOPQRSTUVWXYZ'''
def 					snake_case_						(   ):
							__lowercase					:							List[str]			=   input("""Enter message: """					)
							__lowercase					:							int			=   input("""Enter key [alphanumeric]: """					)
							__lowercase					:							Optional[Any]			=   input("""Encrypt/Decrypt [e/d]: """					)

							if mode.lower().startswith("""e"""					):
														__lowercase					:							Optional[int]			=   """encrypt"""
														__lowercase					:							Dict			=   encrypt_message(lowerCAmelCase_				,				lowerCAmelCase_					)
							elif mode.lower().startswith("""d"""					):
														__lowercase					:							Union[str, Any]			=   """decrypt"""
														__lowercase					:							Optional[int]			=   decrypt_message(lowerCAmelCase_				,				lowerCAmelCase_					)

							print(F"\n{mode.title()}ed message:"					)
							print(lowerCAmelCase_					)
def 					snake_case_						(   lowerCAmelCase_				:  str				,				lowerCAmelCase_				:  str					):
							return translate_message(lowerCAmelCase_				,				lowerCAmelCase_				,				"""encrypt"""					)
def 					snake_case_						(   lowerCAmelCase_				:  str				,				lowerCAmelCase_				:  str					):
							return translate_message(lowerCAmelCase_				,				lowerCAmelCase_				,				"""decrypt"""					)
def 					snake_case_						(   lowerCAmelCase_				:  str				,				lowerCAmelCase_				:  str				,				lowerCAmelCase_				:  str					):
							__lowercase					:							Union[str, Any]			=   []
							__lowercase					:							Tuple			=   0
							__lowercase					:							Dict			=   key.upper()

							for symbol in message:
														__lowercase					:							Optional[Any]			=   LETTERS.find(symbol.upper()					)
														if num != -1:
																					if mode == "encrypt":
																												num += LETTERS.find(key[key_index]					)
																					elif mode == "decrypt":
																												num -= LETTERS.find(key[key_index]					)

																					num %= len(lowerCAmelCase_					)

																					if symbol.isupper():
																												translated.append(LETTERS[num]					)
																					elif symbol.islower():
																												translated.append(LETTERS[num].lower()					)

																					key_index += 1
																					if key_index == len(lowerCAmelCase_					):
																												__lowercase					:							str			=   0
														else:
																					translated.append(lowerCAmelCase_					)
							return "".join(lowerCAmelCase_					)


if __name__ == "__main__":
	main()