proofs/crypto/hash/incremental.bend

bend-collections-laws-crypto@1.0.0.0 · 1,068 lines · 27 definitions

1# Generated by tools/generators/hash_gen.py; do not edit by hand.
2import Base
3import bend-collections-laws-crypto@1.0.0.0/src/crypto/sha/state.bend as S256
4import bend-collections-laws-crypto@1.0.0.0/src/crypto/sha/core.bend as C256
5import bend-collections-laws-crypto@1.0.0.0/src/crypto/sha/sha256.bend as SHA256
6import bend-collections-laws-crypto@1.0.0.0/src/crypto/sha512/types.bend as T512
7import bend-collections-laws-crypto@1.0.0.0/src/crypto/sha512/core.bend as C512
8import bend-collections-laws-crypto@1.0.0.0/src/crypto/keccak/types.bend as TK
9import bend-collections-laws-crypto@1.0.0.0/src/crypto/keccak/permutation.bend as P
10import bend-collections-laws-crypto@1.0.0.0/src/crypto/sha3/core.bend as C3
11import bend-collections-laws-crypto@1.0.0.0/src/crypto/hash.bend as H
12import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend as SC
13import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/lists.bend as L
14
15# The incremental hasher equals the one-shot hash for every split of the input
16# (the invariant of HACL*'s Hacl.Streaming.Functor, without its ghost state):
17# with G the algorithm's block loop over a byte list, a hasher whose state is
18# (s, buf) after the chunks so far satisfies, for every continuation z,
19#
20#   G(chunks so far ++ z, initial) == G(buf ++ z, s).
21#
22# absorbX_inv: one call of the block reader keeps it; foldX_inv: every update
23# keeps it; incrementalX: digest pads buf with the total length, which is the
24# one-shot padding of the whole message (z = the padding). The round
25# parameter q (48, 64, 24) stays a variable in every lemma that unfolds a block.
26
27# ---------------------------------------------------------------- SHA-256 (FIPS 180-4)
28
29def st256(st: H.Sha256State) -> S256.State:
30  match st:
31    case H.St256{s, b}:
32      s
33
34def buf256(st: H.Sha256State) -> List<&2, U32>:
35  match st:
36    case H.St256{s, b}:
37      b
38
39law absorb256_inv:
40  for +fuel: Nat
41  for +bytes: List<&2, U32>
42  for +q: Nat
43  for +s: S256.State
44  for +z: List<&2, U32>
45  {C256.block_bytes(List.append(&2, U32, bytes, z), q, C256.round_constants(), s) == C256.block_bytes(List.append(&2, U32, buf256(H.absorb256(fuel, H.read256_0(bytes), bytes, q, s)), z), q, C256.round_constants(), st256(H.absorb256(fuel, H.read256_0(bytes), bytes, q, s))) : S256.State}
46
47def absorb256_inv(fuel, bytes, q, s, z):
48  match fuel:
49    case 0n:
50      {==}
51    case 1n+p:
52      match bytes:
53        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> rest:
54          +fast = C256.fips_compress16(C256.pack(b0, b1, b2, b3), C256.pack(b4, b5, b6, b7), C256.pack(b8, b9, b10, b11), C256.pack(b12, b13, b14, b15), C256.pack(b16, b17, b18, b19), C256.pack(b20, b21, b22, b23), C256.pack(b24, b25, b26, b27), C256.pack(b28, b29, b30, b31), C256.pack(b32, b33, b34, b35), C256.pack(b36, b37, b38, b39), C256.pack(b40, b41, b42, b43), C256.pack(b44, b45, b46, b47), C256.pack(b48, b49, b50, b51), C256.pack(b52, b53, b54, b55), C256.pack(b56, b57, b58, b59), C256.pack(b60, b61, b62, b63), q, s)
55          %SC.fips16_correct(C256.pack(b0, b1, b2, b3), C256.pack(b4, b5, b6, b7), C256.pack(b8, b9, b10, b11), C256.pack(b12, b13, b14, b15), C256.pack(b16, b17, b18, b19), C256.pack(b20, b21, b22, b23), C256.pack(b24, b25, b26, b27), C256.pack(b28, b29, b30, b31), C256.pack(b32, b33, b34, b35), C256.pack(b36, b37, b38, b39), C256.pack(b40, b41, b42, b43), C256.pack(b44, b45, b46, b47), C256.pack(b48, b49, b50, b51), C256.pack(b52, b53, b54, b55), C256.pack(b56, b57, b58, b59), C256.pack(b60, b61, b62, b63), q, s) :
56            {C256.block_bytes(List.append(&2, U32, rest, z), q, C256.round_constants(), _) == C256.block_bytes(List.append(&2, U32, buf256(H.absorb256(p, H.read256_0(rest), rest, q, fast)), z), q, C256.round_constants(), st256(H.absorb256(p, H.read256_0(rest), rest, q, fast))) : S256.State}
57          absorb256_inv(p, rest, q, fast, z)
58        case Nil{}:
59          {==}
60        case b0 <> Nil{}:
61          {==}
62        case b0 <> b1 <> Nil{}:
63          {==}
64        case b0 <> b1 <> b2 <> Nil{}:
65          {==}
66        case b0 <> b1 <> b2 <> b3 <> Nil{}:
67          {==}
68        case b0 <> b1 <> b2 <> b3 <> b4 <> Nil{}:
69          {==}
70        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> Nil{}:
71          {==}
72        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> Nil{}:
73          {==}
74        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> Nil{}:
75          {==}
76        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> Nil{}:
77          {==}
78        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> Nil{}:
79          {==}
80        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> Nil{}:
81          {==}
82        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> Nil{}:
83          {==}
84        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> Nil{}:
85          {==}
86        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> Nil{}:
87          {==}
88        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> Nil{}:
89          {==}
90        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> Nil{}:
91          {==}
92        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> Nil{}:
93          {==}
94        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> Nil{}:
95          {==}
96        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> Nil{}:
97          {==}
98        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> Nil{}:
99          {==}
100        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> Nil{}:
101          {==}
102        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> Nil{}:
103          {==}
104        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> Nil{}:
105          {==}
106        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> Nil{}:
107          {==}
108        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> Nil{}:
109          {==}
110        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> Nil{}:
111          {==}
112        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> Nil{}:
113          {==}
114        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> Nil{}:
115          {==}
116        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> Nil{}:
117          {==}
118        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> Nil{}:
119          {==}
120        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> Nil{}:
121          {==}
122        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> Nil{}:
123          {==}
124        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> Nil{}:
125          {==}
126        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> Nil{}:
127          {==}
128        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> Nil{}:
129          {==}
130        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> Nil{}:
131          {==}
132        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> Nil{}:
133          {==}
134        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> Nil{}:
135          {==}
136        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> Nil{}:
137          {==}
138        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> Nil{}:
139          {==}
140        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> Nil{}:
141          {==}
142        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> Nil{}:
143          {==}
144        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> Nil{}:
145          {==}
146        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> Nil{}:
147          {==}
148        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> Nil{}:
149          {==}
150        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> Nil{}:
151          {==}
152        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> Nil{}:
153          {==}
154        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> Nil{}:
155          {==}
156        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> Nil{}:
157          {==}
158        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> Nil{}:
159          {==}
160        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> Nil{}:
161          {==}
162        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> Nil{}:
163          {==}
164        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> Nil{}:
165          {==}
166        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> Nil{}:
167          {==}
168        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> Nil{}:
169          {==}
170        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> Nil{}:
171          {==}
172        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> Nil{}:
173          {==}
174        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> Nil{}:
175          {==}
176        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> Nil{}:
177          {==}
178        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> Nil{}:
179          {==}
180        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> Nil{}:
181          {==}
182        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> Nil{}:
183          {==}
184        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> Nil{}:
185          {==}
186
187law step256_inv:
188  for +st: H.Sha256State
189  for +xs: List<&2, U32>
190  for +q: Nat
191  for +z: List<&2, U32>
192  {C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), xs), z), q, C256.round_constants(), st256(st)) == C256.block_bytes(List.append(&2, U32, buf256(H.step256(st, xs, q)), z), q, C256.round_constants(), st256(H.step256(st, xs, q))) : S256.State}
193
194def step256_inv(st, xs, q, z):
195  match st:
196    case H.St256{s, buf}:
197      absorb256_inv(List.length(&2, U32, List.append(&2, U32, buf, xs)), List.append(&2, U32, buf, xs), q, s, z)
198
199# The state after each chunk in turn.
200def fold256(cs: List<&2, List<&2, U32>>, +q: Nat, st: H.Sha256State) -> H.Sha256State:
201  match cs:
202    case Nil{}:
203      st
204    case c <> ct:
205      fold256(ct, q, H.step256(st, c, q))
206
207law fold256_inv:
208  for +cs: List<&2, List<&2, U32>>
209  for +q: Nat
210  for +st: H.Sha256State
211  for +z: List<&2, U32>
212  {C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), List.concat(&2, U32, cs)), z), q, C256.round_constants(), st256(st)) == C256.block_bytes(List.append(&2, U32, buf256(fold256(cs, q, st)), z), q, C256.round_constants(), st256(fold256(cs, q, st))) : S256.State}
213
214def fold256_inv(cs, q, st, z):
215  match cs:
216    case Nil{}:
217      %L.append_nil(buf256(st)) :
218        {C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), Nil{}), z), q, C256.round_constants(), st256(st)) == C256.block_bytes(List.append(&2, U32, _, z), q, C256.round_constants(), st256(st)) : S256.State}
219      {==}
220    case c <> ct:
221      +st2 = H.step256(st, c, q)
222      +m = List.concat(&2, U32, ct)
223      Equal.trans(S256.State,
224        C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), List.append(&2, U32, c, m)), z), q, C256.round_constants(), st256(st)),
225        C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), c), List.append(&2, U32, m, z)), q, C256.round_constants(), st256(st)),
226        C256.block_bytes(List.append(&2, U32, buf256(fold256(ct, q, st2)), z), q, C256.round_constants(), st256(fold256(ct, q, st2))),
227        Equal.cong(List<&2, U32>, S256.State, t => C256.block_bytes(t, q, C256.round_constants(), st256(st)),
228          List.append(&2, U32, List.append(&2, U32, buf256(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, buf256(st), c), List.append(&2, U32, m, z)),
229          Equal.trans(List<&2, U32>, List.append(&2, U32, List.append(&2, U32, buf256(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, List.append(&2, U32, buf256(st), c), m), z), List.append(&2, U32, List.append(&2, U32, buf256(st), c), List.append(&2, U32, m, z)),
230            Equal.cong(List<&2, U32>, List<&2, U32>, t => List.append(&2, U32, t, z),
231              List.append(&2, U32, buf256(st), List.append(&2, U32, c, m)), List.append(&2, U32, List.append(&2, U32, buf256(st), c), m), L.append_assoc_rev(buf256(st), c, m)),
232            L.append_assoc(List.append(&2, U32, buf256(st), c), m, z))),
233        Equal.trans(S256.State, C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), c), List.append(&2, U32, m, z)), q, C256.round_constants(), st256(st)), C256.block_bytes(List.append(&2, U32, buf256(st2), List.append(&2, U32, m, z)), q, C256.round_constants(), st256(st2)), C256.block_bytes(List.append(&2, U32, buf256(fold256(ct, q, st2)), z), q, C256.round_constants(), st256(fold256(ct, q, st2))),
234          step256_inv(st, c, q, List.append(&2, U32, m, z)),
235          Equal.trans(S256.State, C256.block_bytes(List.append(&2, U32, buf256(st2), List.append(&2, U32, m, z)), q, C256.round_constants(), st256(st2)), C256.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st2), m), z), q, C256.round_constants(), st256(st2)), C256.block_bytes(List.append(&2, U32, buf256(fold256(ct, q, st2)), z), q, C256.round_constants(), st256(fold256(ct, q, st2))),
236            Equal.cong(List<&2, U32>, S256.State, t => C256.block_bytes(t, q, C256.round_constants(), st256(st2)),
237              List.append(&2, U32, buf256(st2), List.append(&2, U32, m, z)), List.append(&2, U32, List.append(&2, U32, buf256(st2), m), z), L.append_assoc_rev(buf256(st2), m, z)),
238            fold256_inv(ct, q, st2, z))))
239
240law state256:
241  for +cs: List<&2, List<&2, U32>>
242  for +st: H.Sha256State
243  for +len: Nat
244  {H.fold(cs, H.Sha256H{st, len}) == H.Sha256H{fold256(cs, 48n, st), Nat.add(len, List.length(&2, U32, List.concat(&2, U32, cs)))} : H.Hasher}
245
246def state256(cs, st, len):
247  match cs:
248    case Nil{}:
249      Equal.cong(Nat, H.Hasher, t => H.Sha256H{st, t}, len, Nat.add(len, 0n),
250        Equal.sym(Nat, Nat.add(len, 0n), len, L.add_zero(len)))
251    case c <> ct:
252      +m = List.concat(&2, U32, ct)
253      %L.add_length(len, c, m) :
254        {H.fold(c <> ct, H.Sha256H{st, len}) == H.Sha256H{fold256(ct, 48n, H.step256(st, c, 48n)), _} : H.Hasher}
255      state256(ct, H.step256(st, c, 48n), Nat.add(len, List.length(&2, U32, c)))
256
257law finish256_eta:
258  for +st: H.Sha256State
259  for +len: Nat
260  for +q: Nat
261  {H.finish256(st, len, q) == SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, buf256(st), C256.suffix(len)), q, C256.round_constants(), st256(st)))) : List<&2, U32>}
262
263def finish256_eta(st, len, q):
264  match st:
265    case H.St256{s, buf}:
266      {==}
267
268# digest(update_all(new, chunks)) is the padded block loop over concat(chunks).
269law incremental256:
270  for +cs: List<&2, List<&2, U32>>
271  {H.digest(H.update_all(H.new_sha256(), cs)) == SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, List.concat(&2, U32, cs), C256.suffix(List.length(&2, U32, List.concat(&2, U32, cs)))), 48n, C256.round_constants(), C256.initial()))) : List<&2, U32>}
272
273def incremental256(cs):
274  +m = List.concat(&2, U32, cs)
275  +qs = fold256(cs, 48n, H.St256{C256.initial(), Nil{}})
276  %Equal.sym(H.Hasher, H.fold(cs, H.Sha256H{H.St256{C256.initial(), Nil{}}, 0n}), H.Sha256H{qs, List.length(&2, U32, m)},
277    state256(cs, H.St256{C256.initial(), Nil{}}, 0n)) :
278    {H.digest(_) == SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, List.concat(&2, U32, cs), C256.suffix(List.length(&2, U32, List.concat(&2, U32, cs)))), 48n, C256.round_constants(), C256.initial()))) : List<&2, U32>}
279  %Equal.sym(List<&2, U32>, H.finish256(qs, List.length(&2, U32, m), 48n), SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, buf256(qs), C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), st256(qs)))),
280    finish256_eta(qs, List.length(&2, U32, m), 48n)) :
281    {_ == SHA256.digest_bytes(C256.digest(C256.block_bytes(List.append(&2, U32, List.concat(&2, U32, cs), C256.suffix(List.length(&2, U32, List.concat(&2, U32, cs)))), 48n, C256.round_constants(), C256.initial()))) : List<&2, U32>}
282  Equal.cong(S256.State, List<&2, U32>, t => SHA256.digest_bytes(C256.digest(t)),
283    C256.block_bytes(List.append(&2, U32, buf256(qs), C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), st256(qs)), C256.block_bytes(List.append(&2, U32, m, C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), C256.initial()),
284    Equal.sym(S256.State, C256.block_bytes(List.append(&2, U32, m, C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), C256.initial()), C256.block_bytes(List.append(&2, U32, buf256(qs), C256.suffix(List.length(&2, U32, m))), 48n, C256.round_constants(), st256(qs)), fold256_inv(cs, 48n, H.St256{C256.initial(), Nil{}}, C256.suffix(List.length(&2, U32, m)))))
285
286# ---------------------------------------------------------------- SHA-512 (FIPS 180-4)
287
288def st512(st: H.Sha512State) -> T512.State:
289  match st:
290    case H.St512{s, b}:
291      s
292
293def buf512(st: H.Sha512State) -> List<&2, U32>:
294  match st:
295    case H.St512{s, b}:
296      b
297
298law absorb512_inv:
299  for +fuel: Nat
300  for +bytes: List<&2, U32>
301  for +q: Nat
302  for +s: T512.State
303  for +z: List<&2, U32>
304  {C512.blocks(C512.lanes(List.append(&2, U32, bytes, z)), q, C512.round_constants(), s) == C512.blocks(C512.lanes(List.append(&2, U32, buf512(H.absorb512(fuel, H.read512_0(bytes), bytes, q, s)), z)), q, C512.round_constants(), st512(H.absorb512(fuel, H.read512_0(bytes), bytes, q, s))) : T512.State}
305
306def absorb512_inv(fuel, bytes, q, s, z):
307  match fuel:
308    case 0n:
309      {==}
310    case 1n+p:
311      match bytes:
312        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> rest:
313          absorb512_inv(p, rest, q, C512.compress16(T512.W{C512.pack(b0, b1, b2, b3), C512.pack(b4, b5, b6, b7)}, T512.W{C512.pack(b8, b9, b10, b11), C512.pack(b12, b13, b14, b15)}, T512.W{C512.pack(b16, b17, b18, b19), C512.pack(b20, b21, b22, b23)}, T512.W{C512.pack(b24, b25, b26, b27), C512.pack(b28, b29, b30, b31)}, T512.W{C512.pack(b32, b33, b34, b35), C512.pack(b36, b37, b38, b39)}, T512.W{C512.pack(b40, b41, b42, b43), C512.pack(b44, b45, b46, b47)}, T512.W{C512.pack(b48, b49, b50, b51), C512.pack(b52, b53, b54, b55)}, T512.W{C512.pack(b56, b57, b58, b59), C512.pack(b60, b61, b62, b63)}, T512.W{C512.pack(b64, b65, b66, b67), C512.pack(b68, b69, b70, b71)}, T512.W{C512.pack(b72, b73, b74, b75), C512.pack(b76, b77, b78, b79)}, T512.W{C512.pack(b80, b81, b82, b83), C512.pack(b84, b85, b86, b87)}, T512.W{C512.pack(b88, b89, b90, b91), C512.pack(b92, b93, b94, b95)}, T512.W{C512.pack(b96, b97, b98, b99), C512.pack(b100, b101, b102, b103)}, T512.W{C512.pack(b104, b105, b106, b107), C512.pack(b108, b109, b110, b111)}, T512.W{C512.pack(b112, b113, b114, b115), C512.pack(b116, b117, b118, b119)}, T512.W{C512.pack(b120, b121, b122, b123), C512.pack(b124, b125, b126, b127)}, q, C512.round_constants(), s), z)
314        case Nil{}:
315          {==}
316        case b0 <> Nil{}:
317          {==}
318        case b0 <> b1 <> Nil{}:
319          {==}
320        case b0 <> b1 <> b2 <> Nil{}:
321          {==}
322        case b0 <> b1 <> b2 <> b3 <> Nil{}:
323          {==}
324        case b0 <> b1 <> b2 <> b3 <> b4 <> Nil{}:
325          {==}
326        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> Nil{}:
327          {==}
328        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> Nil{}:
329          {==}
330        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> Nil{}:
331          {==}
332        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> Nil{}:
333          {==}
334        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> Nil{}:
335          {==}
336        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> Nil{}:
337          {==}
338        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> Nil{}:
339          {==}
340        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> Nil{}:
341          {==}
342        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> Nil{}:
343          {==}
344        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> Nil{}:
345          {==}
346        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> Nil{}:
347          {==}
348        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> Nil{}:
349          {==}
350        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> Nil{}:
351          {==}
352        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> Nil{}:
353          {==}
354        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> Nil{}:
355          {==}
356        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> Nil{}:
357          {==}
358        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> Nil{}:
359          {==}
360        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> Nil{}:
361          {==}
362        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> Nil{}:
363          {==}
364        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> Nil{}:
365          {==}
366        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> Nil{}:
367          {==}
368        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> Nil{}:
369          {==}
370        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> Nil{}:
371          {==}
372        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> Nil{}:
373          {==}
374        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> Nil{}:
375          {==}
376        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> Nil{}:
377          {==}
378        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> Nil{}:
379          {==}
380        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> Nil{}:
381          {==}
382        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> Nil{}:
383          {==}
384        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> Nil{}:
385          {==}
386        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> Nil{}:
387          {==}
388        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> Nil{}:
389          {==}
390        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> Nil{}:
391          {==}
392        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> Nil{}:
393          {==}
394        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> Nil{}:
395          {==}
396        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> Nil{}:
397          {==}
398        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> Nil{}:
399          {==}
400        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> Nil{}:
401          {==}
402        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> Nil{}:
403          {==}
404        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> Nil{}:
405          {==}
406        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> Nil{}:
407          {==}
408        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> Nil{}:
409          {==}
410        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> Nil{}:
411          {==}
412        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> Nil{}:
413          {==}
414        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> Nil{}:
415          {==}
416        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> Nil{}:
417          {==}
418        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> Nil{}:
419          {==}
420        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> Nil{}:
421          {==}
422        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> Nil{}:
423          {==}
424        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> Nil{}:
425          {==}
426        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> Nil{}:
427          {==}
428        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> Nil{}:
429          {==}
430        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> Nil{}:
431          {==}
432        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> Nil{}:
433          {==}
434        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> Nil{}:
435          {==}
436        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> Nil{}:
437          {==}
438        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> Nil{}:
439          {==}
440        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> Nil{}:
441          {==}
442        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> Nil{}:
443          {==}
444        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> Nil{}:
445          {==}
446        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> Nil{}:
447          {==}
448        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> Nil{}:
449          {==}
450        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> Nil{}:
451          {==}
452        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> Nil{}:
453          {==}
454        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> Nil{}:
455          {==}
456        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> Nil{}:
457          {==}
458        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> Nil{}:
459          {==}
460        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> Nil{}:
461          {==}
462        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> Nil{}:
463          {==}
464        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> Nil{}:
465          {==}
466        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> Nil{}:
467          {==}
468        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> Nil{}:
469          {==}
470        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> Nil{}:
471          {==}
472        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> Nil{}:
473          {==}
474        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> Nil{}:
475          {==}
476        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> Nil{}:
477          {==}
478        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> Nil{}:
479          {==}
480        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> Nil{}:
481          {==}
482        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> Nil{}:
483          {==}
484        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> Nil{}:
485          {==}
486        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> Nil{}:
487          {==}
488        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> Nil{}:
489          {==}
490        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> Nil{}:
491          {==}
492        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> Nil{}:
493          {==}
494        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> Nil{}:
495          {==}
496        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> Nil{}:
497          {==}
498        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> Nil{}:
499          {==}
500        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> Nil{}:
501          {==}
502        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> Nil{}:
503          {==}
504        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> Nil{}:
505          {==}
506        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> Nil{}:
507          {==}
508        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> Nil{}:
509          {==}
510        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> Nil{}:
511          {==}
512        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> Nil{}:
513          {==}
514        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> Nil{}:
515          {==}
516        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> Nil{}:
517          {==}
518        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> Nil{}:
519          {==}
520        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> Nil{}:
521          {==}
522        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> Nil{}:
523          {==}
524        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> Nil{}:
525          {==}
526        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> Nil{}:
527          {==}
528        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> Nil{}:
529          {==}
530        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> Nil{}:
531          {==}
532        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> Nil{}:
533          {==}
534        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> Nil{}:
535          {==}
536        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> Nil{}:
537          {==}
538        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> Nil{}:
539          {==}
540        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> Nil{}:
541          {==}
542        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> Nil{}:
543          {==}
544        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> Nil{}:
545          {==}
546        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> Nil{}:
547          {==}
548        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> Nil{}:
549          {==}
550        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> Nil{}:
551          {==}
552        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> Nil{}:
553          {==}
554        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> Nil{}:
555          {==}
556        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> Nil{}:
557          {==}
558        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> Nil{}:
559          {==}
560        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> Nil{}:
561          {==}
562        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> Nil{}:
563          {==}
564        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> Nil{}:
565          {==}
566        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> Nil{}:
567          {==}
568        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> Nil{}:
569          {==}
570
571law step512_inv:
572  for +st: H.Sha512State
573  for +xs: List<&2, U32>
574  for +q: Nat
575  for +z: List<&2, U32>
576  {C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), xs), z)), q, C512.round_constants(), st512(st)) == C512.blocks(C512.lanes(List.append(&2, U32, buf512(H.step512(st, xs, q)), z)), q, C512.round_constants(), st512(H.step512(st, xs, q))) : T512.State}
577
578def step512_inv(st, xs, q, z):
579  match st:
580    case H.St512{s, buf}:
581      absorb512_inv(List.length(&2, U32, List.append(&2, U32, buf, xs)), List.append(&2, U32, buf, xs), q, s, z)
582
583# The state after each chunk in turn.
584def fold512(cs: List<&2, List<&2, U32>>, +q: Nat, st: H.Sha512State) -> H.Sha512State:
585  match cs:
586    case Nil{}:
587      st
588    case c <> ct:
589      fold512(ct, q, H.step512(st, c, q))
590
591law fold512_inv:
592  for +cs: List<&2, List<&2, U32>>
593  for +q: Nat
594  for +st: H.Sha512State
595  for +z: List<&2, U32>
596  {C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), List.concat(&2, U32, cs)), z)), q, C512.round_constants(), st512(st)) == C512.blocks(C512.lanes(List.append(&2, U32, buf512(fold512(cs, q, st)), z)), q, C512.round_constants(), st512(fold512(cs, q, st))) : T512.State}
597
598def fold512_inv(cs, q, st, z):
599  match cs:
600    case Nil{}:
601      %L.append_nil(buf512(st)) :
602        {C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), Nil{}), z)), q, C512.round_constants(), st512(st)) == C512.blocks(C512.lanes(List.append(&2, U32, _, z)), q, C512.round_constants(), st512(st)) : T512.State}
603      {==}
604    case c <> ct:
605      +st2 = H.step512(st, c, q)
606      +m = List.concat(&2, U32, ct)
607      Equal.trans(T512.State,
608        C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), List.append(&2, U32, c, m)), z)), q, C512.round_constants(), st512(st)),
609        C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), c), List.append(&2, U32, m, z))), q, C512.round_constants(), st512(st)),
610        C512.blocks(C512.lanes(List.append(&2, U32, buf512(fold512(ct, q, st2)), z)), q, C512.round_constants(), st512(fold512(ct, q, st2))),
611        Equal.cong(List<&2, U32>, T512.State, t => C512.blocks(C512.lanes(t), q, C512.round_constants(), st512(st)),
612          List.append(&2, U32, List.append(&2, U32, buf512(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, buf512(st), c), List.append(&2, U32, m, z)),
613          Equal.trans(List<&2, U32>, List.append(&2, U32, List.append(&2, U32, buf512(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, List.append(&2, U32, buf512(st), c), m), z), List.append(&2, U32, List.append(&2, U32, buf512(st), c), List.append(&2, U32, m, z)),
614            Equal.cong(List<&2, U32>, List<&2, U32>, t => List.append(&2, U32, t, z),
615              List.append(&2, U32, buf512(st), List.append(&2, U32, c, m)), List.append(&2, U32, List.append(&2, U32, buf512(st), c), m), L.append_assoc_rev(buf512(st), c, m)),
616            L.append_assoc(List.append(&2, U32, buf512(st), c), m, z))),
617        Equal.trans(T512.State, C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), c), List.append(&2, U32, m, z))), q, C512.round_constants(), st512(st)), C512.blocks(C512.lanes(List.append(&2, U32, buf512(st2), List.append(&2, U32, m, z))), q, C512.round_constants(), st512(st2)), C512.blocks(C512.lanes(List.append(&2, U32, buf512(fold512(ct, q, st2)), z)), q, C512.round_constants(), st512(fold512(ct, q, st2))),
618          step512_inv(st, c, q, List.append(&2, U32, m, z)),
619          Equal.trans(T512.State, C512.blocks(C512.lanes(List.append(&2, U32, buf512(st2), List.append(&2, U32, m, z))), q, C512.round_constants(), st512(st2)), C512.blocks(C512.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st2), m), z)), q, C512.round_constants(), st512(st2)), C512.blocks(C512.lanes(List.append(&2, U32, buf512(fold512(ct, q, st2)), z)), q, C512.round_constants(), st512(fold512(ct, q, st2))),
620            Equal.cong(List<&2, U32>, T512.State, t => C512.blocks(C512.lanes(t), q, C512.round_constants(), st512(st2)),
621              List.append(&2, U32, buf512(st2), List.append(&2, U32, m, z)), List.append(&2, U32, List.append(&2, U32, buf512(st2), m), z), L.append_assoc_rev(buf512(st2), m, z)),
622            fold512_inv(ct, q, st2, z))))
623
624law state512:
625  for +cs: List<&2, List<&2, U32>>
626  for +st: H.Sha512State
627  for +len: Nat
628  {H.fold(cs, H.Sha512H{st, len}) == H.Sha512H{fold512(cs, 64n, st), Nat.add(len, List.length(&2, U32, List.concat(&2, U32, cs)))} : H.Hasher}
629
630def state512(cs, st, len):
631  match cs:
632    case Nil{}:
633      Equal.cong(Nat, H.Hasher, t => H.Sha512H{st, t}, len, Nat.add(len, 0n),
634        Equal.sym(Nat, Nat.add(len, 0n), len, L.add_zero(len)))
635    case c <> ct:
636      +m = List.concat(&2, U32, ct)
637      %L.add_length(len, c, m) :
638        {H.fold(c <> ct, H.Sha512H{st, len}) == H.Sha512H{fold512(ct, 64n, H.step512(st, c, 64n)), _} : H.Hasher}
639      state512(ct, H.step512(st, c, 64n), Nat.add(len, List.length(&2, U32, c)))
640
641law finish512_eta:
642  for +st: H.Sha512State
643  for +len: Nat
644  for +q: Nat
645  {H.finish512(st, len, q) == C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, buf512(st), C512.suffix(len))), q, C512.round_constants(), st512(st))) : List<&2, U32>}
646
647def finish512_eta(st, len, q):
648  match st:
649    case H.St512{s, buf}:
650      {==}
651
652# digest(update_all(new, chunks)) is the padded block loop over concat(chunks).
653law incremental512:
654  for +cs: List<&2, List<&2, U32>>
655  {H.digest(H.update_all(H.new_sha512(), cs)) == C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C512.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 64n, C512.round_constants(), C512.initial())) : List<&2, U32>}
656
657def incremental512(cs):
658  +m = List.concat(&2, U32, cs)
659  +qs = fold512(cs, 64n, H.St512{C512.initial(), Nil{}})
660  %Equal.sym(H.Hasher, H.fold(cs, H.Sha512H{H.St512{C512.initial(), Nil{}}, 0n}), H.Sha512H{qs, List.length(&2, U32, m)},
661    state512(cs, H.St512{C512.initial(), Nil{}}, 0n)) :
662    {H.digest(_) == C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C512.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 64n, C512.round_constants(), C512.initial())) : List<&2, U32>}
663  %Equal.sym(List<&2, U32>, H.finish512(qs, List.length(&2, U32, m), 64n), C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, buf512(qs), C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), st512(qs))),
664    finish512_eta(qs, List.length(&2, U32, m), 64n)) :
665    {_ == C512.digest_bytes(C512.blocks(C512.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C512.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 64n, C512.round_constants(), C512.initial())) : List<&2, U32>}
666  Equal.cong(T512.State, List<&2, U32>, t => C512.digest_bytes(t),
667    C512.blocks(C512.lanes(List.append(&2, U32, buf512(qs), C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), st512(qs)), C512.blocks(C512.lanes(List.append(&2, U32, m, C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), C512.initial()),
668    Equal.sym(T512.State, C512.blocks(C512.lanes(List.append(&2, U32, m, C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), C512.initial()), C512.blocks(C512.lanes(List.append(&2, U32, buf512(qs), C512.suffix(List.length(&2, U32, m)))), 64n, C512.round_constants(), st512(qs)), fold512_inv(cs, 64n, H.St512{C512.initial(), Nil{}}, C512.suffix(List.length(&2, U32, m)))))
669
670# ---------------------------------------------------------------- SHA3-256 (FIPS 202)
671
672def st3(st: H.Sha3State) -> TK.State:
673  match st:
674    case H.St3{s, b}:
675      s
676
677def buf3(st: H.Sha3State) -> List<&2, U32>:
678  match st:
679    case H.St3{s, b}:
680      b
681
682law absorb3_inv:
683  for +fuel: Nat
684  for +bytes: List<&2, U32>
685  for +q: Nat
686  for +s: TK.State
687  for +z: List<&2, U32>
688  {C3.absorb(C3.lanes(List.append(&2, U32, bytes, z)), q, s) == C3.absorb(C3.lanes(List.append(&2, U32, buf3(H.absorb3(fuel, H.read3_0(bytes), bytes, q, s)), z)), q, st3(H.absorb3(fuel, H.read3_0(bytes), bytes, q, s))) : TK.State}
689
690def absorb3_inv(fuel, bytes, q, s, z):
691  match fuel:
692    case 0n:
693      {==}
694    case 1n+p:
695      match bytes:
696        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> b132 <> b133 <> b134 <> b135 <> rest:
697          absorb3_inv(p, rest, q, P.rounds(q, 0n, C3.inject(s, TK.W{C3.pack(b0, b1, b2, b3), C3.pack(b4, b5, b6, b7)}, TK.W{C3.pack(b8, b9, b10, b11), C3.pack(b12, b13, b14, b15)}, TK.W{C3.pack(b16, b17, b18, b19), C3.pack(b20, b21, b22, b23)}, TK.W{C3.pack(b24, b25, b26, b27), C3.pack(b28, b29, b30, b31)}, TK.W{C3.pack(b32, b33, b34, b35), C3.pack(b36, b37, b38, b39)}, TK.W{C3.pack(b40, b41, b42, b43), C3.pack(b44, b45, b46, b47)}, TK.W{C3.pack(b48, b49, b50, b51), C3.pack(b52, b53, b54, b55)}, TK.W{C3.pack(b56, b57, b58, b59), C3.pack(b60, b61, b62, b63)}, TK.W{C3.pack(b64, b65, b66, b67), C3.pack(b68, b69, b70, b71)}, TK.W{C3.pack(b72, b73, b74, b75), C3.pack(b76, b77, b78, b79)}, TK.W{C3.pack(b80, b81, b82, b83), C3.pack(b84, b85, b86, b87)}, TK.W{C3.pack(b88, b89, b90, b91), C3.pack(b92, b93, b94, b95)}, TK.W{C3.pack(b96, b97, b98, b99), C3.pack(b100, b101, b102, b103)}, TK.W{C3.pack(b104, b105, b106, b107), C3.pack(b108, b109, b110, b111)}, TK.W{C3.pack(b112, b113, b114, b115), C3.pack(b116, b117, b118, b119)}, TK.W{C3.pack(b120, b121, b122, b123), C3.pack(b124, b125, b126, b127)}, TK.W{C3.pack(b128, b129, b130, b131), C3.pack(b132, b133, b134, b135)})), z)
698        case Nil{}:
699          {==}
700        case b0 <> Nil{}:
701          {==}
702        case b0 <> b1 <> Nil{}:
703          {==}
704        case b0 <> b1 <> b2 <> Nil{}:
705          {==}
706        case b0 <> b1 <> b2 <> b3 <> Nil{}:
707          {==}
708        case b0 <> b1 <> b2 <> b3 <> b4 <> Nil{}:
709          {==}
710        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> Nil{}:
711          {==}
712        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> Nil{}:
713          {==}
714        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> Nil{}:
715          {==}
716        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> Nil{}:
717          {==}
718        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> Nil{}:
719          {==}
720        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> Nil{}:
721          {==}
722        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> Nil{}:
723          {==}
724        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> Nil{}:
725          {==}
726        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> Nil{}:
727          {==}
728        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> Nil{}:
729          {==}
730        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> Nil{}:
731          {==}
732        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> Nil{}:
733          {==}
734        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> Nil{}:
735          {==}
736        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> Nil{}:
737          {==}
738        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> Nil{}:
739          {==}
740        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> Nil{}:
741          {==}
742        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> Nil{}:
743          {==}
744        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> Nil{}:
745          {==}
746        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> Nil{}:
747          {==}
748        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> Nil{}:
749          {==}
750        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> Nil{}:
751          {==}
752        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> Nil{}:
753          {==}
754        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> Nil{}:
755          {==}
756        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> Nil{}:
757          {==}
758        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> Nil{}:
759          {==}
760        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> Nil{}:
761          {==}
762        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> Nil{}:
763          {==}
764        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> Nil{}:
765          {==}
766        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> Nil{}:
767          {==}
768        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> Nil{}:
769          {==}
770        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> Nil{}:
771          {==}
772        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> Nil{}:
773          {==}
774        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> Nil{}:
775          {==}
776        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> Nil{}:
777          {==}
778        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> Nil{}:
779          {==}
780        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> Nil{}:
781          {==}
782        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> Nil{}:
783          {==}
784        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> Nil{}:
785          {==}
786        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> Nil{}:
787          {==}
788        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> Nil{}:
789          {==}
790        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> Nil{}:
791          {==}
792        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> Nil{}:
793          {==}
794        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> Nil{}:
795          {==}
796        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> Nil{}:
797          {==}
798        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> Nil{}:
799          {==}
800        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> Nil{}:
801          {==}
802        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> Nil{}:
803          {==}
804        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> Nil{}:
805          {==}
806        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> Nil{}:
807          {==}
808        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> Nil{}:
809          {==}
810        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> Nil{}:
811          {==}
812        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> Nil{}:
813          {==}
814        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> Nil{}:
815          {==}
816        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> Nil{}:
817          {==}
818        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> Nil{}:
819          {==}
820        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> Nil{}:
821          {==}
822        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> Nil{}:
823          {==}
824        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> Nil{}:
825          {==}
826        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> Nil{}:
827          {==}
828        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> Nil{}:
829          {==}
830        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> Nil{}:
831          {==}
832        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> Nil{}:
833          {==}
834        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> Nil{}:
835          {==}
836        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> Nil{}:
837          {==}
838        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> Nil{}:
839          {==}
840        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> Nil{}:
841          {==}
842        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> Nil{}:
843          {==}
844        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> Nil{}:
845          {==}
846        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> Nil{}:
847          {==}
848        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> Nil{}:
849          {==}
850        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> Nil{}:
851          {==}
852        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> Nil{}:
853          {==}
854        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> Nil{}:
855          {==}
856        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> Nil{}:
857          {==}
858        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> Nil{}:
859          {==}
860        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> Nil{}:
861          {==}
862        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> Nil{}:
863          {==}
864        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> Nil{}:
865          {==}
866        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> Nil{}:
867          {==}
868        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> Nil{}:
869          {==}
870        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> Nil{}:
871          {==}
872        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> Nil{}:
873          {==}
874        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> Nil{}:
875          {==}
876        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> Nil{}:
877          {==}
878        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> Nil{}:
879          {==}
880        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> Nil{}:
881          {==}
882        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> Nil{}:
883          {==}
884        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> Nil{}:
885          {==}
886        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> Nil{}:
887          {==}
888        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> Nil{}:
889          {==}
890        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> Nil{}:
891          {==}
892        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> Nil{}:
893          {==}
894        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> Nil{}:
895          {==}
896        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> Nil{}:
897          {==}
898        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> Nil{}:
899          {==}
900        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> Nil{}:
901          {==}
902        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> Nil{}:
903          {==}
904        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> Nil{}:
905          {==}
906        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> Nil{}:
907          {==}
908        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> Nil{}:
909          {==}
910        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> Nil{}:
911          {==}
912        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> Nil{}:
913          {==}
914        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> Nil{}:
915          {==}
916        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> Nil{}:
917          {==}
918        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> Nil{}:
919          {==}
920        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> Nil{}:
921          {==}
922        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> Nil{}:
923          {==}
924        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> Nil{}:
925          {==}
926        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> Nil{}:
927          {==}
928        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> Nil{}:
929          {==}
930        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> Nil{}:
931          {==}
932        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> Nil{}:
933          {==}
934        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> Nil{}:
935          {==}
936        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> Nil{}:
937          {==}
938        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> Nil{}:
939          {==}
940        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> Nil{}:
941          {==}
942        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> Nil{}:
943          {==}
944        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> Nil{}:
945          {==}
946        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> Nil{}:
947          {==}
948        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> Nil{}:
949          {==}
950        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> Nil{}:
951          {==}
952        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> Nil{}:
953          {==}
954        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> Nil{}:
955          {==}
956        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> Nil{}:
957          {==}
958        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> Nil{}:
959          {==}
960        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> Nil{}:
961          {==}
962        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> Nil{}:
963          {==}
964        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> b132 <> Nil{}:
965          {==}
966        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> b132 <> b133 <> Nil{}:
967          {==}
968        case b0 <> b1 <> b2 <> b3 <> b4 <> b5 <> b6 <> b7 <> b8 <> b9 <> b10 <> b11 <> b12 <> b13 <> b14 <> b15 <> b16 <> b17 <> b18 <> b19 <> b20 <> b21 <> b22 <> b23 <> b24 <> b25 <> b26 <> b27 <> b28 <> b29 <> b30 <> b31 <> b32 <> b33 <> b34 <> b35 <> b36 <> b37 <> b38 <> b39 <> b40 <> b41 <> b42 <> b43 <> b44 <> b45 <> b46 <> b47 <> b48 <> b49 <> b50 <> b51 <> b52 <> b53 <> b54 <> b55 <> b56 <> b57 <> b58 <> b59 <> b60 <> b61 <> b62 <> b63 <> b64 <> b65 <> b66 <> b67 <> b68 <> b69 <> b70 <> b71 <> b72 <> b73 <> b74 <> b75 <> b76 <> b77 <> b78 <> b79 <> b80 <> b81 <> b82 <> b83 <> b84 <> b85 <> b86 <> b87 <> b88 <> b89 <> b90 <> b91 <> b92 <> b93 <> b94 <> b95 <> b96 <> b97 <> b98 <> b99 <> b100 <> b101 <> b102 <> b103 <> b104 <> b105 <> b106 <> b107 <> b108 <> b109 <> b110 <> b111 <> b112 <> b113 <> b114 <> b115 <> b116 <> b117 <> b118 <> b119 <> b120 <> b121 <> b122 <> b123 <> b124 <> b125 <> b126 <> b127 <> b128 <> b129 <> b130 <> b131 <> b132 <> b133 <> b134 <> Nil{}:
969          {==}
970
971law step3_inv:
972  for +st: H.Sha3State
973  for +xs: List<&2, U32>
974  for +q: Nat
975  for +z: List<&2, U32>
976  {C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), xs), z)), q, st3(st)) == C3.absorb(C3.lanes(List.append(&2, U32, buf3(H.step3(st, xs, q)), z)), q, st3(H.step3(st, xs, q))) : TK.State}
977
978def step3_inv(st, xs, q, z):
979  match st:
980    case H.St3{s, buf}:
981      absorb3_inv(List.length(&2, U32, List.append(&2, U32, buf, xs)), List.append(&2, U32, buf, xs), q, s, z)
982
983# The state after each chunk in turn.
984def fold3(cs: List<&2, List<&2, U32>>, +q: Nat, st: H.Sha3State) -> H.Sha3State:
985  match cs:
986    case Nil{}:
987      st
988    case c <> ct:
989      fold3(ct, q, H.step3(st, c, q))
990
991law fold3_inv:
992  for +cs: List<&2, List<&2, U32>>
993  for +q: Nat
994  for +st: H.Sha3State
995  for +z: List<&2, U32>
996  {C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), List.concat(&2, U32, cs)), z)), q, st3(st)) == C3.absorb(C3.lanes(List.append(&2, U32, buf3(fold3(cs, q, st)), z)), q, st3(fold3(cs, q, st))) : TK.State}
997
998def fold3_inv(cs, q, st, z):
999  match cs:
1000    case Nil{}:
1001      %L.append_nil(buf3(st)) :
1002        {C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), Nil{}), z)), q, st3(st)) == C3.absorb(C3.lanes(List.append(&2, U32, _, z)), q, st3(st)) : TK.State}
1003      {==}
1004    case c <> ct:
1005      +st2 = H.step3(st, c, q)
1006      +m = List.concat(&2, U32, ct)
1007      Equal.trans(TK.State,
1008        C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), List.append(&2, U32, c, m)), z)), q, st3(st)),
1009        C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), c), List.append(&2, U32, m, z))), q, st3(st)),
1010        C3.absorb(C3.lanes(List.append(&2, U32, buf3(fold3(ct, q, st2)), z)), q, st3(fold3(ct, q, st2))),
1011        Equal.cong(List<&2, U32>, TK.State, t => C3.absorb(C3.lanes(t), q, st3(st)),
1012          List.append(&2, U32, List.append(&2, U32, buf3(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, buf3(st), c), List.append(&2, U32, m, z)),
1013          Equal.trans(List<&2, U32>, List.append(&2, U32, List.append(&2, U32, buf3(st), List.append(&2, U32, c, m)), z), List.append(&2, U32, List.append(&2, U32, List.append(&2, U32, buf3(st), c), m), z), List.append(&2, U32, List.append(&2, U32, buf3(st), c), List.append(&2, U32, m, z)),
1014            Equal.cong(List<&2, U32>, List<&2, U32>, t => List.append(&2, U32, t, z),
1015              List.append(&2, U32, buf3(st), List.append(&2, U32, c, m)), List.append(&2, U32, List.append(&2, U32, buf3(st), c), m), L.append_assoc_rev(buf3(st), c, m)),
1016            L.append_assoc(List.append(&2, U32, buf3(st), c), m, z))),
1017        Equal.trans(TK.State, C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), c), List.append(&2, U32, m, z))), q, st3(st)), C3.absorb(C3.lanes(List.append(&2, U32, buf3(st2), List.append(&2, U32, m, z))), q, st3(st2)), C3.absorb(C3.lanes(List.append(&2, U32, buf3(fold3(ct, q, st2)), z)), q, st3(fold3(ct, q, st2))),
1018          step3_inv(st, c, q, List.append(&2, U32, m, z)),
1019          Equal.trans(TK.State, C3.absorb(C3.lanes(List.append(&2, U32, buf3(st2), List.append(&2, U32, m, z))), q, st3(st2)), C3.absorb(C3.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st2), m), z)), q, st3(st2)), C3.absorb(C3.lanes(List.append(&2, U32, buf3(fold3(ct, q, st2)), z)), q, st3(fold3(ct, q, st2))),
1020            Equal.cong(List<&2, U32>, TK.State, t => C3.absorb(C3.lanes(t), q, st3(st2)),
1021              List.append(&2, U32, buf3(st2), List.append(&2, U32, m, z)), List.append(&2, U32, List.append(&2, U32, buf3(st2), m), z), L.append_assoc_rev(buf3(st2), m, z)),
1022            fold3_inv(ct, q, st2, z))))
1023
1024law state3:
1025  for +cs: List<&2, List<&2, U32>>
1026  for +st: H.Sha3State
1027  for +len: Nat
1028  {H.fold(cs, H.Sha3H{st, len}) == H.Sha3H{fold3(cs, 24n, st), Nat.add(len, List.length(&2, U32, List.concat(&2, U32, cs)))} : H.Hasher}
1029
1030def state3(cs, st, len):
1031  match cs:
1032    case Nil{}:
1033      Equal.cong(Nat, H.Hasher, t => H.Sha3H{st, t}, len, Nat.add(len, 0n),
1034        Equal.sym(Nat, Nat.add(len, 0n), len, L.add_zero(len)))
1035    case c <> ct:
1036      +m = List.concat(&2, U32, ct)
1037      %L.add_length(len, c, m) :
1038        {H.fold(c <> ct, H.Sha3H{st, len}) == H.Sha3H{fold3(ct, 24n, H.step3(st, c, 24n)), _} : H.Hasher}
1039      state3(ct, H.step3(st, c, 24n), Nat.add(len, List.length(&2, U32, c)))
1040
1041law finish3_eta:
1042  for +st: H.Sha3State
1043  for +len: Nat
1044  for +q: Nat
1045  {H.finish3(st, len, q) == C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, buf3(st), C3.suffix(len))), q, st3(st))) : List<&2, U32>}
1046
1047def finish3_eta(st, len, q):
1048  match st:
1049    case H.St3{s, buf}:
1050      {==}
1051
1052# digest(update_all(new, chunks)) is the padded block loop over concat(chunks).
1053law incremental3:
1054  for +cs: List<&2, List<&2, U32>>
1055  {H.digest(H.update_all(H.new_sha3_256(), cs)) == C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C3.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 24n, C3.zero())) : List<&2, U32>}
1056
1057def incremental3(cs):
1058  +m = List.concat(&2, U32, cs)
1059  +qs = fold3(cs, 24n, H.St3{C3.zero(), Nil{}})
1060  %Equal.sym(H.Hasher, H.fold(cs, H.Sha3H{H.St3{C3.zero(), Nil{}}, 0n}), H.Sha3H{qs, List.length(&2, U32, m)},
1061    state3(cs, H.St3{C3.zero(), Nil{}}, 0n)) :
1062    {H.digest(_) == C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C3.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 24n, C3.zero())) : List<&2, U32>}
1063  %Equal.sym(List<&2, U32>, H.finish3(qs, List.length(&2, U32, m), 24n), C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, buf3(qs), C3.suffix(List.length(&2, U32, m)))), 24n, st3(qs))),
1064    finish3_eta(qs, List.length(&2, U32, m), 24n)) :
1065    {_ == C3.digest_bytes(C3.absorb(C3.lanes(List.append(&2, U32, List.concat(&2, U32, cs), C3.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 24n, C3.zero())) : List<&2, U32>}
1066  Equal.cong(TK.State, List<&2, U32>, t => C3.digest_bytes(t),
1067    C3.absorb(C3.lanes(List.append(&2, U32, buf3(qs), C3.suffix(List.length(&2, U32, m)))), 24n, st3(qs)), C3.absorb(C3.lanes(List.append(&2, U32, m, C3.suffix(List.length(&2, U32, m)))), 24n, C3.zero()),
1068    Equal.sym(TK.State, C3.absorb(C3.lanes(List.append(&2, U32, m, C3.suffix(List.length(&2, U32, m)))), 24n, C3.zero()), C3.absorb(C3.lanes(List.append(&2, U32, buf3(qs), C3.suffix(List.length(&2, U32, m)))), 24n, st3(qs)), fold3_inv(cs, 24n, H.St3{C3.zero(), Nil{}}, C3.suffix(List.length(&2, U32, m)))))