#N canvas 14 0 649 526 10; #X obj 131 172 inlet byte; #X obj 131 316 outlet byte; #N canvas 327 0 739 602 shifter 0; #X obj 166 330 list split 1; #X obj 166 277 until; #X obj 166 305 list append; #X obj 266 330 bang; #X obj 166 356 +; #X obj 166 409 t f f; #X obj 166 254 t b l b; #X msg 215 375 0; #X obj 166 380 << 6; #X obj 166 431 >> 6; #X obj 134 469 f; #X obj 134 208 t b l; #X obj 134 169 inlet multibytelist; #X obj 134 497 outlet bytestream; #X text 74 60 converts a correctly-sized multi-byte list into a single code-point \, by shifting and adding the elements appropriately.; #X text 77 108 header-bits (e.g. bits not carrying any pay-load) MUST be stripped off beforehand.; #X connect 0 0 4 0; #X connect 0 1 2 1; #X connect 0 2 3 0; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 3 0 1 1; #X connect 4 0 8 0; #X connect 5 0 9 0; #X connect 5 1 4 1; #X connect 6 0 1 0; #X connect 6 1 2 1; #X connect 6 2 7 0; #X connect 7 0 4 1; #X connect 8 0 5 0; #X connect 9 0 10 1; #X connect 10 0 13 0; #X connect 11 0 10 0; #X connect 11 1 6 0; #X connect 12 0 11 0; #X restore 131 283 pd shifter; #X text 222 316 unicode code number; #X text 215 170 UTF-8 multibyte; #N canvas 1194 0 977 874 stream2multibytelist 1; #X text 259 228 aux; #X text 323 231 2byte; #X text 386 233 3byte; #X text 456 233 4byte; #X text 180 232 1byte; #X obj 181 249 & 127; #X obj 321 249 & 31; #X obj 251 249 & 63; #X obj 390 249 & 15; #X obj 460 249 & 7; #X obj 251 270 t f b; #X msg 213 292 1; #X text 220 404 expectedbytes; #X obj 181 346 i; #X msg 238 323 0; #X obj 204 591 t l l; #X obj 181 613 list prepend; #X msg 353 294 2; #X obj 181 318 t b f; #X obj 181 271 t f b; #X obj 321 270 t f b; #X obj 212 346 + 1; #X obj 390 273 t f b; #X msg 422 297 3; #X obj 460 271 t f b; #X msg 492 295 4; #X obj 204 565 list prepend; #X obj 181 207 moses 128; #X obj 251 207 moses 192; #X obj 321 207 moses 224; #X obj 390 207 moses 240; #X obj 285 544 t b b; #X obj 181 689 outlet multibytelist; #X obj 181 154 inlet bytestream; #X obj 456 683 outlet error; #X text 58 35 converts a bytestream into atomic multibyte representations (aka "list"s) of characters.; #X text 63 69 header-bits (used for describing the multibyte-nature in the incoming stream) are stripped of the lists); #X obj 227 373 t f b b; #X text 521 479 errors:; #X text 550 502 a continuation-byte at the beginning; #X text 550 518 a continuation-byte after the last byte; #X text 550 542 a start-byte within a sequence; #X text 555 597 192-193: overlong encoding; #X text 555 618 245-253: restricted by RFC-3629; #X text 556 637 254-255: not defined; #X obj 460 207 moses 245; #X obj 548 238 t b; #X text 583 243 5byte \, 6byte; #X text 583 229 codepoint > 0x10FFFF; #X text 583 259 undefined; #X obj 524 614 t b; #X obj 180 376 t f f; #X obj 344 383 print current; #X obj 181 460 select -1; #X obj 181 181 t f f; #X obj 353 179 print newbyte; #X obj 181 643 t l b; #X connect 5 0 19 0; #X connect 6 0 20 0; #X connect 7 0 10 0; #X connect 8 0 22 0; #X connect 9 0 24 0; #X connect 10 0 18 0; #X connect 11 0 37 0; #X connect 13 0 21 0; #X connect 13 0 51 0; #X connect 14 0 21 0; #X connect 15 0 16 1; #X connect 15 1 26 1; #X connect 16 0 56 0; #X connect 17 0 37 0; #X connect 18 0 13 0; #X connect 18 1 26 0; #X connect 19 0 18 0; #X connect 19 1 11 0; #X connect 20 0 18 0; #X connect 20 1 17 0; #X connect 21 0 13 1; #X connect 22 0 18 0; #X connect 22 1 23 0; #X connect 23 0 37 0; #X connect 24 0 18 0; #X connect 24 1 25 0; #X connect 25 0 37 0; #X connect 26 0 15 0; #X connect 27 0 5 0; #X connect 27 1 28 0; #X connect 28 0 7 0; #X connect 28 1 29 0; #X connect 29 0 6 0; #X connect 29 1 30 0; #X connect 30 0 8 0; #X connect 30 1 45 0; #X connect 31 0 26 1; #X connect 31 1 16 1; #X connect 33 0 54 0; #X connect 37 0 53 1; #X connect 37 1 14 0; #X connect 37 2 31 0; #X connect 45 0 9 0; #X connect 45 1 46 0; #X connect 46 0 50 0; #X connect 50 0 34 0; #X connect 51 0 53 0; #X connect 51 1 52 0; #X connect 53 0 16 0; #X connect 54 0 27 0; #X connect 54 1 55 0; #X connect 56 0 32 0; #X restore 131 241 pd stream2multibytelist; #X text 47 43 converts a stream of UTF-8 bytes into a stream of Unicode code numbers; #X text 53 95 multibyte characters are not output before the last byte has been received; #X obj 400 306 outlet error; #X text 104 378 if the bytestream is invalid \, a message is sent to the output; #X connect 0 0 5 0; #X connect 2 0 1 0; #X connect 5 0 2 0; #X connect 5 1 8 0;