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 1l4WOS-000507-Vz for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Jan 2021 22:01:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l4WOQ-0001rh-Uo for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Jan 2021 22:00:58 +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 1l4WOQ-0001ra-9G for pgsql-hackers@lists.postgresql.org; Tue, 26 Jan 2021 22:00:58 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l4WOK-0001du-Uf for pgsql-hackers@lists.postgresql.org; Tue, 26 Jan 2021 22:00:56 +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 3ABD621C396B; Wed, 27 Jan 2021 01:00:50 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1611698450; bh=MbTRu/5EkdDp29a2vKZE13sJVA29QWwWZW2Mx23Ia4Q=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=qorEu2ngDAXl59huQw9HzA0yBHtAOK7N3gshz24hIxcABrVxoYwm92axhnObXvw2x utkYYYEtJEEZkOJSl5OA6ax8TbUwzGaK5XvHa7XJCSxhbwKfygSDYwbabR5bDwL/xX s3/HBF7UJ88V8Xwfxvxdyc2nWTyZNtyO4ffmxO/M= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_c0763dddf942a47f7b5f0c89461d2886" Content-Transfer-Encoding: 7bit Date: Wed, 27 Jan 2021 01:00:50 +0300 From: Alexey Kondratov To: Michael Paquier Cc: Justin Pryzby , Alvaro Herrera , 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> <20210121212651.GY8560@telsasoft.com> <944df7cc452fe0c34cf7820da4588d05@postgrespro.ru> <690fa051803c071d213b0d07b5aa9f55@postgrespro.ru> 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 --=_c0763dddf942a47f7b5f0c89461d2886 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-01-26 09:58, Michael Paquier wrote: > On Mon, Jan 25, 2021 at 11:11:38PM +0300, Alexey Kondratov wrote: >> I updated comment with CCI info, did pgindent run and renamed new >> function >> to SetRelationTableSpace(). New patch is attached. >> >> [...] >> >> Yeah, all these checks we complicated from the beginning. I will try >> to find >> a better place tomorrow or put more info into the comments at least. > > I was reviewing that, and I think that we can do a better > consolidation on several points that will also help the features > discussed on this thread for VACUUM, CLUSTER and REINDEX. > > If you look closely, ATExecSetTableSpace() uses the same logic as the > code modified here to check if a relation can be moved to a new > tablespace, with extra checks for mapped relations, > GLOBALTABLESPACE_OID or if attempting to manipulate a temp relation > from another session. There are two differences though: > - Custom actions are taken between the phase where we check if a > relation can be moved to a new tablespace, and the update of > pg_class. > - ATExecSetTableSpace() needs to be able to set a given relation > relfilenode on top of reltablespace, the newly-created one. > > So I think that the heart of the problem is made of two things here: > - We should have one common routine for the existing code paths and > the new code paths able to check if a tablespace move can be done or > not. The case of a cluster, reindex or vacuum on a list of relations > extracted from pg_class would still require a different handling > as incorrect relations have to be skipped, but the case of individual > relations can reuse the refactoring pieces done here > (see CheckRelationTableSpaceMove() in the attached). > - We need to have a second routine able to update reltablespace and > optionally relfilenode for a given relation's pg_class entry, once the > caller has made sure that CheckRelationTableSpaceMove() validates a > tablespace move. > I think that I got your idea. One comment: +bool +CheckRelationTableSpaceMove(Relation rel, Oid newTableSpaceId) +{ + Oid oldTableSpaceId; + Oid reloid = RelationGetRelid(rel); + + /* + * No work if no change in tablespace. Note that MyDatabaseTableSpace + * is stored as 0. + */ + oldTableSpaceId = rel->rd_rel->reltablespace; + if (newTableSpaceId == oldTableSpaceId || + (newTableSpaceId == MyDatabaseTableSpace && oldTableSpaceId == 0)) + { + InvokeObjectPostAlterHook(RelationRelationId, reloid, 0); + return false; + } CheckRelationTableSpaceMove() does not feel like a right place for invoking post alter hooks. It is intended only to check for tablespace change possibility. Anyway, ATExecSetTableSpace() and ATExecSetTableSpaceNoStorage() already do that in the no-op case. > Please note that was a bug in your previous patch 0002: shared > dependencies need to be registered if reltablespace is updated of > course, but also iff the relation has no physical storage. So > changeDependencyOnTablespace() requires a check based on > RELKIND_HAS_STORAGE(), or REINDEX would have registered shared > dependencies even for relations with storage, something we don't > want per the recent work done by Alvaro in ebfe2db. > Yes, thanks. I have removed this InvokeObjectPostAlterHook() from your 0001 and made 0002 to work on top of it. I think that now it should look closer to what you described above. In the new 0002 I moved ACL check to the upper level, i.e. ExecReindex(), and removed expensive text generation in test. Not touched yet some of your previously raised concerns. Also, you made SetRelationTableSpace() to accept Relation instead of Oid, so now we have to open/close indexes in the ReindexPartitions(), I am not sure that I use proper locking there, but it works. Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company --=_c0763dddf942a47f7b5f0c89461d2886 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v7-0001-Refactor-code-to-detect-and-process-tablespace-mo.patch Content-Disposition: attachment; filename=v7-0001-Refactor-code-to-detect-and-process-tablespace-mo.patch; size=10758 RnJvbSA5NmEzNzM5OWE5Y2Y5YWUwOGQ2MmUyODQ5NmU3M2IzNjA4N2U1YTE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ CkRhdGU6IFR1ZSwgMjYgSmFuIDIwMjEgMTU6NTM6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY3 IDEvMl0gUmVmYWN0b3IgY29kZSB0byBkZXRlY3QgYW5kIHByb2Nlc3MgdGFibGVzcGFjZSBtb3Zl cwoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyB8IDIxOCArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCB8 ICAgNCArCiAyIGZpbGVzIGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCA5NSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDg2ODdlOWE5N2MuLmMwOGVlZGY5OTUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0zMDM3LDYgKzMwMzcsMTE2IEBAIFNldFJl bGF0aW9uSGFzU3ViY2xhc3MoT2lkIHJlbGF0aW9uSWQsIGJvb2wgcmVsaGFzc3ViY2xhc3MpCiAJ dGFibGVfY2xvc2UocmVsYXRpb25SZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKKy8q CisgKiBDaGVja1JlbGF0aW9uVGFibGVTcGFjZU1vdmUKKyAqCQlDaGVjayBpZiByZWxhdGlvbiBj YW4gYmUgbW92ZWQgdG8gbmV3IHRhYmxlc3BhY2UuCisgKgorICogTk9URTogY2FsbGVyIG11c3Qg YmUgaG9sZGluZyBhbiBhcHByb3ByaWF0ZSBsb2NrIG9uIHRoZSByZWxhdGlvbi4KKyAqIFNoYXJl VXBkYXRlRXhjbHVzaXZlTG9jayBpcyBzdWZmaWNpZW50IHRvIHByZXZlbnQgY29uY3VycmVudCBz Y2hlbWEKKyAqIGNoYW5nZXMuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSByZWxhdGlvbiBj YW4gYmUgbW92ZWQgdG8gdGhlIG5ldyB0YWJsZXNwYWNlOworICogZmFsc2Ugb3RoZXJ3aXNlLgor ICovCitib29sCitDaGVja1JlbGF0aW9uVGFibGVTcGFjZU1vdmUoUmVsYXRpb24gcmVsLCBPaWQg bmV3VGFibGVTcGFjZUlkKQoreworCU9pZAkJCW9sZFRhYmxlU3BhY2VJZDsKKworCS8qCisJICog Tm8gd29yayBpZiBubyBjaGFuZ2UgaW4gdGFibGVzcGFjZS4gIE5vdGUgdGhhdCBNeURhdGFiYXNl VGFibGVTcGFjZQorCSAqIGlzIHN0b3JlZCBhcyAwLgorCSAqLworCW9sZFRhYmxlU3BhY2VJZCA9 IHJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlOworCWlmIChuZXdUYWJsZVNwYWNlSWQgPT0gb2xk VGFibGVTcGFjZUlkIHx8CisJCShuZXdUYWJsZVNwYWNlSWQgPT0gTXlEYXRhYmFzZVRhYmxlU3Bh Y2UgJiYgb2xkVGFibGVTcGFjZUlkID09IDApKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAq IFdlIGNhbm5vdCBzdXBwb3J0IG1vdmluZyBtYXBwZWQgcmVsYXRpb25zIGludG8gZGlmZmVyZW50 IHRhYmxlc3BhY2VzLgorCSAqIChJbiBwYXJ0aWN1bGFyIHRoaXMgZWxpbWluYXRlcyBhbGwgc2hh cmVkIGNhdGFsb2dzLikKKwkgKi8KKwlpZiAoUmVsYXRpb25Jc01hcHBlZChyZWwpKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBzeXN0ZW0gcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisKKwkvKiBDYW5ub3QgbW92ZSBhIG5v bi1zaGFyZWQgcmVsYXRpb24gaW50byBwZ19nbG9iYWwgKi8KKwlpZiAobmV3VGFibGVTcGFjZUlk ID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coIm9ubHkgc2hh cmVkIHJlbGF0aW9ucyBjYW4gYmUgcGxhY2VkIGluIHBnX2dsb2JhbCB0YWJsZXNwYWNlIikpKTsK KworCS8qCisJICogRG8gbm90IGFsbG93IG1vdmluZyB0ZW1wIHRhYmxlcyBvZiBvdGhlciBiYWNr ZW5kcyAuLi4gdGhlaXIgbG9jYWwKKwkgKiBidWZmZXIgbWFuYWdlciBpcyBub3QgZ29pbmcgdG8g Y29wZS4KKwkgKi8KKwlpZiAoUkVMQVRJT05fSVNfT1RIRVJfVEVNUChyZWwpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkgZXJybXNnKCJjYW5ub3QgbW92ZSB0ZW1wb3JhcnkgdGFibGVzIG9mIG90aGVyIHNlc3Npb25z IikpKTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogU2V0UmVsYXRpb25UYWJsZVNwYWNl CisgKgkJU2V0IG5ldyByZWx0YWJsZXNwYWNlIGFuZCByZWxmaWxlbm9kZSBpbiBwZ19jbGFzcyBl bnRyeS4KKyAqCisgKiBuZXdUYWJsZVNwYWNlSWQgaXMgdGhlIG5ldyB0YWJsZXNwYWNlIGZvciB0 aGUgcmVsYXRpb24sIGFuZAorICogbmV3cmVsZmlsZW5vZGUgaXRzIG5ldyBmaWxlIG5vZGUuICBJ ZiBuZXdyZWxmaWxlbm9kZSBpcyBJbnZhbGlkT2lkLAorICogdGhpcyBmaWVsZCBpcyBub3QgdXBk YXRlZC4KKyAqCisgKiBOT1RFOiBjYWxsZXIgbXVzdCBiZSBob2xkaW5nIGFuIGFwcHJvcHJpYXRl IGxvY2sgb24gdGhlIHJlbGF0aW9uLgorICogU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrIGlzIHN1 ZmZpY2llbnQuCisgKgorICogVGhlIGNhbGxlciBvZiB0aGlzIHJvdXRpbmUgaGFkIGJldHRlciBj aGVjayBpZiBhIHJlbGF0aW9uIGNhbiBiZQorICogbW92ZWQgdG8gdGhpcyBuZXcgdGFibGVzcGFj ZSBieSBjYWxsaW5nIENoZWNrUmVsYXRpb25UYWJsZVNwYWNlTW92ZSgpCisgKiBmaXJzdCwgYW5k IGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgdGhlIGNoYW5nZSB2aXNpYmxlIHdpdGgKKyAqIENv bW1hbmRDb3VudGVySW5jcmVtZW50KCkuCisgKi8KK3ZvaWQKK1NldFJlbGF0aW9uVGFibGVTcGFj ZShSZWxhdGlvbiByZWwsCisJCQkJCSAgT2lkIG5ld1RhYmxlU3BhY2VJZCwKKwkJCQkJICBPaWQg bmV3UmVsRmlsZU5vZGUpCit7CisJUmVsYXRpb24JcGdfY2xhc3M7CisJSGVhcFR1cGxlCXR1cGxl OworCUZvcm1fcGdfY2xhc3MgcmRfcmVsOworCU9pZAkJCXJlbG9pZCA9IFJlbGF0aW9uR2V0UmVs aWQocmVsKTsKKworCUFzc2VydChDaGVja1JlbGF0aW9uVGFibGVTcGFjZU1vdmUocmVsLCBuZXdU YWJsZVNwYWNlSWQpKTsKKworCS8qIEdldCBhIG1vZGlmaWFibGUgY29weSBvZiB0aGUgcmVsYXRp b24ncyBwZ19jbGFzcyByb3cuICovCisJcGdfY2xhc3MgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVs YXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29w eTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbG9pZCkpOworCWlmICghSGVhcFR1cGxlSXNW YWxpZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxh dGlvbiAldSIsIHJlbG9pZCk7CisJcmRfcmVsID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0 dXBsZSk7CisKKwkvKiBVcGRhdGUgdGhlIHBnX2NsYXNzIHJvdy4gKi8KKwlyZF9yZWwtPnJlbHRh Ymxlc3BhY2UgPSAobmV3VGFibGVTcGFjZUlkID09IE15RGF0YWJhc2VUYWJsZVNwYWNlKSA/CisJ CUludmFsaWRPaWQgOiBuZXdUYWJsZVNwYWNlSWQ7CisJaWYgKE9pZElzVmFsaWQobmV3UmVsRmls ZU5vZGUpKQorCQlyZF9yZWwtPnJlbGZpbGVub2RlID0gbmV3UmVsRmlsZU5vZGU7CisJQ2F0YWxv Z1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmdHVwbGUtPnRfc2VsZiwgdHVwbGUpOworCisJLyoKKwkg KiBSZWNvcmQgZGVwZW5kZW5jeSBvbiB0YWJsZXNwYWNlLiAgVGhpcyBpcyBvbmx5IHJlcXVpcmVk CisJICogZm9yIHJlbGF0aW9ucyB0aGF0IGhhdmUgbm8gcGh5c2ljYWwgc3RvcmFnZS4KKwkgKi8K KwlpZiAoIVJFTEtJTkRfSEFTX1NUT1JBR0UocmVsLT5yZF9yZWwtPnJlbGtpbmQpKQorCQljaGFu Z2VEZXBlbmRlbmN5T25UYWJsZXNwYWNlKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsb2lkLAorCQkJ CQkJCQkJIHJkX3JlbC0+cmVsdGFibGVzcGFjZSk7CisKKwlJbnZva2VPYmplY3RQb3N0QWx0ZXJI b29rKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsb2lkLCAwKTsKKworCWhlYXBfZnJlZXR1cGxlKHR1 cGxlKTsKKwl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8q CiAgKgkJcmVuYW1lYXR0X2NoZWNrCQkJLSBiYXNpYyBzYW5pdHkgY2hlY2tzIGJlZm9yZSBhdHRy aWJ1dGUgcmVuYW1lCiAgKi8KQEAgLTEzMTYwLDEzICsxMzI3MCw5IEBAIHN0YXRpYyB2b2lkCiBB VEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tN T0RFIGxvY2ttb2RlKQogewogCVJlbGF0aW9uCXJlbDsKLQlPaWQJCQlvbGRUYWJsZVNwYWNlOwog CU9pZAkJCXJlbHRvYXN0cmVsaWQ7CiAJT2lkCQkJbmV3cmVsZmlsZW5vZGU7CiAJUmVsRmlsZU5v ZGUgbmV3cm5vZGU7Ci0JUmVsYXRpb24JcGdfY2xhc3M7Ci0JSGVhcFR1cGxlCXR1cGxlOwotCUZv cm1fcGdfY2xhc3MgcmRfcmVsOwogCUxpc3QJICAgKnJlbHRvYXN0aWR4aWRzID0gTklMOwogCUxp c3RDZWxsICAgKmxjOwogCkBAIC0xMzE3NSw0NSArMTMyODEsMTUgQEAgQVRFeGVjU2V0VGFibGVT cGFjZShPaWQgdGFibGVPaWQsIE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSkK IAkgKi8KIAlyZWwgPSByZWxhdGlvbl9vcGVuKHRhYmxlT2lkLCBsb2NrbW9kZSk7CiAKLQkvKgot CSAqIE5vIHdvcmsgaWYgbm8gY2hhbmdlIGluIHRhYmxlc3BhY2UuCi0JICovCi0Jb2xkVGFibGVT cGFjZSA9IHJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlOwotCWlmIChuZXdUYWJsZVNwYWNlID09 IG9sZFRhYmxlU3BhY2UgfHwKLQkJKG5ld1RhYmxlU3BhY2UgPT0gTXlEYXRhYmFzZVRhYmxlU3Bh Y2UgJiYgb2xkVGFibGVTcGFjZSA9PSAwKSkKKwkvKiBDaGVjayBmaXJzdCBpZiByZWxhdGlvbiBj YW4gYmUgbW92ZWQgdG8gbmV3IHRhYmxlc3BhY2UgKi8KKwlpZiAoIUNoZWNrUmVsYXRpb25UYWJs ZVNwYWNlTW92ZShyZWwsIG5ld1RhYmxlU3BhY2UpKQogCXsKIAkJSW52b2tlT2JqZWN0UG9zdEFs dGVySG9vayhSZWxhdGlvblJlbGF0aW9uSWQsCiAJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxpZChy ZWwpLCAwKTsKLQogCQlyZWxhdGlvbl9jbG9zZShyZWwsIE5vTG9jayk7CiAJCXJldHVybjsKIAl9 CiAKLQkvKgotCSAqIFdlIGNhbm5vdCBzdXBwb3J0IG1vdmluZyBtYXBwZWQgcmVsYXRpb25zIGlu dG8gZGlmZmVyZW50IHRhYmxlc3BhY2VzLgotCSAqIChJbiBwYXJ0aWN1bGFyIHRoaXMgZWxpbWlu YXRlcyBhbGwgc2hhcmVkIGNhdGFsb2dzLikKLQkgKi8KLQlpZiAoUmVsYXRpb25Jc01hcHBlZChy ZWwpKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBzeXN0ZW0gcmVsYXRpb24gXCIl c1wiIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7Ci0KLQkvKiBDYW4n dCBtb3ZlIGEgbm9uLXNoYXJlZCByZWxhdGlvbiBpbnRvIHBnX2dsb2JhbCAqLwotCWlmIChuZXdU YWJsZVNwYWNlID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCSBlcnJtc2co Im9ubHkgc2hhcmVkIHJlbGF0aW9ucyBjYW4gYmUgcGxhY2VkIGluIHBnX2dsb2JhbCB0YWJsZXNw YWNlIikpKTsKLQotCS8qCi0JICogRG9uJ3QgYWxsb3cgbW92aW5nIHRlbXAgdGFibGVzIG9mIG90 aGVyIGJhY2tlbmRzIC4uLiB0aGVpciBsb2NhbCBidWZmZXIKLQkgKiBtYW5hZ2VyIGlzIG5vdCBn b2luZyB0byBjb3BlLgotCSAqLwotCWlmIChSRUxBVElPTl9JU19PVEhFUl9URU1QKHJlbCkpCi0J CWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAotCQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIHRlbXBvcmFyeSB0YWJsZXMgb2Ygb3RoZXIg c2Vzc2lvbnMiKSkpOwotCiAJcmVsdG9hc3RyZWxpZCA9IHJlbC0+cmRfcmVsLT5yZWx0b2FzdHJl bGlkOwogCS8qIEZldGNoIHRoZSBsaXN0IG9mIGluZGV4ZXMgb24gdG9hc3QgcmVsYXRpb24gaWYg bmVjZXNzYXJ5ICovCiAJaWYgKE9pZElzVmFsaWQocmVsdG9hc3RyZWxpZCkpCkBAIC0xMzIyNCwx NCArMTMzMDAsNiBAQCBBVEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1Rh YmxlU3BhY2UsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQlyZWxhdGlvbl9jbG9zZSh0b2FzdFJlbCwg bG9ja21vZGUpOwogCX0KIAotCS8qIEdldCBhIG1vZGlmaWFibGUgY29weSBvZiB0aGUgcmVsYXRp b24ncyBwZ19jbGFzcyByb3cgKi8KLQlwZ19jbGFzcyA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxh dGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQotCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5 MShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0odGFibGVPaWQpKTsKLQlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwbGUpKQotCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVs YXRpb24gJXUiLCB0YWJsZU9pZCk7Ci0JcmRfcmVsID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVD VCh0dXBsZSk7Ci0KIAkvKgogCSAqIFJlbGZpbGVub2RlcyBhcmUgbm90IHVuaXF1ZSBpbiBkYXRh YmFzZXMgYWNyb3NzIHRhYmxlc3BhY2VzLCBzbyB3ZSBuZWVkCiAJICogdG8gYWxsb2NhdGUgYSBu ZXcgb25lIGluIHRoZSBuZXcgdGFibGVzcGFjZS4KQEAgLTEzMjYyLDE3ICsxMzMzMCwxMCBAQCBB VEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tN T0RFIGxvY2ttb2RlKQogCSAqCiAJICogTkI6IFRoaXMgd291bGRuJ3Qgd29yayBpZiBBVEV4ZWNT ZXRUYWJsZVNwYWNlKCkgd2VyZSBhbGxvd2VkIHRvIGJlCiAJICogZXhlY3V0ZWQgb24gcGdfY2xh c3Mgb3IgaXRzIGluZGV4ZXMgKHRoZSBhYm92ZSBjb3B5IHdvdWxkbid0IGNvbnRhaW4KLQkgKiB0 aGUgdXBkYXRlZCBwZ19jbGFzcyBlbnRyeSksIGJ1dCB0aGF0J3MgZm9yYmlkZGVuIGFib3ZlLgor CSAqIHRoZSB1cGRhdGVkIHBnX2NsYXNzIGVudHJ5KSwgYnV0IHRoYXQncyBmb3JiaWRkZW4gd2l0 aAorCSAqIENoZWNrUmVsYXRpb25UYWJsZVNwYWNlTW92ZSgpLgogCSAqLwotCXJkX3JlbC0+cmVs dGFibGVzcGFjZSA9IChuZXdUYWJsZVNwYWNlID09IE15RGF0YWJhc2VUYWJsZVNwYWNlKSA/IElu dmFsaWRPaWQgOiBuZXdUYWJsZVNwYWNlOwotCXJkX3JlbC0+cmVsZmlsZW5vZGUgPSBuZXdyZWxm aWxlbm9kZTsKLQlDYXRhbG9nVHVwbGVVcGRhdGUocGdfY2xhc3MsICZ0dXBsZS0+dF9zZWxmLCB0 dXBsZSk7Ci0KLQlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwg UmVsYXRpb25HZXRSZWxpZChyZWwpLCAwKTsKLQotCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKLQot CXRhYmxlX2Nsb3NlKHBnX2NsYXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlTZXRSZWxhdGlvblRh YmxlU3BhY2UocmVsLCBuZXdUYWJsZVNwYWNlLCBuZXdyZWxmaWxlbm9kZSk7CiAKIAlSZWxhdGlv bkFzc3VtZU5ld1JlbGZpbGVub2RlKHJlbCk7CiAKQEAgLTEzMzAxLDU4ICsxMzM2MiwyNSBAQCBB VEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tN T0RFIGxvY2ttb2RlKQogc3RhdGljIHZvaWQKIEFURXhlY1NldFRhYmxlU3BhY2VOb1N0b3JhZ2Uo UmVsYXRpb24gcmVsLCBPaWQgbmV3VGFibGVTcGFjZSkKIHsKLQlIZWFwVHVwbGUJdHVwbGU7Ci0J T2lkCQkJb2xkVGFibGVTcGFjZTsKLQlSZWxhdGlvbglwZ19jbGFzczsKLQlGb3JtX3BnX2NsYXNz IHJkX3JlbDsKLQlPaWQJCQlyZWxvaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7Ci0KIAkvKgog CSAqIFNob3VsZG4ndCBiZSBjYWxsZWQgb24gcmVsYXRpb25zIGhhdmluZyBzdG9yYWdlOyB0aGVz ZSBhcmUgcHJvY2Vzc2VkIGluCiAJICogcGhhc2UgMy4KIAkgKi8KIAlBc3NlcnQoIVJFTEtJTkRf SEFTX1NUT1JBR0UocmVsLT5yZF9yZWwtPnJlbGtpbmQpKTsKIAotCS8qIENhbid0IGFsbG93IGEg bm9uLXNoYXJlZCByZWxhdGlvbiBpbiBwZ19nbG9iYWwgKi8KLQlpZiAobmV3VGFibGVTcGFjZSA9 PSBHTE9CQUxUQUJMRVNQQUNFX09JRCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKLQkJCQkgZXJybXNnKCJvbmx5IHNoYXJl ZCByZWxhdGlvbnMgY2FuIGJlIHBsYWNlZCBpbiBwZ19nbG9iYWwgdGFibGVzcGFjZSIpKSk7Ci0K LQkvKgotCSAqIE5vIHdvcmsgaWYgbm8gY2hhbmdlIGluIHRhYmxlc3BhY2UuCi0JICovCi0Jb2xk VGFibGVTcGFjZSA9IHJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlOwotCWlmIChuZXdUYWJsZVNw YWNlID09IG9sZFRhYmxlU3BhY2UgfHwKLQkJKG5ld1RhYmxlU3BhY2UgPT0gTXlEYXRhYmFzZVRh YmxlU3BhY2UgJiYgb2xkVGFibGVTcGFjZSA9PSAwKSkKKwkvKiBjaGVjayBpZiByZWxhdGlvbiBj YW4gYmUgbW92ZWQgdG8gaXRzIG5ldyB0YWJsZXNwYWNlICovCisJaWYgKCFDaGVja1JlbGF0aW9u VGFibGVTcGFjZU1vdmUocmVsLCBuZXdUYWJsZVNwYWNlKSkKIAl7Ci0JCUludm9rZU9iamVjdFBv c3RBbHRlckhvb2soUmVsYXRpb25SZWxhdGlvbklkLCByZWxvaWQsIDApOworCQlJbnZva2VPYmpl Y3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJICBSZWxhdGlvbkdl dFJlbGlkKHJlbCksCisJCQkJCQkJCSAgMCk7CiAJCXJldHVybjsKIAl9CiAKLQkvKiBHZXQgYSBt b2RpZmlhYmxlIGNvcHkgb2YgdGhlIHJlbGF0aW9uJ3MgcGdfY2xhc3Mgcm93ICovCi0JcGdfY2xh c3MgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7Ci0K LQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJl bG9pZCkpOwotCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCi0JCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHJlbG9pZCk7Ci0JcmRfcmVsID0g KEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7Ci0KLQkvKiB1cGRhdGUgdGhlIHBnX2Ns YXNzIHJvdyAqLwotCXJkX3JlbC0+cmVsdGFibGVzcGFjZSA9IChuZXdUYWJsZVNwYWNlID09IE15 RGF0YWJhc2VUYWJsZVNwYWNlKSA/IEludmFsaWRPaWQgOiBuZXdUYWJsZVNwYWNlOwotCUNhdGFs b2dUdXBsZVVwZGF0ZShwZ19jbGFzcywgJnR1cGxlLT50X3NlbGYsIHR1cGxlKTsKKwkvKiBVcGRh dGUgY2FuIGJlIGRvbmUsIHNvIGNoYW5nZSByZWx0YWJsZXNwYWNlICovCisJU2V0UmVsYXRpb25U YWJsZVNwYWNlKHJlbCwgbmV3VGFibGVTcGFjZSwgSW52YWxpZE9pZCk7CiAKLQkvKiBSZWNvcmQg ZGVwZW5kZW5jeSBvbiB0YWJsZXNwYWNlICovCi0JY2hhbmdlRGVwZW5kZW5jeU9uVGFibGVzcGFj ZShSZWxhdGlvblJlbGF0aW9uSWQsCi0JCQkJCQkJCSByZWxvaWQsIHJkX3JlbC0+cmVsdGFibGVz cGFjZSk7Ci0KLQlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29rKFJlbGF0aW9uUmVsYXRpb25JZCwg cmVsb2lkLCAwKTsKLQotCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKLQotCXRhYmxlX2Nsb3NlKHBn X2NsYXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQotCS8qIE1ha2Ugc3VyZSB0aGUgcmVsdGFibGVz cGFjZSBjaGFuZ2UgaXMgdmlzaWJsZSAqLworCS8qIE1ha2UgdGhlIGNoYW5nZSB2aXNpYmxlICov CiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMu aAppbmRleCAwOGM0NjNkM2M0Li5iM2QzMGFjYzM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy90YWJsZWNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMu aApAQCAtNjEsNiArNjEsMTAgQEAgZXh0ZXJuIHZvaWQgRXhlY3V0ZVRydW5jYXRlR3V0cyhMaXN0 ICpleHBsaWNpdF9yZWxzLCBMaXN0ICpyZWxpZHMsIExpc3QgKnJlbGlkc18KIAogZXh0ZXJuIHZv aWQgU2V0UmVsYXRpb25IYXNTdWJjbGFzcyhPaWQgcmVsYXRpb25JZCwgYm9vbCByZWxoYXNzdWJj bGFzcyk7CiAKK2V4dGVybiBib29sIENoZWNrUmVsYXRpb25UYWJsZVNwYWNlTW92ZShSZWxhdGlv biByZWwsIE9pZCBuZXdUYWJsZVNwYWNlSWQpOworZXh0ZXJuIHZvaWQgU2V0UmVsYXRpb25UYWJs ZVNwYWNlKFJlbGF0aW9uIHJlbCwgT2lkIG5ld1RhYmxlU3BhY2VJZCwKKwkJCQkJCQkJICBPaWQg bmV3UmVsRmlsZU5vZGUpOworCiBleHRlcm4gT2JqZWN0QWRkcmVzcyByZW5hbWVhdHQoUmVuYW1l U3RtdCAqc3RtdCk7CiAKIGV4dGVybiBPYmplY3RBZGRyZXNzIFJlbmFtZUNvbnN0cmFpbnQoUmVu YW1lU3RtdCAqc3RtdCk7CgpiYXNlLWNvbW1pdDogOTIwZjg1M2RjOTQ4Yjk4YTVkYzk2NTgwYzRl ZTAxMWEzMDJlMzNlNAotLSAKMi4yNC4zIChBcHBsZSBHaXQtMTI4KQoK --=_c0763dddf942a47f7b5f0c89461d2886 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v7-0002-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v7-0002-Allow-REINDEX-to-change-tablespace.patch; size=28866 RnJvbSA5ZDBkMmQ2NmUzNzIzN2EwNGUwZTUzNWQ5NGFhNzlmY2NjZTVjYzZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjcgSmFuIDIwMjEgMDA6NDY6MTcgKzAzMDAKU3ViamVjdDog W1BBVENIIHY3IDIvMl0gQWxsb3cgUkVJTkRFWCB0byBjaGFuZ2UgdGFibGVzcGFjZQoKUkVJTkRF WCBhbHJlYWR5IGRvZXMgZnVsbCByZWxhdGlvbiByZXdyaXRlLCB0aGlzIHBhdGNoIGFkZHMgYQpw b3NzaWJpbGl0eSB0byBzcGVjaWZ5IGEgbmV3IHRhYmxlc3BhY2Ugd2hlcmUgbmV3IHJlbGZpbGVu b2RlCndpbGwgYmUgY3JlYXRlZC4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAg ICAgICAgICAgICB8ICAzMCArKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAg ICAgICAgICB8ICA1NyArKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMg ICAgICAgICAgfCAgOTQgKysrKysrKysrKysrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5j ICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAg ICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3Vy Y2UgIHwgIDg1ICsrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFj ZS5zb3VyY2UgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA0 MjAgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAppbmRl eCA2MjdiMzYzMDBjLi5hMWM3NzM2YWVjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtMjcsNiAr MjcsNyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9u PC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBJTgogCiAgICAgQ09OQ1VSUkVOVExZIFsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiAgICAg VkVSQk9TRSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNl YWJsZT4gXQorICAgIFRBQkxFU1BBQ0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5l d190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT4KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rp dj4KIApAQCAtMTg3LDYgKzE4OCwyMCBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBJTgogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48bGl0ZXJhbD5UQUJMRVNQQUNFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgU3BlY2lmaWVzIHRoYXQgaW5kZXhlcyB3aWxsIGJlIHJlYnVp bHQgb24gYSBuZXcgdGFibGVzcGFjZS4KKyAgICAgIENhbm5vdCBiZSB1c2VkIHdpdGggIm1hcHBl ZCIgYW5kIHN5c3RlbSAodW5sZXNzIDx2YXJuYW1lPmFsbG93X3N5c3RlbV90YWJsZV9tb2RzPC92 YXJuYW1lPgorICAgICAgaXMgc2V0IHRvIDxsaXRlcmFsPlRSVUU8L2xpdGVyYWw+KSByZWxhdGlv bnMuIElmIDxsaXRlcmFsPlNDSEVNQTwvbGl0ZXJhbD4sCisgICAgICA8bGl0ZXJhbD5EQVRBQkFT RTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+U1lTVEVNPC9saXRlcmFsPiBhcmUgc3BlY2lmaWVkLCB0 aGVuCisgICAgICBhbGwgIm1hcHBlZCIgYW5kIHN5c3RlbSByZWxhdGlvbnMgd2lsbCBiZSBza2lw cGVkIGFuZCBhIHNpbmdsZQorICAgICAgPGxpdGVyYWw+V0FSTklORzwvbGl0ZXJhbD4gd2lsbCBi ZSBnZW5lcmF0ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+VkVSQk9TRTwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMjEwLDYgKzIyNSwxNCBAQCBSRUlO REVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJs ZT4gWywgLi4uXSApIF0geyBJTgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmV3X3RhYmxlc3BhY2U8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgVGhlIHRhYmxlc3BhY2Ugd2hlcmUgaW5kZXhlcyB3aWxsIGJl IHJlYnVpbHQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CiAgIDwvdmFyaWFibGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKQEAgLTI5Miw3ICszMTUsMTIg QEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVw bGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgIHdpdGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRF WDwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+UkVJTkRFWCBUQUJMRTwvY29tbWFuZD4sCiAgICByZXNw ZWN0aXZlbHkuIEVhY2ggcGFydGl0aW9uIG9mIHRoZSBzcGVjaWZpZWQgcGFydGl0aW9uZWQgcmVs YXRpb24gaXMKICAgIHJlaW5kZXhlZCBpbiBhIHNlcGFyYXRlIHRyYW5zYWN0aW9uLiBUaG9zZSBj b21tYW5kcyBjYW5ub3QgYmUgdXNlZCBpbnNpZGUKLSAgIGEgdHJhbnNhY3Rpb24gYmxvY2sgd2hl biB3b3JraW5nIG9uIGEgcGFydGl0aW9uZWQgdGFibGUgb3IgaW5kZXguCisgICBhIHRyYW5zYWN0 aW9uIGJsb2NrIHdoZW4gd29ya2luZyBvbiBhIHBhcnRpdGlvbmVkIHRhYmxlIG9yIGluZGV4LiBJ ZgorICAgYSA8Y29tbWFuZD5SRUlOREVYPC9jb21tYW5kPiBjb21tYW5kIGZhaWxzIHdoZW4gcnVu IG9uIGEgcGFydGl0aW9uZWQKKyAgIHJlbGF0aW9uLCBhbmQgPGxpdGVyYWw+VEFCTEVTUEFDRTwv bGl0ZXJhbD4gd2FzIHNwZWNpZmllZCwgdGhlbiBpdCBtYXkgaGF2ZQorICAgbW92ZWQgaW5kZXhl cyBvbiBzb21lIHBhcnRpdGlvbnMgdG8gdGhlIG5ldyB0YWJsZXNwYWNlLiAgUmUtcnVubmluZyB0 aGUgY29tbWFuZAorICAgd2lsbCByZWluZGV4IGFsbCBwYXJ0aXRpb25zIGFuZCBtb3ZlIHByZXZp b3VzbHktdW5wcm9jZXNzZWQgaW5kZXhlcyB0byB0aGUgbmV3CisgICB0YWJsZXNwYWNlLgogICA8 L3BhcmE+CiAKICAgPHJlZnNlY3QyIGlkPSJzcWwtcmVpbmRleC1jb25jdXJyZW50bHkiIHhyZWZs YWJlbD0iUmVidWlsZGluZyBJbmRleGVzIENvbmN1cnJlbnRseSI+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5k ZXggYjhjZDM1ZTk5NS4uYTQ3MWMxMTBlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNTcsNiArNTcs NyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21t YW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgorI2luY2x1 ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK QEAgLTEzOTQsOSArMTM5NSwxMyBAQCBpbmRleF91cGRhdGVfY29sbGF0aW9uX3ZlcnNpb25zKE9p ZCByZWxpZCwgT2lkIGNvbGwpCiAgKiBDcmVhdGUgY29uY3VycmVudGx5IGFuIGluZGV4IGJhc2Vk IG9uIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBvbmUgcHJvdmlkZWQgYnkKICAqIGNhbGxlci4gIFRo ZSBpbmRleCBpcyBpbnNlcnRlZCBpbnRvIGNhdGFsb2dzIGFuZCBuZWVkcyB0byBiZSBidWlsdCBs YXRlcgogICogb24uICBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4IHBy b2Nlc3NpbmcuCisgKgorICogInRhYmxlc3BhY2VPaWQiIGlzIHRoZSBuZXcgdGFibGVzcGFjZSB0 byB1c2UgZm9yIHRoaXMgaW5kZXguCisgKiBJZiBJbnZhbGlkT2lkLCB1c2UgdGhlIGN1cnJlbnQg dGFibGVzcGFjZS4KICAqLwogT2lkCi1pbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVs YXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwgY29uc3QgY2hhciAqbmV3TmFtZSkK K2luZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9p ZCBvbGRJbmRleElkLAorCQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLCBjb25zdCBjaGFyICpu ZXdOYW1lKQogewogCVJlbGF0aW9uCWluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqb2xkSW5m bywKQEAgLTE1MjYsNyArMTUzMSw4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLCBjb25zdCBjaGFyCiAJCQkJCQkJ ICBuZXdJbmZvLAogCQkJCQkJCSAgaW5kZXhDb2xOYW1lcywKIAkJCQkJCQkgIGluZGV4UmVsYXRp b24tPnJkX3JlbC0+cmVsYW0sCi0JCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbHRh Ymxlc3BhY2UsCisJCQkJCQkJICBPaWRJc1ZhbGlkKHRhYmxlc3BhY2VPaWQpID8KKwkJCQkJCQkJ dGFibGVzcGFjZU9pZCA6IGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsdGFibGVzcGFjZSwKIAkJ CQkJCQkgIGluZGV4UmVsYXRpb24tPnJkX2luZGNvbGxhdGlvbiwKIAkJCQkJCQkgIGluZGNsYXNz LT52YWx1ZXMsCiAJCQkJCQkJICBpbmRjb2xvcHRpb25zLT52YWx1ZXMsCkBAIC0zNTkxLDYgKzM1 OTcsOCBAQCBJbmRleEdldFJlbGF0aW9uKE9pZCBpbmRleElkLCBib29sIG1pc3Npbmdfb2spCiAK IC8qCiAgKiByZWluZGV4X2luZGV4IC0gVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gcmVjcmVhdGUg YSBzaW5nbGUgaW5kZXgKKyAqCisgKiBTZWUgY29tbWVudHMgb2YgcmVpbmRleF9yZWxhdGlvbigp IGZvciBkZXRhaWxzIGFib3V0ICJ0YWJsZXNwYWNlT2lkIi4KICAqLwogdm9pZAogcmVpbmRleF9p bmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNp c3RlbmNlLApAQCAtMzYwMyw2ICszNjExLDcgQEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwg Ym9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAogCXZvbGF0aWxl IGJvb2wgc2tpcHBlZF9jb25zdHJhaW50ID0gZmFsc2U7CiAJUEdSVXNhZ2UJcnUwOwogCWJvb2wJ CXByb2dyZXNzID0gKChwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVT UykgIT0gMCk7CisJYm9vbAkJc2V0X3RhYmxlc3BhY2UgPSBPaWRJc1ZhbGlkKHBhcmFtcy0+dGFi bGVzcGFjZU9pZCk7CiAKIAlwZ19ydXNhZ2VfaW5pdCgmcnUwKTsKIApAQCAtMzY1NCwxNCArMzY2 MywyMCBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29uc3RyYWludF9j aGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAJCQkgZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9u R2V0TmFtZXNwYWNlKGlSZWwpKSwKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSk7 CiAKKwlpZiAoc2V0X3RhYmxlc3BhY2UpCisJCXNldF90YWJsZXNwYWNlID0gQ2hlY2tSZWxhdGlv blRhYmxlU3BhY2VNb3ZlKGlSZWwsCisJCQkJCQkJCQkJCQkJIHBhcmFtcy0+dGFibGVzcGFjZU9p ZCk7CisKIAkvKgotCSAqIERvbid0IGFsbG93IHJlaW5kZXggb24gdGVtcCB0YWJsZXMgb2Ygb3Ro ZXIgYmFja2VuZHMgLi4uIHRoZWlyIGxvY2FsCi0JICogYnVmZmVyIG1hbmFnZXIgaXMgbm90IGdv aW5nIHRvIGNvcGUuCisJICogV2UgZG9uJ3Qgc3VwcG9ydCBtb3Zpbmcgc3lzdGVtIHJlbGF0aW9u cyBpbnRvIGRpZmZlcmVudCB0YWJsZXNwYWNlcworCSAqIHVubGVzcyBhbGxvd19zeXN0ZW1fdGFi bGVfbW9kcz0xLgogCSAqLwotCWlmIChSRUxBVElPTl9JU19PVEhFUl9URU1QKGlSZWwpKQorCWlm IChzZXRfdGFibGVzcGFjZSAmJgorCQkhYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1S ZWxhdGlvbihpUmVsKSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygiY2Fubm90IHJlaW5kZXggdGVtcG9y YXJ5IHRhYmxlcyBvZiBvdGhlciBzZXNzaW9ucyIpKSk7CisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZDog XCIlc1wiIGlzIGEgc3lzdGVtIGNhdGFsb2ciLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoaVJlbCkpKSk7CiAKIAkvKgogCSAqIERvbid0IGFsbG93IHJlaW5kZXggb2YgYW4gaW52YWxp ZCBpbmRleCBvbiBUT0FTVCB0YWJsZS4gIFRoaXMgaXMgYQpAQCAtMzY4MCw2ICszNjk1LDI3IEBA IHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywg Y2hhciBwZXJzaXN0ZW5jZSwKIAkgKi8KIAlDaGVja1RhYmxlTm90SW5Vc2UoaVJlbCwgIlJFSU5E RVggSU5ERVgiKTsKIAorCS8qCisJICogU2V0IHRoZSBuZXcgdGFibGVzcGFjZSBmb3IgdGhlIHJl bGF0aW9uLiAgRG8gdGhhdCBvbmx5IGluIHRoZQorCSAqIGNhc2Ugd2hlcmUgdGhlIHJlaW5kZXgg Y2FsbGVyIHdpc2hlcyB0byBlbmZvcmNlIGEgbmV3IHRhYmxlc3BhY2UuCisJICovCisJaWYgKHNl dF90YWJsZXNwYWNlKQorCXsKKwkJU2V0UmVsYXRpb25UYWJsZVNwYWNlKGlSZWwsIHBhcmFtcy0+ dGFibGVzcGFjZU9pZCwgSW52YWxpZE9pZCk7CisKKwkJLyoKKwkJICogTWFyayB0aGUgcmVsYXRp b24gYXMgcmVhZHkgdG8gYmUgZHJvcHBlZCBhdCB0cmFuc2FjdGlvbiBjb21taXQsCisJCSAqIGJl Zm9yZSBtYWtpbmcgdmlzaWJsZSB0aGUgbmV3IHRhYmxlc3BhY2UgY2hhbmdlIHNvIGFzIHRoaXMg d29uJ3QKKwkJICogbWlzcyB0aGluZ3MuCisJCSAqLworCQlSZWxhdGlvbkRyb3BTdG9yYWdlKGlS ZWwpOworCisJCVJlbGF0aW9uQXNzdW1lTmV3UmVsZmlsZW5vZGUoaVJlbCk7CisKKwkJLyogTWFr ZSBzdXJlIHRoZSByZWx0YWJsZXNwYWNlIGNoYW5nZSBpcyB2aXNpYmxlICovCisJCUNvbW1hbmRD b3VudGVySW5jcmVtZW50KCk7CisJfQorCiAJLyoKIAkgKiBBbGwgcHJlZGljYXRlIGxvY2tzIG9u IHRoZSBpbmRleCBhcmUgYWJvdXQgdG8gYmUgbWFkZSBpbnZhbGlkLiBQcm9tb3RlCiAJICogdGhl bSB0byByZWxhdGlvbiBsb2NrcyBvbiB0aGUgaGVhcC4KQEAgLTM4MTQsNiArMzg1MCw5IEBAIHJl aW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hh ciBwZXJzaXN0ZW5jZSwKICAqIHJlaW5kZXhfcmVsYXRpb24gLSBUaGlzIHJvdXRpbmUgaXMgdXNl ZCB0byByZWNyZWF0ZSBhbGwgaW5kZXhlcwogICogb2YgYSByZWxhdGlvbiAoYW5kIG9wdGlvbmFs bHkgaXRzIHRvYXN0IHJlbGF0aW9uIHRvbywgaWYgYW55KS4KICAqCisgKiAidGFibGVzcGFjZU9p ZCIgaXMgdGhlIHRhYmxlc3BhY2Ugd2hlcmUgdGhlIHJlbGF0aW9uJ3MgaW5kZXhlcyB3aWxsIGJl CisgKiByZWJ1aWx0LCBvciBJbnZhbGlkT2lkIHRvIGtlZXAgZWFjaCBpbmRleCBvbiBpdHMgY3Vy cmVudCB0YWJsZXNwYWNlLgorICoKICAqICJmbGFncyIgaXMgYSBiaXRtYXNrIHRoYXQgY2FuIGlu Y2x1ZGUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZXNlIGJpdHM6CiAgKgogICogUkVJTkRFWF9SRUxf UFJPQ0VTU19UT0FTVDogaWYgdHJ1ZSwgcHJvY2VzcyB0aGUgdG9hc3QgdGFibGUgdG9vIChpZiBh bnkpLgpAQCAtMzk2NCwxMCArNDAwMywxNCBAQCByZWluZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwg aW50IGZsYWdzLCBSZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJCS8qCiAJCSAqIE5vdGUgdGhhdCB0 aGlzIHNob3VsZCBmYWlsIGlmIHRoZSB0b2FzdCByZWxhdGlvbiBpcyBtaXNzaW5nLCBzbwogCQkg KiByZXNldCBSRUlOREVYT1BUX01JU1NJTkdfT0suCisJCSAqCisJCSAqIEV2ZW4gaWYgdGFibGUn cyBpbmRleGVzIHdlcmUgbW92ZWQgdG8gYSBuZXcgdGFibGVzcGFjZSwgdGhlIGluZGV4CisJCSAq IG9uIGl0cyB0b2FzdCB0YWJsZSBpcyBub3QgbW92ZWQgaW1wbGljaXRseS4KIAkJICovCiAJCVJl aW5kZXhQYXJhbXMgbmV3cGFyYW1zID0gKnBhcmFtczsKIAogCQluZXdwYXJhbXMub3B0aW9ucyAm PSB+KFJFSU5ERVhPUFRfTUlTU0lOR19PSyk7CisJCW5ld3BhcmFtcy50YWJsZXNwYWNlT2lkID0g SW52YWxpZE9pZDsKIAkJcmVzdWx0IHw9IHJlaW5kZXhfcmVsYXRpb24odG9hc3RfcmVsaWQsIGZs YWdzLCAmbmV3cGFyYW1zKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggZjlm M2ZmM2I2Mi4uMzhkNDhjYWExMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTI0NzQs NiArMjQ3NCw3IEBAIEV4ZWNSZWluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVpbmRleFN0bXQg KnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAlMaXN0Q2VsbCAgICpsYzsKIAlib29sCQljb25jdXJy ZW50bHkgPSBmYWxzZTsKIAlib29sCQl2ZXJib3NlID0gZmFsc2U7CisJY2hhcgkJKnRhYmxlc3Bh Y2UgPSBOVUxMOwogCiAJLyogUGFyc2Ugb3B0aW9uIGxpc3QgKi8KIAlmb3JlYWNoKGxjLCBzdG10 LT5wYXJhbXMpCkBAIC0yNDg0LDYgKzI0ODUsOCBAQCBFeGVjUmVpbmRleChQYXJzZVN0YXRlICpw c3RhdGUsIFJlaW5kZXhTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQl2ZXJib3NlID0g ZGVmR2V0Qm9vbGVhbihvcHQpOwogCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAiY29u Y3VycmVudGx5IikgPT0gMCkKIAkJCWNvbmN1cnJlbnRseSA9IGRlZkdldEJvb2xlYW4ob3B0KTsK KwkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgInRhYmxlc3BhY2UiKSA9PSAwKQorCQkJ dGFibGVzcGFjZSA9IGRlZkdldFN0cmluZyhvcHQpOwogCQllbHNlCiAJCQllcmVwb3J0KEVSUk9S LAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC0yNTAwLDYgKzI1MDMs MjIgQEAgRXhlY1JlaW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZWluZGV4U3RtdCAqc3RtdCwg Ym9vbCBpc1RvcExldmVsKQogCQkodmVyYm9zZSA/IFJFSU5ERVhPUFRfVkVSQk9TRSA6IDApIHwK IAkJKGNvbmN1cnJlbnRseSA/IFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZIDogMCk7CiAKKwlwYXJh bXMudGFibGVzcGFjZU9pZCA9IHRhYmxlc3BhY2UgIT0gTlVMTCA/CisJCWdldF90YWJsZXNwYWNl X29pZCh0YWJsZXNwYWNlLCBmYWxzZSkgOiBJbnZhbGlkT2lkOworCisJLyogQ2hlY2sgcGVybWlz c2lvbnMgZXhjZXB0IHdoZW4gdXNpbmcgZGF0YWJhc2UncyBkZWZhdWx0ICovCisJaWYgKE9pZElz VmFsaWQocGFyYW1zLnRhYmxlc3BhY2VPaWQpICYmCisJCXBhcmFtcy50YWJsZXNwYWNlT2lkICE9 IE15RGF0YWJhc2VUYWJsZVNwYWNlKQorCXsKKwkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKworCQlh Y2xyZXN1bHQgPSBwZ190YWJsZXNwYWNlX2FjbGNoZWNrKHBhcmFtcy50YWJsZXNwYWNlT2lkLAor CQkJCQkJCQkJCSAgIEdldFVzZXJJZCgpLCBBQ0xfQ1JFQVRFKTsKKwkJaWYgKGFjbHJlc3VsdCAh PSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1RBQkxF U1BBQ0UsCisJCQkJCQkgICBnZXRfdGFibGVzcGFjZV9uYW1lKHBhcmFtcy50YWJsZXNwYWNlT2lk KSk7CisJfQorCiAJc3dpdGNoIChzdG10LT5raW5kKQogCXsKIAkJY2FzZSBSRUlOREVYX09CSkVD VF9JTkRFWDoKQEAgLTI3MzAsNiArMjc0OSw4IEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25z dCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCUxpc3QJ ICAgKnJlbGlkcyA9IE5JTDsKIAlpbnQJCQludW1fa2V5czsKIAlib29sCQljb25jdXJyZW50X3dh cm5pbmcgPSBmYWxzZTsKKwlib29sCQl0YWJsZXNwYWNlX3dhcm5pbmcgPSBmYWxzZTsKKwlib29s CQltYXBwZWRfd2FybmluZyA9IGZhbHNlOwogCiAJQXNzZXJ0QXJnKG9iamVjdE5hbWUpOwogCUFz c2VydChvYmplY3RLaW5kID09IFJFSU5ERVhfT0JKRUNUX1NDSEVNQSB8fApAQCAtMjg1Niw2ICsy ODc3LDM1IEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBS ZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCQkJY29udGludWU7CiAJCX0KIAorCQlpZiAo T2lkSXNWYWxpZChwYXJhbXMtPnRhYmxlc3BhY2VPaWQpICYmCisJCQlJc1N5c3RlbUNsYXNzKHJl bGlkLCBjbGFzc3R1cGxlKSkKKwkJeworCQkJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcykKKwkJ CXsKKwkJCQkvKiBTa2lwIGFsbCBzeXN0ZW0gcmVsYXRpb25zLCBpZiBub3QgYWxsb3dTeXN0ZW1U YWJsZU1vZHMgKi8KKwkJCQlpZiAoIXRhYmxlc3BhY2Vfd2FybmluZykKKwkJCQkJZXJlcG9ydChX QVJOSU5HLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSks CisJCQkJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNlIG9mIGluZGV4ZXMgb24g c3lzdGVtIHJlbGF0aW9ucywgc2tpcHBpbmcgYWxsIikpKTsKKwkJCQl0YWJsZXNwYWNlX3dhcm5p bmcgPSB0cnVlOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZWxzZSBpZiAoIU9pZElzVmFsaWQo Y2xhc3N0dXBsZS0+cmVsZmlsZW5vZGUpKQorCQkJeworCQkJCS8qCisJCQkJICogU2tpcCBhbGwg bWFwcGVkIHJlbGF0aW9ucyBpZiBUQUJMRVNQQUNFIGlzIHNwZWNpZmllZC4KKwkJCQkgKiBPaWRJ c1ZhbGlkKHJlbGZpbGVub2RlKSBjaGVja3MgdGhhdCwgc2ltaWxhciB0bworCQkJCSAqIFJlbGF0 aW9uSXNNYXBwZWQoKS4KKwkJCQkgKi8KKwkJCQlpZiAoIW1hcHBlZF93YXJuaW5nKQorCQkJCQll cmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRl eGVzIG9uIG1hcHBlZCByZWxhdGlvbnMsIHNraXBwaW5nIGFsbCIpKSk7CisJCQkJbWFwcGVkX3dh cm5pbmcgPSB0cnVlOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKIAkJLyogU2F2ZSB0aGUg bGlzdCBvZiByZWxhdGlvbiBPSURzIGluIHByaXZhdGUgY29udGV4dCAqLwogCQlvbGQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIApAQCAtMjk2OSw5ICszMDE5LDQx IEBAIFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zLCBi b29sIGlzVG9wTGV2ZWwpCiAJCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKIAkJLyoKLQkJ ICogVGhpcyBkaXNjYXJkcyBwYXJ0aXRpb25lZCB0YWJsZXMsIHBhcnRpdGlvbmVkIGluZGV4ZXMg YW5kIGZvcmVpZ24KLQkJICogdGFibGVzLgorCQkgKiBGb3JlaWduIHRhYmxlcyBhbmQgcGFydGl0 aW9uZWQgcmVsYXRpb25zIGFyZSBub3QgdGhlbXNlbHZlcworCQkgKiByZWluZGV4ZWQgLSBsZWFm IHBhcnRpdGlvbnMgYXJlIHByb2Nlc3NlZCBkaXJlY3RseS4gIEJ1dCBhbnkKKwkJICogdGFibGVz cGFjZSBjaGFuZ2UgaXMgcmVjb3JkZWQgaW4gdGhlIGNhdGFsb2cgZm9yIHBhcnRpdGlvbmVkCisJ CSAqIHJlbGF0aW9ucy4KIAkJICovCisJCWlmIChwYXJ0a2luZCA9PSBSRUxLSU5EX1BBUlRJVElP TkVEX0lOREVYKQorCQl7CisJCQlSZWxhdGlvbiBpUmVsID0gaW5kZXhfb3BlbihwYXJ0b2lkLCBT aGFyZUxvY2spOworCisJCQlpZiAoQ2hlY2tSZWxhdGlvblRhYmxlU3BhY2VNb3ZlKGlSZWwsIHBh cmFtcy0+dGFibGVzcGFjZU9pZCkpCisJCQkJU2V0UmVsYXRpb25UYWJsZVNwYWNlKGlSZWwsCisJ CQkJCQkJCQkgIHBhcmFtcy0+dGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJCSAgSW52YWxpZE9pZCk7 CisJCQlpbmRleF9jbG9zZShpUmVsLCBOb0xvY2spOworCQl9CisJCWVsc2UgaWYgKHBhcnRraW5k ID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXsKKwkJCVJlbGF0aW9uIHJlbCA9IHRh YmxlX29wZW4ocGFydG9pZCwgU2hhcmVMb2NrKTsKKwkJCUxpc3QJKmluZGV4SWRzID0gUmVsYXRp b25HZXRJbmRleExpc3QocmVsKTsKKwkJCUxpc3RDZWxsICpsYzsKKworCQkJdGFibGVfY2xvc2Uo cmVsLCBOb0xvY2spOworCQkJZm9yZWFjaCAobGMsIGluZGV4SWRzKQorCQkJeworCQkJCU9pZCBp bmRleGlkID0gbGZpcnN0X29pZChsYyk7CisJCQkJUmVsYXRpb24gaVJlbCA9IGluZGV4X29wZW4o aW5kZXhpZCwgU2hhcmVMb2NrKTsKKworCQkJCWlmIChDaGVja1JlbGF0aW9uVGFibGVTcGFjZU1v dmUoaVJlbCwgcGFyYW1zLT50YWJsZXNwYWNlT2lkKSkKKwkJCQkJU2V0UmVsYXRpb25UYWJsZVNw YWNlKGlSZWwsCisJCQkJCQkJCQkJICBwYXJhbXMtPnRhYmxlc3BhY2VPaWQsCisJCQkJCQkJCQkJ ICBJbnZhbGlkT2lkKTsKKwkJCQlpbmRleF9jbG9zZShpUmVsLCBOb0xvY2spOworCQkJfQorCQl9 CisKIAkJaWYgKCFSRUxLSU5EX0hBU19TVE9SQUdFKHBhcnRraW5kKSkKIAkJCWNvbnRpbnVlOwog CkBAIC0zMzkwLDYgKzM0NzIsMTMgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9pZCBy ZWxhdGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCQlyZXR1cm4gZmFsc2U7CiAJfQog CisJLyogSXQncyBub3QgYSBzaGFyZWQgY2F0YWxvZywgc28gcmVmdXNlIHRvIG1vdmUgaXQgdG8g c2hhcmVkIHRhYmxlc3BhY2UgKi8KKwlpZiAocGFyYW1zLT50YWJsZXNwYWNlT2lkID09IEdMT0JB TFRBQkxFU1BBQ0VfT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBub24tc2hh cmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJCQkJIGdldF90YWJsZXNwYWNl X25hbWUocGFyYW1zLT50YWJsZXNwYWNlT2lkKSkpKTsKKwogCUFzc2VydChoZWFwUmVsYXRpb25J ZHMgIT0gTklMKTsKIAogCS8qLS0tLS0KQEAgLTM0NjEsNiArMzU1MCw3IEBAIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIFJlaW5kZXhQYXJhbXMgKnBhcmFtcykK IAkJLyogQ3JlYXRlIG5ldyBpbmRleCBkZWZpbml0aW9uIGJhc2VkIG9uIGdpdmVuIGluZGV4ICov CiAJCW5ld0luZGV4SWQgPSBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoaGVhcFJlbCwK IAkJCQkJCQkJCQkJCQlpZHgtPmluZGV4SWQsCisJCQkJCQkJCQkJCQkJcGFyYW1zLT50YWJsZXNw YWNlT2lkLAogCQkJCQkJCQkJCQkJCWNvbmN1cnJlbnROYW1lKTsKIAogCQkvKgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jCmluZGV4IDE3ZjcyNjUwMzguLmE3NTY0N2IxY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTM2 NDEsNyArMzY0MSw5IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpCiAJCSAqIG9uZSB3b3JkLCBzbyB0aGUgYWJvdmUgdGVzdCBpcyBjb3JyZWN0 LgogCQkgKi8KIAkJaWYgKGVuZHNfd2l0aChwcmV2X3dkLCAnKCcpIHx8IGVuZHNfd2l0aChwcmV2 X3dkLCAnLCcpKQotCQkJQ09NUExFVEVfV0lUSCgiQ09OQ1VSUkVOVExZIiwgIlZFUkJPU0UiKTsK KwkJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJUQUJMRVNQQUNFIiwgIlZFUkJPU0Ui KTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlRBQkxFU1BBQ0UiKSkKKwkJCUNPTVBMRVRFX1dJ VEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzcGFjZXMpOwogCX0KIAogLyogU0VDVVJJ VFkgTEFCRUwgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCAyNjZmODk1MGRjLi5hNDhkNTVlMTJiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9pbmRleC5oCkBAIC0zMyw2ICszMyw3IEBAIHR5cGVkZWYgZW51bQogdHlwZWRlZiBz dHJ1Y3QgUmVpbmRleFBhcmFtcwogewogCWJpdHMzMgkJb3B0aW9uczsJCS8qIGJpdG1hc2sgb2Yg UkVJTkRFWE9QVF8qICovCisJT2lkICB0YWJsZXNwYWNlT2lkOwkJCS8qIHRhYmxlc3BhY2UgdG8g cmVidWlsZCBpbmRleCAqLwogfSBSZWluZGV4UGFyYW1zOwogCiAvKiBmbGFnIGJpdHMgZm9yIFJl aW5kZXhQYXJhbXMtPmZsYWdzICovCkBAIC05Miw2ICs5Myw3IEBAIGV4dGVybiBPaWQJaW5kZXhf Y3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJy ZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIE9p ZCBvbGRJbmRleElkLAorCQkJCQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLAogCQkJCQkJCQkJ CSAgIGNvbnN0IGNoYXIgKm5ld05hbWUpOwogCiBleHRlcm4gdm9pZCBpbmRleF9jb25jdXJyZW50 bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVz cGFjZS5zb3VyY2UKaW5kZXggMWExODEwMTZkNy4uMGYwNDUyMWQwZiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCkBAIC0xNyw2ICsxNyw4MCBAQCBBTFRFUiBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgU0VUIChzb21lX25vbmV4aXN0ZW50X3BhcmFtZXRlciA9 IHRydWUpOyAgLS0gZgogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFU0VUIChy YW5kb21fcGFnZV9jb3N0ID0gMi4wKTsgLS0gZmFpbAogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlIFJFU0VUIChyYW5kb21fcGFnZV9jb3N0LCBlZmZlY3RpdmVfaW9fY29uY3VycmVu Y3kpOyAtLSBvawogCistLSBjcmVhdGUgdGFibGUgKHdpdGggVE9BU1QpIHRvIHRlc3QgUkVJTkRF WCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90 ZXN0X3RibCAobnVtMSBiaWdpbnQsIG51bTIgZG91YmxlIHByZWNpc2lvbiwgdCB0ZXh0KTsKK0lO U0VSVCBJTlRPIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEsIG51bTIsIHQpCisgIFNF TEVDVCByb3VuZChyYW5kb20oKSoxMDApLCByYW5kb20oKSwgJ3RleHQnCisgIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwKSBzKGkpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF90YmxfaWR4IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEpOworQ1JFQVRFIFRB QkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdChjb2wxIGludCwgY29sMiBpbnQpIFBBUlRJVElP TiBCWSBIQVNIIChjb2wxKTsKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRf MQorICBQQVJUSVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0CisgIEZPUiBWQUxVRVMg V0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMCkKKyAgUEFSVElUSU9OIEJZIEhBU0ggKGNvbDIp OworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMSBPTiByZWdyZXNz X3RibHNwYWNlX3Rlc3RfcHQgKGNvbDEpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2Vf dGVzdF9wdF9pZHhfMiBPTiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQgKGNvbDIpOworCistLSBm aXJzdCwgY2hlY2sgYSBuby1vcCBjYXNlCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQp IElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworUkVJTkRFWCAoVEFCTEVTUEFD RSBwZ19kZWZhdWx0KSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOworUkVJTkRFWCAo VEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4 XzI7CitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF9wdDsKKworLS0gY2hlY2sgdGhhdCBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFu Z2UgaXMgdHJhbnNhY3Rpb25hbAorQkVHSU47CitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworUkVJTkRFWCAo VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf dGJsOworUk9MTEJBQ0s7CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0 YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdy ZWdyZXNzX3RibHNwYWNlJyk7CisKKy0tIHJlaW5kZXggYW5kIG1vdmUgdGhlIGVudGlyZSBkYXRh YmFzZSwgYWZ0ZXIgdGhhdCByZXR1cm4gZXZlcnl0aGluZyBiYWNrCitSRUlOREVYIChUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIERBVEFCQVNFIHJlZ3Jlc3Npb247IC0tIG9rIHdpdGggd2Fy bmluZworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBEQVRBQkFTRSByZWdyZXNzaW9u OyAtLSBvayB3aXRoIHdhcm5pbmcKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJF IHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25h bWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworLS0gcGFydGl0aW9uZWQgaW5kZXhlcyBhcmUgbm90 IGRpcmVjdGx5IHJlaW5kZXhlZCwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gc2V0IHByb3BlcgorLS0g dGFibGVzcGFjZSBpbiBwZ19jbGFzcyBmb3IgdGhlbQorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7IC0tIG9rCitSRUlO REVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2Vf dGVzdF9wdF9pZHhfMTsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yOyAtLSBvaworU0VMRUNUIHJl bG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9N IHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworCistLSBp bmRleGVzIGZvciBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCBpbiB0aGUgbmV3IHRh Ymxlc3BhY2UKK0NSRUFURSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMgorICBQQVJU SVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0CisgIEZPUiBWQUxVRVMgV0lUSCAobW9k dWx1cyAyLCByZW1haW5kZXIgMSk7CitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0 X3B0XzFfMQorICBQQVJUSVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzEKKyAgRk9S IFZBTFVFUyBXSVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAwKTsKK1NFTEVDVCByZWxuYW1lIEZS T00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJs ZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworLS0gY2hlY2sgUkVJ TkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBvaworUkVJ TkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBU QUJMRSBwZ19hdXRoaWQ7IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSkgU1lTVEVNIENPTkNVUlJFTlRMWSBwb3N0Z3JlczsgLS0gZmFpbAorUkVJTkRFWCAoVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBDT05DVVJSRU5UTFkgcGdfYW07IC0tIGZh aWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJTkRFWCByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlKSBUQUJMRSBwZ19hbTsgLS0gZmFpbAorCistLSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMg bW92ZWQgdG8gbmV3IHRhYmxlc3BhY2UKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dI RVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNw Y25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKQorT1JERVIgQlkgcmVsbmFtZTsKKworLS0gbW92ZSBp bmRleGVzIGJhY2sgdG8gcGdfZGVmYXVsdCB0YWJsZXNwYWNlCitSRUlOREVYIChUQUJMRVNQQUNF IHBnX2RlZmF1bHQpIFRBQkxFIENPTkNVUlJFTlRMWSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs OyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfcHQ7IC0tIG9rCisKKy0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0aW9ucyBtb3Zl ZCBiYWNrIHRvIHBnX2RlZmF1bHQKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJF IHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25h bWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKwogLS0gY3JlYXRlIGEgc2NoZW1hIHdlIGNhbiB1c2UK IENSRUFURSBTQ0hFTUEgdGVzdHNjaGVtYTsKIApAQCAtOTYsNiArMTcwLDE0IEBAIFNFTEVDVCBy ZWxuYW1lLCBzcGNuYW1lIEZST00gcGdfY2F0YWxvZy5wZ190YWJsZXNwYWNlIHQsIHBnX2NhdGFs b2cucGdfY2xhc3MgYwogXGQgdGVzdHNjaGVtYS5wYXJ0X2FfaWR4CiBcZCsgdGVzdHNjaGVtYS5w YXJ0X2FfaWR4CiAKKy0tIFJFSU5ERVggcGFydGl0aW9uZWQgaW5kZXhlcyB0byBuZXcgdGFibGVz cGFjZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSB0ZXN0c2NoZW1hLnBh cnQ7CitcZCB0ZXN0c2NoZW1hLnBhcnQKK1xkIHRlc3RzY2hlbWEucGFydDEKK1JFSU5ERVggKENP TkNVUlJFTlRMWSwgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCB0ZXN0c2NoZW1h LnBhcnRfYV9pZHg7CitcZCB0ZXN0c2NoZW1hLnBhcnQKK1xkIHRlc3RzY2hlbWEucGFydDEKKwog LS0gcGFydGl0aW9uZWQgcmVscyBjYW5ub3Qgc3BlY2lmeSB0aGUgZGVmYXVsdCB0YWJsZXNwYWNl LiAgVGhlc2UgZmFpbDoKIENSRUFURSBUQUJMRSB0ZXN0c2NoZW1hLmRmbHQgKGEgaW50IFBSSU1B UlkgS0VZKSBQQVJUSVRJT04gQlkgTElTVCAoYSkgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OwogQ1JF QVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdCAoYSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVgg VEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CkBAIC0yODIsNiAr MzY0LDkgQEAgQUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZV9y ZW5hbWVkIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQKIC0tIFNob3VsZCBzdWNjZWVkCiBEUk9Q IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZV9yZW5hbWVkOwogCitEUk9QIFRBQkxFIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF90Ymw7CitEUk9QIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9w dDsKKwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogCiBEUk9QIFJPTEUgcmVncmVz c190YWJsZXNwYWNlX3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQv dGFibGVzcGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNv dXJjZQppbmRleCA5NGM1ZjAyM2M2Li4xMDc4MjE0YWJiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL291 dHB1dC90YWJsZXNwYWNlLnNvdXJjZQpAQCAtMjAsNiArMjAsMTIyIEBAIEVSUk9SOiAgdW5yZWNv Z25pemVkIHBhcmFtZXRlciAic29tZV9ub25leGlzdGVudF9wYXJhbWV0ZXIiCiBBTFRFUiBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3QgPSAyLjApOyAt LSBmYWlsCiBFUlJPUjogIFJFU0VUIG11c3Qgbm90IGluY2x1ZGUgdmFsdWVzIGZvciBwYXJhbWV0 ZXJzCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdl X2Nvc3QsIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSk7IC0tIG9rCistLSBjcmVhdGUgdGFibGUg KHdpdGggVE9BU1QpIHRvIHRlc3QgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitDUkVB VEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAobnVtMSBiaWdpbnQsIG51bTIgZG91 YmxlIHByZWNpc2lvbiwgdCB0ZXh0KTsKK0lOU0VSVCBJTlRPIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF90YmwgKG51bTEsIG51bTIsIHQpCisgIFNFTEVDVCByb3VuZChyYW5kb20oKSoxMDApLCByYW5k b20oKSwgJ3RleHQnCisgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBzKGkpOworQ1JFQVRF IElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IE9OIHJlZ3Jlc3NfdGJsc3BhY2Vf dGVzdF90YmwgKG51bTEpOworQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdChj b2wxIGludCwgY29sMiBpbnQpIFBBUlRJVElPTiBCWSBIQVNIIChjb2wxKTsKK0NSRUFURSBUQUJM RSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMQorICBQQVJUSVRJT04gT0YgcmVncmVzc190Ymxz cGFjZV90ZXN0X3B0CisgIEZPUiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMCkK KyAgUEFSVElUSU9OIEJZIEhBU0ggKGNvbDIpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF9wdF9pZHhfMSBPTiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQgKGNvbDEpOworQ1JF QVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMiBPTiByZWdyZXNzX3RibHNw YWNlX3Rlc3RfcHQgKGNvbDIpOworLS0gZmlyc3QsIGNoZWNrIGEgbm8tb3AgY2FzZQorUkVJTkRF WCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs X2lkeDsKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgcmVncmVzc190Ymxz cGFjZV90ZXN0X3RibDsKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgSU5ERVggcmVn cmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yOworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZh dWx0KSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7CistLSBjaGVjayB0aGF0IFJFSU5E RVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZSBpcyB0cmFuc2FjdGlvbmFsCitCRUdJTjsKK1JFSU5E RVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90 ZXN0X3RibF9pZHg7CitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxF IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7CitST0xMQkFDSzsKK1NFTEVDVCByZWxuYW1lIEZS T00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJs ZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKyByZWxuYW1lIAorLS0t LS0tLS0tCisoMCByb3dzKQorCistLSByZWluZGV4IGFuZCBtb3ZlIHRoZSBlbnRpcmUgZGF0YWJh c2UsIGFmdGVyIHRoYXQgcmV0dXJuIGV2ZXJ5dGhpbmcgYmFjaworUkVJTkRFWCAoVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKSBEQVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdhcm5p bmcKK1dBUk5JTkc6ICBjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhlcyBvbiBzeXN0 ZW0gcmVsYXRpb25zLCBza2lwcGluZyBhbGwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVs dCkgREFUQUJBU0UgcmVncmVzc2lvbjsgLS0gb2sgd2l0aCB3YXJuaW5nCitXQVJOSU5HOiAgY2Fu bm90IGNoYW5nZSB0YWJsZXNwYWNlIG9mIGluZGV4ZXMgb24gc3lzdGVtIHJlbGF0aW9ucywgc2tp cHBpbmcgYWxsCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNw YWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNz X3RibHNwYWNlJyk7CisgcmVsbmFtZSAKKy0tLS0tLS0tLQorKDAgcm93cykKKworLS0gcGFydGl0 aW9uZWQgaW5kZXhlcyBhcmUgbm90IGRpcmVjdGx5IHJlaW5kZXhlZCwgYnV0IHdlIHN0aWxsIGhh dmUgdG8gc2V0IHByb3BlcgorLS0gdGFibGVzcGFjZSBpbiBwZ19jbGFzcyBmb3IgdGhlbQorUkVJ TkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNl X3Rlc3RfcHQ7IC0tIG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElO REVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMTsgLS0gb2sKK1JFSU5ERVggKFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lk eF8yOyAtLSBvaworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVz cGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVz c190YmxzcGFjZScpOworICAgICAgICAgICAgICAgcmVsbmFtZSAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF9wdF9pZHhfMQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMgorIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF9wdF8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfY29s Ml9pZHgKKyg0IHJvd3MpCisKKy0tIGluZGV4ZXMgZm9yIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBi ZSBjcmVhdGVkIGluIHRoZSBuZXcgdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF9wdF8yCisgIFBBUlRJVElPTiBPRiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQK KyAgRk9SIFZBTFVFUyBXSVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAxKTsKK0NSRUFURSBUQUJM RSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMV8xCisgIFBBUlRJVElPTiBPRiByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfcHRfMQorICBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgMiwgcmVtYWluZGVy IDApOworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0o U0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190Ymxz cGFjZScpOworICAgICAgICAgICAgICAgIHJlbG5hbWUgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf cHRfaWR4XzEKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzIKKyByZWdyZXNzX3RibHNw YWNlX3Rlc3RfcHRfMl9jb2wxX2lkeAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yX2NvbDJf aWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfMV9jb2wxX2lkeAorIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF9wdF8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfMV9j b2wyX2lkeAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xX2NvbDJfaWR4CisoOCByb3dzKQor CistLSBjaGVjayBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK1JFSU5ERVggKFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9p ZHg7IC0tIG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHJl Z3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jl c3NfdGJsc3BhY2UpIFRBQkxFIHBnX2F1dGhpZDsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3QgbW92 ZSBzeXN0ZW0gcmVsYXRpb24gInBnX2F1dGhpZF9yb2xuYW1lX2luZGV4IgorUkVJTkRFWCAoVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBTWVNURU0gQ09OQ1VSUkVOVExZIHBvc3RncmVzOyAt LSBmYWlsCitFUlJPUjogIGNhbm5vdCByZWluZGV4IHN5c3RlbSBjYXRhbG9ncyBjb25jdXJyZW50 bHkKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgQ09OQ1VSUkVO VExZIHBnX2FtOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCByZWluZGV4IHN5c3RlbSBjYXRhbG9n cyBjb25jdXJyZW50bHkKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJTkRFWCByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAorRVJST1I6ICBvbmx5IHNoYXJlZCBy ZWxhdGlvbnMgY2FuIGJlIHBsYWNlZCBpbiBwZ19nbG9iYWwgdGFibGVzcGFjZQorUkVJTkRFWCAo VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBwZ19hbTsgLS0gZmFpbAorRVJST1I6 ICBwZXJtaXNzaW9uIGRlbmllZDogInBnX2FtX25hbWVfaW5kZXgiIGlzIGEgc3lzdGVtIGNhdGFs b2cKKy0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0aW9ucyBtb3ZlZCB0byBuZXcgdGFibGVzcGFjZQor U0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNU IG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScp CitPUkRFUiBCWSByZWxuYW1lOworICAgICAgICAgICAgICAgIHJlbG5hbWUgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfcHRfMV8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFf MV9jb2wyX2lkeAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xX2NvbDFfaWR4CisgcmVncmVz c190YmxzcGFjZV90ZXN0X3B0XzFfY29sMl9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRf Ml9jb2wxX2lkeAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yX2NvbDJfaWR4CisgcmVncmVz c190YmxzcGFjZV90ZXN0X3B0X2lkeF8xCisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8y CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHgKKyg5IHJvd3MpCisKKy0tIG1vdmUgaW5k ZXhlcyBiYWNrIHRvIHBnX2RlZmF1bHQgdGFibGVzcGFjZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBw Z19kZWZhdWx0KSBUQUJMRSBDT05DVVJSRU5UTFkgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsg LS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgcmVncmVzc190Ymxz cGFjZV90ZXN0X3B0OyAtLSBvaworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIGJh Y2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVs dGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0n cmVncmVzc190YmxzcGFjZScpOworIHJlbG5hbWUgCistLS0tLS0tLS0KKygwIHJvd3MpCisKIC0t IGNyZWF0ZSBhIHNjaGVtYSB3ZSBjYW4gdXNlCiBDUkVBVEUgU0NIRU1BIHRlc3RzY2hlbWE7CiAt LSB0cnkgYSB0YWJsZQpAQCAtMTk5LDYgKzMxNSw0NyBAQCBQYXJ0aXRpb25zOiB0ZXN0c2NoZW1h LnBhcnQxX2FfaWR4LAogICAgICAgICAgICAgdGVzdHNjaGVtYS5wYXJ0Ml9hX2lkeAogVGFibGVz cGFjZTogInJlZ3Jlc3NfdGJsc3BhY2UiCiAKKy0tIFJFSU5ERVggcGFydGl0aW9uZWQgaW5kZXhl cyB0byBuZXcgdGFibGVzcGFjZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJM RSB0ZXN0c2NoZW1hLnBhcnQ7CitcZCB0ZXN0c2NoZW1hLnBhcnQKKyAgICAgICAgUGFydGl0aW9u ZWQgdGFibGUgInRlc3RzY2hlbWEucGFydCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgCitQYXJ0aXRpb24ga2V5OiBMSVNUIChhKQorSW5kZXhlczoKKyAgICAicGFydF9hX2lk eCIgYnRyZWUgKGEpCitOdW1iZXIgb2YgcGFydGl0aW9uczogMiAoVXNlIFxkKyB0byBsaXN0IHRo ZW0uKQorCitcZCB0ZXN0c2NoZW1hLnBhcnQxCisgICAgICAgICAgICAgVGFibGUgInRlc3RzY2hl bWEucGFydDEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVm YXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9u IG9mOiB0ZXN0c2NoZW1hLnBhcnQgRk9SIFZBTFVFUyBJTiAoMSkKK0luZGV4ZXM6CisgICAgInBh cnQxX2FfaWR4IiBidHJlZSAoYSkKKworUkVJTkRFWCAoQ09OQ1VSUkVOVExZLCBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHRlc3RzY2hlbWEucGFydF9hX2lkeDsKK1xkIHRlc3Rz Y2hlbWEucGFydAorICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAidGVzdHNjaGVtYS5wYXJ0Igor IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IExJU1Qg KGEpCitJbmRleGVzOgorICAgICJwYXJ0X2FfaWR4IiBidHJlZSAoYSksIHRhYmxlc3BhY2UgInJl Z3Jlc3NfdGJsc3BhY2UiCitOdW1iZXIgb2YgcGFydGl0aW9uczogMiAoVXNlIFxkKyB0byBsaXN0 IHRoZW0uKQorCitcZCB0ZXN0c2NoZW1hLnBhcnQxCisgICAgICAgICAgICAgVGFibGUgInRlc3Rz Y2hlbWEucGFydDEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg RGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0 aW9uIG9mOiB0ZXN0c2NoZW1hLnBhcnQgRk9SIFZBTFVFUyBJTiAoMSkKK0luZGV4ZXM6CisgICAg InBhcnQxX2FfaWR4IiBidHJlZSAoYSksIHRhYmxlc3BhY2UgInJlZ3Jlc3NfdGJsc3BhY2UiCisK IC0tIHBhcnRpdGlvbmVkIHJlbHMgY2Fubm90IHNwZWNpZnkgdGhlIGRlZmF1bHQgdGFibGVzcGFj ZS4gIFRoZXNlIGZhaWw6CiBDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0IChhIGludCBQUklN QVJZIEtFWSkgUEFSVElUSU9OIEJZIExJU1QgKGEpIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKIEVS Uk9SOiAgY2Fubm90IHNwZWNpZnkgZGVmYXVsdCB0YWJsZXNwYWNlIGZvciBwYXJ0aXRpb25lZCBy ZWxhdGlvbnMKQEAgLTc0MSw2ICs4OTgsOCBAQCBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdAogTk9U SUNFOiAgbm8gbWF0Y2hpbmcgcmVsYXRpb25zIGluIHRhYmxlc3BhY2UgInJlZ3Jlc3NfdGJsc3Bh Y2VfcmVuYW1lZCIgZm91bmQKIC0tIFNob3VsZCBzdWNjZWVkCiBEUk9QIFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZV9yZW5hbWVkOworRFJPUCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf dGJsOworRFJPUCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7CiBEUk9QIFNDSEVNQSB0 ZXN0c2NoZW1hIENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDYgb3RoZXIgb2Jq ZWN0cwogREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSB0ZXN0c2NoZW1hLmZvbwotLSAK Mi4yNC4zIChBcHBsZSBHaXQtMTI4KQoK --=_c0763dddf942a47f7b5f0c89461d2886--