





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


UpperCamelCase__      ={'configuration_deit': ['DEIT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'DeiTConfig', 'DeiTOnnxConfig']}

try:
       if not is_vision_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       UpperCamelCase__      =['DeiTFeatureExtractor']
       UpperCamelCase__      =['DeiTImageProcessor']

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       UpperCamelCase__      =[
           'DEIT_PRETRAINED_MODEL_ARCHIVE_LIST',
           'DeiTForImageClassification',
           'DeiTForImageClassificationWithTeacher',
           'DeiTForMaskedImageModeling',
           'DeiTModel',
           'DeiTPreTrainedModel',
       ]

try:
       if not is_tf_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       UpperCamelCase__      =[
           'TF_DEIT_PRETRAINED_MODEL_ARCHIVE_LIST',
           'TFDeiTForImageClassification',
           'TFDeiTForImageClassificationWithTeacher',
           'TFDeiTForMaskedImageModeling',
           'TFDeiTModel',
           'TFDeiTPreTrainedModel',
       ]


if TYPE_CHECKING:
       from .configuration_deit import DEIT_PRETRAINED_CONFIG_ARCHIVE_MAP, DeiTConfig, DeiTOnnxConfig

       try:
              if not is_vision_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .feature_extraction_deit import DeiTFeatureExtractor
              from .image_processing_deit import DeiTImageProcessor

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_deit import (
                  DEIT_PRETRAINED_MODEL_ARCHIVE_LIST,
                  DeiTForImageClassification,
                  DeiTForImageClassificationWithTeacher,
                  DeiTForMaskedImageModeling,
                  DeiTModel,
                  DeiTPreTrainedModel,
              )

       try:
              if not is_tf_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_tf_deit import (
                  TF_DEIT_PRETRAINED_MODEL_ARCHIVE_LIST,
                  TFDeiTForImageClassification,
                  TFDeiTForImageClassificationWithTeacher,
                  TFDeiTForMaskedImageModeling,
                  TFDeiTModel,
                  TFDeiTPreTrainedModel,
              )


else:
       import sys

       UpperCamelCase__      =_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)






def     lowerCamelCase__			(__lowerCamelCase,       __lowerCamelCase	):
     while a != 0:
          _SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE       :	Any						    =							b % a, a
     return b






def     lowerCamelCase__			(__lowerCamelCase,       __lowerCamelCase	):
     if gcd(__lowerCamelCase,       __lowerCamelCase	) != 1:
          _SCREAMING_SNAKE_CASE       :	int						    =							f"""mod inverse of {a!r} and {m!r} does not exist"""
          raise ValueError(__lowerCamelCase	)
     _SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE       :	List[str]						    =							1, 0, a
     _SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE       :	List[str]						    =							0, 1, m
     while va != 0:
          _SCREAMING_SNAKE_CASE       :	Union[str, Any]						    =							ua // va
          _SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE    ,			_SCREAMING_SNAKE_CASE       :	Union[str, Any]						    =							(ua - q * va), (ua - q * va), (ua - q * va), va, va, va
     return ua % m