if(!this.JSON)JSON={};
(
	function ()
	{
    	var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
    	    escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
    	    gap,
    	    indent,
    	    meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},
    	    rep;
    	if(typeof JSON.parse!=='function')
		{
    	    JSON.parse=function(text,reviver)
			{
    	        var j;
    	        function walk(holder,key)
				{
    	            var k,v,value=holder[key];
    	            if (value && typeof value==='object')
					{
						for(k in value)
						{
							if(Object.hasOwnProperty.call(value,k))
							{
                            	v=walk(value,k);
                            	if(v!==undefined)
								{
                                	value[k]=v;
                            	}
								else
								{
                                	delete value[k];
                            	}
                        	}
                    	}
                	}
                	return reviver.call(holder,key,value);
            	}
            	cx.lastIndex=0;
            	if(cx.test(text))
				{
                	text=text.replace(cx,function(a){return '\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});
            	}
				if(
					/^[\],:{}\s]*$/.
					test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').
					replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
					replace(/(?:^|:|,)(?:\s*\[)+/g, ''))
				)
				{
                	j=eval('('+text+')');
					return typeof reviver==='function'?walk({'':j},''):j;
				}
				throw new SyntaxError('JSON.parse');
			};
		}
	}
)();


 
 