| 123456789101112131415161718192021222324252627282930 | function klona(val) {	var k, out, tmp;	if (Array.isArray(val)) {		out = Array(k=val.length);		while (k--) out[k] = (tmp=val[k]) && typeof tmp === 'object' ? klona(tmp) : tmp;		return out;	}	if (Object.prototype.toString.call(val) === '[object Object]') {		out = {}; // null		for (k in val) {			if (k === '__proto__') {				Object.defineProperty(out, k, {					value: klona(val[k]),					configurable: true,					enumerable: true,					writable: true,				});			} else {				out[k] = (tmp=val[k]) && typeof tmp === 'object' ? klona(tmp) : tmp;			}		}		return out;	}	return val;}exports.klona = klona;
 |