func UnmarshalVarInt64s(dst []int64, src []byte) ([]byte, error) {
	idx := uint(0)
	for i := range dst {
		if idx >= uint(len(src)) {
			return nil, fmt.Errorf("cannot unmarshal varint from empty data")
		}
		c := src[idx]
		idx++
		if c < 0x80 {
			// Fast path
			v := int8(c>>1) ^ (int8(c<<7) >> 7) // zig-zag decoding without branching.
			dst[i] = int64(v)
			continue
		}

		// Slow path
		u := uint64(c & 0x7f)
		startIdx := idx - 1
		shift := uint8(0)
		for c >= 0x80 {
			if idx >= uint(len(src)) {
				return nil, fmt.Errorf("unexpected end of encoded varint at byte %d; src=%x", idx-startIdx, src[startIdx:])
			}
			if idx-startIdx > 9 {
				return src[idx:], fmt.Errorf("too long encoded varint; the maximum allowed length is 10 bytes; got %d bytes; src=%x",
					(idx-startIdx)+1, src[startIdx:])
			}
			c = src[idx]
			idx++
			shift += 7
			u |= uint64(c&0x7f) << shift
		}
		v := int64(u>>1) ^ (int64(u<<63) >> 63) // zig-zag decoding without branching.
		dst[i] = v
	}
	return src[idx:], nil
}
// UnmarshalVarInt64s unmarshals len(dst) int64 values from src to dst
// and returns the remaining tail from src.
UnmarshalVarInt64s unmarshals len(dst) int64 values from src to dst
and returns the remaining tail from src.
// UnmarshalVarInt64s unmarshals len ( dst ) int64 values from src to dst // and returns the remaining tail from src .
func UnmarshalVarInt64s(dst []int64, src []byte) ([]byte, error) {
	idx := uint(0)
	for i := range dst {
		if idx >= uint(len(src)) {
			return nil, fmt.Errorf("cannot unmarshal varint from empty data")
		}
		c := src[idx]
		idx++
		if c < 0x80 {
			v := int8(c>>1) ^ (int8(c<<7) >> 7) 
			dst[i] = int64(v)
			continue
		}
		u := uint64(c & 0x7f)
		startIdx := idx - 1
		shift := uint8(0)
		for c >= 0x80 {
			if idx >= uint(len(src)) {
				return nil, fmt.Errorf("unexpected end of encoded varint at byte %d; src=%x", idx-startIdx, src[startIdx:])
			}
			if idx-startIdx > 9 {
				return src[idx:], fmt.Errorf("too long encoded varint; the maximum allowed length is 10 bytes; got %d bytes; src=%x",
					(idx-startIdx)+1, src[startIdx:])
			}
			c = src[idx]
			idx++
			shift += 7
			u |= uint64(c&0x7f) << shift
		}
		v := int64(u>>1) ^ (int64(u<<63) >> 63) 
		dst[i] = v
	}
	return src[idx:], nil
}
func UnmarshalVarInt64s ( dst [ ] int64 , src [ ] byte ) ( [ ] byte , error ) { idx := uint ( 0 ) for i := range dst { if idx >= uint ( len ( src ) ) { return nil , fmt . Errorf ( " " ) } c := src [ idx ] idx ++ if c < 0x80 { v := int8 ( c >> 1 ) ^ ( int8 ( c << 7 ) >> 7 ) dst [ i ] = int64 ( v ) continue } u := uint64 ( c & 0x7f ) startIdx := idx - 1 shift := uint8 ( 0 ) for c >= 0x80 { if idx >= uint ( len ( src ) ) { return nil , fmt . Errorf ( " " , idx - startIdx , src [ startIdx : ] ) } if idx - startIdx > 9 { return src [ idx : ] , fmt . Errorf ( " " , ( idx - startIdx ) + 1 , src [ startIdx : ] ) } c = src [ idx ] idx ++ shift += 7 u |= uint64 ( c & 0x7f ) << shift } v := int64 ( u >> 1 ) ^ ( int64 ( u << 63 ) >> 63 ) dst [ i ] = v } return src [ idx : ] , nil }
UnmarshalVarInt64s unmarshals len(dst) int64 values from src to dst
and returns the remaining tail from src.
UnmarshalVarInt64s unmarshals len ( dst ) int64 values from src to dst and returns the remaining tail from src .
// Fast path // zig-zag decoding without branching. // Slow path // zig-zag decoding without branching.