code: def resolve_variables(self, provided_variables):
          
          # Pass 1 to set resolved_variables to provided variables
          self.resolved_variables = {}
          variable_dict = dict((var.name, var) for var in provided_variables)
          for var_name, _var_def in variable_dict.items():
              value = resolve_variable(
                  variable_dict.get(var_name),
                  self.name
              )
              if value is not None:
                  self.resolved_variables[var_name] = value
  
          # Pass 2 to render the blueprint and set resolved_variables according
          # to defined variables
          defined_variables = self.get_parameter_definitions()
          self.resolved_variables = {}
          variable_dict = dict((var.name, var) for var in provided_variables)
          for var_name, _var_def in defined_variables.items():
              value = resolve_variable(
                  variable_dict.get(var_name),
                  self.name
              )
              if value is not None:
                  self.resolved_variables[var_name] = value
docs: Resolve the values of the blueprint variables.
  
          This will resolve the values of the template parameters with values
          from the env file, the config, and any lookups resolved. The
          resolution is run twice, in case the blueprint is jinja2 templated
          and requires provided variables to render.
  
          Args:
              provided_variables (list of :class:`stacker.variables.Variable`):
                  list of provided variables