<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def ResolveClientFlowURN(self, client_id, token=None):
 """Resolve a URN of a flow with this id belonging to a given client. Note that this may need a roundtrip to the datastore. Resolving algorithm is the following: 1. If the flow id doesn't contain slashes (flow is not nested), we just append it to the <client id>/flows. 2. If the flow id has slashes (flow is nested), we check if the root flow pointed to by <client id>/flows/<flow id> is a symlink. 2a. If it's a symlink, we append the rest of the flow id to the symlink target. 2b. If it's not a symlink, we just append the whole id to <client id>/flows (meaning we do the same as in 1). Args: client_id: Id of a client where this flow is supposed to be found on. token: Credentials token. Returns: RDFURN pointing to a flow identified by this flow id and client id. Raises: ValueError: if this flow id is not initialized. """

    if not self._value:
      raise ValueError("Can't call ResolveClientFlowURN on an empty client id.")

    components = self.Split()
    if len(components) == 1:
      return self._FlowIdToUrn(self._value, client_id)
    else:
      root_urn = self._FlowIdToUrn(components[0], client_id)
      try:
        flow_symlink = aff4.FACTORY.Open(
            root_urn,
            aff4_type=aff4.AFF4Symlink,
            follow_symlinks=False,
            token=token)

        return flow_symlink.Get(flow_symlink.Schema.SYMLINK_TARGET).Add(
            "/".join(components[1:]))
      except aff4.InstantiationError:
        return self._FlowIdToUrn(self._value, client_id)