'''simple docstring'''

import math







class     _lowercase					:


 '''simple docstring'''






 def __init__(				self       :     str				,	SCREAMING_SNAKE_CASE__       :     Optional[Any]							)  ->   Dict:
  __lowerCAmelCase    							=						len(SCREAMING_SNAKE_CASE__							)
  __lowerCAmelCase    							=						[0] * (
      4 * self.N
  )  # approximate the overall size of segment tree with array N
  self.build(1				,	0				,	self.N - 1							)
 def a (				self       :     List[Any]				,	SCREAMING_SNAKE_CASE__       :     Any							)  ->   int:
  return idx * 2
 def a (				self       :     Tuple				,	SCREAMING_SNAKE_CASE__       :     str							)  ->   Optional[Any]:
  return idx * 2 + 1
 def a (				self       :     Tuple				,	SCREAMING_SNAKE_CASE__       :     int				,	SCREAMING_SNAKE_CASE__       :     int				,	SCREAMING_SNAKE_CASE__       :     int							)  ->   Optional[int]:  # noqa: E741
  if l == r:
   __lowerCAmelCase    							=						A[l]
  else:
   __lowerCAmelCase    							=						(l + r) // 2
   self.build(self.left(SCREAMING_SNAKE_CASE__							)				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__							)
   self.build(self.right(SCREAMING_SNAKE_CASE__							)				,	mid + 1				,	SCREAMING_SNAKE_CASE__							)
   __lowerCAmelCase    							=						max(self.st[self.left(SCREAMING_SNAKE_CASE__							)]				,	self.st[self.right(SCREAMING_SNAKE_CASE__							)]							)
 def a (				self       :     Tuple				,	SCREAMING_SNAKE_CASE__       :     Optional[int]				,	SCREAMING_SNAKE_CASE__       :     int				,	SCREAMING_SNAKE_CASE__       :     Tuple							)  ->   Union[str, Any]:
  return self.update_recursive(1				,	0				,	self.N - 1				,	a - 1				,	b - 1				,	SCREAMING_SNAKE_CASE__							)
 def a (				self       :     Dict				,	SCREAMING_SNAKE_CASE__       :     Dict				,	SCREAMING_SNAKE_CASE__       :     Union[str, Any]				,	SCREAMING_SNAKE_CASE__       :     Optional[Any]				,	SCREAMING_SNAKE_CASE__       :     Any				,	SCREAMING_SNAKE_CASE__       :     List[str]				,	SCREAMING_SNAKE_CASE__       :     Union[str, Any]							)  ->   List[str]:  # noqa: E741
  if r < a or l > b:
   return True
  if l == r:
   __lowerCAmelCase    							=						val
   return True
  __lowerCAmelCase    							=						(l + r) // 2
  self.update_recursive(self.left(SCREAMING_SNAKE_CASE__							)				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__							)
  self.update_recursive(self.right(SCREAMING_SNAKE_CASE__							)				,	mid + 1				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__							)
  __lowerCAmelCase    							=						max(self.st[self.left(SCREAMING_SNAKE_CASE__							)]				,	self.st[self.right(SCREAMING_SNAKE_CASE__							)]							)
  return True
 def a (				self       :     Optional[int]				,	SCREAMING_SNAKE_CASE__       :     Optional[Any]				,	SCREAMING_SNAKE_CASE__       :     Dict							)  ->   Optional[int]:
  return self.query_recursive(1				,	0				,	self.N - 1				,	a - 1				,	b - 1							)
 def a (				self       :     Union[str, Any]				,	SCREAMING_SNAKE_CASE__       :     List[Any]				,	SCREAMING_SNAKE_CASE__       :     Tuple				,	SCREAMING_SNAKE_CASE__       :     Optional[Any]				,	SCREAMING_SNAKE_CASE__       :     Optional[Any]				,	SCREAMING_SNAKE_CASE__       :     Optional[int]							)  ->   List[Any]:  # noqa: E741
  if r < a or l > b:
   return -math.inf
  if l >= a and r <= b:
   return self.st[idx]
  __lowerCAmelCase    							=						(l + r) // 2
  __lowerCAmelCase    							=						self.query_recursive(self.left(SCREAMING_SNAKE_CASE__							)				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__							)
  __lowerCAmelCase    							=						self.query_recursive(self.right(SCREAMING_SNAKE_CASE__							)				,	mid + 1				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__							)
  return max(SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__							)





 def a (				self       :     Tuple							)  ->   Union[str, Any]:
  __lowerCAmelCase    							=						[]
  for i in range(1				,	N + 1							):
   show_list += [self.query(SCREAMING_SNAKE_CASE__				,	SCREAMING_SNAKE_CASE__							)]
  print(SCREAMING_SNAKE_CASE__							)


