def decodeOSC(data):
table = {"<STR_LIT:i>":readInt, "<STR_LIT:f>":readFloat, "<STR_LIT:s>":readString, "<STR_LIT:b>":readBlob}<EOL>decoded = []<EOL>address,  rest = readString(data)<EOL>typetags = "<STR_LIT>"<EOL>if address == "<STR_LIT>":<EOL><INDENT>time, rest = readLong(rest)<EOL>decoded.append(address)<EOL>decoded.append(time)<EOL>while len(rest)><NUM_LIT:0>:<EOL><INDENT>length, rest = readInt(rest)<EOL>decoded.append(decodeOSC(rest[:length]))<EOL>rest = rest[length:]<EOL><DEDENT><DEDENT>elif len(rest) > <NUM_LIT:0>:<EOL><INDENT>typetags, rest = readString(rest)<EOL>decoded.append(address)<EOL>decoded.append(typetags)<EOL>if typetags[<NUM_LIT:0>] == "<STR_LIT:U+002C>":<EOL><INDENT>for tag in typetags[<NUM_LIT:1>:]:<EOL><INDENT>value, rest = table[tag](rest)<EOL>decoded.append(value)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>print("<STR_LIT>")<EOL><DEDENT><DEDENT>return decoded<EOL>
Converts a typetagged OSC message to a Python list.