@java.lang.Override
    public int hashCode() {
        if (memoizedHashCode != 0) {
            return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasStartTime()) {
            hash = (37 * hash) + START_TIME_FIELD_NUMBER;
            hash = (53 * hash) + getStartTime().hashCode();
        }
        if (hasEndTime()) {
            hash = (37 * hash) + END_TIME_FIELD_NUMBER;
            hash = (53 * hash) + getEndTime().hashCode();
        }
        hash = (37 * hash) + DURATION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getDuration()));
        hash = (37 * hash) + PACKETS_FIELD_NUMBER;
        hash = (53 * hash) + getPackets();
        hash = (37 * hash) + PACKET_RATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getPacketRate()));
        hash = (37 * hash) + BYTES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getBytes());
        hash = (37 * hash) + HEADER_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getHeaderBytes());
        hash = (37 * hash) + BITRATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getBitrate()));
        hash = (37 * hash) + PACKETS_LOST_FIELD_NUMBER;
        hash = (53 * hash) + getPacketsLost();
        hash = (37 * hash) + PACKET_LOSS_RATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getPacketLossRate()));
        hash = (37 * hash) + PACKET_LOSS_PERCENTAGE_FIELD_NUMBER;
        hash = (53 * hash) + java.lang.Float.floatToIntBits(getPacketLossPercentage());
        hash = (37 * hash) + PACKETS_DUPLICATE_FIELD_NUMBER;
        hash = (53 * hash) + getPacketsDuplicate();
        hash = (37 * hash) + PACKET_DUPLICATE_RATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getPacketDuplicateRate()));
        hash = (37 * hash) + BYTES_DUPLICATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getBytesDuplicate());
        hash = (37 * hash) + HEADER_BYTES_DUPLICATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getHeaderBytesDuplicate());
        hash = (37 * hash) + BITRATE_DUPLICATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getBitrateDuplicate()));
        hash = (37 * hash) + PACKETS_PADDING_FIELD_NUMBER;
        hash = (53 * hash) + getPacketsPadding();
        hash = (37 * hash) + PACKET_PADDING_RATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getPacketPaddingRate()));
        hash = (37 * hash) + BYTES_PADDING_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getBytesPadding());
        hash = (37 * hash) + HEADER_BYTES_PADDING_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getHeaderBytesPadding());
        hash = (37 * hash) + BITRATE_PADDING_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getBitratePadding()));
        hash = (37 * hash) + PACKETS_OUT_OF_ORDER_FIELD_NUMBER;
        hash = (53 * hash) + getPacketsOutOfOrder();
        hash = (37 * hash) + FRAMES_FIELD_NUMBER;
        hash = (53 * hash) + getFrames();
        hash = (37 * hash) + FRAME_RATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getFrameRate()));
        hash = (37 * hash) + JITTER_CURRENT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getJitterCurrent()));
        hash = (37 * hash) + JITTER_MAX_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal
                .hashLong(java.lang.Double.doubleToLongBits(getJitterMax()));
        if (!internalGetGapHistogram().getMap()
                .isEmpty()) {
            hash = (37 * hash) + GAP_HISTOGRAM_FIELD_NUMBER;
            hash = (53 * hash) + internalGetGapHistogram().hashCode();
        }
        hash = (37 * hash) + NACKS_FIELD_NUMBER;
        hash = (53 * hash) + getNacks();
        hash = (37 * hash) + NACK_ACKS_FIELD_NUMBER;
        hash = (53 * hash) + getNackAcks();
        hash = (37 * hash) + NACK_MISSES_FIELD_NUMBER;
        hash = (53 * hash) + getNackMisses();
        hash = (37 * hash) + NACK_REPEATED_FIELD_NUMBER;
        hash = (53 * hash) + getNackRepeated();
        hash = (37 * hash) + PLIS_FIELD_NUMBER;
        hash = (53 * hash) + getPlis();
        if (hasLastPli()) {
            hash = (37 * hash) + LAST_PLI_FIELD_NUMBER;
            hash = (53 * hash) + getLastPli().hashCode();
        }
        hash = (37 * hash) + FIRS_FIELD_NUMBER;
        hash = (53 * hash) + getFirs();
        if (hasLastFir()) {
            hash = (37 * hash) + LAST_FIR_FIELD_NUMBER;
            hash = (53 * hash) + getLastFir().hashCode();
        }
        hash = (37 * hash) + RTT_CURRENT_FIELD_NUMBER;
        hash = (53 * hash) + getRttCurrent();
        hash = (37 * hash) + RTT_MAX_FIELD_NUMBER;
        hash = (53 * hash) + getRttMax();
        hash = (37 * hash) + KEY_FRAMES_FIELD_NUMBER;
        hash = (53 * hash) + getKeyFrames();
        if (hasLastKeyFrame()) {
            hash = (37 * hash) + LAST_KEY_FRAME_FIELD_NUMBER;
            hash = (53 * hash) + getLastKeyFrame().hashCode();
        }
        hash = (37 * hash) + LAYER_LOCK_PLIS_FIELD_NUMBER;
        hash = (53 * hash) + getLayerLockPlis();
        if (hasLastLayerLockPli()) {
            hash = (37 * hash) + LAST_LAYER_LOCK_PLI_FIELD_NUMBER;
            hash = (53 * hash) + getLastLayerLockPli().hashCode();
        }
        if (hasPacketDrift()) {
            hash = (37 * hash) + PACKET_DRIFT_FIELD_NUMBER;
            hash = (53 * hash) + getPacketDrift().hashCode();
        }
        if (hasReportDrift()) {
            hash = (37 * hash) + REPORT_DRIFT_FIELD_NUMBER;
            hash = (53 * hash) + getReportDrift().hashCode();
        }
        if (hasRebasedReportDrift()) {
            hash = (37 * hash) + REBASED_REPORT_DRIFT_FIELD_NUMBER;
            hash = (53 * hash) + getRebasedReportDrift().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
    }
<pre>
NEXT_ID: 47
</pre>

<code>.livekit.RTPDrift rebased_report_drift = 46;</code>
turms-plugins/turms-plugin-livekit/src/main/java/im/turms/plugin/livekit/core/proto/models/RTPStats.java