



import time
import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_torch, torch_device

from ..test_modeling_common import ids_tensor


if is_torch_available():
     import torch

     from transformers.generation import (
         MaxLengthCriteria,
         MaxNewTokensCriteria,
         MaxTimeCriteria,
         StoppingCriteriaList,
         validate_stopping_criteria,
     )
@require_torch
class    __UpperCamelCase			(       unittest.TestCase				):

 """simple docstring"""



 def 						_UpperCAmelCase       (	self		,				SCREAMING_SNAKE_CASE      ) ->			Dict:
  a__												= 3
  a__												= 2_5_0

  a__												= ids_tensor((batch_size, length)		,				snake_case_      )
  a__												= torch.ones((batch_size, length)		,				device=snake_case_		,				dtype=torch.float      ) / length
  return input_ids, scores

 def 						_UpperCAmelCase       (	self      ) ->			Any:
  a__												= self._get_tensors(5      )

  a__												= StoppingCriteriaList(
      [
          MaxLengthCriteria(max_length=1_0      ),
          MaxTimeCriteria(max_time=0.1      ),
      ]      )

  self.assertFalse(criteria(snake_case_		,				snake_case_      )      )

  a__												= self._get_tensors(9      )
  self.assertFalse(criteria(snake_case_		,				snake_case_      )      )

  a__												= self._get_tensors(1_0      )
  self.assertTrue(criteria(snake_case_		,				snake_case_      )      )

 def 						_UpperCAmelCase       (	self      ) ->			int:
  a__												= MaxLengthCriteria(max_length=1_0      )

  a__												= self._get_tensors(5      )
  self.assertFalse(criteria(snake_case_		,				snake_case_      )      )

  a__												= self._get_tensors(9      )
  self.assertFalse(criteria(snake_case_		,				snake_case_      )      )

  a__												= self._get_tensors(1_0      )
  self.assertTrue(criteria(snake_case_		,				snake_case_      )      )

 def 						_UpperCAmelCase       (	self      ) ->			Dict:
  a__												= MaxNewTokensCriteria(start_length=5		,				max_new_tokens=5      )

  a__												= self._get_tensors(5      )
  self.assertFalse(criteria(snake_case_		,				snake_case_      )      )

  a__												= self._get_tensors(9      )
  self.assertFalse(criteria(snake_case_		,				snake_case_      )      )

  a__												= self._get_tensors(1_0      )
  self.assertTrue(criteria(snake_case_		,				snake_case_      )      )

  a__												= StoppingCriteriaList([criteria]      )
  self.assertEqual(criteria_list.max_length		,				1_0      )

 def 						_UpperCAmelCase       (	self      ) ->			Optional[int]:
  a__												= self._get_tensors(5      )

  a__												= MaxTimeCriteria(max_time=0.1      )
  self.assertFalse(criteria(snake_case_		,				snake_case_      )      )

  a__												= MaxTimeCriteria(max_time=0.1		,				initial_timestamp=time.time() - 0.2      )
  self.assertTrue(criteria(snake_case_		,				snake_case_      )      )



 def 						_UpperCAmelCase       (	self      ) ->			Tuple:
  validate_stopping_criteria(StoppingCriteriaList([MaxLengthCriteria(1_0      )]      )		,				1_0      )

  with self.assertWarns(snake_case_      ):
   validate_stopping_criteria(StoppingCriteriaList([MaxLengthCriteria(1_0      )]      )		,				1_1      )

  a__												= validate_stopping_criteria(StoppingCriteriaList()		,				1_1      )

  self.assertEqual(len(snake_case_      )		,				1      )










'''simple docstring'''





import sys

__a  			=						(
    "73167176531330624919225119674426574742355349194934"
    "96983520312774506326239578318016984801869478851843"
    "85861560789112949495459501737958331952853208805511"
    "12540698747158523863050715693290963295227443043557"
    "66896648950445244523161731856403098711121722383113"
    "62229893423380308135336276614282806444486645238749"
    "30358907296290491560440772390713810515859307960866"
    "70172427121883998797908792274921901699720888093776"
    "65727333001053367881220235421809751254540594752243"
    "52584907711670556013604839586446706324415722155397"
    "53697817977846174064955149290862569321978468622482"
    "83972241375657056057490261407972968652414535100474"
    "82166370484403199890008895243450658541227588666881"
    "16427171479924442928230863465674813919123162824586"
    "17866458359124566529476545682848912883142607690042"
    "24219022671055626321111109370544217506941658960408"
    "07198403850962455444362981230987879927244284909188"
    "84580156166097919133875499200524063689912560717606"
    "05886116467109405077541002256983155200055935729725"
    "71636269561882670428252483600823257530420752963450"
)





def 		__snake_case(							_lowerCAmelCase = N						)						->					int:
      snake_case__    :       Dict       		= -sys.maxsize - 1
      for i in range(len(_lowerCAmelCase						) - 12						):
            snake_case__    :       Any       		= 1
            for j in range(13						):
                  product *= int(n[i + j]						)
            if product > largest_product:
                  snake_case__    :       List[str]       		= product
      return largest_product


if __name__ == "__main__":
       print(F"{solution() = }")
