There is no per-token art, and no trait lottery. Every monke shows the same picture, because the thing you are buying is a seat in a club, not a picture. The reveal is a single switch on the contract: until the owner flips it, every token returns a sealed placeholder.
tokenURI returns the sealed placeholder for every token id. Nothing is hidden
that will later change price: the seats, the quota and the gate are already final.
The owner calls setRevealed(true) and every token immediately points at the one
picture. No per-token metadata server, no IPFS pin to babysit.
freezeImageURI() locks the picture for good. From that moment nobody, including
the owner, can repoint the collection somewhere else.
tokenURI(1) and tokenURI(3333) return the same image field, and both are
base64 JSON you can decode in one line. revealed() tells you which picture you are
looking at, and imageURI() is the address it points to.