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 1lURl1-00056Z-ME for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Apr 2021 10:19:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lURl0-0000JW-JR for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Apr 2021 10:19:26 +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 1lURkz-0000JJ-Oo for pgsql-hackers@lists.postgresql.org; Thu, 08 Apr 2021 10:19:26 +0000 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lURkt-0003cs-9n for pgsql-hackers@postgresql.org; Thu, 08 Apr 2021 10:19:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1617877160; x=1649413160; h=to:cc:references:from:message-id:date:mime-version: in-reply-to:subject; bh=42t2DciddOkXZmUwSs1o7oCzeGME0At5cpA/AqHuMZw=; b=WlOr/065cSGTuXZm4jrC8MeDDitNzZ14HNyiY9TcqqGSU8mw9mooKs3m xE1wuOTGvB5BpSt/Rd8tlgItMTiDt456zJHVfhYC7iMrHOewSBYZreGhR QfI4KQyrIAoxvBo40T8sT64/1X/WMiAB5OW1IpPbIQ3zrBizhxSzNRuRy w=; X-Amazon-filename: v17-0005-Doc-changes-describing-details-about-logical-dec.patch, v17-0004-New-TAP-test-for-logical-decoding-on-standby.patch, v17-0003-Allow-logical-decoding-on-standby.patch, v17-0002-Handle-logical-slot-conflicts-on-standby.patch, v17-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch X-IronPort-AV: E=Sophos;i="5.82,206,1613433600"; d="scan'208,223";a="106190935" Subject: Re: Minimal logical decoding on standbys Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-1a-16acd5e0.us-east-1.amazon.com) ([10.43.8.2]) by smtp-border-fw-out-6001.iad6.amazon.com with ESMTP; 08 Apr 2021 10:19:12 +0000 Received: from EX13D03EUC003.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan2.iad.amazon.com [10.40.163.34]) by email-inbound-relay-1a-16acd5e0.us-east-1.amazon.com (Postfix) with ESMTPS id 7C59BA2421; Thu, 8 Apr 2021 10:19:09 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.161.39) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 8 Apr 2021 10:19:05 +0000 To: Andres Freund CC: , Alvaro Herrera , tushar , "[pgdg] Robert Haas" , Amit Khandekar , Rahila Syed , pgsql-hackers References: <96644a03-0b4d-e0a6-2124-0bc37e5b54fb@amazon.com> <842d60ce-99e6-f35e-8c92-0cd49381326e@amazon.com> <6b9168e5-6a29-7fda-8903-cd50563fa84c@amazon.com> <20210406180231.qsnkyrgrm7gtxb73@alap3.anarazel.de> From: "Drouvot, Bertrand" Message-ID: <41c3d8dd-8bc7-13d9-e14c-2c29ba5f2083@amazon.com> Date: Thu, 8 Apr 2021 12:19:00 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <20210406180231.qsnkyrgrm7gtxb73@alap3.anarazel.de> Content-Type: multipart/mixed; boundary="------------0BFA3292287791DB224037C5" Content-Language: en-US X-Originating-IP: [10.43.161.39] X-ClientProxiedBy: EX13D27UWA002.ant.amazon.com (10.43.160.30) To EX13D03EUC003.ant.amazon.com (10.43.164.192) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --------------0BFA3292287791DB224037C5 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Hi, Thanks for the feedback! On 4/6/21 8:02 PM, Andres Freund wrote: > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe. > > > > Hi, > > On 2021-04-06 14:30:29 +0200, Drouvot, Bertrand wrote: >> From 827295f74aff9c627ee722f541a6c7cc6d4133cf Mon Sep 17 00:00:00 2001 >> From: bdrouvotAWS >> Date: Tue, 6 Apr 2021 11:59:23 +0000 >> Subject: [PATCH v15 1/5] Allow logical decoding on standby. >> >> Allow a logical slot to be created on standby. Restrict its usage >> or its creation if wal_level on primary is less than logical. >> During slot creation, it's restart_lsn is set to the last replayed >> LSN. Effectively, a logical slot creation on standby waits for an >> xl_running_xact record to arrive from primary. Conflicting slots >> would be handled in next commits. >> >> Andres Freund and Amit Khandekar. > I think more people have worked on this by now... > > Does this strike you as an accurate description? > > Author: Andres Freund (in an older version), Amit Khandekar, Bertrand Drouvot > Reviewed-By: Bertrand Drouvot, Andres Freund, Robert Haas Yes it looks like, adding Fabrizio as reviewer as well. >> --- a/src/backend/replication/logical/logical.c >> +++ b/src/backend/replication/logical/logical.c >> @@ -119,23 +119,22 @@ CheckLogicalDecodingRequirements(void) >> (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), >> errmsg("logical decoding requires a database connection"))); >> >> - /* ---- >> - * TODO: We got to change that someday soon... >> - * >> - * There's basically three things missing to allow this: >> - * 1) We need to be able to correctly and quickly identify the timeline a >> - * LSN belongs to >> - * 2) We need to force hot_standby_feedback to be enabled at all times so >> - * the primary cannot remove rows we need. >> - * 3) support dropping replication slots referring to a database, in >> - * dbase_redo. There can't be any active ones due to HS recovery >> - * conflicts, so that should be relatively easy. >> - * ---- >> - */ >> if (RecoveryInProgress()) >> - ereport(ERROR, >> - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), >> - errmsg("logical decoding cannot be used while in recovery"))); > Maybe I am just missing something right now, and maybe I'm being a bit > overly pedantic, but I don't immediately see how 0001 is correct without > 0002 and 0003? I think it'd be better to first introduce the conflict > information, then check for conflicts, and only after that allow > decoding on standbys? RIght, changing the order in v17 attached. > >> diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c >> index 6f8810e149..6a21cba362 100644 >> --- a/src/backend/access/transam/xlog.c >> +++ b/src/backend/access/transam/xlog.c >> @@ -5080,6 +5080,17 @@ LocalProcessControlFile(bool reset) >> ReadControlFile(); >> } >> >> +/* >> + * Get the wal_level from the control file. For a standby, this value should be >> + * considered as its active wal_level, because it may be different from what >> + * was originally configured on standby. >> + */ >> +WalLevel >> +GetActiveWalLevel(void) >> +{ >> + return ControlFile->wal_level; >> +} >> + > This strikes me as error-prone - there's nothing in the function name > that this should mainly (only?) be used during recovery... > renamed to GetActiveWalLevelOnStandby(). >> + if (SlotIsPhysical(slot)) >> + restart_lsn = GetRedoRecPtr(); >> + else if (RecoveryInProgress()) >> + { >> + restart_lsn = GetXLogReplayRecPtr(NULL); >> + /* >> + * Replay pointer may point one past the end of the record. If that >> + * is a XLOG page boundary, it will not be a valid LSN for the >> + * start of a record, so bump it up past the page header. >> + */ >> + if (!XRecOffIsValid(restart_lsn)) >> + { >> + if (restart_lsn % XLOG_BLCKSZ != 0) >> + elog(ERROR, "invalid replay pointer"); >> + >> + /* For the first page of a segment file, it's a long header */ >> + if (XLogSegmentOffset(restart_lsn, wal_segment_size) == 0) >> + restart_lsn += SizeOfXLogLongPHD; >> + else >> + restart_lsn += SizeOfXLogShortPHD; >> + } >> + } > This seems like a layering violation to me. I don't think stuff like > this should be outside of xlog[reader].c, and definitely not in > ReplicationSlotReserveWal(). Moved the bump to GetXLogReplayRecPtr(), does that make more sense or did you have something else in mind? > Relevant discussion (which totally escaped my mind): > https://postgr.es/m/CAJ3gD9csOr0LoYoMK9NnfBk0RZmvHXcJAFWFd2EuL%3DNOfz7PVA%40mail.gmail.com > > >> + else >> + restart_lsn = GetXLogInsertRecPtr(); >> + >> + SpinLockAcquire(&slot->mutex); >> + slot->data.restart_lsn = restart_lsn; >> + SpinLockRelease(&slot->mutex); >> + >> if (!RecoveryInProgress() && SlotIsLogical(slot)) >> { >> XLogRecPtr flushptr; >> >> - /* start at current insert position */ >> - restart_lsn = GetXLogInsertRecPtr(); >> - SpinLockAcquire(&slot->mutex); >> - slot->data.restart_lsn = restart_lsn; >> - SpinLockRelease(&slot->mutex); >> - >> /* make sure we have enough information to start */ >> flushptr = LogStandbySnapshot(); >> >> /* and make sure it's fsynced to disk */ >> XLogFlush(flushptr); >> } >> - else >> - { >> - restart_lsn = GetRedoRecPtr(); >> - SpinLockAcquire(&slot->mutex); >> - slot->data.restart_lsn = restart_lsn; >> - SpinLockRelease(&slot->mutex); >> - } >> >> /* prevent WAL removal as fast as possible */ >> ReplicationSlotsComputeRequiredLSN(); > I think I'd move the LogStandbySnapshot() piece out of the entire > loop. There's no reason for logging multiple ones if we then just end up > failing because of the XLogGetLastRemovedSegno() check. Right, moved it outside of the loop. > >> diff --git a/src/include/access/heapam_xlog.h b/src/include/access/heapam_xlog.h >> index 178d49710a..6c4c26c2fe 100644 >> --- a/src/include/access/heapam_xlog.h >> +++ b/src/include/access/heapam_xlog.h >> @@ -239,6 +239,7 @@ typedef struct xl_heap_update >> */ >> typedef struct xl_heap_clean >> { >> + bool onCatalogTable; >> TransactionId latestRemovedXid; >> uint16 nredirected; >> uint16 ndead; >> @@ -254,6 +255,7 @@ typedef struct xl_heap_clean >> */ >> typedef struct xl_heap_cleanup_info >> { >> + bool onCatalogTable; >> RelFileNode node; >> TransactionId latestRemovedXid; >> } xl_heap_cleanup_info; >> @@ -334,6 +336,7 @@ typedef struct xl_heap_freeze_tuple >> */ >> typedef struct xl_heap_freeze_page >> { >> + bool onCatalogTable; >> TransactionId cutoff_xid; >> uint16 ntuples; >> } xl_heap_freeze_page; >> @@ -348,6 +351,7 @@ typedef struct xl_heap_freeze_page >> */ >> typedef struct xl_heap_visible >> { >> + bool onCatalogTable; >> TransactionId cutoff_xid; >> uint8 flags; >> } xl_heap_visible; > Reminder to self: This needs a WAL version bump. > >> diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h >> index 9a3a03e520..3405070d63 100644 >> --- a/src/include/utils/rel.h >> +++ b/src/include/utils/rel.h >> @@ -16,6 +16,7 @@ >> >> #include "access/tupdesc.h" >> #include "access/xlog.h" >> +#include "catalog/catalog.h" >> #include "catalog/pg_class.h" >> #include "catalog/pg_index.h" >> #include "catalog/pg_publication.h" > Not clear why this is in this patch? It's needed for IsCatalogRelation() call in RelationIsAccessibleInLogicalDecoding() and RelationIsLogicallyLogged(). So instead, in v17 attached i removed the new includes of catalog.h as it makes more sense to me to keep this new one in rel.h. >> diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c >> index 5ba776e789..03c5dbea48 100644 >> --- a/src/backend/postmaster/pgstat.c >> +++ b/src/backend/postmaster/pgstat.c >> @@ -2928,6 +2928,24 @@ pgstat_send_archiver(const char *xlog, bool failed) >> pgstat_send(&msg, sizeof(msg)); >> } >> >> +/* ---------- >> + * pgstat_send_droplogicalslot() - >> + * >> + * Tell the collector about a logical slot being dropped >> + * due to conflict. >> + * ---------- >> + */ >> +void >> +pgstat_send_droplogicalslot(Oid dbOid) >> +{ >> + PgStat_MsgRecoveryConflict msg; >> + >> + pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_RECOVERYCONFLICT); >> + msg.m_databaseid = dbOid; >> + msg.m_reason = PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT; >> + pgstat_send(&msg, sizeof(msg)); >> +} > Why do we have this in adition to pgstat_report_replslot_drop()? ISTM > that we should instead add a reason parameter to > pgstat_report_replslot_drop()? Added a reason parameter in pgstat_report_replslot_drop() and dropped pgstat_send_droplogicalslot(). > >> +/* >> + * Resolve recovery conflicts with logical slots. >> + * >> + * When xid is valid, it means that rows older than xid might have been >> + * removed. > I don't think the past tense is correct - the rows better not be removed > yet on the standby, otherwise we'd potentially do something random in > decoding. > RIght, wording changed. > >> @@ -297,6 +297,24 @@ postgres=# select * from pg_logical_slot_get_changes('regression_slot', NULL, NU >> may consume changes from a slot at any given time. >> >> >> + >> + A logical replication slot can also be created on a hot standby. To prevent >> + VACUUM from removing required rows from the system >> + catalogs, hot_standby_feedback should be set on the >> + standby. In spite of that, if any required rows get removed, the slot gets >> + dropped. Existing logical slots on standby also get dropped if wal_level >> + on primary is reduced to less than 'logical'. >> + > I think this should add that it's very advisable to use a physical slot > between primary and standby. Otherwise hot_standby_feedback will work, > but only while the connection is alive - as soon as it breaks, a node > gets restarted, ... Good point, wording added . v17 attached does contain those changes. Remarks related to the TAP tests have not been addressed in v17, will look at it now. Bertrand --------------0BFA3292287791DB224037C5 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v17-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v17-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" RnJvbSA1YjhkMGRmNzM2MzFkYTE5YTBjNDU3NGU1NmVlYTgxNGRmZmQ1YTE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCA4IEFwciAyMDIxIDA5OjMwOjMyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTcgNS81XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjEgKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9u cygrKQogMTAwLjAlIGRvYy9zcmMvc2dtbC8KCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bG9naWNhbGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNn bWwKaW5kZXggNWQwNDljZGM2OC4uOTY1MTUyMjhlZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVj b2Rpbmcuc2dtbApAQCAtMjk3LDYgKzI5NywyNyBAQCBwb3N0Z3Jlcz0jIHNlbGVjdCAqIGZy b20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxM LCBOVQogICAgICBtYXkgY29uc3VtZSBjaGFuZ2VzIGZyb20gYSBzbG90IGF0IGFueSBnaXZl biB0aW1lLgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgorICAgICBBIGxvZ2ljYWwgcmVw bGljYXRpb24gc2xvdCBjYW4gYWxzbyBiZSBjcmVhdGVkIG9uIGEgaG90IHN0YW5kYnkuIFRv IHByZXZlbnQKKyAgICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBmcm9tIHJlbW92aW5n IHJlcXVpcmVkIHJvd3MgZnJvbSB0aGUgc3lzdGVtCisgICAgIGNhdGFsb2dzLCA8dmFybmFt ZT5ob3Rfc3RhbmRieV9mZWVkYmFjazwvdmFybmFtZT4gc2hvdWxkIGJlIHNldCBvbiB0aGUK KyAgICAgc3RhbmRieS4gSW4gc3BpdGUgb2YgdGhhdCwgaWYgYW55IHJlcXVpcmVkIHJvd3Mg Z2V0IHJlbW92ZWQsIHRoZSBzbG90IGdldHMKKyAgICAgZHJvcHBlZC4gSXQncyBoaWdobHkg cmVjb21tZW5kZWQgdG8gdXNlIGEgcGh5c2ljYWwgc2xvdCBiZXR3ZWVuIHRoZSBwcmltYXJ5 CisgICAgIGFuZCB0aGUgc3RhbmRieS4gT3RoZXJ3aXNlLCBob3Rfc3RhbmRieV9mZWVkYmFj ayB3aWxsIHdvcmssIGJ1dCBvbmx5IHdoaWxlIHRoZSAKKyAgICAgY29ubmVjdGlvbiBpcyBh bGl2ZSAoZm9yIGV4YW1wbGUgYSBub2RlIHJlc3RhcnQgd291bGQgYnJlYWsgaXQpLiBFeGlz dGluZyAKKyAgICAgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGRyb3BwZWQg aWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0bworICAgICBsZXNzIHRoYW4g J2xvZ2ljYWwnLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBGb3IgYSBsb2dp Y2FsIHNsb3QgdG8gYmUgY3JlYXRlZCwgaXQgYnVpbGRzIGEgaGlzdG9yaWMgc25hcHNob3Qs IGZvciB3aGljaAorICAgICBpbmZvcm1hdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBydW5u aW5nIHRyYW5zYWN0aW9ucyBpcyBlc3NlbnRpYWwuIE9uCisgICAgIHByaW1hcnksIHRoaXMg aW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLCBidXQgb24gc3RhbmRieSwgdGhpcyBpbmZvcm1h dGlvbgorICAgICBoYXMgdG8gYmUgb2J0YWluZWQgZnJvbSBwcmltYXJ5LiBTbywgc2xvdCBj cmVhdGlvbiBtYXkgd2FpdCBmb3Igc29tZQorICAgICBhY3Rpdml0eSB0byBoYXBwZW4gb24g dGhlIHByaW1hcnkuIElmIHRoZSBwcmltYXJ5IGlzIGlkbGUsIGNyZWF0aW5nIGEKKyAgICAg bG9naWNhbCBzbG90IG9uIHN0YW5kYnkgbWF5IHRha2UgYSBub3RpY2VhYmxlIHRpbWUuCisg ICAgPC9wYXJhPgorCiAgICAgPGNhdXRpb24+CiAgICAgIDxwYXJhPgogICAgICAgUmVwbGlj YXRpb24gc2xvdHMgcGVyc2lzdCBhY3Jvc3MgY3Jhc2hlcyBhbmQga25vdyBub3RoaW5nIGFi b3V0IHRoZSBzdGF0ZQotLSAKMi4xOC40Cgo= --------------0BFA3292287791DB224037C5 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v17-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v17-0004-New-TAP-test-for-logical-decoding-on-standby.patch" RnJvbSBkNGNhMjAxMjdiMWI5ZDQ4ZjIwZGE4MTY5ODNlMWFkZjY2ZTQ4ODkyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCA4IEFwciAyMDIxIDA5OjI5OjQ1ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTcgNC81XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBL aGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2 b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxs bwotLS0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtICAgICAgICAgICAgICAgICB8 ICAzNyArKysKIC4uLi90LzAyNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmdfeG1pbnMucGwg ICB8IDI3MiArKysrKysrKysrKysrKysrKysKIC4uLi8wMjVfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nX2NvbmZsaWN0cy5wbCB8IDIyOCArKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hh bmdlZCwgNTM3IGluc2VydGlvbnMoKykKICAgNS44JSBzcmMvdGVzdC9wZXJsLwogIDk0LjEl IHNyYy90ZXN0L3JlY292ZXJ5L3QvCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0 Z3Jlc05vZGUucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQppbmRleCBlMjZi MmIzZjMwLi43YzUzZGE2MDhiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVz Tm9kZS5wbQorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQpAQCAtMjU1Miw2 ICsyNTUyLDQzIEBAIHN1YiBwZ19yZWN2bG9naWNhbF91cHRvCiAKID1wb2QKIAorPWl0ZW0g JG5vZGUtPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieShzZWxmLCBtYXN0ZXIsIHNs b3RfbmFtZSwgZGJuYW1lKQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9u IGdpdmVuIHN0YW5kYnkKKworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9z dGFuZGJ5Cit7CisJbXkgKCRzZWxmLCAkbWFzdGVyLCAkc2xvdF9uYW1lLCAkZGJuYW1lKSA9 IEBfOworCW15ICgkc3Rkb3V0LCAkc3RkZXJyKTsKKworCW15ICRoYW5kbGU7CisKKwkkaGFu ZGxlID0gSVBDOjpSdW46OnN0YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkc2VsZi0+ Y29ubnN0cigkZGJuYW1lKSwgJy1QJywgJ3Rlc3RfZGVjb2RpbmcnLCAnLVMnLCAkc2xvdF9u YW1lLCAnLS1jcmVhdGUtc2xvdCddLCAnPicsIFwkc3Rkb3V0LCAnMj4nLCBcJHN0ZGVycik7 CisKKwkjIE9uY2Ugc2xvdCByZXN0YXJ0X2xzbiBpcyBjcmVhdGVkLCB0aGUgc3RhbmRieSBs b29rcyBmb3IgeGxfcnVubmluZ194YWN0cworCSMgV0FMIHJlY29yZCBmcm9tIHRoZSByZXN0 YXJ0X2xzbiBvbndhcmRzLiBTbyBmaXJzdGx5LCB3YWl0IHVudGlsIHRoZSBzbG90CisJIyBy ZXN0YXJ0X2xzbiBpcyBldmFsdWF0ZWQuCisKKwkkc2VsZi0+cG9sbF9xdWVyeV91bnRpbCgK KwkJJ3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCByZXN0YXJ0X2xzbiBJUyBOT1QgTlVMTAor CQlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1l ID0gJyRzbG90X25hbWUnCisJXSkgb3IgZGllICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgbG9n aWNhbCBzbG90IHRvIGNhbGN1bGF0ZSBpdHMgcmVzdGFydF9sc24iOworCisJIyBOb3cgYXJy YW5nZSBmb3IgdGhlIHhsX3J1bm5pbmdfeGFjdHMgcmVjb3JkIGZvciB3aGljaCBwZ19yZWN2 bG9naWNhbAorCSMgaXMgd2FpdGluZy4KKwkkbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ0NIRUNLUE9JTlQnKTsKKworCSRoYW5kbGUtPmZpbmlzaCgpOworCisJaXMoJHNlbGYt PnNsb3QoJHNsb3RfbmFtZSktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywgJHNsb3RfbmFt ZSAuICcgb24gc3RhbmRieSBjcmVhdGVkJykKKwkJb3IgZGllICJjb3VsZCBub3QgY3JlYXRl IHNsb3QiIC4gJHNsb3RfbmFtZTsKK30KKworPXBvZAorCiA9YmFjawogCiA9Y3V0CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAyNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rp bmdfeG1pbnMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAyNF9zdGFuZGJ5X2xvZ2ljYWxf ZGVjb2RpbmdfeG1pbnMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uZDY1NGQ3OTUyNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDI0X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZ194bWlucy5wbApAQCAtMCwwICsxLDI3MiBA QAorIyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3RhbmRieSA6IGVuc3VyZSB4bWlucyBhcmUg YXBwcm9wcmlhdGVseSB1cGRhdGVkCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisK K3VzZSBQb3N0Z3Jlc05vZGU7Cit1c2UgVGVzdExpYjsKK3VzZSBUZXN0OjpNb3JlIHRlc3Rz ID0+IDIzOwordXNlIFJlY3Vyc2l2ZUNvcHk7Cit1c2UgRmlsZTo6Q29weTsKK3VzZSBUaW1l OjpIaVJlcyBxdyh1c2xlZXApOworCitteSAoJHN0ZGluLCAkc3Rkb3V0LCAkc3RkZXJyLCAk cmV0LCAkaGFuZGxlLCAkc2xvdCk7CisKK215ICRub2RlX21hc3RlciA9IGdldF9uZXdfbm9k ZSgnbWFzdGVyJyk7CitteSAkbm9kZV9zdGFuZGJ5ID0gZ2V0X25ld19ub2RlKCdzdGFuZGJ5 Jyk7CisKKyMgTmFtZSBmb3IgdGhlIHBoeXNpY2FsIHNsb3Qgb24gbWFzdGVyCitteSAkbWFz dGVyX3Nsb3RuYW1lID0gJ21hc3Rlcl9waHlzaWNhbCc7CisjIE5hbWUgZm9yIHRoZSBsb2dp Y2FsIHNsb3Qgb24gc3RhbmRieQorbXkgJHN0YW5kYnlfc2xvdG5hbWUgPSAnc3RhbmRieV9s b2dpY2FsJzsKKworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVwbGlj YXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFuIGNv bmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNjZW50 IHN0YXRlCitzdWIgd2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJG5vZGUsICRzbG90bmFtZSwg JGNoZWNrX2V4cHIpID0gQF87CisKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bv c3RncmVzJywgcXFbCisJCVNFTEVDVCAkY2hlY2tfZXhwcgorCQlGUk9NIHBnX2NhdGFsb2cu cGdfcmVwbGljYXRpb25fc2xvdHMKKwkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90bmFtZSc7 CisJXSkgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3Igc2xvdCB4bWlucyB0byBhZHZh bmNlIjsKK30KKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBt YXN0ZXIgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX21hc3Rlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEsIGhhc19hcmNoaXZpbmcgPT4gMSk7Ciskbm9k ZV9tYXN0ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeword2FsX2xldmVs ID0gJ2xvZ2ljYWwnCittYXhfcmVwbGljYXRpb25fc2xvdHMgPSA0CittYXhfd2FsX3NlbmRl cnMgPSA0Citsb2dfbWluX21lc3NhZ2VzID0gJ2RlYnVnMicKK2xvZ19lcnJvcl92ZXJib3Np dHkgPSB2ZXJib3NlCisjIHZlcnkgcHJvbXB0bHkgdGVybWluYXRlIGNvbmZsaWN0aW5nIGJh Y2tlbmRzCittYXhfc3RhbmRieV9zdHJlYW1pbmdfZGVsYXkgPSAnMnMnCit9KTsKKyRub2Rl X21hc3Rlci0+ZHVtcF9pbmZvOworJG5vZGVfbWFzdGVyLT5zdGFydDsKKworJG5vZGVfbWFz dGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVhdGVf cGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJG1hc3Rlcl9zbG90bmFtZScpO10pOworbXkg JGJhY2t1cF9uYW1lID0gJ2IxJzsKKyRub2RlX21hc3Rlci0+YmFja3VwKCRiYWNrdXBfbmFt ZSk7CisKKyMgQWZ0ZXIgc2xvdCBjcmVhdGlvbiwgeG1pbnMgbXVzdCBiZSBudWxsCiskc2xv dCA9ICRub2RlX21hc3Rlci0+c2xvdCgkbWFzdGVyX3Nsb3RuYW1lKTsKK2lzKCRzbG90LT57 J3htaW4nfSwgJycsICJ4bWluIG51bGwiKTsKK2lzKCRzbG90LT57J2NhdGFsb2dfeG1pbid9 LCAnJywgImNhdGFsb2dfeG1pbiBudWxsIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIEluaXRpYWxpemUgc2xhdmUgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor JG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgKKwkkbm9kZV9tYXN0ZXIsICRiYWNr dXBfbmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsK KyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3By aW1hcnlfc2xvdF9uYW1lID0gJyRtYXN0ZXJfc2xvdG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5 LT5zdGFydDsKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5 LCAncmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIHhtaW4vY2F0YWxvZ194bWluIHZlcmlmaWNh dGlvbiBiZWZvcmUgYW5kIGFmdGVyIHN0YW5kYnktbG9naWNhbC1zbG90IGNyZWF0aW9uLgor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBXaXRoIGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrIG9mZiwgeG1pbiBhbmQgY2F0YWxvZ194bWluIG11c3Qgc3RpbGwgYmUgbnVs bAorJHNsb3QgPSAkbm9kZV9tYXN0ZXItPnNsb3QoJG1hc3Rlcl9zbG90bmFtZSk7Citpcygk c2xvdC0+eyd4bWluJ30sICcnLCAieG1pbiBudWxsIGFmdGVyIHN0YW5kYnkgam9pbiIpOwor aXMoJHNsb3QtPnsnY2F0YWxvZ194bWluJ30sICcnLCAiY2F0YWxvZ194bWluIG51bGwgYWZ0 ZXIgc3RhbmRieSBqb2luIik7CisKKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCisjIHNlbmQgc3Rh dHVzIHJhcGlkbHkgc28gd2UgcHJvbXB0bHkgYWR2YW5jZSB4bWluIG9uIG1hc3Rlcgord2Fs X3JlY2VpdmVyX3N0YXR1c19pbnRlcnZhbCA9IDEKK10pOworJG5vZGVfc3RhbmRieS0+cmVz dGFydDsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgc2VudCBieSB3YWl0aW5n IGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24gbWFzdGVyLiBXaXRo IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNob3VsZCBhZHZhbmNlLAorIyBidXQg Y2F0YWxvZ194bWluIHNob3VsZCBzdGlsbCByZW1haW4gTlVMTCBzaW5jZSB0aGVyZSBpcyBu byBsb2dpY2FsIHNsb3QuCit3YWl0X2Zvcl94bWlucygkbm9kZV9tYXN0ZXIsICRtYXN0ZXJf c2xvdG5hbWUsICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTlVMTCIp OworCisjIENyZWF0ZSBuZXcgc2xvdHMgb24gdGhlIHN0YW5kYnksIGlnbm9yaW5nIHRoZSBv bmVzIG9uIHRoZSBtYXN0ZXIgY29tcGxldGVseS4KKyMKKyMgVGhpcyBtdXN0IHN1Y2NlZWQg c2luY2Ugd2Uga25vdyB3ZSBoYXZlIGEgY2F0YWxvZ194bWluIHJlc2VydmF0aW9uLiBXZQor IyBtaWdodCd2ZSBhbHJlYWR5IHNlbnQgaG90IHN0YW5kYnkgZmVlZGJhY2sgdG8gYWR2YW5j ZSBvdXIgcGh5c2ljYWwgc2xvdCdzCisjIGNhdGFsb2dfeG1pbiBidXQgbm90IHJlY2VpdmVk IHRoZSBjb3JyZXNwb25kaW5nIHhsb2cgZm9yIHRoZSBjYXRhbG9nIHhtaW4KKyMgYWR2YW5j ZSwgaW4gd2hpY2ggY2FzZSB3ZSdsbCBjcmVhdGUgYSBzbG90IHRoYXQgaXNuJ3QgdXNhYmxl LiBUaGUgY2FsbGluZworIyBhcHBsaWNhdGlvbiBjYW4gcHJldmVudCB0aGlzIGJ5IGNyZWF0 aW5nIGEgdGVtcG9yYXJ5IHNsb3Qgb24gdGhlIG1hc3RlciB0bworIyBsb2NrIGluIGl0cyBj YXRhbG9nX3htaW4uIEZvciBhIHRydWx5IHJhY2UtZnJlZSBzb2x1dGlvbiB3ZSdkIG5lZWQK KyMgbWFzdGVyLXRvLXN0YW5kYnkgaG90X3N0YW5kYnlfZmVlZGJhY2sgcmVwbGllcy4KKyMK KyMgSW4gdGhpcyBjYXNlIGl0IHdvbid0IHJhY2UgYmVjYXVzZSB0aGVyZSdzIG5vIGNvbmN1 cnJlbnQgYWN0aXZpdHkgb24gdGhlCisjIG1hc3Rlci4KKyMKKyRub2RlX3N0YW5kYnktPmNy ZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9tYXN0ZXIsICRzdGFuZGJ5X3Ns b3RuYW1lLCAncG9zdGdyZXMnKTsKKworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7 CisKKyMgTm93IHRoYXQgc2xvdCBpcyBjcmVhdGVkIG9uIHN0YW5kYnksIHhtaW4gYW5kIGNh dGFsb2dfeG1pbiBzaG91bGQgYmUgbm9uIE5VTEwKKyMgb24gYm90aCBtYXN0ZXIgYW5kIHN0 YW5kYnkuIEJ1dCBvbiBtYXN0ZXIsIHRoZSB4bWlucyB3aWxsIGJlIHVwZGF0ZWQgb25seQor IyBhZnRlciBob3Qgc3RhbmRieSBmZWVkYmFjayBpcyByZWNlaXZlZC4KK3dhaXRfZm9yX3ht aW5zKCRub2RlX21hc3RlciwgJG1hc3Rlcl9zbG90bmFtZSwgInhtaW4gSVMgTk9UIE5VTEwg QU5EIGNhdGFsb2dfeG1pbiBJUyBOT1QgTlVMTCIpOworCiskc2xvdCA9ICRub2RlX3N0YW5k YnktPnNsb3QoJHN0YW5kYnlfc2xvdG5hbWUpOworaXMoJHNsb3QtPnsneG1pbid9LCAnJywg ImxvZ2ljYWwgeG1pbiBudWxsIik7Citpc250KCRzbG90LT57J2NhdGFsb2dfeG1pbid9LCAn JywgImxvZ2ljYWwgY2F0YWxvZ194bWluIG5vdCBudWxsIik7CisKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU3RhbmRieSBsb2dpY2FsIHNsb3Qgc2hvdWxkIGJl IGFibGUgdG8gZmV0Y2ggdGhlIHRhYmxlIGNoYW5nZXMgZXZlbiB3aGVuIHRoZQorIyB0YWJs ZSBpcyBkcm9wcGVkLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5v ZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBUQUJMRSB0ZXN0X3Rh YmxlKGlkIHNlcmlhbCBwcmltYXJ5IGtleSwgYmxhaCB0ZXh0KScpOworJG5vZGVfbWFzdGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlKGJsYWgp IHZhbHVlcyAoJ2l0d29ya3MnKV0pOworJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ0RST1AgVEFCTEUgdGVzdF90YWJsZScpOworJG5vZGVfbWFzdGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ1ZBQ1VVTScpOworCiskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2Nh dGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVz aCcpKTsKKworIyBTaG91bGQgc2hvdyB0aGUgaW5zZXJ0cyBldmVuIHdoZW4gdGhlIHRhYmxl IGlzIGRyb3BwZWQgb24gbWFzdGVyCisoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9k ZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9n aWNhbF9zbG90X2dldF9jaGFuZ2VzKCckc3RhbmRieV9zbG90bmFtZScsIE5VTEwsIE5VTEws ICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVk ZS10aW1lc3RhbXAnLCAnMCcpXSk7Citpcygkc3RkZXJyLCAnJywgJ3N0ZGVyciBpcyBlbXB0 eScpOworaXMoJHJldCwgMCwgJ3JlcGxheSBmcm9tIHNsb3Qgc3VjY2VlZGVkJykKKwlvciBk aWUgJ2Nhbm5vdCBjb250aW51ZSBpZiBzbG90IHJlcGxheSBmYWlscyc7Citpcygkc3Rkb3V0 LCBxe0JFR0lOCit0YWJsZSBwdWJsaWMudGVzdF90YWJsZTogSU5TRVJUOiBpZFtpbnRlZ2Vy XToxIGJsYWhbdGV4dF06J2l0d29ya3MnCitDT01NSVR9LCAncmVwbGF5IHJlc3VsdHMgbWF0 Y2gnKTsKKworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnks ICdyZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKKyRzbG90ID0gJG5v ZGVfbWFzdGVyLT5zbG90KCRtYXN0ZXJfc2xvdG5hbWUpOworaXNudCgkc2xvdC0+eyd4bWlu J30sICcnLCAicGh5c2ljYWwgeG1pbiBub3QgbnVsbCIpOworbXkgJHNhdmVkX3BoeXNpY2Fs X2NhdGFsb2dfeG1pbiA9ICRzbG90LT57J2NhdGFsb2dfeG1pbid9OworaXNudCgkc2F2ZWRf cGh5c2ljYWxfY2F0YWxvZ194bWluLCAnJywgInBoeXNpY2FsIGNhdGFsb2dfeG1pbiBub3Qg bnVsbCIpOworCiskc2xvdCA9ICRub2RlX3N0YW5kYnktPnNsb3QoJHN0YW5kYnlfc2xvdG5h bWUpOworaXMoJHNsb3QtPnsneG1pbid9LCAnJywgImxvZ2ljYWwgeG1pbiBudWxsIik7Citt eSAkc2F2ZWRfbG9naWNhbF9jYXRhbG9nX3htaW4gPSAkc2xvdC0+eydjYXRhbG9nX3htaW4n fTsKK2lzbnQoJHNhdmVkX2xvZ2ljYWxfY2F0YWxvZ194bWluLCAnJywgImxvZ2ljYWwgY2F0 YWxvZ194bWluIG5vdCBudWxsIik7CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgQ2F0YWxvZyB4bWlucyBzaG91bGQgYWR2YW5jZSBhZnRlciBzdGFuZGJ5IGxv Z2ljYWwgc2xvdCBmZXRjaGVzIHRoZSBjaGFuZ2VzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIyBJZGVhbGx5IHdlJ2QganVzdCBob2xkIGNhdGFsb2dfeG1pbiwg YnV0IHNpbmNlIGhzX2ZlZWRiYWNrIGN1cnJlbnRseSB1c2VzIHRoZSBzbG90LAorIyB3ZSBo b2xkIGRvd24geG1pbi4KKyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx W0NSRUFURSBUQUJMRSBjYXRhbG9nX2luY3JlYXNlXzEoKTtdKTsKKyRub2RlX21hc3Rlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgVEFCTEUgdGVzdF90YWJsZShpZCBzZXJp YWwgcHJpbWFyeSBrZXksIGJsYWggdGV4dCknKTsKK2ZvciBteSAkaSAoMCAuLiAyMDAwKQor eworICAgICRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxW0lOU0VSVCBJ TlRPIHRlc3RfdGFibGUoYmxhaCkgVkFMVUVTICgnZW50cnkgJGknKV0pOworfQorJG5vZGVf bWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbQ1JFQVRFIFRBQkxFIGNhdGFsb2df aW5jcmVhc2VfMigpO10pOworJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J1ZBQ1VVTScpOworCiskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3Rh bmRieSwgJ3JlcGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworY21wX29r KCRub2RlX3N0YW5kYnktPnNsb3QoJHN0YW5kYnlfc2xvdG5hbWUpLT57J2NhdGFsb2dfeG1p bid9LCAiPT0iLAorCSAgICRzYXZlZF9sb2dpY2FsX2NhdGFsb2dfeG1pbiwKKwkgICAibG9n aWNhbCBzbG90IGNhdGFsb2dfeG1pbiBoYXNuJ3QgYWR2YW5jZWQgYmVmb3JlIGdldF9jaGFu Z2VzIik7CisKKygkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N0YW5kYnktPnBz cWwoJ3Bvc3RncmVzJywKKwlxcVtTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfY2hhbmdlcygnJHN0YW5kYnlfc2xvdG5hbWUnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14 aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1ZGUtdGltZXN0YW1w JywgJzAnKV0pOworaXMoJHJldCwgMCwgJ3JlcGxheSBvZiBiaWcgc2VyaWVzIHN1Y2NlZWRl ZCcpOworaXNudCgkc3Rkb3V0LCAnJywgJ3JlcGxheWVkIHNvbWUgcm93cycpOworCiskbm9k ZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRu b2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworIyBsb2dpY2FsIHNsb3QgY2F0YWxvZ194 bWluIG9uIHNsYXZlIHNob3VsZCBhZHZhbmNlIGFmdGVyIHBnX2xvZ2ljYWxfc2xvdF9nZXRf Y2hhbmdlcword2FpdF9mb3JfeG1pbnMoJG5vZGVfc3RhbmRieSwgJHN0YW5kYnlfc2xvdG5h bWUsCisJCQkgICAiY2F0YWxvZ194bWluOjp2YXJjaGFyOjppbnQgPiAke3NhdmVkX2xvZ2lj YWxfY2F0YWxvZ194bWlufSIpOworJHNsb3QgPSAkbm9kZV9zdGFuZGJ5LT5zbG90KCRzdGFu ZGJ5X3Nsb3RuYW1lKTsKK215ICRuZXdfbG9naWNhbF9jYXRhbG9nX3htaW4gPSAkc2xvdC0+ eydjYXRhbG9nX3htaW4nfTsKK2lzKCRzbG90LT57J3htaW4nfSwgJycsICJsb2dpY2FsIHht aW4gbnVsbCIpOworCisjIGhvdCBzdGFuZGJ5IGZlZWRiYWNrIHNob3VsZCBhZHZhbmNlIG1h c3RlcidzIHBoeXMgY2F0YWxvZ194bWluIG5vdyB0aGF0IHRoZQorIyBzdGFuZGJ5J3Mgc2xv dCBkb2Vzbid0IGhvbGQgaXQgZG93biBhcyBmYXIuCisjIEJ1dCBtYXN0ZXIncyBwaHlzIGNh dGFsb2dfeG1pbiBzaG91bGQgbm90IGdvIHBhc3QgdGhlIHNsYXZlJ3MgbG9naWNhbCBzbG90 J3MKKyMgY2F0YWxvZ194bWluLCBldmVuIHdoaWxlIG1hc3RlcidzIHBoeXMgeG1pbiBhZHZh bmNlcy4KKyMKKyMgRmlyc3QsIG1ha2Ugc3VyZSBtYXN0ZXIncyB4bWluIGlzIGFkdmFuY2Vk LiBUaGlzIGhhcHBlbnMgb24gaG90IHN0YW5kYnkKKyMgZmVlZGJhY2suIFNvIHRoaXMgY2hl Y2sgZm9yIG1hc3RlcidzIHhtaW4gYWR2YW5jZSBhbHNvIG1ha2VzIHN1cmUgaG90IHN0YW5k YnkKKyMgZmVlZGJhY2sgaGFzIHJlYWNoZWQgdGhlIG1hc3Rlciwgd2hpY2ggaXMgcmVxdWly ZWQgZm9yIHRoZSBzdWJzZXF1ZW50CisjIGNhdGFsb2dfeG1pbiB0ZXN0LgorbXkgJHRlbXBf cGh5c194bWluID0gJG5vZGVfbWFzdGVyLT5zbG90KCRtYXN0ZXJfc2xvdG5hbWUpLT57J3ht aW4nfTsKKyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgdHhp ZF9jdXJyZW50KCknKTsKK3dhaXRfZm9yX3htaW5zKCRub2RlX21hc3RlciwgJG1hc3Rlcl9z bG90bmFtZSwKKwkJCSAgICJ4bWluOjp2YXJjaGFyOjppbnQgPiAke3RlbXBfcGh5c194bWlu fSIpOworJHNsb3QgPSAkbm9kZV9tYXN0ZXItPnNsb3QoJG1hc3Rlcl9zbG90bmFtZSk7Cisj IE5vdyBjaGVjayB0aGF0IHRoZSBtYXN0ZXIncyBwaHlzIGNhdGFsb2dfeG1pbiBoYXMgYWR2 YW5jZWQgYnV0IG5vdCBiZXlvbmQKKyMgc3RhbmRieSdzIGxvZ2ljYWwgY2F0YWxvZ194bWlu CitjbXBfb2soJHNsb3QtPnsnY2F0YWxvZ194bWluJ30sICI+IiwgJHNhdmVkX3BoeXNpY2Fs X2NhdGFsb2dfeG1pbiwKKwkndXBzdHJlYW0gcGh5c2ljYWwgc2xvdCBjYXRhbG9nX3htaW4g aGFzIGFkdmFuY2VkIHdpdGggaHNfZmVlZGJhY2sgb24nKTsKK2NtcF9vaygkc2xvdC0+eydj YXRhbG9nX3htaW4nfSwgIj09IiwgJG5ld19sb2dpY2FsX2NhdGFsb2dfeG1pbiwKKwkndXBz dHJlYW0gcGh5c2ljYWwgc2xvdCBjYXRhbG9nX3htaW4gbm90IHBhc3QgZG93bnN0cmVhbSBj YXRhbG9nX3htaW4gd2l0aCBoc19mZWVkYmFjayBvbicpOworCisKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVXBzdHJlYW0gb2xkZXN0WGlkIHNob3VsZCBub3QgZ28gcGFzdCBkb3du c3RyZWFtIGNhdGFsb2dfeG1pbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEZpcnN0 IGJ1cm4gc29tZSB4aWRzIG9uIHRoZSBtYXN0ZXIgaW4gYW5vdGhlciBEQiwgc28gd2UgcHVz aCB0aGUgbWFzdGVyJ3MKKyMgbmV4dFhpZCBhaGVhZC4KK2ZvcmVhY2ggbXkgJGkgKDEgLi4g MTAwKQoreworCSRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1Qg dHhpZF9jdXJyZW50KCknKTsKK30KKworIyBGb3JjZSB2YWN1dW0gZnJlZXplIG9uIHRoZSBt YXN0ZXIgYW5kIGVuc3VyZSBpdHMgb2xkZXN0WG1pbiBkb2Vzbid0IGFkdmFuY2UKKyMgcGFz dCBvdXIgbmVlZGVkIHhtaW4uIFRoZSBvbmx5IHdheSB3ZSBoYXZlIHZpc2liaWxpdHkgaW50 byB0aGF0IGlzIHRvIGZvcmNlCisjIGEgY2hlY2twb2ludC4KKyRub2RlX21hc3Rlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJVUERBVEUgcGdfZGF0YWJhc2UgU0VUIGRhdGFsbG93Y29u biA9IHRydWUgV0hFUkUgZGF0bmFtZSA9ICd0ZW1wbGF0ZTAnIik7Citmb3JlYWNoIG15ICRk Ym5hbWUgKCd0ZW1wbGF0ZTEnLCAncG9zdGdyZXMnLCAncG9zdGdyZXMnLCAndGVtcGxhdGUw JykKK3sKKwkkbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgkZGJuYW1lLCAnVkFDVVVNIEZSRUVa RScpOworfQorJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NIRUNLUE9J TlQnKTsKK0lQQzo6UnVuOjpydW4oWydwZ19jb250cm9sZGF0YScsICRub2RlX21hc3Rlci0+ ZGF0YV9kaXIoKV0sICc+JywgXCRzdGRvdXQpCisJb3IgZGllICJwZ19jb250cm9sZGF0YSBm YWlsZWQgd2l0aCAkPyI7CitteSBAY2hlY2twb2ludCA9IHNwbGl0KCdcbicsICRzdGRvdXQp OworbXkgJG9sZGVzdFhpZCA9ICcnOworZm9yZWFjaCBteSAkbGluZSAoQGNoZWNrcG9pbnQp Cit7CisJaWYgKCRsaW5lID1+IHFyL15MYXRlc3QgY2hlY2twb2ludCdzIG9sZGVzdFhJRDpc cysoXGQrKS8pCisJeworCQkkb2xkZXN0WGlkID0gJDE7CisJfQorfQorZGllICdubyBvbGRl c3RYSUQgZm91bmQgaW4gY2hlY2twb2ludCcgdW5sZXNzICRvbGRlc3RYaWQ7CisKK2NtcF9v aygkb2xkZXN0WGlkLCAiPD0iLCAkbm9kZV9zdGFuZGJ5LT5zbG90KCRzdGFuZGJ5X3Nsb3Ru YW1lKS0+eydjYXRhbG9nX3htaW4nfSwKKwkgICAndXBzdHJlYW0gb2xkZXN0WGlkIG5vdCBw YXN0IGRvd25zdHJlYW0gY2F0YWxvZ194bWluIHdpdGggaHNfZmVlZGJhY2sgb24nKTsKKwor JG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiVVBEQVRFIHBnX2RhdGFi YXNlIFNFVCBkYXRhbGxvd2Nvbm4gPSBmYWxzZSBXSEVSRSBkYXRuYW1lID0gJ3RlbXBsYXRl MCciKTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBEcm9wIHNsb3QKKyMgTWFrZSBzdXJlIHN0YW5kYnkgc2xvdHMgYXJlIGRy b3BwYWJsZSwgYW5kIHByb3Blcmx5IGNsZWFyIHRoZSB1cHN0cmVhbSdzIHhtaW4KKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2lzKCRu b2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0hPVyBob3Rfc3RhbmRieV9m ZWVkYmFjaycpLCAnb24nLCAnaHNfZmVlZGJhY2sgaXMgb24nKTsKKworJG5vZGVfc3RhbmRi eS0+cHNxbCgncG9zdGdyZXMnLCBxcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90 KCckc3RhbmRieV9zbG90bmFtZScpXSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNsb3QoJHN0 YW5kYnlfc2xvdG5hbWUpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ3Nsb3Qgb24gc3RhbmRieSBk cm9wcGVkIG1hbnVhbGx5Jyk7CisKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIHNl bnQgYnkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9u IG1hc3Rlci4gY2F0YWxvZ194bWluIHNob3VsZCBiZWNvbWUgTlVMTCBiZWNhdXNlIHdlIGRy b3BwZWQKKyMgdGhlIGxvZ2ljYWwgc2xvdC4KK3dhaXRfZm9yX3htaW5zKCRub2RlX21hc3Rl ciwgJG1hc3Rlcl9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRh bG9nX3htaW4gSVMgTlVMTCIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MjVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nX2NvbmZsaWN0cy5wbCBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDI1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZ19jb25mbGljdHMucGwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDI2YTQxMmIxZgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI1X3N0YW5kYnlfbG9naWNhbF9k ZWNvZGluZ19jb25mbGljdHMucGwKQEAgLTAsMCArMSwyMjggQEAKKyMgbG9naWNhbCBkZWNv ZGluZyBvbiBhIHN0YW5kYnkgOiB0ZXN0IGNvbmZsaWN0IHJlY292ZXJ5OyBhbmQgb3RoZXIg dGVzdHMgdGhhdAorIyB2ZXJpZnkgc2xvdHMgZ2V0IGRyb3BwZWQgYXMgZXhwZWN0ZWQuCisK K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3Jlc05vZGU7Cit1c2Ug VGVzdExpYjsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDI2OwordXNlIFJlY3Vyc2l2ZUNv cHk7Cit1c2UgRmlsZTo6Q29weTsKK3VzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOworCitt eSAoJHN0ZGluLCAkc3Rkb3V0LCAkc3RkZXJyLCAkcmV0LCAkaGFuZGxlLCAkc2xvdCk7CisK K215ICRub2RlX21hc3RlciA9IGdldF9uZXdfbm9kZSgnbWFzdGVyJyk7CitteSAkbm9kZV9z dGFuZGJ5ID0gZ2V0X25ld19ub2RlKCdzdGFuZGJ5Jyk7CisKKyMgTmFtZSBmb3IgdGhlIHBo eXNpY2FsIHNsb3Qgb24gbWFzdGVyCitteSAkbWFzdGVyX3Nsb3RuYW1lID0gJ21hc3Rlcl9w aHlzaWNhbCc7CisKKyMgRmV0Y2ggeG1pbiBjb2x1bW5zIGZyb20gc2xvdCdzIHBnX3JlcGxp Y2F0aW9uX3Nsb3RzIHJvdywgYWZ0ZXIgd2FpdGluZyBmb3IKKyMgZ2l2ZW4gYm9vbGVhbiBj b25kaXRpb24gdG8gYmUgdHJ1ZSB0byBlbnN1cmUgd2UndmUgcmVhY2hlZCBhIHF1aWVzY2Vu dCBzdGF0ZQorc3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2RlLCAkc2xvdG5hbWUs ICRjaGVja19leHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdw b3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJPTSBwZ19jYXRhbG9n LnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdG5hbWUn OworCV0pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgeG1pbnMgdG8gYWR2 YW5jZSI7Cit9CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMu Y29uZmxfbG9naWNhbHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorc3ViIGNoZWNrX2NvbmZsX2xv Z2ljYWxzbG90Cit7CisJb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJ CSdwb3N0Z3JlcycsCisJCSJzZWxlY3QgKGNvbmZsX2xvZ2ljYWxzbG90ID0gMikgZnJvbSBw Z19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAn dCcpLAorCQknY29uZmxfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0 IHdhaXRpbmcgY29uZmxfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7Cit9CisKKyMgQ3Jl YXRlIHRoZSByZXF1aXJlZCBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgY3JlYXRl X2xvZ2ljYWxfc2xvdHMKK3sKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90 X29uX3N0YW5kYnkoJG5vZGVfbWFzdGVyLCAnZHJvcHNsb3QnLCAndGVzdGRiJyk7CisJJG5v ZGVfc3RhbmRieS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX21hc3Rl ciwgJ2FjdGl2ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgQWNxdWlyZSBvbmUgb2YgdGhl IHN0YW5kYnkgbG9naWNhbCBzbG90cyBjcmVhdGVkIGJ5IGNyZWF0ZV9sb2dpY2FsX3Nsb3Rz KCkKK3N1YiBtYWtlX3Nsb3RfYWN0aXZlCit7CisJbXkgJHNsb3RfdXNlcl9oYW5kbGU7CisK KwkjIG1ha2Ugc3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQorCXByaW50ICJzdGFydGluZyBw Z19yZWN2bG9naWNhbFxuIjsKKwkkc2xvdF91c2VyX2hhbmRsZSA9IElQQzo6UnVuOjpzdGFy dChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJG5vZGVfc3RhbmRieS0+Y29ubnN0cigndGVz dGRiJyksICctUycsICdhY3RpdmVzbG90JywgJy1mJywgJy0nLCAnLS1uby1sb29wJywgJy0t c3RhcnQnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOworCisJd2hpbGUgKCEk bm9kZV9zdGFuZGJ5LT5zbG90KCdhY3RpdmVzbG90JyktPnsnYWN0aXZlX3BpZCd9KQorCXsK KwkJdXNsZWVwKDEwMF8wMDApOworCQlwcmludCAid2FpdGluZyBmb3Igc2xvdCB0byBiZWNv bWUgYWN0aXZlXG4iOworCX0KKwlyZXR1cm4gJHNsb3RfdXNlcl9oYW5kbGU7Cit9CisKKyMg Q2hlY2sgaWYgYWxsIHRoZSBzbG90cyBvbiBzdGFuZGJ5IGFyZSBkcm9wcGVkLiBUaGVzZSBp bmNsdWRlIHRoZSAnYWN0aXZlc2xvdCcKKyMgdGhhdCB3YXMgYWNxdWlyZWQgYnkgbWFrZV9z bG90X2FjdGl2ZSgpLCBhbmQgdGhlIG5vbi1hY3RpdmUgJ2Ryb3BzbG90Jy4KK3N1YiBjaGVj a19zbG90c19kcm9wcGVkCit7CisJbXkgKCRzbG90X3VzZXJfaGFuZGxlKSA9IEBfOworCW15 ICRyZXR1cm47CisKKwlpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdkcm9wc2xvdCcpLT57J3Ns b3RfdHlwZSd9LCAnJywgJ2Ryb3BzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcpOworCWlzKCRu b2RlX3N0YW5kYnktPnNsb3QoJ2FjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUnfSwgJycsICdh Y3RpdmVzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcpOworCisJIyBvdXIgY2xpZW50IHNob3Vs ZCd2ZSB0ZXJtaW5hdGVkIGluIHJlc3BvbnNlIHRvIHRoZSB3YWxzZW5kZXIgZXJyb3IKKwll dmFsIHsKKwkJJHNsb3RfdXNlcl9oYW5kbGUtPmZpbmlzaDsKKwl9OworCSRyZXR1cm4gPSAk PzsKKwljbXBfb2soJHJldHVybiwgIiE9IiwgMCwgInBnX3JlY3Zsb2dpY2FsIGV4aXRlZCBu b24temVyb1xuIik7CisJaWYgKCRyZXR1cm4pIHsKKwkJbGlrZSgkc3RkZXJyLCBxci9jb25m bGljdCB3aXRoIHJlY292ZXJ5LywgJ3JlY3Zsb2dpY2FsIHJlY292ZXJ5IGNvbmZsaWN0Jyk7 CisJCWxpa2UoJHN0ZGVyciwgcXIvbXVzdCBiZSBkcm9wcGVkLywgJ3JlY3Zsb2dpY2FsIGVy cm9yIGRldGFpbCcpOworCX0KKworCXJldHVybiAwOworfQorCisKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBJbml0aWFsaXplIG1hc3RlciBub2RlCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworJG5vZGVfbWFzdGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSwg aGFzX2FyY2hpdmluZyA9PiAxKTsKKyRub2RlX21hc3Rlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlv bl9zbG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAn ZGVidWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9IHZlcmJvc2UKKyMgc2VuZCBzdGF0dXMg cmFwaWRseSBzbyB3ZSBwcm9tcHRseSBhZHZhbmNlIHhtaW4gb24gbWFzdGVyCit3YWxfcmVj ZWl2ZXJfc3RhdHVzX2ludGVydmFsID0gMQorIyB2ZXJ5IHByb21wdGx5IHRlcm1pbmF0ZSBj b25mbGljdGluZyBiYWNrZW5kcworbWF4X3N0YW5kYnlfc3RyZWFtaW5nX2RlbGF5ID0gJzJz JworfSk7Ciskbm9kZV9tYXN0ZXItPmR1bXBfaW5mbzsKKyRub2RlX21hc3Rlci0+c3RhcnQ7 CisKKyRub2RlX21hc3Rlci0+cHNxbCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0 ZXN0ZGJdKTsKKworJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NFTEVD VCAqIEZST00gcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRtYXN0ZXJf c2xvdG5hbWUnKTtdKTsKK215ICRiYWNrdXBfbmFtZSA9ICdiMSc7Ciskbm9kZV9tYXN0ZXIt PmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJ bml0aWFsaXplIHNsYXZlIG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2Rl X3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5vZGVfbWFzdGVyLCAkYmFja3VwX25h bWUsCisJaGFzX3N0cmVhbWluZyA9PiAxLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7Ciskbm9k ZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcVtwcmltYXJ5 X3Nsb3RfbmFtZSA9ICckbWFzdGVyX3Nsb3RuYW1lJ10pOworJG5vZGVfc3RhbmRieS0+c3Rh cnQ7Ciskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3Jl cGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25m bGljdDogRHJvcCBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cwor IyBTY2VuYXJpbyAxIDogaG90X3N0YW5kYnlfZmVlZGJhY2sgb2ZmCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjcmVhdGVfbG9naWNh bF9zbG90cygpOworCisjIE9uZSB3YXkgdG8gcmVwcm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0 IGlzIHRvIHJ1biBWQUNVVU0gRlVMTCB3aXRoCisjIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1 cm5lZCBvZmYgb24gc2xhdmUuCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvZmYKK10pOworJG5vZGVf c3RhbmRieS0+cmVzdGFydDsKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIG9mZiBi eSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24gbWFz dGVyLiBCb3RoIHNob3VsZCBiZSBOVUxMIHNpbmNlIGhzX2ZlZWRiYWNrIGlzIG9mZgord2Fp dF9mb3JfeG1pbnMoJG5vZGVfbWFzdGVyLCAkbWFzdGVyX3Nsb3RuYW1lLAorCQkJICAgInht aW4gSVMgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworJGhhbmRsZSA9IG1h a2Vfc2xvdF9hY3RpdmUoKTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGlj dAorJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0gRlVMTCcpOwor Ciskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxh eScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworY2hlY2tfc2xvdHNfZHJvcHBl ZCgkaGFuZGxlKTsKKworY2hlY2tfY29uZmxfbG9naWNhbHNsb3QoKTsKKworIyBUdXJuIGhv dF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCitdKTsK KyRub2RlX3N0YW5kYnktPnJlc3RhcnQ7CisKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRi YWNrIHNlbnQgYnkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194 bWluIG9uIG1hc3Rlci4gV2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBzaG91 bGQgYWR2YW5jZSwKKyMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5V TEwgc2luY2UgdGhlcmUgaXMgbm8gbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1pbnMoJG5v ZGVfbWFzdGVyLCAkbWFzdGVyX3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMgTk9UIE5VTEwg QU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBEcm9w IGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlv IDIgOiBpbmNvcnJlY3Qgd2FsX2xldmVsIGF0IG1hc3RlcgorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3JlYXRlX2xvZ2ljYWxfc2xv dHMoKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoKTsKKworIyBNYWtlIG1hc3Rl ciB3YWxfbGV2ZWwgcmVwbGljYS4gVGhpcyB3aWxsIHRyaWdnZXIgc2xvdCBjb25mbGljdC4K KyRub2RlX21hc3Rlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9s ZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9tYXN0ZXItPnJlc3RhcnQ7CisKKyRub2Rl X21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5v ZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCitjaGVja19zbG90c19kcm9wcGVkKCRoYW5k bGUpOworCitjaGVja19jb25mbF9sb2dpY2Fsc2xvdCgpOworCisjIFJlc3RvcmUgbWFzdGVy IHdhbF9sZXZlbAorJG5vZGVfbWFzdGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JyxxWword2FsX2xldmVsID0gJ2xvZ2ljYWwnCitdKTsKKyRub2RlX21hc3Rlci0+cmVzdGFy dDsKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVw bGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCisKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERST1AgREFUQUJBU0Ug c2hvdWxkIGRyb3BzIGl0J3Mgc2xvdHMsIGluY2x1ZGluZyBhY3RpdmUgc2xvdHMuCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjcmVh dGVfbG9naWNhbF9zbG90cygpOworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoKTsKKyMg Q3JlYXRlIGEgc2xvdCBvbiBhIGRhdGFiYXNlIHRoYXQgd291bGQgbm90IGJlIGRyb3BwZWQu IFRoaXMgc2xvdCBzaG91bGQgbm90CisjIGdldCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+ Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX21hc3RlciwgJ290aGVyc2xv dCcsICdwb3N0Z3JlcycpOworCisjIGRyb3BkYiBvbiB0aGUgbWFzdGVyIHRvIHZlcmlmeSBz bG90cyBhcmUgZHJvcHBlZCBvbiBzdGFuZGJ5Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxW0RST1AgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX21hc3Rlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfbWFzdGVy LT5sc24oJ2ZsdXNoJykpOworCitpcygkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwlxW1NFTEVDVCBFWElTVFMoU0VMRUNUIDEgRlJPTSBwZ19kYXRhYmFzZSBXSEVS RSBkYXRuYW1lID0gJ3Rlc3RkYicpXSksICdmJywKKwknZGF0YWJhc2UgZHJvcHBlZCBvbiBz dGFuZGJ5Jyk7CisKK2NoZWNrX3Nsb3RzX2Ryb3BwZWQoJGhhbmRsZSk7CisKK2lzKCRub2Rl X3N0YW5kYnktPnNsb3QoJ290aGVyc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcs CisJJ290aGVyc2xvdCBvbiBzdGFuZGJ5IG5vdCBkcm9wcGVkJyk7CisKKyMgQ2xlYW51cCA6 IG1hbnVhbGx5IGRyb3AgdGhlIHNsb3QgdGhhdCB3YXMgbm90IGRyb3BwZWQuCiskbm9kZV9z dGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25f c2xvdCgnb3RoZXJzbG90JyldKTsKLS0gCjIuMTguNAoK --------------0BFA3292287791DB224037C5 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v17-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v17-0003-Allow-logical-decoding-on-standby.patch" RnJvbSA3MDgzYjRlY2YzZjFlZjE0MzQwZDg0OGFkMzgwNGFjOGI5OTk1ZGFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCA4IEFwciAyMDIxIDA5OjI4OjE3ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTcgMy81XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuIENvbmZsaWN0aW5nIHNsb3RzCndvdWxk IGJlIGhhbmRsZWQgaW4gbmV4dCBjb21taXRzLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChp biBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QK UmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBI YWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8IDMzICsrKysrKysrKystCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgfCAyMiArKysrKysrLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgICAgIHwgMzcgKysr KysrLS0tLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAg ICAgIHwgNTYgKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdGZ1bmNzLmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlcmZ1bmNzLmMgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwgMTYgKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nl c3MveGxvZy5oICAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogMTMgZmlsZXMgY2hhbmdl ZCwgMTIyIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQogIDE3LjYlIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtLwogIDM0LjQlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvCiAgNDIuMyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDUuNiUgc3JjLwoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBiZWE4YWRjYzBmLi5jN2YyZjlk ZWY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC01MDgwLDYgKzUwODAs MTcgQEAgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCkKIAlSZWFkQ29udHJv bEZpbGUoKTsKIH0KIAorLyoKKyAqIEdldCB0aGUgd2FsX2xldmVsIGZyb20gdGhlIGNvbnRy b2wgZmlsZS4gRm9yIGEgc3RhbmRieSwgdGhpcyB2YWx1ZSBzaG91bGQgYmUKKyAqIGNvbnNp ZGVyZWQgYXMgaXRzIGFjdGl2ZSB3YWxfbGV2ZWwsIGJlY2F1c2UgaXQgbWF5IGJlIGRpZmZl cmVudCBmcm9tIHdoYXQKKyAqIHdhcyBvcmlnaW5hbGx5IGNvbmZpZ3VyZWQgb24gc3RhbmRi eS4KKyAqLworV2FsTGV2ZWwKK0dldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KHZvaWQpCit7 CisJcmV0dXJuIENvbnRyb2xGaWxlLT53YWxfbGV2ZWw7Cit9CisKIC8qCiAgKiBJbml0aWFs aXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5IGZvciBYTE9HCiAgKi8KQEAgLTk1OTksNyArOTYx MCw3IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJICogd2hpY2hldmVyIGlz IGxhdGVyLgogCSAqLwogCXJlY2VpdmVQdHIgPSBHZXRXYWxSY3ZGbHVzaFJlY1B0cihOVUxM LCBOVUxMKTsKLQlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkp OworCXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSwgZmFsc2Up OwogCWVuZHB0ciA9IChyZWNlaXZlUHRyIDwgcmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6IHJl Y2VpdmVQdHI7CiAJS2VlcExvZ1NlZyhlbmRwdHIsICZfbG9nU2VnTm8pOwogCUludmFsaWRh dGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoX2xvZ1NlZ05vKTsKQEAgLTExNzEyLDcgKzEx NzIzLDcgQEAgcmVnaXN0ZXJfcGVyc2lzdGVudF9hYm9ydF9iYWNrdXBfaGFuZGxlcih2b2lk KQogICogRXhwb3J0ZWQgdG8gYWxsb3cgV0FMUmVjZWl2ZXIgdG8gcmVhZCB0aGUgcG9pbnRl ciBkaXJlY3RseS4KICAqLwogWExvZ1JlY1B0cgotR2V0WExvZ1JlcGxheVJlY1B0cihUaW1l TGluZUlEICpyZXBsYXlUTEkpCitHZXRYTG9nUmVwbGF5UmVjUHRyKFRpbWVMaW5lSUQgKnJl cGxheVRMSSwgYm9vbCBhdm9pZF9oZWFkZXIpCiB7CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAJ VGltZUxpbmVJRAl0bGk7CkBAIC0xMTcyNCw2ICsxMTczNSwyNCBAQCBHZXRYTG9nUmVwbGF5 UmVjUHRyKFRpbWVMaW5lSUQgKnJlcGxheVRMSSkKIAogCWlmIChyZXBsYXlUTEkpCiAJCSpy ZXBsYXlUTEkgPSB0bGk7CisKKwkvKgorCSAqIFJlcGxheSBwb2ludGVyIG1heSBwb2ludCBv bmUgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNvcmQuIElmIHRoYXQKKwkgKiBpcyBhIFhMT0cg cGFnZSBib3VuZGFyeSwgaXQgd2lsbCBub3QgYmUgYSB2YWxpZCBMU04gZm9yIHRoZQorCSAq IHN0YXJ0IG9mIGEgcmVjb3JkLCBzbyBidW1wIGl0IHVwIHBhc3QgdGhlIHBhZ2UgaGVhZGVy LgorCSAqLworCWlmIChhdm9pZF9oZWFkZXIgJiYgIVhSZWNPZmZJc1ZhbGlkKHJlY3B0cikp CisJeworCQlpZiAocmVjcHRyICUgWExPR19CTENLU1ogIT0gMCkKKwkJCWVsb2coRVJST1Is ICJpbnZhbGlkIHJlcGxheSBwb2ludGVyIik7CisKKwkJLyogRm9yIHRoZSBmaXJzdCBwYWdl IG9mIGEgc2VnbWVudCBmaWxlLCBpdCdzIGEgbG9uZyBoZWFkZXIgKi8KKwkJaWYgKFhMb2dT ZWdtZW50T2Zmc2V0KHJlY3B0ciwgd2FsX3NlZ21lbnRfc2l6ZSkgPT0gMCkKKwkJCXJlY3B0 ciArPSBTaXplT2ZYTG9nTG9uZ1BIRDsKKwkJZWxzZQorCQkJcmVjcHRyICs9IFNpemVPZlhM b2dTaG9ydFBIRDsKKwl9CisKIAlyZXR1cm4gcmVjcHRyOwogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCmluZGV4IGYzNjNhNGM2MzkuLjBhOTNkNjkyNGQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCkBAIC00MTcsNyAr NDE3LDcgQEAgcGdfbGFzdF93YWxfcmVwbGF5X2xzbihQR19GVU5DVElPTl9BUkdTKQogewog CVhMb2dSZWNQdHIJcmVjcHRyOwogCi0JcmVjcHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihO VUxMKTsKKwlyZWNwdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAog CWlmIChyZWNwdHIgPT0gMCkKIAkJUEdfUkVUVVJOX05VTEwoKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggZDE3ZDY2MGY0Ni4uODEwODhiYWFlMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTg1MCw3ICs4 NTAsNyBAQCByZWFkX2xvY2FsX3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBY TG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsCiAJCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkp CiAJCQlyZWFkX3VwdG8gPSBHZXRGbHVzaFJlY1B0cigpOwogCQllbHNlCi0JCQlyZWFkX3Vw dG8gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCk7CisJCQlyZWFkX3Vw dG8gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCwgZmFsc2UpOwogCQl0 bGkgPSBUaGlzVGltZUxpbmVJRDsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hl Y2twb2ludGVyLmMKaW5kZXggZTdlNmEyYTQ1OS4uODhhYjlmZDAzYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC00MzcsNyArNDM3LDcgQEAgQ2hlY2tw b2ludGVyTWFpbih2b2lkKQogCQkJICovCiAJCQlja3B0X2FjdGl2ZSA9IHRydWU7CiAJCQlp ZiAoZG9fcmVzdGFydHBvaW50KQotCQkJCWNrcHRfc3RhcnRfcmVjcHRyID0gR2V0WExvZ1Jl cGxheVJlY1B0cihOVUxMKTsKKwkJCQlja3B0X3N0YXJ0X3JlY3B0ciA9IEdldFhMb2dSZXBs YXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCQkJZWxzZQogCQkJCWNrcHRfc3RhcnRfcmVjcHRy ID0gR2V0SW5zZXJ0UmVjUHRyKCk7CiAJCQlja3B0X3N0YXJ0X3RpbWUgPSBub3c7CkBAIC04 MDEsNyArODAxLDcgQEAgSXNDaGVja3BvaW50T25TY2hlZHVsZShkb3VibGUgcHJvZ3Jlc3Mp CiAJICogdmFsdWUgdGhhdCB3YXMgaW4gZWZmZWN0IHdoZW4gdGhlIFdBTCB3YXMgZ2VuZXJh dGVkKS4KIAkgKi8KIAlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCi0JCXJlY3B0ciA9IEdl dFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCXJlY3B0ciA9IEdldFhMb2dSZXBsYXlSZWNQ dHIoTlVMTCwgZmFsc2UpOwogCWVsc2UKIAkJcmVjcHRyID0gR2V0SW5zZXJ0UmVjUHRyKCk7 CiAJZWxhcHNlZF94bG9ncyA9ICgoKGRvdWJsZSkgKHJlY3B0ciAtIGNrcHRfc3RhcnRfcmVj cHRyKSkgLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5k ZXggOWFhYjcxMzY4NC4uMGQxODJhYzIxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCkBAIC0yMTUsMTEgKzIxNSwzMSBAQCBEZWNvZGVYTG9nT3Ao TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCiAJ CQkgKiBjYW4gcmVzdGFydCBmcm9tIHRoZXJlLgogCQkJICovCiAJCQlicmVhazsKKwkJY2Fz ZSBYTE9HX1BBUkFNRVRFUl9DSEFOR0U6CisJCXsKKwkJCXhsX3BhcmFtZXRlcl9jaGFuZ2Ug KnhscmVjID0KKwkJCQkoeGxfcGFyYW1ldGVyX2NoYW5nZSAqKSBYTG9nUmVjR2V0RGF0YShi dWYtPnJlY29yZCk7CisKKwkJCS8qCisJCQkgKiBJZiB3YWxfbGV2ZWwgb24gcHJpbWFyeSBp cyByZWR1Y2VkIHRvIGxlc3MgdGhhbiBsb2dpY2FsLCB0aGVuIHdlCisJCQkgKiB3YW50IHRv IHByZXZlbnQgZXhpc3RpbmcgbG9naWNhbCBzbG90cyBmcm9tIGJlaW5nIHVzZWQuCisJCQkg KiBFeGlzdGluZyBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkgZ2V0IGRyb3BwZWQgd2hlbiB0 aGlzIFdBTAorCQkJICogcmVjb3JkIGlzIHJlcGxheWVkOyBhbmQgZnVydGhlciwgc2xvdCBj cmVhdGlvbiBmYWlscyB3aGVuIHRoZQorCQkJICogd2FsIGxldmVsIGlzIG5vdCBzdWZmaWNp ZW50OyBidXQgYWxsIHRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vdAorCQkJICogc3luY2hyb25p emVkLCBzbyBhIGxvZ2ljYWwgc2xvdCBtYXkgY3JlZXAgaW4gd2hpbGUgdGhlIHdhbF9sZXZl bAorCQkJICogaXMgYmVpbmcgcmVkdWNlZC4gSGVuY2UgdGhpcyBleHRyYSBjaGVjay4KKwkJ CSAqLworCQkJaWYgKHhscmVjLT53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lO X1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5n IG9uIHN0YW5kYnkgcmVxdWlyZXMgIgorCQkJCQkJCQkid2FsX2xldmVsID49IGxvZ2ljYWwg b24gbWFzdGVyIikpKTsKKwkJCWJyZWFrOworCQl9CiAJCWNhc2UgWExPR19OT09QOgogCQlj YXNlIFhMT0dfTkVYVE9JRDoKIAkJY2FzZSBYTE9HX1NXSVRDSDoKIAkJY2FzZSBYTE9HX0JB Q0tVUF9FTkQ6Ci0JCWNhc2UgWExPR19QQVJBTUVURVJfQ0hBTkdFOgogCQljYXNlIFhMT0df UkVTVE9SRV9QT0lOVDoKIAkJY2FzZSBYTE9HX0ZQV19DSEFOR0U6CiAJCWNhc2UgWExPR19G UElfRk9SX0hJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNh bC5jCmluZGV4IDJmNjgwMzYzN2IuLjJkZDUwNzQyZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC0xMTksMjMgKzExOSwyMiBAQCBDaGVj a0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cyh2b2lkKQogCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImxv Z2ljYWwgZGVjb2RpbmcgcmVxdWlyZXMgYSBkYXRhYmFzZSBjb25uZWN0aW9uIikpKTsKIAot CS8qIC0tLS0KLQkgKiBUT0RPOiBXZSBnb3QgdG8gY2hhbmdlIHRoYXQgc29tZWRheSBzb29u Li4uCi0JICoKLQkgKiBUaGVyZSdzIGJhc2ljYWxseSB0aHJlZSB0aGluZ3MgbWlzc2luZyB0 byBhbGxvdyB0aGlzOgotCSAqIDEpIFdlIG5lZWQgdG8gYmUgYWJsZSB0byBjb3JyZWN0bHkg YW5kIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHRpbWVsaW5lIGEKLQkgKgkgIExTTiBiZWxvbmdz IHRvCi0JICogMikgV2UgbmVlZCB0byBmb3JjZSBob3Rfc3RhbmRieV9mZWVkYmFjayB0byBi ZSBlbmFibGVkIGF0IGFsbCB0aW1lcyBzbwotCSAqCSAgdGhlIHByaW1hcnkgY2Fubm90IHJl bW92ZSByb3dzIHdlIG5lZWQuCi0JICogMykgc3VwcG9ydCBkcm9wcGluZyByZXBsaWNhdGlv biBzbG90cyByZWZlcnJpbmcgdG8gYSBkYXRhYmFzZSwgaW4KLQkgKgkgIGRiYXNlX3JlZG8u IFRoZXJlIGNhbid0IGJlIGFueSBhY3RpdmUgb25lcyBkdWUgdG8gSFMgcmVjb3ZlcnkKLQkg KgkgIGNvbmZsaWN0cywgc28gdGhhdCBzaG91bGQgYmUgcmVsYXRpdmVseSBlYXN5LgotCSAq IC0tLS0KLQkgKi8KIAlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJ CSBlcnJtc2coImxvZ2ljYWwgZGVjb2RpbmcgY2Fubm90IGJlIHVzZWQgd2hpbGUgaW4gcmVj b3ZlcnkiKSkpOworCXsKKwkJLyoKKwkJICogVGhpcyBjaGVjayBtYXkgaGF2ZSByYWNlIGNv bmRpdGlvbnMsIGJ1dCB3aGVuZXZlcgorCQkgKiBYTE9HX1BBUkFNRVRFUl9DSEFOR0UgaW5k aWNhdGVzIHRoYXQgd2FsX2xldmVsIGhhcyBjaGFuZ2VkLCB3ZQorCQkgKiB2ZXJpZnkgdGhh dCB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90cy4gQW5k IHRvCisJCSAqIGF2b2lkIHJhY2VzIGFyb3VuZCBjcmVhdGluZyBhIG5ldyBzbG90LAorCQkg KiBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpIGlzIGNhbGxlZCBvbmNlIGJl Zm9yZSBjcmVhdGluZworCQkgKiB0aGUgc2xvdCwgYW5kIG9uY2Ugd2hlbiBsb2dpY2FsIGRl Y29kaW5nIGlzIGluaXRpYWxseSBzdGFydGluZyB1cC4KKwkJICovCisJCWlmIChHZXRBY3Rp dmVXYWxMZXZlbE9uU3RhbmRieSgpIDwgV0FMX0xFVkVMX0xPR0lDQUwpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5 IHJlcXVpcmVzICIKKwkJCQkJCQkid2FsX2xldmVsID49IGxvZ2ljYWwgb24gbWFzdGVyIikp KTsKKwl9CiB9CiAKIC8qCkBAIC0zMzAsNiArMzI5LDEyIEBAIENyZWF0ZUluaXREZWNvZGlu Z0NvbnRleHQoY29uc3QgY2hhciAqcGx1Z2luLAogCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jb250ZXh0OwogCisJLyoKKwkgKiBPbiBzdGFu ZGJ5LCB0aGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHNs b3QuIENoZWNrCisJICogdGhlIGNvbW1lbnRzIGluIHRoaXMgZnVuY3Rpb24uCisJICovCisJ Q2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKTsKKwogCS8qIHNob3J0ZXIgbGlu ZXMuLi4gKi8KIAlzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCmluZGV4IDAxZDM1NDgy OWIuLjk4Nzg2MTBjMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMjIzLDcgKzIyMyw3IEBAIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZp cm0sIGJvb2wgYmluCiAJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJZW5kX29mX3dh bCA9IEdldEZsdXNoUmVjUHRyKCk7CiAJZWxzZQotCQllbmRfb2Zfd2FsID0gR2V0WExvZ1Jl cGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQpOworCQllbmRfb2Zfd2FsID0gR2V0WExvZ1Jl cGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQsIGZhbHNlKTsKIAogCSh2b2lkKSBSZXBsaWNh dGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKm5hbWUpLCBTQUJfRXJyb3IpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMKaW5kZXggOTU3NDk5OTYyOC4uMTM0YTA0Zjk2ZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Nsb3QuYwpAQCAtMTE3MiwzNyArMTE3MiwyOCBAQCBSZXBsaWNhdGlvblNs b3RSZXNlcnZlV2FsKHZvaWQpCiAJCS8qCiAJCSAqIEZvciBsb2dpY2FsIHNsb3RzIGxvZyBh IHN0YW5kYnkgc25hcHNob3QgYW5kIHN0YXJ0IGxvZ2ljYWwgZGVjb2RpbmcKIAkJICogYXQg ZXhhY3RseSB0aGF0IHBvc2l0aW9uLiBUaGF0IGFsbG93cyB0aGUgc2xvdCB0byBzdGFydCB1 cCBtb3JlCi0JCSAqIHF1aWNrbHkuCisJCSAqIHF1aWNrbHkuIEJ1dCBvbiBhIHN0YW5kYnkg d2UgY2Fubm90IGRvIFdBTCB3cml0ZXMsIHNvIGp1c3QgdXNlIHRoZQorCQkgKiByZXBsYXkg cG9pbnRlcjsgZWZmZWN0aXZlbHksIGFuIGF0dGVtcHQgdG8gY3JlYXRlIGEgbG9naWNhbCBz bG90IG9uCisJCSAqIHN0YW5kYnkgd2lsbCBjYXVzZSBpdCB0byB3YWl0IGZvciBhbiB4bF9y dW5uaW5nX3hhY3QgcmVjb3JkIHRvIGJlCisJCSAqIGxvZ2dlZCBpbmRlcGVuZGVudGx5IG9u IHRoZSBwcmltYXJ5LCBzbyB0aGF0IGEgc25hcHNob3QgY2FuIGJlIGJ1aWx0CisJCSAqIHVz aW5nIHRoZSByZWNvcmQuCiAJCSAqCi0JCSAqIFRoYXQncyBub3QgbmVlZGVkIChvciBpbmRl ZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzIHRoZXknbGwKLQkJICogc3RhcnQg cmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZCBy ZXR1cm4KLQkJICogdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0 aGF0IHNsaWdodGx5IGluY3JlYXNlcwotCQkgKiB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0 byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwIGhhcyB0bwotCQkgKiBzdGFydCBy ZXBsYXkgYXQuCisJCSAqIE5vbmUgb2YgdGhpcyBpcyBuZWVkZWQgKG9yIGluZGVlZCBoZWxw ZnVsKSBmb3IgcGh5c2ljYWwgc2xvdHMgYXMKKwkJICogdGhleSdsbCBzdGFydCByZXBsYXkg YXQgdGhlIGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkCisJCSAqIHJl dHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQgc2xp Z2h0bHkKKwkJICogaW5jcmVhc2VzIHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJldHJ5 LCBpdCdzIHdoZXJlIGEgYmFzZSBiYWNrdXAKKwkJICogaGFzIHRvIHN0YXJ0IHJlcGxheSBh dC4KIAkJICovCi0JCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgU2xvdElzTG9naWNh bChzbG90KSkKLQkJewotCQkJWExvZ1JlY1B0cglmbHVzaHB0cjsKLQotCQkJLyogc3RhcnQg YXQgY3VycmVudCBpbnNlcnQgcG9zaXRpb24gKi8KKwkJaWYgKFNsb3RJc1BoeXNpY2FsKHNs b3QpKQorCQkJcmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRyKCk7CisJCWVsc2UgaWYgKFJl Y292ZXJ5SW5Qcm9ncmVzcygpKQorCQkJcmVzdGFydF9sc24gPSBHZXRYTG9nUmVwbGF5UmVj UHRyKE5VTEwsIHRydWUpOworCQllbHNlCiAJCQlyZXN0YXJ0X2xzbiA9IEdldFhMb2dJbnNl cnRSZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwotCQkJc2xv dC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3BpbkxvY2tSZWxlYXNl KCZzbG90LT5tdXRleCk7Ci0KLQkJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBpbmZv cm1hdGlvbiB0byBzdGFydCAqLwotCQkJZmx1c2hwdHIgPSBMb2dTdGFuZGJ5U25hcHNob3Qo KTsKIAotCQkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8gZGlzayAqLwotCQkJ WExvZ0ZsdXNoKGZsdXNocHRyKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXJlc3RhcnRfbHNu ID0gR2V0UmVkb1JlY1B0cigpOwotCQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7 Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247Ci0JCQlTcGluTG9j a1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQkJfQorCQlTcGluTG9ja0FjcXVpcmUoJnNsb3Qt Pm11dGV4KTsKKwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOworCQlT cGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAogCQkvKiBwcmV2ZW50IFdBTCByZW1v dmFsIGFzIGZhc3QgYXMgcG9zc2libGUgKi8KIAkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVS ZXF1aXJlZExTTigpOwpAQCAtMTIxOCw2ICsxMjA5LDE3IEBAIFJlcGxpY2F0aW9uU2xvdFJl c2VydmVXYWwodm9pZCkKIAkJaWYgKFhMb2dHZXRMYXN0UmVtb3ZlZFNlZ25vKCkgPCBzZWdu bykKIAkJCWJyZWFrOwogCX0KKworCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgU2xv dElzTG9naWNhbChzbG90KSkKKwl7CisJCVhMb2dSZWNQdHIJZmx1c2hwdHI7CisKKwkJLyog bWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0YXJ0ICovCisJCWZs dXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7CisKKwkJLyogYW5kIG1ha2Ugc3VyZSBp dCdzIGZzeW5jZWQgdG8gZGlzayAqLworCQlYTG9nRmx1c2goZmx1c2hwdHIpOworCX0KIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKaW5kZXggZDlkMzY4Nzll ZC4uZDZiZDQzYzIxNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKQEAg LTYzNiw3ICs2MzYsNyBAQCBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoUEdfRlVOQ1RJ T05fQVJHUykKIAlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQltb3ZldG8gPSBNaW4o bW92ZXRvLCBHZXRGbHVzaFJlY1B0cigpKTsKIAllbHNlCi0JCW1vdmV0byA9IE1pbihtb3Zl dG8sIEdldFhMb2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlEKSk7CisJCW1vdmV0byA9 IE1pbihtb3ZldG8sIEdldFhMb2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlELCBmYWxz ZSkpOwogCiAJLyogQWNxdWlyZSB0aGUgc2xvdCBzbyB3ZSAib3duIiBpdCAqLwogCSh2b2lk KSBSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgU0FCX0Vycm9y KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IDlhMGUzODA2 ZmMuLjE3ZjA0ZDM2OGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIu YwpAQCAtNDAyLDcgKzQwMiw3IEBAIFdhbFJlY2VpdmVyTWFpbih2b2lkKQogCQkJZmlyc3Rf c3RyZWFtID0gZmFsc2U7CiAKIAkJCS8qIEluaXRpYWxpemUgTG9nc3RyZWFtUmVzdWx0IGFu ZCBidWZmZXJzIGZvciBwcm9jZXNzaW5nIG1lc3NhZ2VzICovCi0JCQlMb2dzdHJlYW1SZXN1 bHQuV3JpdGUgPSBMb2dzdHJlYW1SZXN1bHQuRmx1c2ggPSBHZXRYTG9nUmVwbGF5UmVjUHRy KE5VTEwpOworCQkJTG9nc3RyZWFtUmVzdWx0LldyaXRlID0gTG9nc3RyZWFtUmVzdWx0LkZs dXNoID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMLCBmYWxzZSk7CiAJCQlpbml0U3RyaW5n SW5mbygmcmVwbHlfbWVzc2FnZSk7CiAJCQlpbml0U3RyaW5nSW5mbygmaW5jb21pbmdfbWVz c2FnZSk7CiAKQEAgLTEwNjgsNyArMTA2OCw3IEBAIFhMb2dXYWxSY3ZTZW5kUmVwbHkoYm9v bCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpCiAJLyogQ29uc3RydWN0IGEgbmV3IG1lc3Nh Z2UgKi8KIAl3cml0ZVB0ciA9IExvZ3N0cmVhbVJlc3VsdC5Xcml0ZTsKIAlmbHVzaFB0ciA9 IExvZ3N0cmVhbVJlc3VsdC5GbHVzaDsKLQlhcHBseVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQ dHIoTlVMTCk7CisJYXBwbHlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNl KTsKIAogCXJlc2V0U3RyaW5nSW5mbygmcmVwbHlfbWVzc2FnZSk7CiAJcHFfc2VuZGJ5dGUo JnJlcGx5X21lc3NhZ2UsICdyJyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxy ZWNlaXZlcmZ1bmNzLmMKaW5kZXggNmYwYWNiZmRlZi4uZjI2NGI3MWY3MyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwpAQCAtMzcyLDcgKzM3 Miw3IEBAIEdldFJlcGxpY2F0aW9uQXBwbHlEZWxheSh2b2lkKQogCXJlY2VpdmVQdHIgPSB3 YWxyY3YtPmZsdXNoZWRVcHRvOwogCVNwaW5Mb2NrUmVsZWFzZSgmd2FscmN2LT5tdXRleCk7 CiAKLQlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCXJlcGxheVB0 ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCiAJaWYgKHJlY2VpdmVQ dHIgPT0gcmVwbGF5UHRyKQogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKaW5kZXggNGJmOGExOGUwMS4uODIzNzQzYWZhOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTEzODIsNyArMTM4Miw3IEBAIFdhbFNuZFdhaXRG b3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJ UmVjZW50Rmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cigpOwogCWVsc2UKLQkJUmVjZW50Rmx1 c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQlSZWNlbnRGbHVzaFB0ciA9 IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCiAJZm9yICg7OykKIAl7CkBA IC0xNDE2LDcgKzE0MTYsNyBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQog CQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQkJUmVjZW50Rmx1c2hQdHIgPSBHZXRG bHVzaFJlY1B0cigpOwogCQllbHNlCi0JCQlSZWNlbnRGbHVzaFB0ciA9IEdldFhMb2dSZXBs YXlSZWNQdHIoTlVMTCk7CisJCQlSZWNlbnRGbHVzaFB0ciA9IEdldFhMb2dSZXBsYXlSZWNQ dHIoTlVMTCwgZmFsc2UpOwogCiAJCS8qCiAJCSAqIElmIHBvc3RtYXN0ZXIgYXNrZWQgdXMg dG8gc3RvcCwgZG9uJ3Qgd2FpdCBhbnltb3JlLgpAQCAtMjg2NSwxMCArMjg2NSwxMiBAQCBY TG9nU2VuZExvZ2ljYWwodm9pZCkKIAkgKiBJZiBmaXJzdCB0aW1lIHRocm91Z2ggaW4gdGhp cyBzZXNzaW9uLCBpbml0aWFsaXplIGZsdXNoUHRyLiAgT3RoZXJ3aXNlLAogCSAqIHdlIG9u bHkgbmVlZCB0byB1cGRhdGUgZmx1c2hQdHIgaWYgRW5kUmVjUHRyIGlzIHBhc3QgaXQuCiAJ ICovCi0JaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVjUHRyKQotCQlmbHVzaFB0ciA9 IEdldEZsdXNoUmVjUHRyKCk7Ci0JZWxzZSBpZiAobG9naWNhbF9kZWNvZGluZ19jdHgtPnJl YWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVj UHRyKCk7CisJaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVjUHRyIHx8CisJCWxvZ2lj YWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKKwl7CisJ CWZsdXNoUHRyID0gKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIgPworCQkJCQlHZXRTdGFuZGJ5 Rmx1c2hSZWNQdHIoKSA6IEdldEZsdXNoUmVjUHRyKCkpOworCX0KIAogCS8qIElmIEVuZFJl Y1B0ciBpcyBzdGlsbCBwYXN0IG91ciBmbHVzaFB0ciwgaXQgbWVhbnMgd2UgY2F1Z2h0IHVw LiAqLwogCWlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIgPj0g Zmx1c2hQdHIpCkBAIC0yOTU3LDcgKzI5NTksNyBAQCBHZXRTdGFuZGJ5Rmx1c2hSZWNQdHIo dm9pZCkKIAkgKi8KIAogCXJlY2VpdmVQdHIgPSBHZXRXYWxSY3ZGbHVzaFJlY1B0cihOVUxM LCAmcmVjZWl2ZVRMSSk7Ci0JcmVwbGF5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cigmcmVw bGF5VExJKTsKKwlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEks IGZhbHNlKTsKIAogCVRoaXNUaW1lTGluZUlEID0gcmVwbGF5VExJOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cu aAppbmRleCA3NzE4N2MxMmJlLi5jN2ZiNTIyNDBlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTMx Niw3ICszMTYsNyBAQCBleHRlcm4gYm9vbCBIb3RTdGFuZGJ5QWN0aXZlKHZvaWQpOwogZXh0 ZXJuIGJvb2wgSG90U3RhbmRieUFjdGl2ZUluUmVwbGF5KHZvaWQpOwogZXh0ZXJuIGJvb2wg WExvZ0luc2VydEFsbG93ZWQodm9pZCk7CiBleHRlcm4gdm9pZCBHZXRYTG9nUmVjZWlwdFRp bWUoVGltZXN0YW1wVHogKnJ0aW1lLCBib29sICpmcm9tU3RyZWFtKTsKLWV4dGVybiBYTG9n UmVjUHRyIEdldFhMb2dSZXBsYXlSZWNQdHIoVGltZUxpbmVJRCAqcmVwbGF5VExJKTsKK2V4 dGVybiBYTG9nUmVjUHRyIEdldFhMb2dSZXBsYXlSZWNQdHIoVGltZUxpbmVJRCAqcmVwbGF5 VExJLCBib29sIGF2b2lkX2hlYWRlcik7CiBleHRlcm4gWExvZ1JlY1B0ciBHZXRYTG9nSW5z ZXJ0UmVjUHRyKHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgR2V0WExvZ1dyaXRlUmVjUHRy KHZvaWQpOwogZXh0ZXJuIFJlY292ZXJ5UGF1c2VTdGF0ZSBHZXRSZWNvdmVyeVBhdXNlU3Rh dGUodm9pZCk7CkBAIC0zMzMsNiArMzMzLDcgQEAgZXh0ZXJuIFNpemUgWExPR1NobWVtU2l6 ZSh2b2lkKTsKIGV4dGVybiB2b2lkIFhMT0dTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9p ZCBCb290U3RyYXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZvaWQgTG9jYWxQcm9jZXNzQ29udHJv bEZpbGUoYm9vbCByZXNldCk7CitleHRlcm4gV2FsTGV2ZWwgR2V0QWN0aXZlV2FsTGV2ZWxP blN0YW5kYnkodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwWExPRyh2b2lkKTsKIGV4dGVy biB2b2lkIFNodXRkb3duWExPRyhpbnQgY29kZSwgRGF0dW0gYXJnKTsKIGV4dGVybiB2b2lk IEluaXRYTE9HQWNjZXNzKHZvaWQpOwotLSAKMi4xOC40Cgo= --------------0BFA3292287791DB224037C5 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v17-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v17-0002-Handle-logical-slot-conflicts-on-standby.patch" RnJvbSBmOWQ3ODc1MWJjMjdkNTk3N2FkZjQ5OThkZmZiYTE1ZTE2NzkzYjdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCA4IEFwciAyMDIxIDA5OjIxOjU0ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTcgMi81XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmRyb3Agc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGluZyBpZiB3 YWxfbGV2ZWwgb24gbWFzdGVyCmlzIHJlZHVjZWQgdG8gYmVsb3cgbG9naWNhbCBhbmQgdGhl cmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3RhbmRieS4gSW50cm9kdWNlIGEg bmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QKY29uZmxpY3QgcmVjb3Zlcnku IEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZ2V0X2FjdGl2aXR5IGZpZWxkOgpjb25mbF9s b2dpY2Fsc2xvdC4KCkF1dGhvcjogQW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIgdmVyc2lv biksIEFtaXQgS2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0 cmFuZCBEcm91dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUg Um95ZXMgTWVsbG8KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAg fCAgMTAgKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgIHwgICAzICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNz L3NwZ2lzdC9zcGd4bG9nLmMgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYyAgICB8ICAxNCArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsIHwgICAzICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jICAgICAgfCAg MjggKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgIHwgMTk0ICsr KysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y2FycmF5LmMgIHwgICA0ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwu YyB8ICAgMyArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgfCAgMTEg Ky0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICB8ICAyMiArKysKIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICB8ICAxNiArKysKIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9wZ3N0 YXQuaCAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Nsb3QuaCAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwu aCAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggICAgICAgIHwg ICA0ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgfCAgIDMgKy0K IDIxIGZpbGVzIGNoYW5nZWQsIDMyMiBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkK ICAgNC4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC8KICAgNS41JSBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS8KICAgNS4zJSBzcmMvYmFja2VuZC9hY2Nlc3MvCiAgIDcuNSUgc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci8KICA0OS4zJSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8K ICAgNS44JSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy8KICAgNy4zJSBzcmMvYmFja2VuZC90 Y29wLwogICAzLjclIHNyYy9iYWNrZW5kLwogICA3LjYlIHNyYy9pbmNsdWRlLwoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sCmluZGV4IDUyOTU4YjRmZDkuLjIwYmMxYThlZDEgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbApAQCAtNDAwMSw2ICs0MDAxLDE2IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZl bnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9l dmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPmNvbmZsX2xvZ2ljYWxzbG90PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHF1 ZXJpZXMgaW4gdGhpcyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbiBjYW5jZWxlZCBkdWUgdG8K KyAgICAgICBsb2dpY2FsIHNsb3RzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggNDZhZWU2ZjJhOS4uNTk2M2U2MzlkOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTUsNyArMTk1LDggQEAgZ2lz dFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExvZ1Jl Y0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKIAotCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVzdFJlbW92ZWRY aWQsIHJub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxk YXRhLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ1Rh YmxlLCBybm9kZSk7CiAJfQogCiAJaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVkbyhyZWNvcmQs IDAsICZidWZmZXIpID09IEJMS19ORUVEU19SRURPKQpAQCAtMzk1LDYgKzM5Niw3IEBAIGdp c3RSZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJCQkgICB4bHJl Yy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9kZSk7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggYWYzNWE5OTFmYy4uZjkx ZDRjMzZlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDIs NyArMTAwMiw4IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCVJlbEZpbGVOb2RlIHJub2RlOwogCiAJCVhMb2dSZWNHZXRCbG9ja1Rh ZyhyZWNvcmQsIDAsICZybm9kZSwgTlVMTCwgTlVMTCk7Ci0JCVJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOwor CQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVzdFJl bW92ZWRYaWQsCisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsK IAl9CiAKIAlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQs IDAsIFJCTV9OT1JNQUwsIHRydWUsICZidWZmZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYwppbmRleCA5YzVkOTIwZDJjLi5hMjg0NmM1NWYxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwpAQCAtODQ2NSw3ICs4NDY1LDggQEAgaGVhcF94bG9nX3BydW5lKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqIG5vIHF1ZXJpZXMgcnVubmluZyBmb3Igd2hpY2gg dGhlIHJlbW92ZWQgdHVwbGVzIGFyZSBzdGlsbCB2aXNpYmxlLgogCSAqLwogCWlmIChJbkhv dFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVj LT5sYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bHJl Yy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAogCS8qCiAJICogSWYgd2UgaGF2ZSBhIGZ1 bGwtcGFnZSBpbWFnZSwgcmVzdG9yZSBpdCAodXNpbmcgYSBjbGVhbnVwIGxvY2spIGFuZApA QCAtODYzMyw3ICs4NjM0LDkgQEAgaGVhcF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJICogcmF0aGVyIHRoYW4ga2lsbGluZyB0aGUgdHJhbnNhY3Rpb24gb3V0 cmlnaHQuCiAJICovCiAJaWYgKEluSG90U3RhbmRieSkKLQkJUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPmN1dG9mZl94aWQsIHJub2RlKTsKKwkJUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPmN1dG9mZl94aWQsCisJCQkJ CQkJCQkJCXhscmVjLT5vbkNhdGFsb2dUYWJsZSwKKwkJCQkJCQkJCQkJcm5vZGUpOwogCiAJ LyoKIAkgKiBSZWFkIHRoZSBoZWFwIHBhZ2UsIGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhl IGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgpAQCAtODc3MCw3ICs4NzczLDggQEAgaGVhcF94 bG9nX2ZyZWV6ZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlUcmFuc2FjdGlv bklkUmV0cmVhdChsYXRlc3RSZW1vdmVkWGlkKTsKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWco cmVjb3JkLCAwLCAmcm5vZGUsIE5VTEwsIE5VTEwpOwotCQlSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJCVJlc29sdmVS ZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KGxhdGVzdFJlbW92ZWRYaWQsCisJCQkJCQkJ CQkJCXhscmVjLT5vbkNhdGFsb2dUYWJsZSwgcm5vZGUpOwogCX0KIAogCWlmIChYTG9nUmVh ZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAwLCAmYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKaW5kZXggMTc3OWI2YmE0Ny4uMzZl ZTMxMzQyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKQEAgLTY2OSw3 ICs2NjksOCBAQCBidHJlZV94bG9nX2RlbGV0ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcm5vZGUsIE5VTEwsIE5VTEwp OwogCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRl c3RSZW1vdmVkWGlkLCBybm9kZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bHJlYy0+b25D YXRhbG9nVGFibGUsIHJub2RlKTsKIAl9CiAKIAkvKgpAQCAtMTAwNyw2ICsxMDA4LDcgQEAg YnRyZWVfeGxvZ19yZXVzZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJaWYg KEluSG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RG dWxsWGlkKHhscmVjLT5sYXRlc3RSZW1vdmVkRnVsbFhpZCwKKwkJCQkJCQkJCQkJCSAgIHhs cmVjLT5vbkNhdGFsb2dUYWJsZSwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5ub2RlKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCAzZGZkMmFhMzE3Li5h ZGQ0ZGE0ZTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwpAQCAtODgx LDYgKzg4MSw3IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAogCQkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJm5vZGUsIE5VTEws IE5VTEwpOwogCQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRh LT5uZXdlc3RSZWRpcmVjdFhpZCwKKwkJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nVGFi bGUsCiAJCQkJCQkJCQkJCQlub2RlKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYwppbmRleCBjMWQ0NDE1YTQzLi5iZWE4YWRjYzBmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jCkBAIC0xMDM1OCw2ICsxMDM1OCwyMCBAQCB4bG9nX3JlZG8oWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFVwZGF0ZSBvdXIgY29weSBvZiB0aGUgcGFy YW1ldGVycyBpbiBwZ19jb250cm9sICovCiAJCW1lbWNweSgmeGxyZWMsIFhMb2dSZWNHZXRE YXRhKHJlY29yZCksIHNpemVvZih4bF9wYXJhbWV0ZXJfY2hhbmdlKSk7CiAKKwkJLyoKKwkJ ICogRHJvcCBsb2dpY2FsIHNsb3RzIGlmIHdlIGFyZSBpbiBob3Qgc3RhbmRieSBhbmQgdGhl IHByaW1hcnkgZG9lcyBub3QKKwkJICogaGF2ZSBhIFdBTCBsZXZlbCBzdWZmaWNpZW50IGZv ciBsb2dpY2FsIGRlY29kaW5nLiBObyBuZWVkIHRvIHNlYXJjaAorCQkgKiBmb3IgcG90ZW50 aWFsbHkgY29uZmxpY3RpbmcgbG9naWNhbGx5IHNsb3RzIGlmIHN0YW5kYnkgaXMgcnVubmlu ZworCQkgKiB3aXRoIHdhbF9sZXZlbCBsb3dlciB0aGFuIGxvZ2ljYWwsIGJlY2F1c2UgaW4g dGhhdCBjYXNlLCB3ZSB3b3VsZAorCQkgKiBoYXZlIGVpdGhlciBkaXNhbGxvd2VkIGNyZWF0 aW9uIG9mIGxvZ2ljYWwgc2xvdHMgb3IgZHJvcHBlZCBleGlzdGluZworCQkgKiBvbmVzLgor CQkgKi8KKwkJaWYgKEluUmVjb3ZlcnkgJiYgSW5Ib3RTdGFuZGJ5ICYmCisJCQl4bHJlYy53 YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCAmJgorCQkJd2FsX2xldmVsID49IFdBTF9M RVZFTF9MT0dJQ0FMKQorCQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9naWNhbFNs b3RzKEludmFsaWRPaWQsIEludmFsaWRUcmFuc2FjdGlvbklkLAorCQkJCWdldHRleHRfbm9v cCgiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCA+PSBs b2dpY2FsIG9uIG1hc3Rlci4iKSk7CisKIAkJTFdMb2NrQWNxdWlyZShDb250cm9sRmlsZUxv Y2ssIExXX0VYQ0xVU0lWRSk7CiAJCUNvbnRyb2xGaWxlLT5NYXhDb25uZWN0aW9ucyA9IHhs cmVjLk1heENvbm5lY3Rpb25zOwogCQlDb250cm9sRmlsZS0+bWF4X3dvcmtlcl9wcm9jZXNz ZXMgPSB4bHJlYy5tYXhfd29ya2VyX3Byb2Nlc3NlczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbAppbmRleCBhNDdlMTAyZjM2Li5kMDQzMjMwZmNhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMDE2LDcgKzEwMTYsOCBAQCBDUkVB VEUgVklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBBUwogICAgICAgICAgICAgcGdf c3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9pZCkgQVMgY29uZmxfbG9jaywKICAgICAg ICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KEQub2lkKSBBUyBjb25m bF9zbmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZl cnBpbihELm9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgICAgICAgICAgcGdfc3RhdF9n ZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMgY29uZmxfZGVhZGxv Y2sKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxv Y2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRf ZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQpIEFTIGNvbmZsX2xvZ2ljYWxzbG90CiAg ICAgRlJPTSBwZ19kYXRhYmFzZSBEOwogCiBDUkVBVEUgVklFVyBwZ19zdGF0X3VzZXJfZnVu Y3Rpb25zIEFTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYwppbmRleCA5NTgxODNkZDY5Li4z OTE0OGM5ZWQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5j CisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKQEAgLTE4MjksMTQgKzE4 MjksMjYgQEAgcGdzdGF0X3JlcG9ydF9yZXBsc2xvdChjb25zdCBjaGFyICpzbG90bmFtZSwg UGdTdGF0X0NvdW50ZXIgc3BpbGx0eG5zLAogICogLS0tLS0tLS0tLQogICovCiB2b2lkCi1w Z3N0YXRfcmVwb3J0X3JlcGxzbG90X2Ryb3AoY29uc3QgY2hhciAqc2xvdG5hbWUpCitwZ3N0 YXRfcmVwb3J0X3JlcGxzbG90X2Ryb3AoY29uc3QgY2hhciAqc2xvdG5hbWUsIE9pZCBkYk9p ZCwgUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiB7Ci0JUGdTdGF0X01zZ1JlcGxTbG90IG1z ZzsKKwlpZiAocmVhc29uID09IFBST0NTSUdfTk9fU0lHTkFMKQorCXsKKwkJUGdTdGF0X01z Z1JlcGxTbG90IG1zZzsKIAotCXBnc3RhdF9zZXRoZWFkZXIoJm1zZy5tX2hkciwgUEdTVEFU X01UWVBFX1JFUExTTE9UKTsKLQlzdHJsY3B5KG1zZy5tX3Nsb3RuYW1lLCBzbG90bmFtZSwg TkFNRURBVEFMRU4pOwotCW1zZy5tX2Ryb3AgPSB0cnVlOwotCXBnc3RhdF9zZW5kKCZtc2cs IHNpemVvZihQZ1N0YXRfTXNnUmVwbFNsb3QpKTsKKwkJcGdzdGF0X3NldGhlYWRlcigmbXNn Lm1faGRyLCBQR1NUQVRfTVRZUEVfUkVQTFNMT1QpOworCQlzdHJsY3B5KG1zZy5tX3Nsb3Ru YW1lLCBzbG90bmFtZSwgTkFNRURBVEFMRU4pOworCQltc2cubV9kcm9wID0gdHJ1ZTsKKwkJ cGdzdGF0X3NlbmQoJm1zZywgc2l6ZW9mKFBnU3RhdF9Nc2dSZXBsU2xvdCkpOworCX0KKwll bHNlCisJeworCQlQZ1N0YXRfTXNnUmVjb3ZlcnlDb25mbGljdCBtc2c7CisKKwkJcGdzdGF0 X3NldGhlYWRlcigmbXNnLm1faGRyLCBQR1NUQVRfTVRZUEVfUkVDT1ZFUllDT05GTElDVCk7 CisJCW1zZy5tX2RhdGFiYXNlaWQgPSBkYk9pZDsKKwkJbXNnLm1fcmVhc29uID0gcmVhc29u OworCQlwZ3N0YXRfc2VuZCgmbXNnLCBzaXplb2YobXNnKSk7CisJfQogfQogCiAvKiAtLS0t LS0tLS0tCkBAIC0zNDY0LDYgKzM0NzYsNyBAQCByZXNldF9kYmVudHJ5X2NvdW50ZXJzKFBn U3RhdF9TdGF0REJFbnRyeSAqZGJlbnRyeSkKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X3RhYmxl c3BhY2UgPSAwOwogCWRiZW50cnktPm5fY29uZmxpY3RfbG9jayA9IDA7CiAJZGJlbnRyeS0+ bl9jb25mbGljdF9zbmFwc2hvdCA9IDA7CisJZGJlbnRyeS0+bl9jb25mbGljdF9sb2dpY2Fs c2xvdCA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9idWZmZXJwaW4gPSAwOwogCWRiZW50 cnktPm5fY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayA9IDA7CiAJZGJlbnRyeS0+bl90ZW1w X2ZpbGVzID0gMDsKQEAgLTUzODAsNiArNTM5Myw5IEBAIHBnc3RhdF9yZWN2X3JlY292ZXJ5 Y29uZmxpY3QoUGdTdGF0X01zZ1JlY292ZXJ5Q29uZmxpY3QgKm1zZywgaW50IGxlbikKIAkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZGJlbnRyeS0+ bl9jb25mbGljdF9zbmFwc2hvdCsrOwogCQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCWRiZW50cnktPm5fY29uZmxpY3RfbG9n aWNhbHNsb3QrKzsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfQlVGRkVSUElOOgogCQkJZGJlbnRyeS0+bl9jb25mbGljdF9idWZmZXJwaW4rKzsKIAkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDc1YTA4N2MyZjkuLjk1NzQ5 OTk2MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTQ2LDYgKzQ2LDcgQEAKICNp bmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTEwMiw3ICsxMDMsOCBAQCBpbnQJCQlt YXhfcmVwbGljYXRpb25fc2xvdHMgPSAwOwkvKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVw bGljYXRpb24KIHN0YXRpYyBpbnQgUmVwbGljYXRpb25TbG90QWNxdWlyZUludGVybmFsKFJl cGxpY2F0aW9uU2xvdCAqc2xvdCwKIAkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsIFNs b3RBY3F1aXJlQmVoYXZpb3IgYmVoYXZpb3IpOwogc3RhdGljIHZvaWQgUmVwbGljYXRpb25T bG90RHJvcEFjcXVpcmVkKHZvaWQpOwotc3RhdGljIHZvaWQgUmVwbGljYXRpb25TbG90RHJv cFB0cihSZXBsaWNhdGlvblNsb3QgKnNsb3QpOworc3RhdGljIHZvaWQgUmVwbGljYXRpb25T bG90RHJvcFB0cihSZXBsaWNhdGlvblNsb3QgKnNsb3QsIFByb2NTaWduYWxSZWFzb24gcmVh c29uKTsKK3N0YXRpYyB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3BDb25mbGljdGluZyhSZXBs aWNhdGlvblNsb3QgKnNsb3QpOwogCiAvKiBpbnRlcm5hbCBwZXJzaXN0ZW5jeSBmdW5jdGlv bnMgKi8KIHN0YXRpYyB2b2lkIFJlc3RvcmVTbG90RnJvbURpc2soY29uc3QgY2hhciAqbmFt ZSk7CkBAIC01NjcsNyArNTY5LDcgQEAgcmVzdGFydDoKIAkJCVNwaW5Mb2NrUmVsZWFzZSgm cy0+bXV0ZXgpOwogCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9j ayk7CS8qIGF2b2lkIGRlYWRsb2NrICovCiAKLQkJCVJlcGxpY2F0aW9uU2xvdERyb3BQdHIo cyk7CisJCQlSZXBsaWNhdGlvblNsb3REcm9wUHRyKHMsIFBST0NTSUdfTk9fU0lHTkFMKTsK IAogCQkJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoJnMtPmFjdGl2ZV9jdik7CiAJCQln b3RvIHJlc3RhcnQ7CkBAIC02MDUsNyArNjA3LDcgQEAgUmVwbGljYXRpb25TbG90RHJvcEFj cXVpcmVkKHZvaWQpCiAJLyogc2xvdCBpc24ndCBhY3F1aXJlZCBhbnltb3JlICovCiAJTXlS ZXBsaWNhdGlvblNsb3QgPSBOVUxMOwogCi0JUmVwbGljYXRpb25TbG90RHJvcFB0cihzbG90 KTsKKwlSZXBsaWNhdGlvblNsb3REcm9wUHRyKHNsb3QsIFBST0NTSUdfTk9fU0lHTkFMKTsK IH0KIAogLyoKQEAgLTYxMyw3ICs2MTUsNyBAQCBSZXBsaWNhdGlvblNsb3REcm9wQWNxdWly ZWQodm9pZCkKICAqIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4KICAqLwogc3RhdGljIHZvaWQK LVJlcGxpY2F0aW9uU2xvdERyb3BQdHIoUmVwbGljYXRpb25TbG90ICpzbG90KQorUmVwbGlj YXRpb25TbG90RHJvcFB0cihSZXBsaWNhdGlvblNsb3QgKnNsb3QsIFByb2NTaWduYWxSZWFz b24gcmVhc29uKQogewogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAljaGFyCQl0bXBwYXRo W01BWFBHUEFUSF07CkBAIC03MTAsNyArNzEyLDcgQEAgUmVwbGljYXRpb25TbG90RHJvcFB0 cihSZXBsaWNhdGlvblNsb3QgKnNsb3QpCiAJICogY3JlYXRlIHRoZSBzdGF0aXN0aWNzIGZv ciB0aGUgcmVwbGljYXRpb24gc2xvdC4KIAkgKi8KIAlpZiAoU2xvdElzTG9naWNhbChzbG90 KSkKLQkJcGdzdGF0X3JlcG9ydF9yZXBsc2xvdF9kcm9wKE5hbWVTdHIoc2xvdC0+ZGF0YS5u YW1lKSk7CisJCXBnc3RhdF9yZXBvcnRfcmVwbHNsb3RfZHJvcChOYW1lU3RyKHNsb3QtPmRh dGEubmFtZSksIHNsb3QtPmRhdGEuZGF0YWJhc2UsIHJlYXNvbik7CiAKIAkvKgogCSAqIFdl IHJlbGVhc2UgdGhpcyBhdCB0aGUgdmVyeSBlbmQsIHNvIHRoYXQgbm9ib2R5IHN0YXJ0cyB0 cnlpbmcgdG8gY3JlYXRlCkBAIC03MTksNiArNzIxLDcxIEBAIFJlcGxpY2F0aW9uU2xvdERy b3BQdHIoUmVwbGljYXRpb25TbG90ICpzbG90KQogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRp b25TbG90QWxsb2NhdGlvbkxvY2spOwogfQogCisvKgorICogUGVybWFuZW50bHkgZHJvcCBh IGNvbmZsaWN0aW5nIHJlcGxpY2F0aW9uIHNsb3QuIElmIGl0J3MgYWxyZWFkeSBhY3RpdmUg YnkKKyAqIGFub3RoZXIgYmFja2VuZCwgc2VuZCBpdCBhIHJlY292ZXJ5IGNvbmZsaWN0IHNp Z25hbCwgYW5kIHRoZW4gdHJ5IGFnYWluLgorICovCitzdGF0aWMgdm9pZAorUmVwbGljYXRp b25TbG90RHJvcENvbmZsaWN0aW5nKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCkKK3sKKwlwaWRf dAkJYWN0aXZlX3BpZDsKKwlQR1BST0MJICAgKnByb2M7CisJVmlydHVhbFRyYW5zYWN0aW9u SWQJdnhpZDsKKwlib29sIGluaXRpYWxseV9ub3RfYWN0aXZlOworCisJQ29uZGl0aW9uVmFy aWFibGVQcmVwYXJlVG9TbGVlcCgmc2xvdC0+YWN0aXZlX2N2KTsKKwlpbml0aWFsbHlfbm90 X2FjdGl2ZSA9IHRydWU7CisJd2hpbGUgKDEpCisJeworCQlTcGluTG9ja0FjcXVpcmUoJnNs b3QtPm11dGV4KTsKKwkJYWN0aXZlX3BpZCA9IHNsb3QtPmFjdGl2ZV9waWQ7CisJCWlmIChh Y3RpdmVfcGlkID09IDApCisJCQlhY3RpdmVfcGlkID0gc2xvdC0+YWN0aXZlX3BpZCA9IE15 UHJvY1BpZDsKKwkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CisKKwkJLyogRHJv cCB0aGUgYWNxdWlyZWQgc2xvdCwgdW5sZXNzIGl0IGlzIGFjcXVpcmVkIGJ5IGFub3RoZXIg YmFja2VuZCAqLworCQlpZiAoYWN0aXZlX3BpZCA9PSBNeVByb2NQaWQpCisJCXsKKwkJCWVs b2coREVCVUcxLCAiYWNxdWlyZWQgY29uZmxpY3Rpbmcgc2xvdCwgbm93IGRyb3BwaW5nIGl0 Iik7CisJCQlpZiAoaW5pdGlhbGx5X25vdF9hY3RpdmUpCisJCQkJUmVwbGljYXRpb25TbG90 RHJvcFB0cihzbG90LCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UKTsK KwkJCWVsc2UKKwkJCQlSZXBsaWNhdGlvblNsb3REcm9wUHRyKHNsb3QsIFBST0NTSUdfTk9f U0lHTkFMKTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogc2xvdCB3YXMgYWN0aXZlICovCisJ CWluaXRpYWxseV9ub3RfYWN0aXZlID0gZmFsc2U7CisKKwkJLyogU2VuZCB0aGUgb3RoZXIg YmFja2VuZCwgYSBjb25mbGljdCByZWNvdmVyeSBzaWduYWwgKi8KKwkJU2V0SW52YWxpZFZp cnR1YWxUcmFuc2FjdGlvbklkKHZ4aWQpOworCQlMV0xvY2tBY3F1aXJlKFByb2NBcnJheUxv Y2ssIExXX1NIQVJFRCk7CisJCXByb2MgPSBCYWNrZW5kUGlkR2V0UHJvY1dpdGhMb2NrKGFj dGl2ZV9waWQpOworCQlpZiAocHJvYykKKwkJCUdFVF9WWElEX0ZST01fUEdQUk9DKHZ4aWQs ICpwcm9jKTsKKwkJTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlMb2NrKTsKKworCQkvKgorCQkg KiBJZiBjb2luY2lkZW50bHkgdGhhdCBwcm9jZXNzIGZpbmlzaGVkLCBzb21lIG90aGVyIGJh Y2tlbmQgbWF5CisJCSAqIGFjcXVpcmUgdGhlIHNsb3QgYWdhaW4uIFNvIHN0YXJ0IG92ZXIg YWdhaW4uCisJCSAqIE5vdGU6IEV2ZW4gaWYgdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgaXMg aW52YWxpZCwgd2UgbmVlZCB0byBjYW5jZWwKKwkJICogdGhhdCBiYWNrZW5kLCBiZWNhdXNl IHRoZXJlIGlzIG5vIG90aGVyIHdheSB0byBtYWtlIGl0IHJlbGVhc2UgdGhlCisJCSAqIHNs b3QuIFNvIGRvbid0IGJvdGhlciB0byB2YWxpZGF0ZSB2eGlkLmxvY2FsVHJhbnNhY3Rpb25J ZC4KKwkJICovCisJCWlmICh2eGlkLmJhY2tlbmRJZCA9PSBJbnZhbGlkQmFja2VuZElkKQor CQkJY29udGludWU7CisKKwkJZWxvZyhERUJVRzEsICJjYW5jZWxsaW5nIHBpZCAlZCAoYmFj a2VuZElkOiAlZCkgZm9yIHJlbGVhc2luZyBzbG90IiwKKwkJCQkJIGFjdGl2ZV9waWQsIHZ4 aWQuYmFja2VuZElkKTsKKworCQlDYW5jZWxWaXJ0dWFsVHJhbnNhY3Rpb24odnhpZCwgUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisJCUNvbmRpdGlvblZhcmlh YmxlU2xlZXAoJnNsb3QtPmFjdGl2ZV9jdiwKKwkJCQkJCQkgICBXQUlUX0VWRU5UX1JFUExJ Q0FUSU9OX1NMT1RfRFJPUCk7CisJfQorCisJQ29uZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVl cCgpOworfQorCiAvKgogICogU2VyaWFsaXplIHRoZSBjdXJyZW50bHkgYWNxdWlyZWQgc2xv dCdzIHN0YXRlIGZyb20gbWVtb3J5IHRvIGRpc2ssIHRoZXJlYnkKICAqIGd1YXJhbnRlZWlu ZyB0aGUgY3VycmVudCBzdGF0ZSB3aWxsIHN1cnZpdmUgYSBjcmFzaC4KQEAgLTExNTMsNiAr MTIyMCwxMjMgQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2ZVdhbCh2b2lkKQogCX0KIH0KIAor LyoKKyAqIFJlc29sdmUgcmVjb3ZlcnkgY29uZmxpY3RzIHdpdGggbG9naWNhbCBzbG90cy4K KyAqCisgKiBXaGVuIHhpZCBpcyB2YWxpZCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgYWJvdXQg dG8gcmVtb3ZlIHJvd3Mgb2xkZXIgdGhhbiB4aWQuCisgKiBUaGVyZWZvcmUgd2UgbmVlZCB0 byBkcm9wIHNsb3RzIHRoYXQgZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICogV2hl biB4aWQgaXMgaW52YWxpZCwgZHJvcCBhbGwgbG9naWNhbCBzbG90cy4gVGhpcyBpcyByZXF1 aXJlZCB3aGVuIHRoZQorICogbWFzdGVyIHdhbF9sZXZlbCBpcyBzZXQgYmFjayB0byByZXBs aWNhLCBzbyBleGlzdGluZyBsb2dpY2FsIHNsb3RzIG5lZWQgdG8KKyAqIGJlIGRyb3BwZWQu IEFsc28sIHdoZW4geGlkIGlzIGludmFsaWQsIGEgY29tbW9uICdjb25mbGljdF9yZWFzb24n IGlzCisgKiBwcm92aWRlZCBmb3IgdGhlIGVycm9yIGRldGFpbDsgb3RoZXJ3aXNlIGl0IGlz IE5VTEwsIGluIHdoaWNoIGNhc2UgaXQgaXMKKyAqIGNvbnN0cnVjdGVkIG91dCBvZiB0aGUg eGlkIHZhbHVlLgorICovCit2b2lkCitSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dp Y2FsU2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkJCQljaGFy ICpjb25mbGljdF9yZWFzb24pCit7CisJaW50CQkJaTsKKwlib29sCQlmb3VuZF9jb25mbGlj dCA9IGZhbHNlOworCisJQXNzZXJ0KG1heF9yZXBsaWNhdGlvbl9zbG90cyA+PSAwKTsKKwor CWlmIChtYXhfcmVwbGljYXRpb25fc2xvdHMgPT0gMCkKKwkJcmV0dXJuOworCityZXN0YXJ0 OgorCWlmIChmb3VuZF9jb25mbGljdCkKKwl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisJCWZvdW5kX2NvbmZsaWN0ID0gZmFsc2U7CisJfQorCisJTFdMb2NrQWNxdWlyZShSZXBs aWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKTsKKwlmb3IgKGkgPSAwOyBpIDwg bWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCisJeworCQlSZXBsaWNhdGlvblNsb3QgKnM7 CisKKwkJcyA9ICZSZXBsaWNhdGlvblNsb3RDdGwtPnJlcGxpY2F0aW9uX3Nsb3RzW2ldOwor CisJCS8qIGNhbm5vdCBjaGFuZ2Ugd2hpbGUgUmVwbGljYXRpb25TbG90Q3RsTG9jayBpcyBo ZWxkICovCisJCWlmICghcy0+aW5fdXNlKQorCQkJY29udGludWU7CisKKwkJLyogV2UgYXJl IG9ubHkgZGVhbGluZyB3aXRoICpsb2dpY2FsKiBzbG90IGNvbmZsaWN0cy4gKi8KKwkJaWYg KCFTbG90SXNMb2dpY2FsKHMpKQorCQkJY29udGludWU7CisKKwkJLyogSW52YWxpZCB4aWQg bWVhbnMgY2FsbGVyIGlzIGFza2luZyB0byBkcm9wIGFsbCBsb2dpY2FsIHNsb3RzICovCisJ CWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJCWZvdW5kX2NvbmZsaWN0ID0g dHJ1ZTsKKwkJZWxzZQorCQl7CisJCQlUcmFuc2FjdGlvbklkIHNsb3RfeG1pbjsKKwkJCVRy YW5zYWN0aW9uSWQgc2xvdF9jYXRhbG9nX3htaW47CisJCQlTdHJpbmdJbmZvRGF0YQljb25m bGljdF9zdHIsIGNvbmZsaWN0X3htaW5zOworCQkJY2hhcgkgICAqY29uZmxpY3Rfc2VudGVu Y2UgPQorCQkJCWdldHRleHRfbm9vcCgiU2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6 b24gd2hpY2ggd2FzIGJlaW5nIGluY3JlYXNlZCB0byIpOworCisJCQkvKiBub3Qgb3VyIGRh dGFiYXNlLCBza2lwICovCisJCQlpZiAocy0+ZGF0YS5kYXRhYmFzZSAhPSBJbnZhbGlkT2lk ICYmIHMtPmRhdGEuZGF0YWJhc2UgIT0gZGJvaWQpCisJCQkJY29udGludWU7CisKKwkJCVNw aW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOworCQkJc2xvdF94bWluID0gcy0+ZGF0YS54bWlu OworCQkJc2xvdF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNhdGFsb2dfeG1pbjsKKwkJCVNw aW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOworCisJCQkvKgorCQkJICogQnVpbGQgdGhlIGNv bmZsaWN0X3N0ciB3aGljaCB3aWxsIGxvb2sgbGlrZSA6CisJCQkgKiAiU2xvdCBjb25mbGlj dGVkIHdpdGggeGlkIGhvcml6b24gd2hpY2ggd2FzIGJlaW5nIGluY3JlYXNlZAorCQkJICog dG8gOTAxMiAoc2xvdCB4bWluOiAxMjM0LCBzbG90IGNhdGFsb2dfeG1pbjogNTY3OCkuIgor CQkJICovCisJCQlpbml0U3RyaW5nSW5mbygmY29uZmxpY3RfeG1pbnMpOworCQkJaWYgKFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfeG1pbikgJiYKKwkJCQlUcmFuc2FjdGlvbklkUHJl Y2VkZXNPckVxdWFscyhzbG90X3htaW4sIHhpZCkpCisJCQl7CisJCQkJYXBwZW5kU3RyaW5n SW5mbygmY29uZmxpY3RfeG1pbnMsICJzbG90IHhtaW46ICVkIiwgc2xvdF94bWluKTsKKwkJ CX0KKwkJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X2NhdGFsb2dfeG1pbikgJiYK KwkJCQlUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X2NhdGFsb2dfeG1pbiwg eGlkKSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZjb25mbGljdF94bWlucywgIiVzc2xvdCBj YXRhbG9nX3htaW46ICVkIiwKKwkJCQkJCQkJIGNvbmZsaWN0X3htaW5zLmxlbiA+IDAgPyAi LCAiIDogIiIsCisJCQkJCQkJCSBzbG90X2NhdGFsb2dfeG1pbik7CisKKwkJCWlmIChjb25m bGljdF94bWlucy5sZW4gPiAwKQorCQkJeworCQkJCWluaXRTdHJpbmdJbmZvKCZjb25mbGlj dF9zdHIpOworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmNvbmZsaWN0X3N0ciwgIiVzICVkICgl cykuIiwKKwkJCQkJCQkJIGNvbmZsaWN0X3NlbnRlbmNlLCB4aWQsIGNvbmZsaWN0X3htaW5z LmRhdGEpOworCQkJCWZvdW5kX2NvbmZsaWN0ID0gdHJ1ZTsKKwkJCQljb25mbGljdF9yZWFz b24gPSBjb25mbGljdF9zdHIuZGF0YTsKKwkJCX0KKwkJfQorCisJCWlmIChmb3VuZF9jb25m bGljdCkKKwkJeworCQkJTmFtZURhdGEJc2xvdG5hbWU7CisKKwkJCVNwaW5Mb2NrQWNxdWly ZSgmcy0+bXV0ZXgpOworCQkJc2xvdG5hbWUgPSBzLT5kYXRhLm5hbWU7CisJCQlTcGluTG9j a1JlbGVhc2UoJnMtPm11dGV4KTsKKworCQkJLyogUmVwbGljYXRpb25TbG90RHJvcENvbmZs aWN0aW5nKCkgd2lsbCBhY3F1aXJlIHRoZSBsb2NrIGJlbG93ICovCisJCQlMV0xvY2tSZWxl YXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKworCQkJUmVwbGljYXRpb25TbG90 RHJvcENvbmZsaWN0aW5nKHMpOworCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygi ZHJvcHBlZCBjb25mbGljdGluZyBzbG90ICVzIiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJ CQkgZXJyZGV0YWlsKCIlcyIsIGNvbmZsaWN0X3JlYXNvbikpKTsKKworCQkJLyogV2UgcmVs ZWFzZWQgdGhlIGxvY2sgYWJvdmU7IHNvIHJlLXNjYW4gdGhlIHNsb3RzLiAqLworCQkJZ290 byByZXN0YXJ0OworCQl9CisJfQorCisJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RD b250cm9sTG9jayk7Cit9CisKIC8qCiAgKiBNYXJrIGFueSBzbG90IHRoYXQgcG9pbnRzIHRv IGFuIExTTiBvbGRlciB0aGFuIHRoZSBnaXZlbiBzZWdtZW50CiAgKiBhcyBpbnZhbGlkOyBp dCByZXF1aXJlcyBXQUwgdGhhdCdzIGFib3V0IHRvIGJlIHJlbW92ZWQuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IGJmNzc2Mjg2ZGUuLjQ3OGZjNGI3N2IgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC0zMzc3LDYgKzMzNzcsMTAg QEAgU2lnbmFsVmlydHVhbFRyYW5zYWN0aW9uKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQs IFByb2NTaWduYWxSZWFzb24gc2lnbW9kZSwKIAogCQlHRVRfVlhJRF9GUk9NX1BHUFJPQyhw cm9jdnhpZCwgKnByb2MpOwogCisJCS8qCisJCSAqIE5vdGU6IHZ4aWQubG9jYWxUcmFuc2Fj dGlvbklkIGNhbiBiZSBpbnZhbGlkLCB3aGljaCBtZWFucyB0aGUKKwkJICogcmVxdWVzdCBp cyB0byBzaWduYWwgdGhlIHBpZCB0aGF0IGlzIG5vdCBydW5uaW5nIGEgdHJhbnNhY3Rpb24u CisJCSAqLwogCQlpZiAocHJvY3Z4aWQuYmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkICYm CiAJCQlwcm9jdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPT0gdnhpZC5sb2NhbFRyYW5zYWN0 aW9uSWQpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBl YWM2ODk1MTQxLi5hM2ZhNmJkYzAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jCkBAIC02NzMsNiArNjczLDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIo U0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1NOQVBTSE9UKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwo UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCkpCisJCVJlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7 CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RB UlRVUF9ERUFETE9DSykpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jCmluZGV4IDE0NjVlZTQ0YTEuLmQxNTVhMWRlMjAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJhY2Nl c3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBn c3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgpAQCAtNDQwLDcgKzQ0MSw4IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKIH0K IAogdm9pZAotUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rp b25JZCBsYXRlc3RSZW1vdmVkWGlkLCBSZWxGaWxlTm9kZSBub2RlKQorUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlk LAorCQkJCQkJCQkJYm9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSkKIHsK IAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqYmFja2VuZHM7CiAKQEAgLTQ2NSw2ICs0NjcsOSBA QCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIGxh dGVzdFJlbW92ZWRYaWQsIFJlbEZpbGVOb2RlCiAJCQkJCQkJCQkJICAgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJCQkJCQkgICBXQUlUX0VWRU5UX1JFQ09W RVJZX0NPTkZMSUNUX1NOQVBTSE9ULAogCQkJCQkJCQkJCSAgIHRydWUpOworCisJaWYgKG9u Q2F0YWxvZ1RhYmxlKQorCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2FsU2xv dHMobm9kZS5kYk5vZGUsIGxhdGVzdFJlbW92ZWRYaWQsIE5VTEwpOwogfQogCiAvKgpAQCAt NDczLDcgKzQ3OCw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRy YW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwgUmVsRmlsZU5vZGUKICAqLwogdm9pZAog UmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFuc2Fj dGlvbklkIGxhdGVzdFJlbW92ZWRGdWxsWGlkLAotCQkJCQkJCQkJCSAgIFJlbEZpbGVOb2Rl IG5vZGUpCisJCQkJCQkJCQkJICAgYm9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUg bm9kZSkKIHsKIAkvKgogCSAqIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 IG9wZXJhdGVzIG9uIDMyLWJpdCBUcmFuc2FjdGlvbklkcywKQEAgLTQ5MSw3ICs0OTYsNyBA QCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5z YWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZEZ1bGxYaQogCQlUcmFuc2FjdGlvbklkIGxhdGVzdFJl bW92ZWRYaWQ7CiAKIAkJbGF0ZXN0UmVtb3ZlZFhpZCA9IFhpZEZyb21GdWxsVHJhbnNhY3Rp b25JZChsYXRlc3RSZW1vdmVkRnVsbFhpZCk7Ci0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aFNuYXBzaG90KGxhdGVzdFJlbW92ZWRYaWQsIG5vZGUpOworCQlSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLCBvbkNhdGFsb2dUYWJs ZSwgbm9kZSk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggODI1ZmQ1NTEwNy4u ZGM3MGZmNTJjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisr KyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMjQ0OSw2ICsyNDQ5LDkgQEAg ZXJyZGV0YWlsX3JlY292ZXJ5X2NvbmZsaWN0KHZvaWQpCiAJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9TTkFQU0hPVDoKIAkJCWVycmRldGFpbCgiVXNlciBxdWVyeSBtaWdo dCBoYXZlIG5lZWRlZCB0byBzZWUgcm93IHZlcnNpb25zIHRoYXQgbXVzdCBiZSByZW1vdmVk LiIpOwogCQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJ Q0FMU0xPVDoKKwkJCWVycmRldGFpbCgiVXNlciB3YXMgdXNpbmcgdGhlIGxvZ2ljYWwgc2xv dCB0aGF0IG11c3QgYmUgZHJvcHBlZC4iKTsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoKIAkJCWVycmRldGFpbCgiVXNl ciB0cmFuc2FjdGlvbiBjYXVzZWQgYnVmZmVyIGRlYWRsb2NrIHdpdGggcmVjb3ZlcnkuIik7 CiAJCQlicmVhazsKQEAgLTMwMTksNiArMzAyMiwyNSBAQCBSZWNvdmVyeUNvbmZsaWN0SW50 ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCQkJY2FzZSBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0xPQ0s6CiAJCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf VEFCTEVTUEFDRToKIAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hP VDoKKwkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJ CQkvKgorCQkJCSAqIEZvciBjb25mbGljdHMgdGhhdCByZXF1aXJlIGEgbG9naWNhbCBzbG90 IHRvIGJlIGRyb3BwZWQsIHRoZQorCQkJCSAqIHJlcXVpcmVtZW50IGlzIGZvciB0aGUgc2ln bmFsIHJlY2VpdmVyIHRvIHJlbGVhc2UgdGhlIHNsb3QsCisJCQkJICogc28gdGhhdCBpdCBj b3VsZCBiZSBkcm9wcGVkIGJ5IHRoZSBzaWduYWwgc2VuZGVyLiBTbyBmb3IKKwkJCQkgKiBu b3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2FjdGlvbiBzaG91bGQgYmUgYWJvcnRlZCwganVz dAorCQkJCSAqIGxpa2UgZm9yIG90aGVyIHJlY292ZXJ5IGNvbmZsaWN0cy4gQnV0IGlmIGl0 J3Mgd2Fsc2VuZGVyIG9uCisJCQkJICogc3RhbmRieSwgdGhlbiBpdCBoYXMgdG8gYmUga2ls bGVkIHNvIGFzIHRvIHJlbGVhc2UgYW4KKwkJCQkgKiBhY3F1aXJlZCBsb2dpY2FsIHNsb3Qu CisJCQkJICovCisJCQkJaWYgKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIgJiYKKwkJCQkJcmVh c29uID09IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QgJiYKKwkJCQkJ TXlSZXBsaWNhdGlvblNsb3QgJiYgU2xvdElzTG9naWNhbChNeVJlcGxpY2F0aW9uU2xvdCkp CisJCQkJeworCQkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7CisJCQkJCVF1 ZXJ5Q2FuY2VsUGVuZGluZyA9IHRydWU7CisJCQkJCUludGVycnVwdFBlbmRpbmcgPSB0cnVl OworCQkJCQlicmVhazsKKwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIElmIHdlIGFyZW4ndCBp biBhIHRyYW5zYWN0aW9uIGFueSBsb25nZXIgdGhlbiBpZ25vcmUuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IDlmYTRhOTMxNjIuLmRkNzc0ZWYzMDIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0xNDk5LDYgKzE0OTksMjEgQEAg cGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QoUEdfRlVOQ1RJT05fQVJHUykKIAlQ R19SRVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KIAorRGF0dW0KK3BnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X2xvZ2ljYWxzbG90KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJZGJpZCA9 IFBHX0dFVEFSR19PSUQoMCk7CisJaW50NjQJCXJlc3VsdDsKKwlQZ1N0YXRfU3RhdERCRW50 cnkgKmRiZW50cnk7CisKKwlpZiAoKGRiZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9kYmVu dHJ5KGRiaWQpKSA9PSBOVUxMKQorCQlyZXN1bHQgPSAwOworCWVsc2UKKwkJcmVzdWx0ID0g KGludDY0KSAoZGJlbnRyeS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCk7CisKKwlQR19SRVRV Uk5fSU5UNjQocmVzdWx0KTsKK30KKwogRGF0dW0KIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X2J1ZmZlcnBpbihQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMTU0Miw2ICsxNTU3LDcgQEAg cGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYWxsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXJlc3Vs dCA9IChpbnQ2NCkgKGRiZW50cnktPm5fY29uZmxpY3RfdGFibGVzcGFjZSArCiAJCQkJCQkg IGRiZW50cnktPm5fY29uZmxpY3RfbG9jayArCiAJCQkJCQkgIGRiZW50cnktPm5fY29uZmxp Y3Rfc25hcHNob3QgKworCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X2xvZ2ljYWxzbG90 ICsKIAkJCQkJCSAgZGJlbnRyeS0+bl9jb25mbGljdF9idWZmZXJwaW4gKwogCQkJCQkJICBk YmVudHJ5LT5uX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2spOwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAppbmRleCA2ZmVhYWE0NDU5Li4wNDQyZDg3NzgzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKQEAgLTU0MzYsNiArNTQzNiwxMSBAQAogICBwcm9uYW1lID0+ICdw Z19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdCcsIHByb3ZvbGF0aWxlID0+ICdzJywK ICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlw ZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25h cHNob3QnIH0sCit7IG9pZCA9PiAnNDU0NCcsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBy ZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0YWJhc2UgY2F1c2VkIGJ5IGxvZ2ljYWwgcmVwbGlj YXRpb24gc2xvdCcsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xv Z2ljYWxzbG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAncics IHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3Jj ID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCcgfSwKIHsgb2lkID0+ ICczMDY4JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0cyBp biBkYXRhYmFzZSBjYXVzZWQgYnkgc2hhcmVkIGJ1ZmZlciBwaW4nLAogICBwcm9uYW1lID0+ ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4nLCBwcm92b2xhdGlsZSA9PiAn cycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bn c3RhdC5oCmluZGV4IDg5Y2QzMjQ0NTQuLjgwNTI4MmU5YWUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0xOSw2ICsx OSw3IEBACiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL3Jl bGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIiAvKiBmb3IgYmFja3dh cmQgY29tcGF0aWJpbGl0eSAqLworI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgog CiAKIC8qIC0tLS0tLS0tLS0KQEAgLTc0MCw2ICs3NDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQ Z1N0YXRfU3RhdERCRW50cnkKIAlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X3RhYmxlc3Bh Y2U7CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9sb2NrOwogCVBnU3RhdF9Db3VudGVy IG5fY29uZmxpY3Rfc25hcHNob3Q7CisJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9sb2dp Y2Fsc2xvdDsKIAlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X2J1ZmZlcnBpbjsKIAlQZ1N0 YXRfQ291bnRlciBuX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2s7CiAJUGdTdGF0X0NvdW50 ZXIgbl90ZW1wX2ZpbGVzOwpAQCAtMTAwNyw3ICsxMDA5LDcgQEAgZXh0ZXJuIHZvaWQgcGdz dGF0X3JlcG9ydF9yZXBsc2xvdChjb25zdCBjaGFyICpzbG90bmFtZSwgUGdTdGF0X0NvdW50 ZXIgc3BpbGx0eG4KIAkJCQkJCQkJICAgUGdTdGF0X0NvdW50ZXIgc3BpbGxjb3VudCwgUGdT dGF0X0NvdW50ZXIgc3BpbGxieXRlcywKIAkJCQkJCQkJICAgUGdTdGF0X0NvdW50ZXIgc3Ry ZWFtdHhucywgUGdTdGF0X0NvdW50ZXIgc3RyZWFtY291bnQsCiAJCQkJCQkJCSAgIFBnU3Rh dF9Db3VudGVyIHN0cmVhbWJ5dGVzKTsKLWV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfcmVw bHNsb3RfZHJvcChjb25zdCBjaGFyICpzbG90bmFtZSk7CitleHRlcm4gdm9pZCBwZ3N0YXRf cmVwb3J0X3JlcGxzbG90X2Ryb3AoY29uc3QgY2hhciAqc2xvdG5hbWUsIE9pZCBkYk9pZCwg UHJvY1NpZ25hbFJlYXNvbiByZWFzb24pOwogCiBleHRlcm4gdm9pZCBwZ3N0YXRfaW5pdGlh bGl6ZSh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xv dC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IDFhZDVlNmM1MGQu LmI2ZTVmZmZmNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3Qu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKQEAgLTIzMiw0ICsyMzIs NiBAQCBleHRlcm4gdm9pZCBDaGVja1BvaW50UmVwbGljYXRpb25TbG90cyh2b2lkKTsKIAog ZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UmVxdWlyZW1lbnRzKHZvaWQpOwogCitleHRlcm4gdm9p ZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2FsU2xvdHMoT2lkIGRib2lkLCBU cmFuc2FjdGlvbklkIHhpZCwgY2hhciAqcmVhc29uKTsKKwogI2VuZGlmCQkJCQkJCS8qIFNM T1RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCBlZWMxODZiZTJlLi4z YTViNzBhOTY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwu aAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApAQCAtMjksNiArMjks NyBAQAogICovCiB0eXBlZGVmIGVudW0KIHsKKwlQUk9DU0lHX05PX1NJR05BTCwgCQkJLyog dXNlZCB0byBub3QgcmVwb3J0IGFueXRoaW5nIGluIHBnc3RhdCAqLwogCVBST0NTSUdfQ0FU Q0hVUF9JTlRFUlJVUFQsCS8qIHNpbnZhbCBjYXRjaHVwIGludGVycnVwdCAqLwogCVBST0NT SUdfTk9USUZZX0lOVEVSUlVQVCwJLyogbGlzdGVuL25vdGlmeSBpbnRlcnJ1cHQgKi8KIAlQ Uk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCS8qIG1lc3NhZ2UgZnJvbSBjb29wZXJhdGluZyBw YXJhbGxlbCBiYWNrZW5kICovCkBAIC00MSw2ICs0Miw3IEBAIHR5cGVkZWYgZW51bQogCVBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRSwKIAlQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0xPQ0ssCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwK KwlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9ULAogCVBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOLAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf U1RBUlRVUF9ERUFETE9DSywKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9z dGFuZGJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaAppbmRleCAzOGZkODVh NDMxLi4zYmExODgyMjE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5k YnkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaApAQCAtMzAsOSArMzAs OSBAQCBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KHZv aWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1l bnQodm9pZCk7CiAKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90KFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKLQkJCQkJCQkJCQkJCVJl bEZpbGVOb2RlIG5vZGUpOworCQkJCQkJCQkJCQkJYm9vbCBvbkNhdGFsb2dUYWJsZSwgUmVs RmlsZU5vZGUgbm9kZSk7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdp dGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZEZ1bGxY aWQsCi0JCQkJCQkJCQkJCQkJICAgUmVsRmlsZU5vZGUgbm9kZSk7CisJCQkJCQkJCQkJCQkJ ICAgYm9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSk7CiBleHRlcm4gdm9p ZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhUYWJsZXNwYWNlKE9pZCB0c2lkKTsKIGV4 dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFiYXNlKE9pZCBkYmlk KTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBhOGExY2M3MmQw Li5iMTU1MTI1MWIzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAt MTg3MSw3ICsxODcxLDggQEAgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHN8IFNFTEVDVCBk Lm9pZCBBUyBkYXRpZCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2NrKGQub2lk KSBBUyBjb25mbF9sb2NrLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90 KGQub2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9idWZmZXJwaW4oZC5vaWQpIEFTIGNvbmZsX2J1ZmZlcnBpbiwKLSAgICBwZ19zdGF0X2dl dF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKGQub2lkKSBBUyBjb25mbF9kZWFkbG9j aworICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soZC5vaWQp IEFTIGNvbmZsX2RlYWRsb2NrLAorICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2lj YWxzbG90KGQub2lkKSBBUyBjb25mbF9sb2dpY2Fsc2xvdAogICAgRlJPTSBwZ19kYXRhYmFz ZSBkOwogcGdfc3RhdF9nc3NhcGl8IFNFTEVDVCBzLnBpZCwKICAgICBzLmdzc19hdXRoIEFT IGdzc19hdXRoZW50aWNhdGVkLAotLSAKMi4xOC40Cgo= --------------0BFA3292287791DB224037C5 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v17-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v17-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" RnJvbSAwNGRmNzEwOWEyMGVhZjdlY2EwYmRmMjJiNjI2Mjk0ZWMyNWRiMmRkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCA4IEFwciAyMDIxIDA5OjE2OjM0ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MTcgMS81XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3Ig bG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KCldoZW4gYSBXQUwgcmVwbGF5IG9u IHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1cGxlIGlzCnRvIGJl IGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEgbG9naWNhbCBzbG90 J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3QncyBjYXRhbG9nX3ht aW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBj b25mbGljdC4gIFdoaWxlIHN1YnNlcXVlbnQgY29tbWl0cwp3aWxsIGRvIHRoZSBhY3R1YWwg Y29uZmxpY3QgaGFuZGxpbmcsIHRoaXMgY29tbWl0IGFkZHMgYSBuZXcgZmllbGQKb25DYXRh bG9nVGFibGUgaW4gc3VjaCBXQUwgcmVjb3JkcywgdGhhdCBpcyB0cnVlIGZvciBjYXRhbG9n IHRhYmxlcywKc28gYXMgdG8gYXJyYW5nZSBmb3IgY29uZmxpY3QgaGFuZGxpbmcuCgpBdXRo b3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWth ciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5k cmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAgICAgfCAgNCArKystCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoaW5zZXJ0LmMgICAgfCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYyAgICAgICAgfCAgNCArKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmls aXR5bWFwLmMgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMg ICAgIHwgMTIgKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Zh Y3V1bS5jICAgfCAgOCArKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dF9wcml2YXRlLmggICAgICAgfCAgNiArKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 eGxvZy5oICAgICAgICAgICB8ICAzICsrLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxv Zy5oICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgg ICAgICAgIHwgIDUgKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggICAgICAg ICAgICB8ICAyICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oICAgICAgICAgICAg fCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgfCAgMSAr CiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgfCAgOSArKysrKysr KysKIDE5IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygt KQogIDE3LjklIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0LwogIDEzLjElIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwLwogIDE0LjUlIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvCiAgIDgu OSUgc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC8KICAgNy4yJSBzcmMvYmFja2VuZC91dGls cy9jYWNoZS8KICAxOS42JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCiAgMTYuNiUgc3JjL2luY2x1 ZGUvdXRpbHMvCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCmluZGV4IDA2ODNmNDJjMjUuLmI2 ZTYzNDBjM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKQEAgLTM0OCw3ICszNDgsNyBA QCBnaXN0cGxhY2V0b3BhZ2UoUmVsYXRpb24gcmVsLCBTaXplIGZyZWVzcGFjZSwgR0lTVFNU QVRFICpnaXN0c3RhdGUsCiAJCWZvciAoOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKIAkJewog CQkJLyogQWxsb2NhdGUgbmV3IHBhZ2UgKi8KLQkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1 ZmZlcihyZWwpOworCQkJcHRyLT5idWZmZXIgPSBnaXN0TmV3QnVmZmVyKGhlYXBSZWwsIHJl bCk7CiAJCQlHSVNUSW5pdEJ1ZmZlcihwdHItPmJ1ZmZlciwgKGlzX2xlYWYpID8gRl9MRUFG IDogMCk7CiAJCQlwdHItPnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHB0ci0+YnVmZmVyKTsKIAkJ CXB0ci0+YmxvY2suYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihwdHItPmJ1ZmZlcik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4IDEwNTRmNmYxZjIuLjhi MDY0ZjMyYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0yOTAs NyArMjkwLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJ bmRleEluZm8gKmluZGV4SW5mbykKIAkJUGFnZQkJcGFnZTsKIAogCQkvKiBpbml0aWFsaXpl IHRoZSByb290IHBhZ2UgKi8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihpbmRleCk7CisJ CWJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIoaGVhcCwgaW5kZXgpOwogCQlBc3NlcnQoQnVmZmVy R2V0QmxvY2tOdW1iZXIoYnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxLTk8pOwogCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwu YwppbmRleCA4ZGNkNTNjNDU3Li44YmE2MTc4YTVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R1dGlsLmMKQEAgLTgyMSw3ICs4MjEsNyBAQCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZikKICAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlh bGl6aW5nIHRoZSBwYWdlIGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZmZXIKICAqLwogQnVmZmVy Ci1naXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpCitnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIGhl YXBSZWwsIFJlbGF0aW9uIHIpCiB7CiAJQnVmZmVyCQlidWZmZXI7CiAJYm9vbAkJbmVlZExv Y2s7CkBAIC04NjUsNyArODY1LDcgQEAgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQogCQkJ CSAqIHBhZ2UncyBkZWxldGVYaWQuCiAJCQkJICovCiAJCQkJaWYgKFhMb2dTdGFuZGJ5SW5m b0FjdGl2ZSgpICYmIFJlbGF0aW9uTmVlZHNXQUwocikpCi0JCQkJCWdpc3RYTG9nUGFnZVJl dXNlKHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CisJCQkJCWdpc3RY TG9nUGFnZVJldXNlKGhlYXBSZWwsIHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChw YWdlKSk7CiAKIAkJCQlyZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R4bG9nLmMKaW5kZXggNjQ2NGNiOTI4MS4uNDZhZWU2ZjJhOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC01OTYsNyArNTk2LDggQEAgZ2lzdFhMb2dBc3Np Z25MU04odm9pZCkKICAqIFdyaXRlIFhMT0cgcmVjb3JkIGFib3V0IHJldXNlIG9mIGEgZGVs ZXRlZCBwYWdlLgogICovCiB2b2lkCi1naXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlk KQorZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gcmVsLAor CQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92 ZWRYaWQpCiB7CiAJZ2lzdHhsb2dQYWdlUmV1c2UgeGxyZWNfcmV1c2U7CiAKQEAgLTYwNyw2 ICs2MDgsNyBAQCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdgogCSAqLwogCiAJLyogWExP RyBzdHVmZiAqLworCXhscmVjX3JldXNlLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0Fj Y2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwUmVsKTsKIAl4bHJlY19yZXVzZS5ub2Rl ID0gcmVsLT5yZF9ub2RlOwogCXhscmVjX3JldXNlLmJsb2NrID0gYmxrbm87CiAJeGxyZWNf cmV1c2UubGF0ZXN0UmVtb3ZlZEZ1bGxYaWQgPSBsYXRlc3RSZW1vdmVkWGlkOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCmluZGV4IGQyNTRhMDBiNmEuLmNlMjIzYjJj MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAgLTM5OCw2ICsz OTgsNyBAQCBfaGFzaF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo cmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hfdmFjdXVtX29u ZV9wYWdlIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhscmVjLm9uQ2F0 YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhocmVs KTsKIAkJCXhscmVjLmxhdGVzdFJlbW92ZWRYaWQgPSBsYXRlc3RSZW1vdmVkWGlkOwogCQkJ eGxyZWMubnR1cGxlcyA9IG5kZWxldGFibGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKaW5kZXggMDNkNGFiYzkzOC4uOWM1ZDkyMGQyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMKQEAgLTc5ODcsNiArNzk4Nyw3IEBAIGxvZ19oZWFwX2ZyZWV6ZShSZWxhdGlv biByZWxuLCBCdWZmZXIgYnVmZmVyLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCiAJLyog bm9yIHdoZW4gdGhlcmUgYXJlIG5vIHR1cGxlcyB0byBmcmVlemUgKi8KIAlBc3NlcnQobnR1 cGxlcyA+IDApOwogCisJeGxyZWMub25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNz aWJsZUluTG9naWNhbERlY29kaW5nKHJlbG4pOwogCXhscmVjLmN1dG9mZl94aWQgPSBjdXRv ZmZfeGlkOwogCXhscmVjLm50dXBsZXMgPSBudHVwbGVzOwogCkBAIC04MDE3LDcgKzgwMTgs NyBAQCBsb2dfaGVhcF9mcmVlemUoUmVsYXRpb24gcmVsbiwgQnVmZmVyIGJ1ZmZlciwgVHJh bnNhY3Rpb25JZCBjdXRvZmZfeGlkLAogICogaGVhcF9idWZmZXIsIGlmIG5lY2Vzc2FyeS4K ICAqLwogWExvZ1JlY1B0cgotbG9nX2hlYXBfdmlzaWJsZShSZWxGaWxlTm9kZSBybm9kZSwg QnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAorbG9nX2hlYXBfdmlzaWJs ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwK IAkJCQkgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLCB1aW50OCB2bWZsYWdzKQogewogCXhs X2hlYXBfdmlzaWJsZSB4bHJlYzsKQEAgLTgwMjcsNiArODAyOCw3IEBAIGxvZ19oZWFwX3Zp c2libGUoUmVsRmlsZU5vZGUgcm5vZGUsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZt X2J1ZmZlciwKIAlBc3NlcnQoQnVmZmVySXNWYWxpZChoZWFwX2J1ZmZlcikpOwogCUFzc2Vy dChCdWZmZXJJc1ZhbGlkKHZtX2J1ZmZlcikpOwogCisJeGxyZWMub25DYXRhbG9nVGFibGUg PSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCk7CiAJeGxyZWMu Y3V0b2ZmX3hpZCA9IGN1dG9mZl94aWQ7CiAJeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOwogCVhM b2dCZWdpbkluc2VydCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRl eCAwYzhlNDlkM2U2Li5kMDhjNjdhZTE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwpAQCAtMzIzLDYgKzMyMyw3IEBAIGhlYXBfcGFnZV9wcnVuZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCXhscmVjLmxhdGVzdFJlbW92ZWRYaWQgPSBw cnN0YXRlLmxhdGVzdFJlbW92ZWRYaWQ7CiAJCQl4bHJlYy5ucmVkaXJlY3RlZCA9IHByc3Rh dGUubnJlZGlyZWN0ZWQ7CiAJCQl4bHJlYy5uZGVhZCA9IHByc3RhdGUubmRlYWQ7CisJCQl4 bHJlYy5vbkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVj b2RpbmcocmVsYXRpb24pOwogCiAJCQlYTG9nQmVnaW5JbnNlcnQoKTsKIAkJCVhMb2dSZWdp c3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBTaXplT2ZIZWFwUHJ1bmUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IGUxOThkZjY1ZDguLjZlODlh MDhjNTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHlt YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAg LTI4Miw3ICsyODIsNyBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCQkJaWYgKFhMb2dSZWNQdHJJc0lu dmFsaWQocmVjcHRyKSkKIAkJCXsKIAkJCQlBc3NlcnQoIUluUmVjb3ZlcnkpOwotCQkJCXJl Y3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLT5yZF9ub2RlLCBoZWFwQnVmLCB2bUJ1ZiwK KwkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsCiAJ CQkJCQkJCQkJICBjdXRvZmZfeGlkLCBmbGFncyk7CiAKIAkJCQkvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHBhZ2UuYwppbmRleCBlZjQ4Njc5Y2MyLi5lYmQzNTUyMWI1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYwpAQCAtMzYsNiArMzYsNyBAQAogI2lu Y2x1ZGUgInV0aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCiAKIHN0YXRpYyBCVE1ldGFQYWdlRGF0YSAqX2J0X2dldG1ldGEoUmVsYXRpb24gcmVs LCBCdWZmZXIgbWV0YWJ1Zik7CiBzdGF0aWMgdm9pZCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKQEAgLTQzLDcgKzQ0LDggQEAgc3RhdGlj IHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxr bm8sCiBzdGF0aWMgdm9pZCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKIAkJCQkJCQkJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAogCQkJ CQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxldGFibGUsCi0JCQkJCQkJ CUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSk7CisJCQkJCQkJ CUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSwKKwkJCQkJCQkJ UmVsYXRpb24gaGVhcFJlbCk7CiBzdGF0aWMgY2hhciAqX2J0X2RlbGl0ZW1zX3VwZGF0ZShC VFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCiAJCQkJCQkJCSBP ZmZzZXROdW1iZXIgKnVwZGF0ZWRvZmZzZXRzLAogCQkJCQkJCQkgU2l6ZSAqdXBkYXRlZGJ1 ZmxlbiwgYm9vbCBuZWVkc3dhbCk7CkBAIC04MzYsNiArODM4LDcgQEAgX2J0X2xvZ19yZXVz ZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlv bklkIHNhZmV4aWQpCiAJICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2Uu b25DYXRhbG9nVGFibGUgPSBnZXRfcmVsX2xvZ2ljYWxfY2F0YWxvZyhyZWwtPnJkX2luZGV4 LT5pbmRyZWxpZCk7CiAJeGxyZWNfcmV1c2Uubm9kZSA9IHJlbC0+cmRfbm9kZTsKIAl4bHJl Y19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVjX3JldXNlLmxhdGVzdFJlbW92ZWRGdWxs WGlkID0gc2FmZXhpZDsKQEAgLTEyOTYsNyArMTI5OSw4IEBAIF9idF9kZWxpdGVtc192YWN1 dW0oUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogc3RhdGljIHZvaWQKIF9idF9kZWxpdGVt c19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBUcmFuc2FjdGlvbklkIGxhdGVz dFJlbW92ZWRYaWQsCiAJCQkJCU9mZnNldE51bWJlciAqZGVsZXRhYmxlLCBpbnQgbmRlbGV0 YWJsZSwKLQkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxl KQorCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCisJ CQkJCVJlbGF0aW9uIGhlYXBSZWwpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmKTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMTM1OCw2ICsxMzYyLDggQEAgX2J0 X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFRyYW5zYWN0aW9u SWQgbGF0ZXN0UmVtb3ZlZFhpZCwKIAkJWExvZ1JlY1B0cglyZWNwdHI7CiAJCXhsX2J0cmVl X2RlbGV0ZSB4bHJlY19kZWxldGU7CiAKKwkJeGxyZWNfZGVsZXRlLm9uQ2F0YWxvZ1RhYmxl ID0KKwkJCVJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcFJlbCk7 CiAJCXhscmVjX2RlbGV0ZS5sYXRlc3RSZW1vdmVkWGlkID0gbGF0ZXN0UmVtb3ZlZFhpZDsK IAkJeGxyZWNfZGVsZXRlLm5kZWxldGVkID0gbmRlbGV0YWJsZTsKIAkJeGxyZWNfZGVsZXRl Lm51cGRhdGVkID0gbnVwZGF0YWJsZTsKQEAgLTE2ODUsNyArMTY5MSw3IEBAIF9idF9kZWxp dGVtc19kZWxldGVfY2hlY2soUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlvbiBo ZWFwUmVsLAogCiAJLyogUGh5c2ljYWxseSBkZWxldGUgdHVwbGVzIChvciBUSURzKSB1c2lu ZyBkZWxldGFibGUgKG9yIHVwZGF0YWJsZSkgKi8KIAlfYnRfZGVsaXRlbXNfZGVsZXRlKHJl bCwgYnVmLCBsYXRlc3RSZW1vdmVkWGlkLCBkZWxldGFibGUsIG5kZWxldGFibGUsCi0JCQkJ CQl1cGRhdGFibGUsIG51cGRhdGFibGUpOworCQkJCQkJdXBkYXRhYmxlLCBudXBkYXRhYmxl LCBoZWFwUmVsKTsKIAogCS8qIGJlIHRpZHkgKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG51 cGRhdGFibGU7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmlu ZGV4IDc2ZmIwMzc0YzQuLjMxODY4ODVkMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGd2YWN1dW0uYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaW5k ZXhmc20uaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9z bmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIAogLyogRW50cnkg aW4gcGVuZGluZy1saXN0IG9mIFRJRHMgd2UgbmVlZCB0byByZXZpc2l0ICovCkBAIC01MDMs NiArNTA0LDEzIEBAIHZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5k ZXgsIEJ1ZmZlciBidWZmZXIpCiAJc3BneGxvZ1ZhY3V1bVJlZGlyZWN0IHhscmVjOwogCUds b2JhbFZpc1N0YXRlICp2aXN0ZXN0OwogCisJLyoKKwkgKiBUaGVyZSBpcyBubyBjaGFuY2Ug b2YgZW5kbGVzcyByZWN1cnNpb24gZXZlbiB3aGVuIHdlIGFyZSBkb2luZyBjYXRhbG9nCisJ ICogYWNjZXNlcyBoZXJlOyBiZWNhdXNlLCBzcGdpc3QgaXMgbmV2ZXIgdXNlZCBmb3IgY2F0 YWxvZ3MuIENoZWNrCisJICogY29tbWVudHMgaW4gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxv Z2ljYWxEZWNvZGluZygpLgorCSAqLworCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gZ2V0X3Jl bF9sb2dpY2FsX2NhdGFsb2coaW5kZXgtPnJkX2luZGV4LT5pbmRyZWxpZCk7CisKIAl4bHJl Yy5uVG9QbGFjZWhvbGRlciA9IDA7CiAJeGxyZWMubmV3ZXN0UmVkaXJlY3RYaWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpp bmRleCA2YmJhNWY4ZWM0Li4yOGIxZjk2MWY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oYXNoLmgi CiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9u YnRyZWUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJib290c3Ry YXAvYm9vdHN0cmFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX2FtLmgiCkBAIC0yMDYyLDYgKzIwNjMsMjAgQEAgZ2V0X3JlbF9w ZXJzaXN0ZW5jZShPaWQgcmVsaWQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbAorZ2V0 X3JlbF9sb2dpY2FsX2NhdGFsb2coT2lkIHJlbGlkKQoreworCWJvb2wJcmVzOworCVJlbGF0 aW9uIHJlbDsKKworCS8qIGFzc3VtZSBwcmV2aW91c2x5IGxvY2tlZCAqLworCXJlbCA9IHRh YmxlX29wZW4ocmVsaWQsIE5vTG9jayk7CisJcmVzID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJ bkxvZ2ljYWxEZWNvZGluZyhyZWwpOworCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwor CXJldHVybiByZXM7Cit9CisKIAogLyoJCQkJLS0tLS0tLS0tLSBUUkFOU0ZPUk0gQ0FDSEUg LS0tLS0tLS0tLQkJCQkJCSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2lzdF9wcml2YXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKaW5k ZXggNTUzZDM2NGUyZC4uYTBmNDAxNTU1NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2dpc3RfcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZh dGUuaApAQCAtNDQwLDggKzQ0MCw4IEBAIGV4dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nUGFn ZURlbGV0ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJIEZ1bGxUcmFuc2FjdGlvbklkIHhp ZCwgQnVmZmVyIHBhcmVudEJ1ZmZlciwKIAkJCQkJCQkJCSBPZmZzZXROdW1iZXIgZG93bmxp bmtPZmZzZXQpOwogCi1leHRlcm4gdm9pZCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGJsa25vLAotCQkJCQkJCSAgRnVsbFRyYW5zYWN0aW9uSWQgbGF0 ZXN0UmVtb3ZlZFhpZCk7CitleHRlcm4gdm9pZCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlv biBoZWFwUmVsLCBSZWxhdGlvbiByZWwsCisJCQkJICBCbG9ja051bWJlciBibGtubywgRnVs bFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCk7CiAKIGV4dGVybiBYTG9nUmVjUHRy IGdpc3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSBPZmZzZXROdW1iZXIg KnRvZGVsZXRlLCBpbnQgbnRvZGVsZXRlLApAQCAtNDg1LDcgKzQ4NSw3IEBAIGV4dGVybiBi b29sIGdpc3Rwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gYm9v bCBnaXN0Zml0cGFnZShJbmRleFR1cGxlICppdHZlYywgaW50IGxlbik7CiBleHRlcm4gYm9v bCBnaXN0bm9zcGFjZShQYWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dmVjLCBpbnQgbGVuLCBP ZmZzZXROdW1iZXIgdG9kZWxldGUsIFNpemUgZnJlZXNwYWNlKTsKIGV4dGVybiB2b2lkIGdp c3RjaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKLWV4dGVybiBCdWZmZXIg Z2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKTsKK2V4dGVybiBCdWZmZXIgZ2lzdE5ld0J1ZmZl cihSZWxhdGlvbiBoZWFwUmVsLCBSZWxhdGlvbiByKTsKIGV4dGVybiBib29sIGdpc3RQYWdl UmVjeWNsYWJsZShQYWdlIHBhZ2UpOwogZXh0ZXJuIHZvaWQgZ2lzdGZpbGxidWZmZXIoUGFn ZSBwYWdlLCBJbmRleFR1cGxlICppdHVwLCBpbnQgbGVuLAogCQkJCQkJICAgT2Zmc2V0TnVt YmVyIG9mZik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCmluZGV4IGZkNTE0NGYyNTguLjczOTk5 ZGRjNzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCkBAIC00OSw5ICs0OSw5IEBAIHR5cGVk ZWYgc3RydWN0IGdpc3R4bG9nUGFnZVVwZGF0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBnaXN0 eGxvZ0RlbGV0ZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQg bGF0ZXN0UmVtb3ZlZFhpZDsKIAl1aW50MTYJCW50b2RlbGV0ZTsJCS8qIG51bWJlciBvZiBk ZWxldGVkIG9mZnNldHMgKi8KLQogCS8qCiAJICogSW4gcGF5bG9hZCBvZiBibGsgMCA6IHRv ZGVsZXRlIE9mZnNldE51bWJlcnMKIAkgKi8KQEAgLTk3LDYgKzk3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgZ2lzdHhsb2dQYWdlRGVsZXRlCiAgKi8KIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9n UGFnZVJldXNlCiB7CisJYm9vbAkJb25DYXRhbG9nVGFibGU7CiAJUmVsRmlsZU5vZGUgbm9k ZTsKIAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1v dmVkRnVsbFhpZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaAppbmRleCA0MzUzYTMyZGJiLi45 NGMzMjkyYzFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCkBAIC0yNTAsNiArMjUwLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGFzaF9pbml0X2JpdG1hcF9wYWdlCiAgKi8KIHR5cGVk ZWYgc3RydWN0IHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlCiB7CisJYm9vbAkJb25DYXRhbG9n VGFibGU7CiAJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkOwogCWludAkJCW50dXBs ZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggMjdkYjQ4MTg0ZS4uZWJh NDhiMGFlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0Miw2ICsyNDIs NyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICovCiB0eXBlZGVmIHN0cnVj dCB4bF9oZWFwX3BydW5lCiB7CisJYm9vbCAgICAgIG9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5z YWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAl1aW50MTYJCW5yZWRpcmVjdGVkOwogCXVp bnQxNgkJbmRlYWQ7CkBAIC0zMzgsNiArMzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF9mcmVlemVfdHVwbGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFn ZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hp ZDsKIAl1aW50MTYJCW50dXBsZXM7CiB9IHhsX2hlYXBfZnJlZXplX3BhZ2U7CkBAIC0zNTIs NiArMzU0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogICovCiB0 eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3Zpc2libGUKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJs ZTsKIAlUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQ7CiAJdWludDgJCWZsYWdzOwogfSB4bF9o ZWFwX3Zpc2libGU7CkBAIC00MTMsNyArNDE2LDcgQEAgZXh0ZXJuIGJvb2wgaGVhcF9wcmVw YXJlX2ZyZWV6ZV90dXBsZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUsCiAJCQkJCQkJCQkgIGJv b2wgKnRvdGFsbHlfZnJvemVuKTsKIGV4dGVybiB2b2lkIGhlYXBfZXhlY3V0ZV9mcmVlemVf dHVwbGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkJCQkJCQkJICB4bF9oZWFwX2ZyZWV6 ZV90dXBsZSAqeGxyZWNfdHApOwotZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJs ZShSZWxGaWxlTm9kZSBybm9kZSwgQnVmZmVyIGhlYXBfYnVmZmVyLAorZXh0ZXJuIFhMb2dS ZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwKIAkJCQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwgVHJhbnNhY3Rpb25JZCBjdXRvZmZf eGlkLCB1aW50OCBmbGFncyk7CiAKICNlbmRpZgkJCQkJCQkvKiBIRUFQQU1fWExPR19IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL25idHhsb2cuaAppbmRleCAwZjc3MzE4NTZiLi5iMTVhYTQ3ZjFiIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9uYnR4bG9nLmgKQEAgLTE4NSw2ICsxODUsNyBAQCB0eXBlZGVmIHN0cnVjdCB4 bF9idHJlZV9kZWR1cAogICovCiB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9yZXVzZV9wYWdl CiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9nVGFibGU7CiAJUmVsRmlsZU5vZGUgbm9kZTsK IAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk RnVsbFhpZDsKQEAgLTIzMiw2ICsyMzMsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV92 YWN1dW0KIAogdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVsZXRlCiB7CisJYm9vbAkJb25D YXRhbG9nVGFibGU7CiAJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkOwogCXVpbnQx NgkJbmRlbGV0ZWQ7CiAJdWludDE2CQludXBkYXRlZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9zcGd4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCmlu ZGV4IDY5NDA1YjU3NTAuLjA2YjkxZjRkMDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9zcGd4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaApAQCAt MjM3LDYgKzIzNyw3IEBAIHR5cGVkZWYgc3RydWN0IHNwZ3hsb2dWYWN1dW1Sb290CiAKIHR5 cGVkZWYgc3RydWN0IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAogeworCWJvb2wJCW9uQ2F0YWxv Z1RhYmxlOwogCXVpbnQxNgkJblRvUGxhY2Vob2xkZXI7IC8qIG51bWJlciBvZiByZWRpcmVj dHMgdG8gbWFrZSBwbGFjZWhvbGRlcnMgKi8KIAlPZmZzZXROdW1iZXIgZmlyc3RQbGFjZWhv bGRlcjsJLyogZmlyc3QgcGxhY2Vob2xkZXIgdHVwbGUgdG8gcmVtb3ZlICovCiAJVHJhbnNh Y3Rpb25JZCBuZXdlc3RSZWRpcmVjdFhpZDsJLyogbmV3ZXN0IFhJRCBvZiByZW1vdmVkIHJl ZGlyZWN0cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCA3Nzg3MWFhZWZjLi5lMmE1 ZWZlZDMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGV4 dGVybiBjaGFyIGdldF9yZWxfcmVsa2luZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgZ2V0 X3JlbF9yZWxpc3BhcnRpdGlvbihPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3Rh Ymxlc3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2Uo T2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGdldF9yZWxfbG9naWNhbF9jYXRhbG9nKE9pZCBy ZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fZnJvbXNxbChPaWQgdHlwaWQsIE9p ZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV90 b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBi b29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggOWEzYTAz ZTUyMC4uYTI3Y2MyZjZkYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL3JlbGZpbGVub2RlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9j YXRhbG9nLmgiCiAKIAogLyoKQEAgLTM0NSw2ICszNDYsOSBAQCB0eXBlZGVmIHN0cnVjdCBT dGRSZE9wdGlvbnMKICAqIFJlbGF0aW9uSXNVc2VkQXNDYXRhbG9nVGFibGUKICAqCQlSZXR1 cm5zIHdoZXRoZXIgdGhlIHJlbGF0aW9uIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2F0YWxv ZyB0YWJsZQogICoJCWZyb20gdGhlIHBvdiBvZiBsb2dpY2FsIGRlY29kaW5nLiAgTm90ZSBt dWx0aXBsZSBldmFsIG9mIGFyZ3VtZW50IQorICoJCVRoaXMgZGVmaW5pdGlvbiBzaG91bGQg bm90IGludm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFsb2cKKyAqCQlhY2Nlc3M7 IG90aGVyd2lzZSBpdCBtYXkgY2F1c2UgaW5maW5pdGUgcmVjdXJzaW9uLiBDaGVjayB0aGUg Y29tbWVudHMKKyAqCQlpbiBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5n KCkgZm9yIGRldGFpbHMuCiAgKi8KICNkZWZpbmUgUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dU YWJsZShyZWxhdGlvbikJXAogCSgocmVsYXRpb24pLT5yZF9vcHRpb25zICYmIFwKQEAgLTYy Miw2ICs2MjYsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVmlld09wdGlvbnMKICAqIFJlbGF0aW9u SXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcKICAqCQlUcnVlIGlmIHdlIG5lZWQgdG8g bG9nIGVub3VnaCBpbmZvcm1hdGlvbiB0byBoYXZlIGFjY2VzcyB2aWEKICAqCQlkZWNvZGlu ZyBzbmFwc2hvdC4KKyAqCQlUaGlzIGRlZmluaXRpb24gc2hvdWxkIG5vdCBpbnZva2UgYW55 dGhpbmcgdGhhdCBwZXJmb3JtcyBjYXRhbG9nCisgKgkJYWNjZXNzLiBPdGhlcndpc2UsIGUu Zy4gbG9nZ2luZyBhIFdBTCBlbnRyeSBmb3IgY2F0YWxvZyByZWxhdGlvbiBtYXkKKyAqCQlp bnZva2UgdGhpcyBmdW5jdGlvbiwgd2hpY2ggd2lsbCBpbiB0dXJuIGRvIGNhdGFsb2cgYWNj ZXNzLCB3aGljaCBtYXkKKyAqCQlpbiB0dXJuIGNhdXNlIGFub3RoZXIgc2ltaWxhciBXQUwg ZW50cnkgdG8gYmUgbG9nZ2VkLCBsZWFkaW5nIHRvCisgKgkJaW5maW5pdGUgcmVjdXJzaW9u LgogICovCiAjZGVmaW5lIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmco cmVsYXRpb24pIFwKIAkoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkgJiYgXAotLSAKMi4xOC40 Cgo= --------------0BFA3292287791DB224037C5--