code: def _asvi_surrogate_rule(condition, pass_sample_shape=False):
      """Registers a decorated function as a surrogate rule."""
  
      def wrap(f):
          global _ASVI_DEFAULT_SURROGATE_RULES_MUTABLE
          if pass_sample_shape:
              _ASVI_DEFAULT_SURROGATE_RULES_MUTABLE.append(
                  (condition, f)
              )
          else:
              _ASVI_DEFAULT_SURROGATE_RULES_MUTABLE.append(
                  (
                      condition,
                      lambda *a, sample_shape=None, **kw: f(*a, **kw),
                  )
              )  # pylint: disable=unnecessary-lambda
          return f
  
      return wrap
  
imports: import collections
  import copy
  import functools
  import inspect
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import restructure
  from tensorflow_probability.python.bijectors import scale
  from tensorflow_probability.python.bijectors import shift
  from tensorflow_probability.python.bijectors import sigmoid
  from tensorflow_probability.python.distributions import beta
  from tensorflow_probability.python.distributions import chi2
  from tensorflow_probability.python.distributions import exponential
  from tensorflow_probability.python.distributions import gamma
  from tensorflow_probability.python.distributions import half_normal
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import joint_distribution_auto_batched
  from tensorflow_probability.python.distributions import joint_distribution_coroutine
  from tensorflow_probability.python.distributions import markov_chain
  from tensorflow_probability.python.distributions import sample
  from tensorflow_probability.python.distributions import transformed_distribution
  from tensorflow_probability.python.distributions import truncated_normal
  from tensorflow_probability.python.distributions import uniform
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import trainable_state_util
label_desc: Use image node_id 3 for calling a global function with example usage: _asvi_surrogate_rule(condition, pass_sample_shape) and returns: wrap, f