keksbruch — parser divergence matrix

How cookie parsers across languages handle the same difficult and malformed wire — surfacing where implementations diverge. Generated by cargo test -p keksbruch --features differential -- --ignored.

Download the same matrix: Markdown · CSV · JSON

Legend

symbolmeaning
[n=v, …]a request Cookie: header parsed into these name=value pairs, in order
∅parsed successfully, but into zero cookies
name=value ;Attr;…a Set-Cookie parsed into one cookie, with its attributes after the ;
❌the parser rejected the whole header or cookie (fail-hard)
n/athe parser does not handle this direction (e.g. a request-only library asked to parse a Set-Cookie)
SKIPthe parser or its toolchain was unavailable in this run
☠️the parser crashed on this payload — an in-process panic, or a sidecar killed by a signal, a non-zero exit, or a hang
⚠️the parser accepted the cookie/header but reported recovered issues — hover the cell for the list; issues never affect the outcome or the consensus vote
≡a proxy (nginx) forwarded the cookie byte-for-byte
≠ …a proxy forwarded the cookie but altered the bytes (the altered value follows)
⟨array⟩ / ⟨object⟩the value was parsed as a non-string type — PHP's $_COOKIE arrays/maps — shown by type name
☢️on a Set-Cookie, the tool's parse contradicts kekse's typed reading: it stored a cookie kekse rejects, read an attribute value differently, or asserted one kekse never parsed (hover in the HTML report for the field-by-field comparison)
Path⇒defaulta jar dropped the wire's unusable or absent Path and scoped the cookie to its request default-path (§5.1.4); the harness value (browsers /r, curl/wget/libcurl/HttpClient5 /) is plumbing, so the fall-back is stated, not printed

A bold cell differs from the real-world consensus — the modal outcome of the other parsers. A ☢️ cell is the mirror axis: it contradicts kekse, the subject we assert is correct, rather than the crowd — the two marks are independent, and a cell may carry both. kekse — and, on the jar probes, the rfc_6265 reference — is a subject under test, excluded from the consensus vote. Rows are tools, columns are tests; the payload row is the exact wire (non-displayable bytes shown \0 \r \n \xNN). The matrix is split into three tables: the request Cookie: parsers, the response Set-Cookie: parsers, and the jar probes (client stores exercised end-to-end), each listing only the tools that engage that axis (so none is a wall of n/a).

Request Cookie: parsers

