// Path: iextrading4j-hist-api/src/main/java/pl/zankowski/iextrading4j/hist/api/field/IEXPrice.java
// public class IEXPrice implements Comparable<IEXPrice>, Serializable {
// 
//     private static final int SCALE = 4;
// 
//     private final long number;
// 
//     public IEXPrice(final long number) {
//         this.number = number;
//     }
// 
//     public long getNumber() {
//         return number;
//     }
// 
//     public BigDecimal toBigDecimal() {
//         return BigDecimal.valueOf(number)
//                 .scaleByPowerOfTen(-SCALE);
//     }
// 
//     @Override
//     public int compareTo(final IEXPrice iexPrice) {
//         return compare(this.getNumber(), iexPrice.getNumber());
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         IEXPrice iexPrice = (IEXPrice) o;
//         return number == iexPrice.number;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hashCode(number);
//     }
// 
//     @Override
//     public String toString() {
//         return toBigDecimal()
//                 .toString();
//     }
// }
// 
// Path: iextrading4j-hist-api/src/main/java/pl/zankowski/iextrading4j/hist/api/message/IEXMessage.java
// public abstract class IEXMessage implements Serializable {
// 
//     private final IEXMessageType messageType;
// 
//     public IEXMessage(final IEXMessageType messageType) {
//         this.messageType = messageType;
//     }
// 
//     public IEXMessageType getMessageType() {
//         return messageType;
//     }
// 
//     @Override
//     public boolean equals(final Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         final IEXMessage that = (IEXMessage) o;
//         return messageType == that.messageType;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(messageType);
//     }
// 
//     @Override
//     public String toString() {
//         return "IEXMessage{" +
//                 "messageType=" + messageType +
//                 '}';
//     }
// }
// 
// Path: iextrading4j-hist-api/src/main/java/pl/zankowski/iextrading4j/hist/api/util/IEXByteConverter.java
// public class IEXByteConverter {
// 
//     private IEXByteConverter() {
//     }
// 
//     public static long convertBytesToLong(final byte[] bytes) {
//         return (long) (0xff & bytes[7]) << 56 |
//                 (long) (0xff & bytes[6]) << 48 |
//                 (long) (0xff & bytes[5]) << 40 |
//                 (long) (0xff & bytes[4]) << 32 |
//                 (long) (0xff & bytes[3]) << 24 |
//                 (long) (0xff & bytes[2]) << 16 |
//                 (long) (0xff & bytes[1]) << 8 |
//                 (long) (0xff & bytes[0]) << 0;
//     }
// 
//     public static int convertBytesToInt(final byte[] bytes) {
//         return ((0xff & bytes[3]) << 24 |
//                 (0xff & bytes[2]) << 16 |
//                 (0xff & bytes[1]) << 8 |
//                 (0xff & bytes[0]) << 0
//         );
//     }
// 
//     public static byte[] toByteArray(int value) {
//         return new byte[]{
//                 (byte) value,
//                 (byte) (value >> 8 & 0xFF),
//                 (byte) (value >> 16 & 0xFF),
//                 (byte) (value >> 24 & 0xFF)};
//     }
// 
//     public static int convertBytesToUnsignedShort(final byte[] bytes) {
//         return convertBytesToShort(bytes) & 0xffff;
//     }
// 
//     public static short convertBytesToShort(final byte[] bytes) {
//         return (short) (
//                 (0xff & bytes[1]) << 8 |
//                         (0xff & bytes[0]) << 0);
//     }
// 
//     public static String convertBytesToString(final byte[] bytes) {
//         return new String(bytes).trim();
//     }
// 
//     public static IEXPrice convertBytesToIEXPrice(final byte[] bytes) {
//         return new IEXPrice(convertBytesToLong(bytes));
//     }
// 
//     public static byte[] convertToRightPaddedString(final String value, final int size) {
//         byte[] outputArray = new byte[size];
//         Arrays.fill(outputArray, (byte) ' ');
//         final byte[] valueArray = value.getBytes(StandardCharsets.UTF_8);
//         if (valueArray.length > outputArray.length) {
//             throw new ArrayIndexOutOfBoundsException();
//         }
//         System.arraycopy(valueArray, 0, outputArray, 0, valueArray.length);
//         return outputArray;
//     }
// }


import pl.zankowski.iextrading4j.hist.api.field.IEXPrice;
import pl.zankowski.iextrading4j.hist.api.message.IEXMessage;
import pl.zankowski.iextrading4j.hist.api.util.IEXByteConverter;
import java.util.Arrays;
import java.util.Objects;
import static pl.zankowski.iextrading4j.hist.api.IEXMessageType.QUOTE_UPDATE;
package pl.zankowski.iextrading4j.hist.tops.trading;




public class IEXQuoteUpdateMessage extends IEXMessage {

    public static final int LENGTH = 42;

