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 1l2Hw0-0001PL-KY for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Jan 2021 18:10:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l2Hvz-0006sJ-AY for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Jan 2021 18:10:23 +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 1l2Hvy-0006rO-MI for pgsql-hackers@lists.postgresql.org; Wed, 20 Jan 2021 18:10:23 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l2Hvr-0007fE-0E for pgsql-hackers@lists.postgresql.org; Wed, 20 Jan 2021 18:10:21 +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 3612921C2E96; Wed, 20 Jan 2021 21:10:14 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1611166214; bh=VqOKcuiHT0PCVMZ3rc+UMwahTbHgZS7CnpBMiVDOLwA=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=NKJ5svV9jypUHHFC1diaiVP37v3zmAOTw4MDAodfBJtYpvkdZsU9ox8XhFJ/9F66P ejPjc+pCtLM8+Z0pJqYmo0bY6X8YhaUgBQ4KGW/+JhACfVeVbR2KgrZR6efYUW1NZK 0d9tCO6L2z8GS0/XXH9WSxNQtf0Pz4FCauvcGAcM= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_0dfc4bbdb0ff81cc8da4811c9df3afd6" Content-Transfer-Encoding: 7bit Date: Wed, 20 Jan 2021 21:10:14 +0300 From: Alexey Kondratov To: Alvaro Herrera Cc: Michael Paquier , 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: <7f51f09d2dd1c92981f898e0a7b2f187@postgrespro.ru> References: <20210120155450.GA9584@alvherre.pgsql> <7f51f09d2dd1c92981f898e0a7b2f187@postgrespro.ru> User-Agent: Roundcube Webmail/1.4.0 Message-ID: <03f88f70618ce73e75837b6125a143f7@postgrespro.ru> X-Sender: a.kondratov@postgrespro.ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_0dfc4bbdb0ff81cc8da4811c9df3afd6 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-01-20 21:08, Alexey Kondratov wrote: > On 2021-01-20 18:54, Alvaro Herrera wrote: >> On 2021-Jan-20, Alvaro Herrera wrote: >> >>> On 2021-Jan-20, Michael Paquier wrote: >>> >>> > +/* >>> > + * This is mostly duplicating ATExecSetTableSpaceNoStorage, >>> > + * which should maybe be factored out to a library function. >>> > + */ >>> > Wouldn't it be better to do first the refactoring of 0002 and then >>> > 0001 so as REINDEX can use the new routine, instead of putting that >>> > into a comment? >>> >>> I think merging 0001 and 0002 into a single commit is a reasonable >>> approach. >> >> ... except it doesn't make a lot of sense to have set_rel_tablespace >> in >> either indexcmds.c or index.c. I think tablecmds.c is a better place >> for it. (I would have thought catalog/storage.c, but that one's not >> the >> right abstraction level it seems.) >> > > I did a refactoring of ATExecSetTableSpaceNoStorage() in the 0001. New > function SetRelTablesapce() is placed into the tablecmds.c. Following > 0002 gets use of it. Is it close to what you and Michael suggested? > Ugh, forgot to attach the patches. Here they are. -- Alexey --=_0dfc4bbdb0ff81cc8da4811c9df3afd6 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0002-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v2-0002-Allow-REINDEX-to-change-tablespace.patch; size=23241 RnJvbSAyYzM4NzZmOTliYzhlYmRkMDdjNTMyNjE5OTkyZTdlYzMwOTNlNTBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMjMgTWFyIDIwMjAgMjE6MTA6MjkgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyIDIvMl0gQWxsb3cgUkVJTkRFWCB0byBjaGFuZ2UgdGFibGVzcGFjZQoKUkVJTkRF WCBhbHJlYWR5IGRvZXMgZnVsbCByZWxhdGlvbiByZXdyaXRlLCB0aGlzIHBhdGNoIGFkZHMgYQpw b3NzaWJpbGl0eSB0byBzcGVjaWZ5IGEgbmV3IHRhYmxlc3BhY2Ugd2hlcmUgbmV3IHJlbGZpbGVu b2RlCndpbGwgYmUgY3JlYXRlZC4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAg ICAgICAgICAgICB8ICAyMiArKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAg ICAgICAgICAgfCAgNzIgKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyAgICAgICAgICB8ICA2OCArKysrKysrKysrKysrKy0KIHNyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYyAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2lu ZGV4LmggICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxl c3BhY2Uuc291cmNlICB8ICA1MyArKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQv dGFibGVzcGFjZS5zb3VyY2UgfCAxMDIgKysrKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBj aGFuZ2VkLCAzMTggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5z Z21sCmluZGV4IDYyN2IzNjMwMGMuLjRmODQwNjBjNGQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvcmVpbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBA IC0yNyw2ICsyNyw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOCiAKICAgICBDT05DVVJSRU5U TFkgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+ IF0KICAgICBWRVJCT1NFIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48 L3JlcGxhY2VhYmxlPiBdCisgICAgVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmV3X3RhYmxlc3BhY2U8L3JlcGxhY2VhYmxlPgogPC9zeW5vcHNpcz4KICA8L3JlZnN5 bm9wc2lzZGl2PgogCkBAIC0xODcsNiArMTg4LDE5IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElO CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPjxsaXRlcmFsPlRBQkxFU1BBQ0U8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIHNwZWNpZmllcyB0aGF0IGluZGV4ZXMg d2lsbCBiZSByZWJ1aWx0IG9uIGEgbmV3IHRhYmxlc3BhY2UuCisgICAgICBDYW5ub3QgYmUgdXNl ZCB3aXRoICJtYXBwZWQiIHJlbGF0aW9ucy4gSWYgPGxpdGVyYWw+U0NIRU1BPC9saXRlcmFsPiwK KyAgICAgIDxsaXRlcmFsPkRBVEFCQVNFPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5TWVNURU08L2xp dGVyYWw+IGlzIHNwZWNpZmllZCwgdGhlbgorICAgICAgYWxsIHVuc3VpdGFibGUgcmVsYXRpb25z IHdpbGwgYmUgc2tpcHBlZCBhbmQgYSBzaW5nbGUgPGxpdGVyYWw+V0FSTklORzwvbGl0ZXJhbD4K KyAgICAgIHdpbGwgYmUgZ2VuZXJhdGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRl cmFsPlZFUkJPU0U8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTIxMCw2ICsy MjQsMTQgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlv bjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgICA8L2xpc3RpdGVtPgogICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT48L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB0YWJsZXNwYWNlIHdoZXJlIGlu ZGV4ZXMgd2lsbCBiZSByZWJ1aWx0LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3QxPgogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKaW5kZXggYjhjZDM1ZTk5NS4uZWQ5OGIxNzQ4MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpA QCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNp bmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21k cy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjb21tYW5k cy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKQEAgLTEzOTQsOSArMTM5NSwxMyBAQCBpbmRleF91cGRhdGVfY29sbGF0aW9u X3ZlcnNpb25zKE9pZCByZWxpZCwgT2lkIGNvbGwpCiAgKiBDcmVhdGUgY29uY3VycmVudGx5IGFu IGluZGV4IGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBvbmUgcHJvdmlkZWQgYnkKICAq IGNhbGxlci4gIFRoZSBpbmRleCBpcyBpbnNlcnRlZCBpbnRvIGNhdGFsb2dzIGFuZCBuZWVkcyB0 byBiZSBidWlsdCBsYXRlcgogICogb24uICBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgY29uY3VycmVu dCByZWluZGV4IHByb2Nlc3NpbmcuCisgKgorICogInRhYmxlc3BhY2VPaWQiIGlzIHRoZSBuZXcg dGFibGVzcGFjZSB0byB1c2UgZm9yIHRoaXMgaW5kZXguICBJZgorICogSW52YWxpZE9pZCwgdXNl IHRoZSB0YWJsZXNwYWNlIGluLXVzZSBpbnN0ZWFkLgogICovCiBPaWQKLWluZGV4X2NvbmN1cnJl bnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLCBj b25zdCBjaGFyICpuZXdOYW1lKQoraW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCisJCQkJCQkJICAgT2lkIHRhYmxlc3Bh Y2VPaWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCiB7CiAJUmVsYXRpb24JaW5kZXhSZWxhdGlvbjsK IAlJbmRleEluZm8gICpvbGRJbmZvLApAQCAtMTUyNiw3ICsxNTMxLDggQEAgaW5kZXhfY29uY3Vy cmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQs IGNvbnN0IGNoYXIKIAkJCQkJCQkgIG5ld0luZm8sCiAJCQkJCQkJICBpbmRleENvbE5hbWVzLAog CQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxhbSwKLQkJCQkJCQkgIGluZGV4UmVs YXRpb24tPnJkX3JlbC0+cmVsdGFibGVzcGFjZSwKKwkJCQkJCQkgIE9pZElzVmFsaWQodGFibGVz cGFjZU9pZCkgPworCQkJCQkJCQl0YWJsZXNwYWNlT2lkIDogaW5kZXhSZWxhdGlvbi0+cmRfcmVs LT5yZWx0YWJsZXNwYWNlLAogCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9u LAogCQkJCQkJCSAgaW5kY2xhc3MtPnZhbHVlcywKIAkJCQkJCQkgIGluZGNvbG9wdGlvbnMtPnZh bHVlcywKQEAgLTM1OTEsNiArMzU5Nyw4IEBAIEluZGV4R2V0UmVsYXRpb24oT2lkIGluZGV4SWQs IGJvb2wgbWlzc2luZ19vaykKIAogLyoKICAqIHJlaW5kZXhfaW5kZXggLSBUaGlzIHJvdXRpbmUg aXMgdXNlZCB0byByZWNyZWF0ZSBhIHNpbmdsZSBpbmRleAorICoKKyAqIFNlZSBjb21tZW50cyBv ZiByZWluZGV4X3JlbGF0aW9uKCkgZm9yIGRldGFpbHMgYWJvdXQgInRhYmxlc3BhY2VPaWQiLgog ICovCiB2b2lkCiByZWluZGV4X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29uc3RyYWlu dF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCkBAIC0zNjAzLDYgKzM2MTEsNyBAQCByZWluZGV4 X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVy c2lzdGVuY2UsCiAJdm9sYXRpbGUgYm9vbCBza2lwcGVkX2NvbnN0cmFpbnQgPSBmYWxzZTsKIAlQ R1JVc2FnZQlydTA7CiAJYm9vbAkJcHJvZ3Jlc3MgPSAoKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5E RVhPUFRfUkVQT1JUX1BST0dSRVNTKSAhPSAwKTsKKwlib29sCQlzZXRfdGFibGVzcGFjZSA9IE9p ZElzVmFsaWQocGFyYW1zLT50YWJsZXNwYWNlT2lkKTsKIAogCXBnX3J1c2FnZV9pbml0KCZydTAp OwogCkBAIC0zNjU0LDYgKzM2NjMsMzUgQEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9v bCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAogCQkJIGdldF9uYW1l c3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShpUmVsKSksCiAJCQkgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoaVJlbCkpOwogCisJLyoKKwkgKiBXZSBkb24ndCBzdXBwb3J0IG1vdmluZyBz eXN0ZW0gcmVsYXRpb25zIGludG8gZGlmZmVyZW50IHRhYmxlc3BhY2VzCisJICogdW5sZXNzIGFs bG93X3N5c3RlbV90YWJsZV9tb2RzPTEuCisJICovCisJaWYgKHNldF90YWJsZXNwYWNlICYmCisJ CSFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbVJlbGF0aW9uKGlSZWwpKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSks CisJCQkJIGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQ6IFwiJXNcIiBpcyBhIHN5c3RlbSBjYXRh bG9nIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwpKSkpOworCisJLyoKKwkg KiBXZSBjYW5ub3Qgc3VwcG9ydCBtb3ZpbmcgbWFwcGVkIHJlbGF0aW9ucyBpbnRvIGRpZmZlcmVu dCB0YWJsZXNwYWNlcy4KKwkgKiAoSW4gcGFydGljdWxhciB0aGlzIGVsaW1pbmF0ZXMgYWxsIHNo YXJlZCBjYXRhbG9ncy4pCisJICovCisJaWYgKHNldF90YWJsZXNwYWNlICYmIFJlbGF0aW9uSXNN YXBwZWQoaVJlbCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFj ZSBvZiBtYXBwZWQgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKGlSZWwpKSkpOworCisJLyogSXQncyBub3QgYSBzaGFyZWQgY2F0YWxvZywgc28gcmVmdXNl IHRvIG1vdmUgaXQgdG8gc2hhcmVkIHRhYmxlc3BhY2UgKi8KKwlpZiAocGFyYW1zLT50YWJsZXNw YWNlT2lkID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5u b3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJCQkJ IGdldF90YWJsZXNwYWNlX25hbWUocGFyYW1zLT50YWJsZXNwYWNlT2lkKSkpKTsKKworCiAJLyoK IAkgKiBEb24ndCBhbGxvdyByZWluZGV4IG9uIHRlbXAgdGFibGVzIG9mIG90aGVyIGJhY2tlbmRz IC4uLiB0aGVpciBsb2NhbAogCSAqIGJ1ZmZlciBtYW5hZ2VyIGlzIG5vdCBnb2luZyB0byBjb3Bl LgpAQCAtMzY4MCw2ICszNzE4LDI4IEBAIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wg c2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwKIAkgKi8KIAlDaGVja1Rh YmxlTm90SW5Vc2UoaVJlbCwgIlJFSU5ERVggSU5ERVgiKTsKIAorCWlmIChwYXJhbXMtPnRhYmxl c3BhY2VPaWQgPT0gTXlEYXRhYmFzZVRhYmxlU3BhY2UpCisJCXBhcmFtcy0+dGFibGVzcGFjZU9p ZCA9IEludmFsaWRPaWQ7CisKKwkvKgorCSAqIFNldCB0aGUgbmV3IHRhYmxlc3BhY2UgZm9yIHRo ZSByZWxhdGlvbi4gIERvIHRoYXQgb25seSBpbiB0aGUKKwkgKiBjYXNlIHdoZXJlIHRoZSByZWlu ZGV4IGNhbGxlciB3aXNoZXMgdG8gZW5mb3JjZSBhIG5ldyB0YWJsZXNwYWNlLgorCSAqLworCWlm IChzZXRfdGFibGVzcGFjZSAmJiBTZXRSZWxUYWJsZXNwYWNlKGluZGV4SWQsIHBhcmFtcy0+dGFi bGVzcGFjZU9pZCkpCisJeworCQkvKgorCQkgKiBNYXJrIHRoZSByZWxhdGlvbiBhcyByZWFkeSB0 byBiZSBkcm9wcGVkIGF0IHRyYW5zYWN0aW9uIGNvbW1pdCwKKwkJICogYmVmb3JlIG1ha2luZyB2 aXNpYmxlIHRoZSBuZXcgdGFibGVzcGFjZSBjaGFuZ2Ugc28gYXMgdGhpcyB3b24ndAorCQkgKiBt aXNzIHRoaW5ncy4KKwkJICovCisJCVJlbGF0aW9uRHJvcFN0b3JhZ2UoaVJlbCk7CisKKwkJUmVs YXRpb25Bc3N1bWVOZXdSZWxmaWxlbm9kZShpUmVsKTsKKworCQkvKiBNYWtlIHN1cmUgdGhlIHJl bHRhYmxlc3BhY2UgY2hhbmdlIGlzIHZpc2libGUgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1l bnQoKTsKKwl9CisKIAkvKgogCSAqIEFsbCBwcmVkaWNhdGUgbG9ja3Mgb24gdGhlIGluZGV4IGFy ZSBhYm91dCB0byBiZSBtYWRlIGludmFsaWQuIFByb21vdGUKIAkgKiB0aGVtIHRvIHJlbGF0aW9u IGxvY2tzIG9uIHRoZSBoZWFwLgpAQCAtMzgxNCw2ICszODc0LDkgQEAgcmVpbmRleF9pbmRleChP aWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNl LAogICogcmVpbmRleF9yZWxhdGlvbiAtIFRoaXMgcm91dGluZSBpcyB1c2VkIHRvIHJlY3JlYXRl IGFsbCBpbmRleGVzCiAgKiBvZiBhIHJlbGF0aW9uIChhbmQgb3B0aW9uYWxseSBpdHMgdG9hc3Qg cmVsYXRpb24gdG9vLCBpZiBhbnkpLgogICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFi bGVzcGFjZSB3aGVyZSB0aGUgcmVsYXRpb24ncyBpbmRleGVzIHdpbGwgYmUKKyAqIHJlYnVpbHQs IG9yIEludmFsaWRPaWQgdG8ga2VlcCBlYWNoIGluZGV4IG9uIGl0cyBjdXJyZW50IHRhYmxlc3Bh Y2UuCisgKgogICogImZsYWdzIiBpcyBhIGJpdG1hc2sgdGhhdCBjYW4gaW5jbHVkZSBhbnkgY29t YmluYXRpb24gb2YgdGhlc2UgYml0czoKICAqCiAgKiBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNU OiBpZiB0cnVlLCBwcm9jZXNzIHRoZSB0b2FzdCB0YWJsZSB0b28gKGlmIGFueSkuCkBAIC0zOTY0 LDEwICs0MDI3LDE1IEBAIHJlaW5kZXhfcmVsYXRpb24oT2lkIHJlbGlkLCBpbnQgZmxhZ3MsIFJl aW5kZXhQYXJhbXMgKnBhcmFtcykKIAkJLyoKIAkJICogTm90ZSB0aGF0IHRoaXMgc2hvdWxkIGZh aWwgaWYgdGhlIHRvYXN0IHJlbGF0aW9uIGlzIG1pc3NpbmcsIHNvCiAJCSAqIHJlc2V0IFJFSU5E RVhPUFRfTUlTU0lOR19PSy4KKwkJICoKKwkJICogRXZlbiBpZiBhIHRhYmxlJ3MgaW5kZXhlcyB3 ZXJlIG1vdmVkIHRvIGEgbmV3IHRhYmxlc3BhY2UsIHRoZSBpbmRleAorCQkgKiBvbiBpdHMgdG9h c3QgdGFibGUgaXMgbm90IG5vcm1hbGx5IG1vdmVkLgogCQkgKi8KIAkJUmVpbmRleFBhcmFtcyBu ZXdwYXJhbXMgPSAqcGFyYW1zOwogCiAJCW5ld3BhcmFtcy5vcHRpb25zICY9IH4oUkVJTkRFWE9Q VF9NSVNTSU5HX09LKTsKKwkJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcykKKwkJCW5ld3BhcmFt cy50YWJsZXNwYWNlT2lkID0gSW52YWxpZE9pZDsKIAkJcmVzdWx0IHw9IHJlaW5kZXhfcmVsYXRp b24odG9hc3RfcmVsaWQsIGZsYWdzLCAmbmV3cGFyYW1zKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMKaW5kZXggZjlmM2ZmM2I2Mi4uMjcwM2NlY2U2YyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMKQEAgLTI0NzQsNiArMjQ3NCw3IEBAIEV4ZWNSZWluZGV4KFBhcnNlU3RhdGUgKnBz dGF0ZSwgUmVpbmRleFN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAlMaXN0Q2VsbCAgICps YzsKIAlib29sCQljb25jdXJyZW50bHkgPSBmYWxzZTsKIAlib29sCQl2ZXJib3NlID0gZmFsc2U7 CisJY2hhcgkJKnRhYmxlc3BhY2UgPSBOVUxMOwogCiAJLyogUGFyc2Ugb3B0aW9uIGxpc3QgKi8K IAlmb3JlYWNoKGxjLCBzdG10LT5wYXJhbXMpCkBAIC0yNDg0LDYgKzI0ODUsOCBAQCBFeGVjUmVp bmRleChQYXJzZVN0YXRlICpwc3RhdGUsIFJlaW5kZXhTdG10ICpzdG10LCBib29sIGlzVG9wTGV2 ZWwpCiAJCQl2ZXJib3NlID0gZGVmR2V0Qm9vbGVhbihvcHQpOwogCQllbHNlIGlmIChzdHJjbXAo b3B0LT5kZWZuYW1lLCAiY29uY3VycmVudGx5IikgPT0gMCkKIAkJCWNvbmN1cnJlbnRseSA9IGRl ZkdldEJvb2xlYW4ob3B0KTsKKwkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgInRhYmxl c3BhY2UiKSA9PSAwKQorCQkJdGFibGVzcGFjZSA9IGRlZkdldFN0cmluZyhvcHQpOwogCQllbHNl CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CkBAIC0yNTAwLDYgKzI1MDMsOSBAQCBFeGVjUmVpbmRleChQYXJzZVN0YXRlICpwc3RhdGUsIFJl aW5kZXhTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCSh2ZXJib3NlID8gUkVJTkRFWE9Q VF9WRVJCT1NFIDogMCkgfAogCQkoY29uY3VycmVudGx5ID8gUkVJTkRFWE9QVF9DT05DVVJSRU5U TFkgOiAwKTsKIAorCXBhcmFtcy50YWJsZXNwYWNlT2lkID0gdGFibGVzcGFjZSAhPSBOVUxMID8K KwkJZ2V0X3RhYmxlc3BhY2Vfb2lkKHRhYmxlc3BhY2UsIGZhbHNlKSA6IEludmFsaWRPaWQ7CisK IAlzd2l0Y2ggKHN0bXQtPmtpbmQpCiAJewogCQljYXNlIFJFSU5ERVhfT0JKRUNUX0lOREVYOgpA QCAtMjcyOSw3ICsyNzM1LDEwIEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpv YmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCU1lbW9yeUNvbnRleHQg b2xkOwogCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsKIAlpbnQJCQludW1fa2V5czsKKwogCWJvb2wJ CWNvbmN1cnJlbnRfd2FybmluZyA9IGZhbHNlOworCWJvb2wJCXRhYmxlc3BhY2Vfd2FybmluZyA9 IGZhbHNlOworCWJvb2wJCW1hcHBlZF93YXJuaW5nID0gZmFsc2U7CiAKIAlBc3NlcnRBcmcob2Jq ZWN0TmFtZSk7CiAJQXNzZXJ0KG9iamVjdEtpbmQgPT0gUkVJTkRFWF9PQkpFQ1RfU0NIRU1BIHx8 CkBAIC0yODU2LDYgKzI4NjUsMzUgQEAgUmVpbmRleE11bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIg Km9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQsCiAJCQljb250aW51ZTsK IAkJfQogCisJCWlmIChPaWRJc1ZhbGlkKHBhcmFtcy0+dGFibGVzcGFjZU9pZCkgJiYKKwkJCUlz U3lzdGVtQ2xhc3MocmVsaWQsIGNsYXNzdHVwbGUpKQorCQl7CisJCQlpZiAoIWFsbG93U3lzdGVt VGFibGVNb2RzKQorCQkJeworCQkJCS8qIFNraXAgYWxsIHN5c3RlbSByZWxhdGlvbnMsIGlmIG5v dCBhbGxvd1N5c3RlbVRhYmxlTW9kcyAqLworCQkJCWlmICghdGFibGVzcGFjZV93YXJuaW5nKQor CQkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lF TlRfUFJJVklMRUdFKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ug b2YgaW5kZXhlcyBvbiBzeXN0ZW0gcmVsYXRpb25zLCBza2lwcGluZyBhbGwiKSkpOworCQkJCXRh Ymxlc3BhY2Vfd2FybmluZyA9IHRydWU7CisJCQkJY29udGludWU7CisJCQl9CisJCQllbHNlIGlm ICghT2lkSXNWYWxpZChjbGFzc3R1cGxlLT5yZWxmaWxlbm9kZSkpCisJCQl7CisJCQkJLyoKKwkJ CQkgKiBTa2lwIGFsbCBtYXBwZWQgcmVsYXRpb25zIGlmIFRBQkxFU1BBQ0UgaXMgc3BlY2lmaWVk LgorCQkJCSAqIE9pZElzVmFsaWQocmVsZmlsZW5vZGUpIGNoZWNrcyB0aGF0LCBzaW1pbGFyIHRv CisJCQkJICogUmVsYXRpb25Jc01hcHBlZCgpLgorCQkJCSAqLworCQkJCWlmICghbWFwcGVkX3dh cm5pbmcpCisJCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSB0YWJs ZXNwYWNlIG9mIGluZGV4ZXMgb24gbWFwcGVkIHJlbGF0aW9ucywgc2tpcHBpbmcgYWxsIikpKTsK KwkJCQltYXBwZWRfd2FybmluZyA9IHRydWU7CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKwog CQkvKiBTYXZlIHRoZSBsaXN0IG9mIHJlbGF0aW9uIE9JRHMgaW4gcHJpdmF0ZSBjb250ZXh0ICov CiAJCW9sZCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwcml2YXRlX2NvbnRleHQpOwogCkBAIC0y OTY5LDkgKzMwMDcsMjcgQEAgUmVpbmRleFBhcnRpdGlvbnMoT2lkIHJlbGlkLCBSZWluZGV4UGFy YW1zICpwYXJhbXMsIGJvb2wgaXNUb3BMZXZlbCkKIAkJTWVtb3J5Q29udGV4dCBvbGRfY29udGV4 dDsKIAogCQkvKgotCQkgKiBUaGlzIGRpc2NhcmRzIHBhcnRpdGlvbmVkIHRhYmxlcywgcGFydGl0 aW9uZWQgaW5kZXhlcyBhbmQgZm9yZWlnbgotCQkgKiB0YWJsZXMuCisJCSAqIEZvcmVpZ24gdGFi bGVzIGFuZCBwYXJ0aXRpb25lZCByZWxhdGlvbnMgYXJlIG5vdCB0aGVtc2VsdmVzCisJCSAqIHJl aW5kZXhlZCAtIGxlYWYgcGFydGl0aW9ucyBhcmUgcHJvY2Vzc2VkIGRpcmVjdGx5LiAgQnV0IGFu eQorCQkgKiB0YWJsZXNwYWNlIGNoYW5nZSBpcyByZWNvcmRlZCBpbiB0aGUgY2F0YWxvZyBmb3Ig cGFydGl0aW9uZWQKKwkJICogcmVsYXRpb25zLgogCQkgKi8KKwkJaWYgKHBhcnRraW5kID09IFJF TEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCisJCQkodm9pZCkgU2V0UmVsVGFibGVzcGFjZShwYXJ0 b2lkLCBwYXJhbXMtPnRhYmxlc3BhY2VPaWQpOworCQllbHNlIGlmIChwYXJ0a2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQl7CisJCQlSZWxhdGlvbiByZWwgPSB0YWJsZV9vcGVu KHBhcnRvaWQsIFNoYXJlTG9jayk7CisJCQlMaXN0CSppbmRleElkcyA9IFJlbGF0aW9uR2V0SW5k ZXhMaXN0KHJlbCk7CisJCQlMaXN0Q2VsbCAqbGM7CisKKwkJCXRhYmxlX2Nsb3NlKHJlbCwgTm9M b2NrKTsKKwkJCWZvcmVhY2ggKGxjLCBpbmRleElkcykKKwkJCXsKKwkJCQlPaWQgaW5kZXhpZCA9 IGxmaXJzdF9vaWQobGMpOworCQkJCSh2b2lkKSBTZXRSZWxUYWJsZXNwYWNlKGluZGV4aWQsIHBh cmFtcy0+dGFibGVzcGFjZU9pZCk7CisJCQl9CisJCX0KKwogCQlpZiAoIVJFTEtJTkRfSEFTX1NU T1JBR0UocGFydGtpbmQpKQogCQkJY29udGludWU7CiAKQEAgLTMzOTAsNiArMzQ0NiwxMyBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBSZWluZGV4UGFyYW1z ICpwYXJhbXMpCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKKwkvKiBJdCdzIG5vdCBhIHNoYXJlZCBj YXRhbG9nLCBzbyByZWZ1c2UgdG8gbW92ZSBpdCB0byBzaGFyZWQgdGFibGVzcGFjZSAqLworCWlm IChwYXJhbXMtPnRhYmxlc3BhY2VPaWQgPT0gR0xPQkFMVEFCTEVTUEFDRV9PSUQpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAor CQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRpb24gdG8gdGFibGVzcGFj ZSBcIiVzXCIiLAorCQkJCQkgZ2V0X3RhYmxlc3BhY2VfbmFtZShwYXJhbXMtPnRhYmxlc3BhY2VP aWQpKSkpOworCiAJQXNzZXJ0KGhlYXBSZWxhdGlvbklkcyAhPSBOSUwpOwogCiAJLyotLS0tLQpA QCAtMzQ2MSw2ICszNTI0LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxh dGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCQkvKiBDcmVhdGUgbmV3IGluZGV4IGRl ZmluaXRpb24gYmFzZWQgb24gZ2l2ZW4gaW5kZXggKi8KIAkJbmV3SW5kZXhJZCA9IGluZGV4X2Nv bmN1cnJlbnRseV9jcmVhdGVfY29weShoZWFwUmVsLAogCQkJCQkJCQkJCQkJCWlkeC0+aW5kZXhJ ZCwKKwkJCQkJCQkJCQkJCQlwYXJhbXMtPnRhYmxlc3BhY2VPaWQsCiAJCQkJCQkJCQkJCQkJY29u Y3VycmVudE5hbWUpOwogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggNmFiY2JlYTk2My4uYWM0 YjQwNTYxYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtMzY0MSw3ICszNjQxLDkgQEAgcHNxbF9jb21w bGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJICogb25lIHdv cmQsIHNvIHRoZSBhYm92ZSB0ZXN0IGlzIGNvcnJlY3QuCiAJCSAqLwogCQlpZiAoZW5kc193aXRo KHByZXZfd2QsICcoJykgfHwgZW5kc193aXRoKHByZXZfd2QsICcsJykpCi0JCQlDT01QTEVURV9X SVRIKCJDT05DVVJSRU5UTFkiLCAiVkVSQk9TRSIpOworCQkJQ09NUExFVEVfV0lUSCgiQ09OQ1VS UkVOVExZIiwgIlRBQkxFU1BBQ0UiLCAiVkVSQk9TRSIpOworCQllbHNlIGlmIChUYWlsTWF0Y2hl cygiVEFCTEVTUEFDRSIpKQorCQkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9v Zl90YWJsZXNwYWNlcyk7CiAJfQogCiAvKiBTRUNVUklUWSBMQUJFTCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o CmluZGV4IDI2NmY4OTUwZGMuLjU2ZTQwM2FjNjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTMzLDYg KzMzLDcgQEAgdHlwZWRlZiBlbnVtCiB0eXBlZGVmIHN0cnVjdCBSZWluZGV4UGFyYW1zCiB7CiAJ Yml0czMyCQlvcHRpb25zOwkJLyogYml0bWFzayBvZiBSRUlOREVYT1BUXyogKi8KKwlPaWQgIHRh Ymxlc3BhY2VPaWQ7CQkJCQkvKiB0YWJsZXNwYWNlIHRvIHJlYnVpbGQgaW5kZXggKi8KIH0gUmVp bmRleFBhcmFtczsKIAogLyogZmxhZyBiaXRzIGZvciBSZWluZGV4UGFyYW1zLT5mbGFncyAqLwpA QCAtOTIsNiArOTMsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAKIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgb2xkSW5kZXhJZCwKKwkJCQkJCQkJ CQkgICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpuZXdOYW1l KTsKIAogZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRp b25JZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3Vy Y2UgYi9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCmluZGV4IDFhMTgx MDE2ZDcuLjZlOTRmZmU2MTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFi bGVzcGFjZS5zb3VyY2UKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNv dXJjZQpAQCAtMTcsNiArMTcsNDggQEAgQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl IFNFVCAoc29tZV9ub25leGlzdGVudF9wYXJhbWV0ZXIgPSB0cnVlKTsgIC0tIGYKIEFMVEVSIFRB QkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCA9IDIuMCk7 IC0tIGZhaWwKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9t X3BhZ2VfY29zdCwgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsgLS0gb2sKIAorLS0gY3JlYXRl IHRhYmxlIHRvIHRlc3QgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitDUkVBVEUgVEFC TEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAobnVtMSBiaWdpbnQsIG51bTIgZG91YmxlIHBy ZWNpc2lvbiwgbnVtMyBkb3VibGUgcHJlY2lzaW9uKTsKK0lOU0VSVCBJTlRPIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF90YmwgKG51bTEsIG51bTIsIG51bTMpCisgIFNFTEVDVCByb3VuZChyYW5kb20o KSoxMDApLCByYW5kb20oKSwgcmFuZG9tKCkqNDIKKyAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MjAwMDApIHMoaSk7CitDUkVBVEUgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHgg T04gcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAobnVtMSk7CisKKy0tIGNoZWNrIHRoYXQgUkVJ TkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlIGlzIHRyYW5zYWN0aW9uYWwKK0JFR0lOOworUkVJ TkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsX2lkeDsKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFC TEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsKK1JPTExCQUNLOworU0VMRUNUIHJlbG5hbWUg RlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3Rh Ymxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworCistLSBmaXJzdCwg bGV0IHVzIHJlaW5kZXggYW5kIG1vdmUgdGhlIGVudGlyZSBkYXRhYmFzZSwgYWZ0ZXIgdGhhdCBy ZXR1cm4gZXZlcnl0aGluZyBiYWNrCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2UpIERBVEFCQVNFIHJlZ3Jlc3Npb247IC0tIG9rIHdpdGggd2FybmluZworUkVJTkRFWCAoVEFC TEVTUEFDRSBwZ19kZWZhdWx0KSBEQVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdhcm5p bmcKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNF TEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3Bh Y2UnKTsKKworLS0gY2hlY2sgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitSRUlOREVY IChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF90YmxfaWR4OyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBU QUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBwZ19hdXRoaWQ7IC0tIGZhaWwKK1JFSU5ERVggKFRB QkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgU1lTVEVNIENPTkNVUlJFTlRMWSBwb3N0Z3Jlczsg LS0gZmFpbAorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBDT05D VVJSRU5UTFkgcGdfYW07IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJ TkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAorUkVJTkRFWCAoVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBwZ19hbTsgLS0gZmFpbAorCistLSBjaGVj ayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgdG8gbmV3IHRhYmxlc3BhY2UKK1NFTEVDVCByZWxu YW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBw Z190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKQorT1JERVIgQlkg cmVsbmFtZTsKKworLS0gbW92ZSBpbmRleGVzIGJhY2sgdG8gcGdfZGVmYXVsdCB0YWJsZXNwYWNl CitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIENPTkNVUlJFTlRMWSByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworCistLSBjaGVjayB0aGF0IGFsbCByZWxhdGlv bnMgbW92ZWQgYmFjayB0byBwZ19kZWZhdWx0CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNz CitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVS RSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisKIC0tIGNyZWF0ZSBhIHNjaGVtYSB3ZSBj YW4gdXNlCiBDUkVBVEUgU0NIRU1BIHRlc3RzY2hlbWE7CiAKQEAgLTk2LDYgKzEzOCwxNCBAQCBT RUxFQ1QgcmVsbmFtZSwgc3BjbmFtZSBGUk9NIHBnX2NhdGFsb2cucGdfdGFibGVzcGFjZSB0LCBw Z19jYXRhbG9nLnBnX2NsYXNzIGMKIFxkIHRlc3RzY2hlbWEucGFydF9hX2lkeAogXGQrIHRlc3Rz Y2hlbWEucGFydF9hX2lkeAogCistLSBSRUlOREVYIHBhcnRpdGlvbmVkIGluZGV4ZXMgdG8gbmV3 IHRhYmxlc3BhY2UKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgdGVzdHNj aGVtYS5wYXJ0OworXGQgdGVzdHNjaGVtYS5wYXJ0CitcZCB0ZXN0c2NoZW1hLnBhcnQxCitSRUlO REVYIChDT05DVVJSRU5UTFksIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggdGVz dHNjaGVtYS5wYXJ0X2FfaWR4OworXGQgdGVzdHNjaGVtYS5wYXJ0CitcZCB0ZXN0c2NoZW1hLnBh cnQxCisKIC0tIHBhcnRpdGlvbmVkIHJlbHMgY2Fubm90IHNwZWNpZnkgdGhlIGRlZmF1bHQgdGFi bGVzcGFjZS4gIFRoZXNlIGZhaWw6CiBDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0IChhIGlu dCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIExJU1QgKGEpIFRBQkxFU1BBQ0UgcGdfZGVmYXVs dDsKIENSRUFURSBUQUJMRSB0ZXN0c2NoZW1hLmRmbHQgKGEgaW50IFBSSU1BUlkgS0VZIFVTSU5H IElOREVYIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwpAQCAt MjgyLDYgKzMzMiw5IEBAIEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2VfcmVuYW1lZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0CiAtLSBTaG91bGQgc3VjY2Vl ZAogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZDsKIAorRFJPUCBJTkRF WCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsKK0RST1AgVEFCTEUgcmVncmVzc190Ymxz cGFjZV90ZXN0X3RibDsKKwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogCiBEUk9Q IFJPTEUgcmVncmVzc190YWJsZXNwYWNlX3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90 YWJsZXNwYWNlLnNvdXJjZQppbmRleCA5NGM1ZjAyM2M2Li4wOTI3ZDFjN2FkIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVz dC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQpAQCAtMjAsNiArMjAsNjUgQEAgRVJS T1I6ICB1bnJlY29nbml6ZWQgcGFyYW1ldGVyICJzb21lX25vbmV4aXN0ZW50X3BhcmFtZXRlciIK IEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29z dCA9IDIuMCk7IC0tIGZhaWwKIEVSUk9SOiAgUkVTRVQgbXVzdCBub3QgaW5jbHVkZSB2YWx1ZXMg Zm9yIHBhcmFtZXRlcnMKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAo cmFuZG9tX3BhZ2VfY29zdCwgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsgLS0gb2sKKy0tIGNy ZWF0ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorQ1JFQVRF IFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmlnaW50LCBudW0yIGRvdWJs ZSBwcmVjaXNpb24sIG51bTMgZG91YmxlIHByZWNpc2lvbik7CitJTlNFUlQgSU5UTyByZWdyZXNz X3RibHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCBudW0zKQorICBTRUxFQ1Qgcm91bmQocmFu ZG9tKCkqMTAwKSwgcmFuZG9tKCksIHJhbmRvbSgpKjQyCisgIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDIwMDAwKSBzKGkpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymxf aWR4IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEpOworLS0gY2hlY2sgdGhhdCBS RUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbAorQkVHSU47CitS RUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF90YmxfaWR4OworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBU QUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOworUk9MTEJBQ0s7CitTRUxFQ1QgcmVsbmFt ZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdf dGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisgcmVsbmFtZSAK Ky0tLS0tLS0tLQorKDAgcm93cykKKworLS0gZmlyc3QsIGxldCB1cyByZWluZGV4IGFuZCBtb3Zl IHRoZSBlbnRpcmUgZGF0YWJhc2UsIGFmdGVyIHRoYXQgcmV0dXJuIGV2ZXJ5dGhpbmcgYmFjawor UkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBEQVRBQkFTRSByZWdyZXNzaW9u OyAtLSBvayB3aXRoIHdhcm5pbmcKK1dBUk5JTkc6ICBjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ug b2YgaW5kZXhlcyBvbiBzeXN0ZW0gcmVsYXRpb25zLCBza2lwcGluZyBhbGwKK1JFSU5ERVggKFRB QkxFU1BBQ0UgcGdfZGVmYXVsdCkgREFUQUJBU0UgcmVncmVzc2lvbjsgLS0gb2sgd2l0aCB3YXJu aW5nCitXQVJOSU5HOiAgY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNlIG9mIGluZGV4ZXMgb24gc3lz dGVtIHJlbGF0aW9ucywgc2tpcHBpbmcgYWxsCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNz CitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVS RSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisgcmVsbmFtZSAKKy0tLS0tLS0tLQorKDAg cm93cykKKworLS0gY2hlY2sgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitSRUlOREVY IChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF90YmxfaWR4OyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBU QUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBwZ19hdXRoaWQ7IC0tIGZhaWwKK0VSUk9SOiAgcGVy bWlzc2lvbiBkZW5pZWQ6ICJwZ19hdXRoaWRfcm9sbmFtZV9pbmRleCIgaXMgYSBzeXN0ZW0gY2F0 YWxvZworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBTWVNURU0gQ09OQ1VS UkVOVExZIHBvc3RncmVzOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCByZWluZGV4IHN5c3RlbSBj YXRhbG9ncyBjb25jdXJyZW50bHkKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZSkgVEFCTEUgQ09OQ1VSUkVOVExZIHBnX2FtOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCByZWlu ZGV4IHN5c3RlbSBjYXRhbG9ncyBjb25jdXJyZW50bHkKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdf Z2xvYmFsKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAorRVJS T1I6ICBjYW5ub3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgInBnX2ds b2JhbCIKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcGdfYW07 IC0tIGZhaWwKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQ6ICJwZ19hbV9uYW1lX2luZGV4IiBp cyBhIHN5c3RlbSBjYXRhbG9nCistLSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgdG8g bmV3IHRhYmxlc3BhY2UKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRh Ymxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3Jl Z3Jlc3NfdGJsc3BhY2UnKQorT1JERVIgQlkgcmVsbmFtZTsKKyAgICAgICAgICAgIHJlbG5hbWUg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsX2lkeAorKDEgcm93KQorCistLSBtb3ZlIGluZGV4ZXMgYmFjayB0byBw Z19kZWZhdWx0IHRhYmxlc3BhY2UKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFC TEUgQ09OQ1VSUkVOVExZIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIG9rCistLSBjaGVj ayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgYmFjayB0byBwZ19kZWZhdWx0CitTRUxFQ1QgcmVs bmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00g cGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisgcmVsbmFt ZSAKKy0tLS0tLS0tLQorKDAgcm93cykKKwogLS0gY3JlYXRlIGEgc2NoZW1hIHdlIGNhbiB1c2UK IENSRUFURSBTQ0hFTUEgdGVzdHNjaGVtYTsKIC0tIHRyeSBhIHRhYmxlCkBAIC0xOTksNiArMjU4 LDQ3IEBAIFBhcnRpdGlvbnM6IHRlc3RzY2hlbWEucGFydDFfYV9pZHgsCiAgICAgICAgICAgICB0 ZXN0c2NoZW1hLnBhcnQyX2FfaWR4CiBUYWJsZXNwYWNlOiAicmVncmVzc190YmxzcGFjZSIKIAor LS0gUkVJTkRFWCBwYXJ0aXRpb25lZCBpbmRleGVzIHRvIG5ldyB0YWJsZXNwYWNlCitSRUlOREVY IChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIHRlc3RzY2hlbWEucGFydDsKK1xkIHRlc3Rz Y2hlbWEucGFydAorICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAidGVzdHNjaGVtYS5wYXJ0Igor IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IExJU1Qg KGEpCitJbmRleGVzOgorICAgICJwYXJ0X2FfaWR4IiBidHJlZSAoYSkKK051bWJlciBvZiBwYXJ0 aXRpb25zOiAyIChVc2UgXGQrIHRvIGxpc3QgdGhlbS4pCisKK1xkIHRlc3RzY2hlbWEucGFydDEK KyAgICAgICAgICAgICBUYWJsZSAidGVzdHNjaGVtYS5wYXJ0MSIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRlc3RzY2hlbWEucGFydCBGT1IgVkFM VUVTIElOICgxKQorSW5kZXhlczoKKyAgICAicGFydDFfYV9pZHgiIGJ0cmVlIChhKQorCitSRUlO REVYIChDT05DVVJSRU5UTFksIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggdGVz dHNjaGVtYS5wYXJ0X2FfaWR4OworXGQgdGVzdHNjaGVtYS5wYXJ0CisgICAgICAgIFBhcnRpdGlv bmVkIHRhYmxlICJ0ZXN0c2NoZW1hLnBhcnQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IAorUGFydGl0aW9uIGtleTogTElTVCAoYSkKK0luZGV4ZXM6CisgICAgInBhcnRfYV9p ZHgiIGJ0cmVlIChhKSwgdGFibGVzcGFjZSAicmVncmVzc190YmxzcGFjZSIKK051bWJlciBvZiBw YXJ0aXRpb25zOiAyIChVc2UgXGQrIHRvIGxpc3QgdGhlbS4pCisKK1xkIHRlc3RzY2hlbWEucGFy dDEKKyAgICAgICAgICAgICBUYWJsZSAidGVzdHNjaGVtYS5wYXJ0MSIKKyBDb2x1bW4gfCAgVHlw ZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRlc3RzY2hlbWEucGFydCBGT1Ig VkFMVUVTIElOICgxKQorSW5kZXhlczoKKyAgICAicGFydDFfYV9pZHgiIGJ0cmVlIChhKSwgdGFi bGVzcGFjZSAicmVncmVzc190YmxzcGFjZSIKKwogLS0gcGFydGl0aW9uZWQgcmVscyBjYW5ub3Qg c3BlY2lmeSB0aGUgZGVmYXVsdCB0YWJsZXNwYWNlLiAgVGhlc2UgZmFpbDoKIENSRUFURSBUQUJM RSB0ZXN0c2NoZW1hLmRmbHQgKGEgaW50IFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgTElTVCAo YSkgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBkZWZhdWx0 IHRhYmxlc3BhY2UgZm9yIHBhcnRpdGlvbmVkIHJlbGF0aW9ucwpAQCAtNzQxLDYgKzg0MSw4IEBA IEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBT RVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0CiBOT1RJQ0U6ICBubyBtYXRjaGluZyByZWxhdGlvbnMg aW4gdGFibGVzcGFjZSAicmVncmVzc190YmxzcGFjZV9yZW5hbWVkIiBmb3VuZAogLS0gU2hvdWxk IHN1Y2NlZWQKIERST1AgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7CitEUk9Q IElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworRFJPUCBUQUJMRSByZWdyZXNz X3RibHNwYWNlX3Rlc3RfdGJsOwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogTk9U SUNFOiAgZHJvcCBjYXNjYWRlcyB0byA2IG90aGVyIG9iamVjdHMKIERFVEFJTDogIGRyb3AgY2Fz Y2FkZXMgdG8gdGFibGUgdGVzdHNjaGVtYS5mb28KLS0gCjIuMjAuMQoK --=_0dfc4bbdb0ff81cc8da4811c9df3afd6 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0001-Ectract-common-part-from-ATExecSetTableSpaceNoSto.patch Content-Disposition: attachment; filename=v2-0001-Ectract-common-part-from-ATExecSetTableSpaceNoSto.patch; size=5058 RnJvbSAxNDI2NjRkNWZhMjlkM2Y5M2Y0MGZjNzg1NmJhZTdhYjYyYmFkMjdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjAgSmFuIDIwMjEgMjA6MjE6MTIgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyIDEvMl0gRWN0cmFjdCBjb21tb24gcGFydCBmcm9tIEFURXhlY1NldFRhYmxlU3Bh Y2VOb1N0b3JhZ2UKIGZvciBhIGZ1dHVyZSB1c2FnZQoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYyB8IDk3ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCB8ICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgNTkg aW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpp bmRleCA4Njg3ZTlhOTdjLi45NDU2N2ViOTg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpA QCAtMTMyOTEsNiArMTMyOTEsNTkgQEAgQVRFeGVjU2V0VGFibGVTcGFjZShPaWQgdGFibGVPaWQs IE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAlsaXN0X2ZyZWUocmVsdG9h c3RpZHhpZHMpOwogfQogCisvKgorICogU2V0UmVsVGFibGVzcGFjZSAtIG1vZGlmeSByZWxhdGlv biB0YWJsZXNwYWNlIGluIHRoZSBwZ19jbGFzcyBlbnRyeS4KKyAqCisgKiAncmVsb2lkJyBpcyBh biBPaWQgb2YgcmVsYXRpb24gdG8gYmUgbW9kaWZpZWQuCisgKiAndGFibGVzcGFjZU9pZCcgaXMg YW4gT2lkIG9mIG5ldyB0YWJsZXNwYWNlLgorICoKKyAqIENhdGFsb2cgbW9kaWZpY2F0aW9uIGlz IGRvbmUgb25seSBpZiB0YWJsZXNwYWNlT2lkIGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgY3Vy cmVudGx5IHNldC4gIFJldHVybmVkIGJvb2wgdmFsdWUgaXMgaW5kaWNhdGluZyB3aGV0aGVyIGFu eSBjaGFuZ2VzCisgKiB3ZXJlIG1hZGUgb3Igbm90LgorICovCitib29sCitTZXRSZWxUYWJsZXNw YWNlKE9pZCByZWxvaWQsIE9pZCB0YWJsZXNwYWNlT2lkKQoreworCVJlbGF0aW9uCQlwZ19jbGFz czsKKwlIZWFwVHVwbGUJCXR1cGxlOworCUZvcm1fcGdfY2xhc3MJcmRfcmVsOworCWJvb2wJCQlj aGFuZ2VkID0gZmFsc2U7CisJT2lkCQkJb2xkVGFibGVzcGFjZU9pZDsKKworCS8qIEdldCBhIG1v ZGlmaWFibGUgY29weSBvZiB0aGUgcmVsYXRpb24ncyBwZ19jbGFzcyByb3cuICovCisJcGdfY2xh c3MgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisK Kwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJl bG9pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHJlbG9pZCk7CisJcmRfcmVsID0g KEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkvKiBObyB3b3JrIGlmIG5vIGNo YW5nZSBpbiB0YWJsZXNwYWNlLiAqLworCW9sZFRhYmxlc3BhY2VPaWQgPSByZF9yZWwtPnJlbHRh Ymxlc3BhY2U7CisJaWYgKHRhYmxlc3BhY2VPaWQgIT0gb2xkVGFibGVzcGFjZU9pZCB8fAorCQko dGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSAmJiBPaWRJc1ZhbGlkKG9sZFRh Ymxlc3BhY2VPaWQpKSkKKwl7CisJCS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3Mgcm93LiAqLworCQly ZF9yZWwtPnJlbHRhYmxlc3BhY2UgPSAodGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVT cGFjZSkgPworCQkJSW52YWxpZE9pZCA6IHRhYmxlc3BhY2VPaWQ7CisJCUNhdGFsb2dUdXBsZVVw ZGF0ZShwZ19jbGFzcywgJnR1cGxlLT50X3NlbGYsIHR1cGxlKTsKKworCQljaGFuZ2VkID0gdHJ1 ZTsKKwl9CisKKwlpZiAoY2hhbmdlZCkKKwkJLyogUmVjb3JkIGRlcGVuZGVuY3kgb24gdGFibGVz cGFjZSAqLworCQljaGFuZ2VEZXBlbmRlbmN5T25UYWJsZXNwYWNlKFJlbGF0aW9uUmVsYXRpb25J ZCwKKwkJCQkJCQkJCSByZWxvaWQsIHJkX3JlbC0+cmVsdGFibGVzcGFjZSk7CisKKwlJbnZva2VP YmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsb2lkLCAwKTsKKworCWhl YXBfZnJlZXR1cGxlKHR1cGxlKTsKKwl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhjbHVzaXZl TG9jayk7CisKKwlyZXR1cm4gY2hhbmdlZDsKK30KKwogLyoKICAqIFNwZWNpYWwgaGFuZGxpbmcg b2YgQUxURVIgVEFCTEUgU0VUIFRBQkxFU1BBQ0UgZm9yIHJlbGF0aW9ucyB3aXRoIG5vCiAgKiBz dG9yYWdlIHRoYXQgaGF2ZSBhbiBpbnRlcmVzdCBpbiBwcmVzZXJ2aW5nIHRhYmxlc3BhY2UuCkBA IC0xMzMwMSwxMSArMTMzNTQsNyBAQCBBVEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwg T2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tNT0RFIGxvY2ttb2RlKQogc3RhdGljIHZvaWQKIEFURXhl Y1NldFRhYmxlU3BhY2VOb1N0b3JhZ2UoUmVsYXRpb24gcmVsLCBPaWQgbmV3VGFibGVTcGFjZSkK IHsKLQlIZWFwVHVwbGUJdHVwbGU7Ci0JT2lkCQkJb2xkVGFibGVTcGFjZTsKLQlSZWxhdGlvbglw Z19jbGFzczsKLQlGb3JtX3BnX2NsYXNzIHJkX3JlbDsKLQlPaWQJCQlyZWxvaWQgPSBSZWxhdGlv bkdldFJlbGlkKHJlbCk7CisJT2lkCXJlbG9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKIAog CS8qCiAJICogU2hvdWxkbid0IGJlIGNhbGxlZCBvbiByZWxhdGlvbnMgaGF2aW5nIHN0b3JhZ2U7 IHRoZXNlIGFyZSBwcm9jZXNzZWQgaW4KQEAgLTEzMzE5LDQxICsxMzM2OCw5IEBAIEFURXhlY1Nl dFRhYmxlU3BhY2VOb1N0b3JhZ2UoUmVsYXRpb24gcmVsLCBPaWQgbmV3VGFibGVTcGFjZSkKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNn KCJvbmx5IHNoYXJlZCByZWxhdGlvbnMgY2FuIGJlIHBsYWNlZCBpbiBwZ19nbG9iYWwgdGFibGVz cGFjZSIpKSk7CiAKLQkvKgotCSAqIE5vIHdvcmsgaWYgbm8gY2hhbmdlIGluIHRhYmxlc3BhY2Uu Ci0JICovCi0Jb2xkVGFibGVTcGFjZSA9IHJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlOwotCWlm IChuZXdUYWJsZVNwYWNlID09IG9sZFRhYmxlU3BhY2UgfHwKLQkJKG5ld1RhYmxlU3BhY2UgPT0g TXlEYXRhYmFzZVRhYmxlU3BhY2UgJiYgb2xkVGFibGVTcGFjZSA9PSAwKSkKLQl7Ci0JCUludm9r ZU9iamVjdFBvc3RBbHRlckhvb2soUmVsYXRpb25SZWxhdGlvbklkLCByZWxvaWQsIDApOwotCQly ZXR1cm47Ci0JfQotCi0JLyogR2V0IGEgbW9kaWZpYWJsZSBjb3B5IG9mIHRoZSByZWxhdGlvbidz IHBnX2NsYXNzIHJvdyAqLwotCXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9u SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwotCi0JdHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFJF TE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxvaWQpKTsKLQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo dHVwbGUpKQotCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24g JXUiLCByZWxvaWQpOwotCXJkX3JlbCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUp OwotCi0JLyogdXBkYXRlIHRoZSBwZ19jbGFzcyByb3cgKi8KLQlyZF9yZWwtPnJlbHRhYmxlc3Bh Y2UgPSAobmV3VGFibGVTcGFjZSA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSkgPyBJbnZhbGlkT2lk IDogbmV3VGFibGVTcGFjZTsKLQlDYXRhbG9nVHVwbGVVcGRhdGUocGdfY2xhc3MsICZ0dXBsZS0+ dF9zZWxmLCB0dXBsZSk7Ci0KLQkvKiBSZWNvcmQgZGVwZW5kZW5jeSBvbiB0YWJsZXNwYWNlICov Ci0JY2hhbmdlRGVwZW5kZW5jeU9uVGFibGVzcGFjZShSZWxhdGlvblJlbGF0aW9uSWQsCi0JCQkJ CQkJCSByZWxvaWQsIHJkX3JlbC0+cmVsdGFibGVzcGFjZSk7Ci0KLQlJbnZva2VPYmplY3RQb3N0 QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsb2lkLCAwKTsKLQotCWhlYXBfZnJlZXR1 cGxlKHR1cGxlKTsKLQotCXRhYmxlX2Nsb3NlKHBnX2NsYXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsK LQotCS8qIE1ha2Ugc3VyZSB0aGUgcmVsdGFibGVzcGFjZSBjaGFuZ2UgaXMgdmlzaWJsZSAqLwot CUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJaWYgKFNldFJlbFRhYmxlc3BhY2UocmVsb2lk LCBuZXdUYWJsZVNwYWNlKSkKKwkJLyogTWFrZSBzdXJlIHRoZSByZWx0YWJsZXNwYWNlIGNoYW5n ZSBpcyB2aXNpYmxlICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3RhYmxlY21kcy5oCmluZGV4IDA4YzQ2M2QzYzQuLjM1NTUzZmQ0MWEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCisrKyBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3RhYmxlY21kcy5oCkBAIC02MSw2ICs2MSw4IEBAIGV4dGVybiB2b2lkIEV4ZWN1 dGVUcnVuY2F0ZUd1dHMoTGlzdCAqZXhwbGljaXRfcmVscywgTGlzdCAqcmVsaWRzLCBMaXN0ICpy ZWxpZHNfCiAKIGV4dGVybiB2b2lkIFNldFJlbGF0aW9uSGFzU3ViY2xhc3MoT2lkIHJlbGF0aW9u SWQsIGJvb2wgcmVsaGFzc3ViY2xhc3MpOwogCitleHRlcm4gYm9vbCBTZXRSZWxUYWJsZXNwYWNl KE9pZCByZWxvaWQsIE9pZCB0YWJsZXNwYWNlT2lkKTsKKwogZXh0ZXJuIE9iamVjdEFkZHJlc3Mg cmVuYW1lYXR0KFJlbmFtZVN0bXQgKnN0bXQpOwogCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBSZW5h bWVDb25zdHJhaW50KFJlbmFtZVN0bXQgKnN0bXQpOwoKYmFzZS1jb21taXQ6IGMyZGMxYTc5NzY3 YTBmOTQ3ZTExNDVmODJlYjY1ZGZlNDM2MGQyNWYKLS0gCjIuMjAuMQoK --=_0dfc4bbdb0ff81cc8da4811c9df3afd6--