@balancy/wasm 1.0.38 → 1.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Balancy.wasm CHANGED
Binary file
package/dist/index.cjs.js CHANGED
@@ -414,6 +414,8 @@ var Balancy = function() {
414
414
  "__Z29jsbalancyHardPurchaseShopSlotPN7Balancy4Data8BaseDataEPNS_4Core11PaymentInfoEN10emscripten3valEb",
415
415
  "__Z30jsbalancyHardPurchaseGameOfferPN7Balancy4Data8BaseDataEPNS_4Core11PaymentInfoEN10emscripten3valEb",
416
416
  "__Z35jsbalancyHardPurchaseGameOfferGroupPN7Balancy4Data8BaseDataEPNS_5Utils15JsonBasedObjectEPNS_4Core11PaymentInfoEN10emscripten3valEb",
417
+ "__Z29jsbalancyAuth_NameAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_N10emscripten3valE",
418
+ "__Z29jsbalancyLink_NameAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_bN10emscripten3valE",
417
419
  "__Z35jsbalancyDailyBonus_claimNextRewardPN7Balancy4Data8BaseDataE",
418
420
  "__Z38jsbalancyDailyBonus_canClaimNextRewardPN7Balancy4Data8BaseDataE",
419
421
  "__Z47jsbalancyDailyBonus_getSecondsTillTheNextRewardPN7Balancy4Data8BaseDataE",
@@ -531,8 +533,8 @@ var Balancy = function() {
531
533
  "_balancyGetProductsIdAndType",
532
534
  "_balancyGetParsedObject",
533
535
  "_balancyAuth_NameAndPassword",
536
+ "_balancyLink_NameAndPassword",
534
537
  "__Z22jsbalancyAuth_DeviceIdNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN10emscripten3valE",
535
- "__Z29jsbalancyAuth_NameAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_N10emscripten3valE",
536
538
  "__Z30jsbalancyAuth_EmailAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_N10emscripten3valE",
537
539
  "_balancyInventory_AddItems",
538
540
  "_balancyInventory_RemoveItems",
@@ -1193,17 +1195,18 @@ var Balancy = function() {
1193
1195
  });
1194
1196
  }
1195
1197
  }