    private final byte flag;
    private final long timestamp;
    private final String symbol;
    private final int bidSize;
// Path: iextrading4j-hist-api/src/main/java/pl/zankowski/iextrading4j/hist/api/field/IEXPrice.java
// public class IEXPrice implements Comparable<IEXPrice>, Serializable {
// 
//     private static final int SCALE = 4;
// 
//     private final long number;
// 
//     public IEXPrice(final long number) {
//         this.number = number;
//     }
// 
//     public long getNumber() {
//         return number;
//     }
// 
//     public BigDecimal toBigDecimal() {
//         return BigDecimal.valueOf(number)
//                 .scaleByPowerOfTen(-SCALE);
//     }
// 
//     @Override
//     public int compareTo(final IEXPrice iexPrice) {
//         return compare(this.getNumber(), iexPrice.getNumber());
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         IEXPrice iexPrice = (IEXPrice) o;
//         return number == iexPrice.number;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hashCode(number);
//     }
// 
//     @Override
//     public String toString() {
//         return toBigDecimal()
//                 .toString();
//     }
// }
// 
// Path: iextrading4j-hist-api/src/main/java/pl/zankowski/iextrading4j/hist/api/message/IEXMessage.java
// public abstract class IEXMessage implements Serializable {
// 
//     private final IEXMessageType messageType;
// 
//     public IEXMessage(final IEXMessageType messageType) {
//         this.messageType = messageType;
//     }
// 
//     public IEXMessageType getMessageType() {
//         return messageType;
//     }
// 
//     @Override
//     public boolean equals(final Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         final IEXMessage that = (IEXMessage) o;
//         return messageType == that.messageType;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(messageType);
//     }
// 
//     @Override
//     public String toString() {
//         return "IEXMessage{" +
//                 "messageType=" + messageType +
//                 '}';
//     }
// }
// 
// Path: iextrading4j-hist-api/src/main/java/pl/zankowski/iextrading4j/hist/api/util/IEXByteConverter.java
// public class IEXByteConverter {
// 
//     private IEXByteConverter() {
//     }
// 
//     public static long convertBytesToLong(final byte[] bytes) {
//         return (long) (0xff & bytes[7]) << 56 |
//                 (long) (0xff & bytes[6]) << 48 |
//                 (long) (0xff & bytes[5]) << 40 |
//                 (long) (0xff & bytes[4]) << 32 |
//                 (long) (0xff & bytes[3]) << 24 |
//                 (long) (0xff & bytes[2]) << 16 |
//                 (long) (0xff & bytes[1]) << 8 |
//                 (long) (0xff & bytes[0]) << 0;
//     }
// 
//     public static int convertBytesToInt(final byte[] bytes) {
//         return ((0xff & bytes[3]) << 24 |
//                 (0xff & bytes[2]) << 16 |
//                 (0xff & bytes[1]) << 8 |
//                 (0xff & bytes[0]) << 0
//         );
//     }
// 
//     public static byte[] toByteArray(int value) {
//         return new byte[]{
//                 (byte) value,
//                 (byte) (value >> 8 & 0xFF),
//                 (byte) (value >> 16 & 0xFF),
//                 (byte) (value >> 24 & 0xFF)};
//     }
// 
//     public static int convertBytesToUnsignedShort(final byte[] bytes) {
//         return convertBytesToShort(bytes) & 0xffff;
//     }
// 
//     public static short convertBytesToShort(final byte[] bytes) {
//         return (short) (
//                 (0xff & bytes[1]) << 8 |
//                         (0xff & bytes[0]) << 0);
//     }
// 
//     public static String convertBytesToString(final byte[] bytes) {
//         return new String(bytes).trim();
//     }
// 
//     public static IEXPrice convertBytesToIEXPrice(final byte[] bytes) {
//         return new IEXPrice(convertBytesToLong(bytes));
//     }
// 
//     public static byte[] convertToRightPaddedString(final String value, final int size) {
//         byte[] outputArray = new byte[size];
//         Arrays.fill(outputArray, (byte) ' ');
//         final byte[] valueArray = value.getBytes(StandardCharsets.UTF_8);
//         if (valueArray.length > outputArray.length) {
//             throw new ArrayIndexOutOfBoundsException();
//         }
//         System.arraycopy(valueArray, 0, outputArray, 0, valueArray.length);
//         return outputArray;
//     }
// }


// Path: iextrading4j-hist-tops/src/main/java/pl/zankowski/iextrading4j/hist/tops/trading/IEXQuoteUpdateMessage.java
import pl.zankowski.iextrading4j.hist.api.field.IEXPrice;
import pl.zankowski.iextrading4j.hist.api.message.IEXMessage;
import pl.zankowski.iextrading4j.hist.api.util.IEXByteConverter;
import java.util.Arrays;
import java.util.Objects;
import static pl.zankowski.iextrading4j.hist.api.IEXMessageType.QUOTE_UPDATE;

package pl.zankowski.iextrading4j.hist.tops.trading;




public class IEXQuoteUpdateMessage extends IEXMessage {

    public static final int LENGTH = 42;

    private final byte flag;
    private final long timestamp;
    private final String symbol;
    private final int bidSize;
    private final IEXPrice bidPrice;