package main

import (
	"bytes"
	"compress/flate"
	"fmt"
	"io"
)

func main() {
	var buf bytes.Buffer
	w, _ := flate.NewWriter(&buf, flate.BestSpeed)
	var wire []byte
	for f := 0; f < 3; f++ {
		frame := make([]byte, 300)
		for i := range frame {
			frame[i] = byte(f*7 + i)
		}
		w.Write(frame)
		w.Flush()
		snap := make([]byte, len(buf.Bytes()))
		copy(snap, buf.Bytes())
		wire = append(wire, snap[len(wire):]...)
	}
	_ = w.Close()
	snap := make([]byte, len(buf.Bytes()))
	copy(snap, buf.Bytes())
	wire = append(wire, snap[len(wire):]...)
	fmt.Println("wire len:", len(wire), "first bytes:", wire[:4])
	r := flate.NewReader(bytes.NewReader(wire))
	out, err := io.ReadAll(r)
	fmt.Println("decoded:", len(out), "err:", err)
	ok := len(out) == 900
	for i := range out {
		if out[i] != byte(i/300*7+i%300) {
			ok = false
			break
		}
	}
	fmt.Println("content ok:", ok)
}
