code: func decodeParams(arr string) map[string]string {
  
  	p := make(map[string]string)
  	var isQuoted = false
  	var isParam = true
  	var curParam string
  	var curVal string
  	for _, c := range arr {
  		switch {
  		// if string is quoted, wait till next quote
  		// and capture content
  		case c == '"':
  			if isQuoted == false {
  				isQuoted = true
  			} else {
  				p[curParam] = curVal
  				isQuoted = false
  			}
  		case c == '=' && isQuoted == false:
  			isParam = false
  		case c == ';' && isQuoted == false:
  			isParam = true
  			p[curParam] = curVal
  			curParam = ""
  			curVal = ""
  		default:
  			if isParam {
  				curParam = curParam + string(c)
  			} else {
  				curVal = curVal + string(c)
  			}
  		}
  	}
  	p[curParam] = curVal
  	return p
  
  }
docs: // decode extra params linked in key val in the form
  // key;param1=val1:val