ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.21
Committed: Sat Jun 28 16:44:55 2003 UTC (20 years, 11 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.20: +10 -7 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 <html>
2 <head>
3 <title>KGS Protocol Description</title>
4 <!--
5 Copyright (C) 2003 Marc Lehmannn &lt;pcg@goof.com&gt;
6
7 You can redistribute and/or modify this document under the terms of
8 the GNU General Public License as published by the Free Software
9 Foundation; either version 2 of the License, or (at your option) any
10 later version.
11
12 This document is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 -->
21 </head>
22 <body>
23
24 <h1>$Revision: 1.21 $</h1>
25
26 <h1>KGS Protocol Description</h1>
27
28 <p>This XML document describes the KGS protocol. It is also used
29 to automatically generate the perl parser for all the messages and
30 structures in the protocol. Adapting it to other languages should be
31 trivial.</p>
32
33 <p>
34 <b>Please note that the author of KGS has told me that he will
35 change the protocol in response to my efforts. This does not
36 necessarily mean that he will change the protocol just to make it
37 difficult to reverse-engineer the protocol, but if this happens,
38 I might not have the resources the track them, if they are too
39 extensive. Anyway, he made it clear that no help whatsoever is to be
40 expected.</b>
41 </p>
42
43 <p>If you feel you need to update the visual appearance of this
44 document, feel free to look <tt>doc/doc2html.xsl</tt> and improve
45 it.</p>
46
47 <p>The current version of this document can always be found at
48 <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.xml?rev=HEAD&amp;content-type=text/xml">here</a>, while
49 the HTML version of it can be found
50 <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.html?rev=HEAD&amp;content-type=text/html">here</a>.
51 </p>
52
53 <h2>Structure and conventions of this document and the protocol</h2>
54
55 <p>"Send" means messages send from the client to the server, while
56 "received" means messages send by the server to the client.</p>
57
58 <p>Everything on the wire is in little-endian format (what a shame).</p>
59
60 <p>Primitive types are mostly integers (signed
61 "<code>I</code>&lt;bits&gt;", unsigned "<code>U</code>&lt;bits&gt;"),
62 ascii strings ("<code>username</code>"), or zero-terminated
63 UCS2-Strings ("<code>STRING</code>"). Yes, I know java is supposed to
64 do UTF-16, but no implementation seems to care...</p>
65
66 <p>For the rest, go figure or bug me, <a href="mailto:pcg@goof.com">Marc Lehmann &lt;pcg@goof.com&gt;</a>
67 </p>
68
69 <h2>Stream and message structure.</h2>
70
71 <p>After connecting to the server, a handshake byte is sent. It's
72 the major version number of the protocol the client expects to
73 receive. Version 3 and 4 are mostly the same, except that Version 4
74 clients expect server messages to be compressed, version 3 clients
75 not.</p>
76
77 <p>The server sends back his protocol number, which is always 3 in
78 the current protocol. Most of the protocol variation is determined by
79 the server using the client version that is used in the initial login
80 message, not the initial handshake byte.</p>
81
82 <p>After the initial handshake, the client sends uncompressed
83 messages, while the server sends back a zlib-compressed
84 stream (<a href="http://rfc1950.x42.com/">rfc1950</a> and <a href="http://rfc1950.x42.com/">rfc1951</a>).</p>
85
86 <p>All messages have the same header:</p>
87
88 <h4>STRUCTURE message_header</h4>
89 <p>
90 </p>
91 <table border="1" width="100%">
92 <tr>
93 <th width="10%">NAME</th>
94 <th width="10%">TYPE</th>
95 <th width="15%">DEFAULT</th>
96 <th>DESCRIPTION</th>
97 <th width="15%">DEC-GUARD</th>
98 </tr>
99 <tr>
100 <td>_unknown</td>
101 <td>U16</td>
102 <td> </td>
103 <td>
104
105  
106 </td>
107 <td>
108 <b></b>
109  
110 </td>
111 </tr>
112 <tr>
113 <td>length</td>
114 <td>U16</td>
115 <td> </td>
116 <td>
117
118  
119 </td>
120 <td>
121 <b></b>
122  
123 </td>
124 </tr>
125 <tr>
126 <td>type</td>
127 <td>U16</td>
128 <td> </td>
129 <td>
130
131  
132 </td>
133 <td>
134 <b></b>
135  
136 </td>
137 </tr>
138 </table>
139
140 <h2>Primitive types used in the protocol.</h2>
141
142 <p>Apart from the basic types, I need to define some extra types to
143 deal with fixed-point values (based on integer types) or fixed-length
144 strings (either 7-bit-ascii or more limited (<code>A</code>), or UCS-2
145 based (<code>S</code>)).</p>
146
147 <h4>TYPE username</h4>
148 BASE TYPE A, LENGTH 12, MULTIPLIER <br />
149
150 <p>The basic user or login name, used throughout the protocol
151 as a handle to the user.</p>
152
153 <h4>TYPE roomname</h4>
154 BASE TYPE S, LENGTH 25, MULTIPLIER <br />
155 <!-- argh, how horribly broken -->
156
157 <p>Many strings in the protocol are fixed-width for no good reason
158 (maybe this is one reason for using compression in newer versions, as
159 the packets itself are wasting lots of space.</p>
160
161 <h4>TYPE realname</h4>
162 BASE TYPE S, LENGTH 50, MULTIPLIER <br />
163 <h4>TYPE email</h4>
164 BASE TYPE S, LENGTH 70, MULTIPLIER <br />
165 <h4>TYPE userinfo</h4>
166 BASE TYPE S, LENGTH 1000, MULTIPLIER <br />
167 <h4>TYPE url</h4>
168 BASE TYPE A, LENGTH 100, MULTIPLIER <br />
169
170 <p>Used in user_record.</p>
171
172 <h4>TYPE locale</h4>
173 BASE TYPE A, LENGTH 5, MULTIPLIER <br />
174
175 <p>A kind of locale specifier. It seems the general format seems to be
176 lowercase language, underscore, uppercase location, e.g. en_US. More
177 fancy specifications don't fit.</p>
178
179 <h4>TYPE flag</h4>
180 BASE TYPE U8, LENGTH , MULTIPLIER 1<br />
181
182 <p>Just a simple boolean value. 0 means false, and 1 generally true,
183 but I suggest ccepting != 0 as true.</p>
184
185 <h4>TYPE komi16</h4>
186 BASE TYPE I16, LENGTH , MULTIPLIER 2<br />
187 <h4>TYPE komi32</h4>
188 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
189 <h4>TYPE komi324</h4>
190 BASE TYPE I32, LENGTH , MULTIPLIER 4<br />
191
192 <p>Komi values are multiplied by 2 to make them integer in the
193 protocol. Well, *most* of the time at least...</p>
194
195 <h4>TYPE result</h4>
196 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
197
198 <p>The game result is also multiplied by two to give it higher
199 resolution. There are also special values for wins by time etc., either
200 in result or in the score* types, or both :)</p>
201
202 <h4>TYPE score16</h4>
203 BASE TYPE I16, LENGTH , MULTIPLIER 4<br />
204 <h4>TYPE score32</h4>
205 BASE TYPE I32, LENGTH , MULTIPLIER 4<br />
206
207 <p>A score value (used for displaying the score at the end of a game)
208 are multiplied by four for a change (the 0.25 resolution is not
209 used). In game structures it is encoded by dividing by two, though, so
210 watch out!</p>
211
212 <h4>TYPE time</h4>
213 BASE TYPE U32, LENGTH , MULTIPLIER 1000<br />
214
215 <p>Time values are multiplied by 1000, giving them millisecond
216 accuracy.</p>
217
218 <h4>TYPE timestamp</h4>
219 BASE TYPE U64, LENGTH , MULTIPLIER 1000<br />
220
221 <p>64 bit timeval, milliseconds since posix epoch, e.g. <code>my
222 ($year, $month, $day) = (gmtime $date * 0.001)[5,4,3];</code>
223 </p>
224
225 <h4>TYPE password</h4>
226 BASE TYPE U64, LENGTH , MULTIPLIER <br />
227
228 <p>Password is a number calculated as follows (VERY insecure, basically
229 plaintext!): <code>password = 0; for char in characters do password ←
230 password * 1055 + ascii_code (char)</code>
231 </p>
232
233 <h2>Constants, enumeration and set types used in the protocol.</h2>
234
235 <p>Baaah... not yet.</p>
236
237 <h2>Structs used in send &amp; receive messages</h2>
238
239 <h4>STRUCTURE user</h4>
240 CLASS: KGS::User<br />
241 <p>
242
243 <p>Everywhere a user + flags is required, even used in some places
244 where only a username is required. I see no general rule on when a
245 complete user and when a partial user is required.</p>
246 </p>
247 <table border="1" width="100%">
248 <tr>
249 <th width="10%">NAME</th>
250 <th width="10%">TYPE</th>
251 <th width="15%">DEFAULT</th>
252 <th>DESCRIPTION</th>
253 <th width="15%">DEC-GUARD</th>
254 </tr>
255 <tr>
256 <td>name</td>
257 <td>username</td>
258 <td> </td>
259 <td>
260
261  
262 </td>
263 <td>
264 <b></b>
265  
266 </td>
267 </tr>
268 <tr>
269 <td>flags</td>
270 <td>U32</td>
271 <td>1 </td>
272 <td>
273
274  
275 </td>
276 <td>
277 <b></b>
278  
279 </td>
280 </tr>
281 </table>
282
283 <h4>STRUCTURE rules</h4>
284 CLASS: KGS::Rules<br />
285 <p>
286
287 <p>This structure is used for challanges as well as in the special
288 TREE "subprotocol". It tightly encodes the game parameters.</p>
289 </p>
290 <table border="1" width="100%">
291 <tr>
292 <th width="10%">NAME</th>
293 <th width="10%">TYPE</th>
294 <th width="15%">DEFAULT</th>
295 <th>DESCRIPTION</th>
296 <th width="15%">DEC-GUARD</th>
297 </tr>
298 <tr>
299 <td>ruleset</td>
300 <td>U8</td>
301 <td> </td>
302 <td>
303
304  
305 </td>
306 <td>
307 <b></b>
308  
309 </td>
310 </tr>
311 <tr>
312 <td>size</td>
313 <td>U8</td>
314 <td> </td>
315 <td>
316
317  
318 </td>
319 <td>
320 <b></b>
321  
322 </td>
323 </tr>
324 <tr>
325 <td>handicap</td>
326 <td>U8</td>
327 <td> </td>
328 <td>
329
330  
331 </td>
332 <td>
333 <b></b>
334  
335 </td>
336 </tr>
337 <tr>
338 <td>komi</td>
339 <td>komi16</td>
340 <td> </td>
341 <td>
342
343  
344 </td>
345 <td>
346 <b></b>
347  
348 </td>
349 </tr>
350 <tr>
351 <td>timesys</td>
352 <td>U8</td>
353 <td> </td>
354 <td>
355
356  
357 </td>
358 <td>
359 <b></b>
360  
361 </td>
362 </tr>
363 <tr>
364 <td>time</td>
365 <td>U32</td>
366 <td> </td>
367 <td>
368
369  
370 </td>
371 <td>
372 <b></b>
373  
374 </td>
375 </tr>
376 <tr>
377 <td>interval</td>
378 <td>U32</td>
379 <td> </td>
380 <td>
381 byo-yomi time / canadian time
382
383  
384 </td>
385 <td>
386 <b></b>
387  
388 </td>
389 </tr>
390 <tr>
391 <td>count</td>
392 <td>U16</td>
393 <td> </td>
394 <td>
395 periods / moves
396
397  
398 </td>
399 <td>
400 <b></b>
401  
402 </td>
403 </tr>
404 </table>
405
406 <h2>Structs used in send messages</h2>
407
408 <h2>Send messages</h2>
409
410 <h4>
411 <a name="S0000"></a>SEND
412 MESSAGE login</h4>
413 NUMERIC TYPE (hex): 0000<p>
414
415 <p>Sent to login, usually the first message sent. The password needs to be set when the
416 guest flag is true.
417 Possible replies: <a href="#R0001">login(0001)</a>
418 <a href="#R0002">login(0002)</a>
419 <a href="#R0003">login(0003)</a>
420 <a href="#R0004">login(0004)</a>
421 <a href="#R0005">login(0005)</a>
422 <a href="#R0006">login(0006)</a>
423 <a href="#R0018">login(0018)</a>
424 <a href="#R0022">login(0022)</a>. Followed by: <a href="#R001b">timewarning_default(001b)</a> <a href="#R0411">chal_defaults(0411)</a>
425 </p>
426 </p>
427 <table border="1" width="100%">
428 <tr>
429 <th width="10%">NAME</th>
430 <th width="10%">TYPE</th>
431 <th width="15%">DEFAULT</th>
432 <th>DESCRIPTION</th>
433 <th width="15%">DEC-GUARD</th>
434 </tr>
435 <tr>
436 <td>ver_major</td>
437 <td>U32</td>
438 <td>2 </td>
439 <td>
440
441  
442 </td>
443 <td>
444 <b></b>
445  
446 </td>
447 </tr>
448 <tr>
449 <td>ver_minor</td>
450 <td>U32</td>
451 <td>4 </td>
452 <td>
453
454  
455 </td>
456 <td>
457 <b></b>
458  
459 </td>
460 </tr>
461 <tr>
462 <td>ver_micro</td>
463 <td>U32</td>
464 <td>67 </td>
465 <td>
466
467  
468 </td>
469 <td>
470 <b></b>
471  
472 </td>
473 </tr>
474 <tr>
475 <td>name</td>
476 <td>username</td>
477 <td> </td>
478 <td>
479
480  
481 </td>
482 <td>
483 <b></b>
484  
485 </td>
486 </tr>
487 <tr>
488 <td>password</td>
489 <td>password</td>
490 <td>0 </td>
491 <td>
492
493  
494 </td>
495 <td>
496 <b></b>
497  
498 </td>
499 </tr>
500 <tr>
501 <td>guest</td>
502 <td>flag</td>
503 <td>1 </td>
504 <td>
505
506  
507 </td>
508 <td>
509 <b></b>
510  
511 </td>
512 </tr>
513 <tr>
514 <td>_unknown3</td>
515 <td>U16</td>
516 <td>0 </td>
517 <td>
518
519  
520 </td>
521 <td>
522 <b></b>
523  
524 </td>
525 </tr>
526 <tr>
527 <td>locale</td>
528 <td>locale</td>
529 <td>"en_US" </td>
530 <td>
531
532  
533 </td>
534 <td>
535 <b></b>
536  
537 </td>
538 </tr>
539 <tr>
540 <td>clientver</td>
541 <td>DATA</td>
542 <td>"1.4.1_01:Swing app:Sun Microsystems Inc." </td>
543 <td>
544 The "default" is the java vm version, not exactly he client version. However,
545 you should always send a text like "Jonathan's C client bersion 0.6" or somesuch,
546 so the server can, if necessary, block broken clients or client versions.
547
548  
549 </td>
550 <td>
551 <b></b>
552  
553 </td>
554 </tr>
555 </table>
556
557 <h4>
558 <a name="S0007"></a>SEND
559 MESSAGE req_userinfo</h4>
560 NUMERIC TYPE (hex): 0007<p>
561 <p>Request info about a certain user. Possible reply: <a href="#R0008">userinfo(0008)</a>
562 </p>
563 </p>
564 <table border="1" width="100%">
565 <tr>
566 <th width="10%">NAME</th>
567 <th width="10%">TYPE</th>
568 <th width="15%">DEFAULT</th>
569 <th>DESCRIPTION</th>
570 <th width="15%">DEC-GUARD</th>
571 </tr>
572 <tr>
573 <td>name</td>
574 <td>username</td>
575 <td> </td>
576 <td>
577
578  
579 </td>
580 <td>
581 <b></b>
582  
583 </td>
584 </tr>
585 </table>
586
587 <h4>
588 <a name="S0007"></a>SEND
589 MESSAGE update_userinfo</h4>
590 NUMERIC TYPE (hex): 0007<p>
591 <p>Update user info. Message structure is very similar
592 to <a href="#R0008">userinfo(0008)</a>.</p>
593 </p>
594 <table border="1" width="100%">
595 <tr>
596 <th width="10%">NAME</th>
597 <th width="10%">TYPE</th>
598 <th width="15%">DEFAULT</th>
599 <th>DESCRIPTION</th>
600 <th width="15%">DEC-GUARD</th>
601 </tr>
602 <tr>
603 <td>setpass</td>
604 <td>flag</td>
605 <td> </td>
606 <td>
607 Should the password be updated?
608
609  
610 </td>
611 <td>
612 <b></b>
613  
614 </td>
615 </tr>
616 <tr>
617 <td>password</td>
618 <td>password</td>
619 <td>0 </td>
620 <td>
621
622  
623 </td>
624 <td>
625 <b></b>
626  
627 </td>
628 </tr>
629 <tr>
630 <td>realname</td>
631 <td>realname</td>
632 <td> </td>
633 <td>
634
635  
636 </td>
637 <td>
638 <b></b>
639  
640 </td>
641 </tr>
642 <tr>
643 <td>email</td>
644 <td>email</td>
645 <td> </td>
646 <td>
647
648  
649 </td>
650 <td>
651 <b></b>
652  
653 </td>
654 </tr>
655 <tr>
656 <td>info</td>
657 <td>userinfo</td>
658 <td> </td>
659 <td>
660
661  
662 </td>
663 <td>
664 <b></b>
665  
666 </td>
667 </tr>
668 <tr>
669 <td>homepage</td>
670 <td>url</td>
671 <td> </td>
672 <td>
673
674  
675 </td>
676 <td>
677 <b></b>
678  
679 </td>
680 </tr>
681 <tr>
682 <td>_unused</td>
683 <td>U64</td>
684 <td>0 </td>
685 <td>
686
687  
688 </td>
689 <td>
690 <b></b>
691  
692 </td>
693 </tr>
694 <tr>
695 <td>_unused</td>
696 <td>U64</td>
697 <td>0 </td>
698 <td>
699
700  
701 </td>
702 <td>
703 <b></b>
704  
705 </td>
706 </tr>
707 </table>
708
709 <h4>
710 <a name="S0014"></a>SEND
711 MESSAGE req_stats</h4>
712 NUMERIC TYPE (hex): 0014<p>
713 <p>Request server statistics. Replied with <a href="#R0015">stats(0015)</a>
714 </p>
715 </p>
716 <table border="1" width="100%">
717 <tr>
718 <th width="10%">NAME</th>
719 <th width="10%">TYPE</th>
720 <th width="15%">DEFAULT</th>
721 <th>DESCRIPTION</th>
722 <th width="15%">DEC-GUARD</th>
723 </tr>
724 </table>
725
726 <h4>
727 <a name="S001d"></a>SEND
728 MESSAGE ping</h4>
729 NUMERIC TYPE (hex): 001d<p>
730 <p>Wild guess, I send it in <a href="#R0016">idle_warn(0016)</a>.</p>
731 </p>
732 <table border="1" width="100%">
733 <tr>
734 <th width="10%">NAME</th>
735 <th width="10%">TYPE</th>
736 <th width="15%">DEFAULT</th>
737 <th>DESCRIPTION</th>
738 <th width="15%">DEC-GUARD</th>
739 </tr>
740 </table>
741
742 <h4>
743 <a name="S001e"></a>SEND
744 MESSAGE req_usergraph</h4>
745 NUMERIC TYPE (hex): 001e<p>
746 <p>Request user graph data, replied with <a href="#R001e">usergraph(001e)</a>.</p>
747 </p>
748 <table border="1" width="100%">
749 <tr>
750 <th width="10%">NAME</th>
751 <th width="10%">TYPE</th>
752 <th width="15%">DEFAULT</th>
753 <th>DESCRIPTION</th>
754 <th width="15%">DEC-GUARD</th>
755 </tr>
756 <tr>
757 <td>name</td>
758 <td>username</td>
759 <td> </td>
760 <td>
761
762  
763 </td>
764 <td>
765 <b></b>
766  
767 </td>
768 </tr>
769 </table>
770
771 <h4>
772 <a name="S001f"></a>SEND
773 MESSAGE fetch_memos</h4>
774 NUMERIC TYPE (hex): 001f<p>
775 <p>Unclear. Fetch all outstanding memos? Replied with <a href="#R001f">memo(001f)</a>
776 </p>
777 </p>
778 <table border="1" width="100%">
779 <tr>
780 <th width="10%">NAME</th>
781 <th width="10%">TYPE</th>
782 <th width="15%">DEFAULT</th>
783 <th>DESCRIPTION</th>
784 <th width="15%">DEC-GUARD</th>
785 </tr>
786 </table>
787
788 <h4>
789 <a name="S0021"></a>SEND
790 MESSAGE req_pic</h4>
791 NUMERIC TYPE (hex): 0021<p>
792 <p>Request a user picture from the server. Results in a <a href="#R0021">userpic(0021)</a>
793 or a timeout.</p>
794 </p>
795 <table border="1" width="100%">
796 <tr>
797 <th width="10%">NAME</th>
798 <th width="10%">TYPE</th>
799 <th width="15%">DEFAULT</th>
800 <th>DESCRIPTION</th>
801 <th width="15%">DEC-GUARD</th>
802 </tr>
803 <tr>
804 <td>name</td>
805 <td>username</td>
806 <td> </td>
807 <td>
808
809  
810 </td>
811 <td>
812 <b></b>
813  
814 </td>
815 </tr>
816 </table>
817
818 <h4>
819 <a name="S0021"></a>SEND
820 MESSAGE upload_pic</h4>
821 NUMERIC TYPE (hex): 0021<p>
822 Same code as pic_req, but with an additional data section that
823 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels.
824 </p>
825 <table border="1" width="100%">
826 <tr>
827 <th width="10%">NAME</th>
828 <th width="10%">TYPE</th>
829 <th width="15%">DEFAULT</th>
830 <th>DESCRIPTION</th>
831 <th width="15%">DEC-GUARD</th>
832 </tr>
833 <tr>
834 <td>name</td>
835 <td>username</td>
836 <td> </td>
837 <td>
838
839  
840 </td>
841 <td>
842 <b></b>
843  
844 </td>
845 </tr>
846 <tr>
847 <td>data</td>
848 <td>DATA</td>
849 <td> </td>
850 <td>
851
852  
853 </td>
854 <td>
855 <b></b>
856  
857 </td>
858 </tr>
859 </table>
860
861 <h4>
862 <a name="S0100"></a>SEND
863 MESSAGE gnotice</h4>
864 NUMERIC TYPE (hex): 0100<p>
865 <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results
866 in a <a href="#R0100">gnotice(0100)</a> sent to all users.</p>
867 </p>
868 <table border="1" width="100%">
869 <tr>
870 <th width="10%">NAME</th>
871 <th width="10%">TYPE</th>
872 <th width="15%">DEFAULT</th>
873 <th>DESCRIPTION</th>
874 <th width="15%">DEC-GUARD</th>
875 </tr>
876 <tr>
877 <td>notice</td>
878 <td>STRING</td>
879 <td> </td>
880 <td>
881
882  
883 </td>
884 <td>
885 <b></b>
886  
887 </td>
888 </tr>
889 </table>
890
891 <h4>
892 <a name="S0318"></a>SEND
893 MESSAGE list_rooms</h4>
894 NUMERIC TYPE (hex): 0318<p>
895 <p>List the rooms in a specific group/category. Results in a <a href="#R0318">upd_rooms(0318)</a> message.</p>
896 </p>
897 <table border="1" width="100%">
898 <tr>
899 <th width="10%">NAME</th>
900 <th width="10%">TYPE</th>
901 <th width="15%">DEFAULT</th>
902 <th>DESCRIPTION</th>
903 <th width="15%">DEC-GUARD</th>
904 </tr>
905 <tr>
906 <td>group</td>
907 <td>U8</td>
908 <td> </td>
909 <td>
910
911  
912 </td>
913 <td>
914 <b></b>
915  
916 </td>
917 </tr>
918 </table>
919
920 <h4>
921 <a name="S031a"></a>SEND
922 MESSAGE new_room</h4>
923 NUMERIC TYPE (hex): 031a<p>
924 Create a new room. Not verified.
925 </p>
926 <table border="1" width="100%">
927 <tr>
928 <th width="10%">NAME</th>
929 <th width="10%">TYPE</th>
930 <th width="15%">DEFAULT</th>
931 <th>DESCRIPTION</th>
932 <th width="15%">DEC-GUARD</th>
933 </tr>
934 <tr>
935 <td>name</td>
936 <td>username</td>
937 <td> </td>
938 <td>
939
940  
941 </td>
942 <td>
943 <b></b>
944  
945 </td>
946 </tr>
947 <tr>
948 <td>i1</td>
949 <td>U32</td>
950 <td>0 </td>
951 <td>
952
953  
954 </td>
955 <td>
956 <b></b>
957  
958 </td>
959 </tr>
960 <tr>
961 <td>b1</td>
962 <td>U8</td>
963 <td>0 </td>
964 <td>
965
966  
967 </td>
968 <td>
969 <b></b>
970  
971 </td>
972 </tr>
973 <tr>
974 <td>b2</td>
975 <td>U8</td>
976 <td>255 </td>
977 <td>
978
979  
980 </td>
981 <td>
982 <b></b>
983  
984 </td>
985 </tr>
986 <tr>
987 <td>b3</td>
988 <td>U8</td>
989 <td>255 </td>
990 <td>
991
992  
993 </td>
994 <td>
995 <b></b>
996  
997 </td>
998 </tr>
999 <tr>
1000 <td>group</td>
1001 <td>U8</td>
1002 <td>1 </td>
1003 <td>
1004
1005  
1006 </td>
1007 <td>
1008 <b></b>
1009  
1010 </td>
1011 </tr>
1012 <tr>
1013 <td>name</td>
1014 <td>STRING</td>
1015 <td> </td>
1016 <td>
1017
1018  
1019 </td>
1020 <td>
1021 <b></b>
1022  
1023 </td>
1024 </tr>
1025 <tr>
1026 <td>description</td>
1027 <td>STRING</td>
1028 <td> </td>
1029 <td>
1030
1031  
1032 </td>
1033 <td>
1034 <b></b>
1035  
1036 </td>
1037 </tr>
1038 <tr>
1039 <td>flags</td>
1040 <td>U8</td>
1041 <td> </td>
1042 <td>
1043 0x10 .. private room etc.. see code
1044
1045  
1046 </td>
1047 <td>
1048 <b></b>
1049  
1050 </td>
1051 </tr>
1052 </table>
1053
1054 <h4>
1055 <a name="S0413"></a>SEND
1056 MESSAGE req_game_record</h4>
1057 NUMERIC TYPE (hex): 0413<p>
1058 <p>Requests part of the users game record to be sent. Results in a <a href="#R0414">game_record(0414)</a> or maybe a timeout.</p>
1059 </p>
1060 <table border="1" width="100%">
1061 <tr>
1062 <th width="10%">NAME</th>
1063 <th width="10%">TYPE</th>
1064 <th width="15%">DEFAULT</th>
1065 <th>DESCRIPTION</th>
1066 <th width="15%">DEC-GUARD</th>
1067 </tr>
1068 <tr>
1069 <td>name</td>
1070 <td>username</td>
1071 <td> </td>
1072 <td>
1073
1074  
1075 </td>
1076 <td>
1077 <b></b>
1078  
1079 </td>
1080 </tr>
1081 <tr>
1082 <td>timestamp</td>
1083 <td>timestamp</td>
1084 <td> </td>
1085 <td>
1086 If zero, start at the newest games, else only send games
1087 before the given timestap.
1088
1089  
1090 </td>
1091 <td>
1092 <b></b>
1093  
1094 </td>
1095 </tr>
1096 </table>
1097
1098 <h4>
1099 <a name="S4300"></a>SEND
1100 MESSAGE join_room</h4>
1101 NUMERIC TYPE (hex): 4300<p>
1102 <p>Joins the given room. <a href="#R4300">join_room(4300)</a> messages for yourself
1103 and all users in that room, as well as the initial gamelist, are
1104 send if the room exists. If not, timeout...</p>
1105 </p>
1106 <table border="1" width="100%">
1107 <tr>
1108 <th width="10%">NAME</th>
1109 <th width="10%">TYPE</th>
1110 <th width="15%">DEFAULT</th>
1111 <th>DESCRIPTION</th>
1112 <th width="15%">DEC-GUARD</th>
1113 </tr>
1114 <tr>
1115 <td>channel</td>
1116 <td>U16</td>
1117 <td> </td>
1118 <td>
1119
1120  
1121 </td>
1122 <td>
1123 <b></b>
1124  
1125 </td>
1126 </tr>
1127 <tr>
1128 <td>user</td>
1129 <td>user</td>
1130 <td> </td>
1131 <td>
1132
1133  
1134 </td>
1135 <td>
1136 <b></b>
1137  
1138 </td>
1139 </tr>
1140 </table>
1141
1142 <h4>
1143 <a name="S4301"></a>SEND
1144 MESSAGE msg_room</h4>
1145 NUMERIC TYPE (hex): 4301<p>
1146 Send a message to the room.
1147 </p>
1148 <table border="1" width="100%">
1149 <tr>
1150 <th width="10%">NAME</th>
1151 <th width="10%">TYPE</th>
1152 <th width="15%">DEFAULT</th>
1153 <th>DESCRIPTION</th>
1154 <th width="15%">DEC-GUARD</th>
1155 </tr>
1156 <tr>
1157 <td>channel</td>
1158 <td>U16</td>
1159 <td> </td>
1160 <td>
1161
1162  
1163 </td>
1164 <td>
1165 <b></b>
1166  
1167 </td>
1168 </tr>
1169 <tr>
1170 <td>name</td>
1171 <td>username</td>
1172 <td> </td>
1173 <td>
1174 Must be the login-name of the user.
1175
1176  
1177 </td>
1178 <td>
1179 <b></b>
1180  
1181 </td>
1182 </tr>
1183 <tr>
1184 <td>message</td>
1185 <td>STRING</td>
1186 <td> </td>
1187 <td>
1188
1189  
1190 </td>
1191 <td>
1192 <b></b>
1193  
1194 </td>
1195 </tr>
1196 </table>
1197
1198 <h4>
1199 <a name="S4302"></a>SEND
1200 MESSAGE part_room</h4>
1201 NUMERIC TYPE (hex): 4302<p>
1202 Remove yourself (or maybe others as admin) from a room.
1203 </p>
1204 <table border="1" width="100%">
1205 <tr>
1206 <th width="10%">NAME</th>
1207 <th width="10%">TYPE</th>
1208 <th width="15%">DEFAULT</th>
1209 <th>DESCRIPTION</th>
1210 <th width="15%">DEC-GUARD</th>
1211 </tr>
1212 <tr>
1213 <td>channel</td>
1214 <td>U16</td>
1215 <td> </td>
1216 <td>
1217
1218  
1219 </td>
1220 <td>
1221 <b></b>
1222  
1223 </td>
1224 </tr>
1225 <tr>
1226 <td>name</td>
1227 <td>username</td>
1228 <td> </td>
1229 <td>
1230
1231  
1232 </td>
1233 <td>
1234 <b></b>
1235  
1236 </td>
1237 </tr>
1238 </table>
1239
1240 <h4>
1241 <a name="S4305"></a>SEND
1242 MESSAGE new_game</h4>
1243 NUMERIC TYPE (hex): 4305<p>
1244 Unclear. Start a new game.
1245 </p>
1246 <table border="1" width="100%">
1247 <tr>
1248 <th width="10%">NAME</th>
1249 <th width="10%">TYPE</th>
1250 <th width="15%">DEFAULT</th>
1251 <th>DESCRIPTION</th>
1252 <th width="15%">DEC-GUARD</th>
1253 </tr>
1254 <tr>
1255 <td>channel</td>
1256 <td>U16</td>
1257 <td> </td>
1258 <td>
1259
1260  
1261 </td>
1262 <td>
1263 <b></b>
1264  
1265 </td>
1266 </tr>
1267 <tr>
1268 <td>id</td>
1269 <td>U16</td>
1270 <td> </td>
1271 <td>
1272
1273  
1274 </td>
1275 <td>
1276 <b></b>
1277  
1278 </td>
1279 </tr>
1280 <tr>
1281 <td>gametype</td>
1282 <td>U32</td>
1283 <td> </td>
1284 <td>
1285
1286  
1287 </td>
1288 <td>
1289 <b></b>
1290  
1291 </td>
1292 </tr>
1293 <tr>
1294 <td>rules</td>
1295 <td>rules</td>
1296 <td> </td>
1297 <td>
1298
1299  
1300 </td>
1301 <td>
1302 <b></b>
1303  
1304 </td>
1305 </tr>
1306 <tr>
1307 <td>notes</td>
1308 <td>STRING</td>
1309 <td> </td>
1310 <td>
1311
1312  
1313 </td>
1314 <td>
1315 <b></b>
1316  
1317 </td>
1318 </tr>
1319 </table>
1320
1321 <h4>
1322 <a name="S430b"></a>SEND
1323 MESSAGE req_games</h4>
1324 NUMERIC TYPE (hex): 430b<p>
1325 Request to update room game list (send this once per minute to get
1326 updated). Results in upd_games messages.
1327 </p>
1328 <table border="1" width="100%">
1329 <tr>
1330 <th width="10%">NAME</th>
1331 <th width="10%">TYPE</th>
1332 <th width="15%">DEFAULT</th>
1333 <th>DESCRIPTION</th>
1334 <th width="15%">DEC-GUARD</th>
1335 </tr>
1336 <tr>
1337 <td>channel</td>
1338 <td>U16</td>
1339 <td> </td>
1340 <td>
1341
1342  
1343 </td>
1344 <td>
1345 <b></b>
1346  
1347 </td>
1348 </tr>
1349 </table>
1350
1351 <h4>
1352 <a name="S4319"></a>SEND
1353 MESSAGE req_desc</h4>
1354 NUMERIC TYPE (hex): 4319<p>
1355 Request room description.
1356 </p>
1357 <table border="1" width="100%">
1358 <tr>
1359 <th width="10%">NAME</th>
1360 <th width="10%">TYPE</th>
1361 <th width="15%">DEFAULT</th>
1362 <th>DESCRIPTION</th>
1363 <th width="15%">DEC-GUARD</th>
1364 </tr>
1365 <tr>
1366 <td>channel</td>
1367 <td>U16</td>
1368 <td> </td>
1369 <td>
1370
1371  
1372 </td>
1373 <td>
1374 <b></b>
1375  
1376 </td>
1377 </tr>
1378 </table>
1379
1380 <h4>
1381 <a name="S4400"></a>SEND
1382 MESSAGE send_chal</h4>
1383 NUMERIC TYPE (hex): 4400<p>
1384 Unclear.
1385 </p>
1386 <table border="1" width="100%">
1387 <tr>
1388 <th width="10%">NAME</th>
1389 <th width="10%">TYPE</th>
1390 <th width="15%">DEFAULT</th>
1391 <th>DESCRIPTION</th>
1392 <th width="15%">DEC-GUARD</th>
1393 </tr>
1394 <tr>
1395 <td>channel</td>
1396 <td>U16</td>
1397 <td> </td>
1398 <td>
1399
1400  
1401 </td>
1402 <td>
1403 <b></b>
1404  
1405 </td>
1406 </tr>
1407 <tr>
1408 <td>black</td>
1409 <td>username</td>
1410 <td> </td>
1411 <td>
1412
1413  
1414 </td>
1415 <td>
1416 <b></b>
1417  
1418 </td>
1419 </tr>
1420 <tr>
1421 <td>white</td>
1422 <td>username</td>
1423 <td> </td>
1424 <td>
1425 More following... TREE or challenge.
1426
1427  
1428 </td>
1429 <td>
1430 <b></b>
1431  
1432 </td>
1433 </tr>
1434 </table>
1435
1436 <h4>
1437 <a name="S4403"></a>SEND
1438 MESSAGE join_game</h4>
1439 NUMERIC TYPE (hex): 4403<p>
1440 Join a game. See join_room.
1441 </p>
1442 <table border="1" width="100%">
1443 <tr>
1444 <th width="10%">NAME</th>
1445 <th width="10%">TYPE</th>
1446 <th width="15%">DEFAULT</th>
1447 <th>DESCRIPTION</th>
1448 <th width="15%">DEC-GUARD</th>
1449 </tr>
1450 <tr>
1451 <td>channel</td>
1452 <td>U16</td>
1453 <td> </td>
1454 <td>
1455
1456  
1457 </td>
1458 <td>
1459 <b></b>
1460  
1461 </td>
1462 </tr>
1463 <tr>
1464 <td>user</td>
1465 <td>user</td>
1466 <td> </td>
1467 <td>
1468
1469  
1470 </td>
1471 <td>
1472 <b></b>
1473  
1474 </td>
1475 </tr>
1476 </table>
1477
1478 <h4>
1479 <a name="S4404"></a>SEND
1480 MESSAGE part_game</h4>
1481 NUMERIC TYPE (hex): 4404<p>
1482 Leave (or kick as admin?) a certain user from a game.
1483 </p>
1484 <table border="1" width="100%">
1485 <tr>
1486 <th width="10%">NAME</th>
1487 <th width="10%">TYPE</th>
1488 <th width="15%">DEFAULT</th>
1489 <th>DESCRIPTION</th>
1490 <th width="15%">DEC-GUARD</th>
1491 </tr>
1492 <tr>
1493 <td>channel</td>
1494 <td>U16</td>
1495 <td> </td>
1496 <td>
1497
1498  
1499 </td>
1500 <td>
1501 <b></b>
1502  
1503 </td>
1504 </tr>
1505 <tr>
1506 <td>name</td>
1507 <td>username</td>
1508 <td> </td>
1509 <td>
1510
1511  
1512 </td>
1513 <td>
1514 <b></b>
1515  
1516 </td>
1517 </tr>
1518 </table>
1519
1520 <h4>
1521 <a name="S4405"></a>SEND
1522 MESSAGE set_tree</h4>
1523 NUMERIC TYPE (hex): 4405<p>
1524 Upload a partial game tree to the server. This is used
1525 to send moves and even in-game comments to the server. For the comments,
1526 the server prepends the username and rank.
1527 </p>
1528 <table border="1" width="100%">
1529 <tr>
1530 <th width="10%">NAME</th>
1531 <th width="10%">TYPE</th>
1532 <th width="15%">DEFAULT</th>
1533 <th>DESCRIPTION</th>
1534 <th width="15%">DEC-GUARD</th>
1535 </tr>
1536 <tr>
1537 <td>channel</td>
1538 <td>U16</td>
1539 <td> </td>
1540 <td>
1541
1542  
1543 </td>
1544 <td>
1545 <b></b>
1546  
1547 </td>
1548 </tr>
1549 <tr>
1550 <td>tree</td>
1551 <td>TREE</td>
1552 <td> </td>
1553 <td>
1554
1555  
1556 </td>
1557 <td>
1558 <b></b>
1559  
1560 </td>
1561 </tr>
1562 </table>
1563
1564 <h4>
1565 <a name="S4408"></a>SEND
1566 MESSAGE get_tree</h4>
1567 NUMERIC TYPE (hex): 4408<p>
1568 Request the game tree starting at a given node. This is used
1569 when the server only sends a partial tree (with end code "more").
1570 </p>
1571 <table border="1" width="100%">
1572 <tr>
1573 <th width="10%">NAME</th>
1574 <th width="10%">TYPE</th>
1575 <th width="15%">DEFAULT</th>
1576 <th>DESCRIPTION</th>
1577 <th width="15%">DEC-GUARD</th>
1578 </tr>
1579 <tr>
1580 <td>channel</td>
1581 <td>U16</td>
1582 <td> </td>
1583 <td>
1584
1585  
1586 </td>
1587 <td>
1588 <b></b>
1589  
1590 </td>
1591 </tr>
1592 <tr>
1593 <td>node</td>
1594 <td>U32</td>
1595 <td> </td>
1596 <td>
1597
1598  
1599 </td>
1600 <td>
1601 <b></b>
1602  
1603 </td>
1604 </tr>
1605 </table>
1606
1607 <h4>
1608 <a name="S440c"></a>SEND
1609 MESSAGE claim_win</h4>
1610 NUMERIC TYPE (hex): 440c<p>
1611 Unclear.
1612 </p>
1613 <table border="1" width="100%">
1614 <tr>
1615 <th width="10%">NAME</th>
1616 <th width="10%">TYPE</th>
1617 <th width="15%">DEFAULT</th>
1618 <th>DESCRIPTION</th>
1619 <th width="15%">DEC-GUARD</th>
1620 </tr>
1621 <tr>
1622 <td>channel</td>
1623 <td>U16</td>
1624 <td> </td>
1625 <td>
1626
1627  
1628 </td>
1629 <td>
1630 <b></b>
1631  
1632 </td>
1633 </tr>
1634 <tr>
1635 <td>_byte</td>
1636 <td>U8 </td>
1637 <td> </td>
1638 <td>
1639 Player colour maybe? Unclear.
1640
1641  
1642 </td>
1643 <td>
1644 <b></b>
1645  
1646 </td>
1647 </tr>
1648 </table>
1649
1650 <h4>
1651 <a name="S440d"></a>SEND
1652 MESSAGE add_time</h4>
1653 NUMERIC TYPE (hex): 440d<p>
1654 Not checked.
1655
1656 </p>
1657 <table border="1" width="100%">
1658 <tr>
1659 <th width="10%">NAME</th>
1660 <th width="10%">TYPE</th>
1661 <th width="15%">DEFAULT</th>
1662 <th>DESCRIPTION</th>
1663 <th width="15%">DEC-GUARD</th>
1664 </tr>
1665 <tr>
1666 <td>channel</td>
1667 <td>U16</td>
1668 <td> </td>
1669 <td>
1670
1671  
1672 </td>
1673 <td>
1674 <b></b>
1675  
1676 </td>
1677 </tr>
1678 <tr>
1679 <td>time</td>
1680 <td>U32</td>
1681 <td> </td>
1682 <td>
1683
1684  
1685 </td>
1686 <td>
1687 <b></b>
1688  
1689 </td>
1690 </tr>
1691 <tr>
1692 <td>player</td>
1693 <td>U8</td>
1694 <td> </td>
1695 <td>
1696
1697  
1698 </td>
1699 <td>
1700 <b></b>
1701  
1702 </td>
1703 </tr>
1704 </table>
1705
1706 <h4>
1707 <a name="S440f"></a>SEND
1708 MESSAGE grant_undo</h4>
1709 NUMERIC TYPE (hex): 440f<p>
1710 Can be send after a req_undo message was received to grant the undo.
1711 </p>
1712 <table border="1" width="100%">
1713 <tr>
1714 <th width="10%">NAME</th>
1715 <th width="10%">TYPE</th>
1716 <th width="15%">DEFAULT</th>
1717 <th>DESCRIPTION</th>
1718 <th width="15%">DEC-GUARD</th>
1719 </tr>
1720 <tr>
1721 <td>channel</td>
1722 <td>U16</td>
1723 <td> </td>
1724 <td>
1725
1726  
1727 </td>
1728 <td>
1729 <b></b>
1730  
1731 </td>
1732 </tr>
1733 </table>
1734
1735 <h4>
1736 <a name="S4410"></a>SEND
1737 MESSAGE resign_game</h4>
1738 NUMERIC TYPE (hex): 4410<p>
1739 Resign the game.
1740 </p>
1741 <table border="1" width="100%">
1742 <tr>
1743 <th width="10%">NAME</th>
1744 <th width="10%">TYPE</th>
1745 <th width="15%">DEFAULT</th>
1746 <th>DESCRIPTION</th>
1747 <th width="15%">DEC-GUARD</th>
1748 </tr>
1749 <tr>
1750 <td>channel</td>
1751 <td>U16</td>
1752 <td> </td>
1753 <td>
1754
1755  
1756 </td>
1757 <td>
1758 <b></b>
1759  
1760 </td>
1761 </tr>
1762 <tr>
1763 <td>player</td>
1764 <td>U8</td>
1765 <td> </td>
1766 <td>
1767
1768  
1769 </td>
1770 <td>
1771 <b></b>
1772  
1773 </td>
1774 </tr>
1775 </table>
1776
1777 <h4>
1778 <a name="S441a"></a>SEND
1779 MESSAGE set_teacher</h4>
1780 NUMERIC TYPE (hex): 441a<p>
1781 Change the teacher to somebody else (or possibly yourself == take it).
1782 </p>
1783 <table border="1" width="100%">
1784 <tr>
1785 <th width="10%">NAME</th>
1786 <th width="10%">TYPE</th>
1787 <th width="15%">DEFAULT</th>
1788 <th>DESCRIPTION</th>
1789 <th width="15%">DEC-GUARD</th>
1790 </tr>
1791 <tr>
1792 <td>channel</td>
1793 <td>U16</td>
1794 <td> </td>
1795 <td>
1796
1797  
1798 </td>
1799 <td>
1800 <b></b>
1801  
1802 </td>
1803 </tr>
1804 <tr>
1805 <td>name</td>
1806 <td>username</td>
1807 <td> </td>
1808 <td>
1809
1810  
1811 </td>
1812 <td>
1813 <b></b>
1814  
1815 </td>
1816 </tr>
1817 </table>
1818
1819 <h4>
1820 <a name="S4422"></a>SEND
1821 MESSAGE add_user</h4>
1822 NUMERIC TYPE (hex): 4422<p>
1823 Unclear. Maybe allow users to talk? No idea, really.
1824
1825 </p>
1826 <table border="1" width="100%">
1827 <tr>
1828 <th width="10%">NAME</th>
1829 <th width="10%">TYPE</th>
1830 <th width="15%">DEFAULT</th>
1831 <th>DESCRIPTION</th>
1832 <th width="15%">DEC-GUARD</th>
1833 </tr>
1834 <tr>
1835 <td>channel</td>
1836 <td>U16</td>
1837 <td> </td>
1838 <td>
1839
1840  
1841 </td>
1842 <td>
1843 <b></b>
1844  
1845 </td>
1846 </tr>
1847 <tr>
1848 <td>othername</td>
1849 <td>username</td>
1850 <td> </td>
1851 <td>
1852
1853  
1854 </td>
1855 <td>
1856 <b></b>
1857  
1858 </td>
1859 </tr>
1860 <tr>
1861 <td>name</td>
1862 <td>username</td>
1863 <td> </td>
1864 <td>; # gives user access to the game (to what? ;)
1865
1866  
1867 </td>
1868 <td>
1869 <b></b>
1870  
1871 </td>
1872 </tr>
1873 </table>
1874
1875 <h4>
1876 <a name="S4423"></a>SEND
1877 MESSAGE set_privacy</h4>
1878 NUMERIC TYPE (hex): 4423<p>
1879 Probably sets the "quiet" flag. Not checked.
1880 </p>
1881 <table border="1" width="100%">
1882 <tr>
1883 <th width="10%">NAME</th>
1884 <th width="10%">TYPE</th>
1885 <th width="15%">DEFAULT</th>
1886 <th>DESCRIPTION</th>
1887 <th width="15%">DEC-GUARD</th>
1888 </tr>
1889 <tr>
1890 <td>channel</td>
1891 <td>U16</td>
1892 <td> </td>
1893 <td>
1894
1895  
1896 </td>
1897 <td>
1898 <b></b>
1899  
1900 </td>
1901 </tr>
1902 <tr>
1903 <td>private</td>
1904 <td>U8</td>
1905 <td> </td>
1906 <td>
1907
1908  
1909 </td>
1910 <td>
1911 <b></b>
1912  
1913 </td>
1914 </tr>
1915 </table>
1916
1917 <h4>
1918 <a name="S4429"></a>SEND
1919 MESSAGE reject_chal</h4>
1920 NUMERIC TYPE (hex): 4429<p>
1921 Reject a challenge from a given user. Not checked.
1922
1923 </p>
1924 <table border="1" width="100%">
1925 <tr>
1926 <th width="10%">NAME</th>
1927 <th width="10%">TYPE</th>
1928 <th width="15%">DEFAULT</th>
1929 <th>DESCRIPTION</th>
1930 <th width="15%">DEC-GUARD</th>
1931 </tr>
1932 <tr>
1933 <td>channel</td>
1934 <td>U16</td>
1935 <td> </td>
1936 <td>
1937
1938  
1939 </td>
1940 <td>
1941 <b></b>
1942  
1943 </td>
1944 </tr>
1945 <tr>
1946 <td>name</td>
1947 <td>username</td>
1948 <td> </td>
1949 <td>
1950
1951  
1952 </td>
1953 <td>
1954 <b></b>
1955  
1956 </td>
1957 </tr>
1958 </table>
1959
1960 <h4>
1961 <a name="S4433"></a>SEND
1962 MESSAGE req_result</h4>
1963 NUMERIC TYPE (hex): 4433<p>
1964 I forgot.
1965
1966 </p>
1967 <table border="1" width="100%">
1968 <tr>
1969 <th width="10%">NAME</th>
1970 <th width="10%">TYPE</th>
1971 <th width="15%">DEFAULT</th>
1972 <th>DESCRIPTION</th>
1973 <th width="15%">DEC-GUARD</th>
1974 </tr>
1975 <tr>
1976 <td>channel</td>
1977 <td>U16</td>
1978 <td> </td>
1979 <td>
1980
1981  
1982 </td>
1983 <td>
1984 <b></b>
1985  
1986 </td>
1987 </tr>
1988 </table>
1989
1990 <h2>Structs mainly used in receive messages</h2>
1991
1992 <h4>STRUCTURE challenge_defaults</h4>
1993 <p>
1994 Send soon after log-in to set the defaults for game challenges.
1995 </p>
1996 <table border="1" width="100%">
1997 <tr>
1998 <th width="10%">NAME</th>
1999 <th width="10%">TYPE</th>
2000 <th width="15%">DEFAULT</th>
2001 <th>DESCRIPTION</th>
2002 <th width="15%">DEC-GUARD</th>
2003 </tr>
2004 <tr>
2005 <td>gametype</td>
2006 <td>U32</td>
2007 <td> </td>
2008 <td>
2009
2010  
2011 </td>
2012 <td>
2013 <b></b>
2014  
2015 </td>
2016 </tr>
2017 <tr>
2018 <td>size</td>
2019 <td>U32</td>
2020 <td> </td>
2021 <td>
2022
2023  
2024 </td>
2025 <td>
2026 <b></b>
2027  
2028 </td>
2029 </tr>
2030 <tr>
2031 <td>timesys</td>
2032 <td>U32</td>
2033 <td> </td>
2034 <td>
2035
2036  
2037 </td>
2038 <td>
2039 <b></b>
2040  
2041 </td>
2042 </tr>
2043 <tr>
2044 <td>time</td>
2045 <td>U32</td>
2046 <td> </td>
2047 <td>
2048
2049  
2050 </td>
2051 <td>
2052 <b></b>
2053  
2054 </td>
2055 </tr>
2056 <tr>
2057 <td>byo_time</td>
2058 <td>U32</td>
2059 <td> </td>
2060 <td>
2061
2062  
2063 </td>
2064 <td>
2065 <b></b>
2066  
2067 </td>
2068 </tr>
2069 <tr>
2070 <td>byo_periods</td>
2071 <td>U32</td>
2072 <td> </td>
2073 <td>
2074
2075  
2076 </td>
2077 <td>
2078 <b></b>
2079  
2080 </td>
2081 </tr>
2082 <tr>
2083 <td>can_time</td>
2084 <td>U32</td>
2085 <td> </td>
2086 <td>
2087
2088  
2089 </td>
2090 <td>
2091 <b></b>
2092  
2093 </td>
2094 </tr>
2095 <tr>
2096 <td>can_stones</td>
2097 <td>U32</td>
2098 <td> </td>
2099 <td>
2100
2101  
2102 </td>
2103 <td>
2104 <b></b>
2105  
2106 </td>
2107 </tr>
2108 </table>
2109
2110 <h4>STRUCTURE challenge</h4>
2111 CLASS: KGS::Challenge<br />
2112 <p>
2113 A challenge.
2114
2115 </p>
2116 <table border="1" width="100%">
2117 <tr>
2118 <th width="10%">NAME</th>
2119 <th width="10%">TYPE</th>
2120 <th width="15%">DEFAULT</th>
2121 <th>DESCRIPTION</th>
2122 <th width="15%">DEC-GUARD</th>
2123 </tr>
2124 <tr>
2125 <td>user1</td>
2126 <td>user</td>
2127 <td> </td>
2128 <td>
2129
2130  
2131 </td>
2132 <td>
2133 <b></b>
2134  
2135 </td>
2136 </tr>
2137 <tr>
2138 <td>user2</td>
2139 <td>user</td>
2140 <td> </td>
2141 <td>
2142
2143  
2144 </td>
2145 <td>
2146 <b></b>
2147  
2148 </td>
2149 </tr>
2150 <tr>
2151 <td>gametype</td>
2152 <td>U32</td>
2153 <td> </td>
2154 <td>
2155
2156  
2157 </td>
2158 <td>
2159 <b></b>
2160  
2161 </td>
2162 </tr>
2163 <tr>
2164 <td>rules</td>
2165 <td>rules</td>
2166 <td> </td>
2167 <td>
2168 Maybe the rules" are in TREE format. I forgot.
2169
2170  
2171 </td>
2172 <td>
2173 <b></b>
2174  
2175 </td>
2176 </tr>
2177 </table>
2178
2179 <h4>STRUCTURE game</h4>
2180 CLASS: KGS::Game<br />
2181 <p>
2182 Basic information about a game. Used in rooms for the gamelist and
2183 in games to detect when a game is saved, changed type (e.g. R =&gt; D)
2184 etc.
2185
2186 </p>
2187 <table border="1" width="100%">
2188 <tr>
2189 <th width="10%">NAME</th>
2190 <th width="10%">TYPE</th>
2191 <th width="15%">DEFAULT</th>
2192 <th>DESCRIPTION</th>
2193 <th width="15%">DEC-GUARD</th>
2194 </tr>
2195 <tr>
2196 <td>channel</td>
2197 <td>U16</td>
2198 <td> </td>
2199 <td>
2200
2201  
2202 </td>
2203 <td>
2204 <b></b>
2205  
2206 </td>
2207 </tr>
2208 <tr>
2209 <td>type</td>
2210 <td>U32</td>
2211 <td> </td>
2212 <td>
2213
2214  
2215 </td>
2216 <td>
2217 <b></b>
2218  
2219 </td>
2220 </tr>
2221 <tr>
2222 <td>user1</td>
2223 <td>user</td>
2224 <td> </td>
2225 <td>
2226 White
2227
2228  
2229 </td>
2230 <td>
2231 <b></b>
2232  
2233 </td>
2234 </tr>
2235 <tr>
2236 <td>user2</td>
2237 <td>user</td>
2238 <td> </td>
2239 <td>
2240 Black
2241
2242  
2243 </td>
2244 <td>
2245 <b></b>
2246  
2247 </td>
2248 </tr>
2249 <tr>
2250 <td>user3</td>
2251 <td>user</td>
2252 <td> </td>
2253 <td>
2254 Owner
2255
2256  
2257 </td>
2258 <td>
2259 <b></b>
2260  
2261 </td>
2262 </tr>
2263 <tr>
2264 <td>size</td>
2265 <td>U32</td>
2266 <td> </td>
2267 <td>
2268
2269  
2270 </td>
2271 <td>
2272 <b></b>
2273  
2274 </td>
2275 </tr>
2276 <tr>
2277 <td>handicap</td>
2278 <td>I32</td>
2279 <td> </td>
2280 <td>
2281 &lt; 0 not fully setup
2282
2283  
2284 </td>
2285 <td>
2286 <b></b>
2287  
2288 </td>
2289 </tr>
2290 <tr>
2291 <td>komi</td>
2292 <td>komi32</td>
2293 <td> </td>
2294 <td>
2295
2296  
2297 </td>
2298 <td>
2299 <b></b>
2300  
2301 </td>
2302 </tr>
2303 <tr>
2304 <td>moves</td>
2305 <td>I16</td>
2306 <td> </td>
2307 <td>
2308 This field reflects either the movenum or the score, sorry, not even guards help, as
2309 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
2310 score (NOT score16!).
2311
2312  
2313 </td>
2314 <td>
2315 <b></b>
2316  
2317 </td>
2318 </tr>
2319 <tr>
2320 <td>flags</td>
2321 <td>U16</td>
2322 <td> </td>
2323 <td>
2324
2325  
2326 </td>
2327 <td>
2328 <b></b>
2329  
2330 </td>
2331 </tr>
2332 <tr>
2333 <td>observers</td>
2334 <td>U32</td>
2335 <td> </td>
2336 <td>
2337
2338  
2339 </td>
2340 <td>
2341 <b></b>
2342  
2343 </td>
2344 </tr>
2345 <tr>
2346 <td>saved</td>
2347 <td>flag</td>
2348 <td> </td>
2349 <td>
2350
2351  
2352 </td>
2353 <td>
2354 <b></b>
2355  
2356 </td>
2357 </tr>
2358 <tr>
2359 <td>notes</td>
2360 <td>STRING</td>
2361 <td> </td>
2362 <td>
2363
2364  
2365 </td>
2366 <td>
2367 <b>handicap</b> &lt; 0
2368  
2369 </td>
2370 </tr>
2371 </table>
2372
2373 <h4>STRUCTURE room_obs</h4>
2374 <p>
2375 Obsolete.
2376
2377 </p>
2378 <table border="1" width="100%">
2379 <tr>
2380 <th width="10%">NAME</th>
2381 <th width="10%">TYPE</th>
2382 <th width="15%">DEFAULT</th>
2383 <th>DESCRIPTION</th>
2384 <th width="15%">DEC-GUARD</th>
2385 </tr>
2386 <tr>
2387 <td>name</td>
2388 <td>roomname</td>
2389 <td> </td>
2390 <td>
2391
2392  
2393 </td>
2394 <td>
2395 <b></b>
2396  
2397 </td>
2398 </tr>
2399 <tr>
2400 <td>channel</td>
2401 <td>U16</td>
2402 <td> </td>
2403 <td>
2404
2405  
2406 </td>
2407 <td>
2408 <b></b>
2409  
2410 </td>
2411 </tr>
2412 <tr>
2413 <td>flags</td>
2414 <td>U32</td>
2415 <td> </td>
2416 <td>
2417
2418  
2419 </td>
2420 <td>
2421 <b></b>
2422  
2423 </td>
2424 </tr>
2425 <tr>
2426 <td>users</td>
2427 <td>U32</td>
2428 <td> </td>
2429 <td>
2430
2431  
2432 </td>
2433 <td>
2434 <b></b>
2435  
2436 </td>
2437 </tr>
2438 </table>
2439
2440 <h4>STRUCTURE room</h4>
2441 CLASS: KGS::Room<br />
2442 <p>
2443 </p>
2444 <table border="1" width="100%">
2445 <tr>
2446 <th width="10%">NAME</th>
2447 <th width="10%">TYPE</th>
2448 <th width="15%">DEFAULT</th>
2449 <th>DESCRIPTION</th>
2450 <th width="15%">DEC-GUARD</th>
2451 </tr>
2452 <tr>
2453 <td>channel</td>
2454 <td>U16</td>
2455 <td> </td>
2456 <td>
2457
2458  
2459 </td>
2460 <td>
2461 <b></b>
2462  
2463 </td>
2464 </tr>
2465 <tr>
2466 <td>flags</td>
2467 <td>U8</td>
2468 <td> </td>
2469 <td>
2470
2471  
2472 </td>
2473 <td>
2474 <b></b>
2475  
2476 </td>
2477 </tr>
2478 <tr>
2479 <td>group</td>
2480 <td>U8</td>
2481 <td> </td>
2482 <td>
2483
2484  
2485 </td>
2486 <td>
2487 <b></b>
2488  
2489 </td>
2490 </tr>
2491 <tr>
2492 <td>users</td>
2493 <td>U16</td>
2494 <td> </td>
2495 <td>
2496
2497  
2498 </td>
2499 <td>
2500 <b></b>
2501  
2502 </td>
2503 </tr>
2504 <tr>
2505 <td>games</td>
2506 <td>U16</td>
2507 <td> </td>
2508 <td>
2509
2510  
2511 </td>
2512 <td>
2513 <b></b>
2514  
2515 </td>
2516 </tr>
2517 <tr>
2518 <td>name</td>
2519 <td>STRING</td>
2520 <td> </td>
2521 <td>
2522
2523  
2524 </td>
2525 <td>
2526 <b></b>
2527  
2528 </td>
2529 </tr>
2530 </table>
2531
2532 <h4>STRUCTURE scorevalues</h4>
2533 CLASS: KGS::Score<br />
2534 <p>
2535 </p>
2536 <table border="1" width="100%">
2537 <tr>
2538 <th width="10%">NAME</th>
2539 <th width="10%">TYPE</th>
2540 <th width="15%">DEFAULT</th>
2541 <th>DESCRIPTION</th>
2542 <th width="15%">DEC-GUARD</th>
2543 </tr>
2544 <tr>
2545 <td>score</td>
2546 <td>score32</td>
2547 <td> </td>
2548 <td>
2549
2550  
2551 </td>
2552 <td>
2553 <b></b>
2554  
2555 </td>
2556 </tr>
2557 <tr>
2558 <td>territory</td>
2559 <td>U32</td>
2560 <td> </td>
2561 <td>
2562
2563  
2564 </td>
2565 <td>
2566 <b></b>
2567  
2568 </td>
2569 </tr>
2570 <tr>
2571 <td>captures</td>
2572 <td>U32</td>
2573 <td> </td>
2574 <td>
2575
2576  
2577 </td>
2578 <td>
2579 <b></b>
2580  
2581 </td>
2582 </tr>
2583 <tr>
2584 <td>i3</td>
2585 <td>U32</td>
2586 <td> </td>
2587 <td>
2588
2589  
2590 </td>
2591 <td>
2592 <b></b>
2593  
2594 </td>
2595 </tr>
2596 <tr>
2597 <td>f2</td>
2598 <td>U32</td>
2599 <td> </td>
2600 <td>
2601
2602  
2603 </td>
2604 <td>
2605 <b></b>
2606  
2607 </td>
2608 </tr>
2609 <tr>
2610 <td>komi</td>
2611 <td>komi324</td>
2612 <td> </td>
2613 <td>
2614
2615  
2616 </td>
2617 <td>
2618 <b></b>
2619  
2620 </td>
2621 </tr>
2622 <tr>
2623 <td>i4</td>
2624 <td>U32</td>
2625 <td> </td>
2626 <td>
2627 Apparently the i3, f2, i4 are zero.
2628
2629  
2630 </td>
2631 <td>
2632 <b></b>
2633  
2634 </td>
2635 </tr>
2636 </table>
2637
2638 <h4>STRUCTURE game_record</h4>
2639 CLASS: KGS::GameRecord<br />
2640 <p>
2641 <p>A single game record entry, as seen in <a href="#R0008">userinfo(0008)</a>.</p>
2642 </p>
2643 <table border="1" width="100%">
2644 <tr>
2645 <th width="10%">NAME</th>
2646 <th width="10%">TYPE</th>
2647 <th width="15%">DEFAULT</th>
2648 <th>DESCRIPTION</th>
2649 <th width="15%">DEC-GUARD</th>
2650 </tr>
2651 <tr>
2652 <td>timestamp</td>
2653 <td>timestamp</td>
2654 <td> </td>
2655 <td>
2656 Time this game was played.
2657
2658  
2659 </td>
2660 <td>
2661 <b></b>
2662  
2663 </td>
2664 </tr>
2665 <tr>
2666 <td>flags</td>
2667 <td>U8</td>
2668 <td> </td>
2669 <td>
2670 High four bits are handicap, low four bits are gametype (encoded strangely? unclear).
2671
2672  
2673 </td>
2674 <td>
2675 <b></b>
2676  
2677 </td>
2678 </tr>
2679 <tr>
2680 <td>user1</td>
2681 <td>user</td>
2682 <td> </td>
2683 <td>
2684 White, flags contain low 8 bits of revision (bits 16-23).
2685
2686  
2687 </td>
2688 <td>
2689 <b></b>
2690  
2691 </td>
2692 </tr>
2693 <tr>
2694 <td>user2</td>
2695 <td>user</td>
2696 <td> </td>
2697 <td>
2698 Black, flags contain high 8 bits of revision (bits 16-23).
2699
2700  
2701 </td>
2702 <td>
2703 <b></b>
2704  
2705 </td>
2706 </tr>
2707 <tr>
2708 <td>user3</td>
2709 <td>user</td>
2710 <td> </td>
2711 <td>
2712 Owner (or empty)
2713
2714  
2715 </td>
2716 <td>
2717 <b></b>
2718  
2719 </td>
2720 </tr>
2721 <tr>
2722 <td>komi</td>
2723 <td>komi16</td>
2724 <td> </td>
2725 <td>
2726
2727  
2728 </td>
2729 <td>
2730 <b></b>
2731  
2732 </td>
2733 </tr>
2734 <tr>
2735 <td>score</td>
2736 <td>score16</td>
2737 <td> </td>
2738 <td>
2739
2740  
2741 </td>
2742 <td>
2743 <b></b>
2744  
2745 </td>
2746 </tr>
2747 <tr>
2748 <td>status</td>
2749 <td>U8</td>
2750 <td> </td>
2751 <td>
2752 0x80 inprogress
2753
2754  
2755 </td>
2756 <td>
2757 <b></b>
2758  
2759 </td>
2760 </tr>
2761 </table>
2762
2763 <h2>Receive messages</h2>
2764
2765 <h4>
2766 <a name="R0001"></a>RECV
2767 MESSAGE login</h4>
2768 NUMERIC TYPE (hex): 0001
2769 (possibly in response to
2770 <a href="#S0000">login(0000)</a>
2771 )
2772 <p>
2773 </p>
2774 <table border="1" width="100%">
2775 <tr>
2776 <th width="10%">NAME</th>
2777 <th width="10%">TYPE</th>
2778 <th width="15%">DEFAULT</th>
2779 <th>DESCRIPTION</th>
2780 <th width="15%">DEC-GUARD</th>
2781 </tr>
2782 <tr>
2783 <td>result</td>
2784 <td>CONSTANT</td>
2785 <td>"login ok" </td>
2786 <td>
2787
2788  
2789 </td>
2790 <td>
2791 <b></b>
2792  
2793 </td>
2794 </tr>
2795 <tr>
2796 <td>success</td>
2797 <td>CONSTANT</td>
2798 <td>1 </td>
2799 <td>
2800
2801  
2802 </td>
2803 <td>
2804 <b></b>
2805  
2806 </td>
2807 </tr>
2808 </table>
2809
2810 <h4>
2811 <a name="R0002"></a>RECV
2812 MESSAGE login</h4>
2813 NUMERIC TYPE (hex): 0002
2814 (possibly in response to
2815 <a href="#S0000">login(0000)</a>
2816 )
2817 <p>
2818 </p>
2819 <table border="1" width="100%">
2820 <tr>
2821 <th width="10%">NAME</th>
2822 <th width="10%">TYPE</th>
2823 <th width="15%">DEFAULT</th>
2824 <th>DESCRIPTION</th>
2825 <th width="15%">DEC-GUARD</th>
2826 </tr>
2827 <tr>
2828 <td>result</td>
2829 <td>CONSTANT</td>
2830 <td>"guest login ok" </td>
2831 <td>
2832
2833  
2834 </td>
2835 <td>
2836 <b></b>
2837  
2838 </td>
2839 </tr>
2840 <tr>
2841 <td>success</td>
2842 <td>CONSTANT</td>
2843 <td>1 </td>
2844 <td>
2845
2846  
2847 </td>
2848 <td>
2849 <b></b>
2850  
2851 </td>
2852 </tr>
2853 </table>
2854
2855 <h4>
2856 <a name="R0003"></a>RECV
2857 MESSAGE login</h4>
2858 NUMERIC TYPE (hex): 0003
2859 (possibly in response to
2860 <a href="#S0000">login(0000)</a>
2861 )
2862 <p>
2863 </p>
2864 <table border="1" width="100%">
2865 <tr>
2866 <th width="10%">NAME</th>
2867 <th width="10%">TYPE</th>
2868 <th width="15%">DEFAULT</th>
2869 <th>DESCRIPTION</th>
2870 <th width="15%">DEC-GUARD</th>
2871 </tr>
2872 <tr>
2873 <td>result</td>
2874 <td>CONSTANT</td>
2875 <td>"login error 3" </td>
2876 <td>
2877 ** maybe more following? **
2878
2879  
2880 </td>
2881 <td>
2882 <b></b>
2883  
2884 </td>
2885 </tr>
2886 </table>
2887
2888 <h4>
2889 <a name="R0004"></a>RECV
2890 MESSAGE login</h4>
2891 NUMERIC TYPE (hex): 0004
2892 (possibly in response to
2893 <a href="#S0000">login(0000)</a>
2894 )
2895 <p>
2896 </p>
2897 <table border="1" width="100%">
2898 <tr>
2899 <th width="10%">NAME</th>
2900 <th width="10%">TYPE</th>
2901 <th width="15%">DEFAULT</th>
2902 <th>DESCRIPTION</th>
2903 <th width="15%">DEC-GUARD</th>
2904 </tr>
2905 <tr>
2906 <td>result</td>
2907 <td>CONSTANT</td>
2908 <td>"wrong password" </td>
2909 <td>
2910 ** maybe more following? **
2911
2912  
2913 </td>
2914 <td>
2915 <b></b>
2916  
2917 </td>
2918 </tr>
2919 </table>
2920
2921 <h4>
2922 <a name="R0005"></a>RECV
2923 MESSAGE login</h4>
2924 NUMERIC TYPE (hex): 0005
2925 (possibly in response to
2926 <a href="#S0000">login(0000)</a>
2927 )
2928 <p>
2929 </p>
2930 <table border="1" width="100%">
2931 <tr>
2932 <th width="10%">NAME</th>
2933 <th width="10%">TYPE</th>
2934 <th width="15%">DEFAULT</th>
2935 <th>DESCRIPTION</th>
2936 <th width="15%">DEC-GUARD</th>
2937 </tr>
2938 <tr>
2939 <td>result</td>
2940 <td>CONSTANT</td>
2941 <td>"user unknown" </td>
2942 <td>
2943 ** maybe more following? **
2944
2945  
2946 </td>
2947 <td>
2948 <b></b>
2949  
2950 </td>
2951 </tr>
2952 </table>
2953
2954 <h4>
2955 <a name="R0006"></a>RECV
2956 MESSAGE login</h4>
2957 NUMERIC TYPE (hex): 0006
2958 (possibly in response to
2959 <a href="#S0000">login(0000)</a>
2960 )
2961 <p>
2962 </p>
2963 <table border="1" width="100%">
2964 <tr>
2965 <th width="10%">NAME</th>
2966 <th width="10%">TYPE</th>
2967 <th width="15%">DEFAULT</th>
2968 <th>DESCRIPTION</th>
2969 <th width="15%">DEC-GUARD</th>
2970 </tr>
2971 <tr>
2972 <td>result</td>
2973 <td>CONSTANT</td>
2974 <td>"user exists" </td>
2975 <td>
2976 ** maybe more following? **
2977
2978  
2979 </td>
2980 <td>
2981 <b></b>
2982  
2983 </td>
2984 </tr>
2985 </table>
2986
2987 <h4>
2988 <a name="R0008"></a>RECV
2989 MESSAGE userinfo</h4>
2990 NUMERIC TYPE (hex): 0008
2991 (possibly in response to
2992 <a href="#S0007">req_userinfo(0007)</a>
2993 )
2994 <p>
2995 User info.
2996 </p>
2997 <table border="1" width="100%">
2998 <tr>
2999 <th width="10%">NAME</th>
3000 <th width="10%">TYPE</th>
3001 <th width="15%">DEFAULT</th>
3002 <th>DESCRIPTION</th>
3003 <th width="15%">DEC-GUARD</th>
3004 </tr>
3005 <tr>
3006 <td>user</td>
3007 <td>user</td>
3008 <td> </td>
3009 <td>
3010
3011  
3012 </td>
3013 <td>
3014 <b></b>
3015  
3016 </td>
3017 </tr>
3018 <tr>
3019 <td>_unused</td>
3020 <td>U64</td>
3021 <td> </td>
3022 <td>
3023
3024  
3025 </td>
3026 <td>
3027 <b></b>
3028  
3029 </td>
3030 </tr>
3031 <tr>
3032 <td>realname</td>
3033 <td>realname</td>
3034 <td> </td>
3035 <td>
3036
3037  
3038 </td>
3039 <td>
3040 <b></b>
3041  
3042 </td>
3043 </tr>
3044 <tr>
3045 <td>email</td>
3046 <td>email</td>
3047 <td> </td>
3048 <td>
3049
3050  
3051 </td>
3052 <td>
3053 <b></b>
3054  
3055 </td>
3056 </tr>
3057 <tr>
3058 <td>info</td>
3059 <td>userinfo</td>
3060 <td> </td>
3061 <td>
3062
3063  
3064 </td>
3065 <td>
3066 <b></b>
3067  
3068 </td>
3069 </tr>
3070 <tr>
3071 <td>homepage</td>
3072 <td>url</td>
3073 <td> </td>
3074 <td>
3075
3076  
3077 </td>
3078 <td>
3079 <b></b>
3080  
3081 </td>
3082 </tr>
3083 <tr>
3084 <td>regdate</td>
3085 <td>timestamp</td>
3086 <td> </td>
3087 <td>
3088 When the user registered (0 == never registered).
3089
3090  
3091 </td>
3092 <td>
3093 <b></b>
3094  
3095 </td>
3096 </tr>
3097 <tr>
3098 <td>lastlogin</td>
3099 <td>timestamp</td>
3100 <td> </td>
3101 <td>
3102 When the user logged in for the last time.
3103
3104  
3105 </td>
3106 <td>
3107 <b></b>
3108  
3109 </td>
3110 </tr>
3111 </table>
3112
3113 <h4>
3114 <a name="R0018"></a>RECV
3115 MESSAGE login</h4>
3116 NUMERIC TYPE (hex): 0018
3117 (possibly in response to
3118 <a href="#S0000">login(0000)</a>
3119 )
3120 <p>
3121 </p>
3122 <table border="1" width="100%">
3123 <tr>
3124 <th width="10%">NAME</th>
3125 <th width="10%">TYPE</th>
3126 <th width="15%">DEFAULT</th>
3127 <th>DESCRIPTION</th>
3128 <th width="15%">DEC-GUARD</th>
3129 </tr>
3130 <tr>
3131 <td>result</td>
3132 <td>CONSTANT</td>
3133 <td>"login error 18" </td>
3134 <td>
3135 ** maybe more following? **
3136
3137  
3138 </td>
3139 <td>
3140 <b></b>
3141  
3142 </td>
3143 </tr>
3144 </table>
3145
3146 <h4>
3147 <a name="R0022"></a>RECV
3148 MESSAGE login</h4>
3149 NUMERIC TYPE (hex): 0022
3150 (possibly in response to
3151 <a href="#S0000">login(0000)</a>
3152 )
3153 <p>
3154 I was blocked sooo many times for developing this client that it was
3155 easy to figure out. The KGS admins sure need no extra nazi training
3156 :(
3157 </p>
3158 <table border="1" width="100%">
3159 <tr>
3160 <th width="10%">NAME</th>
3161 <th width="10%">TYPE</th>
3162 <th width="15%">DEFAULT</th>
3163 <th>DESCRIPTION</th>
3164 <th width="15%">DEC-GUARD</th>
3165 </tr>
3166 <tr>
3167 <td>reason</td>
3168 <td>STRING</td>
3169 <td> </td>
3170 <td>
3171
3172  
3173 </td>
3174 <td>
3175 <b></b>
3176  
3177 </td>
3178 </tr>
3179 <tr>
3180 <td>result</td>
3181 <td>CONSTANT</td>
3182 <td>"user or ip blocked" </td>
3183 <td>
3184
3185  
3186 </td>
3187 <td>
3188 <b></b>
3189  
3190 </td>
3191 </tr>
3192 </table>
3193
3194 <h4>
3195 <a name="R0013"></a>RECV
3196 MESSAGE msg_chat</h4>
3197 NUMERIC TYPE (hex): 0013<p>
3198 </p>
3199 <table border="1" width="100%">
3200 <tr>
3201 <th width="10%">NAME</th>
3202 <th width="10%">TYPE</th>
3203 <th width="15%">DEFAULT</th>
3204 <th>DESCRIPTION</th>
3205 <th width="15%">DEC-GUARD</th>
3206 </tr>
3207 <tr>
3208 <td>user1</td>
3209 <td>username</td>
3210 <td> </td>
3211 <td>
3212
3213  
3214 </td>
3215 <td>
3216 <b></b>
3217  
3218 </td>
3219 </tr>
3220 <tr>
3221 <td>user2</td>
3222 <td>username</td>
3223 <td> </td>
3224 <td>
3225
3226  
3227 </td>
3228 <td>
3229 <b></b>
3230  
3231 </td>
3232 </tr>
3233 <tr>
3234 <td>message</td>
3235 <td>STRING</td>
3236 <td> </td>
3237 <td>
3238
3239  
3240 </td>
3241 <td>
3242 <b></b>
3243  
3244 </td>
3245 </tr>
3246 </table>
3247
3248 <h4>
3249 <a name="R0015"></a>RECV
3250 MESSAGE stats</h4>
3251 NUMERIC TYPE (hex): 0015
3252 (possibly in response to
3253 <a href="#S0014">req_stats(0014)</a>
3254 )
3255 <p>
3256 </p>
3257 <table border="1" width="100%">
3258 <tr>
3259 <th width="10%">NAME</th>
3260 <th width="10%">TYPE</th>
3261 <th width="15%">DEFAULT</th>
3262 <th>DESCRIPTION</th>
3263 <th width="15%">DEC-GUARD</th>
3264 </tr>
3265 <tr>
3266 <td>ver_major</td>
3267 <td>U16</td>
3268 <td> </td>
3269 <td>
3270
3271  
3272 </td>
3273 <td>
3274 <b></b>
3275  
3276 </td>
3277 </tr>
3278 <tr>
3279 <td>ver_minor</td>
3280 <td>U16</td>
3281 <td> </td>
3282 <td>
3283
3284  
3285 </td>
3286 <td>
3287 <b></b>
3288  
3289 </td>
3290 </tr>
3291 <tr>
3292 <td>ver_micro</td>
3293 <td>U16</td>
3294 <td> </td>
3295 <td>
3296
3297  
3298 </td>
3299 <td>
3300 <b></b>
3301  
3302 </td>
3303 </tr>
3304 <tr>
3305 <td>boot_time</td>
3306 <td>timestamp</td>
3307 <td> </td>
3308 <td>
3309
3310  
3311 </td>
3312 <td>
3313 <b></b>
3314  
3315 </td>
3316 </tr>
3317 <tr>
3318 <td>users_cur</td>
3319 <td>U32</td>
3320 <td> </td>
3321 <td>
3322
3323  
3324 </td>
3325 <td>
3326 <b></b>
3327  
3328 </td>
3329 </tr>
3330 <tr>
3331 <td>users_max</td>
3332 <td>U32</td>
3333 <td> </td>
3334 <td>
3335
3336  
3337 </td>
3338 <td>
3339 <b></b>
3340  
3341 </td>
3342 </tr>
3343 <tr>
3344 <td>users_lim</td>
3345 <td>U32</td>
3346 <td> </td>
3347 <td>
3348
3349  
3350 </td>
3351 <td>
3352 <b></b>
3353  
3354 </td>
3355 </tr>
3356 <tr>
3357 <td>accts_cur</td>
3358 <td>U32</td>
3359 <td> </td>
3360 <td>
3361
3362  
3363 </td>
3364 <td>
3365 <b></b>
3366  
3367 </td>
3368 </tr>
3369 <tr>
3370 <td>accts_max</td>
3371 <td>U32</td>
3372 <td> </td>
3373 <td>
3374
3375  
3376 </td>
3377 <td>
3378 <b></b>
3379  
3380 </td>
3381 </tr>
3382 <tr>
3383 <td>unknown1</td>
3384 <td>U32</td>
3385 <td> </td>
3386 <td>
3387
3388  
3389 </td>
3390 <td>
3391 <b></b>
3392  
3393 </td>
3394 </tr>
3395 <tr>
3396 <td>work_max</td>
3397 <td>U32</td>
3398 <td> </td>
3399 <td>
3400
3401  
3402 </td>
3403 <td>
3404 <b></b>
3405  
3406 </td>
3407 </tr>
3408 <tr>
3409 <td>rooms_cur</td>
3410 <td>U32</td>
3411 <td> </td>
3412 <td>
3413
3414  
3415 </td>
3416 <td>
3417 <b></b>
3418  
3419 </td>
3420 </tr>
3421 <tr>
3422 <td>rooms_max</td>
3423 <td>U32</td>
3424 <td> </td>
3425 <td>
3426
3427  
3428 </td>
3429 <td>
3430 <b></b>
3431  
3432 </td>
3433 </tr>
3434 <tr>
3435 <td>rooms_lim</td>
3436 <td>U32</td>
3437 <td> </td>
3438 <td>
3439
3440  
3441 </td>
3442 <td>
3443 <b></b>
3444  
3445 </td>
3446 </tr>
3447 <tr>
3448 <td>games_cur</td>
3449 <td>U32</td>
3450 <td> </td>
3451 <td>
3452
3453  
3454 </td>
3455 <td>
3456 <b></b>
3457  
3458 </td>
3459 </tr>
3460 <tr>
3461 <td>games_max</td>
3462 <td>U32</td>
3463 <td> </td>
3464 <td>
3465
3466  
3467 </td>
3468 <td>
3469 <b></b>
3470  
3471 </td>
3472 </tr>
3473 <tr>
3474 <td>games_lim</td>
3475 <td>U32</td>
3476 <td> </td>
3477 <td>
3478
3479  
3480 </td>
3481 <td>
3482 <b></b>
3483  
3484 </td>
3485 </tr>
3486 <tr>
3487 <td>results_cur</td>
3488 <td>U32</td>
3489 <td> </td>
3490 <td>
3491
3492  
3493 </td>
3494 <td>
3495 <b></b>
3496  
3497 </td>
3498 </tr>
3499 <tr>
3500 <td>results_max</td>
3501 <td>U32</td>
3502 <td> </td>
3503 <td>
3504
3505  
3506 </td>
3507 <td>
3508 <b></b>
3509  
3510 </td>
3511 </tr>
3512 <tr>
3513 <td>unknown2</td>
3514 <td>U32</td>
3515 <td> </td>
3516 <td>
3517
3518  
3519 </td>
3520 <td>
3521 <b></b>
3522  
3523 </td>
3524 </tr>
3525 <tr>
3526 <td>params_cur</td>
3527 <td>U32</td>
3528 <td> </td>
3529 <td>
3530
3531  
3532 </td>
3533 <td>
3534 <b></b>
3535  
3536 </td>
3537 </tr>
3538 <tr>
3539 <td>params_max</td>
3540 <td>U32</td>
3541 <td> </td>
3542 <td>
3543
3544  
3545 </td>
3546 <td>
3547 <b></b>
3548  
3549 </td>
3550 </tr>
3551 <tr>
3552 <td>bytes_in</td>
3553 <td>U64</td>
3554 <td> </td>
3555 <td>
3556
3557  
3558 </td>
3559 <td>
3560 <b></b>
3561  
3562 </td>
3563 </tr>
3564 <tr>
3565 <td>packets_in</td>
3566 <td>U64</td>
3567 <td> </td>
3568 <td>
3569
3570  
3571 </td>
3572 <td>
3573 <b></b>
3574  
3575 </td>
3576 </tr>
3577 <tr>
3578 <td>bytes_out</td>
3579 <td>U64</td>
3580 <td> </td>
3581 <td>
3582
3583  
3584 </td>
3585 <td>
3586 <b></b>
3587  
3588 </td>
3589 </tr>
3590 <tr>
3591 <td>packets_out</td>
3592 <td>U64</td>
3593 <td> </td>
3594 <td>
3595
3596  
3597 </td>
3598 <td>
3599 <b></b>
3600  
3601 </td>
3602 </tr>
3603 </table>
3604
3605 <h4>
3606 <a name="R0016"></a>RECV
3607 MESSAGE idle_warn</h4>
3608 NUMERIC TYPE (hex): 0016<p>
3609 idle warning, autologout soon (10 minutes...)
3610 </p>
3611 <table border="1" width="100%">
3612 <tr>
3613 <th width="10%">NAME</th>
3614 <th width="10%">TYPE</th>
3615 <th width="15%">DEFAULT</th>
3616 <th>DESCRIPTION</th>
3617 <th width="15%">DEC-GUARD</th>
3618 </tr>
3619 </table>
3620
3621 <h4>
3622 <a name="R001b"></a>RECV
3623 MESSAGE timewarning_default</h4>
3624 NUMERIC TYPE (hex): 001b
3625 (possibly in response to
3626 <a href="#S0000">login(0000)</a>
3627 )
3628 <p>
3629 WILD guess
3630 </p>
3631 <table border="1" width="100%">
3632 <tr>
3633 <th width="10%">NAME</th>
3634 <th width="10%">TYPE</th>
3635 <th width="15%">DEFAULT</th>
3636 <th>DESCRIPTION</th>
3637 <th width="15%">DEC-GUARD</th>
3638 </tr>
3639 <tr>
3640 <td>channel</td>
3641 <td>U16</td>
3642 <td> </td>
3643 <td>
3644
3645  
3646 </td>
3647 <td>
3648 <b></b>
3649  
3650 </td>
3651 </tr>
3652 <tr>
3653 <td>time</td>
3654 <td>U16</td>
3655 <td> </td>
3656 <td>
3657
3658  
3659 </td>
3660 <td>
3661 <b></b>
3662  
3663 </td>
3664 </tr>
3665 </table>
3666
3667 <h4>
3668 <a name="R001c"></a>RECV
3669 MESSAGE idle_err</h4>
3670 NUMERIC TYPE (hex): 001c<p>
3671 autologout
3672 </p>
3673 <table border="1" width="100%">
3674 <tr>
3675 <th width="10%">NAME</th>
3676 <th width="10%">TYPE</th>
3677 <th width="15%">DEFAULT</th>
3678 <th>DESCRIPTION</th>
3679 <th width="15%">DEC-GUARD</th>
3680 </tr>
3681 </table>
3682
3683 <h4>
3684 <a name="R001d"></a>RECV
3685 MESSAGE ping</h4>
3686 NUMERIC TYPE (hex): 001d<p>
3687 Sent by the server regularly, but not answering them
3688 isn't valid. Strange form of keepalive?
3689 </p>
3690 <table border="1" width="100%">
3691 <tr>
3692 <th width="10%">NAME</th>
3693 <th width="10%">TYPE</th>
3694 <th width="15%">DEFAULT</th>
3695 <th>DESCRIPTION</th>
3696 <th width="15%">DEC-GUARD</th>
3697 </tr>
3698 </table>
3699
3700 <h4>
3701 <a name="R001e"></a>RECV
3702 MESSAGE usergraph</h4>
3703 NUMERIC TYPE (hex): 001e
3704 (possibly in response to
3705 <a href="#S001e">req_usergraph(001e)</a>
3706 )
3707 <p>
3708 User graph data.
3709 </p>
3710 <table border="1" width="100%">
3711 <tr>
3712 <th width="10%">NAME</th>
3713 <th width="10%">TYPE</th>
3714 <th width="15%">DEFAULT</th>
3715 <th>DESCRIPTION</th>
3716 <th width="15%">DEC-GUARD</th>
3717 </tr>
3718 <tr>
3719 <td>data</td>
3720 <td>I16</td>
3721 <td> </td>
3722 <td>
3723 If empty, no graph is available. The unit seems to
3724 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
3725 There is probably one entry per day, the newest one last.
3726
3727  
3728 </td>
3729 <td>
3730 <b></b>
3731  
3732 </td>
3733 </tr>
3734 </table>
3735
3736 <h4>
3737 <a name="R001f"></a>RECV
3738 MESSAGE memo</h4>
3739 NUMERIC TYPE (hex): 001f
3740 (possibly in response to
3741 <a href="#S001f">fetch_memos(001f)</a>
3742 )
3743 <p>
3744 Unclear. "Leave Message"?
3745 6 strings following.
3746 </p>
3747 <table border="1" width="100%">
3748 <tr>
3749 <th width="10%">NAME</th>
3750 <th width="10%">TYPE</th>
3751 <th width="15%">DEFAULT</th>
3752 <th>DESCRIPTION</th>
3753 <th width="15%">DEC-GUARD</th>
3754 </tr>
3755 <tr>
3756 <td>s1</td>
3757 <td>STRING</td>
3758 <td> </td>
3759 <td>
3760
3761  
3762 </td>
3763 <td>
3764 <b></b>
3765  
3766 </td>
3767 </tr>
3768 <tr>
3769 <td>s2</td>
3770 <td>STRING</td>
3771 <td> </td>
3772 <td>
3773
3774  
3775 </td>
3776 <td>
3777 <b></b>
3778  
3779 </td>
3780 </tr>
3781 <tr>
3782 <td>s3</td>
3783 <td>STRING</td>
3784 <td> </td>
3785 <td>
3786
3787  
3788 </td>
3789 <td>
3790 <b></b>
3791  
3792 </td>
3793 </tr>
3794 <tr>
3795 <td>s4</td>
3796 <td>STRING</td>
3797 <td> </td>
3798 <td>
3799
3800  
3801 </td>
3802 <td>
3803 <b></b>
3804  
3805 </td>
3806 </tr>
3807 <tr>
3808 <td>s5</td>
3809 <td>STRING</td>
3810 <td> </td>
3811 <td>
3812
3813  
3814 </td>
3815 <td>
3816 <b></b>
3817  
3818 </td>
3819 </tr>
3820 <tr>
3821 <td>s6</td>
3822 <td>STRING</td>
3823 <td> </td>
3824 <td>
3825
3826  
3827 </td>
3828 <td>
3829 <b></b>
3830  
3831 </td>
3832 </tr>
3833 </table>
3834
3835 <h4>
3836 <a name="R0021"></a>RECV
3837 MESSAGE userpic</h4>
3838 NUMERIC TYPE (hex): 0021
3839 (possibly in response to
3840 <a href="#S0021">req_pic(0021)</a>
3841 )
3842 <p>
3843 </p>
3844 <table border="1" width="100%">
3845 <tr>
3846 <th width="10%">NAME</th>
3847 <th width="10%">TYPE</th>
3848 <th width="15%">DEFAULT</th>
3849 <th>DESCRIPTION</th>
3850 <th width="15%">DEC-GUARD</th>
3851 </tr>
3852 <tr>
3853 <td>name</td>
3854 <td>username</td>
3855 <td> </td>
3856 <td>
3857 Reply to pic_req, contains an image in jpeg format.
3858
3859  
3860 </td>
3861 <td>
3862 <b></b>
3863  
3864 </td>
3865 </tr>
3866 <tr>
3867 <td>data</td>
3868 <td>DATA</td>
3869 <td> </td>
3870 <td>
3871
3872  
3873 </td>
3874 <td>
3875 <b></b>
3876  
3877 </td>
3878 </tr>
3879 </table>
3880
3881 <h4>
3882 <a name="R0100"></a>RECV
3883 MESSAGE gnotice</h4>
3884 NUMERIC TYPE (hex): 0100
3885 (possibly in response to
3886 <a href="#S0100">gnotice(0100)</a>
3887 )
3888 <p>
3889 global notice, sent to everybody
3890 </p>
3891 <table border="1" width="100%">
3892 <tr>
3893 <th width="10%">NAME</th>
3894 <th width="10%">TYPE</th>
3895 <th width="15%">DEFAULT</th>
3896 <th>DESCRIPTION</th>
3897 <th width="15%">DEC-GUARD</th>
3898 </tr>
3899 <tr>
3900 <td>notice</td>
3901 <td>STRING</td>
3902 <td> </td>
3903 <td>
3904
3905  
3906 </td>
3907 <td>
3908 <b></b>
3909  
3910 </td>
3911 </tr>
3912 </table>
3913
3914 <h4>
3915 <a name="R0202"></a>RECV
3916 MESSAGE upd_user</h4>
3917 NUMERIC TYPE (hex): 0202<p>
3918 # maybe soe notify? Totally unclear.
3919 # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
3920 </p>
3921 <table border="1" width="100%">
3922 <tr>
3923 <th width="10%">NAME</th>
3924 <th width="10%">TYPE</th>
3925 <th width="15%">DEFAULT</th>
3926 <th>DESCRIPTION</th>
3927 <th width="15%">DEC-GUARD</th>
3928 </tr>
3929 <tr>
3930 <td>location</td>
3931 <td>U32</td>
3932 <td> </td>
3933 <td>
3934
3935  
3936 </td>
3937 <td>
3938 <b></b>
3939  
3940 </td>
3941 </tr>
3942 <tr>
3943 <td>user</td>
3944 <td>user</td>
3945 <td> </td>
3946 <td>
3947
3948  
3949 </td>
3950 <td>
3951 <b></b>
3952  
3953 </td>
3954 </tr>
3955 <tr>
3956 <td>lotsofinfo</td>
3957 <td>DATA</td>
3958 <td> </td>
3959 <td>
3960
3961  
3962 </td>
3963 <td>
3964 <b>location</b> == 2
3965  
3966 </td>
3967 </tr>
3968 </table>
3969
3970 <h4>
3971 <a name="R0310"></a>RECV
3972 MESSAGE priv_room</h4>
3973 NUMERIC TYPE (hex): 0310<p>
3974 "permission denied" when joining a room
3975 </p>
3976 <table border="1" width="100%">
3977 <tr>
3978 <th width="10%">NAME</th>
3979 <th width="10%">TYPE</th>
3980 <th width="15%">DEFAULT</th>
3981 <th>DESCRIPTION</th>
3982 <th width="15%">DEC-GUARD</th>
3983 </tr>
3984 <tr>
3985 <td>name</td>
3986 <td>STRING</td>
3987 <td> </td>
3988 <td>
3989
3990  
3991 </td>
3992 <td>
3993 <b></b>
3994  
3995 </td>
3996 </tr>
3997 </table>
3998
3999 <h4>
4000 <a name="R0318"></a>RECV
4001 MESSAGE upd_rooms</h4>
4002 NUMERIC TYPE (hex): 0318
4003 (possibly in response to
4004 <a href="#S0318">list_rooms(0318)</a>
4005 )
4006 <p>
4007 </p>
4008 <table border="1" width="100%">
4009 <tr>
4010 <th width="10%">NAME</th>
4011 <th width="10%">TYPE</th>
4012 <th width="15%">DEFAULT</th>
4013 <th>DESCRIPTION</th>
4014 <th width="15%">DEC-GUARD</th>
4015 </tr>
4016 <tr>
4017 <td>rooms</td>
4018 <td>room</td>
4019 <td> </td>
4020 <td>
4021
4022  
4023 </td>
4024 <td>
4025 <b></b>
4026  
4027 </td>
4028 </tr>
4029 </table>
4030
4031 <h4>
4032 <a name="R0411"></a>RECV
4033 MESSAGE chal_defaults</h4>
4034 NUMERIC TYPE (hex): 0411
4035 (possibly in response to
4036 <a href="#S0000">login(0000)</a>
4037 )
4038 <p>
4039 </p>
4040 <table border="1" width="100%">
4041 <tr>
4042 <th width="10%">NAME</th>
4043 <th width="10%">TYPE</th>
4044 <th width="15%">DEFAULT</th>
4045 <th>DESCRIPTION</th>
4046 <th width="15%">DEC-GUARD</th>
4047 </tr>
4048 <tr>
4049 <td>channel</td>
4050 <td>U16</td>
4051 <td> </td>
4052 <td>
4053
4054  
4055 </td>
4056 <td>
4057 <b></b>
4058  
4059 </td>
4060 </tr>
4061 <tr>
4062 <td>defaults</td>
4063 <td>challenge_defaults</td>
4064 <td> </td>
4065 <td>
4066
4067  
4068 </td>
4069 <td>
4070 <b></b>
4071  
4072 </td>
4073 </tr>
4074 </table>
4075
4076 <h4>
4077 <a name="S0412"></a>SEND
4078 MESSAGE rej_game</h4>
4079 NUMERIC TYPE (hex): 0412<p>
4080 Unable to create challenge. The channel might be optional.
4081 </p>
4082 <table border="1" width="100%">
4083 <tr>
4084 <th width="10%">NAME</th>
4085 <th width="10%">TYPE</th>
4086 <th width="15%">DEFAULT</th>
4087 <th>DESCRIPTION</th>
4088 <th width="15%">DEC-GUARD</th>
4089 </tr>
4090 <tr>
4091 <td>channel</td>
4092 <td>U16</td>
4093 <td> </td>
4094 <td>
4095
4096  
4097 </td>
4098 <td>
4099 <b></b>
4100  
4101 </td>
4102 </tr>
4103 </table>
4104
4105 <h4>
4106 <a name="R0414"></a>RECV
4107 MESSAGE game_record</h4>
4108 NUMERIC TYPE (hex): 0414
4109 (possibly in response to
4110 <a href="#S0413">req_game_record(0413)</a>
4111 )
4112 <p>
4113 The users game record.
4114 </p>
4115 <table border="1" width="100%">
4116 <tr>
4117 <th width="10%">NAME</th>
4118 <th width="10%">TYPE</th>
4119 <th width="15%">DEFAULT</th>
4120 <th>DESCRIPTION</th>
4121 <th width="15%">DEC-GUARD</th>
4122 </tr>
4123 <tr>
4124 <td>name</td>
4125 <td>username</td>
4126 <td> </td>
4127 <td>
4128
4129  
4130 </td>
4131 <td>
4132 <b></b>
4133  
4134 </td>
4135 </tr>
4136 <tr>
4137 <td>more</td>
4138 <td>flag</td>
4139 <td> </td>
4140 <td>
4141 Wether more games are available (must be requested manually)
4142
4143  
4144 </td>
4145 <td>
4146 <b></b>
4147  
4148 </td>
4149 </tr>
4150 <tr>
4151 <td>games</td>
4152 <td>game_record</td>
4153 <td> </td>
4154 <td>
4155
4156  
4157 </td>
4158 <td>
4159 <b></b>
4160  
4161 </td>
4162 </tr>
4163 </table>
4164
4165 <h4>
4166 <a name="R041c"></a>RECV
4167 MESSAGE upd_game2</h4>
4168 NUMERIC TYPE (hex): 041c<p>
4169 Unclear.
4170 </p>
4171 <table border="1" width="100%">
4172 <tr>
4173 <th width="10%">NAME</th>
4174 <th width="10%">TYPE</th>
4175 <th width="15%">DEFAULT</th>
4176 <th>DESCRIPTION</th>
4177 <th width="15%">DEC-GUARD</th>
4178 </tr>
4179 <tr>
4180 <td>channel_junk</td>
4181 <td>U16</td>
4182 <td> </td>
4183 <td>
4184
4185  
4186 </td>
4187 <td>
4188 <b></b>
4189  
4190 </td>
4191 </tr>
4192 <tr>
4193 <td>game</td>
4194 <td>game</td>
4195 <td> </td>
4196 <td>
4197
4198  
4199 </td>
4200 <td>
4201 <b></b>
4202  
4203 </td>
4204 </tr>
4205 </table>
4206
4207 <h3>Room messages</h3>
4208
4209 <p>Not all room messages are for rooms only, and rooms need to parse
4210 not only these messages. Orthogonality, what for?</p>
4211
4212 <h4>
4213 <a name="R4300"></a>RECV
4214 MESSAGE join_room</h4>
4215 NUMERIC TYPE (hex): 4300
4216 (possibly in response to
4217 <a href="#S4300">join_room(4300)</a>
4218 )
4219 <p>
4220 </p>
4221 <table border="1" width="100%">
4222 <tr>
4223 <th width="10%">NAME</th>
4224 <th width="10%">TYPE</th>
4225 <th width="15%">DEFAULT</th>
4226 <th>DESCRIPTION</th>
4227 <th width="15%">DEC-GUARD</th>
4228 </tr>
4229 <tr>
4230 <td>channel</td>
4231 <td>U16</td>
4232 <td> </td>
4233 <td>
4234
4235  
4236 </td>
4237 <td>
4238 <b></b>
4239  
4240 </td>
4241 </tr>
4242 <tr>
4243 <td>users</td>
4244 <td>user</td>
4245 <td> </td>
4246 <td>
4247
4248  
4249 </td>
4250 <td>
4251 <b></b>
4252  
4253 </td>
4254 </tr>
4255 </table>
4256
4257 <h4>
4258 <a name="R4301"></a>RECV
4259 MESSAGE msg_room</h4>
4260 NUMERIC TYPE (hex): 4301<p>
4261 </p>
4262 <table border="1" width="100%">
4263 <tr>
4264 <th width="10%">NAME</th>
4265 <th width="10%">TYPE</th>
4266 <th width="15%">DEFAULT</th>
4267 <th>DESCRIPTION</th>
4268 <th width="15%">DEC-GUARD</th>
4269 </tr>
4270 <tr>
4271 <td>channel</td>
4272 <td>U16</td>
4273 <td> </td>
4274 <td>
4275
4276  
4277 </td>
4278 <td>
4279 <b></b>
4280  
4281 </td>
4282 </tr>
4283 <tr>
4284 <td>name</td>
4285 <td>username</td>
4286 <td> </td>
4287 <td>
4288
4289  
4290 </td>
4291 <td>
4292 <b></b>
4293  
4294 </td>
4295 </tr>
4296 <tr>
4297 <td>message</td>
4298 <td>STRING</td>
4299 <td> </td>
4300 <td>
4301
4302  
4303 </td>
4304 <td>
4305 <b></b>
4306  
4307 </td>
4308 </tr>
4309 </table>
4310
4311 <h4>
4312 <a name="R4302"></a>RECV
4313 MESSAGE part_room</h4>
4314 NUMERIC TYPE (hex): 4302<p>
4315 </p>
4316 <table border="1" width="100%">
4317 <tr>
4318 <th width="10%">NAME</th>
4319 <th width="10%">TYPE</th>
4320 <th width="15%">DEFAULT</th>
4321 <th>DESCRIPTION</th>
4322 <th width="15%">DEC-GUARD</th>
4323 </tr>
4324 <tr>
4325 <td>channel</td>
4326 <td>U16</td>
4327 <td> </td>
4328 <td>
4329
4330  
4331 </td>
4332 <td>
4333 <b></b>
4334  
4335 </td>
4336 </tr>
4337 <tr>
4338 <td>user</td>
4339 <td>user</td>
4340 <td> </td>
4341 <td>
4342
4343  
4344 </td>
4345 <td>
4346 <b></b>
4347  
4348 </td>
4349 </tr>
4350 </table>
4351
4352 <h4>
4353 <a name="R4303"></a>RECV
4354 MESSAGE del_room</h4>
4355 NUMERIC TYPE (hex): 4303<p>
4356 </p>
4357 <table border="1" width="100%">
4358 <tr>
4359 <th width="10%">NAME</th>
4360 <th width="10%">TYPE</th>
4361 <th width="15%">DEFAULT</th>
4362 <th>DESCRIPTION</th>
4363 <th width="15%">DEC-GUARD</th>
4364 </tr>
4365 <tr>
4366 <td>channel</td>
4367 <td>U16</td>
4368 <td> </td>
4369 <td>
4370
4371  
4372 </td>
4373 <td>
4374 <b></b>
4375  
4376 </td>
4377 </tr>
4378 </table>
4379
4380 <h4>
4381 <a name="R4304"></a>RECV
4382 MESSAGE upd_games</h4>
4383 NUMERIC TYPE (hex): 4304<p>
4384 </p>
4385 <table border="1" width="100%">
4386 <tr>
4387 <th width="10%">NAME</th>
4388 <th width="10%">TYPE</th>
4389 <th width="15%">DEFAULT</th>
4390 <th>DESCRIPTION</th>
4391 <th width="15%">DEC-GUARD</th>
4392 </tr>
4393 <tr>
4394 <td>channel</td>
4395 <td>U16</td>
4396 <td> </td>
4397 <td>
4398
4399  
4400 </td>
4401 <td>
4402 <b></b>
4403  
4404 </td>
4405 </tr>
4406 <tr>
4407 <td>games</td>
4408 <td>game</td>
4409 <td> </td>
4410 <td>
4411
4412  
4413 </td>
4414 <td>
4415 <b></b>
4416  
4417 </td>
4418 </tr>
4419 </table>
4420
4421 <h4>
4422 <a name="R4319"></a>RECV
4423 MESSAGE desc_room</h4>
4424 NUMERIC TYPE (hex): 4319<p>
4425 </p>
4426 <table border="1" width="100%">
4427 <tr>
4428 <th width="10%">NAME</th>
4429 <th width="10%">TYPE</th>
4430 <th width="15%">DEFAULT</th>
4431 <th>DESCRIPTION</th>
4432 <th width="15%">DEC-GUARD</th>
4433 </tr>
4434 <tr>
4435 <td>channel</td>
4436 <td>U16</td>
4437 <td> </td>
4438 <td>
4439
4440  
4441 </td>
4442 <td>
4443 <b></b>
4444  
4445 </td>
4446 </tr>
4447 <tr>
4448 <td>owner</td>
4449 <td>username</td>
4450 <td> </td>
4451 <td>
4452
4453  
4454 </td>
4455 <td>
4456 <b></b>
4457  
4458 </td>
4459 </tr>
4460 <tr>
4461 <td>description</td>
4462 <td>STRING</td>
4463 <td> </td>
4464 <td>
4465
4466  
4467 </td>
4468 <td>
4469 <b></b>
4470  
4471 </td>
4472 </tr>
4473 </table>
4474
4475 <h3>Game messages</h3>
4476
4477 <h4>
4478 <a name="R4400"></a>RECV
4479 MESSAGE upd_chal</h4>
4480 NUMERIC TYPE (hex): 4400<p>
4481 Unclear.
4482 </p>
4483 <table border="1" width="100%">
4484 <tr>
4485 <th width="10%">NAME</th>
4486 <th width="10%">TYPE</th>
4487 <th width="15%">DEFAULT</th>
4488 <th>DESCRIPTION</th>
4489 <th width="15%">DEC-GUARD</th>
4490 </tr>
4491 <tr>
4492 <td>channel</td>
4493 <td>U16</td>
4494 <td> </td>
4495 <td>
4496
4497  
4498 </td>
4499 <td>
4500 <b></b>
4501  
4502 </td>
4503 </tr>
4504 <tr>
4505 <td>challenge</td>
4506 <td>challenge</td>
4507 <td> </td>
4508 <td>
4509
4510  
4511 </td>
4512 <td>
4513 <b></b>
4514  
4515 </td>
4516 </tr>
4517 </table>
4518
4519 <h4>
4520 <a name="R4401"></a>RECV
4521 MESSAGE upd_game</h4>
4522 NUMERIC TYPE (hex): 4401<p>
4523 </p>
4524 <table border="1" width="100%">
4525 <tr>
4526 <th width="10%">NAME</th>
4527 <th width="10%">TYPE</th>
4528 <th width="15%">DEFAULT</th>
4529 <th>DESCRIPTION</th>
4530 <th width="15%">DEC-GUARD</th>
4531 </tr>
4532 <tr>
4533 <td>channel</td>
4534 <td>U16</td>
4535 <td> </td>
4536 <td>
4537
4538  
4539 </td>
4540 <td>
4541 <b></b>
4542  
4543 </td>
4544 </tr>
4545 <tr>
4546 <td>game</td>
4547 <td>game</td>
4548 <td> </td>
4549 <td>
4550
4551  
4552 </td>
4553 <td>
4554 <b></b>
4555  
4556 </td>
4557 </tr>
4558 </table>
4559
4560 <h4>
4561 <a name="R4402"></a>RECV
4562 MESSAGE del_game</h4>
4563 NUMERIC TYPE (hex): 4402<p>
4564 </p>
4565 <table border="1" width="100%">
4566 <tr>
4567 <th width="10%">NAME</th>
4568 <th width="10%">TYPE</th>
4569 <th width="15%">DEFAULT</th>
4570 <th>DESCRIPTION</th>
4571 <th width="15%">DEC-GUARD</th>
4572 </tr>
4573 <tr>
4574 <td>channel</td>
4575 <td>U16</td>
4576 <td> </td>
4577 <td>
4578
4579  
4580 </td>
4581 <td>
4582 <b></b>
4583  
4584 </td>
4585 </tr>
4586 </table>
4587
4588 <h4>
4589 <a name="R4403"></a>RECV
4590 MESSAGE upd_observers</h4>
4591 NUMERIC TYPE (hex): 4403<p>
4592 </p>
4593 <table border="1" width="100%">
4594 <tr>
4595 <th width="10%">NAME</th>
4596 <th width="10%">TYPE</th>
4597 <th width="15%">DEFAULT</th>
4598 <th>DESCRIPTION</th>
4599 <th width="15%">DEC-GUARD</th>
4600 </tr>
4601 <tr>
4602 <td>channel</td>
4603 <td>U16</td>
4604 <td> </td>
4605 <td>
4606
4607  
4608 </td>
4609 <td>
4610 <b></b>
4611  
4612 </td>
4613 </tr>
4614 <tr>
4615 <td>users</td>
4616 <td>user</td>
4617 <td> </td>
4618 <td>
4619
4620  
4621 </td>
4622 <td>
4623 <b></b>
4624  
4625 </td>
4626 </tr>
4627 </table>
4628
4629 <h4>
4630 <a name="R4404"></a>RECV
4631 MESSAGE del_observer</h4>
4632 NUMERIC TYPE (hex): 4404<p>
4633 </p>
4634 <table border="1" width="100%">
4635 <tr>
4636 <th width="10%">NAME</th>
4637 <th width="10%">TYPE</th>
4638 <th width="15%">DEFAULT</th>
4639 <th>DESCRIPTION</th>
4640 <th width="15%">DEC-GUARD</th>
4641 </tr>
4642 <tr>
4643 <td>channel</td>
4644 <td>U16</td>
4645 <td> </td>
4646 <td>
4647
4648  
4649 </td>
4650 <td>
4651 <b></b>
4652  
4653 </td>
4654 </tr>
4655 <tr>
4656 <td>name</td>
4657 <td>username</td>
4658 <td> </td>
4659 <td>
4660
4661  
4662 </td>
4663 <td>
4664 <b></b>
4665  
4666 </td>
4667 </tr>
4668 </table>
4669
4670 <h4>
4671 <a name="R4405"></a>RECV
4672 MESSAGE set_tree</h4>
4673 NUMERIC TYPE (hex): 4405<p>
4674 </p>
4675 <table border="1" width="100%">
4676 <tr>
4677 <th width="10%">NAME</th>
4678 <th width="10%">TYPE</th>
4679 <th width="15%">DEFAULT</th>
4680 <th>DESCRIPTION</th>
4681 <th width="15%">DEC-GUARD</th>
4682 </tr>
4683 <tr>
4684 <td>channel</td>
4685 <td>U16</td>
4686 <td> </td>
4687 <td>
4688
4689  
4690 </td>
4691 <td>
4692 <b></b>
4693  
4694 </td>
4695 </tr>
4696 <tr>
4697 <td>tree</td>
4698 <td>TREE</td>
4699 <td> </td>
4700 <td>
4701
4702  
4703 </td>
4704 <td>
4705 <b></b>
4706  
4707 </td>
4708 </tr>
4709 </table>
4710
4711 <h4>
4712 <a name="R4406"></a>RECV
4713 MESSAGE upd_tree</h4>
4714 NUMERIC TYPE (hex): 4406<p>
4715 </p>
4716 <table border="1" width="100%">
4717 <tr>
4718 <th width="10%">NAME</th>
4719 <th width="10%">TYPE</th>
4720 <th width="15%">DEFAULT</th>
4721 <th>DESCRIPTION</th>
4722 <th width="15%">DEC-GUARD</th>
4723 </tr>
4724 <tr>
4725 <td>channel</td>
4726 <td>U16</td>
4727 <td> </td>
4728 <td>
4729
4730  
4731 </td>
4732 <td>
4733 <b></b>
4734  
4735 </td>
4736 </tr>
4737 <tr>
4738 <td>tree</td>
4739 <td>TREE</td>
4740 <td> </td>
4741 <td>
4742
4743  
4744 </td>
4745 <td>
4746 <b></b>
4747  
4748 </td>
4749 </tr>
4750 </table>
4751
4752 <h4>
4753 <a name="R4407"></a>RECV
4754 MESSAGE set_node</h4>
4755 NUMERIC TYPE (hex): 4407<p>
4756 </p>
4757 <table border="1" width="100%">
4758 <tr>
4759 <th width="10%">NAME</th>
4760 <th width="10%">TYPE</th>
4761 <th width="15%">DEFAULT</th>
4762 <th>DESCRIPTION</th>
4763 <th width="15%">DEC-GUARD</th>
4764 </tr>
4765 <tr>
4766 <td>channel</td>
4767 <td>U16</td>
4768 <td> </td>
4769 <td>
4770
4771  
4772 </td>
4773 <td>
4774 <b></b>
4775  
4776 </td>
4777 </tr>
4778 <tr>
4779 <td>node</td>
4780 <td>U32</td>
4781 <td> </td>
4782 <td>
4783
4784  
4785 </td>
4786 <td>
4787 <b></b>
4788  
4789 </td>
4790 </tr>
4791 </table>
4792
4793 <h4>
4794 <a name="R4409"></a>RECV
4795 MESSAGE superko</h4>
4796 NUMERIC TYPE (hex): 4409<p>
4797 Superko-warning.
4798 </p>
4799 <table border="1" width="100%">
4800 <tr>
4801 <th width="10%">NAME</th>
4802 <th width="10%">TYPE</th>
4803 <th width="15%">DEFAULT</th>
4804 <th>DESCRIPTION</th>
4805 <th width="15%">DEC-GUARD</th>
4806 </tr>
4807 <tr>
4808 <td>channel</td>
4809 <td>U16</td>
4810 <td> </td>
4811 <td>
4812
4813  
4814 </td>
4815 <td>
4816 <b></b>
4817  
4818 </td>
4819 </tr>
4820 </table>
4821
4822 <h4>
4823 <a name="R440b"></a>RECV
4824 MESSAGE final_result</h4>
4825 NUMERIC TYPE (hex): 440b<p>
4826 </p>
4827 <table border="1" width="100%">
4828 <tr>
4829 <th width="10%">NAME</th>
4830 <th width="10%">TYPE</th>
4831 <th width="15%">DEFAULT</th>
4832 <th>DESCRIPTION</th>
4833 <th width="15%">DEC-GUARD</th>
4834 </tr>
4835 <tr>
4836 <td>channel</td>
4837 <td>U16</td>
4838 <td> </td>
4839 <td>
4840
4841  
4842 </td>
4843 <td>
4844 <b></b>
4845  
4846 </td>
4847 </tr>
4848 <tr>
4849 <td>blackscore</td>
4850 <td>scorevalues</td>
4851 <td> </td>
4852 <td>
4853
4854  
4855 </td>
4856 <td>
4857 <b></b>
4858  
4859 </td>
4860 </tr>
4861 <tr>
4862 <td>whitescore</td>
4863 <td>scorevalues</td>
4864 <td> </td>
4865 <td>
4866
4867  
4868 </td>
4869 <td>
4870 <b></b>
4871  
4872 </td>
4873 </tr>
4874 </table>
4875
4876 <h4>
4877 <a name="R440e"></a>RECV
4878 MESSAGE req_undo</h4>
4879 NUMERIC TYPE (hex): 440e<p>
4880 </p>
4881 <table border="1" width="100%">
4882 <tr>
4883 <th width="10%">NAME</th>
4884 <th width="10%">TYPE</th>
4885 <th width="15%">DEFAULT</th>
4886 <th>DESCRIPTION</th>
4887 <th width="15%">DEC-GUARD</th>
4888 </tr>
4889 <tr>
4890 <td>channel</td>
4891 <td>U16</td>
4892 <td> </td>
4893 <td>
4894
4895
4896  
4897 </td>
4898 <td>
4899 <b></b>
4900  
4901 </td>
4902 </tr>
4903 </table>
4904
4905 <h4>
4906 <a name="R4410"></a>RECV
4907 MESSAGE resign_game</h4>
4908 NUMERIC TYPE (hex): 4410<p>
4909 </p>
4910 <table border="1" width="100%">
4911 <tr>
4912 <th width="10%">NAME</th>
4913 <th width="10%">TYPE</th>
4914 <th width="15%">DEFAULT</th>
4915 <th>DESCRIPTION</th>
4916 <th width="15%">DEC-GUARD</th>
4917 </tr>
4918 <tr>
4919 <td>channel</td>
4920 <td>U16</td>
4921 <td> </td>
4922 <td>
4923
4924  
4925 </td>
4926 <td>
4927 <b></b>
4928  
4929 </td>
4930 </tr>
4931 <tr>
4932 <td>player</td>
4933 <td>U8</td>
4934 <td> </td>
4935 <td>
4936
4937  
4938 </td>
4939 <td>
4940 <b></b>
4941  
4942 </td>
4943 </tr>
4944 </table>
4945
4946 <h4>
4947 <a name="R441a"></a>RECV
4948 MESSAGE set_teacher</h4>
4949 NUMERIC TYPE (hex): 441a<p>
4950 </p>
4951 <table border="1" width="100%">
4952 <tr>
4953 <th width="10%">NAME</th>
4954 <th width="10%">TYPE</th>
4955 <th width="15%">DEFAULT</th>
4956 <th>DESCRIPTION</th>
4957 <th width="15%">DEC-GUARD</th>
4958 </tr>
4959 <tr>
4960 <td>channel</td>
4961 <td>U16</td>
4962 <td> </td>
4963 <td>
4964
4965  
4966 </td>
4967 <td>
4968 <b></b>
4969  
4970 </td>
4971 </tr>
4972 <tr>
4973 <td>name</td>
4974 <td>username</td>
4975 <td> </td>
4976 <td>
4977
4978  
4979 </td>
4980 <td>
4981 <b></b>
4982  
4983 </td>
4984 </tr>
4985 </table>
4986
4987 <h4>
4988 <a name="R441d"></a>RECV
4989 MESSAGE owner_left</h4>
4990 NUMERIC TYPE (hex): 441d<p>
4991 Unclear.
4992 </p>
4993 <table border="1" width="100%">
4994 <tr>
4995 <th width="10%">NAME</th>
4996 <th width="10%">TYPE</th>
4997 <th width="15%">DEFAULT</th>
4998 <th>DESCRIPTION</th>
4999 <th width="15%">DEC-GUARD</th>
5000 </tr>
5001 <tr>
5002 <td>channel</td>
5003 <td>U16</td>
5004 <td> </td>
5005 <td>
5006
5007  
5008 </td>
5009 <td>
5010 <b></b>
5011  
5012 </td>
5013 </tr>
5014 </table>
5015
5016 <h4>
5017 <a name="R441e"></a>RECV
5018 MESSAGE teacher_left</h4>
5019 NUMERIC TYPE (hex): 441e<p>
5020 Unclear.
5021 </p>
5022 <table border="1" width="100%">
5023 <tr>
5024 <th width="10%">NAME</th>
5025 <th width="10%">TYPE</th>
5026 <th width="15%">DEFAULT</th>
5027 <th>DESCRIPTION</th>
5028 <th width="15%">DEC-GUARD</th>
5029 </tr>
5030 <tr>
5031 <td>channel</td>
5032 <td>U16</td>
5033 <td> </td>
5034 <td>
5035
5036  
5037 </td>
5038 <td>
5039 <b></b>
5040  
5041 </td>
5042 </tr>
5043 </table>
5044
5045 <h4>
5046 <a name="R4422"></a>RECV
5047 MESSAGE unknown4422</h4>
5048 NUMERIC TYPE (hex): 4422<p>
5049 change teacher? something to do with editing?
5050 </p>
5051 <table border="1" width="100%">
5052 <tr>
5053 <th width="10%">NAME</th>
5054 <th width="10%">TYPE</th>
5055 <th width="15%">DEFAULT</th>
5056 <th>DESCRIPTION</th>
5057 <th width="15%">DEC-GUARD</th>
5058 </tr>
5059 <tr>
5060 <td>channel</td>
5061 <td>U16</td>
5062 <td> </td>
5063 <td>
5064
5065  
5066 </td>
5067 <td>
5068 <b></b>
5069  
5070 </td>
5071 </tr>
5072 <tr>
5073 <td>name1</td>
5074 <td>username</td>
5075 <td> </td>
5076 <td>
5077
5078  
5079 </td>
5080 <td>
5081 <b></b>
5082  
5083 </td>
5084 </tr>
5085 <tr>
5086 <td>name2</td>
5087 <td>username</td>
5088 <td> </td>
5089 <td>
5090
5091  
5092 </td>
5093 <td>
5094 <b></b>
5095  
5096 </td>
5097 </tr>
5098 </table>
5099
5100 <h4>
5101 <a name="R4433"></a>RECV
5102 MESSAGE req_result</h4>
5103 NUMERIC TYPE (hex): 4433<p>
5104 Unclear.
5105 </p>
5106 <table border="1" width="100%">
5107 <tr>
5108 <th width="10%">NAME</th>
5109 <th width="10%">TYPE</th>
5110 <th width="15%">DEFAULT</th>
5111 <th>DESCRIPTION</th>
5112 <th width="15%">DEC-GUARD</th>
5113 </tr>
5114 <tr>
5115 <td>channel</td>
5116 <td>U16</td>
5117 <td> </td>
5118 <td>
5119 # # recv_result(?)
5120
5121  
5122 </td>
5123 <td>
5124 <b></b>
5125  
5126 </td>
5127 </tr>
5128 </table>
5129
5130 <h4>
5131 <a name="R4434"></a>RECV
5132 MESSAGE unknown4434</h4>
5133 NUMERIC TYPE (hex): 4434<p>
5134 </p>
5135 <table border="1" width="100%">
5136 <tr>
5137 <th width="10%">NAME</th>
5138 <th width="10%">TYPE</th>
5139 <th width="15%">DEFAULT</th>
5140 <th>DESCRIPTION</th>
5141 <th width="15%">DEC-GUARD</th>
5142 </tr>
5143 <tr>
5144 <td>channel</td>
5145 <td>U16</td>
5146 <td> </td>
5147 <td>
5148
5149  
5150 </td>
5151 <td>
5152 <b></b>
5153  
5154 </td>
5155 </tr>
5156 <tr>
5157 <td>b1</td>
5158 <td>U8</td>
5159 <td> </td>
5160 <td>
5161 ?? !demonstration game??
5162
5163  
5164 </td>
5165 <td>
5166 <b></b>
5167  
5168 </td>
5169 </tr>
5170 </table>
5171
5172 </body>
5173 </html>