1196
- function js_fetch(url, bLoadFile, method, headers, headersCount, body, successCallbackPtr, errorCallbackPtr, callbackPtr, binaryCallbackPtr) {
1198
+ function js_fetch(url, bLoadFile, method, headers, headersCount, body, successCallbackPtr, errorCallbackPtr, callbackPtr, binaryCallbackPtr, requestContextPtr) {
1199
+ var requestId = Date.now() + Math.random();
1197
1200
  var urlString = "";
1198
1201
  var methodString = "";
1199
1202
  var bodyString = null;
1200
1203
  try {
1201
1204
  if (!url) {
1202
- console.error(" URL pointer is null");
1205
+ console.error("[ERROR] [Request ".concat(requestId, "] URL pointer is null"));
1203
1206
  return;
1204
1207
  }
1205
1208
  if (!method) {
1206
- console.error(" Method pointer is null");
1209
+ console.error("[ERROR] [Request ".concat(requestId, "] Method pointer is null"));
1207
1210
  return;
1208
1211
  }
1209
1212
  urlString = UTF8ToString(url);
@@ -1212,51 +1215,92 @@ var Balancy = function() {
1212
1215
  bodyString = UTF8ToString(body);
1213
1216
  }
1214
1217
  if (!urlString || urlString.length === 0) {
1215
- console.error(" URL is empty or invalid");
1218
+ console.error("[ERROR] [Request ".concat(requestId, "] URL is empty or invalid"));
1216
1219
  return;
1217
1220
  }
1218
1221
  if (urlString.includes("\0") || urlString.includes("€")) {
1219
- console.error(" URL contains invalid characters:", urlString);
1222
+ console.error("[ERROR] [Request ".concat(requestId, "] URL contains invalid characters:"), urlString);
1220
1223
  return;
1221
1224
  }
1225
+ console.log("[START] [Request ".concat(requestId, "] Starting ").concat(bLoadFile ? "FILE LOAD" : "API REQUEST"));
1226
+ console.log(" URL: ".concat(urlString));
1227
+ console.log(" Method: ".concat(methodString));
1228
+ if (bodyString) {
1229
+ console.log(" Body: ".concat(bodyString.length > 200 ? bodyString.substring(0, 200) + "..." : bodyString));
1230
+ }
1222
1231
  } catch (error) {
1223
- console.error(" Error reading strings from WASM memory:", error);
1232
+ console.error("[ERROR] [Request ".concat(requestId, "] Error reading strings from WASM memory:"), error);
1224
1233
  return;
1225
1234
  }
1226
- var invokeErrorCallback = function(status, message, callbackPtr) {
1227
- console.log("❌ invokeErrorCallback:", status, message);
1235
+ var invokeErrorCallback = function(status, message) {
1236
+ var details = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
1237
+ var fullMessage = "[Request ".concat(requestId, "] ").concat(bLoadFile ? "FILE LOAD" : "API REQUEST", " FAILED: ").concat(methodString, " ").concat(urlString).concat(details ? " - " + details : "");
1238
+ console.error("[ERROR] ".concat(fullMessage));
1239
+ console.error(" Status: ".concat(status));
1240
+ console.error(" Error: ".concat(message || "Unknown error"));
1241
+ if (bodyString) {
1242
+ console.error(" Request Body: ".concat(bodyString.length > 500 ? bodyString.substring(0, 500) + "..." : bodyString));
1243
+ }
1228
1244
  try {
1229
- var errorMessage = message || "Unknown error";
1230
- var errorLength = lengthBytesUTF8(errorMessage) + 1;
1231
- var errorPtr = Module._malloc(errorLength);
1232
- stringToUTF8(errorMessage, errorPtr, errorLength);
1245
+ if (requestContextPtr) {
1246
+ console.log("[MEMORY] [Request ".concat(requestId, "] Cleaning up RequestContext at ").concat(requestContextPtr));
1247
+ Module._free(requestContextPtr);
1248
+ }
1249
+ if (!errorCallbackPtr || !callbackPtr) {
1250
+ console.error("[ERROR] [Request ".concat(requestId, "] Invalid callback pointers: errorCallback=").concat(errorCallbackPtr, ", callback=").concat(callbackPtr));
1251
+ return;
1252
+ }
1253
+ var errorMessage = fullMessage + (message ? " - ".concat(message) : "");
1254
+ var errorLength = lengthBytesUTF8(errorMessage);
1255
+ if (errorLength <= 0 || errorLength > 1048576) {
1256
+ console.error("[ERROR] [Request ".concat(requestId, "] Invalid error message length: ").concat(errorLength));
1257
+ return;
1258
+ }
1259
+ var errorPtr = Module._malloc(errorLength + 1);
1260
+ if (!errorPtr) {
1261
+ console.error("[ERROR] [Request ".concat(requestId, "] Failed to allocate memory for error message"));
1262
+ return;
1263
+ }
1264
+ console.log("[MEMORY] [Request ".concat(requestId, "] Allocated ").concat(errorLength + 1, " bytes for error message at ").concat(errorPtr));
1265
+ stringToUTF8(errorMessage, errorPtr, errorLength + 1);
1266
+ if (typeof Module["dynCall_viii"] !== "function") {
1267
+ console.error("[ERROR] [Request ".concat(requestId, "] dynCall_viii function not available"));
1268
+ Module._free(errorPtr);
1269
+ return;
1270
+ }
1233
1271
  Module["dynCall_viii"](errorCallbackPtr, status, errorPtr, callbackPtr);
1234
1272
  Module._free(errorPtr);
1273
+ console.log("[MEMORY] [Request ".concat(requestId, "] Freed error message memory at ").concat(errorPtr));
1235
1274
  } catch (error) {
1236
- console.error(" Error in error callback:", error);
1275
+ console.error("[ERROR] [Request ".concat(requestId, "] Error in error callback:"), error);
1237
1276
  }
1238
1277
  };
1239
1278
  var headersObj = new Headers;
1240
1279
  var ptrSize = Module.HEAPU32.BYTES_PER_ELEMENT;
1280
+ var headersLogged = [];
1241
1281
  try {
1242
1282
  for(var i = 0; i < headersCount; i += 2){
1243
1283
  var keyPtr = getValue(headers + i * ptrSize, "*");
1244
1284
  var valuePtr = getValue(headers + (i + 1) * ptrSize, "*");
1245
1285
  if (!keyPtr || !valuePtr) {
1246
- console.warn("⚠️ Skipping invalid header pointer at index", i);
1286
+ console.warn("[WARN] [Request ".concat(requestId, "] Skipping invalid header pointer at index"), i);
1247
1287
  continue;
1248
1288
  }
1249
1289
  var key = UTF8ToString(keyPtr);
1250
1290
  var value = UTF8ToString(valuePtr);
1251
1291
  if (!key || !value) {
1252
- console.warn("⚠️ Skipping empty header at index", i);
1292
+ console.warn("[WARN] [Request ".concat(requestId, "] Skipping empty header at index"), i);
1253
1293
  continue;
1254
1294
  }
1255
1295
  headersObj.append(key, value);
1296
+ headersLogged.push("".concat(key, ": ").concat(value));
1297
+ }
1298
+ if (headersLogged.length > 0) {
1299
+ console.log(" Headers: ".concat(headersLogged.join(", ")));
1256
1300
  }
1257
1301
  } catch (error) {
1258
- console.error(" Error processing headers:", error);
1259
- invokeErrorCallback(-1, "Header processing error: " + error.message, callbackPtr);
1302
+ console.error("[ERROR] [Request ".concat(requestId, "] Error processing headers:"), error);
1303
+ invokeErrorCallback(-1, "Header processing error: " + error.message, "");
1260
1304
  return;
1261
1305
  }
1262
1306
  var fetchOptions = {
@@ -1264,19 +1308,24 @@ var Balancy = function() {
1264
1308
  headers: headersObj,
1265
1309
  body: bodyString
1266
1310
  };
1311
+ var startTime = performance.now();
1267
1312
  fetch(urlString, fetchOptions).then(function(response) {
1313
+ var duration = performance.now() - startTime;
1314
+ console.log("[TIMING] [Request ".concat(requestId, "] Fetch completed in ").concat(duration.toFixed(2), "ms"));
1268
1315
  if (!response.ok) {
1269
- console.log(" Response not OK, reading error message");
1316
+ console.error("[ERROR] [Request ".concat(requestId, "] Response not OK, status: ").concat(response.status, " ").concat(response.statusText));
1270
1317
  response.text().then(function(errorMessage) {
1271
- console.log(" Error message:", errorMessage);
1272
- invokeErrorCallback(response.status, errorMessage, callbackPtr);
1318
+ console.error(" Response Body: ".concat(errorMessage));
1319
+ invokeErrorCallback(response.status, errorMessage, "HTTP ".concat(response.status, " ").concat(response.statusText));
1273
1320
  }).catch(function() {
1274
- console.log(" Failed to read error message");
1275
- invokeErrorCallback(response.status, null, callbackPtr);
1321
+ console.error(" Failed to read error response body");
1322
+ invokeErrorCallback(response.status, "HTTP ".concat(response.status, " ").concat(response.statusText), "Could not read response body");
1276
1323
  });
1277
1324
  return;
1278
1325
  }
1326
+ console.log("[SUCCESS] [Request ".concat(requestId, "] Response OK, status: ").concat(response.status));
1279
1327
  var contentType = response.headers.get("content-type") || "";
1328
+ console.log(" Content-Type: ".concat(contentType));
1280
1329
  var binaryExtensions = [
1281
1330
  ".png",
1282
1331
  ".jpg",
@@ -1317,33 +1366,104 @@ var Balancy = function() {
1317
1366
  return contentType.toLowerCase().includes(type);
1318
1367
  });
1319
1368
  var isBinary = contentType.includes("application/octet-stream") || hasBinaryExtension || !isTextMimeType && !contentType.includes("charset");
1369
+ console.log(" Detected as: ".concat(isBinary ? "BINARY" : "TEXT", " data"));
1320
1370
  if (isBinary) {
1321
1371
  response.arrayBuffer().then(function(arrayBuffer) {
1322
1372
  var dataSize = arrayBuffer.byteLength;
1373
+ console.log("[DATA] [Request ".concat(requestId, "] Binary data received: ").concat(dataSize, " bytes"));
1374
+ if (dataSize <= 0 || dataSize > 104857600) {
1375
+ console.error("[ERROR] [Request ".concat(requestId, "] Invalid binary data size: ").concat(dataSize));
1376
+ invokeErrorCallback(-1, "Invalid binary data size: ".concat(dataSize), "");
1377
+ return;
1378
+ }
1323
1379
  var dataPtr = Module._malloc(dataSize);
1380
+ if (!dataPtr) {
1381
+ console.error("[ERROR] [Request ".concat(requestId, "] Failed to allocate ").concat(dataSize, " bytes for binary data"));
1382
+ invokeErrorCallback(-1, "Memory allocation failed for binary data", "");
1383
+ return;
1384
+ }
1385
+ console.log("[MEMORY] [Request ".concat(requestId, "] Allocated ").concat(dataSize, " bytes for binary data at ").concat(dataPtr));
1324
1386
  var dataView = new Uint8Array(arrayBuffer);
1325
1387
  Module.HEAPU8.set(dataView, dataPtr);
1326
- Module["dynCall_viii"](binaryCallbackPtr, dataPtr, dataSize, callbackPtr);
1388
+ try {
1389
+ if (!binaryCallbackPtr || !callbackPtr) {
1390
+ console.error("[ERROR] [Request ".concat(requestId, "] Invalid binary callback pointers: binary=").concat(binaryCallbackPtr, ", callback=").concat(callbackPtr));
1391
+ Module._free(dataPtr);
1392
+ return;
1393
+ }
1394
+ if (typeof Module["dynCall_viii"] !== "function") {
1395
+ console.error("[ERROR] [Request ".concat(requestId, "] dynCall_viii function not available for binary callback"));
1396
+ Module._free(dataPtr);
1397
+ return;
1398
+ }
1399
+ Module["dynCall_viii"](binaryCallbackPtr, dataPtr, dataSize, callbackPtr);
1400
+ console.log("[SUCCESS] [Request ".concat(requestId, "] Binary callback completed successfully"));
1401
+ if (requestContextPtr) {
1402
+ console.log("[MEMORY] [Request ".concat(requestId, "] Cleaning up RequestContext at ").concat(requestContextPtr));
1403
+ Module._free(requestContextPtr);
1404
+ }
1405
+ } catch (error) {
1406
+ console.error("[ERROR] [Request ".concat(requestId, "] Error calling binary callback:"), error);
1407
+ invokeErrorCallback(-1, "Binary callback error: " + error.message, "");
1408
+ }
1327
1409
  Module._free(dataPtr);
1410
+ console.log("[MEMORY] [Request ".concat(requestId, "] Freed binary data memory at ").concat(dataPtr));
1328
1411
  }).catch(function(error) {
1329
- console.log(" Error reading binary data:", error);
1330
- invokeErrorCallback(-1, error.message, callbackPtr);
1412
+ console.error("[ERROR] [Request ".concat(requestId, "] Error reading binary data:"), error);
1413
+ invokeErrorCallback(-1, error.message, "Failed to read binary response");
1331
1414
  });
1332
1415
  } else {
1333
1416
  response.text().then(function(data) {
1334
1417
  var dataLength = lengthBytesUTF8(data);
1418
+ console.log("[DATA] [Request ".concat(requestId, "] Text data received: ").concat(dataLength, " bytes"));
1419
+ if (data.length > 0) {
1420
+ console.log(" Preview: ".concat(data.substring(0, 200)).concat(data.length > 200 ? "..." : ""));
1421
+ }
1422
+ if (dataLength <= 0 || dataLength > 104857600) {
1423
+ console.error("[ERROR] [Request ".concat(requestId, "] Invalid text data size: ").concat(dataLength));
1424
+ invokeErrorCallback(-1, "Invalid text data size: ".concat(dataLength), "");
1425
+ return;
1426
+ }
1335
1427
  var dataPtr = Module._malloc(dataLength + 1);
1336
- stringToUTF8(data, dataPtr, dataLength + 1);
1337
- Module["dynCall_viii"](successCallbackPtr, dataPtr, dataLength, callbackPtr);
1428
+ if (!dataPtr) {
1429
+ console.error("[ERROR] [Request ".concat(requestId, "] Failed to allocate ").concat(dataLength + 1, " bytes for text data"));
1430
+ invokeErrorCallback(-1, "Memory allocation failed for text data", "");
1431
+ return;
1432
+ }
1433
+ console.log("[MEMORY] [Request ".concat(requestId, "] Allocated ").concat(dataLength + 1, " bytes for text data at ").concat(dataPtr));
1434
+ try {
1435
+ stringToUTF8(data, dataPtr, dataLength + 1);
1436
+ if (!successCallbackPtr || !callbackPtr) {
1437
+ console.error("[ERROR] [Request ".concat(requestId, "] Invalid text callback pointers: success=").concat(successCallbackPtr, ", callback=").concat(callbackPtr));
1438
+ Module._free(dataPtr);
1439
+ return;
1440
+ }
1441
+ if (typeof Module["dynCall_viii"] !== "function") {
1442
+ console.error("[ERROR] [Request ".concat(requestId, "] dynCall_viii function not available for text callback"));
1443
+ Module._free(dataPtr);
1444
+ return;
1445
+ }
1446
+ Module["dynCall_viii"](successCallbackPtr, dataPtr, dataLength, callbackPtr);
1447
+ console.log("[SUCCESS] [Request ".concat(requestId, "] Text callback completed successfully"));
1448
+ if (requestContextPtr) {
1449
+ console.log("[MEMORY] [Request ".concat(requestId, "] Cleaning up RequestContext at ").concat(requestContextPtr));
1450
+ Module._free(requestContextPtr);
1451
+ }
1452
+ } catch (error) {
1453
+ console.error("[ERROR] [Request ".concat(requestId, "] Error calling text callback:"), error);
1454
+ invokeErrorCallback(-1, "Text callback error: " + error.message, "");
1455
+ }
1338
1456
  Module._free(dataPtr);
1457
+ console.log("[MEMORY] [Request ".concat(requestId, "] Freed text data memory at ").concat(dataPtr));
1339
1458
  }).catch(function(error) {
1340
- console.log(" Error reading text data:", error);
1341
- invokeErrorCallback(-1, error.message, callbackPtr);
1459
+ console.error("[ERROR] [Request ".concat(requestId, "] Error reading text data:"), error);
1460
+ invokeErrorCallback(-1, error.message, "Failed to read text response");
1342
1461
  });
1343
1462
  }
1344
1463
  }).catch(function(error) {
1345
- console.log("❌ Fetch error:", error);
1346
- invokeErrorCallback(-1, error.message, callbackPtr);
1464
+ var duration = performance.now() - startTime;
1465
+ console.error("[ERROR] [Request ".concat(requestId, "] Fetch error after ").concat(duration.toFixed(2), "ms:"), error);
1466
+ invokeErrorCallback(-1, error.message, "Network fetch failed");
1347
1467
  });
1348
1468
  }
1349
1469
  function js_call_typescript_bridge_send_ack(connectionId, ackId, responseData) {
@@ -7352,6 +7472,8 @@ var Balancy = function() {
7352
7472
  Module["__Z29jsbalancyHardPurchaseShopSlotPN7Balancy4Data8BaseDataEPNS_4Core11PaymentInfoEN10emscripten3valEb"] = createExportWrapper("_Z29jsbalancyHardPurchaseShopSlotPN7Balancy4Data8BaseDataEPNS_4Core11PaymentInfoEN10emscripten3valEb", 4);
7353
7473
  Module["__Z30jsbalancyHardPurchaseGameOfferPN7Balancy4Data8BaseDataEPNS_4Core11PaymentInfoEN10emscripten3valEb"] = createExportWrapper("_Z30jsbalancyHardPurchaseGameOfferPN7Balancy4Data8BaseDataEPNS_4Core11PaymentInfoEN10emscripten3valEb", 4);
7354
7474
  Module["__Z35jsbalancyHardPurchaseGameOfferGroupPN7Balancy4Data8BaseDataEPNS_5Utils15JsonBasedObjectEPNS_4Core11PaymentInfoEN10emscripten3valEb"] = createExportWrapper("_Z35jsbalancyHardPurchaseGameOfferGroupPN7Balancy4Data8BaseDataEPNS_5Utils15JsonBasedObjectEPNS_4Core11PaymentInfoEN10emscripten3valEb", 5);
7475
+ Module["__Z29jsbalancyAuth_NameAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_N10emscripten3valE"] = createExportWrapper("_Z29jsbalancyAuth_NameAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_N10emscripten3valE", 3);
7476
+ Module["__Z29jsbalancyLink_NameAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_bN10emscripten3valE"] = createExportWrapper("_Z29jsbalancyLink_NameAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_bN10emscripten3valE", 4);
7355
7477
  Module["__Z35jsbalancyDailyBonus_claimNextRewardPN7Balancy4Data8BaseDataE"] = createExportWrapper("_Z35jsbalancyDailyBonus_claimNextRewardPN7Balancy4Data8BaseDataE", 1);
7356
7478
  Module["__Z38jsbalancyDailyBonus_canClaimNextRewardPN7Balancy4Data8BaseDataE"] = createExportWrapper("_Z38jsbalancyDailyBonus_canClaimNextRewardPN7Balancy4Data8BaseDataE", 1);
7357
7479
  Module["__Z47jsbalancyDailyBonus_getSecondsTillTheNextRewardPN7Balancy4Data8BaseDataE"] = createExportWrapper("_Z47jsbalancyDailyBonus_getSecondsTillTheNextRewardPN7Balancy4Data8BaseDataE", 1);
@@ -7471,8 +7593,8 @@ var Balancy = function() {
7471
7593
  Module["_balancyGetProductsIdAndType"] = createExportWrapper("balancyGetProductsIdAndType", 1);
7472
7594
  Module["_balancyGetParsedObject"] = createExportWrapper("balancyGetParsedObject", 3);
7473
7595
  Module["_balancyAuth_NameAndPassword"] = createExportWrapper("balancyAuth_NameAndPassword", 3);
7596
+ Module["_balancyLink_NameAndPassword"] = createExportWrapper("balancyLink_NameAndPassword", 4);
7474
7597
  Module["__Z22jsbalancyAuth_DeviceIdNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN10emscripten3valE"] = createExportWrapper("_Z22jsbalancyAuth_DeviceIdNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN10emscripten3valE", 2);
7475
- Module["__Z29jsbalancyAuth_NameAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_N10emscripten3valE"] = createExportWrapper("_Z29jsbalancyAuth_NameAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_N10emscripten3valE", 3);
7476
7598
  Module["__Z30jsbalancyAuth_EmailAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_N10emscripten3valE"] = createExportWrapper("_Z30jsbalancyAuth_EmailAndPasswordNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEES5_N10emscripten3valE", 3);
7477
7599
  Module["_balancyInventory_AddItems"] = createExportWrapper("balancyInventory_AddItems", 2);
7478
7600
  Module["_balancyInventory_RemoveItems"] = createExportWrapper("balancyInventory_RemoveItems", 2);