code: def base_distribution_unconstrained_params(
      draw,
      dist_name,
      batch_shape=None,
      event_dim=None,
      enable_vars=False,
      param_strategy_fn=None,
      params=None,
  ):
      """Strategy for drawing unconstrained parameters of a base Distribution.
  
      This does not draw parameters for compound distributions like `Independent`,
      `MixtureSameFamily`, or `TransformedDistribution`; only base Distributions
      that do not accept other Distributions as arguments.
  
      Args:
        draw: Hypothesis strategy sampler supplied by `@hps.composite`.
        dist_name: Optional Python `str`.  If given, the produced distributions
          will all have this type.
        batch_shape: An optional `TensorShape`.  The batch shape of the resulting
          Distribution.  Hypothesis will pick a batch shape if omitted.
        event_dim: Optional Python int giving the size of each of the
          distribution's parameters' event dimensions.  This is shared across all
          parameters, permitting square event matrices, compatible location and
          scale Tensors, etc. If omitted, Hypothesis will choose one.
        enable_vars: TODO(b/181859346): Make this `True` all the time and put
          variable initialization in slicing_test.  If `False`, the returned
          parameters are all `tf.Tensor`s and not {`tf.Variable`,
          `tfp.util.DeferredTensor` `tfp.util.TransformedVariable`}
        param_strategy_fn: Optional callable with signature
          `strategy = param_strategy_fn(shape, dtype, constraint_fn)`. If provided,
          overrides the default strategy for generating float-valued parameters.
          Default value: `None`.
        params: An optional set of Distribution parameters. If params are not
          provided, Hypothesis will choose a set of parameters.
  
      Returns:
        dists: A strategy for drawing Distribution parameters with the specified
        `batch_shape` (or an arbitrary one if omitted).
      """
      if params is not None:
          assert batch_shape is not None, (
              "Need to pass in valid `batch_shape` when"
              " passing in `params`."
          )
          return params, batch_shape
      if batch_shape is None:
          batch_shape = draw(tfp_hps.shapes())
  
      # Draw raw parameters
      if dist_name not in INSTANTIABLE_BASE_DISTS:
          raise ValueError(
              "Unknown Distribution name {}".format(dist_name)
          )
      params_event_ndims = INSTANTIABLE_BASE_DISTS[
          dist_name
      ].params_event_ndims
  
      params_kwargs = draw(
          tfp_hps.broadcasting_params(
              batch_shape,
              params_event_ndims,
              event_dim=event_dim,
              enable_vars=enable_vars,
              constraint_fn_for=lambda param: constraint_for(
                  dist_name, param
              ),
              mutex_params=MUTEX_PARAMS,
              param_strategy_fn=param_strategy_fn,
          )
      )
      hp.note(
          "Forming dist {} with raw parameters {}".format(
              dist_name, params_kwargs
          )
      )
  
      return params_kwargs, batch_shape
  
imports: import collections
  import functools
  import inspect
  from absl import logging
  import hypothesis
  from hypothesis import strategies
  import numpy
  import six
  import tensorflow.compat.v2
  from tensorflow_probability.python import distributions
  from tensorflow_probability.python import util
  from tensorflow_probability.python.bijectors import ascending
  from tensorflow_probability.python.bijectors import hypothesis_testlib
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.experimental import distributions
  from tensorflow_probability.python.internal import hypothesis_testlib
  from tensorflow_probability.python.internal import tensorshape_util
label_desc: Use image node_id 18 for calling a global function with example usage: base_distribution_unconstrained_params(draw, dist_name, batch_shape, event_dim, enable_vars, param_strategy_fn, params) and returns: params_kwargs,  batch_shape, params,  batch_shape