public static Map<String,String> parseEntityDescriptor(String string) throws DetectRightException {
		if (string == null) return new LinkedHashMap<String,String>();
		LinkedHashMap<String,String> retArray = new LinkedHashMap<String,String>();
		ArrayList<String> tmpPad=Functions.explode(":",string);
		while (tmpPad.size() < 8) {
			tmpPad.add("");
		}
		retArray.put("entitytype", Functions.unescapeDescriptor(tmpPad.get(0)));
		retArray.put("category", Functions.unescapeDescriptor(tmpPad.get(1)));
		if (!retArray.get("entitytype").toString().equals("UserAgent")) {
			retArray.put("description", Functions.unescapeDescriptor(tmpPad.get(2)));
			retArray.put("subclass", Functions.unescapeDescriptor(tmpPad.get(3)));
			retArray.put("majorrevision", Functions.unescapeDescriptor(tmpPad.get(4)));
			retArray.put("minorrevision", Functions.unescapeDescriptor(tmpPad.get(5)));
			retArray.put("connection", Functions.unescapeDescriptor(tmpPad.get(6)));
			retArray.put("build", Functions.unescapeDescriptor(tmpPad.get(7)));
		} else {
			int size = tmpPad.size() - 1;
			List<?> descArray = tmpPad.subList(2,size);
			String description = Functions.implode(":",descArray);
			while (description.endsWith(":")) {
				description = Functions.substr(description,0,-1);
			}
			retArray.put("description", Functions.unescapeDescriptor(description));
			retArray.put("subclass", "");
			retArray.put("majorrevision", "");
			retArray.put("minorrevision", "");
			retArray.put("connection", "");
		}
		return retArray;
	}