Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kBDMi-00062C-AL for pgsql-hackers@arkaria.postgresql.org; Thu, 27 Aug 2020 08:34:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kBDMf-0007bm-TW for pgsql-hackers@arkaria.postgresql.org; Thu, 27 Aug 2020 08:34:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kBDMf-0007bf-8k for pgsql-hackers@lists.postgresql.org; Thu, 27 Aug 2020 08:34:33 +0000 Received: from [64.147.123.22] (helo=wforward3-smtp.messagingengine.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kBDMW-0002UY-RG for pgsql-hackers@postgresql.org; Thu, 27 Aug 2020 08:34:31 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailforward.west.internal (Postfix) with ESMTP id 77127363 for ; Thu, 27 Aug 2020 04:34:13 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Thu, 27 Aug 2020 04:34:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; bh=cNEalcGzlCPQEcGim7VRz3wALfz+D XKfn7YV1vStdkg=; b=UkwOVLZhF6QvojeTrCLdF6JAq54OSwBuOVOAk539JAXxQ jwMls/buV66Wgy01WGaYBnGGnZU66o5Qhr9nG8Hx4MGDvQZQZh3P2UJRlcZdNbzb lFoittRuBO/1YIUIKU9iCzL+9xm9TmPR5zscfsknAmewCMyKpHUR2ju9AfNJBm+q 28slsZNS48LhDAmjdD+7665eM98jEWXewrDJRuTut3HgBsSeC21224ySIihsGZFa 2R8jHBBQ+SuwoIJyP/CGDXk3iAQaZ6kXn1btZKWc0O42XJz10flIQ90WKqEnUO2Q e6Zkiio+yg120G4s+nq48SZvElEyh/HTf/wRLqerA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedruddvgedgtdegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhuffvohfkffgfgggtsehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomheqnecuggftrfgrthhtvg hrnhepkefhffekffetfeeuffetieevvdeljefgfeevudevgedvgeeuhfefueevfefhjeff necuffhomhgrihhnpedvnhguqhhurggurhgrnhhtrdgtohhmnecukfhppeekjedrudejje drjeejrdeltdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhr ohhmpehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomh X-ME-Proxy: Received: from april.pezone.net (p57b14d5a.dip0.t-ipconnect.de [87.177.77.90]) by mail.messagingengine.com (Postfix) with ESMTPA id 1FB5B3060067 for ; Thu, 27 Aug 2020 04:34:12 -0400 (EDT) From: Peter Eisentraut Subject: Support for OUT parameters in procedures To: pgsql-hackers Organization: 2ndQuadrant Message-ID: <2b8490fe-51af-e671-c504-47359dc453c5@2ndquadrant.com> Date: Thu, 27 Aug 2020 10:34:09 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------B909FDC5F74F8F9521CA4608" Content-Language: en-US X-Host-Lookup-Failed: Reverse DNS lookup failed for 64.147.123.22 (deferred) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------B909FDC5F74F8F9521CA4608 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Procedures currently don't allow OUT parameters. The reason for this is that at the time procedures were added (PG11), some of the details of how this should work were unclear and the issue was postponed. I am now intending to resolve this. AFAICT, OUT parameters in _functions_ are not allowed per the SQL standard, so whatever PostgreSQL is doing there at the moment is mostly our own invention. By contrast, I am here intending to make OUT parameters in procedures work per SQL standard and be compatible with the likes of PL/SQL. The main difference is that for procedures, OUT parameters are part of the signature and need to be specified as part of the call. This makes sense for nested calls in PL/pgSQL like this: CREATE PROCEDURE test_proc(IN a int, OUT b int) LANGUAGE plpgsql AS $$ BEGIN b := a * 2; END; $$; DO $$ DECLARE _a int; _b int; BEGIN _a := 10; CALL test_proc(_a, _b); RAISE NOTICE '_a: %, _b: %', _a, _b; END $$; For a top-level direct call, you can pass whatever you want, since all OUT parameters are presented as initially NULL to the procedure code. So you could just pass NULL, as in CALL test_proc(5, NULL). The code changes to make this happen are not as significant as I had initially feared. Most of the patch is expanded documentation and additional tests. In some cases, I changed the terminology from "input parameters" to "signature parameters" to make the difference clearer. Overall, while this introduces some additional conceptual complexity, the way it works is pretty obvious in the end, and people porting from other systems will find it working as expected. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------B909FDC5F74F8F9521CA4608 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0001-Support-for-OUT-parameters-in-procedures.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0001-Support-for-OUT-parameters-in-procedures.patch" RnJvbSAyN2FhNDk0ZjJmNTM4ZDhkMjY3ODQxZDViZDUyNGIwZWIzYzc3YWRiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAyNiBBdWcgMjAyMCAyMzoxMTo1NSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjFdIFN1cHBvcnQgZm9yIE9VVCBwYXJhbWV0ZXJzIGluIHByb2NlZHVyZXMK ClVubGlrZSBmb3IgZnVuY3Rpb25zLCBPVVQgcGFyYW1ldGVycyBmb3IgcHJvY2VkdXJlcyBh cmUgcGFydCBvZiB0aGUKc2lnbmF0dXJlLiAgVGhlcmVmb3JlLCB0aGV5IGhhdmUgdG8gYmUg bGlzdGVkIGluIHBnX3Byb2MucHJvYXJndHlwZXMKYXMgd2VsbCBhcyBtZW50aW9uZWQgaW4g QUxURVIgUFJPQ0VEVVJFIGFuZCBEUk9QIFBST0NFRFVSRS4KLS0tCiBkb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgNSArLQogZG9jL3NyYy9zZ21s L3BscGdzcWwuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgMzggKysrKysrKysKIGRvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfZXh0ZW5zaW9uLnNnbWwgICAgICAgICB8IDExICsrLQogZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9wcm9jZWR1cmUuc2dtbCAgICAgICAgIHwgIDUgKy0KIGRv Yy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8IDExICsrLQog ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHJvY2VkdXJlLnNnbWwgICAgICAgIHwgIDYgKy0K IGRvYy9zcmMvc2dtbC9yZWYvZHJvcF9wcm9jZWR1cmUuc2dtbCAgICAgICAgICB8ICA1ICst CiBkb2Mvc3JjL3NnbWwvcmVmL3NlY3VyaXR5X2xhYmVsLnNnbWwgICAgICAgICAgfCAxMSAr Ky0KIGRvYy9zcmMvc2dtbC94ZnVuYy5zZ21sICAgICAgICAgICAgICAgICAgICAgICB8IDU5 ICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMgICAg ICAgICAgIHwgNTIgKysrKysrLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAg ICAgICAgICAgICAgICAgIHwgOTYgKysrKysrKysrKysrLS0tLS0tLQogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmggICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9wbC9wbHBl cmwvZXhwZWN0ZWQvcGxwZXJsX2NhbGwub3V0ICAgICAgICB8IDE4ICsrKysKIHNyYy9wbC9w bHBlcmwvc3FsL3BscGVybF9jYWxsLnNxbCAgICAgICAgICAgICB8IDIwICsrKysKIHNyYy9w bC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX2NhbGwub3V0ICB8IDE5ICsrKysKIHNy Yy9wbC9wbHBnc3FsL3NyYy9wbF9jb21wLmMgICAgICAgICAgICAgICAgICB8ICAxICsKIHNy Yy9wbC9wbHBnc3FsL3NyYy9zcWwvcGxwZ3NxbF9jYWxsLnNxbCAgICAgICB8IDIxICsrKysK IHNyYy9wbC9wbHB5dGhvbi9leHBlY3RlZC9wbHB5dGhvbl9jYWxsLm91dCAgICB8IDE3ICsr KysKIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jICAgICAgICAgICAgICB8ICA0 ICstCiBzcmMvcGwvcGxweXRob24vc3FsL3BscHl0aG9uX2NhbGwuc3FsICAgICAgICAgfCAx OSArKysrCiBzcmMvcGwvdGNsL2V4cGVjdGVkL3BsdGNsX2NhbGwub3V0ICAgICAgICAgICAg fCAxNyArKysrCiBzcmMvcGwvdGNsL3NxbC9wbHRjbF9jYWxsLnNxbCAgICAgICAgICAgICAg ICAgfCAxOSArKysrCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91 dCAgICAgfCAxNiArKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfcHJvY2VkdXJl LnNxbCAgICAgfCAxMyArKy0KIDI0IGZpbGVzIGNoYW5nZWQsIDQwMCBpbnNlcnRpb25zKCsp LCA4NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDlmZTI2MGVjZmYuLmEw NzExNTQxMjMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC01ODY1LDggKzU4NjUsOSBAQCA8dGl0 bGU+PHN0cnVjdG5hbWU+cGdfcHJvYzwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAg ICAgICA8cGFyYT4KICAgICAgICBBbiBhcnJheSB3aXRoIHRoZSBkYXRhIHR5cGVzIG9mIHRo ZSBmdW5jdGlvbiBhcmd1bWVudHMuICBUaGlzIGluY2x1ZGVzCiAgICAgICAgb25seSBpbnB1 dCBhcmd1bWVudHMgKGluY2x1ZGluZyA8bGl0ZXJhbD5JTk9VVDwvbGl0ZXJhbD4gYW5kCi0g ICAgICAgPGxpdGVyYWw+VkFSSUFESUM8L2xpdGVyYWw+IGFyZ3VtZW50cyksIGFuZCB0aHVz IHJlcHJlc2VudHMKLSAgICAgICB0aGUgY2FsbCBzaWduYXR1cmUgb2YgdGhlIGZ1bmN0aW9u LgorICAgICAgIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPiBhcmd1bWVudHMpLCBhcyB3 ZWxsIGFzCisgICAgICAgPGxpdGVyYWw+T1VUPC9saXRlcmFsPiBwYXJhbWV0ZXJzIG9mIHBy b2NlZHVyZXMsIGFuZCB0aHVzIHJlcHJlc2VudHMKKyAgICAgICB0aGUgY2FsbCBzaWduYXR1 cmUgb2YgdGhlIGZ1bmN0aW9uIG9yIHByb2NlZHVyZS4KICAgICAgIDwvcGFyYT48L2VudHJ5 PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dt bCBiL2RvYy9zcmMvc2dtbC9wbHBnc3FsLnNnbWwKaW5kZXggODE1OTEyNjY2ZC4uMzA5YTcx NGZjNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BscGdzcWwuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcGxwZ3NxbC5zZ21sCkBAIC00NzgsNiArNDc4LDE0IEBAIDx0aXRsZT5EZWNs YXJpbmcgRnVuY3Rpb24gUGFyYW1ldGVyczwvdGl0bGU+CiAgICAgICBpbmNsdWRlZCBpdCwg YnV0IGl0IHdvdWxkIGJlIHJlZHVuZGFudC4KICAgICAgPC9wYXJhPgogCisgICAgIDxwYXJh PgorICAgICAgVG8gY2FsbCBhIGZ1bmN0aW9uIHdpdGggPGxpdGVyYWw+T1VUPC9saXRlcmFs PiBwYXJhbWV0ZXJzLCBvbWl0IHRoZQorICAgICAgb3V0cHV0IHBhcmFtZXRlciBpbiB0aGUg ZnVuY3Rpb24gY2FsbDoKKzxwcm9ncmFtbGlzdGluZz4KK1NFTEVDVCBzYWxlc190YXgoMTAw LjAwKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgIDwvcGFyYT4KKwogICAgICA8cGFyYT4K ICAgICAgIE91dHB1dCBwYXJhbWV0ZXJzIGFyZSBtb3N0IHVzZWZ1bCB3aGVuIHJldHVybmlu ZyBtdWx0aXBsZSB2YWx1ZXMuCiAgICAgICBBIHRyaXZpYWwgZXhhbXBsZSBpczoKQEAgLTQ4 OSw2ICs0OTcsMTEgQEAgPHRpdGxlPkRlY2xhcmluZyBGdW5jdGlvbiBQYXJhbWV0ZXJzPC90 aXRsZT4KICAgICBwcm9kIDo9IHggKiB5OwogRU5EOwogJCQgTEFOR1VBR0UgcGxwZ3NxbDsK KworU0VMRUNUICogRlJPTSBzdW1fbl9wcm9kdWN0KDIsIDQpOworIHN1bSB8IHByb2QKKy0t LS0tKy0tLS0tLQorICAgNiB8ICAgIDgKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKICAgICAgIEFz IGRpc2N1c3NlZCBpbiA8eHJlZiBsaW5rZW5kPSJ4ZnVuYy1vdXRwdXQtcGFyYW1ldGVycyIv PiwgdGhpcwpAQCAtNDk3LDYgKzUxMCwzMSBAQCA8dGl0bGU+RGVjbGFyaW5nIEZ1bmN0aW9u IFBhcmFtZXRlcnM8L3RpdGxlPgogICAgICAgPGxpdGVyYWw+UkVUVVJOUyByZWNvcmQ8L2xp dGVyYWw+LgogICAgICA8L3BhcmE+CiAKKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGFsc28g d29ya3Mgd2l0aCBwcm9jZWR1cmVzLCBmb3IgZXhhbXBsZToKKworPHByb2dyYW1saXN0aW5n PgorQ1JFQVRFIFBST0NFRFVSRSBzdW1fbl9wcm9kdWN0KHggaW50LCB5IGludCwgT1VUIHN1 bSBpbnQsIE9VVCBwcm9kIGludCkgQVMgJCQKK0JFR0lOCisgICAgc3VtIDo9IHggKyB5Owor ICAgIHByb2QgOj0geCAqIHk7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworPC9wcm9n cmFtbGlzdGluZz4KKworICAgICAgSW4gYSBjYWxsIHRvIGEgcHJvY2VkdXJlLCBhbGwgdGhl IHBhcmFtZXRlcnMgbXVzdCBiZSBzcGVjaWZpZWQuICBGb3IKKyAgICAgIG91dHB1dCBwYXJh bWV0ZXJzLCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBtYXkgYmUgc3BlY2lmaWVkLgorPHBy b2dyYW1saXN0aW5nPgorQ0FMTCBzdW1fbl9wcm9kdWN0KDIsIDQsIE5VTEwsIE5VTEwpOwor IHN1bSB8IHByb2QKKy0tLS0tKy0tLS0tLQorICAgNiB8ICAgIDgKKzwvcHJvZ3JhbWxpc3Rp bmc+CisgICAgICBPdXRwdXQgcGFyYW1ldGVycyBpbiBwcm9jZWR1cmVzIGJlY29tZSBtb3Jl IGludGVyZXN0aW5nIGluIG5lc3RlZCBjYWxscywKKyAgICAgIHdoZXJlIHRoZXkgY2FuIGJl IGFzc2lnbmVkIHRvIHZhcmlhYmxlcy4gIFNlZSA8eHJlZgorICAgICAgbGlua2VuZD0icGxw Z3NxbC1zdGF0ZW1lbnRzLWNhbGxpbmctcHJvY2VkdXJlIi8+IGZvciBkZXRhaWxzLgorICAg ICA8L3BhcmE+CisKICAgICAgPHBhcmE+CiAgICAgICBBbm90aGVyIHdheSB0byBkZWNsYXJl IGEgPGFwcGxpY2F0aW9uPlBML3BnU1FMPC9hcHBsaWNhdGlvbj4gZnVuY3Rpb24KICAgICAg IGlzIHdpdGggPGxpdGVyYWw+UkVUVVJOUyBUQUJMRTwvbGl0ZXJhbD4sIGZvciBleGFtcGxl OgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9leHRlbnNpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfZXh0ZW5zaW9uLnNnbWwKaW5kZXggYTJkNDA1ZDZj ZC4uN2FhYTE2YTA4OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9leHRl bnNpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2V4dGVuc2lvbi5zZ21s CkBAIC0yMTIsMTEgKzIxMiwxMiBAQCA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CiAgICAg ICAgYXJndW1lbnQ6IDxsaXRlcmFsPklOPC9saXRlcmFsPiwgPGxpdGVyYWw+T1VUPC9saXRl cmFsPiwKICAgICAgICA8bGl0ZXJhbD5JTk9VVDwvbGl0ZXJhbD4sIG9yIDxsaXRlcmFsPlZB UklBRElDPC9saXRlcmFsPi4KICAgICAgICBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyA8 bGl0ZXJhbD5JTjwvbGl0ZXJhbD4uCi0gICAgICAgTm90ZSB0aGF0IDxjb21tYW5kPkFMVEVS IEVYVEVOU0lPTjwvY29tbWFuZD4gZG9lcyBub3QgYWN0dWFsbHkgcGF5Ci0gICAgICAgYW55 IGF0dGVudGlvbiB0byA8bGl0ZXJhbD5PVVQ8L2xpdGVyYWw+IGFyZ3VtZW50cywgc2luY2Ug b25seSB0aGUgaW5wdXQKLSAgICAgICBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBkZXRlcm1p bmUgdGhlIGZ1bmN0aW9uJ3MgaWRlbnRpdHkuCi0gICAgICAgU28gaXQgaXMgc3VmZmljaWVu dCB0byBsaXN0IHRoZSA8bGl0ZXJhbD5JTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPklOT1VUPC9s aXRlcmFsPiwKLSAgICAgICBhbmQgPGxpdGVyYWw+VkFSSUFESUM8L2xpdGVyYWw+IGFyZ3Vt ZW50cy4KKyAgICAgICBOb3RlIHRoYXQgPGNvbW1hbmQ+QUxURVIgRVhURU5TSU9OPC9jb21t YW5kPiBkb2VzIG5vdCBhY3R1YWxseSBwYXkgYW55CisgICAgICAgYXR0ZW50aW9uIHRvIDxs aXRlcmFsPk9VVDwvbGl0ZXJhbD4gYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgYW5kCisgICAg ICAgYWdncmVnYXRlcyAoYnV0IG5vdCBwcm9jZWR1cmVzKSwgc2luY2Ugb25seSB0aGUgaW5w dXQgYXJndW1lbnRzIGFyZQorICAgICAgIG5lZWRlZCB0byBkZXRlcm1pbmUgdGhlIGZ1bmN0 aW9uJ3MgaWRlbnRpdHkuICBTbyBpdCBpcyBzdWZmaWNpZW50IHRvCisgICAgICAgbGlzdCB0 aGUgPGxpdGVyYWw+SU48L2xpdGVyYWw+LCA8bGl0ZXJhbD5JTk9VVDwvbGl0ZXJhbD4sIGFu ZAorICAgICAgIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPiBhcmd1bWVudHMgZm9yIGZ1 bmN0aW9ucyBhbmQgYWdncmVnYXRlcy4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRl bT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfcHJvY2VkdXJlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Byb2NlZHVy ZS5zZ21sCmluZGV4IGRhZTgwMDc2ZDkuLjg2MDc5ZTM2YjkgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfcHJvY2VkdXJlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9wcm9jZWR1cmUuc2dtbApAQCAtODEsOCArODEsOSBAQCA8dGl0bGU+UGFyYW1l dGVyczwvdGl0bGU+CiAKICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgotICAgICAgVGhl IG1vZGUgb2YgYW4gYXJndW1lbnQ6IDxsaXRlcmFsPklOPC9saXRlcmFsPiAgb3IgPGxpdGVy YWw+VkFSSUFESUM8L2xpdGVyYWw+LgotICAgICAgSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQg aXMgPGxpdGVyYWw+SU48L2xpdGVyYWw+LgorICAgICAgVGhlIG1vZGUgb2YgYW4gYXJndW1l bnQ6IDxsaXRlcmFsPklOPC9saXRlcmFsPiwgPGxpdGVyYWw+T1VUPC9saXRlcmFsPiwKKyAg ICAgIDxsaXRlcmFsPklOT1VUPC9saXRlcmFsPiwgb3IgPGxpdGVyYWw+VkFSSUFESUM8L2xp dGVyYWw+LiAgSWYgb21pdHRlZCwKKyAgICAgIHRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPklO PC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggZmQ3NDkyYTI1NS4uZjRiOGVl MGZiZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKQEAgLTE3OCwxMSArMTc4LDEyIEBAIDx0 aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KICAgICAgIGFyZ3VtZW50OiA8bGl0ZXJhbD5JTjwv bGl0ZXJhbD4sIDxsaXRlcmFsPk9VVDwvbGl0ZXJhbD4sCiAgICAgICA8bGl0ZXJhbD5JTk9V VDwvbGl0ZXJhbD4sIG9yIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPi4KICAgICAgIElm IG9taXR0ZWQsIHRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPklOPC9saXRlcmFsPi4KLSAgICAg IE5vdGUgdGhhdCA8Y29tbWFuZD5DT01NRU5UPC9jb21tYW5kPiBkb2VzIG5vdCBhY3R1YWxs eSBwYXkKLSAgICAgIGFueSBhdHRlbnRpb24gdG8gPGxpdGVyYWw+T1VUPC9saXRlcmFsPiBh cmd1bWVudHMsIHNpbmNlIG9ubHkgdGhlIGlucHV0Ci0gICAgICBhcmd1bWVudHMgYXJlIG5l ZWRlZCB0byBkZXRlcm1pbmUgdGhlIGZ1bmN0aW9uJ3MgaWRlbnRpdHkuCi0gICAgICBTbyBp dCBpcyBzdWZmaWNpZW50IHRvIGxpc3QgdGhlIDxsaXRlcmFsPklOPC9saXRlcmFsPiwgPGxp dGVyYWw+SU5PVVQ8L2xpdGVyYWw+LAotICAgICAgYW5kIDxsaXRlcmFsPlZBUklBRElDPC9s aXRlcmFsPiBhcmd1bWVudHMuCisgICAgICBOb3RlIHRoYXQgPGNvbW1hbmQ+Q09NTUVOVDwv Y29tbWFuZD4gZG9lcyBub3QgYWN0dWFsbHkgcGF5IGFueSBhdHRlbnRpb24KKyAgICAgIHRv IDxsaXRlcmFsPk9VVDwvbGl0ZXJhbD4gYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgYW5kIGFn Z3JlZ2F0ZXMgKGJ1dAorICAgICAgbm90IHByb2NlZHVyZXMpLCBzaW5jZSBvbmx5IHRoZSBp bnB1dCBhcmd1bWVudHMgYXJlIG5lZWRlZCB0byBkZXRlcm1pbmUKKyAgICAgIHRoZSBmdW5j dGlvbidzIGlkZW50aXR5LiAgU28gaXQgaXMgc3VmZmljaWVudCB0byBsaXN0IHRoZQorICAg ICAgPGxpdGVyYWw+SU48L2xpdGVyYWw+LCA8bGl0ZXJhbD5JTk9VVDwvbGl0ZXJhbD4sIGFu ZAorICAgICAgPGxpdGVyYWw+VkFSSUFESUM8L2xpdGVyYWw+IGFyZ3VtZW50cyBmb3IgZnVu Y3Rpb25zIGFuZCBhZ2dyZWdhdGVzLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4K ICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfcHJvY2VkdXJlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1cmUu c2dtbAppbmRleCAwZWE2NTEzY2I1Li5jN2NlNzk4MDAyIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9wcm9jZWR1cmUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9wcm9jZWR1cmUuc2dtbApAQCAtOTcsMTEgKzk3LDkgQEAgPHRpdGxlPlBhcmFt ZXRlcnM8L3RpdGxlPgogCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAg IFRoZSBtb2RlIG9mIGFuIGFyZ3VtZW50OiA8bGl0ZXJhbD5JTjwvbGl0ZXJhbD4sCisgICAg ICAgVGhlIG1vZGUgb2YgYW4gYXJndW1lbnQ6IDxsaXRlcmFsPklOPC9saXRlcmFsPiwgPGxp dGVyYWw+T1VUPC9saXRlcmFsPiwKICAgICAgICA8bGl0ZXJhbD5JTk9VVDwvbGl0ZXJhbD4s IG9yIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPi4gIElmIG9taXR0ZWQsCi0gICAgICAg dGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+SU48L2xpdGVyYWw+LiAgKDxsaXRlcmFsPk9VVDwv bGl0ZXJhbD4KLSAgICAgICBhcmd1bWVudHMgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVk IGZvciBwcm9jZWR1cmVzLiAgVXNlCi0gICAgICAgPGxpdGVyYWw+SU5PVVQ8L2xpdGVyYWw+ IGluc3RlYWQuKQorICAgICAgIHRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPklOPC9saXRlcmFs Pi4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRy eT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF9wcm9jZWR1cmUuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvZHJvcF9wcm9jZWR1cmUuc2dtbAppbmRleCA2ZGEyNjZhZTJk Li5iZjJjNmNlMWFhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfcHJvY2Vk dXJlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3Byb2NlZHVyZS5zZ21sCkBA IC02Nyw4ICs2Nyw5IEBAIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KIAogICAgIDxsaXN0 aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGUgbW9kZSBvZiBhbiBhcmd1bWVudDogPGxp dGVyYWw+SU48L2xpdGVyYWw+IG9yIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPi4KLSAg ICAgIElmIG9taXR0ZWQsIHRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPklOPC9saXRlcmFsPi4K KyAgICAgIFRoZSBtb2RlIG9mIGFuIGFyZ3VtZW50OiA8bGl0ZXJhbD5JTjwvbGl0ZXJhbD4s IDxsaXRlcmFsPk9VVDwvbGl0ZXJhbD4sCisgICAgICA8bGl0ZXJhbD5JTk9VVDwvbGl0ZXJh bD4sIG9yIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPi4gIElmIG9taXR0ZWQsCisgICAg ICB0aGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5JTjwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4K ICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL3NlY3VyaXR5X2xhYmVsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Nl Y3VyaXR5X2xhYmVsLnNnbWwKaW5kZXggZTk2ODhjY2UyMS4uOWI4N2JjZDUxOSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zZWN1cml0eV9sYWJlbC5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvc2VjdXJpdHlfbGFiZWwuc2dtbApAQCAtMTI3LDExICsxMjcsMTIgQEAg PHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgogICAgICAgYXJndW1lbnQ6IDxsaXRlcmFsPklO PC9saXRlcmFsPiwgPGxpdGVyYWw+T1VUPC9saXRlcmFsPiwKICAgICAgIDxsaXRlcmFsPklO T1VUPC9saXRlcmFsPiwgb3IgPGxpdGVyYWw+VkFSSUFESUM8L2xpdGVyYWw+LgogICAgICAg SWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+SU48L2xpdGVyYWw+LgotICAg ICAgTm90ZSB0aGF0IDxjb21tYW5kPlNFQ1VSSVRZIExBQkVMPC9jb21tYW5kPiBkb2VzIG5v dCBhY3R1YWxseQotICAgICAgcGF5IGFueSBhdHRlbnRpb24gdG8gPGxpdGVyYWw+T1VUPC9s aXRlcmFsPiBhcmd1bWVudHMsIHNpbmNlIG9ubHkgdGhlIGlucHV0Ci0gICAgICBhcmd1bWVu dHMgYXJlIG5lZWRlZCB0byBkZXRlcm1pbmUgdGhlIGZ1bmN0aW9uJ3MgaWRlbnRpdHkuCi0g ICAgICBTbyBpdCBpcyBzdWZmaWNpZW50IHRvIGxpc3QgdGhlIDxsaXRlcmFsPklOPC9saXRl cmFsPiwgPGxpdGVyYWw+SU5PVVQ8L2xpdGVyYWw+LAotICAgICAgYW5kIDxsaXRlcmFsPlZB UklBRElDPC9saXRlcmFsPiBhcmd1bWVudHMuCisgICAgICBOb3RlIHRoYXQgPGNvbW1hbmQ+ U0VDVVJJVFkgTEFCRUw8L2NvbW1hbmQ+IGRvZXMgbm90IGFjdHVhbGx5IHBheSBhbnkKKyAg ICAgIGF0dGVudGlvbiB0byA8bGl0ZXJhbD5PVVQ8L2xpdGVyYWw+IGFyZ3VtZW50cyBmb3Ig ZnVuY3Rpb25zIGFuZAorICAgICAgYWdncmVnYXRlcyAoYnV0IG5vdCBwcm9jZWR1cmVzKSwg c2luY2Ugb25seSB0aGUgaW5wdXQgYXJndW1lbnRzIGFyZQorICAgICAgbmVlZGVkIHRvIGRl dGVybWluZSB0aGUgZnVuY3Rpb24ncyBpZGVudGl0eS4gIFNvIGl0IGlzIHN1ZmZpY2llbnQg dG8KKyAgICAgIGxpc3QgdGhlIDxsaXRlcmFsPklOPC9saXRlcmFsPiwgPGxpdGVyYWw+SU5P VVQ8L2xpdGVyYWw+LCBhbmQKKyAgICAgIDxsaXRlcmFsPlZBUklBRElDPC9saXRlcmFsPiBh cmd1bWVudHMgZm9yIGZ1bmN0aW9ucyBhbmQgYWdncmVnYXRlcy4KICAgICAgPC9wYXJhPgog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC94ZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwKaW5kZXggNmRl NDY0YzY1NC4uYjcxMzA1MjAwMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3hmdW5jLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwKQEAgLTE3Niw2ICsxNzYsMjQgQEAg PHRpdGxlPlF1ZXJ5IExhbmd1YWdlICg8YWNyb255bT5TUUw8L2Fjcm9ueW0+KSBGdW5jdGlv bnM8L3RpdGxlPgogPC9zY3JlZW4+CiAgICAgPC9wYXJhPgogCisgICAgPHBhcmE+CisgICAg IFlvdSBjYW4gYWxzbyB3cml0ZSB0aGlzIGFzIGEgcHJvY2VkdXJlLCB0aHVzIGF2b2lkaW5n IHRoZSBpc3N1ZSBvZiB0aGUKKyAgICAgcmV0dXJuIHR5cGUuICBGb3IgZXhhbXBsZToKKzxz Y3JlZW4+CitDUkVBVEUgUFJPQ0VEVVJFIGNsZWFuX2VtcCgpIEFTICcKKyAgICBERUxFVEUg RlJPTSBlbXAKKyAgICAgICAgV0hFUkUgc2FsYXJ5ICZsdDsgMDsKKycgTEFOR1VBR0UgU1FM OworCitDQUxMIGNsZWFuX2VtcCgpOworPC9zY3JlZW4+CisgICAgIEluIHNpbXBsZSBjYXNl cyBsaWtlIHRoaXMsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBmdW5jdGlvbiByZXR1cm5p bmcKKyAgICAgPHR5cGU+dm9pZDwvdHlwZT4gYW5kIGEgcHJvY2VkdXJlIGlzIG1vc3RseSBz dHlsaXN0aWMuICBIb3dldmVyLAorICAgICBwcm9jZWR1cmVzIG9mZmVyIGFkZGl0aW9uYWwg ZnVuY3Rpb25hbGl0eSBzdWNoIGFzIHRyYW5zYWN0aW9uIGNvbnRyb2wKKyAgICAgdGhhdCBp cyBub3QgYXZhaWxhYmxlIGluIGZ1bmN0aW9ucy4gIEFsc28sIHByb2NlZHVyZXMgYXJlIFNR TCBzdGFuZGFyZAorICAgICB3aGVyZWFzIHJldHVybmluZyA8dHlwZT52b2lkPC90eXBlPiBp cyBhIFBvc3RncmVTUUwgZXh0ZW5zaW9uLgorICAgIDwvcGFyYT4KKwogICAgIDxub3RlPgog ICAgICA8cGFyYT4KICAgICAgIFRoZSBlbnRpcmUgYm9keSBvZiBhIFNRTCBmdW5jdGlvbiBp cyBwYXJzZWQgYmVmb3JlIGFueSBvZiBpdCBpcwpAQCAtNzEzLDYgKzczMSw0NyBAQCA8dGl0 bGU+PGFjcm9ueW0+U1FMPC9hY3JvbnltPiBGdW5jdGlvbnMgd2l0aCBPdXRwdXQgUGFyYW1l dGVyczwvdGl0bGU+CiAgICAgPC9wYXJhPgogICAgPC9zZWN0Mj4KIAorICAgPHNlY3QyIGlk PSJ4ZnVuYy1vdXRwdXQtcGFyYW1ldGVycy1wcm9jIj4KKyAgICA8dGl0bGU+PGFjcm9ueW0+ U1FMPC9hY3JvbnltPiBQcm9jZWR1cmVzIHdpdGggT3V0cHV0IFBhcmFtZXRlcnM8L3RpdGxl PgorCisgICAgPGluZGV4dGVybT4KKyAgICAgPHByaW1hcnk+cHJvY2VkdXJlczwvcHJpbWFy eT4KKyAgICAgPHNlY29uZGFyeT5vdXRwdXQgcGFyYW1ldGVyPC9zZWNvbmRhcnk+CisgICAg PC9pbmRleHRlcm0+CisKKyAgICA8cGFyYT4KKyAgICAgT3V0cHV0IHBhcmFtZXRlcnMgYXJl IGFsc28gc3VwcG9ydGVkIGluIHByb2NlZHVyZXMsIGJ1dCB0aGV5IHdvcmsgYSBiaXQKKyAg ICAgZGlmZmVyZW50bHkgZnJvbSBmdW5jdGlvbnMuICBOb3RhYmx5LCBvdXRwdXQgcGFyYW1l dGVycworICAgICA8ZW1waGFzaXM+YXJlPC9lbXBoYXNpcz4gaW5jbHVkZWQgaW4gdGhlIHNp Z25hdHVyZSBvZiBhIHByb2NlZHVyZSBhbmQKKyAgICAgbXVzdCBiZSBzcGVjaWZpZWQgaW4g dGhlIHByb2NlZHVyZSBjYWxsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBG b3IgZXhhbXBsZSwgdGhlIGJhbmsgYWNjb3VudCBkZWJpdGluZyByb3V0aW5lIGZyb20gZWFy bGllciBjb3VsZCBiZQorICAgICB3cml0dGVuIGxpa2UgdGhpczoKKzxwcm9ncmFtbGlzdGlu Zz4KK0NSRUFURSBQUk9DRURVUkUgdHAxIChhY2NvdW50bm8gaW50ZWdlciwgZGViaXQgbnVt ZXJpYywgT1VUIG5ld19iYWxhbmNlIG51bWVyaWMpIEFTICQkCisgICAgVVBEQVRFIGJhbmsK KyAgICAgICAgU0VUIGJhbGFuY2UgPSBiYWxhbmNlIC0gZGViaXQKKyAgICAgICAgV0hFUkUg YWNjb3VudG5vID0gdHAxLmFjY291bnRubworICAgIFJFVFVSTklORyBiYWxhbmNlOworJCQg TEFOR1VBR0UgU1FMOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgVG8gY2FsbCB0aGlzIHBy b2NlZHVyZSwgaXQgaXMgaXJyZWxldmFudCB3aGF0IGlzIHBhc3NlZCBhcyB0aGUgYXJndW1l bnQKKyAgICAgb2YgdGhlIDxsaXRlcmFsPk9VVDwvbGl0ZXJhbD4gcGFyYW1ldGVyLCBzbyB5 b3UgY291bGQgcGFzcworICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPjoKKzxwcm9ncmFt bGlzdGluZz4KK0NBTEwgdHAxKDE3LCAxMDAuMCwgTlVMTCk7Cis8L3Byb2dyYW1saXN0aW5n PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBQcm9jZWR1cmVzIHdpdGggb3V0 cHV0IHBhcmFtZXRlcnMgYXJlIG1vcmUgdXNlZnVsIGluIFBML3BnU1FMLCB3aGVyZSB0aGUK KyAgICAgb3V0cHV0IHBhcmFtZXRlcnMgY2FuIGJlIGFzc2lnbmVkIHRvIHZhcmlhYmxlcy4g IFNlZSA8eHJlZgorICAgICBsaW5rZW5kPSJwbHBnc3FsLXN0YXRlbWVudHMtY2FsbGluZy1w cm9jZWR1cmUiLz4gZm9yIGRldGFpbHMuCisgICAgPC9wYXJhPgorICAgPC9zZWN0Mj4KKwog ICAgPHNlY3QyIGlkPSJ4ZnVuYy1zcWwtdmFyaWFkaWMtZnVuY3Rpb25zIj4KICAgICA8dGl0 bGU+PGFjcm9ueW0+U1FMPC9hY3JvbnltPiBGdW5jdGlvbnMgd2l0aCBWYXJpYWJsZSBOdW1i ZXJzIG9mIEFyZ3VtZW50czwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2Z1bmN0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25j bWRzLmMKaW5kZXggMWI1YmRjZWM4Yi4uYzdmNDdlYzRjMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZnVuY3Rpb25jbWRzLmMKQEAgLTE5NCw4ICsxOTQsOCBAQCBpbnRlcnByZXRfZnVuY3Rp b25fcGFyYW1ldGVyX2xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkgIE9pZCAq cmVxdWlyZWRSZXN1bHRUeXBlKQogewogCWludAkJCXBhcmFtZXRlckNvdW50ID0gbGlzdF9s ZW5ndGgocGFyYW1ldGVycyk7Ci0JT2lkCQkgICAqaW5UeXBlczsKLQlpbnQJCQlpbkNvdW50 ID0gMDsKKwlPaWQJCSAgICpzaWdBcmdUeXBlczsKKwlpbnQJCQlzaWdBcmdDb3VudCA9IDA7 CiAJRGF0dW0JICAgKmFsbFR5cGVzOwogCURhdHVtCSAgICpwYXJhbU1vZGVzOwogCURhdHVt CSAgICpwYXJhbU5hbWVzOwpAQCAtMjA5LDcgKzIwOSw3IEBAIGludGVycHJldF9mdW5jdGlv bl9wYXJhbWV0ZXJfbGlzdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJKnZhcmlhZGljQXJnVHlw ZSA9IEludmFsaWRPaWQ7CS8qIGRlZmF1bHQgcmVzdWx0ICovCiAJKnJlcXVpcmVkUmVzdWx0 VHlwZSA9IEludmFsaWRPaWQ7CS8qIGRlZmF1bHQgcmVzdWx0ICovCiAKLQlpblR5cGVzID0g KE9pZCAqKSBwYWxsb2MocGFyYW1ldGVyQ291bnQgKiBzaXplb2YoT2lkKSk7CisJc2lnQXJn VHlwZXMgPSAoT2lkICopIHBhbGxvYyhwYXJhbWV0ZXJDb3VudCAqIHNpemVvZihPaWQpKTsK IAlhbGxUeXBlcyA9IChEYXR1bSAqKSBwYWxsb2MocGFyYW1ldGVyQ291bnQgKiBzaXplb2Yo RGF0dW0pKTsKIAlwYXJhbU1vZGVzID0gKERhdHVtICopIHBhbGxvYyhwYXJhbWV0ZXJDb3Vu dCAqIHNpemVvZihEYXR1bSkpOwogCXBhcmFtTmFtZXMgPSAoRGF0dW0gKikgcGFsbG9jMChw YXJhbWV0ZXJDb3VudCAqIHNpemVvZihEYXR1bSkpOwpAQCAtMjgxLDE1ICsyODEsNiBAQCBp bnRlcnByZXRfZnVuY3Rpb25fcGFyYW1ldGVyX2xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAog CQkJCQkJIGVycm1zZygiZnVuY3Rpb25zIGNhbm5vdCBhY2NlcHQgc2V0IGFyZ3VtZW50cyIp KSk7CiAJCX0KIAotCQlpZiAob2JqdHlwZSA9PSBPQkpFQ1RfUFJPQ0VEVVJFKQotCQl7Ci0J CQlpZiAoZnAtPm1vZGUgPT0gRlVOQ19QQVJBTV9PVVQpCi0JCQkJZXJlcG9ydChFUlJPUiwK LQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJ CSBlcnJtc2coInByb2NlZHVyZXMgY2Fubm90IGhhdmUgT1VUIGFyZ3VtZW50cyIpLAotCQkJ CQkJIGVycmhpbnQoIklOT1VUIGFyZ3VtZW50cyBhcmUgcGVybWl0dGVkLiIpKSk7Ci0JCX0K LQogCQkvKiBoYW5kbGUgaW5wdXQgcGFyYW1ldGVycyAqLwogCQlpZiAoZnAtPm1vZGUgIT0g RlVOQ19QQVJBTV9PVVQgJiYgZnAtPm1vZGUgIT0gRlVOQ19QQVJBTV9UQUJMRSkKIAkJewpA QCAtMjk4LDEwICsyODksMTYgQEAgaW50ZXJwcmV0X2Z1bmN0aW9uX3BhcmFtZXRlcl9saXN0 KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX0ZVTkNUSU9OX0RFRklOSVRJT04pLAogCQkJCQkJIGVycm1z ZygiVkFSSUFESUMgcGFyYW1ldGVyIG11c3QgYmUgdGhlIGxhc3QgaW5wdXQgcGFyYW1ldGVy IikpKTsKLQkJCWluVHlwZXNbaW5Db3VudCsrXSA9IHRvaWQ7CiAJCQlpc2lucHV0ID0gdHJ1 ZTsKIAkJfQogCisJCWlmIChmcC0+bW9kZSA9PSBGVU5DX1BBUkFNX0lOIHx8IGZwLT5tb2Rl ID09IEZVTkNfUEFSQU1fSU5PVVQgfHwKKwkJCShvYmp0eXBlID09IE9CSkVDVF9QUk9DRURV UkUgJiYgZnAtPm1vZGUgPT0gRlVOQ19QQVJBTV9PVVQpIHx8CisJCQlmcC0+bW9kZSA9PSBG VU5DX1BBUkFNX1ZBUklBRElDKQorCQl7CisJCQlzaWdBcmdUeXBlc1tzaWdBcmdDb3VudCsr XSA9IHRvaWQ7CisJCX0KKwogCQkvKiBoYW5kbGUgb3V0cHV0IHBhcmFtZXRlcnMgKi8KIAkJ aWYgKGZwLT5tb2RlICE9IEZVTkNfUEFSQU1fSU4gJiYgZnAtPm1vZGUgIT0gRlVOQ19QQVJB TV9WQVJJQURJQykKIAkJewpAQCAtNDI5LDcgKzQyNiw3IEBAIGludGVycHJldF9mdW5jdGlv bl9wYXJhbWV0ZXJfbGlzdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJfQogCiAJLyogTm93IGNv bnN0cnVjdCB0aGUgcHJvcGVyIG91dHB1dHMgYXMgbmVlZGVkICovCi0JKnBhcmFtZXRlclR5 cGVzID0gYnVpbGRvaWR2ZWN0b3IoaW5UeXBlcywgaW5Db3VudCk7CisJKnBhcmFtZXRlclR5 cGVzID0gYnVpbGRvaWR2ZWN0b3Ioc2lnQXJnVHlwZXMsIHNpZ0FyZ0NvdW50KTsKIAogCWlm IChvdXRDb3VudCA+IDAgfHwgdmFyQ291bnQgPiAwKQogCXsKQEAgLTIwNzEsNiArMjA2OCw5 IEBAIEV4ZWN1dGVDYWxsU3RtdChDYWxsU3RtdCAqc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJh bXMsIGJvb2wgYXRvbWljLCBEZXN0UmVjZWl2ZXIKIAlpbnQJCQluYXJnczsKIAlpbnQJCQlp OwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJT2lkCQkgICAqYXJndHlwZXM7CisJY2hhcgkg ICoqYXJnbmFtZXM7CisJY2hhcgkgICAqYXJnbW9kZXM7CiAJRm1nckluZm8JZmxpbmZvOwog CUNhbGxDb250ZXh0ICpjYWxsY29udGV4dDsKIAlFU3RhdGUJICAgKmVzdGF0ZTsKQEAgLTIx MzEsNiArMjEzMSw4IEBAIEV4ZWN1dGVDYWxsU3RtdChDYWxsU3RtdCAqc3RtdCwgUGFyYW1M aXN0SW5mbyBwYXJhbXMsIGJvb2wgYXRvbWljLCBEZXN0UmVjZWl2ZXIKIAkJCQkJCQkJCQkJ dHApOwogCW5hcmdzID0gbGlzdF9sZW5ndGgoZmV4cHItPmFyZ3MpOwogCisJZ2V0X2Z1bmNf YXJnX2luZm8odHAsICZhcmd0eXBlcywgJmFyZ25hbWVzLCAmYXJnbW9kZXMpOworCiAJUmVs ZWFzZVN5c0NhY2hlKHRwKTsKIAogCS8qIHNhZmV0eSBjaGVjazsgc2VlIEV4ZWNJbml0RnVu YygpICovCkBAIC0yMTYwLDE2ICsyMTYyLDI0IEBAIEV4ZWN1dGVDYWxsU3RtdChDYWxsU3Rt dCAqc3RtdCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsIGJvb2wgYXRvbWljLCBEZXN0UmVjZWl2 ZXIKIAlpID0gMDsKIAlmb3JlYWNoKGxjLCBmZXhwci0+YXJncykKIAl7Ci0JCUV4cHJTdGF0 ZSAgKmV4cHJzdGF0ZTsKLQkJRGF0dW0JCXZhbDsKLQkJYm9vbAkJaXNudWxsOworCQlpZiAo YXJnbW9kZXMgJiYgYXJnbW9kZXNbaV0gPT0gUFJPQVJHTU9ERV9PVVQpCisJCXsKKwkJCWZj aW5mby0+YXJnc1tpXS52YWx1ZSA9IDA7CisJCQlmY2luZm8tPmFyZ3NbaV0uaXNudWxsID0g dHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUV4cHJTdGF0ZSAgKmV4cHJzdGF0ZTsKKwkJ CURhdHVtCQl2YWw7CisJCQlib29sCQlpc251bGw7CiAKLQkJZXhwcnN0YXRlID0gRXhlY1By ZXBhcmVFeHByKGxmaXJzdChsYyksIGVzdGF0ZSk7CisJCQlleHByc3RhdGUgPSBFeGVjUHJl cGFyZUV4cHIobGZpcnN0KGxjKSwgZXN0YXRlKTsKIAotCQl2YWwgPSBFeGVjRXZhbEV4cHJT d2l0Y2hDb250ZXh0KGV4cHJzdGF0ZSwgZWNvbnRleHQsICZpc251bGwpOworCQkJdmFsID0g RXhlY0V2YWxFeHByU3dpdGNoQ29udGV4dChleHByc3RhdGUsIGVjb250ZXh0LCAmaXNudWxs KTsKIAotCQlmY2luZm8tPmFyZ3NbaV0udmFsdWUgPSB2YWw7Ci0JCWZjaW5mby0+YXJnc1tp XS5pc251bGwgPSBpc251bGw7CisJCQlmY2luZm8tPmFyZ3NbaV0udmFsdWUgPSB2YWw7CisJ CQlmY2luZm8tPmFyZ3NbaV0uaXNudWxsID0gaXNudWxsOworCQl9CiAKIAkJaSsrOwogCX0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CmluZGV4IGRiYjQ3ZDQ5ODIuLmQwZWE1ZDJkOWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBSb2xlU3BlYyAqbWFrZVJvbGVTcGVj KFJvbGVTcGVjVHlwZSB0eXBlLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIHZvaWQgY2hlY2tf cXVhbGlmaWVkX25hbWUoTGlzdCAqbmFtZXMsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsK IHN0YXRpYyBMaXN0ICpjaGVja19mdW5jX25hbWUoTGlzdCAqbmFtZXMsIGNvcmVfeXlzY2Fu X3QgeXlzY2FubmVyKTsKIHN0YXRpYyBMaXN0ICpjaGVja19pbmRpcmVjdGlvbihMaXN0ICpp bmRpcmVjdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwotc3RhdGljIExpc3QgKmV4 dHJhY3RBcmdUeXBlcyhMaXN0ICpwYXJhbWV0ZXJzKTsKK3N0YXRpYyBMaXN0ICpleHRyYWN0 QXJnVHlwZXMoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpwYXJhbWV0ZXJzKTsKIHN0YXRp YyBMaXN0ICpleHRyYWN0QWdnckFyZ1R5cGVzKExpc3QgKmFnZ3JhcmdzKTsKIHN0YXRpYyBM aXN0ICptYWtlT3JkZXJlZFNldEFyZ3MoTGlzdCAqZGlyZWN0YXJncywgTGlzdCAqb3JkZXJl ZGFyZ3MsCiAJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKQEAgLTM3NSw4ICsz NzUsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPGFjY2Vzc3ByaXY+ IHByaXZpbGVnZQogJXR5cGUgPGxpc3Q+CXByaXZpbGVnZXMgcHJpdmlsZWdlX2xpc3QKICV0 eXBlIDxwcml2dGFyZ2V0PiBwcml2aWxlZ2VfdGFyZ2V0Ci0ldHlwZSA8b2Jqd2l0aGFyZ3M+ IGZ1bmN0aW9uX3dpdGhfYXJndHlwZXMgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgb3BlcmF0 b3Jfd2l0aF9hcmd0eXBlcwotJXR5cGUgPGxpc3Q+CWZ1bmN0aW9uX3dpdGhfYXJndHlwZXNf bGlzdCBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlc19saXN0IG9wZXJhdG9yX3dpdGhfYXJndHlw ZXNfbGlzdAorJXR5cGUgPG9iandpdGhhcmdzPiBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzIGFn Z3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIG9wZXJhdG9yX3dpdGhfYXJndHlwZXMgcHJvY2VkdXJl X3dpdGhfYXJndHlwZXMgZnVuY3Rpb25fd2l0aF9hcmd0eXBlc19jb21tb24KKyV0eXBlIDxs aXN0PglmdW5jdGlvbl93aXRoX2FyZ3R5cGVzX2xpc3QgYWdncmVnYXRlX3dpdGhfYXJndHlw ZXNfbGlzdCBvcGVyYXRvcl93aXRoX2FyZ3R5cGVzX2xpc3QgcHJvY2VkdXJlX3dpdGhfYXJn dHlwZXNfbGlzdAogJXR5cGUgPGl2YWw+CWRlZmFjbF9wcml2aWxlZ2VfdGFyZ2V0CiAldHlw ZSA8ZGVmZWx0PglEZWZBQ0xPcHRpb24KICV0eXBlIDxsaXN0PglEZWZBQ0xPcHRpb25MaXN0 CkBAIC00NjI2LDcgKzQ2MjYsNyBAQCBBbHRlckV4dGVuc2lvbkNvbnRlbnRzU3RtdDoKIAkJ CQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgbGNvbnMobWFrZVN0cmluZygkOSksICQ3KTsKIAkJ CQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBBTFRFUiBFWFRFTlNJT04gbmFtZSBh ZGRfZHJvcCBQUk9DRURVUkUgZnVuY3Rpb25fd2l0aF9hcmd0eXBlcworCQkJfCBBTFRFUiBF WFRFTlNJT04gbmFtZSBhZGRfZHJvcCBQUk9DRURVUkUgcHJvY2VkdXJlX3dpdGhfYXJndHlw ZXMKIAkJCQl7CiAJCQkJCUFsdGVyRXh0ZW5zaW9uQ29udGVudHNTdG10ICpuID0gbWFrZU5v ZGUoQWx0ZXJFeHRlbnNpb25Db250ZW50c1N0bXQpOwogCQkJCQluLT5leHRuYW1lID0gJDM7 CkBAIC00NjM1LDcgKzQ2MzUsNyBAQCBBbHRlckV4dGVuc2lvbkNvbnRlbnRzU3RtdDoKIAkJ CQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDY7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJ CX0KLQkJCXwgQUxURVIgRVhURU5TSU9OIG5hbWUgYWRkX2Ryb3AgUk9VVElORSBmdW5jdGlv bl93aXRoX2FyZ3R5cGVzCisJCQl8IEFMVEVSIEVYVEVOU0lPTiBuYW1lIGFkZF9kcm9wIFJP VVRJTkUgcHJvY2VkdXJlX3dpdGhfYXJndHlwZXMKIAkJCQl7CiAJCQkJCUFsdGVyRXh0ZW5z aW9uQ29udGVudHNTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJFeHRlbnNpb25Db250ZW50c1N0 bXQpOwogCQkJCQluLT5leHRuYW1lID0gJDM7CkBAIC02MzY4LDcgKzYzNjgsNyBAQCBDb21t ZW50U3RtdDoKIAkJCQkJbi0+Y29tbWVudCA9ICQ4OwogCQkJCQkkJCA9IChOb2RlICopIG47 CiAJCQkJfQotCQkJfCBDT01NRU5UIE9OIFBST0NFRFVSRSBmdW5jdGlvbl93aXRoX2FyZ3R5 cGVzIElTIGNvbW1lbnRfdGV4dAorCQkJfCBDT01NRU5UIE9OIFBST0NFRFVSRSBwcm9jZWR1 cmVfd2l0aF9hcmd0eXBlcyBJUyBjb21tZW50X3RleHQKIAkJCQl7CiAJCQkJCUNvbW1lbnRT dG10ICpuID0gbWFrZU5vZGUoQ29tbWVudFN0bXQpOwogCQkJCQluLT5vYmp0eXBlID0gT0JK RUNUX1BST0NFRFVSRTsKQEAgLTYzNzYsNyArNjM3Niw3IEBAIENvbW1lbnRTdG10OgogCQkJ CQluLT5jb21tZW50ID0gJDY7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8 IENPTU1FTlQgT04gUk9VVElORSBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzIElTIGNvbW1lbnRf dGV4dAorCQkJfCBDT01NRU5UIE9OIFJPVVRJTkUgcHJvY2VkdXJlX3dpdGhfYXJndHlwZXMg SVMgY29tbWVudF90ZXh0CiAJCQkJewogCQkJCQlDb21tZW50U3RtdCAqbiA9IG1ha2VOb2Rl KENvbW1lbnRTdG10KTsKIAkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9ST1VUSU5FOwpAQCAt NjUyMiw3ICs2NTIyLDcgQEAgU2VjTGFiZWxTdG10OgogCQkJCQluLT5sYWJlbCA9ICQ5Owog CQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJfCBTRUNVUklUWSBMQUJFTCBvcHRf cHJvdmlkZXIgT04gUFJPQ0VEVVJFIGZ1bmN0aW9uX3dpdGhfYXJndHlwZXMKKwkJCXwgU0VD VVJJVFkgTEFCRUwgb3B0X3Byb3ZpZGVyIE9OIFBST0NFRFVSRSBwcm9jZWR1cmVfd2l0aF9h cmd0eXBlcwogCQkJICBJUyBzZWN1cml0eV9sYWJlbAogCQkJCXsKIAkJCQkJU2VjTGFiZWxT dG10ICpuID0gbWFrZU5vZGUoU2VjTGFiZWxTdG10KTsKQEAgLTY4ODMsNyArNjg4Myw3IEBA IHByaXZpbGVnZV90YXJnZXQ6CiAJCQkJCW4tPm9ianMgPSAkMjsKIAkJCQkJJCQgPSBuOwog CQkJCX0KLQkJCXwgUFJPQ0VEVVJFIGZ1bmN0aW9uX3dpdGhfYXJndHlwZXNfbGlzdAorCQkJ fCBQUk9DRURVUkUgcHJvY2VkdXJlX3dpdGhfYXJndHlwZXNfbGlzdAogCQkJCXsKIAkJCQkJ UHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdl dCkpOwogCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfT0JKRUNUOwpAQCAtNjg5MSw3 ICs2ODkxLDcgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+b2JqcyA9ICQyOwogCQkJ CQkkJCA9IG47CiAJCQkJfQotCQkJfCBST1VUSU5FIGZ1bmN0aW9uX3dpdGhfYXJndHlwZXNf bGlzdAorCQkJfCBST1VUSU5FIHByb2NlZHVyZV93aXRoX2FyZ3R5cGVzX2xpc3QKIAkJCQl7 CiAJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFBy aXZUYXJnZXQpKTsKIAkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX09CSkVDVDsKQEAg LTc0MTIsMjAgKzc0MTIsMzMgQEAgZnVuY3Rpb25fd2l0aF9hcmd0eXBlc19saXN0OgogCQkJ CQkJCQkJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCitwcm9jZWR1cmVf d2l0aF9hcmd0eXBlc19saXN0OgorCQkJcHJvY2VkdXJlX3dpdGhfYXJndHlwZXMJCQkJCXsg JCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwcm9jZWR1cmVfd2l0aF9hcmd0eXBlc19s aXN0ICcsJyBwcm9jZWR1cmVfd2l0aF9hcmd0eXBlcworCQkJCQkJCQkJCQkJCXsgJCQgPSBs YXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCiBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzOgogCQkJ ZnVuY19uYW1lIGZ1bmNfYXJncwogCQkJCXsKIAkJCQkJT2JqZWN0V2l0aEFyZ3MgKm4gPSBt YWtlTm9kZShPYmplY3RXaXRoQXJncyk7CiAJCQkJCW4tPm9iam5hbWUgPSAkMTsKLQkJCQkJ bi0+b2JqYXJncyA9IGV4dHJhY3RBcmdUeXBlcygkMik7CisJCQkJCW4tPm9iamFyZ3MgPSBl eHRyYWN0QXJnVHlwZXMoT0JKRUNUX0ZVTkNUSU9OLCAkMik7CiAJCQkJCSQkID0gbjsKIAkJ CQl9CisJCQl8IGZ1bmN0aW9uX3dpdGhfYXJndHlwZXNfY29tbW9uCisJCQkJeworCQkJCQkk JCA9ICQxOworCQkJCX0KKwkJOworCitmdW5jdGlvbl93aXRoX2FyZ3R5cGVzX2NvbW1vbjoK IAkJCS8qCiAJCQkgKiBCZWNhdXNlIG9mIHJlZHVjZS9yZWR1Y2UgY29uZmxpY3RzLCB3ZSBj YW4ndCB1c2UgZnVuY19uYW1lCiAJCQkgKiBiZWxvdywgYnV0IHdlIGNhbiB3cml0ZSBpdCBv dXQgdGhlIGxvbmcgd2F5LCB3aGljaCBhY3R1YWxseQogCQkJICogYWxsb3dzIG1vcmUgY2Fz ZXMuCiAJCQkgKi8KLQkJCXwgdHlwZV9mdW5jX25hbWVfa2V5d29yZAorCQkJdHlwZV9mdW5j X25hbWVfa2V5d29yZAogCQkJCXsKIAkJCQkJT2JqZWN0V2l0aEFyZ3MgKm4gPSBtYWtlTm9k ZShPYmplY3RXaXRoQXJncyk7CiAJCQkJCW4tPm9iam5hbWUgPSBsaXN0X21ha2UxKG1ha2VT dHJpbmcocHN0cmR1cCgkMSkpKTsKQEAgLTc0NDksNiArNzQ2MiwyNCBAQCBmdW5jdGlvbl93 aXRoX2FyZ3R5cGVzOgogCQkJCX0KIAkJOwogCisvKgorICogVGhpcyBpcyBkaWZmZXJlbnQg ZnJvbSBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzIGluIHRoZSBjYWxsIHRvCisgKiBleHRyYWN0 QXJnVHlwZXMoKS4KKyAqLworcHJvY2VkdXJlX3dpdGhfYXJndHlwZXM6CisJCQlmdW5jX25h bWUgZnVuY19hcmdzCisJCQkJeworCQkJCQlPYmplY3RXaXRoQXJncyAqbiA9IG1ha2VOb2Rl KE9iamVjdFdpdGhBcmdzKTsKKwkJCQkJbi0+b2JqbmFtZSA9ICQxOworCQkJCQluLT5vYmph cmdzID0gZXh0cmFjdEFyZ1R5cGVzKE9CSkVDVF9QUk9DRURVUkUsICQyKTsKKwkJCQkJJCQg PSBuOworCQkJCX0KKwkJCXwgZnVuY3Rpb25fd2l0aF9hcmd0eXBlc19jb21tb24KKwkJCQl7 CisJCQkJCSQkID0gJDE7CisJCQkJfQorCQk7CisKIC8qCiAgKiBmdW5jX2FyZ3Nfd2l0aF9k ZWZhdWx0cyBpcyBzZXBhcmF0ZSBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBhY2NlcHQKICAq IGRlZmF1bHRzIGluIENSRUFURSBGVU5DVElPTiwgbm90IGluIEFMVEVSIGV0Yy4KQEAgLTc4 MjcsNyArNzg1OCw3IEBAIEFsdGVyRnVuY3Rpb25TdG10OgogCQkJCQluLT5hY3Rpb25zID0g JDQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IEFMVEVSIFBST0NFRFVS RSBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzIGFsdGVyZnVuY19vcHRfbGlzdCBvcHRfcmVzdHJp Y3QKKwkJCXwgQUxURVIgUFJPQ0VEVVJFIHByb2NlZHVyZV93aXRoX2FyZ3R5cGVzIGFsdGVy ZnVuY19vcHRfbGlzdCBvcHRfcmVzdHJpY3QKIAkJCQl7CiAJCQkJCUFsdGVyRnVuY3Rpb25T dG10ICpuID0gbWFrZU5vZGUoQWx0ZXJGdW5jdGlvblN0bXQpOwogCQkJCQluLT5vYmp0eXBl ID0gT0JKRUNUX1BST0NFRFVSRTsKQEAgLTc4MzUsNyArNzg2Niw3IEBAIEFsdGVyRnVuY3Rp b25TdG10OgogCQkJCQluLT5hY3Rpb25zID0gJDQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsK IAkJCQl9Ci0JCQl8IEFMVEVSIFJPVVRJTkUgZnVuY3Rpb25fd2l0aF9hcmd0eXBlcyBhbHRl cmZ1bmNfb3B0X2xpc3Qgb3B0X3Jlc3RyaWN0CisJCQl8IEFMVEVSIFJPVVRJTkUgcHJvY2Vk dXJlX3dpdGhfYXJndHlwZXMgYWx0ZXJmdW5jX29wdF9saXN0IG9wdF9yZXN0cmljdAogCQkJ CXsKIAkJCQkJQWx0ZXJGdW5jdGlvblN0bXQgKm4gPSBtYWtlTm9kZShBbHRlckZ1bmN0aW9u U3RtdCk7CiAJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfUk9VVElORTsKQEAgLTc4OTEsNyAr NzkyMiw3IEBAIFJlbW92ZUZ1bmNTdG10OgogCQkJCQluLT5jb25jdXJyZW50ID0gZmFsc2U7 CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgRFJPUCBQUk9DRURVUkUgZnVu Y3Rpb25fd2l0aF9hcmd0eXBlc19saXN0IG9wdF9kcm9wX2JlaGF2aW9yCisJCQl8IERST1Ag UFJPQ0VEVVJFIHByb2NlZHVyZV93aXRoX2FyZ3R5cGVzX2xpc3Qgb3B0X2Ryb3BfYmVoYXZp b3IKIAkJCQl7CiAJCQkJCURyb3BTdG10ICpuID0gbWFrZU5vZGUoRHJvcFN0bXQpOwogCQkJ CQluLT5yZW1vdmVUeXBlID0gT0JKRUNUX1BST0NFRFVSRTsKQEAgLTc5MDEsNyArNzkzMiw3 IEBAIFJlbW92ZUZ1bmNTdG10OgogCQkJCQluLT5jb25jdXJyZW50ID0gZmFsc2U7CiAJCQkJ CSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgRFJPUCBQUk9DRURVUkUgSUZfUCBFWElT VFMgZnVuY3Rpb25fd2l0aF9hcmd0eXBlc19saXN0IG9wdF9kcm9wX2JlaGF2aW9yCisJCQl8 IERST1AgUFJPQ0VEVVJFIElGX1AgRVhJU1RTIHByb2NlZHVyZV93aXRoX2FyZ3R5cGVzX2xp c3Qgb3B0X2Ryb3BfYmVoYXZpb3IKIAkJCQl7CiAJCQkJCURyb3BTdG10ICpuID0gbWFrZU5v ZGUoRHJvcFN0bXQpOwogCQkJCQluLT5yZW1vdmVUeXBlID0gT0JKRUNUX1BST0NFRFVSRTsK QEAgLTc5MTEsNyArNzk0Miw3IEBAIFJlbW92ZUZ1bmNTdG10OgogCQkJCQluLT5jb25jdXJy ZW50ID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgRFJPUCBS T1VUSU5FIGZ1bmN0aW9uX3dpdGhfYXJndHlwZXNfbGlzdCBvcHRfZHJvcF9iZWhhdmlvcgor CQkJfCBEUk9QIFJPVVRJTkUgcHJvY2VkdXJlX3dpdGhfYXJndHlwZXNfbGlzdCBvcHRfZHJv cF9iZWhhdmlvcgogCQkJCXsKIAkJCQkJRHJvcFN0bXQgKm4gPSBtYWtlTm9kZShEcm9wU3Rt dCk7CiAJCQkJCW4tPnJlbW92ZVR5cGUgPSBPQkpFQ1RfUk9VVElORTsKQEAgLTc5MjEsNyAr Nzk1Miw3IEBAIFJlbW92ZUZ1bmNTdG10OgogCQkJCQluLT5jb25jdXJyZW50ID0gZmFsc2U7 CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgRFJPUCBST1VUSU5FIElGX1Ag RVhJU1RTIGZ1bmN0aW9uX3dpdGhfYXJndHlwZXNfbGlzdCBvcHRfZHJvcF9iZWhhdmlvcgor CQkJfCBEUk9QIFJPVVRJTkUgSUZfUCBFWElTVFMgcHJvY2VkdXJlX3dpdGhfYXJndHlwZXNf bGlzdCBvcHRfZHJvcF9iZWhhdmlvcgogCQkJCXsKIAkJCQkJRHJvcFN0bXQgKm4gPSBtYWtl Tm9kZShEcm9wU3RtdCk7CiAJCQkJCW4tPnJlbW92ZVR5cGUgPSBPQkpFQ1RfUk9VVElORTsK QEAgLTgzOTIsNyArODQyMyw3IEBAIFJlbmFtZVN0bXQ6IEFMVEVSIEFHR1JFR0FURSBhZ2dy ZWdhdGVfd2l0aF9hcmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQluLT5taXNzaW5nX29r ID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBBTFRFUiBQUk9D RURVUkUgZnVuY3Rpb25fd2l0aF9hcmd0eXBlcyBSRU5BTUUgVE8gbmFtZQorCQkJfCBBTFRF UiBQUk9DRURVUkUgcHJvY2VkdXJlX3dpdGhfYXJndHlwZXMgUkVOQU1FIFRPIG5hbWUKIAkJ CQl7CiAJCQkJCVJlbmFtZVN0bXQgKm4gPSBtYWtlTm9kZShSZW5hbWVTdG10KTsKIAkJCQkJ bi0+cmVuYW1lVHlwZSA9IE9CSkVDVF9QUk9DRURVUkU7CkBAIC04NDEwLDcgKzg0NDEsNyBA QCBSZW5hbWVTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMg UkVOQU1FIFRPIG5hbWUKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9 IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8IEFMVEVSIFJPVVRJTkUgZnVuY3Rpb25fd2l0aF9h cmd0eXBlcyBSRU5BTUUgVE8gbmFtZQorCQkJfCBBTFRFUiBST1VUSU5FIHByb2NlZHVyZV93 aXRoX2FyZ3R5cGVzIFJFTkFNRSBUTyBuYW1lCiAJCQkJewogCQkJCQlSZW5hbWVTdG10ICpu ID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CiAJCQkJCW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1Rf Uk9VVElORTsKQEAgLTg4MjEsNyArODg1Miw3IEBAIEFsdGVyT2JqZWN0RGVwZW5kc1N0bXQ6 CiAJCQkJCW4tPnJlbW92ZSA9ICQ0OwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9Ci0J CQl8IEFMVEVSIFBST0NFRFVSRSBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzIG9wdF9ubyBERVBF TkRTIE9OIEVYVEVOU0lPTiBuYW1lCisJCQl8IEFMVEVSIFBST0NFRFVSRSBwcm9jZWR1cmVf d2l0aF9hcmd0eXBlcyBvcHRfbm8gREVQRU5EUyBPTiBFWFRFTlNJT04gbmFtZQogCQkJCXsK IAkJCQkJQWx0ZXJPYmplY3REZXBlbmRzU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyT2JqZWN0 RGVwZW5kc1N0bXQpOwogCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1BST0NFRFVSRTsK QEAgLTg4MzAsNyArODg2MSw3IEBAIEFsdGVyT2JqZWN0RGVwZW5kc1N0bXQ6CiAJCQkJCW4t PnJlbW92ZSA9ICQ0OwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8IEFMVEVS IFJPVVRJTkUgZnVuY3Rpb25fd2l0aF9hcmd0eXBlcyBvcHRfbm8gREVQRU5EUyBPTiBFWFRF TlNJT04gbmFtZQorCQkJfCBBTFRFUiBST1VUSU5FIHByb2NlZHVyZV93aXRoX2FyZ3R5cGVz IG9wdF9ubyBERVBFTkRTIE9OIEVYVEVOU0lPTiBuYW1lCiAJCQkJewogCQkJCQlBbHRlck9i amVjdERlcGVuZHNTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPYmplY3REZXBlbmRzU3RtdCk7 CiAJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfUk9VVElORTsKQEAgLTg5NjEsNyArODk5 Miw3IEBAIEFsdGVyT2JqZWN0U2NoZW1hU3RtdDoKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZh bHNlOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8IEFMVEVSIFBST0NFRFVS RSBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzIFNFVCBTQ0hFTUEgbmFtZQorCQkJfCBBTFRFUiBQ Uk9DRURVUkUgcHJvY2VkdXJlX3dpdGhfYXJndHlwZXMgU0VUIFNDSEVNQSBuYW1lCiAJCQkJ ewogCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck9iamVj dFNjaGVtYVN0bXQpOwogCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1BST0NFRFVSRTsK QEAgLTg5NzAsNyArOTAwMSw3IEBAIEFsdGVyT2JqZWN0U2NoZW1hU3RtdDoKIAkJCQkJbi0+ bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8 IEFMVEVSIFJPVVRJTkUgZnVuY3Rpb25fd2l0aF9hcmd0eXBlcyBTRVQgU0NIRU1BIG5hbWUK KwkJCXwgQUxURVIgUk9VVElORSBwcm9jZWR1cmVfd2l0aF9hcmd0eXBlcyBTRVQgU0NIRU1B IG5hbWUKIAkJCQl7CiAJCQkJCUFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqbiA9IG1ha2VOb2Rl KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCk7CiAJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1Rf Uk9VVElORTsKQEAgLTkyNzIsNyArOTMwMyw3IEBAIEFsdGVyT3duZXJTdG10OiBBTFRFUiBB R0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9sZVNwZWMKIAkJ CQkJbi0+bmV3b3duZXIgPSAkOTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJ fCBBTFRFUiBQUk9DRURVUkUgZnVuY3Rpb25fd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xl U3BlYworCQkJfCBBTFRFUiBQUk9DRURVUkUgcHJvY2VkdXJlX3dpdGhfYXJndHlwZXMgT1dO RVIgVE8gUm9sZVNwZWMKIAkJCQl7CiAJCQkJCUFsdGVyT3duZXJTdG10ICpuID0gbWFrZU5v ZGUoQWx0ZXJPd25lclN0bXQpOwogCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1BST0NF RFVSRTsKQEAgLTkyODAsNyArOTMxMSw3IEBAIEFsdGVyT3duZXJTdG10OiBBTFRFUiBBR0dS RUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9sZVNwZWMKIAkJCQkJ bi0+bmV3b3duZXIgPSAkNjsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBB TFRFUiBST1VUSU5FIGZ1bmN0aW9uX3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9sZVNwZWMK KwkJCXwgQUxURVIgUk9VVElORSBwcm9jZWR1cmVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBS b2xlU3BlYwogCQkJCXsKIAkJCQkJQWx0ZXJPd25lclN0bXQgKm4gPSBtYWtlTm9kZShBbHRl ck93bmVyU3RtdCk7CiAJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfUk9VVElORTsKQEAg LTE1Nzg4LDEzICsxNTgxOSwxNCBAQCBjaGVja19pbmRpcmVjdGlvbihMaXN0ICppbmRpcmVj dGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiB9CiAKIC8qIGV4dHJhY3RBcmdUeXBl cygpCisgKgogICogR2l2ZW4gYSBsaXN0IG9mIEZ1bmN0aW9uUGFyYW1ldGVyIG5vZGVzLCBl eHRyYWN0IGEgbGlzdCBvZiBqdXN0IHRoZQotICogYXJndW1lbnQgdHlwZXMgKFR5cGVOYW1l cykgZm9yIGlucHV0IHBhcmFtZXRlcnMgb25seS4gIFRoaXMgaXMgd2hhdAotICogaXMgbmVl ZGVkIHRvIGxvb2sgdXAgYW4gZXhpc3RpbmcgZnVuY3Rpb24sIHdoaWNoIGlzIHdoYXQgaXMg d2FudGVkIGJ5Ci0gKiB0aGUgcHJvZHVjdGlvbnMgdGhhdCB1c2UgdGhpcyBjYWxsLgorICog YXJndW1lbnQgdHlwZXMgKFR5cGVOYW1lcykgZm9yIHNpZ25hdHVyZSBwYXJhbWV0ZXJzIG9u bHkgKGUuZy4sIG9ubHkgaW5wdXQKKyAqIHBhcmFtZXRlcnMgZm9yIGZ1bmN0aW9ucykuICBU aGlzIGlzIHdoYXQgaXMgbmVlZGVkIHRvIGxvb2sgdXAgYW4gZXhpc3RpbmcKKyAqIGZ1bmN0 aW9uLCB3aGljaCBpcyB3aGF0IGlzIHdhbnRlZCBieSB0aGUgcHJvZHVjdGlvbnMgdGhhdCB1 c2UgdGhpcyBjYWxsLgogICovCiBzdGF0aWMgTGlzdCAqCi1leHRyYWN0QXJnVHlwZXMoTGlz dCAqcGFyYW1ldGVycykKK2V4dHJhY3RBcmdUeXBlcyhPYmplY3RUeXBlIG9ianR5cGUsIExp c3QgKnBhcmFtZXRlcnMpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUxpc3RDZWxs ICAgKmk7CkBAIC0xNTgwMyw3ICsxNTgzNSw3IEBAIGV4dHJhY3RBcmdUeXBlcyhMaXN0ICpw YXJhbWV0ZXJzKQogCXsKIAkJRnVuY3Rpb25QYXJhbWV0ZXIgKnAgPSAoRnVuY3Rpb25QYXJh bWV0ZXIgKikgbGZpcnN0KGkpOwogCi0JCWlmIChwLT5tb2RlICE9IEZVTkNfUEFSQU1fT1VU ICYmIHAtPm1vZGUgIT0gRlVOQ19QQVJBTV9UQUJMRSkKKwkJaWYgKChwLT5tb2RlICE9IEZV TkNfUEFSQU1fT1VUIHx8IG9ianR5cGUgPT0gT0JKRUNUX1BST0NFRFVSRSkgJiYgcC0+bW9k ZSAhPSBGVU5DX1BBUkFNX1RBQkxFKQogCQkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIHAt PmFyZ1R5cGUpOwogCX0KIAlyZXR1cm4gcmVzdWx0OwpAQCAtMTU4MTYsNyArMTU4NDgsNyBA QCBzdGF0aWMgTGlzdCAqCiBleHRyYWN0QWdnckFyZ1R5cGVzKExpc3QgKmFnZ3JhcmdzKQog ewogCUFzc2VydChsaXN0X2xlbmd0aChhZ2dyYXJncykgPT0gMik7Ci0JcmV0dXJuIGV4dHJh Y3RBcmdUeXBlcygoTGlzdCAqKSBsaW5pdGlhbChhZ2dyYXJncykpOworCXJldHVybiBleHRy YWN0QXJnVHlwZXMoT0JKRUNUX0FHR1JFR0FURSwgKExpc3QgKikgbGluaXRpYWwoYWdncmFy Z3MpKTsKIH0KIAogLyogbWFrZU9yZGVyZWRTZXRBcmdzKCkKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmgKaW5kZXggYjUwZmEyNWRiZC4uMjY4YzgxMDg5NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmgKQEAgLTkxLDcgKzkxLDcgQEAgQ0FUQUxPRyhwZ19wcm9jLDEyNTUsUHJvY2VkdXJlUmVs YXRpb25JZCkgQktJX0JPT1RTVFJBUCBCS0lfUk9XVFlQRV9PSUQoODEsUHJvY2UKIAkgKiBw cm9hcmd0eXBlcwogCSAqLwogCi0JLyogcGFyYW1ldGVyIHR5cGVzIChleGNsdWRlcyBPVVQg cGFyYW1zKSAqLworCS8qIHBhcmFtZXRlciB0eXBlcyAoZXhjbHVkZXMgT1VUIHBhcmFtcyBv ZiBmdW5jdGlvbnMpICovCiAJb2lkdmVjdG9yCXByb2FyZ3R5cGVzIEJLSV9MT09LVVAocGdf dHlwZSkgQktJX0ZPUkNFX05PVF9OVUxMOwogCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4KZGlm ZiAtLWdpdCBhL3NyYy9wbC9wbHBlcmwvZXhwZWN0ZWQvcGxwZXJsX2NhbGwub3V0IGIvc3Jj L3BsL3BscGVybC9leHBlY3RlZC9wbHBlcmxfY2FsbC5vdXQKaW5kZXggYzU1YzU5Y2JjZS4u YTA4YjlmZjc5NSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGVybC9leHBlY3RlZC9wbHBlcmxf Y2FsbC5vdXQKKysrIGIvc3JjL3BsL3BscGVybC9leHBlY3RlZC9wbHBlcmxfY2FsbC5vdXQK QEAgLTQ4LDYgKzQ4LDI0IEBAIENBTEwgdGVzdF9wcm9jNigyLCAzLCA0KTsKICA2IHwgOAog KDEgcm93KQogCistLSBPVVQgcGFyYW1ldGVycworQ1JFQVRFIFBST0NFRFVSRSB0ZXN0X3By b2M5KElOIGEgaW50LCBPVVQgYiBpbnQpCitMQU5HVUFHRSBwbHBlcmwKK0FTICQkCitteSAo JGEsICRiKSA9IEBfOworZWxvZyhOT1RJQ0UsICJhOiAkYSwgYjogJGIiKTsKK3JldHVybiB7 IGIgPT4gJGEgKiAyIH07CiskJDsKK0RPICQkCitERUNMQVJFIF9hIGludDsgX2IgaW50Owor QkVHSU4KKyAgX2EgOj0gMTA7IF9iIDo9IDMwOworICBDQUxMIHRlc3RfcHJvYzkoX2EsIF9i KTsKKyAgUkFJU0UgTk9USUNFICdfYTogJSwgX2I6ICUnLCBfYSwgX2I7CitFTkQKKyQkOwor Tk9USUNFOiAgYTogMTAsIGI6IAorTk9USUNFOiAgX2E6IDEwLCBfYjogMjAKIERST1AgUFJP Q0VEVVJFIHRlc3RfcHJvYzE7CiBEUk9QIFBST0NFRFVSRSB0ZXN0X3Byb2MyOwogRFJPUCBQ Uk9DRURVUkUgdGVzdF9wcm9jMzsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBlcmwvc3FsL3Bs cGVybF9jYWxsLnNxbCBiL3NyYy9wbC9wbHBlcmwvc3FsL3BscGVybF9jYWxsLnNxbAppbmRl eCAyY2Y1NDYxZmVmLi5iYmVhODVmYzlmIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZXJsL3Nx bC9wbHBlcmxfY2FsbC5zcWwKKysrIGIvc3JjL3BsL3BscGVybC9zcWwvcGxwZXJsX2NhbGwu c3FsCkBAIC01MSw2ICs1MSwyNiBAQCBDUkVBVEUgUFJPQ0VEVVJFIHRlc3RfcHJvYzYoYSBp bnQsIElOT1VUIGIgaW50LCBJTk9VVCBjIGludCkKIENBTEwgdGVzdF9wcm9jNigyLCAzLCA0 KTsKIAogCistLSBPVVQgcGFyYW1ldGVycworCitDUkVBVEUgUFJPQ0VEVVJFIHRlc3RfcHJv YzkoSU4gYSBpbnQsIE9VVCBiIGludCkKK0xBTkdVQUdFIHBscGVybAorQVMgJCQKK215ICgk YSwgJGIpID0gQF87CitlbG9nKE5PVElDRSwgImE6ICRhLCBiOiAkYiIpOworcmV0dXJuIHsg YiA9PiAkYSAqIDIgfTsKKyQkOworCitETyAkJAorREVDTEFSRSBfYSBpbnQ7IF9iIGludDsK K0JFR0lOCisgIF9hIDo9IDEwOyBfYiA6PSAzMDsKKyAgQ0FMTCB0ZXN0X3Byb2M5KF9hLCBf Yik7CisgIFJBSVNFIE5PVElDRSAnX2E6ICUsIF9iOiAlJywgX2EsIF9iOworRU5ECiskJDsK KworCiBEUk9QIFBST0NFRFVSRSB0ZXN0X3Byb2MxOwogRFJPUCBQUk9DRURVUkUgdGVzdF9w cm9jMjsKIERST1AgUFJPQ0VEVVJFIHRlc3RfcHJvYzM7CmRpZmYgLS1naXQgYS9zcmMvcGwv cGxwZ3NxbC9zcmMvZXhwZWN0ZWQvcGxwZ3NxbF9jYWxsLm91dCBiL3NyYy9wbC9wbHBnc3Fs L3NyYy9leHBlY3RlZC9wbHBnc3FsX2NhbGwub3V0CmluZGV4IGQ5Yzg4ZTg1YzguLjk3Mzg1 NzE2MTEgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3Fs X2NhbGwub3V0CisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX2Nh bGwub3V0CkBAIC0yNjQsNiArMjY0LDI1IEBAIEVORAogJCQ7CiBFUlJPUjogIHByb2NlZHVy ZSBwYXJhbWV0ZXIgImMiIGlzIGFuIG91dHB1dCBwYXJhbWV0ZXIgYnV0IGNvcnJlc3BvbmRp bmcgYXJndW1lbnQgaXMgbm90IHdyaXRhYmxlCiBDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rp b24gaW5saW5lX2NvZGVfYmxvY2sgbGluZSA1IGF0IENBTEwKKy0tIE9VVCBwYXJhbWV0ZXJz CitDUkVBVEUgUFJPQ0VEVVJFIHRlc3RfcHJvYzkoSU4gYSBpbnQsIE9VVCBiIGludCkKK0xB TkdVQUdFIHBscGdzcWwKK0FTICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ2E6ICUsIGI6 ICUnLCBhLCBiOworICBiIDo9IGEgKiAyOworRU5EOworJCQ7CitETyAkJAorREVDTEFSRSBf YSBpbnQ7IF9iIGludDsKK0JFR0lOCisgIF9hIDo9IDEwOyBfYiA6PSAzMDsKKyAgQ0FMTCB0 ZXN0X3Byb2M5KF9hLCBfYik7CisgIFJBSVNFIE5PVElDRSAnX2E6ICUsIF9iOiAlJywgX2Es IF9iOworRU5ECiskJDsKK05PVElDRTogIGE6IDEwLCBiOiA8TlVMTD4KK05PVElDRTogIF9h OiAxMCwgX2I6IDIwCiAtLSB0cmFuc2l0aW9uIHZhcmlhYmxlIGFzc2lnbm1lbnQKIFRSVU5D QVRFIHRlc3QxOwogQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJmdW5jMSgpIFJFVFVSTlMgdHJp Z2dlcgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2NvbXAuYyBiL3NyYy9w bC9wbHBnc3FsL3NyYy9wbF9jb21wLmMKaW5kZXggZTdmNGE1ZjI5MS4uMzQ0NjI3ZGE5NSAx MDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2NvbXAuYworKysgYi9zcmMvcGwv cGxwZ3NxbC9zcmMvcGxfY29tcC5jCkBAIC00NTgsNiArNDU4LDcgQEAgZG9fY29tcGlsZShG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCQkvKiBSZW1lbWJlciBhcmd1bWVudHMgaW4g YXBwcm9wcmlhdGUgYXJyYXlzICovCiAJCQkJaWYgKGFyZ21vZGUgPT0gUFJPQVJHTU9ERV9J TiB8fAogCQkJCQlhcmdtb2RlID09IFBST0FSR01PREVfSU5PVVQgfHwKKwkJCQkJKGFyZ21v ZGUgPT0gUFJPQVJHTU9ERV9PVVQgJiYgZnVuY3Rpb24tPmZuX3Byb2tpbmQgPT0gUFJPS0lO RF9QUk9DRURVUkUpIHx8CiAJCQkJCWFyZ21vZGUgPT0gUFJPQVJHTU9ERV9WQVJJQURJQykK IAkJCQkJaW5fYXJnX3Zhcm5vc1tudW1faW5fYXJncysrXSA9IGFyZ3ZhcmlhYmxlLT5kbm87 CiAJCQkJaWYgKGFyZ21vZGUgPT0gUFJPQVJHTU9ERV9PVVQgfHwKZGlmZiAtLWdpdCBhL3Ny Yy9wbC9wbHBnc3FsL3NyYy9zcWwvcGxwZ3NxbF9jYWxsLnNxbCBiL3NyYy9wbC9wbHBnc3Fs L3NyYy9zcWwvcGxwZ3NxbF9jYWxsLnNxbAppbmRleCA0NzAyYmQxNGQxLi5kNTA2ODA5ZGRi IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvc3FsL3BscGdzcWxfY2FsbC5zcWwK KysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3NxbC9wbHBnc3FsX2NhbGwuc3FsCkBAIC0yMzcs NiArMjM3LDI3IEBAIENSRUFURSBQUk9DRURVUkUgdGVzdF9wcm9jOGMoSU5PVVQgYSBpbnQs IElOT1VUIGIgaW50LCBJTk9VVCBjIGludCBERUZBVUxUIDExKQogJCQ7CiAKIAorLS0gT1VU IHBhcmFtZXRlcnMKKworQ1JFQVRFIFBST0NFRFVSRSB0ZXN0X3Byb2M5KElOIGEgaW50LCBP VVQgYiBpbnQpCitMQU5HVUFHRSBwbHBnc3FsCitBUyAkJAorQkVHSU4KKyAgUkFJU0UgTk9U SUNFICdhOiAlLCBiOiAlJywgYSwgYjsKKyAgYiA6PSBhICogMjsKK0VORDsKKyQkOworCitE TyAkJAorREVDTEFSRSBfYSBpbnQ7IF9iIGludDsKK0JFR0lOCisgIF9hIDo9IDEwOyBfYiA6 PSAzMDsKKyAgQ0FMTCB0ZXN0X3Byb2M5KF9hLCBfYik7CisgIFJBSVNFIE5PVElDRSAnX2E6 ICUsIF9iOiAlJywgX2EsIF9iOworRU5ECiskJDsKKworCiAtLSB0cmFuc2l0aW9uIHZhcmlh YmxlIGFzc2lnbm1lbnQKIAogVFJVTkNBVEUgdGVzdDE7CmRpZmYgLS1naXQgYS9zcmMvcGwv cGxweXRob24vZXhwZWN0ZWQvcGxweXRob25fY2FsbC5vdXQgYi9zcmMvcGwvcGxweXRob24v ZXhwZWN0ZWQvcGxweXRob25fY2FsbC5vdXQKaW5kZXggMDdhZTA0ZTk4Yi4uYzNmM2M4ZTk1 ZSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL2V4cGVjdGVkL3BscHl0aG9uX2NhbGwu b3V0CisrKyBiL3NyYy9wbC9wbHB5dGhvbi9leHBlY3RlZC9wbHB5dGhvbl9jYWxsLm91dApA QCAtNTIsNiArNTIsMjMgQEAgQ0FMTCB0ZXN0X3Byb2M2KDIsIDMsIDQpOwogIDYgfCA4CiAo MSByb3cpCiAKKy0tIE9VVCBwYXJhbWV0ZXJzCitDUkVBVEUgUFJPQ0VEVVJFIHRlc3RfcHJv YzkoSU4gYSBpbnQsIE9VVCBiIGludCkKK0xBTkdVQUdFIHBscHl0aG9udQorQVMgJCQKK3Bs cHkubm90aWNlKCJhOiAlcywgYjogJXMiICUgKGEsIGIpKQorcmV0dXJuIChhICogMiwpCisk JDsKK0RPICQkCitERUNMQVJFIF9hIGludDsgX2IgaW50OworQkVHSU4KKyAgX2EgOj0gMTA7 IF9iIDo9IDMwOworICBDQUxMIHRlc3RfcHJvYzkoX2EsIF9iKTsKKyAgUkFJU0UgTk9USUNF ICdfYTogJSwgX2I6ICUnLCBfYSwgX2I7CitFTkQKKyQkOworTk9USUNFOiAgYTogMTAsIGI6 IE5vbmUKK05PVElDRTogIF9hOiAxMCwgX2I6IDIwCiBEUk9QIFBST0NFRFVSRSB0ZXN0X3By b2MxOwogRFJPUCBQUk9DRURVUkUgdGVzdF9wcm9jMjsKIERST1AgUFJPQ0VEVVJFIHRlc3Rf cHJvYzM7CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYyBi L3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jCmluZGV4IDllMTU4Mzk2MTEuLmVj NDdmNTJlNjEgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5j CisrKyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jCkBAIC0yNzMsNyArMjcz LDcgQEAgUEx5X3Byb2NlZHVyZV9jcmVhdGUoSGVhcFR1cGxlIHByb2NUdXAsIE9pZCBmbl9v aWQsIGJvb2wgaXNfdHJpZ2dlcikKIAkJCQkvKiBwcm9jLT5uYXJncyB3YXMgaW5pdGlhbGl6 ZWQgdG8gMCBhYm92ZSAqLwogCQkJCWZvciAoaSA9IDA7IGkgPCB0b3RhbDsgaSsrKQogCQkJ CXsKLQkJCQkJaWYgKG1vZGVzW2ldICE9IFBST0FSR01PREVfT1VUICYmCisJCQkJCWlmICgo bW9kZXNbaV0gIT0gUFJPQVJHTU9ERV9PVVQgfHwgcHJvYy0+aXNfcHJvY2VkdXJlKSAmJgog CQkJCQkJbW9kZXNbaV0gIT0gUFJPQVJHTU9ERV9UQUJMRSkKIAkJCQkJCShwcm9jLT5uYXJn cykrKzsKIAkJCQl9CkBAIC0yODksNyArMjg5LDcgQEAgUEx5X3Byb2NlZHVyZV9jcmVhdGUo SGVhcFR1cGxlIHByb2NUdXAsIE9pZCBmbl9vaWQsIGJvb2wgaXNfdHJpZ2dlcikKIAkJCQlG b3JtX3BnX3R5cGUgYXJnVHlwZVN0cnVjdDsKIAogCQkJCWlmIChtb2RlcyAmJgotCQkJCQko bW9kZXNbaV0gPT0gUFJPQVJHTU9ERV9PVVQgfHwKKwkJCQkJKChtb2Rlc1tpXSA9PSBQUk9B UkdNT0RFX09VVCAmJiAhcHJvYy0+aXNfcHJvY2VkdXJlKSB8fAogCQkJCQkgbW9kZXNbaV0g PT0gUFJPQVJHTU9ERV9UQUJMRSkpCiAJCQkJCWNvbnRpbnVlOwkvKiBza2lwIE9VVCBhcmd1 bWVudHMgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscHl0aG9uL3NxbC9wbHB5dGhvbl9j YWxsLnNxbCBiL3NyYy9wbC9wbHB5dGhvbi9zcWwvcGxweXRob25fY2FsbC5zcWwKaW5kZXgg MmY3OTJmOTJiZC4uNDZlODliMWE5ZSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3Nx bC9wbHB5dGhvbl9jYWxsLnNxbAorKysgYi9zcmMvcGwvcGxweXRob24vc3FsL3BscHl0aG9u X2NhbGwuc3FsCkBAIC01NCw2ICs1NCwyNSBAQCBDUkVBVEUgUFJPQ0VEVVJFIHRlc3RfcHJv YzYoYSBpbnQsIElOT1VUIGIgaW50LCBJTk9VVCBjIGludCkKIENBTEwgdGVzdF9wcm9jNigy LCAzLCA0KTsKIAogCistLSBPVVQgcGFyYW1ldGVycworCitDUkVBVEUgUFJPQ0VEVVJFIHRl c3RfcHJvYzkoSU4gYSBpbnQsIE9VVCBiIGludCkKK0xBTkdVQUdFIHBscHl0aG9udQorQVMg JCQKK3BscHkubm90aWNlKCJhOiAlcywgYjogJXMiICUgKGEsIGIpKQorcmV0dXJuIChhICog MiwpCiskJDsKKworRE8gJCQKK0RFQ0xBUkUgX2EgaW50OyBfYiBpbnQ7CitCRUdJTgorICBf YSA6PSAxMDsgX2IgOj0gMzA7CisgIENBTEwgdGVzdF9wcm9jOShfYSwgX2IpOworICBSQUlT RSBOT1RJQ0UgJ19hOiAlLCBfYjogJScsIF9hLCBfYjsKK0VORAorJCQ7CisKKwogRFJPUCBQ Uk9DRURVUkUgdGVzdF9wcm9jMTsKIERST1AgUFJPQ0VEVVJFIHRlc3RfcHJvYzI7CiBEUk9Q IFBST0NFRFVSRSB0ZXN0X3Byb2MzOwpkaWZmIC0tZ2l0IGEvc3JjL3BsL3RjbC9leHBlY3Rl ZC9wbHRjbF9jYWxsLm91dCBiL3NyYy9wbC90Y2wvZXhwZWN0ZWQvcGx0Y2xfY2FsbC5vdXQK aW5kZXggZDI5MGM4ZmJkMC4uZjBlYjM1NmNmMiAxMDA2NDQKLS0tIGEvc3JjL3BsL3RjbC9l eHBlY3RlZC9wbHRjbF9jYWxsLm91dAorKysgYi9zcmMvcGwvdGNsL2V4cGVjdGVkL3BsdGNs X2NhbGwub3V0CkBAIC00OSw2ICs0OSwyMyBAQCBDQUxMIHRlc3RfcHJvYzYoMiwgMywgNCk7 CiAgNiB8IDgKICgxIHJvdykKIAorLS0gT1VUIHBhcmFtZXRlcnMKK0NSRUFURSBQUk9DRURV UkUgdGVzdF9wcm9jOShJTiBhIGludCwgT1VUIGIgaW50KQorTEFOR1VBR0UgcGx0Y2wKK0FT ICQkCitlbG9nIE5PVElDRSAiYTogJDEsIGI6ICQyIgorcmV0dXJuIFtsaXN0IGIgW2V4cHIg eyQxICogMn1dXQorJCQ7CitETyAkJAorREVDTEFSRSBfYSBpbnQ7IF9iIGludDsKK0JFR0lO CisgIF9hIDo9IDEwOyBfYiA6PSAzMDsKKyAgQ0FMTCB0ZXN0X3Byb2M5KF9hLCBfYik7Cisg IFJBSVNFIE5PVElDRSAnX2E6ICUsIF9iOiAlJywgX2EsIF9iOworRU5ECiskJDsKK05PVElD RTogIGE6IDEwLCBiOiAKK05PVElDRTogIF9hOiAxMCwgX2I6IDIwCiBEUk9QIFBST0NFRFVS RSB0ZXN0X3Byb2MxOwogRFJPUCBQUk9DRURVUkUgdGVzdF9wcm9jMjsKIERST1AgUFJPQ0VE VVJFIHRlc3RfcHJvYzM7CmRpZmYgLS1naXQgYS9zcmMvcGwvdGNsL3NxbC9wbHRjbF9jYWxs LnNxbCBiL3NyYy9wbC90Y2wvc3FsL3BsdGNsX2NhbGwuc3FsCmluZGV4IDk1NzkxZDA4YmUu Ljk2MzI3N2UxZmIgMTAwNjQ0Ci0tLSBhL3NyYy9wbC90Y2wvc3FsL3BsdGNsX2NhbGwuc3Fs CisrKyBiL3NyYy9wbC90Y2wvc3FsL3BsdGNsX2NhbGwuc3FsCkBAIC01Miw2ICs1MiwyNSBA QCBDUkVBVEUgUFJPQ0VEVVJFIHRlc3RfcHJvYzYoYSBpbnQsIElOT1VUIGIgaW50LCBJTk9V VCBjIGludCkKIENBTEwgdGVzdF9wcm9jNigyLCAzLCA0KTsKIAogCistLSBPVVQgcGFyYW1l dGVycworCitDUkVBVEUgUFJPQ0VEVVJFIHRlc3RfcHJvYzkoSU4gYSBpbnQsIE9VVCBiIGlu dCkKK0xBTkdVQUdFIHBsdGNsCitBUyAkJAorZWxvZyBOT1RJQ0UgImE6ICQxLCBiOiAkMiIK K3JldHVybiBbbGlzdCBiIFtleHByIHskMSAqIDJ9XV0KKyQkOworCitETyAkJAorREVDTEFS RSBfYSBpbnQ7IF9iIGludDsKK0JFR0lOCisgIF9hIDo9IDEwOyBfYiA6PSAzMDsKKyAgQ0FM TCB0ZXN0X3Byb2M5KF9hLCBfYik7CisgIFJBSVNFIE5PVElDRSAnX2E6ICUsIF9iOiAlJywg X2EsIF9iOworRU5ECiskJDsKKworCiBEUk9QIFBST0NFRFVSRSB0ZXN0X3Byb2MxOwogRFJP UCBQUk9DRURVUkUgdGVzdF9wcm9jMjsKIERST1AgUFJPQ0VEVVJFIHRlc3RfcHJvYzM7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfcHJvY2VkdXJlLm91dApp bmRleCAyMTFhNDJjZWZhLi4zODM4ZmEyMzI0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9jZWR1cmUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX3Byb2NlZHVyZS5vdXQKQEAgLTE0Niw2ICsxNDYsMTkgQEAg QVMgJCQKIFNFTEVDVCBhID0gYjsKICQkOwogQ0FMTCBwdGVzdDcobGVhc3QoJ2EnLCAnYicp LCAnYScpOworLS0gT1VUIHBhcmFtZXRlcnMKK0NSRUFURSBQUk9DRURVUkUgcHRlc3Q5KE9V VCBhIGludCkKK0xBTkdVQUdFIFNRTAorQVMgJCQKK0lOU0VSVCBJTlRPIGNwX3Rlc3QgVkFM VUVTICgxLCAnYScpOworU0VMRUNUIDE7CiskJDsKK0NBTEwgcHRlc3Q5KE5VTEwpOworIGEg CistLS0KKyAxCisoMSByb3cpCisKIC0tIHZhcmlvdXMgZXJyb3IgY2FzZXMKIENBTEwgdmVy c2lvbigpOyAgLS0gZXJyb3I6IG5vdCBhIHByb2NlZHVyZQogRVJST1I6ICB2ZXJzaW9uKCkg aXMgbm90IGEgcHJvY2VkdXJlCkBAIC0xNjUsOSArMTc4LDYgQEAgQ1JFQVRFIFBST0NFRFVS RSBwdGVzdHgoKSBMQU5HVUFHRSBTUUwgU1RSSUNUIEFTICQkIElOU0VSVCBJTlRPIGNwX3Rl c3QgVkFMVUVTICgKIEVSUk9SOiAgaW52YWxpZCBhdHRyaWJ1dGUgaW4gcHJvY2VkdXJlIGRl ZmluaXRpb24KIExJTkUgMTogQ1JFQVRFIFBST0NFRFVSRSBwdGVzdHgoKSBMQU5HVUFHRSBT UUwgU1RSSUNUIEFTICQkIElOU0VSVCBJLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KLUNSRUFURSBQUk9DRURVUkUgcHRlc3R4KE9VVCBh IGludCkgTEFOR1VBR0UgU1FMIEFTICQkIElOU0VSVCBJTlRPIGNwX3Rlc3QgVkFMVUVTICgx LCAnYScpICQkOwotRVJST1I6ICBwcm9jZWR1cmVzIGNhbm5vdCBoYXZlIE9VVCBhcmd1bWVu dHMKLUhJTlQ6ICBJTk9VVCBhcmd1bWVudHMgYXJlIHBlcm1pdHRlZC4KIEFMVEVSIFBST0NF RFVSRSBwdGVzdDEodGV4dCkgU1RSSUNUOwogRVJST1I6ICBpbnZhbGlkIGF0dHJpYnV0ZSBp biBwcm9jZWR1cmUgZGVmaW5pdGlvbgogTElORSAxOiBBTFRFUiBQUk9DRURVUkUgcHRlc3Qx KHRleHQpIFNUUklDVDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0 ZV9wcm9jZWR1cmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVy ZS5zcWwKaW5kZXggODliOTZkNTgwZi4uMmVmMWM4MmNlYSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY3JlYXRlX3Byb2NlZHVyZS5zcWwKQEAgLTExMiw2ICsxMTIsMTggQEAgQ1JF QVRFIFBST0NFRFVSRSBwdGVzdDcoYSB0ZXh0LCBiIHRleHQpCiBDQUxMIHB0ZXN0NyhsZWFz dCgnYScsICdiJyksICdhJyk7CiAKIAorLS0gT1VUIHBhcmFtZXRlcnMKKworQ1JFQVRFIFBS T0NFRFVSRSBwdGVzdDkoT1VUIGEgaW50KQorTEFOR1VBR0UgU1FMCitBUyAkJAorSU5TRVJU IElOVE8gY3BfdGVzdCBWQUxVRVMgKDEsICdhJyk7CitTRUxFQ1QgMTsKKyQkOworCitDQUxM IHB0ZXN0OShOVUxMKTsKKworCiAtLSB2YXJpb3VzIGVycm9yIGNhc2VzCiAKIENBTEwgdmVy c2lvbigpOyAgLS0gZXJyb3I6IG5vdCBhIHByb2NlZHVyZQpAQCAtMTE5LDcgKzEzMSw2IEBA IENSRUFURSBQUk9DRURVUkUgcHRlc3Q3KGEgdGV4dCwgYiB0ZXh0KQogCiBDUkVBVEUgUFJP Q0VEVVJFIHB0ZXN0eCgpIExBTkdVQUdFIFNRTCBXSU5ET1cgQVMgJCQgSU5TRVJUIElOVE8g Y3BfdGVzdCBWQUxVRVMgKDEsICdhJykgJCQ7CiBDUkVBVEUgUFJPQ0VEVVJFIHB0ZXN0eCgp IExBTkdVQUdFIFNRTCBTVFJJQ1QgQVMgJCQgSU5TRVJUIElOVE8gY3BfdGVzdCBWQUxVRVMg KDEsICdhJykgJCQ7Ci1DUkVBVEUgUFJPQ0VEVVJFIHB0ZXN0eChPVVQgYSBpbnQpIExBTkdV QUdFIFNRTCBBUyAkJCBJTlNFUlQgSU5UTyBjcF90ZXN0IFZBTFVFUyAoMSwgJ2EnKSAkJDsK IAogQUxURVIgUFJPQ0VEVVJFIHB0ZXN0MSh0ZXh0KSBTVFJJQ1Q7CiBBTFRFUiBGVU5DVElP TiBwdGVzdDEodGV4dCkgVk9MQVRJTEU7ICAtLSBlcnJvcjogbm90IGEgZnVuY3Rpb24KLS0g CjIuMjguMAoK --------------B909FDC5F74F8F9521CA4608--