toolws-surroundingws-internalctl-nulctl-crlfctl-otherquote-unbalancedquote-interiorpct-truncatedpct-bad-utf8raw-non-utf8delim-semicolondelim-empty-segmentsno-equalsextra-equalslines-second-visiblelines-singlelines-empty-linelines-trailing-semicolonlines-obs-text-linelines-comma-foldeddup-namedup-caseempty-nameempty-valueraw-non-asciinon-ascii-namescale-huge-valuescale-many-pairsscale-control-junkreq-partitioned-namenul-in-namenul-between-cookiestab-aroundraw-emojipct-emojiarray-nameassoc-namejson-valuebracket-valuemarkup-no-equalsmarkup-namequoted-html-valuetruthyequals-bareequals-doublenul-empty-name
payload n = v n=a bn=a\0b; m=okn=a\r\nb; m=okn=a\x01b; m=okn="v; m=okn=a"b; m=okn=%4; m=okn=%FF; m=okn=a\xffbn=a;evil=1n=v;;;m=wflag; n=vn=a=bother=x; SID=deadbeefn=va=1; ; b=2n=a;; SID=xbad=caf\xe9; good=1; SID=deadbeefa=1, SID=xk=1; k=2; k=3sid=lo; SID=hi=v; m=okn=; m=okn=café; m=oknaïve=v; m=okn=xxxxxxxxxxxxxxxxxxxxxxxxxx…<4098>k0=v0; k1=v1; k2=v2; k3=v3; …<172>a=1; j=\x01\x01\x01\x01\x01\…<16396>Partitioned=false; m=okn\0x=v; m=oka=1; \0b=2; c=3\tn\t=\tv\t; m=okn=🤖; m=okn=%F0%9F%A4%96; m=oktoken[]=nested; m=oksess[k]=v; m=okdata={"testdata":"JSON"}; m=okdata=[nested]; m=ok<script>; m=ok<script>=empty; m=okdata="<img src=x />"; m=oktruthy=yes; m=ok===\0=; m=ok
RFC (standard)——————————; splits → 2 pairs—skip bad pair, keep restsplit on first =field lines join with ; (RFC 9113 §8.2.3)field lines join with ; (RFC 9113 §8.2.3)field lines join with ; (RFC 9113 §8.2.3)field lines join with ; (RFC 9113 §8.2.3)field lines join with ; (RFC 9113 §8.2.3)Cookie is exempt from the RFC 9110 §5.2 comma foldall duplicates kept—skip bad pair, keep restempty value is valid———————————non-token name skippednon-token name skippedDQUOTE is not a cookie-octet[ ] are cookie-octetsskip bad pair, keep restnon-token name skipped——skip bad pair, keep restskip bad pair, keep restnon-token name skipped
consensus[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][bad=café, good=1, SID=deadbeef][a=1, SID=x][k=1, k=2, k=3][sid=lo, SID=hi][m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok]∅∅[\0=, m=ok]
rust/kekse (lenient)[n=v][n=a b][m=ok] ⚠️
• cookie `n` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `\"v` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=%4, m=ok][m=ok] ⚠️
• cookie `n` value `%FF` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
n/a[n=a, evil=1][n=v, m=w][n=v] ⚠️
• cookie pair `flag` has no `=`
[n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x]n/a∅ ⚠️
• cookie `a` value `1, SID=x` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[k=1, k=2, k=3][sid=lo, SID=hi][m=ok] ⚠️
• cookie name `` is empty or not a token
[n=, m=ok][m=ok] ⚠️
• cookie `n` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie name `naïve` is empty or not a token
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, b=2] ⚠️
• cookie `j` value `\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[Partitioned=false, m=ok][m=ok] ⚠️
• cookie name `n\0x` is empty or not a token
[a=1, c=3] ⚠️
• cookie name `\0b` is empty or not a token
[n=v, m=ok][m=ok] ⚠️
• cookie `n` value `🤖` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=🤖, m=ok][m=ok] ⚠️
• cookie name `token[]` is empty or not a token
[m=ok] ⚠️
• cookie name `sess[k]` is empty or not a token
[m=ok] ⚠️
• cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[data=[nested], m=ok][m=ok] ⚠️
• cookie pair `<script>` has no `=`
[m=ok] ⚠️
• cookie name `<script>` is empty or not a token
[data=<img src=x />, m=ok][truthy=yes, m=ok]∅ ⚠️
• cookie name `` is empty or not a token
∅ ⚠️
• cookie name `` is empty or not a token
[m=ok] ⚠️
• cookie name `\0` is empty or not a token
rust/kekse (strict)[n=v]∅ ⚠️
• cookie `n` value `a b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `\"v` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie `n` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=%4, m=ok][m=ok] ⚠️
• cookie `n` value `%FF` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
n/a[n=a, evil=1][n=v, m=w][n=v] ⚠️
• cookie pair `flag` has no `=`
[n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x]n/a∅ ⚠️
• cookie `a` value `1, SID=x` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[k=1, k=2, k=3][sid=lo, SID=hi][m=ok] ⚠️
• cookie name `` is empty or not a token
[n=, m=ok][m=ok] ⚠️
• cookie `n` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[m=ok] ⚠️
• cookie name `naïve` is empty or not a token
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, b=2] ⚠️
• cookie `j` value `\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[Partitioned=false, m=ok][m=ok] ⚠️
• cookie name `n\0x` is empty or not a token
[a=1, c=3] ⚠️
• cookie name `\0b` is empty or not a token
[n=v, m=ok][m=ok] ⚠️
• cookie `n` value `🤖` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=🤖, m=ok][m=ok] ⚠️
• cookie name `token[]` is empty or not a token
[m=ok] ⚠️
• cookie name `sess[k]` is empty or not a token
[m=ok] ⚠️
• cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[data=[nested], m=ok][m=ok] ⚠️
• cookie pair `<script>` has no `=`
[m=ok] ⚠️
• cookie name `<script>` is empty or not a token
[m=ok] ⚠️
• cookie `data` value `\"<img src=x />\"` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[truthy=yes, m=ok]∅ ⚠️
• cookie name `` is empty or not a token
∅ ⚠️
• cookie name `` is empty or not a token
[m=ok] ⚠️
• cookie name `\0` is empty or not a token
rust/kekse (fail-hard)[n=v]❌
1 refused pair(s): cookie `n` value `a b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
1 refused pair(s): cookie `n` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
1 refused pair(s): cookie `n` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
1 refused pair(s): cookie `n` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
1 refused pair(s): cookie `n` value `\"v` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
1 refused pair(s): cookie `n` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=%4, m=ok]❌
1 refused pair(s): cookie `n` value `%FF` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
n/a[n=a, evil=1][n=v, m=w]❌
1 refused pair(s): cookie pair `flag` has no `=`
[n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x]n/a❌
1 refused pair(s): cookie `a` value `1, SID=x` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[k=1, k=2, k=3][sid=lo, SID=hi]❌
1 refused pair(s): cookie name `` is empty or not a token
[n=, m=ok]❌
1 refused pair(s): cookie `n` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
1 refused pair(s): cookie name `naïve` is empty or not a token
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)]❌
1 refused pair(s): cookie `j` value `\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}\u{1}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[Partitioned=false, m=ok]❌
1 refused pair(s): cookie name `n\0x` is empty or not a token
❌
1 refused pair(s): cookie name `\0b` is empty or not a token
[n=v, m=ok]❌
1 refused pair(s): cookie `n` value `🤖` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[n=🤖, m=ok]❌
1 refused pair(s): cookie name `token[]` is empty or not a token
❌
1 refused pair(s): cookie name `sess[k]` is empty or not a token
❌
1 refused pair(s): cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[data=[nested], m=ok]❌
1 refused pair(s): cookie pair `<script>` has no `=`
❌
1 refused pair(s): cookie name `<script>` is empty or not a token
❌
1 refused pair(s): cookie `data` value `\"<img src=x />\"` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
[truthy=yes, m=ok]❌
1 refused pair(s): cookie name `` is empty or not a token
❌
1 refused pair(s): cookie name `` is empty or not a token
❌
1 refused pair(s): cookie name `\0` is empty or not a token
rust/cookie[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][m=ok] ⚠️
• decoding the cookie's name or value resulted in invalid UTF-8
n/a[n=a, evil=1][n=v, m=w][n=v] ⚠️
• the cookie is missing a name/value pair
[n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x]n/a[a=1, SID=x][k=1, k=2, k=3][sid=lo, SID=hi][m=ok] ⚠️
• the cookie's name is empty
[n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=🤖, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok] ⚠️
• the cookie is missing a name/value pair
[<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok]∅ ⚠️
• the cookie's name is empty
∅ ⚠️
• the cookie's name is empty
[\0=, m=ok]
rust/biscotti[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok]❌
Failed to parse cookies out of a header value
n/a[n=a, evil=1][n=v, m=w]❌
Failed to parse cookies out of a header value
[n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x]n/a[a=1, SID=x][k=1, k=2, k=3][sid=lo, SID=hi]❌
Failed to parse cookies out of a header value
[n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=🤖, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok]❌
Failed to parse cookies out of a header value
[<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok]❌
Failed to parse cookies out of a header value
❌
Failed to parse cookies out of a header value
[\0=, m=ok]
rust/axum-extra[n=v][n=a b]❌
not a valid header value
❌
not a valid header value
❌
not a valid header value
[m=ok, n="v][m=ok, n=a"b][m=ok, n=%4][m=ok]n/a[evil=1, n=a][m=w, n=v][n=v][n=a=b][SID=deadbeef, other=x][n=v][a=1, b=2][SID=x, n=a]n/a[a=1, SID=x][k=3][SID=hi, sid=lo][m=ok][m=ok, n=]∅∅[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k10=v10, k11=v11, …(+17 more)]❌
not a valid header value
[Partitioned=false, m=ok]❌
not a valid header value
❌
not a valid header value
[m=ok, n=v]∅[m=ok, n=🤖][m=ok, token[]=nested][m=ok, sess[k]=v][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data="<img src=x />", m=ok][m=ok, truthy=yes]∅∅❌
not a valid header value
python/SimpleCookie[n=v]∅∅∅∅∅∅[n=%4, m=ok][n=%FF, m=ok]∅[n=a, evil=1][n=v]∅[n=a=b][other=x, SID=deadbeef][n=v][a=1][n=a]∅[a=1,, SID=x][k=3][sid=lo, SID=hi]∅[n=, m=ok]∅∅[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1][Partitioned=false, m=ok]∅[a=1][n=v, m=ok]∅[n=%F0%9F%A4%96, m=ok]∅∅∅[data=[nested], m=ok]∅❌
CookieError: Illegal key '<script>'
[data=<img src=x />, m=ok][truthy=yes, m=ok]∅❌
CookieError: Illegal key '='
∅
python/Werkzeug[n=v][n=a b][n=a\0b, m=ok][a\r\nb=, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok]❌
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte
[n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x]❌
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 7: invalid continuation byte
[a=1, SID=x][k=1, k=2, k=3][sid=lo, SID=hi][m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=🤖, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok]∅∅[\0=, m=ok]
python/mitmproxy[n = v ][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n=v; m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][bad=café, good=1, SID=deadbeef][a=1, SID=x][k=1, k=2, k=3][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n\t=\tv\t, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok]∅[==][\0=, m=ok]
node/cookie[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][bad=café, good=1, SID=deadbeef][a=1, SID=x][k=1][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok]∅[==][\0=, m=ok]
node/universal-cookie[n=v][n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][bad=café, good=1, SID=deadbeef][a=1, SID=x][k=1][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok]∅[==]
node/js-cookie[ n = v ][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n=, m=ok][n=a"b, m=ok][n=%4, m=ok][m=ok][n=aÿb][n=a;evil=1][n=v;;;m=w][flag=, n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, =, b=2][n=a;, SID=x][bad=café, good=1, SID=deadbeef][a=1, SID=x][k=1][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, \0b=2, c=3][\tn\t=\tv\t, m=ok][n=ð\x9f¤\x96, m=ok][n=🤖, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][=][==][\0=, m=ok]
go/net/http❌
http: invalid cookie name
[n=a b]❌
http: invalid cookie value
❌
http: invalid cookie value
❌
http: invalid cookie value
❌
http: invalid cookie value
❌
http: invalid cookie value
[n=%4, m=ok][n=%FF, m=ok]❌
http: invalid cookie value
[n=a, evil=1]❌
http: '=' not found in cookie
❌
http: '=' not found in cookie
[n=a=b][other=x, SID=deadbeef][n=v]❌
http: '=' not found in cookie
❌
http: '=' not found in cookie
❌
http: invalid cookie value
[a=1, SID=x][k=1, k=2, k=3][sid=lo, SID=hi]❌
http: invalid cookie name
[n=, m=ok]❌
http: invalid cookie value
❌
http: invalid cookie name
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)]❌
http: invalid cookie value
[Partitioned=false, m=ok]❌
http: invalid cookie name
❌
http: invalid cookie name
❌
http: invalid cookie name
❌
http: invalid cookie value
[n=%F0%9F%A4%96, m=ok]❌
http: invalid cookie name
❌
http: invalid cookie name
❌
http: invalid cookie value
[data=[nested], m=ok]❌
http: '=' not found in cookie
❌
http: invalid cookie name
[data=<img src=x />, m=ok][truthy=yes, m=ok]❌
http: invalid cookie name
❌
http: invalid cookie name
❌
http: invalid cookie name
dotnet/Microsoft.Net.Http.Headers❌
CookieHeaderValue.TryParseList returned false
❌
CookieHeaderValue.TryParseList returned false
[m=ok][m=ok][m=ok][n=, m=ok][m=ok][n=%4, m=ok][n=%FF, m=ok]❌
CookieHeaderValue.TryParseList returned false
[n=a, evil=1][n=v, m=w][n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][good=1, SID=deadbeef]❌
CookieHeaderValue.TryParseList returned false
[k=1, k=2, k=3][sid=lo, SID=hi][m=ok][n=, m=ok][m=ok][m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, b=2][Partitioned=false, m=ok][m=ok][a=1, c=3][m=ok][m=ok][n=%F0%9F%A4%96, m=ok][m=ok][m=ok][m=ok][data=[nested], m=ok][m=ok][m=ok][m=ok][truthy=yes, m=ok]❌
CookieHeaderValue.TryParseList returned false
❌
CookieHeaderValue.TryParseList returned false
[m=ok]
php/$_COOKIE[n__= v ][n=a b][n=a]❌
empty response
[n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=ÿ, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][bad=café, good=1, SID=deadbeef][a=1, SID=x][k=1][sid=lo, SID=hi][m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok][n=][a=1][n\t=\tv\t, m=ok][n=ð\x9f¤\x96, m=ok][n=ð\x9f¤\x96, m=ok][token=⟨array⟩["nested"], m=ok][sess=⟨object⟩{"k":"v"}, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok]∅∅∅
nginx/$cookie_<name>[n=v][n=a b]❌
nginx HTTP 400
❌
nginx HTTP 400
[n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][bad=café, good=1, SID=deadbeef][a=1, SID=x][k=1][sid=lo, SID=lo][m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>, b=2][Partitioned=false, m=ok]❌
nginx HTTP 400
❌
nginx HTTP 400
[m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][m=ok][<script>=empty, m=ok][data="<img src=x />", m=ok][truthy=yes, m=ok]∅∅❌
nginx HTTP 400
nginx/lua-resty-cookie[n =][n=a]❌
nginx HTTP 400
❌
nginx HTTP 400
[m=ok, n=a\x01b][m=ok, n="v][m=ok, n=a"b][m=ok, n=%4][m=ok, n=%FF][n=aÿb][evil=1, n=a][;;m=w, n=v][flag; n=v][n=a=b][SID=deadbeef, other=x][n=v][; b=2, a=1][; SID=x, n=a][SID=deadbeef, bad=café, good=1][SID=x, a=1,][k=3][SID=hi, sid=lo][=v, m=ok][m=ok, n=][m=ok, n=café][m=ok, naïve=v][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k10=v10, k11=v11, …(+17 more)][a=1, b=2, j=\x01\x01\x01...\x01\x01\x01…<4096 chars>][Partitioned=false, m=ok]❌
nginx HTTP 400
❌
nginx HTTP 400
[n\t=, v\t; m=ok][m=ok, n=ð\x9f¤\x96][m=ok, n=%F0%9F%A4%96][m=ok, token[]=nested][m=ok, sess[k]=v][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>; m=ok][<script>=empty, m=ok][/>"; m=ok, data="<img, src=x][m=ok, truthy=yes][=][==]❌
nginx HTTP 400
nginx/proxy≠ n = v≡❌❌≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡❌❌≡≡≡≡≡≡≡≡≡≡≡≡≡❌
java/Tomcat RFC6265[n=v]∅[m=ok][m=ok][m=ok][n=v, m=ok][m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][bad=café, good=1, SID=deadbeef]∅[k=1, k=2, k=3][sid=lo, SID=hi][m=ok][n=, m=ok][n=café, m=ok][m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, b=2][Partitioned=false, m=ok][m=ok][a=1, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][m=ok][m=ok][m=ok][data=[nested], m=ok][m=ok][m=ok][m=ok][truthy=yes, m=ok]∅∅[m=ok]
java/Tomcat legacy[n=v][n=a]❌
IllegalArgumentException: Control character in cookie value or attribute.
❌
IllegalArgumentException: Control character in cookie value or attribute.
❌
IllegalArgumentException: Control character in cookie value or attribute.
∅[n=a, m=ok][n=%4, m=ok][n=%FF, m=ok]❌
IllegalArgumentException: Control character in cookie value or attribute.
[n=a, evil=1][n=v, m=w][n=v][n=a][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x]❌
IllegalArgumentException: Control character in cookie value or attribute.
[a=1, SID=x][k=1, k=2, k=3][sid=lo, SID=hi][m=ok][m=ok]❌
IllegalArgumentException: Control character in cookie value or attribute.
❌
IllegalArgumentException: Control character in cookie value or attribute.
[n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)]❌
IllegalArgumentException: Control character in cookie value or attribute.
[Partitioned=false, m=ok]❌
IllegalArgumentException: Control character in cookie value or attribute.
❌
IllegalArgumentException: Control character in cookie value or attribute.
[n=v, m=ok]❌
IllegalArgumentException: Control character in cookie value or attribute.
[n=%F0%9F%A4%96, m=ok][m=ok][m=ok][m=ok][m=ok][m=ok][m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok]∅∅❌
IllegalArgumentException: Control character in cookie value or attribute.
java/Jakarta RESTEasy[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][bad=café, good=1, SID=deadbeef][a=1][k=1, k=2, k=3][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][=][==][=, m=ok]
java/Jakarta Jersey[n=v][n=a b][n=a\0b, m=ok][n=a\r\nb, m=ok][n=a\x01b, m=ok][n="v, m=ok][n=a"b, m=ok][n=%4, m=ok][n=%FF, m=ok][n=aÿb][n=a, evil=1][n=v, m=w][flag=, n=v][n=a=b][other=x, SID=deadbeef][n=v][a=1, b=2][n=a, SID=x][bad=café, good=1, SID=deadbeef][a=1][k=1, k=2, k=3][sid=lo, SID=hi][=v, m=ok][n=, m=ok][n=café, m=ok][naïve=v, m=ok][n=xxx...xxx…<4096 chars>][k0=v0, k1=v1, k2=v2, k3=v3, …(+17 more)][a=1, j=, b=2][Partitioned=false, m=ok][n\0x=v, m=ok][a=1, b=2, c=3][n=v, m=ok][n=ð\x9f¤\x96, m=ok][n=%F0%9F%A4%96, m=ok][token[]=nested, m=ok][sess[k]=v, m=ok][data={"testdata":"JSON"}, m=ok][data=[nested], m=ok][<script>=, m=ok][<script>=empty, m=ok][data=<img src=x />, m=ok][truthy=yes, m=ok][=][==][=, m=ok]

