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.96) (envelope-from ) id 1w5WA5-003KXI-0Z for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 21:53:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5WA3-00GmVD-2B for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 21:53:12 +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.96) (envelope-from ) id 1w5WA3-00GmUr-15 for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 21:53:11 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5WA0-000000018qH-0Z3K for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 21:53:11 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-668d70fabc4so532869a12.1 for ; Wed, 25 Mar 2026 14:53:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774475588; cv=none; d=google.com; s=arc-20240605; b=jRTXqOA0hQVSI4aTjNEH1KOb0r9L1vMx/eRVo17UuvY1H2GMIMzjea0OkBs0TaD0qJ gnBhQ1VFOelZYaEswj4wNKy22M/hvalPan2nBDA5bQmRjb5r9LWjRlI0UE/lZYvijigy C+izZ0gsYIkqtiBkmxWdNFz7F/NmDMTNXNe9LGL7j7lL3K5io2VgK75Kzu7aqS1Xvc7v z1a0yg57zOFn0wGqywtxY1uh6ghZzXfJ0l8TqrqDgj4UvPVuS63l+lR4y/lmv9uvPq1x qeHlekJz96YhYo8HcB7HtnbFHBj25nypPlZEQBBpvP1ILlOMw0EBdFF/Ro+BZrPrdH+s pdiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Z/DicebgWYG0eAlXosBpaoewKfhT/F4dC5VSXM5wy/E=; fh=f++R1UPDagM6ceFu8LmHSHEzn77Ot9zth2gw3/fRjpU=; b=j59m9Au3EVRO8C6YG4pNTsYqvzcO4+yuO1PkCOhyHvJaau2n3VPvstl4mBFCcahaHv X7IdZOnh7TE3vh9PYr9HR2VKdnqkkjLJFPL9h3/ouMRR5chl8SMFZEn61Su+UbyoJa6D ylmuHs+Btfe0CQ8y6dbq1CpySz1/kSmoQjBIlyajVne0K5mgCQ4L/sC4ylSIPn9C7sDF O7HltrEKh9/awnAFelRaak7lyDUpPdfYTz+wB5Ac3pMu3rPsl/WgEtneIqzlqQFGzqQa tgxbMgK44K2jPfsmSKj/NCGyHXSVWSHX2j17Rny3RpiTbX9lK3yttzrpgkfN/0u/KwUC 36cw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774475588; x=1775080388; 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=Z/DicebgWYG0eAlXosBpaoewKfhT/F4dC5VSXM5wy/E=; b=SWh5OpWKarEI6mPnyCTX0c/jWCg2o118R/7ufhOOAm0qMWg2WUNkpketO7alZZiIOU KveuvN6395pXbzluqvebJwJmMzfCZB4r26sSxki+eG92TSnPNCK6D3yyHJT3u40Tyjuq C+NjNg+oWMGsw8Tp3CzQupirn26cQFxMiRhJO+iS/MDfw7/OSiZ5d9DkDiSND89SlolG nwBLWCHa7rNh9b6i+4Y3SXqPj/Xci7SeY3muFObRAcXBCay6DeiA1taVF/cK3jXrxk4b 9ZHYX+/bpkA3tMvwtPTt1on6P/wcEhEsdOUQZVgmPoJm/TdKr6dDTNWuj/X5RB2T0Rvm P8hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774475588; x=1775080388; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Z/DicebgWYG0eAlXosBpaoewKfhT/F4dC5VSXM5wy/E=; b=bpScOj2GTJDWVwdmHwJ2cALt4zJAF8EFEO/s7LSzUl90xlpbNCD6rTyez5IwFPMAA+ 6GUHMwOSXCikIT6l3jaijB8Gsfs6B30C8vvLWQiXCZTbON3I7D2UchOEKxaBUGsf5jL0 FWhPEP2GUxe7VbDHhQPOcb4x2232E4hhCiGRG0ARMPbvYyG0AIwOzxOdafP422NevqDA k8qmDskfAIl/3TxvS4TCG+xIznOkDooofjhUk0sSPXF4Cx4FhtNiJ1EqWsiGHTgnDOJq sk2GGwYFnJnS5qfCnHCRFieUrQ0P5eUlbKNhOkK4oDtNm2CqYZ2VkTS1JoepBgFUWEUZ az0w== X-Gm-Message-State: AOJu0Yx476H4euMs15mM53LzFysAQLOdxmxKObNXC6jlA30kDpy5RQ30 dMRoF/ofdNyKNyVkbNpB2bVYaQiy+fF5+Afh0Q8Oj5HFITyP2Xlcuvt60WOK1EjUiwwQvuzCFc/ 2KcC2akjDfVsEpGJqQmOZAzW2DpsJ/JZa8AoWKRQ= X-Gm-Gg: ATEYQzyGqMKRYsZebcbldyUva9hHHKptptSat9km1PW182uYO26YYlVL0N93l+CU9cS rvLiyu/cIwf+HGBzjaRROphwJ0a1qtPgbDjhJ6EstCGgoEm/R6Z4Wzi1iZ37ZgfbbQsWflGO27R jwcLrQRVY/RHHpbWpGgkSfnmkTWqAOhHwjwZppToW3Hhvy0uTU3YuSl0yh9RmLorPECIiK4WAts jotMP1CaYpqiwkOwOXaxv7/dFaEQFLAoNPmaB7WQuh5FdnXQTRGtZzjDhM1mXxfgPAFT2uhOaO2 WbqFeg== X-Received: by 2002:a05:6402:400a:b0:663:6d0a:6f97 with SMTP id 4fb4d7f45d1cf-66a826e17a4mr3570381a12.27.1774475587022; Wed, 25 Mar 2026 14:53:07 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Sami Imseih Date: Wed, 25 Mar 2026 16:52:54 -0500 X-Gm-Features: AQROBzAAVDbwQA_4qXjLntFuoC97li7fGyvjmILuuKohKE8UQD8GgEhgSnWuLdM Message-ID: Subject: Re: dshash_find_or_insert vs. OOM To: Robert Haas Cc: PostgreSQL Hackers , Andres Freund , Thomas Munro Content-Type: multipart/mixed; boundary="00000000000007fe75064de04b99" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000007fe75064de04b99 Content-Type: text/plain; charset="UTF-8" > You need to get rid of the bare blocks. done in v4 > This verifies that dshash_dump() doesn't crash, but not that it > produces useful output. Whether that's worth the infrastructure, I > don't know. I don't think dshash_dump() will be deterministic, as keys may hash to different buckets on different platforms, perhaps. Which is why I did not think it was a good idea to compare the output from the logs. Testing that it does not crash seemed worthwhile to increase the coverage. > 408). The omissions are: some OOM cases, dshash_delete_bucket() > successfully deletes something, concurrency case in resizing, most of > delete_key_from_bucket(), delete_item_from_bucket() iterating more Yes, we can probably address some of these things with more complexity. > than once or returning false. Combining your patch with the test suite > previously mentioned, we get up to 97.1% coverage by lines (396 of > 408). This is solid coverage > So the patch definitely has some value: it adds coverage of 60+ lines > of code. On the other hand, it still feels to me like we'd be far more > likely to notice new dshash bugs based on its existing usages than > because of this. If I were modifying dshash, I wouldn't run this test > suite first; I'd run the regression tests first. Sure, but once a bug is fixed, having direct test coverage fo this bug in a dedicated test suite is a good thing. The NO_OOM flag that started this discussion would not fit neatly in other test suites, AFAICT. -- Sami --00000000000007fe75064de04b99 Content-Type: application/octet-stream; name="v4-0001-Add-test-module-for-dshash.patch" Content-Disposition: attachment; filename="v4-0001-Add-test-module-for-dshash.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn6kxl1x0 RnJvbSA5MzBjMjJlN2VmZGNjYzBhYjg5YTM5NzEwY2VmOTBhMDE0YTk0ZDZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEltc2VpaCA8c2FtaW1zZWloQGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCAxOSBNYXIgMjAyNiAxNToyNjo0NiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjQgMS8x XSBBZGQgdGVzdCBtb2R1bGUgZm9yIGRzaGFzaAoKVGhpcyBleGVyY2lzZXMgdGhlIGNvcmUgZHNo YXNoIEFQSXMgaW5jbHVkaW5nIGluc2VydCwgZmluZCwgc2VxdWVudGlhbApzY2FuLCB2YXJpb3Vz IGRlbGV0ZSBwYXRocywgYW5kIGRzaGFzaF9kdW1wLiBJdCBhbHNvIHRlc3RzIE9PTSBiZWhhdmlv cgpib3RoIHdpdGggYW5kIHdpdGhvdXQgdGhlIERTSEFTSF9JTlNFUlRfTk9fT09NIGZsYWcuCgpE aXNjdXNzaW9uOmh0dHBzOi8vcG9zdGdyLmVzL20vQ0FBNVJaMHRXanN0aFRvZDBPRFBFVzRub05y U3ZZJTJCZ1JXVE14aVE4OS15WS1rOTJCOFElNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy90ZXN0 L21vZHVsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9t b2R1bGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2RzaGFzaC8uZ2l0aWdub3JlICAgICAgIHwgICA0ICsKIHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9kc2hhc2gvTWFrZWZpbGUgICAgICAgICB8ICAyMyArKwogLi4uL3Rlc3RfZHNoYXNo L2V4cGVjdGVkL3Rlc3RfZHNoYXNoLm91dCAgICAgIHwgIDE0ICsrCiBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZHNoYXNoL21lc29uLmJ1aWxkICAgICAgfCAgMzMgKysrCiAuLi4vbW9kdWxlcy90ZXN0 X2RzaGFzaC9zcWwvdGVzdF9kc2hhc2guc3FsICAgfCAgMTAgKwogLi4uL21vZHVsZXMvdGVzdF9k c2hhc2gvdGVzdF9kc2hhc2gtLTEuMC5zcWwgIHwgIDEwICsKIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9kc2hhc2gvdGVzdF9kc2hhc2guYyAgICB8IDIyOCArKysrKysrKysrKysrKysrKysKIC4uLi9t b2R1bGVzL3Rlc3RfZHNoYXNoL3Rlc3RfZHNoYXNoLmNvbnRyb2wgICB8ICAgNCArCiAxMCBmaWxl cyBjaGFuZ2VkLCAzMjggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9kc2hhc2gvLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9kc2hhc2gvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZHNoYXNoL2V4cGVjdGVkL3Rlc3RfZHNoYXNoLm91dAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9kc2hhc2gvbWVzb24uYnVpbGQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZHNoYXNoL3NxbC90ZXN0X2Rz aGFzaC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZHNoYXNo L3Rlc3RfZHNoYXNoLS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2RzaGFzaC90ZXN0X2RzaGFzaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2RzaGFzaC90ZXN0X2RzaGFzaC5jb250cm9sCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKaW5kZXgg MjhjZTNiMzVlZGEuLjUxZjJiMWI0OGM1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL01h a2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKQEAgLTI2LDYgKzI2LDcgQEAg U1VCRElSUyA9IFwKIAkJICB0ZXN0X2N1c3RvbV90eXBlcyBcCiAJCSAgdGVzdF9kZGxfZGVwYXJz ZSBcCiAJCSAgdGVzdF9kc2EgXAorCQkgIHRlc3RfZHNoYXNoIFwKIAkJICB0ZXN0X2RzbV9yZWdp c3RyeSBcCiAJCSAgdGVzdF9lc2NhcGUgXAogCQkgIHRlc3RfZXh0ZW5zaW9ucyBcCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNv bi5idWlsZAppbmRleCAzYWMyOTE2NTZjMS4uZGNmODEzYjA4MjMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWls ZApAQCAtMjcsNiArMjcsNyBAQCBzdWJkaXIoJ3Rlc3RfY3VzdG9tX3N0YXRzJykKIHN1YmRpcign dGVzdF9jdXN0b21fdHlwZXMnKQogc3ViZGlyKCd0ZXN0X2RkbF9kZXBhcnNlJykKIHN1YmRpcign dGVzdF9kc2EnKQorc3ViZGlyKCd0ZXN0X2RzaGFzaCcpCiBzdWJkaXIoJ3Rlc3RfZHNtX3JlZ2lz dHJ5JykKIHN1YmRpcigndGVzdF9lc2NhcGUnKQogc3ViZGlyKCd0ZXN0X2V4dGVuc2lvbnMnKQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RzaGFzaC8uZ2l0aWdub3JlIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RzaGFzaC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi41ZGNiM2ZmOTcyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9kc2hhc2gvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDQgQEAKKyMgR2Vu ZXJhdGVkIHN1YmRpcmVjdG9yaWVzCisvbG9nLworL3Jlc3VsdHMvCisvdG1wX2NoZWNrLwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RzaGFzaC9NYWtlZmlsZSBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9kc2hhc2gvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmFlZmJhM2FmNWZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2RzaGFzaC9NYWtlZmlsZQpAQCAtMCwwICsxLDIzIEBACisjIHNyYy90ZXN0L21v ZHVsZXMvdGVzdF9kc2hhc2gvTWFrZWZpbGUKKworTU9EVUxFX2JpZyA9IHRlc3RfZHNoYXNoCitP QkpTID0gXAorCSQoV0lOMzJSRVMpIFwKKwl0ZXN0X2RzaGFzaC5vCitQR0ZJTEVERVNDID0gInRl c3RfZHNoYXNoIC0gdGVzdCBjb2RlIGZvciBkc2hhc2giCisKK0VYVEVOU0lPTiA9IHRlc3RfZHNo YXNoCitEQVRBID0gdGVzdF9kc2hhc2gtLTEuMC5zcWwKKworUkVHUkVTUyA9IHRlc3RfZHNoYXNo CisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVs bCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZHNoYXNoCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgor aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRv cF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZHNoYXNoL2V4cGVjdGVkL3Rlc3RfZHNoYXNoLm91dCBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9kc2hhc2gvZXhwZWN0ZWQvdGVzdF9kc2hhc2gub3V0Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lMDkzZDZmYTQ1OAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kc2hhc2gvZXhwZWN0ZWQvdGVzdF9kc2hh c2gub3V0CkBAIC0wLDAgKzEsMTQgQEAKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9kc2hhc2g7Cist LSBFeGVyY2lzZSBjb3JlIGRzaGFzaCBvcGVyYXRpb25zLgorU0VMRUNUIHRlc3RfZHNoYXNoX2Jh c2ljKCk7CisgdGVzdF9kc2hhc2hfYmFzaWMgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKKy0tIEV4ZXJjaXNlIE9PTSBoYW5kbGluZzogTk9fT09NIHJldHVybnMgTlVMTCwgcmVn dWxhciBpbnNlcnQgcmFpc2VzIEVSUk9SLgorLS0gVXNlIHRlcnNlIHZlcmJvc2l0eSB0byBpZ25v cmUgdGhlIERFVEFJTCBtZXNzYWdlLgorXHNldCBWRVJCT1NJVFkgdGVyc2UKK1NFTEVDVCB0ZXN0 X2RzaGFzaF9maW5kX29yX2luc2VydF9vb21fZXJyb3IoKTsKK0VSUk9SOiAgb3V0IG9mIG1lbW9y eQorXHNldCBWRVJCT1NJVFkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2RzaGFzaC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kc2hhc2gvbWVz b24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRjMGNlOTM4 Mzc5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RzaGFzaC9tZXNv bi5idWlsZApAQCAtMCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoYykgMjAyNC0yMDI2LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0X2RzaGFzaF9zb3VyY2VzID0g ZmlsZXMoCisgICd0ZXN0X2RzaGFzaC5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRv d3MnCisgIHRlc3RfZHNoYXNoX3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMydmVy X3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0tTkFNRScsICd0ZXN0X2RzaGFzaCcsCisgICAgJy0t RklMRURFU0MnLCAndGVzdF9kc2hhc2ggLSB0ZXN0IGNvZGUgZm9yIGRzaGFzaCcsXSkKK2VuZGlm CisKK3Rlc3RfZHNoYXNoID0gc2hhcmVkX21vZHVsZSgndGVzdF9kc2hhc2gnLAorICB0ZXN0X2Rz aGFzaF9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3Rh bGxfbGlicyArPSB0ZXN0X2RzaGFzaAorCit0ZXN0X2luc3RhbGxfZGF0YSArPSBmaWxlcygKKyAg J3Rlc3RfZHNoYXNoLmNvbnRyb2wnLAorICAndGVzdF9kc2hhc2gtLTEuMC5zcWwnLAorKQorCit0 ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3RfZHNoYXNoJywKKyAgJ3NkJzogbWVzb24uY3VycmVu dF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICdy ZWdyZXNzJzogeworICAgICdzcWwnOiBbCisgICAgICAndGVzdF9kc2hhc2gnLAorICAgIF0sCisg IH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZHNoYXNoL3NxbC90ZXN0 X2RzaGFzaC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZHNoYXNoL3NxbC90ZXN0X2RzaGFz aC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQwZWUzZjFjMzlh Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RzaGFzaC9zcWwvdGVz dF9kc2hhc2guc3FsCkBAIC0wLDAgKzEsMTAgQEAKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9kc2hh c2g7CisKKy0tIEV4ZXJjaXNlIGNvcmUgZHNoYXNoIG9wZXJhdGlvbnMuCitTRUxFQ1QgdGVzdF9k c2hhc2hfYmFzaWMoKTsKKworLS0gRXhlcmNpc2UgT09NIGhhbmRsaW5nOiBOT19PT00gcmV0dXJu cyBOVUxMLCByZWd1bGFyIGluc2VydCByYWlzZXMgRVJST1IuCistLSBVc2UgdGVyc2UgdmVyYm9z aXR5IHRvIGlnbm9yZSB0aGUgREVUQUlMIG1lc3NhZ2UuCitcc2V0IFZFUkJPU0lUWSB0ZXJzZQor U0VMRUNUIHRlc3RfZHNoYXNoX2ZpbmRfb3JfaW5zZXJ0X29vbV9lcnJvcigpOworXHNldCBWRVJC T1NJVFkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RzaGFzaC90 ZXN0X2RzaGFzaC0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kc2hhc2gvdGVzdF9k c2hhc2gtLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg1 YTYyODk4NTBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RzaGFz aC90ZXN0X2RzaGFzaC0tMS4wLnNxbApAQCAtMCwwICsxLDEwIEBACisvKiBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZHNoYXNoL3Rlc3RfZHNoYXNoLS0xLjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlm IHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5T SU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gdGVzdF9kc2hhc2giIHRvIGxvYWQgdGhp cyBmaWxlLiBccXVpdAorCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9kc2hhc2hfYmFzaWMoKSBSRVRV Uk5TIFZPSUQKKwlBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVO Q1RJT04gdGVzdF9kc2hhc2hfZmluZF9vcl9pbnNlcnRfb29tX2Vycm9yKCkgUkVUVVJOUyBWT0lE CisJQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9kc2hhc2gvdGVzdF9kc2hhc2guYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kc2hhc2gvdGVzdF9kc2hhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZTRmZjUyMTZlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZHNoYXNoL3Rlc3RfZHNoYXNoLmMKQEAgLTAsMCArMSwyMjggQEAKKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiB0ZXN0X2RzaGFzaC5jCisgKgkJVGVzdCBkeW5hbWljIHNoYXJlZCBoYXNo IHRhYmxlcyAoZHNoYXNoKS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjQtMjAyNiwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJ CXNyYy90ZXN0L21vZHVsZXMvdGVzdF9kc2hhc2gvdGVzdF9kc2hhc2guYworICoKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJmbWdy LmgiCisjaW5jbHVkZSAibGliL2RzaGFzaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvZHNtX3JlZ2lz dHJ5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKKyNpbmNsdWRlICJ1dGlscy9kc2Eu aCIKKworUEdfTU9EVUxFX01BR0lDOworCisvKiBTaXplIGxpbWl0IGZvciBPT00gdGVzdHMgKi8K KyNkZWZpbmUgVEVTVF9EU0hBU0hfU0laRV9MSU1JVAkoMTI4ICogMTAyNCkKKworLyogTW9yZSB0 aGFuIGVub3VnaCB0byBleGhhdXN0IFRFU1RfRFNIQVNIX1NJWkVfTElNSVQgKi8KKyNkZWZpbmUg VEVTVF9EU0hBU0hfTUFYX09PTV9JVEVSQVRJT05TCTEwMDAwCisKK3R5cGVkZWYgc3RydWN0IFRl c3REc2hhc2hFbnRyeQoreworCWludAkJCWtleTsKKwlpbnQJCQl2YWx1ZTsKK30JCQlUZXN0RHNo YXNoRW50cnk7CisKKy8qIFRvIHZlcmlmeSBwYXlsb2FkIGludGVncml0eSAqLworI2RlZmluZSBL RVlfVE9fVkFMVUUoaykJCSgoaykgXiAweDEyMzQ1Njc4KQorCitzdGF0aWMgY29uc3QgZHNoYXNo X3BhcmFtZXRlcnMgdGVzdF9wYXJhbXMgPSB7CisJc2l6ZW9mKGludCksCQkJCS8qIGtleV9zaXpl ICovCisJc2l6ZW9mKFRlc3REc2hhc2hFbnRyeSksCS8qIGVudHJ5X3NpemUgKi8KKwlkc2hhc2hf bWVtY21wLAorCWRzaGFzaF9tZW1oYXNoLAorCWRzaGFzaF9tZW1jcHksCisJTFdUUkFOQ0hFX0ZJ UlNUX1VTRVJfREVGSU5FRAkvKiB0cmFuY2hlX2lkLCBvdmVyd3JpdHRlbiBhdCBydW50aW1lICov Cit9OworCitzdGF0aWMgdm9pZAoraW5pdF90cmFuY2hlKHZvaWQgKnB0ciwgdm9pZCAqYXJnKQor eworCWludAkJICAgKnRyYW5jaGVfaWQgPSAoaW50ICopIHB0cjsKKworCSp0cmFuY2hlX2lkID0g TFdMb2NrTmV3VHJhbmNoZUlkKCJ0ZXN0X2RzaGFzaCIpOworfQorCisvKgorICogdGVzdF9kc2hh c2hfYmFzaWMKKyAqCisgKiBUZXN0IGluc2VydCwgZmluZCwgc2VxdWVudGlhbCBzY2FuLCBkZWxl dGVfY3VycmVudCwgZGVsZXRlX2tleSwKKyAqIGRlbGV0ZSBvZiBhIG5vbmV4aXN0ZW50IGtleSwg YW5kIGRzaGFzaF9kdW1wLCBhbmQgcmUtaW5zZXJ0aW9ucworICogYWZ0ZXIgZGVsZXRlcy4KKyAq LworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2RzaGFzaF9iYXNpYyk7CitEYXR1bQordGVzdF9k c2hhc2hfYmFzaWMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQJCSAgICp0cmFuY2hlX2lkOwor CWJvb2wJCWZvdW5kOworCWRzYV9hcmVhICAgKmFyZWE7CisJZHNoYXNoX3RhYmxlICpodDsKKwlk c2hhc2hfcGFyYW1ldGVycyBwYXJhbXMgPSB0ZXN0X3BhcmFtczsKKwlkc2hhc2hfc2VxX3N0YXR1 cyBzdGF0dXM7CisJVGVzdERzaGFzaEVudHJ5ICplbnRyeTsKKwlpbnQJCQljb3VudCA9IDEwOwor CWludAkJCWRlbGV0ZV9rZXk7CisJaW50CQkJc2Nhbm5lZDsKKwlpbnQJCQlub25leGlzdGVudF9r ZXk7CisKKwl0cmFuY2hlX2lkID0gR2V0TmFtZWREU01TZWdtZW50KCJ0ZXN0X2RzaGFzaCIsIHNp emVvZihpbnQpLAorCQkJCQkJCQkJaW5pdF90cmFuY2hlLCAmZm91bmQsIE5VTEwpOworCXBhcmFt cy50cmFuY2hlX2lkID0gKnRyYW5jaGVfaWQ7CisKKwlhcmVhID0gZHNhX2NyZWF0ZSgqdHJhbmNo ZV9pZCk7CisJaHQgPSBkc2hhc2hfY3JlYXRlKGFyZWEsICZwYXJhbXMsIE5VTEwpOworCisJLyog SW5zZXJ0IGVudHJpZXMgd2l0aCBhIHBheWxvYWQuICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBj b3VudDsgaSsrKQorCXsKKwkJZW50cnkgPSBkc2hhc2hfZmluZF9vcl9pbnNlcnQoaHQsICZpLCAm Zm91bmQpOworCQlpZiAoZm91bmQpCisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBkdXBsaWNh dGUga2V5ICVkIiwgaSk7CisJCWVudHJ5LT52YWx1ZSA9IEtFWV9UT19WQUxVRShpKTsKKwkJZHNo YXNoX3JlbGVhc2VfbG9jayhodCwgZW50cnkpOworCX0KKworCS8qIFZlcmlmeSBhbGwgZW50cmll cyB2aWEgZmluZCwgY2hlY2tpbmcgYm90aCBrZXkgYW5kIHZhbHVlLiAqLworCWZvciAoaW50IGkg PSAwOyBpIDwgY291bnQ7IGkrKykKKwl7CisJCWVudHJ5ID0gZHNoYXNoX2ZpbmQoaHQsICZpLCBm YWxzZSk7CisJCWlmIChlbnRyeSA9PSBOVUxMIHx8IGVudHJ5LT5rZXkgIT0gaSB8fCBlbnRyeS0+ dmFsdWUgIT0gS0VZX1RPX1ZBTFVFKGkpKQorCQkJZWxvZyhFUlJPUiwgImtleSAlZCBub3QgZm91 bmQgb3IgY29ycnVwdGVkIiwgaSk7CisJCWRzaGFzaF9yZWxlYXNlX2xvY2soaHQsIGVudHJ5KTsK Kwl9CisKKwkvKiBEdW1wIHRoZSBoYXNoIHRhYmxlLiAqLworCWRzaGFzaF9kdW1wKGh0KTsKKwor CS8qIFRyeSB0byBkZWxldGUgYSBrZXkgdGhhdCBkb2VzIG5vdCBleGlzdC4gKi8KKwlub25leGlz dGVudF9rZXkgPSBjb3VudCArIDE7CisJZm91bmQgPSBkc2hhc2hfZGVsZXRlX2tleShodCwgJm5v bmV4aXN0ZW50X2tleSk7CisJaWYgKGZvdW5kKQorCQllbG9nKEVSUk9SLCAiZGVsZXRlIG9mIG5v bmV4aXN0ZW50IGtleSAlZCByZXBvcnRlZCBmb3VuZCIsIG5vbmV4aXN0ZW50X2tleSk7CisKKwkv KiBWZXJpZnkgZW50cnkgY291bnQgdmlhIHNlcXVlbnRpYWwgc2Nhbi4gKi8KKwlzY2FubmVkID0g MDsKKwlkc2hhc2hfc2VxX2luaXQoJnN0YXR1cywgaHQsIGZhbHNlKTsKKwl3aGlsZSAoKGVudHJ5 ID0gZHNoYXNoX3NlcV9uZXh0KCZzdGF0dXMpKSAhPSBOVUxMKQorCQlzY2FubmVkKys7CisJZHNo YXNoX3NlcV90ZXJtKCZzdGF0dXMpOworCisJaWYgKHNjYW5uZWQgIT0gY291bnQpCisJCWVsb2co RVJST1IsICJzZXEgc2NhbiByZXR1cm5lZCAlZCBlbnRyaWVzLCBleHBlY3RlZCAlZCIsIHNjYW5u ZWQsIGNvdW50KTsKKworCS8qIERlbGV0ZSBvbmUgZW50cnkgdmlhIGRzaGFzaF9kZWxldGVfZW50 cnkuICovCisJZGVsZXRlX2tleSA9IDA7CisJZW50cnkgPSBkc2hhc2hfZmluZChodCwgJmRlbGV0 ZV9rZXksIHRydWUpOworCWlmIChlbnRyeSA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAia2V5ICVk IG5vdCBmb3VuZCBmb3IgZGVsZXRlX2VudHJ5IiwgZGVsZXRlX2tleSk7CisJZHNoYXNoX2RlbGV0 ZV9lbnRyeShodCwgZW50cnkpOworCisJLyogVmVyaWZ5IGl0J3MgZ29uZS4gKi8KKwllbnRyeSA9 IGRzaGFzaF9maW5kKGh0LCAmZGVsZXRlX2tleSwgZmFsc2UpOworCWlmIChlbnRyeSAhPSBOVUxM KQorCXsKKwkJZHNoYXNoX3JlbGVhc2VfbG9jayhodCwgZW50cnkpOworCQllbG9nKEVSUk9SLCAi a2V5ICVkIHN0aWxsIHByZXNlbnQgYWZ0ZXIgZGVsZXRlX2VudHJ5IiwgZGVsZXRlX2tleSk7CisJ fQorCisJLyogRGVsZXRlIHJlbWFpbmluZyBlbnRyaWVzIHZpYSBkZWxldGVfY3VycmVudC4gKi8K Kwlkc2hhc2hfc2VxX2luaXQoJnN0YXR1cywgaHQsIHRydWUpOworCXdoaWxlICgoZW50cnkgPSBk c2hhc2hfc2VxX25leHQoJnN0YXR1cykpICE9IE5VTEwpCisJCWRzaGFzaF9kZWxldGVfY3VycmVu dCgmc3RhdHVzKTsKKwlkc2hhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisKKwkvKiBWZXJpZnkgdGFi bGUgaXMgZW1wdHkuICovCisJc2Nhbm5lZCA9IDA7CisJZHNoYXNoX3NlcV9pbml0KCZzdGF0dXMs IGh0LCBmYWxzZSk7CisJd2hpbGUgKChlbnRyeSA9IGRzaGFzaF9zZXFfbmV4dCgmc3RhdHVzKSkg IT0gTlVMTCkKKwkJc2Nhbm5lZCsrOworCWRzaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKKworCWlm IChzY2FubmVkICE9IDApCisJCWVsb2coRVJST1IsICJleHBlY3RlZCBlbXB0eSB0YWJsZSwgZ290 ICVkIGVudHJpZXMiLCBzY2FubmVkKTsKKworCS8qIFJlLWluc2VydCB0byB2ZXJpZnkgdGhlIHRh YmxlIGlzIHJldXNhYmxlIGFmdGVyIGJlaW5nIGVtcHRpZWQuICovCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBjb3VudDsgaSsrKQorCXsKKwkJZW50cnkgPSBkc2hhc2hfZmluZF9vcl9pbnNlcnQoaHQs ICZpLCAmZm91bmQpOworCQlpZiAoZm91bmQpCisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBk dXBsaWNhdGUga2V5ICVkIiwgaSk7CisJCWVudHJ5LT52YWx1ZSA9IEtFWV9UT19WQUxVRShpKTsK KwkJZHNoYXNoX3JlbGVhc2VfbG9jayhodCwgZW50cnkpOworCX0KKworCWRzaGFzaF9kZXN0cm95 KGh0KTsKKwlkc2FfZGV0YWNoKGFyZWEpOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKworLyoK KyAqIHRlc3RfZHNoYXNoX2ZpbmRfb3JfaW5zZXJ0X29vbV9lcnJvcgorICoKKyAqIEZpcnN0LCBm aWxsIHRoZSBoYXNoIHRhYmxlIHVzaW5nIERTSEFTSF9JTlNFUlRfTk9fT09NIHVudGlsIE9PTSBp cyBoaXQKKyAqIGFuZCBoYW5kbGVkIGdyYWNlZnVsbHkuICBUaGVuLCBpbnNlcnQgd2l0aG91dCB0 aGUgZmxhZyB0byB2ZXJpZnkgdGhhdCBPT00KKyAqIHJhaXNlcyBFUlJPUi4gIFRoaXMgYWxzbyBl eGVyY2lzZXMgcmVzaXplKCkgYWxvbmcgdGhlIHdheS4KKyAqLworUEdfRlVOQ1RJT05fSU5GT19W MSh0ZXN0X2RzaGFzaF9maW5kX29yX2luc2VydF9vb21fZXJyb3IpOworRGF0dW0KK3Rlc3RfZHNo YXNoX2ZpbmRfb3JfaW5zZXJ0X29vbV9lcnJvcihQR19GVU5DVElPTl9BUkdTKQoreworCWludAkJ ICAgKnRyYW5jaGVfaWQ7CisJYm9vbAkJZm91bmQ7CisJZHNhX2FyZWEgICAqYXJlYTsKKwlkc2hh c2hfdGFibGUgKmh0OworCWRzaGFzaF9wYXJhbWV0ZXJzIHBhcmFtcyA9IHRlc3RfcGFyYW1zOwor CWludAkJCWtleSA9IDA7CisKKwl0cmFuY2hlX2lkID0gR2V0TmFtZWREU01TZWdtZW50KCJ0ZXN0 X2RzaGFzaCIsIHNpemVvZihpbnQpLAorCQkJCQkJCQkJaW5pdF90cmFuY2hlLCAmZm91bmQsIE5V TEwpOworCXBhcmFtcy50cmFuY2hlX2lkID0gKnRyYW5jaGVfaWQ7CisKKwlhcmVhID0gZHNhX2Ny ZWF0ZSgqdHJhbmNoZV9pZCk7CisJZHNhX3NldF9zaXplX2xpbWl0KGFyZWEsIFRFU1RfRFNIQVNI X1NJWkVfTElNSVQpOworCWh0ID0gZHNoYXNoX2NyZWF0ZShhcmVhLCAmcGFyYW1zLCBOVUxMKTsK KworCS8qIEluc2VydCB1bnRpbCBPT00g4oCUIHdpdGggTk9fT09NIGZsYWcsIHJldHVybnMgTlVM TCBpbnN0ZWFkIG9mIEVSUk9SLiAqLworCWZvciAoa2V5ID0gMDsga2V5IDwgVEVTVF9EU0hBU0hf TUFYX09PTV9JVEVSQVRJT05TOyBrZXkrKykKKwl7CisJCVRlc3REc2hhc2hFbnRyeSAqZW50cnk7 CisKKwkJZW50cnkgPSBkc2hhc2hfZmluZF9vcl9pbnNlcnRfZXh0ZW5kZWQoaHQsICZrZXksICZm b3VuZCwKKwkJCQkJCQkJCQkJICAgRFNIQVNIX0lOU0VSVF9OT19PT00pOworCQlpZiAoZW50cnkg PT0gTlVMTCkKKwkJCWJyZWFrOworCQlkc2hhc2hfcmVsZWFzZV9sb2NrKGh0LCBlbnRyeSk7CisJ fQorCisJaWYgKGtleSA+PSBURVNUX0RTSEFTSF9NQVhfT09NX0lURVJBVElPTlMpCisJCWVsb2co RVJST1IsICJleHBlY3RlZCBvdXQtb2YtbWVtb3J5LCBidXQgY29tcGxldGVkIGFsbCAlZCBpdGVy YXRpb25zIiwKKwkJCSBURVNUX0RTSEFTSF9NQVhfT09NX0lURVJBVElPTlMpOworCisJLyogSW5z ZXJ0IHdpdGhvdXQgTk9fT09NIGZsYWcg4oCUIHRoaXMgc2hvdWxkIHJhaXNlIEVSUk9SLiAqLwor CWZvciAoa2V5ID0gMDsga2V5IDwgVEVTVF9EU0hBU0hfTUFYX09PTV9JVEVSQVRJT05TOyBrZXkr KykKKwl7CisJCVRlc3REc2hhc2hFbnRyeSAqZW50cnk7CisKKwkJZW50cnkgPSBkc2hhc2hfZmlu ZF9vcl9pbnNlcnQoaHQsICZrZXksICZmb3VuZCk7CisJCWlmIChlbnRyeSA9PSBOVUxMKQorCQkJ ZWxvZyhFUlJPUiwgImRzaGFzaF9maW5kX29yX2luc2VydCByZXR1cm5lZCBOVUxMIHVuZXhwZWN0 ZWRseSIpOworCQlkc2hhc2hfcmVsZWFzZV9sb2NrKGh0LCBlbnRyeSk7CisJfQorCisJLyogU2hv dWxkIG5vdCByZWFjaCBoZXJlIOKAlCBPT00gZXJyb3IgaXMgZXhwZWN0ZWQgYWJvdmUuICovCisJ ZWxvZyhFUlJPUiwgImV4cGVjdGVkIG91dC1vZi1tZW1vcnksIGJ1dCBjb21wbGV0ZWQgYWxsICVk IGl0ZXJhdGlvbnMiLAorCQkgVEVTVF9EU0hBU0hfTUFYX09PTV9JVEVSQVRJT05TKTsKKworCVBH X1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZHNo YXNoL3Rlc3RfZHNoYXNoLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZHNoYXNoL3Rl c3RfZHNoYXNoLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjdhYjA2NjZkMjI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Rz aGFzaC90ZXN0X2RzaGFzaC5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAorY29tbWVudCA9ICdUZXN0 IGNvZGUgZm9yIGRzaGFzaCcKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVfcGF0aG5h bWUgPSAnJGxpYmRpci90ZXN0X2RzaGFzaCcKK3JlbG9jYXRhYmxlID0gdHJ1ZQotLSAKMi40Ny4z Cgo= --00000000000007fe75064de04b99--