// Path: src/net/eiveo/utils/SmartByteArrayOutputStream.java
// public class SmartByteArrayOutputStream {
// 	private List<ByteArrayOutputStream> sections = new ArrayList<>();
// 	private ByteArrayOutputStream section;
// 	
// 	public SmartByteArrayOutputStream() {
// 		this.section = new ByteArrayOutputStream();
// 		this.sections.add(this.section);
// 	}
// 
// 	public void sectionStart() {
// 		this.section = new ByteArrayOutputStream();
// 		this.sections.add(this.section);
// 	}
// 	
// 	public byte[] sectionEnd() {
// 		byte[] result = this.section.toByteArray();
// 		sections.remove(sections.size() - 1);
// 		this.section = sections.get(sections.size() - 1);
// 		return result;
// 	}
// 
// 	public byte[] toByteArray() {
// 		return this.section.toByteArray();
// 	}
// 
// 	public void write(String string) {
// 		for (byte byteData : string.getBytes()) {
// 			this.section.write(byteData);
// 		}
// 	}
// 
// 	public void write(byte value) {
// 		this.section.write(value);
// 	}
// 
// 	public void write(byte[] value) {
// 		for (byte byteData : value) {
// 			this.section.write(byteData);
// 		}
// 	}
// 
// 	public void write(short value) {
// 		for (byte byteData : new byte[] {
// 	        (byte) value,
// 	        (byte)(value >> 8)
//         }) {
// 			this.section.write(byteData);
// 		}
// 	}
// 
// 	public void write(int value) {
// 		for (byte byteData : new byte[] {
// 	        (byte) value,
// 	        (byte)(value >> 8),
// 	        (byte)(value >> 16),
// 	        (byte)(value >> 24)
//         }) {
// 			this.section.write(byteData);
// 		}
// 	}
// }
// 
// Path: src/net/eiveo/utils/SmartByteBuffer.java
// public class SmartByteBuffer {
// 	private ByteBuffer byteBuffer;
// 
// 	public int capacity() {
// 		return this.byteBuffer.capacity();
// 	}
// 
// 	public byte get() {
// 		return this.byteBuffer.get();
// 	}
// 
// 	public void get(byte[] dst) {
// 		this.byteBuffer.get(dst);
// 	}
// 
// 	public int getInt() {
// 		return this.byteBuffer.getInt();
// 	}
// 
// 	public short getShort() {
// 		return this.byteBuffer.getShort();
// 	}
// 
// 	public String getString() {
// 		String string = "";
// 		
// 		while (true) {
// 			byte character = this.get();
// 			if ((character & 0xff) == 0) {
// 				break;
// 			} else {
// 				string += new String(new byte[] { character });
// 			}
// 		}
// 		
// 		return string;
// 	}
// 
// 	public String getString(int index, int length) {
// 		byte[] output = new byte[length];
// 		if (index > -1) {
// 			this.position(index);
// 		}
// 		this.byteBuffer.get(output);
// 		return new String(output);
// 	}
// 
// 	public void order(ByteOrder bo) {
// 		this.byteBuffer.order(bo);
// 	}
// 
// 	public int position() {
// 		return this.byteBuffer.position();
// 	}
// 	
// 	public void position(int newPosition) {
// 		this.byteBuffer.position(newPosition);
// 	}
// 
// 	public static SmartByteBuffer wrap(byte[] array) {
// 		SmartByteBuffer instance = new SmartByteBuffer();
// 		instance.byteBuffer = ByteBuffer.wrap(array);
// 		return instance;
// 	}
// }


import java.util.ArrayList;
import java.util.List;
import net.eiveo.utils.SmartByteArrayOutputStream;
import net.eiveo.utils.SmartByteBuffer;

package net.eiveo.original.sections.todo.not_converted_yet;



public class ZAX2 {
	private List<IZX2> IZX2 = new ArrayList<>();
	