if __name__ == "__main__":
 _A      :				Optional[Any] 				=    [1, 2, -4, 7, 3, -5, 6, 11, -20, 9, 14, 15, 5, 2, -8]
 _A      :				Any 				=    15
 _A      :				Any 				=    SegmentTree(A)
 print(segt.query(4, 6))
 print(segt.query(7, 11))
 print(segt.query(7, 12))
 segt.update(1, 3, 111)
 print(segt.query(1, 15))
 segt.update(7, 8, 235)
 segt.show_data()







'''simple docstring'''

import gc
import tempfile
import unittest

import numpy as np
import torch

from diffusers import VersatileDiffusionDualGuidedPipeline
from diffusers.utils.testing_utils import load_image, nightly, require_torch_gpu, torch_device


_A      :				Any 				=    False







@nightly
@require_torch_gpu
class     _lowercase					(    unittest.TestCase      ):


 '''simple docstring'''






 def a (				self       :     Tuple							)  ->   Dict:
  # clean up the VRAM after each test
  super().tearDown()
  gc.collect()
  torch.cuda.empty_cache()
 def a (				self       :     Optional[int]							)  ->   Optional[Any]:
  __lowerCAmelCase    							=						VersatileDiffusionDualGuidedPipeline.from_pretrained("""shi-labs/versatile-diffusion"""							)
  # remove text_unet
  pipe.remove_unused_weights()
  pipe.to(SCREAMING_SNAKE_CASE__							)
  pipe.set_progress_bar_config(disable=SCREAMING_SNAKE_CASE__							)

  __lowerCAmelCase    							=						load_image(
      """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/versatile_diffusion/benz.jpg"""							)

  __lowerCAmelCase    							=						torch.manual_seed(0							)
  __lowerCAmelCase    							=						pipe(
      prompt="""first prompt"""				,	image=SCREAMING_SNAKE_CASE__				,	text_to_image_strength=0.7_5				,	generator=SCREAMING_SNAKE_CASE__				,	guidance_scale=7.5				,	num_inference_steps=2				,	output_type="""numpy"""				,	).images

  with tempfile.TemporaryDirectory() as tmpdirname:
   pipe.save_pretrained(SCREAMING_SNAKE_CASE__							)
   __lowerCAmelCase    							=						VersatileDiffusionDualGuidedPipeline.from_pretrained(SCREAMING_SNAKE_CASE__							)

  pipe.to(SCREAMING_SNAKE_CASE__							)
  pipe.set_progress_bar_config(disable=SCREAMING_SNAKE_CASE__							)

  __lowerCAmelCase    							=						generator.manual_seed(0							)
  __lowerCAmelCase    							=						pipe(
      prompt="""first prompt"""				,	image=SCREAMING_SNAKE_CASE__				,	text_to_image_strength=0.7_5				,	generator=SCREAMING_SNAKE_CASE__				,	guidance_scale=7.5				,	num_inference_steps=2				,	output_type="""numpy"""				,	).images

  assert np.abs(image - new_image							).sum() < 1e-5, "Models don't have the same forward pass"





 def a (				self       :     str							)  ->   Tuple:
  __lowerCAmelCase    							=						VersatileDiffusionDualGuidedPipeline.from_pretrained("""shi-labs/versatile-diffusion"""							)
  pipe.remove_unused_weights()
  pipe.to(SCREAMING_SNAKE_CASE__							)
  pipe.set_progress_bar_config(disable=SCREAMING_SNAKE_CASE__							)

  __lowerCAmelCase    							=						"""cyberpunk 2077"""
  __lowerCAmelCase    							=						load_image(
      """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/versatile_diffusion/benz.jpg"""							)
  __lowerCAmelCase    							=						torch.manual_seed(0							)
  __lowerCAmelCase    							=						pipe(
      prompt=SCREAMING_SNAKE_CASE__				,	image=SCREAMING_SNAKE_CASE__				,	text_to_image_strength=0.7_5				,	generator=SCREAMING_SNAKE_CASE__				,	guidance_scale=7.5				,	num_inference_steps=50				,	output_type="""numpy"""				,	).images

  __lowerCAmelCase    							=						image[0, 2_53:2_56, 2_53:2_56, -1]

  assert image.shape == (1, 5_12, 5_12, 3)
  __lowerCAmelCase    							=						np.array([0.0_7_8_7, 0.0_8_4_9, 0.0_8_2_6, 0.0_8_1_2, 0.0_8_0_7, 0.0_7_9_5, 0.0_8_1_8, 0.0_7_9_8, 0.0_7_7_9]							)

  assert np.abs(image_slice.flatten() - expected_slice							).max() < 1e-2






