/**
 * This class file was automatically generated by jASN1 v1.8.0 (http://www.openmuc.org)
 */

package org.onosproject.xran.codecs.api;

import java.io.IOException;
import java.io.EOFException;
import java.io.InputStream;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.io.Serializable;
import org.onosproject.xran.codecs.ber.*;
import org.onosproject.xran.codecs.ber.types.*;
import org.onosproject.xran.codecs.ber.types.string.*;


public class AdmEstResponse extends BerEnum {

	private static final long serialVersionUID = 1L;

	public AdmEstResponse() {
	}

	public AdmEstResponse(byte[] code) {
		super(code);
	}

	public AdmEstResponse(BigInteger value) {
		super(value);
	}

	public AdmEstResponse(long value) {
		super(value);
	}

}