	public static ZAX2 read(SmartByteBuffer data) throws Exception {
		ZAX2 instance = new ZAX2();
		
		int length = data.getInt();
		int lengthStart = data.position();
		
		while (length + lengthStart > data.position()) {
			String izx2 = data.getString(-1, 4);
			
			if (!izx2.equals("IZX2")) {
				throw new Exception("IZX2 mismatch.");
			}

			instance.IZX2.add(net.eiveo.original.sections.todo.not_converted_yet.IZX2.read(data));
		}

		if (lengthStart + length != data.position()) {
			throw new Exception("Length mismatch.");
		}
		
		return instance;
	}


// Path: src/net/eiveo/utils/SmartByteArrayOutputStream.java
// public class SmartByteArrayOutputStream {
// 	private List<ByteArrayOutputStream> sections = new ArrayList<>();
// 	private ByteArrayOutputStream section;
// 	
// 	public SmartByteArrayOutputStream() {
// 		this.section = new ByteArrayOutputStream();
// 		this.sections.add(this.section);
// 	}
// 
// 	public void sectionStart() {
// 		this.section = new ByteArrayOutputStream();
// 		this.sections.add(this.section);
// 	}
// 	
// 	public byte[] sectionEnd() {
// 		byte[] result = this.section.toByteArray();
// 		sections.remove(sections.size() - 1);
// 		this.section = sections.get(sections.size() - 1);
// 		return result;
// 	}
// 
// 	public byte[] toByteArray() {
// 		return this.section.toByteArray();
// 	}
// 
// 	public void write(String string) {
// 		for (byte byteData : string.getBytes()) {
// 			this.section.write(byteData);
// 		}
// 	}
// 
// 	public void write(byte value) {
// 		this.section.write(value);
// 	}
// 
// 	public void write(byte[] value) {
// 		for (byte byteData : value) {
// 			this.section.write(byteData);
// 		}
// 	}
// 
// 	public void write(short value) {
// 		for (byte byteData : new byte[] {
// 	        (byte) value,
// 	        (byte)(value >> 8)
//         }) {
// 			this.section.write(byteData);
// 		}
// 	}
// 
// 	public void write(int value) {
// 		for (byte byteData : new byte[] {
// 	        (byte) value,
// 	        (byte)(value >> 8),
// 	        (byte)(value >> 16),
// 	        (byte)(value >> 24)
//         }) {
// 			this.section.write(byteData);
// 		}
// 	}
// }
// 
// Path: src/net/eiveo/utils/SmartByteBuffer.java
// public class SmartByteBuffer {
// 	private ByteBuffer byteBuffer;
// 
// 	public int capacity() {
// 		return this.byteBuffer.capacity();
// 	}
// 
// 	public byte get() {
// 		return this.byteBuffer.get();
// 	}
// 
// 	public void get(byte[] dst) {
// 		this.byteBuffer.get(dst);
// 	}
// 
// 	public int getInt() {
// 		return this.byteBuffer.getInt();
// 	}
// 
// 	public short getShort() {
// 		return this.byteBuffer.getShort();
// 	}
// 
// 	public String getString() {
// 		String string = "";
// 		
// 		while (true) {
// 			byte character = this.get();
// 			if ((character & 0xff) == 0) {
// 				break;
// 			} else {
// 				string += new String(new byte[] { character });
// 			}
// 		}
// 		
// 		return string;
// 	}
// 
// 	public String getString(int index, int length) {
// 		byte[] output = new byte[length];
// 		if (index > -1) {
// 			this.position(index);
// 		}
// 		this.byteBuffer.get(output);
// 		return new String(output);
// 	}
// 
// 	public void order(ByteOrder bo) {
// 		this.byteBuffer.order(bo);
// 	}
// 
// 	public int position() {
// 		return this.byteBuffer.position();
// 	}
// 	
// 	public void position(int newPosition) {
// 		this.byteBuffer.position(newPosition);
// 	}
// 
// 	public static SmartByteBuffer wrap(byte[] array) {
// 		SmartByteBuffer instance = new SmartByteBuffer();
// 		instance.byteBuffer = ByteBuffer.wrap(array);
// 		return instance;
// 	}
// }


// Path: src/net/eiveo/original/sections/todo/not_converted_yet/ZAX2.java
import java.util.ArrayList;
import java.util.List;
import net.eiveo.utils.SmartByteArrayOutputStream;
import net.eiveo.utils.SmartByteBuffer;

package net.eiveo.original.sections.todo.not_converted_yet;



public class ZAX2 {
	private List<IZX2> IZX2 = new ArrayList<>();
	
	public static ZAX2 read(SmartByteBuffer data) throws Exception {
		ZAX2 instance = new ZAX2();
		
		int length = data.getInt();
		int lengthStart = data.position();
		
		while (length + lengthStart > data.position()) {
			String izx2 = data.getString(-1, 4);
			
			if (!izx2.equals("IZX2")) {
				throw new Exception("IZX2 mismatch.");
			}

			instance.IZX2.add(net.eiveo.original.sections.todo.not_converted_yet.IZX2.read(data));
		}

		if (lengthStart + length != data.position()) {
			throw new Exception("Length mismatch.");
		}
		
		return instance;
	}


	public void write(SmartByteArrayOutputStream outputStream) {
