Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1revXa-00EI5q-SG for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Feb 2024 11:22:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1revXZ-002Kia-Fa for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Feb 2024 11:22:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1revXZ-002KiS-4P for pgsql-hackers@lists.postgresql.org; Tue, 27 Feb 2024 11:22:29 +0000 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1revXU-001ROj-8K for pgsql-hackers@lists.postgresql.org; Tue, 27 Feb 2024 11:22:29 +0000 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-56454c695e6so7223087a12.0 for ; Tue, 27 Feb 2024 03:22:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709032942; x=1709637742; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=JA4SD4j3VpT3Z1DnVEFgeYtVT3F1kmqBHPjVY5jr25M=; b=CvEvHlSf/pmK1zFPOhNLOUxmfAETkPWg1QVhlNe+oOUm47Cr/Ov3lqcXK6pomvyQFf uo5xnsMpAMlZaNXiTJRic1z0izs1nnWTDr/aoaHtefmDdxM+RJfSh/vZK3nrI19J/g/y r/M7m5+N30ZWxb6TsTqtBz5B6YGAaZnikICJkTv7ahprAcioguah/GoD/q+zrHM6Evqg keJG2F/+bNP7DYfAVGm1wQtPscYou8May6tg2ugZZsQpzqLpgSZo9AHWGpcQBp4onIW5 lsAedJg0jv+7nzwIaRN2fi+IJQH94qCYauZEgla/4SgYvHcVKqmzlG4Uu8ltGej7ILfb fuWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709032942; x=1709637742; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JA4SD4j3VpT3Z1DnVEFgeYtVT3F1kmqBHPjVY5jr25M=; b=Y+7n4ay2qIldAXWrdP5RA8wtQvaPD2pWZZvE2DHDU5DJ+27YHzSYPxfMnA7jKg6kl+ NLJr55mq/RwqjRE6qGMaiQ8hmSRYI3T4i+bnrFp2q5oDMlN37Yli7xsVam/Sd5dd13JJ ALiD1hT4pkMBXLDtrVYpmM/s0mk64au5hI0hhS14VuTUuC5kTAbInojenC406aOrU1Iz FJBQiFyvRIgZyceoVCzlIo+I0VsJhIkdAc9CzNJuuMBGu+jLkKNEIxplR444paopkbmM cuwPEqW7azEy11KG4NQZGIk1d7w1tA4rdigbtL55E9QjQpp1uVRiIDHTlCHg+fryQX7L +hbQ== X-Gm-Message-State: AOJu0YwfnscHZj5cnhxu10zI6ir8VDEaLaGngqkpoSeToIC7qfn1DdGj 8NOCUV0vyu41efAfO/EjeVD2/mya4E7Hqd7vTsVKG0X//76emFR/IIBcEkL8gRCnJqx+kkz/pJJ pU0JzK0Zol5ogDIQsTm+J1++dzjY= X-Google-Smtp-Source: AGHT+IHSkcJURV6egijO4DGq1UWlIWXO6zDz8qoWg89P9CBSNI+WB5e0EBo0m4+5cAiTfedOnSGWc5IAR5Aa6HKs/Sc= X-Received: by 2002:a05:6402:400c:b0:565:2ef3:e017 with SMTP id d12-20020a056402400c00b005652ef3e017mr8358122eda.4.1709032941955; Tue, 27 Feb 2024 03:22:21 -0800 (PST) MIME-Version: 1.0 References: <1672202.1703441340@sss.pgh.pa.us> In-Reply-To: From: Thomas Munro Date: Wed, 28 Feb 2024 00:21:45 +1300 Message-ID: Subject: Re: pread, pwrite, etc return ssize_t not int To: Tom Lane Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000006a552206125b3dc1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006a552206125b3dc1 Content-Type: text/plain; charset="UTF-8" Patches attached. PS Correction to my earlier statement about POSIX: the traditional K&R interfaces were indeed in the original POSIX.1 1988 but it was the 1990 edition (approximately coinciding with standard C) that adopted void, size_t, const and invented ssize_t. --0000000000006a552206125b3dc1 Content-Type: application/octet-stream; name="0001-Return-ssize_t-in-fd.c-I-O-functions.patch" Content-Disposition: attachment; filename="0001-Return-ssize_t-in-fd.c-I-O-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt49cxcs0 RnJvbSA0Y2VjNDgzZWZlYTQyYjcyZjdhNDRjYzg5NzU2N2RhMzQ2YmU4NTRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjcgRmViIDIwMjQgMjE6NDA6NDIgKzEzMDAKU3ViamVjdDogW1BBVENIIDEv Ml0gUmV0dXJuIHNzaXplX3QgaW4gZmQuYyBJL08gZnVuY3Rpb25zLgoKVHJhZGl0aW9uYWxseSB3 ZSB1c2VkIHR5cGVzIGJhc2VkIG9uIHRyYWRpdGlvbmFsIFVuaXggcmVhZC93cml0ZQpmdW5jdGlv bnMgZnJvbSBiZWZvcmUgQyBhbmQgUE9TSVggc3RhbmRhcmRpemF0aW9uLCB0aG91Z2ggbm90IGV4 YWN0bHkKKHdlIGhhZCBpbnQgZm9yIGFtb3VudCBpbnN0ZWFkIG9mIHVuc2lnbmVkKS4gIEluIGNv bW1pdCAyZDRmMWJhNiB3ZQpzd2l0Y2hlZCB0aGUgYXJndW1lbnQgdHlwZXMgdG8gdGhlIGFwcHJv cHJpYXRlIHN0YW5kYXJkIEMgdHlwZXMsIG1ha2luZwp0aGVtIGxpa2UgdGhlIFBPU0lYIGZ1bmN0 aW9ucyB0aGV5IHdyYXAsIGJ1dCBhZ2FpbiBub3QgZXhhY3RseTogdGhlCnJldHVybiB0eXBlIHN0 YXllZCBhcyBpbnQuCgpUaGF0IHdhc24ndCByZWFsbHkgYSBsaXZlIGJ1ZywgYmVjYXVzZSB3ZSBk b24ndCBleHBlY3QgUG9zdGdyZVNRTCBjb2RlCnRvIHBlcmZvcm0gcmVhZHMgb3Igd3JpdGVzIG9m IGdpZ2FieXRlcyBhbmQgb3ZlcmZsb3cgYW4gaW50LCBhbmQgT1Nlcwpwcm9iYWJseSBhcHBseSBp bnRlcm5hbCBjYXBzIHNtYWxsZXIgdGhhbiB0aGF0IGFueXdheS4gIFRoaXMgY2hhbmdlIGlzCmRv bmUgb24gdGhlIHByaW5jaXBsZSB0aGF0IHRoZSByZXR1cm4gbWlnaHQgYXMgd2VsbCBmb2xsb3cg dGhlIHN0YW5kYXJkCmludGVyZmFjZXMgY29uc2lzdGVudGx5LgoKUmVwb3J0ZWQtYnk6IFRvbSBM YW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8x NjcyMjAyLjE3MDM0NDEzNDAlNDBzc3MucGdoLnBhLnVzCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9maWxlL2ZkLmMgfCA4ICsrKystLS0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2ZkLmggICAgICB8 IDggKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMKaW5kZXggZDI5OGU0ODQyYy4uOGM4ZTgxZjg5OSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9maWxlL2ZkLmMKQEAgLTIxMzIsMTEgKzIxMzIsMTEgQEAgRmlsZVdyaXRlYmFjayhG aWxlIGZpbGUsIG9mZl90IG9mZnNldCwgb2ZmX3QgbmJ5dGVzLCB1aW50MzIgd2FpdF9ldmVudF9p bmZvKQogCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKIH0KIAotaW50Citzc2l6ZV90CiBGaWxl UmVhZFYoRmlsZSBmaWxlLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgb2Zm X3Qgb2Zmc2V0LAogCQkgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiB7Ci0JaW50CQkJcmV0dXJu Q29kZTsKKwlzc2l6ZV90CQlyZXR1cm5Db2RlOwogCVZmZAkJICAgKnZmZFA7CiAKIAlBc3NlcnQo RmlsZUlzVmFsaWQoZmlsZSkpOwpAQCAtMjE4OCwxMSArMjE4OCwxMSBAQCByZXRyeToKIAlyZXR1 cm4gcmV0dXJuQ29kZTsKIH0KIAotaW50Citzc2l6ZV90CiBGaWxlV3JpdGVWKEZpbGUgZmlsZSwg Y29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIG9mZl90IG9mZnNldCwKIAkJICAg dWludDMyIHdhaXRfZXZlbnRfaW5mbykKIHsKLQlpbnQJCQlyZXR1cm5Db2RlOworCXNzaXplX3QJ CXJldHVybkNvZGU7CiAJVmZkCQkgICAqdmZkUDsKIAogCUFzc2VydChGaWxlSXNWYWxpZChmaWxl KSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2ZkLmggYi9zcmMvaW5jbHVkZS9z dG9yYWdlL2ZkLmgKaW5kZXggNjBiYmE1Yzk3MC4uYTE3MzE3NGRiOSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9mZC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZmQuaApAQCAt MTA3LDggKzEwNyw4IEBAIGV4dGVybiBGaWxlIFBhdGhOYW1lT3BlbkZpbGVQZXJtKGNvbnN0IGNo YXIgKmZpbGVOYW1lLCBpbnQgZmlsZUZsYWdzLCBtb2RlX3QgZmlsCiBleHRlcm4gRmlsZSBPcGVu VGVtcG9yYXJ5RmlsZShib29sIGludGVyWGFjdCk7CiBleHRlcm4gdm9pZCBGaWxlQ2xvc2UoRmls ZSBmaWxlKTsKIGV4dGVybiBpbnQJRmlsZVByZWZldGNoKEZpbGUgZmlsZSwgb2ZmX3Qgb2Zmc2V0 LCBvZmZfdCBhbW91bnQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwotZXh0ZXJuIGludAlGaWxl UmVhZFYoRmlsZSBmaWxlLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvYywgaW50IGlvdmNudCwgb2Zm X3Qgb2Zmc2V0LCB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKLWV4dGVybiBpbnQJRmlsZVdyaXRl VihGaWxlIGZpbGUsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW9jLCBpbnQgaW92Y250LCBvZmZfdCBv ZmZzZXQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOworZXh0ZXJuIHNzaXplX3QgRmlsZVJlYWRW KEZpbGUgZmlsZSwgY29uc3Qgc3RydWN0IGlvdmVjICppb2MsIGludCBpb3ZjbnQsIG9mZl90IG9m ZnNldCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CitleHRlcm4gc3NpemVfdCBGaWxlV3JpdGVW KEZpbGUgZmlsZSwgY29uc3Qgc3RydWN0IGlvdmVjICppb2MsIGludCBpb3ZjbnQsIG9mZl90IG9m ZnNldCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CiBleHRlcm4gaW50CUZpbGVTeW5jKEZpbGUg ZmlsZSwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CiBleHRlcm4gaW50CUZpbGVaZXJvKEZpbGUg ZmlsZSwgb2ZmX3Qgb2Zmc2V0LCBvZmZfdCBhbW91bnQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8p OwogZXh0ZXJuIGludAlGaWxlRmFsbG9jYXRlKEZpbGUgZmlsZSwgb2ZmX3Qgb2Zmc2V0LCBvZmZf dCBhbW91bnQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwpAQCAtMTkyLDcgKzE5Miw3IEBAIGV4 dGVybiBpbnQJZHVyYWJsZV91bmxpbmsoY29uc3QgY2hhciAqZm5hbWUsIGludCBlbGV2ZWwpOwog ZXh0ZXJuIHZvaWQgU3luY0RhdGFEaXJlY3Rvcnkodm9pZCk7CiBleHRlcm4gaW50CWRhdGFfc3lu Y19lbGV2ZWwoaW50IGVsZXZlbCk7CiAKLXN0YXRpYyBpbmxpbmUgaW50CitzdGF0aWMgaW5saW5l IHNzaXplX3QKIEZpbGVSZWFkKEZpbGUgZmlsZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgYW1vdW50 LCBvZmZfdCBvZmZzZXQsCiAJCSB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQogewpAQCAtMjA0LDcg KzIwNCw3IEBAIEZpbGVSZWFkKEZpbGUgZmlsZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgYW1vdW50 LCBvZmZfdCBvZmZzZXQsCiAJcmV0dXJuIEZpbGVSZWFkVihmaWxlLCAmaW92LCAxLCBvZmZzZXQs IHdhaXRfZXZlbnRfaW5mbyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50CitzdGF0aWMgaW5saW5l IHNzaXplX3QKIEZpbGVXcml0ZShGaWxlIGZpbGUsIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90 IGFtb3VudCwgb2ZmX3Qgb2Zmc2V0LAogCQkgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiB7Ci0t IAoyLjM5LjMgKEFwcGxlIEdpdC0xNDUpCgo= --0000000000006a552206125b3dc1 Content-Type: application/octet-stream; name="0002-Fix-theoretical-overflow-in-Windows-pg_pread-pg_pwri.patch" Content-Disposition: attachment; filename="0002-Fix-theoretical-overflow-in-Windows-pg_pread-pg_pwri.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt49d5f31 RnJvbSAxOGMwZTFhMWYwNWU1NWU2NjZkYjczOTUxOWYwMzFmNzlkODM0N2E4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjcgRmViIDIwMjQgMjI6MDU6MDUgKzEzMDAKU3ViamVjdDogW1BBVENIIDIv Ml0gRml4IHRoZW9yZXRpY2FsIG92ZXJmbG93IGluIFdpbmRvd3MgcGdfcHJlYWQvcGdfcHdyaXRl LgoKV2UgZG9uJ3QgcmVhbGx5IGV4cGVjdCBhbnl0aGluZyBpbiBQb3N0Z3JlU1FMIHRvIGNhbGwg dGhlc2UgZnVuY3Rpb25zCndpdGggZ2lnYWJ5dGVzIG9mIGRhdGEsIGJ1dCBpbiB0aGVvcnkgaWYg dGhleSBkaWQsIHRoZSBjb252ZXJzaW9uIG9mIHRoZQpzaXplIGFyZ3VtZW50IHRvIERXT1JELCBv ciBvZiB0aGUgcmV0dXJuIHZhbHVlIHRvIHNzaXplX3Qgb24gMzIgYml0CnN5c3RlbXMgY291bGQg b3ZlcmZsb3cuCgpBcHBseSBhbiBhcnRpZmljaWFsIGNhcCBvZiB2ZXJ5IGxhcmdlIHNpemUuICBI eXBvdGhldGljYWwgY2FsbGVycwp3b3JraW5nIGluIHZlcnkgbGFyZ2Ugc2l6ZXMgZXhwZWN0IHRv IGRlYWwgd2l0aCBzaG9ydCB0cmFuc2ZlcnMuICBUaGUKcmlnaHQgY2FwIGhlcmUgbWlnaHQgYXJn dWFibHkgYmUgTWluKFNTSVpFX01BWCwgRFdPUkRfTUFYKSwgYnV0IFdpbmRvd3MKZG9lc24ndCBk ZWZpbmUgdGhvc2UsIGFuZCBwZXJoYXBzIGl0J3MgYmV0dGVyIHRvIGhhdmUgYSBuaWNlbHkgYWxp Z25lZApudW1iZXIgZm9yIHNvbWUgcmVhc29uLCBzbyBsZXQncyBnbyB3aXRoIDFHQi4KClRoZSBw Z19wcmVhZHYvcGdfcHdyaXRldiBmdW5jdGlvbnMgaW4gcG9ydC9wZ19pb3ZlYy5oIHdpbGwgaW5o ZXJpdCB0aGlzCmJlaGF2aW9yLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8xNjcy MjAyLjE3MDM0NDEzNDAlNDBzc3MucGdoLnBhLnVzCi0tLQogc3JjL3BvcnQvd2luMzJwcmVhZC5j ICB8IDMgKysrCiBzcmMvcG9ydC93aW4zMnB3cml0ZS5jIHwgMyArKysKIDIgZmlsZXMgY2hhbmdl ZCwgNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvd2luMzJwcmVhZC5jIGIv c3JjL3BvcnQvd2luMzJwcmVhZC5jCmluZGV4IGUxYTA2NmZkYmUuLmJhYWQ1ZDY2ZDkgMTAwNjQ0 Ci0tLSBhL3NyYy9wb3J0L3dpbjMycHJlYWQuYworKysgYi9zcmMvcG9ydC93aW4zMnByZWFkLmMK QEAgLTMwLDYgKzMwLDkgQEAgcGdfcHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBzaXpl LCBvZmZfdCBvZmZzZXQpCiAJCXJldHVybiAtMTsKIAl9CiAKKwkvKiBBdm9pZCBvdmVyZmxvd2lu ZyBEV09SRCBvciBzc2l6ZV90IHdpdGggYW4gYXJ0aWZpY2lhbCBjYXAuICovCisJc2l6ZSA9IE1p bihzaXplLCAxMDI0ICogMTAyNCAqIDEwMjQpOworCiAJLyogTm90ZSB0aGF0IHRoaXMgY2hhbmdl cyB0aGUgZmlsZSBwb3NpdGlvbiwgZGVzcGl0ZSBub3QgdXNpbmcgaXQuICovCiAJb3ZlcmxhcHBl ZC5PZmZzZXQgPSBvZmZzZXQ7CiAJaWYgKCFSZWFkRmlsZShoYW5kbGUsIGJ1Ziwgc2l6ZSwgJnJl c3VsdCwgJm92ZXJsYXBwZWQpKQpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvd2luMzJwd3JpdGUuYyBi L3NyYy9wb3J0L3dpbjMycHdyaXRlLmMKaW5kZXggYzU0YmYwNDFiZi4uZDFhY2QzNjNiYSAxMDA2 NDQKLS0tIGEvc3JjL3BvcnQvd2luMzJwd3JpdGUuYworKysgYi9zcmMvcG9ydC93aW4zMnB3cml0 ZS5jCkBAIC0zMCw2ICszMCw5IEBAIHBnX3B3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwg c2l6ZV90IHNpemUsIG9mZl90IG9mZnNldCkKIAkJcmV0dXJuIC0xOwogCX0KIAorCS8qIEF2b2lk IG92ZXJmbG93aW5nIERXT1JEIG9yIHNzaXplX3Qgd2l0aCBhbiBhcnRpZmljaWFsIGNhcC4gKi8K KwlzaXplID0gTWluKHNpemUsIDEwMjQgKiAxMDI0ICogMTAyNCk7CisKIAkvKiBOb3RlIHRoYXQg dGhpcyBjaGFuZ2VzIHRoZSBmaWxlIHBvc2l0aW9uLCBkZXNwaXRlIG5vdCB1c2luZyBpdC4gKi8K IAlvdmVybGFwcGVkLk9mZnNldCA9IG9mZnNldDsKIAlpZiAoIVdyaXRlRmlsZShoYW5kbGUsIGJ1 Ziwgc2l6ZSwgJnJlc3VsdCwgJm92ZXJsYXBwZWQpKQotLSAKMi4zOS4zIChBcHBsZSBHaXQtMTQ1 KQoK --0000000000006a552206125b3dc1--