code: func (r *Request) FromValues(values Values, data []byte) error {
  	signatureBytes, err := hexutil.Decode(values.Get("signature"))
  	if err != nil {
  		r.Signature = nil
  	} else {
  		if len(signatureBytes) != signatureLength {
  			return NewError(ErrInvalidSignature, "Incorrect signature length")
  		}
  		r.Signature = new(Signature)
  		copy(r.Signature[:], signatureBytes)
  	}
  	err = r.Update.FromValues(values, data)
  	if err != nil {
  		return err
  	}
  	r.idAddr = r.Addr()
  	return err
  }
docs: // FromValues deserializes this instance from a string key-value store
  // useful to parse query strings