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 1l2gsK-0004Fk-C7 for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Jan 2021 20:48:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l2gsI-00057c-3Y for pgsql-hackers@arkaria.postgresql.org; Thu, 21 Jan 2021 20:48:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l2gsH-00057U-MI for pgsql-hackers@lists.postgresql.org; Thu, 21 Jan 2021 20:48:13 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l2gsE-0008Jd-59 for pgsql-hackers@lists.postgresql.org; Thu, 21 Jan 2021 20:48:12 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 8A54E21C2409; Thu, 21 Jan 2021 23:48:08 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1611262088; bh=kcnYYtZbPY9H52ScxaoTxYqk3belSCQb8/H+Ag1yGb8=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=babQnM37jVaEmPHgjiRPGxlZKiphlCSAqPsYocEqgv/GavHv2TlRTQ1XmXPcFLLWE qLeSB4i4pSpKZyn5sFhacLjNsktJjeUhDXVssbZSShpStyC6ZTMkpmC0yBpNqBjJ88 zXWhpPmcNPe7CjyYFYCQ8fpaAmTGMXbq7/xJ3vxQ= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_59d461260bab3ab4b82baf1df84559fc" Content-Transfer-Encoding: 7bit Date: Thu, 21 Jan 2021 23:48:08 +0300 From: Alexey Kondratov To: Michael Paquier Cc: Alvaro Herrera , Justin Pryzby , Peter Eisentraut , Masahiko Sawada , Steve Singer , pgsql-hackers@lists.postgresql.org, Robert Haas , Alexander Korotkov , Masahiko Sawada , Jose Luis Tallon Subject: Re: Allow CLUSTER, VACUUM FULL and REINDEX to change tablespace on the fly In-Reply-To: References: <03f88f70618ce73e75837b6125a143f7@postgrespro.ru> <20210120183439.GA21339@alvherre.pgsql> User-Agent: Roundcube Webmail/1.4.0 Message-ID: X-Sender: a.kondratov@postgrespro.ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_59d461260bab3ab4b82baf1df84559fc Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-01-21 17:06, Alexey Kondratov wrote: > On 2021-01-21 04:41, Michael Paquier wrote: > >> There are no tests for partitioned tables, aka we'd want to make sure >> that the new partitioned index is on the correct tablespace, as well >> as all its leaves. It may be better to have at least two levels of >> partitioned tables, as well as a partitioned table with no leaves in >> the cases dealt with. >> > > Yes, sure, it makes sense. > >> + * >> + * Even if a table's indexes were moved to a new tablespace, >> the index >> + * on its toast table is not normally moved. >> */ >> Still, REINDEX (TABLESPACE) TABLE should move all of them to be >> consistent with ALTER TABLE SET TABLESPACE, but that's not the case >> with this code, no? This requires proper test coverage, but there is >> nothing of the kind in this patch. > > You are right, we do not move TOAST indexes now, since > IsSystemRelation() is true for TOAST indexes, so I thought that we > should not allow moving them without allow_system_table_mods=true. Now > I wonder why ALTER TABLE does that. > > I am going to attach the new version of patch set today or tomorrow. > Attached is a new patch set of first two patches, that should resolve all the issues raised before (ACL, docs, tests) excepting TOAST. Double thanks for suggestion to add more tests with nested partitioning. I have found and squashed a huge bug related to the returning back to the default tablespace using newly added tests. Regarding TOAST. Now we skip moving toast indexes or throw error if someone wants to move TOAST index directly. I had a look on ALTER TABLE SET TABLESPACE and it has a bit complicated logic: 1) You cannot move TOAST table directly. 2) But if you move basic relation that TOAST table belongs to, then they are moved altogether. 3) Same logic as 2) happens if one does ALTER TABLE ALL IN TABLESPACE ... That way, ALTER TABLE allows moving TOAST tables (with indexes) implicitly, but does not allow doing that explicitly. In the same time I found docs to be vague about such behavior it only says: All tables in the current database in a tablespace can be moved by using the ALL IN TABLESPACE ... Note that system catalogs are not moved by this command Changing any part of a system catalog table is not permitted. So actually ALTER TABLE treats TOAST relations as system sometimes, but sometimes not. From the end user perspective it makes sense to move TOAST with main table when doing ALTER TABLE SET TABLESPACE. But should we touch indexes on TOAST table with REINDEX? We cannot move TOAST relation itself, since we are doing only a reindex, so we end up in the state when TOAST table and its index are placed in the different tablespaces. This state is not reachable with ALTER TABLE/INDEX, so it seem we should not allow it with REINDEX as well, should we? Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company --=_59d461260bab3ab4b82baf1df84559fc Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0002-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v3-0002-Allow-REINDEX-to-change-tablespace.patch; size=29351 RnJvbSBiY2Q2OTBkYTZiYzNkYjE2YTk2MzA1YjQ1NTQ2ZDNjOWU0MDBmNzY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMjMgTWFyIDIwMjAgMjE6MTA6MjkgKzAzMDAKU3ViamVjdDog W1BBVENIIHYzIDIvMl0gQWxsb3cgUkVJTkRFWCB0byBjaGFuZ2UgdGFibGVzcGFjZQoKUkVJTkRF WCBhbHJlYWR5IGRvZXMgZnVsbCByZWxhdGlvbiByZXdyaXRlLCB0aGlzIHBhdGNoIGFkZHMgYQpw b3NzaWJpbGl0eSB0byBzcGVjaWZ5IGEgbmV3IHRhYmxlc3BhY2Ugd2hlcmUgbmV3IHJlbGZpbGVu b2RlCndpbGwgYmUgY3JlYXRlZC4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAg ICAgICAgICAgICB8ICAyOSArKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAg ICAgICAgICB8ICA4MiArKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jICAgICAgICAgIHwgIDgxICsrKysrKysrKysrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAg ICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5z b3VyY2UgIHwgIDc5ICsrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNw YWNlLnNvdXJjZSB8IDE1NCArKysrKysrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQs IDQyNSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvcmVpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5k ZXggNjI3YjM2MzAwYy4uOTBmZGFkMGI0YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9y ZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTI3LDYg KzI3LDcgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlv bjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KIAogICAgIENPTkNVUlJFTlRMWSBbIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4gXQogICAg IFZFUkJPU0UgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFj ZWFibGU+IF0KKyAgICBUQUJMRVNQQUNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u ZXdfdGFibGVzcGFjZTwvcmVwbGFjZWFibGU+CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNk aXY+CiAKQEAgLTE4Nyw2ICsxODgsMjAgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PGxpdGVyYWw+VEFCTEVTUEFDRTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmllcyB0aGF0IGluZGV4ZXMgd2lsbCBiZSByZWJ1 aWx0IG9uIGEgbmV3IHRhYmxlc3BhY2UuCisgICAgICBDYW5ub3QgYmUgdXNlZCB3aXRoICJtYXBw ZWQiIGFuZCBzeXN0ZW0gKHVubGVzcyA8dmFybmFtZT5hbGxvd19zeXN0ZW1fdGFibGVfbW9kczwv dmFybmFtZT4KKyAgICAgIGlzIHNldCB0byA8bGl0ZXJhbD5UUlVFPC9saXRlcmFsPikgcmVsYXRp b25zLiBJZiA8bGl0ZXJhbD5TQ0hFTUE8L2xpdGVyYWw+LAorICAgICAgPGxpdGVyYWw+REFUQUJB U0U8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPlNZU1RFTTwvbGl0ZXJhbD4gYXJlIHNwZWNpZmllZCwg dGhlbgorICAgICAgYWxsICJtYXBwZWQiIGFuZCBzeXN0ZW0gcmVsYXRpb25zIHdpbGwgYmUgc2tp cHBlZCBhbmQgYSBzaW5nbGUKKyAgICAgIDxsaXRlcmFsPldBUk5JTkc8L2xpdGVyYWw+IHdpbGwg YmUgZ2VuZXJhdGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPlZFUkJPU0U8 L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTIxMCw2ICsyMjUsMTQgQEAgUkVJ TkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFi bGU+IFssIC4uLl0gKSBdIHsgSU4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB0YWJsZXNwYWNlIHdoZXJlIGluZGV4ZXMgd2lsbCBi ZSByZWJ1aWx0LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3QxPgogCkBAIC0yOTIsNyArMzE1LDEx IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3Jl cGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOCiAgICB3aXRoIDxjb21tYW5kPlJFSU5ERVggSU5E RVg8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPlJFSU5ERVggVEFCTEU8L2NvbW1hbmQ+LAogICAgcmVz cGVjdGl2ZWx5LiBFYWNoIHBhcnRpdGlvbiBvZiB0aGUgc3BlY2lmaWVkIHBhcnRpdGlvbmVkIHJl bGF0aW9uIGlzCiAgICByZWluZGV4ZWQgaW4gYSBzZXBhcmF0ZSB0cmFuc2FjdGlvbi4gVGhvc2Ug Y29tbWFuZHMgY2Fubm90IGJlIHVzZWQgaW5zaWRlCi0gICBhIHRyYW5zYWN0aW9uIGJsb2NrIHdo ZW4gd29ya2luZyBvbiBhIHBhcnRpdGlvbmVkIHRhYmxlIG9yIGluZGV4LgorICAgYSB0cmFuc2Fj dGlvbiBibG9jayB3aGVuIHdvcmtpbmcgb24gYSBwYXJ0aXRpb25lZCB0YWJsZSBvciBpbmRleC4g SWYKKyAgIDxjb21tYW5kPlJFSU5ERVg8L2NvbW1hbmQ+IHdpdGggPGxpdGVyYWw+VEFCTEVTUEFD RTwvbGl0ZXJhbD4gZXhlY3V0ZWQKKyAgIG9uIHBhcnRpdGlvbmVkIHJlbGF0aW9uIGZhaWxzIGl0 IG1heSBoYXZlIG1vdmVkIHNvbWUgcGFydGl0aW9ucyB0byB0aGUgbmV3CisgICB0YWJsZXNwYWNl LiBSZXBlYXRlZCBjb21tYW5kIHdpbGwgc3RpbGwgcmVpbmRleCBhbGwgcGFydGl0aW9ucyBldmVu IGlmIHRoZXkKKyAgIGFyZSBhbHJlYWR5IGluIHRoZSBuZXcgdGFibGVzcGFjZS4KICAgPC9wYXJh PgogCiAgIDxyZWZzZWN0MiBpZD0ic3FsLXJlaW5kZXgtY29uY3VycmVudGx5IiB4cmVmbGFiZWw9 IlJlYnVpbGRpbmcgSW5kZXhlcyBDb25jdXJyZW50bHkiPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGI4 Y2QzNWU5OTUuLmQ2NWI3OTdkZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTU3LDYgKzU3LDcgQEAK ICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv cHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKKyNpbmNsdWRlICJj b21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC03 MSw2ICs3Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgorI2luY2x1ZGUg InV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTEzOTQsOSArMTM5Niwx MyBAQCBpbmRleF91cGRhdGVfY29sbGF0aW9uX3ZlcnNpb25zKE9pZCByZWxpZCwgT2lkIGNvbGwp CiAgKiBDcmVhdGUgY29uY3VycmVudGx5IGFuIGluZGV4IGJhc2VkIG9uIHRoZSBkZWZpbml0aW9u IG9mIHRoZSBvbmUgcHJvdmlkZWQgYnkKICAqIGNhbGxlci4gIFRoZSBpbmRleCBpcyBpbnNlcnRl ZCBpbnRvIGNhdGFsb2dzIGFuZCBuZWVkcyB0byBiZSBidWlsdCBsYXRlcgogICogb24uICBUaGlz IGlzIGNhbGxlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4IHByb2Nlc3NpbmcuCisgKgorICog InRhYmxlc3BhY2VPaWQiIGlzIHRoZSBuZXcgdGFibGVzcGFjZSB0byB1c2UgZm9yIHRoaXMgaW5k ZXguCisgKiBJZiBJbnZhbGlkT2lkLCB1c2UgdGhlIGN1cnJlbnQgdGFibGVzcGFjZS4KICAqLwog T2lkCi1pbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9u LCBPaWQgb2xkSW5kZXhJZCwgY29uc3QgY2hhciAqbmV3TmFtZSkKK2luZGV4X2NvbmN1cnJlbnRs eV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAorCQkJ CQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLCBjb25zdCBjaGFyICpuZXdOYW1lKQogewogCVJlbGF0 aW9uCWluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqb2xkSW5mbywKQEAgLTE1MjYsNyArMTUz Miw4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRp b24sIE9pZCBvbGRJbmRleElkLCBjb25zdCBjaGFyCiAJCQkJCQkJICBuZXdJbmZvLAogCQkJCQkJ CSAgaW5kZXhDb2xOYW1lcywKIAkJCQkJCQkgIGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsYW0s Ci0JCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UsCisJCQkJCQkJ ICBPaWRJc1ZhbGlkKHRhYmxlc3BhY2VPaWQpID8KKwkJCQkJCQkJdGFibGVzcGFjZU9pZCA6IGlu ZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsdGFibGVzcGFjZSwKIAkJCQkJCQkgIGluZGV4UmVsYXRp b24tPnJkX2luZGNvbGxhdGlvbiwKIAkJCQkJCQkgIGluZGNsYXNzLT52YWx1ZXMsCiAJCQkJCQkJ ICBpbmRjb2xvcHRpb25zLT52YWx1ZXMsCkBAIC0zNTkxLDYgKzM1OTgsOCBAQCBJbmRleEdldFJl bGF0aW9uKE9pZCBpbmRleElkLCBib29sIG1pc3Npbmdfb2spCiAKIC8qCiAgKiByZWluZGV4X2lu ZGV4IC0gVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gcmVjcmVhdGUgYSBzaW5nbGUgaW5kZXgKKyAq CisgKiBTZWUgY29tbWVudHMgb2YgcmVpbmRleF9yZWxhdGlvbigpIGZvciBkZXRhaWxzIGFib3V0 ICJ0YWJsZXNwYWNlT2lkIi4KICAqLwogdm9pZAogcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwg Ym9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLApAQCAtMzYwMyw5 ICszNjEyLDIyIEBAIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJh aW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwKIAl2b2xhdGlsZSBib29sIHNraXBwZWRfY29u c3RyYWludCA9IGZhbHNlOwogCVBHUlVzYWdlCXJ1MDsKIAlib29sCQlwcm9ncmVzcyA9ICgocGFy YW1zLT5vcHRpb25zICYgUkVJTkRFWE9QVF9SRVBPUlRfUFJPR1JFU1MpICE9IDApOworCWJvb2wJ CXNldF90YWJsZXNwYWNlID0gT2lkSXNWYWxpZChwYXJhbXMtPnRhYmxlc3BhY2VPaWQpOwogCiAJ cGdfcnVzYWdlX2luaXQoJnJ1MCk7CiAKKwkvKiBDaGVjayBwZXJtaXNzaW9ucyBleGNlcHQgd2hl biB1c2luZyBkYXRhYmFzZSdzIGRlZmF1bHQgKi8KKwlpZiAoc2V0X3RhYmxlc3BhY2UgJiYgcGFy YW1zLT50YWJsZXNwYWNlT2lkICE9IE15RGF0YWJhc2VUYWJsZVNwYWNlKQorCXsKKwkJQWNsUmVz dWx0CWFjbHJlc3VsdDsKKworCQlhY2xyZXN1bHQgPSBwZ190YWJsZXNwYWNlX2FjbGNoZWNrKHBh cmFtcy0+dGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJCQkgICBHZXRVc2VySWQoKSwgQUNMX0NSRUFU RSk7CisJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQlhY2xjaGVja19lcnJvcihh Y2xyZXN1bHQsIE9CSkVDVF9UQUJMRVNQQUNFLAorCQkJCQkJICAgZ2V0X3RhYmxlc3BhY2VfbmFt ZShwYXJhbXMtPnRhYmxlc3BhY2VPaWQpKTsKKwl9CisKIAkvKgogCSAqIE9wZW4gYW5kIGxvY2sg dGhlIHBhcmVudCBoZWFwIHJlbGF0aW9uLiAgU2hhcmVMb2NrIGlzIHN1ZmZpY2llbnQgc2luY2UK IAkgKiB3ZSBvbmx5IG5lZWQgdG8gYmUgc3VyZSBubyBzY2hlbWEgb3IgZGF0YSBjaGFuZ2VzIGFy ZSBnb2luZyBvbi4KQEAgLTM2NTQsNiArMzY3NiwzNSBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRl eElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAJCQkg Z2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKGlSZWwpKSwKIAkJCSBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSk7CiAKKwkvKgorCSAqIFdlIGRvbid0IHN1cHBvcnQg bW92aW5nIHN5c3RlbSByZWxhdGlvbnMgaW50byBkaWZmZXJlbnQgdGFibGVzcGFjZXMKKwkgKiB1 bmxlc3MgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM9MS4KKwkgKi8KKwlpZiAoc2V0X3RhYmxlc3Bh Y2UgJiYKKwkJIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtUmVsYXRpb24oaVJlbCkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJ VklMRUdFKSwKKwkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgc3lz dGVtIGNhdGFsb2ciLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaVJlbCkpKSk7CisK KwkvKgorCSAqIFdlIGNhbm5vdCBzdXBwb3J0IG1vdmluZyBtYXBwZWQgcmVsYXRpb25zIGludG8g ZGlmZmVyZW50IHRhYmxlc3BhY2VzLgorCSAqIChJbiBwYXJ0aWN1bGFyIHRoaXMgZWxpbWluYXRl cyBhbGwgc2hhcmVkIGNhdGFsb2dzLikKKwkgKi8KKwlpZiAoc2V0X3RhYmxlc3BhY2UgJiYgUmVs YXRpb25Jc01hcHBlZChpUmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSB0 YWJsZXNwYWNlIG9mIG1hcHBlZCByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoaVJlbCkpKSk7CisKKwkvKiBJdCdzIG5vdCBhIHNoYXJlZCBjYXRhbG9nLCBz byByZWZ1c2UgdG8gbW92ZSBpdCB0byBzaGFyZWQgdGFibGVzcGFjZSAqLworCWlmIChwYXJhbXMt PnRhYmxlc3BhY2VPaWQgPT0gR0xPQkFMVEFCTEVTUEFDRV9PSUQpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJt c2coImNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRpb24gdG8gdGFibGVzcGFjZSBcIiVzXCIi LAorCQkJCQkgZ2V0X3RhYmxlc3BhY2VfbmFtZShwYXJhbXMtPnRhYmxlc3BhY2VPaWQpKSkpOwor CisKIAkvKgogCSAqIERvbid0IGFsbG93IHJlaW5kZXggb24gdGVtcCB0YWJsZXMgb2Ygb3RoZXIg YmFja2VuZHMgLi4uIHRoZWlyIGxvY2FsCiAJICogYnVmZmVyIG1hbmFnZXIgaXMgbm90IGdvaW5n IHRvIGNvcGUuCkBAIC0zNjgwLDYgKzM3MzEsMjUgQEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJ ZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAogCSAqLwog CUNoZWNrVGFibGVOb3RJblVzZShpUmVsLCAiUkVJTkRFWCBJTkRFWCIpOwogCisJLyoKKwkgKiBT ZXQgdGhlIG5ldyB0YWJsZXNwYWNlIGZvciB0aGUgcmVsYXRpb24uICBEbyB0aGF0IG9ubHkgaW4g dGhlCisJICogY2FzZSB3aGVyZSB0aGUgcmVpbmRleCBjYWxsZXIgd2lzaGVzIHRvIGVuZm9yY2Ug YSBuZXcgdGFibGVzcGFjZS4KKwkgKi8KKwlpZiAoc2V0X3RhYmxlc3BhY2UgJiYgU2V0UmVsVGFi bGVzcGFjZShpbmRleElkLCBwYXJhbXMtPnRhYmxlc3BhY2VPaWQpKQorCXsKKwkJLyoKKwkJICog TWFyayB0aGUgcmVsYXRpb24gYXMgcmVhZHkgdG8gYmUgZHJvcHBlZCBhdCB0cmFuc2FjdGlvbiBj b21taXQsCisJCSAqIGJlZm9yZSBtYWtpbmcgdmlzaWJsZSB0aGUgbmV3IHRhYmxlc3BhY2UgY2hh bmdlIHNvIGFzIHRoaXMgd29uJ3QKKwkJICogbWlzcyB0aGluZ3MuCisJCSAqLworCQlSZWxhdGlv bkRyb3BTdG9yYWdlKGlSZWwpOworCisJCVJlbGF0aW9uQXNzdW1lTmV3UmVsZmlsZW5vZGUoaVJl bCk7CisKKwkJLyogTWFrZSBzdXJlIHRoZSByZWx0YWJsZXNwYWNlIGNoYW5nZSBpcyB2aXNpYmxl ICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJfQorCiAJLyoKIAkgKiBBbGwgcHJl ZGljYXRlIGxvY2tzIG9uIHRoZSBpbmRleCBhcmUgYWJvdXQgdG8gYmUgbWFkZSBpbnZhbGlkLiBQ cm9tb3RlCiAJICogdGhlbSB0byByZWxhdGlvbiBsb2NrcyBvbiB0aGUgaGVhcC4KQEAgLTM4MTQs NiArMzg4NCw5IEBAIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJh aW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwKICAqIHJlaW5kZXhfcmVsYXRpb24gLSBUaGlz IHJvdXRpbmUgaXMgdXNlZCB0byByZWNyZWF0ZSBhbGwgaW5kZXhlcwogICogb2YgYSByZWxhdGlv biAoYW5kIG9wdGlvbmFsbHkgaXRzIHRvYXN0IHJlbGF0aW9uIHRvbywgaWYgYW55KS4KICAqCisg KiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIHRhYmxlc3BhY2Ugd2hlcmUgdGhlIHJlbGF0aW9uJ3Mg aW5kZXhlcyB3aWxsIGJlCisgKiByZWJ1aWx0LCBvciBJbnZhbGlkT2lkIHRvIGtlZXAgZWFjaCBp bmRleCBvbiBpdHMgY3VycmVudCB0YWJsZXNwYWNlLgorICoKICAqICJmbGFncyIgaXMgYSBiaXRt YXNrIHRoYXQgY2FuIGluY2x1ZGUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZXNlIGJpdHM6CiAgKgog ICogUkVJTkRFWF9SRUxfUFJPQ0VTU19UT0FTVDogaWYgdHJ1ZSwgcHJvY2VzcyB0aGUgdG9hc3Qg dGFibGUgdG9vIChpZiBhbnkpLgpAQCAtMzk2NCwxMCArNDAzNywxNSBAQCByZWluZGV4X3JlbGF0 aW9uKE9pZCByZWxpZCwgaW50IGZsYWdzLCBSZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJCS8qCiAJ CSAqIE5vdGUgdGhhdCB0aGlzIHNob3VsZCBmYWlsIGlmIHRoZSB0b2FzdCByZWxhdGlvbiBpcyBt aXNzaW5nLCBzbwogCQkgKiByZXNldCBSRUlOREVYT1BUX01JU1NJTkdfT0suCisJCSAqCisJCSAq IEV2ZW4gaWYgYSB0YWJsZSdzIGluZGV4ZXMgd2VyZSBtb3ZlZCB0byBhIG5ldyB0YWJsZXNwYWNl LCB0aGUgaW5kZXgKKwkJICogb24gaXRzIHRvYXN0IHRhYmxlIGlzIG5vdCBub3JtYWxseSBtb3Zl ZC4KIAkJICovCiAJCVJlaW5kZXhQYXJhbXMgbmV3cGFyYW1zID0gKnBhcmFtczsKIAogCQluZXdw YXJhbXMub3B0aW9ucyAmPSB+KFJFSU5ERVhPUFRfTUlTU0lOR19PSyk7CisJCWlmICghYWxsb3dT eXN0ZW1UYWJsZU1vZHMpCisJCQluZXdwYXJhbXMudGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7 CiAJCXJlc3VsdCB8PSByZWluZGV4X3JlbGF0aW9uKHRvYXN0X3JlbGlkLCBmbGFncywgJm5ld3Bh cmFtcyk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGY5ZjNmZjNiNjIuLjNl OGMzY2JmZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0yNDc0LDYgKzI0NzQsNyBA QCBFeGVjUmVpbmRleChQYXJzZVN0YXRlICpwc3RhdGUsIFJlaW5kZXhTdG10ICpzdG10LCBib29s IGlzVG9wTGV2ZWwpCiAJTGlzdENlbGwgICAqbGM7CiAJYm9vbAkJY29uY3VycmVudGx5ID0gZmFs c2U7CiAJYm9vbAkJdmVyYm9zZSA9IGZhbHNlOworCWNoYXIJCSp0YWJsZXNwYWNlID0gTlVMTDsK IAogCS8qIFBhcnNlIG9wdGlvbiBsaXN0ICovCiAJZm9yZWFjaChsYywgc3RtdC0+cGFyYW1zKQpA QCAtMjQ4NCw2ICsyNDg1LDggQEAgRXhlY1JlaW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZWlu ZGV4U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJdmVyYm9zZSA9IGRlZkdldEJvb2xl YW4ob3B0KTsKIAkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgImNvbmN1cnJlbnRseSIp ID09IDApCiAJCQljb25jdXJyZW50bHkgPSBkZWZHZXRCb29sZWFuKG9wdCk7CisJCWVsc2UgaWYg KHN0cmNtcChvcHQtPmRlZm5hbWUsICJ0YWJsZXNwYWNlIikgPT0gMCkKKwkJCXRhYmxlc3BhY2Ug PSBkZWZHZXRTdHJpbmcob3B0KTsKIAkJZWxzZQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtMjUwMCw2ICsyNTAzLDkgQEAgRXhlY1Jl aW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZWluZGV4U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExl dmVsKQogCQkodmVyYm9zZSA/IFJFSU5ERVhPUFRfVkVSQk9TRSA6IDApIHwKIAkJKGNvbmN1cnJl bnRseSA/IFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZIDogMCk7CiAKKwlwYXJhbXMudGFibGVzcGFj ZU9pZCA9IHRhYmxlc3BhY2UgIT0gTlVMTCA/CisJCWdldF90YWJsZXNwYWNlX29pZCh0YWJsZXNw YWNlLCBmYWxzZSkgOiBJbnZhbGlkT2lkOworCiAJc3dpdGNoIChzdG10LT5raW5kKQogCXsKIAkJ Y2FzZSBSRUlOREVYX09CSkVDVF9JTkRFWDoKQEAgLTI3MjksNyArMjczNSwxMCBAQCBSZWluZGV4 TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVpbmRleE9iamVjdFR5cGUg b2JqZWN0S2luZCwKIAlNZW1vcnlDb250ZXh0IG9sZDsKIAlMaXN0CSAgICpyZWxpZHMgPSBOSUw7 CiAJaW50CQkJbnVtX2tleXM7CisKIAlib29sCQljb25jdXJyZW50X3dhcm5pbmcgPSBmYWxzZTsK Kwlib29sCQl0YWJsZXNwYWNlX3dhcm5pbmcgPSBmYWxzZTsKKwlib29sCQltYXBwZWRfd2Fybmlu ZyA9IGZhbHNlOwogCiAJQXNzZXJ0QXJnKG9iamVjdE5hbWUpOwogCUFzc2VydChvYmplY3RLaW5k ID09IFJFSU5ERVhfT0JKRUNUX1NDSEVNQSB8fApAQCAtMjg1Niw2ICsyODY1LDM1IEBAIFJlaW5k ZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlw ZSBvYmplY3RLaW5kLAogCQkJY29udGludWU7CiAJCX0KIAorCQlpZiAoT2lkSXNWYWxpZChwYXJh bXMtPnRhYmxlc3BhY2VPaWQpICYmCisJCQlJc1N5c3RlbUNsYXNzKHJlbGlkLCBjbGFzc3R1cGxl KSkKKwkJeworCQkJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcykKKwkJCXsKKwkJCQkvKiBTa2lw IGFsbCBzeXN0ZW0gcmVsYXRpb25zLCBpZiBub3QgYWxsb3dTeXN0ZW1UYWJsZU1vZHMgKi8KKwkJ CQlpZiAoIXRhYmxlc3BhY2Vfd2FybmluZykKKwkJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCQkJIGVycm1z ZygiY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNlIG9mIGluZGV4ZXMgb24gc3lzdGVtIHJlbGF0aW9u cywgc2tpcHBpbmcgYWxsIikpKTsKKwkJCQl0YWJsZXNwYWNlX3dhcm5pbmcgPSB0cnVlOworCQkJ CWNvbnRpbnVlOworCQkJfQorCQkJZWxzZSBpZiAoIU9pZElzVmFsaWQoY2xhc3N0dXBsZS0+cmVs ZmlsZW5vZGUpKQorCQkJeworCQkJCS8qCisJCQkJICogU2tpcCBhbGwgbWFwcGVkIHJlbGF0aW9u cyBpZiBUQUJMRVNQQUNFIGlzIHNwZWNpZmllZC4KKwkJCQkgKiBPaWRJc1ZhbGlkKHJlbGZpbGVu b2RlKSBjaGVja3MgdGhhdCwgc2ltaWxhciB0bworCQkJCSAqIFJlbGF0aW9uSXNNYXBwZWQoKS4K KwkJCQkgKi8KKwkJCQlpZiAoIW1hcHBlZF93YXJuaW5nKQorCQkJCQllcmVwb3J0KFdBUk5JTkcs CisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJ CSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRleGVzIG9uIG1hcHBlZCBy ZWxhdGlvbnMsIHNraXBwaW5nIGFsbCIpKSk7CisJCQkJbWFwcGVkX3dhcm5pbmcgPSB0cnVlOwor CQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKIAkJLyogU2F2ZSB0aGUgbGlzdCBvZiByZWxhdGlv biBPSURzIGluIHByaXZhdGUgY29udGV4dCAqLwogCQlvbGQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocHJpdmF0ZV9jb250ZXh0KTsKIApAQCAtMjkyNiw2ICsyOTY0LDE5IEBAIFJlaW5kZXhQYXJ0 aXRpb25zKE9pZCByZWxpZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zLCBib29sIGlzVG9wTGV2ZWwp CiAJQXNzZXJ0KHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCB8fAogCQkgICBy ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOwogCisJLyogQ2hlY2sgcGVybWlz c2lvbnMgZXhjZXB0IHdoZW4gdXNpbmcgZGF0YWJhc2UncyBkZWZhdWx0ICovCisJaWYgKE9pZElz VmFsaWQocGFyYW1zLT50YWJsZXNwYWNlT2lkKQorCQkmJiBwYXJhbXMtPnRhYmxlc3BhY2VPaWQg IT0gTXlEYXRhYmFzZVRhYmxlU3BhY2UpCisJeworCQlBY2xSZXN1bHQJYWNscmVzdWx0OworCisJ CWFjbHJlc3VsdCA9IHBnX3RhYmxlc3BhY2VfYWNsY2hlY2socGFyYW1zLT50YWJsZXNwYWNlT2lk LAorCQkJCQkJCQkJCSAgIEdldFVzZXJJZCgpLCBBQ0xfQ1JFQVRFKTsKKwkJaWYgKGFjbHJlc3Vs dCAhPSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1RB QkxFU1BBQ0UsCisJCQkJCQkgICBnZXRfdGFibGVzcGFjZV9uYW1lKHBhcmFtcy0+dGFibGVzcGFj ZU9pZCkpOworCX0KKwogCS8qCiAJICogQ2hlY2sgaWYgdGhpcyBydW5zIGluIGEgdHJhbnNhY3Rp b24gYmxvY2ssIHdpdGggYW4gZXJyb3IgY2FsbGJhY2sgdG8KIAkgKiBwcm92aWRlIG1vcmUgY29u dGV4dCB1bmRlciB3aGljaCBhIHByb2JsZW0gaGFwcGVucy4KQEAgLTI5NjksOSArMzAyMCwyNyBA QCBSZWluZGV4UGFydGl0aW9ucyhPaWQgcmVsaWQsIFJlaW5kZXhQYXJhbXMgKnBhcmFtcywgYm9v bCBpc1RvcExldmVsKQogCQlNZW1vcnlDb250ZXh0IG9sZF9jb250ZXh0OwogCiAJCS8qCi0JCSAq IFRoaXMgZGlzY2FyZHMgcGFydGl0aW9uZWQgdGFibGVzLCBwYXJ0aXRpb25lZCBpbmRleGVzIGFu ZCBmb3JlaWduCi0JCSAqIHRhYmxlcy4KKwkJICogRm9yZWlnbiB0YWJsZXMgYW5kIHBhcnRpdGlv bmVkIHJlbGF0aW9ucyBhcmUgbm90IHRoZW1zZWx2ZXMKKwkJICogcmVpbmRleGVkIC0gbGVhZiBw YXJ0aXRpb25zIGFyZSBwcm9jZXNzZWQgZGlyZWN0bHkuICBCdXQgYW55CisJCSAqIHRhYmxlc3Bh Y2UgY2hhbmdlIGlzIHJlY29yZGVkIGluIHRoZSBjYXRhbG9nIGZvciBwYXJ0aXRpb25lZAorCQkg KiByZWxhdGlvbnMuCiAJCSAqLworCQlpZiAocGFydGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05F RF9JTkRFWCkKKwkJCSh2b2lkKSBTZXRSZWxUYWJsZXNwYWNlKHBhcnRvaWQsIHBhcmFtcy0+dGFi bGVzcGFjZU9pZCk7CisJCWVsc2UgaWYgKHBhcnRraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURf VEFCTEUpCisJCXsKKwkJCVJlbGF0aW9uIHJlbCA9IHRhYmxlX29wZW4ocGFydG9pZCwgU2hhcmVM b2NrKTsKKwkJCUxpc3QJKmluZGV4SWRzID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKwkJ CUxpc3RDZWxsICpsYzsKKworCQkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCQkJZm9yZWFj aCAobGMsIGluZGV4SWRzKQorCQkJeworCQkJCU9pZCBpbmRleGlkID0gbGZpcnN0X29pZChsYyk7 CisJCQkJKHZvaWQpIFNldFJlbFRhYmxlc3BhY2UoaW5kZXhpZCwgcGFyYW1zLT50YWJsZXNwYWNl T2lkKTsKKwkJCX0KKwkJfQorCiAJCWlmICghUkVMS0lORF9IQVNfU1RPUkFHRShwYXJ0a2luZCkp CiAJCQljb250aW51ZTsKIApAQCAtMzM5MCw2ICszNDU5LDEzIEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIFJlaW5kZXhQYXJhbXMgKnBhcmFtcykKIAkJcmV0 dXJuIGZhbHNlOwogCX0KIAorCS8qIEl0J3Mgbm90IGEgc2hhcmVkIGNhdGFsb2csIHNvIHJlZnVz ZSB0byBtb3ZlIGl0IHRvIHNoYXJlZCB0YWJsZXNwYWNlICovCisJaWYgKHBhcmFtcy0+dGFibGVz cGFjZU9pZCA9PSBHTE9CQUxUQUJMRVNQQUNFX09JRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fu bm90IG1vdmUgbm9uLXNoYXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlIFwiJXNcIiIsCisJCQkJ CSBnZXRfdGFibGVzcGFjZV9uYW1lKHBhcmFtcy0+dGFibGVzcGFjZU9pZCkpKSk7CisKIAlBc3Nl cnQoaGVhcFJlbGF0aW9uSWRzICE9IE5JTCk7CiAKIAkvKi0tLS0tCkBAIC0zNDYxLDYgKzM1Mzcs NyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBSZWluZGV4 UGFyYW1zICpwYXJhbXMpCiAJCS8qIENyZWF0ZSBuZXcgaW5kZXggZGVmaW5pdGlvbiBiYXNlZCBv biBnaXZlbiBpbmRleCAqLwogCQluZXdJbmRleElkID0gaW5kZXhfY29uY3VycmVudGx5X2NyZWF0 ZV9jb3B5KGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkJaWR4LT5pbmRleElkLAorCQkJCQkJCQkJCQkJ CXBhcmFtcy0+dGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJCQkJCQljb25jdXJyZW50TmFtZSk7CiAK IAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuYwppbmRleCAxN2Y3MjY1MDM4Li5hNzU2NDdiMWNjIDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5jCkBAIC0zNjQxLDcgKzM2NDEsOSBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hh ciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkgKiBvbmUgd29yZCwgc28gdGhlIGFib3Zl IHRlc3QgaXMgY29ycmVjdC4KIAkJICovCiAJCWlmIChlbmRzX3dpdGgocHJldl93ZCwgJygnKSB8 fCBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKLQkJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRM WSIsICJWRVJCT1NFIik7CisJCQlDT01QTEVURV9XSVRIKCJDT05DVVJSRU5UTFkiLCAiVEFCTEVT UEFDRSIsICJWRVJCT1NFIik7CisJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJUQUJMRVNQQUNFIikp CisJCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc3BhY2VzKTsK IAl9CiAKIC8qIFNFQ1VSSVRZIExBQkVMICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggMjY2Zjg5NTBk Yy4uNTZlNDAzYWM2MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMzMsNiArMzMsNyBAQCB0eXBlZGVm IGVudW0KIHR5cGVkZWYgc3RydWN0IFJlaW5kZXhQYXJhbXMKIHsKIAliaXRzMzIJCW9wdGlvbnM7 CQkvKiBiaXRtYXNrIG9mIFJFSU5ERVhPUFRfKiAqLworCU9pZCAgdGFibGVzcGFjZU9pZDsJCQkJ CS8qIHRhYmxlc3BhY2UgdG8gcmVidWlsZCBpbmRleCAqLwogfSBSZWluZGV4UGFyYW1zOwogCiAv KiBmbGFnIGJpdHMgZm9yIFJlaW5kZXhQYXJhbXMtPmZsYWdzICovCkBAIC05Miw2ICs5Myw3IEBA IGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogZXh0ZXJu IE9pZAlpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCQkJCQkJCQkJCSAgIE9pZCBvbGRJbmRleElkLAorCQkJCQkJCQkJCSAgIE9pZCB0YWJsZXNw YWNlT2lkLAogCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm5ld05hbWUpOwogCiBleHRlcm4gdm9p ZCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSBiL3NyYy90ZXN0L3Jl Z3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UKaW5kZXggMWExODEwMTZkNy4uMWFjM2E4NmJl YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCkBAIC0xNyw2ICsx Nyw3NCBAQCBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgU0VUIChzb21lX25vbmV4 aXN0ZW50X3BhcmFtZXRlciA9IHRydWUpOyAgLS0gZgogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlIFJFU0VUIChyYW5kb21fcGFnZV9jb3N0ID0gMi4wKTsgLS0gZmFpbAogQUxURVIg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFU0VUIChyYW5kb21fcGFnZV9jb3N0LCBlZmZl Y3RpdmVfaW9fY29uY3VycmVuY3kpOyAtLSBvawogCistLSBjcmVhdGUgdGFibGUgdG8gdGVzdCBS RUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNw YWNlX3Rlc3RfdGJsIChudW0xIGJpZ2ludCwgbnVtMiBkb3VibGUgcHJlY2lzaW9uLCBudW0zIGRv dWJsZSBwcmVjaXNpb24pOworSU5TRVJUIElOVE8gcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAo bnVtMSwgbnVtMiwgbnVtMykKKyAgU0VMRUNUIHJvdW5kKHJhbmRvbSgpKjEwMCksIHJhbmRvbSgp LCByYW5kb20oKSo0MgorICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCkgcyhpKTsKK0NS RUFURSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeCBPTiByZWdyZXNzX3RibHNw YWNlX3Rlc3RfdGJsIChudW0xKTsKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf cHQoY29sMSBpbnQsIGNvbDIgaW50KSBQQVJUSVRJT04gQlkgSEFTSCAoY29sMSk7CitDUkVBVEUg VEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzEKKyAgUEFSVElUSU9OIE9GIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF9wdAorICBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgMiwgcmVtYWluZGVy IDApCisgIFBBUlRJVElPTiBCWSBIQVNIIChjb2wyKTsKK0NSRUFURSBJTkRFWCByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfcHRfaWR4XzEgT04gcmVncmVzc190YmxzcGFjZV90ZXN0X3B0IChjb2wxKTsK K0NSRUFURSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzIgT04gcmVncmVzc190 YmxzcGFjZV90ZXN0X3B0IChjb2wyKTsKKworLS0gY2hlY2sgdGhhdCBSRUlOREVYIHdpdGggVEFC TEVTUEFDRSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbAorQkVHSU47CitSRUlOREVYIChUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4 OworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsOworUk9MTEJBQ0s7CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNz CitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVS RSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisKKy0tIGZpcnN0LCBsZXQgdXMgcmVpbmRl eCBhbmQgbW92ZSB0aGUgZW50aXJlIGRhdGFiYXNlLCBhZnRlciB0aGF0IHJldHVybiBldmVyeXRo aW5nIGJhY2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgREFUQUJBU0Ug cmVncmVzc2lvbjsgLS0gb2sgd2l0aCB3YXJuaW5nCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2Rl ZmF1bHQpIERBVEFCQVNFIHJlZ3Jlc3Npb247IC0tIG9rIHdpdGggd2FybmluZworU0VMRUNUIHJl bG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9N IHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworCistLSBw YXJ0aXRpb25lZCBpbmRleGVzIGFyZSBub3QgZGlyZWN0bHkgcmVpbmRleGVkLCBidXQgd2Ugc3Rp bGwgaGF2ZSB0byBzZXQgcHJvcGVyCistLSB0YWJsZXNwYWNlIGluIHBnX2NsYXNzIGZvciB0aGVt CitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF9wdDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8xOyAtLSBvaworUkVJTkRFWCAo VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf cHRfaWR4XzI7IC0tIG9rCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0 YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdy ZWdyZXNzX3RibHNwYWNlJyk7CisKKy0tIGluZGV4ZXMgZm9yIG5ldyBwYXJ0aXRpb25zIHNob3Vs ZCBiZSBjcmVhdGVkIGluIHRoZSBuZXcgdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF9wdF8yCisgIFBBUlRJVElPTiBPRiByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf cHQKKyAgRk9SIFZBTFVFUyBXSVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAxKTsKK0NSRUFURSBU QUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV8xCisgIFBBUlRJVElPTiBPRiByZWdyZXNz X3RibHNwYWNlX3Rlc3RfcHRfMQorICBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgMiwgcmVtYWlu ZGVyIDApOworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFj ZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190 YmxzcGFjZScpOworCistLSBjaGVjayBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK1JF SU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFj ZV90ZXN0X3RibF9pZHg7IC0tIG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2UpIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIG9rCitSRUlOREVYIChUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHBnX2F1dGhpZDsgLS0gZmFpbAorUkVJTkRF WCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBTWVNURU0gQ09OQ1VSUkVOVExZIHBvc3Rn cmVzOyAtLSBmYWlsCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxF IENPTkNVUlJFTlRMWSBwZ19hbTsgLS0gZmFpbAorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19nbG9i YWwpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBmYWlsCitSRUlOREVY IChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHBnX2FtOyAtLSBmYWlsCisKKy0t IGNoZWNrIHRoYXQgYWxsIHJlbGF0aW9ucyBtb3ZlZCB0byBuZXcgdGFibGVzcGFjZQorU0VMRUNU IHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBG Uk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpCitPUkRF UiBCWSByZWxuYW1lOworCistLSBtb3ZlIGluZGV4ZXMgYmFjayB0byBwZ19kZWZhdWx0IHRhYmxl c3BhY2UKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgQ09OQ1VSUkVOVExZ IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHBn X2RlZmF1bHQpIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdDsgLS0gb2sKKworLS0gY2hl Y2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIGJhY2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJl bG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9N IHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworCiAtLSBj cmVhdGUgYSBzY2hlbWEgd2UgY2FuIHVzZQogQ1JFQVRFIFNDSEVNQSB0ZXN0c2NoZW1hOwogCkBA IC05Niw2ICsxNjQsMTQgQEAgU0VMRUNUIHJlbG5hbWUsIHNwY25hbWUgRlJPTSBwZ19jYXRhbG9n LnBnX3RhYmxlc3BhY2UgdCwgcGdfY2F0YWxvZy5wZ19jbGFzcyBjCiBcZCB0ZXN0c2NoZW1hLnBh cnRfYV9pZHgKIFxkKyB0ZXN0c2NoZW1hLnBhcnRfYV9pZHgKIAorLS0gUkVJTkRFWCBwYXJ0aXRp b25lZCBpbmRleGVzIHRvIG5ldyB0YWJsZXNwYWNlCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2Rl ZmF1bHQpIFRBQkxFIHRlc3RzY2hlbWEucGFydDsKK1xkIHRlc3RzY2hlbWEucGFydAorXGQgdGVz dHNjaGVtYS5wYXJ0MQorUkVJTkRFWCAoQ09OQ1VSUkVOVExZLCBUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGJsc3BhY2UpIElOREVYIHRlc3RzY2hlbWEucGFydF9hX2lkeDsKK1xkIHRlc3RzY2hlbWEucGFy dAorXGQgdGVzdHNjaGVtYS5wYXJ0MQorCiAtLSBwYXJ0aXRpb25lZCByZWxzIGNhbm5vdCBzcGVj aWZ5IHRoZSBkZWZhdWx0IHRhYmxlc3BhY2UuICBUaGVzZSBmYWlsOgogQ1JFQVRFIFRBQkxFIHRl c3RzY2hlbWEuZGZsdCAoYSBpbnQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBMSVNUIChhKSBU QUJMRVNQQUNFIHBnX2RlZmF1bHQ7CiBDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0IChhIGlu dCBQUklNQVJZIEtFWSBVU0lORyBJTkRFWCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFBBUlRJVElP TiBCWSBMSVNUIChhKTsKQEAgLTI4Miw2ICszNTgsOSBAQCBBTFRFUiBUQUJMRSBBTEwgSU4gVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVs dAogLS0gU2hvdWxkIHN1Y2NlZWQKIERST1AgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3Jl bmFtZWQ7CiAKK0RST1AgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsKK0RST1AgVEFC TEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0OworCiBEUk9QIFNDSEVNQSB0ZXN0c2NoZW1hIENB U0NBREU7CiAKIERST1AgUk9MRSByZWdyZXNzX3RhYmxlc3BhY2VfdXNlcjE7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZSBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlCmluZGV4IDk0YzVmMDIzYzYuLmQ0ZDA0ZTRi NzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNl CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlCkBAIC0yMCw2 ICsyMCwxMTcgQEAgRVJST1I6ICB1bnJlY29nbml6ZWQgcGFyYW1ldGVyICJzb21lX25vbmV4aXN0 ZW50X3BhcmFtZXRlciIKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAo cmFuZG9tX3BhZ2VfY29zdCA9IDIuMCk7IC0tIGZhaWwKIEVSUk9SOiAgUkVTRVQgbXVzdCBub3Qg aW5jbHVkZSB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190 YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCwgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5 KTsgLS0gb2sKKy0tIGNyZWF0ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNF IGNoYW5nZQorQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmln aW50LCBudW0yIGRvdWJsZSBwcmVjaXNpb24sIG51bTMgZG91YmxlIHByZWNpc2lvbik7CitJTlNF UlQgSU5UTyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCBudW0zKQorICBT RUxFQ1Qgcm91bmQocmFuZG9tKCkqMTAwKSwgcmFuZG9tKCksIHJhbmRvbSgpKjQyCisgIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBzKGkpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF90YmxfaWR4IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEpOwor Q1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdChjb2wxIGludCwgY29sMiBpbnQp IFBBUlRJVElPTiBCWSBIQVNIIChjb2wxKTsKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNwYWNl X3Rlc3RfcHRfMQorICBQQVJUSVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0CisgIEZP UiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMCkKKyAgUEFSVElUSU9OIEJZIEhB U0ggKGNvbDIpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMSBP TiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQgKGNvbDEpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF9wdF9pZHhfMiBPTiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQgKGNvbDIp OworLS0gY2hlY2sgdGhhdCBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UgaXMgdHJhbnNh Y3Rpb25hbAorQkVHSU47CitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElO REVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworUkVJTkRFWCAoVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOworUk9MTEJB Q0s7CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShT RUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNw YWNlJyk7CisgcmVsbmFtZSAKKy0tLS0tLS0tLQorKDAgcm93cykKKworLS0gZmlyc3QsIGxldCB1 cyByZWluZGV4IGFuZCBtb3ZlIHRoZSBlbnRpcmUgZGF0YWJhc2UsIGFmdGVyIHRoYXQgcmV0dXJu IGV2ZXJ5dGhpbmcgYmFjaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBE QVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdhcm5pbmcKK1dBUk5JTkc6ICBjYW5ub3Qg Y2hhbmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhlcyBvbiBzeXN0ZW0gcmVsYXRpb25zLCBza2lwcGlu ZyBhbGwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgREFUQUJBU0UgcmVncmVzc2lv bjsgLS0gb2sgd2l0aCB3YXJuaW5nCitXQVJOSU5HOiAgY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNl IG9mIGluZGV4ZXMgb24gc3lzdGVtIHJlbGF0aW9ucywgc2tpcHBpbmcgYWxsCitTRUxFQ1QgcmVs bmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00g cGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisgcmVsbmFt ZSAKKy0tLS0tLS0tLQorKDAgcm93cykKKworLS0gcGFydGl0aW9uZWQgaW5kZXhlcyBhcmUgbm90 IGRpcmVjdGx5IHJlaW5kZXhlZCwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gc2V0IHByb3BlcgorLS0g dGFibGVzcGFjZSBpbiBwZ19jbGFzcyBmb3IgdGhlbQorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7IC0tIG9rCitSRUlO REVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2Vf dGVzdF9wdF9pZHhfMTsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yOyAtLSBvaworU0VMRUNUIHJl bG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9N IHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworICAgICAg ICAgICAgICAgcmVsbmFtZSAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMQorIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF9wdF9pZHhfMgorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xX2NvbDFf aWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfY29sMl9pZHgKKyg0IHJvd3MpCisKKy0t IGluZGV4ZXMgZm9yIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBjcmVhdGVkIGluIHRoZSBuZXcg dGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yCisgIFBB UlRJVElPTiBPRiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQKKyAgRk9SIFZBTFVFUyBXSVRIICht b2R1bHVzIDIsIHJlbWFpbmRlciAxKTsKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rl c3RfcHRfMV8xCisgIFBBUlRJVElPTiBPRiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMQorICBG T1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgMiwgcmVtYWluZGVyIDApOworU0VMRUNUIHJlbG5hbWUg RlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3Rh Ymxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworICAgICAgICAgICAg ICAgIHJlbG5hbWUgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzEKKyByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfcHRfaWR4XzIKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMl9jb2wxX2lk eAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yX2NvbDJfaWR4CisgcmVncmVzc190YmxzcGFj ZV90ZXN0X3B0XzFfMV9jb2wxX2lkeAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xX2NvbDFf aWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfMV9jb2wyX2lkeAorIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF9wdF8xX2NvbDJfaWR4CisoOCByb3dzKQorCistLSBjaGVjayBSRUlOREVYIHdp dGggVEFCTEVTUEFDRSBjaGFuZ2UKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7IC0tIG9rCitSRUlOREVYIChU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90 Ymw7IC0tIG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHBn X2F1dGhpZDsgLS0gZmFpbAorRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZDogInBnX2F1dGhpZF9y b2xuYW1lX2luZGV4IiBpcyBhIHN5c3RlbSBjYXRhbG9nCitSRUlOREVYIChUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2UpIFNZU1RFTSBDT05DVVJSRU5UTFkgcG9zdGdyZXM7IC0tIGZhaWwKK0VS Uk9SOiAgY2Fubm90IHJlaW5kZXggc3lzdGVtIGNhdGFsb2dzIGNvbmN1cnJlbnRseQorUkVJTkRF WCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBDT05DVVJSRU5UTFkgcGdfYW07 IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IHJlaW5kZXggc3lzdGVtIGNhdGFsb2dzIGNvbmN1cnJl bnRseQorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19nbG9iYWwpIElOREVYIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF90YmxfaWR4OyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQg cmVsYXRpb24gdG8gdGFibGVzcGFjZSAicGdfZ2xvYmFsIgorUkVJTkRFWCAoVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBwZ19hbTsgLS0gZmFpbAorRVJST1I6ICBwZXJtaXNzaW9u IGRlbmllZDogInBnX2FtX25hbWVfaW5kZXgiIGlzIGEgc3lzdGVtIGNhdGFsb2cKKy0tIGNoZWNr IHRoYXQgYWxsIHJlbGF0aW9ucyBtb3ZlZCB0byBuZXcgdGFibGVzcGFjZQorU0VMRUNUIHJlbG5h bWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBn X3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpCitPUkRFUiBCWSBy ZWxuYW1lOworICAgICAgICAgICAgICAgIHJlbG5hbWUgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf cHRfMV8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfMV9jb2wyX2lkeAor IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90 ZXN0X3B0XzFfY29sMl9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMl9jb2wxX2lkeAor IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yX2NvbDJfaWR4CisgcmVncmVzc190YmxzcGFjZV90 ZXN0X3B0X2lkeF8xCisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yCisgcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibF9pZHgKKyg5IHJvd3MpCisKKy0tIG1vdmUgaW5kZXhlcyBiYWNrIHRv IHBnX2RlZmF1bHQgdGFibGVzcGFjZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBU QUJMRSBDT05DVVJSRU5UTFkgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsgLS0gb2sKK1JFSU5E RVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0 OyAtLSBvaworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIGJhY2sgdG8gcGdfZGVm YXVsdAorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0o U0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190Ymxz cGFjZScpOworIHJlbG5hbWUgCistLS0tLS0tLS0KKygwIHJvd3MpCisKIC0tIGNyZWF0ZSBhIHNj aGVtYSB3ZSBjYW4gdXNlCiBDUkVBVEUgU0NIRU1BIHRlc3RzY2hlbWE7CiAtLSB0cnkgYSB0YWJs ZQpAQCAtMTk5LDYgKzMxMCw0NyBAQCBQYXJ0aXRpb25zOiB0ZXN0c2NoZW1hLnBhcnQxX2FfaWR4 LAogICAgICAgICAgICAgdGVzdHNjaGVtYS5wYXJ0Ml9hX2lkeAogVGFibGVzcGFjZTogInJlZ3Jl c3NfdGJsc3BhY2UiCiAKKy0tIFJFSU5ERVggcGFydGl0aW9uZWQgaW5kZXhlcyB0byBuZXcgdGFi bGVzcGFjZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSB0ZXN0c2NoZW1h LnBhcnQ7CitcZCB0ZXN0c2NoZW1hLnBhcnQKKyAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInRl c3RzY2hlbWEucGFydCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0 aXRpb24ga2V5OiBMSVNUIChhKQorSW5kZXhlczoKKyAgICAicGFydF9hX2lkeCIgYnRyZWUgKGEp CitOdW1iZXIgb2YgcGFydGl0aW9uczogMiAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitcZCB0 ZXN0c2NoZW1hLnBhcnQxCisgICAgICAgICAgICAgVGFibGUgInRlc3RzY2hlbWEucGFydDEiCisg Q29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0ZXN0c2No ZW1hLnBhcnQgRk9SIFZBTFVFUyBJTiAoMSkKK0luZGV4ZXM6CisgICAgInBhcnQxX2FfaWR4IiBi dHJlZSAoYSkKKworUkVJTkRFWCAoQ09OQ1VSUkVOVExZLCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2UpIElOREVYIHRlc3RzY2hlbWEucGFydF9hX2lkeDsKK1xkIHRlc3RzY2hlbWEucGFydAor ICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAidGVzdHNjaGVtYS5wYXJ0IgorIENvbHVtbiB8ICBU eXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IExJU1QgKGEpCitJbmRleGVz OgorICAgICJwYXJ0X2FfaWR4IiBidHJlZSAoYSksIHRhYmxlc3BhY2UgInJlZ3Jlc3NfdGJsc3Bh Y2UiCitOdW1iZXIgb2YgcGFydGl0aW9uczogMiAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitc ZCB0ZXN0c2NoZW1hLnBhcnQxCisgICAgICAgICAgICAgVGFibGUgInRlc3RzY2hlbWEucGFydDEi CisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0ZXN0 c2NoZW1hLnBhcnQgRk9SIFZBTFVFUyBJTiAoMSkKK0luZGV4ZXM6CisgICAgInBhcnQxX2FfaWR4 IiBidHJlZSAoYSksIHRhYmxlc3BhY2UgInJlZ3Jlc3NfdGJsc3BhY2UiCisKIC0tIHBhcnRpdGlv bmVkIHJlbHMgY2Fubm90IHNwZWNpZnkgdGhlIGRlZmF1bHQgdGFibGVzcGFjZS4gIFRoZXNlIGZh aWw6CiBDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0IChhIGludCBQUklNQVJZIEtFWSkgUEFS VElUSU9OIEJZIExJU1QgKGEpIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKIEVSUk9SOiAgY2Fubm90 IHNwZWNpZnkgZGVmYXVsdCB0YWJsZXNwYWNlIGZvciBwYXJ0aXRpb25lZCByZWxhdGlvbnMKQEAg LTc0MSw2ICs4OTMsOCBAQCBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSByZWdyZXNzX3Ri bHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdAogTk9USUNFOiAgbm8gbWF0 Y2hpbmcgcmVsYXRpb25zIGluIHRhYmxlc3BhY2UgInJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCIg Zm91bmQKIC0tIFNob3VsZCBzdWNjZWVkCiBEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZV9yZW5hbWVkOworRFJPUCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOworRFJPUCBU QUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7CiBEUk9QIFNDSEVNQSB0ZXN0c2NoZW1hIENB U0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDYgb3RoZXIgb2JqZWN0cwogREVUQUlM OiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSB0ZXN0c2NoZW1hLmZvbwotLSAKMi4yMC4xCgo= --=_59d461260bab3ab4b82baf1df84559fc Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v3-0001-Extract-common-part-from-ATExecSetTableSpaceNoSto.patch Content-Disposition: attachment; filename=v3-0001-Extract-common-part-from-ATExecSetTableSpaceNoSto.patch; size=5043 RnJvbSA0MDBjNmM2YzYxMGRkNmFmOTZiNGJjNWJmMzlhOTY3Y2QxZTY1OTdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjAgSmFuIDIwMjEgMjA6MjE6MTIgKzAzMDAKU3ViamVjdDog W1BBVENIIHYzIDEvMl0gRXh0cmFjdCBjb21tb24gcGFydCBmcm9tIEFURXhlY1NldFRhYmxlU3Bh Y2VOb1N0b3JhZ2UKIGZvciBhIGZ1dHVyZSB1c2FnZQoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYyB8IDk2ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCB8ICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgNTgg aW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpp bmRleCA4Njg3ZTlhOTdjLi5lZGYxNGQxZTY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpA QCAtMTMyOTEsNiArMTMyOTEsNTggQEAgQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQs IE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAlsaXN0X2ZyZWUocmVsdG9h c3RpZHhpZHMpOwogfQogCisvKgorICogU2V0UmVsVGFibGVzcGFjZSAtIG1vZGlmeSByZWxhdGlv biB0YWJsZXNwYWNlIGluIHRoZSBwZ19jbGFzcyBlbnRyeS4KKyAqCisgKiAncmVsb2lkJyBpcyBh biBPaWQgb2YgcmVsYXRpb24gdG8gYmUgbW9kaWZpZWQuCisgKiAndGFibGVzcGFjZU9pZCcgaXMg YW4gT2lkIG9mIG5ldyB0YWJsZXNwYWNlLgorICoKKyAqIENhdGFsb2cgbW9kaWZpY2F0aW9uIGlz IGRvbmUgb25seSBpZiB0YWJsZXNwYWNlT2lkIGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgY3Vy cmVudGx5IHNldC4gIFJldHVybmVkIGJvb2wgdmFsdWUgaXMgaW5kaWNhdGluZyB3aGV0aGVyIGFu eSBjaGFuZ2VzCisgKiB3ZXJlIG1hZGUgb3Igbm90LgorICovCitib29sCitTZXRSZWxUYWJsZXNw YWNlKE9pZCByZWxvaWQsIE9pZCB0YWJsZXNwYWNlT2lkKQoreworCVJlbGF0aW9uCQlwZ19jbGFz czsKKwlIZWFwVHVwbGUJCXR1cGxlOworCUZvcm1fcGdfY2xhc3MJcmRfcmVsOworCWJvb2wJCQlj aGFuZ2VkID0gZmFsc2U7CisJT2lkCQkJb2xkVGFibGVzcGFjZU9pZDsKKworCS8qIEdldCBhIG1v ZGlmaWFibGUgY29weSBvZiB0aGUgcmVsYXRpb24ncyBwZ19jbGFzcyByb3cuICovCisJcGdfY2xh c3MgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisK Kwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJl bG9pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHJlbG9pZCk7CisJcmRfcmVsID0g KEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkvKiBObyB3b3JrIGlmIG5vIGNo YW5nZSBpbiB0YWJsZXNwYWNlLiAqLworCW9sZFRhYmxlc3BhY2VPaWQgPSByZF9yZWwtPnJlbHRh Ymxlc3BhY2U7CisJaWYgKHRhYmxlc3BhY2VPaWQgIT0gb2xkVGFibGVzcGFjZU9pZCB8fAorCQko dGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSAmJiBPaWRJc1ZhbGlkKG9sZFRh Ymxlc3BhY2VPaWQpKSkKKwl7CisJCS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3Mgcm93LiAqLworCQly ZF9yZWwtPnJlbHRhYmxlc3BhY2UgPSAodGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVT cGFjZSkgPworCQkJSW52YWxpZE9pZCA6IHRhYmxlc3BhY2VPaWQ7CisJCUNhdGFsb2dUdXBsZVVw ZGF0ZShwZ19jbGFzcywgJnR1cGxlLT50X3NlbGYsIHR1cGxlKTsKKworCQkvKiBSZWNvcmQgZGVw ZW5kZW5jeSBvbiB0YWJsZXNwYWNlICovCisJCWNoYW5nZURlcGVuZGVuY3lPblRhYmxlc3BhY2Uo UmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJIHJlbG9pZCwgcmRfcmVsLT5yZWx0YWJsZXNw YWNlKTsKKworCQljaGFuZ2VkID0gdHJ1ZTsKKwl9CisKKwlJbnZva2VPYmplY3RQb3N0QWx0ZXJI b29rKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsb2lkLCAwKTsKKworCWhlYXBfZnJlZXR1cGxlKHR1 cGxlKTsKKwl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1 cm4gY2hhbmdlZDsKK30KKwogLyoKICAqIFNwZWNpYWwgaGFuZGxpbmcgb2YgQUxURVIgVEFCTEUg U0VUIFRBQkxFU1BBQ0UgZm9yIHJlbGF0aW9ucyB3aXRoIG5vCiAgKiBzdG9yYWdlIHRoYXQgaGF2 ZSBhbiBpbnRlcmVzdCBpbiBwcmVzZXJ2aW5nIHRhYmxlc3BhY2UuCkBAIC0xMzMwMSwxMSArMTMz NTMsNyBAQCBBVEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3Bh Y2UsIExPQ0tNT0RFIGxvY2ttb2RlKQogc3RhdGljIHZvaWQKIEFURXhlY1NldFRhYmxlU3BhY2VO b1N0b3JhZ2UoUmVsYXRpb24gcmVsLCBPaWQgbmV3VGFibGVTcGFjZSkKIHsKLQlIZWFwVHVwbGUJ dHVwbGU7Ci0JT2lkCQkJb2xkVGFibGVTcGFjZTsKLQlSZWxhdGlvbglwZ19jbGFzczsKLQlGb3Jt X3BnX2NsYXNzIHJkX3JlbDsKLQlPaWQJCQlyZWxvaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7 CisJT2lkCXJlbG9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKIAogCS8qCiAJICogU2hvdWxk bid0IGJlIGNhbGxlZCBvbiByZWxhdGlvbnMgaGF2aW5nIHN0b3JhZ2U7IHRoZXNlIGFyZSBwcm9j ZXNzZWQgaW4KQEAgLTEzMzE5LDQxICsxMzM2Nyw5IEBAIEFURXhlY1NldFRhYmxlU3BhY2VOb1N0 b3JhZ2UoUmVsYXRpb24gcmVsLCBPaWQgbmV3VGFibGVTcGFjZSkKIAkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKCJvbmx5IHNoYXJlZCBy ZWxhdGlvbnMgY2FuIGJlIHBsYWNlZCBpbiBwZ19nbG9iYWwgdGFibGVzcGFjZSIpKSk7CiAKLQkv KgotCSAqIE5vIHdvcmsgaWYgbm8gY2hhbmdlIGluIHRhYmxlc3BhY2UuCi0JICovCi0Jb2xkVGFi bGVTcGFjZSA9IHJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlOwotCWlmIChuZXdUYWJsZVNwYWNl ID09IG9sZFRhYmxlU3BhY2UgfHwKLQkJKG5ld1RhYmxlU3BhY2UgPT0gTXlEYXRhYmFzZVRhYmxl U3BhY2UgJiYgb2xkVGFibGVTcGFjZSA9PSAwKSkKLQl7Ci0JCUludm9rZU9iamVjdFBvc3RBbHRl ckhvb2soUmVsYXRpb25SZWxhdGlvbklkLCByZWxvaWQsIDApOwotCQlyZXR1cm47Ci0JfQotCi0J LyogR2V0IGEgbW9kaWZpYWJsZSBjb3B5IG9mIHRoZSByZWxhdGlvbidzIHBnX2NsYXNzIHJvdyAq LwotCXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOwotCi0JdHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFJFTE9JRCwgT2JqZWN0SWRH ZXREYXR1bShyZWxvaWQpKTsKLQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQotCQllbG9n KEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCByZWxvaWQpOwot CXJkX3JlbCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpOwotCi0JLyogdXBkYXRl IHRoZSBwZ19jbGFzcyByb3cgKi8KLQlyZF9yZWwtPnJlbHRhYmxlc3BhY2UgPSAobmV3VGFibGVT cGFjZSA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSkgPyBJbnZhbGlkT2lkIDogbmV3VGFibGVTcGFj ZTsKLQlDYXRhbG9nVHVwbGVVcGRhdGUocGdfY2xhc3MsICZ0dXBsZS0+dF9zZWxmLCB0dXBsZSk7 Ci0KLQkvKiBSZWNvcmQgZGVwZW5kZW5jeSBvbiB0YWJsZXNwYWNlICovCi0JY2hhbmdlRGVwZW5k ZW5jeU9uVGFibGVzcGFjZShSZWxhdGlvblJlbGF0aW9uSWQsCi0JCQkJCQkJCSByZWxvaWQsIHJk X3JlbC0+cmVsdGFibGVzcGFjZSk7Ci0KLQlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0 aW9uUmVsYXRpb25JZCwgcmVsb2lkLCAwKTsKLQotCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKLQot CXRhYmxlX2Nsb3NlKHBnX2NsYXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQotCS8qIE1ha2Ugc3Vy ZSB0aGUgcmVsdGFibGVzcGFjZSBjaGFuZ2UgaXMgdmlzaWJsZSAqLwotCUNvbW1hbmRDb3VudGVy SW5jcmVtZW50KCk7CisJaWYgKFNldFJlbFRhYmxlc3BhY2UocmVsb2lkLCBuZXdUYWJsZVNwYWNl KSkKKwkJLyogTWFrZSBzdXJlIHRoZSByZWx0YWJsZXNwYWNlIGNoYW5nZSBpcyB2aXNpYmxlICov CisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxl Y21kcy5oCmluZGV4IDA4YzQ2M2QzYzQuLjM1NTUzZmQ0MWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxl Y21kcy5oCkBAIC02MSw2ICs2MSw4IEBAIGV4dGVybiB2b2lkIEV4ZWN1dGVUcnVuY2F0ZUd1dHMo TGlzdCAqZXhwbGljaXRfcmVscywgTGlzdCAqcmVsaWRzLCBMaXN0ICpyZWxpZHNfCiAKIGV4dGVy biB2b2lkIFNldFJlbGF0aW9uSGFzU3ViY2xhc3MoT2lkIHJlbGF0aW9uSWQsIGJvb2wgcmVsaGFz c3ViY2xhc3MpOwogCitleHRlcm4gYm9vbCBTZXRSZWxUYWJsZXNwYWNlKE9pZCByZWxvaWQsIE9p ZCB0YWJsZXNwYWNlT2lkKTsKKwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcmVuYW1lYXR0KFJlbmFt ZVN0bXQgKnN0bXQpOwogCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBSZW5hbWVDb25zdHJhaW50KFJl bmFtZVN0bXQgKnN0bXQpOwoKYmFzZS1jb21taXQ6IDkyMGY4NTNkYzk0OGI5OGE1ZGM5NjU4MGM0 ZWUwMTFhMzAyZTMzZTQKLS0gCjIuMjAuMQoK --=_59d461260bab3ab4b82baf1df84559fc--