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 1vg5Th-0086Mt-1d for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Jan 2026 18:20:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vg5Tf-00Bydm-1o for pgsql-hackers@arkaria.postgresql.org; Wed, 14 Jan 2026 18:20:19 +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 1vg5Tf-00Bydd-0R for pgsql-hackers@lists.postgresql.org; Wed, 14 Jan 2026 18:20:19 +0000 Received: from mail-yx1-xb12a.google.com ([2607:f8b0:4864:20::b12a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vg5Td-000TRE-0w for pgsql-hackers@lists.postgresql.org; Wed, 14 Jan 2026 18:20:19 +0000 Received: by mail-yx1-xb12a.google.com with SMTP id 956f58d0204a3-640e065991dso9172d50.3 for ; Wed, 14 Jan 2026 10:20:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=percona.com; s=google; t=1768414815; x=1769019615; 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=nFF62Hfz8P7Clri2kHfkPb9EItEXZSJzmmTjoL/KYCA=; b=B/wPDv19zYMMHboaBaOWCldz7G6v3HMxvnwNYnd8edC6zpnRdYD1Gc/qdcoE30JdjU 6sQxe60na/mqgGQrbGun7QoD8URZ9jL6MUQWLYyf2bb8q9/WTMDObLuyim7Emnh9fmaY K69uCyDDZ22kvTysl/GjuELr3zj3WGLG23bhk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768414815; x=1769019615; 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=nFF62Hfz8P7Clri2kHfkPb9EItEXZSJzmmTjoL/KYCA=; b=pqH4xwYtAeD1sMH6SNEOIcz2scfRIvLSshCQ5UynV1ELPBRN3y6BIDePMPPIvhVeNr ByJ+YCxVGPNvcgSuFECv0JjjRmvSeyQ/5Jj1qMJwPvyFx0wUWXtgycl+b3NkSwJzeRPr pO0MXSqxo/2dtUS+7KuccA2xYrT4RilmmweOMV8cf2Hj63QWDEIKASuX1KXgXzYrk64Q 6boVZ/U3WptG7h5gcOkGOJyBJOPrKexhSSx8Xxz2eiGGNiwKStipzJ8Y+AQrS+AlTffy G7WcmKCX1pb/XmPuEz5zMv+lGpcNlkeK83cZy+83K1VlnjRsj/anOUv5hV8RCc1bLcq9 Asvw== X-Forwarded-Encrypted: i=1; AJvYcCWhrUo+PcsfzWmHj+JFShcxCaHeRiH/Dqgq7apom/zSERQppSQj2Nf4MBoAZ4Tmovf4M/3h4MlU8rrDON15@lists.postgresql.org X-Gm-Message-State: AOJu0YzIt8mNbdKY6IWG0xY9YRvVo+JhdbgvhUzPpU6DfTZ6JZGHX0to EH4mvbAKz85pp31TJg3NFCFvBFjfvMQSWhZfkTq3aSXfB6hZ9QQp/0M1fdGorS+s6M8rdh2m0Db MK5L/7XBkn4lLIiCzn0R3hdicEyaoIVQXjaXqq0NlysKcJxkS0dEUP3c4FhuuVIiXfivtwMag6C gEVeW6CDZSe5IFyEovMq8F/P8rhMO9rd3UCJK0dlgpor8gCb5bdPJWRm3/JNsroNnPBSJi98MmV pRik/lOXnpx4vfiH9Cv96r7ZLQUGguCLum2KdXvrgO7c0N6EVX1+X1YvElmJ7Sl2LY= X-Gm-Gg: AY/fxX66jJYfQd2HV89P+ho9G8sBEFvSLUNFHi0CG/kvgpXTcRsei7EQ+nVjir04zYU OT+2hnnnSg3T8jcF148c6cI551YcfOU5Jt78SgCOdlqq9lNW9iY3A0famGUtO11HkIs6uJh3har RavK2ek4FaNtQ9M65aXI4/a52hdNPgp5hQukEs5aSAChT8FnRFANNRPLPwqglWzoFhZJ+pDPGcJ 6p9k1KfiD3vu7E3Ws+164YuDLPz2qcaIY320k3774KR4N0XMgyjuhZ9pYmne2JeZdmT0ei0eI1T HhH9PXdG1QcpxwaK49ixuWKTMo/qwIJ525enXwcvqjrnq3MWBU5iFw85 X-Received: by 2002:a05:690e:d8c:b0:644:60d9:7525 with SMTP id 956f58d0204a3-64903b61adamr2126626d50.87.1768414814975; Wed, 14 Jan 2026 10:20:14 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Zsolt Parragi Date: Wed, 14 Jan 2026 18:20:05 +0000 X-Gm-Features: AZwV_Qjwpa_fNhQiuA3djjOzZIZ-A5yTAN1cVZ8ByPCcYkuq-XK7QU_x5BalJws Message-ID: Subject: Re: Custom oauth validator options To: Jacob Champion Cc: VASUKI M , PostgreSQL Hackers , david.g.johnston@gmail.com, Robert Haas , myon@debian.org Content-Type: multipart/mixed; boundary="000000000000dd653f06485d2875" X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: percona,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dd653f06485d2875 Content-Type: text/plain; charset="UTF-8" > Well, how do you want "global" GUCs registered by the validator to > behave when OAuth isn't used for the connection? My assumption was that with session_preload we only validate the line used for the current login, not all the lines. This way we don't have to always include all validator/hba plugins in session_preload, for every login. This is what I implemented for now, but if you think it would be better to validate every line, I can adjust that. > Of those choices, this _seems_ nicest. It'd be good to get a feel for > how it behaves in practice though. See the attached v2, with the above comment. Other than the above question (validate everything vs the current line), I'm also not entirely sure if we do need PGC_HBA. It could also work with PGC_SIGHUP + the new PGC_S_HBA value in GucSources. --000000000000dd653f06485d2875 Content-Type: application/octet-stream; name="v2-0001-Introduce-PGC_HBA-GUC-variables-settable-in-pg_hba.c.patch" Content-Disposition: attachment; filename="v2-0001-Introduce-PGC_HBA-GUC-variables-settable-in-pg_hba.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkecfh3z0 RnJvbSBmMmQ3NDEwYjJhNzAzODlhNDAwZTAzZGQyMDM5Zjk3NzhmMDJmZGE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpEYXRlOiBXZWQsIDcgSmFuIDIwMjYgMTk6MjU6MTEgKzAwMDAKU3ViamVjdDogW1BBVENI XSBJbnRyb2R1Y2UgUEdDX0hCQTogR1VDIHZhcmlhYmxlcyBzZXR0YWJsZSBpbiBwZ19oYmEuY29u ZgoKQWRkIGEgbmV3IEdVQyBjb250ZXh0IGxldmVsIFBHQ19IQkEgdGhhdCBhbGxvd3MgY3VzdG9t IHZhcmlhYmxlcwp0byBiZSBzZXQgYmFzZWQgb24gd2hpY2ggcGdfaGJhLmNvbmYgbGluZSBtYXRj aGVzIGR1cmluZwphdXRoZW50aWNhdGlvbi4gVGhpcyBlbmFibGVzIGF1dGhlbnRpY2F0aW9uIHBs dWdpbnMgYW5kIGV4dGVuc2lvbnMKdG8gcmVjZWl2ZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMg dGhhdCB2YXJ5IGJhc2VkIG9uIEhCQSBtYXRjaGluZwpydWxlcyAoY2xpZW50IGFkZHJlc3MsIGRh dGFiYXNlLCB1c2VyLCBhdXRoZW50aWNhdGlvbiBtZXRob2QsIGV0Yy4pLgoKTW90aXZhdGlvbjoK Ck9BdXRoIHN1cHBvcnQgaW50cm9kdWNlZCBzZXZlcmFsIE9BdXRoLXNwZWNpZmljIGNvbmZpZ3Vy YXRpb24KcGFyYW1ldGVycyB0byBwZ19oYmEuY29uZiwgYW5kIGFkZGVkIHN1cHBvcnQgZm9yIHRo aXJkLXBhcnR5CnZhbGlkYXRvciBwbHVnaW5zLiBUaGVzZSBwbHVnaW5zIG9mdGVuIHJlcXVpcmUg YWRkaXRpb25hbApjb25maWd1cmF0aW9uLCB3aGljaCBpcyBvbmx5IHBvc3NpYmxlIHdpdGggR1VD IHZhcmlhYmxlcy4gQXMgdGhlc2UKcGx1Z2lucyBleGVjdXRlIGJlZm9yZSBhdXRoZW50aWNhdGlv biBjb21wbGV0ZXMsIHRoZXkgY2FuIG9ubHkKZGVwZW5kIG9uIEdVQyB2YXJpYWJsZXMgZGVmaW5l ZCBpbiBwb3N0Z3Jlc3FsLmNvbmYgb3IKcG9zdGdyZXNxbC5hdXRvLmNvbmYuCgpUaGlzIGxpbWl0 YXRpb24gY3JlYXRlcyBhIGNvbmZpZ3VyYXRpb24gcHJvYmxlbTogcGdfaGJhLmNvbmYgYWxsb3dz CmFkbWluaXN0cmF0b3JzIHRvIGRlZmluZSBzZXZlcmFsIGRpZmZlcmVudCBPQXV0aCBjb25maWd1 cmF0aW9ucyBmb3IKYSBzaW5nbGUgUG9zdGdyZVNRTCBpbnN0YW5jZSwgYnV0IHZhbGlkYXRvciBw bHVnaW4tc3BlY2lmaWMKdmFyaWFibGVzIGNhbiBvbmx5IGJlIGNvbmZpZ3VyZWQgb25jZSBwZXIg c2VydmVyLgoKV2l0aCB0aGUgY2hhbmdlcyBpbiB0aGlzIGNvbW1pdCwgdmFsaWRhdG9yIHBsdWdp bnMgY2FuIG5vdyBkZWZpbmUKdGhlaXIgR1VDIHZhcmlhYmxlcyB3aXRoIFBHQ19IQkEgY29udGV4 dCwgYWxsb3dpbmcgZGlmZmVyZW50CnNldHRpbmdzIHBlciBIQkEgbGluZS4KCkFub3RoZXIgdXNl IGNhc2UgaXMgdGhhdCBleHRlbnNpb25zIGxvYWRlZCB2aWEKc2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzIG9yIHNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgY2FuIGRlZmluZQp0aGVzZSB2YXJpYWJs ZXMsIGFsbG93aW5nIGFkbWluaXN0cmF0b3JzIHRvIGNvbmZpZ3VyZQphdXRoZW50aWNhdGlvbi9h dXRob3JpemF0aW9uLXJlbGF0ZWQgc2V0dGluZ3MgcGVyIEhCQSBsaW5lLCBmb3IKZXhhbXBsZSB0 byBoZWxwIHdpdGggcm93IGxldmVsIHNlY3VyaXR5IHBvbGljaWVzLgoKVXNlciBpbnRlcmZhY2U6 CgpUaGUgbmV3IHBhcmFtZXRlcnMgcmV1c2UgdGhlIGV4aXN0aW5nIHN5bnRheCBvZiBwZ19oYmEu Y29uZjsgR1VDCnZhcmlhYmxlcyBjYW4gYmUgZGVmaW5lZCB0aGUgc2FtZSB3YXkgYXMgZXhpc3Rp bmcgaGFyZGNvZGVkCnBhcmFtZXRlcnM6CgogICAgaG9zdCBhbGwgYWxsIDE5Mi4xNjguMS4wLzI0 IG9hdXRoIG15ZXh0LnNldHRpbmc9dmFsdWUxCiAgICBob3N0IGFsbCBhbGwgMC4wLjAuMC8wICAg ICAgb2F1dGggbXlleHQuc2V0dGluZz12YWx1ZTIKClRoaXMgYWxzbyBwcm92aWRlcyBhbiBlYXN5 IG1pZ3JhdGlvbiBwYXRoIGluIHRoZSBmdXR1cmUgdG8gY29udmVydApleGlzdGluZyBwZ19oYmEg cGFyYW1ldGVycyB0byBHVUMgdmFyaWFibGVzLgoKRXh0ZW5zaW9uIGludGVyZmFjZToKCldlIGRl ZmluZSBhIG5ldyBHVUMgY29udGV4dCwgUEdDX0hCQSwgYW5kIGEgbmV3IHNvdXJjZSwgUEdDX1Nf SEJBLgpQR0NfSEJBIHZhcmlhYmxlcyBtdXN0IGJlIGRlZmluZWQgZHVyaW5nIHNoYXJlZF9wcmVs b2FkX2xpYnJhcmllcwpvciBzZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzLiBUaGlzIGVuc3VyZXMg YWxsIGN1c3RvbSB2YXJpYWJsZXMKYXJlIHJlZ2lzdGVyZWQgYmVmb3JlIGNvbm5lY3Rpb25zIGFy ZSBhY2NlcHRlZC4KClBHQ19IQkEgdmFyaWFibGVzIGNhbiBiZSBzZXQgZnJvbToKICAtIHBvc3Rn cmVzcWwuY29uZgogIC0gcG9zdGdyZXNxbC5hdXRvLmNvbmYgKEFMVEVSIFNZU1RFTSkKICAtIHBn X2hiYS5jb25mIChuZXcpCgpQR0NfSEJBIHZhcmlhYmxlcyBjYW5ub3QgYmUgc2V0IHZpYToKICAt IEFMVEVSIFVTRVIgU0VUIC8gQUxURVIgREFUQUJBU0UgU0VUCiAgLSBTRVQgY29tbWFuZAogIC0g Q29ubmVjdGlvbiBwYXJhbWV0ZXJzIChQR09QVElPTlMpCgpPbmx5IFBHQ19IQkEgdmFyaWFibGVz IGNhbiBiZSBzZXQgd2l0aCB0aGUgbmV3IFBHQ19TX0hCQSBzb3VyY2U7CmV4aXN0aW5nIEdVQyB2 YXJpYWJsZSBkZWZpbml0aW9ucyBkbyBub3QgbmVlZCB0byBoYW5kbGUgdGhlIG5ldwpzb3VyY2Ug dHlwZS4KCkVycm9yIGhhbmRsaW5nIGNoYW5nZToKClRoaXMgZmVhdHVyZSByZXF1aXJlcyBhIGJl aGF2aW9yIGNoYW5nZSBpbiBwZ19oYmEuY29uZiBlcnJvcgpoYW5kbGluZyB3aGljaCBtYXkgYWZm ZWN0IHVzZXJzIG5vdCB1c2luZyB0aGUgbmV3IGZlYXR1cmUuCgpTaW5jZSB3ZSBhbGxvdyBib3Ro IHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBhbmQKc2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmllcyB0 byBkZWZpbmUgUEdDX0hCQSB2YXJpYWJsZXMgKGVuYWJsaW5nCnVwZGF0ZXMgb2YgcG90ZW50aWFs bHkgc2VjdXJpdHktcmVsYXRlZCBsaWJyYXJpZXMgd2l0aG91dCBhIHNlcnZlcgpyZXN0YXJ0KSwg d2UgY2FuIG5vIGxvbmdlciByZWplY3QgdW5rbm93biBwYXJhbWV0ZXJzIGluIHBnX2hiYS5jb25m CmF0IHBvc3RtYXN0ZXIgc3RhcnR1cC4KCkluc3RlYWQsIHVua25vd24gcGFyYW1ldGVycyBhcmUg dHJlYXRlZCBhcyBwbGFjZWhvbGRlcnMgKHNpbWlsYXIgdG8KY3VzdG9tIEdVQyB2YXJpYWJsZXMp IGFuZCBlcnJvciBoYW5kbGluZyBpcyBkZWxheWVkIHVudGlsIGFmdGVyCnNlc3Npb25fcHJlbG9h ZF9saWJyYXJpZXMgY29tcGxldGVzLiBJZiBhbnkgcGxhY2Vob2xkZXIgSEJBCnZhcmlhYmxlcyBy ZW1haW4gdW5kZWZpbmVkIGF0IHRoYXQgcG9pbnQsIHRoZSBjb25uZWN0aW9uIGlzIGFib3J0ZWQK d2l0aCBhIEZBVEFMIGVycm9yLCBldmVuIGlmIGF1dGhlbnRpY2F0aW9uIHByZXZpb3VzbHkgc3Vj Y2VlZGVkLgotLS0KIHNyYy9iYWNrZW5kL2xpYnBxL2hiYS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICA1OSArKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyAgICAgICAg ICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAg ICAgfCAgIDggKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAg IHwgIDgyICsrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAg ICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvbGlicHEvaGJhLmggICAgICAgICAgICAgICAgICAg ICAgIHwgICA3ICsKIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvaW5jbHVkZS91dGlscy9ndWMuaCAgICAgICAgICAgICAgICAgICAgICAg fCAgIDMgKwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL01ha2VmaWxlICAgICAgICB8ICAy MSArKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvbWVzb24uYnVpbGQgICAgIHwgIDM1 ICsrKysKIC4uLi90ZXN0X2hiYV9ndWMvdC8wMDFfaGJhX2d1Y192YXJpYWJsZXMucGwgICB8ICA1 NiArKysrKysKIC4uLi90ZXN0X2hiYV9ndWMvdC8wMDJfaGJhX2d1Y19zb3VyY2VzLnBsICAgICB8 IDE4NyArKysrKysrKysrKysrKysrKysKIC4uLi90ZXN0X2hiYV9ndWMvdC8wMDNfaGJhX2d1Y19w cmVjZWRlbmNlLnBsICB8IDEwNSArKysrKysrKysrCiAuLi4vdGVzdF9oYmFfZ3VjL3Rlc3RfaGJh X2d1Yy0tMS4wLnNxbCAgICAgICAgfCAgMjIgKysrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJh X2d1Yy90ZXN0X2hiYV9ndWMuYyAgfCAgOTMgKysrKysrKysrCiAuLi4vbW9kdWxlcy90ZXN0X2hi YV9ndWMvdGVzdF9oYmFfZ3VjLmNvbmYgICAgfCAgIDMgKwogLi4uL21vZHVsZXMvdGVzdF9oYmFf Z3VjL3Rlc3RfaGJhX2d1Yy5jb250cm9sIHwgICA1ICsKIC4uLi9tb2R1bGVzL3Rlc3RfaGJhX2d1 Y19jb250ZXh0cy9NYWtlZmlsZSAgICB8ICAxOCArKwogLi4uL21vZHVsZXMvdGVzdF9oYmFfZ3Vj X2NvbnRleHRzL21lc29uLmJ1aWxkIHwgIDI4ICsrKwogLi4uL3QvMDAxX2NvbnRleHRfdmFsaWRh dGlvbi5wbCAgICAgICAgICAgICAgIHwgIDU1ICsrKysrKwogLi4uL3Rlc3RfaGJhX2d1Y19jb250 ZXh0cy5jICAgICAgICAgICAgICAgICAgIHwgIDc5ICsrKysrKysrCiAyMiBmaWxlcyBjaGFuZ2Vk LCA4NzAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvdC8wMDFfaGJhX2d1Y192YXJpYWJs ZXMucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90 LzAwMl9oYmFfZ3VjX3NvdXJjZXMucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfaGJhX2d1Yy90LzAwM19oYmFfZ3VjX3ByZWNlZGVuY2UucGwKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90ZXN0X2hiYV9ndWMtLTEuMC5z cWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90ZXN0 X2hiYV9ndWMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFf Z3VjL3Rlc3RfaGJhX2d1Yy5jb25mCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2hiYV9ndWMvdGVzdF9oYmFfZ3VjLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy9NYWtlZmlsZQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjX2NvbnRleHRzL21lc29uLmJ1 aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29u dGV4dHMvdC8wMDFfY29udGV4dF92YWxpZGF0aW9uLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMvdGVzdF9oYmFfZ3VjX2NvbnRleHRz LmMKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9oYmEuYyBiL3NyYy9iYWNrZW5kL2xp YnBxL2hiYS5jCmluZGV4IDg3ZWU1NDFlODgwLi42ZmM0ZGViZjU2NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbGlicHEvaGJhLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMKQEAgLTI1 MDcsMTUgKzI1MDcsMjEgQEAgcGFyc2VfaGJhX2F1dGhfb3B0KGNoYXIgKm5hbWUsIGNoYXIgKnZh bCwgSGJhTGluZSAqaGJhbGluZSwKIAl9CiAJZWxzZQogCXsKLQkJZXJlcG9ydChlbGV2ZWwsCi0J CQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdfRklMRV9FUlJPUiksCi0JCQkJIGVycm1zZygidW5y ZWNvZ25pemVkIGF1dGhlbnRpY2F0aW9uIG9wdGlvbiBuYW1lOiBcIiVzXCIiLAotCQkJCQkJbmFt ZSksCi0JCQkJIGVycmNvbnRleHQoImxpbmUgJWQgb2YgY29uZmlndXJhdGlvbiBmaWxlIFwiJXNc IiIsCi0JCQkJCQkJbGluZV9udW0sIGZpbGVfbmFtZSkpKTsKLQkJKmVycl9tc2cgPSBwc3ByaW50 ZigidW5yZWNvZ25pemVkIGF1dGhlbnRpY2F0aW9uIG9wdGlvbiBuYW1lOiBcIiVzXCIiLAotCQkJ CQkJCW5hbWUpOwotCQlyZXR1cm4gZmFsc2U7CisJCS8qCisJCSAqIFVucmVjb2duaXplZCBvcHRp b24gbmFtZSAtIHRyZWF0IGl0IGFzIGEgcG90ZW50aWFsIEdVQyB2YXJpYWJsZS4KKwkJICogU3Rv cmUgdGhlIG5hbWU9dmFsdWUgcGFpciBpbiB0aGUgSGJhTGluZSdzIGd1Y19vcHRpb25zIGxpc3Qu CisJCSAqIEFjdHVhbCB2YWxpZGF0aW9uIChjaGVja2luZyBpZiB0aGUgR1VDIGlzIGRlZmluZWQp IGhhcHBlbnMgYXQKKwkJICogY29ubmVjdGlvbiB0aW1lIGFmdGVyIHNlc3Npb25fcHJlbG9hZF9s aWJyYXJpZXMgY29tcGxldGVzLgorCQkgKi8KKwkJSGJhT3B0aW9uICAqb3B0OworCisJCW9wdCA9 IHBhbGxvYyhzaXplb2YoSGJhT3B0aW9uKSk7CisJCW9wdC0+bmFtZSA9IHBzdHJkdXAobmFtZSk7 CisJCW9wdC0+dmFsdWUgPSBwc3RyZHVwKHZhbCk7CisJCWhiYWxpbmUtPmd1Y19vcHRpb25zID0g bGFwcGVuZChoYmFsaW5lLT5ndWNfb3B0aW9ucywgb3B0KTsKKworCQllbG9nKERFQlVHMiwgInBn X2hiYS5jb25mIGxpbmUgJWQ6IHN0b3JpbmcgR1VDIG9wdGlvbiAlcyA9ICVzIiwKKwkJCSBsaW5l X251bSwgbmFtZSwgdmFsKTsKIAl9CiAJcmV0dXJuIHRydWU7CiB9CkBAIC0zMTEzLDExICszMTE5 LDQ0IEBAIGxvYWRfaWRlbnQodm9pZCkKIAogCiAKKy8qCisgKiBhcHBseV9oYmFfZ3VjX29wdGlv bnMKKyAqCQlBcHBseSBHVUMgdmFyaWFibGUgc2V0dGluZ3MgZnJvbSB0aGUgbWF0Y2hlZCBIQkEg bGluZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgZ3VjX29wdGlvbnMgbGlz dCBmcm9tIHRoZSBtYXRjaGVkIHBnX2hiYS5jb25mCisgKiBsaW5lIGFuZCBhcHBsaWVzIGVhY2gg R1VDIHNldHRpbmcuIFZhcmlhYmxlcyB3aWxsIGVpdGhlciBiZSBzZXQgKGlmIGFscmVhZHkKKyAq IGRlZmluZWQpIG9yIGNyZWF0ZSBwbGFjZWhvbGRlcnMgKGlmIG5vdCB5ZXQgZGVmaW5lZCkuIFZh bGlkYXRpb24gb2YKKyAqIHVuZGVmaW5lZCB2YXJpYWJsZXMgYW5kIGNvbnRleHQgY2hlY2tpbmcg aGFwcGVucyBsYXRlciwgYWZ0ZXIKKyAqIHNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgY29tcGxl dGVzIGluIHBvc3Rpbml0LmMuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYmFfZ3VjX29wdGlv bnMoUG9ydCAqcG9ydCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWlmIChwb3J0LT5oYmEtPmd1 Y19vcHRpb25zID09IE5JTCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywgcG9ydC0+aGJhLT5n dWNfb3B0aW9ucykKKwl7CisJCUhiYU9wdGlvbiAgKm9wdCA9IChIYmFPcHRpb24gKikgbGZpcnN0 KGxjKTsKKworCQllbG9nKERFQlVHMiwgIkFwcGx5aW5nIEhCQSBHVUMgb3B0aW9uOiAlcyA9ICVz Iiwgb3B0LT5uYW1lLCBvcHQtPnZhbHVlKTsKKworCQkodm9pZCkgc2V0X2NvbmZpZ19vcHRpb24o b3B0LT5uYW1lLCBvcHQtPnZhbHVlLAorCQkJCQkJCQkgUEdDX0hCQSwgUEdDX1NfSEJBLAorCQkJ CQkJCQkgR1VDX0FDVElPTl9TRVQsIHRydWUsIEVSUk9SLCBmYWxzZSk7CisJfQorfQorCiAvKgog ICoJRGV0ZXJtaW5lIHdoYXQgYXV0aGVudGljYXRpb24gbWV0aG9kIHNob3VsZCBiZSB1c2VkIHdo ZW4gYWNjZXNzaW5nIGRhdGFiYXNlCiAgKgkiZGF0YWJhc2UiIGZyb20gZnJvbnRlbmQgInJhZGRy IiwgdXNlciAidXNlciIuICBSZXR1cm4gdGhlIG1ldGhvZCBhbmQKICAqCWFuIG9wdGlvbmFsIGFy Z3VtZW50IChzdG9yZWQgaW4gZmllbGRzIG9mICpwb3J0KSwgYW5kIFNUQVRVU19PSy4KICAqCisg KglBbHNvIGFwcGxpZXMgYWxsIEdVQyB2YXJpYWJsZXMgZnJvbSB0aGUgbWF0Y2hlZCBIQkEgbGlu ZSwgYXMgdGhlc2UgdmFyaWFibGVzCisgKgltaWdodCBpbW1lZGlhdGVseSByZXF1aXJlZCBieSBh dXRoZW50aWNhdGlvbiBwbHVnaW5zLgorICoKICAqCUlmIHRoZSBmaWxlIGRvZXMgbm90IGNvbnRh aW4gYW55IGVudHJ5IG1hdGNoaW5nIHRoZSByZXF1ZXN0LCB3ZSByZXR1cm4KICAqCW1ldGhvZCA9 IHVhSW1wbGljaXRSZWplY3QuCiAgKi8KQEAgLTMxMjUsNiArMzE2NCw4IEBAIHZvaWQKIGhiYV9n ZXRhdXRobWV0aG9kKFBvcnQgKnBvcnQpCiB7CiAJY2hlY2tfaGJhKHBvcnQpOworCisJYXBwbHlf aGJhX2d1Y19vcHRpb25zKHBvcnQpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwpp bmRleCA1NjNmMjAzNzRmZi4uOTY0YTc3ZDAyYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvbWlzY2luaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0 LmMKQEAgLTE3ODYsNiArMTc4NiwxMCBAQCBjaGFyCSAgICpsb2NhbF9wcmVsb2FkX2xpYnJhcmll c19zdHJpbmcgPSBOVUxMOwogYm9vbAkJcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNf aW5fcHJvZ3Jlc3MgPSBmYWxzZTsKIGJvb2wJCXByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzX2RvbmUgPSBmYWxzZTsKIAorLyogRmxhZyB0ZWxsaW5nIHRoYXQgd2UgYXJlIGxvYWRpbmcg c2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmllcyAqLworYm9vbAkJcHJvY2Vzc19zZXNzaW9uX3ByZWxv YWRfbGlicmFyaWVzX2luX3Byb2dyZXNzID0gZmFsc2U7Citib29sCQlwcm9jZXNzX3Nlc3Npb25f cHJlbG9hZF9saWJyYXJpZXNfZG9uZSA9IGZhbHNlOworCiBzaG1lbV9yZXF1ZXN0X2hvb2tfdHlw ZSBzaG1lbV9yZXF1ZXN0X2hvb2sgPSBOVUxMOwogYm9vbAkJcHJvY2Vzc19zaG1lbV9yZXF1ZXN0 c19pbl9wcm9ncmVzcyA9IGZhbHNlOwogCkBAIC0xODY0LDkgKzE4NjgsMTIgQEAgcHJvY2Vzc19z aGFyZWRfcHJlbG9hZF9saWJyYXJpZXModm9pZCkKIHZvaWQKIHByb2Nlc3Nfc2Vzc2lvbl9wcmVs b2FkX2xpYnJhcmllcyh2b2lkKQogeworCXByb2Nlc3Nfc2Vzc2lvbl9wcmVsb2FkX2xpYnJhcmll c19pbl9wcm9ncmVzcyA9IHRydWU7CiAJbG9hZF9saWJyYXJpZXMoc2Vzc2lvbl9wcmVsb2FkX2xp YnJhcmllc19zdHJpbmcsCiAJCQkJICAgInNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMiLAogCQkJ CSAgIGZhbHNlKTsKKwlwcm9jZXNzX3Nlc3Npb25fcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jl c3MgPSBmYWxzZTsKKwlwcm9jZXNzX3Nlc3Npb25fcHJlbG9hZF9saWJyYXJpZXNfZG9uZSA9IHRy dWU7CiAJbG9hZF9saWJyYXJpZXMobG9jYWxfcHJlbG9hZF9saWJyYXJpZXNfc3RyaW5nLAogCQkJ CSAgICJsb2NhbF9wcmVsb2FkX2xpYnJhcmllcyIsCiAJCQkJICAgdHJ1ZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMKaW5kZXggNTJjMDVhOWQxZDUuLmQzYmI4ODI0M2M2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9wb3N0aW5pdC5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGJfcm9sZV9zZXR0aW5nLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAibGliL3N0cmluZ2lu Zm8uaCIKICNpbmNsdWRlICJsaWJwcS9hdXRoLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUu aCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtMTIyNSw2ICsxMjI2LDEzIEBAIEluaXRQ b3N0Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwKIAlpZiAoKGZsYWdzICYg SU5JVF9QR19MT0FEX1NFU1NJT05fTElCUykgIT0gMCkKIAkJcHJvY2Vzc19zZXNzaW9uX3ByZWxv YWRfbGlicmFyaWVzKCk7CiAKKwkvKgorCSAqIE5vdyB0aGF0IHNlc3Npb25fcHJlbG9hZF9saWJy YXJpZXMgaGFzIGNvbXBsZXRlZCwgdmFsaWRhdGUgdGhhdCBhbGwKKwkgKiBHVUMgdmFyaWFibGVz IHNldCBmcm9tIHBnX2hiYS5jb25mIGFyZSBwcm9wZXJseSBkZWZpbmVkIHdpdGggdGhlCisJICog Y29ycmVjdCBjb250ZXh0LgorCSAqLworCWNoZWNrX2hiYV9ndWNfdmFyaWFibGVzKCk7CisKIAkv KiBmaWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhpcyBlbnRyeSBpbiB0aGUgUGdCYWNrZW5kU3Rh dHVzIGFycmF5ICovCiAJaWYgKCFib290c3RyYXApCiAJCXBnc3RhdF9iZXN0YXJ0X2ZpbmFsKCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWMuYwppbmRleCBhZTlkNWYzZmI3MC4uNGFmYTQxMmUzODUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYwpAQCAtMzM5NCw2ICszMzk0LDE3IEBAIHNldF9jb25maWdfd2l0aF9oYW5kbGUo Y29uc3QgY2hhciAqbmFtZSwgY29uZmlnX2hhbmRsZSAqaGFuZGxlLAogCQkJICogc2lnbmFscyB0 byBpbmRpdmlkdWFsIGJhY2tlbmRzIG9ubHkuCiAJCQkgKi8KIAkJCWJyZWFrOworCQljYXNlIFBH Q19IQkE6CisJCQlpZiAoY29udGV4dCAhPSBQR0NfU0lHSFVQICYmIGNvbnRleHQgIT0gUEdDX1BP U1RNQVNURVIgJiYKKwkJCQlzb3VyY2UgIT0gUEdDX1NfSEJBKQorCQkJeworCQkJCWVyZXBvcnQo ZWxldmVsLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5UX0NIQU5HRV9SVU5USU1FX1BBUkFN KSwKKwkJCQkJCSBlcnJtc2coInBhcmFtZXRlciBcIiVzXCIgY2Fubm90IGJlIGNoYW5nZWQgbm93 IiwKKwkJCQkJCQkJcmVjb3JkLT5uYW1lKSkpOworCQkJCXJldHVybiAwOworCQkJfQorCQkJYnJl YWs7CiAJCWNhc2UgUEdDX1NVX0JBQ0tFTkQ6CiAJCQlpZiAoY29udGV4dCA9PSBQR0NfQkFDS0VO RCkKIAkJCXsKQEAgLTQxNTUsNiArNDE2Niw1NSBAQCBnZXRfY29uZmlnX2hhbmRsZShjb25zdCBj aGFyICpuYW1lKQogCXJldHVybiBOVUxMOwogfQogCisvKgorICogY2hlY2tfaGJhX2d1Y192YXJp YWJsZXMKKyAqCisgKiBDaGVjayBpZiBhbnkgR1VDIHZhcmlhYmxlcyBzZXQgZnJvbSBwZ19oYmEu Y29uZiAoc291cmNlID0gUEdDX1NfSEJBKQorICogYXJlIHN0aWxsIHBsYWNlaG9sZGVycyAodW5k ZWZpbmVkKSBvciBoYXZlIHRoZSB3cm9uZyBjb250ZXh0LgorICoKKyAqIEZvciBlYWNoIGludmFs aWQgdmFyaWFibGUsIHdlIGVtaXQgYSBGQVRBTCBlcnJvciB3aXRoIGFuIGFwcHJvcHJpYXRlCisg KiBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlIHByb2JsZW0uCisgKgorICogVGhpcyBzaG91bGQgYmUg Y2FsbGVkIGFmdGVyIHNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMgY29tcGxldGVzIHRvCisgKiBl bnN1cmUgZXh0ZW5zaW9ucyBoYXZlIGhhZCBhIGNoYW5jZSB0byBkZWZpbmUgdGhlaXIgUEdDX0hC QSB2YXJpYWJsZXMuCisgKi8KK3ZvaWQKK2NoZWNrX2hiYV9ndWNfdmFyaWFibGVzKHZvaWQpCit7 CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKwlHVUNIYXNoRW50cnkgKmhlbnRyeTsKKworCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgZ3VjX2hhc2h0YWIpOworCXdoaWxlICgoaGVudHJ5ID0gKEdV Q0hhc2hFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJeworCQlz dHJ1Y3QgY29uZmlnX2dlbmVyaWMgKmdjb25mID0gaGVudHJ5LT5ndWN2YXI7CisKKwkJaWYgKGdj b25mLT5zb3VyY2UgIT0gUEdDX1NfSEJBKQorCQkJY29udGludWU7CisKKwkJaWYgKGdjb25mLT5m bGFncyAmIEdVQ19DVVNUT01fUExBQ0VIT0xERVIpCisJCXsKKwkJCWVyZXBvcnQoRkFUQUwsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9BVVRIT1JJWkFUSU9OX1NQRUNJRklDQVRJT04p LAorCQkJCQkgZXJybXNnKCJhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIGVycm9yIiksCisJ CQkJCSBlcnJkZXRhaWwoInBnX2hiYS5jb25mIHJlZmVyZW5jZXMgdW5kZWZpbmVkIEdVQyB2YXJp YWJsZSBcIiVzXCIiLAorCQkJCQkJCSAgIGdjb25mLT5uYW1lKSwKKwkJCQkJIGVycmhpbnQoIkVu c3VyZSB0aGUgZXh0ZW5zaW9uIGRlZmluaW5nIHRoaXMgdmFyaWFibGUgaXMgbG9hZGVkIGluIHNl c3Npb25fcHJlbG9hZF9saWJyYXJpZXMgb3Igc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzLiIpKSk7 CisJCX0KKworCQlpZiAoZ2NvbmYtPmNvbnRleHQgIT0gUEdDX0hCQSkKKwkJeworCQkJZXJlcG9y dChGQVRBTCwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9DQU5UX0NIQU5HRV9SVU5USU1FX1BBUkFN KSwKKwkJCQkJIGVycm1zZygicGFyYW1ldGVyIFwiJXNcIiBjYW5ub3QgYmUgc2V0IGluIHBnX2hi YS5jb25mIiwKKwkJCQkJCQlnY29uZi0+bmFtZSksCisJCQkJCSBlcnJkZXRhaWwoIk9ubHkgdmFy aWFibGVzIHdpdGggY29udGV4dCBQR0NfSEJBIGNhbiBiZSBzZXQgZnJvbSBwZ19oYmEuY29uZi4i KSwKKwkJCQkJIGVycmhpbnQoIlRoaXMgdmFyaWFibGUgaGFzIGNvbnRleHQgXCIlc1wiLiIsCisJ CQkJCQkJIEd1Y0NvbnRleHRfTmFtZXNbZ2NvbmYtPmNvbnRleHRdKSkpOworCQl9CisJfQorfQor CiAKIC8qCiAgKiBTZXQgdGhlIGZpZWxkcyBmb3Igc291cmNlIGZpbGUgYW5kIGxpbmUgbnVtYmVy IHRoZSBzZXR0aW5nIGNhbWUgZnJvbS4KQEAgLTQ3NTYsNiArNDgxNiwxOSBAQCBpbml0X2N1c3Rv bV92YXJpYWJsZShjb25zdCBjaGFyICpuYW1lLAogCQkhcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9s aWJyYXJpZXNfaW5fcHJvZ3Jlc3MpCiAJCWVsb2coRkFUQUwsICJjYW5ub3QgY3JlYXRlIFBHQ19Q T1NUTUFTVEVSIHZhcmlhYmxlcyBhZnRlciBzdGFydHVwIik7CiAKKwkvKgorCSAqIE9ubHkgYWxs b3cgY3VzdG9tIFBHQ19IQkEgdmFyaWFibGVzIHRvIGJlIGNyZWF0ZWQgYmVmb3JlCisJICogc2Vz c2lvbl9wcmVsb2FkX2xpYnJhcmllcyBjb21wbGV0ZXMuIEFmdGVyIHRoYXQgcG9pbnQsIGF1dGhl bnRpY2F0aW9uCisJICogaGFzIGFscmVhZHkgb2NjdXJyZWQgYW5kIGNoZWNrX2hiYV9ndWNfdmFy aWFibGVzIGhhcyB2YWxpZGF0ZWQgYWxsCisJICogUEdDX0hCQSB2YXJpYWJsZXMsIHNvIGRlZmlu aW5nIG5ldyBvbmVzIHdvdWxkIGJ5cGFzcyB2YWxpZGF0aW9uLgorCSAqLworCWlmIChjb250ZXh0 ID09IFBHQ19IQkEgJiYgcHJvY2Vzc19zZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzX2RvbmUpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiUEdDX0hCQSB2YXJpYWJsZXMgbXVzdCBiZSBk ZWZpbmVkIGJlZm9yZSBzZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzIGNvbXBsZXRlcyIpLAorCQkJ CSBlcnJkZXRhaWwoIkF0dGVtcHRlZCB0byBkZWZpbmUgXCIlc1wiIGFmdGVyIHNlc3Npb24gcHJl bG9hZCIsIG5hbWUpLAorCQkJCSBlcnJoaW50KCJNb3ZlIHRoZSBleHRlbnNpb24gZGVmaW5pbmcg dGhpcyB2YXJpYWJsZSB0byBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgb3Igc2Vzc2lvbl9wcmVs b2FkX2xpYnJhcmllcyIpKSk7CisKIAkvKgogCSAqIFdlIGNhbid0IHN1cHBvcnQgY3VzdG9tIEdV Q19MSVNUX1FVT1RFIHZhcmlhYmxlcywgYmVjYXVzZSB0aGUgd3JvbmcKIAkgKiB0aGluZ3Mgd291 bGQgaGFwcGVuIGlmIHN1Y2ggYSB2YXJpYWJsZSB3ZXJlIHNldCBvciBwZ19kdW1wJ2Qgd2hlbiB0 aGUKQEAgLTY2MDMsNiArNjY3NiwxNSBAQCB2YWxpZGF0ZV9vcHRpb25fYXJyYXlfaXRlbShjb25z dCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSwKIAkJCSAoc3VwZXJ1c2VyKCkgfHwKIAkJ CSAgcGdfcGFyYW1ldGVyX2FjbGNoZWNrKG5hbWUsIEdldFVzZXJJZCgpLCBBQ0xfU0VUKSA9PSBB Q0xDSEVDS19PSykpCiAJCSAvKiBvayAqLyA7CisJZWxzZSBpZiAoZ2NvbmYtPmNvbnRleHQgPT0g UEdDX0hCQSkKKwl7CisJCWlmIChza2lwSWZOb1Blcm1pc3Npb25zKQorCQkJcmV0dXJuIGZhbHNl OworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOVF9DSEFOR0VfUlVO VElNRV9QQVJBTSksCisJCQkJIGVycm1zZygicGFyYW1ldGVyIFwiJXNcIiBjYW5ub3QgYmUgc2V0 IGJ5IEFMVEVSIFVTRVIgb3IgQUxURVIgREFUQUJBU0UiLCBuYW1lKSwKKwkJCQkgZXJyaGludCgi VXNlIHBvc3RncmVzcWwuY29uZiwgQUxURVIgU1lTVEVNLCBvciBwZ19oYmEuY29uZiB0byBzZXQg dGhpcyBwYXJhbWV0ZXIuIikpKTsKKwl9CiAJZWxzZSBpZiAoc2tpcElmTm9QZXJtaXNzaW9ucykK IAkJcmV0dXJuIGZhbHNlOwogCS8qIGlmIGEgcGVybWlzc2lvbnMgZXJyb3Igc2hvdWxkIGJlIHRo cm93biwgbGV0IHNldF9jb25maWdfb3B0aW9uIGRvIGl0ICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jCmluZGV4IDczZmY2YWQwYTMyLi5iNDMwMmQwNzQ2NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMKQEAgLTY1OCw2ICs2NTgsNyBAQCBjb25zdCBjaGFyICpjb25zdCBH dWNDb250ZXh0X05hbWVzW10gPQogCVtQR0NfSU5URVJOQUxdID0gImludGVybmFsIiwKIAlbUEdD X1BPU1RNQVNURVJdID0gInBvc3RtYXN0ZXIiLAogCVtQR0NfU0lHSFVQXSA9ICJzaWdodXAiLAor CVtQR0NfSEJBXSA9ICJoYmEiLAogCVtQR0NfU1VfQkFDS0VORF0gPSAic3VwZXJ1c2VyLWJhY2tl bmQiLAogCVtQR0NfQkFDS0VORF0gPSAiYmFja2VuZCIsCiAJW1BHQ19TVVNFVF0gPSAic3VwZXJ1 c2VyIiwKQEAgLTY4NCw2ICs2ODUsNyBAQCBjb25zdCBjaGFyICpjb25zdCBHdWNTb3VyY2VfTmFt ZXNbXSA9CiAJW1BHQ19TX1VTRVJdID0gInVzZXIiLAogCVtQR0NfU19EQVRBQkFTRV9VU0VSXSA9 ICJkYXRhYmFzZSB1c2VyIiwKIAlbUEdDX1NfQ0xJRU5UXSA9ICJjbGllbnQiLAorCVtQR0NfU19I QkFdID0gInBnX2hiYS5jb25mIiwKIAlbUEdDX1NfT1ZFUlJJREVdID0gIm92ZXJyaWRlIiwKIAlb UEdDX1NfSU5URVJBQ1RJVkVdID0gImludGVyYWN0aXZlIiwKIAlbUEdDX1NfVEVTVF0gPSAidGVz dCIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9oYmEuaCBiL3NyYy9pbmNsdWRlL2xp YnBxL2hiYS5oCmluZGV4IDdiOTNiYTRhNzA5Li5lMTg0OGFkMDNkMCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbGlicHEvaGJhLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvaGJhLmgKQEAgLTky LDYgKzkyLDEyIEBAIHR5cGVkZWYgc3RydWN0IEF1dGhUb2tlbgogCXJlZ2V4X3QgICAgKnJlZ2V4 OwogfSBBdXRoVG9rZW47CiAKK3R5cGVkZWYgc3RydWN0IEhiYU9wdGlvbgoreworCWNoYXIJICAg Km5hbWU7CisJY2hhcgkgICAqdmFsdWU7Cit9IEhiYU9wdGlvbjsKKwogdHlwZWRlZiBzdHJ1Y3Qg SGJhTGluZQogewogCWNoYXIJICAgKnNvdXJjZWZpbGU7CkBAIC0xNDAsNiArMTQ2LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgSGJhTGluZQogCWNoYXIJICAgKm9hdXRoX3Njb3BlOwogCWNoYXIJICAgKm9h dXRoX3ZhbGlkYXRvcjsKIAlib29sCQlvYXV0aF9za2lwX3VzZXJtYXA7CisJTGlzdAkgICAqZ3Vj X29wdGlvbnM7CiB9IEhiYUxpbmU7CiAKIHR5cGVkZWYgc3RydWN0IElkZW50TGluZQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApp bmRleCBkYjU1OWIzOWM0ZC4uMGE1ZGY2MmY5OWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21p c2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC01MTIsNiArNTEyLDgg QEAgZXh0ZXJuIHZvaWQgQmFzZUluaXQodm9pZCk7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBJ Z25vcmVTeXN0ZW1JbmRleGVzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcHJvY2Vzc19zaGFy ZWRfcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3M7CiBleHRlcm4gUEdETExJTVBPUlQgYm9v bCBwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19kb25lOworZXh0ZXJuIFBHRExMSU1Q T1JUIGJvb2wgcHJvY2Vzc19zZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzOwor ZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcHJvY2Vzc19zZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVz X2RvbmU7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBwcm9jZXNzX3NobWVtX3JlcXVlc3RzX2lu X3Byb2dyZXNzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKnNlc3Npb25fcHJlbG9hZF9saWJy YXJpZXNfc3RyaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKnNoYXJlZF9wcmVsb2FkX2xp YnJhcmllc19zdHJpbmc7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9ndWMuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2d1Yy5oCmluZGV4IGJmMzk4NzhjNDNlLi40NjE2MDZmZjYyYiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv Z3VjLmgKQEAgLTczLDYgKzczLDcgQEAgdHlwZWRlZiBlbnVtCiAJUEdDX0lOVEVSTkFMLAogCVBH Q19QT1NUTUFTVEVSLAogCVBHQ19TSUdIVVAsCisJUEdDX0hCQSwKIAlQR0NfU1VfQkFDS0VORCwK IAlQR0NfQkFDS0VORCwKIAlQR0NfU1VTRVQsCkBAIC0xMjAsNiArMTIxLDcgQEAgdHlwZWRlZiBl bnVtCiAJUEdDX1NfVVNFUiwJCQkJCS8qIHBlci11c2VyIHNldHRpbmcgKi8KIAlQR0NfU19EQVRB QkFTRV9VU0VSLAkJLyogcGVyLXVzZXItYW5kLWRhdGFiYXNlIHNldHRpbmcgKi8KIAlQR0NfU19D TElFTlQsCQkJCS8qIGZyb20gY2xpZW50IGNvbm5lY3Rpb24gcmVxdWVzdCAqLworCVBHQ19TX0hC QSwJCQkJCS8qIGZyb20gcGdfaGJhLmNvbmYgKi8KIAlQR0NfU19PVkVSUklERSwJCQkJLyogc3Bl Y2lhbCBjYXNlIHRvIGZvcmNpYmx5IHNldCBkZWZhdWx0ICovCiAJUEdDX1NfSU5URVJBQ1RJVkUs CQkJLyogZGl2aWRpbmcgbGluZSBmb3IgZXJyb3IgcmVwb3J0aW5nICovCiAJUEdDX1NfVEVTVCwJ CQkJCS8qIHRlc3QgcGVyLWRhdGFiYXNlIG9yIHBlci11c2VyIHNldHRpbmcgKi8KQEAgLTQ1Niw2 ICs0NTgsNyBAQCBleHRlcm4gaW50CXNldF9jb25maWdfd2l0aF9oYW5kbGUoY29uc3QgY2hhciAq bmFtZSwgY29uZmlnX2hhbmRsZSAqaGFuZGxlLAogCQkJCQkJCQkgICBHdWNBY3Rpb24gYWN0aW9u LCBib29sIGNoYW5nZVZhbCwKIAkJCQkJCQkJICAgaW50IGVsZXZlbCwgYm9vbCBpc19yZWxvYWQp OwogZXh0ZXJuIGNvbmZpZ19oYW5kbGUgKmdldF9jb25maWdfaGFuZGxlKGNvbnN0IGNoYXIgKm5h bWUpOworZXh0ZXJuIHZvaWQgY2hlY2tfaGJhX2d1Y192YXJpYWJsZXModm9pZCk7CiBleHRlcm4g dm9pZCBBbHRlclN5c3RlbVNldENvbmZpZ0ZpbGUoQWx0ZXJTeXN0ZW1TdG10ICphbHRlcnN5c3N0 bXQpOwogZXh0ZXJuIGNoYXIgKkdldENvbmZpZ09wdGlvbkJ5TmFtZShjb25zdCBjaGFyICpuYW1l LCBjb25zdCBjaGFyICoqdmFybmFtZSwKIAkJCQkJCQkJICAgYm9vbCBtaXNzaW5nX29rKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVz L21lc29uLmJ1aWxkCmluZGV4IDFiMzFjNWI5OGQ2Li4yMTA2NzRiMjc3NCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29u LmJ1aWxkCkBAIC0yOSw2ICsyOSw4IEBAIHN1YmRpcigndGVzdF9kc21fcmVnaXN0cnknKQogc3Vi ZGlyKCd0ZXN0X2VzY2FwZScpCiBzdWJkaXIoJ3Rlc3RfZXh0ZW5zaW9ucycpCiBzdWJkaXIoJ3Rl c3RfZ2lucG9zdGluZ2xpc3QnKQorc3ViZGlyKCd0ZXN0X2hiYV9ndWMnKQorc3ViZGlyKCd0ZXN0 X2hiYV9ndWNfY29udGV4dHMnKQogc3ViZGlyKCd0ZXN0X2ludDEyOCcpCiBzdWJkaXIoJ3Rlc3Rf aW50ZWdlcnNldCcpCiBzdWJkaXIoJ3Rlc3RfanNvbl9wYXJzZXInKQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfaGJhX2d1Yy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMmI4OTA4OGUzMzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf aGJhX2d1Yy9NYWtlZmlsZQpAQCAtMCwwICsxLDIxIEBACisjIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9oYmFfZ3VjL01ha2VmaWxlCisKK01PRFVMRV9iaWcgPSB0ZXN0X2hiYV9ndWMKK09CSlMgPSBc CisJJChXSU4zMlJFUykgXAorCXRlc3RfaGJhX2d1Yy5vCitQR0ZJTEVERVNDID0gInRlc3RfaGJh X2d1YyAtIHRlc3QgbW9kdWxlIGZvciBQR0NfSEJBIEdVQyB2YXJpYWJsZXMiCisKK0VYVEVOU0lP TiA9IHRlc3RfaGJhX2d1YworREFUQSA9IHRlc3RfaGJhX2d1Yy0tMS4wLnNxbAorCitpZmRlZiBV U0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQR19DT05G SUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGlyID0gc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2hiYV9ndWMKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQo dG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2Rpcikv Y29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9oYmFfZ3VjL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hi YV9ndWMvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmQ4YmYwMjMzMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hi YV9ndWMvbWVzb24uYnVpbGQKQEAgLTAsMCArMSwzNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3Rlc3RfaGJhX2d1Y19zb3Vy Y2VzID0gZmlsZXMoCisgICd0ZXN0X2hiYV9ndWMuYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09 ICd3aW5kb3dzJworICB0ZXN0X2hiYV9ndWNfc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mo d2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3Rlc3RfaGJhX2d1Yycs CisgICAgJy0tRklMRURFU0MnLCAndGVzdF9oYmFfZ3VjIC0gdGVzdCBtb2R1bGUgZm9yIFBHQ19I QkEgR1VDIHZhcmlhYmxlcycsXSkKK2VuZGlmCisKK3Rlc3RfaGJhX2d1YyA9IHNoYXJlZF9tb2R1 bGUoJ3Rlc3RfaGJhX2d1YycsCisgIHRlc3RfaGJhX2d1Y19zb3VyY2VzLAorICBrd2FyZ3M6IHBn X3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3RhbGxfbGlicyArPSB0ZXN0X2hiYV9ndWMKKwor dGVzdF9pbnN0YWxsX2RhdGEgKz0gZmlsZXMoCisgICd0ZXN0X2hiYV9ndWMuY29udHJvbCcsCisg ICd0ZXN0X2hiYV9ndWMtLTEuMC5zcWwnLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rl c3RfaGJhX2d1YycsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQn OiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAndGFwJzogeworICAgICd0ZXN0cyc6IFsK KyAgICAgICd0LzAwMV9oYmFfZ3VjX3ZhcmlhYmxlcy5wbCcsCisgICAgICAndC8wMDJfaGJhX2d1 Y19zb3VyY2VzLnBsJywKKyAgICAgICd0LzAwM19oYmFfZ3VjX3ByZWNlZGVuY2UucGwnLAorICAg IF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90 LzAwMV9oYmFfZ3VjX3ZhcmlhYmxlcy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3Vj L3QvMDAxX2hiYV9ndWNfdmFyaWFibGVzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi42MjVmM2JlMWU1MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9oYmFfZ3VjL3QvMDAxX2hiYV9ndWNfdmFyaWFibGVzLnBsCkBAIC0wLDAgKzEsNTYg QEAKKyMgVGVzdCBQR0NfSEJBIEdVQyB2YXJpYWJsZXMgaW4gcGdfaGJhLmNvbmYKKwordXNlIHN0 cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7 CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtYWluJyk7Cisk bm9kZS0+aW5pdDsKKworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSJz ZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzID0gJ3Rlc3RfaGJhX2d1YyciKTsKKworbXkgJGhiYV9j b25mID0gJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZic7CitvcGVuIG15ICRoYmFfZmgs ICc+JywgJGhiYV9jb25mIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gJGhiYV9jb25mOiAkISI7Citw cmludCAkaGJhX2ZoICIjIFRlc3QgSEJBIGNvbmZpZ3VyYXRpb24gd2l0aCBHVUMgdmFyaWFibGVz XG4iOworcHJpbnQgJGhiYV9maCAibG9jYWwgYWxsIGFsbCB0cnVzdCB0ZXN0X2hiYV9ndWMuc3Ry aW5nX3Zhcj1mcm9tX2hiYSB0ZXN0X2hiYV9ndWMuaW50X3Zhcj05OTlcbiI7CitjbG9zZSAkaGJh X2ZoOworCiskbm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVB VEUgRVhURU5TSU9OIHRlc3RfaGJhX2d1YzsnKTsKK215ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjdXJyZW50X3NldHRpbmcoJ3Rlc3RfaGJhX2d1Yy5z dHJpbmdfdmFyJyksIGN1cnJlbnRfc2V0dGluZygndGVzdF9oYmFfZ3VjLmludF92YXInKTsiCisp OworaXMoJHJlc3VsdCwgJ2Zyb21faGJhfDk5OScsCisJJ0dVQyB2YXJpYWJsZXMgc2V0IGZyb20g cGdfaGJhLmNvbmYgYXJlIGFjY2Vzc2libGUnKTsKKworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHNvdXJjZSBGUk9NIHBnX3NldHRpbmdzIFdIRVJFIG5h bWUgPSAndGVzdF9oYmFfZ3VjLnN0cmluZ192YXInOyIKKyk7CitpcygkcmVzdWx0LCAncGdfaGJh LmNvbmYnLAorCSdHVUMgdmFyaWFibGUgc291cmNlIHNob3dzIHBnX2hiYS5jb25mJyk7CisKK215 ICRub2RlX25vX2V4dCA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9fZXh0ZW5z aW9uJyk7Ciskbm9kZV9ub19leHQtPmluaXQ7CisKK215ICRoYmFfY29uZl9ub19leHQgPSAkbm9k ZV9ub19leHQtPmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZic7CitvcGVuIG15ICRoYmFfbm9fZXh0 X2ZoLCAnPicsICRoYmFfY29uZl9ub19leHQgb3IgZGllICJDb3VsZCBub3Qgb3BlbiAkaGJhX2Nv bmZfbm9fZXh0OiAkISI7CitwcmludCAkaGJhX25vX2V4dF9maCAiIyBUZXN0IEhCQSBjb25maWd1 cmF0aW9uIHdpdGggdW5kZWZpbmVkIEdVQyB2YXJpYWJsZXNcbiI7CitwcmludCAkaGJhX25vX2V4 dF9maCAibG9jYWwgYWxsIGFsbCB0cnVzdCB0ZXN0X2hiYV9ndWMudW5kZWZpbmVkX3Zhcj12YWx1 ZVxuIjsKK2Nsb3NlICRoYmFfbm9fZXh0X2ZoOworCiskbm9kZV9ub19leHQtPnN0YXJ0OworCitt eSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9ub19leHQtPnBzcWwoJ3Bvc3RncmVz JywgJ1NFTEVDVCAxOycpOworaXNudCgkcmV0LCAwLCAnQ29ubmVjdGlvbiByZWplY3RlZCB3aGVu IEhCQSBHVUMgdmFyaWFibGUgaXMgdW5kZWZpbmVkJyk7CitsaWtlKCRzdGRlcnIsIHFyL2F1dGhl bnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZXJyb3IvLAorCSdFcnJvciBtZXNzYWdlIGluZGljYXRl cyBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIHByb2JsZW0nKTsKK2xpa2UoJHN0ZGVyciwg cXIvdW5kZWZpbmVkIEdVQyB2YXJpYWJsZS8sCisJJ0Vycm9yIG1lc3NhZ2UgbWVudGlvbnMgdW5k ZWZpbmVkIEdVQyB2YXJpYWJsZScpOworCiskbm9kZV9ub19leHQtPnN0b3A7Ciskbm9kZS0+c3Rv cDsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf aGJhX2d1Yy90LzAwMl9oYmFfZ3VjX3NvdXJjZXMucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf aGJhX2d1Yy90LzAwMl9oYmFfZ3VjX3NvdXJjZXMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmU3NjJiOGE5NmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2hiYV9ndWMvdC8wMDJfaGJhX2d1Y19zb3VyY2VzLnBsCkBAIC0wLDAgKzEs MTg3IEBACisjIFRlc3QgdGhhdCBQR0NfSEJBIHZhcmlhYmxlcyBjYW4gb25seSBiZSBzZXQgZnJv bSBhcHByb3ByaWF0ZSBzb3VyY2VzCisjCisjIFBHQ19IQkEgdmFyaWFibGVzIHNob3VsZCBiZSBz ZXR0YWJsZSBmcm9tOgorIyAtIHBvc3RncmVzcWwuY29uZgorIyAtIHBvc3RncmVzcWwuYXV0by5j b25mIChBTFRFUiBTWVNURU0pCisjIC0gcGdfaGJhLmNvbmYKKyMKKyMgQnV0IE5PVCBmcm9tOgor IyAtIEFMVEVSIFVTRVIgU0VUCisjIC0gQUxURVIgREFUQUJBU0UgU0VUCisjIC0gQ29ubmVjdGlv biBwYXJhbWV0ZXJzIChQR09QVElPTlMpCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIFRlc3QgMTogUEdDX0hCQSB2 YXJpYWJsZSBDQU4gYmUgc2V0IGluIHBvc3RncmVzcWwuY29uZgoreworCW15ICRub2RlID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdjb25mX2FsbG93ZWQnKTsKKwkkbm9kZS0+aW5p dDsKKworCSRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJInNlc3Npb25f cHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9oYmFfZ3VjJyIpOworCisJJG5vZGUtPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkidGVzdF9oYmFfZ3VjLnN0cmluZ192YXIgPSAnZnJv bV9wb3N0Z3Jlc3FsX2NvbmYnIik7CisKKwlteSAkaGJhX2NvbmYgPSAkbm9kZS0+ZGF0YV9kaXIg LiAnL3BnX2hiYS5jb25mJzsKKwlvcGVuIG15ICRoYmFfZmgsICc+JywgJGhiYV9jb25mIG9yIGRp ZSAiQ291bGQgbm90IG9wZW4gJGhiYV9jb25mOiAkISI7CisJcHJpbnQgJGhiYV9maCAibG9jYWwg YWxsIGFsbCB0cnVzdFxuIjsKKwljbG9zZSAkaGJhX2ZoOworCisJJG5vZGUtPnN0YXJ0OworCisJ bXkgJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjdXJy ZW50X3NldHRpbmcoJ3Rlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyJyk7Iik7CisJaXMoJHJlc3VsdCwg J2Zyb21fcG9zdGdyZXNxbF9jb25mJywKKwkJJ1BHQ19IQkEgdmFyaWFibGUgY2FuIGJlIHNldCBp biBwb3N0Z3Jlc3FsLmNvbmYnKTsKKworCSRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1Qgc291cmNlIEZST00gcGdfc2V0dGluZ3MgV0hFUkUgbmFtZSA9ICd0 ZXN0X2hiYV9ndWMuc3RyaW5nX3Zhcic7Iik7CisJaXMoJHJlc3VsdCwgJ2NvbmZpZ3VyYXRpb24g ZmlsZScsCisJCSdTb3VyY2Ugc2hvd3MgY29uZmlndXJhdGlvbiBmaWxlIGZvciBwb3N0Z3Jlc3Fs LmNvbmYgc2V0dGluZycpOworCisJJG5vZGUtPnN0b3A7Cit9CisKKyMgVGVzdCAyOiBQR0NfSEJB IHZhcmlhYmxlIENBTiBiZSBzZXQgdmlhIEFMVEVSIFNZU1RFTSAocG9zdGdyZXNxbC5hdXRvLmNv bmYpCit7CisJbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ2FsdGVy X3N5c3RlbV9hbGxvd2VkJyk7CisJJG5vZGUtPmluaXQ7CisKKwkkbm9kZS0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJCSJzZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzID0gJ3Rlc3Rf aGJhX2d1YyciKTsKKworCW15ICRoYmFfY29uZiA9ICRub2RlLT5kYXRhX2RpciAuICcvcGdfaGJh LmNvbmYnOworCW9wZW4gbXkgJGhiYV9maCwgJz4nLCAkaGJhX2NvbmYgb3IgZGllICJDb3VsZCBu b3Qgb3BlbiAkaGJhX2NvbmY6ICQhIjsKKwlwcmludCAkaGJhX2ZoICJsb2NhbCBhbGwgYWxsIHRy dXN0XG4iOworCWNsb3NlICRoYmFfZmg7CisKKwkkbm9kZS0+c3RhcnQ7CisKKwkkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTWVNURU0gU0VUIHRlc3RfaGJhX2d1Yy5zdHJp bmdfdmFyID0gJ2Zyb21fYWx0ZXJfc3lzdGVtJzsiKTsKKworCSRub2RlLT5yZWxvYWQ7CisKKwlt eSAkcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGN1cnJl bnRfc2V0dGluZygndGVzdF9oYmFfZ3VjLnN0cmluZ192YXInKTsiKTsKKwlpcygkcmVzdWx0LCAn ZnJvbV9hbHRlcl9zeXN0ZW0nLAorCQknUEdDX0hCQSB2YXJpYWJsZSBjYW4gYmUgc2V0IHZpYSBB TFRFUiBTWVNURU0nKTsKKworCSRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1Qgc291cmNlIEZST00gcGdfc2V0dGluZ3MgV0hFUkUgbmFtZSA9ICd0ZXN0X2hi YV9ndWMuc3RyaW5nX3Zhcic7Iik7CisJaXMoJHJlc3VsdCwgJ2NvbmZpZ3VyYXRpb24gZmlsZScs CisJCSdTb3VyY2Ugc2hvd3MgY29uZmlndXJhdGlvbiBmaWxlIGZvciBBTFRFUiBTWVNURU0gc2V0 dGluZycpOworCisJJG5vZGUtPnN0b3A7Cit9CisKKyMgVGVzdCAzOiBQR0NfSEJBIHZhcmlhYmxl IENBTk5PVCBiZSBzZXQgdmlhIEFMVEVSIFVTRVIgU0VUCit7CisJbXkgJG5vZGUgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ2FsdGVyX3VzZXJfcmVqZWN0ZWQnKTsKKwkkbm9kZS0+ aW5pdDsKKworCSRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJInNlc3Np b25fcHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9oYmFfZ3VjJyIpOworCisJbXkgJGhiYV9jb25m ID0gJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZic7CisJb3BlbiBteSAkaGJhX2ZoLCAn PicsICRoYmFfY29uZiBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRoYmFfY29uZjogJCEiOworCXBy aW50ICRoYmFfZmggImxvY2FsIGFsbCBhbGwgdHJ1c3RcbiI7CisJY2xvc2UgJGhiYV9maDsKKwor CSRub2RlLT5zdGFydDsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBV U0VSIHRlc3R1c2VyOyIpOworCisJbXkgKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUt PnBzcWwoJ3Bvc3RncmVzJywKKwkJIkFMVEVSIFVTRVIgdGVzdHVzZXIgU0VUIHRlc3RfaGJhX2d1 Yy5zdHJpbmdfdmFyID0gJ2Zyb21fYWx0ZXJfdXNlcic7Iik7CisJaXNudCgkcmV0LCAwLCAnQUxU RVIgVVNFUiBTRVQgcmVqZWN0ZWQgZm9yIFBHQ19IQkEgdmFyaWFibGUnKTsKKwlsaWtlKCRzdGRl cnIsIHFyL2Nhbm5vdCBiZSBzZXQgYnkgQUxURVIgVVNFUiBvciBBTFRFUiBEQVRBQkFTRS8sCisJ CSdFcnJvciBtZXNzYWdlIGluZGljYXRlcyBBTFRFUiBVU0VSIGlzIG5vdCBhbGxvd2VkIGZvciBQ R0NfSEJBJyk7CisKKwkkbm9kZS0+c3RvcDsKK30KKworIyBUZXN0IDQ6IFBHQ19IQkEgdmFyaWFi bGUgQ0FOTk9UIGJlIHNldCB2aWEgQUxURVIgREFUQUJBU0UgU0VUCit7CisJbXkgJG5vZGUgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ2FsdGVyX2RhdGFiYXNlX3JlamVjdGVkJyk7 CisJJG5vZGUtPmluaXQ7CisKKwkkbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics CisJCSJzZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzID0gJ3Rlc3RfaGJhX2d1YyciKTsKKworCW15 ICRoYmFfY29uZiA9ICRub2RlLT5kYXRhX2RpciAuICcvcGdfaGJhLmNvbmYnOworCW9wZW4gbXkg JGhiYV9maCwgJz4nLCAkaGJhX2NvbmYgb3IgZGllICJDb3VsZCBub3Qgb3BlbiAkaGJhX2NvbmY6 ICQhIjsKKwlwcmludCAkaGJhX2ZoICJsb2NhbCBhbGwgYWxsIHRydXN0XG4iOworCWNsb3NlICRo YmFfZmg7CisKKwkkbm9kZS0+c3RhcnQ7CisKKwlteSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikg PSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgREFUQUJBU0UgcG9zdGdyZXMgU0VU IHRlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyID0gJ2Zyb21fYWx0ZXJfZGF0YWJhc2UnOyIpOworCWlz bnQoJHJldCwgMCwgJ0FMVEVSIERBVEFCQVNFIFNFVCByZWplY3RlZCBmb3IgUEdDX0hCQSB2YXJp YWJsZScpOworCWxpa2UoJHN0ZGVyciwgcXIvY2Fubm90IGJlIHNldCBieSBBTFRFUiBVU0VSIG9y IEFMVEVSIERBVEFCQVNFLywKKwkJJ0Vycm9yIG1lc3NhZ2UgaW5kaWNhdGVzIEFMVEVSIERBVEFC QVNFIGlzIG5vdCBhbGxvd2VkIGZvciBQR0NfSEJBJyk7CisKKwkkbm9kZS0+c3RvcDsKK30KKwor IyBUZXN0IDU6IFBHQ19IQkEgdmFyaWFibGUgQ0FOTk9UIGJlIHNldCB2aWEgY29ubmVjdGlvbiBw YXJhbWV0ZXIgKFBHT1BUSU9OUykKK3sKKwlteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygncGdvcHRpb25zX3JlamVjdGVkJyk7CisJJG5vZGUtPmluaXQ7CisKKwkkbm9k ZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCSJzZXNzaW9uX3ByZWxvYWRfbGli cmFyaWVzID0gJ3Rlc3RfaGJhX2d1YyciKTsKKworCW15ICRoYmFfY29uZiA9ICRub2RlLT5kYXRh X2RpciAuICcvcGdfaGJhLmNvbmYnOworCW9wZW4gbXkgJGhiYV9maCwgJz4nLCAkaGJhX2NvbmYg b3IgZGllICJDb3VsZCBub3Qgb3BlbiAkaGJhX2NvbmY6ICQhIjsKKwlwcmludCAkaGJhX2ZoICJs b2NhbCBhbGwgYWxsIHRydXN0XG4iOworCWNsb3NlICRoYmFfZmg7CisKKwkkbm9kZS0+c3RhcnQ7 CisKKwkjIENvbm5lY3Rpb24gc3VjY2VlZHMgYnV0IHBhcmFtZXRlciBpcyBub3Qgc2V0IChnZXRz IGRlZmF1bHQgdmFsdWUpCisJbG9jYWwgJEVOVntQR09QVElPTlN9ID0gJy1jIHRlc3RfaGJhX2d1 Yy5zdHJpbmdfdmFyPWZyb21fcGdvcHRpb25zJzsKKwlteSAkcmVzdWx0ID0gJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGN1cnJlbnRfc2V0dGluZygndGVzdF9oYmFfZ3Vj LnN0cmluZ192YXInKTsiKTsKKwlpcygkcmVzdWx0LCAnZGVmYXVsdF92YWx1ZScsCisJCSdQR0Nf SEJBIHZhcmlhYmxlIGZyb20gUEdPUFRJT05TIGlzIG5vdCBzZXQsIHVzZXMgZGVmYXVsdCB2YWx1 ZScpOworCisJbXkgJGxvZ2ZpbGUgPSAkbm9kZS0+bG9nZmlsZTsKKwlteSAkbG9nX2NvbnRlbnQg PSBzbHVycF9maWxlKCRsb2dmaWxlKTsKKwlsaWtlKCRsb2dfY29udGVudCwgcXIvcGFyYW1ldGVy ICJ0ZXN0X2hiYV9ndWNcLnN0cmluZ192YXIiIGNhbm5vdCBiZSBjaGFuZ2VkIG5vdy8sCisJCSdX YXJuaW5nIGxvZ2dlZCB3aGVuIHRyeWluZyB0byBzZXQgUEdDX0hCQSB2aWEgUEdPUFRJT05TJyk7 CisKKwkkbm9kZS0+c3RvcDsKK30KKworIyBUZXN0IDY6IFBHQ19IQkEgdmFyaWFibGUgQ0FOTk9U IGJlIHNldCB2aWEgU0VUIGNvbW1hbmQKK3sKKwlteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygnc2V0X3JlamVjdGVkJyk7CisJJG5vZGUtPmluaXQ7CisKKwkkbm9kZS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCSJzZXNzaW9uX3ByZWxvYWRfbGlicmFy aWVzID0gJ3Rlc3RfaGJhX2d1YyciKTsKKworCW15ICRoYmFfY29uZiA9ICRub2RlLT5kYXRhX2Rp ciAuICcvcGdfaGJhLmNvbmYnOworCW9wZW4gbXkgJGhiYV9maCwgJz4nLCAkaGJhX2NvbmYgb3Ig ZGllICJDb3VsZCBub3Qgb3BlbiAkaGJhX2NvbmY6ICQhIjsKKwlwcmludCAkaGJhX2ZoICJsb2Nh bCBhbGwgYWxsIHRydXN0XG4iOworCWNsb3NlICRoYmFfZmg7CisKKwkkbm9kZS0+c3RhcnQ7CisK KwlteSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLAor CQkiU0VUIHRlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyID0gJ2Zyb21fc2V0JzsiKTsKKwlpc250KCRy ZXQsIDAsICdTRVQgY29tbWFuZCByZWplY3RlZCBmb3IgUEdDX0hCQSB2YXJpYWJsZScpOworCWxp a2UoJHN0ZGVyciwgcXIvY2Fubm90IGJlIGNoYW5nZWR8Y2Fubm90IGJlIHNldC8sCisJCSdFcnJv ciBtZXNzYWdlIGluZGljYXRlcyBTRVQgaXMgbm90IGFsbG93ZWQgZm9yIFBHQ19IQkEnKTsKKwor CSRub2RlLT5zdG9wOworfQorCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9oYmFfZ3VjL3QvMDAzX2hiYV9ndWNfcHJlY2VkZW5jZS5wbCBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL3QvMDAzX2hiYV9ndWNfcHJlY2VkZW5jZS5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGFmYWFkOTVjNzMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90LzAwM19oYmFfZ3VjX3By ZWNlZGVuY2UucGwKQEAgLTAsMCArMSwxMDUgQEAKKyMgVGVzdCB0aGF0IFBHQ19IQkEgdmFyaWFi bGVzIGZyb20gcGdfaGJhLmNvbmYgcmVzcGVjdCBsaW5lIHByZWNlZGVuY2UKKyMKKyMgcGdfaGJh LmNvbmYgaXMgZXZhbHVhdGVkIHRvcC10by1ib3R0b20sIGFuZCB0aGUgZmlyc3QgbWF0Y2hpbmcg bGluZSB3aW5zLgorIyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBHVUMgdmFsdWVzIGFyZSB0YWtl biBmcm9tIHRoZSBjb3JyZWN0IG1hdGNoaW5nIGxpbmUuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fy bmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIFRlc3QgMTog Rmlyc3QgbWF0Y2hpbmcgbGluZSB3aW5zIChzYW1lIHVzZXIsIHNhbWUgZGF0YWJhc2UsIHNhbWUg YXV0aCBtZXRob2RzKQoreworCW15ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdmaXJzdF9tYXRjaF93aW5zJyk7CisJJG5vZGUtPmluaXQ7CisKKwkkbm9kZS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCSJzZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzID0g J3Rlc3RfaGJhX2d1YyciKTsKKworCW15ICRoYmFfY29uZiA9ICRub2RlLT5kYXRhX2RpciAuICcv cGdfaGJhLmNvbmYnOworCW9wZW4gbXkgJGhiYV9maCwgJz4nLCAkaGJhX2NvbmYgb3IgZGllICJD b3VsZCBub3Qgb3BlbiAkaGJhX2NvbmY6ICQhIjsKKwlwcmludCAkaGJhX2ZoICJsb2NhbCBhbGwg YWxsIHRydXN0IHRlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyPWZpcnN0X2xpbmVcbiI7CisJcHJpbnQg JGhiYV9maCAibG9jYWwgYWxsIGFsbCB0cnVzdCB0ZXN0X2hiYV9ndWMuc3RyaW5nX3Zhcj1zZWNv bmRfbGluZVxuIjsKKwlwcmludCAkaGJhX2ZoICJsb2NhbCBhbGwgYWxsIHRydXN0IHRlc3RfaGJh X2d1Yy5zdHJpbmdfdmFyPXRoaXJkX2xpbmVcbiI7CisJY2xvc2UgJGhiYV9maDsKKworCSRub2Rl LT5zdGFydDsKKworCW15ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY3VycmVudF9zZXR0aW5nKCd0ZXN0X2hiYV9ndWMuc3RyaW5nX3ZhcicpOyIpOwor CWlzKCRyZXN1bHQsICdmaXJzdF9saW5lJywKKwkJJ0ZpcnN0IG1hdGNoaW5nIEhCQSBsaW5lIHdp bnMgd2hlbiBtdWx0aXBsZSBsaW5lcyBtYXRjaCcpOworCisJJG5vZGUtPnN0b3A7Cit9CisKKyMg VGVzdCAyOiBEYXRhYmFzZS1zcGVjaWZpYyBHVUMgdmFsdWVzCit7CisJbXkgJG5vZGUgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ2RhdGFiYXNlX3NwZWNpZmljJyk7CisJJG5vZGUt PmluaXQ7CisKKwkkbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCSJzZXNz aW9uX3ByZWxvYWRfbGlicmFyaWVzID0gJ3Rlc3RfaGJhX2d1YyciKTsKKworCSMgQ3JlYXRlIHRl c3QgZGF0YWJhc2VzCisJJG5vZGUtPnN0YXJ0OworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGIxOycpOworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGIyOycpOworCSRub2RlLT5zdG9wOworCisJIyBD cmVhdGUgcGdfaGJhLmNvbmYgd2l0aCBkYXRhYmFzZS1zcGVjaWZpYyB2YWx1ZXMKKwlteSAkaGJh X2NvbmYgPSAkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX2hiYS5jb25mJzsKKwlvcGVuIG15ICRoYmFf ZmgsICc+JywgJGhiYV9jb25mIG9yIGRpZSAiQ291bGQgbm90IG9wZW4gJGhiYV9jb25mOiAkISI7 CisJcHJpbnQgJGhiYV9maCAibG9jYWwgdGVzdGRiMSBhbGwgdHJ1c3QgdGVzdF9oYmFfZ3VjLnN0 cmluZ192YXI9ZnJvbV90ZXN0ZGIxXG4iOworCXByaW50ICRoYmFfZmggImxvY2FsIHRlc3RkYjIg YWxsIHRydXN0IHRlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyPWZyb21fdGVzdGRiMlxuIjsKKwlwcmlu dCAkaGJhX2ZoICJsb2NhbCBhbGwgYWxsIHRydXN0IHRlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyPWZy b21fd2lsZGNhcmRcbiI7CisJY2xvc2UgJGhiYV9maDsKKworCSRub2RlLT5zdGFydDsKKworCW15 ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCd0ZXN0ZGIxJywKKwkJIlNFTEVDVCBjdXJyZW50 X3NldHRpbmcoJ3Rlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyJyk7Iik7CisJaXMoJHJlc3VsdCwgJ2Zy b21fdGVzdGRiMScsCisJCSdEYXRhYmFzZS1zcGVjaWZpYyBHVUMgdmFsdWUgYXBwbGllZCBmb3Ig dGVzdGRiMScpOworCisJJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Rlc3RkYjInLAorCQki U0VMRUNUIGN1cnJlbnRfc2V0dGluZygndGVzdF9oYmFfZ3VjLnN0cmluZ192YXInKTsiKTsKKwlp cygkcmVzdWx0LCAnZnJvbV90ZXN0ZGIyJywKKwkJJ0RhdGFiYXNlLXNwZWNpZmljIEdVQyB2YWx1 ZSBhcHBsaWVkIGZvciB0ZXN0ZGIyJyk7CisKKwkkcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGN1cnJlbnRfc2V0dGluZygndGVzdF9oYmFfZ3VjLnN0cmlu Z192YXInKTsiKTsKKwlpcygkcmVzdWx0LCAnZnJvbV93aWxkY2FyZCcsCisJCSdXaWxkY2FyZCBH VUMgdmFsdWUgYXBwbGllZCBmb3IgcG9zdGdyZXMgZGF0YWJhc2UnKTsKKworCSRub2RlLT5zdG9w OworfQorCisjIFRlc3QgMzogRW1wdHkvbm8gR1VDIG9wdGlvbnMgb24gZmlyc3QgbWF0Y2gsIEdV QyBvcHRpb25zIG9uIGxhdGVyIGxpbmUKKyMgVGhlIGZpcnN0IG1hdGNoaW5nIGxpbmUgd2lucyBl dmVuIGlmIGl0IGhhcyBubyBHVUMgb3B0aW9ucworeworCW15ICRub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdub19ndWNzX2ZpcnN0Jyk7CisJJG5vZGUtPmluaXQ7CisKKwkk bm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCSJzZXNzaW9uX3ByZWxvYWRf bGlicmFyaWVzID0gJ3Rlc3RfaGJhX2d1YyciKTsKKworCW15ICRoYmFfY29uZiA9ICRub2RlLT5k YXRhX2RpciAuICcvcGdfaGJhLmNvbmYnOworCW9wZW4gbXkgJGhiYV9maCwgJz4nLCAkaGJhX2Nv bmYgb3IgZGllICJDb3VsZCBub3Qgb3BlbiAkaGJhX2NvbmY6ICQhIjsKKwlwcmludCAkaGJhX2Zo ICJsb2NhbCBhbGwgYWxsIHRydXN0XG4iOworCXByaW50ICRoYmFfZmggImxvY2FsIGFsbCBhbGwg dHJ1c3QgdGVzdF9oYmFfZ3VjLnN0cmluZ192YXI9bm90X3VzZWRcbiI7CisJY2xvc2UgJGhiYV9m aDsKKworCSRub2RlLT5zdGFydDsKKworCSMgU2hvdWxkIGdldCBkZWZhdWx0IHZhbHVlIHNpbmNl IGZpcnN0IG1hdGNoaW5nIGxpbmUgaGFzIG5vIEdVQyBvcHRpb25zCisJbXkgJHJlc3VsdCA9ICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjdXJyZW50X3NldHRpbmcoJ3Rl c3RfaGJhX2d1Yy5zdHJpbmdfdmFyJyk7Iik7CisJaXMoJHJlc3VsdCwgJ2RlZmF1bHRfdmFsdWUn LAorCQknRGVmYXVsdCBHVUMgdmFsdWUgd2hlbiBmaXJzdCBtYXRjaGluZyBsaW5lIGhhcyBubyBH VUMgb3B0aW9ucycpOworCisJJG5vZGUtPnN0b3A7Cit9CisKK2RvbmVfdGVzdGluZygpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvdGVzdF9oYmFfZ3VjLS0xLjAu c3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWMvdGVzdF9oYmFfZ3VjLS0xLjAuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYjI5ZDE3NGY1MgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL3Rlc3RfaGJhX2d1 Yy0tMS4wLnNxbApAQCAtMCwwICsxLDIyIEBACisvKiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJh X2d1Yy90ZXN0X2hiYV9ndWMtLTEuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlz IHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hv IFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2hiYV9ndWMiIHRvIGxvYWQgdGhpcyBmaWxlLiBc cXVpdAorCistLSBGdW5jdGlvbiB0byBnZXQgY3VycmVudCB2YWx1ZSBvZiB0ZXN0X2hiYV9ndWMu c3RyaW5nX3ZhcgorQ1JFQVRFIEZVTkNUSU9OIGdldF90ZXN0X2hiYV9zdHJpbmcoKQorUkVUVVJO UyB0ZXh0CitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKKy0tIEZ1 bmN0aW9uIHRvIGdldCBjdXJyZW50IHZhbHVlIG9mIHRlc3RfaGJhX2d1Yy5pbnRfdmFyCitDUkVB VEUgRlVOQ1RJT04gZ2V0X3Rlc3RfaGJhX2ludCgpCitSRVRVUk5TIGludGVnZXIKK0FTICdNT0RV TEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKworLS0gRnVuY3Rpb24gdG8gZ2V0IGN1 cnJlbnQgdmFsdWUgb2YgdGVzdF9oYmFfZ3VjLmJvb2xfdmFyCitDUkVBVEUgRlVOQ1RJT04gZ2V0 X3Rlc3RfaGJhX2Jvb2woKQorUkVUVVJOUyBib29sZWFuCitBUyAnTU9EVUxFX1BBVEhOQU1FJwor TEFOR1VBR0UgQyBTVFJJQ1Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJh X2d1Yy90ZXN0X2hiYV9ndWMuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL3Rlc3Rf aGJhX2d1Yy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NGI0YTU1 OWFjNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL3Rl c3RfaGJhX2d1Yy5jCkBAIC0wLDAgKzEsOTMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHRlc3RfaGJhX2d1Yy5jCisgKgkJVGVzdCBtb2R1bGUgZm9yIFBHQ19IQkEgR1VDIHZhcmlhYmxl cworICoKKyAqIFRoaXMgbW9kdWxlIHRlc3RzIHRoZSBQR0NfSEJBIGNvbnRleHQgbGV2ZWwgZm9y IEdVQyB2YXJpYWJsZXMsIHdoaWNoCisgKiBhbGxvd3MgdmFyaWFibGVzIHRvIGJlIHNldCBpbiBw Z19oYmEuY29uZiBvciBwb3N0Z3Jlc3FsLmNvbmYgYnV0IG5vdAorICogYnkgY2xpZW50IGNvbm5l Y3Rpb25zLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfaGJhX2d1Yy90ZXN0X2hiYV9ndWMuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisKK1BHX01PRFVM RV9NQUdJQzsKKworc3RhdGljIGNoYXIgKnRlc3RfaGJhX3N0cmluZyA9IE5VTEw7CitzdGF0aWMg aW50CXRlc3RfaGJhX2ludCA9IDA7CitzdGF0aWMgYm9vbCB0ZXN0X2hiYV9ib29sID0gZmFsc2U7 CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2V0X3Rlc3RfaGJhX3N0cmluZyk7CitQR19GVU5DVElP Tl9JTkZPX1YxKGdldF90ZXN0X2hiYV9pbnQpOworUEdfRlVOQ1RJT05fSU5GT19WMShnZXRfdGVz dF9oYmFfYm9vbCk7CisKK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJRGVmaW5lQ3VzdG9tU3Ry aW5nVmFyaWFibGUoInRlc3RfaGJhX2d1Yy5zdHJpbmdfdmFyIiwKKwkJCQkJCQkgICAiVGVzdCBQ R0NfSEJBIHN0cmluZyB2YXJpYWJsZSIsCisJCQkJCQkJICAgIlRoaXMgdmFyaWFibGUgY2FuIG9u bHkgYmUgc2V0IGluIHBnX2hiYS5jb25mIG9yIHBvc3RncmVzcWwuY29uZiIsCisJCQkJCQkJICAg JnRlc3RfaGJhX3N0cmluZywKKwkJCQkJCQkgICAiZGVmYXVsdF92YWx1ZSIsCisJCQkJCQkJICAg UEdDX0hCQSwKKwkJCQkJCQkgICAwLAorCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgTlVMTCwK KwkJCQkJCQkgICBOVUxMKTsKKworCURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJ0ZXN0X2hiYV9n dWMuaW50X3ZhciIsCisJCQkJCQkJIlRlc3QgUEdDX0hCQSBpbnRlZ2VyIHZhcmlhYmxlIiwKKwkJ CQkJCQkiVGhpcyB2YXJpYWJsZSBjYW4gb25seSBiZSBzZXQgaW4gcGdfaGJhLmNvbmYgb3IgcG9z dGdyZXNxbC5jb25mIiwKKwkJCQkJCQkmdGVzdF9oYmFfaW50LAorCQkJCQkJCTQyLAorCQkJCQkJ CTAsCisJCQkJCQkJMTAwMDAsCisJCQkJCQkJUEdDX0hCQSwKKwkJCQkJCQkwLAorCQkJCQkJCU5V TEwsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKKworCURlZmluZUN1c3RvbUJvb2xWYXJp YWJsZSgidGVzdF9oYmFfZ3VjLmJvb2xfdmFyIiwKKwkJCQkJCQkgIlRlc3QgUEdDX0hCQSBib29s ZWFuIHZhcmlhYmxlIiwKKwkJCQkJCQkgIlRoaXMgdmFyaWFibGUgY2FuIG9ubHkgYmUgc2V0IGlu IHBnX2hiYS5jb25mIG9yIHBvc3RncmVzcWwuY29uZiIsCisJCQkJCQkJICZ0ZXN0X2hiYV9ib29s LAorCQkJCQkJCSBmYWxzZSwKKwkJCQkJCQkgUEdDX0hCQSwKKwkJCQkJCQkgMCwKKwkJCQkJCQkg TlVMTCwKKwkJCQkJCQkgTlVMTCwKKwkJCQkJCQkgTlVMTCk7CisKKwlNYXJrR1VDUHJlZml4UmVz ZXJ2ZWQoInRlc3RfaGJhX2d1YyIpOworfQorCitEYXR1bQorZ2V0X3Rlc3RfaGJhX3N0cmluZyhQ R19GVU5DVElPTl9BUkdTKQoreworCWlmICh0ZXN0X2hiYV9zdHJpbmcgPT0gTlVMTCkKKwkJUEdf UkVUVVJOX05VTEwoKTsKKwlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dCh0ZXN0X2hi YV9zdHJpbmcpKTsKK30KKworRGF0dW0KK2dldF90ZXN0X2hiYV9pbnQoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlQR19SRVRVUk5fSU5UMzIodGVzdF9oYmFfaW50KTsKK30KKworRGF0dW0KK2dldF90 ZXN0X2hiYV9ib29sKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJUEdfUkVUVVJOX0JPT0wodGVzdF9o YmFfYm9vbCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Yy90 ZXN0X2hiYV9ndWMuY29uZiBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL3Rlc3RfaGJh X2d1Yy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yOWVlNDM0 YTc4NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjL3Rl c3RfaGJhX2d1Yy5jb25mCkBAIC0wLDAgKzEsMyBAQAorIyBDb25maWd1cmF0aW9uIGZvciB0ZXN0 X2hiYV9ndWMgcmVncmVzc2lvbiB0ZXN0cworIyBMb2FkIGluIHNlc3Npb25fcHJlbG9hZF9saWJy YXJpZXMgdG8gdGVzdCB0aGUgcHJvcGVyIHZhbGlkYXRpb24gZmxvdworc2Vzc2lvbl9wcmVsb2Fk X2xpYnJhcmllcyA9ICd0ZXN0X2hiYV9ndWMnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfaGJhX2d1Yy90ZXN0X2hiYV9ndWMuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9oYmFfZ3VjL3Rlc3RfaGJhX2d1Yy5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4xZjRhOTkwNjliYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9oYmFfZ3VjL3Rlc3RfaGJhX2d1Yy5jb250cm9sCkBAIC0wLDAgKzEsNSBAQAor IyB0ZXN0X2hiYV9ndWMgZXh0ZW5zaW9uCitjb21tZW50ID0gJ1Rlc3QgbW9kdWxlIGZvciBQR0Nf SEJBIEdVQyB2YXJpYWJsZXMnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhu YW1lID0gJyRsaWJkaXIvdGVzdF9oYmFfZ3VjJworcmVsb2NhdGFibGUgPSB0cnVlCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy9NYWtlZmlsZSBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjX2NvbnRleHRzL01ha2VmaWxlCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43ZjgwNWIwYWJkOAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjX2NvbnRleHRzL01ha2VmaWxlCkBAIC0w LDAgKzEsMTggQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMvTWFr ZWZpbGUKKworTU9EVUxFX2JpZyA9IHRlc3RfaGJhX2d1Y19jb250ZXh0cworT0JKUyA9IFwKKwkk KFdJTjMyUkVTKSBcCisJdGVzdF9oYmFfZ3VjX2NvbnRleHRzLm8KK1BHRklMRURFU0MgPSAidGVz dF9oYmFfZ3VjX2NvbnRleHRzIC0gdGVzdCBtb2R1bGUgZm9yIFBHQ19IQkEgY29udGV4dCB2YWxp ZGF0aW9uIgorCitpZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9 ICQoc2hlbGwgJChQR19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3Vi ZGlyID0gc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMKK3RvcF9idWlsZGRp ciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xv YmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5k aWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9oYmFfZ3VjX2NvbnRleHRzL21l c29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMvbWVzb24u YnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUyYzBlZWVkMjI5 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4 dHMvbWVzb24uYnVpbGQKQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3Rlc3RfaGJhX2d1Y19jb250ZXh0 c19zb3VyY2VzID0gZmlsZXMoCisgICd0ZXN0X2hiYV9ndWNfY29udGV4dHMuYycsCispCisKK2lm IGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0ZXN0X2hiYV9ndWNfY29udGV4dHNfc291cmNl cyArPSByY19saWJfZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAn LS1OQU1FJywgJ3Rlc3RfaGJhX2d1Y19jb250ZXh0cycsCisgICAgJy0tRklMRURFU0MnLCAndGVz dF9oYmFfZ3VjX2NvbnRleHRzIC0gdGVzdCBtb2R1bGUgZm9yIFBHQ19IQkEgY29udGV4dCB2YWxp ZGF0aW9uJyxdKQorZW5kaWYKKwordGVzdF9oYmFfZ3VjX2NvbnRleHRzID0gc2hhcmVkX21vZHVs ZSgndGVzdF9oYmFfZ3VjX2NvbnRleHRzJywKKyAgdGVzdF9oYmFfZ3VjX2NvbnRleHRzX3NvdXJj ZXMsCisgIGt3YXJnczogcGdfdGVzdF9tb2RfYXJncywKKykKK3Rlc3RfaW5zdGFsbF9saWJzICs9 IHRlc3RfaGJhX2d1Y19jb250ZXh0cworCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3RfaGJh X2d1Y19jb250ZXh0cycsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAn YmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAndGFwJzogeworICAgICd0ZXN0cyc6 IFsKKyAgICAgICd0LzAwMV9jb250ZXh0X3ZhbGlkYXRpb24ucGwnLAorICAgIF0sCisgIH0sCit9 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy90LzAw MV9jb250ZXh0X3ZhbGlkYXRpb24ucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19j b250ZXh0cy90LzAwMV9jb250ZXh0X3ZhbGlkYXRpb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjI5ZjlmMjc4NDRhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMvdC8wMDFfY29udGV4dF92YWxpZGF0aW9u LnBsCkBAIC0wLDAgKzEsNTUgQEAKKyMgVGVzdCB0aGF0IG9ubHkgUEdDX0hCQSB2YXJpYWJsZXMg Y2FuIGJlIHNldCBmcm9tIHBnX2hiYS5jb25mCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3Mg RkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitzdWIgdGVzdF9oYmFfcmVq ZWN0ZWQKK3sKKwlteSAoJG5vZGVfbmFtZSwgJHZhcl9uYW1lLCAkdGVzdF9kZXNjKSA9IEBfOwor CisJbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJG5vZGVfbmFtZSk7 CisJJG5vZGUtPmluaXQ7CisKKwkkbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics CisJCSJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9oYmFfZ3VjX2NvbnRleHRzJyIp OworCisJbXkgJGhiYV9jb25mID0gJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZic7CisJ b3BlbiBteSAkaGJhX2ZoLCAnPicsICRoYmFfY29uZiBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRo YmFfY29uZjogJCEiOworCXByaW50ICRoYmFfZmggImxvY2FsIGFsbCBhbGwgdHJ1c3QgdGVzdF9o YmFfZ3VjX2NvbnRleHRzLiR2YXJfbmFtZT1mcm9tX2hiYVxuIjsKKwljbG9zZSAkaGJhX2ZoOwor CisJJG5vZGUtPnN0YXJ0OworCisJbXkgKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUt PnBzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCAxOycpOworCWlzbnQoJHJldCwgMCwgJHRlc3RfZGVz Yyk7CisJbGlrZSgkc3RkZXJyLCBxci9jYW5ub3QgYmUgY2hhbmdlZHxjYW5ub3QgYmUgc2V0LywK KwkJJ0Vycm9yIG1lc3NhZ2UgaW5kaWNhdGVzIHZhcmlhYmxlIGNhbm5vdCBiZSBzZXQgZnJvbSBw Z19oYmEuY29uZicpOworCisJJG5vZGUtPnN0b3A7CisJcmV0dXJuOworfQorCisjIFRlc3QgMTog UEdDX1BPU1RNQVNURVIgdmFyaWFibGUgc2hvdWxkIE5PVCBiZSBzZXR0YWJsZSBmcm9tIHBnX2hi YS5jb25mCit0ZXN0X2hiYV9yZWplY3RlZCgncG9zdG1hc3Rlcl9yZWplY3RlZCcsICdwb3N0bWFz dGVyX3ZhcicsCisJJ0Nvbm5lY3Rpb24gcmVqZWN0ZWQgd2hlbiB0cnlpbmcgdG8gc2V0IFBHQ19Q T1NUTUFTVEVSIGZyb20gcGdfaGJhLmNvbmYnKTsKKworIyBUZXN0IDI6IFBHQ19TSUdIVVAgdmFy aWFibGUgc2hvdWxkIE5PVCBiZSBzZXR0YWJsZSBmcm9tIHBnX2hiYS5jb25mCit0ZXN0X2hiYV9y ZWplY3RlZCgnc2lnaHVwX3JlamVjdGVkJywgJ3NpZ2h1cF92YXInLAorCSdDb25uZWN0aW9uIHJl amVjdGVkIHdoZW4gdHJ5aW5nIHRvIHNldCBQR0NfU0lHSFVQIGZyb20gcGdfaGJhLmNvbmYnKTsK KworIyBUZXN0IDM6IFBHQ19CQUNLRU5EIHZhcmlhYmxlIHNob3VsZCBOT1QgYmUgc2V0dGFibGUg ZnJvbSBwZ19oYmEuY29uZgordGVzdF9oYmFfcmVqZWN0ZWQoJ2JhY2tlbmRfcmVqZWN0ZWQnLCAn YmFja2VuZF92YXInLAorCSdDb25uZWN0aW9uIHJlamVjdGVkIHdoZW4gdHJ5aW5nIHRvIHNldCBQ R0NfQkFDS0VORCBmcm9tIHBnX2hiYS5jb25mJyk7CisKKyMgVGVzdCA0OiBQR0NfU1VTRVQgdmFy aWFibGUgc2hvdWxkIE5PVCBiZSBzZXR0YWJsZSBmcm9tIHBnX2hiYS5jb25mCit0ZXN0X2hiYV9y ZWplY3RlZCgnc3VzZXRfcmVqZWN0ZWQnLCAnc3VzZXRfdmFyJywKKwknQ29ubmVjdGlvbiByZWpl Y3RlZCB3aGVuIHRyeWluZyB0byBzZXQgUEdDX1NVU0VUIGZyb20gcGdfaGJhLmNvbmYnKTsKKwor IyBUZXN0IDU6IFBHQ19VU0VSU0VUIHZhcmlhYmxlIHNob3VsZCBOT1QgYmUgc2V0dGFibGUgZnJv bSBwZ19oYmEuY29uZgordGVzdF9oYmFfcmVqZWN0ZWQoJ3VzZXJzZXRfcmVqZWN0ZWQnLCAndXNl cnNldF92YXInLAorCSdDb25uZWN0aW9uIHJlamVjdGVkIHdoZW4gdHJ5aW5nIHRvIHNldCBQR0Nf VVNFUlNFVCBmcm9tIHBnX2hiYS5jb25mJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMvdGVzdF9oYmFfZ3VjX2Nv bnRleHRzLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJhX2d1Y19jb250ZXh0cy90ZXN0X2hi YV9ndWNfY29udGV4dHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u M2RhNDRkOTliYTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfaGJh X2d1Y19jb250ZXh0cy90ZXN0X2hiYV9ndWNfY29udGV4dHMuYwpAQCAtMCwwICsxLDc5IEBACisv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X2hiYV9ndWNfY29udGV4dHMuYworICoJCVRl c3QgbW9kdWxlIGZvciB2YWxpZGF0aW5nIFBHQ19IQkEgY29udGV4dCByZXN0cmljdGlvbnMKKyAq CisgKiBUaGlzIG1vZHVsZSBkZWZpbmVzIEdVQyB2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgY29u dGV4dCBsZXZlbHMgdG8gdGVzdAorICogdGhhdCBvbmx5IFBHQ19IQkEgdmFyaWFibGVzIGNhbiBi ZSBzZXQgZnJvbSBwZ19oYmEuY29uZi4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CSAgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2hiYV9ndWNfY29udGV4dHMvdGVzdF9oYmFfZ3VjX2Nv bnRleHRzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdy ZXMuaCIKKworI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKworUEdf TU9EVUxFX01BR0lDOworCitzdGF0aWMgY2hhciAqdGVzdF9wb3N0bWFzdGVyX3ZhciA9IE5VTEw7 CitzdGF0aWMgY2hhciAqdGVzdF9zaWdodXBfdmFyID0gTlVMTDsKK3N0YXRpYyBjaGFyICp0ZXN0 X2JhY2tlbmRfdmFyID0gTlVMTDsKK3N0YXRpYyBjaGFyICp0ZXN0X3N1c2V0X3ZhciA9IE5VTEw7 CitzdGF0aWMgY2hhciAqdGVzdF91c2Vyc2V0X3ZhciA9IE5VTEw7CisKK3ZvaWQKK19QR19pbml0 KHZvaWQpCit7CisJRGVmaW5lQ3VzdG9tU3RyaW5nVmFyaWFibGUoInRlc3RfaGJhX2d1Y19jb250 ZXh0cy5wb3N0bWFzdGVyX3ZhciIsCisJCQkJCQkJCSJUZXN0IFBHQ19QT1NUTUFTVEVSIHZhcmlh YmxlIiwKKwkJCQkJCQkJIlRoaXMgc2hvdWxkIE5PVCBiZSBzZXR0YWJsZSBmcm9tIHBnX2hiYS5j b25mIiwKKwkJCQkJCQkJJnRlc3RfcG9zdG1hc3Rlcl92YXIsCisJCQkJCQkJCSJwb3N0bWFzdGVy X2RlZmF1bHQiLAorCQkJCQkJCQlQR0NfUE9TVE1BU1RFUiwKKwkJCQkJCQkJMCwKKwkJCQkJCQkJ TlVMTCwgTlVMTCwgTlVMTCk7CisKKwlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgidGVzdF9o YmFfZ3VjX2NvbnRleHRzLnNpZ2h1cF92YXIiLAorCQkJCQkJCQkiVGVzdCBQR0NfU0lHSFVQIHZh cmlhYmxlIiwKKwkJCQkJCQkJIlRoaXMgc2hvdWxkIE5PVCBiZSBzZXR0YWJsZSBmcm9tIHBnX2hi YS5jb25mIiwKKwkJCQkJCQkJJnRlc3Rfc2lnaHVwX3ZhciwKKwkJCQkJCQkJInNpZ2h1cF9kZWZh dWx0IiwKKwkJCQkJCQkJUEdDX1NJR0hVUCwKKwkJCQkJCQkJMCwKKwkJCQkJCQkJTlVMTCwgTlVM TCwgTlVMTCk7CisKKwlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgidGVzdF9oYmFfZ3VjX2Nv bnRleHRzLmJhY2tlbmRfdmFyIiwKKwkJCQkJCQkJIlRlc3QgUEdDX0JBQ0tFTkQgdmFyaWFibGUi LAorCQkJCQkJCQkiVGhpcyBzaG91bGQgTk9UIGJlIHNldHRhYmxlIGZyb20gcGdfaGJhLmNvbmYi LAorCQkJCQkJCQkmdGVzdF9iYWNrZW5kX3ZhciwKKwkJCQkJCQkJImJhY2tlbmRfZGVmYXVsdCIs CisJCQkJCQkJCVBHQ19CQUNLRU5ELAorCQkJCQkJCQkwLAorCQkJCQkJCQlOVUxMLCBOVUxMLCBO VUxMKTsKKworCURlZmluZUN1c3RvbVN0cmluZ1ZhcmlhYmxlKCJ0ZXN0X2hiYV9ndWNfY29udGV4 dHMuc3VzZXRfdmFyIiwKKwkJCQkJCQkJIlRlc3QgUEdDX1NVU0VUIHZhcmlhYmxlIiwKKwkJCQkJ CQkJIlRoaXMgc2hvdWxkIE5PVCBiZSBzZXR0YWJsZSBmcm9tIHBnX2hiYS5jb25mIiwKKwkJCQkJ CQkJJnRlc3Rfc3VzZXRfdmFyLAorCQkJCQkJCQkic3VzZXRfZGVmYXVsdCIsCisJCQkJCQkJCVBH Q19TVVNFVCwKKwkJCQkJCQkJMCwKKwkJCQkJCQkJTlVMTCwgTlVMTCwgTlVMTCk7CisKKwlEZWZp bmVDdXN0b21TdHJpbmdWYXJpYWJsZSgidGVzdF9oYmFfZ3VjX2NvbnRleHRzLnVzZXJzZXRfdmFy IiwKKwkJCQkJCQkJIlRlc3QgUEdDX1VTRVJTRVQgdmFyaWFibGUiLAorCQkJCQkJCQkiVGhpcyBz aG91bGQgTk9UIGJlIHNldHRhYmxlIGZyb20gcGdfaGJhLmNvbmYiLAorCQkJCQkJCQkmdGVzdF91 c2Vyc2V0X3ZhciwKKwkJCQkJCQkJInVzZXJzZXRfZGVmYXVsdCIsCisJCQkJCQkJCVBHQ19VU0VS U0VULAorCQkJCQkJCQkwLAorCQkJCQkJCQlOVUxMLCBOVUxMLCBOVUxMKTsKKworCU1hcmtHVUNQ cmVmaXhSZXNlcnZlZCgidGVzdF9oYmFfZ3VjX2NvbnRleHRzIik7Cit9Ci0tIAoyLjQzLjAKCg== --000000000000dd653f06485d2875--