let map = new Map();
map.set("81", "INPUT");
map.set("91", "OUTPUT");
map.set("a1", "COLLECTION");
map.set("b1", "FEATURE");
map.set("c0", "END_COLLECTION");
map.set("05", "USAGE_PAGE");
map.set("15", "LOGICAL_MINIMUM");
map.set("25", "LOGICAL_MAXIMUM");
map.set("35", "PHYSICAL_MINIMUM");
map.set("45", "PHYSICAL_MAXIMUM");
map.set("55", "UNIT_EXPONENT");
map.set("65", "UNIT");
map.set("75", "REPORT_SIZE");
map.set("85", "REPORT_ID");
map.set("95", "REPORT_COUNT");
map.set("09", "USAGE");
map.set("19", "USAGE_MINIMUM");
map.set("29", "USAGE_MAXIMUM");
let source = '05010906a1018501050719e029e71500250175019508810295067508150026a400050719002aa4008100c005010902a10185020901a1009510750115002501050919012910810205011601f826ff07750c95020930093181061581257f75089501093881069501050c0a38028106c0c00643ff0a0202a101851175089513150026ff000902810009029100c0';
let len = source.length;
var result = '';
for (var i = 0; i < len; i++) {
var cmd = source[i] + '' + source[++i];
if (cmd != "c0") {
var val = source[++i] + '' + source[++i];
var cmdDes = map.get(cmd)?map.get(cmd):cmd;
console.log(cmdDes + ' ' + val);
} else {
console.log(map.get(cmd));
}
}
console