aria.bend
bend-osdev-aria@0.1.0.0 · 4,618 lines · 0 definitions
1# ARIA (RFC 5794, A Description of the ARIA Encryption Algorithm, 2010): a
2# 128-bit block cipher with 128-, 192- or 256-bit keys (12, 14 or 16
3# rounds), as a cipher for the 128-bit modes (~LcAriaKey,
4# ~LcAria.encrypt, ~LcAria.decrypt).
5#
6# Each round but the last is the round key XORed in, a substitution layer
7# (SL1 in odd rounds, SL2 in even ones) and the diffusion layer A; the last
8# is the round key, SL2 and the final round key. SL1 applies SB1, SB2, SB3,
9# SB4 to the bytes in turn and SL2 applies SB3, SB4, SB1, SB2; SB3 and SB4
10# are the inverses of SB1 and SB2, so SL2 undoes SL1 and SL1 undoes SL2.
11#
12# The cipher works on the block's 16 bytes, each kept as its eight bits
13# (LcAriaSt), and the key holds it as a list of steps. Decryption undoes the
14# steps last to first: a round key by XOR, SL1 by SL2 and SL2 by SL1, A by
15# its elementary steps undone in reverse order (gen/tables.py writes A as a
16# chain of steps x_a ^= x_b). That is the same function as RFC 5794's
17# decryption with the keys dk (A is an involution), and it makes
18# decrypt(encrypt(b)) == b provable for every key and block: each S-box and
19# its inverse are checked on all 256 bytes, and every other step is undone
20# by XOR. The S-boxes are decision trees on a byte's bits (no table is built
21# at run time); the key schedule works on whole words.
22import Base
23import bend-osdev-bytes@0.1.1.0/bytes.bend as B
24import bend-osdev-word64@0.1.1.0/word64.bend as W
25import bend-osdev-mode-core@0.1.0.0/mode_core.bend as M
26import bend-osdev-cipher-core@0.1.0.0/cipher_core.bend as L
27
28# BEGIN GENERATED by gen/tables.py: sboxes
29# SB1 (RFC 5794, 2.4.2; the AES S-box), on a byte's bits, least significant
30# first
31def aria.sb1(w0: Word(8n)) -> Word(8n):
32 match w0:
33 case WCon{False{}, w1}:
34 match w1:
35 case WCon{False{}, w2}:
36 match w2:
37 case WCon{False{}, w3}:
38 match w3:
39 case WCon{False{}, w4}:
40 match w4:
41 case WCon{False{}, w5}:
42 match w5:
43 case WCon{False{}, w6}:
44 match w6:
45 case WCon{False{}, w7}:
46 match w7:
47 case WCon{False{}, w8}:
48 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
49 case WCon{True{}, w8}:
50 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
51 case WCon{True{}, w7}:
52 match w7:
53 case WCon{False{}, w8}:
54 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
55 case WCon{True{}, w8}:
56 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
57 case WCon{True{}, w6}:
58 match w6:
59 case WCon{False{}, w7}:
60 match w7:
61 case WCon{False{}, w8}:
62 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
63 case WCon{True{}, w8}:
64 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
65 case WCon{True{}, w7}:
66 match w7:
67 case WCon{False{}, w8}:
68 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
69 case WCon{True{}, w8}:
70 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
71 case WCon{True{}, w5}:
72 match w5:
73 case WCon{False{}, w6}:
74 match w6:
75 case WCon{False{}, w7}:
76 match w7:
77 case WCon{False{}, w8}:
78 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
79 case WCon{True{}, w8}:
80 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
81 case WCon{True{}, w7}:
82 match w7:
83 case WCon{False{}, w8}:
84 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
85 case WCon{True{}, w8}:
86 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
87 case WCon{True{}, w6}:
88 match w6:
89 case WCon{False{}, w7}:
90 match w7:
91 case WCon{False{}, w8}:
92 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
93 case WCon{True{}, w8}:
94 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
95 case WCon{True{}, w7}:
96 match w7:
97 case WCon{False{}, w8}:
98 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
99 case WCon{True{}, w8}:
100 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
101 case WCon{True{}, w4}:
102 match w4:
103 case WCon{False{}, w5}:
104 match w5:
105 case WCon{False{}, w6}:
106 match w6:
107 case WCon{False{}, w7}:
108 match w7:
109 case WCon{False{}, w8}:
110 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
111 case WCon{True{}, w8}:
112 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
113 case WCon{True{}, w7}:
114 match w7:
115 case WCon{False{}, w8}:
116 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
117 case WCon{True{}, w8}:
118 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
119 case WCon{True{}, w6}:
120 match w6:
121 case WCon{False{}, w7}:
122 match w7:
123 case WCon{False{}, w8}:
124 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
125 case WCon{True{}, w8}:
126 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
127 case WCon{True{}, w7}:
128 match w7:
129 case WCon{False{}, w8}:
130 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
131 case WCon{True{}, w8}:
132 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
133 case WCon{True{}, w5}:
134 match w5:
135 case WCon{False{}, w6}:
136 match w6:
137 case WCon{False{}, w7}:
138 match w7:
139 case WCon{False{}, w8}:
140 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
141 case WCon{True{}, w8}:
142 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
143 case WCon{True{}, w7}:
144 match w7:
145 case WCon{False{}, w8}:
146 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
147 case WCon{True{}, w8}:
148 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
149 case WCon{True{}, w6}:
150 match w6:
151 case WCon{False{}, w7}:
152 match w7:
153 case WCon{False{}, w8}:
154 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
155 case WCon{True{}, w8}:
156 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
157 case WCon{True{}, w7}:
158 match w7:
159 case WCon{False{}, w8}:
160 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
161 case WCon{True{}, w8}:
162 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
163 case WCon{True{}, w3}:
164 match w3:
165 case WCon{False{}, w4}:
166 match w4:
167 case WCon{False{}, w5}:
168 match w5:
169 case WCon{False{}, w6}:
170 match w6:
171 case WCon{False{}, w7}:
172 match w7:
173 case WCon{False{}, w8}:
174 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
175 case WCon{True{}, w8}:
176 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
177 case WCon{True{}, w7}:
178 match w7:
179 case WCon{False{}, w8}:
180 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
181 case WCon{True{}, w8}:
182 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
183 case WCon{True{}, w6}:
184 match w6:
185 case WCon{False{}, w7}:
186 match w7:
187 case WCon{False{}, w8}:
188 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
189 case WCon{True{}, w8}:
190 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
191 case WCon{True{}, w7}:
192 match w7:
193 case WCon{False{}, w8}:
194 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
195 case WCon{True{}, w8}:
196 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
197 case WCon{True{}, w5}:
198 match w5:
199 case WCon{False{}, w6}:
200 match w6:
201 case WCon{False{}, w7}:
202 match w7:
203 case WCon{False{}, w8}:
204 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
205 case WCon{True{}, w8}:
206 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
207 case WCon{True{}, w7}:
208 match w7:
209 case WCon{False{}, w8}:
210 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
211 case WCon{True{}, w8}:
212 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
213 case WCon{True{}, w6}:
214 match w6:
215 case WCon{False{}, w7}:
216 match w7:
217 case WCon{False{}, w8}:
218 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
219 case WCon{True{}, w8}:
220 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
221 case WCon{True{}, w7}:
222 match w7:
223 case WCon{False{}, w8}:
224 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
225 case WCon{True{}, w8}:
226 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
227 case WCon{True{}, w4}:
228 match w4:
229 case WCon{False{}, w5}:
230 match w5:
231 case WCon{False{}, w6}:
232 match w6:
233 case WCon{False{}, w7}:
234 match w7:
235 case WCon{False{}, w8}:
236 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
237 case WCon{True{}, w8}:
238 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
239 case WCon{True{}, w7}:
240 match w7:
241 case WCon{False{}, w8}:
242 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
243 case WCon{True{}, w8}:
244 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
245 case WCon{True{}, w6}:
246 match w6:
247 case WCon{False{}, w7}:
248 match w7:
249 case WCon{False{}, w8}:
250 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
251 case WCon{True{}, w8}:
252 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
253 case WCon{True{}, w7}:
254 match w7:
255 case WCon{False{}, w8}:
256 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
257 case WCon{True{}, w8}:
258 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
259 case WCon{True{}, w5}:
260 match w5:
261 case WCon{False{}, w6}:
262 match w6:
263 case WCon{False{}, w7}:
264 match w7:
265 case WCon{False{}, w8}:
266 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
267 case WCon{True{}, w8}:
268 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
269 case WCon{True{}, w7}:
270 match w7:
271 case WCon{False{}, w8}:
272 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
273 case WCon{True{}, w8}:
274 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
275 case WCon{True{}, w6}:
276 match w6:
277 case WCon{False{}, w7}:
278 match w7:
279 case WCon{False{}, w8}:
280 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
281 case WCon{True{}, w8}:
282 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
283 case WCon{True{}, w7}:
284 match w7:
285 case WCon{False{}, w8}:
286 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
287 case WCon{True{}, w8}:
288 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
289 case WCon{True{}, w2}:
290 match w2:
291 case WCon{False{}, w3}:
292 match w3:
293 case WCon{False{}, w4}:
294 match w4:
295 case WCon{False{}, w5}:
296 match w5:
297 case WCon{False{}, w6}:
298 match w6:
299 case WCon{False{}, w7}:
300 match w7:
301 case WCon{False{}, w8}:
302 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
303 case WCon{True{}, w8}:
304 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
305 case WCon{True{}, w7}:
306 match w7:
307 case WCon{False{}, w8}:
308 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
309 case WCon{True{}, w8}:
310 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
311 case WCon{True{}, w6}:
312 match w6:
313 case WCon{False{}, w7}:
314 match w7:
315 case WCon{False{}, w8}:
316 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
317 case WCon{True{}, w8}:
318 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
319 case WCon{True{}, w7}:
320 match w7:
321 case WCon{False{}, w8}:
322 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
323 case WCon{True{}, w8}:
324 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
325 case WCon{True{}, w5}:
326 match w5:
327 case WCon{False{}, w6}:
328 match w6:
329 case WCon{False{}, w7}:
330 match w7:
331 case WCon{False{}, w8}:
332 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
333 case WCon{True{}, w8}:
334 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
335 case WCon{True{}, w7}:
336 match w7:
337 case WCon{False{}, w8}:
338 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
339 case WCon{True{}, w8}:
340 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
341 case WCon{True{}, w6}:
342 match w6:
343 case WCon{False{}, w7}:
344 match w7:
345 case WCon{False{}, w8}:
346 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
347 case WCon{True{}, w8}:
348 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
349 case WCon{True{}, w7}:
350 match w7:
351 case WCon{False{}, w8}:
352 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
353 case WCon{True{}, w8}:
354 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
355 case WCon{True{}, w4}:
356 match w4:
357 case WCon{False{}, w5}:
358 match w5:
359 case WCon{False{}, w6}:
360 match w6:
361 case WCon{False{}, w7}:
362 match w7:
363 case WCon{False{}, w8}:
364 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
365 case WCon{True{}, w8}:
366 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
367 case WCon{True{}, w7}:
368 match w7:
369 case WCon{False{}, w8}:
370 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
371 case WCon{True{}, w8}:
372 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
373 case WCon{True{}, w6}:
374 match w6:
375 case WCon{False{}, w7}:
376 match w7:
377 case WCon{False{}, w8}:
378 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
379 case WCon{True{}, w8}:
380 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
381 case WCon{True{}, w7}:
382 match w7:
383 case WCon{False{}, w8}:
384 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
385 case WCon{True{}, w8}:
386 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
387 case WCon{True{}, w5}:
388 match w5:
389 case WCon{False{}, w6}:
390 match w6:
391 case WCon{False{}, w7}:
392 match w7:
393 case WCon{False{}, w8}:
394 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
395 case WCon{True{}, w8}:
396 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
397 case WCon{True{}, w7}:
398 match w7:
399 case WCon{False{}, w8}:
400 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
401 case WCon{True{}, w8}:
402 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
403 case WCon{True{}, w6}:
404 match w6:
405 case WCon{False{}, w7}:
406 match w7:
407 case WCon{False{}, w8}:
408 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
409 case WCon{True{}, w8}:
410 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
411 case WCon{True{}, w7}:
412 match w7:
413 case WCon{False{}, w8}:
414 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
415 case WCon{True{}, w8}:
416 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
417 case WCon{True{}, w3}:
418 match w3:
419 case WCon{False{}, w4}:
420 match w4:
421 case WCon{False{}, w5}:
422 match w5:
423 case WCon{False{}, w6}:
424 match w6:
425 case WCon{False{}, w7}:
426 match w7:
427 case WCon{False{}, w8}:
428 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
429 case WCon{True{}, w8}:
430 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
431 case WCon{True{}, w7}:
432 match w7:
433 case WCon{False{}, w8}:
434 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
435 case WCon{True{}, w8}:
436 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
437 case WCon{True{}, w6}:
438 match w6:
439 case WCon{False{}, w7}:
440 match w7:
441 case WCon{False{}, w8}:
442 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
443 case WCon{True{}, w8}:
444 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
445 case WCon{True{}, w7}:
446 match w7:
447 case WCon{False{}, w8}:
448 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
449 case WCon{True{}, w8}:
450 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
451 case WCon{True{}, w5}:
452 match w5:
453 case WCon{False{}, w6}:
454 match w6:
455 case WCon{False{}, w7}:
456 match w7:
457 case WCon{False{}, w8}:
458 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
459 case WCon{True{}, w8}:
460 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
461 case WCon{True{}, w7}:
462 match w7:
463 case WCon{False{}, w8}:
464 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
465 case WCon{True{}, w8}:
466 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
467 case WCon{True{}, w6}:
468 match w6:
469 case WCon{False{}, w7}:
470 match w7:
471 case WCon{False{}, w8}:
472 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
473 case WCon{True{}, w8}:
474 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
475 case WCon{True{}, w7}:
476 match w7:
477 case WCon{False{}, w8}:
478 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
479 case WCon{True{}, w8}:
480 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
481 case WCon{True{}, w4}:
482 match w4:
483 case WCon{False{}, w5}:
484 match w5:
485 case WCon{False{}, w6}:
486 match w6:
487 case WCon{False{}, w7}:
488 match w7:
489 case WCon{False{}, w8}:
490 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
491 case WCon{True{}, w8}:
492 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
493 case WCon{True{}, w7}:
494 match w7:
495 case WCon{False{}, w8}:
496 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
497 case WCon{True{}, w8}:
498 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
499 case WCon{True{}, w6}:
500 match w6:
501 case WCon{False{}, w7}:
502 match w7:
503 case WCon{False{}, w8}:
504 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
505 case WCon{True{}, w8}:
506 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
507 case WCon{True{}, w7}:
508 match w7:
509 case WCon{False{}, w8}:
510 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
511 case WCon{True{}, w8}:
512 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
513 case WCon{True{}, w5}:
514 match w5:
515 case WCon{False{}, w6}:
516 match w6:
517 case WCon{False{}, w7}:
518 match w7:
519 case WCon{False{}, w8}:
520 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
521 case WCon{True{}, w8}:
522 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
523 case WCon{True{}, w7}:
524 match w7:
525 case WCon{False{}, w8}:
526 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
527 case WCon{True{}, w8}:
528 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
529 case WCon{True{}, w6}:
530 match w6:
531 case WCon{False{}, w7}:
532 match w7:
533 case WCon{False{}, w8}:
534 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
535 case WCon{True{}, w8}:
536 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
537 case WCon{True{}, w7}:
538 match w7:
539 case WCon{False{}, w8}:
540 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
541 case WCon{True{}, w8}:
542 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
543 case WCon{True{}, w1}:
544 match w1:
545 case WCon{False{}, w2}:
546 match w2:
547 case WCon{False{}, w3}:
548 match w3:
549 case WCon{False{}, w4}:
550 match w4:
551 case WCon{False{}, w5}:
552 match w5:
553 case WCon{False{}, w6}:
554 match w6:
555 case WCon{False{}, w7}:
556 match w7:
557 case WCon{False{}, w8}:
558 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
559 case WCon{True{}, w8}:
560 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
561 case WCon{True{}, w7}:
562 match w7:
563 case WCon{False{}, w8}:
564 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
565 case WCon{True{}, w8}:
566 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
567 case WCon{True{}, w6}:
568 match w6:
569 case WCon{False{}, w7}:
570 match w7:
571 case WCon{False{}, w8}:
572 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
573 case WCon{True{}, w8}:
574 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
575 case WCon{True{}, w7}:
576 match w7:
577 case WCon{False{}, w8}:
578 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
579 case WCon{True{}, w8}:
580 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
581 case WCon{True{}, w5}:
582 match w5:
583 case WCon{False{}, w6}:
584 match w6:
585 case WCon{False{}, w7}:
586 match w7:
587 case WCon{False{}, w8}:
588 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
589 case WCon{True{}, w8}:
590 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
591 case WCon{True{}, w7}:
592 match w7:
593 case WCon{False{}, w8}:
594 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
595 case WCon{True{}, w8}:
596 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
597 case WCon{True{}, w6}:
598 match w6:
599 case WCon{False{}, w7}:
600 match w7:
601 case WCon{False{}, w8}:
602 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
603 case WCon{True{}, w8}:
604 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
605 case WCon{True{}, w7}:
606 match w7:
607 case WCon{False{}, w8}:
608 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
609 case WCon{True{}, w8}:
610 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
611 case WCon{True{}, w4}:
612 match w4:
613 case WCon{False{}, w5}:
614 match w5:
615 case WCon{False{}, w6}:
616 match w6:
617 case WCon{False{}, w7}:
618 match w7:
619 case WCon{False{}, w8}:
620 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
621 case WCon{True{}, w8}:
622 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
623 case WCon{True{}, w7}:
624 match w7:
625 case WCon{False{}, w8}:
626 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
627 case WCon{True{}, w8}:
628 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
629 case WCon{True{}, w6}:
630 match w6:
631 case WCon{False{}, w7}:
632 match w7:
633 case WCon{False{}, w8}:
634 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
635 case WCon{True{}, w8}:
636 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
637 case WCon{True{}, w7}:
638 match w7:
639 case WCon{False{}, w8}:
640 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
641 case WCon{True{}, w8}:
642 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
643 case WCon{True{}, w5}:
644 match w5:
645 case WCon{False{}, w6}:
646 match w6:
647 case WCon{False{}, w7}:
648 match w7:
649 case WCon{False{}, w8}:
650 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
651 case WCon{True{}, w8}:
652 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
653 case WCon{True{}, w7}:
654 match w7:
655 case WCon{False{}, w8}:
656 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
657 case WCon{True{}, w8}:
658 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
659 case WCon{True{}, w6}:
660 match w6:
661 case WCon{False{}, w7}:
662 match w7:
663 case WCon{False{}, w8}:
664 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
665 case WCon{True{}, w8}:
666 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
667 case WCon{True{}, w7}:
668 match w7:
669 case WCon{False{}, w8}:
670 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
671 case WCon{True{}, w8}:
672 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
673 case WCon{True{}, w3}:
674 match w3:
675 case WCon{False{}, w4}:
676 match w4:
677 case WCon{False{}, w5}:
678 match w5:
679 case WCon{False{}, w6}:
680 match w6:
681 case WCon{False{}, w7}:
682 match w7:
683 case WCon{False{}, w8}:
684 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
685 case WCon{True{}, w8}:
686 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
687 case WCon{True{}, w7}:
688 match w7:
689 case WCon{False{}, w8}:
690 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
691 case WCon{True{}, w8}:
692 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
693 case WCon{True{}, w6}:
694 match w6:
695 case WCon{False{}, w7}:
696 match w7:
697 case WCon{False{}, w8}:
698 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
699 case WCon{True{}, w8}:
700 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
701 case WCon{True{}, w7}:
702 match w7:
703 case WCon{False{}, w8}:
704 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
705 case WCon{True{}, w8}:
706 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
707 case WCon{True{}, w5}:
708 match w5:
709 case WCon{False{}, w6}:
710 match w6:
711 case WCon{False{}, w7}:
712 match w7:
713 case WCon{False{}, w8}:
714 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
715 case WCon{True{}, w8}:
716 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
717 case WCon{True{}, w7}:
718 match w7:
719 case WCon{False{}, w8}:
720 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
721 case WCon{True{}, w8}:
722 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
723 case WCon{True{}, w6}:
724 match w6:
725 case WCon{False{}, w7}:
726 match w7:
727 case WCon{False{}, w8}:
728 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
729 case WCon{True{}, w8}:
730 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
731 case WCon{True{}, w7}:
732 match w7:
733 case WCon{False{}, w8}:
734 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
735 case WCon{True{}, w8}:
736 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
737 case WCon{True{}, w4}:
738 match w4:
739 case WCon{False{}, w5}:
740 match w5:
741 case WCon{False{}, w6}:
742 match w6:
743 case WCon{False{}, w7}:
744 match w7:
745 case WCon{False{}, w8}:
746 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
747 case WCon{True{}, w8}:
748 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
749 case WCon{True{}, w7}:
750 match w7:
751 case WCon{False{}, w8}:
752 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
753 case WCon{True{}, w8}:
754 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
755 case WCon{True{}, w6}:
756 match w6:
757 case WCon{False{}, w7}:
758 match w7:
759 case WCon{False{}, w8}:
760 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
761 case WCon{True{}, w8}:
762 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
763 case WCon{True{}, w7}:
764 match w7:
765 case WCon{False{}, w8}:
766 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
767 case WCon{True{}, w8}:
768 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
769 case WCon{True{}, w5}:
770 match w5:
771 case WCon{False{}, w6}:
772 match w6:
773 case WCon{False{}, w7}:
774 match w7:
775 case WCon{False{}, w8}:
776 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
777 case WCon{True{}, w8}:
778 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
779 case WCon{True{}, w7}:
780 match w7:
781 case WCon{False{}, w8}:
782 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
783 case WCon{True{}, w8}:
784 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
785 case WCon{True{}, w6}:
786 match w6:
787 case WCon{False{}, w7}:
788 match w7:
789 case WCon{False{}, w8}:
790 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
791 case WCon{True{}, w8}:
792 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
793 case WCon{True{}, w7}:
794 match w7:
795 case WCon{False{}, w8}:
796 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
797 case WCon{True{}, w8}:
798 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
799 case WCon{True{}, w2}:
800 match w2:
801 case WCon{False{}, w3}:
802 match w3:
803 case WCon{False{}, w4}:
804 match w4:
805 case WCon{False{}, w5}:
806 match w5:
807 case WCon{False{}, w6}:
808 match w6:
809 case WCon{False{}, w7}:
810 match w7:
811 case WCon{False{}, w8}:
812 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
813 case WCon{True{}, w8}:
814 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
815 case WCon{True{}, w7}:
816 match w7:
817 case WCon{False{}, w8}:
818 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
819 case WCon{True{}, w8}:
820 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
821 case WCon{True{}, w6}:
822 match w6:
823 case WCon{False{}, w7}:
824 match w7:
825 case WCon{False{}, w8}:
826 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
827 case WCon{True{}, w8}:
828 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
829 case WCon{True{}, w7}:
830 match w7:
831 case WCon{False{}, w8}:
832 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
833 case WCon{True{}, w8}:
834 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
835 case WCon{True{}, w5}:
836 match w5:
837 case WCon{False{}, w6}:
838 match w6:
839 case WCon{False{}, w7}:
840 match w7:
841 case WCon{False{}, w8}:
842 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
843 case WCon{True{}, w8}:
844 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
845 case WCon{True{}, w7}:
846 match w7:
847 case WCon{False{}, w8}:
848 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
849 case WCon{True{}, w8}:
850 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
851 case WCon{True{}, w6}:
852 match w6:
853 case WCon{False{}, w7}:
854 match w7:
855 case WCon{False{}, w8}:
856 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
857 case WCon{True{}, w8}:
858 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
859 case WCon{True{}, w7}:
860 match w7:
861 case WCon{False{}, w8}:
862 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
863 case WCon{True{}, w8}:
864 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
865 case WCon{True{}, w4}:
866 match w4:
867 case WCon{False{}, w5}:
868 match w5:
869 case WCon{False{}, w6}:
870 match w6:
871 case WCon{False{}, w7}:
872 match w7:
873 case WCon{False{}, w8}:
874 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
875 case WCon{True{}, w8}:
876 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
877 case WCon{True{}, w7}:
878 match w7:
879 case WCon{False{}, w8}:
880 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
881 case WCon{True{}, w8}:
882 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
883 case WCon{True{}, w6}:
884 match w6:
885 case WCon{False{}, w7}:
886 match w7:
887 case WCon{False{}, w8}:
888 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
889 case WCon{True{}, w8}:
890 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
891 case WCon{True{}, w7}:
892 match w7:
893 case WCon{False{}, w8}:
894 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
895 case WCon{True{}, w8}:
896 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
897 case WCon{True{}, w5}:
898 match w5:
899 case WCon{False{}, w6}:
900 match w6:
901 case WCon{False{}, w7}:
902 match w7:
903 case WCon{False{}, w8}:
904 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
905 case WCon{True{}, w8}:
906 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
907 case WCon{True{}, w7}:
908 match w7:
909 case WCon{False{}, w8}:
910 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
911 case WCon{True{}, w8}:
912 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
913 case WCon{True{}, w6}:
914 match w6:
915 case WCon{False{}, w7}:
916 match w7:
917 case WCon{False{}, w8}:
918 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
919 case WCon{True{}, w8}:
920 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
921 case WCon{True{}, w7}:
922 match w7:
923 case WCon{False{}, w8}:
924 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
925 case WCon{True{}, w8}:
926 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
927 case WCon{True{}, w3}:
928 match w3:
929 case WCon{False{}, w4}:
930 match w4:
931 case WCon{False{}, w5}:
932 match w5:
933 case WCon{False{}, w6}:
934 match w6:
935 case WCon{False{}, w7}:
936 match w7:
937 case WCon{False{}, w8}:
938 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
939 case WCon{True{}, w8}:
940 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
941 case WCon{True{}, w7}:
942 match w7:
943 case WCon{False{}, w8}:
944 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
945 case WCon{True{}, w8}:
946 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
947 case WCon{True{}, w6}:
948 match w6:
949 case WCon{False{}, w7}:
950 match w7:
951 case WCon{False{}, w8}:
952 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
953 case WCon{True{}, w8}:
954 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
955 case WCon{True{}, w7}:
956 match w7:
957 case WCon{False{}, w8}:
958 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
959 case WCon{True{}, w8}:
960 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
961 case WCon{True{}, w5}:
962 match w5:
963 case WCon{False{}, w6}:
964 match w6:
965 case WCon{False{}, w7}:
966 match w7:
967 case WCon{False{}, w8}:
968 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
969 case WCon{True{}, w8}:
970 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
971 case WCon{True{}, w7}:
972 match w7:
973 case WCon{False{}, w8}:
974 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
975 case WCon{True{}, w8}:
976 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
977 case WCon{True{}, w6}:
978 match w6:
979 case WCon{False{}, w7}:
980 match w7:
981 case WCon{False{}, w8}:
982 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
983 case WCon{True{}, w8}:
984 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
985 case WCon{True{}, w7}:
986 match w7:
987 case WCon{False{}, w8}:
988 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
989 case WCon{True{}, w8}:
990 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
991 case WCon{True{}, w4}:
992 match w4:
993 case WCon{False{}, w5}:
994 match w5:
995 case WCon{False{}, w6}:
996 match w6:
997 case WCon{False{}, w7}:
998 match w7:
999 case WCon{False{}, w8}:
1000 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1001 case WCon{True{}, w8}:
1002 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1003 case WCon{True{}, w7}:
1004 match w7:
1005 case WCon{False{}, w8}:
1006 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1007 case WCon{True{}, w8}:
1008 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1009 case WCon{True{}, w6}:
1010 match w6:
1011 case WCon{False{}, w7}:
1012 match w7:
1013 case WCon{False{}, w8}:
1014 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1015 case WCon{True{}, w8}:
1016 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1017 case WCon{True{}, w7}:
1018 match w7:
1019 case WCon{False{}, w8}:
1020 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1021 case WCon{True{}, w8}:
1022 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1023 case WCon{True{}, w5}:
1024 match w5:
1025 case WCon{False{}, w6}:
1026 match w6:
1027 case WCon{False{}, w7}:
1028 match w7:
1029 case WCon{False{}, w8}:
1030 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1031 case WCon{True{}, w8}:
1032 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1033 case WCon{True{}, w7}:
1034 match w7:
1035 case WCon{False{}, w8}:
1036 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1037 case WCon{True{}, w8}:
1038 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1039 case WCon{True{}, w6}:
1040 match w6:
1041 case WCon{False{}, w7}:
1042 match w7:
1043 case WCon{False{}, w8}:
1044 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1045 case WCon{True{}, w8}:
1046 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1047 case WCon{True{}, w7}:
1048 match w7:
1049 case WCon{False{}, w8}:
1050 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1051 case WCon{True{}, w8}:
1052 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1053
1054# SB2 (RFC 5794, 2.4.2)
1055def aria.sb2(w0: Word(8n)) -> Word(8n):
1056 match w0:
1057 case WCon{False{}, w1}:
1058 match w1:
1059 case WCon{False{}, w2}:
1060 match w2:
1061 case WCon{False{}, w3}:
1062 match w3:
1063 case WCon{False{}, w4}:
1064 match w4:
1065 case WCon{False{}, w5}:
1066 match w5:
1067 case WCon{False{}, w6}:
1068 match w6:
1069 case WCon{False{}, w7}:
1070 match w7:
1071 case WCon{False{}, w8}:
1072 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1073 case WCon{True{}, w8}:
1074 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1075 case WCon{True{}, w7}:
1076 match w7:
1077 case WCon{False{}, w8}:
1078 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1079 case WCon{True{}, w8}:
1080 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1081 case WCon{True{}, w6}:
1082 match w6:
1083 case WCon{False{}, w7}:
1084 match w7:
1085 case WCon{False{}, w8}:
1086 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1087 case WCon{True{}, w8}:
1088 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1089 case WCon{True{}, w7}:
1090 match w7:
1091 case WCon{False{}, w8}:
1092 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1093 case WCon{True{}, w8}:
1094 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1095 case WCon{True{}, w5}:
1096 match w5:
1097 case WCon{False{}, w6}:
1098 match w6:
1099 case WCon{False{}, w7}:
1100 match w7:
1101 case WCon{False{}, w8}:
1102 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1103 case WCon{True{}, w8}:
1104 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1105 case WCon{True{}, w7}:
1106 match w7:
1107 case WCon{False{}, w8}:
1108 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1109 case WCon{True{}, w8}:
1110 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1111 case WCon{True{}, w6}:
1112 match w6:
1113 case WCon{False{}, w7}:
1114 match w7:
1115 case WCon{False{}, w8}:
1116 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1117 case WCon{True{}, w8}:
1118 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1119 case WCon{True{}, w7}:
1120 match w7:
1121 case WCon{False{}, w8}:
1122 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1123 case WCon{True{}, w8}:
1124 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1125 case WCon{True{}, w4}:
1126 match w4:
1127 case WCon{False{}, w5}:
1128 match w5:
1129 case WCon{False{}, w6}:
1130 match w6:
1131 case WCon{False{}, w7}:
1132 match w7:
1133 case WCon{False{}, w8}:
1134 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1135 case WCon{True{}, w8}:
1136 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1137 case WCon{True{}, w7}:
1138 match w7:
1139 case WCon{False{}, w8}:
1140 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1141 case WCon{True{}, w8}:
1142 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1143 case WCon{True{}, w6}:
1144 match w6:
1145 case WCon{False{}, w7}:
1146 match w7:
1147 case WCon{False{}, w8}:
1148 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1149 case WCon{True{}, w8}:
1150 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1151 case WCon{True{}, w7}:
1152 match w7:
1153 case WCon{False{}, w8}:
1154 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1155 case WCon{True{}, w8}:
1156 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1157 case WCon{True{}, w5}:
1158 match w5:
1159 case WCon{False{}, w6}:
1160 match w6:
1161 case WCon{False{}, w7}:
1162 match w7:
1163 case WCon{False{}, w8}:
1164 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1165 case WCon{True{}, w8}:
1166 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1167 case WCon{True{}, w7}:
1168 match w7:
1169 case WCon{False{}, w8}:
1170 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1171 case WCon{True{}, w8}:
1172 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1173 case WCon{True{}, w6}:
1174 match w6:
1175 case WCon{False{}, w7}:
1176 match w7:
1177 case WCon{False{}, w8}:
1178 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1179 case WCon{True{}, w8}:
1180 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1181 case WCon{True{}, w7}:
1182 match w7:
1183 case WCon{False{}, w8}:
1184 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1185 case WCon{True{}, w8}:
1186 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1187 case WCon{True{}, w3}:
1188 match w3:
1189 case WCon{False{}, w4}:
1190 match w4:
1191 case WCon{False{}, w5}:
1192 match w5:
1193 case WCon{False{}, w6}:
1194 match w6:
1195 case WCon{False{}, w7}:
1196 match w7:
1197 case WCon{False{}, w8}:
1198 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1199 case WCon{True{}, w8}:
1200 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1201 case WCon{True{}, w7}:
1202 match w7:
1203 case WCon{False{}, w8}:
1204 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1205 case WCon{True{}, w8}:
1206 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1207 case WCon{True{}, w6}:
1208 match w6:
1209 case WCon{False{}, w7}:
1210 match w7:
1211 case WCon{False{}, w8}:
1212 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1213 case WCon{True{}, w8}:
1214 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1215 case WCon{True{}, w7}:
1216 match w7:
1217 case WCon{False{}, w8}:
1218 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1219 case WCon{True{}, w8}:
1220 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1221 case WCon{True{}, w5}:
1222 match w5:
1223 case WCon{False{}, w6}:
1224 match w6:
1225 case WCon{False{}, w7}:
1226 match w7:
1227 case WCon{False{}, w8}:
1228 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1229 case WCon{True{}, w8}:
1230 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1231 case WCon{True{}, w7}:
1232 match w7:
1233 case WCon{False{}, w8}:
1234 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1235 case WCon{True{}, w8}:
1236 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1237 case WCon{True{}, w6}:
1238 match w6:
1239 case WCon{False{}, w7}:
1240 match w7:
1241 case WCon{False{}, w8}:
1242 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1243 case WCon{True{}, w8}:
1244 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1245 case WCon{True{}, w7}:
1246 match w7:
1247 case WCon{False{}, w8}:
1248 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1249 case WCon{True{}, w8}:
1250 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1251 case WCon{True{}, w4}:
1252 match w4:
1253 case WCon{False{}, w5}:
1254 match w5:
1255 case WCon{False{}, w6}:
1256 match w6:
1257 case WCon{False{}, w7}:
1258 match w7:
1259 case WCon{False{}, w8}:
1260 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1261 case WCon{True{}, w8}:
1262 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1263 case WCon{True{}, w7}:
1264 match w7:
1265 case WCon{False{}, w8}:
1266 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1267 case WCon{True{}, w8}:
1268 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1269 case WCon{True{}, w6}:
1270 match w6:
1271 case WCon{False{}, w7}:
1272 match w7:
1273 case WCon{False{}, w8}:
1274 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1275 case WCon{True{}, w8}:
1276 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1277 case WCon{True{}, w7}:
1278 match w7:
1279 case WCon{False{}, w8}:
1280 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1281 case WCon{True{}, w8}:
1282 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1283 case WCon{True{}, w5}:
1284 match w5:
1285 case WCon{False{}, w6}:
1286 match w6:
1287 case WCon{False{}, w7}:
1288 match w7:
1289 case WCon{False{}, w8}:
1290 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1291 case WCon{True{}, w8}:
1292 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1293 case WCon{True{}, w7}:
1294 match w7:
1295 case WCon{False{}, w8}:
1296 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1297 case WCon{True{}, w8}:
1298 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1299 case WCon{True{}, w6}:
1300 match w6:
1301 case WCon{False{}, w7}:
1302 match w7:
1303 case WCon{False{}, w8}:
1304 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1305 case WCon{True{}, w8}:
1306 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1307 case WCon{True{}, w7}:
1308 match w7:
1309 case WCon{False{}, w8}:
1310 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1311 case WCon{True{}, w8}:
1312 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1313 case WCon{True{}, w2}:
1314 match w2:
1315 case WCon{False{}, w3}:
1316 match w3:
1317 case WCon{False{}, w4}:
1318 match w4:
1319 case WCon{False{}, w5}:
1320 match w5:
1321 case WCon{False{}, w6}:
1322 match w6:
1323 case WCon{False{}, w7}:
1324 match w7:
1325 case WCon{False{}, w8}:
1326 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1327 case WCon{True{}, w8}:
1328 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1329 case WCon{True{}, w7}:
1330 match w7:
1331 case WCon{False{}, w8}:
1332 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1333 case WCon{True{}, w8}:
1334 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1335 case WCon{True{}, w6}:
1336 match w6:
1337 case WCon{False{}, w7}:
1338 match w7:
1339 case WCon{False{}, w8}:
1340 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1341 case WCon{True{}, w8}:
1342 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1343 case WCon{True{}, w7}:
1344 match w7:
1345 case WCon{False{}, w8}:
1346 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1347 case WCon{True{}, w8}:
1348 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1349 case WCon{True{}, w5}:
1350 match w5:
1351 case WCon{False{}, w6}:
1352 match w6:
1353 case WCon{False{}, w7}:
1354 match w7:
1355 case WCon{False{}, w8}:
1356 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1357 case WCon{True{}, w8}:
1358 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1359 case WCon{True{}, w7}:
1360 match w7:
1361 case WCon{False{}, w8}:
1362 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1363 case WCon{True{}, w8}:
1364 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1365 case WCon{True{}, w6}:
1366 match w6:
1367 case WCon{False{}, w7}:
1368 match w7:
1369 case WCon{False{}, w8}:
1370 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1371 case WCon{True{}, w8}:
1372 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1373 case WCon{True{}, w7}:
1374 match w7:
1375 case WCon{False{}, w8}:
1376 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1377 case WCon{True{}, w8}:
1378 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1379 case WCon{True{}, w4}:
1380 match w4:
1381 case WCon{False{}, w5}:
1382 match w5:
1383 case WCon{False{}, w6}:
1384 match w6:
1385 case WCon{False{}, w7}:
1386 match w7:
1387 case WCon{False{}, w8}:
1388 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1389 case WCon{True{}, w8}:
1390 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1391 case WCon{True{}, w7}:
1392 match w7:
1393 case WCon{False{}, w8}:
1394 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1395 case WCon{True{}, w8}:
1396 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1397 case WCon{True{}, w6}:
1398 match w6:
1399 case WCon{False{}, w7}:
1400 match w7:
1401 case WCon{False{}, w8}:
1402 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1403 case WCon{True{}, w8}:
1404 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1405 case WCon{True{}, w7}:
1406 match w7:
1407 case WCon{False{}, w8}:
1408 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1409 case WCon{True{}, w8}:
1410 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1411 case WCon{True{}, w5}:
1412 match w5:
1413 case WCon{False{}, w6}:
1414 match w6:
1415 case WCon{False{}, w7}:
1416 match w7:
1417 case WCon{False{}, w8}:
1418 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1419 case WCon{True{}, w8}:
1420 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1421 case WCon{True{}, w7}:
1422 match w7:
1423 case WCon{False{}, w8}:
1424 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1425 case WCon{True{}, w8}:
1426 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1427 case WCon{True{}, w6}:
1428 match w6:
1429 case WCon{False{}, w7}:
1430 match w7:
1431 case WCon{False{}, w8}:
1432 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1433 case WCon{True{}, w8}:
1434 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1435 case WCon{True{}, w7}:
1436 match w7:
1437 case WCon{False{}, w8}:
1438 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1439 case WCon{True{}, w8}:
1440 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1441 case WCon{True{}, w3}:
1442 match w3:
1443 case WCon{False{}, w4}:
1444 match w4:
1445 case WCon{False{}, w5}:
1446 match w5:
1447 case WCon{False{}, w6}:
1448 match w6:
1449 case WCon{False{}, w7}:
1450 match w7:
1451 case WCon{False{}, w8}:
1452 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1453 case WCon{True{}, w8}:
1454 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1455 case WCon{True{}, w7}:
1456 match w7:
1457 case WCon{False{}, w8}:
1458 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1459 case WCon{True{}, w8}:
1460 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1461 case WCon{True{}, w6}:
1462 match w6:
1463 case WCon{False{}, w7}:
1464 match w7:
1465 case WCon{False{}, w8}:
1466 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1467 case WCon{True{}, w8}:
1468 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1469 case WCon{True{}, w7}:
1470 match w7:
1471 case WCon{False{}, w8}:
1472 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1473 case WCon{True{}, w8}:
1474 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1475 case WCon{True{}, w5}:
1476 match w5:
1477 case WCon{False{}, w6}:
1478 match w6:
1479 case WCon{False{}, w7}:
1480 match w7:
1481 case WCon{False{}, w8}:
1482 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1483 case WCon{True{}, w8}:
1484 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1485 case WCon{True{}, w7}:
1486 match w7:
1487 case WCon{False{}, w8}:
1488 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1489 case WCon{True{}, w8}:
1490 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1491 case WCon{True{}, w6}:
1492 match w6:
1493 case WCon{False{}, w7}:
1494 match w7:
1495 case WCon{False{}, w8}:
1496 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1497 case WCon{True{}, w8}:
1498 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1499 case WCon{True{}, w7}:
1500 match w7:
1501 case WCon{False{}, w8}:
1502 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1503 case WCon{True{}, w8}:
1504 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1505 case WCon{True{}, w4}:
1506 match w4:
1507 case WCon{False{}, w5}:
1508 match w5:
1509 case WCon{False{}, w6}:
1510 match w6:
1511 case WCon{False{}, w7}:
1512 match w7:
1513 case WCon{False{}, w8}:
1514 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1515 case WCon{True{}, w8}:
1516 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1517 case WCon{True{}, w7}:
1518 match w7:
1519 case WCon{False{}, w8}:
1520 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1521 case WCon{True{}, w8}:
1522 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1523 case WCon{True{}, w6}:
1524 match w6:
1525 case WCon{False{}, w7}:
1526 match w7:
1527 case WCon{False{}, w8}:
1528 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1529 case WCon{True{}, w8}:
1530 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1531 case WCon{True{}, w7}:
1532 match w7:
1533 case WCon{False{}, w8}:
1534 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1535 case WCon{True{}, w8}:
1536 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1537 case WCon{True{}, w5}:
1538 match w5:
1539 case WCon{False{}, w6}:
1540 match w6:
1541 case WCon{False{}, w7}:
1542 match w7:
1543 case WCon{False{}, w8}:
1544 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1545 case WCon{True{}, w8}:
1546 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1547 case WCon{True{}, w7}:
1548 match w7:
1549 case WCon{False{}, w8}:
1550 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1551 case WCon{True{}, w8}:
1552 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1553 case WCon{True{}, w6}:
1554 match w6:
1555 case WCon{False{}, w7}:
1556 match w7:
1557 case WCon{False{}, w8}:
1558 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1559 case WCon{True{}, w8}:
1560 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1561 case WCon{True{}, w7}:
1562 match w7:
1563 case WCon{False{}, w8}:
1564 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1565 case WCon{True{}, w8}:
1566 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1567 case WCon{True{}, w1}:
1568 match w1:
1569 case WCon{False{}, w2}:
1570 match w2:
1571 case WCon{False{}, w3}:
1572 match w3:
1573 case WCon{False{}, w4}:
1574 match w4:
1575 case WCon{False{}, w5}:
1576 match w5:
1577 case WCon{False{}, w6}:
1578 match w6:
1579 case WCon{False{}, w7}:
1580 match w7:
1581 case WCon{False{}, w8}:
1582 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1583 case WCon{True{}, w8}:
1584 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1585 case WCon{True{}, w7}:
1586 match w7:
1587 case WCon{False{}, w8}:
1588 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1589 case WCon{True{}, w8}:
1590 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1591 case WCon{True{}, w6}:
1592 match w6:
1593 case WCon{False{}, w7}:
1594 match w7:
1595 case WCon{False{}, w8}:
1596 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1597 case WCon{True{}, w8}:
1598 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1599 case WCon{True{}, w7}:
1600 match w7:
1601 case WCon{False{}, w8}:
1602 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1603 case WCon{True{}, w8}:
1604 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1605 case WCon{True{}, w5}:
1606 match w5:
1607 case WCon{False{}, w6}:
1608 match w6:
1609 case WCon{False{}, w7}:
1610 match w7:
1611 case WCon{False{}, w8}:
1612 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1613 case WCon{True{}, w8}:
1614 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1615 case WCon{True{}, w7}:
1616 match w7:
1617 case WCon{False{}, w8}:
1618 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1619 case WCon{True{}, w8}:
1620 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1621 case WCon{True{}, w6}:
1622 match w6:
1623 case WCon{False{}, w7}:
1624 match w7:
1625 case WCon{False{}, w8}:
1626 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1627 case WCon{True{}, w8}:
1628 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1629 case WCon{True{}, w7}:
1630 match w7:
1631 case WCon{False{}, w8}:
1632 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1633 case WCon{True{}, w8}:
1634 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1635 case WCon{True{}, w4}:
1636 match w4:
1637 case WCon{False{}, w5}:
1638 match w5:
1639 case WCon{False{}, w6}:
1640 match w6:
1641 case WCon{False{}, w7}:
1642 match w7:
1643 case WCon{False{}, w8}:
1644 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1645 case WCon{True{}, w8}:
1646 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1647 case WCon{True{}, w7}:
1648 match w7:
1649 case WCon{False{}, w8}:
1650 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1651 case WCon{True{}, w8}:
1652 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1653 case WCon{True{}, w6}:
1654 match w6:
1655 case WCon{False{}, w7}:
1656 match w7:
1657 case WCon{False{}, w8}:
1658 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1659 case WCon{True{}, w8}:
1660 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1661 case WCon{True{}, w7}:
1662 match w7:
1663 case WCon{False{}, w8}:
1664 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1665 case WCon{True{}, w8}:
1666 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1667 case WCon{True{}, w5}:
1668 match w5:
1669 case WCon{False{}, w6}:
1670 match w6:
1671 case WCon{False{}, w7}:
1672 match w7:
1673 case WCon{False{}, w8}:
1674 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1675 case WCon{True{}, w8}:
1676 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1677 case WCon{True{}, w7}:
1678 match w7:
1679 case WCon{False{}, w8}:
1680 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1681 case WCon{True{}, w8}:
1682 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1683 case WCon{True{}, w6}:
1684 match w6:
1685 case WCon{False{}, w7}:
1686 match w7:
1687 case WCon{False{}, w8}:
1688 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1689 case WCon{True{}, w8}:
1690 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1691 case WCon{True{}, w7}:
1692 match w7:
1693 case WCon{False{}, w8}:
1694 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1695 case WCon{True{}, w8}:
1696 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1697 case WCon{True{}, w3}:
1698 match w3:
1699 case WCon{False{}, w4}:
1700 match w4:
1701 case WCon{False{}, w5}:
1702 match w5:
1703 case WCon{False{}, w6}:
1704 match w6:
1705 case WCon{False{}, w7}:
1706 match w7:
1707 case WCon{False{}, w8}:
1708 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1709 case WCon{True{}, w8}:
1710 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1711 case WCon{True{}, w7}:
1712 match w7:
1713 case WCon{False{}, w8}:
1714 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1715 case WCon{True{}, w8}:
1716 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1717 case WCon{True{}, w6}:
1718 match w6:
1719 case WCon{False{}, w7}:
1720 match w7:
1721 case WCon{False{}, w8}:
1722 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1723 case WCon{True{}, w8}:
1724 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1725 case WCon{True{}, w7}:
1726 match w7:
1727 case WCon{False{}, w8}:
1728 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1729 case WCon{True{}, w8}:
1730 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1731 case WCon{True{}, w5}:
1732 match w5:
1733 case WCon{False{}, w6}:
1734 match w6:
1735 case WCon{False{}, w7}:
1736 match w7:
1737 case WCon{False{}, w8}:
1738 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1739 case WCon{True{}, w8}:
1740 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1741 case WCon{True{}, w7}:
1742 match w7:
1743 case WCon{False{}, w8}:
1744 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1745 case WCon{True{}, w8}:
1746 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1747 case WCon{True{}, w6}:
1748 match w6:
1749 case WCon{False{}, w7}:
1750 match w7:
1751 case WCon{False{}, w8}:
1752 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1753 case WCon{True{}, w8}:
1754 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1755 case WCon{True{}, w7}:
1756 match w7:
1757 case WCon{False{}, w8}:
1758 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1759 case WCon{True{}, w8}:
1760 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1761 case WCon{True{}, w4}:
1762 match w4:
1763 case WCon{False{}, w5}:
1764 match w5:
1765 case WCon{False{}, w6}:
1766 match w6:
1767 case WCon{False{}, w7}:
1768 match w7:
1769 case WCon{False{}, w8}:
1770 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1771 case WCon{True{}, w8}:
1772 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1773 case WCon{True{}, w7}:
1774 match w7:
1775 case WCon{False{}, w8}:
1776 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1777 case WCon{True{}, w8}:
1778 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1779 case WCon{True{}, w6}:
1780 match w6:
1781 case WCon{False{}, w7}:
1782 match w7:
1783 case WCon{False{}, w8}:
1784 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1785 case WCon{True{}, w8}:
1786 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1787 case WCon{True{}, w7}:
1788 match w7:
1789 case WCon{False{}, w8}:
1790 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1791 case WCon{True{}, w8}:
1792 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1793 case WCon{True{}, w5}:
1794 match w5:
1795 case WCon{False{}, w6}:
1796 match w6:
1797 case WCon{False{}, w7}:
1798 match w7:
1799 case WCon{False{}, w8}:
1800 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1801 case WCon{True{}, w8}:
1802 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1803 case WCon{True{}, w7}:
1804 match w7:
1805 case WCon{False{}, w8}:
1806 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1807 case WCon{True{}, w8}:
1808 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1809 case WCon{True{}, w6}:
1810 match w6:
1811 case WCon{False{}, w7}:
1812 match w7:
1813 case WCon{False{}, w8}:
1814 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1815 case WCon{True{}, w8}:
1816 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1817 case WCon{True{}, w7}:
1818 match w7:
1819 case WCon{False{}, w8}:
1820 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1821 case WCon{True{}, w8}:
1822 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1823 case WCon{True{}, w2}:
1824 match w2:
1825 case WCon{False{}, w3}:
1826 match w3:
1827 case WCon{False{}, w4}:
1828 match w4:
1829 case WCon{False{}, w5}:
1830 match w5:
1831 case WCon{False{}, w6}:
1832 match w6:
1833 case WCon{False{}, w7}:
1834 match w7:
1835 case WCon{False{}, w8}:
1836 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1837 case WCon{True{}, w8}:
1838 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1839 case WCon{True{}, w7}:
1840 match w7:
1841 case WCon{False{}, w8}:
1842 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1843 case WCon{True{}, w8}:
1844 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1845 case WCon{True{}, w6}:
1846 match w6:
1847 case WCon{False{}, w7}:
1848 match w7:
1849 case WCon{False{}, w8}:
1850 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1851 case WCon{True{}, w8}:
1852 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1853 case WCon{True{}, w7}:
1854 match w7:
1855 case WCon{False{}, w8}:
1856 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1857 case WCon{True{}, w8}:
1858 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1859 case WCon{True{}, w5}:
1860 match w5:
1861 case WCon{False{}, w6}:
1862 match w6:
1863 case WCon{False{}, w7}:
1864 match w7:
1865 case WCon{False{}, w8}:
1866 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1867 case WCon{True{}, w8}:
1868 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1869 case WCon{True{}, w7}:
1870 match w7:
1871 case WCon{False{}, w8}:
1872 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1873 case WCon{True{}, w8}:
1874 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1875 case WCon{True{}, w6}:
1876 match w6:
1877 case WCon{False{}, w7}:
1878 match w7:
1879 case WCon{False{}, w8}:
1880 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1881 case WCon{True{}, w8}:
1882 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1883 case WCon{True{}, w7}:
1884 match w7:
1885 case WCon{False{}, w8}:
1886 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1887 case WCon{True{}, w8}:
1888 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1889 case WCon{True{}, w4}:
1890 match w4:
1891 case WCon{False{}, w5}:
1892 match w5:
1893 case WCon{False{}, w6}:
1894 match w6:
1895 case WCon{False{}, w7}:
1896 match w7:
1897 case WCon{False{}, w8}:
1898 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1899 case WCon{True{}, w8}:
1900 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1901 case WCon{True{}, w7}:
1902 match w7:
1903 case WCon{False{}, w8}:
1904 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1905 case WCon{True{}, w8}:
1906 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1907 case WCon{True{}, w6}:
1908 match w6:
1909 case WCon{False{}, w7}:
1910 match w7:
1911 case WCon{False{}, w8}:
1912 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1913 case WCon{True{}, w8}:
1914 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1915 case WCon{True{}, w7}:
1916 match w7:
1917 case WCon{False{}, w8}:
1918 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1919 case WCon{True{}, w8}:
1920 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1921 case WCon{True{}, w5}:
1922 match w5:
1923 case WCon{False{}, w6}:
1924 match w6:
1925 case WCon{False{}, w7}:
1926 match w7:
1927 case WCon{False{}, w8}:
1928 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1929 case WCon{True{}, w8}:
1930 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1931 case WCon{True{}, w7}:
1932 match w7:
1933 case WCon{False{}, w8}:
1934 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1935 case WCon{True{}, w8}:
1936 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1937 case WCon{True{}, w6}:
1938 match w6:
1939 case WCon{False{}, w7}:
1940 match w7:
1941 case WCon{False{}, w8}:
1942 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1943 case WCon{True{}, w8}:
1944 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1945 case WCon{True{}, w7}:
1946 match w7:
1947 case WCon{False{}, w8}:
1948 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1949 case WCon{True{}, w8}:
1950 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1951 case WCon{True{}, w3}:
1952 match w3:
1953 case WCon{False{}, w4}:
1954 match w4:
1955 case WCon{False{}, w5}:
1956 match w5:
1957 case WCon{False{}, w6}:
1958 match w6:
1959 case WCon{False{}, w7}:
1960 match w7:
1961 case WCon{False{}, w8}:
1962 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1963 case WCon{True{}, w8}:
1964 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1965 case WCon{True{}, w7}:
1966 match w7:
1967 case WCon{False{}, w8}:
1968 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1969 case WCon{True{}, w8}:
1970 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1971 case WCon{True{}, w6}:
1972 match w6:
1973 case WCon{False{}, w7}:
1974 match w7:
1975 case WCon{False{}, w8}:
1976 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1977 case WCon{True{}, w8}:
1978 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
1979 case WCon{True{}, w7}:
1980 match w7:
1981 case WCon{False{}, w8}:
1982 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1983 case WCon{True{}, w8}:
1984 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
1985 case WCon{True{}, w5}:
1986 match w5:
1987 case WCon{False{}, w6}:
1988 match w6:
1989 case WCon{False{}, w7}:
1990 match w7:
1991 case WCon{False{}, w8}:
1992 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1993 case WCon{True{}, w8}:
1994 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
1995 case WCon{True{}, w7}:
1996 match w7:
1997 case WCon{False{}, w8}:
1998 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
1999 case WCon{True{}, w8}:
2000 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2001 case WCon{True{}, w6}:
2002 match w6:
2003 case WCon{False{}, w7}:
2004 match w7:
2005 case WCon{False{}, w8}:
2006 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2007 case WCon{True{}, w8}:
2008 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2009 case WCon{True{}, w7}:
2010 match w7:
2011 case WCon{False{}, w8}:
2012 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2013 case WCon{True{}, w8}:
2014 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2015 case WCon{True{}, w4}:
2016 match w4:
2017 case WCon{False{}, w5}:
2018 match w5:
2019 case WCon{False{}, w6}:
2020 match w6:
2021 case WCon{False{}, w7}:
2022 match w7:
2023 case WCon{False{}, w8}:
2024 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2025 case WCon{True{}, w8}:
2026 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2027 case WCon{True{}, w7}:
2028 match w7:
2029 case WCon{False{}, w8}:
2030 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2031 case WCon{True{}, w8}:
2032 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2033 case WCon{True{}, w6}:
2034 match w6:
2035 case WCon{False{}, w7}:
2036 match w7:
2037 case WCon{False{}, w8}:
2038 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2039 case WCon{True{}, w8}:
2040 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2041 case WCon{True{}, w7}:
2042 match w7:
2043 case WCon{False{}, w8}:
2044 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2045 case WCon{True{}, w8}:
2046 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2047 case WCon{True{}, w5}:
2048 match w5:
2049 case WCon{False{}, w6}:
2050 match w6:
2051 case WCon{False{}, w7}:
2052 match w7:
2053 case WCon{False{}, w8}:
2054 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2055 case WCon{True{}, w8}:
2056 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2057 case WCon{True{}, w7}:
2058 match w7:
2059 case WCon{False{}, w8}:
2060 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2061 case WCon{True{}, w8}:
2062 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2063 case WCon{True{}, w6}:
2064 match w6:
2065 case WCon{False{}, w7}:
2066 match w7:
2067 case WCon{False{}, w8}:
2068 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2069 case WCon{True{}, w8}:
2070 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2071 case WCon{True{}, w7}:
2072 match w7:
2073 case WCon{False{}, w8}:
2074 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2075 case WCon{True{}, w8}:
2076 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2077
2078# SB3, the inverse of SB1
2079def aria.sb3(w0: Word(8n)) -> Word(8n):
2080 match w0:
2081 case WCon{False{}, w1}:
2082 match w1:
2083 case WCon{False{}, w2}:
2084 match w2:
2085 case WCon{False{}, w3}:
2086 match w3:
2087 case WCon{False{}, w4}:
2088 match w4:
2089 case WCon{False{}, w5}:
2090 match w5:
2091 case WCon{False{}, w6}:
2092 match w6:
2093 case WCon{False{}, w7}:
2094 match w7:
2095 case WCon{False{}, w8}:
2096 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2097 case WCon{True{}, w8}:
2098 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2099 case WCon{True{}, w7}:
2100 match w7:
2101 case WCon{False{}, w8}:
2102 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2103 case WCon{True{}, w8}:
2104 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2105 case WCon{True{}, w6}:
2106 match w6:
2107 case WCon{False{}, w7}:
2108 match w7:
2109 case WCon{False{}, w8}:
2110 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2111 case WCon{True{}, w8}:
2112 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2113 case WCon{True{}, w7}:
2114 match w7:
2115 case WCon{False{}, w8}:
2116 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2117 case WCon{True{}, w8}:
2118 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2119 case WCon{True{}, w5}:
2120 match w5:
2121 case WCon{False{}, w6}:
2122 match w6:
2123 case WCon{False{}, w7}:
2124 match w7:
2125 case WCon{False{}, w8}:
2126 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2127 case WCon{True{}, w8}:
2128 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2129 case WCon{True{}, w7}:
2130 match w7:
2131 case WCon{False{}, w8}:
2132 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2133 case WCon{True{}, w8}:
2134 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2135 case WCon{True{}, w6}:
2136 match w6:
2137 case WCon{False{}, w7}:
2138 match w7:
2139 case WCon{False{}, w8}:
2140 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2141 case WCon{True{}, w8}:
2142 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2143 case WCon{True{}, w7}:
2144 match w7:
2145 case WCon{False{}, w8}:
2146 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2147 case WCon{True{}, w8}:
2148 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2149 case WCon{True{}, w4}:
2150 match w4:
2151 case WCon{False{}, w5}:
2152 match w5:
2153 case WCon{False{}, w6}:
2154 match w6:
2155 case WCon{False{}, w7}:
2156 match w7:
2157 case WCon{False{}, w8}:
2158 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2159 case WCon{True{}, w8}:
2160 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2161 case WCon{True{}, w7}:
2162 match w7:
2163 case WCon{False{}, w8}:
2164 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2165 case WCon{True{}, w8}:
2166 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2167 case WCon{True{}, w6}:
2168 match w6:
2169 case WCon{False{}, w7}:
2170 match w7:
2171 case WCon{False{}, w8}:
2172 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2173 case WCon{True{}, w8}:
2174 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2175 case WCon{True{}, w7}:
2176 match w7:
2177 case WCon{False{}, w8}:
2178 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2179 case WCon{True{}, w8}:
2180 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2181 case WCon{True{}, w5}:
2182 match w5:
2183 case WCon{False{}, w6}:
2184 match w6:
2185 case WCon{False{}, w7}:
2186 match w7:
2187 case WCon{False{}, w8}:
2188 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2189 case WCon{True{}, w8}:
2190 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2191 case WCon{True{}, w7}:
2192 match w7:
2193 case WCon{False{}, w8}:
2194 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2195 case WCon{True{}, w8}:
2196 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2197 case WCon{True{}, w6}:
2198 match w6:
2199 case WCon{False{}, w7}:
2200 match w7:
2201 case WCon{False{}, w8}:
2202 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2203 case WCon{True{}, w8}:
2204 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2205 case WCon{True{}, w7}:
2206 match w7:
2207 case WCon{False{}, w8}:
2208 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2209 case WCon{True{}, w8}:
2210 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2211 case WCon{True{}, w3}:
2212 match w3:
2213 case WCon{False{}, w4}:
2214 match w4:
2215 case WCon{False{}, w5}:
2216 match w5:
2217 case WCon{False{}, w6}:
2218 match w6:
2219 case WCon{False{}, w7}:
2220 match w7:
2221 case WCon{False{}, w8}:
2222 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2223 case WCon{True{}, w8}:
2224 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2225 case WCon{True{}, w7}:
2226 match w7:
2227 case WCon{False{}, w8}:
2228 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2229 case WCon{True{}, w8}:
2230 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2231 case WCon{True{}, w6}:
2232 match w6:
2233 case WCon{False{}, w7}:
2234 match w7:
2235 case WCon{False{}, w8}:
2236 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2237 case WCon{True{}, w8}:
2238 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2239 case WCon{True{}, w7}:
2240 match w7:
2241 case WCon{False{}, w8}:
2242 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2243 case WCon{True{}, w8}:
2244 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2245 case WCon{True{}, w5}:
2246 match w5:
2247 case WCon{False{}, w6}:
2248 match w6:
2249 case WCon{False{}, w7}:
2250 match w7:
2251 case WCon{False{}, w8}:
2252 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2253 case WCon{True{}, w8}:
2254 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2255 case WCon{True{}, w7}:
2256 match w7:
2257 case WCon{False{}, w8}:
2258 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2259 case WCon{True{}, w8}:
2260 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2261 case WCon{True{}, w6}:
2262 match w6:
2263 case WCon{False{}, w7}:
2264 match w7:
2265 case WCon{False{}, w8}:
2266 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2267 case WCon{True{}, w8}:
2268 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2269 case WCon{True{}, w7}:
2270 match w7:
2271 case WCon{False{}, w8}:
2272 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2273 case WCon{True{}, w8}:
2274 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2275 case WCon{True{}, w4}:
2276 match w4:
2277 case WCon{False{}, w5}:
2278 match w5:
2279 case WCon{False{}, w6}:
2280 match w6:
2281 case WCon{False{}, w7}:
2282 match w7:
2283 case WCon{False{}, w8}:
2284 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2285 case WCon{True{}, w8}:
2286 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2287 case WCon{True{}, w7}:
2288 match w7:
2289 case WCon{False{}, w8}:
2290 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2291 case WCon{True{}, w8}:
2292 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2293 case WCon{True{}, w6}:
2294 match w6:
2295 case WCon{False{}, w7}:
2296 match w7:
2297 case WCon{False{}, w8}:
2298 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2299 case WCon{True{}, w8}:
2300 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2301 case WCon{True{}, w7}:
2302 match w7:
2303 case WCon{False{}, w8}:
2304 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2305 case WCon{True{}, w8}:
2306 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2307 case WCon{True{}, w5}:
2308 match w5:
2309 case WCon{False{}, w6}:
2310 match w6:
2311 case WCon{False{}, w7}:
2312 match w7:
2313 case WCon{False{}, w8}:
2314 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2315 case WCon{True{}, w8}:
2316 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2317 case WCon{True{}, w7}:
2318 match w7:
2319 case WCon{False{}, w8}:
2320 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2321 case WCon{True{}, w8}:
2322 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2323 case WCon{True{}, w6}:
2324 match w6:
2325 case WCon{False{}, w7}:
2326 match w7:
2327 case WCon{False{}, w8}:
2328 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2329 case WCon{True{}, w8}:
2330 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2331 case WCon{True{}, w7}:
2332 match w7:
2333 case WCon{False{}, w8}:
2334 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2335 case WCon{True{}, w8}:
2336 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2337 case WCon{True{}, w2}:
2338 match w2:
2339 case WCon{False{}, w3}:
2340 match w3:
2341 case WCon{False{}, w4}:
2342 match w4:
2343 case WCon{False{}, w5}:
2344 match w5:
2345 case WCon{False{}, w6}:
2346 match w6:
2347 case WCon{False{}, w7}:
2348 match w7:
2349 case WCon{False{}, w8}:
2350 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2351 case WCon{True{}, w8}:
2352 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2353 case WCon{True{}, w7}:
2354 match w7:
2355 case WCon{False{}, w8}:
2356 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2357 case WCon{True{}, w8}:
2358 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2359 case WCon{True{}, w6}:
2360 match w6:
2361 case WCon{False{}, w7}:
2362 match w7:
2363 case WCon{False{}, w8}:
2364 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2365 case WCon{True{}, w8}:
2366 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2367 case WCon{True{}, w7}:
2368 match w7:
2369 case WCon{False{}, w8}:
2370 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2371 case WCon{True{}, w8}:
2372 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2373 case WCon{True{}, w5}:
2374 match w5:
2375 case WCon{False{}, w6}:
2376 match w6:
2377 case WCon{False{}, w7}:
2378 match w7:
2379 case WCon{False{}, w8}:
2380 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2381 case WCon{True{}, w8}:
2382 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2383 case WCon{True{}, w7}:
2384 match w7:
2385 case WCon{False{}, w8}:
2386 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2387 case WCon{True{}, w8}:
2388 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2389 case WCon{True{}, w6}:
2390 match w6:
2391 case WCon{False{}, w7}:
2392 match w7:
2393 case WCon{False{}, w8}:
2394 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2395 case WCon{True{}, w8}:
2396 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2397 case WCon{True{}, w7}:
2398 match w7:
2399 case WCon{False{}, w8}:
2400 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2401 case WCon{True{}, w8}:
2402 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2403 case WCon{True{}, w4}:
2404 match w4:
2405 case WCon{False{}, w5}:
2406 match w5:
2407 case WCon{False{}, w6}:
2408 match w6:
2409 case WCon{False{}, w7}:
2410 match w7:
2411 case WCon{False{}, w8}:
2412 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2413 case WCon{True{}, w8}:
2414 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2415 case WCon{True{}, w7}:
2416 match w7:
2417 case WCon{False{}, w8}:
2418 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2419 case WCon{True{}, w8}:
2420 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2421 case WCon{True{}, w6}:
2422 match w6:
2423 case WCon{False{}, w7}:
2424 match w7:
2425 case WCon{False{}, w8}:
2426 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2427 case WCon{True{}, w8}:
2428 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2429 case WCon{True{}, w7}:
2430 match w7:
2431 case WCon{False{}, w8}:
2432 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2433 case WCon{True{}, w8}:
2434 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2435 case WCon{True{}, w5}:
2436 match w5:
2437 case WCon{False{}, w6}:
2438 match w6:
2439 case WCon{False{}, w7}:
2440 match w7:
2441 case WCon{False{}, w8}:
2442 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2443 case WCon{True{}, w8}:
2444 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2445 case WCon{True{}, w7}:
2446 match w7:
2447 case WCon{False{}, w8}:
2448 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2449 case WCon{True{}, w8}:
2450 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2451 case WCon{True{}, w6}:
2452 match w6:
2453 case WCon{False{}, w7}:
2454 match w7:
2455 case WCon{False{}, w8}:
2456 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2457 case WCon{True{}, w8}:
2458 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2459 case WCon{True{}, w7}:
2460 match w7:
2461 case WCon{False{}, w8}:
2462 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2463 case WCon{True{}, w8}:
2464 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2465 case WCon{True{}, w3}:
2466 match w3:
2467 case WCon{False{}, w4}:
2468 match w4:
2469 case WCon{False{}, w5}:
2470 match w5:
2471 case WCon{False{}, w6}:
2472 match w6:
2473 case WCon{False{}, w7}:
2474 match w7:
2475 case WCon{False{}, w8}:
2476 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2477 case WCon{True{}, w8}:
2478 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2479 case WCon{True{}, w7}:
2480 match w7:
2481 case WCon{False{}, w8}:
2482 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2483 case WCon{True{}, w8}:
2484 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2485 case WCon{True{}, w6}:
2486 match w6:
2487 case WCon{False{}, w7}:
2488 match w7:
2489 case WCon{False{}, w8}:
2490 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2491 case WCon{True{}, w8}:
2492 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2493 case WCon{True{}, w7}:
2494 match w7:
2495 case WCon{False{}, w8}:
2496 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2497 case WCon{True{}, w8}:
2498 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2499 case WCon{True{}, w5}:
2500 match w5:
2501 case WCon{False{}, w6}:
2502 match w6:
2503 case WCon{False{}, w7}:
2504 match w7:
2505 case WCon{False{}, w8}:
2506 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2507 case WCon{True{}, w8}:
2508 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2509 case WCon{True{}, w7}:
2510 match w7:
2511 case WCon{False{}, w8}:
2512 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2513 case WCon{True{}, w8}:
2514 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2515 case WCon{True{}, w6}:
2516 match w6:
2517 case WCon{False{}, w7}:
2518 match w7:
2519 case WCon{False{}, w8}:
2520 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2521 case WCon{True{}, w8}:
2522 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2523 case WCon{True{}, w7}:
2524 match w7:
2525 case WCon{False{}, w8}:
2526 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2527 case WCon{True{}, w8}:
2528 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2529 case WCon{True{}, w4}:
2530 match w4:
2531 case WCon{False{}, w5}:
2532 match w5:
2533 case WCon{False{}, w6}:
2534 match w6:
2535 case WCon{False{}, w7}:
2536 match w7:
2537 case WCon{False{}, w8}:
2538 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2539 case WCon{True{}, w8}:
2540 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2541 case WCon{True{}, w7}:
2542 match w7:
2543 case WCon{False{}, w8}:
2544 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2545 case WCon{True{}, w8}:
2546 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2547 case WCon{True{}, w6}:
2548 match w6:
2549 case WCon{False{}, w7}:
2550 match w7:
2551 case WCon{False{}, w8}:
2552 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2553 case WCon{True{}, w8}:
2554 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2555 case WCon{True{}, w7}:
2556 match w7:
2557 case WCon{False{}, w8}:
2558 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2559 case WCon{True{}, w8}:
2560 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2561 case WCon{True{}, w5}:
2562 match w5:
2563 case WCon{False{}, w6}:
2564 match w6:
2565 case WCon{False{}, w7}:
2566 match w7:
2567 case WCon{False{}, w8}:
2568 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2569 case WCon{True{}, w8}:
2570 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2571 case WCon{True{}, w7}:
2572 match w7:
2573 case WCon{False{}, w8}:
2574 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2575 case WCon{True{}, w8}:
2576 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2577 case WCon{True{}, w6}:
2578 match w6:
2579 case WCon{False{}, w7}:
2580 match w7:
2581 case WCon{False{}, w8}:
2582 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2583 case WCon{True{}, w8}:
2584 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2585 case WCon{True{}, w7}:
2586 match w7:
2587 case WCon{False{}, w8}:
2588 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2589 case WCon{True{}, w8}:
2590 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2591 case WCon{True{}, w1}:
2592 match w1:
2593 case WCon{False{}, w2}:
2594 match w2:
2595 case WCon{False{}, w3}:
2596 match w3:
2597 case WCon{False{}, w4}:
2598 match w4:
2599 case WCon{False{}, w5}:
2600 match w5:
2601 case WCon{False{}, w6}:
2602 match w6:
2603 case WCon{False{}, w7}:
2604 match w7:
2605 case WCon{False{}, w8}:
2606 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2607 case WCon{True{}, w8}:
2608 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2609 case WCon{True{}, w7}:
2610 match w7:
2611 case WCon{False{}, w8}:
2612 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2613 case WCon{True{}, w8}:
2614 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2615 case WCon{True{}, w6}:
2616 match w6:
2617 case WCon{False{}, w7}:
2618 match w7:
2619 case WCon{False{}, w8}:
2620 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2621 case WCon{True{}, w8}:
2622 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2623 case WCon{True{}, w7}:
2624 match w7:
2625 case WCon{False{}, w8}:
2626 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2627 case WCon{True{}, w8}:
2628 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2629 case WCon{True{}, w5}:
2630 match w5:
2631 case WCon{False{}, w6}:
2632 match w6:
2633 case WCon{False{}, w7}:
2634 match w7:
2635 case WCon{False{}, w8}:
2636 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2637 case WCon{True{}, w8}:
2638 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2639 case WCon{True{}, w7}:
2640 match w7:
2641 case WCon{False{}, w8}:
2642 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2643 case WCon{True{}, w8}:
2644 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2645 case WCon{True{}, w6}:
2646 match w6:
2647 case WCon{False{}, w7}:
2648 match w7:
2649 case WCon{False{}, w8}:
2650 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2651 case WCon{True{}, w8}:
2652 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2653 case WCon{True{}, w7}:
2654 match w7:
2655 case WCon{False{}, w8}:
2656 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2657 case WCon{True{}, w8}:
2658 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2659 case WCon{True{}, w4}:
2660 match w4:
2661 case WCon{False{}, w5}:
2662 match w5:
2663 case WCon{False{}, w6}:
2664 match w6:
2665 case WCon{False{}, w7}:
2666 match w7:
2667 case WCon{False{}, w8}:
2668 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2669 case WCon{True{}, w8}:
2670 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2671 case WCon{True{}, w7}:
2672 match w7:
2673 case WCon{False{}, w8}:
2674 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2675 case WCon{True{}, w8}:
2676 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2677 case WCon{True{}, w6}:
2678 match w6:
2679 case WCon{False{}, w7}:
2680 match w7:
2681 case WCon{False{}, w8}:
2682 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2683 case WCon{True{}, w8}:
2684 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2685 case WCon{True{}, w7}:
2686 match w7:
2687 case WCon{False{}, w8}:
2688 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2689 case WCon{True{}, w8}:
2690 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2691 case WCon{True{}, w5}:
2692 match w5:
2693 case WCon{False{}, w6}:
2694 match w6:
2695 case WCon{False{}, w7}:
2696 match w7:
2697 case WCon{False{}, w8}:
2698 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2699 case WCon{True{}, w8}:
2700 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2701 case WCon{True{}, w7}:
2702 match w7:
2703 case WCon{False{}, w8}:
2704 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2705 case WCon{True{}, w8}:
2706 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2707 case WCon{True{}, w6}:
2708 match w6:
2709 case WCon{False{}, w7}:
2710 match w7:
2711 case WCon{False{}, w8}:
2712 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2713 case WCon{True{}, w8}:
2714 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2715 case WCon{True{}, w7}:
2716 match w7:
2717 case WCon{False{}, w8}:
2718 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2719 case WCon{True{}, w8}:
2720 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2721 case WCon{True{}, w3}:
2722 match w3:
2723 case WCon{False{}, w4}:
2724 match w4:
2725 case WCon{False{}, w5}:
2726 match w5:
2727 case WCon{False{}, w6}:
2728 match w6:
2729 case WCon{False{}, w7}:
2730 match w7:
2731 case WCon{False{}, w8}:
2732 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2733 case WCon{True{}, w8}:
2734 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2735 case WCon{True{}, w7}:
2736 match w7:
2737 case WCon{False{}, w8}:
2738 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2739 case WCon{True{}, w8}:
2740 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2741 case WCon{True{}, w6}:
2742 match w6:
2743 case WCon{False{}, w7}:
2744 match w7:
2745 case WCon{False{}, w8}:
2746 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2747 case WCon{True{}, w8}:
2748 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2749 case WCon{True{}, w7}:
2750 match w7:
2751 case WCon{False{}, w8}:
2752 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2753 case WCon{True{}, w8}:
2754 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2755 case WCon{True{}, w5}:
2756 match w5:
2757 case WCon{False{}, w6}:
2758 match w6:
2759 case WCon{False{}, w7}:
2760 match w7:
2761 case WCon{False{}, w8}:
2762 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2763 case WCon{True{}, w8}:
2764 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2765 case WCon{True{}, w7}:
2766 match w7:
2767 case WCon{False{}, w8}:
2768 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2769 case WCon{True{}, w8}:
2770 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2771 case WCon{True{}, w6}:
2772 match w6:
2773 case WCon{False{}, w7}:
2774 match w7:
2775 case WCon{False{}, w8}:
2776 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2777 case WCon{True{}, w8}:
2778 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2779 case WCon{True{}, w7}:
2780 match w7:
2781 case WCon{False{}, w8}:
2782 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2783 case WCon{True{}, w8}:
2784 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2785 case WCon{True{}, w4}:
2786 match w4:
2787 case WCon{False{}, w5}:
2788 match w5:
2789 case WCon{False{}, w6}:
2790 match w6:
2791 case WCon{False{}, w7}:
2792 match w7:
2793 case WCon{False{}, w8}:
2794 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2795 case WCon{True{}, w8}:
2796 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2797 case WCon{True{}, w7}:
2798 match w7:
2799 case WCon{False{}, w8}:
2800 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2801 case WCon{True{}, w8}:
2802 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2803 case WCon{True{}, w6}:
2804 match w6:
2805 case WCon{False{}, w7}:
2806 match w7:
2807 case WCon{False{}, w8}:
2808 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2809 case WCon{True{}, w8}:
2810 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2811 case WCon{True{}, w7}:
2812 match w7:
2813 case WCon{False{}, w8}:
2814 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2815 case WCon{True{}, w8}:
2816 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2817 case WCon{True{}, w5}:
2818 match w5:
2819 case WCon{False{}, w6}:
2820 match w6:
2821 case WCon{False{}, w7}:
2822 match w7:
2823 case WCon{False{}, w8}:
2824 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2825 case WCon{True{}, w8}:
2826 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2827 case WCon{True{}, w7}:
2828 match w7:
2829 case WCon{False{}, w8}:
2830 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2831 case WCon{True{}, w8}:
2832 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2833 case WCon{True{}, w6}:
2834 match w6:
2835 case WCon{False{}, w7}:
2836 match w7:
2837 case WCon{False{}, w8}:
2838 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2839 case WCon{True{}, w8}:
2840 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2841 case WCon{True{}, w7}:
2842 match w7:
2843 case WCon{False{}, w8}:
2844 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2845 case WCon{True{}, w8}:
2846 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2847 case WCon{True{}, w2}:
2848 match w2:
2849 case WCon{False{}, w3}:
2850 match w3:
2851 case WCon{False{}, w4}:
2852 match w4:
2853 case WCon{False{}, w5}:
2854 match w5:
2855 case WCon{False{}, w6}:
2856 match w6:
2857 case WCon{False{}, w7}:
2858 match w7:
2859 case WCon{False{}, w8}:
2860 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2861 case WCon{True{}, w8}:
2862 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2863 case WCon{True{}, w7}:
2864 match w7:
2865 case WCon{False{}, w8}:
2866 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2867 case WCon{True{}, w8}:
2868 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2869 case WCon{True{}, w6}:
2870 match w6:
2871 case WCon{False{}, w7}:
2872 match w7:
2873 case WCon{False{}, w8}:
2874 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2875 case WCon{True{}, w8}:
2876 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2877 case WCon{True{}, w7}:
2878 match w7:
2879 case WCon{False{}, w8}:
2880 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2881 case WCon{True{}, w8}:
2882 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2883 case WCon{True{}, w5}:
2884 match w5:
2885 case WCon{False{}, w6}:
2886 match w6:
2887 case WCon{False{}, w7}:
2888 match w7:
2889 case WCon{False{}, w8}:
2890 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2891 case WCon{True{}, w8}:
2892 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2893 case WCon{True{}, w7}:
2894 match w7:
2895 case WCon{False{}, w8}:
2896 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2897 case WCon{True{}, w8}:
2898 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2899 case WCon{True{}, w6}:
2900 match w6:
2901 case WCon{False{}, w7}:
2902 match w7:
2903 case WCon{False{}, w8}:
2904 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2905 case WCon{True{}, w8}:
2906 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2907 case WCon{True{}, w7}:
2908 match w7:
2909 case WCon{False{}, w8}:
2910 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2911 case WCon{True{}, w8}:
2912 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2913 case WCon{True{}, w4}:
2914 match w4:
2915 case WCon{False{}, w5}:
2916 match w5:
2917 case WCon{False{}, w6}:
2918 match w6:
2919 case WCon{False{}, w7}:
2920 match w7:
2921 case WCon{False{}, w8}:
2922 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2923 case WCon{True{}, w8}:
2924 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2925 case WCon{True{}, w7}:
2926 match w7:
2927 case WCon{False{}, w8}:
2928 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2929 case WCon{True{}, w8}:
2930 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2931 case WCon{True{}, w6}:
2932 match w6:
2933 case WCon{False{}, w7}:
2934 match w7:
2935 case WCon{False{}, w8}:
2936 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2937 case WCon{True{}, w8}:
2938 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2939 case WCon{True{}, w7}:
2940 match w7:
2941 case WCon{False{}, w8}:
2942 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2943 case WCon{True{}, w8}:
2944 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2945 case WCon{True{}, w5}:
2946 match w5:
2947 case WCon{False{}, w6}:
2948 match w6:
2949 case WCon{False{}, w7}:
2950 match w7:
2951 case WCon{False{}, w8}:
2952 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2953 case WCon{True{}, w8}:
2954 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2955 case WCon{True{}, w7}:
2956 match w7:
2957 case WCon{False{}, w8}:
2958 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2959 case WCon{True{}, w8}:
2960 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
2961 case WCon{True{}, w6}:
2962 match w6:
2963 case WCon{False{}, w7}:
2964 match w7:
2965 case WCon{False{}, w8}:
2966 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2967 case WCon{True{}, w8}:
2968 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2969 case WCon{True{}, w7}:
2970 match w7:
2971 case WCon{False{}, w8}:
2972 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2973 case WCon{True{}, w8}:
2974 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
2975 case WCon{True{}, w3}:
2976 match w3:
2977 case WCon{False{}, w4}:
2978 match w4:
2979 case WCon{False{}, w5}:
2980 match w5:
2981 case WCon{False{}, w6}:
2982 match w6:
2983 case WCon{False{}, w7}:
2984 match w7:
2985 case WCon{False{}, w8}:
2986 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2987 case WCon{True{}, w8}:
2988 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
2989 case WCon{True{}, w7}:
2990 match w7:
2991 case WCon{False{}, w8}:
2992 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2993 case WCon{True{}, w8}:
2994 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
2995 case WCon{True{}, w6}:
2996 match w6:
2997 case WCon{False{}, w7}:
2998 match w7:
2999 case WCon{False{}, w8}:
3000 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3001 case WCon{True{}, w8}:
3002 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3003 case WCon{True{}, w7}:
3004 match w7:
3005 case WCon{False{}, w8}:
3006 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3007 case WCon{True{}, w8}:
3008 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3009 case WCon{True{}, w5}:
3010 match w5:
3011 case WCon{False{}, w6}:
3012 match w6:
3013 case WCon{False{}, w7}:
3014 match w7:
3015 case WCon{False{}, w8}:
3016 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3017 case WCon{True{}, w8}:
3018 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3019 case WCon{True{}, w7}:
3020 match w7:
3021 case WCon{False{}, w8}:
3022 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3023 case WCon{True{}, w8}:
3024 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3025 case WCon{True{}, w6}:
3026 match w6:
3027 case WCon{False{}, w7}:
3028 match w7:
3029 case WCon{False{}, w8}:
3030 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3031 case WCon{True{}, w8}:
3032 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3033 case WCon{True{}, w7}:
3034 match w7:
3035 case WCon{False{}, w8}:
3036 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3037 case WCon{True{}, w8}:
3038 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3039 case WCon{True{}, w4}:
3040 match w4:
3041 case WCon{False{}, w5}:
3042 match w5:
3043 case WCon{False{}, w6}:
3044 match w6:
3045 case WCon{False{}, w7}:
3046 match w7:
3047 case WCon{False{}, w8}:
3048 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3049 case WCon{True{}, w8}:
3050 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3051 case WCon{True{}, w7}:
3052 match w7:
3053 case WCon{False{}, w8}:
3054 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3055 case WCon{True{}, w8}:
3056 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3057 case WCon{True{}, w6}:
3058 match w6:
3059 case WCon{False{}, w7}:
3060 match w7:
3061 case WCon{False{}, w8}:
3062 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3063 case WCon{True{}, w8}:
3064 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3065 case WCon{True{}, w7}:
3066 match w7:
3067 case WCon{False{}, w8}:
3068 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3069 case WCon{True{}, w8}:
3070 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3071 case WCon{True{}, w5}:
3072 match w5:
3073 case WCon{False{}, w6}:
3074 match w6:
3075 case WCon{False{}, w7}:
3076 match w7:
3077 case WCon{False{}, w8}:
3078 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3079 case WCon{True{}, w8}:
3080 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3081 case WCon{True{}, w7}:
3082 match w7:
3083 case WCon{False{}, w8}:
3084 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3085 case WCon{True{}, w8}:
3086 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3087 case WCon{True{}, w6}:
3088 match w6:
3089 case WCon{False{}, w7}:
3090 match w7:
3091 case WCon{False{}, w8}:
3092 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3093 case WCon{True{}, w8}:
3094 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3095 case WCon{True{}, w7}:
3096 match w7:
3097 case WCon{False{}, w8}:
3098 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3099 case WCon{True{}, w8}:
3100 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3101
3102# SB4, the inverse of SB2
3103def aria.sb4(w0: Word(8n)) -> Word(8n):
3104 match w0:
3105 case WCon{False{}, w1}:
3106 match w1:
3107 case WCon{False{}, w2}:
3108 match w2:
3109 case WCon{False{}, w3}:
3110 match w3:
3111 case WCon{False{}, w4}:
3112 match w4:
3113 case WCon{False{}, w5}:
3114 match w5:
3115 case WCon{False{}, w6}:
3116 match w6:
3117 case WCon{False{}, w7}:
3118 match w7:
3119 case WCon{False{}, w8}:
3120 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3121 case WCon{True{}, w8}:
3122 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3123 case WCon{True{}, w7}:
3124 match w7:
3125 case WCon{False{}, w8}:
3126 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3127 case WCon{True{}, w8}:
3128 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3129 case WCon{True{}, w6}:
3130 match w6:
3131 case WCon{False{}, w7}:
3132 match w7:
3133 case WCon{False{}, w8}:
3134 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3135 case WCon{True{}, w8}:
3136 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3137 case WCon{True{}, w7}:
3138 match w7:
3139 case WCon{False{}, w8}:
3140 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3141 case WCon{True{}, w8}:
3142 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3143 case WCon{True{}, w5}:
3144 match w5:
3145 case WCon{False{}, w6}:
3146 match w6:
3147 case WCon{False{}, w7}:
3148 match w7:
3149 case WCon{False{}, w8}:
3150 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3151 case WCon{True{}, w8}:
3152 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3153 case WCon{True{}, w7}:
3154 match w7:
3155 case WCon{False{}, w8}:
3156 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3157 case WCon{True{}, w8}:
3158 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3159 case WCon{True{}, w6}:
3160 match w6:
3161 case WCon{False{}, w7}:
3162 match w7:
3163 case WCon{False{}, w8}:
3164 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3165 case WCon{True{}, w8}:
3166 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3167 case WCon{True{}, w7}:
3168 match w7:
3169 case WCon{False{}, w8}:
3170 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3171 case WCon{True{}, w8}:
3172 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3173 case WCon{True{}, w4}:
3174 match w4:
3175 case WCon{False{}, w5}:
3176 match w5:
3177 case WCon{False{}, w6}:
3178 match w6:
3179 case WCon{False{}, w7}:
3180 match w7:
3181 case WCon{False{}, w8}:
3182 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3183 case WCon{True{}, w8}:
3184 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3185 case WCon{True{}, w7}:
3186 match w7:
3187 case WCon{False{}, w8}:
3188 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3189 case WCon{True{}, w8}:
3190 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3191 case WCon{True{}, w6}:
3192 match w6:
3193 case WCon{False{}, w7}:
3194 match w7:
3195 case WCon{False{}, w8}:
3196 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3197 case WCon{True{}, w8}:
3198 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3199 case WCon{True{}, w7}:
3200 match w7:
3201 case WCon{False{}, w8}:
3202 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3203 case WCon{True{}, w8}:
3204 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3205 case WCon{True{}, w5}:
3206 match w5:
3207 case WCon{False{}, w6}:
3208 match w6:
3209 case WCon{False{}, w7}:
3210 match w7:
3211 case WCon{False{}, w8}:
3212 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3213 case WCon{True{}, w8}:
3214 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3215 case WCon{True{}, w7}:
3216 match w7:
3217 case WCon{False{}, w8}:
3218 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3219 case WCon{True{}, w8}:
3220 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3221 case WCon{True{}, w6}:
3222 match w6:
3223 case WCon{False{}, w7}:
3224 match w7:
3225 case WCon{False{}, w8}:
3226 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3227 case WCon{True{}, w8}:
3228 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3229 case WCon{True{}, w7}:
3230 match w7:
3231 case WCon{False{}, w8}:
3232 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3233 case WCon{True{}, w8}:
3234 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3235 case WCon{True{}, w3}:
3236 match w3:
3237 case WCon{False{}, w4}:
3238 match w4:
3239 case WCon{False{}, w5}:
3240 match w5:
3241 case WCon{False{}, w6}:
3242 match w6:
3243 case WCon{False{}, w7}:
3244 match w7:
3245 case WCon{False{}, w8}:
3246 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3247 case WCon{True{}, w8}:
3248 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3249 case WCon{True{}, w7}:
3250 match w7:
3251 case WCon{False{}, w8}:
3252 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3253 case WCon{True{}, w8}:
3254 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3255 case WCon{True{}, w6}:
3256 match w6:
3257 case WCon{False{}, w7}:
3258 match w7:
3259 case WCon{False{}, w8}:
3260 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3261 case WCon{True{}, w8}:
3262 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3263 case WCon{True{}, w7}:
3264 match w7:
3265 case WCon{False{}, w8}:
3266 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3267 case WCon{True{}, w8}:
3268 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3269 case WCon{True{}, w5}:
3270 match w5:
3271 case WCon{False{}, w6}:
3272 match w6:
3273 case WCon{False{}, w7}:
3274 match w7:
3275 case WCon{False{}, w8}:
3276 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3277 case WCon{True{}, w8}:
3278 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3279 case WCon{True{}, w7}:
3280 match w7:
3281 case WCon{False{}, w8}:
3282 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3283 case WCon{True{}, w8}:
3284 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3285 case WCon{True{}, w6}:
3286 match w6:
3287 case WCon{False{}, w7}:
3288 match w7:
3289 case WCon{False{}, w8}:
3290 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3291 case WCon{True{}, w8}:
3292 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3293 case WCon{True{}, w7}:
3294 match w7:
3295 case WCon{False{}, w8}:
3296 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3297 case WCon{True{}, w8}:
3298 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3299 case WCon{True{}, w4}:
3300 match w4:
3301 case WCon{False{}, w5}:
3302 match w5:
3303 case WCon{False{}, w6}:
3304 match w6:
3305 case WCon{False{}, w7}:
3306 match w7:
3307 case WCon{False{}, w8}:
3308 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3309 case WCon{True{}, w8}:
3310 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3311 case WCon{True{}, w7}:
3312 match w7:
3313 case WCon{False{}, w8}:
3314 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3315 case WCon{True{}, w8}:
3316 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3317 case WCon{True{}, w6}:
3318 match w6:
3319 case WCon{False{}, w7}:
3320 match w7:
3321 case WCon{False{}, w8}:
3322 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3323 case WCon{True{}, w8}:
3324 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3325 case WCon{True{}, w7}:
3326 match w7:
3327 case WCon{False{}, w8}:
3328 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3329 case WCon{True{}, w8}:
3330 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3331 case WCon{True{}, w5}:
3332 match w5:
3333 case WCon{False{}, w6}:
3334 match w6:
3335 case WCon{False{}, w7}:
3336 match w7:
3337 case WCon{False{}, w8}:
3338 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3339 case WCon{True{}, w8}:
3340 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3341 case WCon{True{}, w7}:
3342 match w7:
3343 case WCon{False{}, w8}:
3344 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3345 case WCon{True{}, w8}:
3346 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3347 case WCon{True{}, w6}:
3348 match w6:
3349 case WCon{False{}, w7}:
3350 match w7:
3351 case WCon{False{}, w8}:
3352 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3353 case WCon{True{}, w8}:
3354 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3355 case WCon{True{}, w7}:
3356 match w7:
3357 case WCon{False{}, w8}:
3358 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3359 case WCon{True{}, w8}:
3360 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3361 case WCon{True{}, w2}:
3362 match w2:
3363 case WCon{False{}, w3}:
3364 match w3:
3365 case WCon{False{}, w4}:
3366 match w4:
3367 case WCon{False{}, w5}:
3368 match w5:
3369 case WCon{False{}, w6}:
3370 match w6:
3371 case WCon{False{}, w7}:
3372 match w7:
3373 case WCon{False{}, w8}:
3374 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3375 case WCon{True{}, w8}:
3376 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3377 case WCon{True{}, w7}:
3378 match w7:
3379 case WCon{False{}, w8}:
3380 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3381 case WCon{True{}, w8}:
3382 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3383 case WCon{True{}, w6}:
3384 match w6:
3385 case WCon{False{}, w7}:
3386 match w7:
3387 case WCon{False{}, w8}:
3388 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3389 case WCon{True{}, w8}:
3390 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3391 case WCon{True{}, w7}:
3392 match w7:
3393 case WCon{False{}, w8}:
3394 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3395 case WCon{True{}, w8}:
3396 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3397 case WCon{True{}, w5}:
3398 match w5:
3399 case WCon{False{}, w6}:
3400 match w6:
3401 case WCon{False{}, w7}:
3402 match w7:
3403 case WCon{False{}, w8}:
3404 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3405 case WCon{True{}, w8}:
3406 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3407 case WCon{True{}, w7}:
3408 match w7:
3409 case WCon{False{}, w8}:
3410 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3411 case WCon{True{}, w8}:
3412 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3413 case WCon{True{}, w6}:
3414 match w6:
3415 case WCon{False{}, w7}:
3416 match w7:
3417 case WCon{False{}, w8}:
3418 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3419 case WCon{True{}, w8}:
3420 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3421 case WCon{True{}, w7}:
3422 match w7:
3423 case WCon{False{}, w8}:
3424 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3425 case WCon{True{}, w8}:
3426 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3427 case WCon{True{}, w4}:
3428 match w4:
3429 case WCon{False{}, w5}:
3430 match w5:
3431 case WCon{False{}, w6}:
3432 match w6:
3433 case WCon{False{}, w7}:
3434 match w7:
3435 case WCon{False{}, w8}:
3436 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3437 case WCon{True{}, w8}:
3438 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3439 case WCon{True{}, w7}:
3440 match w7:
3441 case WCon{False{}, w8}:
3442 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3443 case WCon{True{}, w8}:
3444 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3445 case WCon{True{}, w6}:
3446 match w6:
3447 case WCon{False{}, w7}:
3448 match w7:
3449 case WCon{False{}, w8}:
3450 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3451 case WCon{True{}, w8}:
3452 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3453 case WCon{True{}, w7}:
3454 match w7:
3455 case WCon{False{}, w8}:
3456 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3457 case WCon{True{}, w8}:
3458 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3459 case WCon{True{}, w5}:
3460 match w5:
3461 case WCon{False{}, w6}:
3462 match w6:
3463 case WCon{False{}, w7}:
3464 match w7:
3465 case WCon{False{}, w8}:
3466 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3467 case WCon{True{}, w8}:
3468 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3469 case WCon{True{}, w7}:
3470 match w7:
3471 case WCon{False{}, w8}:
3472 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3473 case WCon{True{}, w8}:
3474 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3475 case WCon{True{}, w6}:
3476 match w6:
3477 case WCon{False{}, w7}:
3478 match w7:
3479 case WCon{False{}, w8}:
3480 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3481 case WCon{True{}, w8}:
3482 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3483 case WCon{True{}, w7}:
3484 match w7:
3485 case WCon{False{}, w8}:
3486 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3487 case WCon{True{}, w8}:
3488 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3489 case WCon{True{}, w3}:
3490 match w3:
3491 case WCon{False{}, w4}:
3492 match w4:
3493 case WCon{False{}, w5}:
3494 match w5:
3495 case WCon{False{}, w6}:
3496 match w6:
3497 case WCon{False{}, w7}:
3498 match w7:
3499 case WCon{False{}, w8}:
3500 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3501 case WCon{True{}, w8}:
3502 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3503 case WCon{True{}, w7}:
3504 match w7:
3505 case WCon{False{}, w8}:
3506 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3507 case WCon{True{}, w8}:
3508 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3509 case WCon{True{}, w6}:
3510 match w6:
3511 case WCon{False{}, w7}:
3512 match w7:
3513 case WCon{False{}, w8}:
3514 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3515 case WCon{True{}, w8}:
3516 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3517 case WCon{True{}, w7}:
3518 match w7:
3519 case WCon{False{}, w8}:
3520 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3521 case WCon{True{}, w8}:
3522 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3523 case WCon{True{}, w5}:
3524 match w5:
3525 case WCon{False{}, w6}:
3526 match w6:
3527 case WCon{False{}, w7}:
3528 match w7:
3529 case WCon{False{}, w8}:
3530 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3531 case WCon{True{}, w8}:
3532 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3533 case WCon{True{}, w7}:
3534 match w7:
3535 case WCon{False{}, w8}:
3536 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3537 case WCon{True{}, w8}:
3538 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3539 case WCon{True{}, w6}:
3540 match w6:
3541 case WCon{False{}, w7}:
3542 match w7:
3543 case WCon{False{}, w8}:
3544 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3545 case WCon{True{}, w8}:
3546 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3547 case WCon{True{}, w7}:
3548 match w7:
3549 case WCon{False{}, w8}:
3550 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3551 case WCon{True{}, w8}:
3552 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3553 case WCon{True{}, w4}:
3554 match w4:
3555 case WCon{False{}, w5}:
3556 match w5:
3557 case WCon{False{}, w6}:
3558 match w6:
3559 case WCon{False{}, w7}:
3560 match w7:
3561 case WCon{False{}, w8}:
3562 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3563 case WCon{True{}, w8}:
3564 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3565 case WCon{True{}, w7}:
3566 match w7:
3567 case WCon{False{}, w8}:
3568 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3569 case WCon{True{}, w8}:
3570 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3571 case WCon{True{}, w6}:
3572 match w6:
3573 case WCon{False{}, w7}:
3574 match w7:
3575 case WCon{False{}, w8}:
3576 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3577 case WCon{True{}, w8}:
3578 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3579 case WCon{True{}, w7}:
3580 match w7:
3581 case WCon{False{}, w8}:
3582 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3583 case WCon{True{}, w8}:
3584 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3585 case WCon{True{}, w5}:
3586 match w5:
3587 case WCon{False{}, w6}:
3588 match w6:
3589 case WCon{False{}, w7}:
3590 match w7:
3591 case WCon{False{}, w8}:
3592 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3593 case WCon{True{}, w8}:
3594 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3595 case WCon{True{}, w7}:
3596 match w7:
3597 case WCon{False{}, w8}:
3598 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3599 case WCon{True{}, w8}:
3600 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3601 case WCon{True{}, w6}:
3602 match w6:
3603 case WCon{False{}, w7}:
3604 match w7:
3605 case WCon{False{}, w8}:
3606 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3607 case WCon{True{}, w8}:
3608 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3609 case WCon{True{}, w7}:
3610 match w7:
3611 case WCon{False{}, w8}:
3612 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3613 case WCon{True{}, w8}:
3614 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3615 case WCon{True{}, w1}:
3616 match w1:
3617 case WCon{False{}, w2}:
3618 match w2:
3619 case WCon{False{}, w3}:
3620 match w3:
3621 case WCon{False{}, w4}:
3622 match w4:
3623 case WCon{False{}, w5}:
3624 match w5:
3625 case WCon{False{}, w6}:
3626 match w6:
3627 case WCon{False{}, w7}:
3628 match w7:
3629 case WCon{False{}, w8}:
3630 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3631 case WCon{True{}, w8}:
3632 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3633 case WCon{True{}, w7}:
3634 match w7:
3635 case WCon{False{}, w8}:
3636 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3637 case WCon{True{}, w8}:
3638 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3639 case WCon{True{}, w6}:
3640 match w6:
3641 case WCon{False{}, w7}:
3642 match w7:
3643 case WCon{False{}, w8}:
3644 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3645 case WCon{True{}, w8}:
3646 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3647 case WCon{True{}, w7}:
3648 match w7:
3649 case WCon{False{}, w8}:
3650 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3651 case WCon{True{}, w8}:
3652 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3653 case WCon{True{}, w5}:
3654 match w5:
3655 case WCon{False{}, w6}:
3656 match w6:
3657 case WCon{False{}, w7}:
3658 match w7:
3659 case WCon{False{}, w8}:
3660 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3661 case WCon{True{}, w8}:
3662 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3663 case WCon{True{}, w7}:
3664 match w7:
3665 case WCon{False{}, w8}:
3666 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3667 case WCon{True{}, w8}:
3668 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3669 case WCon{True{}, w6}:
3670 match w6:
3671 case WCon{False{}, w7}:
3672 match w7:
3673 case WCon{False{}, w8}:
3674 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3675 case WCon{True{}, w8}:
3676 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3677 case WCon{True{}, w7}:
3678 match w7:
3679 case WCon{False{}, w8}:
3680 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3681 case WCon{True{}, w8}:
3682 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3683 case WCon{True{}, w4}:
3684 match w4:
3685 case WCon{False{}, w5}:
3686 match w5:
3687 case WCon{False{}, w6}:
3688 match w6:
3689 case WCon{False{}, w7}:
3690 match w7:
3691 case WCon{False{}, w8}:
3692 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3693 case WCon{True{}, w8}:
3694 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3695 case WCon{True{}, w7}:
3696 match w7:
3697 case WCon{False{}, w8}:
3698 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3699 case WCon{True{}, w8}:
3700 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3701 case WCon{True{}, w6}:
3702 match w6:
3703 case WCon{False{}, w7}:
3704 match w7:
3705 case WCon{False{}, w8}:
3706 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3707 case WCon{True{}, w8}:
3708 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3709 case WCon{True{}, w7}:
3710 match w7:
3711 case WCon{False{}, w8}:
3712 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3713 case WCon{True{}, w8}:
3714 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3715 case WCon{True{}, w5}:
3716 match w5:
3717 case WCon{False{}, w6}:
3718 match w6:
3719 case WCon{False{}, w7}:
3720 match w7:
3721 case WCon{False{}, w8}:
3722 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3723 case WCon{True{}, w8}:
3724 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3725 case WCon{True{}, w7}:
3726 match w7:
3727 case WCon{False{}, w8}:
3728 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3729 case WCon{True{}, w8}:
3730 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3731 case WCon{True{}, w6}:
3732 match w6:
3733 case WCon{False{}, w7}:
3734 match w7:
3735 case WCon{False{}, w8}:
3736 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3737 case WCon{True{}, w8}:
3738 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3739 case WCon{True{}, w7}:
3740 match w7:
3741 case WCon{False{}, w8}:
3742 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3743 case WCon{True{}, w8}:
3744 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3745 case WCon{True{}, w3}:
3746 match w3:
3747 case WCon{False{}, w4}:
3748 match w4:
3749 case WCon{False{}, w5}:
3750 match w5:
3751 case WCon{False{}, w6}:
3752 match w6:
3753 case WCon{False{}, w7}:
3754 match w7:
3755 case WCon{False{}, w8}:
3756 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3757 case WCon{True{}, w8}:
3758 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3759 case WCon{True{}, w7}:
3760 match w7:
3761 case WCon{False{}, w8}:
3762 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3763 case WCon{True{}, w8}:
3764 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3765 case WCon{True{}, w6}:
3766 match w6:
3767 case WCon{False{}, w7}:
3768 match w7:
3769 case WCon{False{}, w8}:
3770 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3771 case WCon{True{}, w8}:
3772 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3773 case WCon{True{}, w7}:
3774 match w7:
3775 case WCon{False{}, w8}:
3776 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3777 case WCon{True{}, w8}:
3778 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3779 case WCon{True{}, w5}:
3780 match w5:
3781 case WCon{False{}, w6}:
3782 match w6:
3783 case WCon{False{}, w7}:
3784 match w7:
3785 case WCon{False{}, w8}:
3786 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3787 case WCon{True{}, w8}:
3788 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3789 case WCon{True{}, w7}:
3790 match w7:
3791 case WCon{False{}, w8}:
3792 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3793 case WCon{True{}, w8}:
3794 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3795 case WCon{True{}, w6}:
3796 match w6:
3797 case WCon{False{}, w7}:
3798 match w7:
3799 case WCon{False{}, w8}:
3800 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3801 case WCon{True{}, w8}:
3802 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3803 case WCon{True{}, w7}:
3804 match w7:
3805 case WCon{False{}, w8}:
3806 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3807 case WCon{True{}, w8}:
3808 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3809 case WCon{True{}, w4}:
3810 match w4:
3811 case WCon{False{}, w5}:
3812 match w5:
3813 case WCon{False{}, w6}:
3814 match w6:
3815 case WCon{False{}, w7}:
3816 match w7:
3817 case WCon{False{}, w8}:
3818 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3819 case WCon{True{}, w8}:
3820 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3821 case WCon{True{}, w7}:
3822 match w7:
3823 case WCon{False{}, w8}:
3824 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3825 case WCon{True{}, w8}:
3826 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3827 case WCon{True{}, w6}:
3828 match w6:
3829 case WCon{False{}, w7}:
3830 match w7:
3831 case WCon{False{}, w8}:
3832 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3833 case WCon{True{}, w8}:
3834 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3835 case WCon{True{}, w7}:
3836 match w7:
3837 case WCon{False{}, w8}:
3838 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3839 case WCon{True{}, w8}:
3840 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3841 case WCon{True{}, w5}:
3842 match w5:
3843 case WCon{False{}, w6}:
3844 match w6:
3845 case WCon{False{}, w7}:
3846 match w7:
3847 case WCon{False{}, w8}:
3848 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3849 case WCon{True{}, w8}:
3850 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3851 case WCon{True{}, w7}:
3852 match w7:
3853 case WCon{False{}, w8}:
3854 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3855 case WCon{True{}, w8}:
3856 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3857 case WCon{True{}, w6}:
3858 match w6:
3859 case WCon{False{}, w7}:
3860 match w7:
3861 case WCon{False{}, w8}:
3862 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3863 case WCon{True{}, w8}:
3864 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3865 case WCon{True{}, w7}:
3866 match w7:
3867 case WCon{False{}, w8}:
3868 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3869 case WCon{True{}, w8}:
3870 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3871 case WCon{True{}, w2}:
3872 match w2:
3873 case WCon{False{}, w3}:
3874 match w3:
3875 case WCon{False{}, w4}:
3876 match w4:
3877 case WCon{False{}, w5}:
3878 match w5:
3879 case WCon{False{}, w6}:
3880 match w6:
3881 case WCon{False{}, w7}:
3882 match w7:
3883 case WCon{False{}, w8}:
3884 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3885 case WCon{True{}, w8}:
3886 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3887 case WCon{True{}, w7}:
3888 match w7:
3889 case WCon{False{}, w8}:
3890 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3891 case WCon{True{}, w8}:
3892 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3893 case WCon{True{}, w6}:
3894 match w6:
3895 case WCon{False{}, w7}:
3896 match w7:
3897 case WCon{False{}, w8}:
3898 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3899 case WCon{True{}, w8}:
3900 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3901 case WCon{True{}, w7}:
3902 match w7:
3903 case WCon{False{}, w8}:
3904 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3905 case WCon{True{}, w8}:
3906 WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3907 case WCon{True{}, w5}:
3908 match w5:
3909 case WCon{False{}, w6}:
3910 match w6:
3911 case WCon{False{}, w7}:
3912 match w7:
3913 case WCon{False{}, w8}:
3914 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3915 case WCon{True{}, w8}:
3916 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3917 case WCon{True{}, w7}:
3918 match w7:
3919 case WCon{False{}, w8}:
3920 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3921 case WCon{True{}, w8}:
3922 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3923 case WCon{True{}, w6}:
3924 match w6:
3925 case WCon{False{}, w7}:
3926 match w7:
3927 case WCon{False{}, w8}:
3928 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3929 case WCon{True{}, w8}:
3930 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3931 case WCon{True{}, w7}:
3932 match w7:
3933 case WCon{False{}, w8}:
3934 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3935 case WCon{True{}, w8}:
3936 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3937 case WCon{True{}, w4}:
3938 match w4:
3939 case WCon{False{}, w5}:
3940 match w5:
3941 case WCon{False{}, w6}:
3942 match w6:
3943 case WCon{False{}, w7}:
3944 match w7:
3945 case WCon{False{}, w8}:
3946 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3947 case WCon{True{}, w8}:
3948 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3949 case WCon{True{}, w7}:
3950 match w7:
3951 case WCon{False{}, w8}:
3952 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3953 case WCon{True{}, w8}:
3954 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3955 case WCon{True{}, w6}:
3956 match w6:
3957 case WCon{False{}, w7}:
3958 match w7:
3959 case WCon{False{}, w8}:
3960 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3961 case WCon{True{}, w8}:
3962 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3963 case WCon{True{}, w7}:
3964 match w7:
3965 case WCon{False{}, w8}:
3966 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3967 case WCon{True{}, w8}:
3968 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3969 case WCon{True{}, w5}:
3970 match w5:
3971 case WCon{False{}, w6}:
3972 match w6:
3973 case WCon{False{}, w7}:
3974 match w7:
3975 case WCon{False{}, w8}:
3976 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3977 case WCon{True{}, w8}:
3978 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3979 case WCon{True{}, w7}:
3980 match w7:
3981 case WCon{False{}, w8}:
3982 WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
3983 case WCon{True{}, w8}:
3984 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
3985 case WCon{True{}, w6}:
3986 match w6:
3987 case WCon{False{}, w7}:
3988 match w7:
3989 case WCon{False{}, w8}:
3990 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3991 case WCon{True{}, w8}:
3992 WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3993 case WCon{True{}, w7}:
3994 match w7:
3995 case WCon{False{}, w8}:
3996 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
3997 case WCon{True{}, w8}:
3998 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
3999 case WCon{True{}, w3}:
4000 match w3:
4001 case WCon{False{}, w4}:
4002 match w4:
4003 case WCon{False{}, w5}:
4004 match w5:
4005 case WCon{False{}, w6}:
4006 match w6:
4007 case WCon{False{}, w7}:
4008 match w7:
4009 case WCon{False{}, w8}:
4010 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4011 case WCon{True{}, w8}:
4012 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4013 case WCon{True{}, w7}:
4014 match w7:
4015 case WCon{False{}, w8}:
4016 WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4017 case WCon{True{}, w8}:
4018 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4019 case WCon{True{}, w6}:
4020 match w6:
4021 case WCon{False{}, w7}:
4022 match w7:
4023 case WCon{False{}, w8}:
4024 WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4025 case WCon{True{}, w8}:
4026 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4027 case WCon{True{}, w7}:
4028 match w7:
4029 case WCon{False{}, w8}:
4030 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4031 case WCon{True{}, w8}:
4032 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4033 case WCon{True{}, w5}:
4034 match w5:
4035 case WCon{False{}, w6}:
4036 match w6:
4037 case WCon{False{}, w7}:
4038 match w7:
4039 case WCon{False{}, w8}:
4040 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4041 case WCon{True{}, w8}:
4042 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4043 case WCon{True{}, w7}:
4044 match w7:
4045 case WCon{False{}, w8}:
4046 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4047 case WCon{True{}, w8}:
4048 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4049 case WCon{True{}, w6}:
4050 match w6:
4051 case WCon{False{}, w7}:
4052 match w7:
4053 case WCon{False{}, w8}:
4054 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4055 case WCon{True{}, w8}:
4056 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4057 case WCon{True{}, w7}:
4058 match w7:
4059 case WCon{False{}, w8}:
4060 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4061 case WCon{True{}, w8}:
4062 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4063 case WCon{True{}, w4}:
4064 match w4:
4065 case WCon{False{}, w5}:
4066 match w5:
4067 case WCon{False{}, w6}:
4068 match w6:
4069 case WCon{False{}, w7}:
4070 match w7:
4071 case WCon{False{}, w8}:
4072 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4073 case WCon{True{}, w8}:
4074 WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4075 case WCon{True{}, w7}:
4076 match w7:
4077 case WCon{False{}, w8}:
4078 WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4079 case WCon{True{}, w8}:
4080 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4081 case WCon{True{}, w6}:
4082 match w6:
4083 case WCon{False{}, w7}:
4084 match w7:
4085 case WCon{False{}, w8}:
4086 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4087 case WCon{True{}, w8}:
4088 WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4089 case WCon{True{}, w7}:
4090 match w7:
4091 case WCon{False{}, w8}:
4092 WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4093 case WCon{True{}, w8}:
4094 WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4095 case WCon{True{}, w5}:
4096 match w5:
4097 case WCon{False{}, w6}:
4098 match w6:
4099 case WCon{False{}, w7}:
4100 match w7:
4101 case WCon{False{}, w8}:
4102 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4103 case WCon{True{}, w8}:
4104 WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4105 case WCon{True{}, w7}:
4106 match w7:
4107 case WCon{False{}, w8}:
4108 WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4109 case WCon{True{}, w8}:
4110 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}
4111 case WCon{True{}, w6}:
4112 match w6:
4113 case WCon{False{}, w7}:
4114 match w7:
4115 case WCon{False{}, w8}:
4116 WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{True{}, WNil{}}}}}}}}}
4117 case WCon{True{}, w8}:
4118 WCon{True{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WCon{True{}, WNil{}}}}}}}}}
4119 case WCon{True{}, w7}:
4120 match w7:
4121 case WCon{False{}, w8}:
4122 WCon{True{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4123 case WCon{True{}, w8}:
4124 WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{True{}, WCon{True{}, WCon{False{}, WNil{}}}}}}}}}
4125# END GENERATED: sboxes
4126
4127# The state: the block's sixteen bytes, each as its eight bits, least
4128# significant first (internal)
4129type LcAriaSt is Data:
4130 LcAriaSt{b0: Word(8n), b1: Word(8n), b2: Word(8n), b3: Word(8n), b4: Word(8n), b5: Word(8n), b6: Word(8n), b7: Word(8n), b8: Word(8n), b9: Word(8n), b10: Word(8n), b11: Word(8n), b12: Word(8n), b13: Word(8n), b14: Word(8n), b15: Word(8n)}
4131
4132# BEGIN GENERATED by gen/tables.py: diffusion
4133# the steps: e<j> XORs byte b into each byte of its targets
4134def aria.e0(s: LcAriaSt) -> LcAriaSt:
4135 match s:
4136 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, +x15}:
4137 LcAriaSt{x0, Word.xor(8n, x1, x15), Word.xor(8n, x2, x15), x3, Word.xor(8n, x4, x15), Word.xor(8n, x5, x15), x6, x7, Word.xor(8n, x8, x15), x9, Word.xor(8n, x10, x15), x11, x12, x13, x14, x15}
4138
4139def aria.e1(s: LcAriaSt) -> LcAriaSt:
4140 match s:
4141 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, +x14, x15}:
4142 LcAriaSt{Word.xor(8n, x0, x14), x1, x2, Word.xor(8n, x3, x14), Word.xor(8n, x4, x14), Word.xor(8n, x5, x14), x6, x7, x8, Word.xor(8n, x9, x14), x10, Word.xor(8n, x11, x14), x12, x13, x14, x15}
4143
4144def aria.e2(s: LcAriaSt) -> LcAriaSt:
4145 match s:
4146 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, +x13, x14, x15}:
4147 LcAriaSt{Word.xor(8n, x0, x13), x1, x2, Word.xor(8n, x3, x13), x4, x5, Word.xor(8n, x6, x13), Word.xor(8n, x7, x13), Word.xor(8n, x8, x13), x9, Word.xor(8n, x10, x13), x11, x12, x13, x14, x15}
4148
4149def aria.e3(s: LcAriaSt) -> LcAriaSt:
4150 match s:
4151 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, +x12, x13, x14, x15}:
4152 LcAriaSt{x0, Word.xor(8n, x1, x12), Word.xor(8n, x2, x12), x3, x4, x5, Word.xor(8n, x6, x12), Word.xor(8n, x7, x12), x8, Word.xor(8n, x9, x12), x10, Word.xor(8n, x11, x12), x12, x13, x14, x15}
4153
4154def aria.e4(s: LcAriaSt) -> LcAriaSt:
4155 match s:
4156 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, +x11, x12, x13, x14, x15}:
4157 LcAriaSt{Word.xor(8n, x0, x11), Word.xor(8n, x1, x11), Word.xor(8n, x2, x11), Word.xor(8n, x3, x11), Word.xor(8n, x4, x11), Word.xor(8n, x5, x11), Word.xor(8n, x6, x11), Word.xor(8n, x7, x11), x8, Word.xor(8n, x9, x11), x10, x11, x12, x13, x14, x15}
4158
4159def aria.e5(s: LcAriaSt) -> LcAriaSt:
4160 match s:
4161 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, +x10, x11, x12, x13, x14, x15}:
4162 LcAriaSt{Word.xor(8n, x0, x10), Word.xor(8n, x1, x10), Word.xor(8n, x2, x10), Word.xor(8n, x3, x10), Word.xor(8n, x4, x10), Word.xor(8n, x5, x10), Word.xor(8n, x6, x10), Word.xor(8n, x7, x10), Word.xor(8n, x8, x10), x9, x10, x11, x12, x13, x14, x15}
4163
4164def aria.e6(s: LcAriaSt) -> LcAriaSt:
4165 match s:
4166 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, +x9, x10, x11, x12, x13, x14, x15}:
4167 LcAriaSt{Word.xor(8n, x0, x9), Word.xor(8n, x1, x9), x2, x3, x4, Word.xor(8n, x5, x9), Word.xor(8n, x6, x9), x7, x8, x9, x10, Word.xor(8n, x11, x9), Word.xor(8n, x12, x9), x13, Word.xor(8n, x14, x9), x15}
4168
4169def aria.e7(s: LcAriaSt) -> LcAriaSt:
4170 match s:
4171 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, +x11, x12, x13, x14, x15}:
4172 LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, Word.xor(8n, x9, x11), x10, x11, x12, x13, x14, x15}
4173
4174def aria.e8(s: LcAriaSt) -> LcAriaSt:
4175 match s:
4176 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, +x8, x9, x10, x11, x12, x13, x14, x15}:
4177 LcAriaSt{Word.xor(8n, x0, x8), Word.xor(8n, x1, x8), x2, x3, Word.xor(8n, x4, x8), x5, x6, Word.xor(8n, x7, x8), x8, x9, Word.xor(8n, x10, x8), x11, x12, Word.xor(8n, x13, x8), x14, Word.xor(8n, x15, x8)}
4178
4179def aria.e9(s: LcAriaSt) -> LcAriaSt:
4180 match s:
4181 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, +x10, x11, x12, x13, x14, x15}:
4182 LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, Word.xor(8n, x8, x10), x9, x10, x11, x12, x13, x14, x15}
4183
4184def aria.e10(s: LcAriaSt) -> LcAriaSt:
4185 match s:
4186 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, +x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4187 LcAriaSt{Word.xor(8n, x0, x7), Word.xor(8n, x1, x7), Word.xor(8n, x2, x7), Word.xor(8n, x3, x7), x4, x5, Word.xor(8n, x6, x7), x7, Word.xor(8n, x8, x7), Word.xor(8n, x9, x7), Word.xor(8n, x10, x7), Word.xor(8n, x11, x7), x12, x13, x14, x15}
4188
4189def aria.e11(s: LcAriaSt) -> LcAriaSt:
4190 match s:
4191 case LcAriaSt{x0, x1, x2, x3, x4, x5, +x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4192 LcAriaSt{x0, Word.xor(8n, x1, x6), x2, Word.xor(8n, x3, x6), x4, x5, x6, Word.xor(8n, x7, x6), Word.xor(8n, x8, x6), x9, x10, Word.xor(8n, x11, x6), x12, x13, Word.xor(8n, x14, x6), Word.xor(8n, x15, x6)}
4193
4194def aria.e12(s: LcAriaSt) -> LcAriaSt:
4195 match s:
4196 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, +x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4197 LcAriaSt{x0, x1, x2, x3, x4, x5, Word.xor(8n, x6, x7), x7, x8, x9, x10, x11, x12, x13, x14, x15}
4198
4199def aria.e13(s: LcAriaSt) -> LcAriaSt:
4200 match s:
4201 case LcAriaSt{x0, x1, x2, x3, x4, +x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4202 LcAriaSt{Word.xor(8n, x0, x5), Word.xor(8n, x1, x5), Word.xor(8n, x2, x5), Word.xor(8n, x3, x5), Word.xor(8n, x4, x5), x5, x6, x7, Word.xor(8n, x8, x5), Word.xor(8n, x9, x5), Word.xor(8n, x10, x5), Word.xor(8n, x11, x5), x12, x13, x14, x15}
4203
4204def aria.e14(s: LcAriaSt) -> LcAriaSt:
4205 match s:
4206 case LcAriaSt{x0, x1, x2, x3, +x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4207 LcAriaSt{x0, Word.xor(8n, x1, x4), x2, Word.xor(8n, x3, x4), x4, Word.xor(8n, x5, x4), x6, x7, x8, Word.xor(8n, x9, x4), Word.xor(8n, x10, x4), x11, Word.xor(8n, x12, x4), Word.xor(8n, x13, x4), x14, x15}
4208
4209def aria.e15(s: LcAriaSt) -> LcAriaSt:
4210 match s:
4211 case LcAriaSt{x0, x1, x2, x3, x4, +x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4212 LcAriaSt{x0, x1, x2, x3, Word.xor(8n, x4, x5), x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}
4213
4214def aria.e16(s: LcAriaSt) -> LcAriaSt:
4215 match s:
4216 case LcAriaSt{x0, x1, x2, +x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4217 LcAriaSt{Word.xor(8n, x0, x3), x1, x2, x3, Word.xor(8n, x4, x3), Word.xor(8n, x5, x3), Word.xor(8n, x6, x3), Word.xor(8n, x7, x3), Word.xor(8n, x8, x3), Word.xor(8n, x9, x3), Word.xor(8n, x10, x3), Word.xor(8n, x11, x3), x12, x13, x14, x15}
4218
4219def aria.e17(s: LcAriaSt) -> LcAriaSt:
4220 match s:
4221 case LcAriaSt{x0, x1, +x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4222 LcAriaSt{x0, Word.xor(8n, x1, x2), x2, x3, Word.xor(8n, x4, x2), Word.xor(8n, x5, x2), Word.xor(8n, x6, x2), Word.xor(8n, x7, x2), Word.xor(8n, x8, x2), Word.xor(8n, x9, x2), Word.xor(8n, x10, x2), Word.xor(8n, x11, x2), x12, x13, x14, x15}
4223
4224def aria.e18(s: LcAriaSt) -> LcAriaSt:
4225 match s:
4226 case LcAriaSt{x0, +x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4227 LcAriaSt{x0, x1, Word.xor(8n, x2, x1), x3, x4, Word.xor(8n, x5, x1), x6, Word.xor(8n, x7, x1), Word.xor(8n, x8, x1), Word.xor(8n, x9, x1), x10, x11, Word.xor(8n, x12, x1), x13, x14, Word.xor(8n, x15, x1)}
4228
4229def aria.e19(s: LcAriaSt) -> LcAriaSt:
4230 match s:
4231 case LcAriaSt{x0, x1, +x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4232 LcAriaSt{x0, Word.xor(8n, x1, x2), x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}
4233
4234def aria.e20(s: LcAriaSt) -> LcAriaSt:
4235 match s:
4236 case LcAriaSt{+x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4237 LcAriaSt{x0, x1, x2, Word.xor(8n, x3, x0), Word.xor(8n, x4, x0), x5, Word.xor(8n, x6, x0), x7, Word.xor(8n, x8, x0), Word.xor(8n, x9, x0), x10, x11, x12, Word.xor(8n, x13, x0), Word.xor(8n, x14, x0), x15}
4238
4239def aria.e21(s: LcAriaSt) -> LcAriaSt:
4240 match s:
4241 case LcAriaSt{x0, x1, x2, +x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4242 LcAriaSt{Word.xor(8n, x0, x3), x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}
4243
4244# d<j>: the first j steps; u<j>: them undone, last first
4245def aria.d0(s: LcAriaSt) -> LcAriaSt:
4246 s
4247
4248def aria.u0(s: LcAriaSt) -> LcAriaSt:
4249 s
4250
4251def aria.d1(s: LcAriaSt) -> LcAriaSt:
4252 aria.e0(aria.d0(s))
4253
4254def aria.u1(s: LcAriaSt) -> LcAriaSt:
4255 aria.u0(aria.e0(s))
4256
4257def aria.d2(s: LcAriaSt) -> LcAriaSt:
4258 aria.e1(aria.d1(s))
4259
4260def aria.u2(s: LcAriaSt) -> LcAriaSt:
4261 aria.u1(aria.e1(s))
4262
4263def aria.d3(s: LcAriaSt) -> LcAriaSt:
4264 aria.e2(aria.d2(s))
4265
4266def aria.u3(s: LcAriaSt) -> LcAriaSt:
4267 aria.u2(aria.e2(s))
4268
4269def aria.d4(s: LcAriaSt) -> LcAriaSt:
4270 aria.e3(aria.d3(s))
4271
4272def aria.u4(s: LcAriaSt) -> LcAriaSt:
4273 aria.u3(aria.e3(s))
4274
4275def aria.d5(s: LcAriaSt) -> LcAriaSt:
4276 aria.e4(aria.d4(s))
4277
4278def aria.u5(s: LcAriaSt) -> LcAriaSt:
4279 aria.u4(aria.e4(s))
4280
4281def aria.d6(s: LcAriaSt) -> LcAriaSt:
4282 aria.e5(aria.d5(s))
4283
4284def aria.u6(s: LcAriaSt) -> LcAriaSt:
4285 aria.u5(aria.e5(s))
4286
4287def aria.d7(s: LcAriaSt) -> LcAriaSt:
4288 aria.e6(aria.d6(s))
4289
4290def aria.u7(s: LcAriaSt) -> LcAriaSt:
4291 aria.u6(aria.e6(s))
4292
4293def aria.d8(s: LcAriaSt) -> LcAriaSt:
4294 aria.e7(aria.d7(s))
4295
4296def aria.u8(s: LcAriaSt) -> LcAriaSt:
4297 aria.u7(aria.e7(s))
4298
4299def aria.d9(s: LcAriaSt) -> LcAriaSt:
4300 aria.e8(aria.d8(s))
4301
4302def aria.u9(s: LcAriaSt) -> LcAriaSt:
4303 aria.u8(aria.e8(s))
4304
4305def aria.d10(s: LcAriaSt) -> LcAriaSt:
4306 aria.e9(aria.d9(s))
4307
4308def aria.u10(s: LcAriaSt) -> LcAriaSt:
4309 aria.u9(aria.e9(s))
4310
4311def aria.d11(s: LcAriaSt) -> LcAriaSt:
4312 aria.e10(aria.d10(s))
4313
4314def aria.u11(s: LcAriaSt) -> LcAriaSt:
4315 aria.u10(aria.e10(s))
4316
4317def aria.d12(s: LcAriaSt) -> LcAriaSt:
4318 aria.e11(aria.d11(s))
4319
4320def aria.u12(s: LcAriaSt) -> LcAriaSt:
4321 aria.u11(aria.e11(s))
4322
4323def aria.d13(s: LcAriaSt) -> LcAriaSt:
4324 aria.e12(aria.d12(s))
4325
4326def aria.u13(s: LcAriaSt) -> LcAriaSt:
4327 aria.u12(aria.e12(s))
4328
4329def aria.d14(s: LcAriaSt) -> LcAriaSt:
4330 aria.e13(aria.d13(s))
4331
4332def aria.u14(s: LcAriaSt) -> LcAriaSt:
4333 aria.u13(aria.e13(s))
4334
4335def aria.d15(s: LcAriaSt) -> LcAriaSt:
4336 aria.e14(aria.d14(s))
4337
4338def aria.u15(s: LcAriaSt) -> LcAriaSt:
4339 aria.u14(aria.e14(s))
4340
4341def aria.d16(s: LcAriaSt) -> LcAriaSt:
4342 aria.e15(aria.d15(s))
4343
4344def aria.u16(s: LcAriaSt) -> LcAriaSt:
4345 aria.u15(aria.e15(s))
4346
4347def aria.d17(s: LcAriaSt) -> LcAriaSt:
4348 aria.e16(aria.d16(s))
4349
4350def aria.u17(s: LcAriaSt) -> LcAriaSt:
4351 aria.u16(aria.e16(s))
4352
4353def aria.d18(s: LcAriaSt) -> LcAriaSt:
4354 aria.e17(aria.d17(s))
4355
4356def aria.u18(s: LcAriaSt) -> LcAriaSt:
4357 aria.u17(aria.e17(s))
4358
4359def aria.d19(s: LcAriaSt) -> LcAriaSt:
4360 aria.e18(aria.d18(s))
4361
4362def aria.u19(s: LcAriaSt) -> LcAriaSt:
4363 aria.u18(aria.e18(s))
4364
4365def aria.d20(s: LcAriaSt) -> LcAriaSt:
4366 aria.e19(aria.d19(s))
4367
4368def aria.u20(s: LcAriaSt) -> LcAriaSt:
4369 aria.u19(aria.e19(s))
4370
4371def aria.d21(s: LcAriaSt) -> LcAriaSt:
4372 aria.e20(aria.d20(s))
4373
4374def aria.u21(s: LcAriaSt) -> LcAriaSt:
4375 aria.u20(aria.e20(s))
4376
4377def aria.d22(s: LcAriaSt) -> LcAriaSt:
4378 aria.e21(aria.d21(s))
4379
4380def aria.u22(s: LcAriaSt) -> LcAriaSt:
4381 aria.u21(aria.e21(s))
4382
4383# A, and A undone (22 steps)
4384def aria.diffuse(s: LcAriaSt) -> LcAriaSt:
4385 aria.d22(s)
4386
4387def aria.undiffuse(s: LcAriaSt) -> LcAriaSt:
4388 aria.u22(s)
4389# END GENERATED: diffusion
4390
4391# The substitution layers SL1 (SB1, SB2, SB3, SB4 in turn) and SL2 (SB3,
4392# SB4, SB1, SB2)
4393def aria.sl1(s: LcAriaSt) -> LcAriaSt:
4394 match s:
4395 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4396 LcAriaSt{aria.sb1(x0), aria.sb2(x1), aria.sb3(x2), aria.sb4(x3), aria.sb1(x4), aria.sb2(x5), aria.sb3(x6), aria.sb4(x7), aria.sb1(x8), aria.sb2(x9), aria.sb3(x10), aria.sb4(x11), aria.sb1(x12), aria.sb2(x13), aria.sb3(x14), aria.sb4(x15)}
4397
4398def aria.sl2(s: LcAriaSt) -> LcAriaSt:
4399 match s:
4400 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4401 LcAriaSt{aria.sb3(x0), aria.sb4(x1), aria.sb1(x2), aria.sb2(x3), aria.sb3(x4), aria.sb4(x5), aria.sb1(x6), aria.sb2(x7), aria.sb3(x8), aria.sb4(x9), aria.sb1(x10), aria.sb2(x11), aria.sb3(x12), aria.sb4(x13), aria.sb1(x14), aria.sb2(x15)}
4402
4403# Blocks and states: a word's bytes, most significant first, by bit slicing
4404
4405def aria.byte0(x: Word(32n)) -> Word(8n):
4406 W.W64.bits.hi(8n, 8n, W.W64.bits.hi(8n, 16n, W.W64.bits.hi(8n, 24n, x)))
4407
4408def aria.byte1(x: Word(32n)) -> Word(8n):
4409 W.W64.bits.lo(8n, 8n, W.W64.bits.hi(8n, 16n, W.W64.bits.hi(8n, 24n, x)))
4410
4411def aria.byte2(x: Word(32n)) -> Word(8n):
4412 W.W64.bits.lo(8n, 16n, W.W64.bits.hi(8n, 24n, x))
4413
4414def aria.byte3(x: Word(32n)) -> Word(8n):
4415 W.W64.bits.lo(8n, 24n, x)
4416
4417# the word with bytes a (most significant), b, c, d
4418def aria.word(a: Word(8n), b: Word(8n), c: Word(8n), d: Word(8n)) -> U32:
4419 U32{W.W64.bits.cat(8n, 24n, d, W.W64.bits.cat(8n, 16n, c, W.W64.bits.cat(8n, 8n, b, a)))}
4420
4421# a word's four bytes (internal)
4422type LcAriaQ is Data:
4423 LcAriaQ{a: Word(8n), b: Word(8n), c: Word(8n), d: Word(8n)}
4424
4425def aria.quad(w: U32) -> LcAriaQ:
4426 match w:
4427 case U32{+x}:
4428 LcAriaQ{aria.byte0(x), aria.byte1(x), aria.byte2(x), aria.byte3(x)}
4429
4430def aria.of_quads(q0: LcAriaQ, q1: LcAriaQ, q2: LcAriaQ, q3: LcAriaQ) -> LcAriaSt:
4431 match q0 q1 q2 q3:
4432 case LcAriaQ{x0, x1, x2, x3} LcAriaQ{x4, x5, x6, x7} LcAriaQ{x8, x9, x10, x11} LcAriaQ{x12, x13, x14, x15}:
4433 LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}
4434
4435# four bytes XORed with the bytes of a round key's word
4436def aria.xq(x0: Word(8n), x1: Word(8n), x2: Word(8n), x3: Word(8n), w: U32) -> LcAriaQ:
4437 match w:
4438 case U32{+k}:
4439 LcAriaQ{Word.xor(8n, x0, aria.byte0(k)), Word.xor(8n, x1, aria.byte1(k)), Word.xor(8n, x2, aria.byte2(k)), Word.xor(8n, x3, aria.byte3(k))}
4440
4441# The state XORed with a round key, kept as a block (a word at a time: Bend's
4442# C backend takes at most 247 live one-word values, and a state is 128 bits)
4443def aria.xor(s: LcAriaSt, k: M.CmBlock) -> LcAriaSt:
4444 match s k:
4445 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15} M.CmBlock{w0, w1, w2, w3}:
4446 aria.of_quads(aria.xq(x0, x1, x2, x3, w0), aria.xq(x4, x5, x6, x7, w1), aria.xq(x8, x9, x10, x11, w2), aria.xq(x12, x13, x14, x15, w3))
4447
4448def aria.of_block(b: M.CmBlock) -> LcAriaSt:
4449 match b:
4450 case M.CmBlock{w0, w1, w2, w3}:
4451 aria.of_quads(aria.quad(w0), aria.quad(w1), aria.quad(w2), aria.quad(w3))
4452
4453def aria.to_block(s: LcAriaSt) -> M.CmBlock:
4454 match s:
4455 case LcAriaSt{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}:
4456 M.CmBlock{aria.word(x0, x1, x2, x3), aria.word(x4, x5, x6, x7), aria.word(x8, x9, x10, x11), aria.word(x12, x13, x14, x15)}
4457
4458# The steps of the cipher (internal)
4459type LcAriaOp is Data:
4460 LcAriaRk{k: M.CmBlock}
4461 LcAriaSl1{}
4462 LcAriaSl2{}
4463 LcAriaDiff{}
4464
4465def aria.op(o: LcAriaOp, s: LcAriaSt) -> LcAriaSt:
4466 match o:
4467 case LcAriaRk{k}:
4468 aria.xor(s, k)
4469 case LcAriaSl1{}:
4470 aria.sl1(s)
4471 case LcAriaSl2{}:
4472 aria.sl2(s)
4473 case LcAriaDiff{}:
4474 aria.diffuse(s)
4475
4476def aria.unop(o: LcAriaOp, s: LcAriaSt) -> LcAriaSt:
4477 match o:
4478 case LcAriaRk{k}:
4479 aria.xor(s, k)
4480 case LcAriaSl1{}:
4481 aria.sl2(s)
4482 case LcAriaSl2{}:
4483 aria.sl1(s)
4484 case LcAriaDiff{}:
4485 aria.undiffuse(s)
4486
4487def aria.run(os: List<&2, LcAriaOp>, s: LcAriaSt) -> LcAriaSt:
4488 match os:
4489 case Nil{}:
4490 s
4491 case Con{o, t}:
4492 aria.run(t, aria.op(o, s))
4493
4494def aria.unrun(os: List<&2, LcAriaOp>, s: LcAriaSt) -> LcAriaSt:
4495 match os:
4496 case Nil{}:
4497 s
4498 case Con{o, t}:
4499 aria.unop(o, aria.unrun(t, s))
4500
4501# The key schedule (RFC 5794, 2.2), on blocks
4502
4503# C1, C2, C3: the fractional part of 1/pi
4504def aria.c(i: Nat) -> M.CmBlock:
4505 match i:
4506 case 0n:
4507 M.CmBlock{1367130551, 656542356, 4262702056, 4204424928}
4508 case 1n:
4509 M.CmBlock{1840335564, 2653014048, 4280857045, 4015907504}
4510 case _:
4511 M.CmBlock{3683792669, 556198256, 52729717, 82364686}
4512
4513def aria.fo(+d: M.CmBlock, +rk: M.CmBlock) -> M.CmBlock:
4514 aria.to_block(aria.diffuse(aria.sl1(aria.of_block(M.CmBlock.xor(d, rk)))))
4515
4516def aria.fe(+d: M.CmBlock, +rk: M.CmBlock) -> M.CmBlock:
4517 aria.to_block(aria.diffuse(aria.sl2(aria.of_block(M.CmBlock.xor(d, rk)))))
4518
4519# the 128-bit block rotated right by n bits (n below 128)
4520def aria.rotw(b: M.CmBlock) -> M.CmBlock:
4521 match b:
4522 case M.CmBlock{a, c, d, e}:
4523 M.CmBlock{e, a, c, d}
4524
4525def aria.rotw.n(n: Nat, b: M.CmBlock) -> M.CmBlock:
4526 match n:
4527 case 0n:
4528 b
4529 case 1n+p:
4530 aria.rotw.n(p, aria.rotw(b))
4531
4532def aria.rotb(+r: Nat, b: M.CmBlock) -> M.CmBlock:
4533 match b:
4534 case M.CmBlock{+a, +c, +d, +e}:
4535 +l = Nat.sub(32n, r)
4536 M.CmBlock{U32.or(U32.shrn(a, r), U32.shln(e, l)), U32.or(U32.shrn(c, r), U32.shln(a, l)), U32.or(U32.shrn(d, r), U32.shln(c, l)), U32.or(U32.shrn(e, r), U32.shln(d, l))}
4537
4538def aria.rotr(+n: Nat, b: M.CmBlock) -> M.CmBlock:
4539 aria.rotb(Nat.mod(n, 32n), aria.rotw.n(Nat.div(n, 32n), b))
4540
4541# the four rotated round keys of one rotation: W0 xor (W1 >>> r), ...
4542def aria.ek4(+r: Nat, +w0: M.CmBlock, +w1: M.CmBlock, +w2: M.CmBlock, +w3: M.CmBlock) -> List<&2, M.CmBlock>:
4543 [M.CmBlock.xor(w0, aria.rotr(r, w1)), M.CmBlock.xor(w1, aria.rotr(r, w2)), M.CmBlock.xor(w2, aria.rotr(r, w3)), M.CmBlock.xor(aria.rotr(r, w0), w3)]
4544
4545def aria.append(xs: List<&2, M.CmBlock>, ys: List<&2, M.CmBlock>) -> List<&2, M.CmBlock>:
4546 match xs:
4547 case Nil{}:
4548 ys
4549 case Con{h, t}:
4550 Con{h, aria.append(t, ys)}
4551
4552# ek1 .. ek17 from W0 .. W3 (>>> 19, >>> 31, <<< 61, <<< 31, <<< 19)
4553def aria.eks(+w0: M.CmBlock, +w1: M.CmBlock, +w2: M.CmBlock, +w3: M.CmBlock) -> List<&2, M.CmBlock>:
4554 aria.append(aria.ek4(19n, w0, w1, w2, w3), aria.append(aria.ek4(31n, w0, w1, w2, w3), aria.append(aria.ek4(67n, w0, w1, w2, w3), aria.append(aria.ek4(97n, w0, w1, w2, w3), [M.CmBlock.xor(w0, aria.rotr(109n, w1))]))))
4555
4556# the steps of the rounds from round i (odd True for odd rounds), n rounds
4557# but the last left, round keys eks
4558def aria.ops(n: Nat, eks: List<&2, M.CmBlock>, odd: Bool) -> List<&2, LcAriaOp>:
4559 match n eks:
4560 case 0n Con{k1, Con{k2, rest}}:
4561 [LcAriaRk{k1}, LcAriaSl2{}, LcAriaRk{k2}]
4562 case 1n+p Con{k, rest}:
4563 match odd:
4564 case True{}:
4565 Con{LcAriaRk{k}, Con{LcAriaSl1{}, Con{LcAriaDiff{}, aria.ops(p, rest, False{})}}}
4566 case False{}:
4567 Con{LcAriaRk{k}, Con{LcAriaSl2{}, Con{LcAriaDiff{}, aria.ops(p, rest, True{})}}}
4568 case _ _:
4569 Nil{}
4570
4571# a block of 16 bytes from offset i of xs
4572def aria.block(+xs: List<&2, U32>, +i: Nat) -> M.CmBlock:
4573 M.CmBlock{L.lc.be(L.lc.at(xs, i), L.lc.at(xs, Nat.add(i, 1n)), L.lc.at(xs, Nat.add(i, 2n)), L.lc.at(xs, Nat.add(i, 3n))), L.lc.be(L.lc.at(xs, Nat.add(i, 4n)), L.lc.at(xs, Nat.add(i, 5n)), L.lc.at(xs, Nat.add(i, 6n)), L.lc.at(xs, Nat.add(i, 7n))), L.lc.be(L.lc.at(xs, Nat.add(i, 8n)), L.lc.at(xs, Nat.add(i, 9n)), L.lc.at(xs, Nat.add(i, 10n)), L.lc.at(xs, Nat.add(i, 11n))), L.lc.be(L.lc.at(xs, Nat.add(i, 12n)), L.lc.at(xs, Nat.add(i, 13n)), L.lc.at(xs, Nat.add(i, 14n)), L.lc.at(xs, Nat.add(i, 15n)))}
4574
4575# W0 .. W3 and the round keys, for CK1, CK2, CK3 = C(c1), C(c2), C(c3)
4576def aria.ws(+kl: M.CmBlock, +kr: M.CmBlock, c1: Nat, c2: Nat, c3: Nat) -> List<&2, M.CmBlock>:
4577 +w1 = M.CmBlock.xor(aria.fo(kl, aria.c(c1)), kr)
4578 +w2 = M.CmBlock.xor(aria.fe(w1, aria.c(c2)), kl)
4579 +w3 = M.CmBlock.xor(aria.fo(w2, aria.c(c3)), w1)
4580 aria.eks(kl, w1, w2, w3)
4581
4582# An ARIA key: the steps of the cipher (opaque; built by LcAria.key)
4583type LcAriaKey is Data:
4584 LcAriaKey{ops: List<&2, LcAriaOp>}
4585
4586def aria.key(n16: Bool, n24: Bool, +xs: List<&2, U32>) -> LcAriaKey:
4587 match n16 n24:
4588 case True{} _:
4589 LcAriaKey{aria.ops(11n, aria.ws(aria.block(xs, 0n), aria.block(xs, 16n), 0n, 1n, 2n), True{})}
4590 case False{} True{}:
4591 LcAriaKey{aria.ops(13n, aria.ws(aria.block(xs, 0n), aria.block(xs, 16n), 1n, 2n, 0n), True{})}
4592 case False{} False{}:
4593 LcAriaKey{aria.ops(15n, aria.ws(aria.block(xs, 0n), aria.block(xs, 16n), 2n, 0n, 1n), True{})}
4594
4595def aria.key.pick(ok: Bool, n16: Bool, n24: Bool, +n: Nat, +xs: List<&2, U32>) -> Result<&2, &2, L.LcError, LcAriaKey>:
4596 match ok:
4597 case True{}:
4598 Done{aria.key(n16, n24, B.append(xs, B.zeros(Nat.sub(32n, n))))}
4599 case False{}:
4600 Fail{L.LcBadKeyLength{n}}
4601
4602# The cipher
4603
4604# a key of 16, 24 or 32 bytes (ARIA-128, -192, -256, by its length)
4605def LcAria.key(o: B.Octets) -> Result<&2, &2, L.LcError, LcAriaKey>:
4606 +xs = B.Octets.to_list(o)
4607 +n = B.len(xs)
4608 aria.key.pick(Bool.or(Nat.is_eq(n, 16n), Bool.or(Nat.is_eq(n, 24n), Nat.is_eq(n, 32n))), Nat.is_eq(n, 16n), Nat.is_eq(n, 24n), n, xs)
4609
4610def LcAria.encrypt(k: LcAriaKey, b: M.CmBlock) -> M.CmBlock:
4611 match k:
4612 case LcAriaKey{ops}:
4613 aria.to_block(aria.run(ops, aria.of_block(b)))
4614
4615def LcAria.decrypt(k: LcAriaKey, b: M.CmBlock) -> M.CmBlock:
4616 match k:
4617 case LcAriaKey{ops}:
4618 aria.to_block(aria.unrun(ops, aria.of_block(b)))