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 1w7ark-005VFG-2x for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 15:18:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7ari-00Asnw-06 for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 15:18:50 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7arh-00Asno-1V for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 15:18:50 +0000 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7are-00000001zDy-3EnY for pgsql-hackers@postgresql.org; Tue, 31 Mar 2026 15:18:48 +0000 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-41bfec86420so1412791fac.1 for ; Tue, 31 Mar 2026 08:18:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774970325; cv=none; d=google.com; s=arc-20240605; b=d6ZOuPHl3BaIZi7/JeCQ54fRZTUwQudVrmtPGc708O9uCE9BupKjdWXpB+653wyopA B/FHmdhSDxi18pL9YkH1Is7zOQx4dSDbaYQSYWzC57x8Jio7npejlfJnPuN3GZ/X98jJ RGojjSkScymgLPWSoZKzgra6burZ2wmLeTm7ZMFtlV7vk0KIye409OMVVP3LqNS4LL3A WyLA8r/rweBUQtc9e5WhbPDi1swZTT4rCB/2voNe9R4jXoKAafNkZxFRw/KCp/5mQFDO DefepO6XUMdoO3SZflKPNRiKQJc4+lTox0OCBvKm75ftjKiDuLIEB2QNrcz2ivz/ZMkW v12w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=qOzTtbf/QkkDNymMU9hY6a9s3I5PrBuozWSHuXLgjYw=; fh=1HXYIBDilHCQSyLCYDcSexoIQRtOGrHdFUn4PtG4g4E=; b=cB+YedI3N2yGu0zkjwlWlCPi/2oJYVosqijScOSY8d+es2hEMbP4KS9Dm1iSQyEQ01 a/1LhDCsH5cojViHrEc4EnGzNG3OWKK2UBXnBdLHfd4FGVVwB+ZeMrkIsFY8qU1LKwi9 9u/2l0c58RWBPApD0eEiYIQ0yFtfkCwKMVfewX0kDeHrInsVfSlkIoNhVOfOtxL1YwW0 Am8BuqhtwTiQitIe5y8LVsag+COC9ZlGq4NfDfRjmhwMzp0ctEHBSNBhU6X2fgaAWD2w 2RGO+MP3kfIbtz7HZNKSmCDGjxuzXxaMxrFvWBJ9HRnEununA7d0nNhnIhE7are4mz19 cVcw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1774970325; x=1775575125; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=qOzTtbf/QkkDNymMU9hY6a9s3I5PrBuozWSHuXLgjYw=; b=jYio6QJfRjTgTPlLOGLINzRrllzA4NzcuoyPcC4HTykb3lQQCx9qFm/gduojkk0NFl MMoW768rwPvnllqY15NqVSUWXjRqTsJIwkIf7LM/i+xDRv95/F8B1VkUe1Zjwt1NQmkX NtPfRIS72ZsViCtQYo5uL8Ip4jFIpVaI8cnfdew9GbY9MaZJpayPOACJsCwAkIOoV1Q4 0CV1sUcUdcwzJhpMWCqt61A8rfPjHJC04SlQwyBNw4+qQIrN8GaSJuTCb9TGeRkWjV/N cPPyHIqpPDqMsA2yVpp/cIpCSd646ZJvvzcANu0M8xoy13QSQImneo0nGrTg5tjtceER y4MA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774970325; x=1775575125; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=qOzTtbf/QkkDNymMU9hY6a9s3I5PrBuozWSHuXLgjYw=; b=JaRQlqlpD3KZLqtb3uBH8BNLK9C8b+NqBmnmIHsZcNBM1w6ih6WzHdnNeIpZkHQscO 5jeBIEcczYyIpafINikJidpN1VOeTL6jMnlyxFBehG9727PexybIFWmS8X4wb2Fe8k/K y1awz8I4ybmaFS+rQ5ZVLRKDnD0Z3O2Nk3oUgZmIqVM7wh8pva9CU0U/kiTIF5xnT7p9 T3xmJg+H8c7jaqfiNnFhEGFr0WJ3pDCnz4svaN+pYvKsy0skHfSeZRm3jZ2LHKTyO11K Ptg8232plmqiDDe3v7tGtuWvSGjY6L06tKvpog25sHWKJbJA5N64+f4oeM3SzTjIgwqO sNpQ== X-Gm-Message-State: AOJu0YxpyyibqjRlnHjk6u39wt19jMgR1tHDprDSAWXbrETqpHo1Ph/f 97ENLP0W1H7/Ak3T+WC7BLWcAKgeHxAB9K0hosaqb/nXlmNlQfkIhOxo+mD/BtqrUbCtPh+A2sg fEx5D5dEv8h6+GL4GGaw4VZ7wJ4LwWzBeAudzjNR96L8z5toJmzloiOQ= X-Gm-Gg: ATEYQzxq6DR7v1KZ0oJdVRq7St6Y8dEZUoQb/OOitTIeHq7aQPVUEZMNlF2mcNLeuG/ RFVBCBKsipkMQXg/gJrWH6EH08ruqrfJw7PDGhOmm7YniqprqL4sARyd2TUbnQ3EH+hSfM+UX8v qGnwtUGZ3ccIG3MsPbvRgU8J8HZTkqYAP8qG5UUcsL1uPN2S0/s6+uc1UzRTAZXUbqq2By77Q9p GXfXBG2Zzr+KNdshWPYzE+mtAQCHxgijc/lhA9+QF1l30OFpEQqwk+/Ce40oUzt+qmYjgJghXGF KiC5BOecynaMUu7eINHDO9IfYtMdiwdnruC4DQdDQj9b5jA6jnBrm7Ti7Z2O+f0XnG/WXQ== X-Received: by 2002:a05:6870:e0a7:b0:41c:b0bc:d47e with SMTP id 586e51a60fabf-422cfc86579mr25980fac.11.1774970325218; Tue, 31 Mar 2026 08:18:45 -0700 (PDT) MIME-Version: 1.0 From: Aleksander Alekseev Date: Tue, 31 Mar 2026 18:18:33 +0300 X-Gm-Features: AQROBzC5RcaNkLjjydBEIZsEwBzblxZ9TrEkOsMgCqLA3o7z0E2mI_6OFjP5q1A Message-ID: Subject: [PATCH] Add tests for src/backend/nodes/extensible.c To: PostgreSQL Development Content-Type: multipart/mixed; boundary="000000000000b8dfaf064e537b0d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b8dfaf064e537b0d Content-Type: text/plain; charset="UTF-8" Hi, Currently extensible.c is not covered by any tests. The proposed patch fixes this. Also it can serve as an example of using CustomScan and ExtensibleNode. For the reviewers ----------------------- Here is how to check the code coverage: ``` git clean -df rm -r build meson setup --buildtype debug -Db_coverage=true -Dcassert=true -Dinjection_points=true -Dtap_tests=enabled -Dldap=disabled -Dicu=disabled -DPG_TEST_EXTRA="kerberos ldap libpq_encryption load_balance oauth regress_dump_restore ssl wal_consistency_checking xid_wraparound" -Dprefix=/home/eax/pginstall build ninja -C build meson test -C build ninja -C build coverage-html open build/meson-logs/coveragereport/index.html ``` You are going to need `lcov` 1.16 in your $PATH because there are certain problems with newer versions [1]. [1]: https://postgr.es/m/CAJ7c6TN%2BMCh99EZ8YGhXZAdnqvNQYir6E34B_mmcB5KsxCB00A%40mail.gmail.com -- Best regards, Aleksander Alekseev --000000000000b8dfaf064e537b0d Content-Type: text/x-patch; charset="UTF-8"; name="v1-0001-Add-test-module-for-src-backend-nodes-extensible.patch" Content-Disposition: attachment; filename="v1-0001-Add-test-module-for-src-backend-nodes-extensible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mneqz8uu0 RnJvbSBjNjMyZTAwNjVhNWM2ZDE0YWI3ZmYxMWM5MjMxNmIxOWUwZDg3NTdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMzEgTWFyIDIwMjYgMTU6Mzg6MjEgKzAzMDAKU3ViamVjdDog W1BBVENIIHYxXSBBZGQgdGVzdCBtb2R1bGUgZm9yIHNyYy9iYWNrZW5kL25vZGVzL2V4dGVuc2li bGUuYwoKVGhlIG5ldyB0ZXN0IGltcGxlbWVudHMgYSBDdXN0b21TY2FuIHRoYXQgdXNlcyBhbiBF eHRlbnNpYmxlTm9kZSB0byBjYXJyeQpwcml2YXRlIHBsYW5uaW5nIGRhdGEgZnJvbSB0aGUgcGxh bm5lciBpbnRvIHRoZSBleGVjdXRvci4gQSBTUUwgcXVlcnkgYWdhaW5zdAphIHRlc3QgdGFibGUg ZXhlcmNpc2VzIHRoZSBmdWxsIHBpcGVsaW5lIGVuZC10by1lbmQsIHdoaWxlIHRoaW4gd3JhcHBl cgpmdW5jdGlvbnMgY292ZXIgR2V0RXh0ZW5zaWJsZU5vZGVNZXRob2RzKCkgYW5kIEdldEN1c3Rv bVNjYW5NZXRob2RzKCkuCgpBdXRob3I6IEFsZWtzYW5kZXIgQWxla3NlZXYgPGFsZWtzYW5kZXJA dGlnZXJkYXRhLmNvbT4KUmV2aWV3ZWQtYnk6IFRPRE8gRklYTUUKRGlzY3Vzc2lvbjogVE9ETyBG SVhNRQotLS0KIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2libGUvTWFrZWZpbGUgICAgIHwgIDI3 ICsrCiAuLi4vZXhwZWN0ZWQvdGVzdF9leHRlbnNpYmxlLm91dCAgICAgICAgICAgICAgfCAgNjkg KysrKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2libGUvbWVzb24uYnVpbGQgIHwgIDM1 ICsrCiAuLi4vdGVzdF9leHRlbnNpYmxlL3NxbC90ZXN0X2V4dGVuc2libGUuc3FsICAgfCAgNDAg KysKIC4uLi90ZXN0X2V4dGVuc2libGUvdGVzdF9leHRlbnNpYmxlLS0xLjAuc3FsICB8ICAgOCAr CiAuLi4vbW9kdWxlcy90ZXN0X2V4dGVuc2libGUvdGVzdF9leHRlbnNpYmxlLmMgfCAzODkgKysr KysrKysrKysrKysrKysrCiAuLi4vdGVzdF9leHRlbnNpYmxlL3Rlc3RfZXh0ZW5zaWJsZS5jb25m ICAgICAgfCAgIDEgKwogLi4uL3Rlc3RfZXh0ZW5zaWJsZS90ZXN0X2V4dGVuc2libGUuY29udHJv bCAgIHwgICA0ICsKIDEwIGZpbGVzIGNoYW5nZWQsIDU3NSBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2libGUvTWFrZWZpbGUKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS9leHBlY3Rl ZC90ZXN0X2V4dGVuc2libGUub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2libGUvbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS9zcWwvdGVzdF9leHRlbnNpYmxlLnNxbAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpYmxlL3Rlc3RfZXh0ZW5z aWJsZS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpYmxlL3Rlc3RfZXh0ZW5zaWJsZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2libGUvdGVzdF9leHRlbnNpYmxlLmNvbmYKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS90ZXN0X2V4dGVuc2libGUu Y29udHJvbAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgYi9zcmMvdGVz dC9tb2R1bGVzL01ha2VmaWxlCmluZGV4IDI4Y2UzYjM1ZWRhLi40YTY4NmIxMTc1MiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL01h a2VmaWxlCkBAIC0yOCw2ICsyOCw3IEBAIFNVQkRJUlMgPSBcCiAJCSAgdGVzdF9kc2EgXAogCQkg IHRlc3RfZHNtX3JlZ2lzdHJ5IFwKIAkJICB0ZXN0X2VzY2FwZSBcCisJCSAgdGVzdF9leHRlbnNp YmxlIFwKIAkJICB0ZXN0X2V4dGVuc2lvbnMgXAogCQkgIHRlc3RfZ2lucG9zdGluZ2xpc3QgXAog CQkgIHRlc3RfaW50MTI4IFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVp bGQgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IDNhYzI5MTY1NmMxLi43OTBi MDE1OGQ2YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC0yOSw2ICsyOSw3IEBAIHN1YmRpcigndGVz dF9kZGxfZGVwYXJzZScpCiBzdWJkaXIoJ3Rlc3RfZHNhJykKIHN1YmRpcigndGVzdF9kc21fcmVn aXN0cnknKQogc3ViZGlyKCd0ZXN0X2VzY2FwZScpCitzdWJkaXIoJ3Rlc3RfZXh0ZW5zaWJsZScp CiBzdWJkaXIoJ3Rlc3RfZXh0ZW5zaW9ucycpCiBzdWJkaXIoJ3Rlc3RfZ2lucG9zdGluZ2xpc3Qn KQogc3ViZGlyKCd0ZXN0X2ludDEyOCcpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZXh0ZW5zaWJsZS9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpYmxl L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMzY5YWU4 ZTUyYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpYmxl L01ha2VmaWxlCkBAIC0wLDAgKzEsMjcgQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVu c2libGUvTWFrZWZpbGUKKworTU9EVUxFX2JpZyA9IHRlc3RfZXh0ZW5zaWJsZQorT0JKUyA9IFwK KwkkKFdJTjMyUkVTKSBcCisJdGVzdF9leHRlbnNpYmxlLm8KK1BHRklMRURFU0MgPSAidGVzdF9l eHRlbnNpYmxlIC0gdGVzdCBtb2R1bGUgZm9yIGV4dGVuc2libGUgbm9kZSBhbmQgY3VzdG9tIHNj YW4gcmVnaXN0cmF0aW9uIgorCitFWFRFTlNJT04gPSB0ZXN0X2V4dGVuc2libGUKK0RBVEEgPSB0 ZXN0X2V4dGVuc2libGUtLTEuMC5zcWwKKworUkVHUkVTU19PUFRTID0gLS10ZW1wLWNvbmZpZyAk KHRvcF9zcmNkaXIpL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpYmxlL3Rlc3RfZXh0ZW5z aWJsZS5jb25mCitSRUdSRVNTID0gdGVzdF9leHRlbnNpYmxlCisjIERpc2FibGVkIGJlY2F1c2Ug dGhlc2UgdGVzdHMgcmVxdWlyZSAic2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzPXRlc3RfZXh0ZW5z aWJsZSIsCisjIHdoaWNoIHR5cGljYWwgaW5zdGFsbGNoZWNrIHVzZXJzIGRvIG5vdCBoYXZlIChl LmcuIGJ1aWxkZmFybSBjbGllbnRzKS4KK05PX0lOU1RBTExDSEVDSyA9IDEKKworaWZkZWYgVVNF X1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklH KSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpYmxlCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgoraW5jbHVkZSAk KHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRvcF9zcmNkaXIp L2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS9leHBlY3RlZC90ZXN0X2V4dGVuc2libGUub3V0IGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2libGUvZXhwZWN0ZWQvdGVzdF9leHRlbnNpYmxlLm91 dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjExNzY5ZjQ1OTcKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS9leHBlY3Rl ZC90ZXN0X2V4dGVuc2libGUub3V0CkBAIC0wLDAgKzEsNjkgQEAKKy0tIFRlc3RzIGZvciBleHRl bnNpYmxlIG5vZGUgYW5kIGN1c3RvbSBzY2FuIHJlZ2lzdHJhdGlvbgorLS0gKHNyYy9iYWNrZW5k L25vZGVzL2V4dGVuc2libGUuYykKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRlbnNpYmxlOwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gR2V0RXh0ZW5zaWJsZU5vZGVNZXRob2RzKCkgYW5kIEdldEN1c3RvbVNj YW5NZXRob2RzKCkgbG9va3VwIHRlc3RzCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBHZXRFeHRlbnNpYmxlTm9k ZU1ldGhvZHM6IGtub3duIG5hbWUgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBleHRub2RlbmFtZS4K K1NFTEVDVCB0ZXN0X2dldF9leHRlbnNpYmxlX25vZGVfbWV0aG9kcygnVGVzdEV4dE5vZGUnLCBm YWxzZSk7CisgdGVzdF9nZXRfZXh0ZW5zaWJsZV9ub2RlX21ldGhvZHMgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVGVzdEV4dE5vZGUKKygxIHJvdykKKworLS0gR2V0RXh0 ZW5zaWJsZU5vZGVNZXRob2RzOiB1bmtub3duIG5hbWUgd2l0aCBtaXNzaW5nX29rPXRydWUgcmV0 dXJucyBOVUxMLgorU0VMRUNUIHRlc3RfZ2V0X2V4dGVuc2libGVfbm9kZV9tZXRob2RzKCdOb1N1 Y2hFeHROb2RlJywgdHJ1ZSk7CisgdGVzdF9nZXRfZXh0ZW5zaWJsZV9ub2RlX21ldGhvZHMgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIEdldEV4 dGVuc2libGVOb2RlTWV0aG9kczogdW5rbm93biBuYW1lIHdpdGggbWlzc2luZ19vaz1mYWxzZSBy YWlzZXMgRVJST1IuCitTRUxFQ1QgdGVzdF9nZXRfZXh0ZW5zaWJsZV9ub2RlX21ldGhvZHMoJ05v U3VjaEV4dE5vZGUnLCBmYWxzZSk7CitFUlJPUjogIEV4dGVuc2libGVOb2RlTWV0aG9kcyAiTm9T dWNoRXh0Tm9kZSIgd2FzIG5vdCByZWdpc3RlcmVkCistLSBHZXRDdXN0b21TY2FuTWV0aG9kczog a25vd24gbmFtZSByZXR1cm5zIHRoZSByZWdpc3RlcmVkIEN1c3RvbU5hbWUuCitTRUxFQ1QgdGVz dF9nZXRfY3VzdG9tX3NjYW5fbWV0aG9kcygnVGVzdEN1c3RvbVNjYW4nLCBmYWxzZSk7CisgdGVz dF9nZXRfY3VzdG9tX3NjYW5fbWV0aG9kcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFRlc3RDdXN0b21TY2FuCisoMSByb3cpCisKKy0tIEdldEN1c3RvbVNjYW5NZXRob2RzOiB1 bmtub3duIG5hbWUgd2l0aCBtaXNzaW5nX29rPXRydWUgcmV0dXJucyBOVUxMLgorU0VMRUNUIHRl c3RfZ2V0X2N1c3RvbV9zY2FuX21ldGhvZHMoJ05vU3VjaEN1c3RvbVNjYW4nLCB0cnVlKTsKKyB0 ZXN0X2dldF9jdXN0b21fc2Nhbl9tZXRob2RzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKKy0tIEdldEN1c3RvbVNjYW5NZXRob2RzOiB1bmtub3duIG5hbWUg d2l0aCBtaXNzaW5nX29rPWZhbHNlIHJhaXNlcyBFUlJPUi4KK1NFTEVDVCB0ZXN0X2dldF9jdXN0 b21fc2Nhbl9tZXRob2RzKCdOb1N1Y2hDdXN0b21TY2FuJywgZmFsc2UpOworRVJST1I6ICBFeHRl bnNpYmxlTm9kZU1ldGhvZHMgIk5vU3VjaEN1c3RvbVNjYW4iIHdhcyBub3QgcmVnaXN0ZXJlZAor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gRW5kLXRvLWVuZCBDdXN0b21TY2FuIHRlc3QKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NS RUFURSBUQUJMRSB0ZXN0X2V4dGVuc2libGVfdGJsIChpZCBpbnRlZ2VyLCB2YWwgdGV4dCk7CitJ TlNFUlQgSU5UTyB0ZXN0X2V4dGVuc2libGVfdGJsIFZBTFVFUyAoMSwgJ29uZScpLCAoMiwgJ3R3 bycpLCAoMywgJ3RocmVlJyk7CistLSBWZXJpZnkgdGhlIHBsYW5uZXIgY2hvc2Ugb3VyIEN1c3Rv bVNjYW4gKG5vdCBhIFNlcVNjYW4pLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIHZh bCBGUk9NIHRlc3RfZXh0ZW5zaWJsZV90YmwgT1JERVIgQlkgaWQ7CisgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0Cisg ICBTb3J0IEtleTogaWQKKyAgIC0+ICBDdXN0b20gU2NhbiAoVGVzdEN1c3RvbVNjYW4pIG9uIHRl c3RfZXh0ZW5zaWJsZV90YmwKKygzIHJvd3MpCisKKy0tIEV4ZWN1dGUgdGhyb3VnaCB0aGUgQ3Vz dG9tU2NhbjsgZWFjaCBvZiB0aGUgMyBpbnNlcnRlZCByb3dzIGFwcGVhcnMKKy0tIHR3aWNlICg2 IHJvd3MgdG90YWwpLCBwcm92aW5nIHRoZSBjdXN0b20gc2NhbiBsb2dpYyBpcyBpbiBlZmZlY3Qu CitTRUxFQ1QgaWQsIHZhbCBGUk9NIHRlc3RfZXh0ZW5zaWJsZV90YmwgT1JERVIgQlkgaWQsIHZh bDsKKyBpZCB8ICB2YWwgIAorLS0tLSstLS0tLS0tCisgIDEgfCBvbmUKKyAgMSB8IG9uZQorICAy IHwgdHdvCisgIDIgfCB0d28KKyAgMyB8IHRocmVlCisgIDMgfCB0aHJlZQorKDYgcm93cykKKwor RFJPUCBUQUJMRSB0ZXN0X2V4dGVuc2libGVfdGJsOworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRl bnNpYmxlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2libGUvbWVz b24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS9tZXNvbi5idWlsZApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmNkNTMxMmQxYTkKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS9tZXNvbi5idWls ZApAQCAtMCwwICsxLDM1IEBACisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordGVzdF9leHRlbnNpYmxlX3NvdXJjZXMgPSBmaWxlcygK KyAgJ3Rlc3RfZXh0ZW5zaWJsZS5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3Mn CisgIHRlc3RfZXh0ZW5zaWJsZV9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZl cl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAndGVzdF9leHRlbnNpYmxlJywKKyAg ICAnLS1GSUxFREVTQycsICd0ZXN0X2V4dGVuc2libGUgLSB0ZXN0IG1vZHVsZSBmb3IgZXh0ZW5z aWJsZSBub2RlIGFuZCBjdXN0b20gc2NhbiByZWdpc3RyYXRpb24nLF0pCitlbmRpZgorCit0ZXN0 X2V4dGVuc2libGUgPSBzaGFyZWRfbW9kdWxlKCd0ZXN0X2V4dGVuc2libGUnLAorICB0ZXN0X2V4 dGVuc2libGVfc291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVzdF9p bnN0YWxsX2xpYnMgKz0gdGVzdF9leHRlbnNpYmxlCisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9IGZp bGVzKAorICAndGVzdF9leHRlbnNpYmxlLmNvbnRyb2wnLAorICAndGVzdF9leHRlbnNpYmxlLS0x LjAuc3FsJywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X2V4dGVuc2libGUnLAor ICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVu dF9idWlsZF9kaXIoKSwKKyAgJ3JlZ3Jlc3MnOiB7CisgICAgJ3NxbCc6IFsKKyAgICAgICd0ZXN0 X2V4dGVuc2libGUnLAorICAgIF0sCisgICAgJ3JlZ3Jlc3NfYXJncyc6IFsnLS10ZW1wLWNvbmZp ZycsIGZpbGVzKCd0ZXN0X2V4dGVuc2libGUuY29uZicpXSwKKyAgICAncnVubmluZ2NoZWNrJzog ZmFsc2UsCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aWJsZS9zcWwvdGVzdF9leHRlbnNpYmxlLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpYmxlL3NxbC90ZXN0X2V4dGVuc2libGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4zMGM5ZGEzZjY1OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9leHRlbnNpYmxlL3NxbC90ZXN0X2V4dGVuc2libGUuc3FsCkBAIC0wLDAgKzEs NDAgQEAKKy0tIFRlc3RzIGZvciBleHRlbnNpYmxlIG5vZGUgYW5kIGN1c3RvbSBzY2FuIHJlZ2lz dHJhdGlvbgorLS0gKHNyYy9iYWNrZW5kL25vZGVzL2V4dGVuc2libGUuYykKKworQ1JFQVRFIEVY VEVOU0lPTiB0ZXN0X2V4dGVuc2libGU7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEdldEV4dGVuc2libGVO b2RlTWV0aG9kcygpIGFuZCBHZXRDdXN0b21TY2FuTWV0aG9kcygpIGxvb2t1cCB0ZXN0cworLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCistLSBHZXRFeHRlbnNpYmxlTm9kZU1ldGhvZHM6IGtub3duIG5hbWUgcmV0dXJu cyB0aGUgcmVnaXN0ZXJlZCBleHRub2RlbmFtZS4KK1NFTEVDVCB0ZXN0X2dldF9leHRlbnNpYmxl X25vZGVfbWV0aG9kcygnVGVzdEV4dE5vZGUnLCBmYWxzZSk7CistLSBHZXRFeHRlbnNpYmxlTm9k ZU1ldGhvZHM6IHVua25vd24gbmFtZSB3aXRoIG1pc3Npbmdfb2s9dHJ1ZSByZXR1cm5zIE5VTEwu CitTRUxFQ1QgdGVzdF9nZXRfZXh0ZW5zaWJsZV9ub2RlX21ldGhvZHMoJ05vU3VjaEV4dE5vZGUn LCB0cnVlKTsKKy0tIEdldEV4dGVuc2libGVOb2RlTWV0aG9kczogdW5rbm93biBuYW1lIHdpdGgg bWlzc2luZ19vaz1mYWxzZSByYWlzZXMgRVJST1IuCitTRUxFQ1QgdGVzdF9nZXRfZXh0ZW5zaWJs ZV9ub2RlX21ldGhvZHMoJ05vU3VjaEV4dE5vZGUnLCBmYWxzZSk7CisKKy0tIEdldEN1c3RvbVNj YW5NZXRob2RzOiBrbm93biBuYW1lIHJldHVybnMgdGhlIHJlZ2lzdGVyZWQgQ3VzdG9tTmFtZS4K K1NFTEVDVCB0ZXN0X2dldF9jdXN0b21fc2Nhbl9tZXRob2RzKCdUZXN0Q3VzdG9tU2NhbicsIGZh bHNlKTsKKy0tIEdldEN1c3RvbVNjYW5NZXRob2RzOiB1bmtub3duIG5hbWUgd2l0aCBtaXNzaW5n X29rPXRydWUgcmV0dXJucyBOVUxMLgorU0VMRUNUIHRlc3RfZ2V0X2N1c3RvbV9zY2FuX21ldGhv ZHMoJ05vU3VjaEN1c3RvbVNjYW4nLCB0cnVlKTsKKy0tIEdldEN1c3RvbVNjYW5NZXRob2RzOiB1 bmtub3duIG5hbWUgd2l0aCBtaXNzaW5nX29rPWZhbHNlIHJhaXNlcyBFUlJPUi4KK1NFTEVDVCB0 ZXN0X2dldF9jdXN0b21fc2Nhbl9tZXRob2RzKCdOb1N1Y2hDdXN0b21TY2FuJywgZmFsc2UpOwor CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSBFbmQtdG8tZW5kIEN1c3RvbVNjYW4gdGVzdAorLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor CitDUkVBVEUgVEFCTEUgdGVzdF9leHRlbnNpYmxlX3RibCAoaWQgaW50ZWdlciwgdmFsIHRleHQp OworSU5TRVJUIElOVE8gdGVzdF9leHRlbnNpYmxlX3RibCBWQUxVRVMgKDEsICdvbmUnKSwgKDIs ICd0d28nKSwgKDMsICd0aHJlZScpOworCistLSBWZXJpZnkgdGhlIHBsYW5uZXIgY2hvc2Ugb3Vy IEN1c3RvbVNjYW4gKG5vdCBhIFNlcVNjYW4pLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg aWQsIHZhbCBGUk9NIHRlc3RfZXh0ZW5zaWJsZV90YmwgT1JERVIgQlkgaWQ7CisKKy0tIEV4ZWN1 dGUgdGhyb3VnaCB0aGUgQ3VzdG9tU2NhbjsgZWFjaCBvZiB0aGUgMyBpbnNlcnRlZCByb3dzIGFw cGVhcnMKKy0tIHR3aWNlICg2IHJvd3MgdG90YWwpLCBwcm92aW5nIHRoZSBjdXN0b20gc2NhbiBs b2dpYyBpcyBpbiBlZmZlY3QuCitTRUxFQ1QgaWQsIHZhbCBGUk9NIHRlc3RfZXh0ZW5zaWJsZV90 YmwgT1JERVIgQlkgaWQsIHZhbDsKKworRFJPUCBUQUJMRSB0ZXN0X2V4dGVuc2libGVfdGJsOwor CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dGVuc2libGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS90ZXN0X2V4dGVuc2libGUtLTEuMC5zcWwgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS90ZXN0X2V4dGVuc2libGUtLTEuMC5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVkN2E2NWY0OTZkCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2libGUvdGVzdF9leHRlbnNpYmxl LS0xLjAuc3FsCkBAIC0wLDAgKzEsOCBAQAorLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJj ZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAi Q1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dGVuc2libGUiIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVp dAorCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0ZXN0X2dldF9leHRlbnNpYmxlX25vZGVf bWV0aG9kcyh0ZXh0LCBib29sKSBSRVRVUk5TIHRleHQKKyAgQVMgJ01PRFVMRV9QQVRITkFNRScs ICd0ZXN0X2dldF9leHRlbnNpYmxlX25vZGVfbWV0aG9kcycgTEFOR1VBR0UgQzsKKworQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gdGVzdF9nZXRfY3VzdG9tX3NjYW5fbWV0aG9kcyh0ZXh0LCBi b29sKSBSRVRVUk5TIHRleHQKKyAgQVMgJ01PRFVMRV9QQVRITkFNRScsICd0ZXN0X2dldF9jdXN0 b21fc2Nhbl9tZXRob2RzJyBMQU5HVUFHRSBDOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpYmxlL3Rlc3RfZXh0ZW5z aWJsZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2libGUvdGVzdF9leHRlbnNpYmxl LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJjY2E2OGRiZGU4Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2libGUvdGVzdF9l eHRlbnNpYmxlLmMKQEAgLTAsMCArMSwzODkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHRlc3RfZXh0ZW5zaWJsZS5jCisgKgkJVGVzdCBjb3JyZWN0bmVzcyBvZiBleHRlbnNpYmxlIG5v ZGUgYW5kIGN1c3RvbSBzY2FuIHJlZ2lzdHJhdGlvbgorICoJCWZ1bmN0aW9ucyBkZWZpbmVkIGlu IHNyYy9iYWNrZW5kL25vZGVzL2V4dGVuc2libGUuYy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklD QVRJT04KKyAqCQlzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS90ZXN0X2V4dGVuc2li bGUuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIK KworI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0 b3IuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAibm9kZXMvZXh0ZW5zaWJsZS5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCisjaW5jbHVk ZSAibm9kZXMvcGxhbm5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcmVhZGZ1bmNzLmgiCisjaW5j bHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wYXRobm9k ZS5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisKK1BHX01PRFVMRV9NQUdJQzsK KworLyogTmFtZSBvZiB0aGUgdGVzdCB0YWJsZSB0aGF0IHRyaWdnZXJzIG91ciBDdXN0b21TY2Fu IGluamVjdGlvbiAqLworI2RlZmluZSBURVNUX1RBQkxFX05BTUUJCSJ0ZXN0X2V4dGVuc2libGVf dGJsIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKiBUZXN0RXh0Tm9kZSDigJMgYW4gRXh0ZW5zaWJsZU5vZGUg c3VidHlwZSBjYXJyeWluZyBhIHNpbmdsZSBpbnQuCisgKgorICogSW4gYSByZWFsIGV4dGVuc2lv biB0aGlzIHdvdWxkIGhvbGQgcGxhbm5pbmcgbWV0YWRhdGEgcGFzc2VkIGZyb20KKyAqIHRoZSBw YXRoIHN0YWdlIHRvIHRoZSBleGVjdXRpb24gc3RhZ2UgdmlhIEN1c3RvbVNjYW4uY3VzdG9tX3By aXZhdGUuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IFRlc3RFeHROb2RlCit7CisJ RXh0ZW5zaWJsZU5vZGUgYmFzZTsJCS8qIG11c3QgYmUgZmlyc3QgKi8KKwlpbnQJCQlyZXBlYXRf Y291bnQ7CS8qIGhvdyBtYW55IHRpbWVzIHRvIHJldHVybiBlYWNoIHNjYW5uZWQgcm93ICovCit9 CQkJVGVzdEV4dE5vZGU7CisKKyNkZWZpbmUgVEVTVF9FWFRfTk9ERV9OQU1FCSJUZXN0RXh0Tm9k ZSIKKyNkZWZpbmUgVEVTVF9DVVNUT01fU0NBTl9OQU1FCSJUZXN0Q3VzdG9tU2NhbiIKKworLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICogRXh0ZW5zaWJsZU5vZGVNZXRob2RzIGNhbGxiYWNrcworICogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKK3N0YXRpYyB2b2lkCit0ZXN0X2V4dF9ub2RlX2NvcHkoRXh0ZW5zaWJsZU5vZGUgKm5l d25vZGUsIGNvbnN0IEV4dGVuc2libGVOb2RlICpvbGRub2RlKQoreworCSgoVGVzdEV4dE5vZGUg KikgbmV3bm9kZSktPnJlcGVhdF9jb3VudCA9CisJCSgoY29uc3QgVGVzdEV4dE5vZGUgKikgb2xk bm9kZSktPnJlcGVhdF9jb3VudDsKK30KKworc3RhdGljIGJvb2wKK3Rlc3RfZXh0X25vZGVfZXF1 YWwoY29uc3QgRXh0ZW5zaWJsZU5vZGUgKmEsIGNvbnN0IEV4dGVuc2libGVOb2RlICpiKQorewor CXJldHVybiAoKGNvbnN0IFRlc3RFeHROb2RlICopIGEpLT5yZXBlYXRfY291bnQgPT0KKwkJKChj b25zdCBUZXN0RXh0Tm9kZSAqKSBiKS0+cmVwZWF0X2NvdW50OworfQorCitzdGF0aWMgdm9pZAor dGVzdF9leHRfbm9kZV9vdXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEV4dGVuc2libGVOb2RlICpu b2RlKQoreworCWFwcGVuZFN0cmluZ0luZm8oc3RyLCAiIDpyZXBlYXRfY291bnQgJWQiLAorCQkJ CQkgKChjb25zdCBUZXN0RXh0Tm9kZSAqKSBub2RlKS0+cmVwZWF0X2NvdW50KTsKK30KKworc3Rh dGljIHZvaWQKK3Rlc3RfZXh0X25vZGVfcmVhZChFeHRlbnNpYmxlTm9kZSAqbm9kZSkKK3sKKwlU ZXN0RXh0Tm9kZSAqdG5vZGUgPSAoVGVzdEV4dE5vZGUgKikgbm9kZTsKKwljb25zdCBjaGFyICp0 b2tlbjsKKwlpbnQJCQlsZW5ndGg7CisKKwl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsgLyog c2tpcCA6cmVwZWF0X2NvdW50ICovCisJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7IC8qIGdl dCB2YWx1ZSAqLworCXRub2RlLT5yZXBlYXRfY291bnQgPSBhdG9pKHRva2VuKTsKK30KKworc3Rh dGljIGNvbnN0IEV4dGVuc2libGVOb2RlTWV0aG9kcyB0ZXN0X2V4dF9ub2RlX21ldGhvZHMgPQor eworCS5leHRub2RlbmFtZSA9IFRFU1RfRVhUX05PREVfTkFNRSwKKwkubm9kZV9zaXplID0gc2l6 ZW9mKFRlc3RFeHROb2RlKSwKKwkubm9kZUNvcHkgPSB0ZXN0X2V4dF9ub2RlX2NvcHksCisJLm5v ZGVFcXVhbCA9IHRlc3RfZXh0X25vZGVfZXF1YWwsCisJLm5vZGVPdXQgPSB0ZXN0X2V4dF9ub2Rl X291dCwKKwkubm9kZVJlYWQgPSB0ZXN0X2V4dF9ub2RlX3JlYWQsCit9OworCisvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKiBUZXN0Q3VzdG9tU2NhblN0YXRlIOKAkyBleGVjdXRpb24gc3RhdGUgZm9yIHRoZSBjdXN0 b20gc2Nhbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgVGVzdEN1c3RvbVNjYW5T dGF0ZQoreworCUN1c3RvbVNjYW5TdGF0ZSBjc3M7CQkvKiBtdXN0IGJlIGZpcnN0ICovCisJVGFi bGVTY2FuRGVzYyBzY2FuZGVzYzsKKwlpbnQJCQlyZXBlYXRfY291bnQ7CS8qIHJlcGVhdF9jb3Vu dCBmcm9tIFRlc3RFeHROb2RlICovCisJaW50CQkJcmVwZWF0c19sZWZ0OwkvKiBob3cgbWFueSBt b3JlIHRpbWVzIHRvIHJldHVybiBjdXJyZW50IHJvdyAqLworfQkJCVRlc3RDdXN0b21TY2FuU3Rh dGU7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV4ZWN1dG9yIGNhbGxiYWNrcworICogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CitzdGF0aWMgdm9pZAordGVzdF9iZWdpbl9jdXN0b21fc2NhbihDdXN0b21TY2FuU3RhdGUgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQoreworCVRlc3RDdXN0b21TY2FuU3RhdGUg KnRzdGF0ZSA9IChUZXN0Q3VzdG9tU2NhblN0YXRlICopIG5vZGU7CisJQ3VzdG9tU2NhbiAqY3Nj YW4gPSAoQ3VzdG9tU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuOworCVRlc3RFeHROb2RlICp0bm9k ZTsKKwlSZWxhdGlvbglyZWwgPSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CisKKwkvKgor CSAqIFJlYWQgcmVwZWF0X2NvdW50IGZyb20gdGhlIFRlc3RFeHROb2RlIHN0b3JlZCBpbiBjdXN0 b21fcHJpdmF0ZS4gVGhpcworCSAqIGlzIHRoZSBrZXkgbW9tZW50IHdoZXJlIHRoZSBFeHRlbnNp YmxlTm9kZSBwcml2YXRlIGRhdGEgY3Jvc3NlcyBmcm9tCisJICogdGhlIHBsYW4gdHJlZSBpbnRv IHRoZSBleGVjdXRvciBzdGF0ZS4KKwkgKi8KKwlBc3NlcnQoY3NjYW4tPmN1c3RvbV9wcml2YXRl ICE9IE5JTCk7CisJdG5vZGUgPSAoVGVzdEV4dE5vZGUgKikgbGluaXRpYWwoY3NjYW4tPmN1c3Rv bV9wcml2YXRlKTsKKwlBc3NlcnQoSXNBKHRub2RlLCBFeHRlbnNpYmxlTm9kZSkpOworCUFzc2Vy dChzdHJjbXAodG5vZGUtPmJhc2UuZXh0bm9kZW5hbWUsIFRFU1RfRVhUX05PREVfTkFNRSkgPT0g MCk7CisKKwlBc3NlcnQodG5vZGUtPnJlcGVhdF9jb3VudCA+IDApOworCXRzdGF0ZS0+cmVwZWF0 X2NvdW50ID0gdG5vZGUtPnJlcGVhdF9jb3VudDsKKwl0c3RhdGUtPnJlcGVhdHNfbGVmdCA9IDA7 CisKKwkvKiBTdGFydCBhIHBsYWluIHNlcXVlbnRpYWwgaGVhcCBzY2FuLiAqLworCXRzdGF0ZS0+ c2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBlc3RhdGUtPmVzX3NuYXBzaG90LCAwLCBO VUxMLAorCQkJCQkJCQkJICAgU09fTk9ORSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAq Cit0ZXN0X2V4ZWNfY3VzdG9tX3NjYW4oQ3VzdG9tU2NhblN0YXRlICpub2RlKQoreworCVRlc3RD dXN0b21TY2FuU3RhdGUgKnRzdGF0ZSA9IChUZXN0Q3VzdG9tU2NhblN0YXRlICopIG5vZGU7CisJ VHVwbGVUYWJsZVNsb3QgKnNsb3QgPSBub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90OworCisJLyoK KwkgKiBJZiB0aGUgY3VycmVudCB0dXBsZSBzdGlsbCBoYXMgcmVwZWF0cyByZW1haW5pbmcsIHJl dHVybiBpdCBhZ2FpbgorCSAqIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBoZWFwIHNjYW4uICBUaGUg cmVwZWF0IGNvdW50IGNvbWVzIGZyb20gdGhlCisJICogVGVzdEV4dE5vZGUgdGhhdCB3YXMgcmVh ZCBpbiBCZWdpbkN1c3RvbVNjYW4uCisJICovCisJaWYgKHRzdGF0ZS0+cmVwZWF0c19sZWZ0ID4g MCkKKwl7CisJCXRzdGF0ZS0+cmVwZWF0c19sZWZ0LS07CisJCXJldHVybiBzbG90OworCX0KKwor CS8qIEZldGNoIHRoZSBuZXh0IHR1cGxlIGZyb20gdGhlIGhlYXAuICovCisJaWYgKCF0YWJsZV9z Y2FuX2dldG5leHRzbG90KHRzdGF0ZS0+c2NhbmRlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBz bG90KSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBTY2hlZHVsZSAocmVwZWF0X2NvdW50IC0gMSkg YWRkaXRpb25hbCByZXR1cm5zIG9mIHRoaXMgdHVwbGUuICovCisJdHN0YXRlLT5yZXBlYXRzX2xl ZnQgPSB0c3RhdGUtPnJlcGVhdF9jb3VudCAtIDE7CisJcmV0dXJuIHNsb3Q7Cit9CisKK3N0YXRp YyB2b2lkCit0ZXN0X2VuZF9jdXN0b21fc2NhbihDdXN0b21TY2FuU3RhdGUgKm5vZGUpCit7CisJ VGVzdEN1c3RvbVNjYW5TdGF0ZSAqdHN0YXRlID0gKFRlc3RDdXN0b21TY2FuU3RhdGUgKikgbm9k ZTsKKworCWlmICh0c3RhdGUtPnNjYW5kZXNjKQorCQl0YWJsZV9lbmRzY2FuKHRzdGF0ZS0+c2Nh bmRlc2MpOworfQorCitzdGF0aWMgdm9pZAordGVzdF9yZXNjYW5fY3VzdG9tX3NjYW4oQ3VzdG9t U2NhblN0YXRlICpub2RlKQoreworCVRlc3RDdXN0b21TY2FuU3RhdGUgKnRzdGF0ZSA9IChUZXN0 Q3VzdG9tU2NhblN0YXRlICopIG5vZGU7CisKKwl0c3RhdGUtPnJlcGVhdHNfbGVmdCA9IDA7CisJ dGFibGVfcmVzY2FuKHRzdGF0ZS0+c2NhbmRlc2MsIE5VTEwpOworfQorCitzdGF0aWMgY29uc3Qg Q3VzdG9tRXhlY01ldGhvZHMgdGVzdF9jdXN0b21fZXhlY19tZXRob2RzID0KK3sKKwkuQ3VzdG9t TmFtZSA9IFRFU1RfQ1VTVE9NX1NDQU5fTkFNRSwKKwkuQmVnaW5DdXN0b21TY2FuID0gdGVzdF9i ZWdpbl9jdXN0b21fc2NhbiwKKwkuRXhlY0N1c3RvbVNjYW4gPSB0ZXN0X2V4ZWNfY3VzdG9tX3Nj YW4sCisJLkVuZEN1c3RvbVNjYW4gPSB0ZXN0X2VuZF9jdXN0b21fc2NhbiwKKwkuUmVTY2FuQ3Vz dG9tU2NhbiA9IHRlc3RfcmVzY2FuX2N1c3RvbV9zY2FuLAorfTsKKworc3RhdGljIE5vZGUgKgor dGVzdF9jcmVhdGVfY3VzdG9tX3NjYW5fc3RhdGUoQ3VzdG9tU2NhbiAqY3NjYW4pCit7CisJVGVz dEN1c3RvbVNjYW5TdGF0ZSAqdHN0YXRlOworCisJdHN0YXRlID0gKFRlc3RDdXN0b21TY2FuU3Rh dGUgKikKKwkJbmV3Tm9kZShzaXplb2YoVGVzdEN1c3RvbVNjYW5TdGF0ZSksIFRfQ3VzdG9tU2Nh blN0YXRlKTsKKwl0c3RhdGUtPmNzcy5tZXRob2RzID0gJnRlc3RfY3VzdG9tX2V4ZWNfbWV0aG9k czsKKworCS8qCisJICogVXNlIHRoZSBoZWFwLXR1cGxlIHNsb3QgdHlwZSBzbyB0YWJsZV9zY2Fu X2dldG5leHRzbG90KCkgY2FuIGZpbGwgaXQKKwkgKiBkaXJlY3RseS4KKwkgKi8KKwl0c3RhdGUt PmNzcy5zbG90T3BzID0gJlRUU09wc0J1ZmZlckhlYXBUdXBsZTsKKworCXJldHVybiAoTm9kZSAq KSB0c3RhdGU7Cit9CisKK3N0YXRpYyBjb25zdCBDdXN0b21TY2FuTWV0aG9kcyB0ZXN0X2N1c3Rv bV9zY2FuX21ldGhvZHMgPQoreworCS5DdXN0b21OYW1lID0gVEVTVF9DVVNUT01fU0NBTl9OQU1F LAorCS5DcmVhdGVDdXN0b21TY2FuU3RhdGUgPSB0ZXN0X2NyZWF0ZV9jdXN0b21fc2Nhbl9zdGF0 ZSwKK307CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFBsYW5uZXIgY2FsbGJhY2tzCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KK3N0YXRpYyBQbGFuICoKK3Rlc3RfcGxhbl9jdXN0b21fcGF0aChQbGFubmVySW5mbyAqcm9v dCwKKwkJCQkJICBSZWxPcHRJbmZvICpyZWwsCisJCQkJCSAgc3RydWN0IEN1c3RvbVBhdGggKmJl c3RfcGF0aCwKKwkJCQkJICBMaXN0ICp0bGlzdCwKKwkJCQkJICBMaXN0ICpjbGF1c2VzLAorCQkJ CQkgIExpc3QgKmN1c3RvbV9wbGFucykKK3sKKwlDdXN0b21TY2FuICpjc2NhbiA9IG1ha2VOb2Rl KEN1c3RvbVNjYW4pOworCisJLyoKKwkgKiBQYXNzIHRoZSBFeHRlbnNpYmxlTm9kZSBmcm9tIHRo ZSBwYXRoIHRvIHRoZSBwbGFuIHZpYSBjdXN0b21fcHJpdmF0ZS4KKwkgKiBUaGlzIGlzIHRoZSBy ZWNvbW1lbmRlZCBwYXR0ZXJuIGZvciBjb252ZXlpbmcgcHJpdmF0ZSBwbGFubmluZyBkYXRhCisJ ICogZnJvbSBhIEN1c3RvbVBhdGggdG8gaXRzIGNvcnJlc3BvbmRpbmcgQ3VzdG9tU2Nhbi4KKwkg Ki8KKwljc2Nhbi0+c2Nhbi5wbGFuLnRhcmdldGxpc3QgPSB0bGlzdDsKKwljc2Nhbi0+c2Nhbi5w bGFuLnF1YWwgPSBOSUw7CisJY3NjYW4tPnNjYW4uc2NhbnJlbGlkID0gcmVsLT5yZWxpZDsKKwlj c2Nhbi0+ZmxhZ3MgPSBiZXN0X3BhdGgtPmZsYWdzOworCWNzY2FuLT5jdXN0b21fcGxhbnMgPSBO SUw7CisJY3NjYW4tPmN1c3RvbV9leHBycyA9IE5JTDsKKwljc2Nhbi0+Y3VzdG9tX3ByaXZhdGUg PSBiZXN0X3BhdGgtPmN1c3RvbV9wcml2YXRlOworCWNzY2FuLT5jdXN0b21fc2Nhbl90bGlzdCA9 IE5JTDsKKwljc2Nhbi0+Y3VzdG9tX3JlbGlkcyA9IE5VTEw7CisJY3NjYW4tPm1ldGhvZHMgPSAm dGVzdF9jdXN0b21fc2Nhbl9tZXRob2RzOworCisJcmV0dXJuIChQbGFuICopIGNzY2FuOworfQor CitzdGF0aWMgY29uc3QgQ3VzdG9tUGF0aE1ldGhvZHMgdGVzdF9jdXN0b21fcGF0aF9tZXRob2Rz ID0KK3sKKwkuQ3VzdG9tTmFtZSA9IFRFU1RfQ1VTVE9NX1NDQU5fTkFNRSwKKwkuUGxhbkN1c3Rv bVBhdGggPSB0ZXN0X3BsYW5fY3VzdG9tX3BhdGgsCit9OworCisvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBzZXRf cmVsX3BhdGhsaXN0X2hvb2sg4oCTIGluamVjdCBvdXIgQ3VzdG9tUGF0aCBmb3IgdGhlIHNwZWNp ZmljCisgKiB0ZXN0IHRhYmxlLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgc2V0X3JlbF9wYXRo bGlzdF9ob29rX3R5cGUgcHJldl9zZXRfcmVsX3BhdGhsaXN0X2hvb2sgPSBOVUxMOworCitzdGF0 aWMgdm9pZAordGVzdF9zZXRfcmVsX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpyZWwsCisJCQkJCSAgSW5kZXggcnRpLCBSYW5nZVRibEVudHJ5ICpydGUpCit7CisJQ3Vz dG9tUGF0aCAqY3BhdGg7CisJVGVzdEV4dE5vZGUgKnRub2RlOworCWNoYXIJICAgKnJlbG5hbWU7 CisKKwkvKiBMZXQgcHJldmlvdXMgaG9va3MgcnVuIGZpcnN0LiAqLworCWlmIChwcmV2X3NldF9y ZWxfcGF0aGxpc3RfaG9vaykKKwkJcHJldl9zZXRfcmVsX3BhdGhsaXN0X2hvb2socm9vdCwgcmVs LCBydGksIHJ0ZSk7CisKKwkvKiBPbmx5IGhhbmRsZSBwbGFpbiBiYXNlIHJlbGF0aW9ucyAob3Jk aW5hcnkgdGFibGVzKS4gKi8KKwlpZiAocmVsLT5yZWxvcHRraW5kICE9IFJFTE9QVF9CQVNFUkVM IHx8IHJ0ZS0+cnRla2luZCAhPSBSVEVfUkVMQVRJT04pCisJCXJldHVybjsKKworCS8qCisJICog T25seSBpbmplY3Qgb3VyIEN1c3RvbVBhdGggZm9yIHRoZSBzcGVjaWZpYyBtYXJrZXIgdGFibGUu ICBUaGlzCisJICogcHJldmVudHMgaW50ZXJmZXJlbmNlIHdpdGggc3lzdGVtLWNhdGFsb2cgc2Nh bnMuCisJICovCisJcmVsbmFtZSA9IGdldF9yZWxfbmFtZShydGUtPnJlbGlkKTsKKwlpZiAocmVs bmFtZSA9PSBOVUxMIHx8IHN0cmNtcChyZWxuYW1lLCBURVNUX1RBQkxFX05BTUUpICE9IDApCisJ CXJldHVybjsKKworCS8qCisJICogQnVpbGQgYSBUZXN0RXh0Tm9kZSBjYXJyeWluZyB0aGUgcGxh bm5lcidzIHJvdyBlc3RpbWF0ZS4gIEluIGEgcmVhbAorCSAqIGV4dGVuc2lvbiB0aGlzIG1pZ2h0 IGJlIGEgZGV2aWNlIGhhbmRsZSBvciBhIGNhY2hlIGtleS4KKwkgKi8KKwl0bm9kZSA9IChUZXN0 RXh0Tm9kZSAqKSBuZXdOb2RlKHNpemVvZihUZXN0RXh0Tm9kZSksIFRfRXh0ZW5zaWJsZU5vZGUp OworCXRub2RlLT5iYXNlLmV4dG5vZGVuYW1lID0gVEVTVF9FWFRfTk9ERV9OQU1FOworCXRub2Rl LT5yZXBlYXRfY291bnQgPSAyOwkvKiBlYWNoIHJvdyB3aWxsIGJlIHJldHVybmVkIHR3aWNlICov CisKKwkvKgorCSAqIEJ1aWxkIHRoZSBDdXN0b21QYXRoLiAgV2UgbWF0Y2ggdGhlIGNvc3Qgb2Yg dGhlIGNoZWFwZXN0IGV4aXN0aW5nIHBhdGgKKwkgKiBzbyB0aGUgcGxhbm5lciBpcyBmcmVlIHRv IGNob29zZSBvdXJzIHdoZW4gaXQgaXMgZXF1YWxseSBjaGVhcC4KKwkgKi8KKwljcGF0aCA9IG1h a2VOb2RlKEN1c3RvbVBhdGgpOworCWNwYXRoLT5wYXRoLnBhdGh0eXBlID0gVF9DdXN0b21TY2Fu OworCWNwYXRoLT5wYXRoLnBhcmVudCA9IHJlbDsKKwljcGF0aC0+cGF0aC5wYXRodGFyZ2V0ID0g cmVsLT5yZWx0YXJnZXQ7CisJY3BhdGgtPnBhdGgucm93cyA9IHJlbC0+cm93czsKKwljcGF0aC0+ cGF0aC5zdGFydHVwX2Nvc3QgPSAwOworCWNwYXRoLT5wYXRoLnRvdGFsX2Nvc3QgPSAwOworCWNw YXRoLT5mbGFncyA9IDA7CisJY3BhdGgtPmN1c3RvbV9wYXRocyA9IE5JTDsKKwljcGF0aC0+Y3Vz dG9tX3ByaXZhdGUgPSBsaXN0X21ha2UxKHRub2RlKTsKKwljcGF0aC0+bWV0aG9kcyA9ICZ0ZXN0 X2N1c3RvbV9wYXRoX21ldGhvZHM7CisKKwlhZGRfcGF0aChyZWwsIChQYXRoICopIGNwYXRoKTsK K30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICogU1FMLWNhbGxhYmxlIHRlc3QgZnVuY3Rpb25zIGZvciBHZXQq IGxvb2t1cHMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2dldF9l eHRlbnNpYmxlX25vZGVfbWV0aG9kcyk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfZ2V0X2N1 c3RvbV9zY2FuX21ldGhvZHMpOworCisvKgorICogdGVzdF9nZXRfZXh0ZW5zaWJsZV9ub2RlX21l dGhvZHMobmFtZSB0ZXh0LCBtaXNzaW5nX29rIGJvb2wpCisgKgorICogVGhpbiB3cmFwcGVyIGFy b3VuZCBHZXRFeHRlbnNpYmxlTm9kZU1ldGhvZHMoKS4gIFJldHVybnMgdGhlIHJlZ2lzdGVyZWQK KyAqIGV4dG5vZGVuYW1lLCBvciBOVUxMIHdoZW4gbWlzc2luZ19vayA9IHRydWUgYW5kIHRoZSBu YW1lIGlzIG5vdCBmb3VuZC4KKyAqIFJhaXNlcyBFUlJPUiB3aGVuIG1pc3Npbmdfb2sgPSBmYWxz ZSBhbmQgdGhlIG5hbWUgaXMgbm90IGZvdW5kLgorICovCitEYXR1bQordGVzdF9nZXRfZXh0ZW5z aWJsZV9ub2RlX21ldGhvZHMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwljaGFyCSAgICpuYW1lID0g dGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKwlib29sCQltaXNzaW5nX29r ID0gUEdfR0VUQVJHX0JPT0woMSk7CisJY29uc3QgRXh0ZW5zaWJsZU5vZGVNZXRob2RzICptZXRo b2RzOworCisJbWV0aG9kcyA9IEdldEV4dGVuc2libGVOb2RlTWV0aG9kcyhuYW1lLCBtaXNzaW5n X29rKTsKKwlpZiAobWV0aG9kcyA9PSBOVUxMKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJUEdf UkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQobWV0aG9kcy0+ZXh0bm9kZW5hbWUpKTsKK30K KworLyoKKyAqIHRlc3RfZ2V0X2N1c3RvbV9zY2FuX21ldGhvZHMobmFtZSB0ZXh0LCBtaXNzaW5n X29rIGJvb2wpCisgKgorICogVGhpbiB3cmFwcGVyIGFyb3VuZCBHZXRDdXN0b21TY2FuTWV0aG9k cygpLiAgUmV0dXJucyB0aGUgcmVnaXN0ZXJlZAorICogQ3VzdG9tTmFtZSwgb3IgTlVMTCB3aGVu IG1pc3Npbmdfb2sgPSB0cnVlIGFuZCB0aGUgbmFtZSBpcyBub3QgZm91bmQuCisgKiBSYWlzZXMg RVJST1Igd2hlbiBtaXNzaW5nX29rID0gZmFsc2UgYW5kIHRoZSBuYW1lIGlzIG5vdCBmb3VuZC4K KyAqLworRGF0dW0KK3Rlc3RfZ2V0X2N1c3RvbV9zY2FuX21ldGhvZHMoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwljaGFyCSAgICpuYW1lID0gdGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQ KDApKTsKKwlib29sCQltaXNzaW5nX29rID0gUEdfR0VUQVJHX0JPT0woMSk7CisJY29uc3QgQ3Vz dG9tU2Nhbk1ldGhvZHMgKm1ldGhvZHM7CisKKwltZXRob2RzID0gR2V0Q3VzdG9tU2Nhbk1ldGhv ZHMobmFtZSwgbWlzc2luZ19vayk7CisJaWYgKG1ldGhvZHMgPT0gTlVMTCkKKwkJUEdfUkVUVVJO X05VTEwoKTsKKworCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KG1ldGhvZHMtPkN1 c3RvbU5hbWUpKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTW9kdWxlIGluaXRpYWxpc2F0aW9uCisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJaWYgKCFwcm9jZXNzX3No YXJlZF9wcmVsb2FkX2xpYnJhcmllc19pbl9wcm9ncmVzcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJybXNnKCJjYW5ub3QgbG9hZCBcIiVzXCIgYWZ0ZXIgc3RhcnR1cCIsCisJCQkJCQkidGVz dF9leHRlbnNpYmxlIiksCisJCQkJIGVycmRldGFpbCgiXCIlc1wiIG11c3QgYmUgbG9hZGVkIHdp dGggIgorCQkJCQkJICAgIlwic2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzXCIuIiwKKwkJCQkJCSAg ICJ0ZXN0X2V4dGVuc2libGUiKSkpOworCisJLyogUmVnaXN0ZXIgdGhlIGN1c3RvbSBzY2FuIG1l dGhvZHMuICovCisJUmVnaXN0ZXJDdXN0b21TY2FuTWV0aG9kcygmdGVzdF9jdXN0b21fc2Nhbl9t ZXRob2RzKTsKKworCS8qIFJlZ2lzdGVyIHRoZSBleHRlbnNpYmxlIG5vZGUgdHlwZSAqLworCVJl Z2lzdGVyRXh0ZW5zaWJsZU5vZGVNZXRob2RzKCZ0ZXN0X2V4dF9ub2RlX21ldGhvZHMpOworCisJ LyogSW5zdGFsbCB0aGUgcGF0aC1saXN0IGhvb2sgdG8gaW5qZWN0IEN1c3RvbVBhdGhzIGZvciB0 aGUgdGVzdCB0YWJsZS4gKi8KKwlwcmV2X3NldF9yZWxfcGF0aGxpc3RfaG9vayA9IHNldF9yZWxf cGF0aGxpc3RfaG9vazsKKwlzZXRfcmVsX3BhdGhsaXN0X2hvb2sgPSB0ZXN0X3NldF9yZWxfcGF0 aGxpc3Q7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS90 ZXN0X2V4dGVuc2libGUuY29uZiBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpYmxlL3Rl c3RfZXh0ZW5zaWJsZS5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5hNWI2NDNjYjI1NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpYmxlL3Rlc3RfZXh0ZW5zaWJsZS5jb25mCkBAIC0wLDAgKzEgQEAKK3NoYXJlZF9wcmVs b2FkX2xpYnJhcmllcyA9ICd0ZXN0X2V4dGVuc2libGUnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaWJsZS90ZXN0X2V4dGVuc2libGUuY29udHJvbCBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpYmxlL3Rlc3RfZXh0ZW5zaWJsZS5jb250cm9sCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YTE5ZmE2NTcwZQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpYmxlL3Rlc3RfZXh0ZW5zaWJsZS5j b250cm9sCkBAIC0wLDAgKzEsNCBAQAorY29tbWVudCA9ICdUZXN0IGNvZGUgZm9yIGV4dGVuc2li bGUgbm9kZSBhbmQgY3VzdG9tIHNjYW4gcmVnaXN0cmF0aW9uJworZGVmYXVsdF92ZXJzaW9uID0g JzEuMCcKK21vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL3Rlc3RfZXh0ZW5zaWJsZScKK3JlbG9j YXRhYmxlID0gZmFsc2UKLS0gCjIuNDMuMAoK --000000000000b8dfaf064e537b0d--