code: def process_firstpass(
      self,
      pp: scripts_postprocessing.PostprocessedImage,
      upscale_mode=1,
      upscale_by=2.0,
      upscale_to_width=None,
      upscale_to_height=None,
      upscale_crop=False,
      upscaler_1_name=None,
      upscaler_2_name=None,
      upscaler_2_visibility=0.0,
  ):
      if upscale_mode == 1:
          pp.shared.target_width = upscale_to_width
          pp.shared.target_height = upscale_to_height
      else:
          pp.shared.target_width = int(pp.image.width * upscale_by)
          pp.shared.target_height = int(pp.image.height * upscale_by)
  
file_path: stable-diffusion-webui/scripts/postprocessing_upscale.py
imports: from PIL import Image
  import numpy
  from modules import scripts_postprocessing, shared
  import gradio
  from modules.ui_components import FormRow, ToolButton
  from modules.ui import switch_values_symbol
label_desc: Use image node_id 3 for calling the ScriptPostprocessingUpscale obj's underlying member method code with example usage: obj.process_firstpass(pp, upscale_mode, upscale_by, upscale_to_width, upscale_to_height, upscale_crop, upscaler_1_name, upscaler_2_name, upscaler_2_visibility) without return types