Response Set-Cookie: parsers

toolattr-unknownattr-unknown-bareattr-bad-maxageattr-garbage-samesiteattr-valued-flagattr-duplicateresp-partitioned-secureresp-partitioned-bareresp-partitioned-valuedresp-partitioned-dupprefix-secure-okprefix-secure-missingprefix-host-okprefix-host-missing-secureprefix-host-domainprefix-host-pathprefix-host-caseprefix-host-case-conformantresp-partitioned-samesite-noneprefix-host-partitionedresp-partitioned-domainresp-partitioned-falseresp-partitioned-trueresp-partitioned-caseresp-partitioned-nameresp-encoded-semicolon-attrresp-quoted-attr-textresp-partitioned-leadingresp-samesite-strictresp-samesite-laxresp-samesite-none-bareresp-samesite-none-secureresp-samesite-caseresp-samesite-emptydate-imf-fixdatedate-rfc850date-asctimedate-no-weekdaydate-wrong-weekdaydate-nonsense-weekdaydate-no-timezonedate-reordereddate-2digit-year-imf-shapedate-trailing-commentdate-unixdate-garbagedate-impossible-daydate-year-pre-1601date-minute-out-of-rangedate-second-out-of-rangedate-iso8601date-us-slashdate-eu-dotteddate-epochdate-2digit-year-69date-2digit-year-70date-year-1601-boundarydate-hour-out-of-rangedate-1-digit-daydate-month-casedate-month-overlongdate-year-trailing-alphadate-5-digit-yeardate-missing-yeardate-emptydate-zone-offsetdate-tab-delimsdate-first-token-winsdomain-supercookie-tlddomain-supercookie-icanndomain-registrabledomain-punycodedomain-utf8domain-emoji-utf8domain-emoji-punycodedomain-malformed-punycodedomain-not-a-host-namedomain-dup-last-winsdomain-dup-valid-then-invalidpath-file-uripath-emptypath-dotpath-overlong-1025resp-all-attrsresp-crlfresp-ws-surroundingresp-empty-valueresp-ctl-nulresp-ctl-otherresp-quote-interiorresp-non-asciiresp-nameless-bareresp-nameless-eqresp-non-ascii-nameresp-space-in-nameresp-del-byteattr-nul-nameattr-nul-valueresp-array-nameresp-json-valueresp-bracket-valueresp-quoted-html-valueresp-quoted-pair-flag
payloadSID=abc; Priority=HighSID=abc; PrioritySID=abc; Max-Age=bananaSID=abc; SameSite=BogusSID=abc; Secure=1SID=abc; Path=/a; Path=/bSID=abc; Partitioned; SecureSID=abc; PartitionedSID=abc; Partitioned=1SID=abc; Partitioned; Partit…<41>__Secure-SID=abc; Secure__Secure-SID=abc__Host-SID=abc; Secure; Path=/__Host-SID=abc; Path=/__Host-SID=abc; Secure; Path…<50>__Host-SID=abc; Secure; Path=/app__host-SID=abc__host-SID=abc; Secure; Path=/SID=abc; SameSite=None; Secu…<43>__Host-SID=abc; Secure; Path…<43>SID=abc; Secure; Domain=exam…<48>SID=abc; Secure; Partitioned=falseSID=abc; Secure; Partitioned=trueSID=abc; Secure; pArTiTiOnEdPartitioned=falseSID=abc%3B%20Partitioned; SecureSID="abc; Partitioned"; SecurePartitioned; SID=abcSID=abc; SameSite=StrictSID=abc; SameSite=LaxSID=abc; SameSite=NoneSID=abc; SameSite=None; SecureSID=abc; SameSite=lAxSID=abc; SameSite=SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=Sunday, 06-…<47>SID=abc; Expires=Sun Nov 6 …<41>SID=abc; Expires=06 Nov 1994…<41>SID=abc; Expires=Mon, 06 Nov…<46>SID=abc; Expires=Birthday, 0…<51>SID=abc; Expires=Sun, 06 Nov…<42>SID=abc; Expires=08:49:37 19…<37>SID=abc; Expires=Sun, 06 Nov…<44>SID=abc; Expires=Sun, 06 Nov…<52>SID=abc; Expires=Sun Nov 6 …<45>SID=abc; Expires=not-a-dateSID=abc; Expires=Sun, 31 Feb…<46>SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=1994-11-06T…<37>SID=abc; Expires=11/06/1994 08:49:37SID=abc; Expires=06.11.1994 08:49:37SID=abc; Expires=784108177SID=abc; Expires=Tue, 01 Jan…<44>SID=abc; Expires=Thu, 01 Jan…<44>SID=abc; Expires=Mon, 01 Jan…<46>SID=abc; Expires=Sun, 06 Nov…<46>SID=abc; Expires=Sun, 6 Nov …<45>SID=abc; Expires=Sun, 06 NOV…<46>SID=abc; Expires=06 Novembre…<42>SID=abc; Expires=06 Nov 1994…<39>SID=abc; Expires=06 Nov 1994…<38>SID=abc; Expires=Sun, 06 Nov…<41>SID=abc; Expires=SID=abc; Expires=Sun, 06 Nov…<51>SID=abc; Expires=Sun,\t06\tN…<51>SID=abc; Expires=07:00:00 08…<46>SID=abc; Domain=.comSID=abc; Domain=co.ukSID=abc; Domain=example.co.ukSID=abc; Domain=xn--mnchen-3ya.deSID=abc; Domain=münchen.deSID=abc; Domain=🍪.euSID=abc; Domain=xn--hj8h.euSID=abc; Domain=xn--SID=abc; Domain=ex_ample.comSID=abc; Domain=a.example.co…<51>SID=abc; Domain=valid.exampl…<46>SID=abc; Path=file:///etc/passwdSID=abc; Path=SID=abc; Path=.SID=abc; Path=/aaaaaaaaaaaaa…<1039>SID=abc; Path=/p; Domain=exa…<93>SID=a\r\nb SID = v SID=SID=a\0bSID=a\x01bSID=a"bSID=caféjustvalue=vnaïve=vS ID=abcSID=a\x7fbSID=abc; Pa\0th=/SID=abc; Path=/a\0btoken[]=nesteddata={"testdata":"JSON"}data=[nested]data="<img src=x />""sid=surrounded-by-doublequo…<40>
RFC (standard)keep cookie, ignore attr (§5.2)—keep cookie, ignore attr (§5.2)keep cookie, ignore attr (§5.2)—keep cookie, last wins (§5.2)——————————————————————6265bis: samesite-av parses6265bis: samesite-av parses6265bis: None requires Secure6265bis: None + Secure6265bis: value is case-insensitivekeep cookie, ignore attr (§5.2)————————————————————§5.1.1: 69 → 2069§5.1.1: 70 → 1970§5.1.1: year ≥ 1601 is valid§5.1.1: hour > 23 fails§5.1.1: day is 12DIGIT§5.1.1: month is case-insensitive§5.1.1: month = first 3 letters§5.1.1: non-digit year tail ignored§5.1.1: year is 24DIGIT§5.1.1: all four fields requiredno date → ignore Expires (§5.2.1)§5.1.1: zone tokens ignored§5.1.1: HTAB is a delimiter§5.1.1: first match binds each field——————————————path-av has no length cap (§4.1.1)—CR/LF must not be smuggledtrim leading/trailing WSPempty value is validCTL is not a cookie-octetCTL is not a cookie-octetDQUOTE is not a cookie-octetnon-ASCII is not a cookie-octetno = → ignore the line (§5.2)empty name — spec-gray (§5.2)non-token name skippednon-token name skippedCTL is not a cookie-octet——non-token name skippedDQUOTE is not a cookie-octet[ ] are cookie-octets—non-token name skipped
consensusSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/❌SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;SecureSID="abc ;Secure❌SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc❌❌❌❌❌SID=abc❌❌❌❌❌SID=abcSID=abc❌SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌SID=abcSID=abc❌❌SID=abcSID=abcSID=abcSID=abc❌SID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.de❌❌SID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.com❌SID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaa❌SID=a\r\nbSID=vSID=❌❌SID=a"bSID=café❌❌naïve=vS ID=abcSID=a\x7fbSID=abcSID=abc ;Path=/a\0btoken[]=nesteddata={"testdata":"JSON"}data=[nested]data="<img src=x />""sid=surrounded-b…<26 chars> ;Secure
rust/kekse (lenient)SID=abc ⚠️
• unrecognised attribute `Priority`
SID=abc ⚠️
• unrecognised attribute `Priority`
SID=abc ⚠️
• malformed `Max-Age` value `banana` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `SameSite` value `Bogus` (attribute dropped, cookie kept)
SID=abc ;Secure ⚠️
• value `1` on the presence-only `Secure` flag (flag set, value discarded)
SID=abc ;Path=/b ⚠️
• duplicate `Path` attribute
SID=abc ;Secure;PartitionedSID=abc ;Partitioned ⚠️
• a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
SID=abc ;Partitioned ⚠️
• value `1` on the presence-only `Partitioned` flag (flag set, value discarded)
• a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
SID=abc ;Secure;Partitioned ⚠️
• duplicate `Partitioned` attribute
__Secure-SID=abc ;Secure__Secure-SID=abc ⚠️
• a `__Secure-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/ ⚠️
• a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/;Domain=example.com ⚠️
• a `__Host-`-prefixed cookie must not carry a `Domain` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/app ⚠️
• a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
__host-SID=abc ⚠️
• a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
• a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
• a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
__host-SID=abc ;Secure;Path=/ ⚠️
• a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;Partitioned ⚠️
• value `false` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;Partitioned ⚠️
• value `true` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;PartitionedPartitioned=falseSID=abc; Partitioned ;Secure❌
cookie `SID` value `\"abc` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie pair `Partitioned` has no `=`
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ⚠️
• malformed `SameSite` value `` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ⚠️
• malformed `Expires` value `not-a-date` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 31 Feb 1994 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1600 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:60:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:60 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `1994-11-06T08:49:37Z` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `11/06/1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06.11.1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `784108177` (attribute dropped, cookie kept)
SID=abc ;Expires=Tue, 01 Jan 2069 00:00:00 GMTSID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 24:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ⚠️
• malformed `Expires` value `06 Nov 19940 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Wed, 08 Nov 2006 07:00:00 GMTSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ⚠️
• malformed `Domain` value `münchen.de` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Domain` value `🍪.eu` (attribute dropped, cookie kept)
SID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.com ⚠️
• duplicate `Domain` attribute
SID=abc ;Domain=valid.example.com ⚠️
• duplicate `Domain` attribute
• malformed `Domain` value `café` (attribute dropped, cookie kept)
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60❌
cookie `SID` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=vSID=❌
cookie `SID` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie `SID` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie `SID` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie `SID` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie pair `justvalue` has no `=`
❌
cookie name `` is empty or not a token
❌
cookie name `naïve` is empty or not a token
❌
cookie name `S ID` is empty or not a token
❌
cookie `SID` value `a\u{7f}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=abc ⚠️
• unrecognised attribute `Pa\0th`
SID=abc ⚠️
• malformed `Path` value `/a\0b` (attribute dropped, cookie kept)
❌
cookie name `token[]` is empty or not a token
❌
cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
data=[nested]data=<img src=x />❌
cookie name `\"sid` is empty or not a token
rust/kekse (strict)SID=abc ⚠️
• unrecognised attribute `Priority`
SID=abc ⚠️
• unrecognised attribute `Priority`
SID=abc ⚠️
• malformed `Max-Age` value `banana` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `SameSite` value `Bogus` (attribute dropped, cookie kept)
SID=abc ;Secure ⚠️
• value `1` on the presence-only `Secure` flag (flag set, value discarded)
SID=abc ;Path=/b ⚠️
• duplicate `Path` attribute
SID=abc ;Secure;PartitionedSID=abc ;Partitioned ⚠️
• a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
SID=abc ;Partitioned ⚠️
• value `1` on the presence-only `Partitioned` flag (flag set, value discarded)
• a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
SID=abc ;Secure;Partitioned ⚠️
• duplicate `Partitioned` attribute
__Secure-SID=abc ;Secure__Secure-SID=abc ⚠️
• a `__Secure-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/ ⚠️
• a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/;Domain=example.com ⚠️
• a `__Host-`-prefixed cookie must not carry a `Domain` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/app ⚠️
• a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
__host-SID=abc ⚠️
• a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
• a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
• a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
__host-SID=abc ;Secure;Path=/ ⚠️
• a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;Partitioned ⚠️
• value `false` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;Partitioned ⚠️
• value `true` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;PartitionedPartitioned=falseSID=abc; Partitioned ;Secure❌
cookie `SID` value `\"abc` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie pair `Partitioned` has no `=`
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ⚠️
• malformed `SameSite` value `` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ⚠️
• malformed `Expires` value `Sunday, 06-Nov-94 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun Nov  6 08:49:37 1994` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Mon, 06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Birthday, 06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `08:49:37 1994 Nov 06` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 94 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:37 GMT (UTC)` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun Nov  6 08:49:37 UTC 1994` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `not-a-date` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 31 Feb 1994 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1600 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:60:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:60 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `1994-11-06T08:49:37Z` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `11/06/1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06.11.1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `784108177` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Tue, 01 Jan 69 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Thu, 01 Jan 70 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 24:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 6 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 NOV 1994 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06 Novembre 1994 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06 Nov 1994AD 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `06 Nov 19940 08:49:37` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 08:49:37 GMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun, 06 Nov 1994 08:49:37 GMT+0100` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `Sun,\t06\tNov\t1994\t08:49:37\tGMT` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Expires` value `07:00:00 08:49:37 06 Nov 1994` (attribute dropped, cookie kept)
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ⚠️
• malformed `Domain` value `münchen.de` (attribute dropped, cookie kept)
SID=abc ⚠️
• malformed `Domain` value `🍪.eu` (attribute dropped, cookie kept)
SID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.com ⚠️
• duplicate `Domain` attribute
SID=abc ;Domain=valid.example.com ⚠️
• duplicate `Domain` attribute
• malformed `Domain` value `café` (attribute dropped, cookie kept)
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60❌
cookie `SID` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=vSID=❌
cookie `SID` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie `SID` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie `SID` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie `SID` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie pair `justvalue` has no `=`
❌
cookie name `` is empty or not a token
❌
cookie name `naïve` is empty or not a token
❌
cookie name `S ID` is empty or not a token
❌
cookie `SID` value `a\u{7f}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=abc ⚠️
• unrecognised attribute `Pa\0th`
SID=abc ⚠️
• malformed `Path` value `/a\0b` (attribute dropped, cookie kept)
❌
cookie name `token[]` is empty or not a token
❌
cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
data=[nested]data=<img src=x />❌
cookie name `\"sid` is empty or not a token
rust/kekse (fail-hard)❌
1 issue(s): unrecognised attribute `Priority`
❌
1 issue(s): unrecognised attribute `Priority`
❌
1 issue(s): malformed `Max-Age` value `banana` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `SameSite` value `Bogus` (attribute dropped, cookie kept)
❌
1 issue(s): value `1` on the presence-only `Secure` flag (flag set, value discarded)
❌
1 issue(s): duplicate `Path` attribute
SID=abc ;Secure;Partitioned❌
1 issue(s): a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
❌
2 issue(s): value `1` on the presence-only `Partitioned` flag (flag set, value discarded); a `Partitioned` cookie requires the `Secure` attribute (CHIPS) (cookie kept as written)
❌
1 issue(s): duplicate `Partitioned` attribute
__Secure-SID=abc ;Secure❌
1 issue(s): a `__Secure-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
__Host-SID=abc ;Secure;Path=/❌
1 issue(s): a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written)
❌
1 issue(s): a `__Host-`-prefixed cookie must not carry a `Domain` attribute (cookie kept as written)
❌
1 issue(s): a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
❌
3 issue(s): a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written); a `__Host-`-prefixed cookie requires the `Secure` attribute (cookie kept as written); a `__Host-`-prefixed cookie requires `Path=/` exactly (cookie kept as written)
❌
1 issue(s): a `__Secure-`/`__Host-` prefix spelled in a non-canonical case (the server contract is exactly `__Secure-` / `__Host-`) (cookie kept as written)
SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.com❌
1 issue(s): value `false` on the presence-only `Partitioned` flag (flag set, value discarded)
❌
1 issue(s): value `true` on the presence-only `Partitioned` flag (flag set, value discarded)
SID=abc ;Secure;PartitionedPartitioned=falseSID=abc; Partitioned ;Secure❌
cookie `SID` value `\"abc` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie pair `Partitioned` has no `=`
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=Lax❌
1 issue(s): malformed `SameSite` value `` (attribute dropped, cookie kept)
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT❌
1 issue(s): malformed `Expires` value `Sunday, 06-Nov-94 08:49:37 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun Nov  6 08:49:37 1994` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Mon, 06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Birthday, 06 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:49:37` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `08:49:37 1994 Nov 06` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 06 Nov 94 08:49:37 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:49:37 GMT (UTC)` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun Nov  6 08:49:37 UTC 1994` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `not-a-date` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 31 Feb 1994 00:00:00 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1600 08:49:37 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:60:00 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:49:60 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `1994-11-06T08:49:37Z` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `11/06/1994 08:49:37` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `06.11.1994 08:49:37` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `784108177` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Tue, 01 Jan 69 00:00:00 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Thu, 01 Jan 70 00:00:00 GMT` (attribute dropped, cookie kept)
SID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMT❌
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 24:00:00 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 6 Nov 1994 08:49:37 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 06 NOV 1994 08:49:37 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `06 Novembre 1994 08:49:37` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `06 Nov 1994AD 08:49:37` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `06 Nov 19940 08:49:37` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 06 Nov 08:49:37 GMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun, 06 Nov 1994 08:49:37 GMT+0100` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `Sun,\t06\tNov\t1994\t08:49:37\tGMT` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Expires` value `07:00:00 08:49:37 06 Nov 1994` (attribute dropped, cookie kept)
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.de❌
1 issue(s): malformed `Domain` value `münchen.de` (attribute dropped, cookie kept)
❌
1 issue(s): malformed `Domain` value `🍪.eu` (attribute dropped, cookie kept)
SID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.com❌
1 issue(s): duplicate `Domain` attribute
❌
2 issue(s): duplicate `Domain` attribute; malformed `Domain` value `café` (attribute dropped, cookie kept)
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60❌
cookie `SID` value `a\r\nb` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
SID=vSID=❌
cookie `SID` value `a\0b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie `SID` value `a\u{1}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie `SID` value `a\"b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie `SID` value `café` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
cookie pair `justvalue` has no `=`
❌
cookie name `` is empty or not a token
❌
cookie name `naïve` is empty or not a token
❌
cookie name `S ID` is empty or not a token
❌
cookie `SID` value `a\u{7f}b` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
❌
1 issue(s): unrecognised attribute `Pa\0th`
❌
1 issue(s): malformed `Path` value `/a\0b` (attribute dropped, cookie kept)
❌
cookie name `token[]` is empty or not a token
❌
cookie `data` value `{\"testdata\":\"JSON\"}` carries a byte outside the accepted set or percent-escapes that are not valid UTF-8
data=[nested]data=<img src=x />❌
cookie name `\"sid` is empty or not a token
rust/cookieSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc; Partitioned ;SecureSID="abc ;Secure ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
❌
the cookie is missing a name/value pair
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Mon, 06 Nov 1600 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Wed, 01 Jan 1969 00:00:00 GMTSID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=🍪.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    rust/cookie
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
❌
the cookie is missing a name/value pair
❌
the cookie's name is empty
naïve=v ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  rust/cookie
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  rust/cookie
(stored)  rejected         stored
rust/cookie_storeSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   rust/cookie_store
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
❌
unable to parse string as cookie::Cookie
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc❌
attempted to utilize an Expired Cookie
❌
attempted to utilize an Expired Cookie
❌
attempted to utilize an Expired Cookie
SID=abc❌
attempted to utilize an Expired Cookie
SID=abcSID=abcSID=abc❌
attempted to utilize an Expired Cookie
SID=abcSID=abcSID=abcSID=abc❌
attempted to utilize an Expired Cookie
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌
attempted to utilize an Expired Cookie
❌
attempted to utilize an Expired Cookie
❌
attempted to utilize an Expired Cookie
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=com❌
request-uri does not domain-match the cookie
❌
request-uri does not domain-match the cookie
❌
request-uri does not domain-match the cookie
❌
request-uri does not domain-match the cookie
❌
request-uri does not domain-match the cookie
❌
request-uri does not domain-match the cookie
❌
unable to parse string as cookie::Cookie
❌
request-uri does not domain-match the cookie
❌
request-uri does not domain-match the cookie
❌
request-uri does not domain-match the cookie
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
❌
unable to parse string as cookie::Cookie
❌
unable to parse string as cookie::Cookie
naïve=v ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  rust/cookie_store
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  rust/cookie_store
(stored)  rejected         stored
python/SimpleCookieSID=abc❌
no cookie parsed
SID=abcSID=abc ;SameSite=Bogus ☢️
field     kekse (lenient)  python/SimpleCookie
SameSite  —                Bogus
SID=abc ;SecureSID=abc ;Path=/b❌
no cookie parsed
❌
no cookie parsed
SID=abc❌
no cookie parsed
__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
SID=abc ;SecureSID=abc ;Secure❌
no cookie parsed
Partitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   python/SimpleCookie
value  abc; Partitioned  abc%3B%20Partitioned
SID=abc; Partitioned ;Secure ☢️
field     kekse (lenient)  python/SimpleCookie
(stored)  rejected         stored
❌
no cookie parsed
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=lAxSID=abcSID=abcSID=abc❌
no cookie parsed
❌
no cookie parsed
SID=abcSID=abc❌
no cookie parsed
❌
no cookie parsed
SID=abc❌
no cookie parsed
❌
no cookie parsed
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌
no cookie parsed
❌
no cookie parsed
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
SID=abc❌
no cookie parsed
SID=abc ⚠️
• CookieError: Control characters are not allowed in cookies 'expires' 'Sun,\t06\tNov\t1994\t08:49:37\tGMT'
❌
no cookie parsed
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abcSID=abcSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=valid.example.comSID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaa❌
no cookie parsed
❌
no cookie parsed
SID=vSID=❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
❌
no cookie parsed
SID=abcSID=abc❌
no cookie parsed
❌
no cookie parsed
data=[nested]data=<img src=x />❌
no cookie parsed
python/http.cookiejarSID=abcSID=abc❌
no cookie accepted
SID=abc ;SameSite=Bogus ☢️
field     kekse (lenient)  python/http.cookiejar
SameSite  —                Bogus
SID=abc ;SecureSID=abc ;Path=/a ☢️
field  kekse (lenient)  python/http.cookiejar
Path   /b               /a
SID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=.example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=.example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   python/http.cookiejar
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=lAxSID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abc❌
no cookie accepted
SID=abcSID=abc❌
no cookie accepted
SID=abc❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=.example.comSID=a\r\nb ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
❌
no cookie accepted
naïve=v ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a%00btoken[]=nested ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  python/http.cookiejar
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  python/http.cookiejar
(stored)  rejected         stored
python/mitmproxySID=abcSID=abcSID=abcSID=abc ;SameSite=Bogus ☢️
field     kekse (lenient)  python/mitmproxy
SameSite  —                Bogus
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedPartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   python/mitmproxy
value  abc; Partitioned  abc%3B%20Partitioned
SID=abc; Partitioned ;Secure ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=lAxSID=abc ;SameSite= ☢️
field     kekse (lenient)  python/mitmproxy
SameSite  —                
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    python/mitmproxy
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID = v ☢️
field  kekse (lenient)  python/mitmproxy
name   SID              SID  
value  v                  v  
SID=SID=a\0b ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
=v ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
data=[nested]data=<img src=x />"sid=surrounded-b…<27 chars> ;Secure ☢️
field     kekse (lenient)  python/mitmproxy
(stored)  rejected         stored
node/tough-cookieSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=none__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedPartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   node/tough-cookie
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
❌
parse returned undefined
SID=abc ;SameSite=strictSID=abc ;SameSite=laxSID=abc ;SameSite=noneSID=abc ;Secure;SameSite=noneSID=abc ;SameSite=laxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Expires=Thu, 03 Mar 1994 00:00:00 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Tue, 01 Jan 2069 00:00:00 GMTSID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Wed, 08 Nov 2006 07:00:00 GMTSID=abc ;Domain=comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=mã¼nchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=cafã© ☢️
field   kekse (lenient)    node/tough-cookie
Domain  valid.example.com  cafã©
SID=abcSID=abcSID=abcSID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=lax;Path=/p;Domain=example.com;Max-Age=60SID=a ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
SID=vSID=SID=a ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
❌
parse returned undefined
SID=a"b ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
❌
parse returned undefined
❌
parse returned undefined
naïve=v ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  node/tough-cookie
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  node/tough-cookie
(stored)  rejected         stored
node/set-cookie-parserSID=abcSID=abcSID=abcSID=abc ;SameSite=Bogus ☢️
field     kekse (lenient)  node/set-cookie-parser
SameSite  —                Bogus
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedPartitioned=falseSID=abc; Partitioned ;SecureSID="abc ;Secure ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
❌
no cookie parsed
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=lAxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Expires=Thu, 03 Mar 1994 00:00:00 GMTSID=abc ;Expires=Mon, 06 Nov 1600 08:49:37 GMTSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:00 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sat, 11 Jun 1994 08:49:37 GMTSID=abcSID=abc ;Expires=Wed, 01 Jan 1969 00:00:00 GMTSID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abc ;Expires=Mon, 07 Nov 1994 00:00:00 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Expires=567105180577SID=abc ;Expires=Tue, 06 Nov 2001 08:49:37 GMTSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 07:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    node/set-cookie-parser
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID = v ☢️
field  kekse (lenient)  node/set-cookie-parser
name   SID                SID  
value  v                  v  
SID=SID=a\0b ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
❌
no cookie parsed
❌
no cookie parsed
naïve=v ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  node/set-cookie-parser
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<27 chars> ;Secure ☢️
field     kekse (lenient)  node/set-cookie-parser
(stored)  rejected         stored
go/net/httpSID=abcSID=abcSID=abcSID=abcSID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure;PartitionedSID=abc ;PartitionedSID=abc ;PartitionedSID=abc ;Secure;Partitioned__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;Partitioned;SameSite=None__Host-SID=abc ;Secure;Partitioned;Path=/SID=abc ;Secure;Partitioned;Domain=example.comSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedSID=abc ;Secure;PartitionedPartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   go/net/http
value  abc; Partitioned  abc%3B%20Partitioned
❌
http: invalid cookie value
❌
http: '=' not found in cookie
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Mon, 06 Nov 1600 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMTSID=abcSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abcSID=abcSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=valid.example.comSID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Partitioned;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60❌
http: invalid cookie value
SID= v ☢️
field  kekse (lenient)  go/net/http
value  v                  v
SID=❌
http: invalid cookie value
❌
http: invalid cookie value
❌
http: invalid cookie value
❌
http: invalid cookie value
❌
http: '=' not found in cookie
❌
http: invalid cookie name
❌
http: invalid cookie name
❌
http: invalid cookie name
❌
http: invalid cookie value
SID=abcSID=abc❌
http: invalid cookie name
❌
http: invalid cookie value
data=[nested]data=<img src=x />❌
http: invalid cookie name
dotnet/Microsoft.Net.Http.HeadersSID=abcSID=abc❌
SetCookieHeaderValue.TryParse returned false
SID=abc❌
SetCookieHeaderValue.TryParse returned false
SID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   dotnet/Microsoft.Net.Http.Headers
value  abc; Partitioned  abc%3B%20Partitioned
SID= ;Secure ☢️
field     kekse (lenient)  dotnet/Microsoft.Net.Http.Headers
(stored)  rejected         stored
❌
SetCookieHeaderValue.TryParse returned false
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abcSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT❌
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Thu, 01 Jan 1970 00:00:00 GMTSID=abc ;Expires=Mon, 01 Jan 1601 00:00:00 GMT❌
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMTSID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
SID=abc ;Expires=Sun, 06 Nov 1994 08:49:37 GMT❌
SetCookieHeaderValue.TryParse returned false
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    dotnet/Microsoft.Net.Http.Headers
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
SID=❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
SID=abcSID=abc ;Path=/a\0b❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
data=[nested]❌
SetCookieHeaderValue.TryParse returned false
❌
SetCookieHeaderValue.TryParse returned false
nginx/proxy (Set-Cookie)≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≠ SID=a%0D%0Ab≠ SID = v≡≠ SID=a%00b≠ SID=a%01b≡≡≡≡≡≡≠ SID=a%7Fb≠ SID=abc; Pa%00th=/≠ SID=abc; Path=/a%00b≡≡≡≡≡
java/Jakarta RESTEasySID=abcSID=abc❌
NumberFormatException: For input string: "banana"
❌
IllegalArgumentException: No enum constant jakarta.ws.rs.core.NewCookie.SameSite.BOGUS
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   java/Jakarta RESTEasy
value  abc; Partitioned  abc%3B%20Partitioned
SID=abc; Partitioned ;Secure ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=Lax❌
NullPointerException: Cannot invoke "String.toUpperCase(java.util.Locale)" because "value" is null
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌
NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
SID=abcSID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    java/Jakarta RESTEasy
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
❌
IllegalArgumentException: name==null
naïve=v ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
data=[nested]data=<img src=x />"sid=surrounded-b…<35 chars> ☢️
field     kekse (lenient)  java/Jakarta RESTEasy
(stored)  rejected         stored
java/Jakarta JerseySID=abcSID=abc❌
NumberFormatException: For input string: "banana"
❌
IllegalArgumentException: No enum constant jakarta.ws.rs.core.NewCookie.SameSite.BOGUS
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   java/Jakarta Jersey
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=LaxSID=abc ;SameSite=NoneSID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=Lax❌
IllegalArgumentException: No enum constant jakarta.ws.rs.core.NewCookie.SameSite.
SID=abcSID=abc❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abcSID=abc❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abc❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abcSID=abcSID=abc❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abc❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abcSID=abc❌
ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
SID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=münchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=café ☢️
field   kekse (lenient)    java/Jakarta Jersey
Domain  valid.example.com  café
SID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
=v ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=a\x7fb ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
data=[nested]data=<img src=x />"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  java/Jakarta Jersey
(stored)  rejected         stored
java/java.net.HttpCookieSID=abcSID=abc❌
IllegalArgumentException: Illegal cookie max-age attribute
SID=abcSID=abc ;SecureSID=abc ;Path=/a ☢️
field  kekse (lenient)  java/java.net.HttpCookie
Path   /b               /a
SID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure__Host-SID=abc ;Secure;Path=/SID=abc ;Secure;Domain=example.comSID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   java/java.net.HttpCookie
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
❌
IllegalArgumentException: Invalid cookie name-value pair
SID=abcSID=abcSID=abcSID=abc ;SecureSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc ;Domain=.comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=mã¼nchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=a.example.com ☢️
field   kekse (lenient)  java/java.net.HttpCookie
Domain  b.example.com    a.example.com
SID=abc ;Domain=valid.example.comSID=abc ;Path=file:///etc/passwdSID=abc ;Path=SID=abc ;Path=.SID=abc ;Path=/aaa...aaaSID=abc ;HttpOnly;Secure;Path=/p;Domain=example.com;Max-Age=60SID=a\r\nb ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=vSID=SID=a\0b ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
❌
IllegalArgumentException: Invalid cookie name-value pair
❌
IllegalArgumentException: Illegal cookie name
❌
IllegalArgumentException: Illegal cookie name
❌
IllegalArgumentException: Illegal cookie name
SID=a\x7fb ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
SID=abcSID=abc ;Path=/a\0btoken[]=nested ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
data=[nested]data=<img src=x />"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  java/java.net.HttpCookie
(stored)  rejected         stored
java/Apache HttpClient5SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;SameSite=Bogus;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
SameSite  —                Bogus
Domain    —                example.com (effective)
SID=abc ;Secure;Domain=example.comSID=abc ;Path=/b;Domain=example.comSID=abc ;Secure;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Secure;Domain=example.com__Secure-SID=abc ;Secure;Domain=example.com__Secure-SID=abc ;Domain=example.com__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/;Domain=example.com__Host-SID=abc ;Secure;Path=/app;Domain=example.com__host-SID=abc ;Domain=example.com__host-SID=abc ;Secure;Path=/;Domain=example.comSID=abc ;Secure;SameSite=None;Domain=example.com__Host-SID=abc ;Secure;Path=/;Domain=example.comSID=abc ;Secure;Domain=example.comSID=abc ;Secure;Domain=example.comSID=abc ;Secure;Domain=example.comSID=abc ;Secure;Domain=example.comPartitioned=false ;Domain=example.comSID=abc%3B%20Partitioned ;Secure;Domain=example.com ☢️
field   kekse (lenient)   java/Apache HttpClient5
value   abc; Partitioned  abc%3B%20Partitioned
Domain  —                 example.com (effective)
SID=abc; Partitioned ;Secure;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
❌
MalformedCookieException: Cookie value is invalid: 'Set-Cookie: Partitioned; SID=abc'
SID=abc ;SameSite=Strict;Domain=example.comSID=abc ;SameSite=Lax;Domain=example.comSID=abc ;SameSite=None;Domain=example.comSID=abc ;Secure;SameSite=None;Domain=example.comSID=abc ;SameSite=lAx;Domain=example.comSID=abc ;SameSite=;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
SameSite  —                
Domain    —                example.com (effective)
SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.com❌
MalformedCookieException: Invalid 'expires' attribute: not-a-date
❌
DateTimeException: Invalid date 'FEBRUARY 31'
❌
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 1600 08:49:37 GMT
❌
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 1994 08:60:00 GMT
❌
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 1994 08:49:60 GMT
❌
MalformedCookieException: Invalid 'expires' attribute: 1994-11-06T08:49:37Z
❌
MalformedCookieException: Invalid 'expires' attribute: 11/06/1994 08:49:37
❌
MalformedCookieException: Invalid 'expires' attribute: 06.11.1994 08:49:37
❌
MalformedCookieException: Invalid 'expires' attribute: 784108177
SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.com❌
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 1994 24:00:00 GMT
SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.com❌
MalformedCookieException: Invalid 'expires' attribute: 06 Nov 19940 08:49:37
❌
MalformedCookieException: Invalid 'expires' attribute: Sun, 06 Nov 08:49:37 GMT
SID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=example.comSID=abc ;Domain=comSID=abc ;Domain=co.ukSID=abc ;Domain=example.co.ukSID=abc ;Domain=xn--mnchen-3ya.deSID=abc ;Domain=mã¼nchen.deSID=abc ;Domain=ð\x9f\x8dª.euSID=abc ;Domain=xn--hj8h.euSID=abc ;Domain=xn--SID=abc ;Domain=ex_ample.comSID=abc ;Domain=b.example.comSID=abc ;Domain=cafã© ☢️
field   kekse (lenient)    java/Apache HttpClient5
Domain  valid.example.com  cafã©
SID=abc ;Path=file:///etc/passwd;Domain=example.comSID=abc ;Path⇒default;Domain=example.comSID=abc ;Path=.;Domain=example.comSID=abc ;Path=/aaa...aaa;Domain=example.comSID=abc ;Secure;SameSite=Lax;Path=/p;Domain=example.com;Max-Age=60SID=a b ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=v ;Domain=example.comSID= ;Domain=example.comSID=a\0b ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=a\x01b ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=ab ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=café ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
❌
no cookie parsed
❌
no cookie parsed
naïve=v ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
S ID=abc ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=a\x7fb ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
SID=abc ;Domain=example.comSID=abc ;Path=/a\0b;Domain=example.comtoken[]=nested ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
data={testdata:JSON} ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
data=[nested] ;Domain=example.comdata=<img src=x /> ;Domain=example.com"sid=surrounded-b…<34 chars> ;Domain=example.com ☢️
field     kekse (lenient)  java/Apache HttpClient5
(stored)  rejected         stored
c/libcurl❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
SID=abc ;Secure;Domain=.example.com❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
SID=abc ;Domain=.comSID=abc ;Domain=.co.ukSID=abc ;Domain=.example.co.ukSID=abc ;Domain=.xn--mnchen-3ya.deSID=abc ;Domain=.münchen.deSID=abc ;Domain=.ð\x9f\x8dª.euSID=abc ;Domain=.xn--hj8h.euSID=abc ;Domain=.xn--SID=abc ;Domain=.ex_ample.comSID=abc ;Domain=.b.example.comSID=abc ;Domain=.café ☢️
field   kekse (lenient)    c/libcurl
Domain  valid.example.com  .café
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
SID=abc ;HttpOnly;Secure;Path=/p;Domain=.example.com❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
❌
libcurl exported no cookie (injection drops a Set-Cookie with no Domain)
client/curlSID=abcSID=abc❌
no cookie accepted
SID=abcSID=abcSID=abc ;Path=/bSID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure❌
no cookie accepted
__Host-SID=abc ;Secure;Path=/❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure__Host-SID=abc ;Secure;Path=/❌
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   client/curl
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abc ;SecureSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
SID=abcSID=abc❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc ;Path=file:///etc/passwdSID=abcSID=abc ;Path=.SID=abc ;Path=/aaa...aaa❌
no cookie accepted
SID=a ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
SID=vSID=❌
no cookie accepted
❌
no cookie accepted
SID=a"b ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
❌
no cookie accepted
=v ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
token[]=nested ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  client/curl
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  client/curl
(stored)  rejected         stored
client/wgetSID=abcSID=abc❌
no cookie accepted
SID=abcSID=abc ;Secure❌
no cookie accepted
SID=abc ;SecureSID=abcSID=abcSID=abc ;Secure__Secure-SID=abc ;Secure__Secure-SID=abc__Host-SID=abc ;Secure;Path=/__Host-SID=abc ;Path=/❌
no cookie accepted
❌
no cookie accepted
__host-SID=abc__host-SID=abc ;Secure;Path=/SID=abc ;Secure__Host-SID=abc ;Secure;Path=/❌
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   client/wget
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc; Partitioned" ;Secure ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abc ;SecureSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
SID=abc❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=a ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=vSID=SID=a ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=a\x01b ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=a"b ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
❌
no cookie accepted
❌
no cookie accepted
naïve=v ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
❌
no cookie accepted
SID=a\x7fb ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
SID=abc❌
no cookie accepted
token[]=nested ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  client/wget
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  client/wget
(stored)  rejected         stored
browser/chromiumSID=abcSID=abcSID=abcSID=abc ;SameSite=Lax ☢️
field     kekse (lenient)  browser/chromium
SameSite  —                Lax
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure❌
no cookie accepted
❌
no cookie accepted
SID=abc ;Secure__Secure-SID=abc ;Secure❌
no cookie accepted
__Host-SID=abc ;Secure;Path=/❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/❌
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   browser/chromium
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
=Partitioned ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=Lax❌
no cookie accepted
SID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ;SameSite=Lax ☢️
field     kekse (lenient)  browser/chromium
SameSite  —                Lax
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abc❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒default❌
no cookie accepted
SID=a ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
SID=vSID=❌
no cookie accepted
❌
no cookie accepted
SID=a"b ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
=justvalue ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
=v ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
token[]=nested ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  browser/chromium
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  browser/chromium
(stored)  rejected         stored
browser/firefoxSID=abcSID=abcSID=abcSID=abc ;SameSite=None ☢️
field     kekse (lenient)  browser/firefox
SameSite  —                None
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure❌
no cookie accepted
❌
no cookie accepted
SID=abc ;Secure__Secure-SID=abc ;Secure❌
no cookie accepted
__Host-SID=abc ;Secure;Path=/❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/❌
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   browser/firefox
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
Partitioned= ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=Lax❌
no cookie accepted
SID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ;SameSite=None ☢️
field     kekse (lenient)  browser/firefox
SameSite  —                None
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
SID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒default❌
no cookie accepted
SID=a ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
SID=vSID=❌
unknown error: Reached error page: about:neterror?e=invalidHeaderValue&u=https%3A//wire.keksbruch.example/r/263&c=UTF-8&d=https%3A//wire.keksbruch.example/r/263%20sent%20back%20a%20header%20with%20empty%20characters%20not%20allowed%20by%20web%20security%20standards.&a=
❌
no cookie accepted
SID=a"b ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
justvalue= ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
❌
no cookie accepted
naïve=v ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
❌
no cookie accepted
❌
unknown error: Reached error page: about:neterror?e=invalidHeaderValue&u=https%3A//wire.keksbruch.example/r/290&c=UTF-8&d=https%3A//wire.keksbruch.example/r/290%20sent%20back%20a%20header%20with%20empty%20characters%20not%20allowed%20by%20web%20security%20standards.&a=
❌
unknown error: Reached error page: about:neterror?e=invalidHeaderValue&u=https%3A//wire.keksbruch.example/r/293&c=UTF-8&d=https%3A//wire.keksbruch.example/r/293%20sent%20back%20a%20header%20with%20empty%20characters%20not%20allowed%20by%20web%20security%20standards.&a=
token[]=nested ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  browser/firefox
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  browser/firefox
(stored)  rejected         stored
browser/edgeSID=abcSID=abcSID=abcSID=abc ;SameSite=Lax ☢️
field     kekse (lenient)  browser/edge
SameSite  —                Lax
SID=abc ;SecureSID=abc ;Path=/bSID=abc ;Secure❌
no cookie accepted
❌
no cookie accepted
SID=abc ;Secure__Secure-SID=abc ;Secure❌
no cookie accepted
__Host-SID=abc ;Secure;Path=/❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
__host-SID=abc ;Secure;Path=/SID=abc ;Secure;SameSite=None__Host-SID=abc ;Secure;Path=/❌
no cookie accepted
SID=abc ;SecureSID=abc ;SecureSID=abc ;SecurePartitioned=falseSID=abc%3B%20Partitioned ;Secure ☢️
field  kekse (lenient)   browser/edge
value  abc; Partitioned  abc%3B%20Partitioned
SID="abc ;Secure ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
=Partitioned ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
SID=abc ;SameSite=StrictSID=abc ;SameSite=Lax❌
no cookie accepted
SID=abc ;Secure;SameSite=NoneSID=abc ;SameSite=LaxSID=abc ;SameSite=Lax ☢️
field     kekse (lenient)  browser/edge
SameSite  —                Lax
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abc❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
SID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abcSID=abcSID=abcSID=abc❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
SID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒defaultSID=abc ;Path⇒default❌
no cookie accepted
SID=a ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
SID=vSID=❌
no cookie accepted
❌
no cookie accepted
SID=a"b ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
SID=café ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
=justvalue ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
=v ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
naïve=v ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
S ID=abc ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
❌
no cookie accepted
❌
no cookie accepted
❌
no cookie accepted
token[]=nested ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
data={"testdata":"JSON"} ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored
data=[nested]data="<img src=x />" ☢️
field  kekse (lenient)  browser/edge
value  <img src=x />    "<img src=x />"
"sid=surrounded-b…<26 chars> ;Secure ☢️
field     kekse (lenient)  browser/edge
(stored)  rejected         stored

Jar probes — domain & path matching (§5.1.3 / §5.1.4)

Domain- and path-matching are two-input relations, so they cannot ride a single wire: each probe stores one Set-Cookie as if received from origin, then asks which cookies the jar would attach to a request to request. [SID=abc] = the cookie is sent; ∅ = it is not — whether the jar refused storage or the match failed (one observable, so the consensus vote works unchanged). rust/rfc_6265 (reference) executes the RFC 6265 §5.3/§5.4 algorithm built directly from that crate's primitives (domain_matches, path_matches, default_path). In the default build it is the bare RFC algorithm — which attaches even a Domain=com supercookie, because rejecting a public suffix is the optional §5.3 step 5; the hardened build applies that policy, like the PSL-aware jars. Codec-only parsers have no jar and drop out of this table. Expiry, eviction, HttpOnly, and SameSite are out of scope here — they are API or time axes, not matching.

jarjar-host-only-exactjar-host-only-subdomainjar-domain-exactjar-domain-parentjar-domain-supersetjar-domain-label-boundaryjar-domain-casejar-domain-leading-dotjar-domain-ipjar-domain-supercookiejar-path-prefix-boundaryjar-path-non-boundaryjar-path-trailing-slashjar-path-default-siblingjar-path-default-outsidejar-path-not-absolutejar-secure-on-http
Set-CookieSID=abcSID=abcSID=abc; Domain=example.comSID=abc; Domain=example.comSID=abc; Domain=sub.example.comSID=abc; Domain=example.comSID=abc; Domain=EXAMPLE.COMSID=abc; Domain=.example.comSID=abc; Domain=127.0.0.1SID=abc; Domain=comSID=abc; Path=/aSID=abc; Path=/aSID=abc; Path=/a/SID=abcSID=abcSID=abc; Path=nameSID=abc; Secure
originhttps://example.com/https://example.com/https://example.com/https://sub.example.com/https://example.com/https://badexample.com/https://example.com/https://sub.example.com/http://127.0.0.1/https://example.com/https://example.com/https://example.com/https://example.com/https://example.com/dir/pagehttps://example.com/dir/pagehttps://example.com/dir/pagehttps://example.com/
requesthttps://example.com/https://sub.example.com/https://example.com/https://other.example.com/https://sub.example.com/https://example.com/https://example.com/https://example.com/http://127.0.0.1/https://not-example.com/https://example.com/a/bhttps://example.com/abhttps://example.com/ahttps://example.com/dir/otherhttps://example.com/elsewherehttps://example.com/dir/otherhttp://example.com/
RFC (standard)host-only: the same host attaches (§5.4)host-only never flows to subdomains (§5.4)a Domain cookie flows to matching hosts (§5.1.3)a Domain cookie flows to matching hosts (§5.1.3)the origin must domain-match Domain (§5.3 step 6)a suffix counts only at a label boundary (§5.1.3)Domain is canonicalized lower-case (§5.1.2)a leading dot is stripped (§5.2.3)an IP host matches only by identity (§5.1.3)rejecting a public-suffix Domain is optional (§5.3 step 5)a path prefix matches at a / boundary (§5.1.4)a prefix without a boundary never matches (§5.1.4)/a/ does not match its parent /a (§5.1.4)no Path → the origin's default-path (§5.3 step 7)no Path → the origin's default-path (§5.3 step 7)a non-/ Path is ignored → default-path (§5.2.4)Secure needs a secure channel (§5.4)
consensus[SID=abc]∅[SID=abc][SID=abc]∅∅[SID=abc][SID=abc][SID=abc]∅[SID=abc]∅∅[SID=abc]∅[SID=abc]∅
rust/cookie_store[SID=abc]∅[SID=abc][SID=abc]∅∅[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]∅∅[SID=abc]∅[SID=abc]∅
rust/rfc_6265 (reference)[SID=abc]∅[SID=abc][SID=abc]∅∅[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]∅∅[SID=abc]∅[SID=abc]∅
rust/kekse (store)[SID=abc]∅[SID=abc][SID=abc]∅∅[SID=abc][SID=abc][SID=abc][SID=abc][SID=abc]∅∅[SID=abc]∅[SID=abc]∅
python/http.cookiejar[SID=abc][SID=abc][SID=abc][SID=abc]∅∅[SID=abc][SID=abc][SID=abc]∅[SID=abc]∅∅[SID=abc]∅∅∅
node/tough-cookie[SID=abc]∅[SID=abc][SID=abc]∅∅[SID=abc][SID=abc]∅∅[SID=abc]∅∅[SID=abc]∅[SID=abc]∅
browser/chromium[SID=abc]∅[SID=abc][SID=abc]∅∅[SID=abc][SID=abc][SID=abc]∅[SID=abc]∅∅[SID=abc]∅[SID=abc][SID=abc]
browser/firefox[SID=abc]∅[SID=abc][SID=abc]∅∅[SID=abc][SID=abc][SID=abc]∅[SID=abc]∅∅[SID=abc]∅[SID=abc]∅
browser/edge[SID=abc]∅[SID=abc][SID=abc]∅∅[SID=abc][SID=abc][SID=abc]∅[SID=abc]∅∅[SID=abc]∅[SID=abc]∅

Attribute fidelity

resp-all-attrs sets all seven non-date attributes; this is which each parser surfaces. ◌ marks an attribute the driver's reporting channel cannot observe (classic WebDriver and the Netscape jar format carry no Partitioned field) — not a drop. ✗ = dropped — except the client jars' Max-Age, which they fold into an absolute expiry rather than report as such. The eighth attribute, Expires, is shown per parser in the date-* columns of the Set-Cookie table above rather than here. Parsers that rejected the cookie outright are omitted.

parserHttpOnlySecureSameSitePathDomainMax-AgePartitioned
rust/kekse (lenient)✓✓✓✓✓✓✓
rust/kekse (strict)✓✓✓✓✓✓✓
rust/kekse (fail-hard)✓✓✓✓✓✓✓
rust/cookie✓✓✓✓✓✓✗
rust/cookie_store✓✓✓✓✓✓✗
python/http.cookiejar✓✓✓✓✓✗✓
python/mitmproxy✓✓✓✓✓✓✓
node/tough-cookie✓✓✓✓✓✓✓
node/set-cookie-parser✓✓✓✓✓✓✓
go/net/http✓✓✓✓✓✓✓
dotnet/Microsoft.Net.Http.Headers✓✓✓✓✓✓◌
java/Jakarta RESTEasy✓✓✓✓✓✓◌
java/Jakarta Jersey✓✓✓✓✓✓◌
java/java.net.HttpCookie✓✓✗✓✓✓◌
java/Apache HttpClient5✗✓✓✓✓✓◌
c/libcurl✓✓✗✓✓✗◌

Calibration

kekse's two dials graded against the answering parse columns, per response row: a wire strict parses clean must be majority-accepted (law A — strict-clean means universally sendable), and a majority-accepted wire must be lenient-accepted (law B — lenient is calibrated to reality) unless it is a listed deliberate deviation with its reason. Store-backed columns (client jars, browsers, cookie_store) report storage policy, not parse verdicts, so they do not vote; subjects never vote. A violation of either law fails the matrix run.

Both laws hold over this run's answering columns (12 deliberate lenient deviation(s) listed below).

scenarioverdictacceptingrejectingreason
resp-quoted-attr-textdeliberate deviation11 (rust/cookie, python/SimpleCookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, dotnet/Microsoft.Net.Http.Headers, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)2 (go/net/http, c/libcurl)§5.2 splits before any unquoting, leaving a bare `"abc` value the octet rule refuses; quote-spanning parsers swallow the attribute into the value instead (with the raw `;` re-emission hazard that carries)
resp-crlfdeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw CR/LF, NUL, or other control byte in a value is the header-injection / log-poison vector kekse refuses in every mode — the permissive majority keeps it, and re-emission then splits or poisons the carrying header
resp-ctl-nuldeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw CR/LF, NUL, or other control byte in a value is the header-injection / log-poison vector kekse refuses in every mode — the permissive majority keeps it, and re-emission then splits or poisons the carrying header
resp-ctl-otherdeliberate deviation8 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)5 (python/SimpleCookie, node/tough-cookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw CR/LF, NUL, or other control byte in a value is the header-injection / log-poison vector kekse refuses in every mode — the permissive majority keeps it, and re-emission then splits or poisons the carrying header
resp-quote-interiordeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a bare DQUOTE is outside the cookie-octet alphabet in both gradings; quote-tolerant parsers keep it and diverge on where the value ends
resp-non-asciideliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw non-ASCII byte is outside the cookie-octet alphabet; percent-encoding is the lossless carrier kekse insists on
resp-non-ascii-namedeliberate deviation8 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/Apache HttpClient5)5 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, java/java.net.HttpCookie, c/libcurl)kekse requires an RFC 7230 token as the cookie-name (deliberately stricter than §5.2's anything-before-`=`): a non-token name has no wire form kekse's own writer could emit, so the pair is refused as unusable
resp-space-in-namedeliberate deviation8 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/Apache HttpClient5)5 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, java/java.net.HttpCookie, c/libcurl)kekse requires an RFC 7230 token as the cookie-name (deliberately stricter than §5.2's anything-before-`=`): a non-token name has no wire form kekse's own writer could emit, so the pair is refused as unusable
resp-del-bytedeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a raw CR/LF, NUL, or other control byte in a value is the header-injection / log-poison vector kekse refuses in every mode — the permissive majority keeps it, and re-emission then splits or poisons the carrying header
resp-array-namedeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)kekse requires an RFC 7230 token as the cookie-name (deliberately stricter than §5.2's anything-before-`=`): a non-token name has no wire form kekse's own writer could emit, so the pair is refused as unusable
resp-json-valuedeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)a bare DQUOTE is outside the cookie-octet alphabet in both gradings; quote-tolerant parsers keep it and diverge on where the value ends
resp-quoted-pair-flagdeliberate deviation9 (rust/cookie, python/http.cookiejar, python/mitmproxy, node/tough-cookie, node/set-cookie-parser, java/Jakarta RESTEasy, java/Jakarta Jersey, java/java.net.HttpCookie, java/Apache HttpClient5)4 (python/SimpleCookie, go/net/http, dotnet/Microsoft.Net.Http.Headers, c/libcurl)kekse requires an RFC 7230 token as the cookie-name (deliberately stricter than §5.2's anything-before-`=`): a non-token name has no wire form kekse's own writer could emit, so the pair is refused as unusable

Tested scenarios

One line per test — the id each matrix column is headed by, and what its wire probes. Outcomes are not repeated here; read them from the tables above (a bold cell diverges from the consensus).

Request Cookie: scenarios

Response Set-Cookie: scenarios

Jar probe scenarios

Remarks

Date/expiry behaviour — what a client cares about — lives in the Set-Cookie section, where Expires is meaningful; the request side carries none. A parsed Expires renders in the cell as ;Expires=<UTC date>; a client jar that folds Expires and Max-Age into one effective (possibly now-relative) expiry reports none, so cells stay reproducible.

Request side: the cookie crate runs in percent-decoding (*_encoded) mode so its values are comparable to kekse's. biscotti is fail-hard and exposes no general iterator, so its accepted pairs are enumerated by name. PHP's $_COOKIE is parsed natively behind its built-in server (php -S), showing PHP's own quirks — value urldecoding, cookie-name mangling, and transport-layer rejection of CR/LF/NUL. A bracketed name (name[]/name[k]) makes PHP build an array/map — the only non-string types here, shown by type name (⟨array⟩/⟨object⟩); every other parser keeps a bracketed name a flat string or drops it. Go (net/http, since 1.23) and .NET (Microsoft.Net.Http.Headers) parse both directions; a toolchain absent from the run shows SKIP (the CI matrix job has them all).

nginx is exercised behind a real openresty server, replayed over a socket like PHP. Its $cookie_<name> column is nginx's native by-name lookup; lua-resty-cookie is an OpenResty Lua library that parses the raw header. nginx/proxy is a fidelity axis — did a proxy_pass forward the request Cookie verbatim (≡), alter it (≠), or refuse it (❌) — and nginx/proxy (Set-Cookie) asks the same of an upstream Set-Cookie forwarded back to a client (nginx exposes no parsed Set-Cookie to Lua, so it is fidelity, not a parse — it escapes a smuggled CR/LF to %0D%0A rather than dropping it). Both are off the consensus vote.

The Java sidecar runs from a JVM image and adds six columns. Two Tomcat request-cookie processors — Tomcat RFC6265 (strict) and Tomcat legacy (lenient) — and the jakarta.ws.rs cookie API via two providers (RESTEasy + Jersey), which parse both directions. For Set-Cookie it also runs the JDK's java.net.HttpCookie and Apache HttpClient5's RFC 6265 spec — the realistic redistributable stand-in for the proprietary BurpSuite parser, which cannot be bundled or run headless.

Set-Cookie side: alongside the pure parsers (kekse, the cookie crate, tough-cookie, SimpleCookie, mitmproxy, Go, .NET, the Java columns) sit the real C HTTP clients. c/libcurl drives libcurl's cookie engine offline in C — it cannot export a cookie injected without a Domain, so host-only cookies show ❌; client/curl and client/wget fetch from a loopback server, the transfer view, where the request host supplies the domain (so host-only cookies parse, while a Domain= mismatching 127.0.0.1 is refused) — the two views are complementary. The browser rows (browser/chromium, browser/firefox, browser/edge) are the engine transfer view: a real headless browser fetches the wire from a loopback https origin (wire.keksbruch.example) and its stored cookie is read back through WebDriver. They run release defaults, so RFC 6265bis policy shows through — the 4096-byte name+value cap, control-byte rejection, the public-suffix list, and each engine's SameSite stance — and a Domain= naming a foreign host is refused at storage like the client columns, though the https origin lets Secure cookies store. Every host also resolves to loopback (127.0.0.1), and a browser may treat a localhost/loopback origin as a potentially-trustworthy secure context even over plain http, relaxing the Secure-attribute channel rule — the likely reason Chromium attaches the cookie on jar-secure-on-http, where §5.4 and the client columns refuse it, so read that browser cell as an artifact of the loopback harness rather than a real-world verdict. A browser cell reports an attribute only when the wire engaged it, because the jar holds effective state rather than attribute text: an unlabeled cookie shows no SameSite even though the engine enforces one, an engaged degenerate value reveals the engine's fallback (Chromium assumes Lax, Firefox None — Lax-by-default is unshipped there), and Path⇒default marks a Path the engine could not use, so the cookie took the request's default-path (§5.1.4) — the fall-back is stated, not the origin's own directory (/r here). Edge shares Chromium's net/cookies unchanged; its column exists to demonstrate that equivalence cell by cell. A parser that crashes on a payload — a panic, a signal, a hang — is marked ☠️ and pinned to that exact payload, distinct from a clean rejection (❌) or an unavailable tool (SKIP).

Reading a browser's date rows: a Set-Cookie with a past Expires is stored and then expired on arrival, so it reads back as a rejection (❌), whereas an unparsable date drops the attribute and leaves a session cookie that stores (a name=value cell). So on the past-dated rows a ❌ means the engine parsed the date and a stored cell means it could not — the reverse of the intuitive reading — which turns the date-* rows into an engine date-parser map (Firefox, for one, accepts 24:00:00, 31 Feb, and 11/06/1994 where Chromium refuses them).

The ☢️ marker is the expectation-compliance axis, mirroring consensus onto kekse: it flags a response cell whose tool parsed the wire differently than kekse did, kekse being the reference we assert is correct. Most fire where a tool stores a cookie kekse refuses as malformed — an interior ", a raw non-ASCII or DEL byte, a smuggled CR/LF (stored as the truncated prefix), a SameSite token kekse drops as unknown — so the rows where real clients are more permissive than kekse are visible at a glance rather than buried in a divergent cell. A jar's storage-effective values — a substituted default-path (rendered Path⇒default, uniform across the browser, curl/wget/libcurl and HttpClient5 columns), a derived host — and its folded Max-Age/Expires are not parse disagreements and never raise the marker; the HTML report's hover shows every field, contradiction and lossy alike.

Jar probes: the rfc_6265 reference, Rust's cookie_store, Python's http.cookiejar, Node's tough-cookie, and the three browser engines (a real store-then-navigate round trip — the server reports the Cookie header the engine actually attached) answer today; the Go, .NET, and Java client jars and the curl/wget transfer view are follow-ups (their sidecars answer n/a per protocol v2).

The same matrix is written beside this file as COOKIE_MATRIX.csv.

Tested against

gronke/kekse · MIT licensed