private static Configuration readConfiguration(IntReader reader)
			throws IOException {
		int size = reader.readInt();
		if (size != 0x1C) {
			throw new IOException("Bad content configuration size (" + size
					+ ").");
		}
		int[] elements = reader.readIntArray(size / 4 - 1);
		Configuration configuration = new Configuration();
		for (int i = 0; i != elements.length; ++i) {
			int element = elements[i];
			switch (i) {
			case 1: {
				if (element == 0) {
					break;
				}
				StringBuilder s2 = new StringBuilder(2);
				if ((element & 0xFFFF) != 0) {
					s2.append((char) ((element) & 0xFF));
					s2.append((char) ((element >> 8) & 0xFF));
					configuration.language = s2.toString();
				}
				if ((element >>> 16) != 0) {
					s2.setLength(0);
					s2.append((char) ((element >> 16) & 0xFF));
					s2.append((char) ((element >> 24) & 0xFF));
					configuration.country = s2.toString();
				}
				break;
			}
			case 2: {
				configuration.orientation = (element & 0xFF);
				configuration.touchscreen = ((element >> 8) & 0xFF);
				break;
			}
			case 3: {
				configuration.keyboard = (element & 0xFF);
				configuration.navigation = ((element >> 8) & 0xFF);
				configuration.keyboardHidden = ((element >> 16) & 0xFF);
				break;
			}
			case 4: {
				configuration.screenWidth = (element & 0xFFFF);
				configuration.screenHeight = (element >>> 16);
				break;
			}
			}
		}
		return configuration;
	}