from typing import TYPE_CHECKING

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


__lowercase											=      {
    '''configuration_wav2vec2''': ['''WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''Wav2Vec2Config'''],
    '''feature_extraction_wav2vec2''': ['''Wav2Vec2FeatureExtractor'''],
    '''processing_wav2vec2''': ['''Wav2Vec2Processor'''],
    '''tokenization_wav2vec2''': ['''Wav2Vec2CTCTokenizer''', '''Wav2Vec2Tokenizer'''],
}


try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __lowercase											=      [
        '''WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST''',
        '''Wav2Vec2ForAudioFrameClassification''',
        '''Wav2Vec2ForCTC''',
        '''Wav2Vec2ForMaskedLM''',
        '''Wav2Vec2ForPreTraining''',
        '''Wav2Vec2ForSequenceClassification''',
        '''Wav2Vec2ForXVector''',
        '''Wav2Vec2Model''',
        '''Wav2Vec2PreTrainedModel''',
    ]

try:
    if not is_tf_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __lowercase											=      [
        '''TF_WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST''',
        '''TFWav2Vec2ForCTC''',
        '''TFWav2Vec2Model''',
        '''TFWav2Vec2PreTrainedModel''',
        '''TFWav2Vec2ForSequenceClassification''',
    ]

try:
    if not is_flax_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __lowercase											=      [
        '''FlaxWav2Vec2ForCTC''',
        '''FlaxWav2Vec2ForPreTraining''',
        '''FlaxWav2Vec2Model''',
        '''FlaxWav2Vec2PreTrainedModel''',
    ]


if TYPE_CHECKING:
    from .configuration_wavaveca import WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP, WavaVecaConfig
    from .feature_extraction_wavaveca import WavaVecaFeatureExtractor
    from .processing_wavaveca import WavaVecaProcessor
    from .tokenization_wavaveca import WavaVecaCTCTokenizer, WavaVecaTokenizer

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_wavaveca import (
            WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST,
            WavaVecaForAudioFrameClassification,
            WavaVecaForCTC,
            WavaVecaForMaskedLM,
            WavaVecaForPreTraining,
            WavaVecaForSequenceClassification,
            WavaVecaForXVector,
            WavaVecaModel,
            WavaVecaPreTrainedModel,
        )

    try:
        if not is_tf_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_tf_wavaveca import (
            TF_WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST,
            TFWavaVecaForCTC,
            TFWavaVecaForSequenceClassification,
            TFWavaVecaModel,
            TFWavaVecaPreTrainedModel,
        )

    try:
        if not is_flax_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_tf_wavaveca import (
            FlaxWavaVecaForCTC,
            FlaxWavaVecaForPreTraining,
            FlaxWavaVecaModel,
            FlaxWavaVecaPreTrainedModel,
        )


else:
    import sys

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






import qiskit



def lowerCamelCase						(     SCREAMING_SNAKE_CASE						,    SCREAMING_SNAKE_CASE			):
    '''simple docstring'''







    __UpperCamelCase  :Dict    						=	qiskit.Aer.get_backend('''aer_simulator'''			)

    __UpperCamelCase  :Tuple    						=	qiskit.QuantumCircuit(4						,    2			)
    # encode inputs in qubits 0 and 1
    if bita == 1:
        qc_ha.x(0			)
    if bita == 1:
        qc_ha.x(1			)
    qc_ha.barrier()

    # use cnots to write XOR of the inputs on qubit2
    qc_ha.cx(0						,    2			)
    qc_ha.cx(1						,    2			)

    # use ccx / toffoli gate to write AND of the inputs on qubit3
    qc_ha.ccx(0						,    1						,    3			)
    qc_ha.barrier()

    # extract outputs
    qc_ha.measure(2						,    0			)  # extract XOR value
    qc_ha.measure(3						,    1			)  # extract AND value

    # Execute the circuit on the qasm simulator
    __UpperCamelCase  :Optional[Any]    						=	qiskit.execute(SCREAMING_SNAKE_CASE						,    SCREAMING_SNAKE_CASE						,    shots=1_000			)

    # Return the histogram data of the results of the experiment
    return job.result().get_counts(SCREAMING_SNAKE_CASE			)


if __name__ == "__main__":
    __lowercase											=      half_adder(1, 1)
    print(F'Half Adder Output Qubit Counts: {counts}')





