code: def set_nest_at_indices(
      nest: Union[List, Tuple, Dict, ivy.Array, ivy.NativeArray],
      indices: Union[List[int], Tuple[int], Iterable[int]],
      values: Union[List[int], Tuple[int], Iterable[int]],
      /,
      shallow: bool = True,
  ) -> Union[
      ivy.Array, ivy.NativeArray, ivy.Container, Dict, List, Tuple
  ]:
      """Set the value of a nested item at specified indices with specified
      values.
  
      Parameters
      ----------
      nest
          The nested object to update.
      indices
          A tuple of tuples of indices for the indices at which to update.
      values
          The new values for updating.
      shallow
          Whether to inplace update the input nest or not
          Only works if nest is a mutable type. Default is ``True``.
  
      Returns
      -------
      ret
          nest with updated values at the given indices.
  
      Examples
      --------
      With :code:`List` inputs:
  
      >>> nest = [[1, 2, 3, 4, 5, 6], ['a', 'b', 'c', 'd', 'e', 'f']]
      >>> indices = [[0, 4], [1, 3]]
      >>> values = [111, 'x']
      >>> ivy.set_nest_at_indices(nest, indices, values)
      >>> print(nest)
      [[1, 2, 3, 4, 111, 6], ['a', 'b', 'c', 'x', 'e', 'f']]
  
      With :code:`Tuple` inputs:
  
      >>> nest = [['abc', 'xyz', 'pqr'],[1, 4, 'a', 'b']]
      >>> indices = ((0, 1),(1, 2))
      >>> values = ('ivy', 'x')
      >>> ivy.set_nest_at_indices(nest, indices, values)
      >>> print(nest)
      (['abc', 'ivy', 'pqr'], [1, 4, 'x', 'b'])
  
      With :code:`Dict` input:
  
      >>> nest = {'a': [1., 2., 3.], 'b': [4., 5., 6.], 'c': [0.]}
      >>> indices = (('a', 1), ('b', 2), ('c', 0))
      >>> values = (11., 22., 33.)
      >>> ivy.set_nest_at_indices(nest, indices, values)
      >>> print(nest)
      {'a': [1.0, 11.0, 3.0], 'b': [4.0, 5.0, 22.0], 'c': [33.0]}
  
      With :class:`ivy.Array` inputs:
  
      >>> nest = ivy.array([[1., 2., 3.],[4., 5., 6.]])
      >>> indices = ((0, 1),(1, 2))
      >>> values = (11., 22.)
      >>> ivy.set_nest_at_indices(nest, indices, values)
      >>> print(nest)
      ivy.array([[1., 11., 3.], [4., 5., 22.]])
      """
      is_tuple = isinstance(nest, tuple)
      nest_type = type(nest) if is_tuple else lambda x: x
      if shallow:
          result = nest_type(nest)
      else:
          result = copy_nest(nest, include_derived=True)
      result = list(result) if is_tuple else result
      if not isinstance(values, (list, tuple)):
          values = [values] * len(indices)
      for index, value in zip(indices, values):
          result = set_nest_at_index(
              nest, index, value, _result=result, shallow=shallow
          )
      try:
          result = nest_type(result)
      except TypeError:
          result = nest_type(*result)
      return result
  
imports: from builtins import map
  from typing import Callable, Any, Union, List, Tuple, Optional, Dict, Iterable, Sequence
  from collections import UserDict, OrderedDict
  import ivy
  from ivy.utils.exceptions import handle_exceptions
label_desc: Use image node_id 8 for calling a global function with example usage: set_nest_at_indices(shallow) and returns: result