rem: var ary = seq.match(/([\da-f]{1,2})(.*)|u([\da-f]{1,4})/); 
add: var ary = seq.match(/([\da-f]{1,2})(.*)|u([\da-f]{1,4})/i); 
context: function ecmaUnescape(str){    function replaceEscapes(seq)    {        var ary = seq.match(/([\da-f]{1,2})(.*)|u([\da-f]{1,4})/);        if (!ary)            return "<ERROR>";        var rv;        if (ary[1])        {            // two digit escape, possibly with cruft after            rv = String.fromCharCode(parseInt(ary[1], 16)) + ary[2];        }        else        {            // four digits, no cruft            rv = String.fromCharCode(parseInt(ary[3], 16));        }        return rv;    };    // Replace the escape sequences %X, %XX, %uX, %uXX, %uXXX, and %uXXXX with    // the characters they represent, where X is a hexadecimal digit.    // See section B.2.2 of ECMA-262 rev3 for more information.    return str.replace(/%u?([\da-f]{1,4})/ig, replaceEscapes);}
meta: 1567	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/1567/9afabb9c6e6a367f23a077b78b0352f6c656f93d/utils.js/buggy/js/lib/utils.js