code: def crossproduct(d):
      """
      Create an SFrame containing the crossproduct of all provided options.
  
      Parameters
      ----------
      d : dict
          Each key is the name of an option, and each value is a list
          of the possible values for that option.
  
      Returns
      -------
      out : SFrame
          There will be a column for each key in the provided dictionary,
          and a row for each unique combination of all values.
  
      Example
      -------
      settings = {'argument_1':[0, 1],
                  'argument_2':['a', 'b', 'c']}
      print(tc.util.crossproduct(settings))
      +------------+------------+
      | argument_2 | argument_1 |
      +------------+------------+
      |     a      |     0      |
      |     a      |     1      |
      |     b      |     0      |
      |     b      |     1      |
      |     c      |     0      |
      |     c      |     1      |
      +------------+------------+
      [6 rows x 2 columns]
      """
  
      from .. import SArray
  
      d = [
          list(zip(list(d.keys()), x))
          for x in _itertools.product(*list(d.values()))
      ]
      sa = [{k: v for (k, v) in x} for x in d]
      return SArray(sa).unpack(column_name_prefix="")
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import os
  import urllib
  import re
  import itertools
  import uuid
  import datetime
  import sys
  from ._sframe_generation import generate_random_sframe
  from ._sframe_generation import generate_random_regression_sframe
  from ._sframe_generation import generate_random_classification_sframe
  from ._type_checks import _raise_error_if_not_of_type
  from ._type_checks import _is_non_string_iterable
  from ._progress_table_printer import ProgressTablePrinter
label_desc: Use image node_id 8 for calling a global function with example usage: crossproduct(d) and returns: SArray