Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1db9Eo-0003ez-Ko for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Jul 2017 17:39:47 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1db9En-0001xF-4C for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Jul 2017 17:39:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1db9Em-0001wv-6p for pgsql-hackers@postgresql.org; Fri, 28 Jul 2017 17:39:44 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by magus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1db9Eh-0005nd-2a for pgsql-hackers@postgresql.org; Fri, 28 Jul 2017 17:39:43 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 58F7021C0564 for ; Fri, 28 Jul 2017 20:39:37 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1501263577; bh=tmumWpuuLkkDX7+6Z5ZmF25koL1SIoAyE3DHgPPtpVE=; h=Date:From:To:Subject; b=qPYugHzOAiGZlLADI2cmd89XCgzLQJafcqDUF49sqjI9Px0OrsG6YVmT6v538LI85 VHjiJcVZw+HKCbOMvg3fnJO8abgDhJslHIRuHza+4Dxr/Cf/wDSwlNqDqUtPw+CQSf gahjx8enk3gS7qV3iV1HfFobbcerfMbhILwX/r6w= Content-Type: multipart/mixed; boundary="=_45645611de690994f94b6c8fc6f07b82" Date: Fri, 28 Jul 2017 20:39:37 +0300 From: Victor Drobny To: Pgsql Hackers Subject: Red-Black tree traversal tests Organization: Postgres Professional Message-ID: X-Sender: v.drobny@postgrespro.ru User-Agent: Roundcube Webmail/1.2.4 List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org --=_45645611de690994f94b6c8fc6f07b82 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hello, Postgres now has its own red-black tree implementation. This tree has 4 types of traversals. In the attachment, you can find module test that checks the correctness of tree traversal strategies. I hope that someone can find it useful. Thank you for attention! -- ------ Victor Drobny Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --=_45645611de690994f94b6c8fc6f07b82 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=rbtree_test.patch Content-Disposition: attachment; filename=rbtree_test.patch; size=16120 ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgYi9zcmMv dGVzdC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IDNjZTk5MDQuLmI3ZWQwYWYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQpAQCAtMTMsNiArMTMsNyBAQCBT VUJESVJTID0gXAogCQkgIHRlc3RfZXh0ZW5zaW9ucyBcCiAJCSAgdGVzdF9w YXJzZXIgXAogCQkgIHRlc3RfcGdfZHVtcCBcCisJCSAgdGVzdF9yYnRyZWUg XAogCQkgIHRlc3RfcmxzX2hvb2tzIFwKIAkJICB0ZXN0X3NobV9tcSBcCiAJ CSAgd29ya2VyX3NwaQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3JidHJlZS8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3JidHJlZS8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjVkY2IzZmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfcmJ0cmVlLy5naXRpZ25vcmUKQEAgLTAsMCArMSw0 IEBACisjIEdlbmVyYXRlZCBzdWJkaXJlY3RvcmllcworL2xvZy8KKy9yZXN1 bHRzLworL3RtcF9jaGVjay8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9yYnRyZWUvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcmJ0cmVlL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjExYTEwY2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfcmJ0cmVlL01ha2VmaWxlCkBAIC0wLDAgKzEsMjEg QEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JidHJlZS9NYWtlZmlsZQor CitNT0RVTEVfYmlnID0gdGVzdF9yYnRyZWUKK09CSlMgPSB0ZXN0Lm8gJChX SU4zMlJFUykKK1BHRklMRURFU0MgPSAidGVzdF9yYnRyZWUgLSByYnRyZWUg dHJpdmVyc2FsIHRlc3RpbmciCisKK0VYVEVOU0lPTiA9IHRlc3RfcmJ0cmVl CitEQVRBID0gdGVzdF9yYnRyZWUtLTEuMC5zcWwKKworUkVHUkVTUyA9IHRl c3RfcmJ0cmVlCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19j b25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQor aW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfcmJ0cmVlCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgor aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAor aW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwu bWsKK2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf cmJ0cmVlL1JFQURNRSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9yYnRyZWUv UkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjll NmM5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcmJ0cmVlL1JFQURNRQpAQCAtMCwwICsxLDE3IEBACit0ZXN0X3JidHJl ZSBpcyBhIG1vZHVsZSB0ZXN0cyBmb3IgY2hlY2tpbmcgdGhlIGNvcnJlY3Ru ZXNzIG9mIGFsbCBraW5kcyBvZgordHJhdmVyc2FsIG9mIHJlZC1ibGFjayB0 cmVlLiBSaWdodCBub3cgcmJ0cmVlIGluIHBvc3RncmVzIGhhcyA0IGtpbmRz IG9mCit0cmF2ZXJzYWxzOiBMZWZ0LUN1cnJlbnQtUmlnaHQsIFJpZ2h0LUN1 cnJlbnQtTGVmdCwgQ3VycmVudC1MZWZ0LVJpZ2h0IGFuZAorTGVmdC1SaWdo dC1DdXJyZW50LgorCitUaGlzIGV4dGVudGlvbiBoYXMgNCBmdW5jdGlvbnMu IEVhY2ggZnVuY3Rpb24gY2hlY2tzIG9uZSB0cmF2ZXJzYWwuCitUaGUgY2hl Y2tpbmcgdGhlIGNvcnJlY3RuZXNzIG9mIGZpcnN0IHR3byB0eXBlcyBhcmUg YmFzZWQgb24gdGhlIGZhY3QgdGhhdAorcmVkLWJsYWNrIHRyZWUgaXMgYSBi aW5hcnkgc2VhcmNoIHRyZWUsIHNvIHRoZSBlbGVtZW50cyBzaG91bGQgYmUg aXRlcmF0ZWQgaW4KK2luY3JlYXNpbmcoZm9yIExlZnQtQ3VycmVudC1SaWdo dCkgb3IgZGVjcmVhc2luZyhmb3IgUmlnaHQtQ3VycmVudC1MZWZ0KQorb3Jk ZXIuCitJbiBvcmRlciB0byB2ZXJpZnkgbGFzdCB0d28gc3RyYXRlZ2llcywg d2Ugd2lsbCBjaGVjayB0aGUgc2VxdWVuY2UgaWYgaXQgaXMKK2NvcnJlY3Qg b3Igbm90LiBGb3IgZ2l2ZW4gcHJlLSBvciBwb3N0LSBvcmRlciB0cmF2ZXJz aW5nIG9mIGJpbmFyeSBzZWFyY2ggdHJlZQoraXQgaXMgYWx3YXlzIHBvc3Np YmxlIHRvIHNheSBpcyBpdCBjb3JyZWN0IG9yIG5vdCBhbmQgdG8gcmVidWls ZCBvcmlnaW5hbCB0cmVlLgorVGhlIGlkZWEgaXMgYmFzZWQgb24gdGhlIGZh Y3QgdGhhdCBpbiBzdWNoIHRyYXZlcnNhbCBzZXF1ZW5jZSBpcyBhbHdheXMK K3Bvc3NpYmxlIHRvIGRldGVybWluZSBjdXJyZW50IG5vZGUsIGxlZnQgc3Vi dHJlZSBhbmQgcmlnaHQgc3VidHJlZS4KKworVGhpcyB0ZXN0cyBhcmUgcGVy Zm9ybWVkIG9uIHJlZC1ibGFjayB0cmVlcyB0aGF0IHN0b3JlIGludGVnZXJz LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9yYnRyZWUvZXhwZWN0ZWQvdGVzdF9yYnRy ZWUub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JidHJlZS9leHBlY3Rl ZC90ZXN0X3JidHJlZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYmU4Y2Q3NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9yYnRyZWUvZXhwZWN0ZWQvdGVzdF9yYnRyZWUub3V0 CkBAIC0wLDAgKzEsMjUgQEAKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9yYnRy ZWU7CitTRUxFQ1QgdGVzdGxlZnRyaWdodCgpOworIHRlc3RsZWZ0cmlnaHQg CistLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHRlc3Ry aWdodGxlZnQoKTsKKyB0ZXN0cmlnaHRsZWZ0IAorLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCB0ZXN0ZGlyZWN0KCk7CisgdGVzdGRp cmVjdCAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgdGVz dGludmVydGVkKCk7CisgdGVzdGludmVydGVkIAorLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3JidHJlZS9pbnRfcmJ0cmVlLmggYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcmJ0cmVlL2ludF9yYnRyZWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5kMTUzNjE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3JidHJlZS9pbnRfcmJ0cmVlLmgKQEAgLTAs MCArMSw0OSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIGludF9yYnRyZWUuaAorICoJCURlZmluaXRpb25zIGZvciBpbnRl Z2VyIHJlZC1ibGFjayB0cmVlCisgKgorICogQ29weXJpZ2h0IChjKSAyMDEz LTIwMTcsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCQlzcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcmJ0cmVlL2ludF9yYnRyZWUuaAorICoKKyAqIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZuZGVmIElOVF9SQlRSRUVfSAor I2RlZmluZSBJTlRfUkJUUkVFX0gKKworI2luY2x1ZGUgImxpYi9yYnRyZWUu aCIKKwordHlwZWRlZiBzdHJ1Y3QgSW50UkJUcmVlTm9kZQoreworCVJCTm9k ZQkJcmJub2RlOworCWludAkJCWtleTsKKworfSBJbnRSQlRyZWVOb2RlOwor CitzdGF0aWMgaW50CitjbXAoY29uc3QgUkJOb2RlICphLCBjb25zdCBSQk5v ZGUgKmIsIHZvaWQgKmFyZykKK3sKKwljb25zdCBJbnRSQlRyZWVOb2RlICpl YSA9IChjb25zdCBJbnRSQlRyZWVOb2RlICopIGE7CisJY29uc3QgSW50UkJU cmVlTm9kZSAqZWIgPSAoY29uc3QgSW50UkJUcmVlTm9kZSAqKSBiOworCisJ cmV0dXJuIGVhLT5rZXkgLSBlYi0+a2V5OworfQorCitzdGF0aWMgUkJOb2Rl ICoKK2FsbG9jKHZvaWQgKmFyZykKK3sKKwlJbnRSQlRyZWVOb2RlICplYTsK KwllYSA9IG1hbGxvYyhzaXplb2YoSW50UkJUcmVlTm9kZSkpOworCXJldHVy biAoUkJOb2RlICopIGVhOworfQorCitzdGF0aWMgdm9pZAorZnIoUkJOb2Rl ICogbm9kZSwgdm9pZCAqYXJnKQoreworCWZyZWUobm9kZSk7Cit9CisKKyNl bmRpZiAvLyBJTlRfUkJUUkVFX0gKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9yYnRyZWUvc3FsL3Rlc3RfcmJ0cmVlLnNxbCBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9yYnRyZWUvc3FsL3Rlc3RfcmJ0cmVlLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGQ5MGMxCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JidHJl ZS9zcWwvdGVzdF9yYnRyZWUuc3FsCkBAIC0wLDAgKzEsNiBAQAorQ1JFQVRF IEVYVEVOU0lPTiB0ZXN0X3JidHJlZTsKKworU0VMRUNUIHRlc3RsZWZ0cmln aHQoKTsKK1NFTEVDVCB0ZXN0cmlnaHRsZWZ0KCk7CitTRUxFQ1QgdGVzdGRp cmVjdCgpOworU0VMRUNUIHRlc3RpbnZlcnRlZCgpOwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9yYnRyZWUvdGVzdC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Ji dHJlZS90ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYjI4NTkxZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9yYnRyZWUvdGVzdC5jCkBAIC0wLDAgKzEsNDA3IEBACivvu78v Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdGVzdC5j CisgKgkJVGVzdCBjb3JyZWN0bmVzcyBvZiByZWQtYmxhY2sgdHJlZSB0cmF2 ZXJzYWxzLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMy0yMDE3LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5U SUZJQ0FUSU9OCisgKgkJc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JidHJlZS90 ZXN0LmMKKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJmbWdy LmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicGdzdGF0 LmgiCisKKyNpbmNsdWRlICJpbnRfcmJ0cmVlLmgiCisKK1BHX01PRFVMRV9N QUdJQzsKKworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0bGVmdHJpZ2h0KTsK K1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdHJpZ2h0bGVmdCk7CitQR19GVU5D VElPTl9JTkZPX1YxKHRlc3RkaXJlY3QpOworUEdfRlVOQ1RJT05fSU5GT19W MSh0ZXN0aW52ZXJ0ZWQpOworCit2b2lkCQlfUEdfaW5pdCh2b2lkKTsKKwor I2RlZmluZSBURVNUX1NJWkUgMTAwMDAwCisKKy8qCisgKiBDaGVja2luZyB0 aGUgY29ycmVjdG5lc3Mgb2YgbGVmdC1yaWdodCB0cmF2ZXJzYWwuCisgKiBM ZWZ0LXJpZ2h0IHRyYXZlcnNhbCBpcyBjb3JyZWN0IGlmIGVsZW1lbnRzIGFy ZQorICogZ2l2ZW4gaW4gdGhlIGluY3JlYXNpbmcgb3JkZXIuCisgKi8KK0Rh dHVtCit0ZXN0bGVmdHJpZ2h0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSW50 UkJUcmVlTm9kZQkgICAqbm9kZTsKKwlSQlRyZWUJCQkgICAqdHJlZSA9IHJi X2NyZWF0ZShzaXplb2YoSW50UkJUcmVlTm9kZSksIGNtcCwgTlVMTCwgYWxs b2MsIGZyLCBOVUxMKTsKKwlSQlRyZWVJdGVyYXRvcgkJaXRlcjsKKwlpbnQJ CQkJCWk7CisJaW50CQkJCQlsYXN0S2V5ID0gLTE7CisJaW50CQkJCQlzaXpl ID0gVEVTVF9TSVpFOworCisJLyogZmlsbGluZyB0cmVlIGJ5IGNvbnNlY3V0 aXZlIG5hdHVyYWwgbnVtYmVycyAqLworCWZvciAoaSA9IDA7IGkgPCBzaXpl OyBpKyspCisJeworCQlJbnRSQlRyZWVOb2RlIG5vZGU7CisJCWJvb2wgaXNO ZXc7CisJCW5vZGUua2V5ID0gaTsKKwkJcmJfaW5zZXJ0KHRyZWUsIChSQk5v ZGUgKikgJm5vZGUsICZpc05ldyk7CisJfQorCisJcmJfYmVnaW5faXRlcmF0 ZSh0cmVlLCBMZWZ0UmlnaHRXYWxrLCAmaXRlcik7CisKKwkvKiBpdGVyYXRl IG92ZXIgdGhlIHRyZWUgKi8KKwl3aGlsZSAoKG5vZGUgPSAoSW50UkJUcmVl Tm9kZSAqKXJiX2l0ZXJhdGUoJml0ZXIpKSAhPSBOVUxMKQorCXsKKwkJLyog Y2hlY2tpbmcgdGhhdCBvcmRlciBpcyBpbmNyZWFzaW5nICovCisJCWlmIChu b2RlLT5rZXkgPD0gbGFzdEtleSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfV0FSTklORyksCisJCQkJCSBlcnJtc2coImxl ZnQtcmlnaHQgd2FsayBnaXZlIGVsZW1lbnRzIG5vdCBpbiBzb3J0ZWQgb3Jk ZXIiKSkpOworCQlsYXN0S2V5ID0gbm9kZS0+a2V5OworCX0KKworCVBHX1JF VFVSTl9WT0lEKCk7Cit9CisKKy8qCisgKiBDaGVja2luZyB0aGUgY29ycmVj dG5lc3Mgb2YgcmlnaHQtbGVmdCB0cmF2ZXJzYWwuCisgKiBSaWdodC1sZWZ0 IHRyYXZlcnNhbCBpcyBjb3JyZWN0IGlmIGVsZW1lbnRzIGFyZQorICogZ2l2 ZW4gaW4gdGhlIGRlY3JlYXNpbmcgb3JkZXIuCisgKi8KK0RhdHVtCit0ZXN0 cmlnaHRsZWZ0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSW50UkJUcmVlTm9k ZQkgICAqbm9kZTsKKwlSQlRyZWUJCQkgICAqdHJlZSA9IHJiX2NyZWF0ZShz aXplb2YoSW50UkJUcmVlTm9kZSksIGNtcCwgTlVMTCwgYWxsb2MsIGZyLCBO VUxMKTsKKwlSQlRyZWVJdGVyYXRvcgkJaXRlcjsKKwlpbnQJCQkJCWk7CisJ aW50CQkJCQlzaXplID0gVEVTVF9TSVpFOworCWludAkJCQkJbGFzdEtleSA9 IHNpemUgKyAxOworCisJLyogZmlsbGluZyB0cmVlIGJ5IGNvbnNlY3V0aXZl IG5hdHVyYWwgbnVtYmVycyAqLworCWZvciAoaSA9IDA7IGkgPCBzaXplOyBp KyspCisJeworCQlJbnRSQlRyZWVOb2RlIG5vZGU7CisJCWJvb2wgaXNOZXc7 CisJCW5vZGUua2V5ID0gaTsKKwkJcmJfaW5zZXJ0KHRyZWUsIChSQk5vZGUg KikgJm5vZGUsICZpc05ldyk7CisJfQorCisJcmJfYmVnaW5faXRlcmF0ZSh0 cmVlLCBSaWdodExlZnRXYWxrLCAmaXRlcik7CisKKwkvKiBpdGVyYXRlIG92 ZXIgdGhlIHRyZWUgKi8KKwl3aGlsZSAoKG5vZGUgPSAoSW50UkJUcmVlTm9k ZSAqKXJiX2l0ZXJhdGUoJml0ZXIpKSAhPSBOVUxMKQorCXsKKwkJLyogY2hl Y2tpbmcgdGhhdCBvcmRlciBpcyBkZWNyZWFzaW5nICovCisJCWlmIChub2Rl LT5rZXkgPj0gbGFzdEtleSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfV0FSTklORyksCisJCQkJCSBlcnJtc2coInJpZ2h0 LWxlZnQgd2FsayBnaXZlIGVsZW1lbnRzIG5vdCBpbiBzb3J0ZWQgb3JkZXIi KSkpOworCQlsYXN0S2V5ID0gbm9kZS0+a2V5OworCX0KKworCVBHX1JFVFVS Tl9WT0lEKCk7Cit9CisKKy8qCisgKiBHZXR0aW5nIE5JTCBlbGVtZW50IG9m IHRoZSB0cmVlCisgKi8KK3N0YXRpYyBSQk5vZGUgKgorR2V0TmlsKFJCTm9k ZSAqbm9kZSkKK3sKKwlpZiAoKHZvaWQgKilub2RlID09ICh2b2lkICopbm9k ZS0+bGVmdCkKKwkJcmV0dXJuIG5vZGU7CisJcmV0dXJuIEdldE5pbChub2Rl LT5sZWZ0KTsKK30KKworLyoKKyAqIENoZWNraW5nIHRoZSBjb3JyZWN0bmVz cyBvZiBnaXZlbiBwcmVvcmRlciB0cmF2ZXJzYWwuCisgKiBGb3IgdGhlIHBy ZW9yZGVyIHRyYXZlcnNhbCB0aGUgcm9vdCBrZXkgaXMgYWx3YXlzIG9uIHRo ZSBmaXJzdCBwb3NpdGlvbi4KKyAqIE5PVEU6IEJTVCBoYXMgb25seSBvbmUg cHJlb3JkZXIgdHJhdmVyc2FsIGFuZCB2aWNlIHZlcnNhLgorICogQW55IHBy ZW9yZGVyIHRyYXZlcnNhbCBjb3JyZXNwb25kcyB0byBvbmx5IG9uZSBCU1Qu CisgKiAgICAgZTEgZTIgZTMgLi4uIGVrIC4uLiBlbGVuCisgKiAgICAgXiAg XiAgICAgICAgIF4KKyAqICBoZWFkICBsZWZ0ICAgICByaWdodAorICogZTEg PiBlaSBmb3IgYWxsIGkgaW4gWzI7IGsgLSAxXQorICogZTEgPCBlaSBmb3Ig YWxsIGkgaW4gW2s7IGxlbl0KKyAqLworc3RhdGljIGJvb2wKK1ZhbGlkYXRl UHJlb3JkZXJJbnQoaW50ICogYXJyYXksIGludCBsZW4pCit7CisJaW50CSAg ICpsZWZ0ID0gYXJyYXkgKyAxOworCWludAkgICAqcmlnaHQgPSBsZWZ0Owor CWludAkgICAqdG1wOworCisJaWYgKGxlbiA8PSAxKQorCQlyZXR1cm4gdHJ1 ZTsKKworCS8qIHNlYXJjaGluZyBmb3IgdGhlIHJpZ2h0IHN1YnRyZWUgKi8K Kwl3aGlsZSAocmlnaHQgPCBhcnJheSArIGxlbiAmJiAqcmlnaHQgPD0gKmFy cmF5KQorCQlyaWdodCsrOworCisJLyogY2hlY2tpbmcgdGhhdCByaWdodCBz dWJ0cmVlIGhhcyBvbmx5IGVsZW1lbnRzCisJICogdGhhdCBhcmUgYmlnZ2Vy IHRoYW4gY3VycmVudCAqLworCXRtcCA9IHJpZ2h0OworCXdoaWxlICh0bXAg PCBhcnJheSArIGxlbikKKwl7CisJCWlmICgqdG1wIDw9ICphcnJheSkKKwkJ CXJldHVybiBmYWxzZTsKKwkJdG1wKys7CisJfQorCisJLyogY2hlY2tpbmcg bGVmdCBzdWJ0cmVlIGFuZCByaWdodCBzdWJ0cmVlIHJlY3Vyc2l2ZWx5ICov CisJcmV0dXJuIFZhbGlkYXRlUHJlb3JkZXJJbnQobGVmdCwgcmlnaHQgLSBs ZWZ0KSAmJgorCQkgICBWYWxpZGF0ZVByZW9yZGVySW50KHJpZ2h0LCBhcnJh eSArIGxlbiAtIHJpZ2h0KTsKK30KKworLyogQ2hlY2tpbmcgdHJhdmVyc2Fs IGJ5IHRyYXZlcnNpbmcgdGhlIHRyZWUgKi8KK3N0YXRpYyBib29sCitWYWxp ZGF0ZVByZW9yZGVySW50VHJlZShJbnRSQlRyZWVOb2RlICpub2RlLCBpbnQg KmFycmF5LCBpbnQgbGVuLCB2b2lkICpudWxsKQoreworCWludAkgICAqcmln aHQgPSBhcnJheTsKKwlpbnQJCXJpZ2h0VmFsdWU7CisJaW50CQlsZWZ0VmFs dWU7CisJaW50CQlpOworCWlmIChub2RlID09IG51bGwpCisJCXJldHVybiBs ZW4gPT0gMDsKKwlpZiAobm9kZS0+a2V5ICE9ICphcnJheSkKKwkJcmV0dXJu IGZhbHNlOworCS8qIElmIG5vZGUgaGFzIGxlZnQgY2hpbGQgLT4gY2hlY2sg aXQgKi8KKwlpZiAoKHZvaWQgKilub2RlLT5yYm5vZGUubGVmdCAhPSBudWxs KQorCXsKKwkJbGVmdFZhbHVlID0gKChJbnRSQlRyZWVOb2RlICopbm9kZS0+ cmJub2RlLmxlZnQpLT5rZXk7CisJCWlmIChsZWZ0VmFsdWUgIT0gYXJyYXlb MV0pCisJCQlyZXR1cm4gZmFsc2U7CisJCS8qIHNlYXJjaGluZyBmb3Igcmln aHQgcGFydCAqLworCQlpZiAoKHZvaWQgKilub2RlLT5yYm5vZGUucmlnaHQg IT0gbnVsbCkKKwkJeworCQkJcmlnaHRWYWx1ZSA9ICgoSW50UkJUcmVlTm9k ZSAqKW5vZGUtPnJibm9kZS5yaWdodCktPmtleTsKKwkJCWkgPSAwOworCQkJ d2hpbGUgKGFycmF5W2ldICE9IHJpZ2h0VmFsdWUpCisJCQl7CisJCQkJaSsr OworCQkJCWlmIChpID4gbGVuKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9 CisJCQlyaWdodCA9IGFycmF5ICsgaTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CXJpZ2h0ID0gYXJyYXkgKyBsZW47CisJCX0KKwkJaWYgKCFWYWxpZGF0ZVBy ZW9yZGVySW50VHJlZSgoSW50UkJUcmVlTm9kZSAqKW5vZGUtPnJibm9kZS5s ZWZ0LCBhcnJheSArIDEsIHJpZ2h0IC0gYXJyYXkgLSAxLCBudWxsKSkKKwkJ CXJldHVybiBmYWxzZTsKKwl9CisKKwkvKiBJZiBub2RlIGhhcyByaWdodCBj aGlsZCAtPiBjaGVjayBpdCAqLworCWlmICgodm9pZCAqKW5vZGUtPnJibm9k ZS5yaWdodCAhPSBudWxsKQorCXsKKwkJcmlnaHRWYWx1ZSA9ICgoSW50UkJU cmVlTm9kZSAqKW5vZGUtPnJibm9kZS5yaWdodCktPmtleTsKKwkJLyogaWYg bGVmdCBjaGlsZCBpcyBub3QgbnVsbCAtPiByaWdodCBpcyBwcm9wZXJseSBz ZXQsIG90aGVyd2lzZSBzZXQgaXQgbm93ICovCisJCWlmIChyaWdodCA9PSBh cnJheSkKKwkJCXJpZ2h0Kys7CisJCWlmIChyaWdodFZhbHVlICE9ICpyaWdo dCkKKwkJCXJldHVybiBmYWxzZTsKKwkJcmV0dXJuIFZhbGlkYXRlUHJlb3Jk ZXJJbnRUcmVlKChJbnRSQlRyZWVOb2RlICopbm9kZS0+cmJub2RlLnJpZ2h0 LCByaWdodCwgYXJyYXkgKyBsZW4gLSByaWdodCwgbnVsbCk7CisJfQorCXJl dHVybiB0cnVlOworfQorCisvKgorICogQ2hlY2tpbmcgdGhlIGNvcnJlY3Ru ZXNzIG9mIHByZW9yZGVyKGRpcmVjdCkgdHJhdmVyc2FsLgorICogRmlyc3Rs eSwgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBzZXF1ZW5jZSBieSBpdHNlbGYg aXMgY2hlY2tlZC4KKyAqIFNlY29uZGx5LCBhIGNvcnJlc3BvbmRhbmNlIHRv IHRoZSB0cmVlIGlzIGNoZWNrZWQuCisgKi8KK0RhdHVtCit0ZXN0ZGlyZWN0 KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSW50UkJUcmVlTm9kZQkgICAqbm9k ZTsKKwlSQlRyZWUJCQkgICAqdHJlZSA9IHJiX2NyZWF0ZShzaXplb2YoSW50 UkJUcmVlTm9kZSksIGNtcCwgTlVMTCwgYWxsb2MsIGZyLCBOVUxMKTsKKwlS QlRyZWVJdGVyYXRvcgkJaXRlcjsKKwl2b2lkCQkJICAgKm51bGw7CisJaW50 CQkJCQlzaXplID0gVEVTVF9TSVpFOworCWludAkJCQkgICAqZWxlbWVudHM7 CisJaW50CQkJCQlpOworCisJZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykK Kwl7CisJCUludFJCVHJlZU5vZGUJbm9kZTsKKwkJYm9vbAkJCWlzTmV3Owor CQlub2RlLmtleSA9IGk7CisJCXJiX2luc2VydCh0cmVlLCAoUkJOb2RlICop ICZub2RlLCAmaXNOZXcpOworCX0KKworCWVsZW1lbnRzID0gKGludCAqKSBt YWxsb2Moc2l6ZW9mKGludCkgKiBzaXplKTsKKwlyYl9iZWdpbl9pdGVyYXRl KHRyZWUsIERpcmVjdFdhbGssICZpdGVyKTsKKwlpID0gMDsKKworCXdoaWxl ICgobm9kZSA9IChJbnRSQlRyZWVOb2RlICopcmJfaXRlcmF0ZSgmaXRlcikp ICE9IE5VTEwpCisJeworCQllbGVtZW50c1tpKytdID0gbm9kZS0+a2V5Owor CX0KKworCWlmIChpICE9IHNpemUgfHwgIVZhbGlkYXRlUHJlb3JkZXJJbnQo ZWxlbWVudHMsIHNpemUpKQorCXsKKwkJZnJlZShlbGVtZW50cyk7CisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XQVJOSU5HKSwK KwkJCQkgZXJybXNnKCJwcmVvcmRlciB3YWxrIGdpdmUgZWxlbWVudHMgbm90 IGluIHRoZSBjb3JyZWN0IG9yZGVyIikpKTsKKworCX0KKworCW51bGwgPSAo dm9pZCAqKUdldE5pbCgqKFJCTm9kZSAqKil0cmVlKTsKKwlpZiAoIVZhbGlk YXRlUHJlb3JkZXJJbnRUcmVlKCooSW50UkJUcmVlTm9kZSAqKil0cmVlLCBl bGVtZW50cywgc2l6ZSwgbnVsbCkpCisJeworCQlmcmVlKGVsZW1lbnRzKTsK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dBUk5J TkcpLAorCQkJCSBlcnJtc2coInByZW9yZGVyIHdhbGsgZ2l2ZSBlbGVtZW50 cyBub3QgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgaW4gdHJlZSBjaGVjayIpKSk7 CisKKwl9CisKKwlmcmVlKGVsZW1lbnRzKTsKKwlQR19SRVRVUk5fVk9JRCgp OworfQorCisvKgorICogQ2hlY2tpbmcgdGhlIGNvcnJlY3RuZXNzIG9mIGdp dmVuIHBvc3RvcmRlciB0cmF2ZXJzYWwKKyAqIEZvciB0aGUgcG9zdG9yZGVy IHRyYXZlcnNhbCB0aGUgcm9vdCBrZXkgaXMgYWx3YXlzIHRoZSBsYXN0Lgor ICogTk9URTogQlNUIGhhcyBvbmx5IG9uZSBwb3N0b3JkZXIgdHJhdmVyc2Fs IGFuZCB2aWNlIHZlcnNhCisgKiBBbnkgcG9zdG9yZGVyIHRyYXZlcnNhbCBj b3JyZXNwb25kcyB0byBvbmx5IG9uZSBCU1QKKyAqLworc3RhdGljIGJvb2wK K1ZhbGlkYXRlUG9zdG9yZGVySW50KGludCAqIGFycmF5LCBpbnQgbGVuKQor eworCWludAkJICAgKmxlZnQgPSBhcnJheTsKKwlpbnQJCSAgICpyaWdodCA9 IGxlZnQ7CisJaW50CQkgICAqdG1wOworCisJaWYgKGxlbiA8PSAxKQorCQly ZXR1cm4gdHJ1ZTsKKworCS8qIHNlYXJjaGluZyBmb3IgdGhlIHJpZ2h0IHN1 YnRyZWUgKi8KKwl3aGlsZSAocmlnaHQgPCBhcnJheSArIGxlbiAmJiAqcmln aHQgPD0gYXJyYXlbbGVuIC0gMV0pCisJCXJpZ2h0Kys7CisKKwkvKiBjaGVj a2luZyB0aGF0IHJpZ2h0IHN1YnRyZWUgaGFzIG9ubHkgZWxlbWVudHMKKwkg KiB0aGF0IGFyZSBiaWdnZXIgdGhhbiBjdXJyZW50ICovCisJdG1wID0gcmln aHQ7CisJd2hpbGUgKHRtcCA8IGFycmF5ICsgbGVuIC0gMSkKKwl7CisJCWlm ICgqdG1wIDw9IGFycmF5W2xlbiAtIDFdKQorCQkJcmV0dXJuIGZhbHNlOwor CQl0bXArKzsKKwl9CisKKwkvKiBDaGVja2luZyBsZWZ0IHN1YnRyZWUgYW5k IHJpZ2h0IHN1YnRyZWUgcmVjdXJzaXZlbHkgKi8KKwlyZXR1cm4gVmFsaWRh dGVQb3N0b3JkZXJJbnQobGVmdCwgcmlnaHQgLSBsZWZ0KSAmJgorCQkgICBW YWxpZGF0ZVBvc3RvcmRlckludChyaWdodCwgYXJyYXkgKyBsZW4gLSByaWdo dCAtIDEpOworfQorCisvKiBDaGVja2luZyB0cmF2ZXJzYWwgYnkgdHJhdmVy c2luZyB0aGUgdHJlZSAqLworc3RhdGljIGJvb2wKK1ZhbGlkYXRlUG9zdG9y ZGVySW50VHJlZShJbnRSQlRyZWVOb2RlICpub2RlLCBpbnQgKmFycmF5LCBp bnQgbGVuLCB2b2lkICpudWxsLCBpbnQgZGVwdGgpCit7CisJaW50CQkgICAq cmlnaHQgPSBhcnJheTsKKwlpbnQJCQlsZWZ0VmFsdWU7CisJaW50CQkJaTsK KwlpZiAobm9kZSA9PSBudWxsKQorCQlyZXR1cm4gbGVuID09IDA7CisJaWYg KG5vZGUtPmtleSAhPSBhcnJheVtsZW4gLSAxXSkKKwkJcmV0dXJuIGZhbHNl OworCisJLyogSWYgbm9kZSBoYXMgbGVmdCBjaGlsZCAtPiBjaGVjayBpdCAq LworCWlmICgodm9pZCAqKW5vZGUtPnJibm9kZS5sZWZ0ICE9IG51bGwpCisJ eworCQlsZWZ0VmFsdWUgPSAoKEludFJCVHJlZU5vZGUgKilub2RlLT5yYm5v ZGUubGVmdCktPmtleTsKKwkJLyogc2VhcmNoaW5nIGZvciByaWdodCBwYXJ0 ICovCisJCWlmICgodm9pZCAqKW5vZGUtPnJibm9kZS5yaWdodCAhPSBudWxs KQorCQl7CisJCQlpID0gMDsKKwkJCXdoaWxlIChhcnJheVtpXSAhPSBsZWZ0 VmFsdWUpCisJCQl7CisJCQkJaSsrOworCQkJCWlmIChpID49IGxlbikKKwkJ CQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQkJcmlnaHQgPSBhcnJheSArIGkg KyAxOworCQl9CisJCWVsc2UKKwkJeworCQkJcmlnaHQgPSBhcnJheSArIGxl biAtIDE7CisJCX0KKwkJaWYgKCFWYWxpZGF0ZVBvc3RvcmRlckludFRyZWUo KEludFJCVHJlZU5vZGUgKilub2RlLT5yYm5vZGUubGVmdCwgYXJyYXksIHJp Z2h0IC0gYXJyYXksIG51bGwsIGRlcHRoICsgMSkpCisJCQlyZXR1cm4gZmFs c2U7CisJfQorCisJLyogSWYgbm9kZSBoYXMgcmlnaHQgY2hpbGQgLT4gY2hl Y2sgaXQgKi8KKwlpZiAoKHZvaWQgKilub2RlLT5yYm5vZGUucmlnaHQgIT0g bnVsbCkKKwl7CisJCXJldHVybiBWYWxpZGF0ZVBvc3RvcmRlckludFRyZWUo KEludFJCVHJlZU5vZGUgKilub2RlLT5yYm5vZGUucmlnaHQsIHJpZ2h0LCBh cnJheSArIGxlbiAtIHJpZ2h0IC0gMSwgbnVsbCwgZGVwdGggKyAxKTsKKwl9 CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBDaGVja2luZyB0aGUgY29y cmVjdG5lc3Mgb2YgcG9zb3JkZXIoaW52ZXJ0ZWQpIHRyYXZlcnNhbC4KKyAq IEZpcnN0bHksIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgc2VxdWVuY2UgYnkg aXRzZWxmIGlzIGNoZWNrZWQuCisgKiBTZWNvbmRseSwgYSBjb3JyZXNwb25k YW5jZSB0byB0aGUgdHJlZSBpcyBjaGVja2VkLgorICovCitEYXR1bQordGVz dGludmVydGVkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSW50UkJUcmVlTm9k ZQkgICAqbm9kZTsKKwlSQlRyZWUJCQkgICAqdHJlZSA9IHJiX2NyZWF0ZShz aXplb2YoSW50UkJUcmVlTm9kZSksIGNtcCwgTlVMTCwgYWxsb2MsIGZyLCBO VUxMKTsKKwlSQlRyZWVJdGVyYXRvcgkJaXRlcjsKKwl2b2lkCQkJICAgKm51 bGw7CisJaW50CQkJCQlzaXplID0gVEVTVF9TSVpFOworCWludAkJCQkgICAq ZWxlbWVudHM7CisJaW50CQkJCQlpOworCisJZm9yIChpID0gMDsgaSA8IHNp emU7IGkrKykKKwl7CisJCUludFJCVHJlZU5vZGUgbm9kZTsKKwkJYm9vbCBp c05ldzsKKwkJbm9kZS5rZXkgPSBpOworCQlyYl9pbnNlcnQodHJlZSwgKFJC Tm9kZSAqKSAmbm9kZSwgJmlzTmV3KTsKKwl9CisKKwllbGVtZW50cyA9IChp bnQgKikgbWFsbG9jKHNpemVvZihpbnQpICogc2l6ZSk7CisJcmJfYmVnaW5f aXRlcmF0ZSh0cmVlLCBJbnZlcnRlZFdhbGssICZpdGVyKTsKKwlpID0gMDsK KworCXdoaWxlICgobm9kZSA9IChJbnRSQlRyZWVOb2RlICopcmJfaXRlcmF0 ZSgmaXRlcikpICE9IE5VTEwpCisJeworCQllbGVtZW50c1tpKytdID0gbm9k ZS0+a2V5OworCX0KKworCWlmIChpICE9IHNpemUgfHwgIVZhbGlkYXRlUG9z dG9yZGVySW50KGVsZW1lbnRzLCBzaXplKSkKKwl7CisJCWZyZWUoZWxlbWVu dHMpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf V0FSTklORyksCisJCQkJIGVycm1zZygicG9zdG9yZGVyIHdhbGsgZ2l2ZSBl bGVtZW50cyBub3QgaW4gdGhlIGNvcnJlY3Qgb3JkZXIiKSkpOworCisJfQor CisJbnVsbCA9ICh2b2lkICopR2V0TmlsKCooUkJOb2RlICoqKXRyZWUpOwor CWlmICghVmFsaWRhdGVQb3N0b3JkZXJJbnRUcmVlKCooSW50UkJUcmVlTm9k ZSAqKil0cmVlLCBlbGVtZW50cywgc2l6ZSwgbnVsbCwgMCkpCisJeworCQlm cmVlKGVsZW1lbnRzKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX1dBUk5JTkcpLAorCQkJCSBlcnJtc2coInBvc3RvcmRlciB3 YWxrIGdpdmUgZWxlbWVudHMgbm90IGluIHRoZSBjb3JyZWN0IG9yZGVyIGlu IHRyZWUgY2hlY2siKSkpOworCisJfQorCisJZnJlZShlbGVtZW50cyk7CisJ UEdfUkVUVVJOX1ZPSUQoKTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3JidHJlZS90ZXN0X3JidHJlZS0tMS4wLnNxbCBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9yYnRyZWUvdGVzdF9yYnRyZWUtLTEuMC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3NzQ2 YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9y YnRyZWUvdGVzdF9yYnRyZWUtLTEuMC5zcWwKQEAgLTAsMCArMSwyMCBAQAor Lyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3JidHJlZS90ZXN0X3JidHJlZS0t MS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNl ZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgor XGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfcmJ0cmVlIiB0byBs b2FkIHRoaXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3Rs ZWZ0cmlnaHQoKQorCVJFVFVSTlMgcGdfY2F0YWxvZy52b2lkIFNUUklDVAor CUFTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBG VU5DVElPTiB0ZXN0cmlnaHRsZWZ0KCkKKwlSRVRVUk5TIHBnX2NhdGFsb2cu dm9pZCBTVFJJQ1QKKwlBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBD OworCitDUkVBVEUgRlVOQ1RJT04gdGVzdGRpcmVjdCgpCisJUkVUVVJOUyBw Z19jYXRhbG9nLnZvaWQgU1RSSUNUCisJQVMgJ01PRFVMRV9QQVRITkFNRScg TEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RpbnZlcnRlZCgp CisJUkVUVVJOUyBwZ19jYXRhbG9nLnZvaWQgU1RSSUNUCisJQVMgJ01PRFVM RV9QQVRITkFNRScgTEFOR1VBR0UgQzsKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfcmJ0 cmVlL3Rlc3RfcmJ0cmVlLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfcmJ0cmVlL3Rlc3RfcmJ0cmVlLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMmZhZGU2YQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9yYnRyZWUvdGVzdF9yYnRyZWUu Y29udHJvbApAQCAtMCwwICsxLDQgQEAKK2NvbW1lbnQgPSAnVGVzdCByYnRy ZWUgdHJpdmVyc2FsJworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVs ZV9wYXRobmFtZSA9ICckbGliZGlyL3Rlc3RfcmJ0cmVlJworcmVsb2NhdGFi bGUgPSB0cnVlCg== --=_45645611de690994f94b6c8fc6f07b82 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --=_45645611de690994f94b6c8fc6f07b82--