code: def update_config(config, overwrite_config):
      """Recursively update dictionary config with overwrite_config in-place.
  
      See
      https://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying-depth
      for details.
  
      Args:
        config (dict): dictionary to update
        overwrite_config (dict): dictionary whose items will overwrite those in config
      """
  
      def _update_config(config, overwrite_config):
          """Necessary as recursive calls require a return value,
          but `update_config()` has no return value.
          """
          for key, value in overwrite_config.items():
              if not isinstance(config, collections.abc.Mapping):
                  # the config cannot be updated as it is no dict
                  # -> just overwrite it with the new value
                  config = {}
              if isinstance(value, collections.abc.Mapping):
                  sub_config = config.get(key, {})
                  config[key] = _update_config(sub_config, value)
              else:
                  config[key] = value
          return config
  
      _update_config(config, overwrite_config)
  
imports: import os
  import json
  import re
  import inspect
  import textwrap
  from itertools import chain
  import collections
  import multiprocessing
  import string
  import shlex
  import sys
  from urllib.parse import urljoin
  from snakemake.io import Namedlist, Wildcards
  from snakemake.common.configfile import _load_configfile
  from snakemake.logging import logger
  from snakemake.common import ON_WINDOWS
  from snakemake.exceptions import WorkflowError
  from snakemake.io import regex_from_filepattern
label_desc: Use image node_id 11 for calling a global function with example usage: update_config(config, overwrite_config) and returns: config