{"ScriptPreparationCode":"window.NUM_ITEMS = 1000;\r\nwindow.NUM_TAKE = 20;\r\nwindow.input = [];\r\nwindow.data = [];\r\nwindow.check = [];\r\nwindow.indices = [...Array(window.NUM_ITEMS).keys()];\r\n\r\n// Populate data: entries with a nested array of 50 random entries\r\nfor (const i of window.indices) {\r\n window.data[i] = {\r\n ids: window.indices.slice(0, 50).map((x) =\u003E Math.floor(Math.random() * window.NUM_ITEMS * 10)),\r\n counter: i,\r\n counter2: Math.floor(Math.random() * i),\r\n };\r\n window.check[i] = false;\r\n}\r\n\r\n// calculate hashes for each data object\r\nwindow.hashes = new Set(window.data.map((obj) =\u003E objectHash(obj)));\r\nwindow.strings = new Set(window.data.map(JSON.stringify));\r\n\r\nwindow.TAKE_IDX = window.indices.reverse().slice(0, window.NUM_TAKE);\r\n// Uncomment to choose random indices\r\n//window.TAKE_IDX = window.TAKE_IDX.map((x) =\u003E Math.floor(Math.random() * window.NUM_ITEMS));\r\n\r\n// Populate input: copies of the data\r\nfor (const i of window.TAKE_IDX) {\r\n window.input[i] = { ids: [...window.data[i].ids], counter: window.data[i].counter, counter2: window.data[i].counter2 };\r\n}","TestCases":[{"Name":"_.isEqual","Code":"for (const i of window.TAKE_IDX) {\r\n window.check[i] = window.data.some((item) =\u003E _.isEqual(item, window.input[i]));\r\n}","IsDeferred":false},{"Name":"JSON.stringify","Code":"for (const i of window.TAKE_IDX) {\r\n window.check[i] = window.strings.has(JSON.stringify(window.input[i]));\r\n}","IsDeferred":false},{"Name":"objectHash","Code":"for (const i of window.TAKE_IDX) {\r\n window.check[i] = window.hashes.has(objectHash(window.input[i]));\r\n}","IsDeferred":false}]}