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 1msZzf-0006LD-Jf for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Dec 2021 00:30: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 1msZze-0001Jh-9o for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Dec 2021 00:30:34 +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 1msZzd-0001JY-I5 for pgsql-hackers@lists.postgresql.org; Thu, 02 Dec 2021 00:30:33 +0000 Received: from smtp-fw-6002.amazon.com ([52.95.49.90]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1msZzb-00074C-2U for pgsql-hackers@postgresql.org; Thu, 02 Dec 2021 00:30:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1638405031; x=1669941031; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=vm6QvcflyeIJxc+sRpRB2Wv3hoPqDGoSZkKbmstFido=; b=l8A20zSOuzB8czQwWsanW2+D0L8B/j225whafIcfGg5sHSx6pTMgmS/X p1Uh2KnB0BVgFqXqJYXofLZt9r3FsA3T0wgyNobeXxVea/slgS0JxEPYr yatjl469VEovnqJRU7McrArEOptPiybM9oEWNyLtgEEDJCfV2xgptNF5V U=; X-Amazon-filename: v1-0001-remove-exclusive-backup-mode.patch X-IronPort-AV: E=Sophos;i="5.87,280,1631577600"; d="scan'208,223";a="159185722" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-pdx-2c-34cb9e7b.us-west-2.amazon.com) ([10.43.8.2]) by smtp-border-fw-6002.iad6.amazon.com with ESMTP; 02 Dec 2021 00:30:29 +0000 Received: from EX13MTAUWB001.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan3.pdx.amazon.com [10.236.137.198]) by email-inbound-relay-pdx-2c-34cb9e7b.us-west-2.amazon.com (Postfix) with ESMTPS id F32F341FB9; Thu, 2 Dec 2021 00:30:28 +0000 (UTC) Received: from EX13D03UWC003.ant.amazon.com (10.43.162.79) by EX13MTAUWB001.ant.amazon.com (10.43.161.249) with Microsoft SMTP Server (TLS) id 15.0.1497.26; Thu, 2 Dec 2021 00:30:26 +0000 Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13D03UWC003.ant.amazon.com (10.43.162.79) with Microsoft SMTP Server (TLS) id 15.0.1497.26; Thu, 2 Dec 2021 00:30:26 +0000 Received: from EX13D03UWC004.ant.amazon.com ([10.43.162.49]) by EX13D03UWC004.ant.amazon.com ([10.43.162.49]) with mapi id 15.00.1497.026; Thu, 2 Dec 2021 00:30:26 +0000 From: "Bossart, Nathan" To: David Steele , Tom Lane CC: Stephen Frost , Laurenz Albe , Michael Paquier , Pg Hackers , SATYANARAYANA NARLAPURAM Subject: Re: Postgres restart in the middle of exclusive backup and the presence of backup_label file Thread-Topic: Postgres restart in the middle of exclusive backup and the presence of backup_label file Thread-Index: AQHX5xPM4hfhYduoA0a6heigMIhbxw== Date: Thu, 2 Dec 2021 00:30:25 +0000 Message-ID: References: <417711.1637940660@sss.pgh.pa.us> <20211130142042.GR26257@tamriel.snowman.net> <3404870c1a921bafbcd168c098088981fe082ab1.camel@cybertec.at> <845544A4-0B0E-41D2-903C-C8B9E8A18812@amazon.com> <1661037.1638311167@sss.pgh.pa.us> <1cce9981-2c48-981a-a936-812830dfb3b1@pgmasters.net> <9427c6b3-5e0b-e27f-a2e7-ec1ebc00b582@pgmasters.net> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.161.97] Content-Type: multipart/mixed; boundary="_002_E87F96A89DBD4E8D8EE9A03B4F126119amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_E87F96A89DBD4E8D8EE9A03B4F126119amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 T24gMTIvMS8yMSwgMTA6MzcgQU0sICJCb3NzYXJ0LCBOYXRoYW4iIDxib3NzYXJ0bkBhbWF6b24u Y29tPiB3cm90ZToNCj4gT24gMTIvMS8yMSwgODoyNyBBTSwgIkRhdmlkIFN0ZWVsZSIgPGRhdmlk QHBnbWFzdGVycy5uZXQ+IHdyb3RlOg0KPj4gT24gMTEvMzAvMjEgMTg6MzEsIEJvc3NhcnQsIE5h dGhhbiB3cm90ZToNCj4+PiBEbyB5b3UgdGhpbmsgaXQncyBzdGlsbCB3b3J0aCB0cnlpbmcgdG8g bWFrZSBpdCBzYWZlLCBvciBkbyB5b3UgdGhpbmsNCj4+PiB3ZSBzaG91bGQganVzdCByZW1vdmUg ZXhjbHVzaXZlIG1vZGUgY29tcGxldGVseT8NCj4+DQo+PiBNeSBwcmVmZXJlbmNlIHdvdWxkIGJl IHRvIHJlbW92ZSBpdCBjb21wbGV0ZWx5LCBidXQgSSBoYXZlbid0IGdvdHRlbiBhDQo+PiBsb3Qg b2YgdHJhY3Rpb24gc28gZmFyLg0KPg0KPiBJbiB0aGlzIHRocmVhZCwgSSBjb3VudCA2IHBlb3Bs ZSB3aG8gc2VlbSBhbHJpZ2h0IHdpdGggcmVtb3ZpbmcgaXQsDQo+IGFuZCAyIHdobyBtaWdodCBi ZSBvcHBvc2VkLCBhbHRob3VnaCBJIGRvbid0IHRoaW5rIGFueW9uZSBoYXMNCj4gZXhwbGljaXRs eSBzdGF0ZWQgdGhleSBhcmUgYWdhaW5zdCBpdC4NCg0KSSBoYXN0aWx5IHJlYmFzZWQgdGhlIHBh dGNoIGZyb20gMjAxOCBhbmQgZ290IGl0IGJ1aWxkaW5nIGFuZCBwYXNzaW5nDQp0aGUgdGVzdHMu ICBJJ20gc3VyZSBpdCB3aWxsIG5lZWQgYWRkaXRpb25hbCBjaGFuZ2VzLCBidXQgSSdsbCB3YWl0 DQpmb3IgbW9yZSBmZWVkYmFjayBiZWZvcmUgSSBleHBlbmQgdG9vIG11Y2ggbW9yZSBlZmZvcnQg b24gdGhpcy4NCg0KTmF0aGFuDQoNCg== --_002_E87F96A89DBD4E8D8EE9A03B4F126119amazoncom_ Content-Type: application/octet-stream; name="v1-0001-remove-exclusive-backup-mode.patch" Content-Description: v1-0001-remove-exclusive-backup-mode.patch Content-Disposition: attachment; filename="v1-0001-remove-exclusive-backup-mode.patch"; size=60069; creation-date="Thu, 02 Dec 2021 00:30:25 GMT"; modification-date="Thu, 02 Dec 2021 00:30:25 GMT" Content-ID: <2DB64EF6F04FF34DA0099EEA2241F27D@amazon.com> Content-Transfer-Encoding: base64 RnJvbSBmMTMyZGQ5NzZlN2M5Mjg2NmJiMzhmYmQ2NjY1YWU4N2E0NjAwZWRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogV2VkLCAxIERlYyAyMDIxIDIzOjUwOjQ5ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2MSAx LzFdIHJlbW92ZSBleGNsdXNpdmUgYmFja3VwIG1vZGUKCi0tLQogZG9jL3NyYy9zZ21sL2JhY2t1 cC5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNTQgKy0tLS0tLQogZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzAgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICAgICAgIHwgNDY2ICsrLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMg ICAgICAgICAgICAgfCAyMzUgKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X2Z1bmN0aW9ucy5zcWwgICAgICAgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYyAgICAgICAgICAgICAgICB8ICA0NiArLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vYmFzZWJhY2t1cC5jICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iaW4vcGdfYmFz ZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFja3VwLnBsICAgICAgIHwgICA0ICsKIHNyYy9iaW4vcGdf cmV3aW5kL2ZpbGVtYXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5j bHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgICAgICAgfCAgMjAgKy0K IHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 IC0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gICAgICAgICAgIHwg IDU2ICstLQogLi4uL3JlY292ZXJ5L3QvMDEwX2xvZ2ljYWxfZGVjb2RpbmdfdGltZWxpbmVzLnBs ICAgfCAgIDQgKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCA5MzUgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2JhY2t1cC5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2JhY2t1cC5zZ21sCmluZGV4IGNiYTMyYjZlYjMuLjlhOGI5Zjg0ZWEgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9iYWNrdXAuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvYmFja3VwLnNn bWwKQEAgLTgzNywxNiArODM3LDggQEAgdGVzdCAhIC1mIC9tbnQvc2VydmVyL2FyY2hpdmVkaXIv MDAwMDAwMDEwMDAwMDBBOTAwMDAwMDY1ICZhbXA7JmFtcDsgY3AgcGdfd2FsLzAKICAgICBzZXF1 ZW5jZSwgYW5kIHRoYXQgdGhlIHN1Y2Nlc3Mgb2YgYSBzdGVwIGlzIHZlcmlmaWVkIGJlZm9yZQog ICAgIHByb2NlZWRpbmcgdG8gdGhlIG5leHQgc3RlcC4KICAgIDwvcGFyYT4KLSAgIDxwYXJhPgot ICAgIExvdyBsZXZlbCBiYXNlIGJhY2t1cHMgY2FuIGJlIG1hZGUgaW4gYSBub24tZXhjbHVzaXZl IG9yIGFuIGV4Y2x1c2l2ZQotICAgIHdheS4gVGhlIG5vbi1leGNsdXNpdmUgbWV0aG9kIGlzIHJl Y29tbWVuZGVkIGFuZCB0aGUgZXhjbHVzaXZlIG9uZSBpcwotICAgIGRlcHJlY2F0ZWQgYW5kIHdp bGwgZXZlbnR1YWxseSBiZSByZW1vdmVkLgotICAgPC9wYXJhPgotCi0gICA8c2VjdDMgaWQ9ImJh Y2t1cC1sb3dsZXZlbC1iYXNlLWJhY2t1cC1ub25leGNsdXNpdmUiPgotICAgIDx0aXRsZT5NYWtp bmcgYSBOb24tRXhjbHVzaXZlIExvdy1MZXZlbCBCYWNrdXA8L3RpdGxlPgogICAgIDxwYXJhPgot ICAgICBBIG5vbi1leGNsdXNpdmUgbG93IGxldmVsIGJhY2t1cCBpcyBvbmUgdGhhdCBhbGxvd3Mg b3RoZXIKKyAgICAgQSBsb3cgbGV2ZWwgYmFja3VwIGFsbG93cyBvdGhlcgogICAgICBjb25jdXJy ZW50IGJhY2t1cHMgdG8gYmUgcnVubmluZyAoYm90aCB0aG9zZSBzdGFydGVkIHVzaW5nCiAgICAg IHRoZSBzYW1lIGJhY2t1cCBBUEkgYW5kIHRob3NlIHN0YXJ0ZWQgdXNpbmcKICAgICAgPHhyZWYg bGlua2VuZD0iYXBwLXBnYmFzZWJhY2t1cCIvPikuCkBAIC04NjQsNyArODU2LDcgQEAgdGVzdCAh IC1mIC9tbnQvc2VydmVyL2FyY2hpdmVkaXIvMDAwMDAwMDEwMDAwMDBBOTAwMDAwMDY1ICZhbXA7 JmFtcDsgY3AgcGdfd2FsLzAKICAgICAgcmlnaHRzIHRvIHJ1biBwZ19zdGFydF9iYWNrdXAgKHN1 cGVydXNlciwgb3IgYSB1c2VyIHdobyBoYXMgYmVlbiBncmFudGVkCiAgICAgIEVYRUNVVEUgb24g dGhlIGZ1bmN0aW9uKSBhbmQgaXNzdWUgdGhlIGNvbW1hbmQ6CiA8cHJvZ3JhbWxpc3Rpbmc+Ci1T RUxFQ1QgcGdfc3RhcnRfYmFja3VwKCdsYWJlbCcsIGZhbHNlLCBmYWxzZSk7CitTRUxFQ1QgcGdf c3RhcnRfYmFja3VwKCdsYWJlbCcsIGZhbHNlKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgIHdo ZXJlIDxsaXRlcmFsPmxhYmVsPC9saXRlcmFsPiBpcyBhbnkgc3RyaW5nIHlvdSB3YW50IHRvIHVz ZSB0byB1bmlxdWVseQogICAgICBpZGVudGlmeSB0aGlzIGJhY2t1cCBvcGVyYXRpb24uIFRoZSBj b25uZWN0aW9uCkBAIC04ODUsMTAgKzg3Nyw2IEBAIFNFTEVDVCBwZ19zdGFydF9iYWNrdXAoJ2xh YmVsJywgZmFsc2UsIGZhbHNlKTsKICAgICAgaXNzdWUgYW4gaW1tZWRpYXRlIGNoZWNrcG9pbnQg dXNpbmcgYXMgbXVjaCBJL08gYXMgYXZhaWxhYmxlLgogICAgIDwvcGFyYT4KIAotICAgIDxwYXJh PgotICAgICBUaGUgdGhpcmQgcGFyYW1ldGVyIGJlaW5nIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFs PiB0ZWxscwotICAgICA8ZnVuY3Rpb24+cGdfc3RhcnRfYmFja3VwPC9mdW5jdGlvbj4gdG8gaW5p dGlhdGUgYSBub24tZXhjbHVzaXZlIGJhc2UgYmFja3VwLgotICAgIDwvcGFyYT4KICAgIDwvbGlz dGl0ZW0+CiAgICA8bGlzdGl0ZW0+CiAgICAgPHBhcmE+CkBAIC05MDYsNyArODk0LDcgQEAgU0VM RUNUIHBnX3N0YXJ0X2JhY2t1cCgnbGFiZWwnLCBmYWxzZSwgZmFsc2UpOwogICAgIDxwYXJhPgog ICAgICBJbiB0aGUgc2FtZSBjb25uZWN0aW9uIGFzIGJlZm9yZSwgaXNzdWUgdGhlIGNvbW1hbmQ6 CiA8cHJvZ3JhbWxpc3Rpbmc+Ci1TRUxFQ1QgKiBGUk9NIHBnX3N0b3BfYmFja3VwKGZhbHNlLCB0 cnVlKTsKK1NFTEVDVCAqIEZST00gcGdfc3RvcF9iYWNrdXAodHJ1ZSk7CiA8L3Byb2dyYW1saXN0 aW5nPgogICAgICBUaGlzIHRlcm1pbmF0ZXMgYmFja3VwIG1vZGUuIE9uIGEgcHJpbWFyeSwgaXQg YWxzbyBwZXJmb3JtcyBhbiBhdXRvbWF0aWMKICAgICAgc3dpdGNoIHRvIHRoZSBuZXh0IFdBTCBz ZWdtZW50LiAgT24gYSBzdGFuZGJ5LCBpdCBpcyBub3QgcG9zc2libGUgdG8KQEAgLTk2NSwxNDIg Kzk1Myw2IEBAIFNFTEVDVCAqIEZST00gcGdfc3RvcF9iYWNrdXAoZmFsc2UsIHRydWUpOwogICAg PC9saXN0aXRlbT4KICAgPC9vcmRlcmVkbGlzdD4KICAgICA8L3BhcmE+Ci0gICA8L3NlY3QzPgot ICAgPHNlY3QzIGlkPSJiYWNrdXAtbG93bGV2ZWwtYmFzZS1iYWNrdXAtZXhjbHVzaXZlIj4KLSAg ICA8dGl0bGU+TWFraW5nIGFuIEV4Y2x1c2l2ZSBMb3ctTGV2ZWwgQmFja3VwPC90aXRsZT4KLQot ICAgIDxub3RlPgotICAgICA8cGFyYT4KLSAgICAgIFRoZSBleGNsdXNpdmUgYmFja3VwIG1ldGhv ZCBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgYmUgYXZvaWRlZC4KLSAgICAgIFByaW9yIHRvIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gOS42LCB0aGlzIHdhcyB0aGUgb25s eQotICAgICAgbG93LWxldmVsIG1ldGhvZCBhdmFpbGFibGUsIGJ1dCBpdCBpcyBub3cgcmVjb21t ZW5kZWQgdGhhdCBhbGwgdXNlcnMKLSAgICAgIHVwZ3JhZGUgdGhlaXIgc2NyaXB0cyB0byB1c2Ug bm9uLWV4Y2x1c2l2ZSBiYWNrdXBzLgotICAgICA8L3BhcmE+Ci0gICAgPC9ub3RlPgotCi0gICAg PHBhcmE+Ci0gICAgIFRoZSBwcm9jZXNzIGZvciBhbiBleGNsdXNpdmUgYmFja3VwIGlzIG1vc3Rs eSB0aGUgc2FtZSBhcyBmb3IgYQotICAgICBub24tZXhjbHVzaXZlIG9uZSwgYnV0IGl0IGRpZmZl cnMgaW4gYSBmZXcga2V5IHN0ZXBzLiBUaGlzIHR5cGUgb2YKLSAgICAgYmFja3VwIGNhbiBvbmx5 IGJlIHRha2VuIG9uIGEgcHJpbWFyeSBhbmQgZG9lcyBub3QgYWxsb3cgY29uY3VycmVudAotICAg ICBiYWNrdXBzLiAgTW9yZW92ZXIsIGJlY2F1c2UgaXQgY3JlYXRlcyBhIGJhY2t1cCBsYWJlbCBm aWxlLCBhcwotICAgICBkZXNjcmliZWQgYmVsb3csIGl0IGNhbiBibG9jayBhdXRvbWF0aWMgcmVz dGFydCBvZiB0aGUgcHJpbWFyeSBzZXJ2ZXIKLSAgICAgYWZ0ZXIgYSBjcmFzaC4gIE9uIHRoZSBv dGhlciBoYW5kLCB0aGUgZXJyb25lb3VzIHJlbW92YWwgb2YgdGhpcwotICAgICBmaWxlIGZyb20g YSBiYWNrdXAgb3Igc3RhbmRieSBpcyBhIGNvbW1vbiBtaXN0YWtlLCB3aGljaCBjYW4gcmVzdWx0 Ci0gICAgIGluIHNlcmlvdXMgZGF0YSBjb3JydXB0aW9uLiAgSWYgaXQgaXMgbmVjZXNzYXJ5IHRv IHVzZSB0aGlzIG1ldGhvZCwKLSAgICAgdGhlIGZvbGxvd2luZyBzdGVwcyBtYXkgYmUgdXNlZC4K LSAgICA8L3BhcmE+Ci0gICAgPHBhcmE+Ci0gIDxvcmRlcmVkbGlzdD4KLSAgIDxsaXN0aXRlbT4K LSAgICA8cGFyYT4KLSAgICAgRW5zdXJlIHRoYXQgV0FMIGFyY2hpdmluZyBpcyBlbmFibGVkIGFu ZCB3b3JraW5nLgotICAgIDwvcGFyYT4KLSAgIDwvbGlzdGl0ZW0+Ci0gICA8bGlzdGl0ZW0+Ci0g ICAgPHBhcmE+Ci0gICAgIENvbm5lY3QgdG8gdGhlIHNlcnZlciAoaXQgZG9lcyBub3QgbWF0dGVy IHdoaWNoIGRhdGFiYXNlKSBhcyBhIHVzZXIgd2l0aAotICAgICByaWdodHMgdG8gcnVuIHBnX3N0 YXJ0X2JhY2t1cCAoc3VwZXJ1c2VyLCBvciBhIHVzZXIgd2hvIGhhcyBiZWVuIGdyYW50ZWQKLSAg ICAgRVhFQ1VURSBvbiB0aGUgZnVuY3Rpb24pIGFuZCBpc3N1ZSB0aGUgY29tbWFuZDoKLTxwcm9n cmFtbGlzdGluZz4KLVNFTEVDVCBwZ19zdGFydF9iYWNrdXAoJ2xhYmVsJyk7Ci08L3Byb2dyYW1s aXN0aW5nPgotICAgICB3aGVyZSA8bGl0ZXJhbD5sYWJlbDwvbGl0ZXJhbD4gaXMgYW55IHN0cmlu ZyB5b3Ugd2FudCB0byB1c2UgdG8gdW5pcXVlbHkKLSAgICAgaWRlbnRpZnkgdGhpcyBiYWNrdXAg b3BlcmF0aW9uLgotICAgICA8ZnVuY3Rpb24+cGdfc3RhcnRfYmFja3VwPC9mdW5jdGlvbj4gY3Jl YXRlcyBhIDxmaXJzdHRlcm0+YmFja3VwIGxhYmVsPC9maXJzdHRlcm0+IGZpbGUsCi0gICAgIGNh bGxlZCA8ZmlsZW5hbWU+YmFja3VwX2xhYmVsPC9maWxlbmFtZT4sIGluIHRoZSBjbHVzdGVyIGRp cmVjdG9yeSB3aXRoCi0gICAgIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgYmFja3VwLCBpbmNsdWRp bmcgdGhlIHN0YXJ0IHRpbWUgYW5kIGxhYmVsIHN0cmluZy4KLSAgICAgVGhlIGZ1bmN0aW9uIGFs c28gY3JlYXRlcyBhIDxmaXJzdHRlcm0+dGFibGVzcGFjZSBtYXA8L2ZpcnN0dGVybT4gZmlsZSwK LSAgICAgY2FsbGVkIDxmaWxlbmFtZT50YWJsZXNwYWNlX21hcDwvZmlsZW5hbWU+LCBpbiB0aGUg Y2x1c3RlciBkaXJlY3Rvcnkgd2l0aAotICAgICBpbmZvcm1hdGlvbiBhYm91dCB0YWJsZXNwYWNl IHN5bWJvbGljIGxpbmtzIGluIDxmaWxlbmFtZT5wZ190YmxzcGMvPC9maWxlbmFtZT4gaWYKLSAg ICAgb25lIG9yIG1vcmUgc3VjaCBsaW5rIGlzIHByZXNlbnQuICBCb3RoIGZpbGVzIGFyZSBjcml0 aWNhbCB0byB0aGUKLSAgICAgaW50ZWdyaXR5IG9mIHRoZSBiYWNrdXAsIHNob3VsZCB5b3UgbmVl ZCB0byByZXN0b3JlIGZyb20gaXQuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgIEJ5 IGRlZmF1bHQsIDxmdW5jdGlvbj5wZ19zdGFydF9iYWNrdXA8L2Z1bmN0aW9uPiBjYW4gdGFrZSBh IGxvbmcgdGltZSB0byBmaW5pc2guCi0gICAgIFRoaXMgaXMgYmVjYXVzZSBpdCBwZXJmb3JtcyBh IGNoZWNrcG9pbnQsIGFuZCB0aGUgSS9PCi0gICAgIHJlcXVpcmVkIGZvciB0aGUgY2hlY2twb2lu dCB3aWxsIGJlIHNwcmVhZCBvdXQgb3ZlciBhIHNpZ25pZmljYW50Ci0gICAgIHBlcmlvZCBvZiB0 aW1lLCBieSBkZWZhdWx0IGhhbGYgeW91ciBpbnRlci1jaGVja3BvaW50IGludGVydmFsCi0gICAg IChzZWUgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyCi0gICAgIDx4cmVmIGxpbmtlbmQ9Imd1 Yy1jaGVja3BvaW50LWNvbXBsZXRpb24tdGFyZ2V0Ii8+KS4gIFRoaXMgaXMKLSAgICAgdXN1YWxs eSB3aGF0IHlvdSB3YW50LCBiZWNhdXNlIGl0IG1pbmltaXplcyB0aGUgaW1wYWN0IG9uIHF1ZXJ5 Ci0gICAgIHByb2Nlc3NpbmcuICBJZiB5b3Ugd2FudCB0byBzdGFydCB0aGUgYmFja3VwIGFzIHNv b24gYXMKLSAgICAgcG9zc2libGUsIHVzZToKLTxwcm9ncmFtbGlzdGluZz4KLVNFTEVDVCBwZ19z dGFydF9iYWNrdXAoJ2xhYmVsJywgdHJ1ZSk7Ci08L3Byb2dyYW1saXN0aW5nPgotICAgICBUaGlz IGZvcmNlcyB0aGUgY2hlY2twb2ludCB0byBiZSBkb25lIGFzIHF1aWNrbHkgYXMgcG9zc2libGUu Ci0gICAgPC9wYXJhPgotICAgPC9saXN0aXRlbT4KLSAgIDxsaXN0aXRlbT4KLSAgICA8cGFyYT4K LSAgICAgUGVyZm9ybSB0aGUgYmFja3VwLCB1c2luZyBhbnkgY29udmVuaWVudCBmaWxlLXN5c3Rl bS1iYWNrdXAgdG9vbAotICAgICBzdWNoIGFzIDxhcHBsaWNhdGlvbj50YXI8L2FwcGxpY2F0aW9u PiBvciA8YXBwbGljYXRpb24+Y3BpbzwvYXBwbGljYXRpb24+IChub3QKLSAgICAgPGFwcGxpY2F0 aW9uPnBnX2R1bXA8L2FwcGxpY2F0aW9uPiBvcgotICAgICA8YXBwbGljYXRpb24+cGdfZHVtcGFs bDwvYXBwbGljYXRpb24+KS4gIEl0IGlzIG5laXRoZXIKLSAgICAgbmVjZXNzYXJ5IG5vciBkZXNp cmFibGUgdG8gc3RvcCBub3JtYWwgb3BlcmF0aW9uIG9mIHRoZSBkYXRhYmFzZQotICAgICB3aGls ZSB5b3UgZG8gdGhpcy4gU2VlCi0gICAgIDx4cmVmIGxpbmtlbmQ9ImJhY2t1cC1sb3dsZXZlbC1i YXNlLWJhY2t1cC1kYXRhIi8+IGZvciB0aGluZ3MgdG8KLSAgICAgY29uc2lkZXIgZHVyaW5nIHRo aXMgYmFja3VwLgotICAgIDwvcGFyYT4KLSAgICA8cGFyYT4KLSAgICAgQXMgbm90ZWQgYWJvdmUs IGlmIHRoZSBzZXJ2ZXIgY3Jhc2hlcyBkdXJpbmcgdGhlIGJhY2t1cCBpdCBtYXkgbm90IGJlCi0g ICAgIHBvc3NpYmxlIHRvIHJlc3RhcnQgdW50aWwgdGhlIDxmaWxlbmFtZT5iYWNrdXBfbGFiZWw8 L2ZpbGVuYW1lPiBmaWxlIGhhcwotICAgICBiZWVuIG1hbnVhbGx5IGRlbGV0ZWQgZnJvbSB0aGUg PGVudmFyPlBHREFUQTwvZW52YXI+IGRpcmVjdG9yeS4gIE5vdGUKLSAgICAgdGhhdCBpdCBpcyB2 ZXJ5IGltcG9ydGFudCB0byBuZXZlciByZW1vdmUgdGhlCi0gICAgIDxmaWxlbmFtZT5iYWNrdXBf bGFiZWw8L2ZpbGVuYW1lPiBmaWxlIHdoZW4gcmVzdG9yaW5nIGEgYmFja3VwLCBiZWNhdXNlCi0g ICAgIHRoaXMgd2lsbCByZXN1bHQgaW4gY29ycnVwdGlvbi4gIENvbmZ1c2lvbiBhYm91dCB3aGVu IGl0IGlzIGFwcHJvcHJpYXRlCi0gICAgIHRvIHJlbW92ZSB0aGlzIGZpbGUgaXMgYSBjb21tb24g Y2F1c2Ugb2YgZGF0YSBjb3JydXB0aW9uIHdoZW4gdXNpbmcgdGhpcwotICAgICBtZXRob2Q7IGJl IHZlcnkgY2VydGFpbiB0aGF0IHlvdSByZW1vdmUgdGhlIGZpbGUgb25seSBvbiBhbiBleGlzdGlu ZwotICAgICBwcmltYXJ5IGFuZCBuZXZlciB3aGVuIGJ1aWxkaW5nIGEgc3RhbmRieSBvciByZXN0 b3JpbmcgYSBiYWNrdXAsIGV2ZW4gaWYKLSAgICAgeW91IGFyZSBidWlsZGluZyBhIHN0YW5kYnkg dGhhdCB3aWxsIHN1YnNlcXVlbnRseSBiZSBwcm9tb3RlZCB0byBhIG5ldwotICAgICBwcmltYXJ5 LgotICAgIDwvcGFyYT4KLSAgIDwvbGlzdGl0ZW0+Ci0gICA8bGlzdGl0ZW0+Ci0gICAgPHBhcmE+ Ci0gICAgIEFnYWluIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIGFzIGEgdXNlciB3aXRoIHJpZ2h0 cyB0byBydW4KLSAgICAgcGdfc3RvcF9iYWNrdXAgKHN1cGVydXNlciwgb3IgYSB1c2VyIHdobyBo YXMgYmVlbiBncmFudGVkIEVYRUNVVEUgb24KLSAgICAgdGhlIGZ1bmN0aW9uKSwgYW5kIGlzc3Vl IHRoZSBjb21tYW5kOgotPHByb2dyYW1saXN0aW5nPgotU0VMRUNUIHBnX3N0b3BfYmFja3VwKCk7 Ci08L3Byb2dyYW1saXN0aW5nPgotICAgICBUaGlzIGZ1bmN0aW9uIHRlcm1pbmF0ZXMgYmFja3Vw IG1vZGUgYW5kCi0gICAgIHBlcmZvcm1zIGFuIGF1dG9tYXRpYyBzd2l0Y2ggdG8gdGhlIG5leHQg V0FMIHNlZ21lbnQuIFRoZSByZWFzb24gZm9yIHRoZQotICAgICBzd2l0Y2ggaXMgdG8gYXJyYW5n ZSBmb3IgdGhlIGxhc3QgV0FMIHNlZ21lbnQgd3JpdHRlbiBkdXJpbmcgdGhlIGJhY2t1cAotICAg ICBpbnRlcnZhbCB0byBiZSByZWFkeSB0byBhcmNoaXZlLgotICAgIDwvcGFyYT4KLSAgIDwvbGlz dGl0ZW0+Ci0gICA8bGlzdGl0ZW0+Ci0gICAgPHBhcmE+Ci0gICAgIE9uY2UgdGhlIFdBTCBzZWdt ZW50IGZpbGVzIGFjdGl2ZSBkdXJpbmcgdGhlIGJhY2t1cCBhcmUgYXJjaGl2ZWQsIHlvdSBhcmUK LSAgICAgZG9uZS4gIFRoZSBmaWxlIGlkZW50aWZpZWQgYnkgPGZ1bmN0aW9uPnBnX3N0b3BfYmFj a3VwPC9mdW5jdGlvbj4ncyByZXN1bHQgaXMKLSAgICAgdGhlIGxhc3Qgc2VnbWVudCB0aGF0IGlz IHJlcXVpcmVkIHRvIGZvcm0gYSBjb21wbGV0ZSBzZXQgb2YgYmFja3VwIGZpbGVzLgotICAgICBJ ZiA8dmFybmFtZT5hcmNoaXZlX21vZGU8L3Zhcm5hbWU+IGlzIGVuYWJsZWQsCi0gICAgIDxmdW5j dGlvbj5wZ19zdG9wX2JhY2t1cDwvZnVuY3Rpb24+IGRvZXMgbm90IHJldHVybiB1bnRpbCB0aGUg bGFzdCBzZWdtZW50IGhhcwotICAgICBiZWVuIGFyY2hpdmVkLgotICAgICBBcmNoaXZpbmcgb2Yg dGhlc2UgZmlsZXMgaGFwcGVucyBhdXRvbWF0aWNhbGx5IHNpbmNlIHlvdSBoYXZlCi0gICAgIGFs cmVhZHkgY29uZmlndXJlZCA8dmFybmFtZT5hcmNoaXZlX2NvbW1hbmQ8L3Zhcm5hbWU+LiBJbiBt b3N0IGNhc2VzIHRoaXMKLSAgICAgaGFwcGVucyBxdWlja2x5LCBidXQgeW91IGFyZSBhZHZpc2Vk IHRvIG1vbml0b3IgeW91ciBhcmNoaXZlCi0gICAgIHN5c3RlbSB0byBlbnN1cmUgdGhlcmUgYXJl IG5vIGRlbGF5cy4KLSAgICAgSWYgdGhlIGFyY2hpdmUgcHJvY2VzcyBoYXMgZmFsbGVuIGJlaGlu ZAotICAgICBiZWNhdXNlIG9mIGZhaWx1cmVzIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmQsIGl0IHdp bGwga2VlcCByZXRyeWluZwotICAgICB1bnRpbCB0aGUgYXJjaGl2ZSBzdWNjZWVkcyBhbmQgdGhl IGJhY2t1cCBpcyBjb21wbGV0ZS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgV2hl biB1c2luZyBleGNsdXNpdmUgYmFja3VwIG1vZGUsIGl0IGlzIGFic29sdXRlbHkgaW1wZXJhdGl2 ZSB0byBlbnN1cmUKLSAgICAgdGhhdCA8ZnVuY3Rpb24+cGdfc3RvcF9iYWNrdXA8L2Z1bmN0aW9u PiBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5IGF0IHRoZQotICAgICBlbmQgb2YgdGhlIGJhY2t1cC4g IEV2ZW4gaWYgdGhlIGJhY2t1cCBpdHNlbGYgZmFpbHMsIGZvciBleGFtcGxlIGR1ZSB0bwotICAg ICBsYWNrIG9mIGRpc2sgc3BhY2UsIGZhaWx1cmUgdG8gY2FsbCA8ZnVuY3Rpb24+cGdfc3RvcF9i YWNrdXA8L2Z1bmN0aW9uPgotICAgICB3aWxsIGxlYXZlIHRoZSBzZXJ2ZXIgaW4gYmFja3VwIG1v ZGUgaW5kZWZpbml0ZWx5LCBjYXVzaW5nIGZ1dHVyZSBiYWNrdXBzCi0gICAgIHRvIGZhaWwgYW5k IGluY3JlYXNpbmcgdGhlIHJpc2sgb2YgYSByZXN0YXJ0IGZhaWx1cmUgZHVyaW5nIHRoZSB0aW1l IHRoYXQKLSAgICAgPGZpbGVuYW1lPmJhY2t1cF9sYWJlbDwvZmlsZW5hbWU+IGV4aXN0cy4KLSAg ICA8L3BhcmE+Ci0gICA8L2xpc3RpdGVtPgotICA8L29yZGVyZWRsaXN0PgotICAgIDwvcGFyYT4K LSAgIDwvc2VjdDM+CiAgICA8c2VjdDMgaWQ9ImJhY2t1cC1sb3dsZXZlbC1iYXNlLWJhY2t1cC1k YXRhIj4KICAgIDx0aXRsZT5CYWNraW5nIFVwIHRoZSBEYXRhIERpcmVjdG9yeTwvdGl0bGU+CiAg ICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvZnVuYy5zZ21sCmluZGV4IDBhNzI1YTY3MTEuLjI4ZGI2NmJiNzcgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApAQCAtMjU1 ODAsOCArMjU1ODAsNyBAQCBMT0c6ICBHcmFuZCB0b3RhbDogMTY1MTkyMCBieXRlcyBpbiAyMDEg YmxvY2tzOyA2MjIzNjAgZnJlZSAoODggY2h1bmtzKTsgMTAyOTU2MAogICAgICAgICA8ZnVuY3Rp b24+cGdfc3RhcnRfYmFja3VwPC9mdW5jdGlvbj4gKAogICAgICAgICAgIDxwYXJhbWV0ZXI+bGFi ZWw8L3BhcmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4KICAgICAgICAgICA8b3B0aW9uYWw+LCA8 cGFyYW1ldGVyPmZhc3Q8L3BhcmFtZXRlcj4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4KLSAgICAgICAg ICA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPmV4Y2x1c2l2ZTwvcGFyYW1ldGVyPiA8dHlwZT5ib29s ZWFuPC90eXBlPgotICAgICAgICAgIDwvb3B0aW9uYWw+PC9vcHRpb25hbD4gKQorICAgICAgICAg IDwvb3B0aW9uYWw+ICkKICAgICAgICAgPHJldHVybnZhbHVlPnBnX2xzbjwvcmV0dXJudmFsdWU+ CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgpAQCAtMjU1OTMsMjAgKzI1NTkyLDYgQEAg TE9HOiAgR3JhbmQgdG90YWw6IDE2NTE5MjAgYnl0ZXMgaW4gMjAxIGJsb2NrczsgNjIyMzYwIGZy ZWUgKDg4IGNodW5rcyk7IDEwMjk1NjAKICAgICAgICAgaXQgc3BlY2lmaWVzIGV4ZWN1dGluZyA8 ZnVuY3Rpb24+cGdfc3RhcnRfYmFja3VwPC9mdW5jdGlvbj4gYXMgcXVpY2tseQogICAgICAgICBh cyBwb3NzaWJsZS4gIFRoaXMgZm9yY2VzIGFuIGltbWVkaWF0ZSBjaGVja3BvaW50IHdoaWNoIHdp bGwgY2F1c2UgYQogICAgICAgICBzcGlrZSBpbiBJL08gb3BlcmF0aW9ucywgc2xvd2luZyBhbnkg Y29uY3VycmVudGx5IGV4ZWN1dGluZyBxdWVyaWVzLgotICAgICAgICBUaGUgb3B0aW9uYWwgdGhp cmQgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gYW4gZXhjbHVzaXZlCi0g ICAgICAgIG9yIG5vbi1leGNsdXNpdmUgYmFja3VwIChkZWZhdWx0IGlzIGV4Y2x1c2l2ZSkuCi0g ICAgICAgPC9wYXJhPgotICAgICAgIDxwYXJhPgotICAgICAgICBXaGVuIHVzZWQgaW4gZXhjbHVz aXZlIG1vZGUsIHRoaXMgZnVuY3Rpb24gd3JpdGVzIGEgYmFja3VwIGxhYmVsIGZpbGUKLSAgICAg ICAgKDxmaWxlbmFtZT5iYWNrdXBfbGFiZWw8L2ZpbGVuYW1lPikgYW5kLCBpZiB0aGVyZSBhcmUg YW55IGxpbmtzIGluCi0gICAgICAgIHRoZSA8ZmlsZW5hbWU+cGdfdGJsc3BjLzwvZmlsZW5hbWU+ IGRpcmVjdG9yeSwgYSB0YWJsZXNwYWNlIG1hcCBmaWxlCi0gICAgICAgICg8ZmlsZW5hbWU+dGFi bGVzcGFjZV9tYXA8L2ZpbGVuYW1lPikgaW50byB0aGUgZGF0YWJhc2UgY2x1c3RlcidzIGRhdGEK LSAgICAgICAgZGlyZWN0b3J5LCB0aGVuIHBlcmZvcm1zIGEgY2hlY2twb2ludCwgYW5kIHRoZW4g cmV0dXJucyB0aGUgYmFja3VwJ3MKLSAgICAgICAgc3RhcnRpbmcgd3JpdGUtYWhlYWQgbG9nIGxv Y2F0aW9uLiAgKFRoZSB1c2VyIGNhbiBpZ25vcmUgdGhpcwotICAgICAgICByZXN1bHQgdmFsdWUs IGJ1dCBpdCBpcyBwcm92aWRlZCBpbiBjYXNlIGl0IGlzIHVzZWZ1bC4pICBXaGVuIHVzZWQgaW4K LSAgICAgICAgbm9uLWV4Y2x1c2l2ZSBtb2RlLCB0aGUgY29udGVudHMgb2YgdGhlc2UgZmlsZXMg YXJlIGluc3RlYWQgcmV0dXJuZWQKLSAgICAgICAgYnkgdGhlIDxmdW5jdGlvbj5wZ19zdG9wX2Jh Y2t1cDwvZnVuY3Rpb24+IGZ1bmN0aW9uLCBhbmQgc2hvdWxkIGJlCi0gICAgICAgIGNvcGllZCB0 byB0aGUgYmFja3VwIGFyZWEgYnkgdGhlIHVzZXIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxw YXJhPgogICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHJlc3RyaWN0ZWQgdG8gc3VwZXJ1c2VycyBi eSBkZWZhdWx0LCBidXQgb3RoZXIgdXNlcnMKQEAgLTI1NjIwLDcgKzI1NjA1LDYgQEAgTE9HOiAg R3JhbmQgdG90YWw6IDE2NTE5MjAgYnl0ZXMgaW4gMjAxIGJsb2NrczsgNjIyMzYwIGZyZWUgKDg4 IGNodW5rcyk7IDEwMjk1NjAKICAgICAgICAgIDxwcmltYXJ5PnBnX3N0b3BfYmFja3VwPC9wcmlt YXJ5PgogICAgICAgICA8L2luZGV4dGVybT4KICAgICAgICAgPGZ1bmN0aW9uPnBnX3N0b3BfYmFj a3VwPC9mdW5jdGlvbj4gKAotICAgICAgICAgIDxwYXJhbWV0ZXI+ZXhjbHVzaXZlPC9wYXJhbWV0 ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+CiAgICAgICAgICAgPG9wdGlvbmFsPiwgPHBhcmFtZXRl cj53YWl0X2Zvcl9hcmNoaXZlPC9wYXJhbWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+CiAgICAg ICAgICAgPC9vcHRpb25hbD4gKQogICAgICAgICA8cmV0dXJudmFsdWU+c2V0b2YgcmVjb3JkPC9y ZXR1cm52YWx1ZT4KQEAgLTI1NjI5LDEzICsyNTYxMyw4IEBAIExPRzogIEdyYW5kIHRvdGFsOiAx NjUxOTIwIGJ5dGVzIGluIDIwMSBibG9ja3M7IDYyMjM2MCBmcmVlICg4OCBjaHVua3MpOyAxMDI5 NTYwCiAgICAgICAgIDxwYXJhbWV0ZXI+c3BjbWFwZmlsZTwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0 PC90eXBlPiApCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgotICAgICAgICBGaW5pc2hl cyBwZXJmb3JtaW5nIGFuIGV4Y2x1c2l2ZSBvciBub24tZXhjbHVzaXZlIG9uLWxpbmUgYmFja3Vw LgotICAgICAgICBUaGUgPHBhcmFtZXRlcj5leGNsdXNpdmU8L3BhcmFtZXRlcj4gcGFyYW1ldGVy IG11c3QgbWF0Y2ggdGhlCi0gICAgICAgIHByZXZpb3VzIDxmdW5jdGlvbj5wZ19zdGFydF9iYWNr dXA8L2Z1bmN0aW9uPiBjYWxsLgotICAgICAgICBJbiBhbiBleGNsdXNpdmUgYmFja3VwLCA8ZnVu Y3Rpb24+cGdfc3RvcF9iYWNrdXA8L2Z1bmN0aW9uPiByZW1vdmVzCi0gICAgICAgIHRoZSBiYWNr dXAgbGFiZWwgZmlsZSBhbmQsIGlmIGl0IGV4aXN0cywgdGhlIHRhYmxlc3BhY2UgbWFwIGZpbGUK LSAgICAgICAgY3JlYXRlZCBieSA8ZnVuY3Rpb24+cGdfc3RhcnRfYmFja3VwPC9mdW5jdGlvbj4u ICBJbiBhIG5vbi1leGNsdXNpdmUKLSAgICAgICAgYmFja3VwLCB0aGUgZGVzaXJlZCBjb250ZW50 cyBvZiB0aGVzZSBmaWxlcyBhcmUgcmV0dXJuZWQgYXMgcGFydCBvZgorICAgICAgICBGaW5pc2hl cyBwZXJmb3JtaW5nIGFuIG9uLWxpbmUgYmFja3VwLiAgVGhlIGRlc2lyZWQgY29udGVudHMgb2Yg dGhlCisgICAgICAgIGJhY2t1cCBsYWJlbCBmaWxlIGFuZCB0aGUgdGFibGVzcGFjZSBtYXAgZmls ZSBhcmUgcmV0dXJuZWQgYXMgcGFydCBvZgogICAgICAgICB0aGUgcmVzdWx0IG9mIHRoZSBmdW5j dGlvbiwgYW5kIHNob3VsZCBiZSB3cml0dGVuIHRvIGZpbGVzIGluIHRoZQogICAgICAgICBiYWNr dXAgYXJlYSAobm90IGluIHRoZSBkYXRhIGRpcmVjdG9yeSkuCiAgICAgICAgPC9wYXJhPgpAQCAt MjU2NjgsOCArMjU2NDcsNyBAQCBMT0c6ICBHcmFuZCB0b3RhbDogMTY1MTkyMCBieXRlcyBpbiAy MDEgYmxvY2tzOyA2MjIzNjAgZnJlZSAoODggY2h1bmtzKTsgMTAyOTU2MAogICAgICAgICBUaGUg cmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBpcyBhIHNpbmdsZSByZWNvcmQuCiAgICAgICAgIFRoZSA8 cGFyYW1ldGVyPmxzbjwvcGFyYW1ldGVyPiBjb2x1bW4gaG9sZHMgdGhlIGJhY2t1cCdzIGVuZGlu ZwogICAgICAgICB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gKHdoaWNoIGFnYWluIGNhbiBiZSBp Z25vcmVkKS4gIFRoZSBzZWNvbmQgYW5kCi0gICAgICAgIHRoaXJkIGNvbHVtbnMgYXJlIDxsaXRl cmFsPk5VTEw8L2xpdGVyYWw+IHdoZW4gZW5kaW5nIGFuIGV4Y2x1c2l2ZQotICAgICAgICBiYWNr dXA7IGFmdGVyIGEgbm9uLWV4Y2x1c2l2ZSBiYWNrdXAgdGhleSBob2xkIHRoZSBkZXNpcmVkIGNv bnRlbnRzIG9mCisgICAgICAgIHRoaXJkIGNvbHVtbnMgaG9sZCB0aGUgZGVzaXJlZCBjb250ZW50 cyBvZgogICAgICAgICB0aGUgbGFiZWwgYW5kIHRhYmxlc3BhY2UgbWFwIGZpbGVzLgogICAgICAg IDwvcGFyYT4KICAgICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBk ODk0YWYzMTBhLi5kNGNhMzEzZDhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC00 ODIsMjkgKzQ4Miw2IEBAIHR5cGVkZWYgdW5pb24gV0FMSW5zZXJ0TG9ja1BhZGRlZAogCWNoYXIJ CXBhZFtQR19DQUNIRV9MSU5FX1NJWkVdOwogfSBXQUxJbnNlcnRMb2NrUGFkZGVkOwogCi0vKgot ICogU3RhdGUgb2YgYW4gZXhjbHVzaXZlIGJhY2t1cCwgbmVjZXNzYXJ5IHRvIGNvbnRyb2wgY29u Y3VycmVudCBhY3Rpdml0aWVzCi0gKiBhY3Jvc3Mgc2Vzc2lvbnMgd2hlbiB3b3JraW5nIG9uIGV4 Y2x1c2l2ZSBiYWNrdXBzLgotICoKLSAqIEVYQ0xVU0lWRV9CQUNLVVBfTk9ORSBtZWFucyB0aGF0 IHRoZXJlIGlzIG5vIGV4Y2x1c2l2ZSBiYWNrdXAgYWN0dWFsbHkKLSAqIHJ1bm5pbmcsIHRvIGJl IG1vcmUgcHJlY2lzZSBwZ19zdGFydF9iYWNrdXAoKSBpcyBub3QgYmVpbmcgZXhlY3V0ZWQgZm9y Ci0gKiBhbiBleGNsdXNpdmUgYmFja3VwIGFuZCB0aGVyZSBpcyBubyBleGNsdXNpdmUgYmFja3Vw IGluIHByb2dyZXNzLgotICogRVhDTFVTSVZFX0JBQ0tVUF9TVEFSVElORyBtZWFucyB0aGF0IHBn X3N0YXJ0X2JhY2t1cCgpIGlzIHN0YXJ0aW5nIGFuCi0gKiBleGNsdXNpdmUgYmFja3VwLgotICog RVhDTFVTSVZFX0JBQ0tVUF9JTl9QUk9HUkVTUyBtZWFucyB0aGF0IHBnX3N0YXJ0X2JhY2t1cCgp IGhhcyBmaW5pc2hlZAotICogcnVubmluZyBhbmQgYW4gZXhjbHVzaXZlIGJhY2t1cCBpcyBpbiBw cm9ncmVzcy4gcGdfc3RvcF9iYWNrdXAoKSBpcwotICogbmVlZGVkIHRvIGZpbmlzaCBpdC4KLSAq IEVYQ0xVU0lWRV9CQUNLVVBfU1RPUFBJTkcgbWVhbnMgdGhhdCBwZ19zdG9wX2JhY2t1cCgpIGlz IHN0b3BwaW5nIGFuCi0gKiBleGNsdXNpdmUgYmFja3VwLgotICovCi10eXBlZGVmIGVudW0gRXhj bHVzaXZlQmFja3VwU3RhdGUKLXsKLQlFWENMVVNJVkVfQkFDS1VQX05PTkUgPSAwLAotCUVYQ0xV U0lWRV9CQUNLVVBfU1RBUlRJTkcsCi0JRVhDTFVTSVZFX0JBQ0tVUF9JTl9QUk9HUkVTUywKLQlF WENMVVNJVkVfQkFDS1VQX1NUT1BQSU5HCi19IEV4Y2x1c2l2ZUJhY2t1cFN0YXRlOwotCiAvKgog ICogU2Vzc2lvbiBzdGF0dXMgb2YgcnVubmluZyBiYWNrdXAsIHVzZWQgZm9yIHNhbml0eSBjaGVj a3MgaW4gU1FMLWNhbGxhYmxlCiAgKiBmdW5jdGlvbnMgdG8gc3RhcnQgYW5kIHN0b3AgYmFja3Vw cy4KQEAgLTU1MywxNSArNTMwLDEyIEBAIHR5cGVkZWYgc3RydWN0IFhMb2dDdGxJbnNlcnQKIAli b29sCQlmdWxsUGFnZVdyaXRlczsKIAogCS8qCi0JICogZXhjbHVzaXZlQmFja3VwU3RhdGUgaW5k aWNhdGVzIHRoZSBzdGF0ZSBvZiBhbiBleGNsdXNpdmUgYmFja3VwIChzZWUKLQkgKiBjb21tZW50 cyBvZiBFeGNsdXNpdmVCYWNrdXBTdGF0ZSBmb3IgbW9yZSBkZXRhaWxzKS4gbm9uRXhjbHVzaXZl QmFja3VwcwotCSAqIGlzIGEgY291bnRlciBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2Ygc3RyZWFt aW5nIGJhc2UgYmFja3VwcyBjdXJyZW50bHkKLQkgKiBpbiBwcm9ncmVzcy4gZm9yY2VQYWdlV3Jp dGVzIGlzIHNldCB0byB0cnVlIHdoZW4gZWl0aGVyIG9mIHRoZXNlIGlzCi0JICogbm9uLXplcm8u IGxhc3RCYWNrdXBTdGFydCBpcyB0aGUgbGF0ZXN0IGNoZWNrcG9pbnQgcmVkbyBsb2NhdGlvbiB1 c2VkCi0JICogYXMgYSBzdGFydGluZyBwb2ludCBmb3IgYW4gb25saW5lIGJhY2t1cC4KKwkgKiBy dW5uaW5nQmFja3VwcyBpcyBhIGNvdW50ZXIgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIGJhY2t1 cHMgY3VycmVudGx5IGluCisJICogcHJvZ3Jlc3MuIGZvcmNlUGFnZVdyaXRlcyBpcyBzZXQgdG8g dHJ1ZSB3aGVuIGVpdGhlciBvZiB0aGVzZSBpcworCSAqIG5vbi16ZXJvLiBsYXN0QmFja3VwU3Rh cnQgaXMgdGhlIGxhdGVzdCBjaGVja3BvaW50IHJlZG8gbG9jYXRpb24gdXNlZCBhcworCSAqIGEg c3RhcnRpbmcgcG9pbnQgZm9yIGFuIG9ubGluZSBiYWNrdXAuCiAJICovCi0JRXhjbHVzaXZlQmFj a3VwU3RhdGUgZXhjbHVzaXZlQmFja3VwU3RhdGU7Ci0JaW50CQkJbm9uRXhjbHVzaXZlQmFja3Vw czsKKwlpbnQJCQlydW5uaW5nQmFja3VwczsKIAlYTG9nUmVjUHRyCWxhc3RCYWNrdXBTdGFydDsK IAogCS8qCkBAIC05NTgsNyArOTMyLDYgQEAgc3RhdGljIHZvaWQgeGxvZ19vdXRyZWMoU3RyaW5n SW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIHN0YXRpYyB2b2lkIHhsb2dfYmxv Y2tfaW5mbyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogc3RhdGlj IHZvaWQgeGxvZ19vdXRkZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCk7CiBzdGF0aWMgdm9pZCBwZ19zdGFydF9iYWNrdXBfY2FsbGJhY2soaW50IGNvZGUsIERhdHVt IGFyZyk7Ci1zdGF0aWMgdm9pZCBwZ19zdG9wX2JhY2t1cF9jYWxsYmFjayhpbnQgY29kZSwgRGF0 dW0gYXJnKTsKIHN0YXRpYyBib29sIHJlYWRfYmFja3VwX2xhYmVsKFhMb2dSZWNQdHIgKmNoZWNr UG9pbnRMb2MsCiAJCQkJCQkJICBUaW1lTGluZUlEICpiYWNrdXBMYWJlbFRMSSwKIAkJCQkJCQkg IGJvb2wgKmJhY2t1cEVuZFJlcXVpcmVkLCBib29sICpiYWNrdXBGcm9tU3RhbmRieSk7CkBAIC05 ODAxLDcgKzk3NzQsNyBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZsYWdzKQogCQkgKiBFbnN1 cmUgbWluUmVjb3ZlcnlQb2ludCBpcyBwYXN0IHRoZSBjaGVja3BvaW50IHJlY29yZC4gIE5vcm1h bGx5LAogCQkgKiB0aGlzIHdpbGwgaGF2ZSBoYXBwZW5lZCBhbHJlYWR5IHdoaWxlIHdyaXRpbmcg b3V0IGRpcnR5IGJ1ZmZlcnMsCiAJCSAqIGJ1dCBub3QgbmVjZXNzYXJpbHkgLSBlLmcuIGJlY2F1 c2Ugbm8gYnVmZmVycyB3ZXJlIGRpcnRpZWQuICBXZSBkbwotCQkgKiB0aGlzIGJlY2F1c2UgYSBu b24tZXhjbHVzaXZlIGJhc2UgYmFja3VwIHVzZXMgbWluUmVjb3ZlcnlQb2ludCB0bworCQkgKiB0 aGlzIGJlY2F1c2UgYSBiYWNrdXAgcGVyZm9ybWVkIGluIHJlY292ZXJ5IHVzZXMgbWluUmVjb3Zl cnlQb2ludCB0bwogCQkgKiBkZXRlcm1pbmUgd2hpY2ggV0FMIGZpbGVzIG11c3QgYmUgaW5jbHVk ZWQgaW4gdGhlIGJhY2t1cCwgYW5kIHRoZQogCQkgKiBmaWxlIChvciBmaWxlcykgY29udGFpbmlu ZyB0aGUgY2hlY2twb2ludCByZWNvcmQgbXVzdCBiZSBpbmNsdWRlZCwKIAkJICogYXQgYSBtaW5p bXVtLiBOb3RlIHRoYXQgZm9yIGFuIG9yZGluYXJ5IHJlc3RhcnQgb2YgcmVjb3ZlcnkgdGhlcmUn cwpAQCAtMTA5NjgsMzIgKzEwOTQxLDE0IEBAIGlzc3VlX3hsb2dfZnN5bmMoaW50IGZkLCBYTG9n U2VnTm8gc2Vnbm8sIFRpbWVMaW5lSUQgdGxpKQogfQogCiAvKgotICogZG9fcGdfc3RhcnRfYmFj a3VwCi0gKgotICogVXRpbGl0eSBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGFuIG9u bGluZSBiYWNrdXAuIEl0IGNyZWF0ZXMgdGhlCi0gKiBuZWNlc3Nhcnkgc3RhcnRpbmcgY2hlY2tw b2ludCBhbmQgY29uc3RydWN0cyB0aGUgYmFja3VwIGxhYmVsIGZpbGUuCisgKiBkb19wZ19zdGFy dF9iYWNrdXAgaXMgdGhlIHdvcmtob3JzZSBvZiB0aGUgdXNlci12aXNpYmxlIHBnX3N0YXJ0X2Jh Y2t1cCgpCisgKiBmdW5jdGlvbi4gSXQgY3JlYXRlcyB0aGUgbmVjZXNzYXJ5IHN0YXJ0aW5nIGNo ZWNrcG9pbnQgYW5kIGNvbnN0cnVjdHMgdGhlCisgKiBiYWNrdXAgbGFiZWwgYW5kIHRhYmxlc3Bh Y2UgbWFwLgogICoKLSAqIFRoZXJlIGFyZSB0d28ga2luZCBvZiBiYWNrdXBzOiBleGNsdXNpdmUg YW5kIG5vbi1leGNsdXNpdmUuIEFuIGV4Y2x1c2l2ZQotICogYmFja3VwIGlzIHN0YXJ0ZWQgd2l0 aCBwZ19zdGFydF9iYWNrdXAoKSwgYW5kIHRoZXJlIGNhbiBiZSBvbmx5IG9uZSBhY3RpdmUKLSAq IGF0IGEgdGltZS4gVGhlIGJhY2t1cCBhbmQgdGFibGVzcGFjZSBtYXAgZmlsZXMgb2YgYW4gZXhj bHVzaXZlIGJhY2t1cCBhcmUKLSAqIHdyaXR0ZW4gdG8gJFBHREFUQS9iYWNrdXBfbGFiZWwgYW5k ICRQR0RBVEEvdGFibGVzcGFjZV9tYXAsIGFuZCB0aGV5IGFyZQotICogcmVtb3ZlZCBieSBwZ19z dG9wX2JhY2t1cCgpLgotICoKLSAqIEEgbm9uLWV4Y2x1c2l2ZSBiYWNrdXAgaXMgdXNlZCBmb3Ig dGhlIHN0cmVhbWluZyBiYXNlIGJhY2t1cHMgKHNlZQotICogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vYmFzZWJhY2t1cC5jKS4gVGhlIGRpZmZlcmVuY2UgdG8gZXhjbHVzaXZlIGJhY2t1cHMKLSAq IGlzIHRoYXQgdGhlIGJhY2t1cCBsYWJlbCBhbmQgdGFibGVzcGFjZSBtYXAgZmlsZXMgYXJlIG5v dCB3cml0dGVuIHRvIGRpc2suCi0gKiBJbnN0ZWFkLCB0aGVpciB3b3VsZC1iZSBjb250ZW50cyBh cmUgcmV0dXJuZWQgaW4gKmxhYmVsZmlsZSBhbmQgKnRibHNwY21hcGZpbGUsCi0gKiBhbmQgdGhl IGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5jbHVkaW5nIHRoZW0gaW4gdGhlIGJhY2t1cCBh cmNoaXZlIGFzCi0gKiAnYmFja3VwX2xhYmVsJyBhbmQgJ3RhYmxlc3BhY2VfbWFwJy4gVGhlcmUg Y2FuIGJlIG1hbnkgbm9uLWV4Y2x1c2l2ZSBiYWNrdXBzCi0gKiBhY3RpdmUgYXQgdGhlIHNhbWUg dGltZSwgYW5kIHRoZXkgZG9uJ3QgY29uZmxpY3Qgd2l0aCBhbiBleGNsdXNpdmUgYmFja3VwCi0g KiBlaXRoZXIuCi0gKgotICogbGFiZWxmaWxlIGFuZCB0YmxzcGNtYXBmaWxlIG11c3QgYmUgcGFz c2VkIGFzIE5VTEwgd2hlbiBzdGFydGluZyBhbgotICogZXhjbHVzaXZlIGJhY2t1cCwgYW5kIGFz IGluaXRpYWxseS1lbXB0eSBTdHJpbmdJbmZvcyBmb3IgYSBub24tZXhjbHVzaXZlCi0gKiBiYWNr dXAuCi0gKgotICogSWYgInRhYmxlc3BhY2VzIiBpc24ndCBOVUxMLCBpdCByZWNlaXZlcyBhIGxp c3Qgb2YgdGFibGVzcGFjZWluZm8gc3RydWN0cwotICogZGVzY3JpYmluZyB0aGUgY2x1c3Rlcidz IHRhYmxlc3BhY2VzLgorICogVGhlIGJhY2t1cCBsYWJlbCBhbmQgdGFibGVzcGFjZSBtYXAgY29u dGVudHMgYXJlIHJldHVybmVkIGluICpsYWJlbGZpbGUgYW5kCisgKiAqdGJsc3BjbWFwZmlsZSwg YW5kIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGluY2x1ZGluZyB0aGVtIGluIHRoZQor ICogYmFja3VwIGFyY2hpdmUgYXMgJ2JhY2t1cF9sYWJlbCcgYW5kICd0YWJsZXNwYWNlX21hcCcu IFRoZXJlIGNhbiBiZSBtYW55CisgKiBiYWNrdXBzIGFjdGl2ZSBhdCB0aGUgc2FtZSB0aW1lLgog ICoKICAqIHRibHNwY21hcGZpbGUgaXMgcmVxdWlyZWQgbWFpbmx5IGZvciB0YXIgZm9ybWF0IGlu IHdpbmRvd3MgYXMgbmF0aXZlIHdpbmRvd3MKICAqIHV0aWxpdGllcyBhcmUgbm90IGFibGUgdG8g Y3JlYXRlIHN5bWxpbmtzIHdoaWxlIGV4dHJhY3RpbmcgZmlsZXMgZnJvbSB0YXIuCkBAIC0xMTAw Miw3ICsxMDk1Nyw3IEBAIGlzc3VlX3hsb2dfZnN5bmMoaW50IGZkLCBYTG9nU2VnTm8gc2Vnbm8s IFRpbWVMaW5lSUQgdGxpKQogICogUmV0dXJucyB0aGUgbWluaW11bSBXQUwgbG9jYXRpb24gdGhh dCBtdXN0IGJlIHByZXNlbnQgdG8gcmVzdG9yZSBmcm9tIHRoaXMKICAqIGJhY2t1cCwgYW5kIHRo ZSBjb3JyZXNwb25kaW5nIHRpbWVsaW5lIElEIGluICpzdGFydHRsaV9wLgogICoKLSAqIEV2ZXJ5 IHN1Y2Nlc3NmdWxseSBzdGFydGVkIG5vbi1leGNsdXNpdmUgYmFja3VwIG11c3QgYmUgc3RvcHBl ZCBieSBjYWxsaW5nCisgKiBFdmVyeSBzdWNjZXNzZnVsbHkgc3RhcnRlZCBiYWNrdXAgbXVzdCBi ZSBzdG9wcGVkIGJ5IGNhbGxpbmcKICAqIGRvX3BnX3N0b3BfYmFja3VwKCkgb3IgZG9fcGdfYWJv cnRfYmFja3VwKCkuCiAgKgogICogSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxs ZXIgb2YgdGhpcyBmdW5jdGlvbiB0byB2ZXJpZnkgdGhlCkBAIC0xMTAxMyw3ICsxMDk2OCw2IEBA IGRvX3BnX3N0YXJ0X2JhY2t1cChjb25zdCBjaGFyICpiYWNrdXBpZHN0ciwgYm9vbCBmYXN0LCBU aW1lTGluZUlEICpzdGFydHRsaV9wLAogCQkJCSAgIFN0cmluZ0luZm8gbGFiZWxmaWxlLCBMaXN0 ICoqdGFibGVzcGFjZXMsCiAJCQkJICAgU3RyaW5nSW5mbyB0YmxzcGNtYXBmaWxlKQogewotCWJv b2wJCWV4Y2x1c2l2ZSA9IChsYWJlbGZpbGUgPT0gTlVMTCk7CiAJYm9vbAkJYmFja3VwX3N0YXJ0 ZWRfaW5fcmVjb3ZlcnkgPSBmYWxzZTsKIAlYTG9nUmVjUHRyCWNoZWNrcG9pbnRsb2M7CiAJWExv Z1JlY1B0cglzdGFydHBvaW50OwpAQCAtMTEwMjIsMjAgKzEwOTc2LDkgQEAgZG9fcGdfc3RhcnRf YmFja3VwKGNvbnN0IGNoYXIgKmJhY2t1cGlkc3RyLCBib29sIGZhc3QsIFRpbWVMaW5lSUQgKnN0 YXJ0dGxpX3AsCiAJY2hhcgkJc3RyZmJ1ZlsxMjhdOwogCWNoYXIJCXhsb2dmaWxlbmFtZVtNQVhG TkFNRUxFTl07CiAJWExvZ1NlZ05vCV9sb2dTZWdObzsKLQlzdHJ1Y3Qgc3RhdCBzdGF0X2J1ZjsK LQlGSUxFCSAgICpmcDsKIAogCWJhY2t1cF9zdGFydGVkX2luX3JlY292ZXJ5ID0gUmVjb3ZlcnlJ blByb2dyZXNzKCk7CiAKLQkvKgotCSAqIEN1cnJlbnRseSBvbmx5IG5vbi1leGNsdXNpdmUgYmFj a3VwIGNhbiBiZSB0YWtlbiBkdXJpbmcgcmVjb3ZlcnkuCi0JICovCi0JaWYgKGJhY2t1cF9zdGFy dGVkX2luX3JlY292ZXJ5ICYmIGV4Y2x1c2l2ZSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkgZXJy bXNnKCJyZWNvdmVyeSBpcyBpbiBwcm9ncmVzcyIpLAotCQkJCSBlcnJoaW50KCJXQUwgY29udHJv bCBmdW5jdGlvbnMgY2Fubm90IGJlIGV4ZWN1dGVkIGR1cmluZyByZWNvdmVyeS4iKSkpOwotCiAJ LyoKIAkgKiBEdXJpbmcgcmVjb3ZlcnksIHdlIGRvbid0IG5lZWQgdG8gY2hlY2sgV0FMIGxldmVs LiBCZWNhdXNlLCBpZiBXQUwKIAkgKiBsZXZlbCBpcyBub3Qgc3VmZmljaWVudCwgaXQncyBpbXBv c3NpYmxlIHRvIGdldCBoZXJlIGR1cmluZyByZWNvdmVyeS4KQEAgLTExMDc0LDMwICsxMTAxNywx MiBAQCBkb19wZ19zdGFydF9iYWNrdXAoY29uc3QgY2hhciAqYmFja3VwaWRzdHIsIGJvb2wgZmFz dCwgVGltZUxpbmVJRCAqc3RhcnR0bGlfcCwKIAkgKiBYTG9nSW5zZXJ0UmVjb3JkKCkuCiAJICov CiAJV0FMSW5zZXJ0TG9ja0FjcXVpcmVFeGNsdXNpdmUoKTsKLQlpZiAoZXhjbHVzaXZlKQotCXsK LQkJLyoKLQkJICogQXQgZmlyc3QsIG1hcmsgdGhhdCB3ZSdyZSBub3cgc3RhcnRpbmcgYW4gZXhj bHVzaXZlIGJhY2t1cCwgdG8KLQkJICogZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIG90aGVyIHNl c3Npb25zIGN1cnJlbnRseSBydW5uaW5nCi0JCSAqIHBnX3N0YXJ0X2JhY2t1cCgpIG9yIHBnX3N0 b3BfYmFja3VwKCkuCi0JCSAqLwotCQlpZiAoWExvZ0N0bC0+SW5zZXJ0LmV4Y2x1c2l2ZUJhY2t1 cFN0YXRlICE9IEVYQ0xVU0lWRV9CQUNLVVBfTk9ORSkKLQkJewotCQkJV0FMSW5zZXJ0TG9ja1Jl bGVhc2UoKTsKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJCQkgZXJybXNnKCJhIGJhY2t1cCBpcyBh bHJlYWR5IGluIHByb2dyZXNzIiksCi0JCQkJCSBlcnJoaW50KCJSdW4gcGdfc3RvcF9iYWNrdXAo KSBhbmQgdHJ5IGFnYWluLiIpKSk7Ci0JCX0KLQkJWExvZ0N0bC0+SW5zZXJ0LmV4Y2x1c2l2ZUJh Y2t1cFN0YXRlID0gRVhDTFVTSVZFX0JBQ0tVUF9TVEFSVElORzsKLQl9Ci0JZWxzZQotCQlYTG9n Q3RsLT5JbnNlcnQubm9uRXhjbHVzaXZlQmFja3VwcysrOworCVhMb2dDdGwtPkluc2VydC5ydW5u aW5nQmFja3VwcysrOwogCVhMb2dDdGwtPkluc2VydC5mb3JjZVBhZ2VXcml0ZXMgPSB0cnVlOwog CVdBTEluc2VydExvY2tSZWxlYXNlKCk7CiAKIAkvKiBFbnN1cmUgd2UgcmVsZWFzZSBmb3JjZVBh Z2VXcml0ZXMgaWYgZmFpbCBiZWxvdyAqLwotCVBHX0VOU1VSRV9FUlJPUl9DTEVBTlVQKHBnX3N0 YXJ0X2JhY2t1cF9jYWxsYmFjaywgKERhdHVtKSBCb29sR2V0RGF0dW0oZXhjbHVzaXZlKSk7CisJ UEdfRU5TVVJFX0VSUk9SX0NMRUFOVVAocGdfc3RhcnRfYmFja3VwX2NhbGxiYWNrLCAoRGF0dW0p IDApOwogCXsKIAkJYm9vbAkJZ290VW5pcXVlU3RhcnRwb2ludCA9IGZhbHNlOwogCQlESVIJCSAg ICp0YmxzcGNkaXI7CkBAIC0xMTMzMiwxMjIgKzExMjU3LDE5IEBAIGRvX3BnX3N0YXJ0X2JhY2t1 cChjb25zdCBjaGFyICpiYWNrdXBpZHN0ciwgYm9vbCBmYXN0LCBUaW1lTGluZUlEICpzdGFydHRs aV9wLAogCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhzdGFydHBvaW50KSwgeGxvZ2ZpbGVuYW1lKTsK IAkJYXBwZW5kU3RyaW5nSW5mbyhsYWJlbGZpbGUsICJDSEVDS1BPSU5UIExPQ0FUSU9OOiAlWC8l WFxuIiwKIAkJCQkJCSBMU05fRk9STUFUX0FSR1MoY2hlY2twb2ludGxvYykpOwotCQlhcHBlbmRT dHJpbmdJbmZvKGxhYmVsZmlsZSwgIkJBQ0tVUCBNRVRIT0Q6ICVzXG4iLAotCQkJCQkJIGV4Y2x1 c2l2ZSA/ICJwZ19zdGFydF9iYWNrdXAiIDogInN0cmVhbWVkIik7CisJCWFwcGVuZFN0cmluZ0lu Zm8obGFiZWxmaWxlLCAiQkFDS1VQIE1FVEhPRDogc3RyZWFtZWRcbiIpOwogCQlhcHBlbmRTdHJp bmdJbmZvKGxhYmVsZmlsZSwgIkJBQ0tVUCBGUk9NOiAlc1xuIiwKIAkJCQkJCSBiYWNrdXBfc3Rh cnRlZF9pbl9yZWNvdmVyeSA/ICJzdGFuZGJ5IiA6ICJwcmltYXJ5Iik7CiAJCWFwcGVuZFN0cmlu Z0luZm8obGFiZWxmaWxlLCAiU1RBUlQgVElNRTogJXNcbiIsIHN0cmZidWYpOwogCQlhcHBlbmRT dHJpbmdJbmZvKGxhYmVsZmlsZSwgIkxBQkVMOiAlc1xuIiwgYmFja3VwaWRzdHIpOwogCQlhcHBl bmRTdHJpbmdJbmZvKGxhYmVsZmlsZSwgIlNUQVJUIFRJTUVMSU5FOiAldVxuIiwgc3RhcnR0bGkp OwotCi0JCS8qCi0JCSAqIE9rYXksIHdyaXRlIHRoZSBmaWxlLCBvciByZXR1cm4gaXRzIGNvbnRl bnRzIHRvIGNhbGxlci4KLQkJICovCi0JCWlmIChleGNsdXNpdmUpCi0JCXsKLQkJCS8qCi0JCQkg KiBDaGVjayBmb3IgZXhpc3RpbmcgYmFja3VwIGxhYmVsIC0tLSBpbXBsaWVzIGEgYmFja3VwIGlz IGFscmVhZHkKLQkJCSAqIHJ1bm5pbmcuICAoWFhYIGdpdmVuIHRoYXQgd2UgY2hlY2tlZCBleGNs dXNpdmVCYWNrdXBTdGF0ZQotCQkJICogYWJvdmUsIG1heWJlIGl0IHdvdWxkIGJlIE9LIHRvIGp1 c3QgdW5saW5rIGFueSBzdWNoIGxhYmVsCi0JCQkgKiBmaWxlPykKLQkJCSAqLwotCQkJaWYgKHN0 YXQoQkFDS1VQX0xBQkVMX0ZJTEUsICZzdGF0X2J1ZikgIT0gMCkKLQkJCXsKLQkJCQlpZiAoZXJy bm8gIT0gRU5PRU5UKQotCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCShlcnJjb2RlX2Zvcl9m aWxlX2FjY2VzcygpLAotCQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wi OiAlbSIsCi0JCQkJCQkJCQlCQUNLVVBfTEFCRUxfRklMRSkpKTsKLQkJCX0KLQkJCWVsc2UKLQkJ CQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BS RVJFUVVJU0lURV9TVEFURSksCi0JCQkJCQkgZXJybXNnKCJhIGJhY2t1cCBpcyBhbHJlYWR5IGlu IHByb2dyZXNzIiksCi0JCQkJCQkgZXJyaGludCgiSWYgeW91J3JlIHN1cmUgdGhlcmUgaXMgbm8g YmFja3VwIGluIHByb2dyZXNzLCByZW1vdmUgZmlsZSBcIiVzXCIgYW5kIHRyeSBhZ2Fpbi4iLAot CQkJCQkJCQkgQkFDS1VQX0xBQkVMX0ZJTEUpKSk7Ci0KLQkJCWZwID0gQWxsb2NhdGVGaWxlKEJB Q0tVUF9MQUJFTF9GSUxFLCAidyIpOwotCi0JCQlpZiAoIWZwKQotCQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKLQkJCQkJCSBlcnJtc2coImNvdWxk IG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVtIiwKLQkJCQkJCQkJQkFDS1VQX0xBQkVMX0ZJTEUp KSk7Ci0JCQlpZiAoZndyaXRlKGxhYmVsZmlsZS0+ZGF0YSwgbGFiZWxmaWxlLT5sZW4sIDEsIGZw KSAhPSAxIHx8Ci0JCQkJZmZsdXNoKGZwKSAhPSAwIHx8Ci0JCQkJcGdfZnN5bmMoZmlsZW5vKGZw KSkgIT0gMCB8fAotCQkJCWZlcnJvcihmcCkgfHwKLQkJCQlGcmVlRmlsZShmcCkpCi0JCQkJZXJl cG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJCQkJIGVy cm1zZygiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsCi0JCQkJCQkJCUJBQ0tVUF9M QUJFTF9GSUxFKSkpOwotCQkJLyogQWxsb2NhdGVkIGxvY2FsbHkgZm9yIGV4Y2x1c2l2ZSBiYWNr dXBzLCBzbyBmcmVlIHNlcGFyYXRlbHkgKi8KLQkJCXBmcmVlKGxhYmVsZmlsZS0+ZGF0YSk7Ci0J CQlwZnJlZShsYWJlbGZpbGUpOwotCi0JCQkvKiBXcml0ZSBiYWNrdXAgdGFibGVzcGFjZV9tYXAg ZmlsZS4gKi8KLQkJCWlmICh0YmxzcGNtYXBmaWxlLT5sZW4gPiAwKQotCQkJewotCQkJCWlmIChz dGF0KFRBQkxFU1BBQ0VfTUFQLCAmc3RhdF9idWYpICE9IDApCi0JCQkJewotCQkJCQlpZiAoZXJy bm8gIT0gRU5PRU5UKQotCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJKGVycmNvZGVfZm9y X2ZpbGVfYWNjZXNzKCksCi0JCQkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzdGF0IGZpbGUgXCIl c1wiOiAlbSIsCi0JCQkJCQkJCQkJVEFCTEVTUEFDRV9NQVApKSk7Ci0JCQkJfQotCQkJCWVsc2UK LQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkJCQkgZXJybXNnKCJhIGJhY2t1cCBpcyBhbHJl YWR5IGluIHByb2dyZXNzIiksCi0JCQkJCQkJIGVycmhpbnQoIklmIHlvdSdyZSBzdXJlIHRoZXJl IGlzIG5vIGJhY2t1cCBpbiBwcm9ncmVzcywgcmVtb3ZlIGZpbGUgXCIlc1wiIGFuZCB0cnkgYWdh aW4uIiwKLQkJCQkJCQkJCSBUQUJMRVNQQUNFX01BUCkpKTsKLQotCQkJCWZwID0gQWxsb2NhdGVG aWxlKFRBQkxFU1BBQ0VfTUFQLCAidyIpOwotCi0JCQkJaWYgKCFmcCkKLQkJCQkJZXJlcG9ydChF UlJPUiwKLQkJCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKLQkJCQkJCQkgZXJybXNn KCJjb3VsZCBub3QgY3JlYXRlIGZpbGUgXCIlc1wiOiAlbSIsCi0JCQkJCQkJCQlUQUJMRVNQQUNF X01BUCkpKTsKLQkJCQlpZiAoZndyaXRlKHRibHNwY21hcGZpbGUtPmRhdGEsIHRibHNwY21hcGZp bGUtPmxlbiwgMSwgZnApICE9IDEgfHwKLQkJCQkJZmZsdXNoKGZwKSAhPSAwIHx8Ci0JCQkJCXBn X2ZzeW5jKGZpbGVubyhmcCkpICE9IDAgfHwKLQkJCQkJZmVycm9yKGZwKSB8fAotCQkJCQlGcmVl RmlsZShmcCkpCi0JCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVf YWNjZXNzKCksCi0JCQkJCQkJIGVycm1zZygiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAl bSIsCi0JCQkJCQkJCQlUQUJMRVNQQUNFX01BUCkpKTsKLQkJCX0KLQotCQkJLyogQWxsb2NhdGVk IGxvY2FsbHkgZm9yIGV4Y2x1c2l2ZSBiYWNrdXBzLCBzbyBmcmVlIHNlcGFyYXRlbHkgKi8KLQkJ CXBmcmVlKHRibHNwY21hcGZpbGUtPmRhdGEpOwotCQkJcGZyZWUodGJsc3BjbWFwZmlsZSk7Ci0J CX0KIAl9Ci0JUEdfRU5EX0VOU1VSRV9FUlJPUl9DTEVBTlVQKHBnX3N0YXJ0X2JhY2t1cF9jYWxs YmFjaywgKERhdHVtKSBCb29sR2V0RGF0dW0oZXhjbHVzaXZlKSk7CisJUEdfRU5EX0VOU1VSRV9F UlJPUl9DTEVBTlVQKHBnX3N0YXJ0X2JhY2t1cF9jYWxsYmFjaywgKERhdHVtKSAwKTsKIAogCS8q Ci0JICogTWFyayB0aGF0IHN0YXJ0IHBoYXNlIGhhcyBjb3JyZWN0bHkgZmluaXNoZWQgZm9yIGFu IGV4Y2x1c2l2ZSBiYWNrdXAuCi0JICogU2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgdXBkYXRlZCBh cyB3ZWxsIHRvIHJlZmxlY3QgdGhhdCBzdGF0ZS4KLQkgKgotCSAqIE5vdGUgdGhhdCBDSEVDS19G T1JfSU5URVJSVVBUUygpIG11c3Qgbm90IG9jY3VyIHdoaWxlIHVwZGF0aW5nIGJhY2t1cAotCSAq IGNvdW50ZXJzIGFuZCBzZXNzaW9uLWxldmVsIGxvY2suIE90aGVyd2lzZSB0aGV5IGNhbiBiZSB1 cGRhdGVkCi0JICogaW5jb25zaXN0ZW50bHksIGFuZCB3aGljaCBtaWdodCBjYXVzZSBkb19wZ19h Ym9ydF9iYWNrdXAoKSB0byBmYWlsLgorCSAqIE1hcmsgdGhhdCB0aGUgc3RhcnQgcGhhc2UgaGFz IGNvcnJlY3RseSBmaW5pc2hlZCBmb3IgdGhlIGJhY2t1cC4KIAkgKi8KLQlpZiAoZXhjbHVzaXZl KQotCXsKLQkJV0FMSW5zZXJ0TG9ja0FjcXVpcmVFeGNsdXNpdmUoKTsKLQkJWExvZ0N0bC0+SW5z ZXJ0LmV4Y2x1c2l2ZUJhY2t1cFN0YXRlID0gRVhDTFVTSVZFX0JBQ0tVUF9JTl9QUk9HUkVTUzsK LQotCQkvKiBTZXQgc2Vzc2lvbi1sZXZlbCBsb2NrICovCi0JCXNlc3Npb25CYWNrdXBTdGF0ZSA9 IFNFU1NJT05fQkFDS1VQX0VYQ0xVU0lWRTsKLQkJV0FMSW5zZXJ0TG9ja1JlbGVhc2UoKTsKLQl9 Ci0JZWxzZQotCQlzZXNzaW9uQmFja3VwU3RhdGUgPSBTRVNTSU9OX0JBQ0tVUF9OT05fRVhDTFVT SVZFOworCXNlc3Npb25CYWNrdXBTdGF0ZSA9IFNFU1NJT05fQkFDS1VQX1JVTk5JTkc7CiAKIAkv KgogCSAqIFdlJ3JlIGRvbmUuICBBcyBhIGNvbnZlbmllbmNlLCByZXR1cm4gdGhlIHN0YXJ0aW5n IFdBTCBsb2NhdGlvbi4KQEAgLTExNDYxLDQzICsxMTI4MywxNSBAQCBkb19wZ19zdGFydF9iYWNr dXAoY29uc3QgY2hhciAqYmFja3VwaWRzdHIsIGJvb2wgZmFzdCwgVGltZUxpbmVJRCAqc3RhcnR0 bGlfcCwKIHN0YXRpYyB2b2lkCiBwZ19zdGFydF9iYWNrdXBfY2FsbGJhY2soaW50IGNvZGUsIERh dHVtIGFyZykKIHsKLQlib29sCQlleGNsdXNpdmUgPSBEYXR1bUdldEJvb2woYXJnKTsKLQogCS8q IFVwZGF0ZSBiYWNrdXAgY291bnRlcnMgYW5kIGZvcmNlUGFnZVdyaXRlcyBvbiBmYWlsdXJlICov CiAJV0FMSW5zZXJ0TG9ja0FjcXVpcmVFeGNsdXNpdmUoKTsKLQlpZiAoZXhjbHVzaXZlKQotCXsK LQkJQXNzZXJ0KFhMb2dDdGwtPkluc2VydC5leGNsdXNpdmVCYWNrdXBTdGF0ZSA9PSBFWENMVVNJ VkVfQkFDS1VQX1NUQVJUSU5HKTsKLQkJWExvZ0N0bC0+SW5zZXJ0LmV4Y2x1c2l2ZUJhY2t1cFN0 YXRlID0gRVhDTFVTSVZFX0JBQ0tVUF9OT05FOwotCX0KLQllbHNlCi0JewotCQlBc3NlcnQoWExv Z0N0bC0+SW5zZXJ0Lm5vbkV4Y2x1c2l2ZUJhY2t1cHMgPiAwKTsKLQkJWExvZ0N0bC0+SW5zZXJ0 Lm5vbkV4Y2x1c2l2ZUJhY2t1cHMtLTsKLQl9CiAKLQlpZiAoWExvZ0N0bC0+SW5zZXJ0LmV4Y2x1 c2l2ZUJhY2t1cFN0YXRlID09IEVYQ0xVU0lWRV9CQUNLVVBfTk9ORSAmJgotCQlYTG9nQ3RsLT5J bnNlcnQubm9uRXhjbHVzaXZlQmFja3VwcyA9PSAwKQotCXsKLQkJWExvZ0N0bC0+SW5zZXJ0LmZv cmNlUGFnZVdyaXRlcyA9IGZhbHNlOwotCX0KLQlXQUxJbnNlcnRMb2NrUmVsZWFzZSgpOwotfQot Ci0vKgotICogRXJyb3IgY2xlYW51cCBjYWxsYmFjayBmb3IgcGdfc3RvcF9iYWNrdXAKLSAqLwot c3RhdGljIHZvaWQKLXBnX3N0b3BfYmFja3VwX2NhbGxiYWNrKGludCBjb2RlLCBEYXR1bSBhcmcp Ci17Ci0JYm9vbAkJZXhjbHVzaXZlID0gRGF0dW1HZXRCb29sKGFyZyk7CisJQXNzZXJ0KFhMb2dD dGwtPkluc2VydC5ydW5uaW5nQmFja3VwcyA+IDApOworCVhMb2dDdGwtPkluc2VydC5ydW5uaW5n QmFja3Vwcy0tOwogCi0JLyogVXBkYXRlIGJhY2t1cCBzdGF0dXMgb24gZmFpbHVyZSAqLwotCVdB TEluc2VydExvY2tBY3F1aXJlRXhjbHVzaXZlKCk7Ci0JaWYgKGV4Y2x1c2l2ZSkKKwlpZiAoWExv Z0N0bC0+SW5zZXJ0LnJ1bm5pbmdCYWNrdXBzID09IDApCiAJewotCQlBc3NlcnQoWExvZ0N0bC0+ SW5zZXJ0LmV4Y2x1c2l2ZUJhY2t1cFN0YXRlID09IEVYQ0xVU0lWRV9CQUNLVVBfU1RPUFBJTkcp OwotCQlYTG9nQ3RsLT5JbnNlcnQuZXhjbHVzaXZlQmFja3VwU3RhdGUgPSBFWENMVVNJVkVfQkFD S1VQX0lOX1BST0dSRVNTOworCQlYTG9nQ3RsLT5JbnNlcnQuZm9yY2VQYWdlV3JpdGVzID0gZmFs c2U7CiAJfQogCVdBTEluc2VydExvY2tSZWxlYXNlKCk7CiB9CkBAIC0xMTUxNyw5ICsxMTMxMSw2 IEBAIGdldF9iYWNrdXBfc3RhdHVzKHZvaWQpCiAgKiBVdGlsaXR5IGZ1bmN0aW9uIGNhbGxlZCBh dCB0aGUgZW5kIG9mIGFuIG9ubGluZSBiYWNrdXAuIEl0IGNsZWFucyB1cCB0aGUKICAqIGJhY2t1 cCBzdGF0ZSBhbmQgY2FuIG9wdGlvbmFsbHkgd2FpdCBmb3IgV0FMIHNlZ21lbnRzIHRvIGJlIGFy Y2hpdmVkLgogICoKLSAqIElmIGxhYmVsZmlsZSBpcyBOVUxMLCB0aGlzIHN0b3BzIGFuIGV4Y2x1 c2l2ZSBiYWNrdXAuIE90aGVyd2lzZSB0aGlzIHN0b3BzCi0gKiB0aGUgbm9uLWV4Y2x1c2l2ZSBi YWNrdXAgc3BlY2lmaWVkIGJ5ICdsYWJlbGZpbGUnLgotICoKICAqIFJldHVybnMgdGhlIGxhc3Qg V0FMIGxvY2F0aW9uIHRoYXQgbXVzdCBiZSBwcmVzZW50IHRvIHJlc3RvcmUgZnJvbSB0aGlzCiAg KiBiYWNrdXAsIGFuZCB0aGUgY29ycmVzcG9uZGluZyB0aW1lbGluZSBJRCBpbiAqc3RvcHRsaV9w LgogICoKQEAgLTExNTI5LDcgKzExMzIwLDYgQEAgZ2V0X2JhY2t1cF9zdGF0dXModm9pZCkKIFhM b2dSZWNQdHIKIGRvX3BnX3N0b3BfYmFja3VwKGNoYXIgKmxhYmVsZmlsZSwgYm9vbCB3YWl0Zm9y YXJjaGl2ZSwgVGltZUxpbmVJRCAqc3RvcHRsaV9wKQogewotCWJvb2wJCWV4Y2x1c2l2ZSA9IChs YWJlbGZpbGUgPT0gTlVMTCk7CiAJYm9vbAkJYmFja3VwX3N0YXJ0ZWRfaW5fcmVjb3ZlcnkgPSBm YWxzZTsKIAlYTG9nUmVjUHRyCXN0YXJ0cG9pbnQ7CiAJWExvZ1JlY1B0cglzdG9wcG9pbnQ7CkBA IC0xMTU0Myw3ICsxMTMzMyw2IEBAIGRvX3BnX3N0b3BfYmFja3VwKGNoYXIgKmxhYmVsZmlsZSwg Ym9vbCB3YWl0Zm9yYXJjaGl2ZSwgVGltZUxpbmVJRCAqc3RvcHRsaV9wKQogCWNoYXIJCWhpc3Rm aWxlbmFtZVtNQVhGTkFNRUxFTl07CiAJY2hhcgkJYmFja3VwZnJvbVsyMF07CiAJWExvZ1NlZ05v CV9sb2dTZWdObzsKLQlGSUxFCSAgICpsZnA7CiAJRklMRQkgICAqZnA7CiAJY2hhcgkJY2g7CiAJ aW50CQkJc2Vjb25kc19iZWZvcmVfd2FybmluZzsKQEAgLTExNTU2LDE1ICsxMTM0NSw2IEBAIGRv X3BnX3N0b3BfYmFja3VwKGNoYXIgKmxhYmVsZmlsZSwgYm9vbCB3YWl0Zm9yYXJjaGl2ZSwgVGlt ZUxpbmVJRCAqc3RvcHRsaV9wKQogCiAJYmFja3VwX3N0YXJ0ZWRfaW5fcmVjb3ZlcnkgPSBSZWNv dmVyeUluUHJvZ3Jlc3MoKTsKIAotCS8qCi0JICogQ3VycmVudGx5IG9ubHkgbm9uLWV4Y2x1c2l2 ZSBiYWNrdXAgY2FuIGJlIHRha2VuIGR1cmluZyByZWNvdmVyeS4KLQkgKi8KLQlpZiAoYmFja3Vw X3N0YXJ0ZWRfaW5fcmVjb3ZlcnkgJiYgZXhjbHVzaXZlKQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJ CSBlcnJtc2coInJlY292ZXJ5IGlzIGluIHByb2dyZXNzIiksCi0JCQkJIGVycmhpbnQoIldBTCBj b250cm9sIGZ1bmN0aW9ucyBjYW5ub3QgYmUgZXhlY3V0ZWQgZHVyaW5nIHJlY292ZXJ5LiIpKSk7 Ci0KIAkvKgogCSAqIER1cmluZyByZWNvdmVyeSwgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBXQUwg bGV2ZWwuIEJlY2F1c2UsIGlmIFdBTAogCSAqIGxldmVsIGlzIG5vdCBzdWZmaWNpZW50LCBpdCdz IGltcG9zc2libGUgdG8gZ2V0IGhlcmUgZHVyaW5nIHJlY292ZXJ5LgpAQCAtMTE1NzUsMTA2ICsx MTM1NSwyMyBAQCBkb19wZ19zdG9wX2JhY2t1cChjaGFyICpsYWJlbGZpbGUsIGJvb2wgd2FpdGZv cmFyY2hpdmUsIFRpbWVMaW5lSUQgKnN0b3B0bGlfcCkKIAkJCQkgZXJybXNnKCJXQUwgbGV2ZWwg bm90IHN1ZmZpY2llbnQgZm9yIG1ha2luZyBhbiBvbmxpbmUgYmFja3VwIiksCiAJCQkJIGVycmhp bnQoIndhbF9sZXZlbCBtdXN0IGJlIHNldCB0byBcInJlcGxpY2FcIiBvciBcImxvZ2ljYWxcIiBh dCBzZXJ2ZXIgc3RhcnQuIikpKTsKIAotCWlmIChleGNsdXNpdmUpCi0JewotCQkvKgotCQkgKiBB dCBmaXJzdCwgbWFyayB0aGF0IHdlJ3JlIG5vdyBzdG9wcGluZyBhbiBleGNsdXNpdmUgYmFja3Vw LCB0bwotCQkgKiBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gb3RoZXIgc2Vzc2lvbnMgY3VycmVu dGx5IHJ1bm5pbmcKLQkJICogcGdfc3RhcnRfYmFja3VwKCkgb3IgcGdfc3RvcF9iYWNrdXAoKS4K LQkJICovCi0JCVdBTEluc2VydExvY2tBY3F1aXJlRXhjbHVzaXZlKCk7Ci0JCWlmIChYTG9nQ3Rs LT5JbnNlcnQuZXhjbHVzaXZlQmFja3VwU3RhdGUgIT0gRVhDTFVTSVZFX0JBQ0tVUF9JTl9QUk9H UkVTUykKLQkJewotCQkJV0FMSW5zZXJ0TG9ja1JlbGVhc2UoKTsKLQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAotCQkJCQkgZXJybXNnKCJleGNsdXNpdmUgYmFja3VwIG5vdCBpbiBwcm9ncmVzcyIpKSk7Ci0J CX0KLQkJWExvZ0N0bC0+SW5zZXJ0LmV4Y2x1c2l2ZUJhY2t1cFN0YXRlID0gRVhDTFVTSVZFX0JB Q0tVUF9TVE9QUElORzsKLQkJV0FMSW5zZXJ0TG9ja1JlbGVhc2UoKTsKLQotCQkvKgotCQkgKiBS ZW1vdmUgYmFja3VwX2xhYmVsLiBJbiBjYXNlIG9mIGZhaWx1cmUsIHRoZSBzdGF0ZSBmb3IgYW4g ZXhjbHVzaXZlCi0JCSAqIGJhY2t1cCBpcyBzd2l0Y2hlZCBiYWNrIHRvIGluLXByb2dyZXNzLgot CQkgKi8KLQkJUEdfRU5TVVJFX0VSUk9SX0NMRUFOVVAocGdfc3RvcF9iYWNrdXBfY2FsbGJhY2ss IChEYXR1bSkgQm9vbEdldERhdHVtKGV4Y2x1c2l2ZSkpOwotCQl7Ci0JCQkvKgotCQkJICogUmVh ZCB0aGUgZXhpc3RpbmcgbGFiZWwgZmlsZSBpbnRvIG1lbW9yeS4KLQkJCSAqLwotCQkJc3RydWN0 IHN0YXQgc3RhdGJ1ZjsKLQkJCWludAkJCXI7Ci0KLQkJCWlmIChzdGF0KEJBQ0tVUF9MQUJFTF9G SUxFLCAmc3RhdGJ1ZikpCi0JCQl7Ci0JCQkJLyogc2hvdWxkIG5vdCBoYXBwZW4gcGVyIHRoZSB1 cHBlciBjaGVja3MgKi8KLQkJCQlpZiAoZXJybm8gIT0gRU5PRU5UKQotCQkJCQllcmVwb3J0KEVS Uk9SLAotCQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJCQkJCSBlcnJtc2co ImNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlbSIsCi0JCQkJCQkJCQlCQUNLVVBfTEFCRUxf RklMRSkpKTsKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCi0JCQkJCQkgZXJybXNnKCJhIGJhY2t1cCBp cyBub3QgaW4gcHJvZ3Jlc3MiKSkpOwotCQkJfQotCi0JCQlsZnAgPSBBbGxvY2F0ZUZpbGUoQkFD S1VQX0xBQkVMX0ZJTEUsICJyIik7Ci0JCQlpZiAoIWxmcCkKLQkJCXsKLQkJCQllcmVwb3J0KEVS Uk9SLAotCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCi0JCQkJCQkgZXJybXNnKCJj b3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAotCQkJCQkJCQlCQUNLVVBfTEFCRUxfRklM RSkpKTsKLQkJCX0KLQkJCWxhYmVsZmlsZSA9IHBhbGxvYyhzdGF0YnVmLnN0X3NpemUgKyAxKTsK LQkJCXIgPSBmcmVhZChsYWJlbGZpbGUsIHN0YXRidWYuc3Rfc2l6ZSwgMSwgbGZwKTsKLQkJCWxh YmVsZmlsZVtzdGF0YnVmLnN0X3NpemVdID0gJ1wwJzsKLQotCQkJLyoKLQkJCSAqIENsb3NlIGFu ZCByZW1vdmUgdGhlIGJhY2t1cCBsYWJlbCBmaWxlCi0JCQkgKi8KLQkJCWlmIChyICE9IDEgfHwg ZmVycm9yKGxmcCkgfHwgRnJlZUZpbGUobGZwKSkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJ KGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCi0JCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVh ZCBmaWxlIFwiJXNcIjogJW0iLAotCQkJCQkJCQlCQUNLVVBfTEFCRUxfRklMRSkpKTsKLQkJCWR1 cmFibGVfdW5saW5rKEJBQ0tVUF9MQUJFTF9GSUxFLCBFUlJPUik7Ci0KLQkJCS8qCi0JCQkgKiBS ZW1vdmUgdGFibGVzcGFjZV9tYXAgZmlsZSBpZiBwcmVzZW50LCBpdCBpcyBjcmVhdGVkIG9ubHkg aWYKLQkJCSAqIHRoZXJlIGFyZSB0YWJsZXNwYWNlcy4KLQkJCSAqLwotCQkJZHVyYWJsZV91bmxp bmsoVEFCTEVTUEFDRV9NQVAsIERFQlVHMSk7Ci0JCX0KLQkJUEdfRU5EX0VOU1VSRV9FUlJPUl9D TEVBTlVQKHBnX3N0b3BfYmFja3VwX2NhbGxiYWNrLCAoRGF0dW0pIEJvb2xHZXREYXR1bShleGNs dXNpdmUpKTsKLQl9Ci0KIAkvKgotCSAqIE9LIHRvIHVwZGF0ZSBiYWNrdXAgY291bnRlcnMsIGZv cmNlUGFnZVdyaXRlcyBhbmQgc2Vzc2lvbi1sZXZlbCBsb2NrLgorCSAqIE9LIHRvIHVwZGF0ZSBi YWNrdXAgY291bnRlcnMgYW5kIGZvcmNlUGFnZVdyaXRlcy4KIAkgKgogCSAqIE5vdGUgdGhhdCBD SEVDS19GT1JfSU5URVJSVVBUUygpIG11c3Qgbm90IG9jY3VyIHdoaWxlIHVwZGF0aW5nIHRoZW0u CiAJICogT3RoZXJ3aXNlIHRoZXkgY2FuIGJlIHVwZGF0ZWQgaW5jb25zaXN0ZW50bHksIGFuZCB3 aGljaCBtaWdodCBjYXVzZQogCSAqIGRvX3BnX2Fib3J0X2JhY2t1cCgpIHRvIGZhaWwuCiAJICov CiAJV0FMSW5zZXJ0TG9ja0FjcXVpcmVFeGNsdXNpdmUoKTsKLQlpZiAoZXhjbHVzaXZlKQotCXsK LQkJWExvZ0N0bC0+SW5zZXJ0LmV4Y2x1c2l2ZUJhY2t1cFN0YXRlID0gRVhDTFVTSVZFX0JBQ0tV UF9OT05FOwotCX0KLQllbHNlCi0JewotCQkvKgotCQkgKiBUaGUgdXNlci12aXNpYmxlIHBnX3N0 YXJ0L3N0b3BfYmFja3VwKCkgZnVuY3Rpb25zIHRoYXQgb3BlcmF0ZSBvbgotCQkgKiBleGNsdXNp dmUgYmFja3VwcyBjYW4gYmUgY2FsbGVkIGF0IGFueSB0aW1lLCBidXQgZm9yIG5vbi1leGNsdXNp dmUKLQkJICogYmFja3VwcywgaXQgaXMgZXhwZWN0ZWQgdGhhdCBlYWNoIGRvX3BnX3N0YXJ0X2Jh Y2t1cCgpIGNhbGwgaXMKLQkJICogbWF0Y2hlZCBieSBleGFjdGx5IG9uZSBkb19wZ19zdG9wX2Jh Y2t1cCgpIGNhbGwuCi0JCSAqLwotCQlBc3NlcnQoWExvZ0N0bC0+SW5zZXJ0Lm5vbkV4Y2x1c2l2 ZUJhY2t1cHMgPiAwKTsKLQkJWExvZ0N0bC0+SW5zZXJ0Lm5vbkV4Y2x1c2l2ZUJhY2t1cHMtLTsK LQl9CiAKLQlpZiAoWExvZ0N0bC0+SW5zZXJ0LmV4Y2x1c2l2ZUJhY2t1cFN0YXRlID09IEVYQ0xV U0lWRV9CQUNLVVBfTk9ORSAmJgotCQlYTG9nQ3RsLT5JbnNlcnQubm9uRXhjbHVzaXZlQmFja3Vw cyA9PSAwKQorCS8qCisJICogSXQgaXMgZXhwZWN0ZWQgdGhhdCBlYWNoIGRvX3BnX3N0YXJ0X2Jh Y2t1cCgpIGNhbGwgaXMgbWF0Y2hlZCBieSBleGFjdGx5CisJICogb25lIGRvX3BnX3N0b3BfYmFj a3VwKCkgY2FsbC4KKwkgKi8KKwlBc3NlcnQoWExvZ0N0bC0+SW5zZXJ0LnJ1bm5pbmdCYWNrdXBz ID4gMCk7CisJWExvZ0N0bC0+SW5zZXJ0LnJ1bm5pbmdCYWNrdXBzLS07CisKKwlpZiAoWExvZ0N0 bC0+SW5zZXJ0LnJ1bm5pbmdCYWNrdXBzID09IDApCiAJewogCQlYTG9nQ3RsLT5JbnNlcnQuZm9y Y2VQYWdlV3JpdGVzID0gZmFsc2U7CiAJfQpAQCAtMTE5MzksMTAgKzExNjM2LDYgQEAgZG9fcGdf c3RvcF9iYWNrdXAoY2hhciAqbGFiZWxmaWxlLCBib29sIHdhaXRmb3JhcmNoaXZlLCBUaW1lTGlu ZUlEICpzdG9wdGxpX3ApCiAgKiBUaGUgY2FsbGVyIGNhbiBwYXNzICdhcmcnIGFzICd0cnVlJyBv ciAnZmFsc2UnIHRvIGNvbnRyb2wgd2hldGhlciBhIHdhcm5pbmcKICAqIGlzIGVtaXR0ZWQuCiAg KgotICogTkI6IFRoaXMgaXMgb25seSBmb3IgYWJvcnRpbmcgYSBub24tZXhjbHVzaXZlIGJhY2t1 cCB0aGF0IGRvZXNuJ3Qgd3JpdGUKLSAqIGJhY2t1cF9sYWJlbC4gQSBiYWNrdXAgc3RhcnRlZCB3 aXRoIHBnX3N0YXJ0X2JhY2t1cCgpIG5lZWRzIHRvIGJlIGZpbmlzaGVkCi0gKiB3aXRoIHBnX3N0 b3BfYmFja3VwKCkuCi0gKgogICogTkI6IFRoaXMgZ2V0cyB1c2VkIGFzIGEgYmVmb3JlX3NobWVt X2V4aXQgaGFuZGxlciwgaGVuY2UgdGhlIG9kZC1sb29raW5nCiAgKiBzaWduYXR1cmUuCiAgKi8K QEAgLTExOTUyLDE4ICsxMTY0NSwxNiBAQCBkb19wZ19hYm9ydF9iYWNrdXAoaW50IGNvZGUsIERh dHVtIGFyZykKIAlib29sCQllbWl0X3dhcm5pbmcgPSBEYXR1bUdldEJvb2woYXJnKTsKIAogCS8q Ci0JICogUXVpY2sgZXhpdCBpZiBzZXNzaW9uIGlzIG5vdCBrZWVwaW5nIGFyb3VuZCBhIG5vbi1l eGNsdXNpdmUgYmFja3VwCi0JICogYWxyZWFkeSBzdGFydGVkLgorCSAqIFF1aWNrIGV4aXQgaWYg c2Vzc2lvbiBkb2VzIG5vdCBoYXZlIGEgcnVubmluZyBiYWNrdXAuCiAJICovCi0JaWYgKHNlc3Np b25CYWNrdXBTdGF0ZSAhPSBTRVNTSU9OX0JBQ0tVUF9OT05fRVhDTFVTSVZFKQorCWlmIChzZXNz aW9uQmFja3VwU3RhdGUgIT0gU0VTU0lPTl9CQUNLVVBfUlVOTklORykKIAkJcmV0dXJuOwogCiAJ V0FMSW5zZXJ0TG9ja0FjcXVpcmVFeGNsdXNpdmUoKTsKLQlBc3NlcnQoWExvZ0N0bC0+SW5zZXJ0 Lm5vbkV4Y2x1c2l2ZUJhY2t1cHMgPiAwKTsKLQlYTG9nQ3RsLT5JbnNlcnQubm9uRXhjbHVzaXZl QmFja3Vwcy0tOworCUFzc2VydChYTG9nQ3RsLT5JbnNlcnQucnVubmluZ0JhY2t1cHMgPiAwKTsK KwlYTG9nQ3RsLT5JbnNlcnQucnVubmluZ0JhY2t1cHMtLTsKIAotCWlmIChYTG9nQ3RsLT5JbnNl cnQuZXhjbHVzaXZlQmFja3VwU3RhdGUgPT0gRVhDTFVTSVZFX0JBQ0tVUF9OT05FICYmCi0JCVhM b2dDdGwtPkluc2VydC5ub25FeGNsdXNpdmVCYWNrdXBzID09IDApCisJaWYgKFhMb2dDdGwtPklu c2VydC5ydW5uaW5nQmFja3VwcyA9PSAwKQogCXsKIAkJWExvZ0N0bC0+SW5zZXJ0LmZvcmNlUGFn ZVdyaXRlcyA9IGZhbHNlOwogCX0KQEAgLTEyMzA4LDg3ICsxMTk5OSw2IEBAIHJtX3JlZG9fZXJy b3JfY2FsbGJhY2sodm9pZCAqYXJnKQogCXBmcmVlKGJ1Zi5kYXRhKTsKIH0KIAotLyoKLSAqIEJh Y2t1cEluUHJvZ3Jlc3M6IGNoZWNrIGlmIG9ubGluZSBiYWNrdXAgbW9kZSBpcyBhY3RpdmUKLSAq Ci0gKiBUaGlzIGlzIGRvbmUgYnkgY2hlY2tpbmcgZm9yIGV4aXN0ZW5jZSBvZiB0aGUgImJhY2t1 cF9sYWJlbCIgZmlsZS4KLSAqLwotYm9vbAotQmFja3VwSW5Qcm9ncmVzcyh2b2lkKQotewotCXN0 cnVjdCBzdGF0IHN0YXRfYnVmOwotCi0JcmV0dXJuIChzdGF0KEJBQ0tVUF9MQUJFTF9GSUxFLCAm c3RhdF9idWYpID09IDApOwotfQotCi0vKgotICogQ2FuY2VsQmFja3VwOiByZW5hbWUgdGhlICJi YWNrdXBfbGFiZWwiIGFuZCAidGFibGVzcGFjZV9tYXAiCi0gKgkJCQkgZmlsZXMgdG8gY2FuY2Vs IGJhY2t1cCBtb2RlCi0gKgotICogSWYgdGhlICJiYWNrdXBfbGFiZWwiIGZpbGUgZXhpc3RzLCBp dCB3aWxsIGJlIHJlbmFtZWQgdG8gImJhY2t1cF9sYWJlbC5vbGQiLgotICogU2ltaWxhcmx5LCBp ZiB0aGUgInRhYmxlc3BhY2VfbWFwIiBmaWxlIGV4aXN0cywgaXQgd2lsbCBiZSByZW5hbWVkIHRv Ci0gKiAidGFibGVzcGFjZV9tYXAub2xkIi4KLSAqCi0gKiBOb3RlIHRoYXQgdGhpcyB3aWxsIHJl bmRlciBhbiBvbmxpbmUgYmFja3VwIGluIHByb2dyZXNzCi0gKiB1c2VsZXNzLiBUbyBjb3JyZWN0 bHkgZmluaXNoIGFuIG9ubGluZSBiYWNrdXAsIHBnX3N0b3BfYmFja3VwIG11c3QgYmUKLSAqIGNh bGxlZC4KLSAqLwotdm9pZAotQ2FuY2VsQmFja3VwKHZvaWQpCi17Ci0Jc3RydWN0IHN0YXQgc3Rh dF9idWY7Ci0KLQkvKiBpZiB0aGUgYmFja3VwX2xhYmVsIGZpbGUgaXMgbm90IHRoZXJlLCByZXR1 cm4gKi8KLQlpZiAoc3RhdChCQUNLVVBfTEFCRUxfRklMRSwgJnN0YXRfYnVmKSA8IDApCi0JCXJl dHVybjsKLQotCS8qIHJlbW92ZSBsZWZ0b3ZlciBmaWxlIGZyb20gcHJldmlvdXNseSBjYW5jZWxl ZCBiYWNrdXAgaWYgaXQgZXhpc3RzICovCi0JdW5saW5rKEJBQ0tVUF9MQUJFTF9PTEQpOwotCi0J aWYgKGR1cmFibGVfcmVuYW1lKEJBQ0tVUF9MQUJFTF9GSUxFLCBCQUNLVVBfTEFCRUxfT0xELCBE RUJVRzEpICE9IDApCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGVfZm9yX2Zp bGVfYWNjZXNzKCksCi0JCQkJIGVycm1zZygib25saW5lIGJhY2t1cCBtb2RlIHdhcyBub3QgY2Fu Y2VsZWQiKSwKLQkJCQkgZXJyZGV0YWlsKCJGaWxlIFwiJXNcIiBjb3VsZCBub3QgYmUgcmVuYW1l ZCB0byBcIiVzXCI6ICVtLiIsCi0JCQkJCQkgICBCQUNLVVBfTEFCRUxfRklMRSwgQkFDS1VQX0xB QkVMX09MRCkpKTsKLQkJcmV0dXJuOwotCX0KLQotCS8qIGlmIHRoZSB0YWJsZXNwYWNlX21hcCBm aWxlIGlzIG5vdCB0aGVyZSwgcmV0dXJuICovCi0JaWYgKHN0YXQoVEFCTEVTUEFDRV9NQVAsICZz dGF0X2J1ZikgPCAwKQotCXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygib25saW5lIGJh Y2t1cCBtb2RlIGNhbmNlbGVkIiksCi0JCQkJIGVycmRldGFpbCgiRmlsZSBcIiVzXCIgd2FzIHJl bmFtZWQgdG8gXCIlc1wiLiIsCi0JCQkJCQkgICBCQUNLVVBfTEFCRUxfRklMRSwgQkFDS1VQX0xB QkVMX09MRCkpKTsKLQkJcmV0dXJuOwotCX0KLQotCS8qIHJlbW92ZSBsZWZ0b3ZlciBmaWxlIGZy b20gcHJldmlvdXNseSBjYW5jZWxlZCBiYWNrdXAgaWYgaXQgZXhpc3RzICovCi0JdW5saW5rKFRB QkxFU1BBQ0VfTUFQX09MRCk7Ci0KLQlpZiAoZHVyYWJsZV9yZW5hbWUoVEFCTEVTUEFDRV9NQVAs IFRBQkxFU1BBQ0VfTUFQX09MRCwgREVCVUcxKSA9PSAwKQotCXsKLQkJZXJlcG9ydChMT0csCi0J CQkJKGVycm1zZygib25saW5lIGJhY2t1cCBtb2RlIGNhbmNlbGVkIiksCi0JCQkJIGVycmRldGFp bCgiRmlsZXMgXCIlc1wiIGFuZCBcIiVzXCIgd2VyZSByZW5hbWVkIHRvICIKLQkJCQkJCSAgICJc IiVzXCIgYW5kIFwiJXNcIiwgcmVzcGVjdGl2ZWx5LiIsCi0JCQkJCQkgICBCQUNLVVBfTEFCRUxf RklMRSwgVEFCTEVTUEFDRV9NQVAsCi0JCQkJCQkgICBCQUNLVVBfTEFCRUxfT0xELCBUQUJMRVNQ QUNFX01BUF9PTEQpKSk7Ci0JfQotCWVsc2UKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQko ZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKLQkJCQkgZXJybXNnKCJvbmxpbmUgYmFja3VwIG1v ZGUgY2FuY2VsZWQiKSwKLQkJCQkgZXJyZGV0YWlsKCJGaWxlIFwiJXNcIiB3YXMgcmVuYW1lZCB0 byBcIiVzXCIsIGJ1dCAiCi0JCQkJCQkgICAiZmlsZSBcIiVzXCIgY291bGQgbm90IGJlIHJlbmFt ZWQgdG8gXCIlc1wiOiAlbS4iLAotCQkJCQkJICAgQkFDS1VQX0xBQkVMX0ZJTEUsIEJBQ0tVUF9M QUJFTF9PTEQsCi0JCQkJCQkgICBUQUJMRVNQQUNFX01BUCwgVEFCTEVTUEFDRV9NQVBfT0xEKSkp OwotCX0KLX0KLQogLyoKICAqIFJlYWQgdGhlIFhMT0cgcGFnZSBjb250YWluaW5nIFJlY1B0ciBp bnRvIHJlYWRCdWYgKGlmIG5vdCByZWFkIGFscmVhZHkpLgogICogUmV0dXJucyBudW1iZXIgb2Yg Ynl0ZXMgcmVhZCwgaWYgdGhlIHBhZ2UgaXMgcmVhZCBzdWNjZXNzZnVsbHksIG9yIC0xCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCmluZGV4IGRkOWE0NWMxODYuLmFhYjVkZDg4 ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCkBAIC0zOSw3ICszOSw3 IEBACiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgogCiAvKgotICogU3RvcmUgbGFiZWwg ZmlsZSBhbmQgdGFibGVzcGFjZSBtYXAgZHVyaW5nIG5vbi1leGNsdXNpdmUgYmFja3Vwcy4KKyAq IFN0b3JlIGxhYmVsIGZpbGUgYW5kIHRhYmxlc3BhY2UgbWFwIGR1cmluZyBiYWNrdXBzLgogICov CiBzdGF0aWMgU3RyaW5nSW5mbyBsYWJlbF9maWxlOwogc3RhdGljIFN0cmluZ0luZm8gdGJsc3Bj X21hcF9maWxlOwpAQCAtNjEsMTAxICs2MSw0MCBAQCBwZ19zdGFydF9iYWNrdXAoUEdfRlVOQ1RJ T05fQVJHUykKIHsKIAl0ZXh0CSAgICpiYWNrdXBpZCA9IFBHX0dFVEFSR19URVhUX1BQKDApOwog CWJvb2wJCWZhc3QgPSBQR19HRVRBUkdfQk9PTCgxKTsKLQlib29sCQlleGNsdXNpdmUgPSBQR19H RVRBUkdfQk9PTCgyKTsKIAljaGFyCSAgICpiYWNrdXBpZHN0cjsKIAlYTG9nUmVjUHRyCXN0YXJ0 cG9pbnQ7CiAJU2Vzc2lvbkJhY2t1cFN0YXRlIHN0YXR1cyA9IGdldF9iYWNrdXBfc3RhdHVzKCk7 CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCiAJYmFja3VwaWRzdHIgPSB0ZXh0X3RvX2Nz dHJpbmcoYmFja3VwaWQpOwogCi0JaWYgKHN0YXR1cyA9PSBTRVNTSU9OX0JBQ0tVUF9OT05fRVhD TFVTSVZFKQorCWlmIChzdGF0dXMgPT0gU0VTU0lPTl9CQUNLVVBfUlVOTklORykKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKIAkJCQkgZXJybXNnKCJhIGJhY2t1cCBpcyBhbHJlYWR5IGluIHByb2dyZXNzIGlu IHRoaXMgc2Vzc2lvbiIpKSk7CiAKLQlpZiAoZXhjbHVzaXZlKQotCXsKLQkJc3RhcnRwb2ludCA9 IGRvX3BnX3N0YXJ0X2JhY2t1cChiYWNrdXBpZHN0ciwgZmFzdCwgTlVMTCwgTlVMTCwKLQkJCQkJ CQkJCQlOVUxMLCBOVUxMKTsKLQl9Ci0JZWxzZQotCXsKLQkJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0OwotCi0JCS8qCi0JCSAqIExhYmVsIGZpbGUgYW5kIHRhYmxlc3BhY2UgbWFwIGZpbGUgbmVl ZCB0byBiZSBsb25nLWxpdmVkLCBzaW5jZQotCQkgKiB0aGV5IGFyZSByZWFkIGluIHBnX3N0b3Bf YmFja3VwLgotCQkgKi8KLQkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BN ZW1vcnlDb250ZXh0KTsKLQkJbGFiZWxfZmlsZSA9IG1ha2VTdHJpbmdJbmZvKCk7Ci0JCXRibHNw Y19tYXBfZmlsZSA9IG1ha2VTdHJpbmdJbmZvKCk7Ci0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjb250ZXh0KTsKKwkvKgorCSAqIExhYmVsIGZpbGUgYW5kIHRhYmxlc3BhY2UgbWFwIGZpbGUg bmVlZCB0byBiZSBsb25nLWxpdmVkLCBzaW5jZQorCSAqIHRoZXkgYXJlIHJlYWQgaW4gcGdfc3Rv cF9iYWNrdXAuCisJICovCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BN ZW1vcnlDb250ZXh0KTsKKwlsYWJlbF9maWxlID0gbWFrZVN0cmluZ0luZm8oKTsKKwl0YmxzcGNf bWFwX2ZpbGUgPSBtYWtlU3RyaW5nSW5mbygpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj b250ZXh0KTsKIAotCQlyZWdpc3Rlcl9wZXJzaXN0ZW50X2Fib3J0X2JhY2t1cF9oYW5kbGVyKCk7 CisJcmVnaXN0ZXJfcGVyc2lzdGVudF9hYm9ydF9iYWNrdXBfaGFuZGxlcigpOwogCi0JCXN0YXJ0 cG9pbnQgPSBkb19wZ19zdGFydF9iYWNrdXAoYmFja3VwaWRzdHIsIGZhc3QsIE5VTEwsIGxhYmVs X2ZpbGUsCi0JCQkJCQkJCQkJTlVMTCwgdGJsc3BjX21hcF9maWxlKTsKLQl9CisJc3RhcnRwb2lu dCA9IGRvX3BnX3N0YXJ0X2JhY2t1cChiYWNrdXBpZHN0ciwgZmFzdCwgTlVMTCwgbGFiZWxfZmls ZSwKKwkJCQkJCQkJCU5VTEwsIHRibHNwY19tYXBfZmlsZSk7CiAKIAlQR19SRVRVUk5fTFNOKHN0 YXJ0cG9pbnQpOwogfQogCi0vKgotICogcGdfc3RvcF9iYWNrdXA6IGZpbmlzaCB0YWtpbmcgYW4g b24tbGluZSBiYWNrdXAgZHVtcAotICoKLSAqIFdlIHdyaXRlIGFuIGVuZC1vZi1iYWNrdXAgV0FM IHJlY29yZCwgYW5kIHJlbW92ZSB0aGUgYmFja3VwIGxhYmVsIGZpbGUKLSAqIGNyZWF0ZWQgYnkg cGdfc3RhcnRfYmFja3VwLCBjcmVhdGluZyBhIGJhY2t1cCBoaXN0b3J5IGZpbGUgaW4gcGdfd2Fs Ci0gKiBpbnN0ZWFkICh3aGVuY2UgaXQgd2lsbCBpbW1lZGlhdGVseSBiZSBhcmNoaXZlZCkuIFRo ZSBiYWNrdXAgaGlzdG9yeSBmaWxlCi0gKiBjb250YWlucyB0aGUgc2FtZSBpbmZvIGZvdW5kIGlu IHRoZSBsYWJlbCBmaWxlLCBwbHVzIHRoZSBiYWNrdXAtZW5kIHRpbWUKLSAqIGFuZCBXQUwgbG9j YXRpb24uIEJlZm9yZSA5LjAsIHRoZSBiYWNrdXAtZW5kIHRpbWUgd2FzIHJlYWQgZnJvbSB0aGUg YmFja3VwCi0gKiBoaXN0b3J5IGZpbGUgYXQgdGhlIGJlZ2lubmluZyBvZiBhcmNoaXZlIHJlY292 ZXJ5LCBidXQgd2Ugbm93IHVzZSB0aGUgV0FMCi0gKiByZWNvcmQgZm9yIHRoYXQgYW5kIHRoZSBm aWxlIGlzIGZvciBpbmZvcm1hdGlvbmFsIGFuZCBkZWJ1ZyBwdXJwb3NlcyBvbmx5LgotICoKLSAq IE5vdGU6IGRpZmZlcmVudCBmcm9tIENhbmNlbEJhY2t1cCB3aGljaCBqdXN0IGNhbmNlbHMgb25s aW5lIGJhY2t1cCBtb2RlLgotICoKLSAqIE5vdGU6IHRoaXMgdmVyc2lvbiBpcyBvbmx5IGNhbGxl ZCB0byBzdG9wIGFuIGV4Y2x1c2l2ZSBiYWNrdXAuIFRoZSBmdW5jdGlvbgotICoJCSBwZ19zdG9w X2JhY2t1cF92MiAob3ZlcmxvYWRlZCBhcyBwZ19zdG9wX2JhY2t1cCBpbiBTUUwpIGlzIGNhbGxl ZCB0bwotICoJCSBzdG9wIG5vbi1leGNsdXNpdmUgYmFja3Vwcy4KLSAqCi0gKiBQZXJtaXNzaW9u IGNoZWNraW5nIGZvciB0aGlzIGZ1bmN0aW9uIGlzIG1hbmFnZWQgdGhyb3VnaCB0aGUgbm9ybWFs Ci0gKiBHUkFOVCBzeXN0ZW0uCi0gKi8KLURhdHVtCi1wZ19zdG9wX2JhY2t1cChQR19GVU5DVElP Tl9BUkdTKQotewotCVhMb2dSZWNQdHIJc3RvcHBvaW50OwotCVNlc3Npb25CYWNrdXBTdGF0ZSBz dGF0dXMgPSBnZXRfYmFja3VwX3N0YXR1cygpOwotCi0JaWYgKHN0YXR1cyA9PSBTRVNTSU9OX0JB Q0tVUF9OT05fRVhDTFVTSVZFKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJCSBlcnJtc2coIm5vbi1l eGNsdXNpdmUgYmFja3VwIGluIHByb2dyZXNzIiksCi0JCQkJIGVycmhpbnQoIkRpZCB5b3UgbWVh biB0byB1c2UgcGdfc3RvcF9iYWNrdXAoJ2YnKT8iKSkpOwotCi0JLyoKLQkgKiBFeGNsdXNpdmUg YmFja3VwcyB3ZXJlIHR5cGljYWxseSBzdGFydGVkIGluIGEgZGlmZmVyZW50IGNvbm5lY3Rpb24s IHNvCi0JICogZG9uJ3QgdHJ5IHRvIHZlcmlmeSB0aGF0IHN0YXR1cyBvZiBiYWNrdXAgaXMgc2V0 IHRvCi0JICogU0VTU0lPTl9CQUNLVVBfRVhDTFVTSVZFIGluIHRoaXMgZnVuY3Rpb24uIEFjdHVh bCB2ZXJpZmljYXRpb24gdGhhdCBhbgotCSAqIGV4Y2x1c2l2ZSBiYWNrdXAgaXMgaW4gZmFjdCBy dW5uaW5nIGlzIGhhbmRsZWQgaW5zaWRlCi0JICogZG9fcGdfc3RvcF9iYWNrdXAuCi0JICovCi0J c3RvcHBvaW50ID0gZG9fcGdfc3RvcF9iYWNrdXAoTlVMTCwgdHJ1ZSwgTlVMTCk7Ci0KLQlQR19S RVRVUk5fTFNOKHN0b3Bwb2ludCk7Ci19Ci0KIAogLyoKLSAqIHBnX3N0b3BfYmFja3VwX3YyOiBm aW5pc2ggdGFraW5nIGV4Y2x1c2l2ZSBvciBub25leGNsdXNpdmUgb24tbGluZSBiYWNrdXAuCi0g KgotICogV29ya3MgdGhlIHNhbWUgYXMgcGdfc3RvcF9iYWNrdXAsIGV4Y2VwdCBmb3Igbm9uLWV4 Y2x1c2l2ZSBiYWNrdXBzIGl0IHJldHVybnMKLSAqIHRoZSBiYWNrdXAgbGFiZWwgYW5kIHRhYmxl c3BhY2UgbWFwIGZpbGVzIGFzIHRleHQgZmllbGRzIGluIGFzIHBhcnQgb2YgdGhlCi0gKiByZXN1 bHRzZXQuCisgKiBwZ19zdG9wX2JhY2t1cDogZmluaXNoIHRha2luZyBhbiBvbi1saW5lIGJhY2t1 cC4KICAqCi0gKiBUaGUgZmlyc3QgcGFyYW1ldGVyICh2YXJpYWJsZSAnZXhjbHVzaXZlJykgYWxs b3dzIHRoZSB1c2VyIHRvIHRlbGwgdXMgaWYKLSAqIHRoaXMgaXMgYW4gZXhjbHVzaXZlIG9yIGEg bm9uLWV4Y2x1c2l2ZSBiYWNrdXAuCi0gKgotICogVGhlIHNlY29uZCBwYXJhbWV0ZXIgKHZhcmlh YmxlICd3YWl0Zm9yYXJjaGl2ZScpLCB3aGljaCBpcyBvcHRpb25hbCwKKyAqIFRoZSBmaXJzdCBw YXJhbWV0ZXIgKHZhcmlhYmxlICd3YWl0Zm9yYXJjaGl2ZScpLCB3aGljaCBpcyBvcHRpb25hbCwK ICAqIGFsbG93cyB0aGUgdXNlciB0byBjaG9vc2UgaWYgdGhleSB3YW50IHRvIHdhaXQgZm9yIHRo ZSBXQUwgdG8gYmUgYXJjaGl2ZWQKICAqIG9yIGlmIHdlIHNob3VsZCBqdXN0IHJldHVybiBhcyBz b29uIGFzIHRoZSBXQUwgcmVjb3JkIGlzIHdyaXR0ZW4uCiAgKgpAQCAtMTYzLDcgKzEwMiw3IEBA IHBnX3N0b3BfYmFja3VwKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKiBHUkFOVCBzeXN0ZW0uCiAgKi8K IERhdHVtCi1wZ19zdG9wX2JhY2t1cF92MihQR19GVU5DVElPTl9BUkdTKQorcGdfc3RvcF9iYWNr dXAoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJu U2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CiAJVHVwbGVEZXNjCXR1cGRlc2M7CkBAIC0x NzMsOCArMTEyLDcgQEAgcGdfc3RvcF9iYWNrdXBfdjIoUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1 bQkJdmFsdWVzWzNdOwogCWJvb2wJCW51bGxzWzNdOwogCi0JYm9vbAkJZXhjbHVzaXZlID0gUEdf R0VUQVJHX0JPT0woMCk7Ci0JYm9vbAkJd2FpdGZvcmFyY2hpdmUgPSBQR19HRVRBUkdfQk9PTCgx KTsKKwlib29sCQl3YWl0Zm9yYXJjaGl2ZSA9IFBHX0dFVEFSR19CT09MKDApOwogCVhMb2dSZWNQ dHIJc3RvcHBvaW50OwogCVNlc3Npb25CYWNrdXBTdGF0ZSBzdGF0dXMgPSBnZXRfYmFja3VwX3N0 YXR1cygpOwogCkBAIC0yMDUsNTEgKzE0MywyOSBAQCBwZ19zdG9wX2JhY2t1cF92MihQR19GVU5D VElPTl9BUkdTKQogCU1lbVNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKIAlNZW1TZXQo bnVsbHMsIDAsIHNpemVvZihudWxscykpOwogCi0JaWYgKGV4Y2x1c2l2ZSkKLQl7Ci0JCWlmIChz dGF0dXMgPT0gU0VTU0lPTl9CQUNLVVBfTk9OX0VYQ0xVU0lWRSkKLQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAotCQkJCQkgZXJybXNnKCJub24tZXhjbHVzaXZlIGJhY2t1cCBpbiBwcm9ncmVzcyIpLAotCQkJ CQkgZXJyaGludCgiRGlkIHlvdSBtZWFuIHRvIHVzZSBwZ19zdG9wX2JhY2t1cCgnZicpPyIpKSk7 Ci0KLQkJLyoKLQkJICogU3RvcCB0aGUgZXhjbHVzaXZlIGJhY2t1cCwgYW5kIHNpbmNlIHdlJ3Jl IGluIGFuIGV4Y2x1c2l2ZSBiYWNrdXAKLQkJICogcmV0dXJuIE5VTEwgZm9yIGJvdGggYmFja3Vw X2xhYmVsIGFuZCB0YWJsZXNwYWNlX21hcC4KLQkJICovCi0JCXN0b3Bwb2ludCA9IGRvX3BnX3N0 b3BfYmFja3VwKE5VTEwsIHdhaXRmb3JhcmNoaXZlLCBOVUxMKTsKLQotCQludWxsc1sxXSA9IHRy dWU7Ci0JCW51bGxzWzJdID0gdHJ1ZTsKLQl9Ci0JZWxzZQotCXsKLQkJaWYgKHN0YXR1cyAhPSBT RVNTSU9OX0JBQ0tVUF9OT05fRVhDTFVTSVZFKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCi0JCQkJCSBl cnJtc2coIm5vbi1leGNsdXNpdmUgYmFja3VwIGlzIG5vdCBpbiBwcm9ncmVzcyIpLAotCQkJCQkg ZXJyaGludCgiRGlkIHlvdSBtZWFuIHRvIHVzZSBwZ19zdG9wX2JhY2t1cCgndCcpPyIpKSk7CisJ aWYgKHN0YXR1cyAhPSBTRVNTSU9OX0JBQ0tVUF9SVU5OSU5HKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAor CQkJCSBlcnJtc2coImJhY2t1cCBpcyBub3QgaW4gcHJvZ3Jlc3MiKSwKKwkJCQkgZXJyaGludCgi RGlkIHlvdSBjYWxsIHBnX3N0YXJ0X2JhY2t1cCgpPyIpKSk7CiAKLQkJLyoKLQkJICogU3RvcCB0 aGUgbm9uLWV4Y2x1c2l2ZSBiYWNrdXAuIFJldHVybiBhIGNvcHkgb2YgdGhlIGJhY2t1cCBsYWJl bAotCQkgKiBhbmQgdGFibGVzcGFjZSBtYXAgc28gdGhleSBjYW4gYmUgd3JpdHRlbiB0byBkaXNr IGJ5IHRoZSBjYWxsZXIuCi0JCSAqLwotCQlzdG9wcG9pbnQgPSBkb19wZ19zdG9wX2JhY2t1cChs YWJlbF9maWxlLT5kYXRhLCB3YWl0Zm9yYXJjaGl2ZSwgTlVMTCk7Ci0KLQkJdmFsdWVzWzFdID0g Q1N0cmluZ0dldFRleHREYXR1bShsYWJlbF9maWxlLT5kYXRhKTsKLQkJdmFsdWVzWzJdID0gQ1N0 cmluZ0dldFRleHREYXR1bSh0YmxzcGNfbWFwX2ZpbGUtPmRhdGEpOwotCi0JCS8qIEZyZWUgc3Ry dWN0dXJlcyBhbGxvY2F0ZWQgaW4gVG9wTWVtb3J5Q29udGV4dCAqLwotCQlwZnJlZShsYWJlbF9m aWxlLT5kYXRhKTsKLQkJcGZyZWUobGFiZWxfZmlsZSk7Ci0JCWxhYmVsX2ZpbGUgPSBOVUxMOwot CQlwZnJlZSh0YmxzcGNfbWFwX2ZpbGUtPmRhdGEpOwotCQlwZnJlZSh0YmxzcGNfbWFwX2ZpbGUp OwotCQl0YmxzcGNfbWFwX2ZpbGUgPSBOVUxMOwotCX0KKwkvKgorCSAqIFN0b3AgdGhlIGJhY2t1 cC4gUmV0dXJuIGEgY29weSBvZiB0aGUgYmFja3VwIGxhYmVsIGFuZCB0YWJsZXNwYWNlIG1hcCBz bworCSAqIHRoZXkgY2FuIGJlIHdyaXR0ZW4gdG8gZGlzayBieSB0aGUgY2FsbGVyLgorCSAqLwor CXN0b3Bwb2ludCA9IGRvX3BnX3N0b3BfYmFja3VwKGxhYmVsX2ZpbGUtPmRhdGEsIHdhaXRmb3Jh cmNoaXZlLCBOVUxMKTsKIAotCS8qIFN0b3Bwb2ludCBpcyBpbmNsdWRlZCBvbiBib3RoIGV4Y2x1 c2l2ZSBhbmQgbm9uZXhjbHVzaXZlIGJhY2t1cHMgKi8KIAl2YWx1ZXNbMF0gPSBMU05HZXREYXR1 bShzdG9wcG9pbnQpOworCXZhbHVlc1sxXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0obGFiZWxfZmls ZS0+ZGF0YSk7CisJdmFsdWVzWzJdID0gQ1N0cmluZ0dldFRleHREYXR1bSh0YmxzcGNfbWFwX2Zp bGUtPmRhdGEpOworCisJLyogRnJlZSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCBpbiBUb3BNZW1vcnlD b250ZXh0ICovCisJcGZyZWUobGFiZWxfZmlsZS0+ZGF0YSk7CisJcGZyZWUobGFiZWxfZmlsZSk7 CisJbGFiZWxfZmlsZSA9IE5VTEw7CisJcGZyZWUodGJsc3BjX21hcF9maWxlLT5kYXRhKTsKKwlw ZnJlZSh0YmxzcGNfbWFwX2ZpbGUpOworCXRibHNwY19tYXBfZmlsZSA9IE5VTEw7CiAKIAl0dXBs ZXN0b3JlX3B1dHZhbHVlcyh0dXBzdG9yZSwgdHVwZGVzYywgdmFsdWVzLCBudWxscyk7CiAJdHVw bGVzdG9yZV9kb25lc3RvcmluZyh0dXBzdG9yZSk7CkBAIC02NzAsODEgKzU4Niw2IEBAIHBnX3dh bF9sc25fZGlmZihQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9OVU1FUklDKHJlc3VsdCk7 CiB9CiAKLS8qCi0gKiBSZXR1cm5zIGJvb2wgd2l0aCBjdXJyZW50IG9uLWxpbmUgYmFja3VwIG1v ZGUsIGEgZ2xvYmFsIHN0YXRlLgotICovCi1EYXR1bQotcGdfaXNfaW5fYmFja3VwKFBHX0ZVTkNU SU9OX0FSR1MpCi17Ci0JUEdfUkVUVVJOX0JPT0woQmFja3VwSW5Qcm9ncmVzcygpKTsKLX0KLQot LyoKLSAqIFJldHVybnMgc3RhcnQgdGltZSBvZiBhbiBvbmxpbmUgZXhjbHVzaXZlIGJhY2t1cC4K LSAqCi0gKiBXaGVuIHRoZXJlJ3Mgbm8gZXhjbHVzaXZlIGJhY2t1cCBpbiBwcm9ncmVzcywgdGhl IGZ1bmN0aW9uCi0gKiByZXR1cm5zIE5VTEwuCi0gKi8KLURhdHVtCi1wZ19iYWNrdXBfc3RhcnRf dGltZShQR19GVU5DVElPTl9BUkdTKQotewotCURhdHVtCQl4dGltZTsKLQlGSUxFCSAgICpsZnA7 Ci0JY2hhcgkJZmxpbmVbTUFYUEdQQVRIXTsKLQljaGFyCQliYWNrdXBfc3RhcnRfdGltZVszMF07 Ci0KLQkvKgotCSAqIFNlZSBpZiBsYWJlbCBmaWxlIGlzIHByZXNlbnQKLQkgKi8KLQlsZnAgPSBB bGxvY2F0ZUZpbGUoQkFDS1VQX0xBQkVMX0ZJTEUsICJyIik7Ci0JaWYgKGxmcCA9PSBOVUxMKQot CXsKLQkJaWYgKGVycm5vICE9IEVOT0VOVCkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJj b2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVhZCBmaWxl IFwiJXNcIjogJW0iLAotCQkJCQkJCUJBQ0tVUF9MQUJFTF9GSUxFKSkpOwotCQlQR19SRVRVUk5f TlVMTCgpOwotCX0KLQotCS8qCi0JICogUGFyc2UgdGhlIGZpbGUgdG8gZmluZCB0aGUgU1RBUlQg VElNRSBsaW5lLgotCSAqLwotCWJhY2t1cF9zdGFydF90aW1lWzBdID0gJ1wwJzsKLQl3aGlsZSAo ZmdldHMoZmxpbmUsIHNpemVvZihmbGluZSksIGxmcCkgIT0gTlVMTCkKLQl7Ci0JCWlmIChzc2Nh bmYoZmxpbmUsICJTVEFSVCBUSU1FOiAlMjVbXlxuXVxuIiwgYmFja3VwX3N0YXJ0X3RpbWUpID09 IDEpCi0JCQlicmVhazsKLQl9Ci0KLQkvKiBDaGVjayBmb3IgYSByZWFkIGVycm9yLiAqLwotCWlm IChmZXJyb3IobGZwKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZV9mb3JfZmlsZV9h Y2Nlc3MoKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLCBC QUNLVVBfTEFCRUxfRklMRSkpKTsKLQotCS8qIENsb3NlIHRoZSBiYWNrdXAgbGFiZWwgZmlsZS4g Ki8KLQlpZiAoRnJlZUZpbGUobGZwKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZV9m b3JfZmlsZV9hY2Nlc3MoKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVz XCI6ICVtIiwgQkFDS1VQX0xBQkVMX0ZJTEUpKSk7Ci0KLQlpZiAoc3RybGVuKGJhY2t1cF9zdGFy dF90aW1lKSA9PSAwKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJCSBlcnJtc2coImludmFsaWQgZGF0 YSBpbiBmaWxlIFwiJXNcIiIsIEJBQ0tVUF9MQUJFTF9GSUxFKSkpOwotCi0JLyoKLQkgKiBDb252 ZXJ0IHRoZSB0aW1lIHN0cmluZyByZWFkIGZyb20gZmlsZSB0byBUaW1lc3RhbXBUeiBmb3JtLgot CSAqLwotCXh0aW1lID0gRGlyZWN0RnVuY3Rpb25DYWxsMyh0aW1lc3RhbXB0el9pbiwKLQkJCQkJ CQkJQ1N0cmluZ0dldERhdHVtKGJhY2t1cF9zdGFydF90aW1lKSwKLQkJCQkJCQkJT2JqZWN0SWRH ZXREYXR1bShJbnZhbGlkT2lkKSwKLQkJCQkJCQkJSW50MzJHZXREYXR1bSgtMSkpOwotCi0JUEdf UkVUVVJOX0RBVFVNKHh0aW1lKTsKLX0KLQogLyoKICAqIFByb21vdGVzIGEgc3RhbmRieSBzZXJ2 ZXIuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25z LnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKaW5kZXggM2E0 ZmE5MDkxYi4uYzgzOTBjY2EwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fZnVuY3Rpb25zLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlv bnMuc3FsCkBAIC0zNzcsMTQgKzM3NywxNCBAQCBCRUdJTiBBVE9NSUMKIEVORDsKIAogQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04KLSAgcGdfc3RhcnRfYmFja3VwKGxhYmVsIHRleHQsIGZhc3Qg Ym9vbGVhbiBERUZBVUxUIGZhbHNlLCBleGNsdXNpdmUgYm9vbGVhbiBERUZBVUxUIHRydWUpCisg IHBnX3N0YXJ0X2JhY2t1cChsYWJlbCB0ZXh0LCBmYXN0IGJvb2xlYW4gREVGQVVMVCBmYWxzZSkK ICAgUkVUVVJOUyBwZ19sc24gU1RSSUNUIFZPTEFUSUxFIExBTkdVQUdFIGludGVybmFsIEFTICdw Z19zdGFydF9iYWNrdXAnCiAgIFBBUkFMTEVMIFJFU1RSSUNURUQ7CiAKIENSRUFURSBPUiBSRVBM QUNFIEZVTkNUSU9OIHBnX3N0b3BfYmFja3VwICgKLSAgICAgICAgZXhjbHVzaXZlIGJvb2xlYW4s IHdhaXRfZm9yX2FyY2hpdmUgYm9vbGVhbiBERUZBVUxUIHRydWUsCi0gICAgICAgIE9VVCBsc24g cGdfbHNuLCBPVVQgbGFiZWxmaWxlIHRleHQsIE9VVCBzcGNtYXBmaWxlIHRleHQpCi0gIFJFVFVS TlMgU0VUT0YgcmVjb3JkIFNUUklDVCBWT0xBVElMRSBMQU5HVUFHRSBpbnRlcm5hbCBhcyAncGdf c3RvcF9iYWNrdXBfdjInCisgICAgICAgIHdhaXRfZm9yX2FyY2hpdmUgYm9vbGVhbiBERUZBVUxU IHRydWUsIE9VVCBsc24gcGdfbHNuLAorICAgICAgICBPVVQgbGFiZWxmaWxlIHRleHQsIE9VVCBz cGNtYXBmaWxlIHRleHQpCisgIFJFVFVSTlMgU0VUT0YgcmVjb3JkIFNUUklDVCBWT0xBVElMRSBM QU5HVUFHRSBpbnRlcm5hbCBhcyAncGdfc3RvcF9iYWNrdXAnCiAgIFBBUkFMTEVMIFJFU1RSSUNU RUQ7CiAKIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OCkBAIC02MDMsMTEgKzYwMyw5IEBAIEFT ICd1bmljb2RlX2lzX25vcm1hbGl6ZWQnOwogLS0gYXZhaWxhYmxlIHRvIHN1cGVydXNlciAvIGNs dXN0ZXIgb3duZXIsIGlmIHRoZXkgY2hvb3NlLgogLS0KIAotUkVWT0tFIEVYRUNVVEUgT04gRlVO Q1RJT04gcGdfc3RhcnRfYmFja3VwKHRleHQsIGJvb2xlYW4sIGJvb2xlYW4pIEZST00gcHVibGlj OworUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfc3RhcnRfYmFja3VwKHRleHQsIGJvb2xl YW4pIEZST00gcHVibGljOwogCi1SRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19zdG9wX2Jh Y2t1cCgpIEZST00gcHVibGljOwotCi1SRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19zdG9w X2JhY2t1cChib29sZWFuLCBib29sZWFuKSBGUk9NIHB1YmxpYzsKK1JFVk9LRSBFWEVDVVRFIE9O IEZVTkNUSU9OIHBnX3N0b3BfYmFja3VwKGJvb2xlYW4pIEZST00gcHVibGljOwogCiBSRVZPS0Ug RVhFQ1VURSBPTiBGVU5DVElPTiBwZ19jcmVhdGVfcmVzdG9yZV9wb2ludCh0ZXh0KSBGUk9NIHB1 YmxpYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCAzMjhlY2FmYThjLi5m Yzg0MjQ0YzZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIu YworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtMzQ3LDcgKzM0 Nyw2IEBAIHN0YXRpYyBQTVN0YXRlIHBtU3RhdGUgPSBQTV9JTklUOwogdHlwZWRlZiBlbnVtCiB7 CiAJQUxMT1dfQUxMX0NPTk5TLAkJCS8qIG5vcm1hbCBub3Qtc2h1dHRpbmctZG93biBzdGF0ZSAq LwotCUFMTE9XX1NVUEVSVVNFUl9DT05OUywJCS8qIG9ubHkgc3VwZXJ1c2VycyBjYW4gY29ubmVj dCAqLwogCUFMTE9XX05PX0NPTk5TCQkJCS8qIG5vIG5ldyBjb25uZWN0aW9ucyBhbGxvd2VkLCBw ZXJpb2QgKi8KIH0gQ29ubnNBbGxvd2VkU3RhdGU7CiAKQEAgLTI1NDcsMTkgKzI1NDYsMTEgQEAg Y2FuQWNjZXB0Q29ubmVjdGlvbnMoaW50IGJhY2tlbmRfdHlwZSkKIAogCS8qCiAJICogIlNtYXJ0 IHNodXRkb3duIiByZXN0cmljdGlvbnMgYXJlIGFwcGxpZWQgb25seSB0byBub3JtYWwgY29ubmVj dGlvbnMsCi0JICogbm90IHRvIGF1dG92YWMgd29ya2VycyBvciBiZ3dvcmtlcnMuICBXaGVuIG9u bHkgc3VwZXJ1c2VycyBjYW4gY29ubmVjdCwKLQkgKiB3ZSByZXR1cm4gQ0FDX1NVUEVSVVNFUiB0 byBpbmRpY2F0ZSB0aGF0IHN1cGVydXNlcm5lc3MgbXVzdCBiZSBjaGVja2VkCi0JICogbGF0ZXIu ICBOb3RlIHRoYXQgbmVpdGhlciBDQUNfT0sgbm9yIENBQ19TVVBFUlVTRVIgY2FuIHNhZmVseSBi ZQotCSAqIHJldHVybmVkIHVudGlsIHdlIGhhdmUgY2hlY2tlZCBmb3IgdG9vIG1hbnkgY2hpbGRy ZW4uCisJICogbm90IHRvIGF1dG92YWMgd29ya2VycyBvciBiZ3dvcmtlcnMuCiAJICovCiAJaWYg KGNvbm5zQWxsb3dlZCAhPSBBTExPV19BTExfQ09OTlMgJiYKIAkJYmFja2VuZF90eXBlID09IEJB Q0tFTkRfVFlQRV9OT1JNQUwpCi0JewotCQlpZiAoY29ubnNBbGxvd2VkID09IEFMTE9XX1NVUEVS VVNFUl9DT05OUykKLQkJCXJlc3VsdCA9IENBQ19TVVBFUlVTRVI7IC8qIGFsbG93IHN1cGVydXNl cnMgb25seSAqLwotCQllbHNlCi0JCQlyZXR1cm4gQ0FDX1NIVVRET1dOOwkvKiBzaHV0ZG93biBp cyBwZW5kaW5nICovCi0JfQorCQlyZXR1cm4gQ0FDX1NIVVRET1dOOwkvKiBzaHV0ZG93biBpcyBw ZW5kaW5nICovCiAKIAkvKgogCSAqIERvbid0IHN0YXJ0IHRvbyBtYW55IGNoaWxkcmVuLgpAQCAt Mjg3OCwxNiArMjg2OSwxMSBAQCBwbWRpZShTSUdOQUxfQVJHUykKICNlbmRpZgogCiAJCQkvKgot CQkJICogSWYgd2UgcmVhY2hlZCBub3JtYWwgcnVubmluZywgd2UgaGF2ZSB0byB3YWl0IGZvciBh bnkgb25saW5lCi0JCQkgKiBiYWNrdXAgbW9kZSB0byBlbmQ7IG90aGVyd2lzZSBnbyBzdHJhaWdo dCB0byB3YWl0aW5nIGZvciBjbGllbnQKLQkJCSAqIGJhY2tlbmRzIHRvIGV4aXQuICAoVGhlIGRp ZmZlcmVuY2UgaXMgdGhhdCBpbiB0aGUgZm9ybWVyIHN0YXRlLAotCQkJICogd2UnbGwgc3RpbGwg bGV0IGluIG5ldyBzdXBlcnVzZXIgY2xpZW50cywgc28gdGhhdCBzb21lYm9keSBjYW4KLQkJCSAq IGVuZCB0aGUgb25saW5lIGJhY2t1cCBtb2RlLikgIElmIGFscmVhZHkgaW4gUE1fU1RPUF9CQUNL RU5EUyBvcgorCQkJICogSWYgd2UgcmVhY2hlZCBub3JtYWwgcnVubmluZywgd2UgZ28gc3RyYWln aHQgdG8gd2FpdGluZyBmb3IKKwkJCSAqIGNsaWVudCBiYWNrZW5kcyB0byBleGl0LiAgSWYgYWxy ZWFkeSBpbiBQTV9TVE9QX0JBQ0tFTkRTIG9yCiAJCQkgKiBhIGxhdGVyIHN0YXRlLCBkbyBub3Qg Y2hhbmdlIGl0LgogCQkJICovCi0JCQlpZiAocG1TdGF0ZSA9PSBQTV9SVU4pCi0JCQkJY29ubnNB bGxvd2VkID0gQUxMT1dfU1VQRVJVU0VSX0NPTk5TOwotCQkJZWxzZSBpZiAocG1TdGF0ZSA9PSBQ TV9IT1RfU1RBTkRCWSkKKwkJCWlmIChwbVN0YXRlID09IFBNX1JVTiB8fCBwbVN0YXRlID09IFBN X0hPVF9TVEFOREJZKQogCQkJCWNvbm5zQWxsb3dlZCA9IEFMTE9XX05PX0NPTk5TOwogCQkJZWxz ZSBpZiAocG1TdGF0ZSA9PSBQTV9TVEFSVFVQIHx8IHBtU3RhdGUgPT0gUE1fUkVDT1ZFUlkpCiAJ CQl7CkBAIC0zODQzLDE2ICszODI5LDYgQEAgUG9zdG1hc3RlclN0YXRlTWFjaGluZSh2b2lkKQog CS8qIElmIHdlJ3JlIGRvaW5nIGEgc21hcnQgc2h1dGRvd24sIHRyeSB0byBhZHZhbmNlIHRoYXQg c3RhdGUuICovCiAJaWYgKHBtU3RhdGUgPT0gUE1fUlVOIHx8IHBtU3RhdGUgPT0gUE1fSE9UX1NU QU5EQlkpCiAJewotCQlpZiAoY29ubnNBbGxvd2VkID09IEFMTE9XX1NVUEVSVVNFUl9DT05OUykK LQkJewotCQkJLyoKLQkJCSAqIEFMTE9XX1NVUEVSVVNFUl9DT05OUyBzdGF0ZSBlbmRzIGFzIHNv b24gYXMgb25saW5lIGJhY2t1cCBtb2RlCi0JCQkgKiBpcyBub3QgYWN0aXZlLgotCQkJICovCi0J CQlpZiAoIUJhY2t1cEluUHJvZ3Jlc3MoKSkKLQkJCQljb25uc0FsbG93ZWQgPSBBTExPV19OT19D T05OUzsKLQkJfQotCiAJCWlmIChjb25uc0FsbG93ZWQgPT0gQUxMT1dfTk9fQ09OTlMpCiAJCXsK IAkJCS8qCkBAIC00MDQ1LDE4ICs0MDIxLDYgQEAgUG9zdG1hc3RlclN0YXRlTWFjaGluZSh2b2lk KQogCQl9CiAJCWVsc2UKIAkJewotCQkJLyoKLQkJCSAqIFRlcm1pbmF0ZSBleGNsdXNpdmUgYmFj a3VwIG1vZGUgdG8gYXZvaWQgcmVjb3ZlcnkgYWZ0ZXIgYSBjbGVhbgotCQkJICogZmFzdCBzaHV0 ZG93bi4gIFNpbmNlIGFuIGV4Y2x1c2l2ZSBiYWNrdXAgY2FuIG9ubHkgYmUgdGFrZW4KLQkJCSAq IGR1cmluZyBub3JtYWwgcnVubmluZyAoYW5kIG5vdCwgZm9yIGV4YW1wbGUsIHdoaWxlIHJ1bm5p bmcKLQkJCSAqIHVuZGVyIEhvdCBTdGFuZGJ5KSBpdCBvbmx5IG1ha2VzIHNlbnNlIHRvIGRvIHRo aXMgaWYgd2UgcmVhY2hlZAotCQkJICogbm9ybWFsIHJ1bm5pbmcuIElmIHdlJ3JlIHN0aWxsIGlu IHJlY292ZXJ5LCB0aGUgYmFja3VwIGZpbGUgaXMKLQkJCSAqIG9uZSB3ZSdyZSByZWNvdmVyaW5n ICpmcm9tKiwgYW5kIHdlIG11c3Qga2VlcCBpdCBhcm91bmQgc28gdGhhdAotCQkJICogcmVjb3Zl cnkgcmVzdGFydHMgZnJvbSB0aGUgcmlnaHQgcGxhY2UuCi0JCQkgKi8KLQkJCWlmIChSZWFjaGVk Tm9ybWFsUnVubmluZykKLQkJCQlDYW5jZWxCYWNrdXAoKTsKLQogCQkJLyoKIAkJCSAqIE5vcm1h bCBleGl0IGZyb20gdGhlIHBvc3RtYXN0ZXIgaXMgaGVyZS4gIFdlIGRvbid0IG5lZWQgdG8gbG9n CiAJCQkgKiBhbnl0aGluZyBoZXJlLCBzaW5jZSB0aGUgVW5saW5rTG9ja0ZpbGVzIHByb2NfZXhp dCBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1 cC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jCmluZGV4IGVjMDQ4NTcw NWQuLjNkM2IxMTFjNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2Vi YWNrdXAuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMKQEAgLTE3 NywxMCArMTc3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBleGNsdWRlX2xpc3RfaXRlbSBleGNs dWRlRmlsZXNbXSA9CiAJe1JFTENBQ0hFX0lOSVRfRklMRU5BTUUsIHRydWV9LAogCiAJLyoKLQkg KiBJZiB0aGVyZSdzIGEgYmFja3VwX2xhYmVsIG9yIHRhYmxlc3BhY2VfbWFwIGZpbGUsIGl0IGJl bG9uZ3MgdG8gYQotCSAqIGJhY2t1cCBzdGFydGVkIGJ5IHRoZSB1c2VyIHdpdGggcGdfc3RhcnRf YmFja3VwKCkuICBJdCBpcyAqbm90KiBjb3JyZWN0Ci0JICogZm9yIHRoaXMgYmFja3VwLiAgT3Vy IGJhY2t1cF9sYWJlbC90YWJsZXNwYWNlX21hcCBpcyBpbmplY3RlZCBpbnRvIHRoZQotCSAqIHRh ciBzZXBhcmF0ZWx5LgorCSAqIGJhY2t1cF9sYWJlbCBhbmQgdGFibGVzcGFjZV9tYXAgc2hvdWxk IG5vdCBleGlzdCBpbiBpbiBhIHJ1bm5pbmcgY2x1c3RlcgorCSAqIGNhcGFibGUgb2YgZG9pbmcg YW4gb25saW5lIGJhY2t1cCwgYnV0IGV4Y2x1ZGUgdGhlbiBqdXN0IGluIGNhc2UuCiAJICovCiAJ e0JBQ0tVUF9MQUJFTF9GSUxFLCBmYWxzZX0sCiAJe1RBQkxFU1BBQ0VfTUFQLCBmYWxzZX0sCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbCBi L3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFja3VwLnBsCmluZGV4IDg5ZjQ1 Yjc3YTMuLmYyMWQ1MzA4NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAx MF9wZ19iYXNlYmFja3VwLnBsCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19i YXNlYmFja3VwLnBsCkBAIC0xNjMsNiArMTYzLDEwIEBAIGlzbnQoc2x1cnBfZmlsZSgiJHRlbXBk aXIvYmFja3VwL2JhY2t1cF9sYWJlbCIpLAogCSdET05PVENPUFknLCAnZXhpc3RpbmcgYmFja3Vw X2xhYmVsIG5vdCBjb3BpZWQnKTsKIHJtdHJlZSgiJHRlbXBkaXIvYmFja3VwIik7CiAKKyMgTm93 IGRlbGV0ZSB0aGUgYm9ndXMgYmFja3VwX2xhYmVsIGZpbGUgc2luY2UgaXQgd2lsbCBpbnRlcmZl cmUgd2l0aCBzdGFydHVwCit1bmxpbmsoIiRwZ2RhdGEvYmFja3VwX2xhYmVsIikKKyAgb3IgQkFJ TF9PVVQoInVuYWJsZSB0byB1bmxpbmsgJHBnZGF0YS9iYWNrdXBfbGFiZWwiKTsKKwogJG5vZGUt PmNvbW1hbmRfb2soCiAJWwogCQkncGdfYmFzZWJhY2t1cCcsICAgICctRCcsCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3Jld2luZC9maWxlbWFwLmMgYi9zcmMvYmluL3BnX3Jld2luZC9maWxlbWFw LmMKaW5kZXggMjYxOGI0Yzk1Ny4uMzdiNjY5YTNjYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19y ZXdpbmQvZmlsZW1hcC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAuYwpAQCAtMTQw LDkgKzE0MCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXhjbHVkZV9saXN0X2l0ZW0gZXhjbHVk ZUZpbGVzW10gPQogCXsicGdfaW50ZXJuYWwuaW5pdCIsIHRydWV9LCAvKiBkZWZpbmVkIGFzIFJF TENBQ0hFX0lOSVRfRklMRU5BTUUgKi8KIAogCS8qCi0JICogSWYgdGhlcmUncyBhIGJhY2t1cF9s YWJlbCBvciB0YWJsZXNwYWNlX21hcCBmaWxlLCBpdCBiZWxvbmdzIHRvIGEKLQkgKiBiYWNrdXAg c3RhcnRlZCBieSB0aGUgdXNlciB3aXRoIHBnX3N0YXJ0X2JhY2t1cCgpLiAgSXQgaXMgKm5vdCog Y29ycmVjdAotCSAqIGZvciB0aGlzIGJhY2t1cC4gIE91ciBiYWNrdXBfbGFiZWwgaXMgd3JpdHRl biBsYXRlciBvbiBzZXBhcmF0ZWx5LgorCSAqIElmIHRoZXJlIGlzIGEgYmFja3VwX2xhYmVsIG9y IHRhYmxlc3BhY2VfbWFwIGZpbGUsIGl0IGluZGljYXRlcyB0aGF0CisJICogYSByZWNvdmVyeSBm YWlsZWQgYW5kIHRoaXMgY2x1c3RlciBwcm9iYWJseSBjYW4ndCBiZSByZXdvdW5kLCBidXQKKwkg KiBleGNsdWRlIHRoZW0gYW55d2F5IGlmIHRoZXkgYXJlIGZvdW5kLgogCSAqLwogCXsiYmFja3Vw X2xhYmVsIiwgZmFsc2V9LAkvKiBkZWZpbmVkIGFzIEJBQ0tVUF9MQUJFTF9GSUxFICovCiAJeyJ0 YWJsZXNwYWNlX21hcCIsIGZhbHNlfSwJLyogZGVmaW5lZCBhcyBUQUJMRVNQQUNFX01BUCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy94bG9nLmgKaW5kZXggODk4ZGYyZWUwMy4uZjlmMzRmOTc5MiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCkBAIC0z NDMsOCArMzQzLDcgQEAgZXh0ZXJuIHZvaWQgYXNzaWduX2NoZWNrcG9pbnRfY29tcGxldGlvbl90 YXJnZXQoZG91YmxlIG5ld3ZhbCwgdm9pZCAqZXh0cmEpOwogdHlwZWRlZiBlbnVtIFNlc3Npb25C YWNrdXBTdGF0ZQogewogCVNFU1NJT05fQkFDS1VQX05PTkUsCi0JU0VTU0lPTl9CQUNLVVBfRVhD TFVTSVZFLAotCVNFU1NJT05fQkFDS1VQX05PTl9FWENMVVNJVkUKKwlTRVNTSU9OX0JBQ0tVUF9S VU5OSU5HLAogfSBTZXNzaW9uQmFja3VwU3RhdGU7CiAKIGV4dGVybiBYTG9nUmVjUHRyIGRvX3Bn X3N0YXJ0X2JhY2t1cChjb25zdCBjaGFyICpiYWNrdXBpZHN0ciwgYm9vbCBmYXN0LApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKaW5kZXggNzlkNzg3Y2QyNi4uNTViMWY3NDFmNSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC02MjgyLDI1ICs2MjgyLDE1IEBACiAgIHByb3NyYyA9PiAncGdfdGVy bWluYXRlX2JhY2tlbmQnIH0sCiB7IG9pZCA9PiAnMjE3MicsIGRlc2NyID0+ICdwcmVwYXJlIGZv ciB0YWtpbmcgYW4gb25saW5lIGJhY2t1cCcsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXJ0X2JhY2t1 cCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3InLAotICBwcm9yZXR0eXBl ID0+ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9PiAndGV4dCBib29sIGJvb2wnLAorICBwcm9yZXR0 eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9PiAndGV4dCBib29sJywKICAgcHJvc3JjID0+ ICdwZ19zdGFydF9iYWNrdXAnIH0sCi17IG9pZCA9PiAnMjE3MycsIGRlc2NyID0+ICdmaW5pc2gg dGFraW5nIGFuIG9ubGluZSBiYWNrdXAnLAotICBwcm9uYW1lID0+ICdwZ19zdG9wX2JhY2t1cCcs IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3InLAotICBwcm9yZXR0eXBlID0+ ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwZ19zdG9wX2JhY2t1cCcg fSwKIHsgb2lkID0+ICcyNzM5JywgZGVzY3IgPT4gJ2ZpbmlzaCB0YWtpbmcgYW4gb25saW5lIGJh Y2t1cCcsCiAgIHByb25hbWUgPT4gJ3BnX3N0b3BfYmFja3VwJywgcHJvcm93cyA9PiAnMScsIHBy b3JldHNldCA9PiAndCcsCiAgIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3In LCBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLAotICBwcm9hcmd0eXBlcyA9PiAnYm9vbCBib29sJywg cHJvYWxsYXJndHlwZXMgPT4gJ3tib29sLGJvb2wscGdfbHNuLHRleHQsdGV4dH0nLAotICBwcm9h cmdtb2RlcyA9PiAne2ksaSxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne2V4Y2x1c2l2ZSx3 YWl0X2Zvcl9hcmNoaXZlLGxzbixsYWJlbGZpbGUsc3BjbWFwZmlsZX0nLAotICBwcm9zcmMgPT4g J3BnX3N0b3BfYmFja3VwX3YyJyB9LAoteyBvaWQgPT4gJzM4MTMnLCBkZXNjciA9PiAndHJ1ZSBp ZiBzZXJ2ZXIgaXMgaW4gb25saW5lIGJhY2t1cCcsCi0gIHByb25hbWUgPT4gJ3BnX2lzX2luX2Jh Y2t1cCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCi0gIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3BnX2lzX2luX2JhY2t1cCcgfSwKLXsgb2lkID0+ICcz ODE0JywgZGVzY3IgPT4gJ3N0YXJ0IHRpbWUgb2YgYW4gb25saW5lIGJhY2t1cCcsCi0gIHByb25h bWUgPT4gJ3BnX2JhY2t1cF9zdGFydF90aW1lJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAotICBwcm9y ZXR0eXBlID0+ICd0aW1lc3RhbXB0eicsIHByb2FyZ3R5cGVzID0+ICcnLAotICBwcm9zcmMgPT4g J3BnX2JhY2t1cF9zdGFydF90aW1lJyB9LAorICBwcm9hcmd0eXBlcyA9PiAnYm9vbCcsIHByb2Fs bGFyZ3R5cGVzID0+ICd7Ym9vbCxwZ19sc24sdGV4dCx0ZXh0fScsCisgIHByb2FyZ21vZGVzID0+ ICd7aSxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3dhaXRfZm9yX2FyY2hpdmUsbHNuLGxh YmVsZmlsZSxzcGNtYXBmaWxlfScsCisgIHByb3NyYyA9PiAncGdfc3RvcF9iYWNrdXAnIH0sCiB7 IG9pZCA9PiAnMzQzNicsIGRlc2NyID0+ICdwcm9tb3RlIHN0YW5kYnkgc2VydmVyJywKICAgcHJv bmFtZSA9PiAncGdfcHJvbW90ZScsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAn Ym9vbCcsCiAgIHByb2FyZ3R5cGVzID0+ICdib29sIGludDQnLCBwcm9hcmduYW1lcyA9PiAne3dh aXQsd2FpdF9zZWNvbmRzfScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBi L3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDkwYTMwMTYwNjUuLjJjNjQ1NGE1MWUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCkBAIC00ODAsMTAgKzQ4MCw2IEBAIGV4dGVybiB2b2lkIHByb2Nlc3Nfc2Vzc2lvbl9w cmVsb2FkX2xpYnJhcmllcyh2b2lkKTsKIGV4dGVybiB2b2lkIHBnX2JpbmR0ZXh0ZG9tYWluKGNv bnN0IGNoYXIgKmRvbWFpbik7CiBleHRlcm4gYm9vbCBoYXNfcm9scmVwbGljYXRpb24oT2lkIHJv bGVpZCk7CiAKLS8qIGluIGFjY2Vzcy90cmFuc2FtL3hsb2cuYyAqLwotZXh0ZXJuIGJvb2wgQmFj a3VwSW5Qcm9ncmVzcyh2b2lkKTsKLWV4dGVybiB2b2lkIENhbmNlbEJhY2t1cCh2b2lkKTsKLQog LyogaW4gZXhlY3V0b3Ivbm9kZUhhc2guYyAqLwogZXh0ZXJuIHNpemVfdCBnZXRfaGFzaF9tZW1v cnlfbGltaXQodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9U ZXN0L0NsdXN0ZXIucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBt CmluZGV4IDk0NjdhMTk5YzguLjU1ZGM2MGJhMmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Blcmwv UG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FM L1Rlc3QvQ2x1c3Rlci5wbQpAQCAtNTk4LDI1ICs1OTgsNiBAQCBzdWIgYmFja3VwCiAJcmV0dXJu OwogfQogCi09aXRlbSAkbm9kZS0+YmFja3VwX2ZzX2hvdChiYWNrdXBfbmFtZSkKLQotQ3JlYXRl IGEgYmFja3VwIHdpdGggYSBmaWxlc3lzdGVtIGxldmVsIGNvcHkgaW4gc3ViZGlyZWN0b3J5IEI8 YmFja3VwX25hbWU+IG9mCi1CPDwgJG5vZGUtPmJhY2t1cF9kaXIgPj4sIGluY2x1ZGluZyBXQUwu Ci0KLUFyY2hpdmluZyBtdXN0IGJlIGVuYWJsZWQsIGFzIEI8cGdfc3RhcnRfYmFja3VwKCk+IGFu ZCBCPHBnX3N0b3BfYmFja3VwKCk+IGFyZQotdXNlZC4gVGhpcyBpcyBub3QgY2hlY2tlZCBvciBl bmZvcmNlZC4KLQotVGhlIGJhY2t1cCBuYW1lIGlzIHBhc3NlZCBhcyB0aGUgYmFja3VwIGxhYmVs IHRvIEI8cGdfc3RhcnRfYmFja3VwKCk+LgotCi09Y3V0Ci0KLXN1YiBiYWNrdXBfZnNfaG90Ci17 Ci0JbXkgKCRzZWxmLCAkYmFja3VwX25hbWUpID0gQF87Ci0JJHNlbGYtPl9iYWNrdXBfZnMoJGJh Y2t1cF9uYW1lLCAxKTsKLQlyZXR1cm47Ci19Ci0KID1pdGVtICRub2RlLT5iYWNrdXBfZnNfY29s ZChiYWNrdXBfbmFtZSkKIAogQ3JlYXRlIGEgYmFja3VwIHdpdGggYSBmaWxlc3lzdGVtIGxldmVs IGNvcHkgaW4gc3ViZGlyZWN0b3J5IEI8YmFja3VwX25hbWU+IG9mCkBAIC02MzAsNTMgKzYxMSwx OCBAQCBVc2UgQjxiYWNrdXA+IG9yIEI8YmFja3VwX2ZzX2hvdD4gaWYgeW91IHdhbnQgdG8gYmFj ayB1cCBhIHJ1bm5pbmcgc2VydmVyLgogc3ViIGJhY2t1cF9mc19jb2xkCiB7CiAJbXkgKCRzZWxm LCAkYmFja3VwX25hbWUpID0gQF87Ci0JJHNlbGYtPl9iYWNrdXBfZnMoJGJhY2t1cF9uYW1lLCAw KTsKLQlyZXR1cm47Ci19Ci0KLQotIyBDb21tb24gc3ViIG9mIGJhY2t1cF9mc19ob3QgYW5kIGJh Y2t1cF9mc19jb2xkCi1zdWIgX2JhY2t1cF9mcwotewotCW15ICgkc2VsZiwgJGJhY2t1cF9uYW1l LCAkaG90KSA9IEBfOwotCW15ICRiYWNrdXBfcGF0aCA9ICRzZWxmLT5iYWNrdXBfZGlyIC4gJy8n IC4gJGJhY2t1cF9uYW1lOwotCW15ICRwb3J0ICAgICAgICA9ICRzZWxmLT5wb3J0OwotCW15ICRu YW1lICAgICAgICA9ICRzZWxmLT5uYW1lOwotCi0JcHJpbnQgIiMgVGFraW5nIGZpbGVzeXN0ZW0g YmFja3VwICRiYWNrdXBfbmFtZSBmcm9tIG5vZGUgXCIkbmFtZVwiXG4iOwotCi0JaWYgKCRob3Qp Ci0JewotCQlteSAkc3Rkb3V0ID0gJHNlbGYtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCQkJIlNF TEVDVCAqIEZST00gcGdfc3RhcnRfYmFja3VwKCckYmFja3VwX25hbWUnKTsiKTsKLQkJcHJpbnQg IiMgcGdfc3RhcnRfYmFja3VwOiAkc3Rkb3V0XG4iOwotCX0KIAogCVBvc3RncmVTUUw6OlRlc3Q6 OlJlY3Vyc2l2ZUNvcHk6OmNvcHlwYXRoKAogCQkkc2VsZi0+ZGF0YV9kaXIsCi0JCSRiYWNrdXBf cGF0aCwKKwkJJHNlbGYtPmJhY2t1cF9kaXIgLiAnLycgLiAkYmFja3VwX25hbWUsCiAJCWZpbHRl cmZuID0+IHN1YiB7CiAJCQlteSAkc3JjID0gc2hpZnQ7CiAJCQlyZXR1cm4gKCRzcmMgbmUgJ2xv ZycgYW5kICRzcmMgbmUgJ3Bvc3RtYXN0ZXIucGlkJyk7CiAJCX0pOwogCi0JaWYgKCRob3QpCi0J ewotCi0JCSMgV2UgaWdub3JlIHBnX3N0b3BfYmFja3VwJ3MgcmV0dXJuIHZhbHVlLiBXZSBhbHNv IGFzc3VtZSBhcmNoaXZpbmcKLQkJIyBpcyBlbmFibGVkOyBvdGhlcndpc2UgdGhlIGNhbGxlciB3 aWxsIGhhdmUgdG8gY29weSB0aGUgcmVtYWluaW5nCi0JCSMgc2VnbWVudHMuCi0JCW15ICRzdGRv dXQgPQotCQkgICRzZWxmLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCAqIEZST00gcGdf c3RvcF9iYWNrdXAoKTsnKTsKLQkJcHJpbnQgIiMgcGdfc3RvcF9iYWNrdXA6ICRzdGRvdXRcbiI7 Ci0JfQotCi0JcHJpbnQgIiMgQmFja3VwIGZpbmlzaGVkXG4iOwogCXJldHVybjsKIH0KIAotCi0K ID1wb2QKIAogPWl0ZW0gJG5vZGUtPmluaXRfZnJvbV9iYWNrdXAocm9vdF9ub2RlLCBiYWNrdXBf bmFtZSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDEwX2xvZ2ljYWxfZGVjb2Rp bmdfdGltZWxpbmVzLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTBfbG9naWNhbF9kZWNvZGlu Z190aW1lbGluZXMucGwKaW5kZXggNjhkOTRhYzkxYy4uMmU3YjcyNTkzZiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTBfbG9naWNhbF9kZWNvZGluZ190aW1lbGluZXMucGwKKysr IGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTBfbG9naWNhbF9kZWNvZGluZ190aW1lbGluZXMucGwK QEAgLTY5LDcgKzY5LDkgQEAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdkcm9wbWUnLAogJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDSEVDS1BPSU5UOycpOwogCiBteSAk YmFja3VwX25hbWUgPSAnYjEnOwotJG5vZGVfcHJpbWFyeS0+YmFja3VwX2ZzX2hvdCgkYmFja3Vw X25hbWUpOworJG5vZGVfcHJpbWFyeS0+c3RvcCgpOworJG5vZGVfcHJpbWFyeS0+YmFja3VwX2Zz X2NvbGQoJGJhY2t1cF9uYW1lKTsKKyRub2RlX3ByaW1hcnktPnN0YXJ0KCk7CiAKICRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXFbU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNh bF9yZXBsaWNhdGlvbl9zbG90KCdwaHlzX3Nsb3QnKTtdKTsKLS0gCjIuMTYuNgoK --_002_E87F96A89DBD4E8D8EE9A03B4F126119amazoncom_--