-
Notifications
You must be signed in to change notification settings - Fork 1
/
lcd-help.pd
463 lines (463 loc) · 15.5 KB
/
lcd-help.pd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
#N struct struct_frameoval float lx float ty float rx float by float width float color;
#N struct struct_paintoval float lx float ty float rx float by float width float color;
#N struct struct_framerect float lx float ty float rx float by float width float color;
#N canvas 153 194 719 763 16;
#X obj 2 1 cnv 15 700 40 empty empty empty 20 12 0 14 #e0c4fc #404040 0;
#X text 83 79 To edit shape \, ctrl+drag on it in edit mode;
#X text 84 101 To edit properties \, right-click + properties popup menu, f 34;
#X text 338 11 pd 0.49 + iemguts + iemlib;
#X text 25 9 mob/lcd;
#X text 78 51 LCD panel for drawing graphics;
#X obj 22 258 mob/lcd;
#A saved -z_offset 0;
#A saved -back_alpha 0;
#A saved -front_alpha 0;
#A saved -front_color -1 255 255;
#A saved -back_color -1 255 255;
#A saved -title ;
#A saved -name demo1;
#A saved -size 157 127;
#X msg 388 164 clear \, penwidth 5 \, frameoval 0.35 0.35 0.76 0.76 0.5 1 0 1 \, penwidth 3 \, frameoval 0.5 0.5 0.6 0.6 1 0 0 1 \, paintoval 0.1 0.1 0.2 0.8 0.2 0.2 0.9 1, f 31;
#X obj 387 133 loadbang;
#X obj 200 293 mob/lcd;
#A saved -z_offset 0;
#A saved -back_alpha 0;
#A saved -front_alpha 0;
#A saved -front_color -1 255 255;
#A saved -back_color -1 255 255;
#A saved -title ;
#A saved -name demo2;
#A saved -size 175 87;
#X obj 68 208 tgl 15 0 empty empty AUTO 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 111 194 bng 15 250 50 0 empty empty CLEAR 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 47 193 bng 15 250 50 0 empty empty CIRCLE 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 12 511 cnv 15 700 180 empty empty empty 20 12 0 14 #c4fcc4 #404040 0;
#X text 40 518 MobMuPlat usage :;
#X obj 483 608 unpack f f;
#X floatatom 483 637 5 0 0 0 - - - 0;
#X floatatom 544 637 5 0 0 0 - - - 0;
#X obj 366 608 unpack f f;
#X floatatom 366 637 5 0 0 0 - - - 0;
#X floatatom 427 637 5 0 0 0 - - - 0;
#X obj 549 545 route 1 2 0;
#X obj 598 606 unpack f f;
#X floatatom 598 635 5 0 0 0 - - - 0;
#X floatatom 659 635 5 0 0 0 - - - 0;
#X text 613 666 mouseup;
#X obj 235 531 mob/lcd my_lcd;
#A saved -z_offset 0;
#A saved -back_alpha 0;
#A saved -front_alpha 0;
#A saved -front_color 122 189 3;
#A saved -back_color 164 188 167;
#A saved -title ;
#A saved -name lcd_panel;
#A saved -size 60 60;
#X text 374 660 mousedown;
#X text 504 664 drag;
#X msg 19 630 clear \, penwidth 5 \, frameoval 0.35 0.35 0.76 0.76, f 31;
#N canvas 0 50 670 542 demo1 0;
#X obj 37 208 random 100;
#X obj 37 233 / 100;
#X obj 105 208 random 100;
#X obj 105 233 / 100;
#X obj 76 257 random 100;
#X obj 76 282 / 100;
#X obj 144 257 random 100;
#X obj 144 282 / 100;
#X obj 179 206 random 100;
#X obj 179 231 / 100;
#X obj 247 206 random 100;
#X obj 247 231 / 100;
#X obj 217 258 random 100;
#X obj 217 283 / 100;
#X obj 110 128 t b b b b b b b;
#X obj 189 314 list;
#X obj 37 310 pack 0 0 0 0 0 0 0;
#X obj 150 76 metro 250;
#X obj 36 364 outlet;
#X msg 36 335 frameoval \$1 \$2 \$3 \$4 \$5 \$6 \$7 0.5;
#X obj 142 36 inlet;
#X obj 39 34 inlet;
#X obj 309 39 inlet;
#X msg 298 143 clear;
#X connect 0 0 1 0;
#X connect 1 0 16 0;
#X connect 2 0 3 0;
#X connect 3 0 16 2;
#X connect 4 0 5 0;
#X connect 5 0 16 1;
#X connect 6 0 7 0;
#X connect 7 0 16 3;
#X connect 8 0 9 0;
#X connect 9 0 16 4;
#X connect 10 0 11 0;
#X connect 11 0 16 6;
#X connect 12 0 13 0;
#X connect 13 0 16 5;
#X connect 14 0 0 0;
#X connect 14 1 4 0;
#X connect 14 2 2 0;
#X connect 14 3 6 0;
#X connect 14 4 8 0;
#X connect 14 5 12 0;
#X connect 14 6 10 0;
#X connect 16 0 19 0;
#X connect 17 0 14 0;
#X connect 19 0 18 0;
#X connect 20 0 17 0;
#X connect 21 0 14 0;
#X connect 22 0 23 0;
#X connect 23 0 18 0;
#X restore 46 225 pd demo1;
#N canvas 21 142 1071 812 pseudo-gem_rendering 0;
#X obj 41 183 lcd_circle 0.1;
#X obj 49 435 mob/lcd lcd_name;
#A saved -z_offset 0;
#A saved -back_alpha 1;
#A saved -front_alpha 1;
#A saved -front_color 150 150 150;
#A saved -back_color 220 220 220;
#A saved -title ;
#A saved -name lcd_name;
#A saved -size 278 210;
#X obj 41 55 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 41 125 lcd_color 1 0 0 1;
#X floatatom 274 76 5 0 0 0 - - - 0;
#X obj 274 106 / 100;
#X floatatom 767 88 5 0 0 0 - - - 0;
#X obj 767 118 / 100;
#X floatatom 699 86 5 0 0 0 - - - 0;
#X obj 699 116 / 100;
#X msg 742 217 draw line;
#X msg 741 189 draw fill;
#X obj 494 86 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 495 152 lcd_color 0 1 0 1;
#X obj 495 260 lcd_circle 0.05;
#X obj 41 96 lcd_head lcd_name;
#X obj 52 662 mob/lcd lcd_name;
#A saved -z_offset 0;
#A saved -back_alpha 1;
#A saved -front_alpha 1;
#A saved -front_color 150 150 150;
#A saved -back_color 220 220 220;
#A saved -title ;
#A saved -name lcd_name;
#A saved -size 151 101;
#X obj 495 123 lcd_head lcd_name;
#X text 33 10 pseudo gem primitives;
#X obj 41 154 lcd_translate 0.2 0.2;
#X obj 41 212 lcd_translate 0.2 0.2;
#X obj 41 241 lcd_color 0 0 1 1;
#X obj 41 270 lcd_circle 0.05;
#N canvas 0 0 766 801 todo/ressources 0;
#X text 46 33 https://www.cs.trinity.edu/~jhowland/cs2322/2d/2d/;
#X text 47 99 https://www.tutorialspoint.com/computer_graphics/2d_transformation.htm;
#X text 47 204 TODO : au lieu de message "head" \, incorporer dans le message chain \, comme ća \, on peut connecter deux lcd_head à une même chaine de rendu géométrique;
#X text 86 275 Matrice 2D;
#X obj 65 443 lcd_rotate;
#X obj 63 478 lcd_scale;
#X obj 62 526 lcd_curve;
#X obj 59 566 lcd_triangle;
#X restore 819 377 pd todo/ressources;
#X obj 47 370 lcd_rectangle 0.1 0.3;
#X msg 334 252 draw line;
#X msg 336 139 draw fill;
#X obj 376 53 loadbang;
#X text 859 186 (default);
#X obj 64 302 lcd_penwidth 6;
#X obj 55 336 lcd_color 0.7 0.7 0 1;
#X obj 422 346 cnv 15 300 300 empty empty empty 20 12 0 14 #fcc4c4 #404040 0;
#X obj 486 566 tgl 15 1 empty empty auto 17 7 0 10 #fcfcfc #000000 #000000 1 1;
#X obj 465 454 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X msg 468 488 redraw;
#X text 543 488 redraw all;
#X text 489 445 erase all;
#X text 441 359 LCD Renderer;
#X obj 61 74 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X text 81 70 on/off (default on);
#X text 60 50 draw;
#X text 446 416 * manual erase / render;
#X obj 495 181 lcd_translate 0.65 0.5;
#X text 431 657 lcd_render accepts one or two arguments :;
#X text 452 690 * arg 1 : target lcd name;
#X text 45 415 lcd_panel;
#X text 452 716 * arg 2 : nb of frames per sec;
#X text 589 743 0 or none : rendering on demand;
#X text 453 536 * auto erase & render;
#X text 589 766 > 0 : scheduled rendering (high cpu usage), f 25;
#X obj 459 607 lcd_render lcd_name;
#X connect 0 0 20 0;
#X connect 2 0 15 0;
#X connect 3 0 19 0;
#X connect 4 0 5 0;
#X connect 5 0 19 2;
#X connect 6 0 7 0;
#X connect 7 0 42 2;
#X connect 8 0 9 0;
#X connect 9 0 42 1;
#X connect 10 0 14 0;
#X connect 11 0 14 0;
#X connect 12 0 17 0;
#X connect 13 0 42 0;
#X connect 15 0 3 0;
#X connect 17 0 13 0;
#X connect 19 0 0 0;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X connect 22 0 29 0;
#X connect 25 0 24 0;
#X connect 26 0 0 0;
#X connect 27 0 26 0;
#X connect 27 0 25 0;
#X connect 29 0 30 0;
#X connect 30 0 24 0;
#X connect 32 0 50 0;
#X connect 33 0 50 0;
#X connect 34 0 50 0;
#X connect 38 0 15 0;
#X connect 42 0 14 0;
#X restore 394 346 pd pseudo-gem_rendering;
#N canvas 675 145 684 553 mouse 0;
#X text 37 16 example : draw with the mouse;
#N canvas 0 0 597 569 demo2 0;
#X obj 63 50 route 1 2 0;
#X obj 94 163 unpack 0 0;
#X obj 321 274 unpack 0 0;
#X obj 89 204 t f f;
#X obj 161 206 t f f;
#X obj 329 108 unpack 0 0 0 0;
#X obj 91 305 pack 0 0 0 0 0 0 0 0;
#X obj 324 335 pack 0 0 0 0 0 0;
#X obj 61 5 inlet;
#X obj 84 475 outlet;
#X msg 39 340 moveto \$1 \$2;
#X obj 89 244 - 0.02;
#X obj 138 276 + 0.02;
#X obj 146 240 - 0.02;
#X obj 218 241 + 0.02;
#X msg 103 373 paintoval \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8;
#X msg 124 406 penwidth 3 \, lineto \$1 \$2 \$3 \$4 \$5 \$6;
#X text 331 73 color;
#X obj 328 28 loadbang;
#X msg 328 57 0 0 0 1;
#X obj 36 80 t l l;
#X connect 0 0 20 0;
#X connect 0 1 2 0;
#X connect 0 2 1 0;
#X connect 1 0 3 0;
#X connect 1 1 4 0;
#X connect 2 0 7 0;
#X connect 2 1 7 1;
#X connect 3 0 11 0;
#X connect 3 1 12 0;
#X connect 4 0 13 0;
#X connect 4 1 14 0;
#X connect 5 0 6 4;
#X connect 5 0 7 2;
#X connect 5 1 7 3;
#X connect 5 1 6 5;
#X connect 5 2 6 6;
#X connect 5 2 7 4;
#X connect 5 3 6 7;
#X connect 5 3 7 5;
#X connect 6 0 15 0;
#X connect 7 0 16 0;
#X connect 8 0 0 0;
#X connect 10 0 9 0;
#X connect 11 0 6 0;
#X connect 12 0 6 2;
#X connect 13 0 6 1;
#X connect 14 0 6 3;
#X connect 15 0 9 0;
#X connect 16 0 9 0;
#X connect 18 0 19 0;
#X connect 19 0 5 0;
#X connect 20 0 1 0;
#X connect 20 1 10 0;
#X restore 10 173 pd demo2;
#X msg 118 57 clear;
#X obj 127 105 mob/lcd;
#A saved -z_offset 0;
#A saved -back_alpha 1;
#A saved -front_alpha 1;
#A saved -front_color 150 150 150;
#A saved -back_color 220 220 220;
#A saved -title ;
#A saved -name Untitled_1*;
#A saved -size 362 283;
#X obj 241 467 unpack f f;
#X floatatom 241 496 5 0 0 0 - - - 0;
#X floatatom 302 496 5 0 0 0 - - - 0;
#X obj 86 468 unpack f f;
#X floatatom 86 497 5 0 0 0 - - - 0;
#X floatatom 147 497 5 0 0 0 - - - 0;
#X obj 95 409 route 1 2 0;
#X obj 417 461 unpack f f;
#X floatatom 417 490 5 0 0 0 - - - 0;
#X floatatom 478 490 5 0 0 0 - - - 0;
#X text 422 435 mouseup;
#X text 92 445 mousedown;
#X text 253 445 drag;
#X connect 1 0 3 0;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 3 0 10 0;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 7 0 8 0;
#X connect 7 1 9 0;
#X connect 10 0 7 0;
#X connect 10 1 4 0;
#X connect 10 2 11 0;
#X connect 11 0 12 0;
#X connect 11 1 13 0;
#X restore 544 414 pd mouse;
#N canvas 810 58 837 963 MobMuPlat_drawing_commands 0;
#X obj 49 835 outlet;
#X msg 49 58 clear;
#X msg 49 787 penwidth 3;
#X text 173 782 penwidth + 1 float (width in pixels), f 22;
#X msg 49 198 paintoval 0.4 0.2 0.5 0.4 0.2 0.2 1 1, f 25;
#X msg 49 88 frameoval 0.6 0.5 0.7 0.9 1 0.5 0 1, f 25;
#X msg 49 308 framerect 0.1 0.1 0.9 0.9 0.5 0.3 0.1 1, f 25;
#X msg 49 418 paintrect 0.8 0.2 0.9 0.4 0.9 0.3 0.1 1, f 25;
#X msg 49 464 paintrect 0.4 0.4 0.6 0.6;
#X msg 49 681 moveto 0.5 0.5;
#X msg 49 720 lineto 0.7 0.9 1 0 0 1;
#X msg 49 746 lineto 0.2 0.4;
#X text 327 751 lineto + 2 floats (x \, y);
#X text 326 363 "framerect" + 4 floats (left x \, top y \, right x \, bottom y) - uses widget's highlight color;
#X text 324 201 "paintoval" + 8 floats (left x \, top y \, right x \, bottom y \, red \, green \, blue \, alpha);
#X text 323 91 "frameoval" + 8 floats (left x \, top y \, right x \, bottom y \, red \, green \, blue \, alpha), f 43;
#X text 323 145 "frameoval" + 4 floats (left x \, top y \, right x \, bottom y) - uses widget's highlight color;
#X text 323 257 "paintoval" + 4 floats (left x \, top y \, right x \, bottom y) - uses widget's highlight color;
#X text 323 307 "framerect" + 8 floats (left x \, top y \, right x \, bottom y \, red \, green \, blue \, alpha);
#X text 323 413 "paintrect" + 8 floats (left x \, top y \, right x \, bottom y \, red \, green \, blue \, alpha);
#X text 326 463 "paintrect" + 4 floats (left x \, top y \, right x \, bottom y) - uses widget's highlight color;
#X text 328 685 moveto + 2 floats (x \, y);
#X text 113 12 !!! alpha-rendering ignored in tcl/tk !!!;
#X text 114 12 !!! alpha-rendering ignored in tcl/tk !!!;
#N canvas 0 0 667 215 framepoly/paintpoly 0;
#X text 29 36 "framepoly" + N floats (specify N/2 points as a list of x/y pairs) - uses widget's highlight color "framepolyRGBA" + N+4 floats (specify N/2 points as a list of x/y pairs \, red \, green \, blue \, alpha) \; "paintpoly" + N floats (specify N/2 points as a list of x/y pairs) - uses widget's highlight color "paintpolyRGBA" + N+4 floats (specify N/2 points as a list of x/y pairs \, red \, green \, blue \, alpha);
#X restore 602 562 pd framepoly/paintpoly;
#X text 78 554 !! MobMuPlat "framepoly" and "paintpoly" messages aren't implemented yet in tcl/tk, f 50;
#X text 328 721 lineto + 6 floats (x \, y \, red \, green \, blue \, alpha);
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 4 0 0 0;
#X connect 5 0 0 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 0 0;
#X connect 9 0 0 0;
#X connect 10 0 0 0;
#X connect 11 0 0 0;
#X restore 36 161 pd MobMuPlat_drawing_commands;
#X text 10 389 * Inlet passes the drawing commands;
#X text 10 414 * First outlet gives the mouse/touch interaction --->;
#X text 7 161 1);
#X text 389 299 2) How to paint in a LCD panel using pseudo-gem objects :, f 30;
#X text 21 551 You can both use connexions or send/receive pairs, f 19;
#N canvas 377 37 976 828 second_outlet 0;
#X obj 82 252 mob/lcd;
#A saved -z_offset 0;
#A saved -back_alpha 1;
#A saved -front_alpha 1;
#A saved -front_color 150 150 150;
#A saved -back_color 220 220 220;
#A saved -title ;
#A saved -name Untitled_2*;
#A saved -size 206 183;
#X obj 151 470 route drawing_subpatch drawing_pointer;
#X msg 670 153 paintoval 0.4 0.2 0.5 0.4 0.2 0.2 1 1, f 25;
#X msg 673 92 frameoval 0.6 0.5 0.7 0.9 1 0.5 0 1, f 25;
#X msg 668 216 framerect 0.1 0.1 0.9 0.9 0.5 0.3 0.1 1, f 25;
#X msg 665 277 paintrect 0.8 0.2 0.9 0.4 0.9 0.3 0.1 1, f 25;
#X msg 661 345 paintrect 0.4 0.4 0.6 0.6;
#X msg 658 400 moveto 0.5 0.5;
#X msg 650 446 lineto 0.2 0.4;
#X obj 380 561 pointer struct_frameoval struct_paintoval struct_framerect struct_paintrect struct_lineto;
#X obj 385 655 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 455 655 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 565 655 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 655 655 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 755 655 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 835 655 bng 15 250 50 0 empty empty other 17 7 0 10 #fcfcfc #000000 #000000;
#X msg 73 162 clear;
#X obj 140 571 pointer;
#X obj 140 649 get - lx ty rx by;
#X floatatom 100 687 5 0 0 0 - - - 0;
#X floatatom 168 688 5 0 0 0 - - - 0;
#X floatatom 241 688 5 0 0 0 - - - 0;
#X floatatom 306 688 5 0 0 0 - - - 0;
#X obj 140 610 t p p p p p;
#X obj 46 737 set - lx;
#X obj 146 737 set - ty;
#X obj 246 737 set - rx;
#X obj 354 736 set - by;
#X text 43 35 * Second outlet gives both the name of the subpatch that contains the datastructures scalars and the pointer to last appended scalar \, for editing purposes (not in MobMuPlat)., f 65;
#X connect 0 1 1 0;
#X connect 1 1 9 0;
#X connect 1 1 17 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X connect 4 0 0 0;
#X connect 5 0 0 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;
#X connect 8 0 0 0;
#X connect 9 0 10 0;
#X connect 9 1 11 0;
#X connect 9 2 12 0;
#X connect 9 3 13 0;
#X connect 9 4 14 0;
#X connect 9 5 15 0;
#X connect 16 0 0 0;
#X connect 17 0 23 0;
#X connect 18 0 19 0;
#X connect 18 1 20 0;
#X connect 18 2 21 0;
#X connect 18 3 22 0;
#X connect 19 0 24 0;
#X connect 20 0 25 0;
#X connect 21 0 26 0;
#X connect 22 0 27 0;
#X connect 23 0 18 0;
#X connect 23 1 24 1;
#X connect 23 2 25 1;
#X connect 23 3 26 1;
#X connect 23 4 27 1;
#X restore 32 443 pd second_outlet;
#X text 9 444 *;
#X obj 517 474 r lcd_panel;
#X obj 19 676 s lcd_panel-rcv;
#X obj 6 55 mob/lcd;
#A saved -z_offset 0;
#A saved -back_alpha 1;
#A saved -front_alpha 1;
#A saved -front_color 150 150 150;
#A saved -back_color 255 255 255;
#A saved -title ;
#A saved -name Untitled_3*;
#A saved -size 60 60;
#X connect 7 0 6 0;
#X connect 7 0 9 0;
#X connect 8 0 7 0;
#X connect 10 0 30 1;
#X connect 11 0 30 2;
#X connect 12 0 30 0;
#X connect 15 0 16 0;
#X connect 15 1 17 0;
#X connect 18 0 19 0;
#X connect 18 1 20 0;
#X connect 21 0 18 0;
#X connect 21 1 15 0;
#X connect 21 2 22 0;
#X connect 22 0 23 0;
#X connect 22 1 24 0;
#X connect 29 0 42 0;
#X connect 30 0 6 0;
#X connect 30 0 9 0;
#X connect 33 0 6 0;
#X connect 41 0 21 0;