code: def broadcast_shapes(*shapes: Tuple[int, ...]):
      if len(shapes) == 0:
          raise ValueError("shapes=[] must be non-empty")
      elif len(shapes) == 1:
          return shapes[0]
      result = _broadcast_shapes(shapes[0], shapes[1])
      for i in range(2, len(shapes)):
          result = _broadcast_shapes(result, shapes[i])
      return result
  
imports: from hypothesis import assume, strategies
  from typing import Tuple
  from functools import lru_cache
  import math
  import numpy
  import ivy
  from .None import array_helpers, number_helpers, dtype_helpers
  from ..pipeline_helper import WithBackendContext
  from ivy.functional.ivy.layers import _deconv_length
  from ..globals import mod_backend
label_desc: Use image node_id 5 for calling a global function with example usage: broadcast_shapes() and returns: result, shapes