Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rcx5f-0036N0-Er for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Feb 2024 00:37:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rcx5e-007Ph0-3t for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Feb 2024 00:37:30 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rcx5d-007Pgp-1r for pgsql-hackers@lists.postgresql.org; Thu, 22 Feb 2024 00:37:30 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rcx5T-000LhQ-JC for pgsql-hackers@postgresql.org; Thu, 22 Feb 2024 00:37:28 +0000 Received: from [192.168.1.115] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4TgDk503Xjz49PyJ; Thu, 22 Feb 2024 02:37:16 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1708562237; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=d0McWn190G0tR/VPtZ10qC862JUjPEtetdnxUsrbwk0=; b=lFFnDAQSbIizwsQfslbjkXvk+SPaJOpNtF+nOTln7ZJA7z/TWdeE1OuO6gYfehA2B95lqq qmzj+hFMYpu6bdPeiPi4pKyRhppWyojUG6jhm+ZBVpWeGpgJYJX1xPF7EXHIJtTEZ/6zm/ x5koiQFvU6lfPaWGZlZvwS7egjAudcNwTDjDNCwbyvQ5YZ+tRl/DR8XDtbHOA+pSEwwfSu IzHfE9F3yKqXZUWlWrcrrBbKEAfv/ZZn/fN1Q0DlaGvB3hHDjiko+tjUqYr9o53a/OgXlO 5z1MDkBfbqxMGtiByKTt9C+z2j0IIuIdDIM+tq6bO0zRV2R4T3i+iM5dg3SFKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1708562237; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=d0McWn190G0tR/VPtZ10qC862JUjPEtetdnxUsrbwk0=; b=FlRoDJkN6uXhQHIYHOfT0/2gng2h1qEeQf8qMH6tJFn3UjukW6HHWCyI2MWfNm9J516my2 RGR5iR59AL7zLKjiZ9yv1iaEOnVi4QI6iwUmGEcq+EQQY99KzYyhI2ZgrGL/qyLhAx+A4v HWCauGx0yuyQWZpsd1VGUhpR0215ob5KjXwmXh4g7XPiSylI1yeydIfbbMQAAkQ1zUMyNY X7NIEmHuiq3SvnjZ6lc7cdbgXf86ILvc/RBeVUh0llR+44K5PFn9o5aaIT6f5G62Xgkpwf U/iVQakfPG8+60I1frElrXw2yb7Ki8FtpmNpaJRGCUCm2RCUK/U3Ard3F/NaOg== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1708562237; a=rsa-sha256; cv=none; b=T7dzbsqEOtRjwypP4E5/zk5MwJhUwP70EAlGhhuD7EzEj5xmBVtDjWRtYpZbOMl183gvgn 4ZqHHIsKhMKBQK+xXmA+xUL6C0EDkA3vgCyXjsIXZMRjepTXulcx93daXHVngT17Y1jYIA Dj8hYn2wPpvOSy/09wiMm0XLYpJGZ4xd5gzJJalLRLZMKoB7RXMmENANt86mm1z76eic1o sZDOu5Z9kv+cbx9h4NA8S0D2kvb6oHa54EBmxvlx1vbHn7tBYBAhkbfGKM8HtW5EYlR8DA KY258smwOFMS6RSOalKHEIOKu+c4xjZ/doELSe3Cr2Mx/YmF4NECkl9hcZVY+g== Content-Type: multipart/mixed; boundary="------------LB4LeaPPEnnj873WKcnN4ONy" Message-ID: <8f695109-8341-4f7c-8b0d-3cadc7eddc9e@iki.fi> Date: Thu, 22 Feb 2024 02:37:16 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Refactoring backend fork+exec code Content-Language: en-US To: Robert Haas , Andres Freund Cc: reid.thompson@crunchydata.com, Tristan Partin , pgsql-hackers , Thomas Munro References: <59527c9b-c3f7-4d0c-a3f1-00d0ed5cc186@iki.fi> <20240122210740.7vq5fd4woixpwx3f@awork3.anarazel.de> <8171f1aa-496f-46a6-afc3-c46fe7a9b407@iki.fi> <20240123195009.44wtutga24p5sh3s@awork3.anarazel.de> <08eff756-beeb-4a11-9eb5-d45b6af38998@iki.fi> <5997ff317a5827496537580078bcd19f4441f8d2.camel@crunchydata.com> <606a62d6-321c-4967-92c1-2d4e20a2c136@iki.fi> <20240207182521.wyt5dmd75l4v27zk@awork3.anarazel.de> <2136fb4f-1630-43e9-9cf6-b32772b4b0a0@iki.fi> <20240214213711.2gjlezqll37mg7lg@awork3.anarazel.de> From: Heikki Linnakangas In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------LB4LeaPPEnnj873WKcnN4ONy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 15/02/2024 07:09, Robert Haas wrote: > On Thu, Feb 15, 2024 at 3:07 AM Andres Freund wrote: >>> I think the last remaining question here is about the 0- vs 1-based indexing >>> of BackendIds. Is it a good idea to switch to 0-based indexing? And if we do >>> it, should we reserve PGPROC 0. I'm on the fence on this one. >> >> I lean towards it being a good idea. Having two internal indexing schemes was >> bad enough so far, but at least one would fairly quickly notice if one used >> the wrong one. If they're just offset by 1, it might end up taking longer, >> because that'll often also be a valid id. > > Yeah, I think making everything 0-based is probably the best way > forward long term. It might require more cleanup work to get there, > but it's just a lot simpler in the end, IMHO. Here's another patch version that does that. Yeah, I agree it's nicer in the end. I'm pretty happy with this now. I'll read through these patches myself again after sleeping over it and try to get this committed by the end of the week, but another pair of eyes wouldn't hurt. On 14/02/2024 23:37, Andres Freund wrote: >> void >> -ProcSignalInit(int pss_idx) >> +ProcSignalInit(void) >> { >> ProcSignalSlot *slot; >> uint64 barrier_generation; >> >> - Assert(pss_idx >= 1 && pss_idx <= NumProcSignalSlots); >> - >> - slot = &ProcSignal->psh_slot[pss_idx - 1]; >> + if (MyBackendId <= 0) >> + elog(ERROR, "MyBackendId not set"); >> + if (MyBackendId > NumProcSignalSlots) >> + elog(ERROR, "unexpected MyBackendId %d in ProcSignalInit (max %d)", MyBackendId, NumProcSignalSlots); >> + slot = &ProcSignal->psh_slot[MyBackendId - 1]; >> >> /* sanity check */ >> if (slot->pss_pid != 0) >> elog(LOG, "process %d taking over ProcSignal slot %d, but it's not empty", >> - MyProcPid, pss_idx); >> + MyProcPid, (int) (slot - ProcSignal->psh_slot)); > > Hm, why not use MyBackendId - 1 as above? Am I missing something? You're right, fixed. >> /* >> @@ -212,11 +211,7 @@ ProcSignalInit(int pss_idx) >> static void >> CleanupProcSignalState(int status, Datum arg) >> { >> - int pss_idx = DatumGetInt32(arg); >> - ProcSignalSlot *slot; >> - >> - slot = &ProcSignal->psh_slot[pss_idx - 1]; >> - Assert(slot == MyProcSignalSlot); >> + ProcSignalSlot *slot = MyProcSignalSlot; > > Maybe worth asserting that MyProcSignalSlot isn't NULL? Previously that was > checked via the assertion above. Added. >> + if (i != segP->numProcs - 1) >> + segP->pgprocnos[i] = segP->pgprocnos[segP->numProcs - 1]; >> + break; > > Hm. This means the list will be out-of-order more and more over time, leading > to less cache efficient access patterns. Perhaps we should keep this sorted, > like we do for ProcGlobal->xids etc? Perhaps, although these are accessed much less frequently so I'm not convinced it's worth the trouble. I haven't found a good performance test case that where the shared cache invalidation would show up. Would you happen to have one? >> @@ -183,6 +175,8 @@ pg_log_backend_memory_contexts(PG_FUNCTION_ARGS) >> PG_RETURN_BOOL(false); >> } >> >> + if (proc != NULL) >> + backendId = GetBackendIdFromPGProc(proc); > > How can proc be NULL here? Fixed. -- Heikki Linnakangas Neon (https://neon.tech) --------------LB4LeaPPEnnj873WKcnN4ONy Content-Type: text/x-patch; charset=UTF-8; name="v11-0001-Redefine-backend-ID-to-be-an-index-into-the-proc.patch" Content-Disposition: attachment; filename*0="v11-0001-Redefine-backend-ID-to-be-an-index-into-the-proc.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyMDkzMDZmMjU1YmYyYzU2NjQ1Y2RiNTI3ZTgyYmUyNDM2MTljNDE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMjIgRmViIDIwMjQgMDI6MTE6MzQgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAxLzJdIFJlZGVmaW5lIGJhY2tlbmQgSUQgdG8gYmUgYW4g aW5kZXggaW50byB0aGUgcHJvYwogYXJyYXkuCgpQcmV2aW91c2x5LCBiYWNrZW5kIElEIHdh cyBhbiBpbmRleCBpbnRvIHRoZSBQcm9jU3RhdGUgYXJyYXksIGluIHRoZQpzaGFyZWQgY2Fj aGUgaW52YWxpZGF0aW9uIG1hbmFnZXIgKHNpbnZhbGFkdC5jKS4gVGhlIGVudHJ5IGluIHRo ZQpQcm9jU3RhdGUgYXJyYXkgd2FzIHJlc2VydmVkIGF0IGJhY2tlbmQgc3RhcnR1cCBieSBz Y2FubmluZyB0aGUgYXJyYXkKZm9yIGEgZnJlZSBlbnRyeSwgYW5kIHRoYXQgd2FzIGFsc28g d2hlbiB0aGUgYmFja2VuZCBnb3QgaXRzIGJhY2tlbmQKSUQuIFRoaW5ncyBiZWNvbWVzIHNs aWdodGx5IHNpbXBsZXIgaWYgd2UgcmVkZWZpbmUgYmFja2VuZCBJRCB0byBiZQp0aGUgaW5k ZXggaW50byB0aGUgUEdQUk9DIGFycmF5LCBhbmQgZGlyZWN0bHkgdXNlIGl0IGFsc28gYXMg YW4gaW5kZXgKdG8gdGhlIFByb2NTdGF0ZSBhcnJheS4gVGhpcyB1c2VzIGEgbGl0dGxlIG1v cmUgbWVtb3J5LCBhcyB3ZSByZXNlcnZlCmEgZmV3IGV4dHJhIHNsb3RzIGluIHRoZSBQcm9j U3RhdGUgYXJyYXkgZm9yIGF1eCBwcm9jZXNzZXMgdGhhdCBkb24ndApuZWVkIHRoZW0sIGJ1 dCB0aGUgc2ltcGxpY2l0eSBpcyB3b3J0aCBpdC4KCkF1eCBwcm9jZXNzZXMgbm93IGFsc28g aGF2ZSBhIGJhY2tlbmQgSUQuIFRoaXMgc2ltcGxpZmllcyB0aGUKcmVzZXJ2YXRpb24gb2Yg QmFja2VuZFN0YXR1c0FycmF5IGFuZCBQcm9jU2lnbmFsIHNsb3RzLgoKWW91IGNhbiBub3cg Y29udmVydCBhIGJhY2tlbmQgSUQgaW50byBhbiBpbmRleCBpbnRvIHRoZSBQR1BST0MgYXJy YXkKc2ltcGx5IGJ5IHN1YnRyYWN0aW5nIDEuIFdlIHN0aWxsIHVzZSAwLWJhc2VkICJwZ3By b2Nub3MiIGluIHZhcmlvdXMKcGxhY2VzLCBmb3IgaW5kZXhlcyBpbnRvIHRoZSBQR1BST0Mg YXJyYXksIGJ1dCB0aGUgb25seSBkaWZmZXJlbmNlIG5vdwppcyB0aGF0IGJhY2tlbmQgSURz IHN0YXJ0IGF0IDEgd2hpbGUgcGdwcm9jbm9zIHN0YXJ0IGF0IDAuCgpUaGVyZSBpcyBzdGls bCBhICdiYWNrZW5kSWQnIGZpZWxkIGluIFBHUFJPQywgbm93IHBhcnQgb2YgJ3Z4aWQnIHdo aWNoCmVuY2Fwc3VsYXRlcyB0aGUgYmFja2VuZCBJRCBhbmQgbG9jYWwgdHJhbnNhY3Rpb24g SUQgdG9nZXRoZXIuIEl0J3MKbmVlZGVkIGZvciBwcmVwYXJlZCB4YWN0cy4gRm9yIHJlZ3Vs YXIgYmFja2VuZHMsIHRoZSBiYWNrZW5kSWQgaXMKYWx3YXlzIGVxdWFsIHRvIHBncHJvY25v ICsgMSwgYnV0IGZvciBwcmVwYXJlZCB4YWN0IFBHUFJPQyBlbnRyaWVzLAppdCdzIHRoZSBJ RCBvZiB0aGUgb3JpZ2luYWwgYmFja2VuZCB0aGF0IHByb2Nlc3NlZCB0aGUgdHJhbnNhY3Rp b24uCgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZApEaXNjdXNzaW9uOiBodHRwczovL3d3 dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzgxNzFmMWFhLTQ5NmYtNDZhNi1hZmMzLWM0 NmZlN2E5YjQwN0Bpa2kuZmkKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29w aGFzZS5jICAgICAgIHwgIDM3ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hh Y3QuYyAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNl LmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNl LmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9u cy5jICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJv Y2Vzcy5jICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nh cnJheS5jICAgICAgICAgfCAgNzMgKysrKysrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY3NpZ25hbC5jICAgICAgICB8ICAyNyArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NpbnZhbGFkdC5jICAgICAgICAgfCAyMDAgKysrKysrLS0tLS0tLS0tLS0tLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyAgICAgICAgICAgICB8ICAyOCArLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgICAgICAgfCAgMzAgKy0tCiBzcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jIHwgIDUyICsrLS0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMgICAgICAgICAgIHwgIDE0ICstCiBz cmMvYmFja2VuZC91dGlscy9lcnJvci9jc3Zsb2cuYyAgICAgICAgICAgIHwgICA0ICstCiBz cmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgICAgICAgICAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC91dGlscy9lcnJvci9qc29ubG9nLmMgICAgICAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAgIHwgIDEwICstCiBz cmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAgICAgICAgICAgIHwgICA1ICstCiBz cmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgIHwgICAyIC0KIHNy Yy9pbmNsdWRlL3N0b3JhZ2UvYmFja2VuZGlkLmggICAgICAgICAgICAgfCAgMTIgKy0KIHNy Yy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNy Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAgICAgfCAgMzIgKysrLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCAgICAgICAgICAgICB8ICAgNCArCiBz cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgIHwgICAyICstCiBz cmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oICAgICAgICAgICAgIHwgICA0IC0KIHNy Yy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgICAgICAgICAgICAgICAgfCAgMTAgKy0KIDI4 IGZpbGVzIGNoYW5nZWQsIDI4MCBpbnNlcnRpb25zKCspLCAzMjIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKaW5kZXggMjM0YzhkMDhlYmMu LjVjMjgyMDAyOTAwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90 d29waGFzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMK QEAgLTE1MSw3ICsxNTEsNiBAQCB0eXBlZGVmIHN0cnVjdCBHbG9iYWxUcmFuc2FjdGlvbkRh dGEKIHsKIAlHbG9iYWxUcmFuc2FjdGlvbiBuZXh0OwkJLyogbGlzdCBsaW5rIGZvciBmcmVl IGxpc3QgKi8KIAlpbnQJCQlwZ3Byb2NubzsJCS8qIElEIG9mIGFzc29jaWF0ZWQgZHVtbXkg UEdQUk9DICovCi0JQmFja2VuZElkCWR1bW15QmFja2VuZElkOyAvKiBzaW1pbGFyIHRvIGJh Y2tlbmQgaWQgZm9yIGJhY2tlbmRzICovCiAJVGltZXN0YW1wVHogcHJlcGFyZWRfYXQ7CS8q IHRpbWUgb2YgcHJlcGFyYXRpb24gKi8KIAogCS8qCkBAIC0yODUsMjAgKzI4NCw2IEBAIFR3 b1BoYXNlU2htZW1Jbml0KHZvaWQpCiAKIAkJCS8qIGFzc29jaWF0ZSBpdCB3aXRoIGEgUEdQ Uk9DIGFzc2lnbmVkIGJ5IEluaXRQcm9jR2xvYmFsICovCiAJCQlneGFjdHNbaV0ucGdwcm9j bm8gPSBHZXROdW1iZXJGcm9tUEdQcm9jKCZQcmVwYXJlZFhhY3RQcm9jc1tpXSk7Ci0KLQkJ CS8qCi0JCQkgKiBBc3NpZ24gYSB1bmlxdWUgSUQgZm9yIGVhY2ggZHVtbXkgcHJvYywgc28g dGhhdCB0aGUgcmFuZ2Ugb2YKLQkJCSAqIGR1bW15IGJhY2tlbmQgSURzIGltbWVkaWF0ZWx5 IGZvbGxvd3MgdGhlIHJhbmdlIG9mIG5vcm1hbAotCQkJICogYmFja2VuZCBJRHMuIFdlIGRv bid0IGRhcmUgdG8gYXNzaWduIGEgcmVhbCBiYWNrZW5kIElEIHRvIGR1bW15Ci0JCQkgKiBw cm9jcywgYmVjYXVzZSBwcmVwYXJlZCB0cmFuc2FjdGlvbnMgZG9uJ3QgdGFrZSBwYXJ0IGlu IGNhY2hlCi0JCQkgKiBpbnZhbGlkYXRpb24gbGlrZSBhIHJlYWwgYmFja2VuZCBJRCB3b3Vs ZCBpbXBseSwgYnV0IGhhdmluZyBhCi0JCQkgKiB1bmlxdWUgSUQgZm9yIHRoZW0gaXMgbmV2 ZXJ0aGVsZXNzIGhhbmR5LiBUaGlzIGFycmFuZ2VtZW50Ci0JCQkgKiBhbGxvd3MgeW91IHRv IGFsbG9jYXRlIGFuIGFycmF5IG9mIHNpemUgKE1heEJhY2tlbmRzICsKLQkJCSAqIG1heF9w cmVwYXJlZF94YWN0cyArIDEpLCBhbmQgaGF2ZSBhIHNsb3QgZm9yIGV2ZXJ5IGJhY2tlbmQg YW5kCi0JCQkgKiBwcmVwYXJlZCB0cmFuc2FjdGlvbi4gQ3VycmVudGx5IG11bHRpeGFjdC5j IHVzZXMgdGhhdAotCQkJICogdGVjaG5pcXVlLgotCQkJICovCi0JCQlneGFjdHNbaV0uZHVt bXlCYWNrZW5kSWQgPSBNYXhCYWNrZW5kcyArIDEgKyBpOwogCQl9CiAJfQogCWVsc2UKQEAg LTQ1NywyNCArNDQyLDI0IEBAIE1hcmtBc1ByZXBhcmluZ0d1dHMoR2xvYmFsVHJhbnNhY3Rp b24gZ3hhY3QsIFRyYW5zYWN0aW9uSWQgeGlkLCBjb25zdCBjaGFyICpnaWQsCiAJQXNzZXJ0 KExXTG9ja0hlbGRCeU1lSW5Nb2RlKFR3b1BoYXNlU3RhdGVMb2NrLCBMV19FWENMVVNJVkUp KTsKIAogCUFzc2VydChneGFjdCAhPSBOVUxMKTsKLQlwcm9jID0gJlByb2NHbG9iYWwtPmFs bFByb2NzW2d4YWN0LT5wZ3Byb2Nub107CisJcHJvYyA9IEdldFBHUHJvY0J5TnVtYmVyKGd4 YWN0LT5wZ3Byb2Nubyk7CiAKIAkvKiBJbml0aWFsaXplIHRoZSBQR1BST0MgZW50cnkgKi8K IAlNZW1TZXQocHJvYywgMCwgc2l6ZW9mKFBHUFJPQykpOwogCWRsaXN0X25vZGVfaW5pdCgm cHJvYy0+bGlua3MpOwogCXByb2MtPndhaXRTdGF0dXMgPSBQUk9DX1dBSVRfU1RBVFVTX09L OwotCWlmIChMb2NhbFRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+bHhpZCkpCisJaWYg KExvY2FsVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT52eGlkLmx4aWQpKQogCXsKIAkJ LyogY2xvbmUgVlhJRCwgZm9yIFR3b1BoYXNlR2V0WGlkQnlWaXJ0dWFsWElEKCkgdG8gZmlu ZCAqLwotCQlwcm9jLT5seGlkID0gTXlQcm9jLT5seGlkOwotCQlwcm9jLT5iYWNrZW5kSWQg PSBNeUJhY2tlbmRJZDsKKwkJcHJvYy0+dnhpZC5seGlkID0gTXlQcm9jLT52eGlkLmx4aWQ7 CisJCXByb2MtPnZ4aWQuYmFja2VuZElkID0gTXlCYWNrZW5kSWQ7CiAJfQogCWVsc2UKIAl7 CiAJCUFzc2VydChBbVN0YXJ0dXBQcm9jZXNzKCkgfHwgIUlzUG9zdG1hc3RlckVudmlyb25t ZW50KTsKIAkJLyogR2V0TG9ja0NvbmZsaWN0cygpIHVzZXMgdGhpcyB0byBzcGVjaWZ5IGEg d2FpdCBvbiB0aGUgWElEICovCi0JCXByb2MtPmx4aWQgPSB4aWQ7Ci0JCXByb2MtPmJhY2tl bmRJZCA9IEludmFsaWRCYWNrZW5kSWQ7CisJCXByb2MtPnZ4aWQubHhpZCA9IHhpZDsKKwkJ cHJvYy0+dnhpZC5iYWNrZW5kSWQgPSBJbnZhbGlkQmFja2VuZElkOwogCX0KIAlwcm9jLT54 aWQgPSB4aWQ7CiAJQXNzZXJ0KHByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQp OwpAQCAtNTIyLDcgKzUwNyw3IEBAIHN0YXRpYyB2b2lkCiBHWGFjdExvYWRTdWJ4YWN0RGF0 YShHbG9iYWxUcmFuc2FjdGlvbiBneGFjdCwgaW50IG5zdWJ4YWN0cywKIAkJCQkJIFRyYW5z YWN0aW9uSWQgKmNoaWxkcmVuKQogewotCVBHUFJPQwkgICAqcHJvYyA9ICZQcm9jR2xvYmFs LT5hbGxQcm9jc1tneGFjdC0+cGdwcm9jbm9dOworCVBHUFJPQwkgICAqcHJvYyA9IEdldFBH UHJvY0J5TnVtYmVyKGd4YWN0LT5wZ3Byb2Nubyk7CiAKIAkvKiBXZSBuZWVkIG5vIGV4dHJh IGxvY2sgc2luY2UgdGhlIEdYQUNUIGlzbid0IHZhbGlkIHlldCAqLwogCWlmIChuc3VieGFj dHMgPiBQR1BST0NfTUFYX0NBQ0hFRF9TVUJYSURTKQpAQCAtNTU5LDcgKzU0NCw3IEBAIE1h cmtBc1ByZXBhcmVkKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0LCBib29sIGxvY2tfaGVsZCkK IAkgKiBQdXQgaXQgaW50byB0aGUgZ2xvYmFsIFByb2NBcnJheSBzbyBUcmFuc2FjdGlvbklk SXNJblByb2dyZXNzIGNvbnNpZGVycwogCSAqIHRoZSBYSUQgYXMgc3RpbGwgcnVubmluZy4K IAkgKi8KLQlQcm9jQXJyYXlBZGQoJlByb2NHbG9iYWwtPmFsbFByb2NzW2d4YWN0LT5wZ3By b2Nub10pOworCVByb2NBcnJheUFkZChHZXRQR1Byb2NCeU51bWJlcihneGFjdC0+cGdwcm9j bm8pKTsKIH0KIAogLyoKQEAgLTU4Myw3ICs1NjgsNyBAQCBMb2NrR1hhY3QoY29uc3QgY2hh ciAqZ2lkLCBPaWQgdXNlcikKIAlmb3IgKGkgPSAwOyBpIDwgVHdvUGhhc2VTdGF0ZS0+bnVt UHJlcFhhY3RzOyBpKyspCiAJewogCQlHbG9iYWxUcmFuc2FjdGlvbiBneGFjdCA9IFR3b1Bo YXNlU3RhdGUtPnByZXBYYWN0c1tpXTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJlByb2NHbG9i YWwtPmFsbFByb2NzW2d4YWN0LT5wZ3Byb2Nub107CisJCVBHUFJPQwkgICAqcHJvYyA9IEdl dFBHUHJvY0J5TnVtYmVyKGd4YWN0LT5wZ3Byb2Nubyk7CiAKIAkJLyogSWdub3JlIG5vdC15 ZXQtdmFsaWQgR0lEcyAqLwogCQlpZiAoIWd4YWN0LT52YWxpZCkKQEAgLTg4NCw3ICs4Njks NyBAQCBUd29QaGFzZUdldFhpZEJ5VmlydHVhbFhJRChWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2 eGlkLAogCiAJCWlmICghZ3hhY3QtPnZhbGlkKQogCQkJY29udGludWU7Ci0JCXByb2MgPSAm UHJvY0dsb2JhbC0+YWxsUHJvY3NbZ3hhY3QtPnBncHJvY25vXTsKKwkJcHJvYyA9IEdldFBH UHJvY0J5TnVtYmVyKGd4YWN0LT5wZ3Byb2Nubyk7CiAJCUdFVF9WWElEX0ZST01fUEdQUk9D KHByb2NfdnhpZCwgKnByb2MpOwogCQlpZiAoVmlydHVhbFRyYW5zYWN0aW9uSWRFcXVhbHMo dnhpZCwgcHJvY192eGlkKSkKIAkJewpAQCAtOTE5LDcgKzkwNCw3IEBAIFR3b1BoYXNlR2V0 RHVtbXlCYWNrZW5kSWQoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgbG9ja19oZWxkKQogewog CUdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0ID0gVHdvUGhhc2VHZXRHWGFjdCh4aWQsIGxvY2tf aGVsZCk7CiAKLQlyZXR1cm4gZ3hhY3QtPmR1bW15QmFja2VuZElkOworCXJldHVybiBneGFj dC0+cGdwcm9jbm8gKyAxOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5j CmluZGV4IDcwYWI2ZTI3YTEzLi40YWM1YjllYTgzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hhY3QuYwpAQCAtNjAwLDkgKzYwMCw5IEBAIEdldFN0YWJsZUxhdGVzdFRyYW5zYWN0 aW9uSWQodm9pZCkKIAlzdGF0aWMgTG9jYWxUcmFuc2FjdGlvbklkIGx4aWQgPSBJbnZhbGlk TG9jYWxUcmFuc2FjdGlvbklkOwogCXN0YXRpYyBUcmFuc2FjdGlvbklkIHN0YWJsZXhpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCi0JaWYgKGx4aWQgIT0gTXlQcm9jLT5seGlkKQor CWlmIChseGlkICE9IE15UHJvYy0+dnhpZC5seGlkKQogCXsKLQkJbHhpZCA9IE15UHJvYy0+ bHhpZDsKKwkJbHhpZCA9IE15UHJvYy0+dnhpZC5seGlkOwogCQlzdGFibGV4aWQgPSBHZXRU b3BUcmFuc2FjdGlvbklkSWZBbnkoKTsKIAkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChz dGFibGV4aWQpKQogCQkJc3RhYmxleGlkID0gUmVhZE5leHRUcmFuc2FjdGlvbklkKCk7CkBA IC0yMDk5LDggKzIwOTksOCBAQCBTdGFydFRyYW5zYWN0aW9uKHZvaWQpCiAJICogQWR2ZXJ0 aXNlIGl0IGluIHRoZSBwcm9jIGFycmF5LiAgV2UgYXNzdW1lIGFzc2lnbm1lbnQgb2YKIAkg KiBsb2NhbFRyYW5zYWN0aW9uSWQgaXMgYXRvbWljLCBhbmQgdGhlIGJhY2tlbmRJZCBzaG91 bGQgYmUgc2V0IGFscmVhZHkuCiAJICovCi0JQXNzZXJ0KE15UHJvYy0+YmFja2VuZElkID09 IHZ4aWQuYmFja2VuZElkKTsKLQlNeVByb2MtPmx4aWQgPSB2eGlkLmxvY2FsVHJhbnNhY3Rp b25JZDsKKwlBc3NlcnQoTXlQcm9jLT52eGlkLmJhY2tlbmRJZCA9PSB2eGlkLmJhY2tlbmRJ ZCk7CisJTXlQcm9jLT52eGlkLmx4aWQgPSB2eGlkLmxvY2FsVHJhbnNhY3Rpb25JZDsKIAog CVRSQUNFX1BPU1RHUkVTUUxfVFJBTlNBQ1RJT05fU1RBUlQodnhpZC5sb2NhbFRyYW5zYWN0 aW9uSWQpOwogCkBAIC0yMjg5LDcgKzIyODksNyBAQCBDb21taXRUcmFuc2FjdGlvbih2b2lk KQogCQlQYXJhbGxlbFdvcmtlclJlcG9ydExhc3RSZWNFbmQoWGFjdExhc3RSZWNFbmQpOwog CX0KIAotCVRSQUNFX1BPU1RHUkVTUUxfVFJBTlNBQ1RJT05fQ09NTUlUKE15UHJvYy0+bHhp ZCk7CisJVFJBQ0VfUE9TVEdSRVNRTF9UUkFOU0FDVElPTl9DT01NSVQoTXlQcm9jLT52eGlk Lmx4aWQpOwogCiAJLyoKIAkgKiBMZXQgb3RoZXJzIGtub3cgYWJvdXQgbm8gdHJhbnNhY3Rp b24gaW4gcHJvZ3Jlc3MgYnkgbWUuIE5vdGUgdGhhdCB0aGlzCkBAIC0yODQwLDcgKzI4NDAs NyBAQCBBYm9ydFRyYW5zYWN0aW9uKHZvaWQpCiAJCVhMb2dTZXRBc3luY1hhY3RMU04oWGFj dExhc3RSZWNFbmQpOwogCX0KIAotCVRSQUNFX1BPU1RHUkVTUUxfVFJBTlNBQ1RJT05fQUJP UlQoTXlQcm9jLT5seGlkKTsKKwlUUkFDRV9QT1NUR1JFU1FMX1RSQU5TQUNUSU9OX0FCT1JU KE15UHJvYy0+dnhpZC5seGlkKTsKIAogCS8qCiAJICogTGV0IG90aGVycyBrbm93IGFib3V0 IG5vIHRyYW5zYWN0aW9uIGluIHByb2dyZXNzIGJ5IG1lLiBOb3RlIHRoYXQgdGhpcwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggOGRmMzBiMjQ0MDEuLjYyMGNlN2U3NWQyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2VfZnVuYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9sbWdyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvY2F0Y2Fj aGUuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCmluZGV4IGY3ODAzNzQ0YTViLi5mOTlk YzQ4ZThjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCkBAIC0xMDc2LDcgKzEwNzYs NyBAQCBzZXR2YWwzX29pZChQR19GVU5DVElPTl9BUkdTKQogc3RhdGljIFJlbGF0aW9uCiBs b2NrX2FuZF9vcGVuX3NlcXVlbmNlKFNlcVRhYmxlIHNlcSkKIHsKLQlMb2NhbFRyYW5zYWN0 aW9uSWQgdGhpc2x4aWQgPSBNeVByb2MtPmx4aWQ7CisJTG9jYWxUcmFuc2FjdGlvbklkIHRo aXNseGlkID0gTXlQcm9jLT52eGlkLmx4aWQ7CiAKIAkvKiBHZXQgdGhlIGxvY2sgaWYgbm90 IGFscmVhZHkgaGVsZCBpbiB0aGlzIHhhY3QgKi8KIAlpZiAoc2VxLT5seGlkICE9IHRoaXNs eGlkKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCAwZjgxMWZkMmZjOS4uYTRi NmUxZWZmZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC03OTksNyArNzk5 LDcgQEAgaW5pdF9zcWxfZmNhY2hlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgY29s bGF0aW9uLCBib29sIGxhenlFdmFsT0spCiAJCQkJCQkJCQkJCSAgbGF6eUV2YWxPSyk7CiAK IAkvKiBNYXJrIGZjYWNoZSB3aXRoIHRpbWUgb2YgY3JlYXRpb24gdG8gc2hvdyBpdCdzIHZh bGlkICovCi0JZmNhY2hlLT5seGlkID0gTXlQcm9jLT5seGlkOworCWZjYWNoZS0+bHhpZCA9 IE15UHJvYy0+dnhpZC5seGlkOwogCWZjYWNoZS0+c3VieGlkID0gR2V0Q3VycmVudFN1YlRy YW5zYWN0aW9uSWQoKTsKIAogCVJlbGVhc2VTeXNDYWNoZShwcm9jZWR1cmVUdXBsZSk7CkBA IC0xMDgxLDcgKzEwODEsNyBAQCBmbWdyX3NxbChQR19GVU5DVElPTl9BUkdTKQogCiAJaWYg KGZjYWNoZSAhPSBOVUxMKQogCXsKLQkJaWYgKGZjYWNoZS0+bHhpZCAhPSBNeVByb2MtPmx4 aWQgfHwKKwkJaWYgKGZjYWNoZS0+bHhpZCAhPSBNeVByb2MtPnZ4aWQubHhpZCB8fAogCQkJ IVN1YlRyYW5zYWN0aW9uSXNBY3RpdmUoZmNhY2hlLT5zdWJ4aWQpKQogCQl7CiAJCQkvKiBJ dCdzIHN0YWxlOyB1bmxpbmsgYW5kIGRlbGV0ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 eHByb2Nlc3MuYwppbmRleCBhYjg2ZTgwMmYyMS4uMzkxNzFmZWEwNmIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCkBAIC0xMDcsMTcgKzEwNyw3IEBAIEF1eGlsaWFy eVByb2Nlc3NNYWluKEF1eFByb2NUeXBlIGF1eHR5cGUpCiAKIAlCYXNlSW5pdCgpOwogCi0J LyoKLQkgKiBBc3NpZ24gdGhlIFByb2NTaWduYWxTbG90IGZvciBhbiBhdXhpbGlhcnkgcHJv Y2Vzcy4gIFNpbmNlIGl0IGRvZXNuJ3QKLQkgKiBoYXZlIGEgQmFja2VuZElkLCB0aGUgc2xv dCBpcyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBiYXNlZCBvbiB0aGUKLQkgKiBhdXhpbGlhcnkg cHJvY2VzcyB0eXBlIChNeUF1eFByb2NUeXBlKS4gIEJhY2tlbmRzIHVzZSBzbG90cyBpbmRl eGVkIGluCi0JICogdGhlIHJhbmdlIGZyb20gMSB0byBNYXhCYWNrZW5kcyAoaW5jbHVzaXZl KSwgc28gd2UgdXNlIE1heEJhY2tlbmRzICsKLQkgKiBBdXhQcm9jVHlwZSArIDEgYXMgdGhl IGluZGV4IG9mIHRoZSBzbG90IGZvciBhbiBhdXhpbGlhcnkgcHJvY2Vzcy4KLQkgKgotCSAq IFRoaXMgd2lsbCBuZWVkIHJldGhpbmtpbmcgaWYgd2UgZXZlciB3YW50IG1vcmUgdGhhbiBv bmUgb2YgYSBwYXJ0aWN1bGFyCi0JICogYXV4aWxpYXJ5IHByb2Nlc3MgdHlwZS4KLQkgKi8K LQlQcm9jU2lnbmFsSW5pdChNYXhCYWNrZW5kcyArIE15QXV4UHJvY1R5cGUgKyAxKTsKKwlQ cm9jU2lnbmFsSW5pdCgpOwogCiAJLyoKIAkgKiBBdXhpbGlhcnkgcHJvY2Vzc2VzIGRvbid0 IHJ1biB0cmFuc2FjdGlvbnMsIGJ1dCB0aGV5IG1heSBuZWVkIGEKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggZGQzMjlhODZlZjQuLmQ5NjYwNmViYmE1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNzAxLDcgKzcwMSw3IEBAIFBy b2NBcnJheUVuZFRyYW5zYWN0aW9uKFBHUFJPQyAqcHJvYywgVHJhbnNhY3Rpb25JZCBsYXRl c3RYaWQpCiAJCUFzc2VydChwcm9jLT5zdWJ4aWRTdGF0dXMuY291bnQgPT0gMCk7CiAJCUFz c2VydCghcHJvYy0+c3VieGlkU3RhdHVzLm92ZXJmbG93ZWQpOwogCi0JCXByb2MtPmx4aWQg PSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkOworCQlwcm9jLT52eGlkLmx4aWQgPSBJbnZh bGlkTG9jYWxUcmFuc2FjdGlvbklkOwogCQlwcm9jLT54bWluID0gSW52YWxpZFRyYW5zYWN0 aW9uSWQ7CiAKIAkJLyogYmUgc3VyZSB0aGlzIGlzIGNsZWFyZWQgaW4gYWJvcnQgKi8KQEAg LTc0Myw3ICs3NDMsNyBAQCBQcm9jQXJyYXlFbmRUcmFuc2FjdGlvbkludGVybmFsKFBHUFJP QyAqcHJvYywgVHJhbnNhY3Rpb25JZCBsYXRlc3RYaWQpCiAKIAlQcm9jR2xvYmFsLT54aWRz W3BneGFjdG9mZl0gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlwcm9jLT54aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKLQlwcm9jLT5seGlkID0gSW52YWxpZExvY2FsVHJhbnNhY3Rp b25JZDsKKwlwcm9jLT52eGlkLmx4aWQgPSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkOwog CXByb2MtPnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogCS8qIGJlIHN1cmUgdGhp cyBpcyBjbGVhcmVkIGluIGFib3J0ICovCkBAIC05MzAsNyArOTMwLDcgQEAgUHJvY0FycmF5 Q2xlYXJUcmFuc2FjdGlvbihQR1BST0MgKnByb2MpCiAJUHJvY0dsb2JhbC0+eGlkc1twZ3hh Y3RvZmZdID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJcHJvYy0+eGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CiAKLQlwcm9jLT5seGlkID0gSW52YWxpZExvY2FsVHJhbnNhY3Rpb25J ZDsKKwlwcm9jLT52eGlkLmx4aWQgPSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkOwogCXBy b2MtPnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlwcm9jLT5yZWNvdmVyeUNvbmZs aWN0UGVuZGluZyA9IGZhbHNlOwogCkBAIC0yNTM2LDYgKzI1MzYsMTEgQEAgUHJvY0FycmF5 SW5zdGFsbEltcG9ydGVkWG1pbihUcmFuc2FjdGlvbklkIHhtaW4sCiAJLyogR2V0IGxvY2sg c28gc291cmNlIHhhY3QgY2FuJ3QgZW5kIHdoaWxlIHdlJ3JlIGRvaW5nIHRoaXMgKi8KIAlM V0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX1NIQVJFRCk7CiAKKwkvKgorCSAqIEZp bmQgdGhlIFBHUFJPQyBlbnRyeSBvZiB0aGUgc291cmNlIHRyYW5zYWN0aW9uLiAoVGhpcyBj b3VsZCB1c2UKKwkgKiBHZXRQR1Byb2NCeUJhY2tlbmRJZCgpLCB1bmxlc3MgaXQncyBhIHBy ZXBhcmVkIHhhY3QuICBCdXQgdGhpcyBpc24ndAorCSAqIHBlcmZvcm1hbmNlIGNyaXRpY2Fs LikKKwkgKi8KIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBhcnJheVAtPm51bVByb2NzOyBp bmRleCsrKQogCXsKIAkJaW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tpbmRl eF07CkBAIC0yNTQ4LDkgKzI1NTMsOSBAQCBQcm9jQXJyYXlJbnN0YWxsSW1wb3J0ZWRYbWlu KFRyYW5zYWN0aW9uSWQgeG1pbiwKIAkJCWNvbnRpbnVlOwogCiAJCS8qIFdlIGFyZSBvbmx5 IGludGVyZXN0ZWQgaW4gdGhlIHNwZWNpZmljIHZpcnR1YWwgdHJhbnNhY3Rpb24uICovCi0J CWlmIChwcm9jLT5iYWNrZW5kSWQgIT0gc291cmNldnhpZC0+YmFja2VuZElkKQorCQlpZiAo cHJvYy0+dnhpZC5iYWNrZW5kSWQgIT0gc291cmNldnhpZC0+YmFja2VuZElkKQogCQkJY29u dGludWU7Ci0JCWlmIChwcm9jLT5seGlkICE9IHNvdXJjZXZ4aWQtPmxvY2FsVHJhbnNhY3Rp b25JZCkKKwkJaWYgKHByb2MtPnZ4aWQubHhpZCAhPSBzb3VyY2V2eGlkLT5sb2NhbFRyYW5z YWN0aW9uSWQpCiAJCQljb250aW51ZTsKIAogCQkvKgpAQCAtMzA5OSw2ICszMTA0LDY0IEBA IEhhdmVWaXJ0dWFsWElEc0RlbGF5aW5nQ2hrcHQoVmlydHVhbFRyYW5zYWN0aW9uSWQgKnZ4 aWRzLCBpbnQgbnZ4aWRzLCBpbnQgdHlwZSkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgor ICogQmFja2VuZElkR2V0UHJvYyAtLSBnZXQgYSBiYWNrZW5kJ3MgUEdQUk9DIGdpdmVuIGl0 cyBiYWNrZW5kIElECisgKgorICogVGhlIHJlc3VsdCBtYXkgYmUgb3V0IG9mIGRhdGUgYXJi aXRyYXJpbHkgcXVpY2tseSwgc28gdGhlIGNhbGxlcgorICogbXVzdCBiZSBjYXJlZnVsIGFi b3V0IGhvdyB0aGlzIGluZm9ybWF0aW9uIGlzIHVzZWQuICBOVUxMIGlzCisgKiByZXR1cm5l ZCBpZiB0aGUgYmFja2VuZCBpcyBub3QgYWN0aXZlLgorICovCitQR1BST0MgKgorQmFja2Vu ZElkR2V0UHJvYyhpbnQgYmFja2VuZElEKQoreworCVBHUFJPQwkgICAqcmVzdWx0OworCisJ aWYgKGJhY2tlbmRJRCA8IDEgfHwgYmFja2VuZElEID4gUHJvY0dsb2JhbC0+YWxsUHJvY0Nv dW50KQorCQlyZXR1cm4gTlVMTDsKKwlyZXN1bHQgPSBHZXRQR1Byb2NCeUJhY2tlbmRJZChi YWNrZW5kSUQpOworCisJaWYgKHJlc3VsdC0+cGlkID09IDApCisJCXJldHVybiBOVUxMOwor CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEJhY2tlbmRJZEdldFRyYW5zYWN0aW9u SWRzIC0tIGdldCBhIGJhY2tlbmQncyB0cmFuc2FjdGlvbiBzdGF0dXMKKyAqCisgKiBHZXQg dGhlIHhpZCwgeG1pbiwgbnN1YnhpZCBhbmQgb3ZlcmZsb3cgc3RhdHVzIG9mIHRoZSBiYWNr ZW5kLiAgVGhlCisgKiByZXN1bHQgbWF5IGJlIG91dCBvZiBkYXRlIGFyYml0cmFyaWx5IHF1 aWNrbHksIHNvIHRoZSBjYWxsZXIgbXVzdCBiZQorICogY2FyZWZ1bCBhYm91dCBob3cgdGhp cyBpbmZvcm1hdGlvbiBpcyB1c2VkLgorICovCit2b2lkCitCYWNrZW5kSWRHZXRUcmFuc2Fj dGlvbklkcyhpbnQgYmFja2VuZElELCBUcmFuc2FjdGlvbklkICp4aWQsCisJCQkJCQkgICBU cmFuc2FjdGlvbklkICp4bWluLCBpbnQgKm5zdWJ4aWQsIGJvb2wgKm92ZXJmbG93ZWQpCit7 CisJUEdQUk9DCSAgICpwcm9jOworCisJKnhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwor CSp4bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJKm5zdWJ4aWQgPSAwOworCSpvdmVy Zmxvd2VkID0gZmFsc2U7CisKKwlpZiAoYmFja2VuZElEIDwgMSB8fCBiYWNrZW5kSUQgPiBQ cm9jR2xvYmFsLT5hbGxQcm9jQ291bnQpCisJCXJldHVybjsKKwlwcm9jID0gR2V0UEdQcm9j QnlCYWNrZW5kSWQoYmFja2VuZElEKTsKKworCS8qIE5lZWQgdG8gbG9jayBvdXQgYWRkaXRp b25zL3JlbW92YWxzIG9mIGJhY2tlbmRzICovCisJTFdMb2NrQWNxdWlyZShQcm9jQXJyYXlM b2NrLCBMV19TSEFSRUQpOworCisJaWYgKHByb2MtPnBpZCAhPSAwKQorCXsKKwkJKnhpZCA9 IHByb2MtPnhpZDsKKwkJKnhtaW4gPSBwcm9jLT54bWluOworCQkqbnN1YnhpZCA9IHByb2Mt PnN1YnhpZFN0YXR1cy5jb3VudDsKKwkJKm92ZXJmbG93ZWQgPSBwcm9jLT5zdWJ4aWRTdGF0 dXMub3ZlcmZsb3dlZDsKKwl9CisKKwlMV0xvY2tSZWxlYXNlKFByb2NBcnJheUxvY2spOwor fQorCiAvKgogICogQmFja2VuZFBpZEdldFByb2MgLS0gZ2V0IGEgYmFja2VuZCdzIFBHUFJP QyBnaXZlbiBpdHMgUElECiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5j CmluZGV4IDBmOWY5MGQyYzdiLi4xOTlkZDE4MjI1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYwpAQCAtODcsNyArODcsNyBAQCB0eXBlZGVmIHN0cnVjdAogICog cG9zc2libGUgYXV4aWxpYXJ5IHByb2Nlc3MgdHlwZS4gIChUaGlzIHNjaGVtZSBhc3N1bWVz IHRoZXJlIGlzIG5vdAogICogbW9yZSB0aGFuIG9uZSBvZiBhbnkgYXV4aWxpYXJ5IHByb2Nl c3MgdHlwZSBhdCBhIHRpbWUuKQogICovCi0jZGVmaW5lIE51bVByb2NTaWduYWxTbG90cwko TWF4QmFja2VuZHMgKyBOVU1fQVVYUFJPQ1RZUEVTKQorI2RlZmluZSBOdW1Qcm9jU2lnbmFs U2xvdHMJKE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUykKIAogLyogQ2hlY2sg d2hldGhlciB0aGUgcmVsZXZhbnQgdHlwZSBiaXQgaXMgc2V0IGluIHRoZSBmbGFncy4gKi8K ICNkZWZpbmUgQkFSUklFUl9TSE9VTERfQ0hFQ0soZmxhZ3MsIHR5cGUpIFwKQEAgLTE1NCwy NCArMTU0LDIzIEBAIFByb2NTaWduYWxTaG1lbUluaXQodm9pZCkKIC8qCiAgKiBQcm9jU2ln bmFsSW5pdAogICoJCVJlZ2lzdGVyIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4gdGhlIFByb2NT aWduYWwgYXJyYXkKLSAqCi0gKiBUaGUgcGFzc2VkIGluZGV4IHNob3VsZCBiZSBteSBCYWNr ZW5kSWQgaWYgdGhlIHByb2Nlc3MgaGFzIG9uZSwKLSAqIG9yIE1heEJhY2tlbmRzICsgYXV4 IHByb2Nlc3MgdHlwZSBpZiBub3QuCiAgKi8KIHZvaWQKLVByb2NTaWduYWxJbml0KGludCBw c3NfaWR4KQorUHJvY1NpZ25hbEluaXQodm9pZCkKIHsKIAlQcm9jU2lnbmFsU2xvdCAqc2xv dDsKIAl1aW50NjQJCWJhcnJpZXJfZ2VuZXJhdGlvbjsKIAotCUFzc2VydChwc3NfaWR4ID49 IDEgJiYgcHNzX2lkeCA8PSBOdW1Qcm9jU2lnbmFsU2xvdHMpOwotCi0Jc2xvdCA9ICZQcm9j U2lnbmFsLT5wc2hfc2xvdFtwc3NfaWR4IC0gMV07CisJaWYgKE15QmFja2VuZElkIDw9IDAp CisJCWVsb2coRVJST1IsICJNeUJhY2tlbmRJZCBub3Qgc2V0Iik7CisJaWYgKE15QmFja2Vu ZElkID4gTnVtUHJvY1NpZ25hbFNsb3RzKQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBN eUJhY2tlbmRJZCAlZCBpbiBQcm9jU2lnbmFsSW5pdCAobWF4ICVkKSIsIE15QmFja2VuZElk LCBOdW1Qcm9jU2lnbmFsU2xvdHMpOworCXNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3Rb TXlCYWNrZW5kSWQgLSAxXTsKIAogCS8qIHNhbml0eSBjaGVjayAqLwogCWlmIChzbG90LT5w c3NfcGlkICE9IDApCiAJCWVsb2coTE9HLCAicHJvY2VzcyAlZCB0YWtpbmcgb3ZlciBQcm9j U2lnbmFsIHNsb3QgJWQsIGJ1dCBpdCdzIG5vdCBlbXB0eSIsCi0JCQkgTXlQcm9jUGlkLCBw c3NfaWR4KTsKKwkJCSBNeVByb2NQaWQsIE15QmFja2VuZElkIC0gMSk7CiAKIAkvKiBDbGVh ciBvdXQgYW55IGxlZnRvdmVyIHNpZ25hbCByZWFzb25zICovCiAJTWVtU2V0KHNsb3QtPnBz c19zaWduYWxGbGFncywgMCwgTlVNX1BST0NTSUdOQUxTICogc2l6ZW9mKHNpZ19hdG9taWNf dCkpOwpAQCAtMjAwLDcgKzE5OSw3IEBAIFByb2NTaWduYWxJbml0KGludCBwc3NfaWR4KQog CU15UHJvY1NpZ25hbFNsb3QgPSBzbG90OwogCiAJLyogU2V0IHVwIHRvIHJlbGVhc2UgdGhl IHNsb3Qgb24gcHJvY2VzcyBleGl0ICovCi0Jb25fc2htZW1fZXhpdChDbGVhbnVwUHJvY1Np Z25hbFN0YXRlLCBJbnQzMkdldERhdHVtKHBzc19pZHgpKTsKKwlvbl9zaG1lbV9leGl0KENs ZWFudXBQcm9jU2lnbmFsU3RhdGUsIChEYXR1bSkgMCk7CiB9CiAKIC8qCkBAIC0yMTIsMTEg KzIxMSw3IEBAIFByb2NTaWduYWxJbml0KGludCBwc3NfaWR4KQogc3RhdGljIHZvaWQKIENs ZWFudXBQcm9jU2lnbmFsU3RhdGUoaW50IHN0YXR1cywgRGF0dW0gYXJnKQogewotCWludAkJ CXBzc19pZHggPSBEYXR1bUdldEludDMyKGFyZyk7Ci0JUHJvY1NpZ25hbFNsb3QgKnNsb3Q7 Ci0KLQlzbG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W3Bzc19pZHggLSAxXTsKLQlBc3Nl cnQoc2xvdCA9PSBNeVByb2NTaWduYWxTbG90KTsKKwlQcm9jU2lnbmFsU2xvdCAqc2xvdCA9 IE15UHJvY1NpZ25hbFNsb3Q7CiAKIAkvKgogCSAqIENsZWFyIE15UHJvY1NpZ25hbFNsb3Qs IHNvIHRoYXQgYSBTSUdVU1IxIHJlY2VpdmVkIGFmdGVyIHRoaXMgcG9pbnQKQEAgLTIzMyw3 ICsyMjgsNyBAQCBDbGVhbnVwUHJvY1NpZ25hbFN0YXRlKGludCBzdGF0dXMsIERhdHVtIGFy ZykKIAkJICogaW5maW5pdGUgbG9vcCB0cnlpbmcgdG8gZXhpdAogCQkgKi8KIAkJZWxvZyhM T0csICJwcm9jZXNzICVkIHJlbGVhc2luZyBQcm9jU2lnbmFsIHNsb3QgJWQsIGJ1dCBpdCBj b250YWlucyAlZCIsCi0JCQkgTXlQcm9jUGlkLCBwc3NfaWR4LCAoaW50KSBzbG90LT5wc3Nf cGlkKTsKKwkJCSBNeVByb2NQaWQsIChpbnQpIChzbG90IC0gUHJvY1NpZ25hbC0+cHNoX3Ns b3QpLCAoaW50KSBzbG90LT5wc3NfcGlkKTsKIAkJcmV0dXJuOwkJCQkJLyogWFhYIGJldHRl ciB0byB6ZXJvIHRoZSBzbG90IGFueXdheT8gKi8KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2ludmFsYWR0LmMKaW5kZXggNzQ4YTc5MmE4NTQuLmY2MjRiZmM3ZDc4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYwpAQCAtMTM5LDcgKzEzOSw2IEBAIHR5cGVk ZWYgc3RydWN0IFByb2NTdGF0ZQogewogCS8qIHByb2NQaWQgaXMgemVybyBpbiBhbiBpbmFj dGl2ZSBQcm9jU3RhdGUgYXJyYXkgZW50cnkuICovCiAJcGlkX3QJCXByb2NQaWQ7CQkvKiBQ SUQgb2YgYmFja2VuZCwgZm9yIHNpZ25hbGluZyAqLwotCVBHUFJPQwkgICAqcHJvYzsJCQkv KiBQR1BST0Mgb2YgYmFja2VuZCAqLwogCS8qIG5leHRNc2dOdW0gaXMgbWVhbmluZ2xlc3Mg aWYgcHJvY1BpZCA9PSAwIG9yIHJlc2V0U3RhdGUgaXMgdHJ1ZS4gKi8KIAlpbnQJCQluZXh0 TXNnTnVtOwkJLyogbmV4dCBtZXNzYWdlIG51bWJlciB0byByZWFkICovCiAJYm9vbAkJcmVz ZXRTdGF0ZTsJCS8qIGJhY2tlbmQgbmVlZHMgdG8gcmVzZXQgaXRzIHN0YXRlICovCkBAIC0x NzIsOCArMTcxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU0lTZWcKIAlpbnQJCQltaW5Nc2dOdW07 CQkvKiBvbGRlc3QgbWVzc2FnZSBzdGlsbCBuZWVkZWQgKi8KIAlpbnQJCQltYXhNc2dOdW07 CQkvKiBuZXh0IG1lc3NhZ2UgbnVtYmVyIHRvIGJlIGFzc2lnbmVkICovCiAJaW50CQkJbmV4 dFRocmVzaG9sZDsJLyogIyBvZiBtZXNzYWdlcyB0byBjYWxsIFNJQ2xlYW51cFF1ZXVlICov Ci0JaW50CQkJbGFzdEJhY2tlbmQ7CS8qIGluZGV4IG9mIGxhc3QgYWN0aXZlIHByb2NTdGF0 ZSBlbnRyeSwgKzEgKi8KLQlpbnQJCQltYXhCYWNrZW5kczsJLyogc2l6ZSBvZiBwcm9jU3Rh dGUgYXJyYXkgKi8KIAogCXNsb2NrX3QJCW1zZ251bUxvY2s7CQkvKiBzcGlubG9jayBwcm90 ZWN0aW5nIG1heE1zZ051bSAqLwogCkBAIC0xODMsMTEgKzE4MCwyOSBAQCB0eXBlZGVmIHN0 cnVjdCBTSVNlZwogCVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgYnVmZmVyW01BWE5VTU1F U1NBR0VTXTsKIAogCS8qCi0JICogUGVyLWJhY2tlbmQgaW52YWxpZGF0aW9uIHN0YXRlIGlu Zm8gKGhhcyBNYXhCYWNrZW5kcyBlbnRyaWVzKS4KKwkgKiBQZXItYmFja2VuZCBpbnZhbGlk YXRpb24gc3RhdGUgaW5mby4KKwkgKgorCSAqICdwcm9jU3RhdGUnIGhhcyBOdW1Qcm9jU3Rh dGVTbG90cyBlbnRyaWVzLCBhbmQgaXMgaW5kZXhlZCBieSBwZ3Byb2Nuby4KKwkgKiAnbnVt UHJvY3MnIGlzIHRoZSBudW1iZXIgb2Ygc2xvdHMgY3VycmVudGx5IGluIHVzZSwgYW5kICdw Z3Byb2Nub3MnIGlzCisJICogYSBkZW5zZSBhcnJheSBvZiB0aGVpciBpbmRleGVzLCB0byBz cGVlZCB1cCBzY2FubmluZyBhbGwgaW4tdXNlIHNsb3RzLgorCSAqCisJICogJ3BncHJvY25v cycgaXMgbGFyZ2VseSByZWR1bmRhbnQgd2l0aCBQcm9jQXJyYXlTdHJ1Y3QtPnBncHJvY25v cywgYnV0CisJICogaGF2aW5nIG91ciBzZXBhcmF0ZSBjb3B5IGF2b2lkcyBjb250ZW50aW9u IG9uIFByb2NBcnJheUxvY2ssIGFuZCBhbGxvd3MKKwkgKiB1cyB0byB0cmFjayBvbmx5IHRo ZSBwcm9jZXNzZXMgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBzaGFyZWQgY2FjaGUKKwkgKiBpbnZh bGlkYXRpb25zLgogCSAqLworCWludAkJCW51bVByb2NzOworCWludAkJICAgKnBncHJvY25v czsKIAlQcm9jU3RhdGUJcHJvY1N0YXRlW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IFNJ U2VnOwogCisvKgorICogV2UgcmVzZXJ2ZSBhIHNsb3QgZm9yIGVhY2ggcG9zc2libGUgQmFj a2VuZElkLCBwbHVzIG9uZSBmb3IgZWFjaAorICogcG9zc2libGUgYXV4aWxpYXJ5IHByb2Nl c3MgdHlwZS4gIChUaGlzIHNjaGVtZSBhc3N1bWVzIHRoZXJlIGlzIG5vdAorICogbW9yZSB0 aGFuIG9uZSBvZiBhbnkgYXV4aWxpYXJ5IHByb2Nlc3MgdHlwZSBhdCBhIHRpbWUuKQorICov CisjZGVmaW5lIE51bVByb2NTdGF0ZVNsb3RzCShNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElB UllfUFJPQ1MpCisKIHN0YXRpYyBTSVNlZyAqc2htSW52YWxCdWZmZXI7CS8qIHBvaW50ZXIg dG8gdGhlIHNoYXJlZCBpbnZhbCBidWZmZXIgKi8KIAogCkBAIC0yMDUsMTYgKzIyMCw4IEBA IFNJbnZhbFNobWVtU2l6ZSh2b2lkKQogCVNpemUJCXNpemU7CiAKIAlzaXplID0gb2Zmc2V0 b2YoU0lTZWcsIHByb2NTdGF0ZSk7Ci0KLQkvKgotCSAqIEluIEhvdCBTdGFuZGJ5IG1vZGUs IHRoZSBzdGFydHVwIHByb2Nlc3MgcmVxdWVzdHMgYSBwcm9jU3RhdGUgYXJyYXkKLQkgKiBz bG90IHVzaW5nIEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQoKS4gRXZlbiB0 aG91Z2gKLQkgKiBNYXhCYWNrZW5kcyBkb2Vzbid0IGFjY291bnQgZm9yIHRoZSBzdGFydHVw IHByb2Nlc3MsIGl0IGlzIGd1YXJhbnRlZWQKLQkgKiB0byBnZXQgYSBmcmVlIHNsb3QuIFRo aXMgaXMgYmVjYXVzZSB0aGUgYXV0b3ZhY3V1bSBsYXVuY2hlciBhbmQgd29ya2VyCi0JICog cHJvY2Vzc2VzLCB3aGljaCBhcmUgaW5jbHVkZWQgaW4gTWF4QmFja2VuZHMsIGFyZSBub3Qg c3RhcnRlZCBpbiBIb3QKLQkgKiBTdGFuZGJ5IG1vZGUuCi0JICovCi0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKHNpemVvZihQcm9jU3RhdGUpLCBNYXhCYWNrZW5kcykpOwor CXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShzaXplb2YoUHJvY1N0YXRlKSwgTnVt UHJvY1N0YXRlU2xvdHMpKTsJLyogcHJvY1N0YXRlICovCisJc2l6ZSA9IGFkZF9zaXplKHNp emUsIG11bF9zaXplKHNpemVvZihpbnQpLCBOdW1Qcm9jU3RhdGVTbG90cykpOwkvKiBwZ3By b2Nub3MgKi8KIAogCXJldHVybiBzaXplOwogfQpAQCAtMjM5LDIzICsyNDYsMjIgQEAgQ3Jl YXRlU2hhcmVkSW52YWxpZGF0aW9uU3RhdGUodm9pZCkKIAlzaG1JbnZhbEJ1ZmZlci0+bWlu TXNnTnVtID0gMDsKIAlzaG1JbnZhbEJ1ZmZlci0+bWF4TXNnTnVtID0gMDsKIAlzaG1JbnZh bEJ1ZmZlci0+bmV4dFRocmVzaG9sZCA9IENMRUFOVVBfTUlOOwotCXNobUludmFsQnVmZmVy LT5sYXN0QmFja2VuZCA9IDA7Ci0Jc2htSW52YWxCdWZmZXItPm1heEJhY2tlbmRzID0gTWF4 QmFja2VuZHM7CiAJU3BpbkxvY2tJbml0KCZzaG1JbnZhbEJ1ZmZlci0+bXNnbnVtTG9jayk7 CiAKIAkvKiBUaGUgYnVmZmVyW10gYXJyYXkgaXMgaW5pdGlhbGx5IGFsbCB1bnVzZWQsIHNv IHdlIG5lZWQgbm90IGZpbGwgaXQgKi8KIAogCS8qIE1hcmsgYWxsIGJhY2tlbmRzIGluYWN0 aXZlLCBhbmQgaW5pdGlhbGl6ZSBuZXh0TFhJRCAqLwotCWZvciAoaSA9IDA7IGkgPCBzaG1J bnZhbEJ1ZmZlci0+bWF4QmFja2VuZHM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgTnVtUHJv Y1N0YXRlU2xvdHM7IGkrKykKIAl7CiAJCXNobUludmFsQnVmZmVyLT5wcm9jU3RhdGVbaV0u cHJvY1BpZCA9IDA7CS8qIGluYWN0aXZlICovCi0JCXNobUludmFsQnVmZmVyLT5wcm9jU3Rh dGVbaV0ucHJvYyA9IE5VTEw7CiAJCXNobUludmFsQnVmZmVyLT5wcm9jU3RhdGVbaV0ubmV4 dE1zZ051bSA9IDA7CS8qIG1lYW5pbmdsZXNzICovCiAJCXNobUludmFsQnVmZmVyLT5wcm9j U3RhdGVbaV0ucmVzZXRTdGF0ZSA9IGZhbHNlOwogCQlzaG1JbnZhbEJ1ZmZlci0+cHJvY1N0 YXRlW2ldLnNpZ25hbGVkID0gZmFsc2U7CiAJCXNobUludmFsQnVmZmVyLT5wcm9jU3RhdGVb aV0uaGFzTWVzc2FnZXMgPSBmYWxzZTsKIAkJc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtp XS5uZXh0TFhJRCA9IEludmFsaWRMb2NhbFRyYW5zYWN0aW9uSWQ7CiAJfQorCXNobUludmFs QnVmZmVyLT5udW1Qcm9jcyA9IDA7CisJc2htSW52YWxCdWZmZXItPnBncHJvY25vcyA9IChp bnQgKikgJnNobUludmFsQnVmZmVyLT5wcm9jU3RhdGVbaV07CiB9CiAKIC8qCkBAIC0yNjUs NTkgKzI3MSw0MSBAQCBDcmVhdGVTaGFyZWRJbnZhbGlkYXRpb25TdGF0ZSh2b2lkKQogdm9p ZAogU2hhcmVkSW52YWxCYWNrZW5kSW5pdChib29sIHNlbmRPbmx5KQogewotCWludAkJCWlu ZGV4OwotCVByb2NTdGF0ZSAgKnN0YXRlUCA9IE5VTEw7CisJUHJvY1N0YXRlICAqc3RhdGVQ OworCXBpZF90CQlvbGRQaWQ7CiAJU0lTZWcJICAgKnNlZ1AgPSBzaG1JbnZhbEJ1ZmZlcjsK KwlpbnQJCQlwZ3Byb2NubzsKKworCWlmIChNeUJhY2tlbmRJZCA8PSAwKQorCQllbG9nKEVS Uk9SLCAiTXlCYWNrZW5kSWQgbm90IHNldCIpOworCWlmIChNeUJhY2tlbmRJZCA+IE51bVBy b2NTdGF0ZVNsb3RzKQorCQllbG9nKFBBTklDLCAidW5leHBlY3RlZCBNeUJhY2tlbmRJZCAl ZCBpbiBTaGFyZWRJbnZhbEJhY2tlbmRJbml0IChtYXggJWQpIiwKKwkJCSBNeUJhY2tlbmRJ ZCwgTnVtUHJvY1N0YXRlU2xvdHMpOworCXBncHJvY25vID0gTXlCYWNrZW5kSWQgLSAxOwor CXN0YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbcGdwcm9jbm9dOwogCiAJLyoKIAkgKiBUaGlz IGNhbiBydW4gaW4gcGFyYWxsZWwgd2l0aCByZWFkIG9wZXJhdGlvbnMsIGJ1dCBub3Qgd2l0 aCB3cml0ZQotCSAqIG9wZXJhdGlvbnMsIHNpbmNlIFNJSW5zZXJ0RGF0YUVudHJpZXMgcmVs aWVzIG9uIGxhc3RCYWNrZW5kIHRvIHNldAotCSAqIGhhc01lc3NhZ2VzIGFwcHJvcHJpYXRl bHkuCisJICogb3BlcmF0aW9ucywgc2luY2UgU0lJbnNlcnREYXRhRW50cmllcyByZWxpZXMg b24gdGhlIHBncHJvY25vcyBhcnJheSB0bworCSAqIHNldCBoYXNNZXNzYWdlcyBhcHByb3By aWF0ZWx5LgogCSAqLwogCUxXTG9ja0FjcXVpcmUoU0ludmFsV3JpdGVMb2NrLCBMV19FWENM VVNJVkUpOwogCi0JLyogTG9vayBmb3IgYSBmcmVlIGVudHJ5IGluIHRoZSBwcm9jU3RhdGUg YXJyYXkgKi8KLQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBzZWdQLT5sYXN0QmFja2VuZDsg aW5kZXgrKykKLQl7Ci0JCWlmIChzZWdQLT5wcm9jU3RhdGVbaW5kZXhdLnByb2NQaWQgPT0g MCkJLyogaW5hY3RpdmUgc2xvdD8gKi8KLQkJewotCQkJc3RhdGVQID0gJnNlZ1AtPnByb2NT dGF0ZVtpbmRleF07Ci0JCQlicmVhazsKLQkJfQotCX0KLQotCWlmIChzdGF0ZVAgPT0gTlVM TCkKKwlvbGRQaWQgPSBzdGF0ZVAtPnByb2NQaWQ7CisJaWYgKG9sZFBpZCAhPSAwKQogCXsK LQkJaWYgKHNlZ1AtPmxhc3RCYWNrZW5kIDwgc2VnUC0+bWF4QmFja2VuZHMpCi0JCXsKLQkJ CXN0YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbc2VnUC0+bGFzdEJhY2tlbmRdOwotCQkJQXNz ZXJ0KHN0YXRlUC0+cHJvY1BpZCA9PSAwKTsKLQkJCXNlZ1AtPmxhc3RCYWNrZW5kKys7Ci0J CX0KLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogb3V0IG9mIHByb2NTdGF0ZSBzbG90czog TWF4QmFja2VuZHMgZXhjZWVkZWQgLS0gcmVwb3J0IG5vcm1hbGx5Ci0JCQkgKi8KLQkJCU15 QmFja2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKLQkJCUxXTG9ja1JlbGVhc2UoU0ludmFs V3JpdGVMb2NrKTsKLQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVf VE9PX01BTllfQ09OTkVDVElPTlMpLAotCQkJCQkgZXJybXNnKCJzb3JyeSwgdG9vIG1hbnkg Y2xpZW50cyBhbHJlYWR5IikpKTsKLQkJfQorCQlMV0xvY2tSZWxlYXNlKFNJbnZhbFdyaXRl TG9jayk7CisJCWVsb2coRVJST1IsICJzaW52YWwgc2xvdCBmb3IgYmFja2VuZCAlZCBpcyBh bHJlYWR5IGluIHVzZSBieSBwcm9jZXNzICVkIiwKKwkJCSBNeUJhY2tlbmRJZCwgKGludCkg b2xkUGlkKTsKIAl9CiAKLQlNeUJhY2tlbmRJZCA9IChzdGF0ZVAgLSAmc2VnUC0+cHJvY1N0 YXRlWzBdKSArIDE7Ci0KLQkvKiBBZHZlcnRpc2UgYXNzaWduZWQgYmFja2VuZCBJRCBpbiBN eVByb2MgKi8KLQlNeVByb2MtPmJhY2tlbmRJZCA9IE15QmFja2VuZElkOworCXNobUludmFs QnVmZmVyLT5wZ3Byb2Nub3Nbc2htSW52YWxCdWZmZXItPm51bVByb2NzKytdID0gcGdwcm9j bm87CiAKIAkvKiBGZXRjaCBuZXh0IGxvY2FsIHRyYW5zYWN0aW9uIElEIGludG8gbG9jYWwg bWVtb3J5ICovCiAJbmV4dExvY2FsVHJhbnNhY3Rpb25JZCA9IHN0YXRlUC0+bmV4dExYSUQ7 CiAKIAkvKiBtYXJrIG15c2VsZiBhY3RpdmUsIHdpdGggYWxsIGV4dGFudCBtZXNzYWdlcyBh bHJlYWR5IHJlYWQgKi8KIAlzdGF0ZVAtPnByb2NQaWQgPSBNeVByb2NQaWQ7Ci0Jc3RhdGVQ LT5wcm9jID0gTXlQcm9jOwogCXN0YXRlUC0+bmV4dE1zZ051bSA9IHNlZ1AtPm1heE1zZ051 bTsKIAlzdGF0ZVAtPnJlc2V0U3RhdGUgPSBmYWxzZTsKIAlzdGF0ZVAtPnNpZ25hbGVkID0g ZmFsc2U7CkBAIC0zMjgsOCArMzE2LDYgQEAgU2hhcmVkSW52YWxCYWNrZW5kSW5pdChib29s IHNlbmRPbmx5KQogCiAJLyogcmVnaXN0ZXIgZXhpdCByb3V0aW5lIHRvIG1hcmsgbXkgZW50 cnkgaW5hY3RpdmUgYXQgZXhpdCAqLwogCW9uX3NobWVtX2V4aXQoQ2xlYW51cEludmFsaWRh dGlvblN0YXRlLCBQb2ludGVyR2V0RGF0dW0oc2VnUCkpOwotCi0JZWxvZyhERUJVRzQsICJt eSBiYWNrZW5kIElEIGlzICVkIiwgTXlCYWNrZW5kSWQpOwogfQogCiAvKgpAQCAtMzQ1LDk2 ICszMzEsMzYgQEAgQ2xlYW51cEludmFsaWRhdGlvblN0YXRlKGludCBzdGF0dXMsIERhdHVt IGFyZykKIHsKIAlTSVNlZwkgICAqc2VnUCA9IChTSVNlZyAqKSBEYXR1bUdldFBvaW50ZXIo YXJnKTsKIAlQcm9jU3RhdGUgICpzdGF0ZVA7CisJaW50CQkJcGdwcm9jbm8gPSBNeUJhY2tl bmRJZCAtIDE7CiAJaW50CQkJaTsKIAogCUFzc2VydChQb2ludGVySXNWYWxpZChzZWdQKSk7 CiAKIAlMV0xvY2tBY3F1aXJlKFNJbnZhbFdyaXRlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAot CXN0YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbTXlCYWNrZW5kSWQgLSAxXTsKKwlzdGF0ZVAg PSAmc2VnUC0+cHJvY1N0YXRlW3BncHJvY25vXTsKIAogCS8qIFVwZGF0ZSBuZXh0IGxvY2Fs IHRyYW5zYWN0aW9uIElEIGZvciBuZXh0IGhvbGRlciBvZiB0aGlzIGJhY2tlbmRJRCAqLwog CXN0YXRlUC0+bmV4dExYSUQgPSBuZXh0TG9jYWxUcmFuc2FjdGlvbklkOwogCiAJLyogTWFy ayBteXNlbGYgaW5hY3RpdmUgKi8KIAlzdGF0ZVAtPnByb2NQaWQgPSAwOwotCXN0YXRlUC0+ cHJvYyA9IE5VTEw7CiAJc3RhdGVQLT5uZXh0TXNnTnVtID0gMDsKIAlzdGF0ZVAtPnJlc2V0 U3RhdGUgPSBmYWxzZTsKIAlzdGF0ZVAtPnNpZ25hbGVkID0gZmFsc2U7CiAKLQkvKiBSZWNv bXB1dGUgaW5kZXggb2YgbGFzdCBhY3RpdmUgYmFja2VuZCAqLwotCWZvciAoaSA9IHNlZ1At Pmxhc3RCYWNrZW5kOyBpID4gMDsgaS0tKQorCWZvciAoaSA9IHNlZ1AtPm51bVByb2NzIC0g MTsgaSA+PSAwOyBpLS0pCiAJewotCQlpZiAoc2VnUC0+cHJvY1N0YXRlW2kgLSAxXS5wcm9j UGlkICE9IDApCi0JCQlicmVhazsKLQl9Ci0Jc2VnUC0+bGFzdEJhY2tlbmQgPSBpOwotCi0J TFdMb2NrUmVsZWFzZShTSW52YWxXcml0ZUxvY2spOwotfQotCi0vKgotICogQmFja2VuZElk R2V0UHJvYwotICoJCUdldCB0aGUgUEdQUk9DIHN0cnVjdHVyZSBmb3IgYSBiYWNrZW5kLCBn aXZlbiB0aGUgYmFja2VuZCBJRC4KLSAqCQlUaGUgcmVzdWx0IG1heSBiZSBvdXQgb2YgZGF0 ZSBhcmJpdHJhcmlseSBxdWlja2x5LCBzbyB0aGUgY2FsbGVyCi0gKgkJbXVzdCBiZSBjYXJl ZnVsIGFib3V0IGhvdyB0aGlzIGluZm9ybWF0aW9uIGlzIHVzZWQuICBOVUxMIGlzCi0gKgkJ cmV0dXJuZWQgaWYgdGhlIGJhY2tlbmQgaXMgbm90IGFjdGl2ZS4KLSAqLwotUEdQUk9DICoK LUJhY2tlbmRJZEdldFByb2MoaW50IGJhY2tlbmRJRCkKLXsKLQlQR1BST0MJICAgKnJlc3Vs dCA9IE5VTEw7Ci0JU0lTZWcJICAgKnNlZ1AgPSBzaG1JbnZhbEJ1ZmZlcjsKLQotCS8qIE5l ZWQgdG8gbG9jayBvdXQgYWRkaXRpb25zL3JlbW92YWxzIG9mIGJhY2tlbmRzICovCi0JTFdM b2NrQWNxdWlyZShTSW52YWxXcml0ZUxvY2ssIExXX1NIQVJFRCk7Ci0KLQlpZiAoYmFja2Vu ZElEID4gMCAmJiBiYWNrZW5kSUQgPD0gc2VnUC0+bGFzdEJhY2tlbmQpCi0JewotCQlQcm9j U3RhdGUgICpzdGF0ZVAgPSAmc2VnUC0+cHJvY1N0YXRlW2JhY2tlbmRJRCAtIDFdOwotCi0J CXJlc3VsdCA9IHN0YXRlUC0+cHJvYzsKLQl9Ci0KLQlMV0xvY2tSZWxlYXNlKFNJbnZhbFdy aXRlTG9jayk7Ci0KLQlyZXR1cm4gcmVzdWx0OwotfQotCi0vKgotICogQmFja2VuZElkR2V0 VHJhbnNhY3Rpb25JZHMKLSAqCQlHZXQgdGhlIHhpZCwgeG1pbiwgbnN1YnhpZCBhbmQgb3Zl cmZsb3cgc3RhdHVzIG9mIHRoZSBiYWNrZW5kLiBUaGUKLSAqCQlyZXN1bHQgbWF5IGJlIG91 dCBvZiBkYXRlIGFyYml0cmFyaWx5IHF1aWNrbHksIHNvIHRoZSBjYWxsZXIgbXVzdCBiZQot ICoJCWNhcmVmdWwgYWJvdXQgaG93IHRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZC4KLSAqLwot dm9pZAotQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMoaW50IGJhY2tlbmRJRCwgVHJhbnNh Y3Rpb25JZCAqeGlkLAotCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqeG1pbiwgaW50ICpuc3Vi eGlkLCBib29sICpvdmVyZmxvd2VkKQotewotCVNJU2VnCSAgICpzZWdQID0gc2htSW52YWxC dWZmZXI7Ci0KLQkqeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JKnhtaW4gPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKLQkqbnN1YnhpZCA9IDA7Ci0JKm92ZXJmbG93ZWQgPSBmYWxz ZTsKLQotCS8qIE5lZWQgdG8gbG9jayBvdXQgYWRkaXRpb25zL3JlbW92YWxzIG9mIGJhY2tl bmRzICovCi0JTFdMb2NrQWNxdWlyZShTSW52YWxXcml0ZUxvY2ssIExXX1NIQVJFRCk7Ci0K LQlpZiAoYmFja2VuZElEID4gMCAmJiBiYWNrZW5kSUQgPD0gc2VnUC0+bGFzdEJhY2tlbmQp Ci0JewotCQlQcm9jU3RhdGUgICpzdGF0ZVAgPSAmc2VnUC0+cHJvY1N0YXRlW2JhY2tlbmRJ RCAtIDFdOwotCQlQR1BST0MJICAgKnByb2MgPSBzdGF0ZVAtPnByb2M7Ci0KLQkJaWYgKHBy b2MgIT0gTlVMTCkKKwkJaWYgKHNlZ1AtPnBncHJvY25vc1tpXSA9PSBwZ3Byb2NubykKIAkJ ewotCQkJKnhpZCA9IHByb2MtPnhpZDsKLQkJCSp4bWluID0gcHJvYy0+eG1pbjsKLQkJCSpu c3VieGlkID0gcHJvYy0+c3VieGlkU3RhdHVzLmNvdW50OwotCQkJKm92ZXJmbG93ZWQgPSBw cm9jLT5zdWJ4aWRTdGF0dXMub3ZlcmZsb3dlZDsKKwkJCWlmIChpICE9IHNlZ1AtPm51bVBy b2NzIC0gMSkKKwkJCQlzZWdQLT5wZ3Byb2Nub3NbaV0gPSBzZWdQLT5wZ3Byb2Nub3Nbc2Vn UC0+bnVtUHJvY3MgLSAxXTsKKwkJCWJyZWFrOwogCQl9CiAJfQorCWlmIChpIDwgMCkKKwkJ ZWxvZyhQQU5JQywgImNvdWxkIG5vdCBmaW5kIGVudHJ5IGluIHNpbnZhbCBhcnJheSIpOwor CXNlZ1AtPm51bVByb2NzLS07CiAKIAlMV0xvY2tSZWxlYXNlKFNJbnZhbFdyaXRlTG9jayk7 CiB9CkBAIC01MDcsOSArNDMzLDkgQEAgU0lJbnNlcnREYXRhRW50cmllcyhjb25zdCBTaGFy ZWRJbnZhbGlkYXRpb25NZXNzYWdlICpkYXRhLCBpbnQgbikKIAkJICogdGhlc2UgKHVubG9j a2VkKSBjaGFuZ2VzIHdpbGwgYmUgY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgd2UgZXhp dAogCQkgKiB0aGUgZnVuY3Rpb24uCiAJCSAqLwotCQlmb3IgKGkgPSAwOyBpIDwgc2VnUC0+ bGFzdEJhY2tlbmQ7IGkrKykKKwkJZm9yIChpID0gMDsgaSA8IHNlZ1AtPm51bVByb2NzOyBp KyspCiAJCXsKLQkJCVByb2NTdGF0ZSAgKnN0YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbaV07 CisJCQlQcm9jU3RhdGUgICpzdGF0ZVAgPSAmc2VnUC0+cHJvY1N0YXRlW3NlZ1AtPnBncHJv Y25vc1tpXV07CiAKIAkJCXN0YXRlUC0+aGFzTWVzc2FnZXMgPSB0cnVlOwogCQl9CkBAIC02 NzcsMTMgKzYwMywxNCBAQCBTSUNsZWFudXBRdWV1ZShib29sIGNhbGxlckhhc1dyaXRlTG9j aywgaW50IG1pbkZyZWUpCiAJbWluc2lnID0gbWluIC0gU0lHX1RIUkVTSE9MRDsKIAlsb3di b3VuZCA9IG1pbiAtIE1BWE5VTU1FU1NBR0VTICsgbWluRnJlZTsKIAotCWZvciAoaSA9IDA7 IGkgPCBzZWdQLT5sYXN0QmFja2VuZDsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCBzZWdQLT5u dW1Qcm9jczsgaSsrKQogCXsKLQkJUHJvY1N0YXRlICAqc3RhdGVQID0gJnNlZ1AtPnByb2NT dGF0ZVtpXTsKKwkJUHJvY1N0YXRlICAqc3RhdGVQID0gJnNlZ1AtPnByb2NTdGF0ZVtzZWdQ LT5wZ3Byb2Nub3NbaV1dOwogCQlpbnQJCQluID0gc3RhdGVQLT5uZXh0TXNnTnVtOwogCi0J CS8qIElnbm9yZSBpZiBpbmFjdGl2ZSBvciBhbHJlYWR5IGluIHJlc2V0IHN0YXRlICovCi0J CWlmIChzdGF0ZVAtPnByb2NQaWQgPT0gMCB8fCBzdGF0ZVAtPnJlc2V0U3RhdGUgfHwgc3Rh dGVQLT5zZW5kT25seSkKKwkJLyogSWdub3JlIGlmIGFscmVhZHkgaW4gcmVzZXQgc3RhdGUg Ki8KKwkJQXNzZXJ0KHN0YXRlUC0+cHJvY1BpZCAhPSAwKTsKKwkJaWYgKHN0YXRlUC0+cmVz ZXRTdGF0ZSB8fCBzdGF0ZVAtPnNlbmRPbmx5KQogCQkJY29udGludWU7CiAKIAkJLyoKQEAg LTcxOSwxMSArNjQ2LDggQEAgU0lDbGVhbnVwUXVldWUoYm9vbCBjYWxsZXJIYXNXcml0ZUxv Y2ssIGludCBtaW5GcmVlKQogCXsKIAkJc2VnUC0+bWluTXNnTnVtIC09IE1TR05VTVdSQVBB Uk9VTkQ7CiAJCXNlZ1AtPm1heE1zZ051bSAtPSBNU0dOVU1XUkFQQVJPVU5EOwotCQlmb3Ig KGkgPSAwOyBpIDwgc2VnUC0+bGFzdEJhY2tlbmQ7IGkrKykKLQkJewotCQkJLyogd2UgZG9u J3QgYm90aGVyIHNraXBwaW5nIGluYWN0aXZlIGVudHJpZXMgaGVyZSAqLwotCQkJc2VnUC0+ cHJvY1N0YXRlW2ldLm5leHRNc2dOdW0gLT0gTVNHTlVNV1JBUEFST1VORDsKLQkJfQorCQlm b3IgKGkgPSAwOyBpIDwgc2VnUC0+bnVtUHJvY3M7IGkrKykKKwkJCXNlZ1AtPnByb2NTdGF0 ZVtzZWdQLT5wZ3Byb2Nub3NbaV1dLm5leHRNc2dOdW0gLT0gTVNHTlVNV1JBUEFST1VORDsK IAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IGQ4NzU1YTEw NmQ1Li45N2QxYWI2NTc0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAt MTM3LDYgKzEzNyw3IEBAIEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9p ZCkKIAkgKiBhcmUgaGVsZCBieSB2eGlkcyBhbmQgcm93IGxldmVsIGxvY2tzIGFyZSBoZWxk IGJ5IHhpZHMuIEFsbCBxdWVyaWVzCiAJICogaG9sZCBBY2Nlc3NTaGFyZUxvY2tzIHNvIG5l dmVyIGJsb2NrIHdoaWxlIHdlIHdyaXRlIG9yIGxvY2sgbmV3IHJvd3MuCiAJICovCisJTXlQ cm9jLT52eGlkLmJhY2tlbmRJZCA9IE15QmFja2VuZElkOwogCXZ4aWQuYmFja2VuZElkID0g TXlCYWNrZW5kSWQ7CiAJdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPSBHZXROZXh0TG9jYWxU cmFuc2FjdGlvbklkKCk7CiAJVmlydHVhbFhhY3RMb2NrVGFibGVJbnNlcnQodnhpZCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2xvY2suYwppbmRleCBjNzBhMWFkYjlhZC4uZTYyOTY4YjRhODYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwpAQCAtMzYyNSw4ICszNjI1LDggQEAgR2V0 TG9ja1N0YXR1c0RhdGEodm9pZCkKIAkJCQkJCQkJIHByb2MtPmZwUmVsSWRbZl0pOwogCQkJ aW5zdGFuY2UtPmhvbGRNYXNrID0gbG9ja2JpdHMgPDwgRkFTVF9QQVRIX0xPQ0tOVU1CRVJf T0ZGU0VUOwogCQkJaW5zdGFuY2UtPndhaXRMb2NrTW9kZSA9IE5vTG9jazsKLQkJCWluc3Rh bmNlLT5iYWNrZW5kID0gcHJvYy0+YmFja2VuZElkOwotCQkJaW5zdGFuY2UtPmx4aWQgPSBw cm9jLT5seGlkOworCQkJaW5zdGFuY2UtPnZ4aWQuYmFja2VuZElkID0gcHJvYy0+dnhpZC5i YWNrZW5kSWQ7CisJCQlpbnN0YW5jZS0+dnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPSBwcm9j LT52eGlkLmx4aWQ7CiAJCQlpbnN0YW5jZS0+cGlkID0gcHJvYy0+cGlkOwogCQkJaW5zdGFu Y2UtPmxlYWRlclBpZCA9IHByb2MtPnBpZDsKIAkJCWluc3RhbmNlLT5mYXN0cGF0aCA9IHRy dWU7CkBAIC0zNjUyLDE1ICszNjUyLDE1IEBAIEdldExvY2tTdGF0dXNEYXRhKHZvaWQpCiAJ CQkJCXJlcGFsbG9jKGRhdGEtPmxvY2tzLCBzaXplb2YoTG9ja0luc3RhbmNlRGF0YSkgKiBl bHMpOwogCQkJfQogCi0JCQl2eGlkLmJhY2tlbmRJZCA9IHByb2MtPmJhY2tlbmRJZDsKKwkJ CXZ4aWQuYmFja2VuZElkID0gcHJvYy0+dnhpZC5iYWNrZW5kSWQ7CiAJCQl2eGlkLmxvY2Fs VHJhbnNhY3Rpb25JZCA9IHByb2MtPmZwTG9jYWxUcmFuc2FjdGlvbklkOwogCiAJCQlpbnN0 YW5jZSA9ICZkYXRhLT5sb2Nrc1tlbF07CiAJCQlTRVRfTE9DS1RBR19WSVJUVUFMVFJBTlNB Q1RJT04oaW5zdGFuY2UtPmxvY2t0YWcsIHZ4aWQpOwogCQkJaW5zdGFuY2UtPmhvbGRNYXNr ID0gTE9DS0JJVF9PTihFeGNsdXNpdmVMb2NrKTsKIAkJCWluc3RhbmNlLT53YWl0TG9ja01v ZGUgPSBOb0xvY2s7Ci0JCQlpbnN0YW5jZS0+YmFja2VuZCA9IHByb2MtPmJhY2tlbmRJZDsK LQkJCWluc3RhbmNlLT5seGlkID0gcHJvYy0+bHhpZDsKKwkJCWluc3RhbmNlLT52eGlkLmJh Y2tlbmRJZCA9IHByb2MtPnZ4aWQuYmFja2VuZElkOworCQkJaW5zdGFuY2UtPnZ4aWQubG9j YWxUcmFuc2FjdGlvbklkID0gcHJvYy0+dnhpZC5seGlkOwogCQkJaW5zdGFuY2UtPnBpZCA9 IHByb2MtPnBpZDsKIAkJCWluc3RhbmNlLT5sZWFkZXJQaWQgPSBwcm9jLT5waWQ7CiAJCQlp bnN0YW5jZS0+ZmFzdHBhdGggPSB0cnVlOwpAQCAtMzcxMiw4ICszNzEyLDggQEAgR2V0TG9j a1N0YXR1c0RhdGEodm9pZCkKIAkJCWluc3RhbmNlLT53YWl0TG9ja01vZGUgPSBwcm9jLT53 YWl0TG9ja01vZGU7CiAJCWVsc2UKIAkJCWluc3RhbmNlLT53YWl0TG9ja01vZGUgPSBOb0xv Y2s7Ci0JCWluc3RhbmNlLT5iYWNrZW5kID0gcHJvYy0+YmFja2VuZElkOwotCQlpbnN0YW5j ZS0+bHhpZCA9IHByb2MtPmx4aWQ7CisJCWluc3RhbmNlLT52eGlkLmJhY2tlbmRJZCA9IHBy b2MtPnZ4aWQuYmFja2VuZElkOworCQlpbnN0YW5jZS0+dnhpZC5sb2NhbFRyYW5zYWN0aW9u SWQgPSBwcm9jLT52eGlkLmx4aWQ7CiAJCWluc3RhbmNlLT5waWQgPSBwcm9jLT5waWQ7CiAJ CWluc3RhbmNlLT5sZWFkZXJQaWQgPSBwcm9jbG9jay0+Z3JvdXBMZWFkZXItPnBpZDsKIAkJ aW5zdGFuY2UtPmZhc3RwYXRoID0gZmFsc2U7CkBAIC0zODg4LDggKzM4ODgsOCBAQCBHZXRT aW5nbGVQcm9jQmxvY2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9ja2VkX3Byb2MsIEJsb2Nr ZWRQcm9jc0RhdGEgKmRhdGEpCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2RlID0gcHJvYy0+ d2FpdExvY2tNb2RlOwogCQllbHNlCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2RlID0gTm9M b2NrOwotCQlpbnN0YW5jZS0+YmFja2VuZCA9IHByb2MtPmJhY2tlbmRJZDsKLQkJaW5zdGFu Y2UtPmx4aWQgPSBwcm9jLT5seGlkOworCQlpbnN0YW5jZS0+dnhpZC5iYWNrZW5kSWQgPSBw cm9jLT52eGlkLmJhY2tlbmRJZDsKKwkJaW5zdGFuY2UtPnZ4aWQubG9jYWxUcmFuc2FjdGlv bklkID0gcHJvYy0+dnhpZC5seGlkOwogCQlpbnN0YW5jZS0+cGlkID0gcHJvYy0+cGlkOwog CQlpbnN0YW5jZS0+bGVhZGVyUGlkID0gcHJvY2xvY2stPmdyb3VwTGVhZGVyLT5waWQ7CiAJ CWluc3RhbmNlLT5mYXN0cGF0aCA9IGZhbHNlOwpAQCAtNDM3NCw4ICs0Mzc0LDggQEAgbG9j a190d29waGFzZV9wb3N0YWJvcnQoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAog ICoJCWxvY2tlcnMsIGFzIHdlIGhhdmVuJ3QgYWR2ZXJ0aXNlZCB0aGlzIHZ4aWQgdmlhIHRo ZSBQcm9jQXJyYXkgeWV0LgogICoKICAqCQlTaW5jZSBNeVByb2MtPmZwTG9jYWxUcmFuc2Fj dGlvbklkIHdpbGwgbm9ybWFsbHkgY29udGFpbiB0aGUgc2FtZSBkYXRhCi0gKgkJYXMgTXlQ cm9jLT5seGlkLCB5b3UgbWlnaHQgd29uZGVyIGlmIHdlIHJlYWxseSBuZWVkIGJvdGguICBU aGUKLSAqCQlkaWZmZXJlbmNlIGlzIHRoYXQgTXlQcm9jLT5seGlkIGlzIHNldCBhbmQgY2xl YXJlZCB1bmxvY2tlZCwgYW5kCisgKgkJYXMgTXlQcm9jLT52eGlkLmx4aWQsIHlvdSBtaWdo dCB3b25kZXIgaWYgd2UgcmVhbGx5IG5lZWQgYm90aC4gIFRoZQorICoJCWRpZmZlcmVuY2Ug aXMgdGhhdCBNeVByb2MtPnZ4aWQubHhpZCBpcyBzZXQgYW5kIGNsZWFyZWQgdW5sb2NrZWQs IGFuZAogICoJCWV4YW1pbmVkIGJ5IHByb2NhcnJheS5jLCB3aGlsZSBmcExvY2FsVHJhbnNh Y3Rpb25JZCBpcyBwcm90ZWN0ZWQgYnkKICAqCQlmcEluZm9Mb2NrIGFuZCBpcyB1c2VkIG9u bHkgYnkgdGhlIGxvY2tpbmcgc3Vic3lzdGVtLiAgRG9pbmcgaXQgdGhpcwogICoJCXdheSBt YWtlcyBpdCBlYXNpZXIgdG8gdmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIGZ1bm55IHJhY2Ug Y29uZGl0aW9ucy4KQEAgLTQzOTEsNyArNDM5MSw3IEBAIFZpcnR1YWxYYWN0TG9ja1RhYmxl SW5zZXJ0KFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQpCiAKIAlMV0xvY2tBY3F1aXJlKCZN eVByb2MtPmZwSW5mb0xvY2ssIExXX0VYQ0xVU0lWRSk7CiAKLQlBc3NlcnQoTXlQcm9jLT5i YWNrZW5kSWQgPT0gdnhpZC5iYWNrZW5kSWQpOworCUFzc2VydChNeVByb2MtPnZ4aWQuYmFj a2VuZElkID09IHZ4aWQuYmFja2VuZElkKTsKIAlBc3NlcnQoTXlQcm9jLT5mcExvY2FsVHJh bnNhY3Rpb25JZCA9PSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkKTsKIAlBc3NlcnQoTXlQ cm9jLT5mcFZYSURMb2NrID09IGZhbHNlKTsKIApAQCAtNDQxMyw3ICs0NDEzLDcgQEAgVmly dHVhbFhhY3RMb2NrVGFibGVDbGVhbnVwKHZvaWQpCiAJYm9vbAkJZmFzdHBhdGg7CiAJTG9j YWxUcmFuc2FjdGlvbklkIGx4aWQ7CiAKLQlBc3NlcnQoTXlQcm9jLT5iYWNrZW5kSWQgIT0g SW52YWxpZEJhY2tlbmRJZCk7CisJQXNzZXJ0KE15UHJvYy0+dnhpZC5iYWNrZW5kSWQgIT0g SW52YWxpZEJhY2tlbmRJZCk7CiAKIAkvKgogCSAqIENsZWFuIHVwIHNoYXJlZCBtZW1vcnkg c3RhdGUuCkBAIC00NTQxLDcgKzQ1NDEsNyBAQCBWaXJ0dWFsWGFjdExvY2soVmlydHVhbFRy YW5zYWN0aW9uSWQgdnhpZCwgYm9vbCB3YWl0KQogCSAqLwogCUxXTG9ja0FjcXVpcmUoJnBy b2MtPmZwSW5mb0xvY2ssIExXX0VYQ0xVU0lWRSk7CiAKLQlpZiAocHJvYy0+YmFja2VuZElk ICE9IHZ4aWQuYmFja2VuZElkCisJaWYgKHByb2MtPnZ4aWQuYmFja2VuZElkICE9IHZ4aWQu YmFja2VuZElkCiAJCXx8IHByb2MtPmZwTG9jYWxUcmFuc2FjdGlvbklkICE9IHZ4aWQubG9j YWxUcmFuc2FjdGlvbklkKQogCXsKIAkJLyogVlhJRCBlbmRlZCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcm9jLmMKaW5kZXggNGFlYzRhM2M1ZjQuLmNkY2Y0Njc0ZTJlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTI0MSwyNSArMjQxLDI1IEBAIEluaXRQcm9jR2xvYmFs KHZvaWQpCiAJCWlmIChpIDwgTWF4Q29ubmVjdGlvbnMpCiAJCXsKIAkJCS8qIFBHUFJPQyBm b3Igbm9ybWFsIGJhY2tlbmQsIGFkZCB0byBmcmVlUHJvY3MgbGlzdCAqLwotCQkJZGxpc3Rf cHVzaF9oZWFkKCZQcm9jR2xvYmFsLT5mcmVlUHJvY3MsICZwcm9jLT5saW5rcyk7CisJCQlk bGlzdF9wdXNoX3RhaWwoJlByb2NHbG9iYWwtPmZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsK IAkJCXByb2MtPnByb2NnbG9iYWxsaXN0ID0gJlByb2NHbG9iYWwtPmZyZWVQcm9jczsKIAkJ fQogCQllbHNlIGlmIChpIDwgTWF4Q29ubmVjdGlvbnMgKyBhdXRvdmFjdXVtX21heF93b3Jr ZXJzICsgMSkKIAkJewogCQkJLyogUEdQUk9DIGZvciBBViBsYXVuY2hlci93b3JrZXIsIGFk ZCB0byBhdXRvdmFjRnJlZVByb2NzIGxpc3QgKi8KLQkJCWRsaXN0X3B1c2hfaGVhZCgmUHJv Y0dsb2JhbC0+YXV0b3ZhY0ZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsKKwkJCWRsaXN0X3B1 c2hfdGFpbCgmUHJvY0dsb2JhbC0+YXV0b3ZhY0ZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsK IAkJCXByb2MtPnByb2NnbG9iYWxsaXN0ID0gJlByb2NHbG9iYWwtPmF1dG92YWNGcmVlUHJv Y3M7CiAJCX0KIAkJZWxzZSBpZiAoaSA8IE1heENvbm5lY3Rpb25zICsgYXV0b3ZhY3V1bV9t YXhfd29ya2VycyArIDEgKyBtYXhfd29ya2VyX3Byb2Nlc3NlcykKIAkJewogCQkJLyogUEdQ Uk9DIGZvciBiZ3dvcmtlciwgYWRkIHRvIGJnd29ya2VyRnJlZVByb2NzIGxpc3QgKi8KLQkJ CWRsaXN0X3B1c2hfaGVhZCgmUHJvY0dsb2JhbC0+Ymd3b3JrZXJGcmVlUHJvY3MsICZwcm9j LT5saW5rcyk7CisJCQlkbGlzdF9wdXNoX3RhaWwoJlByb2NHbG9iYWwtPmJnd29ya2VyRnJl ZVByb2NzLCAmcHJvYy0+bGlua3MpOwogCQkJcHJvYy0+cHJvY2dsb2JhbGxpc3QgPSAmUHJv Y0dsb2JhbC0+Ymd3b3JrZXJGcmVlUHJvY3M7CiAJCX0KIAkJZWxzZSBpZiAoaSA8IE1heEJh Y2tlbmRzKQogCQl7CiAJCQkvKiBQR1BST0MgZm9yIHdhbHNlbmRlciwgYWRkIHRvIHdhbHNl bmRlckZyZWVQcm9jcyBsaXN0ICovCi0JCQlkbGlzdF9wdXNoX2hlYWQoJlByb2NHbG9iYWwt PndhbHNlbmRlckZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsKKwkJCWRsaXN0X3B1c2hfdGFp bCgmUHJvY0dsb2JhbC0+d2Fsc2VuZGVyRnJlZVByb2NzLCAmcHJvYy0+bGlua3MpOwogCQkJ cHJvYy0+cHJvY2dsb2JhbGxpc3QgPSAmUHJvY0dsb2JhbC0+d2Fsc2VuZGVyRnJlZVByb2Nz OwogCQl9CiAKQEAgLTM1NCw2ICszNTQsNyBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCQkJCSBl cnJtc2coInNvcnJ5LCB0b28gbWFueSBjbGllbnRzIGFscmVhZHkiKSkpOwogCX0KIAlNeVBy b2NOdW1iZXIgPSBHZXROdW1iZXJGcm9tUEdQcm9jKE15UHJvYyk7CisJTXlCYWNrZW5kSWQg PSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKE15UHJvYyk7CiAKIAkvKgogCSAqIENyb3NzLWNo ZWNrIHRoYXQgdGhlIFBHUFJPQyBpcyBvZiB0aGUgdHlwZSB3ZSBleHBlY3Q7IGlmIHRoaXMg d2VyZSBub3QKQEAgLTM3NiwxNCArMzc3LDE0IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJICov CiAJZGxpc3Rfbm9kZV9pbml0KCZNeVByb2MtPmxpbmtzKTsKIAlNeVByb2MtPndhaXRTdGF0 dXMgPSBQUk9DX1dBSVRfU1RBVFVTX09LOwotCU15UHJvYy0+bHhpZCA9IEludmFsaWRMb2Nh bFRyYW5zYWN0aW9uSWQ7CiAJTXlQcm9jLT5mcFZYSURMb2NrID0gZmFsc2U7CiAJTXlQcm9j LT5mcExvY2FsVHJhbnNhY3Rpb25JZCA9IEludmFsaWRMb2NhbFRyYW5zYWN0aW9uSWQ7CiAJ TXlQcm9jLT54aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlNeVByb2MtPnhtaW4gPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlNeVByb2MtPnBpZCA9IE15UHJvY1BpZDsKLQkvKiBi YWNrZW5kSWQsIGRhdGFiYXNlSWQgYW5kIHJvbGVJZCB3aWxsIGJlIGZpbGxlZCBpbiBsYXRl ciAqLwotCU15UHJvYy0+YmFja2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKKwlNeVByb2Mt PnZ4aWQuYmFja2VuZElkID0gTXlCYWNrZW5kSWQ7CisJTXlQcm9jLT52eGlkLmx4aWQgPSBJ bnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkOworCS8qIGRhdGFiYXNlSWQgYW5kIHJvbGVJZCB3 aWxsIGJlIGZpbGxlZCBpbiBsYXRlciAqLwogCU15UHJvYy0+ZGF0YWJhc2VJZCA9IEludmFs aWRPaWQ7CiAJTXlQcm9jLT5yb2xlSWQgPSBJbnZhbGlkT2lkOwogCU15UHJvYy0+dGVtcE5h bWVzcGFjZUlkID0gSW52YWxpZE9pZDsKQEAgLTU2MywxMSArNTY0LDExIEBAIEluaXRBdXhp bGlhcnlQcm9jZXNzKHZvaWQpCiAJLyogdXNlIHZvbGF0aWxlIHBvaW50ZXIgdG8gcHJldmVu dCBjb2RlIHJlYXJyYW5nZW1lbnQgKi8KIAkoKHZvbGF0aWxlIFBHUFJPQyAqKSBhdXhwcm9j KS0+cGlkID0gTXlQcm9jUGlkOwogCi0JTXlQcm9jID0gYXV4cHJvYzsKLQogCVNwaW5Mb2Nr UmVsZWFzZShQcm9jU3RydWN0TG9jayk7CiAKKwlNeVByb2MgPSBhdXhwcm9jOwogCU15UHJv Y051bWJlciA9IEdldE51bWJlckZyb21QR1Byb2MoTXlQcm9jKTsKKwlNeUJhY2tlbmRJZCA9 IEdldEJhY2tlbmRJZEZyb21QR1Byb2MoTXlQcm9jKTsKIAogCS8qCiAJICogSW5pdGlhbGl6 ZSBhbGwgZmllbGRzIG9mIE15UHJvYywgZXhjZXB0IGZvciB0aG9zZSBwcmV2aW91c2x5CkBA IC01NzUsMTIgKzU3NiwxMiBAQCBJbml0QXV4aWxpYXJ5UHJvY2Vzcyh2b2lkKQogCSAqLwog CWRsaXN0X25vZGVfaW5pdCgmTXlQcm9jLT5saW5rcyk7CiAJTXlQcm9jLT53YWl0U3RhdHVz ID0gUFJPQ19XQUlUX1NUQVRVU19PSzsKLQlNeVByb2MtPmx4aWQgPSBJbnZhbGlkTG9jYWxU cmFuc2FjdGlvbklkOwogCU15UHJvYy0+ZnBWWElETG9jayA9IGZhbHNlOwogCU15UHJvYy0+ ZnBMb2NhbFRyYW5zYWN0aW9uSWQgPSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkOwogCU15 UHJvYy0+eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJTXlQcm9jLT54bWluID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JTXlQcm9jLT5iYWNrZW5kSWQgPSBJbnZhbGlkQmFja2Vu ZElkOworCU15UHJvYy0+dnhpZC5iYWNrZW5kSWQgPSBJbnZhbGlkQmFja2VuZElkOworCU15 UHJvYy0+dnhpZC5seGlkID0gSW52YWxpZExvY2FsVHJhbnNhY3Rpb25JZDsKIAlNeVByb2Mt PmRhdGFiYXNlSWQgPSBJbnZhbGlkT2lkOwogCU15UHJvYy0+cm9sZUlkID0gSW52YWxpZE9p ZDsKIAlNeVByb2MtPnRlbXBOYW1lc3BhY2VJZCA9IEludmFsaWRPaWQ7CkBAIC05MTEsOCAr OTEyLDE0IEBAIFByb2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJcHJvYyA9IE15UHJv YzsKIAlNeVByb2MgPSBOVUxMOwogCU15UHJvY051bWJlciA9IElOVkFMSURfUEdQUk9DTk87 CisJTXlCYWNrZW5kSWQgPSBJbnZhbGlkQmFja2VuZElkOwogCURpc293bkxhdGNoKCZwcm9j LT5wcm9jTGF0Y2gpOwogCisJLyogTWFyayB0aGUgcHJvYyBubyBsb25nZXIgaW4gdXNlICov CisJcHJvYy0+cGlkID0gMDsKKwlwcm9jLT52eGlkLmJhY2tlbmRJZCA9IEludmFsaWRCYWNr ZW5kSWQ7CisJcHJvYy0+dnhpZC5seGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKIAlw cm9jZ2xvYmFsbGlzdCA9IHByb2MtPnByb2NnbG9iYWxsaXN0OwogCVNwaW5Mb2NrQWNxdWly ZShQcm9jU3RydWN0TG9jayk7CiAKQEAgLTk4Myw2ICs5OTAsNyBAQCBBdXhpbGlhcnlQcm9j S2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQogCXByb2MgPSBNeVByb2M7CiAJTXlQcm9jID0g TlVMTDsKIAlNeVByb2NOdW1iZXIgPSBJTlZBTElEX1BHUFJPQ05POworCU15QmFja2VuZElk ID0gSW52YWxpZEJhY2tlbmRJZDsKIAlEaXNvd25MYXRjaCgmcHJvYy0+cHJvY0xhdGNoKTsK IAogCVNwaW5Mb2NrQWNxdWlyZShQcm9jU3RydWN0TG9jayk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwppbmRleCAxYTEwNTBjOGRhMS4uM2Qz ZjdiMDY3MjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tl bmRfc3RhdHVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9z dGF0dXMuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgkJ LyogZm9yIG1lbW9yeSBiYXJyaWVycyAqLwogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCQkvKiBmb3IgTXlQcm9jICovCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgog I2luY2x1ZGUgInV0aWxzL2FzY2lpLmgiCiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0 dXMuaCIKQEAgLTI5LDEzICszMCwxMiBAQAogLyogLS0tLS0tLS0tLQogICogVG90YWwgbnVt YmVyIG9mIGJhY2tlbmRzIGluY2x1ZGluZyBhdXhpbGlhcnkKICAqCi0gKiBXZSByZXNlcnZl IGEgc2xvdCBmb3IgZWFjaCBwb3NzaWJsZSBCYWNrZW5kSWQsIHBsdXMgb25lIGZvciBlYWNo Ci0gKiBwb3NzaWJsZSBhdXhpbGlhcnkgcHJvY2VzcyB0eXBlLiAgKFRoaXMgc2NoZW1lIGFz c3VtZXMgdGhlcmUgaXMgbm90Ci0gKiBtb3JlIHRoYW4gb25lIG9mIGFueSBhdXhpbGlhcnkg cHJvY2VzcyB0eXBlIGF0IGEgdGltZS4pIE1heEJhY2tlbmRzCi0gKiBpbmNsdWRlcyBhdXRv dmFjdXVtIHdvcmtlcnMgYW5kIGJhY2tncm91bmQgd29ya2VycyBhcyB3ZWxsLgorICogV2Ug cmVzZXJ2ZSBhIHNsb3QgZm9yIGVhY2ggcG9zc2libGUgUEdQUk9DIGVudHJ5LCBpbmNsdWRp bmcgYXV4IHByb2Nlc3Nlcy4KKyAqIChCdXQgbm90IGluY2x1ZGluZyBQR1BST0MgZW50cmll cyByZXNlcnZlZCBmb3IgcHJlcGFyZWQgeGFjdHM7IHRoZXkgYXJlIG5vdAorICogcmVhbCBw cm9jZXNzZXMuKQogICogLS0tLS0tLS0tLQogICovCi0jZGVmaW5lIE51bUJhY2tlbmRTdGF0 U2xvdHMgKE1heEJhY2tlbmRzICsgTlVNX0FVWFBST0NUWVBFUykKKyNkZWZpbmUgTnVtQmFj a2VuZFN0YXRTbG90cyAoTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTKQogCiAK IC8qIC0tLS0tLS0tLS0KQEAgLTIzOCwxMCArMjM4LDkgQEAgQ3JlYXRlU2hhcmVkQmFja2Vu ZFN0YXR1cyh2b2lkKQogCiAvKgogICogSW5pdGlhbGl6ZSBwZ3N0YXRzIGJhY2tlbmQgYWN0 aXZpdHkgc3RhdGUsIGFuZCBzZXQgdXAgb3VyIG9uLXByb2MtZXhpdAotICogaG9vay4gIENh bGxlZCBmcm9tIEluaXRQb3N0Z3JlcyBhbmQgQXV4aWxpYXJ5UHJvY2Vzc01haW4uIEZvciBh dXhpbGlhcnkKLSAqIHByb2Nlc3MsIE15QmFja2VuZElkIGlzIGludmFsaWQuIE90aGVyd2lz ZSwgTXlCYWNrZW5kSWQgbXVzdCBiZSBzZXQsIGJ1dCB3ZQotICogbXVzdCBub3QgaGF2ZSBz dGFydGVkIGFueSB0cmFuc2FjdGlvbiB5ZXQgKHNpbmNlIHRoZSBleGl0IGhvb2sgbXVzdCBy dW4KLSAqIGFmdGVyIHRoZSBsYXN0IHRyYW5zYWN0aW9uIGV4aXQpLgorICogaG9vay4gIENh bGxlZCBmcm9tIEluaXRQb3N0Z3JlcyBhbmQgQXV4aWxpYXJ5UHJvY2Vzc01haW4uICBNeUJh Y2tlbmRJZCBtdXN0CisgKiBiZSBzZXQsIGJ1dCB3ZSBtdXN0IG5vdCBoYXZlIHN0YXJ0ZWQg YW55IHRyYW5zYWN0aW9uIHlldCAoc2luY2UgdGhlIGV4aXQKKyAqIGhvb2sgbXVzdCBydW4g YWZ0ZXIgdGhlIGxhc3QgdHJhbnNhY3Rpb24gZXhpdCkuCiAgKgogICogTk9URTogTXlEYXRh YmFzZUlkIGlzbid0IHNldCB5ZXQ7IHNvIHRoZSBzaHV0ZG93biBob29rIGhhcyB0byBiZSBj YXJlZnVsLgogICovCkBAIC0yNDksMjYgKzI0OCw5IEBAIHZvaWQKIHBnc3RhdF9iZWluaXQo dm9pZCkKIHsKIAkvKiBJbml0aWFsaXplIE15QkVFbnRyeSAqLwotCWlmIChNeUJhY2tlbmRJ ZCAhPSBJbnZhbGlkQmFja2VuZElkKQotCXsKLQkJQXNzZXJ0KE15QmFja2VuZElkID49IDEg JiYgTXlCYWNrZW5kSWQgPD0gTWF4QmFja2VuZHMpOwotCQlNeUJFRW50cnkgPSAmQmFja2Vu ZFN0YXR1c0FycmF5W015QmFja2VuZElkIC0gMV07Ci0JfQotCWVsc2UKLQl7Ci0JCS8qIE11 c3QgYmUgYW4gYXV4aWxpYXJ5IHByb2Nlc3MgKi8KLQkJQXNzZXJ0KE15QXV4UHJvY1R5cGUg IT0gTm90QW5BdXhQcm9jZXNzKTsKLQotCQkvKgotCQkgKiBBc3NpZ24gdGhlIE15QkVFbnRy eSBmb3IgYW4gYXV4aWxpYXJ5IHByb2Nlc3MuICBTaW5jZSBpdCBkb2Vzbid0Ci0JCSAqIGhh dmUgYSBCYWNrZW5kSWQsIHRoZSBzbG90IGlzIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGJhc2Vk IG9uIHRoZQotCQkgKiBhdXhpbGlhcnkgcHJvY2VzcyB0eXBlIChNeUF1eFByb2NUeXBlKS4g IEJhY2tlbmRzIHVzZSBzbG90cyBpbmRleGVkCi0JCSAqIGluIHRoZSByYW5nZSBmcm9tIDAg dG8gTWF4QmFja2VuZHMgKGV4Y2x1c2l2ZSksIHNvIHdlIHVzZQotCQkgKiBNYXhCYWNrZW5k cyArIEF1eFByb2NUeXBlIGFzIHRoZSBpbmRleCBvZiB0aGUgc2xvdCBmb3IgYW4gYXV4aWxp YXJ5Ci0JCSAqIHByb2Nlc3MuCi0JCSAqLwotCQlNeUJFRW50cnkgPSAmQmFja2VuZFN0YXR1 c0FycmF5W01heEJhY2tlbmRzICsgTXlBdXhQcm9jVHlwZV07Ci0JfQorCUFzc2VydChNeUJh Y2tlbmRJZCAhPSBJbnZhbGlkQmFja2VuZElkKTsKKwlBc3NlcnQoTXlCYWNrZW5kSWQgPj0g MSAmJiBNeUJhY2tlbmRJZCA8PSBOdW1CYWNrZW5kU3RhdFNsb3RzKTsKKwlNeUJFRW50cnkg PSAmQmFja2VuZFN0YXR1c0FycmF5W015QmFja2VuZElkIC0gMV07CiAKIAkvKiBTZXQgdXAg YSBwcm9jZXNzLWV4aXQgaG9vayB0byBjbGVhbiB1cCAqLwogCW9uX3NobWVtX2V4aXQocGdz dGF0X2Jlc2h1dGRvd25faG9vaywgMCk7CkBAIC0yODEsMTIgKzI2MywxMiBAQCBwZ3N0YXRf YmVpbml0KHZvaWQpCiAgKglJbml0aWFsaXplIHRoaXMgYmFja2VuZCdzIGVudHJ5IGluIHRo ZSBQZ0JhY2tlbmRTdGF0dXMgYXJyYXkuCiAgKglDYWxsZWQgZnJvbSBJbml0UG9zdGdyZXMu CiAgKgotICoJQXBhcnQgZnJvbSBhdXhpbGlhcnkgcHJvY2Vzc2VzLCBNeUJhY2tlbmRJZCwg TXlEYXRhYmFzZUlkLAotICoJc2Vzc2lvbiB1c2VyaWQsIGFuZCBhcHBsaWNhdGlvbl9uYW1l IG11c3QgYmUgc2V0IGZvciBhCi0gKgliYWNrZW5kIChoZW5jZSwgdGhpcyBjYW5ub3QgYmUg Y29tYmluZWQgd2l0aCBwZ3N0YXRfYmVpbml0KS4KLSAqCU5vdGUgYWxzbyB0aGF0IHdlIG11 c3QgYmUgaW5zaWRlIGEgdHJhbnNhY3Rpb24gaWYgdGhpcyBpc24ndCBhbiBhdXgKLSAqCXBy b2Nlc3MsIGFzIHdlIG1heSBuZWVkIHRvIGRvIGVuY29kaW5nIGNvbnZlcnNpb24gb24gc29t ZSBzdHJpbmdzLgotICogLS0tLS0tLS0tLQorICoJQXBhcnQgZnJvbSBhdXhpbGlhcnkgcHJv Y2Vzc2VzLCBNeURhdGFiYXNlSWQsIHNlc3Npb24gdXNlcmlkLCBhbmQKKyAqCWFwcGxpY2F0 aW9uX25hbWUgbXVzdCBhbHJlYWR5IGJlIHNldCAoaGVuY2UsIHRoaXMgY2Fubm90IGJlIGNv bWJpbmVkCisgKgl3aXRoIHBnc3RhdF9iZWluaXQpLiAgTm90ZSBhbHNvIHRoYXQgd2UgbXVz dCBiZSBpbnNpZGUgYSB0cmFuc2FjdGlvbgorICoJaWYgdGhpcyBpc24ndCBhbiBhdXggcHJv Y2VzcywgYXMgd2UgbWF5IG5lZWQgdG8gZG8gZW5jb2RpbmcgY29udmVyc2lvbgorICoJb24g c29tZSBzdHJpbmdzLgorICotLS0tLS0tLS0tCiAgKi8KIHZvaWQKIHBnc3RhdF9iZXN0YXJ0 KHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKaW5kZXggNGI0OWY3ZmUzZDgu LmJiZTVjYzA4MDZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCkBAIC0zNTMs NyArMzUzLDcgQEAgcGdfbG9ja19zdGF0dXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQlicmVh azsKIAkJfQogCi0JCXZhbHVlc1sxMF0gPSBWWElER2V0RGF0dW0oaW5zdGFuY2UtPmJhY2tl bmQsIGluc3RhbmNlLT5seGlkKTsKKwkJdmFsdWVzWzEwXSA9IFZYSURHZXREYXR1bShpbnN0 YW5jZS0+dnhpZC5iYWNrZW5kSWQsIGluc3RhbmNlLT52eGlkLmxvY2FsVHJhbnNhY3Rpb25J ZCk7CiAJCWlmIChpbnN0YW5jZS0+cGlkICE9IDApCiAJCQl2YWx1ZXNbMTFdID0gSW50MzJH ZXREYXR1bShpbnN0YW5jZS0+cGlkKTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRm dW5jcy5jCmluZGV4IDQ3MDhkNzNmNWZhLi5hNzI2N2RjMTVkMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTQ4LDE5ICsxNDgsMTEgQEAgcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdQUk9DCSAgICpwcm9jOwog CUJhY2tlbmRJZAliYWNrZW5kSWQgPSBJbnZhbGlkQmFja2VuZElkOwogCi0JcHJvYyA9IEJh Y2tlbmRQaWRHZXRQcm9jKHBpZCk7Ci0KIAkvKgogCSAqIFNlZSBpZiB0aGUgcHJvY2VzcyB3 aXRoIGdpdmVuIHBpZCBpcyBhIGJhY2tlbmQgb3IgYW4gYXV4aWxpYXJ5IHByb2Nlc3MuCi0J ICoKLQkgKiBJZiB0aGUgZ2l2ZW4gcHJvY2VzcyBpcyBhIGJhY2tlbmQsIHVzZSBpdHMgYmFj a2VuZCBpZCBpbgotCSAqIFNlbmRQcm9jU2lnbmFsKCkgbGF0ZXIgdG8gc3BlZWQgdXAgdGhl IG9wZXJhdGlvbi4gT3RoZXJ3aXNlLCBkb24ndCBkbwotCSAqIHRoYXQgYmVjYXVzZSBhdXhp bGlhcnkgcHJvY2Vzc2VzIChleGNlcHQgdGhlIHN0YXJ0dXAgcHJvY2VzcykgZG9uJ3QKLQkg KiBoYXZlIGEgdmFsaWQgYmFja2VuZCBpZC4KIAkgKi8KLQlpZiAocHJvYyAhPSBOVUxMKQot CQliYWNrZW5kSWQgPSBwcm9jLT5iYWNrZW5kSWQ7Ci0JZWxzZQorCXByb2MgPSBCYWNrZW5k UGlkR2V0UHJvYyhwaWQpOworCWlmIChwcm9jID09IE5VTEwpCiAJCXByb2MgPSBBdXhpbGlh cnlQaWRHZXRQcm9jKHBpZCk7CiAKIAkvKgpAQCAtMTgzLDYgKzE3NSw4IEBAIHBnX2xvZ19i YWNrZW5kX21lbW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQogCQlQR19SRVRVUk5f Qk9PTChmYWxzZSk7CiAJfQogCisJaWYgKHByb2MgIT0gTlVMTCkKKwkJYmFja2VuZElkID0g R2V0QmFja2VuZElkRnJvbVBHUHJvYyhwcm9jKTsKIAlpZiAoU2VuZFByb2NTaWduYWwocGlk LCBQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgYmFja2VuZElkKSA8IDApCiAJewogCQkv KiBBZ2FpbiwganVzdCBhIHdhcm5pbmcgdG8gYWxsb3cgbG9vcHMgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2NzdmxvZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv ZXJyb3IvY3N2bG9nLmMKaW5kZXggMWI2MmIwN2YyMzEuLjFkNDRkOGE2YTMxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9jc3Zsb2cuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9lcnJvci9jc3Zsb2cuYwpAQCAtMTUyLDggKzE1Miw4IEBAIHdyaXRlX2Nzdmxv ZyhFcnJvckRhdGEgKmVkYXRhKQogCiAJLyogVmlydHVhbCB0cmFuc2FjdGlvbiBpZCAqLwog CS8qIGtlZXAgVlhJRCBmb3JtYXQgaW4gc3luYyB3aXRoIGxvY2tmdW5jcy5jICovCi0JaWYg KE15UHJvYyAhPSBOVUxMICYmIE15UHJvYy0+YmFja2VuZElkICE9IEludmFsaWRCYWNrZW5k SWQpCi0JCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIiVkLyV1IiwgTXlQcm9jLT5iYWNrZW5k SWQsIE15UHJvYy0+bHhpZCk7CisJaWYgKE15UHJvYyAhPSBOVUxMICYmIE15UHJvYy0+dnhp ZC5iYWNrZW5kSWQgIT0gSW52YWxpZEJhY2tlbmRJZCkKKwkJYXBwZW5kU3RyaW5nSW5mbygm YnVmLCAiJWQvJXUiLCBNeVByb2MtPnZ4aWQuYmFja2VuZElkLCBNeVByb2MtPnZ4aWQubHhp ZCk7CiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJywnKTsKIAogCS8qIFRyYW5zYWN0 aW9uIGlkICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMg Yi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKaW5kZXggYmJhMDBhMDA4N2YuLjhj ZjM2Y2JjZTA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCkBAIC0zMDc4LDE4ICszMDc4 LDE4IEBAIGxvZ19zdGF0dXNfZm9ybWF0KFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFyICpm b3JtYXQsIEVycm9yRGF0YSAqZWRhdGEpCiAJCQkJYnJlYWs7CiAJCQljYXNlICd2JzoKIAkJ CQkvKiBrZWVwIFZYSUQgZm9ybWF0IGluIHN5bmMgd2l0aCBsb2NrZnVuY3MuYyAqLwotCQkJ CWlmIChNeVByb2MgIT0gTlVMTCAmJiBNeVByb2MtPmJhY2tlbmRJZCAhPSBJbnZhbGlkQmFj a2VuZElkKQorCQkJCWlmIChNeVByb2MgIT0gTlVMTCAmJiBNeVByb2MtPnZ4aWQuYmFja2Vu ZElkICE9IEludmFsaWRCYWNrZW5kSWQpCiAJCQkJewogCQkJCQlpZiAocGFkZGluZyAhPSAw KQogCQkJCQl7CiAJCQkJCQljaGFyCQlzdHJmYnVmWzEyOF07CiAKIAkJCQkJCXNucHJpbnRm KHN0cmZidWYsIHNpemVvZihzdHJmYnVmKSAtIDEsICIlZC8ldSIsCi0JCQkJCQkJCSBNeVBy b2MtPmJhY2tlbmRJZCwgTXlQcm9jLT5seGlkKTsKKwkJCQkJCQkJIE15UHJvYy0+dnhpZC5i YWNrZW5kSWQsIE15UHJvYy0+dnhpZC5seGlkKTsKIAkJCQkJCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAiJSpzIiwgcGFkZGluZywgc3RyZmJ1Zik7CiAJCQkJCX0KIAkJCQkJZWxzZQotCQkJ CQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlZC8ldSIsIE15UHJvYy0+YmFja2VuZElkLCBN eVByb2MtPmx4aWQpOworCQkJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlZC8ldSIsIE15 UHJvYy0+dnhpZC5iYWNrZW5kSWQsIE15UHJvYy0+dnhpZC5seGlkKTsKIAkJCQl9CiAJCQkJ ZWxzZSBpZiAocGFkZGluZyAhPSAwKQogCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3BhY2VzKGJ1 ZiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2pzb25sb2cuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2Vycm9yL2pzb25sb2cuYwppbmRleCAyOTAzNTYxZjFjNC4uMDY3 ZDllMzBiMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2pzb25sb2cu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9qc29ubG9nLmMKQEAgLTE5Nyw5ICsx OTcsOSBAQCB3cml0ZV9qc29ubG9nKEVycm9yRGF0YSAqZWRhdGEpCiAKIAkvKiBWaXJ0dWFs IHRyYW5zYWN0aW9uIGlkICovCiAJLyoga2VlcCBWWElEIGZvcm1hdCBpbiBzeW5jIHdpdGgg bG9ja2Z1bmNzLmMgKi8KLQlpZiAoTXlQcm9jICE9IE5VTEwgJiYgTXlQcm9jLT5iYWNrZW5k SWQgIT0gSW52YWxpZEJhY2tlbmRJZCkKLQkJYXBwZW5kSlNPTktleVZhbHVlRm10KCZidWYs ICJ2eGlkIiwgdHJ1ZSwgIiVkLyV1IiwgTXlQcm9jLT5iYWNrZW5kSWQsCi0JCQkJCQkJICBN eVByb2MtPmx4aWQpOworCWlmIChNeVByb2MgIT0gTlVMTCAmJiBNeVByb2MtPnZ4aWQuYmFj a2VuZElkICE9IEludmFsaWRCYWNrZW5kSWQpCisJCWFwcGVuZEpTT05LZXlWYWx1ZUZtdCgm YnVmLCAidnhpZCIsIHRydWUsICIlZC8ldSIsCisJCQkJCQkJICBNeVByb2MtPnZ4aWQuYmFj a2VuZElkLCBNeVByb2MtPnZ4aWQubHhpZCk7CiAKIAkvKiBUcmFuc2FjdGlvbiBpZCAqLwog CWFwcGVuZEpTT05LZXlWYWx1ZUZtdCgmYnVmLCAidHhpZCIsIGZhbHNlLCAiJXUiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDc3OTc4NzZkMDA4Li4yNTY4ZTQ2ZGY1 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpAQCAtNzQxLDE4ICs3NDEsMTAg QEAgSW5pdFBvc3RncmVzKGNvbnN0IGNoYXIgKmluX2RibmFtZSwgT2lkIGRib2lkLAogCS8q CiAJICogSW5pdGlhbGl6ZSBteSBlbnRyeSBpbiB0aGUgc2hhcmVkLWludmFsaWRhdGlvbiBt YW5hZ2VyJ3MgYXJyYXkgb2YKIAkgKiBwZXItYmFja2VuZCBkYXRhLgotCSAqCi0JICogU2V0 cyB1cCBNeUJhY2tlbmRJZCwgYSB1bmlxdWUgYmFja2VuZCBpZGVudGlmaWVyLgogCSAqLwot CU15QmFja2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKLQogCVNoYXJlZEludmFsQmFja2Vu ZEluaXQoZmFsc2UpOwogCi0JaWYgKE15QmFja2VuZElkID4gTWF4QmFja2VuZHMgfHwgTXlC YWNrZW5kSWQgPD0gMCkKLQkJZWxvZyhGQVRBTCwgImJhZCBiYWNrZW5kIElEOiAlZCIsIE15 QmFja2VuZElkKTsKLQotCS8qIE5vdyB0aGF0IHdlIGhhdmUgYSBCYWNrZW5kSWQsIHdlIGNh biBwYXJ0aWNpcGF0ZSBpbiBQcm9jU2lnbmFsICovCi0JUHJvY1NpZ25hbEluaXQoTXlCYWNr ZW5kSWQpOworCVByb2NTaWduYWxJbml0KCk7CiAKIAkvKgogCSAqIEFsc28gc2V0IHVwIHRp bWVvdXQgaGFuZGxlcnMgbmVlZGVkIGZvciBiYWNrZW5kIG9wZXJhdGlvbi4gIFdlIG5lZWQK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKaW5kZXggNjc1ZTgxZDgyZDcuLmEwOTE2OTU5 YjE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwpAQCAtMTE1NCw3ICsxMTU0LDgg QEAgRXhwb3J0U25hcHNob3QoU25hcHNob3Qgc25hcHNob3QpCiAJICogaW5zaWRlIHRoZSB0 cmFuc2FjdGlvbiBmcm9tIDEuCiAJICovCiAJc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgp LCBTTkFQU0hPVF9FWFBPUlRfRElSICIvJTA4WC0lMDhYLSVkIiwKLQkJCSBNeVByb2MtPmJh Y2tlbmRJZCwgTXlQcm9jLT5seGlkLCBsaXN0X2xlbmd0aChleHBvcnRlZFNuYXBzaG90cykg KyAxKTsKKwkJCSBNeVByb2MtPnZ4aWQuYmFja2VuZElkLCBNeVByb2MtPnZ4aWQubHhpZCwK KwkJCSBsaXN0X2xlbmd0aChleHBvcnRlZFNuYXBzaG90cykgKyAxKTsKIAogCS8qCiAJICog Q29weSB0aGUgc25hcHNob3QgaW50byBUb3BUcmFuc2FjdGlvbkNvbnRleHQsIGFkZCBpdCB0 byB0aGUKQEAgLTExODEsNyArMTE4Miw3IEBAIEV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNu YXBzaG90KQogCSAqLwogCWluaXRTdHJpbmdJbmZvKCZidWYpOwogCi0JYXBwZW5kU3RyaW5n SW5mbygmYnVmLCAidnhpZDolZC8ldVxuIiwgTXlQcm9jLT5iYWNrZW5kSWQsIE15UHJvYy0+ bHhpZCk7CisJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAidnhpZDolZC8ldVxuIiwgTXlQcm9j LT52eGlkLmJhY2tlbmRJZCwgTXlQcm9jLT52eGlkLmx4aWQpOwogCWFwcGVuZFN0cmluZ0lu Zm8oJmJ1ZiwgInBpZDolZFxuIiwgTXlQcm9jUGlkKTsKIAlhcHBlbmRTdHJpbmdJbmZvKCZi dWYsICJkYmlkOiV1XG4iLCBNeURhdGFiYXNlSWQpOwogCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZiwgImlzbzolZFxuIiwgWGFjdElzb0xldmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggMDQ0NWZiZjYx ZDcuLjE5MjEzNjkzZWE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAor KysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtNDQ1LDggKzQ0NSw2IEBAIHR5cGVk ZWYgZW51bQogCVdhbFdyaXRlclByb2Nlc3MsCiAJV2FsUmVjZWl2ZXJQcm9jZXNzLAogCVdh bFN1bW1hcml6ZXJQcm9jZXNzLAotCi0JTlVNX0FVWFBST0NUWVBFUwkJCS8qIE11c3QgYmUg bGFzdCEgKi8KIH0gQXV4UHJvY1R5cGU7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBBdXhQcm9j VHlwZSBNeUF1eFByb2NUeXBlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9i YWNrZW5kaWQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYmFja2VuZGlkLmgKaW5kZXggNTBh Yzk4MmRhMTkuLjAxMzg3NzIzZjc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdl L2JhY2tlbmRpZC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYmFja2VuZGlkLmgKQEAg LTE0LDExICsxNCwxNSBAQAogI2lmbmRlZiBCQUNLRU5ESURfSAogI2RlZmluZSBCQUNLRU5E SURfSAogCi0vKiAtLS0tLS0tLS0tLS0tLS0tCi0gKgkJLWNpbSA4LzE3LzkwCi0gKiAtLS0t LS0tLS0tLS0tLS0tCisvKgorICogQmFja2VuZElkIHVuaXF1ZWx5IGlkZW50aWZpZXMgYW4g YWN0aXZlIGJhY2tlbmQgb3IgYXV4aWxpYXJ5IHByb2Nlc3MuICBJdCdzCisgKiBhc3NpZ25l ZCBhdCBiYWNrZW5kIHN0YXJ0dXAgYWZ0ZXIgYXV0aGVudGljYXRpb24uICBOb3RlIHRoYXQg YSBiYWNrZW5kIElECisgKiBjYW4gYmUgcmV1c2VkIGZvciBhIGRpZmZlcmVudCBiYWNrZW5k IGltbWVkaWF0ZWx5IGFmdGVyIGEgYmFja2VuZCBleGl0cy4KKyAqCisgKiBCYWNrZW5kIElE cyBhcmUgYXNzaWduZWQgc3RhcnRpbmcgZnJvbSAxLiBGb3IgaGlzdG9yaWNhbCByZWFzb25z LCBCYWNrZW5kSWQKKyAqIDAgaXMgdW51c2VkLCBidXQgSW52YWxpZEJhY2tlbmRJZCBpcyBk ZWZpbmVkIGFzIC0xLgogICovCi10eXBlZGVmIGludCBCYWNrZW5kSWQ7CQkJLyogdW5pcXVl IGN1cnJlbnRseSBhY3RpdmUgYmFja2VuZCBpZGVudGlmaWVyICovCit0eXBlZGVmIGludCBC YWNrZW5kSWQ7CiAKICNkZWZpbmUgSW52YWxpZEJhY2tlbmRJZAkJKC0xKQogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv bG9jay5oCmluZGV4IGVkNjA3MWYzMjg2Li5jNWM4NDIwMTM3OCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2Nr LmgKQEAgLTc0LDkgKzc0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QKICNkZWZpbmUgU2V0SW52YWxp ZFZpcnR1YWxUcmFuc2FjdGlvbklkKHZ4aWQpIFwKIAkoKHZ4aWQpLmJhY2tlbmRJZCA9IElu dmFsaWRCYWNrZW5kSWQsIFwKIAkgKHZ4aWQpLmxvY2FsVHJhbnNhY3Rpb25JZCA9IEludmFs aWRMb2NhbFRyYW5zYWN0aW9uSWQpCi0jZGVmaW5lIEdFVF9WWElEX0ZST01fUEdQUk9DKHZ4 aWQsIHByb2MpIFwKLQkoKHZ4aWQpLmJhY2tlbmRJZCA9IChwcm9jKS5iYWNrZW5kSWQsIFwK LQkgKHZ4aWQpLmxvY2FsVHJhbnNhY3Rpb25JZCA9IChwcm9jKS5seGlkKQorI2RlZmluZSBH RVRfVlhJRF9GUk9NX1BHUFJPQyh2eGlkX2RzdCwgcHJvYykgXAorCSgodnhpZF9kc3QpLmJh Y2tlbmRJZCA9IChwcm9jKS52eGlkLmJhY2tlbmRJZCwgXAorCQkgKHZ4aWRfZHN0KS5sb2Nh bFRyYW5zYWN0aW9uSWQgPSAocHJvYykudnhpZC5seGlkKQogCiAvKiBNQVhfTE9DS01PREVT IGNhbm5vdCBiZSBsYXJnZXIgdGhhbiB0aGUgIyBvZiBiaXRzIGluIExPQ0tNQVNLICovCiAj ZGVmaW5lIE1BWF9MT0NLTU9ERVMJCTEwCkBAIC00NTQsOCArNDU0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgTG9ja0luc3RhbmNlRGF0YQogCUxPQ0tUQUcJCWxvY2t0YWc7CQkvKiB0YWcgZm9y IGxvY2tlZCBvYmplY3QgKi8KIAlMT0NLTUFTSwlob2xkTWFzazsJCS8qIGxvY2tzIGhlbGQg YnkgdGhpcyBQR1BST0MgKi8KIAlMT0NLTU9ERQl3YWl0TG9ja01vZGU7CS8qIGxvY2sgYXdh aXRlZCBieSB0aGlzIFBHUFJPQywgaWYgYW55ICovCi0JQmFja2VuZElkCWJhY2tlbmQ7CQkv KiBiYWNrZW5kIElEIG9mIHRoaXMgUEdQUk9DICovCi0JTG9jYWxUcmFuc2FjdGlvbklkIGx4 aWQ7CS8qIGxvY2FsIHRyYW5zYWN0aW9uIElEIG9mIHRoaXMgUEdQUk9DICovCisJVmlydHVh bFRyYW5zYWN0aW9uSWQgdnhpZDsJLyogbG9jYWwgdHJhbnNhY3Rpb24gSUQgb2YgdGhpcyBQ R1BST0MgKi8KIAlUaW1lc3RhbXBUeiB3YWl0U3RhcnQ7CQkvKiB0aW1lIGF0IHdoaWNoIHRo aXMgUEdQUk9DIHN0YXJ0ZWQgd2FpdGluZwogCQkJCQkJCQkgKiBmb3IgbG9jayAqLwogCWlu dAkJCXBpZDsJCQkvKiBwaWQgb2YgdGhpcyBQR1BST0MgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKaW5k ZXggNDQ1M2M2ZGY4NzcuLmQyOTgxMWNlMTZkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaApAQCAtMTg2 LDE2ICsxODYsMzEgQEAgc3RydWN0IFBHUFJPQwogCQkJCQkJCQkgKiB2YWN1dW0gbXVzdCBu b3QgcmVtb3ZlIHR1cGxlcyBkZWxldGVkIGJ5CiAJCQkJCQkJCSAqIHhpZCA+PSB4bWluICEg Ki8KIAotCUxvY2FsVHJhbnNhY3Rpb25JZCBseGlkOwkvKiBsb2NhbCBpZCBvZiB0b3AtbGV2 ZWwgdHJhbnNhY3Rpb24gY3VycmVudGx5Ci0JCQkJCQkJCSAqIGJlaW5nIGV4ZWN1dGVkIGJ5 IHRoaXMgcHJvYywgaWYgcnVubmluZzsKLQkJCQkJCQkJICogZWxzZSBJbnZhbGlkTG9jYWxU cmFuc2FjdGlvbklkICovCiAJaW50CQkJcGlkOwkJCS8qIEJhY2tlbmQncyBwcm9jZXNzIElE OyAwIGlmIHByZXBhcmVkIHhhY3QgKi8KIAogCWludAkJCXBneGFjdG9mZjsJCS8qIG9mZnNl dCBpbnRvIHZhcmlvdXMgUHJvY0dsb2JhbC0+YXJyYXlzIHdpdGgKIAkJCQkJCQkJICogZGF0 YSBtaXJyb3JlZCBmcm9tIHRoaXMgUEdQUk9DICovCiAKKwkvKgorCSAqIEN1cnJlbnRseSBy dW5uaW5nIHRvcC1sZXZlbCB0cmFuc2FjdGlvbidzIHZpcnR1YWwgeGlkLiBUb2dldGhlciB0 aGVzZQorCSAqIGZvcm0gYSBWaXJ0dWFsVHJhbnNhY3Rpb25JZCwgYnV0IHdlIGRvbid0IHVz ZSB0aGF0IHN0cnVjdCBiZWNhdXNlIHRoaXMKKwkgKiBpcyBub3QgYXRvbWljYWxseSBhc3Np Z25hYmxlIGFzIHdob2xlLCBhbmQgd2Ugd2FudCB0byBlbmZvcmNlIGNvZGUgdG8KKwkgKiBj b25zaWRlciBib3RoIHBhcnRzIHNlcGFyYXRlbHkuICBTZWUgY29tbWVudHMgYXQgVmlydHVh bFRyYW5zYWN0aW9uSWQuCisJICovCisJc3RydWN0IHsKKwkJQmFja2VuZElkCWJhY2tlbmRJ ZDsJCS8qIEZvciByZWd1bGFyIGJhY2tlbmRzLCBlcXVhbCB0bworCQkJCQkJCQkJICogR2V0 QmFja2VuZElkRnJvbVBHUHJvYyhwcm9jKS4gIEZvcgorCQkJCQkJCQkJICogcHJlcGFyZWQg eGFjdHMsIElEIG9mIHRoZSBvcmlnaW5hbAorCQkJCQkJCQkJICogYmFja2VuZCB0aGF0IHBy b2Nlc3NlZCB0aGUKKwkJCQkJCQkJCSAqIHRyYW5zYWN0aW9uLiBGb3IgdW51c2VkIFBHUFJP QyBlbnRyaWVzLAorCQkJCQkJCQkJICogSW52YWxpZGJhY2tlbmRJRC4gKi8KKwkJTG9jYWxU cmFuc2FjdGlvbklkIGx4aWQ7CS8qIGxvY2FsIGlkIG9mIHRvcC1sZXZlbCB0cmFuc2FjdGlv bgorCQkJCQkJCQkJICogY3VycmVudGx5ICogYmVpbmcgZXhlY3V0ZWQgYnkgdGhpcworCQkJ CQkJCQkJICogcHJvYywgaWYgcnVubmluZzsgZWxzZQorCQkJCQkJCQkJICogSW52YWxpZExv Y2FsdHJhbnNhY3Rpb25JZCAqLworCX0gdnhpZDsKKwogCS8qIFRoZXNlIGZpZWxkcyBhcmUg emVybyB3aGlsZSBhIGJhY2tlbmQgaXMgc3RpbGwgc3RhcnRpbmcgdXA6ICovCi0JQmFja2Vu ZElkCWJhY2tlbmRJZDsJCS8qIFRoaXMgYmFja2VuZCdzIGJhY2tlbmQgSUQgKGlmIGFzc2ln bmVkKSAqLwogCU9pZAkJCWRhdGFiYXNlSWQ7CQkvKiBPSUQgb2YgZGF0YWJhc2UgdGhpcyBi YWNrZW5kIGlzIHVzaW5nICovCiAJT2lkCQkJcm9sZUlkOwkJCS8qIE9JRCBvZiByb2xlIHVz aW5nIHRoaXMgYmFja2VuZCAqLwogCkBAIC00MDYsOSArNDIxLDE2IEBAIGV4dGVybiBQR0RM TElNUE9SVCBQUk9DX0hEUiAqUHJvY0dsb2JhbDsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFBH UFJPQyAqUHJlcGFyZWRYYWN0UHJvY3M7CiAKLS8qIEFjY2Vzc29yIGZvciBQR1BST0MgZ2l2 ZW4gYSBwZ3Byb2NubywgYW5kIHZpY2UgdmVyc2EuICovCisvKgorICogQWNjZXNzb3JzIGZv ciBnZXR0aW5nIFBHUFJPQyBnaXZlbiBhIHBncHJvY25vIG9yIEJhY2tlbmRJZCwgYW5kIHZp Y2UgdmVyc2EuCisgKgorICogRm9yIGhpc3RvcmljYWwgcmVhc29ucywgc29tZSBjb2RlIHVz ZXMgMC1iYXNlZCAicHJvYyBudW1iZXJzIiwgd2hpbGUgb3RoZXIKKyAqIGNvZGUgdXNlcyAx LWJhc2VkIGJhY2tlbmQgSURzLgorICovCiAjZGVmaW5lIEdldFBHUHJvY0J5TnVtYmVyKG4p ICgmUHJvY0dsb2JhbC0+YWxsUHJvY3NbKG4pXSkKICNkZWZpbmUgR2V0TnVtYmVyRnJvbVBH UHJvYyhwcm9jKSAoKHByb2MpIC0gJlByb2NHbG9iYWwtPmFsbFByb2NzWzBdKQorI2RlZmlu ZSBHZXRQR1Byb2NCeUJhY2tlbmRJZChuKSAoJlByb2NHbG9iYWwtPmFsbFByb2NzWyhuKSAt IDFdKQorI2RlZmluZSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKHByb2MpIChHZXROdW1iZXJG cm9tUEdQcm9jKHByb2MpICsgMSkKIAogLyoKICAqIFdlIHNldCBhc2lkZSBzb21lIGV4dHJh IFBHUFJPQyBzdHJ1Y3R1cmVzIGZvciBhdXhpbGlhcnkgcHJvY2Vzc2VzLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY2FycmF5LmgKaW5kZXggZjNlYmE5Yjc2NDAuLjNhZjc1NzdlOGM2IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCisrKyBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvY2FycmF5LmgKQEAgLTY0LDYgKzY0LDEwIEBAIGV4dGVybiBWaXJ0dWFs VHJhbnNhY3Rpb25JZCAqR2V0VmlydHVhbFhJRHNEZWxheWluZ0Noa3B0KGludCAqbnZ4aWRz LCBpbnQgdHlwZSk7CiBleHRlcm4gYm9vbCBIYXZlVmlydHVhbFhJRHNEZWxheWluZ0Noa3B0 KFZpcnR1YWxUcmFuc2FjdGlvbklkICp2eGlkcywKIAkJCQkJCQkJCQkgaW50IG52eGlkcywg aW50IHR5cGUpOwogCitleHRlcm4gUEdQUk9DICpCYWNrZW5kSWRHZXRQcm9jKGludCBiYWNr ZW5kSUQpOworZXh0ZXJuIHZvaWQgQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMoaW50IGJh Y2tlbmRJRCwgVHJhbnNhY3Rpb25JZCAqeGlkLAorCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25J ZCAqeG1pbiwgaW50ICpuc3VieGlkLAorCQkJCQkJCQkJICAgYm9vbCAqb3ZlcmZsb3dlZCk7 CiBleHRlcm4gUEdQUk9DICpCYWNrZW5kUGlkR2V0UHJvYyhpbnQgcGlkKTsKIGV4dGVybiBQ R1BST0MgKkJhY2tlbmRQaWRHZXRQcm9jV2l0aExvY2soaW50IHBpZCk7CiBleHRlcm4gaW50 CUJhY2tlbmRYaWRHZXRQaWQoVHJhbnNhY3Rpb25JZCB4aWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3By b2NzaWduYWwuaAppbmRleCA1MmRjYjRjMmFkZi4uZmViZGRhMzYxMWMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC02Miw3ICs2Miw3IEBAIHR5cGVkZWYgZW51bQogZXh0 ZXJuIFNpemUgUHJvY1NpZ25hbFNobWVtU2l6ZSh2b2lkKTsKIGV4dGVybiB2b2lkIFByb2NT aWduYWxTaG1lbUluaXQodm9pZCk7CiAKLWV4dGVybiB2b2lkIFByb2NTaWduYWxJbml0KGlu dCBwc3NfaWR4KTsKK2V4dGVybiB2b2lkIFByb2NTaWduYWxJbml0KHZvaWQpOwogZXh0ZXJu IGludAlTZW5kUHJvY1NpZ25hbChwaWRfdCBwaWQsIFByb2NTaWduYWxSZWFzb24gcmVhc29u LAogCQkJCQkJICAgQmFja2VuZElkIGJhY2tlbmRJZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZh bGFkdC5oCmluZGV4IGFhM2QyMDNlZmNhLi5jM2M5N2IzZjhiNyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3NpbnZhbGFkdC5oCkBAIC0zMSwxMCArMzEsNiBAQAogZXh0ZXJuIFNpemUgU0ludmFsU2ht ZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgQ3JlYXRlU2hhcmVkSW52YWxpZGF0aW9uU3Rh dGUodm9pZCk7CiBleHRlcm4gdm9pZCBTaGFyZWRJbnZhbEJhY2tlbmRJbml0KGJvb2wgc2Vu ZE9ubHkpOwotZXh0ZXJuIFBHUFJPQyAqQmFja2VuZElkR2V0UHJvYyhpbnQgYmFja2VuZElE KTsKLWV4dGVybiB2b2lkIEJhY2tlbmRJZEdldFRyYW5zYWN0aW9uSWRzKGludCBiYWNrZW5k SUQsIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnht aW4sIGludCAqbnN1YnhpZCwKLQkJCQkJCQkJCSAgIGJvb2wgKm92ZXJmbG93ZWQpOwogCiBl eHRlcm4gdm9pZCBTSUluc2VydERhdGFFbnRyaWVzKGNvbnN0IFNoYXJlZEludmFsaWRhdGlv bk1lc3NhZ2UgKmRhdGEsIGludCBuKTsKIGV4dGVybiBpbnQJU0lHZXREYXRhRW50cmllcyhT aGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlICpkYXRhLCBpbnQgZGF0YXNpemUpOwpkaWZmIC0t Z2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyBiL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9leGVjLmMKaW5kZXggNmQxNjkxMzQwYzUuLmVkNTE2OTQ0MjhhIDEwMDY0NAotLS0g YS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9leGVjLmMKQEAgLTIyMTEsNyArMjIxMSw3IEBAIGV4ZWNfc3RtdF9jYWxsKFBMcGdT UUxfZXhlY3N0YXRlICplc3RhdGUsIFBMcGdTUUxfc3RtdF9jYWxsICpzdG10KQogCiAJcGFy YW1MSSA9IHNldHVwX3BhcmFtX2xpc3QoZXN0YXRlLCBleHByKTsKIAotCWJlZm9yZV9seGlk ID0gTXlQcm9jLT5seGlkOworCWJlZm9yZV9seGlkID0gTXlQcm9jLT52eGlkLmx4aWQ7CiAK IAkvKgogCSAqIElmIHdlIGhhdmUgYSBwcm9jZWR1cmUtbGlmZXNwYW4gcmVzb3duZXIsIHVz ZSB0aGF0IHRvIGhvbGQgdGhlIHJlZmNvdW50CkBAIC0yMjMyLDcgKzIyMzIsNyBAQCBleGVj X3N0bXRfY2FsbChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLCBQTHBnU1FMX3N0bXRfY2Fs bCAqc3RtdCkKIAkJZWxvZyhFUlJPUiwgIlNQSV9leGVjdXRlX3BsYW5fZXh0ZW5kZWQgZmFp bGVkIGV4ZWN1dGluZyBxdWVyeSBcIiVzXCI6ICVzIiwKIAkJCSBleHByLT5xdWVyeSwgU1BJ X3Jlc3VsdF9jb2RlX3N0cmluZyhyYykpOwogCi0JYWZ0ZXJfbHhpZCA9IE15UHJvYy0+bHhp ZDsKKwlhZnRlcl9seGlkID0gTXlQcm9jLT52eGlkLmx4aWQ7CiAKIAlpZiAoYmVmb3JlX2x4 aWQgIT0gYWZ0ZXJfbHhpZCkKIAl7CkBAIC02MDM3LDcgKzYwMzcsNyBAQCBleGVjX2V2YWxf c2ltcGxlX2V4cHIoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJCQkJICBpbnQzMiAq cmV0dHlwbW9kKQogewogCUV4cHJDb250ZXh0ICplY29udGV4dCA9IGVzdGF0ZS0+ZXZhbF9l Y29udGV4dDsKLQlMb2NhbFRyYW5zYWN0aW9uSWQgY3VybHhpZCA9IE15UHJvYy0+bHhpZDsK KwlMb2NhbFRyYW5zYWN0aW9uSWQgY3VybHhpZCA9IE15UHJvYy0+dnhpZC5seGlkOwogCVBh cmFtTGlzdEluZm8gcGFyYW1MSTsKIAl2b2lkCSAgICpzYXZlX3NldHVwX2FyZzsKIAlib29s CQluZWVkX3NuYXBzaG90OwpAQCAtNzk0Myw3ICs3OTQzLDcgQEAgZ2V0X2Nhc3RfaGFzaGVu dHJ5KFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJICogZnVuY3Rpb25zIGRvOyBETyBi bG9ja3MgaGF2ZSBwcml2YXRlIHNpbXBsZV9ldmFsX2VzdGF0ZXMsIGFuZCBwcml2YXRlCiAJ ICogY2FzdCBoYXNoIHRhYmxlcyB0byBnbyB3aXRoIHRoZW0uKQogCSAqLwotCWN1cmx4aWQg PSBNeVByb2MtPmx4aWQ7CisJY3VybHhpZCA9IE15UHJvYy0+dnhpZC5seGlkOwogCWlmIChj YXN0X2VudHJ5LT5jYXN0X2x4aWQgIT0gY3VybHhpZCB8fCBjYXN0X2VudHJ5LT5jYXN0X2lu X3VzZSkKIAl7CiAJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRl LT5zaW1wbGVfZXZhbF9lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CkBAIC04MDcwLDcgKzgwNzAs NyBAQCBleGVjX3NpbXBsZV9jaGVja19wbGFuKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUs IFBMcGdTUUxfZXhwciAqZXhwcikKIAkJLyogUmVtZW1iZXIgdGhhdCB3ZSBoYXZlIHRoZSBy ZWZjb3VudCAqLwogCQlleHByLT5leHByX3NpbXBsZV9wbGFuc291cmNlID0gcGxhbnNvdXJj ZTsKIAkJZXhwci0+ZXhwcl9zaW1wbGVfcGxhbiA9IGNwbGFuOwotCQlleHByLT5leHByX3Np bXBsZV9wbGFuX2x4aWQgPSBNeVByb2MtPmx4aWQ7CisJCWV4cHItPmV4cHJfc2ltcGxlX3Bs YW5fbHhpZCA9IE15UHJvYy0+dnhpZC5seGlkOwogCiAJCS8qIFNoYXJlIHRoZSByZW1haW5p bmcgd29yayB3aXRoIHRoZSByZXBsYW4gY29kZSBwYXRoICovCiAJCWV4ZWNfc2F2ZV9zaW1w bGVfZXhwcihleHByLCBjcGxhbik7Ci0tIAoyLjM5LjIKCg== --------------LB4LeaPPEnnj873WKcnN4ONy Content-Type: text/x-patch; charset=UTF-8; name="v11-0002-Replace-BackendIds-with-0-based-ProcNumbers.patch" Content-Disposition: attachment; filename*0="v11-0002-Replace-BackendIds-with-0-based-ProcNumbers.patch" Content-Transfer-Encoding: base64 RnJvbSA4YzlmZDRiMjYwOWQ1MWU5NGIzYTFhMTU2YTQ1ZDZjNmY5OGY0MTYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMjIgRmViIDIwMjQgMDI6Mjk6MjEgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAyLzJdIFJlcGxhY2UgQmFja2VuZElkcyB3aXRoIDAtYmFz ZWQgUHJvY051bWJlcnMKCk5vdyB0aGF0IEJhY2tlbmRJZCB3YXMganVzdCBhbm90aGVyIGlu ZGV4IGludG8gdGhlIHByb2MgYXJyYXksIGl0IHdhcwpyZWR1bmRhbnQgd2l0aCB0aGUgMC1i YXNlZCBwcm9jIG51bWJlcnMgdXNlZCBpbiBvdGhlciBwbGFjZXMuIFJlcGxhY2UKYWxsIHVz YWdlIG9mIGJhY2tlbmQgSURzIHdpdGggcHJvYyBudW1iZXJzLgoKVGhlIG9ubHkgcGxhY2Ug d2hlcmUgdGhlIHRlcm0gImJhY2tlbmQgaWQiIHJlbWFpbnMgaXMgaW4gYSBmZXcgcGdzdGF0 CmZ1bmN0aW9ucyB0aGF0IGV4cG9zZSBiYWNrZW5kIElEcyBhdCB0aGUgU1FMIGxldmVsLiBU aG9zZSBJRHMgYXJlIG5vdwppbiBmYWN0IDAtYmFzZWQgUHJvY051bWJlcnMgdG9vLCBidXQg dGhlIGRvY3VtZW50YXRpb24gc3RpbGwgY2FsbHMKdGhlbSAiYmFja2VuZCBpZHMiLiBUaGF0 IHRlcm0gc3RpbGwgc2VlbXMgYXBwcm9wcmlhdGUgdG8gZGVzY3JpYmUgd2hhdAp0aGUgbnVt YmVycyBhcmUsIHNvIEkgbGV0IGl0IGJlLgoKT25lIHVzZXItdmlzaWJsZSBlZmZlY3QgaXMg dGhhdCBwZ190ZW1wXzAgaXMgbm93IGEgdmFsaWQgdGVtcCBzY2hlbWEKbmFtZSwgZm9yIGJh Y2tlbmQgd2l0aCBQcm9jTnVtYmVyIDAuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzgxNzFmMWFhLTQ5NmYtNDZhNi1hZmMzLWM0NmZlN2E5 YjQwN0Bpa2kuZmkKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAg ICAgICAgICAgIHwgMTggKystLQogZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbCAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGRvYy9zcmMvc2dtbC94YWN0LnNnbWwgICAgICAgICAg ICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFE TUUgICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Ns b2cuYyAgICAgICAgICAgICB8IDE4ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L211bHRpeGFjdC5jICAgICAgICB8IDY0ICsrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyAgICAgICAgIHwgNDMgKysrKy0tLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgfCAgOSArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jICAgICAgICB8ICA2ICstCiBz cmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9pbmNyZW1lbnRhbC5jICAgfCAgMiArLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMgICAgICAgICAgICAgICAgIHwgMTQgKy0t CiBzcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jICAgICAgICAgICAgICAgfCAzMCAr KystLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAg fCAzMCArKystLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jICAgICAgICAgICAg ICAgICAgfCA4OSArKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9k YmNvbW1hbmRzLmMgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9saWJwcS9w cW1xLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcGdhcmNoLmMgICAgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci93YWxzdW1tYXJpemVyLmMgICAgICAgIHwgMTYgKystLQogLi4uL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgIDQgKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmX2luaXQuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAgICB8IDMwICsrKy0tLS0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgICAgICAgICB8ICA2ICstCiBz cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyAgICAgICAgICAgfCA0NCArKysr LS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8 IDM2ICsrKystLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYyAgICAg ICAgICAgfCA0NSArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5 LmMgICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3Iu YyAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2Nr LmMgICAgICAgICAgICAgICB8IDI2ICsrKy0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L3ByZWRpY2F0ZS5jICAgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJvYy5jICAgICAgICAgICAgICAgfCAzNyArKysrLS0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9zbWdyL21kLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2Uvc21nci9zbWdyLmMgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jICAgfCA1MCArKysrKy0tLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5jICAgICAgICAgICAgICAgIHwgMTQgKy0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgICAgICAgICAgICAgfCAxMyArLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyAgICAgICAgICAgICB8ICA3ICst CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCA1MCAr KysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvaW52YWwuYyAgICAgICAgICAg ICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAg ICAgICB8IDMwICsrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2NzdmxvZy5jICAg ICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgICAg ICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvanNvbmxvZy5j ICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5j ICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3Iu YyAgICAgICAgICAgICAgfCAgNiArLQogc3JjL2NvbW1vbi9yZWxwYXRoLmMgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjQgKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90d29waGFz ZS5oICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVz cGFjZS5oICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUvY29tbW9uL3JlbHBh dGguaCAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9pbmNsdWRlL2xpYnBxL3BxbXEu aCAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4u aCAgICAgICAgICAgICAgICAgICAgICAgfCAgNSAtLQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmggICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv YmFja2VuZGlkLmggICAgICAgICAgICAgICB8IDQxIC0tLS0tLS0tLQogc3JjL2luY2x1ZGUv c3RvcmFnZS9sb2NrLmggICAgICAgICAgICAgICAgICAgIHwgMTggKystLQogc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAgICAgIHwgNDYgKysrKystLS0tLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCAgICAgICAgICAgICAgIHwgIDggKy0K IHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2xpc3QuaCAgICAgICAgICAgICAgICB8IDM4ICsr KystLS0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NsaXN0X3R5cGVzLmggICAgICAgICAg fCAxOCArKy0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NudW1iZXIuaCAgICAgICAgICAg ICAgfCA0MyArKysrKysrKysKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAg ICAgICAgICAgICB8ICA0ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3JlbGZpbGVsb2NhdG9y LmggICAgICAgICAgfCAyOSArKystLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsLmgg ICAgICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NtZ3IuaCAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9z dGF0dXMuaCAgICAgICAgICAgIHwgMTQgKystCiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaCAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogNzEgZmlsZXMgY2hhbmdlZCwgNTc1IGlu c2VydGlvbnMoKyksIDU4MyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMv aW5jbHVkZS9zdG9yYWdlL2JhY2tlbmRpZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jbnVtYmVyLmgKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv Y29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZmZkNzExYjdm MjEuLjE2NDYyYjQzZmE5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC03MzM4LDcgKzczMzgsNyBAQCBs b2NhbDAuKiAgICAvdmFyL2xvZy9wb3N0Z3Jlc3FsCiAgICAgICAgICAgICA8L3Jvdz4KICAg ICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgPGVudHJ5PjxsaXRlcmFsPiV2PC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgICAgICAgPGVudHJ5PlZpcnR1YWwgdHJhbnNhY3Rpb24g SUQgKGJhY2tlbmRJRC9sb2NhbFhJRCk7ICBzZWUKKyAgICAgICAgICAgICA8ZW50cnk+Vmly dHVhbCB0cmFuc2FjdGlvbiBJRCAocHJvY051bWJlci9sb2NhbFhJRCk7ICBzZWUKICAgICAg ICAgICAgICA8eHJlZiBsaW5rZW5kPSJ0cmFuc2FjdGlvbi1pZCIvPjwvZW50cnk+CiAgICAg ICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgIDwvcm93PgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwKaW5kZXggNWNmOTM2M2FjODIuLmMzOWMzN2E5ZDgwIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwKQEAgLTQ5MzMsNyArNDkzMyw3IEBAIGRlc2NyaXB0aW9uIHwgV2FpdGlu ZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJhYmxlIHN0 b3JhZ2UKICAgIGFjY2VzcyBmdW5jdGlvbnMgY2FuIGJlIHVzZWQ7IHRoZXNlIGFyZSBzaG93 biBpbiA8eHJlZgogICAgbGlua2VuZD0ibW9uaXRvcmluZy1zdGF0cy1iYWNrZW5kLWZ1bmNz LXRhYmxlIi8+LgogICAgVGhlc2UgYWNjZXNzIGZ1bmN0aW9ucyB1c2UgdGhlIHNlc3Npb24n cyBiYWNrZW5kIElEIG51bWJlciwgd2hpY2ggaXMgYQotICAgc21hbGwgcG9zaXRpdmUgaW50 ZWdlciB0aGF0IGlzIGRpc3RpbmN0IGZyb20gdGhlIGJhY2tlbmQgSUQgb2YgYW55CisgICBz bWFsbCBpbnRlZ2VyICg+PSAwKSB0aGF0IGlzIGRpc3RpbmN0IGZyb20gdGhlIGJhY2tlbmQg SUQgb2YgYW55CiAgICBjb25jdXJyZW50IHNlc3Npb24sIGFsdGhvdWdoIGEgc2Vzc2lvbidz IElEIGNhbiBiZSByZWN5Y2xlZCBhcyBzb29uIGFzCiAgICBpdCBleGl0cy4gIFRoZSBiYWNr ZW5kIElEIGlzIHVzZWQsIGFtb25nIG90aGVyIHRoaW5ncywgdG8gaWRlbnRpZnkgdGhlCiAg ICBzZXNzaW9uJ3MgdGVtcG9yYXJ5IHNjaGVtYSBpZiBpdCBoYXMgb25lLgpAQCAtNjgwNiw3 ICs2ODA2LDcgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMgYmFja2Vu ZGlkOwogICAgICAgIGFyZzAgY29udGFpbnMgdGhlIGZvcmsgdG8gYmUgZXh0ZW5kZWQuIGFy ZzEsIGFyZzIsIGFuZCBhcmczIGNvbnRhaW4gdGhlCiAgICAgICAgdGFibGVzcGFjZSwgZGF0 YWJhc2UsIGFuZCByZWxhdGlvbiBPSURzIGlkZW50aWZ5aW5nIHRoZSByZWxhdGlvbi4gIGFy ZzQKICAgICAgICBpcyB0aGUgSUQgb2YgdGhlIGJhY2tlbmQgd2hpY2ggY3JlYXRlZCB0aGUg dGVtcG9yYXJ5IHJlbGF0aW9uIGZvciBhCi0gICAgICAgbG9jYWwgYnVmZmVyLCBvciA8c3lt Ym9sPkludmFsaWRCYWNrZW5kSWQ8L3N5bWJvbD4gKC0xKSBmb3IgYSBzaGFyZWQKKyAgICAg ICBsb2NhbCBidWZmZXIsIG9yIDxzeW1ib2w+SU5WQUxJRF9QUk9DX05VTUJFUjwvc3ltYm9s PiAoLTEpIGZvciBhIHNoYXJlZAogICAgICAgIGJ1ZmZlci4gYXJnNSBpcyB0aGUgbnVtYmVy IG9mIGJsb2NrcyB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdG8gZXh0ZW5kCiAgICAgICAgYnku PC9lbnRyeT4KICAgICA8L3Jvdz4KQEAgLTY4MTcsNyArNjgxNyw3IEBAIEZST00gcGdfc3Rh dF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgICBhcmcwIGNvbnRh aW5zIHRoZSBmb3JrIHRvIGJlIGV4dGVuZGVkLiBhcmcxLCBhcmcyLCBhbmQgYXJnMyBjb250 YWluIHRoZQogICAgICAgIHRhYmxlc3BhY2UsIGRhdGFiYXNlLCBhbmQgcmVsYXRpb24gT0lE cyBpZGVudGlmeWluZyB0aGUgcmVsYXRpb24uICBhcmc0CiAgICAgICAgaXMgdGhlIElEIG9m IHRoZSBiYWNrZW5kIHdoaWNoIGNyZWF0ZWQgdGhlIHRlbXBvcmFyeSByZWxhdGlvbiBmb3Ig YQotICAgICAgIGxvY2FsIGJ1ZmZlciwgb3IgPHN5bWJvbD5JbnZhbGlkQmFja2VuZElkPC9z eW1ib2w+ICgtMSkgZm9yIGEgc2hhcmVkCisgICAgICAgbG9jYWwgYnVmZmVyLCBvciA8c3lt Ym9sPklOVkFMSURfUFJPQ19OVU1CRVI8L3N5bWJvbD4gKC0xKSBmb3IgYSBzaGFyZWQKICAg ICAgICBidWZmZXIuIGFyZzUgaXMgdGhlIG51bWJlciBvZiBibG9ja3MgdGhlIHJlbGF0aW9u IHdhcyBleHRlbmRlZCBieSwgdGhpcwogICAgICAgIGNhbiBiZSBsZXNzIHRoYW4gdGhlIG51 bWJlciBpbiB0aGUKICAgICAgICA8bGl0ZXJhbD5idWZmZXItZXh0ZW5kLXN0YXJ0PC9saXRl cmFsPiBkdWUgdG8gcmVzb3VyY2UKQEAgLTY4MzIsNyArNjgzMiw3IEBAIEZST00gcGdfc3Rh dF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgIGFyZzIsIGFyZzMs IGFuZCBhcmc0IGNvbnRhaW4gdGhlIHRhYmxlc3BhY2UsIGRhdGFiYXNlLCBhbmQgcmVsYXRp b24gT0lEcwogICAgICAgaWRlbnRpZnlpbmcgdGhlIHJlbGF0aW9uLgogICAgICAgYXJnNSBp cyB0aGUgSUQgb2YgdGhlIGJhY2tlbmQgd2hpY2ggY3JlYXRlZCB0aGUgdGVtcG9yYXJ5IHJl bGF0aW9uIGZvciBhCi0gICAgICBsb2NhbCBidWZmZXIsIG9yIDxzeW1ib2w+SW52YWxpZEJh Y2tlbmRJZDwvc3ltYm9sPiAoLTEpIGZvciBhIHNoYXJlZCBidWZmZXIuCisgICAgICBsb2Nh bCBidWZmZXIsIG9yIDxzeW1ib2w+SU5WQUxJRF9QUk9DX05VTUJFUjwvc3ltYm9sPiAoLTEp IGZvciBhIHNoYXJlZCBidWZmZXIuCiAgICAgICA8L2VudHJ5PgogICAgIDwvcm93PgogICAg IDxyb3c+CkBAIC02ODQzLDcgKzY4NDMsNyBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRf aWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAgICAgICBhcmcyLCBhcmczLCBhbmQgYXJnNCBjb250 YWluIHRoZSB0YWJsZXNwYWNlLCBkYXRhYmFzZSwgYW5kIHJlbGF0aW9uIE9JRHMKICAgICAg IGlkZW50aWZ5aW5nIHRoZSByZWxhdGlvbi4KICAgICAgIGFyZzUgaXMgdGhlIElEIG9mIHRo ZSBiYWNrZW5kIHdoaWNoIGNyZWF0ZWQgdGhlIHRlbXBvcmFyeSByZWxhdGlvbiBmb3IgYQot ICAgICAgbG9jYWwgYnVmZmVyLCBvciA8c3ltYm9sPkludmFsaWRCYWNrZW5kSWQ8L3N5bWJv bD4gKC0xKSBmb3IgYSBzaGFyZWQgYnVmZmVyLgorICAgICAgbG9jYWwgYnVmZmVyLCBvciA8 c3ltYm9sPklOVkFMSURfUFJPQ19OVU1CRVI8L3N5bWJvbD4gKC0xKSBmb3IgYSBzaGFyZWQg YnVmZmVyLgogICAgICAgYXJnNiBpcyB0cnVlIGlmIHRoZSBidWZmZXIgd2FzIGZvdW5kIGlu IHRoZSBwb29sLCBmYWxzZSBpZiBub3QuPC9lbnRyeT4KICAgICA8L3Jvdz4KICAgICA8cm93 PgpAQCAtNjg5Niw3ICs2ODk2LDcgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0 KCkgQVMgYmFja2VuZGlkOwogICAgICAgYXJnMiwgYXJnMywgYW5kIGFyZzQgY29udGFpbiB0 aGUgdGFibGVzcGFjZSwgZGF0YWJhc2UsIGFuZCByZWxhdGlvbiBPSURzCiAgICAgICBpZGVu dGlmeWluZyB0aGUgcmVsYXRpb24uCiAgICAgICBhcmc1IGlzIHRoZSBJRCBvZiB0aGUgYmFj a2VuZCB3aGljaCBjcmVhdGVkIHRoZSB0ZW1wb3JhcnkgcmVsYXRpb24gZm9yIGEKLSAgICAg IGxvY2FsIGJ1ZmZlciwgb3IgPHN5bWJvbD5JbnZhbGlkQmFja2VuZElkPC9zeW1ib2w+ICgt MSkgZm9yIGEgc2hhcmVkIGJ1ZmZlci48L2VudHJ5PgorICAgICAgbG9jYWwgYnVmZmVyLCBv ciA8c3ltYm9sPklOVkFMSURfUFJPQ19OVU1CRVI8L3N5bWJvbD4gKC0xKSBmb3IgYSBzaGFy ZWQgYnVmZmVyLjwvZW50cnk+CiAgICAgPC9yb3c+CiAgICAgPHJvdz4KICAgICAgPGVudHJ5 PjxsaXRlcmFsPnNtZ3ItbWQtcmVhZC1kb25lPC9saXRlcmFsPjwvZW50cnk+CkBAIC02OTA2 LDcgKzY5MDYsNyBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNr ZW5kaWQ7CiAgICAgICBhcmcyLCBhcmczLCBhbmQgYXJnNCBjb250YWluIHRoZSB0YWJsZXNw YWNlLCBkYXRhYmFzZSwgYW5kIHJlbGF0aW9uIE9JRHMKICAgICAgIGlkZW50aWZ5aW5nIHRo ZSByZWxhdGlvbi4KICAgICAgIGFyZzUgaXMgdGhlIElEIG9mIHRoZSBiYWNrZW5kIHdoaWNo IGNyZWF0ZWQgdGhlIHRlbXBvcmFyeSByZWxhdGlvbiBmb3IgYQotICAgICAgbG9jYWwgYnVm ZmVyLCBvciA8c3ltYm9sPkludmFsaWRCYWNrZW5kSWQ8L3N5bWJvbD4gKC0xKSBmb3IgYSBz aGFyZWQgYnVmZmVyLgorICAgICAgbG9jYWwgYnVmZmVyLCBvciA8c3ltYm9sPklOVkFMSURf UFJPQ19OVU1CRVI8L3N5bWJvbD4gKC0xKSBmb3IgYSBzaGFyZWQgYnVmZmVyLgogICAgICAg YXJnNiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQsIHdoaWxlIGFyZzcg aXMgdGhlIG51bWJlcgogICAgICAgcmVxdWVzdGVkIChpZiB0aGVzZSBhcmUgZGlmZmVyZW50 IGl0IGluZGljYXRlcyBhIHNob3J0IHJlYWQpLjwvZW50cnk+CiAgICAgPC9yb3c+CkBAIC02 OTE4LDcgKzY5MTgsNyBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBi YWNrZW5kaWQ7CiAgICAgICBhcmcyLCBhcmczLCBhbmQgYXJnNCBjb250YWluIHRoZSB0YWJs ZXNwYWNlLCBkYXRhYmFzZSwgYW5kIHJlbGF0aW9uIE9JRHMKICAgICAgIGlkZW50aWZ5aW5n IHRoZSByZWxhdGlvbi4KICAgICAgIGFyZzUgaXMgdGhlIElEIG9mIHRoZSBiYWNrZW5kIHdo aWNoIGNyZWF0ZWQgdGhlIHRlbXBvcmFyeSByZWxhdGlvbiBmb3IgYQotICAgICAgbG9jYWwg YnVmZmVyLCBvciA8c3ltYm9sPkludmFsaWRCYWNrZW5kSWQ8L3N5bWJvbD4gKC0xKSBmb3Ig YSBzaGFyZWQgYnVmZmVyLjwvZW50cnk+CisgICAgICBsb2NhbCBidWZmZXIsIG9yIDxzeW1i b2w+SU5WQUxJRF9QUk9DX05VTUJFUjwvc3ltYm9sPiAoLTEpIGZvciBhIHNoYXJlZCBidWZm ZXIuPC9lbnRyeT4KICAgICA8L3Jvdz4KICAgICA8cm93PgogICAgICA8ZW50cnk+PGxpdGVy YWw+c21nci1tZC13cml0ZS1kb25lPC9saXRlcmFsPjwvZW50cnk+CkBAIC02OTI4LDcgKzY5 MjgsNyBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7 CiAgICAgICBhcmcyLCBhcmczLCBhbmQgYXJnNCBjb250YWluIHRoZSB0YWJsZXNwYWNlLCBk YXRhYmFzZSwgYW5kIHJlbGF0aW9uIE9JRHMKICAgICAgIGlkZW50aWZ5aW5nIHRoZSByZWxh dGlvbi4KICAgICAgIGFyZzUgaXMgdGhlIElEIG9mIHRoZSBiYWNrZW5kIHdoaWNoIGNyZWF0 ZWQgdGhlIHRlbXBvcmFyeSByZWxhdGlvbiBmb3IgYQotICAgICAgbG9jYWwgYnVmZmVyLCBv ciA8c3ltYm9sPkludmFsaWRCYWNrZW5kSWQ8L3N5bWJvbD4gKC0xKSBmb3IgYSBzaGFyZWQg YnVmZmVyLgorICAgICAgbG9jYWwgYnVmZmVyLCBvciA8c3ltYm9sPklOVkFMSURfUFJPQ19O VU1CRVI8L3N5bWJvbD4gKC0xKSBmb3IgYSBzaGFyZWQgYnVmZmVyLgogICAgICAgYXJnNiBp cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4sIHdoaWxlIGFyZzcgaXMg dGhlIG51bWJlcgogICAgICAgcmVxdWVzdGVkIChpZiB0aGVzZSBhcmUgZGlmZmVyZW50IGl0 IGluZGljYXRlcyBhIHNob3J0IHdyaXRlKS48L2VudHJ5PgogICAgIDwvcm93PgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9zdG9yYWdl LnNnbWwKaW5kZXggM2VhNGU1NTI2ZGYuLjY1Mjk0NmRiN2Q3IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvc3RvcmFnZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwK QEAgLTIwMiw3ICsyMDIsNyBAQCB0aGVzZSBmaWxlcyBhcmUgbmFtZWQgYWZ0ZXIgdGhlIHRh YmxlIG9yIGluZGV4J3MgPGZpcnN0dGVybT5maWxlbm9kZTwvZmlyc3R0ZXJtPgogd2hpY2gg Y2FuIGJlIGZvdW5kIGluIDxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3RuYW1lPi48c3Ry dWN0ZmllbGQ+cmVsZmlsZW5vZGU8L3N0cnVjdGZpZWxkPi4gQnV0CiBmb3IgdGVtcG9yYXJ5 IHJlbGF0aW9ucywgdGhlIGZpbGUgbmFtZSBpcyBvZiB0aGUgZm9ybQogPGxpdGVyYWw+dDxy ZXBsYWNlYWJsZT5CQkI8L3JlcGxhY2VhYmxlPl88cmVwbGFjZWFibGU+RkZGPC9yZXBsYWNl YWJsZT48L2xpdGVyYWw+LCB3aGVyZSA8cmVwbGFjZWFibGU+QkJCPC9yZXBsYWNlYWJsZT4K LWlzIHRoZSBiYWNrZW5kIElEIG9mIHRoZSBiYWNrZW5kIHdoaWNoIGNyZWF0ZWQgdGhlIGZp bGUsIGFuZCA8cmVwbGFjZWFibGU+RkZGPC9yZXBsYWNlYWJsZT4KK2lzIHRoZSBwcm9jZXNz IG51bWJlciBvZiB0aGUgYmFja2VuZCB3aGljaCBjcmVhdGVkIHRoZSBmaWxlLCBhbmQgPHJl cGxhY2VhYmxlPkZGRjwvcmVwbGFjZWFibGU+CiBpcyB0aGUgZmlsZW5vZGUgbnVtYmVyLiAg SW4gZWl0aGVyIGNhc2UsIGluIGFkZGl0aW9uIHRvIHRoZSBtYWluIGZpbGUgKGEvay9hCiBt YWluIGZvcmspLCBlYWNoIHRhYmxlIGFuZCBpbmRleCBoYXMgYSA8Zmlyc3R0ZXJtPmZyZWUg c3BhY2UgbWFwPC9maXJzdHRlcm0+IChzZWUgPHhyZWYKIGxpbmtlbmQ9InN0b3JhZ2UtZnNt Ii8+KSwgd2hpY2ggc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IGZyZWUgc3BhY2UgYXZhaWxh YmxlIGluCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwveGFjdC5zZ21sIGIvZG9jL3NyYy9z Z21sL3hhY3Quc2dtbAppbmRleCAwN2I5NGIxMTMyOS4uM2FhN2VlMTM4M2UgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC94YWN0LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3hhY3Quc2dt bApAQCAtMjYsMTAgKzI2LDEwIEBACiAgICBFdmVyeSB0cmFuc2FjdGlvbiBpcyBpZGVudGlm aWVkIGJ5IGEgdW5pcXVlCiAgICA8bGl0ZXJhbD5WaXJ0dWFsVHJhbnNhY3Rpb25JZDwvbGl0 ZXJhbD4gKGFsc28gY2FsbGVkCiAgICA8bGl0ZXJhbD52aXJ0dWFsWElEPC9saXRlcmFsPiBv ciA8bGl0ZXJhbD52eGlkPC9saXRlcmFsPiksIHdoaWNoCi0gICBpcyBjb21wcmlzZWQgb2Yg YSBiYWNrZW5kIElEIChvciA8bGl0ZXJhbD5iYWNrZW5kSUQ8L2xpdGVyYWw+KQorICAgaXMg Y29tcHJpc2VkIG9mIGEgYmFja2VuZCdzIHByb2Nlc3MgbnVtYmVyIChvciA8bGl0ZXJhbD5w cm9jTnVtYmVyPC9saXRlcmFsPikKICAgIGFuZCBhIHNlcXVlbnRpYWxseS1hc3NpZ25lZCBu dW1iZXIgbG9jYWwgdG8gZWFjaCBiYWNrZW5kLCBrbm93biBhcwogICAgPGxpdGVyYWw+bG9j YWxYSUQ8L2xpdGVyYWw+LiAgRm9yIGV4YW1wbGUsIHRoZSB2aXJ0dWFsIHRyYW5zYWN0aW9u Ci0gICBJRCA8bGl0ZXJhbD40LzEyNTMyPC9saXRlcmFsPiBoYXMgYSA8bGl0ZXJhbD5iYWNr ZW5kSUQ8L2xpdGVyYWw+CisgICBJRCA8bGl0ZXJhbD40LzEyNTMyPC9saXRlcmFsPiBoYXMg YSA8bGl0ZXJhbD5wcm9jTnVtYmVyPC9saXRlcmFsPgogICAgb2YgPGxpdGVyYWw+NDwvbGl0 ZXJhbD4gYW5kIGEgPGxpdGVyYWw+bG9jYWxYSUQ8L2xpdGVyYWw+IG9mCiAgICA8bGl0ZXJh bD4xMjUzMjwvbGl0ZXJhbD4uCiAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL1JFQURNRSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JF QURNRQppbmRleCA2ZGUyMzc4NzQ4YS4uMjhkMTk2Y2Y2MmIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9SRUFETUUKQEAgLTIwMywxMiArMjAzLDEyIEBAIHBnX3N1YnRyYW5zIGFuZCBQ R1BST0MgYXJlIGRvbmUgYXQgdGhlIHRpbWUgaXQgaXMgYXNzaWduZWQuCiBBIHRyYW5zYWN0 aW9uIHRoYXQgaGFzIG5vIFhJRCBzdGlsbCBuZWVkcyB0byBiZSBpZGVudGlmaWVkIGZvciB2 YXJpb3VzCiBwdXJwb3Nlcywgbm90YWJseSBob2xkaW5nIGxvY2tzLiAgRm9yIHRoaXMgcHVy cG9zZSB3ZSBhc3NpZ24gYSAidmlydHVhbAogdHJhbnNhY3Rpb24gSUQiIG9yIFZYSUQgdG8g ZWFjaCB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24uICBWWElEcyBhcmUgZm9ybWVkIGZyb20KLXR3 byBmaWVsZHMsIHRoZSBiYWNrZW5kSUQgYW5kIGEgYmFja2VuZC1sb2NhbCBjb3VudGVyOyB0 aGlzIGFycmFuZ2VtZW50IGFsbG93cwotYXNzaWdubWVudCBvZiBhIG5ldyBWWElEIGF0IHRy YW5zYWN0aW9uIHN0YXJ0IHdpdGhvdXQgYW55IGNvbnRlbnRpb24gZm9yCi1zaGFyZWQgbWVt b3J5LiAgVG8gZW5zdXJlIHRoYXQgYSBWWElEIGlzbid0IHJlLXVzZWQgdG9vIHNvb24gYWZ0 ZXIgYmFja2VuZAordHdvIGZpZWxkcywgdGhlIHByb2NOdW1iZXIgYW5kIGEgYmFja2VuZC1s b2NhbCBjb3VudGVyOyB0aGlzIGFycmFuZ2VtZW50CithbGxvd3MgYXNzaWdubWVudCBvZiBh IG5ldyBWWElEIGF0IHRyYW5zYWN0aW9uIHN0YXJ0IHdpdGhvdXQgYW55IGNvbnRlbnRpb24K K2ZvciBzaGFyZWQgbWVtb3J5LiAgVG8gZW5zdXJlIHRoYXQgYSBWWElEIGlzbid0IHJlLXVz ZWQgdG9vIHNvb24gYWZ0ZXIgYmFja2VuZAogZXhpdCwgd2Ugc3RvcmUgdGhlIGxhc3QgbG9j YWwgY291bnRlciB2YWx1ZSBpbnRvIHNoYXJlZCBtZW1vcnkgYXQgYmFja2VuZAotZXhpdCwg YW5kIGluaXRpYWxpemUgaXQgZnJvbSB0aGUgcHJldmlvdXMgdmFsdWUgZm9yIHRoZSBzYW1l IGJhY2tlbmRJRCBzbG90Ci1hdCBiYWNrZW5kIHN0YXJ0LiAgQWxsIHRoZXNlIGNvdW50ZXJz IGdvIGJhY2sgdG8gemVybyBhdCBzaGFyZWQgbWVtb3J5CitleGl0LCBhbmQgaW5pdGlhbGl6 ZSBpdCBmcm9tIHRoZSBwcmV2aW91cyB2YWx1ZSBmb3IgdGhlIHNhbWUgUEdQUk9DIHNsb3Qg YXQKK2JhY2tlbmQgc3RhcnQuICBBbGwgdGhlc2UgY291bnRlcnMgZ28gYmFjayB0byB6ZXJv IGF0IHNoYXJlZCBtZW1vcnkKIHJlLWluaXRpYWxpemF0aW9uLCBidXQgdGhhdCdzIE9LIGJl Y2F1c2UgVlhJRHMgbmV2ZXIgYXBwZWFyIGFueXdoZXJlIG9uLWRpc2suCiAKIEludGVybmFs bHksIGEgYmFja2VuZCBuZWVkcyBhIHdheSB0byBpZGVudGlmeSBzdWJ0cmFuc2FjdGlvbnMg d2hldGhlciBvciBub3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L2Nsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwppbmRleCA5N2Y3 NDM0ZGEzNC4uMDZiNWVjZjZhMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL2Nsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMK QEAgLTQ1OCw3ICs0NTgsNyBAQCBUcmFuc2FjdGlvbkdyb3VwVXBkYXRlWGlkU3RhdHVzKFRy YW5zYWN0aW9uSWQgeGlkLCBYaWRTdGF0dXMgc3RhdHVzLAogCQkgKiB1cGRhdGVzLiAgVGhp cyBpc24ndCBsaWtlbHkgYW5kIHdpbGwgc3RpbGwgd29yaywganVzdCBtYXliZSBhIGJpdAog CQkgKiBsZXNzIGVmZmljaWVudGx5LgogCQkgKi8KLQkJaWYgKG5leHRpZHggIT0gSU5WQUxJ RF9QR1BST0NOTyAmJgorCQlpZiAobmV4dGlkeCAhPSBJTlZBTElEX1BST0NfTlVNQkVSICYm CiAJCQlHZXRQR1Byb2NCeU51bWJlcihuZXh0aWR4KS0+Y2xvZ0dyb3VwTWVtYmVyUGFnZSAh PSBwcm9jLT5jbG9nR3JvdXBNZW1iZXJQYWdlKQogCQl7CiAJCQkvKgpAQCAtNDY2LDcgKzQ2 Niw3IEBAIFRyYW5zYWN0aW9uR3JvdXBVcGRhdGVYaWRTdGF0dXMoVHJhbnNhY3Rpb25JZCB4 aWQsIFhpZFN0YXR1cyBzdGF0dXMsCiAJCQkgKiBuZWVkcyBhbiBYSUQgc3RhdHVzIHVwZGF0 ZS4KIAkJCSAqLwogCQkJcHJvYy0+Y2xvZ0dyb3VwTWVtYmVyID0gZmFsc2U7Ci0JCQlwZ19h dG9taWNfd3JpdGVfdTMyKCZwcm9jLT5jbG9nR3JvdXBOZXh0LCBJTlZBTElEX1BHUFJPQ05P KTsKKwkJCXBnX2F0b21pY193cml0ZV91MzIoJnByb2MtPmNsb2dHcm91cE5leHQsIElOVkFM SURfUFJPQ19OVU1CRVIpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKQEAgLTQ4Miw5ICs0 ODIsOSBAQCBUcmFuc2FjdGlvbkdyb3VwVXBkYXRlWGlkU3RhdHVzKFRyYW5zYWN0aW9uSWQg eGlkLCBYaWRTdGF0dXMgc3RhdHVzLAogCSAqIElmIHRoZSBsaXN0IHdhcyBub3QgZW1wdHks IHRoZSBsZWFkZXIgd2lsbCB1cGRhdGUgdGhlIHN0YXR1cyBvZiBvdXIKIAkgKiBYSUQuIEl0 IGlzIGltcG9zc2libGUgdG8gaGF2ZSBmb2xsb3dlcnMgd2l0aG91dCBhIGxlYWRlciBiZWNh dXNlIHRoZQogCSAqIGZpcnN0IHByb2Nlc3MgdGhhdCBoYXMgYWRkZWQgaXRzZWxmIHRvIHRo ZSBsaXN0IHdpbGwgYWx3YXlzIGhhdmUKLQkgKiBuZXh0aWR4IGFzIElOVkFMSURfUEdQUk9D Tk8uCisJICogbmV4dGlkeCBhcyBJTlZBTElEX1BST0NfTlVNQkVSLgogCSAqLwotCWlmIChu ZXh0aWR4ICE9IElOVkFMSURfUEdQUk9DTk8pCisJaWYgKG5leHRpZHggIT0gSU5WQUxJRF9Q Uk9DX05VTUJFUikKIAl7CiAJCWludAkJCWV4dHJhV2FpdHMgPSAwOwogCkBAIC01MDAsNyAr NTAwLDcgQEAgVHJhbnNhY3Rpb25Hcm91cFVwZGF0ZVhpZFN0YXR1cyhUcmFuc2FjdGlvbklk IHhpZCwgWGlkU3RhdHVzIHN0YXR1cywKIAkJfQogCQlwZ3N0YXRfcmVwb3J0X3dhaXRfZW5k KCk7CiAKLQkJQXNzZXJ0KHBnX2F0b21pY19yZWFkX3UzMigmcHJvYy0+Y2xvZ0dyb3VwTmV4 dCkgPT0gSU5WQUxJRF9QR1BST0NOTyk7CisJCUFzc2VydChwZ19hdG9taWNfcmVhZF91MzIo JnByb2MtPmNsb2dHcm91cE5leHQpID09IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCiAJCS8q IEZpeCBzZW1hcGhvcmUgY291bnQgZm9yIGFueSBhYnNvcmJlZCB3YWtldXBzICovCiAJCXdo aWxlIChleHRyYVdhaXRzLS0gPiAwKQpAQCAtNTE3LDEzICs1MTcsMTMgQEAgVHJhbnNhY3Rp b25Hcm91cFVwZGF0ZVhpZFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgWGlkU3RhdHVzIHN0 YXR1cywKIAkgKiBUcnlpbmcgdG8gcG9wIGVsZW1lbnRzIG9uZSBhdCBhIHRpbWUgY291bGQg bGVhZCB0byBhbiBBQkEgcHJvYmxlbS4KIAkgKi8KIAluZXh0aWR4ID0gcGdfYXRvbWljX2V4 Y2hhbmdlX3UzMigmcHJvY2dsb2JhbC0+Y2xvZ0dyb3VwRmlyc3QsCi0JCQkJCQkJCQkgSU5W QUxJRF9QR1BST0NOTyk7CisJCQkJCQkJCQkgSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAkv KiBSZW1lbWJlciBoZWFkIG9mIGxpc3Qgc28gd2UgY2FuIHBlcmZvcm0gd2FrZXVwcyBhZnRl ciBkcm9wcGluZyBsb2NrLiAqLwogCXdha2VpZHggPSBuZXh0aWR4OwogCiAJLyogV2FsayB0 aGUgbGlzdCBhbmQgdXBkYXRlIHRoZSBzdGF0dXMgb2YgYWxsIFhJRHMuICovCi0Jd2hpbGUg KG5leHRpZHggIT0gSU5WQUxJRF9QR1BST0NOTykKKwl3aGlsZSAobmV4dGlkeCAhPSBJTlZB TElEX1BST0NfTlVNQkVSKQogCXsKIAkJUEdQUk9DCSAgICpuZXh0cHJvYyA9ICZQcm9jR2xv YmFsLT5hbGxQcm9jc1tuZXh0aWR4XTsKIApAQCAtNTUyLDEyICs1NTIsMTIgQEAgVHJhbnNh Y3Rpb25Hcm91cFVwZGF0ZVhpZFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgWGlkU3RhdHVz IHN0YXR1cywKIAkgKiBkb24ndCBkbyB0aGlzIHVuZGVyIHRoZSBsb2NrIHNvIGFzIHRvIGtl ZXAgbG9jayBob2xkIHRpbWVzIHRvIGEKIAkgKiBtaW5pbXVtLgogCSAqLwotCXdoaWxlICh3 YWtlaWR4ICE9IElOVkFMSURfUEdQUk9DTk8pCisJd2hpbGUgKHdha2VpZHggIT0gSU5WQUxJ RF9QUk9DX05VTUJFUikKIAl7CiAJCVBHUFJPQwkgICAqd2FrZXByb2MgPSAmUHJvY0dsb2Jh bC0+YWxsUHJvY3Nbd2FrZWlkeF07CiAKIAkJd2FrZWlkeCA9IHBnX2F0b21pY19yZWFkX3Uz Migmd2FrZXByb2MtPmNsb2dHcm91cE5leHQpOwotCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZ3 YWtlcHJvYy0+Y2xvZ0dyb3VwTmV4dCwgSU5WQUxJRF9QR1BST0NOTyk7CisJCXBnX2F0b21p Y193cml0ZV91MzIoJndha2Vwcm9jLT5jbG9nR3JvdXBOZXh0LCBJTlZBTElEX1BST0NfTlVN QkVSKTsKIAogCQkvKiBlbnN1cmUgYWxsIHByZXZpb3VzIHdyaXRlcyBhcmUgdmlzaWJsZSBi ZWZvcmUgZm9sbG93ZXIgY29udGludWVzLiAqLwogCQlwZ193cml0ZV9iYXJyaWVyKCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IGZlYmM0MjlmNzI0 Li4xMGRlMDI1OTVmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v bXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0 LmMKQEAgLTIzNiwxMSArMjM2LDExIEBAIHR5cGVkZWYgc3RydWN0IE11bHRpWGFjdFN0YXRl RGF0YQogCS8qCiAJICogUGVyLWJhY2tlbmQgZGF0YSBzdGFydHMgaGVyZS4gIFdlIGhhdmUg dHdvIGFycmF5cyBzdG9yZWQgaW4gdGhlIGFyZWEKIAkgKiBpbW1lZGlhdGVseSBmb2xsb3dp bmcgdGhlIE11bHRpWGFjdFN0YXRlRGF0YSBzdHJ1Y3QuIEVhY2ggaXMgaW5kZXhlZCBieQot CSAqIEJhY2tlbmRJZC4KKwkgKiBQcm9jTnVtYmVyLgogCSAqCi0JICogSW4gYm90aCBhcnJh eXMsIHRoZXJlJ3MgYSBzbG90IGZvciBhbGwgbm9ybWFsIGJhY2tlbmRzICgxLi5NYXhCYWNr ZW5kcykKLQkgKiBmb2xsb3dlZCBieSBhIHNsb3QgZm9yIG1heF9wcmVwYXJlZF94YWN0cyBw cmVwYXJlZCB0cmFuc2FjdGlvbnMuIFZhbGlkCi0JICogQmFja2VuZElkcyBzdGFydCBmcm9t IDE7IGVsZW1lbnQgemVybyBvZiBlYWNoIGFycmF5IGlzIG5ldmVyIHVzZWQuCisJICogSW4g Ym90aCBhcnJheXMsIHRoZXJlJ3MgYSBzbG90IGZvciBhbGwgbm9ybWFsIGJhY2tlbmRzCisJ ICogKDAuLk1heEJhY2tlbmRzLTEpIGZvbGxvd2VkIGJ5IGEgc2xvdCBmb3IgbWF4X3ByZXBh cmVkX3hhY3RzIHByZXBhcmVkCisJICogdHJhbnNhY3Rpb25zLgogCSAqCiAJICogT2xkZXN0 TWVtYmVyTVhhY3RJZFtrXSBpcyB0aGUgb2xkZXN0IE11bHRpWGFjdElkIGVhY2ggYmFja2Vu ZCdzIGN1cnJlbnQKIAkgKiB0cmFuc2FjdGlvbihzKSBjb3VsZCBwb3NzaWJseSBiZSBhIG1l bWJlciBvZiwgb3IgSW52YWxpZE11bHRpWGFjdElkCkBAIC0yODQsOCArMjg0LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgTXVsdGlYYWN0U3RhdGVEYXRhCiB9IE11bHRpWGFjdFN0YXRlRGF0YTsK IAogLyoKLSAqIExhc3QgZWxlbWVudCBvZiBPbGRlc3RNZW1iZXJNWGFjdElkIGFuZCBPbGRl c3RWaXNpYmxlTVhhY3RJZCBhcnJheXMuCi0gKiBWYWxpZCBlbGVtZW50cyBhcmUgKDEuLk1h eE9sZGVzdFNsb3QpOyBlbGVtZW50IDAgaXMgbmV2ZXIgdXNlZC4KKyAqIFNpemUgb2YgT2xk ZXN0TWVtYmVyTVhhY3RJZCBhbmQgT2xkZXN0VmlzaWJsZU1YYWN0SWQgYXJyYXlzLgogICov CiAjZGVmaW5lIE1heE9sZGVzdFNsb3QJKE1heEJhY2tlbmRzICsgbWF4X3ByZXBhcmVkX3hh Y3RzKQogCkBAIC0zOTYsNyArMzk1LDcgQEAgTXVsdGlYYWN0SWRDcmVhdGUoVHJhbnNhY3Rp b25JZCB4aWQxLCBNdWx0aVhhY3RTdGF0dXMgc3RhdHVzMSwKIAlBc3NlcnQoIVRyYW5zYWN0 aW9uSWRFcXVhbHMoeGlkMSwgeGlkMikgfHwgKHN0YXR1czEgIT0gc3RhdHVzMikpOwogCiAJ LyogTXVsdGlYYWN0SWRTZXRPbGRlc3RNZW1iZXIoKSBtdXN0IGhhdmUgYmVlbiBjYWxsZWQg YWxyZWFkeS4gKi8KLQlBc3NlcnQoTXVsdGlYYWN0SWRJc1ZhbGlkKE9sZGVzdE1lbWJlck1Y YWN0SWRbTXlCYWNrZW5kSWRdKSk7CisJQXNzZXJ0KE11bHRpWGFjdElkSXNWYWxpZChPbGRl c3RNZW1iZXJNWGFjdElkW015UHJvY051bWJlcl0pKTsKIAogCS8qCiAJICogTm90ZTogdW5s aWtlIE11bHRpWGFjdElkRXhwYW5kLCB3ZSBkb24ndCBib3RoZXIgdG8gY2hlY2sgdGhhdCBi b3RoIFhJRHMKQEAgLTQ1MCw3ICs0NDksNyBAQCBNdWx0aVhhY3RJZEV4cGFuZChNdWx0aVhh Y3RJZCBtdWx0aSwgVHJhbnNhY3Rpb25JZCB4aWQsIE11bHRpWGFjdFN0YXR1cyBzdGF0dXMp CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpOwogCiAJLyogTXVsdGlYYWN0 SWRTZXRPbGRlc3RNZW1iZXIoKSBtdXN0IGhhdmUgYmVlbiBjYWxsZWQgYWxyZWFkeS4gKi8K LQlBc3NlcnQoTXVsdGlYYWN0SWRJc1ZhbGlkKE9sZGVzdE1lbWJlck1YYWN0SWRbTXlCYWNr ZW5kSWRdKSk7CisJQXNzZXJ0KE11bHRpWGFjdElkSXNWYWxpZChPbGRlc3RNZW1iZXJNWGFj dElkW015UHJvY051bWJlcl0pKTsKIAogCWRlYnVnX2Vsb2c1KERFQlVHMiwgIkV4cGFuZDog cmVjZWl2ZWQgbXVsdGkgJXUsIHhpZCAldSBzdGF0dXMgJXMiLAogCQkJCW11bHRpLCB4aWQs IG14c3RhdHVzX3RvX3N0cmluZyhzdGF0dXMpKTsKQEAgLTYyNSw3ICs2MjQsNyBAQCBNdWx0 aVhhY3RJZElzUnVubmluZyhNdWx0aVhhY3RJZCBtdWx0aSwgYm9vbCBpc0xvY2tPbmx5KQog dm9pZAogTXVsdGlYYWN0SWRTZXRPbGRlc3RNZW1iZXIodm9pZCkKIHsKLQlpZiAoIU11bHRp WGFjdElkSXNWYWxpZChPbGRlc3RNZW1iZXJNWGFjdElkW015QmFja2VuZElkXSkpCisJaWYg KCFNdWx0aVhhY3RJZElzVmFsaWQoT2xkZXN0TWVtYmVyTVhhY3RJZFtNeVByb2NOdW1iZXJd KSkKIAl7CiAJCU11bHRpWGFjdElkIG5leHRNWGFjdDsKIApAQCAtNjU0LDEyICs2NTMsMTIg QEAgTXVsdGlYYWN0SWRTZXRPbGRlc3RNZW1iZXIodm9pZCkKIAkJaWYgKG5leHRNWGFjdCA8 IEZpcnN0TXVsdGlYYWN0SWQpCiAJCQluZXh0TVhhY3QgPSBGaXJzdE11bHRpWGFjdElkOwog Ci0JCU9sZGVzdE1lbWJlck1YYWN0SWRbTXlCYWNrZW5kSWRdID0gbmV4dE1YYWN0OworCQlP bGRlc3RNZW1iZXJNWGFjdElkW015UHJvY051bWJlcl0gPSBuZXh0TVhhY3Q7CiAKIAkJTFdM b2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIAogCQlkZWJ1Z19lbG9nNChERUJVRzIs ICJNdWx0aVhhY3Q6IHNldHRpbmcgT2xkZXN0TWVtYmVyWyVkXSA9ICV1IiwKLQkJCQkJTXlC YWNrZW5kSWQsIG5leHRNWGFjdCk7CisJCQkJCU15UHJvY051bWJlciwgbmV4dE1YYWN0KTsK IAl9CiB9CiAKQEAgLTY4Miw3ICs2ODEsNyBAQCBNdWx0aVhhY3RJZFNldE9sZGVzdE1lbWJl cih2b2lkKQogc3RhdGljIHZvaWQKIE11bHRpWGFjdElkU2V0T2xkZXN0VmlzaWJsZSh2b2lk KQogewotCWlmICghTXVsdGlYYWN0SWRJc1ZhbGlkKE9sZGVzdFZpc2libGVNWGFjdElkW015 QmFja2VuZElkXSkpCisJaWYgKCFNdWx0aVhhY3RJZElzVmFsaWQoT2xkZXN0VmlzaWJsZU1Y YWN0SWRbTXlQcm9jTnVtYmVyXSkpCiAJewogCQlNdWx0aVhhY3RJZCBvbGRlc3RNWGFjdDsK IAkJaW50CQkJaTsKQEAgLTY5OCw3ICs2OTcsNyBAQCBNdWx0aVhhY3RJZFNldE9sZGVzdFZp c2libGUodm9pZCkKIAkJaWYgKG9sZGVzdE1YYWN0IDwgRmlyc3RNdWx0aVhhY3RJZCkKIAkJ CW9sZGVzdE1YYWN0ID0gRmlyc3RNdWx0aVhhY3RJZDsKIAotCQlmb3IgKGkgPSAxOyBpIDw9 IE1heE9sZGVzdFNsb3Q7IGkrKykKKwkJZm9yIChpID0gMDsgaSA8IE1heE9sZGVzdFNsb3Q7 IGkrKykKIAkJewogCQkJTXVsdGlYYWN0SWQgdGhpc29sZGVzdCA9IE9sZGVzdE1lbWJlck1Y YWN0SWRbaV07CiAKQEAgLTcwNywxMiArNzA2LDEyIEBAIE11bHRpWGFjdElkU2V0T2xkZXN0 VmlzaWJsZSh2b2lkKQogCQkJCW9sZGVzdE1YYWN0ID0gdGhpc29sZGVzdDsKIAkJfQogCi0J CU9sZGVzdFZpc2libGVNWGFjdElkW015QmFja2VuZElkXSA9IG9sZGVzdE1YYWN0OworCQlP bGRlc3RWaXNpYmxlTVhhY3RJZFtNeVByb2NOdW1iZXJdID0gb2xkZXN0TVhhY3Q7CiAKIAkJ TFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIAogCQlkZWJ1Z19lbG9nNChERUJV RzIsICJNdWx0aVhhY3Q6IHNldHRpbmcgT2xkZXN0VmlzaWJsZVslZF0gPSAldSIsCi0JCQkJ CU15QmFja2VuZElkLCBvbGRlc3RNWGFjdCk7CisJCQkJCU15UHJvY051bWJlciwgb2xkZXN0 TVhhY3QpOwogCX0KIH0KIApAQCAtMTI2Niw3ICsxMjY1LDcgQEAgR2V0TXVsdGlYYWN0SWRN ZW1iZXJzKE11bHRpWGFjdElkIG11bHRpLCBNdWx0aVhhY3RNZW1iZXIgKiptZW1iZXJzLAog CSAqIG11bHRpLiAgSXQgY2Fubm90IHBvc3NpYmx5IHN0aWxsIGJlIHJ1bm5pbmcuCiAJICov CiAJaWYgKGlzTG9ja09ubHkgJiYKLQkJTXVsdGlYYWN0SWRQcmVjZWRlcyhtdWx0aSwgT2xk ZXN0VmlzaWJsZU1YYWN0SWRbTXlCYWNrZW5kSWRdKSkKKwkJTXVsdGlYYWN0SWRQcmVjZWRl cyhtdWx0aSwgT2xkZXN0VmlzaWJsZU1YYWN0SWRbTXlQcm9jTnVtYmVyXSkpCiAJewogCQlk ZWJ1Z19lbG9nMihERUJVRzIsICJHZXRNZW1iZXJzOiBhIGxvY2tlci1vbmx5IG11bHRpIGlz IHRvbyBvbGQiKTsKIAkJKm1lbWJlcnMgPSBOVUxMOwpAQCAtMTY5NCw4ICsxNjkzLDggQEAg QXRFT1hhY3RfTXVsdGlYYWN0KHZvaWQpCiAJICogV2UgYXNzdW1lIHRoYXQgc3RvcmluZyBh IE11bHRpWGFjdElkIGlzIGF0b21pYyBhbmQgc28gd2UgbmVlZCBub3QgdGFrZQogCSAqIE11 bHRpWGFjdEdlbkxvY2sgdG8gZG8gdGhpcy4KIAkgKi8KLQlPbGRlc3RNZW1iZXJNWGFjdElk W015QmFja2VuZElkXSA9IEludmFsaWRNdWx0aVhhY3RJZDsKLQlPbGRlc3RWaXNpYmxlTVhh Y3RJZFtNeUJhY2tlbmRJZF0gPSBJbnZhbGlkTXVsdGlYYWN0SWQ7CisJT2xkZXN0TWVtYmVy TVhhY3RJZFtNeVByb2NOdW1iZXJdID0gSW52YWxpZE11bHRpWGFjdElkOworCU9sZGVzdFZp c2libGVNWGFjdElkW015UHJvY051bWJlcl0gPSBJbnZhbGlkTXVsdGlYYWN0SWQ7CiAKIAkv KgogCSAqIERpc2NhcmQgdGhlIGxvY2FsIE11bHRpWGFjdElkIGNhY2hlLiAgU2luY2UgTVhh Y3RDb250ZXh0IHdhcyBjcmVhdGVkIGFzCkBAIC0xNzE1LDcgKzE3MTQsNyBAQCBBdEVPWGFj dF9NdWx0aVhhY3Qodm9pZCkKIHZvaWQKIEF0UHJlcGFyZV9NdWx0aVhhY3Qodm9pZCkKIHsK LQlNdWx0aVhhY3RJZCBteU9sZGVzdE1lbWJlciA9IE9sZGVzdE1lbWJlck1YYWN0SWRbTXlC YWNrZW5kSWRdOworCU11bHRpWGFjdElkIG15T2xkZXN0TWVtYmVyID0gT2xkZXN0TWVtYmVy TVhhY3RJZFtNeVByb2NOdW1iZXJdOwogCiAJaWYgKE11bHRpWGFjdElkSXNWYWxpZChteU9s ZGVzdE1lbWJlcikpCiAJCVJlZ2lzdGVyVHdvUGhhc2VSZWNvcmQoVFdPUEhBU0VfUk1fTVVM VElYQUNUX0lELCAwLApAQCAtMTczNSwxMCArMTczNCwxMCBAQCBQb3N0UHJlcGFyZV9NdWx0 aVhhY3QoVHJhbnNhY3Rpb25JZCB4aWQpCiAJICogVHJhbnNmZXIgb3VyIE9sZGVzdE1lbWJl ck1YYWN0SWQgdmFsdWUgdG8gdGhlIHNsb3QgcmVzZXJ2ZWQgZm9yIHRoZQogCSAqIHByZXBh cmVkIHRyYW5zYWN0aW9uLgogCSAqLwotCW15T2xkZXN0TWVtYmVyID0gT2xkZXN0TWVtYmVy TVhhY3RJZFtNeUJhY2tlbmRJZF07CisJbXlPbGRlc3RNZW1iZXIgPSBPbGRlc3RNZW1iZXJN WGFjdElkW015UHJvY051bWJlcl07CiAJaWYgKE11bHRpWGFjdElkSXNWYWxpZChteU9sZGVz dE1lbWJlcikpCiAJewotCQlCYWNrZW5kSWQJZHVtbXlCYWNrZW5kSWQgPSBUd29QaGFzZUdl dER1bW15QmFja2VuZElkKHhpZCwgZmFsc2UpOworCQlQcm9jTnVtYmVyCWR1bW15UHJvY051 bWJlciA9IFR3b1BoYXNlR2V0RHVtbXlQcm9jTnVtYmVyKHhpZCwgZmFsc2UpOwogCiAJCS8q CiAJCSAqIEV2ZW4gdGhvdWdoIHN0b3JpbmcgTXVsdGlYYWN0SWQgaXMgYXRvbWljLCBhY3F1 aXJlIGxvY2sgdG8gbWFrZQpAQCAtMTc0OCw4ICsxNzQ3LDggQEAgUG9zdFByZXBhcmVfTXVs dGlYYWN0KFRyYW5zYWN0aW9uSWQgeGlkKQogCQkgKi8KIAkJTFdMb2NrQWNxdWlyZShNdWx0 aVhhY3RHZW5Mb2NrLCBMV19FWENMVVNJVkUpOwogCi0JCU9sZGVzdE1lbWJlck1YYWN0SWRb ZHVtbXlCYWNrZW5kSWRdID0gbXlPbGRlc3RNZW1iZXI7Ci0JCU9sZGVzdE1lbWJlck1YYWN0 SWRbTXlCYWNrZW5kSWRdID0gSW52YWxpZE11bHRpWGFjdElkOworCQlPbGRlc3RNZW1iZXJN WGFjdElkW2R1bW15UHJvY051bWJlcl0gPSBteU9sZGVzdE1lbWJlcjsKKwkJT2xkZXN0TWVt YmVyTVhhY3RJZFtNeVByb2NOdW1iZXJdID0gSW52YWxpZE11bHRpWGFjdElkOwogCiAJCUxX TG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7CiAJfQpAQCAtMTc2Miw3ICsxNzYxLDcg QEAgUG9zdFByZXBhcmVfTXVsdGlYYWN0KFRyYW5zYWN0aW9uSWQgeGlkKQogCSAqIFdlIGFz c3VtZSB0aGF0IHN0b3JpbmcgYSBNdWx0aVhhY3RJZCBpcyBhdG9taWMgYW5kIHNvIHdlIG5l ZWQgbm90IHRha2UKIAkgKiBNdWx0aVhhY3RHZW5Mb2NrIHRvIGRvIHRoaXMuCiAJICovCi0J T2xkZXN0VmlzaWJsZU1YYWN0SWRbTXlCYWNrZW5kSWRdID0gSW52YWxpZE11bHRpWGFjdElk OworCU9sZGVzdFZpc2libGVNWGFjdElkW015UHJvY051bWJlcl0gPSBJbnZhbGlkTXVsdGlY YWN0SWQ7CiAKIAkvKgogCSAqIERpc2NhcmQgdGhlIGxvY2FsIE11bHRpWGFjdElkIGNhY2hl IGxpa2UgaW4gQXRFT1hhY3RfTXVsdGlYYWN0LgpAQCAtMTc3OSw3ICsxNzc4LDcgQEAgdm9p ZAogbXVsdGl4YWN0X3R3b3BoYXNlX3JlY292ZXIoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQx NiBpbmZvLAogCQkJCQkJICAgdm9pZCAqcmVjZGF0YSwgdWludDMyIGxlbikKIHsKLQlCYWNr ZW5kSWQJZHVtbXlCYWNrZW5kSWQgPSBUd29QaGFzZUdldER1bW15QmFja2VuZElkKHhpZCwg ZmFsc2UpOworCVByb2NOdW1iZXIJZHVtbXlQcm9jTnVtYmVyID0gVHdvUGhhc2VHZXREdW1t eVByb2NOdW1iZXIoeGlkLCBmYWxzZSk7CiAJTXVsdGlYYWN0SWQgb2xkZXN0TWVtYmVyOwog CiAJLyoKQEAgLTE3ODksNyArMTc4OCw3IEBAIG11bHRpeGFjdF90d29waGFzZV9yZWNvdmVy KFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKIAlBc3NlcnQobGVuID09IHNpemVv ZihNdWx0aVhhY3RJZCkpOwogCW9sZGVzdE1lbWJlciA9ICooKE11bHRpWGFjdElkICopIHJl Y2RhdGEpOwogCi0JT2xkZXN0TWVtYmVyTVhhY3RJZFtkdW1teUJhY2tlbmRJZF0gPSBvbGRl c3RNZW1iZXI7CisJT2xkZXN0TWVtYmVyTVhhY3RJZFtkdW1teVByb2NOdW1iZXJdID0gb2xk ZXN0TWVtYmVyOwogfQogCiAvKgpAQCAtMTgwMCwxMSArMTc5OSwxMSBAQCB2b2lkCiBtdWx0 aXhhY3RfdHdvcGhhc2VfcG9zdGNvbW1pdChUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IGlu Zm8sCiAJCQkJCQkJICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVuKQogewotCUJhY2tlbmRJ ZAlkdW1teUJhY2tlbmRJZCA9IFR3b1BoYXNlR2V0RHVtbXlCYWNrZW5kSWQoeGlkLCB0cnVl KTsKKwlQcm9jTnVtYmVyCWR1bW15UHJvY051bWJlciA9IFR3b1BoYXNlR2V0RHVtbXlQcm9j TnVtYmVyKHhpZCwgdHJ1ZSk7CiAKIAlBc3NlcnQobGVuID09IHNpemVvZihNdWx0aVhhY3RJ ZCkpOwogCi0JT2xkZXN0TWVtYmVyTVhhY3RJZFtkdW1teUJhY2tlbmRJZF0gPSBJbnZhbGlk TXVsdGlYYWN0SWQ7CisJT2xkZXN0TWVtYmVyTVhhY3RJZFtkdW1teVByb2NOdW1iZXJdID0g SW52YWxpZE11bHRpWGFjdElkOwogfQogCiAvKgpAQCAtMTgyOCw5ICsxODI3LDkgQEAgTXVs dGlYYWN0U2htZW1TaXplKHZvaWQpCiB7CiAJU2l6ZQkJc2l6ZTsKIAotCS8qIFdlIG5lZWQg MipNYXhPbGRlc3RTbG90ICsgMSBwZXJCYWNrZW5kWGFjdElkc1tdIGVudHJpZXMgKi8KKwkv KiBXZSBuZWVkIDIqTWF4T2xkZXN0U2xvdCBwZXJCYWNrZW5kWGFjdElkc1tdIGVudHJpZXMg Ki8KICNkZWZpbmUgU0hBUkVEX01VTFRJWEFDVF9TVEFURV9TSVpFIFwKLQlhZGRfc2l6ZShv ZmZzZXRvZihNdWx0aVhhY3RTdGF0ZURhdGEsIHBlckJhY2tlbmRYYWN0SWRzKSArIHNpemVv ZihNdWx0aVhhY3RJZCksIFwKKwlhZGRfc2l6ZShvZmZzZXRvZihNdWx0aVhhY3RTdGF0ZURh dGEsIHBlckJhY2tlbmRYYWN0SWRzKSwgXAogCQkJIG11bF9zaXplKHNpemVvZihNdWx0aVhh Y3RJZCkgKiAyLCBNYXhPbGRlc3RTbG90KSkKIAogCXNpemUgPSBTSEFSRURfTVVMVElYQUNU X1NUQVRFX1NJWkU7CkBAIC0xODgwLDggKzE4NzksNyBAQCBNdWx0aVhhY3RTaG1lbUluaXQo dm9pZCkKIAkJQXNzZXJ0KGZvdW5kKTsKIAogCS8qCi0JICogU2V0IHVwIGFycmF5IHBvaW50 ZXJzLiAgTm90ZSB0aGF0IHBlckJhY2tlbmRYYWN0SWRzWzBdIGlzIHdhc3RlZCBzcGFjZQot CSAqIHNpbmNlIHdlIG9ubHkgdXNlIGluZGV4ZXMgMS4uTWF4T2xkZXN0U2xvdCBpbiBlYWNo IGFycmF5LgorCSAqIFNldCB1cCBhcnJheSBwb2ludGVycy4KIAkgKi8KIAlPbGRlc3RNZW1i ZXJNWGFjdElkID0gTXVsdGlYYWN0U3RhdGUtPnBlckJhY2tlbmRYYWN0SWRzOwogCU9sZGVz dFZpc2libGVNWGFjdElkID0gT2xkZXN0TWVtYmVyTVhhY3RJZCArIE1heE9sZGVzdFNsb3Q7 CkBAIC0yNTMzLDcgKzI1MzEsNyBAQCBHZXRPbGRlc3RNdWx0aVhhY3RJZCh2b2lkKQogCQlu ZXh0TVhhY3QgPSBGaXJzdE11bHRpWGFjdElkOwogCiAJb2xkZXN0TVhhY3QgPSBuZXh0TVhh Y3Q7Ci0JZm9yIChpID0gMTsgaSA8PSBNYXhPbGRlc3RTbG90OyBpKyspCisJZm9yIChpID0g MDsgaSA8IE1heE9sZGVzdFNsb3Q7IGkrKykKIAl7CiAJCU11bHRpWGFjdElkIHRoaXNvbGRl c3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVs LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCmluZGV4IDg0OWEw M2U0YjY1Li5jYmZlNjA4N2RhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJh bGxlbC5jCkBAIC05NCw3ICs5NCw3IEBAIHR5cGVkZWYgc3RydWN0IEZpeGVkUGFyYWxsZWxT dGF0ZQogCWJvb2wJCWlzX3N1cGVydXNlcjsKIAlQR1BST0MJICAgKnBhcmFsbGVsX2xlYWRl cl9wZ3Byb2M7CiAJcGlkX3QJCXBhcmFsbGVsX2xlYWRlcl9waWQ7Ci0JQmFja2VuZElkCXBh cmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkOworCVByb2NOdW1iZXIJcGFyYWxsZWxfbGVhZGVy X3Byb2NfbnVtYmVyOwogCVRpbWVzdGFtcFR6IHhhY3RfdHM7CiAJVGltZXN0YW1wVHogc3Rt dF90czsKIAlTZXJpYWxpemFibGVYYWN0SGFuZGxlIHNlcmlhbGl6YWJsZV94YWN0X2hhbmRs ZTsKQEAgLTMzNyw3ICszMzcsNyBAQCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxD b250ZXh0ICpwY3h0KQogCQkJCQkJICAmZnBzLT50ZW1wX3RvYXN0X25hbWVzcGFjZV9pZCk7 CiAJZnBzLT5wYXJhbGxlbF9sZWFkZXJfcGdwcm9jID0gTXlQcm9jOwogCWZwcy0+cGFyYWxs ZWxfbGVhZGVyX3BpZCA9IE15UHJvY1BpZDsKLQlmcHMtPnBhcmFsbGVsX2xlYWRlcl9iYWNr ZW5kX2lkID0gTXlCYWNrZW5kSWQ7CisJZnBzLT5wYXJhbGxlbF9sZWFkZXJfcHJvY19udW1i ZXIgPSBNeVByb2NOdW1iZXI7CiAJZnBzLT54YWN0X3RzID0gR2V0Q3VycmVudFRyYW5zYWN0 aW9uU3RhcnRUaW1lc3RhbXAoKTsKIAlmcHMtPnN0bXRfdHMgPSBHZXRDdXJyZW50U3RhdGVt ZW50U3RhcnRUaW1lc3RhbXAoKTsKIAlmcHMtPnNlcmlhbGl6YWJsZV94YWN0X2hhbmRsZSA9 IFNoYXJlU2VyaWFsaXphYmxlWGFjdCgpOwpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgUGFyYWxs ZWxXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJLyogQXJyYW5nZSB0byBzaWduYWwg dGhlIGxlYWRlciBpZiB3ZSBleGl0LiAqLwogCVBhcmFsbGVsTGVhZGVyUGlkID0gZnBzLT5w YXJhbGxlbF9sZWFkZXJfcGlkOwotCVBhcmFsbGVsTGVhZGVyQmFja2VuZElkID0gZnBzLT5w YXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZDsKKwlQYXJhbGxlbExlYWRlclByb2NOdW1iZXIg PSBmcHMtPnBhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcjsKIAliZWZvcmVfc2htZW1fZXhp dChQYXJhbGxlbFdvcmtlclNodXRkb3duLCBQb2ludGVyR2V0RGF0dW0oc2VnKSk7CiAKIAkv KgpAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgUGFyYWxsZWxXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQogCW1xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CiAJcHFfcmVkaXJl Y3RfdG9fc2htX21xKHNlZywgbXFoKTsKIAlwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKGZwcy0+ cGFyYWxsZWxfbGVhZGVyX3BpZCwKLQkJCQkJCSAgIGZwcy0+cGFyYWxsZWxfbGVhZGVyX2Jh Y2tlbmRfaWQpOworCQkJCQkJICAgZnBzLT5wYXJhbGxlbF9sZWFkZXJfcHJvY19udW1iZXIp OwogCiAJLyoKIAkgKiBTZW5kIGEgQmFja2VuZEtleURhdGEgbWVzc2FnZSB0byB0aGUgcHJv Y2VzcyB0aGF0IGluaXRpYXRlZCBwYXJhbGxlbGlzbQpAQCAtMTU5NCw3ICsxNTk0LDcgQEAg UGFyYWxsZWxXb3JrZXJTaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQogewogCVNlbmRQ cm9jU2lnbmFsKFBhcmFsbGVsTGVhZGVyUGlkLAogCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxf TUVTU0FHRSwKLQkJCQkgICBQYXJhbGxlbExlYWRlckJhY2tlbmRJZCk7CisJCQkJICAgUGFy YWxsZWxMZWFkZXJQcm9jTnVtYmVyKTsKIAogCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICop IERhdHVtR2V0UG9pbnRlcihhcmcpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90 d29waGFzZS5jCmluZGV4IDVjMjgyMDAyOTAwLi5hNDJhZjI5MzQzNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC0xMzIsNyArMTMyLDcgQEAgaW50CQkJ bWF4X3ByZXBhcmVkX3hhY3RzID0gMDsKICAqCiAgKiAzLiBUbyBiZWdpbiBDT01NSVQgUFJF UEFSRUQgb3IgUk9MTEJBQ0sgUFJFUEFSRUQsIGNoZWNrIHRoYXQgdGhlIGVudHJ5IGlzCiAg KiB2YWxpZCBhbmQgbm90IGxvY2tlZCwgdGhlbiBtYXJrIHRoZSBlbnRyeSBhcyBsb2NrZWQg Ynkgc3RvcmluZyBteSBjdXJyZW50Ci0gKiBiYWNrZW5kIElEIGludG8gbG9ja2luZ19iYWNr ZW5kLiAgVGhpcyBwcmV2ZW50cyBjb25jdXJyZW50IGF0dGVtcHRzIHRvCisgKiBwcm9jIG51 bWJlciBpbnRvIGxvY2tpbmdfYmFja2VuZC4gIFRoaXMgcHJldmVudHMgY29uY3VycmVudCBh dHRlbXB0cyB0bwogICogY29tbWl0IG9yIHJvbGxiYWNrIHRoZSBzYW1lIHByZXBhcmVkIHhh Y3QuCiAgKgogICogNC4gT24gY29tcGxldGlvbiBvZiBDT01NSVQgUFJFUEFSRUQgb3IgUk9M TEJBQ0sgUFJFUEFSRUQsIHJlbW92ZSB0aGUgZW50cnkKQEAgLTE2NSw3ICsxNjUsNyBAQCB0 eXBlZGVmIHN0cnVjdCBHbG9iYWxUcmFuc2FjdGlvbkRhdGEKIAlUcmFuc2FjdGlvbklkIHhp ZDsJCQkvKiBUaGUgR1hBQ1QgaWQgKi8KIAogCU9pZAkJCW93bmVyOwkJCS8qIElEIG9mIHVz ZXIgdGhhdCBleGVjdXRlZCB0aGUgeGFjdCAqLwotCUJhY2tlbmRJZAlsb2NraW5nX2JhY2tl bmQ7CS8qIGJhY2tlbmQgY3VycmVudGx5IHdvcmtpbmcgb24gdGhlIHhhY3QgKi8KKwlQcm9j TnVtYmVyCWxvY2tpbmdfYmFja2VuZDsJLyogYmFja2VuZCBjdXJyZW50bHkgd29ya2luZyBv biB0aGUgeGFjdCAqLwogCWJvb2wJCXZhbGlkOwkJCS8qIHRydWUgaWYgUEdQUk9DIGVudHJ5 IGlzIGluIHByb2MgYXJyYXkgKi8KIAlib29sCQlvbmRpc2s7CQkJLyogdHJ1ZSBpZiBwcmVw YXJlIHN0YXRlIGZpbGUgaXMgb24gZGlzayAqLwogCWJvb2wJCWlucmVkbzsJCQkvKiB0cnVl IGlmIGVudHJ5IHdhcyBhZGRlZCB2aWEgeGxvZ19yZWRvICovCkBAIC0zMzMsNyArMzMzLDcg QEAgQXRBYm9ydF9Ud29waGFzZSh2b2lkKQogCWlmICghTXlMb2NrZWRHeGFjdC0+dmFsaWQp CiAJCVJlbW92ZUdYYWN0KE15TG9ja2VkR3hhY3QpOwogCWVsc2UKLQkJTXlMb2NrZWRHeGFj dC0+bG9ja2luZ19iYWNrZW5kID0gSW52YWxpZEJhY2tlbmRJZDsKKwkJTXlMb2NrZWRHeGFj dC0+bG9ja2luZ19iYWNrZW5kID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAlMV0xvY2tSZWxl YXNlKFR3b1BoYXNlU3RhdGVMb2NrKTsKIAogCU15TG9ja2VkR3hhY3QgPSBOVUxMOwpAQCAt MzQ3LDcgKzM0Nyw3IEBAIHZvaWQKIFBvc3RQcmVwYXJlX1R3b3BoYXNlKHZvaWQpCiB7CiAJ TFdMb2NrQWNxdWlyZShUd29QaGFzZVN0YXRlTG9jaywgTFdfRVhDTFVTSVZFKTsKLQlNeUxv Y2tlZEd4YWN0LT5sb2NraW5nX2JhY2tlbmQgPSBJbnZhbGlkQmFja2VuZElkOworCU15TG9j a2VkR3hhY3QtPmxvY2tpbmdfYmFja2VuZCA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJTFdM b2NrUmVsZWFzZShUd29QaGFzZVN0YXRlTG9jayk7CiAKIAlNeUxvY2tlZEd4YWN0ID0gTlVM TDsKQEAgLTQ1MiwxNCArNDUyLDE0IEBAIE1hcmtBc1ByZXBhcmluZ0d1dHMoR2xvYmFsVHJh bnNhY3Rpb24gZ3hhY3QsIFRyYW5zYWN0aW9uSWQgeGlkLCBjb25zdCBjaGFyICpnaWQsCiAJ ewogCQkvKiBjbG9uZSBWWElELCBmb3IgVHdvUGhhc2VHZXRYaWRCeVZpcnR1YWxYSUQoKSB0 byBmaW5kICovCiAJCXByb2MtPnZ4aWQubHhpZCA9IE15UHJvYy0+dnhpZC5seGlkOwotCQlw cm9jLT52eGlkLmJhY2tlbmRJZCA9IE15QmFja2VuZElkOworCQlwcm9jLT52eGlkLnByb2NO dW1iZXIgPSBNeVByb2NOdW1iZXI7CiAJfQogCWVsc2UKIAl7CiAJCUFzc2VydChBbVN0YXJ0 dXBQcm9jZXNzKCkgfHwgIUlzUG9zdG1hc3RlckVudmlyb25tZW50KTsKIAkJLyogR2V0TG9j a0NvbmZsaWN0cygpIHVzZXMgdGhpcyB0byBzcGVjaWZ5IGEgd2FpdCBvbiB0aGUgWElEICov CiAJCXByb2MtPnZ4aWQubHhpZCA9IHhpZDsKLQkJcHJvYy0+dnhpZC5iYWNrZW5kSWQgPSBJ bnZhbGlkQmFja2VuZElkOworCQlwcm9jLT52eGlkLnByb2NOdW1iZXIgPSBJTlZBTElEX1BS T0NfTlVNQkVSOwogCX0KIAlwcm9jLT54aWQgPSB4aWQ7CiAJQXNzZXJ0KHByb2MtPnhtaW4g PT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwpAQCAtNDg0LDcgKzQ4NCw3IEBAIE1hcmtBc1By ZXBhcmluZ0d1dHMoR2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QsIFRyYW5zYWN0aW9uSWQgeGlk LCBjb25zdCBjaGFyICpnaWQsCiAJZ3hhY3QtPnByZXBhcmVkX2F0ID0gcHJlcGFyZWRfYXQ7 CiAJZ3hhY3QtPnhpZCA9IHhpZDsKIAlneGFjdC0+b3duZXIgPSBvd25lcjsKLQlneGFjdC0+ bG9ja2luZ19iYWNrZW5kID0gTXlCYWNrZW5kSWQ7CisJZ3hhY3QtPmxvY2tpbmdfYmFja2Vu ZCA9IE15UHJvY051bWJlcjsKIAlneGFjdC0+dmFsaWQgPSBmYWxzZTsKIAlneGFjdC0+aW5y ZWRvID0gZmFsc2U7CiAJc3RyY3B5KGd4YWN0LT5naWQsIGdpZCk7CkBAIC01NzcsNyArNTc3 LDcgQEAgTG9ja0dYYWN0KGNvbnN0IGNoYXIgKmdpZCwgT2lkIHVzZXIpCiAJCQljb250aW51 ZTsKIAogCQkvKiBGb3VuZCBpdCwgYnV0IGhhcyBzb21lb25lIGVsc2UgZ290IGl0IGxvY2tl ZD8gKi8KLQkJaWYgKGd4YWN0LT5sb2NraW5nX2JhY2tlbmQgIT0gSW52YWxpZEJhY2tlbmRJ ZCkKKwkJaWYgKGd4YWN0LT5sb2NraW5nX2JhY2tlbmQgIT0gSU5WQUxJRF9QUk9DX05VTUJF UikKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkgZXJybXNnKCJwcmVwYXJlZCB0cmFu c2FjdGlvbiB3aXRoIGlkZW50aWZpZXIgXCIlc1wiIGlzIGJ1c3kiLApAQCAtNjAyLDcgKzYw Miw3IEBAIExvY2tHWGFjdChjb25zdCBjaGFyICpnaWQsIE9pZCB1c2VyKQogCQkJCQkgZXJy aGludCgiQ29ubmVjdCB0byB0aGUgZGF0YWJhc2Ugd2hlcmUgdGhlIHRyYW5zYWN0aW9uIHdh cyBwcmVwYXJlZCB0byBmaW5pc2ggaXQuIikpKTsKIAogCQkvKiBPSyBmb3IgbWUgdG8gbG9j ayBpdCAqLwotCQlneGFjdC0+bG9ja2luZ19iYWNrZW5kID0gTXlCYWNrZW5kSWQ7CisJCWd4 YWN0LT5sb2NraW5nX2JhY2tlbmQgPSBNeVByb2NOdW1iZXI7CiAJCU15TG9ja2VkR3hhY3Qg PSBneGFjdDsKIAogCQlMV0xvY2tSZWxlYXNlKFR3b1BoYXNlU3RhdGVMb2NrKTsKQEAgLTg0 OSw3ICs4NDksNyBAQCBUd29QaGFzZUdldEdYYWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBib29s IGxvY2tfaGVsZCkKICAqCiAgKiAoVGhpcyB3b24ndCBmaW5kIHJlY292ZXJlZCB4YWN0cy4p ICBJZiBtb3JlIHRoYW4gb25lIG1hdGNoZXMsIHJldHVybiBhbnkKICAqIGFuZCBzZXQgImhh dmVfbW9yZSIgdG8gdHJ1ZS4gIFRvIHdpdG5lc3MgbXVsdGlwbGUgbWF0Y2hlcywgYSBzaW5n bGUKLSAqIEJhY2tlbmRJZCBtdXN0IGNvbnN1bWUgMl4zMiBMWElEcywgd2l0aCBubyBpbnRl cnZlbmluZyBkYXRhYmFzZSByZXN0YXJ0LgorICogcHJvYyBudW1iZXIgbXVzdCBjb25zdW1l IDJeMzIgTFhJRHMsIHdpdGggbm8gaW50ZXJ2ZW5pbmcgZGF0YWJhc2UgcmVzdGFydC4KICAq LwogVHJhbnNhY3Rpb25JZAogVHdvUGhhc2VHZXRYaWRCeVZpcnR1YWxYSUQoVmlydHVhbFRy YW5zYWN0aW9uSWQgdnhpZCwKQEAgLTg3Myw3ICs4NzMsMTAgQEAgVHdvUGhhc2VHZXRYaWRC eVZpcnR1YWxYSUQoVmlydHVhbFRyYW5zYWN0aW9uSWQgdnhpZCwKIAkJR0VUX1ZYSURfRlJP TV9QR1BST0MocHJvY192eGlkLCAqcHJvYyk7CiAJCWlmIChWaXJ0dWFsVHJhbnNhY3Rpb25J ZEVxdWFscyh2eGlkLCBwcm9jX3Z4aWQpKQogCQl7Ci0JCQkvKiBTdGFydHVwIHByb2Nlc3Mg c2V0cyBwcm9jLT5iYWNrZW5kSWQgdG8gSW52YWxpZEJhY2tlbmRJZC4gKi8KKwkJCS8qCisJ CQkgKiBTdGFydHVwIHByb2Nlc3Mgc2V0cyBwcm9jLT52eGlkLnByb2NOdW1iZXIgdG8KKwkJ CSAqIElOVkFMSURfUFJPQ19OVU1CRVIuCisJCQkgKi8KIAkJCUFzc2VydCghZ3hhY3QtPmlu cmVkbyk7CiAKIAkJCWlmIChyZXN1bHQgIT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpCkBAIC04 OTEsMjAgKzg5NCwyMCBAQCBUd29QaGFzZUdldFhpZEJ5VmlydHVhbFhJRChWaXJ0dWFsVHJh bnNhY3Rpb25JZCB2eGlkLAogfQogCiAvKgotICogVHdvUGhhc2VHZXREdW1teUJhY2tlbmRJ ZAotICoJCUdldCB0aGUgZHVtbXkgYmFja2VuZCBJRCBmb3IgcHJlcGFyZWQgdHJhbnNhY3Rp b24gc3BlY2lmaWVkIGJ5IFhJRAorICogVHdvUGhhc2VHZXREdW1teVByb2NOdW1iZXIKKyAq CQlHZXQgdGhlIGR1bW15IHByb2MgbnVtYmVyIGZvciBwcmVwYXJlZCB0cmFuc2FjdGlvbiBz cGVjaWZpZWQgYnkgWElECiAgKgotICogRHVtbXkgYmFja2VuZCBJRHMgYXJlIHNpbWlsYXIg dG8gcmVhbCBiYWNrZW5kIElEcyBvZiByZWFsIGJhY2tlbmRzLgotICogVGhleSBzdGFydCBh dCBNYXhCYWNrZW5kcyArIDEsIGFuZCBhcmUgdW5pcXVlIGFjcm9zcyBhbGwgY3VycmVudGx5 IGFjdGl2ZQotICogcmVhbCBiYWNrZW5kcyBhbmQgcHJlcGFyZWQgdHJhbnNhY3Rpb25zLiAg SWYgbG9ja19oZWxkIGlzIHNldCB0byB0cnVlLAorICogRHVtbXkgcHJvYyBudW1iZXJzIGFy ZSBzaW1pbGFyIHRvIHByb2MgbnVtYmVycyBvZiByZWFsIGJhY2tlbmRzLiAgVGhleQorICog c3RhcnQgYXQgTWF4QmFja2VuZHMsIGFuZCBhcmUgdW5pcXVlIGFjcm9zcyBhbGwgY3VycmVu dGx5IGFjdGl2ZSByZWFsCisgKiBiYWNrZW5kcyBhbmQgcHJlcGFyZWQgdHJhbnNhY3Rpb25z LiAgSWYgbG9ja19oZWxkIGlzIHNldCB0byB0cnVlLAogICogVHdvUGhhc2VTdGF0ZUxvY2sg d2lsbCBub3QgYmUgdGFrZW4sIHNvIHRoZSBjYWxsZXIgaGFkIGJldHRlciBob2xkIGl0Lgog ICovCi1CYWNrZW5kSWQKLVR3b1BoYXNlR2V0RHVtbXlCYWNrZW5kSWQoVHJhbnNhY3Rpb25J ZCB4aWQsIGJvb2wgbG9ja19oZWxkKQorUHJvY051bWJlcgorVHdvUGhhc2VHZXREdW1teVBy b2NOdW1iZXIoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgbG9ja19oZWxkKQogewogCUdsb2Jh bFRyYW5zYWN0aW9uIGd4YWN0ID0gVHdvUGhhc2VHZXRHWGFjdCh4aWQsIGxvY2tfaGVsZCk7 CiAKLQlyZXR1cm4gZ3hhY3QtPnBncHJvY25vICsgMTsKKwlyZXR1cm4gZ3hhY3QtPnBncHJv Y25vOwogfQogCiAvKgpAQCAtMjU0OSw3ICsyNTUyLDcgQEAgUHJlcGFyZVJlZG9BZGQoY2hh ciAqYnVmLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwKIAlneGFjdC0+cHJlcGFyZV9lbmRfbHNu ID0gZW5kX2xzbjsKIAlneGFjdC0+eGlkID0gaGRyLT54aWQ7CiAJZ3hhY3QtPm93bmVyID0g aGRyLT5vd25lcjsKLQlneGFjdC0+bG9ja2luZ19iYWNrZW5kID0gSW52YWxpZEJhY2tlbmRJ ZDsKKwlneGFjdC0+bG9ja2luZ19iYWNrZW5kID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAln eGFjdC0+dmFsaWQgPSBmYWxzZTsKIAlneGFjdC0+b25kaXNrID0gWExvZ1JlY1B0cklzSW52 YWxpZChzdGFydF9sc24pOwogCWd4YWN0LT5pbnJlZG8gPSB0cnVlOwkJLyogeWVzLCBhZGRl ZCBpbiByZWRvICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggNGFjNWI5 ZWE4MzQuLmUyNzAwMDdlMjhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBA IC0yMDg0LDEwICsyMDg0LDEwIEBAIFN0YXJ0VHJhbnNhY3Rpb24odm9pZCkKIAlBdFN0YXJ0 X1Jlc291cmNlT3duZXIoKTsKIAogCS8qCi0JICogQXNzaWduIGEgbmV3IExvY2FsVHJhbnNh Y3Rpb25JZCwgYW5kIGNvbWJpbmUgaXQgd2l0aCB0aGUgYmFja2VuZElkIHRvCisJICogQXNz aWduIGEgbmV3IExvY2FsVHJhbnNhY3Rpb25JZCwgYW5kIGNvbWJpbmUgaXQgd2l0aCB0aGUg cHJvYyBudW1iZXIgdG8KIAkgKiBmb3JtIGEgdmlydHVhbCB0cmFuc2FjdGlvbiBpZC4KIAkg Ki8KLQl2eGlkLmJhY2tlbmRJZCA9IE15QmFja2VuZElkOworCXZ4aWQucHJvY051bWJlciA9 IE15UHJvY051bWJlcjsKIAl2eGlkLmxvY2FsVHJhbnNhY3Rpb25JZCA9IEdldE5leHRMb2Nh bFRyYW5zYWN0aW9uSWQoKTsKIAogCS8qCkBAIC0yMDk3LDkgKzIwOTcsMTAgQEAgU3RhcnRU cmFuc2FjdGlvbih2b2lkKQogCiAJLyoKIAkgKiBBZHZlcnRpc2UgaXQgaW4gdGhlIHByb2Mg YXJyYXkuICBXZSBhc3N1bWUgYXNzaWdubWVudCBvZgotCSAqIGxvY2FsVHJhbnNhY3Rpb25J ZCBpcyBhdG9taWMsIGFuZCB0aGUgYmFja2VuZElkIHNob3VsZCBiZSBzZXQgYWxyZWFkeS4K KwkgKiBsb2NhbFRyYW5zYWN0aW9uSWQgaXMgYXRvbWljLCBhbmQgdGhlIHByb2MgbnVtYmVy IHNob3VsZCBiZSBzZXQKKwkgKiBhbHJlYWR5LgogCSAqLwotCUFzc2VydChNeVByb2MtPnZ4 aWQuYmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkKTsKKwlBc3NlcnQoTXlQcm9jLT52eGlk LnByb2NOdW1iZXIgPT0gdnhpZC5wcm9jTnVtYmVyKTsKIAlNeVByb2MtPnZ4aWQubHhpZCA9 IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklkOwogCiAJVFJBQ0VfUE9TVEdSRVNRTF9UUkFOU0FD VElPTl9TVEFSVCh2eGlkLmxvY2FsVHJhbnNhY3Rpb25JZCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYwppbmRleCA1ODg1ZjVmNjQzYS4uYWEy NmVhMmVmNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dw cmVmZXRjaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZl dGNoZXIuYwpAQCAtNzIyLDcgKzcyMiw3IEBAIFhMb2dQcmVmZXRjaGVyTmV4dEJsb2NrKHVp bnRwdHJfdCBwZ3NyX3ByaXZhdGUsIFhMb2dSZWNQdHIgKmxzbikKIAkJCSAqIHNhbWUgcmVs YXRpb24gKHdpdGggc29tZSBzY2hlbWUgdG8gaGFuZGxlIGludmFsaWRhdGlvbnMKIAkJCSAq IHNhZmVseSksIGJ1dCBmb3Igbm93IHdlJ2xsIGNhbGwgc21ncm9wZW4oKSBldmVyeSB0aW1l LgogCQkJICovCi0JCQlyZWxuID0gc21ncm9wZW4oYmxvY2stPnJsb2NhdG9yLCBJbnZhbGlk QmFja2VuZElkKTsKKwkJCXJlbG4gPSBzbWdyb3BlbihibG9jay0+cmxvY2F0b3IsIElOVkFM SURfUFJPQ19OVU1CRVIpOwogCiAJCQkvKgogCQkJICogSWYgdGhlIHJlbGF0aW9uIGZpbGUg ZG9lc24ndCBleGlzdCBvbiBkaXNrLCBmb3IgZXhhbXBsZSBiZWNhdXNlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IGFkOTMwMzVkNTA4Li5mNjU1NTRl YjhmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTQ5 MSw3ICs0OTEsNyBAQCBYTG9nUmVhZEJ1ZmZlckV4dGVuZGVkKFJlbEZpbGVMb2NhdG9yIHJs b2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtudW0sCiAJfQogCiAJLyogT3BlbiB0aGUgcmVsYXRp b24gYXQgc21nciBsZXZlbCAqLwotCXNtZ3IgPSBzbWdyb3BlbihybG9jYXRvciwgSW52YWxp ZEJhY2tlbmRJZCk7CisJc21nciA9IHNtZ3JvcGVuKHJsb2NhdG9yLCBJTlZBTElEX1BST0Nf TlVNQkVSKTsKIAogCS8qCiAJICogQ3JlYXRlIHRoZSB0YXJnZXQgZmlsZSBpZiBpdCBkb2Vz bid0IGFscmVhZHkgZXhpc3QuICBUaGlzIGxldHMgdXMgY29wZQpAQCAtNTk4LDcgKzU5OCw3 IEBAIENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQog CSAqIFdlIHdpbGwgbmV2ZXIgYmUgd29ya2luZyB3aXRoIHRlbXAgcmVscyBkdXJpbmcgcmVj b3Zlcnkgb3Igd2hpbGUKIAkgKiBzeW5jaW5nIFdBTC1za2lwcGVkIGZpbGVzLgogCSAqLwot CXJlbC0+cmRfYmFja2VuZCA9IEludmFsaWRCYWNrZW5kSWQ7CisJcmVsLT5yZF9iYWNrZW5k ID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAogCS8qIEl0IG11c3QgYmUgYSBwZXJtYW5lbnQg dGFibGUgaGVyZSAqLwogCXJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9IFJFTFBFUlNJ U1RFTkNFX1BFUk1BTkVOVDsKQEAgLTYyMCw3ICs2MjAsNyBAQCBDcmVhdGVGYWtlUmVsY2Fj aGVFbnRyeShSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKIAkgKiBTZXQgdXAgYSBub24tcGlu bmVkIFNNZ3JSZWxhdGlvbiByZWZlcmVuY2UsIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0bwog CSAqIHdvcnJ5IGFib3V0IHVucGlubmluZyBpdCBvbiBlcnJvci4KIAkgKi8KLQlyZWwtPnJk X3NtZ3IgPSBzbWdyb3BlbihybG9jYXRvciwgSW52YWxpZEJhY2tlbmRJZCk7CisJcmVsLT5y ZF9zbWdyID0gc21ncm9wZW4ocmxvY2F0b3IsIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCiAJ cmV0dXJuIHJlbDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFj a3VwX2luY3JlbWVudGFsLmMgYi9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9pbmNy ZW1lbnRhbC5jCmluZGV4IGU5OTRlZTY2YmJmLi4xYzIxNzJiOGJkMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfaW5jcmVtZW50YWwuYworKysgYi9zcmMv YmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF9pbmNyZW1lbnRhbC5jCkBAIC02NzIsNyArNjcy LDcgQEAgR2V0SW5jcmVtZW50YWxGaWxlUGF0aChPaWQgZGJvaWQsIE9pZCBzcGNvaWQsIFJl bEZpbGVOdW1iZXIgcmVsZmlsZW51bWJlciwKIAljaGFyCSAgICpsYXN0c2xhc2g7CiAJY2hh cgkgICAqaXBhdGg7CiAKLQlwYXRoID0gR2V0UmVsYXRpb25QYXRoKGRib2lkLCBzcGNvaWQs IHJlbGZpbGVudW1iZXIsIEludmFsaWRCYWNrZW5kSWQsCisJcGF0aCA9IEdldFJlbGF0aW9u UGF0aChkYm9pZCwgc3Bjb2lkLCByZWxmaWxlbnVtYmVyLCBJTlZBTElEX1BST0NfTlVNQkVS LAogCQkJCQkJICAgZm9ya251bSk7CiAKIAlsYXN0c2xhc2ggPSBzdHJyY2hyKHBhdGgsICcv Jyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jCmluZGV4IDFjZjRlMzAzY2U2Li5lMTUxZGRkYWIy OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMKQEAgLTUwNCw3ICs1MDQsNyBAQCBHZXROZXdS ZWxGaWxlTnVtYmVyKE9pZCByZWx0YWJsZXNwYWNlLCBSZWxhdGlvbiBwZ19jbGFzcywgY2hh ciByZWxwZXJzaXN0ZW5jZSkKIAlSZWxGaWxlTG9jYXRvckJhY2tlbmQgcmxvY2F0b3I7CiAJ Y2hhcgkgICAqcnBhdGg7CiAJYm9vbAkJY29sbGlkZXM7Ci0JQmFja2VuZElkCWJhY2tlbmQ7 CisJUHJvY051bWJlcglwcm9jTnVtYmVyOwogCiAJLyoKIAkgKiBJZiB3ZSBldmVyIGdldCBo ZXJlIGR1cmluZyBwZ191cGdyYWRlLCB0aGVyZSdzIHNvbWV0aGluZyB3cm9uZzsgYWxsCkBA IC01MTYsMTEgKzUxNiwxMSBAQCBHZXROZXdSZWxGaWxlTnVtYmVyKE9pZCByZWx0YWJsZXNw YWNlLCBSZWxhdGlvbiBwZ19jbGFzcywgY2hhciByZWxwZXJzaXN0ZW5jZSkKIAlzd2l0Y2gg KHJlbHBlcnNpc3RlbmNlKQogCXsKIAkJY2FzZSBSRUxQRVJTSVNURU5DRV9URU1QOgotCQkJ YmFja2VuZCA9IEJhY2tlbmRJZEZvclRlbXBSZWxhdGlvbnMoKTsKKwkJCXByb2NOdW1iZXIg PSBQcm9jTnVtYmVyRm9yVGVtcFJlbGF0aW9ucygpOwogCQkJYnJlYWs7CiAJCWNhc2UgUkVM UEVSU0lTVEVOQ0VfVU5MT0dHRUQ6CiAJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5U OgotCQkJYmFja2VuZCA9IEludmFsaWRCYWNrZW5kSWQ7CisJCQlwcm9jTnVtYmVyID0gSU5W QUxJRF9QUk9DX05VTUJFUjsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJP UiwgImludmFsaWQgcmVscGVyc2lzdGVuY2U6ICVjIiwgcmVscGVyc2lzdGVuY2UpOwpAQCAt NTM0LDExICs1MzQsMTEgQEAgR2V0TmV3UmVsRmlsZU51bWJlcihPaWQgcmVsdGFibGVzcGFj ZSwgUmVsYXRpb24gcGdfY2xhc3MsIGNoYXIgcmVscGVyc2lzdGVuY2UpCiAJCUludmFsaWRP aWQgOiBNeURhdGFiYXNlSWQ7CiAKIAkvKgotCSAqIFRoZSByZWxwYXRoIHdpbGwgdmFyeSBi YXNlZCBvbiB0aGUgYmFja2VuZCBJRCwgc28gd2UgbXVzdCBpbml0aWFsaXplCi0JICogdGhh dCBwcm9wZXJseSBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IGFueSBjb2xsaXNpb25zIGJhc2Vk IG9uIGZpbGVuYW1lCi0JICogYXJlIHByb3Blcmx5IGRldGVjdGVkLgorCSAqIFRoZSByZWxw YXRoIHdpbGwgdmFyeSBiYXNlZCBvbiB0aGUgYmFja2VuZCBudW1iZXIsIHNvIHdlIG11c3QK KwkgKiBpbml0aWFsaXplIHRoYXQgcHJvcGVybHkgaGVyZSB0byBtYWtlIHN1cmUgdGhhdCBh bnkgY29sbGlzaW9ucyBiYXNlZCBvbgorCSAqIGZpbGVuYW1lIGFyZSBwcm9wZXJseSBkZXRl Y3RlZC4KIAkgKi8KLQlybG9jYXRvci5iYWNrZW5kID0gYmFja2VuZDsKKwlybG9jYXRvci5i YWNrZW5kID0gcHJvY051bWJlcjsKIAogCWRvCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNl LmMKaW5kZXggNjIwY2U3ZTc1ZDIuLjU1MjFmNWJkMTM3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFt ZXNwYWNlLmMKQEAgLTM3MTQsMTggKzM3MTQsMTggQEAgVGVtcE5hbWVzcGFjZVN0YXR1cwog Y2hlY2tUZW1wTmFtZXNwYWNlU3RhdHVzKE9pZCBuYW1lc3BhY2VJZCkKIHsKIAlQR1BST0MJ ICAgKnByb2M7Ci0JaW50CQkJYmFja2VuZElkOworCVByb2NOdW1iZXIJcHJvY051bWJlcjsK IAogCUFzc2VydChPaWRJc1ZhbGlkKE15RGF0YWJhc2VJZCkpOwogCi0JYmFja2VuZElkID0g R2V0VGVtcE5hbWVzcGFjZUJhY2tlbmRJZChuYW1lc3BhY2VJZCk7CisJcHJvY051bWJlciA9 IEdldFRlbXBOYW1lc3BhY2VQcm9jTnVtYmVyKG5hbWVzcGFjZUlkKTsKIAogCS8qIE5vIHN1 Y2ggbmFtZXNwYWNlLCBvciBpdHMgbmFtZSBzaG93cyBpdCdzIG5vdCB0ZW1wPyAqLwotCWlm IChiYWNrZW5kSWQgPT0gSW52YWxpZEJhY2tlbmRJZCkKKwlpZiAocHJvY051bWJlciA9PSBJ TlZBTElEX1BST0NfTlVNQkVSKQogCQlyZXR1cm4gVEVNUF9OQU1FU1BBQ0VfTk9UX1RFTVA7 CiAKIAkvKiBJcyB0aGUgYmFja2VuZCBhbGl2ZT8gKi8KLQlwcm9jID0gQmFja2VuZElkR2V0 UHJvYyhiYWNrZW5kSWQpOworCXByb2MgPSBQcm9jTnVtYmVyR2V0UHJvYyhwcm9jTnVtYmVy KTsKIAlpZiAocHJvYyA9PSBOVUxMKQogCQlyZXR1cm4gVEVNUF9OQU1FU1BBQ0VfSURMRTsK IApAQCAtMzc0MiwxMyArMzc0MiwxMyBAQCBjaGVja1RlbXBOYW1lc3BhY2VTdGF0dXMoT2lk IG5hbWVzcGFjZUlkKQogfQogCiAvKgotICogR2V0VGVtcE5hbWVzcGFjZUJhY2tlbmRJZCAt IGlmIHRoZSBnaXZlbiBuYW1lc3BhY2UgaXMgYSB0ZW1wb3JhcnktdGFibGUKLSAqIG5hbWVz cGFjZSAoZWl0aGVyIG15IG93biwgb3IgYW5vdGhlciBiYWNrZW5kJ3MpLCByZXR1cm4gdGhl IEJhY2tlbmRJZAorICogR2V0VGVtcE5hbWVzcGFjZVByb2NOdW1iZXIgLSBpZiB0aGUgZ2l2 ZW4gbmFtZXNwYWNlIGlzIGEgdGVtcG9yYXJ5LXRhYmxlCisgKiBuYW1lc3BhY2UgKGVpdGhl ciBteSBvd24sIG9yIGFub3RoZXIgYmFja2VuZCdzKSwgcmV0dXJuIHRoZSBwcm9jIG51bWJl cgogICogdGhhdCBvd25zIGl0LiAgVGVtcG9yYXJ5LXRvYXN0LXRhYmxlIG5hbWVzcGFjZXMg YXJlIGluY2x1ZGVkLCB0b28uCi0gKiBJZiBpdCBpc24ndCBhIHRlbXAgbmFtZXNwYWNlLCBy ZXR1cm4gSW52YWxpZEJhY2tlbmRJZC4KKyAqIElmIGl0IGlzbid0IGEgdGVtcCBuYW1lc3Bh Y2UsIHJldHVybiBJTlZBTElEX1BST0NfTlVNQkVSLgogICovCi1pbnQKLUdldFRlbXBOYW1l c3BhY2VCYWNrZW5kSWQoT2lkIG5hbWVzcGFjZUlkKQorUHJvY051bWJlcgorR2V0VGVtcE5h bWVzcGFjZVByb2NOdW1iZXIoT2lkIG5hbWVzcGFjZUlkKQogewogCWludAkJCXJlc3VsdDsK IAljaGFyCSAgICpuc3BuYW1lOwpAQCAtMzc1NiwxMyArMzc1NiwxMyBAQCBHZXRUZW1wTmFt ZXNwYWNlQmFja2VuZElkKE9pZCBuYW1lc3BhY2VJZCkKIAkvKiBTZWUgaWYgdGhlIG5hbWVz cGFjZSBuYW1lIHN0YXJ0cyB3aXRoICJwZ190ZW1wXyIgb3IgInBnX3RvYXN0X3RlbXBfIiAq LwogCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUobmFtZXNwYWNlSWQpOwogCWlmICgh bnNwbmFtZSkKLQkJcmV0dXJuIEludmFsaWRCYWNrZW5kSWQ7CS8qIG5vIHN1Y2ggbmFtZXNw YWNlPyAqLworCQlyZXR1cm4gSU5WQUxJRF9QUk9DX05VTUJFUjsgLyogbm8gc3VjaCBuYW1l c3BhY2U/ICovCiAJaWYgKHN0cm5jbXAobnNwbmFtZSwgInBnX3RlbXBfIiwgOCkgPT0gMCkK IAkJcmVzdWx0ID0gYXRvaShuc3BuYW1lICsgOCk7CiAJZWxzZSBpZiAoc3RybmNtcChuc3Bu YW1lLCAicGdfdG9hc3RfdGVtcF8iLCAxNCkgPT0gMCkKIAkJcmVzdWx0ID0gYXRvaShuc3Bu YW1lICsgMTQpOwogCWVsc2UKLQkJcmVzdWx0ID0gSW52YWxpZEJhY2tlbmRJZDsKKwkJcmVz dWx0ID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAlwZnJlZShuc3BuYW1lKTsKIAlyZXR1cm4g cmVzdWx0OwogfQpAQCAtNDQwMCw4ICs0NDAwLDggQEAgSW5pdFRlbXBUYWJsZU5hbWVzcGFj ZSh2b2lkKQogCS8qCiAJICogRG8gbm90IGFsbG93IGEgSG90IFN0YW5kYnkgc2Vzc2lvbiB0 byBtYWtlIHRlbXAgdGFibGVzLiAgQXNpZGUgZnJvbQogCSAqIHByb2JsZW1zIHdpdGggbW9k aWZ5aW5nIHRoZSBzeXN0ZW0gY2F0YWxvZ3MsIHRoZXJlIGlzIGEgbmFtaW5nCi0JICogY29u ZmxpY3Q6IHBnX3RlbXBfTiBiZWxvbmdzIHRvIHRoZSBzZXNzaW9uIHdpdGggQmFja2VuZElk IE4gb24gdGhlCi0JICogcHJpbWFyeSwgbm90IHRvIGEgaG90IHN0YW5kYnkgc2Vzc2lvbiB3 aXRoIHRoZSBzYW1lIEJhY2tlbmRJZC4gIFdlCisJICogY29uZmxpY3Q6IHBnX3RlbXBfTiBi ZWxvbmdzIHRvIHRoZSBzZXNzaW9uIHdpdGggcHJvYyBudW1iZXIgTiBvbiB0aGUKKwkgKiBw cmltYXJ5LCBub3QgdG8gYSBob3Qgc3RhbmRieSBzZXNzaW9uIHdpdGggdGhlIHNhbWUgcHJv YyBudW1iZXIuICBXZQogCSAqIHNob3VsZCBub3QgYmUgYWJsZSB0byBnZXQgaGVyZSBhbnl3 YXkgZHVlIHRvIFhhY3RSZWFkT25seSBjaGVja3MsIGJ1dAogCSAqIGxldCdzIGp1c3QgbWFr ZSByZWFsIHN1cmUuICBOb3RlIHRoYXQgdGhpcyBhbHNvIGJhY2tzdG9wcyB2YXJpb3VzCiAJ ICogb3BlcmF0aW9ucyB0aGF0IGFsbG93IFhhY3RSZWFkT25seSB0cmFuc2FjdGlvbnMgdG8g bW9kaWZ5IHRlbXAgdGFibGVzOwpAQCAtNDQxOCw3ICs0NDE4LDcgQEAgSW5pdFRlbXBUYWJs ZU5hbWVzcGFjZSh2b2lkKQogCQkJCShlcnJjb2RlKEVSUkNPREVfUkVBRF9PTkxZX1NRTF9U UkFOU0FDVElPTiksCiAJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0ZSB0ZW1wb3JhcnkgdGFi bGVzIGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpKSk7CiAKLQlzbnByaW50ZihuYW1l c3BhY2VOYW1lLCBzaXplb2YobmFtZXNwYWNlTmFtZSksICJwZ190ZW1wXyVkIiwgTXlCYWNr ZW5kSWQpOworCXNucHJpbnRmKG5hbWVzcGFjZU5hbWUsIHNpemVvZihuYW1lc3BhY2VOYW1l KSwgInBnX3RlbXBfJWQiLCBNeVByb2NOdW1iZXIpOwogCiAJbmFtZXNwYWNlSWQgPSBnZXRf bmFtZXNwYWNlX29pZChuYW1lc3BhY2VOYW1lLCB0cnVlKTsKIAlpZiAoIU9pZElzVmFsaWQo bmFtZXNwYWNlSWQpKQpAQCAtNDQ1MSw3ICs0NDUxLDcgQEAgSW5pdFRlbXBUYWJsZU5hbWVz cGFjZSh2b2lkKQogCSAqIGRyb3BwaW5nIGEgcGFyZW50IHRhYmxlIHNob3VsZCBtYWtlIGl0 cyB0b2FzdCB0YWJsZSBnbyBhd2F5LikKIAkgKi8KIAlzbnByaW50ZihuYW1lc3BhY2VOYW1l LCBzaXplb2YobmFtZXNwYWNlTmFtZSksICJwZ190b2FzdF90ZW1wXyVkIiwKLQkJCSBNeUJh Y2tlbmRJZCk7CisJCQkgTXlQcm9jTnVtYmVyKTsKIAogCXRvYXN0c3BhY2VJZCA9IGdldF9u YW1lc3BhY2Vfb2lkKG5hbWVzcGFjZU5hbWUsIHRydWUpOwogCWlmICghT2lkSXNWYWxpZCh0 b2FzdHNwYWNlSWQpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdl LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYwppbmRleCBiMTU1YzAzMzg2ZS4u Y2IxNjhjZjBiNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCkBAIC02MCw3ICs2MCw3IEBA IGludAkJCXdhbF9za2lwX3RocmVzaG9sZCA9IDIwNDg7CS8qIGluIGtpbG9ieXRlcyAqLwog dHlwZWRlZiBzdHJ1Y3QgUGVuZGluZ1JlbERlbGV0ZQogewogCVJlbEZpbGVMb2NhdG9yIHJs b2NhdG9yOwkvKiByZWxhdGlvbiB0aGF0IG1heSBuZWVkIHRvIGJlIGRlbGV0ZWQgKi8KLQlC YWNrZW5kSWQJYmFja2VuZDsJCS8qIEludmFsaWRCYWNrZW5kSWQgaWYgbm90IGEgdGVtcCBy ZWwgKi8KKwlQcm9jTnVtYmVyCXByb2NOdW1iZXI7CQkvKiBJTlZBTElEX1BST0NfTlVNQkVS IGlmIG5vdCBhIHRlbXAgcmVsICovCiAJYm9vbAkJYXRDb21taXQ7CQkvKiBUPWRlbGV0ZSBh dCBjb21taXQ7IEY9ZGVsZXRlIGF0IGFib3J0ICovCiAJaW50CQkJbmVzdExldmVsOwkJLyog eGFjdCBuZXN0aW5nIGxldmVsIG9mIHJlcXVlc3QgKi8KIAlzdHJ1Y3QgUGVuZGluZ1JlbERl bGV0ZSAqbmV4dDsJLyogbGlua2VkLWxpc3QgbGluayAqLwpAQCAtMTIxLDcgKzEyMSw3IEBA IFJlbGF0aW9uQ3JlYXRlU3RvcmFnZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgY2hhciBy ZWxwZXJzaXN0ZW5jZSwKIAkJCQkJICBib29sIHJlZ2lzdGVyX2RlbGV0ZSkKIHsKIAlTTWdy UmVsYXRpb24gc3JlbDsKLQlCYWNrZW5kSWQJYmFja2VuZDsKKwlQcm9jTnVtYmVyCXByb2NO dW1iZXI7CiAJYm9vbAkJbmVlZHNfd2FsOwogCiAJQXNzZXJ0KCFJc0luUGFyYWxsZWxNb2Rl KCkpOwkvKiBjb3VsZG4ndCB1cGRhdGUgcGVuZGluZ1N5bmNIYXNoICovCkBAIC0xMjksMTUg KzEyOSwxNSBAQCBSZWxhdGlvbkNyZWF0ZVN0b3JhZ2UoUmVsRmlsZUxvY2F0b3IgcmxvY2F0 b3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJc3dpdGNoIChyZWxwZXJzaXN0ZW5jZSkKIAl7 CiAJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfVEVNUDoKLQkJCWJhY2tlbmQgPSBCYWNrZW5kSWRG b3JUZW1wUmVsYXRpb25zKCk7CisJCQlwcm9jTnVtYmVyID0gUHJvY051bWJlckZvclRlbXBS ZWxhdGlvbnMoKTsKIAkJCW5lZWRzX3dhbCA9IGZhbHNlOwogCQkJYnJlYWs7CiAJCWNhc2Ug UkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQ6Ci0JCQliYWNrZW5kID0gSW52YWxpZEJhY2tlbmRJ ZDsKKwkJCXByb2NOdW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQkJbmVlZHNfd2Fs ID0gZmFsc2U7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQ6 Ci0JCQliYWNrZW5kID0gSW52YWxpZEJhY2tlbmRJZDsKKwkJCXByb2NOdW1iZXIgPSBJTlZB TElEX1BST0NfTlVNQkVSOwogCQkJbmVlZHNfd2FsID0gdHJ1ZTsKIAkJCWJyZWFrOwogCQlk ZWZhdWx0OgpAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlbGF0aW9uQ3JlYXRlU3RvcmFnZShSZWxG aWxlTG9jYXRvciBybG9jYXRvciwgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCXJldHVybiBO VUxMOwkJLyogcGxhY2F0ZSBjb21waWxlciAqLwogCX0KIAotCXNyZWwgPSBzbWdyb3Blbihy bG9jYXRvciwgYmFja2VuZCk7CisJc3JlbCA9IHNtZ3JvcGVuKHJsb2NhdG9yLCBwcm9jTnVt YmVyKTsKIAlzbWdyY3JlYXRlKHNyZWwsIE1BSU5fRk9SS05VTSwgZmFsc2UpOwogCiAJaWYg KG5lZWRzX3dhbCkKQEAgLTE2Miw3ICsxNjIsNyBAQCBSZWxhdGlvbkNyZWF0ZVN0b3JhZ2Uo UmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJCXBlbmRp bmcgPSAoUGVuZGluZ1JlbERlbGV0ZSAqKQogCQkJTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1l bW9yeUNvbnRleHQsIHNpemVvZihQZW5kaW5nUmVsRGVsZXRlKSk7CiAJCXBlbmRpbmctPnJs b2NhdG9yID0gcmxvY2F0b3I7Ci0JCXBlbmRpbmctPmJhY2tlbmQgPSBiYWNrZW5kOworCQlw ZW5kaW5nLT5wcm9jTnVtYmVyID0gcHJvY051bWJlcjsKIAkJcGVuZGluZy0+YXRDb21taXQg PSBmYWxzZTsJLyogZGVsZXRlIGlmIGFib3J0ICovCiAJCXBlbmRpbmctPm5lc3RMZXZlbCA9 IEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgpOwogCQlwZW5kaW5nLT5uZXh0ID0g cGVuZGluZ0RlbGV0ZXM7CkBAIC0xNzEsNyArMTcxLDcgQEAgUmVsYXRpb25DcmVhdGVTdG9y YWdlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBjaGFyIHJlbHBlcnNpc3RlbmNlLAogCiAJ aWYgKHJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCAmJiAhWExv Z0lzTmVlZGVkKCkpCiAJewotCQlBc3NlcnQoYmFja2VuZCA9PSBJbnZhbGlkQmFja2VuZElk KTsKKwkJQXNzZXJ0KHByb2NOdW1iZXIgPT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAJCUFk ZFBlbmRpbmdTeW5jKCZybG9jYXRvcik7CiAJfQogCkBAIC0yMTAsNyArMjEwLDcgQEAgUmVs YXRpb25Ecm9wU3RvcmFnZShSZWxhdGlvbiByZWwpCiAJcGVuZGluZyA9IChQZW5kaW5nUmVs RGVsZXRlICopCiAJCU1lbW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0LCBzaXpl b2YoUGVuZGluZ1JlbERlbGV0ZSkpOwogCXBlbmRpbmctPnJsb2NhdG9yID0gcmVsLT5yZF9s b2NhdG9yOwotCXBlbmRpbmctPmJhY2tlbmQgPSByZWwtPnJkX2JhY2tlbmQ7CisJcGVuZGlu Zy0+cHJvY051bWJlciA9IHJlbC0+cmRfYmFja2VuZDsKIAlwZW5kaW5nLT5hdENvbW1pdCA9 IHRydWU7CS8qIGRlbGV0ZSBpZiBjb21taXQgKi8KIAlwZW5kaW5nLT5uZXN0TGV2ZWwgPSBH ZXRDdXJyZW50VHJhbnNhY3Rpb25OZXN0TGV2ZWwoKTsKIAlwZW5kaW5nLT5uZXh0ID0gcGVu ZGluZ0RlbGV0ZXM7CkBAIC02NzgsNyArNjc4LDcgQEAgc21nckRvUGVuZGluZ0RlbGV0ZXMo Ym9vbCBpc0NvbW1pdCkKIAkJCXsKIAkJCQlTTWdyUmVsYXRpb24gc3JlbDsKIAotCQkJCXNy ZWwgPSBzbWdyb3BlbihwZW5kaW5nLT5ybG9jYXRvciwgcGVuZGluZy0+YmFja2VuZCk7CisJ CQkJc3JlbCA9IHNtZ3JvcGVuKHBlbmRpbmctPnJsb2NhdG9yLCBwZW5kaW5nLT5wcm9jTnVt YmVyKTsKIAogCQkJCS8qIGFsbG9jYXRlIHRoZSBpbml0aWFsIGFycmF5LCBvciBleHRlbmQg aXQsIGlmIG5lZWRlZCAqLwogCQkJCWlmIChtYXhyZWxzID09IDApCkBAIC03NTksNyArNzU5 LDcgQEAgc21nckRvUGVuZGluZ1N5bmNzKGJvb2wgaXNDb21taXQsIGJvb2wgaXNQYXJhbGxl bFdvcmtlcikKIAkJQmxvY2tOdW1iZXIgdG90YWxfYmxvY2tzID0gMDsKIAkJU01nclJlbGF0 aW9uIHNyZWw7CiAKLQkJc3JlbCA9IHNtZ3JvcGVuKHBlbmRpbmdzeW5jLT5ybG9jYXRvciwg SW52YWxpZEJhY2tlbmRJZCk7CisJCXNyZWwgPSBzbWdyb3BlbihwZW5kaW5nc3luYy0+cmxv Y2F0b3IsIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCiAJCS8qCiAJCSAqIFdlIGVtaXQgbmV3 cGFnZSBXQUwgcmVjb3JkcyBmb3Igc21hbGxlciByZWxhdGlvbnMuCkBAIC04NzgsNyArODc4 LDcgQEAgc21nckdldFBlbmRpbmdEZWxldGVzKGJvb2wgZm9yQ29tbWl0LCBSZWxGaWxlTG9j YXRvciAqKnB0cikKIAlmb3IgKHBlbmRpbmcgPSBwZW5kaW5nRGVsZXRlczsgcGVuZGluZyAh PSBOVUxMOyBwZW5kaW5nID0gcGVuZGluZy0+bmV4dCkKIAl7CiAJCWlmIChwZW5kaW5nLT5u ZXN0TGV2ZWwgPj0gbmVzdExldmVsICYmIHBlbmRpbmctPmF0Q29tbWl0ID09IGZvckNvbW1p dAotCQkJJiYgcGVuZGluZy0+YmFja2VuZCA9PSBJbnZhbGlkQmFja2VuZElkKQorCQkJJiYg cGVuZGluZy0+cHJvY051bWJlciA9PSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQkJbnJlbHMr KzsKIAl9CiAJaWYgKG5yZWxzID09IDApCkBAIC04OTEsNyArODkxLDcgQEAgc21nckdldFBl bmRpbmdEZWxldGVzKGJvb2wgZm9yQ29tbWl0LCBSZWxGaWxlTG9jYXRvciAqKnB0cikKIAlm b3IgKHBlbmRpbmcgPSBwZW5kaW5nRGVsZXRlczsgcGVuZGluZyAhPSBOVUxMOyBwZW5kaW5n ID0gcGVuZGluZy0+bmV4dCkKIAl7CiAJCWlmIChwZW5kaW5nLT5uZXN0TGV2ZWwgPj0gbmVz dExldmVsICYmIHBlbmRpbmctPmF0Q29tbWl0ID09IGZvckNvbW1pdAotCQkJJiYgcGVuZGlu Zy0+YmFja2VuZCA9PSBJbnZhbGlkQmFja2VuZElkKQorCQkJJiYgcGVuZGluZy0+cHJvY051 bWJlciA9PSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQl7CiAJCQkqcnB0ciA9IHBlbmRpbmct PnJsb2NhdG9yOwogCQkJcnB0cisrOwpAQCAtOTY4LDcgKzk2OCw3IEBAIHNtZ3JfcmVkbyhY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJeGxfc21ncl9jcmVhdGUgKnhscmVjID0gKHhs X3NtZ3JfY3JlYXRlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7CiAJCVNNZ3JSZWxhdGlv biByZWxuOwogCi0JCXJlbG4gPSBzbWdyb3Blbih4bHJlYy0+cmxvY2F0b3IsIEludmFsaWRC YWNrZW5kSWQpOworCQlyZWxuID0gc21ncm9wZW4oeGxyZWMtPnJsb2NhdG9yLCBJTlZBTElE X1BST0NfTlVNQkVSKTsKIAkJc21ncmNyZWF0ZShyZWxuLCB4bHJlYy0+Zm9ya051bSwgdHJ1 ZSk7CiAJfQogCWVsc2UgaWYgKGluZm8gPT0gWExPR19TTUdSX1RSVU5DQVRFKQpAQCAtOTgx LDcgKzk4MSw3IEBAIHNtZ3JfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaW50 CQkJbmZvcmtzID0gMDsKIAkJYm9vbAkJbmVlZF9mc21fdmFjdXVtID0gZmFsc2U7CiAKLQkJ cmVsbiA9IHNtZ3JvcGVuKHhscmVjLT5ybG9jYXRvciwgSW52YWxpZEJhY2tlbmRJZCk7CisJ CXJlbG4gPSBzbWdyb3Blbih4bHJlYy0+cmxvY2F0b3IsIElOVkFMSURfUFJPQ19OVU1CRVIp OwogCiAJCS8qCiAJCSAqIEZvcmNpYmx5IGNyZWF0ZSByZWxhdGlvbiBpZiBpdCBkb2Vzbid0 IGV4aXN0ICh3aGljaCBzdWdnZXN0cyB0aGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9hc3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRleCA4 YjI0YjIyMjkzMS4uZjkwNDYzYjM2OWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtMjQ2 LDcgKzI0Niw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXVlQmFja2VuZFN0YXR1cwogewogCWlu dDMyCQlwaWQ7CQkJLyogZWl0aGVyIGEgUElEIG9yIEludmFsaWRQaWQgKi8KIAlPaWQJCQlk Ym9pZDsJCQkvKiBiYWNrZW5kJ3MgZGF0YWJhc2UgT0lELCBvciBJbnZhbGlkT2lkICovCi0J QmFja2VuZElkCW5leHRMaXN0ZW5lcjsJLyogaWQgb2YgbmV4dCBsaXN0ZW5lciwgb3IgSW52 YWxpZEJhY2tlbmRJZCAqLworCVByb2NOdW1iZXIJbmV4dExpc3RlbmVyOwkvKiBpZCBvZiBu ZXh0IGxpc3RlbmVyLCBvciBJTlZBTElEX1BST0NfTlVNQkVSICovCiAJUXVldWVQb3NpdGlv biBwb3M7CQkJLyogYmFja2VuZCBoYXMgcmVhZCBxdWV1ZSB1cCB0byBoZXJlICovCiB9IFF1 ZXVlQmFja2VuZFN0YXR1czsKIApAQCAtMjcxLDEzICsyNzEsMTIgQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVldWVCYWNrZW5kU3RhdHVzCiAgKiBOb3RpZnlRdWV1ZVRhaWxMb2NrLCB0aGVuIE5v dGlmeVF1ZXVlTG9jaywgYW5kIGxhc3RseSBOb3RpZnlTTFJVTG9jay4KICAqCiAgKiBFYWNo IGJhY2tlbmQgdXNlcyB0aGUgYmFja2VuZFtdIGFycmF5IGVudHJ5IHdpdGggaW5kZXggZXF1 YWwgdG8gaXRzCi0gKiBCYWNrZW5kSWQgKHdoaWNoIGNhbiByYW5nZSBmcm9tIDEgdG8gTWF4 QmFja2VuZHMpLiAgV2UgcmVseSBvbiB0aGlzIHRvIG1ha2UKLSAqIFNlbmRQcm9jU2lnbmFs IGZhc3QuCisgKiBQcm9jTnVtYmVyLiAgV2UgcmVseSBvbiB0aGlzIHRvIG1ha2UgU2VuZFBy b2NTaWduYWwgZmFzdC4KICAqCiAgKiBUaGUgYmFja2VuZFtdIGFycmF5IGVudHJpZXMgZm9y IGFjdGl2ZWx5LWxpc3RlbmluZyBiYWNrZW5kcyBhcmUgdGhyZWFkZWQKICAqIHRvZ2V0aGVy IHVzaW5nIGZpcnN0TGlzdGVuZXIgYW5kIHRoZSBuZXh0TGlzdGVuZXIgbGlua3MsIHNvIHRo YXQgd2UgY2FuCiAgKiBzY2FuIHRoZW0gd2l0aG91dCBoYXZpbmcgdG8gaXRlcmF0ZSBvdmVy IGluYWN0aXZlIGVudHJpZXMuICBXZSBrZWVwIHRoaXMKLSAqIGxpc3QgaW4gb3JkZXIgYnkg QmFja2VuZElkIHNvIHRoYXQgdGhlIHNjYW4gaXMgY2FjaGUtZnJpZW5kbHkgd2hlbiB0aGVy ZQorICogbGlzdCBpbiBvcmRlciBieSBQcm9jTnVtYmVyIHNvIHRoYXQgdGhlIHNjYW4gaXMg Y2FjaGUtZnJpZW5kbHkgd2hlbiB0aGVyZQogICogYXJlIG1hbnkgYWN0aXZlIGVudHJpZXMu CiAgKi8KIHR5cGVkZWYgc3RydWN0IEFzeW5jUXVldWVDb250cm9sCkBAIC0yODcsMTAgKzI4 NiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBBc3luY1F1ZXVlQ29udHJvbAogCQkJCQkJCQkgKiBs aXN0ZW5pbmcgYmFja2VuZCAqLwogCWludAkJCXN0b3BQYWdlOwkJLyogb2xkZXN0IHVucmVj eWNsZWQgcGFnZTsgbXVzdCBiZSA8PQogCQkJCQkJCQkgKiB0YWlsLnBhZ2UgKi8KLQlCYWNr ZW5kSWQJZmlyc3RMaXN0ZW5lcjsJLyogaWQgb2YgZmlyc3QgbGlzdGVuZXIsIG9yIEludmFs aWRCYWNrZW5kSWQgKi8KKwlQcm9jTnVtYmVyCWZpcnN0TGlzdGVuZXI7CS8qIGlkIG9mIGZp cnN0IGxpc3RlbmVyLCBvcgorCQkJCQkJCQkgKiBJTlZBTElEX1BST0NfTlVNQkVSICovCiAJ VGltZXN0YW1wVHogbGFzdFF1ZXVlRmlsbFdhcm47CS8qIHRpbWUgb2YgbGFzdCBxdWV1ZS1m dWxsIG1zZyAqLwogCVF1ZXVlQmFja2VuZFN0YXR1cyBiYWNrZW5kW0ZMRVhJQkxFX0FSUkFZ X01FTUJFUl07Ci0JLyogYmFja2VuZFswXSBpcyBub3QgdXNlZDsgdXNlZCBlbnRyaWVzIGFy ZSBmcm9tIFsxXSB0byBbTWF4QmFja2VuZHNdICovCiB9IEFzeW5jUXVldWVDb250cm9sOwog CiBzdGF0aWMgQXN5bmNRdWV1ZUNvbnRyb2wgKmFzeW5jUXVldWVDb250cm9sOwpAQCAtNDg5 LDcgKzQ4OCw3IEBAIEFzeW5jU2htZW1TaXplKHZvaWQpCiAJU2l6ZQkJc2l6ZTsKIAogCS8q IFRoaXMgaGFkIGJldHRlciBtYXRjaCBBc3luY1NobWVtSW5pdCAqLwotCXNpemUgPSBtdWxf c2l6ZShNYXhCYWNrZW5kcyArIDEsIHNpemVvZihRdWV1ZUJhY2tlbmRTdGF0dXMpKTsKKwlz aXplID0gbXVsX3NpemUoTWF4QmFja2VuZHMsIHNpemVvZihRdWV1ZUJhY2tlbmRTdGF0dXMp KTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgb2Zmc2V0b2YoQXN5bmNRdWV1ZUNvbnRyb2ws IGJhY2tlbmQpKTsKIAogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaW1wbGVMcnVTaG1lbVNp emUoTlVNX05PVElGWV9CVUZGRVJTLCAwKSk7CkBAIC01MDgsMTEgKzUwNyw4IEBAIEFzeW5j U2htZW1Jbml0KHZvaWQpCiAKIAkvKgogCSAqIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIEFz eW5jUXVldWVDb250cm9sIHN0cnVjdHVyZS4KLQkgKgotCSAqIFRoZSB1c2VkIGVudHJpZXMg aW4gdGhlIGJhY2tlbmRbXSBhcnJheSBydW4gZnJvbSAxIHRvIE1heEJhY2tlbmRzOyB0aGUK LQkgKiB6ZXJvJ3RoIGVudHJ5IGlzIHVudXNlZCBidXQgbXVzdCBiZSBhbGxvY2F0ZWQuCiAJ ICovCi0Jc2l6ZSA9IG11bF9zaXplKE1heEJhY2tlbmRzICsgMSwgc2l6ZW9mKFF1ZXVlQmFj a2VuZFN0YXR1cykpOworCXNpemUgPSBtdWxfc2l6ZShNYXhCYWNrZW5kcywgc2l6ZW9mKFF1 ZXVlQmFja2VuZFN0YXR1cykpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihB c3luY1F1ZXVlQ29udHJvbCwgYmFja2VuZCkpOwogCiAJYXN5bmNRdWV1ZUNvbnRyb2wgPSAo QXN5bmNRdWV1ZUNvbnRyb2wgKikKQEAgLTUyNCwxNCArNTIwLDEzIEBAIEFzeW5jU2htZW1J bml0KHZvaWQpCiAJCVNFVF9RVUVVRV9QT1MoUVVFVUVfSEVBRCwgMCwgMCk7CiAJCVNFVF9R VUVVRV9QT1MoUVVFVUVfVEFJTCwgMCwgMCk7CiAJCVFVRVVFX1NUT1BfUEFHRSA9IDA7Ci0J CVFVRVVFX0ZJUlNUX0xJU1RFTkVSID0gSW52YWxpZEJhY2tlbmRJZDsKKwkJUVVFVUVfRklS U1RfTElTVEVORVIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQlhc3luY1F1ZXVlQ29udHJv bC0+bGFzdFF1ZXVlRmlsbFdhcm4gPSAwOwotCQkvKiB6ZXJvJ3RoIGVudHJ5IHdvbid0IGJl IHVzZWQsIGJ1dCBsZXQncyBpbml0aWFsaXplIGl0IGFueXdheSAqLwotCQlmb3IgKGludCBp ID0gMDsgaSA8PSBNYXhCYWNrZW5kczsgaSsrKQorCQlmb3IgKGludCBpID0gMDsgaSA8IE1h eEJhY2tlbmRzOyBpKyspCiAJCXsKIAkJCVFVRVVFX0JBQ0tFTkRfUElEKGkpID0gSW52YWxp ZFBpZDsKIAkJCVFVRVVFX0JBQ0tFTkRfREJPSUQoaSkgPSBJbnZhbGlkT2lkOwotCQkJUVVF VUVfTkVYVF9MSVNURU5FUihpKSA9IEludmFsaWRCYWNrZW5kSWQ7CisJCQlRVUVVRV9ORVhU X0xJU1RFTkVSKGkpID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJCVNFVF9RVUVVRV9QT1Mo UVVFVUVfQkFDS0VORF9QT1MoaSksIDAsIDApOwogCQl9CiAJfQpAQCAtMTA0OCw3ICsxMDQz LDcgQEAgRXhlY19MaXN0ZW5QcmVDb21taXQodm9pZCkKIHsKIAlRdWV1ZVBvc2l0aW9uIGhl YWQ7CiAJUXVldWVQb3NpdGlvbiBtYXg7Ci0JQmFja2VuZElkCXByZXZMaXN0ZW5lcjsKKwlQ cm9jTnVtYmVyCXByZXZMaXN0ZW5lcjsKIAogCS8qCiAJICogTm90aGluZyB0byBkbyBpZiB3 ZSBhcmUgYWxyZWFkeSBsaXN0ZW5pbmcgdG8gc29tZXRoaW5nLCBub3IgaWYgd2UKQEAgLTEw OTMsMjggKzEwODgsMjggQEAgRXhlY19MaXN0ZW5QcmVDb21taXQodm9pZCkKIAlMV0xvY2tB Y3F1aXJlKE5vdGlmeVF1ZXVlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAloZWFkID0gUVVFVUVf SEVBRDsKIAltYXggPSBRVUVVRV9UQUlMOwotCXByZXZMaXN0ZW5lciA9IEludmFsaWRCYWNr ZW5kSWQ7Ci0JZm9yIChCYWNrZW5kSWQgaSA9IFFVRVVFX0ZJUlNUX0xJU1RFTkVSOyBpID4g MDsgaSA9IFFVRVVFX05FWFRfTElTVEVORVIoaSkpCisJcHJldkxpc3RlbmVyID0gSU5WQUxJ RF9QUk9DX05VTUJFUjsKKwlmb3IgKFByb2NOdW1iZXIgaSA9IFFVRVVFX0ZJUlNUX0xJU1RF TkVSOyBpICE9IElOVkFMSURfUFJPQ19OVU1CRVI7IGkgPSBRVUVVRV9ORVhUX0xJU1RFTkVS KGkpKQogCXsKIAkJaWYgKFFVRVVFX0JBQ0tFTkRfREJPSUQoaSkgPT0gTXlEYXRhYmFzZUlk KQogCQkJbWF4ID0gUVVFVUVfUE9TX01BWChtYXgsIFFVRVVFX0JBQ0tFTkRfUE9TKGkpKTsK IAkJLyogQWxzbyBmaW5kIGxhc3QgbGlzdGVuaW5nIGJhY2tlbmQgYmVmb3JlIHRoaXMgb25l ICovCi0JCWlmIChpIDwgTXlCYWNrZW5kSWQpCisJCWlmIChpIDwgTXlQcm9jTnVtYmVyKQog CQkJcHJldkxpc3RlbmVyID0gaTsKIAl9Ci0JUVVFVUVfQkFDS0VORF9QT1MoTXlCYWNrZW5k SWQpID0gbWF4OwotCVFVRVVFX0JBQ0tFTkRfUElEKE15QmFja2VuZElkKSA9IE15UHJvY1Bp ZDsKLQlRVUVVRV9CQUNLRU5EX0RCT0lEKE15QmFja2VuZElkKSA9IE15RGF0YWJhc2VJZDsK KwlRVUVVRV9CQUNLRU5EX1BPUyhNeVByb2NOdW1iZXIpID0gbWF4OworCVFVRVVFX0JBQ0tF TkRfUElEKE15UHJvY051bWJlcikgPSBNeVByb2NQaWQ7CisJUVVFVUVfQkFDS0VORF9EQk9J RChNeVByb2NOdW1iZXIpID0gTXlEYXRhYmFzZUlkOwogCS8qIEluc2VydCBiYWNrZW5kIGlu dG8gbGlzdCBvZiBsaXN0ZW5lcnMgYXQgY29ycmVjdCBwb3NpdGlvbiAqLwotCWlmIChwcmV2 TGlzdGVuZXIgPiAwKQorCWlmIChwcmV2TGlzdGVuZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJF UikKIAl7Ci0JCVFVRVVFX05FWFRfTElTVEVORVIoTXlCYWNrZW5kSWQpID0gUVVFVUVfTkVY VF9MSVNURU5FUihwcmV2TGlzdGVuZXIpOwotCQlRVUVVRV9ORVhUX0xJU1RFTkVSKHByZXZM aXN0ZW5lcikgPSBNeUJhY2tlbmRJZDsKKwkJUVVFVUVfTkVYVF9MSVNURU5FUihNeVByb2NO dW1iZXIpID0gUVVFVUVfTkVYVF9MSVNURU5FUihwcmV2TGlzdGVuZXIpOworCQlRVUVVRV9O RVhUX0xJU1RFTkVSKHByZXZMaXN0ZW5lcikgPSBNeVByb2NOdW1iZXI7CiAJfQogCWVsc2UK IAl7Ci0JCVFVRVVFX05FWFRfTElTVEVORVIoTXlCYWNrZW5kSWQpID0gUVVFVUVfRklSU1Rf TElTVEVORVI7Ci0JCVFVRVVFX0ZJUlNUX0xJU1RFTkVSID0gTXlCYWNrZW5kSWQ7CisJCVFV RVVFX05FWFRfTElTVEVORVIoTXlQcm9jTnVtYmVyKSA9IFFVRVVFX0ZJUlNUX0xJU1RFTkVS OworCQlRVUVVRV9GSVJTVF9MSVNURU5FUiA9IE15UHJvY051bWJlcjsKIAl9CiAJTFdMb2Nr UmVsZWFzZShOb3RpZnlRdWV1ZUxvY2spOwogCkBAIC0xMjQ2LDIzICsxMjQxLDIzIEBAIGFz eW5jUXVldWVVbnJlZ2lzdGVyKHZvaWQpCiAJICovCiAJTFdMb2NrQWNxdWlyZShOb3RpZnlR dWV1ZUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJLyogTWFyayBvdXIgZW50cnkgYXMgaW52YWxp ZCAqLwotCVFVRVVFX0JBQ0tFTkRfUElEKE15QmFja2VuZElkKSA9IEludmFsaWRQaWQ7Ci0J UVVFVUVfQkFDS0VORF9EQk9JRChNeUJhY2tlbmRJZCkgPSBJbnZhbGlkT2lkOworCVFVRVVF X0JBQ0tFTkRfUElEKE15UHJvY051bWJlcikgPSBJbnZhbGlkUGlkOworCVFVRVVFX0JBQ0tF TkRfREJPSUQoTXlQcm9jTnVtYmVyKSA9IEludmFsaWRPaWQ7CiAJLyogYW5kIHJlbW92ZSBp dCBmcm9tIHRoZSBsaXN0ICovCi0JaWYgKFFVRVVFX0ZJUlNUX0xJU1RFTkVSID09IE15QmFj a2VuZElkKQotCQlRVUVVRV9GSVJTVF9MSVNURU5FUiA9IFFVRVVFX05FWFRfTElTVEVORVIo TXlCYWNrZW5kSWQpOworCWlmIChRVUVVRV9GSVJTVF9MSVNURU5FUiA9PSBNeVByb2NOdW1i ZXIpCisJCVFVRVVFX0ZJUlNUX0xJU1RFTkVSID0gUVVFVUVfTkVYVF9MSVNURU5FUihNeVBy b2NOdW1iZXIpOwogCWVsc2UKIAl7Ci0JCWZvciAoQmFja2VuZElkIGkgPSBRVUVVRV9GSVJT VF9MSVNURU5FUjsgaSA+IDA7IGkgPSBRVUVVRV9ORVhUX0xJU1RFTkVSKGkpKQorCQlmb3Ig KFByb2NOdW1iZXIgaSA9IFFVRVVFX0ZJUlNUX0xJU1RFTkVSOyBpICE9IElOVkFMSURfUFJP Q19OVU1CRVI7IGkgPSBRVUVVRV9ORVhUX0xJU1RFTkVSKGkpKQogCQl7Ci0JCQlpZiAoUVVF VUVfTkVYVF9MSVNURU5FUihpKSA9PSBNeUJhY2tlbmRJZCkKKwkJCWlmIChRVUVVRV9ORVhU X0xJU1RFTkVSKGkpID09IE15UHJvY051bWJlcikKIAkJCXsKLQkJCQlRVUVVRV9ORVhUX0xJ U1RFTkVSKGkpID0gUVVFVUVfTkVYVF9MSVNURU5FUihNeUJhY2tlbmRJZCk7CisJCQkJUVVF VUVfTkVYVF9MSVNURU5FUihpKSA9IFFVRVVFX05FWFRfTElTVEVORVIoTXlQcm9jTnVtYmVy KTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQogCX0KLQlRVUVVRV9ORVhUX0xJU1RFTkVSKE15 QmFja2VuZElkKSA9IEludmFsaWRCYWNrZW5kSWQ7CisJUVVFVUVfTkVYVF9MSVNURU5FUihN eVByb2NOdW1iZXIpID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAlMV0xvY2tSZWxlYXNlKE5v dGlmeVF1ZXVlTG9jayk7CiAKIAkvKiBtYXJrIG91cnNlbHZlcyBhcyBubyBsb25nZXIgbGlz dGVkIGluIHRoZSBnbG9iYWwgYXJyYXkgKi8KQEAgLTE1MzMsNyArMTUyOCw3IEBAIGFzeW5j UXVldWVGaWxsV2FybmluZyh2b2lkKQogCQlRdWV1ZVBvc2l0aW9uIG1pbiA9IFFVRVVFX0hF QUQ7CiAJCWludDMyCQltaW5QaWQgPSBJbnZhbGlkUGlkOwogCi0JCWZvciAoQmFja2VuZElk IGkgPSBRVUVVRV9GSVJTVF9MSVNURU5FUjsgaSA+IDA7IGkgPSBRVUVVRV9ORVhUX0xJU1RF TkVSKGkpKQorCQlmb3IgKFByb2NOdW1iZXIgaSA9IFFVRVVFX0ZJUlNUX0xJU1RFTkVSOyBp ICE9IElOVkFMSURfUFJPQ19OVU1CRVI7IGkgPSBRVUVVRV9ORVhUX0xJU1RFTkVSKGkpKQog CQl7CiAJCQlBc3NlcnQoUVVFVUVfQkFDS0VORF9QSUQoaSkgIT0gSW52YWxpZFBpZCk7CiAJ CQltaW4gPSBRVUVVRV9QT1NfTUlOKG1pbiwgUVVFVUVfQkFDS0VORF9QT1MoaSkpOwpAQCAt MTU2NCw3ICsxNTU5LDcgQEAgYXN5bmNRdWV1ZUZpbGxXYXJuaW5nKHZvaWQpCiAgKiBiZWhp bmQuICBXYWtlbiB0aGVtIGFueXdheSBpZiB0aGV5J3JlIGZhciBlbm91Z2ggYmVoaW5kLCBz byB0aGF0IHRoZXknbGwKICAqIGFkdmFuY2UgdGhlaXIgcXVldWUgcG9zaXRpb24gcG9pbnRl cnMsIGFsbG93aW5nIHRoZSBnbG9iYWwgdGFpbCB0byBhZHZhbmNlLgogICoKLSAqIFNpbmNl IHdlIGtub3cgdGhlIEJhY2tlbmRJZCBhbmQgdGhlIFBpZCB0aGUgc2lnbmFsaW5nIGlzIHF1 aXRlIGNoZWFwLgorICogU2luY2Ugd2Uga25vdyB0aGUgUHJvY051bWJlciBhbmQgdGhlIFBp ZCB0aGUgc2lnbmFsaW5nIGlzIHF1aXRlIGNoZWFwLgogICoKICAqIFRoaXMgaXMgY2FsbGVk IGR1cmluZyBDb21taXRUcmFuc2FjdGlvbigpLCBzbyBpdCdzIGltcG9ydGFudCBmb3IgaXQK ICAqIHRvIGhhdmUgdmVyeSBsb3cgcHJvYmFiaWxpdHkgb2YgZmFpbHVyZS4KQEAgLTE1NzMs NyArMTU2OCw3IEBAIHN0YXRpYyB2b2lkCiBTaWduYWxCYWNrZW5kcyh2b2lkKQogewogCWlu dDMyCSAgICpwaWRzOwotCUJhY2tlbmRJZCAgKmlkczsKKwlQcm9jTnVtYmVyICpwcm9jbm9z OwogCWludAkJCWNvdW50OwogCiAJLyoKQEAgLTE1ODUsMTEgKzE1ODAsMTEgQEAgU2lnbmFs QmFja2VuZHModm9pZCkKIAkgKiBwcmVhbGxvY2F0ZSB0aGUgYXJyYXlzPyAgVGhleSdyZSBu b3QgdGhhdCBsYXJnZSwgdGhvdWdoLgogCSAqLwogCXBpZHMgPSAoaW50MzIgKikgcGFsbG9j KE1heEJhY2tlbmRzICogc2l6ZW9mKGludDMyKSk7Ci0JaWRzID0gKEJhY2tlbmRJZCAqKSBw YWxsb2MoTWF4QmFja2VuZHMgKiBzaXplb2YoQmFja2VuZElkKSk7CisJcHJvY25vcyA9IChQ cm9jTnVtYmVyICopIHBhbGxvYyhNYXhCYWNrZW5kcyAqIHNpemVvZihQcm9jTnVtYmVyKSk7 CiAJY291bnQgPSAwOwogCiAJTFdMb2NrQWNxdWlyZShOb3RpZnlRdWV1ZUxvY2ssIExXX0VY Q0xVU0lWRSk7Ci0JZm9yIChCYWNrZW5kSWQgaSA9IFFVRVVFX0ZJUlNUX0xJU1RFTkVSOyBp ID4gMDsgaSA9IFFVRVVFX05FWFRfTElTVEVORVIoaSkpCisJZm9yIChQcm9jTnVtYmVyIGkg PSBRVUVVRV9GSVJTVF9MSVNURU5FUjsgaSAhPSBJTlZBTElEX1BST0NfTlVNQkVSOyBpID0g UVVFVUVfTkVYVF9MSVNURU5FUihpKSkKIAl7CiAJCWludDMyCQlwaWQgPSBRVUVVRV9CQUNL RU5EX1BJRChpKTsKIAkJUXVldWVQb3NpdGlvbiBwb3M7CkBAIC0xNjE3LDcgKzE2MTIsNyBA QCBTaWduYWxCYWNrZW5kcyh2b2lkKQogCQl9CiAJCS8qIE9LLCBuZWVkIHRvIHNpZ25hbCB0 aGlzIG9uZSAqLwogCQlwaWRzW2NvdW50XSA9IHBpZDsKLQkJaWRzW2NvdW50XSA9IGk7CisJ CXByb2Nub3NbY291bnRdID0gaTsKIAkJY291bnQrKzsKIAl9CiAJTFdMb2NrUmVsZWFzZShO b3RpZnlRdWV1ZUxvY2spOwpAQCAtMTY0MywxMiArMTYzOCwxMiBAQCBTaWduYWxCYWNrZW5k cyh2b2lkKQogCQkgKiBOb3RpZnlRdWV1ZUxvY2s7IHdoaWNoIGlzIHVubGlrZWx5IGJ1dCBj ZXJ0YWlubHkgcG9zc2libGUuIFNvIHdlCiAJCSAqIGp1c3QgbG9nIGEgbG93LWxldmVsIGRl YnVnIG1lc3NhZ2UgaWYgaXQgaGFwcGVucy4KIAkJICovCi0JCWlmIChTZW5kUHJvY1NpZ25h bChwaWQsIFBST0NTSUdfTk9USUZZX0lOVEVSUlVQVCwgaWRzW2ldKSA8IDApCisJCWlmIChT ZW5kUHJvY1NpZ25hbChwaWQsIFBST0NTSUdfTk9USUZZX0lOVEVSUlVQVCwgcHJvY25vc1tp XSkgPCAwKQogCQkJZWxvZyhERUJVRzMsICJjb3VsZCBub3Qgc2lnbmFsIGJhY2tlbmQgd2l0 aCBQSUQgJWQ6ICVtIiwgcGlkKTsKIAl9CiAKIAlwZnJlZShwaWRzKTsKLQlwZnJlZShpZHMp OworCXBmcmVlKHByb2Nub3MpOwogfQogCiAvKgpAQCAtMTg1Niw4ICsxODUxLDggQEAgYXN5 bmNRdWV1ZVJlYWRBbGxOb3RpZmljYXRpb25zKHZvaWQpCiAJLyogRmV0Y2ggY3VycmVudCBz dGF0ZSAqLwogCUxXTG9ja0FjcXVpcmUoTm90aWZ5UXVldWVMb2NrLCBMV19TSEFSRUQpOwog CS8qIEFzc2VydCBjaGVja3MgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgc3RhdGUgZW50cnkgKi8K LQlBc3NlcnQoTXlQcm9jUGlkID09IFFVRVVFX0JBQ0tFTkRfUElEKE15QmFja2VuZElkKSk7 Ci0JcG9zID0gUVVFVUVfQkFDS0VORF9QT1MoTXlCYWNrZW5kSWQpOworCUFzc2VydChNeVBy b2NQaWQgPT0gUVVFVUVfQkFDS0VORF9QSUQoTXlQcm9jTnVtYmVyKSk7CisJcG9zID0gUVVF VUVfQkFDS0VORF9QT1MoTXlQcm9jTnVtYmVyKTsKIAloZWFkID0gUVVFVUVfSEVBRDsKIAlM V0xvY2tSZWxlYXNlKE5vdGlmeVF1ZXVlTG9jayk7CiAKQEAgLTE5NzksNyArMTk3NCw3IEBA IGFzeW5jUXVldWVSZWFkQWxsTm90aWZpY2F0aW9ucyh2b2lkKQogCXsKIAkJLyogVXBkYXRl IHNoYXJlZCBzdGF0ZSAqLwogCQlMV0xvY2tBY3F1aXJlKE5vdGlmeVF1ZXVlTG9jaywgTFdf U0hBUkVEKTsKLQkJUVVFVUVfQkFDS0VORF9QT1MoTXlCYWNrZW5kSWQpID0gcG9zOworCQlR VUVVRV9CQUNLRU5EX1BPUyhNeVByb2NOdW1iZXIpID0gcG9zOwogCQlMV0xvY2tSZWxlYXNl KE5vdGlmeVF1ZXVlTG9jayk7CiAJfQogCVBHX0VORF9UUlkoKTsKQEAgLTIxMjYsNyArMjEy MSw3IEBAIGFzeW5jUXVldWVBZHZhbmNlVGFpbCh2b2lkKQogCSAqLwogCUxXTG9ja0FjcXVp cmUoTm90aWZ5UXVldWVMb2NrLCBMV19FWENMVVNJVkUpOwogCW1pbiA9IFFVRVVFX0hFQUQ7 Ci0JZm9yIChCYWNrZW5kSWQgaSA9IFFVRVVFX0ZJUlNUX0xJU1RFTkVSOyBpID4gMDsgaSA9 IFFVRVVFX05FWFRfTElTVEVORVIoaSkpCisJZm9yIChQcm9jTnVtYmVyIGkgPSBRVUVVRV9G SVJTVF9MSVNURU5FUjsgaSAhPSBJTlZBTElEX1BST0NfTlVNQkVSOyBpID0gUVVFVUVfTkVY VF9MSVNURU5FUihpKSkKIAl7CiAJCUFzc2VydChRVUVVRV9CQUNLRU5EX1BJRChpKSAhPSBJ bnZhbGlkUGlkKTsKIAkJbWluID0gUVVFVUVfUE9TX01JTihtaW4sIFFVRVVFX0JBQ0tFTkRf UE9TKGkpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYwppbmRleCBiMTMyN2RlNzFl OC4uNzhhMTU4YzNkYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29t bWFuZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKQEAgLTI3 Niw3ICsyNzYsNyBAQCBTY2FuU291cmNlRGF0YWJhc2VQZ0NsYXNzKE9pZCB0YmlkLCBPaWQg ZGJpZCwgY2hhciAqc3JjcGF0aCkKIAlybG9jYXRvci5kYk9pZCA9IGRiaWQ7CiAJcmxvY2F0 b3IucmVsTnVtYmVyID0gcmVsZmlsZW51bWJlcjsKIAotCXNtZ3IgPSBzbWdyb3BlbihybG9j YXRvciwgSW52YWxpZEJhY2tlbmRJZCk7CisJc21nciA9IHNtZ3JvcGVuKHJsb2NhdG9yLCBJ TlZBTElEX1BST0NfTlVNQkVSKTsKIAluYmxvY2tzID0gc21ncm5ibG9ja3Moc21nciwgTUFJ Tl9GT1JLTlVNKTsKIAlzbWdyY2xvc2Uoc21ncik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMKaW5kZXggN2E4NzYyNmY1ZjAuLjA2ZjkwZmY3NTIyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9pbmRleGNtZHMuYwpAQCAtNDc2LDcgKzQ3Niw3IEBAIFdhaXRGb3JPbGRlclNuYXBzaG90 cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykKIAkJCS8qIElmIHJl cXVlc3RlZCwgcHVibGlzaCB3aG8gd2UncmUgZ29pbmcgdG8gd2FpdCBmb3IuICovCiAJCQlp ZiAocHJvZ3Jlc3MpCiAJCQl7Ci0JCQkJUEdQUk9DCSAgICpob2xkZXIgPSBCYWNrZW5kSWRH ZXRQcm9jKG9sZF9zbmFwc2hvdHNbaV0uYmFja2VuZElkKTsKKwkJCQlQR1BST0MJICAgKmhv bGRlciA9IFByb2NOdW1iZXJHZXRQcm9jKG9sZF9zbmFwc2hvdHNbaV0ucHJvY051bWJlcik7 CiAKIAkJCQlpZiAoaG9sZGVyKQogCQkJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX1dBSVRGT1JfQ1VSUkVOVF9QSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2Uu YwppbmRleCBmOTlkYzQ4ZThjZi4uNzA4N2M5ZjNlM2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYwpAQCAtMzQyLDcgKzM0Miw3IEBAIGZpbGxfc2VxX3dpdGhfZGF0YShSZWxhdGlv biByZWwsIEhlYXBUdXBsZSB0dXBsZSkKIAl7CiAJCVNNZ3JSZWxhdGlvbiBzcmVsOwogCi0J CXNyZWwgPSBzbWdyb3BlbihyZWwtPnJkX2xvY2F0b3IsIEludmFsaWRCYWNrZW5kSWQpOwor CQlzcmVsID0gc21ncm9wZW4ocmVsLT5yZF9sb2NhdG9yLCBJTlZBTElEX1BST0NfTlVNQkVS KTsKIAkJc21ncmNyZWF0ZShzcmVsLCBJTklUX0ZPUktOVU0sIGZhbHNlKTsKIAkJbG9nX3Nt Z3JjcmVhdGUoJnJlbC0+cmRfbG9jYXRvciwgSU5JVF9GT1JLTlVNKTsKIAkJZmlsbF9zZXFf Zm9ya193aXRoX2RhdGEocmVsLCB0dXBsZSwgSU5JVF9GT1JLTlVNKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwpp bmRleCA1NzY0ZjhiMjIyNS4uMDBhNDRjYTgwM2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTI2LDcg KzI2LDcgQEAKIHN0YXRpYyBzaG1fbXFfaGFuZGxlICpwcV9tcV9oYW5kbGU7CiBzdGF0aWMg Ym9vbCBwcV9tcV9idXN5ID0gZmFsc2U7CiBzdGF0aWMgcGlkX3QgcHFfbXFfcGFyYWxsZWxf bGVhZGVyX3BpZCA9IDA7Ci1zdGF0aWMgcGlkX3QgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2Jh Y2tlbmRfaWQgPSBJbnZhbGlkQmFja2VuZElkOworc3RhdGljIHBpZF90IHBxX21xX3BhcmFs bGVsX2xlYWRlcl9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAKIHN0YXRp YyB2b2lkIHBxX2NsZWFudXBfcmVkaXJlY3RfdG9fc2htX21xKGRzbV9zZWdtZW50ICpzZWcs IERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBtcV9jb21tX3Jlc2V0KHZvaWQpOwpAQCAtNzUs MTEgKzc1LDExIEBAIHBxX2NsZWFudXBfcmVkaXJlY3RfdG9fc2htX21xKGRzbV9zZWdtZW50 ICpzZWcsIERhdHVtIGFyZykKICAqIG1lc3NhZ2UgZGF0YSB2aWEgdGhlIHNobV9tcS4KICAq Lwogdm9pZAotcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihwaWRfdCBwaWQsIEJhY2tlbmRJZCBi YWNrZW5kX2lkKQorcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihwaWRfdCBwaWQsIFByb2NOdW1i ZXIgcHJvY051bWJlcikKIHsKIAlBc3NlcnQoUHFDb21tTWV0aG9kcyA9PSAmUHFDb21tTXFN ZXRob2RzKTsKIAlwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkID0gcGlkOwotCXBxX21xX3Bh cmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkID0gYmFja2VuZF9pZDsKKwlwcV9tcV9wYXJhbGxl bF9sZWFkZXJfcHJvY19udW1iZXIgPSBwcm9jTnVtYmVyOwogfQogCiBzdGF0aWMgdm9pZApA QCAtMTY4LDEzICsxNjgsMTMgQEAgbXFfcHV0bWVzc2FnZShjaGFyIG1zZ3R5cGUsIGNvbnN0 IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCQlpZiAoSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdv cmtlcigpKQogCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQs CiAJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAotCQkJCQkJCSAg IHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJCQkJCQkgICBwcV9tcV9w YXJhbGxlbF9sZWFkZXJfcHJvY19udW1iZXIpOwogCQkJZWxzZQogCQkJewogCQkJCUFzc2Vy dChJc1BhcmFsbGVsV29ya2VyKCkpOwogCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFs bGVsX2xlYWRlcl9waWQsCiAJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAot CQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJCQkJCQkg ICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcHJvY19udW1iZXIpOwogCQkJfQogCQl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3BnYXJjaC5jCmluZGV4IDljMThlNGIzZWZiLi4wYTI4YjEzNjBkNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCkBAIC04MCw3ICs4MCw3IEBACiAvKiBTaGFy ZWQgbWVtb3J5IGFyZWEgZm9yIGFyY2hpdmVyIHByb2Nlc3MgKi8KIHR5cGVkZWYgc3RydWN0 IFBnQXJjaERhdGEKIHsKLQlpbnQJCQlwZ3Byb2NubzsJCS8qIHBncHJvY25vIG9mIGFyY2hp dmVyIHByb2Nlc3MgKi8KKwlpbnQJCQlwZ3Byb2NubzsJCS8qIHByb2MgbnVtYmVyIG9mIGFy Y2hpdmVyIHByb2Nlc3MgKi8KIAogCS8qCiAJICogRm9yY2VzIGEgZGlyZWN0b3J5IHNjYW4g aW4gcGdhcmNoX3JlYWR5WGxvZygpLiAgUHJvdGVjdGVkIGJ5IGFyY2hfbGNrLgpAQCAtMTcz LDcgKzE3Myw3IEBAIFBnQXJjaFNobWVtSW5pdCh2b2lkKQogCXsKIAkJLyogRmlyc3QgdGlt ZSB0aHJvdWdoLCBzbyBpbml0aWFsaXplICovCiAJCU1lbVNldChQZ0FyY2gsIDAsIFBnQXJj aFNobWVtU2l6ZSgpKTsKLQkJUGdBcmNoLT5wZ3Byb2NubyA9IElOVkFMSURfUEdQUk9DTk87 CisJCVBnQXJjaC0+cGdwcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQlTcGluTG9j a0luaXQoJlBnQXJjaC0+YXJjaF9sY2spOwogCX0KIH0KQEAgLTIzOSw4ICsyMzksOCBAQCBQ Z0FyY2hpdmVyTWFpbih2b2lkKQogCW9uX3NobWVtX2V4aXQocGdhcmNoX2RpZSwgMCk7CiAK IAkvKgotCSAqIEFkdmVydGlzZSBvdXIgcGdwcm9jbm8gc28gdGhhdCBiYWNrZW5kcyBjYW4g dXNlIG91ciBsYXRjaCB0byB3YWtlIHVzIHVwCi0JICogd2hpbGUgd2UncmUgc2xlZXBpbmcu CisJICogQWR2ZXJ0aXNlIG91ciBwcm9jIG51bWJlciBzbyB0aGF0IGJhY2tlbmRzIGNhbiB1 c2Ugb3VyIGxhdGNoIHRvIHdha2UgdXMKKwkgKiB1cCB3aGlsZSB3ZSdyZSBzbGVlcGluZy4K IAkgKi8KIAlQZ0FyY2gtPnBncHJvY25vID0gTXlQcm9jTnVtYmVyOwogCkBAIC0yNzQsNyAr Mjc0LDcgQEAgUGdBcmNoV2FrZXVwKHZvaWQpCiAJICogcHJvY2VzcycgKG9yIG5vIHByb2Nl c3MnKSBsYXRjaC4gIEV2ZW4gaW4gdGhhdCBjYXNlIHRoZSBhcmNoaXZlciB3aWxsCiAJICog YmUgcmVsYXVuY2hlZCBzaG9ydGx5IGFuZCB3aWxsIHN0YXJ0IGFyY2hpdmluZy4KIAkgKi8K LQlpZiAoYXJjaF9wZ3Byb2NubyAhPSBJTlZBTElEX1BHUFJPQ05PKQorCWlmIChhcmNoX3Bn cHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJCVNldExhdGNoKCZQcm9jR2xvYmFs LT5hbGxQcm9jc1thcmNoX3BncHJvY25vXS5wcm9jTGF0Y2gpOwogfQogCkBAIC03NTIsNyAr NzUyLDcgQEAgcGdhcmNoX2FyY2hpdmVEb25lKGNoYXIgKnhsb2cpCiBzdGF0aWMgdm9pZAog cGdhcmNoX2RpZShpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCVBnQXJjaC0+cGdwcm9jbm8g PSBJTlZBTElEX1BHUFJPQ05POworCVBnQXJjaC0+cGdwcm9jbm8gPSBJTlZBTElEX1BST0Nf TlVNQkVSOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93 YWxzdW1tYXJpemVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIu YwppbmRleCBmMjk1ZWZmMzJmNC4uODYzNmQ5NDI0ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC03MSw4ICs3MSw4IEBAIHR5cGVkZWYgc3RydWN0 CiAJICogYW5kIHNvIHRoZSBMU04gbWlnaHQgcG9pbnQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBu ZXh0IGZpbGUgZXZlbiB0aG91Z2gKIAkgKiB0aGF0IG1pZ2h0IGhhcHBlbiB0byBiZSBpbiB0 aGUgbWlkZGxlIG9mIGEgV0FMIHJlY29yZC4KIAkgKgotCSAqIHN1bW1hcml6ZXJfcGdwcm9j bm8gaXMgdGhlIHBncHJvY25vIHZhbHVlIGZvciB0aGUgc3VtbWFyaXplciBwcm9jZXNzLAot CSAqIGlmIG9uZSBpcyBydW5uaW5nLCBvciBlbHNlIElOVkFMSURfUEdQUk9DTk8uCisJICog c3VtbWFyaXplcl9wZ3Byb2NubyBpcyB0aGUgcHJvYyBudW1iZXIgb2YgdGhlIHN1bW1hcml6 ZXIgcHJvY2VzcywgaWYKKwkgKiBvbmUgaXMgcnVubmluZywgb3IgZWxzZSBJTlZBTElEX1BS T0NfTlVNQkVSLgogCSAqCiAJICogcGVuZGluZ19sc24gaXMgdXNlZCBieSB0aGUgc3VtbWFy aXplciB0byBhZHZlcnRpc2UgdGhlIGVuZGluZyBMU04gb2YgYQogCSAqIHJlY29yZCBpdCBo YXMgcmVjZW50bHkgcmVhZC4gSXQgc2hvdWxkbid0IGV2ZXIgYmUgbGVzcyB0aGFuCkBAIC04 Myw3ICs4Myw3IEBAIHR5cGVkZWYgc3RydWN0CiAJVGltZUxpbmVJRAlzdW1tYXJpemVkX3Rs aTsKIAlYTG9nUmVjUHRyCXN1bW1hcml6ZWRfbHNuOwogCWJvb2wJCWxzbl9pc19leGFjdDsK LQlpbnQJCQlzdW1tYXJpemVyX3BncHJvY25vOworCVByb2NOdW1iZXIJc3VtbWFyaXplcl9w Z3Byb2NubzsKIAlYTG9nUmVjUHRyCXBlbmRpbmdfbHNuOwogCiAJLyoKQEAgLTE5NSw3ICsx OTUsNyBAQCBXYWxTdW1tYXJpemVyU2htZW1Jbml0KHZvaWQpCiAJCVdhbFN1bW1hcml6ZXJD dGwtPnN1bW1hcml6ZWRfdGxpID0gMDsKIAkJV2FsU3VtbWFyaXplckN0bC0+c3VtbWFyaXpl ZF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAkJV2FsU3VtbWFyaXplckN0bC0+bHNuX2lz X2V4YWN0ID0gZmFsc2U7Ci0JCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZXJfcGdwcm9j bm8gPSBJTlZBTElEX1BHUFJPQ05POworCQlXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJpemVy X3BncHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJV2FsU3VtbWFyaXplckN0bC0+ cGVuZGluZ19sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAkJQ29uZGl0aW9uVmFyaWFibGVJ bml0KCZXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJ5X2ZpbGVfY3YpOwogCX0KQEAgLTQ0NCw3 ICs0NDQsNyBAQCBHZXRXYWxTdW1tYXJpemVyU3RhdGUoVGltZUxpbmVJRCAqc3VtbWFyaXpl ZF90bGksIFhMb2dSZWNQdHIgKnN1bW1hcml6ZWRfbHNuLAogCiAJCSpzdW1tYXJpemVkX3Rs aSA9IFdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZWRfdGxpOwogCQkqc3VtbWFyaXplZF9s c24gPSBXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJpemVkX2xzbjsKLQkJaWYgKHN1bW1hcml6 ZXJfcGdwcm9jbm8gPT0gSU5WQUxJRF9QR1BST0NOTykKKwkJaWYgKHN1bW1hcml6ZXJfcGdw cm9jbm8gPT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJewogCQkJLyoKIAkJCSAqIElmIHRo ZSBzdW1tYXJpemVyIGhhcyBleGl0ZWQsIHRoZSBmYWN0IHRoYXQgaXQgaGFkIHByb2Nlc3Nl ZApAQCAtNjEzLDcgKzYxMyw3IEBAIEdldE9sZGVzdFVuc3VtbWFyaXplZExTTihUaW1lTGlu ZUlEICp0bGksIGJvb2wgKmxzbl9pc19leGFjdCwKIHZvaWQKIFNldFdhbFN1bW1hcml6ZXJM YXRjaCh2b2lkKQogewotCWludAkJCXBncHJvY25vOworCVByb2NOdW1iZXIJcGdwcm9jbm87 CiAKIAlpZiAoV2FsU3VtbWFyaXplckN0bCA9PSBOVUxMKQogCQlyZXR1cm47CkBAIC02MjIs NyArNjIyLDcgQEAgU2V0V2FsU3VtbWFyaXplckxhdGNoKHZvaWQpCiAJcGdwcm9jbm8gPSBX YWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJpemVyX3BncHJvY25vOwogCUxXTG9ja1JlbGVhc2Uo V0FMU3VtbWFyaXplckxvY2spOwogCi0JaWYgKHBncHJvY25vICE9IElOVkFMSURfUEdQUk9D Tk8pCisJaWYgKHBncHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJCVNldExhdGNo KCZQcm9jR2xvYmFsLT5hbGxQcm9jc1twZ3Byb2Nub10ucHJvY0xhdGNoKTsKIH0KIApAQCAt NjgzLDcgKzY4Myw3IEBAIHN0YXRpYyB2b2lkCiBXYWxTdW1tYXJpemVyU2h1dGRvd24oaW50 IGNvZGUsIERhdHVtIGFyZykKIHsKIAlMV0xvY2tBY3F1aXJlKFdBTFN1bW1hcml6ZXJMb2Nr LCBMV19FWENMVVNJVkUpOwotCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZXJfcGdwcm9j bm8gPSBJTlZBTElEX1BHUFJPQ05POworCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZXJf cGdwcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCUxXTG9ja1JlbGVhc2UoV0FMU3Vt bWFyaXplckxvY2spOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGZiNzllZTFlN2JmLi5l N2Y3ZDRjNWU0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTg0NSw3ICs4NDUsNyBAQCBwYV9z aHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQogewogCVNlbmRQcm9jU2lnbmFsKE15TG9n aWNhbFJlcFdvcmtlci0+bGVhZGVyX3BpZCwKIAkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQ UExZX01FU1NBR0UsCi0JCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisJCQkJICAgSU5WQUxJ RF9QUk9DX05VTUJFUik7CiAKIAlkc21fZGV0YWNoKChkc21fc2VnbWVudCAqKSBEYXR1bUdl dFBvaW50ZXIoYXJnKSk7CiB9CkBAIC05MzQsNyArOTM0LDcgQEAgUGFyYWxsZWxBcHBseVdv cmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAlwcV9yZWRpcmVjdF90b19zaG1fbXEoc2Vn LCBlcnJvcl9tcWgpOwogCXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoTXlMb2dpY2FsUmVwV29y a2VyLT5sZWFkZXJfcGlkLAotCQkJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisJCQkJCQkg ICBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAogCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9z ZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KIAkJTXlM b2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YwppbmRleCAyMzM2NTJiNDc5OS4uN2ZkNTk5MjNkMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKQEAgLTE2MzcsNyArMTYzNyw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRl U2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJCQlpZiAo TXlCYWNrZW5kVHlwZSA9PSBCX1NUQVJUVVApCiAJCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25h bChhY3RpdmVfcGlkLAogCQkJCQkJCQkJCSAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9M T0dJQ0FMU0xPVCwKLQkJCQkJCQkJCQkgIEludmFsaWRCYWNrZW5kSWQpOworCQkJCQkJCQkJ CSAgSU5WQUxJRF9QUk9DX05VTUJFUik7CiAJCQkJZWxzZQogCQkJCQkodm9pZCkga2lsbChh Y3RpdmVfcGlkLCBTSUdURVJNKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIu YwppbmRleCA2MzFkMWUwYzlmZC4uN2I2Zjg3OWIwY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jCkBAIC0zNjQ2LDcgKzM2NDYsNyBAQCBXYWxTbmRJbml0U3RvcHBp bmcodm9pZCkKIAkJaWYgKHBpZCA9PSAwKQogCQkJY29udGludWU7CiAKLQkJU2VuZFByb2NT aWduYWwocGlkLCBQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HLCBJbnZhbGlkQmFja2Vu ZElkKTsKKwkJU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQ SU5HLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZfaW5pdC5jCmluZGV4IDZhOTkzNzJjYTE5Li40NjExNmExZjY0YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX2luaXQuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jCkBAIC0xMjIsNyArMTIyLDcg QEAgSW5pdEJ1ZmZlclBvb2wodm9pZCkKIAkJCUNsZWFyQnVmZmVyVGFnKCZidWYtPnRhZyk7 CiAKIAkJCXBnX2F0b21pY19pbml0X3UzMigmYnVmLT5zdGF0ZSwgMCk7Ci0JCQlidWYtPndh aXRfYmFja2VuZF9wZ3Byb2NubyA9IElOVkFMSURfUEdQUk9DTk87CisJCQlidWYtPndhaXRf YmFja2VuZF9wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAKIAkJCWJ1Zi0+YnVm X2lkID0gaTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVm bWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCBiZGY4 OWJiYzRkYy4uYzk5NzMwZTBlNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1n ci5jCkBAIC04MTYsNyArODE2LDcgQEAgUmVhZEJ1ZmZlckV4dGVuZGVkKFJlbGF0aW9uIHJl bG4sIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tOdW0sCiAgKiBwZXJt YW5lbnQgPSBmYWxzZSBmb3IgYSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCByZWxhdGlvbi4g VGhpcyBmdW5jdGlvbgogICogY2Fubm90IGJlIHVzZWQgZm9yIHRlbXBvcmFyeSByZWxhdGlv bnMgKGFuZCBtYWtpbmcgdGhhdCB3b3JrIG1pZ2h0IGJlCiAgKiBkaWZmaWN1bHQsIHVubGVz cyB3ZSBvbmx5IHdhbnQgdG8gcmVhZCB0ZW1wb3JhcnkgcmVsYXRpb25zIGZvciBvdXIgb3du Ci0gKiBCYWNrZW5kSWQpLgorICogUHJvY051bWJlcikuCiAgKi8KIEJ1ZmZlcgogUmVhZEJ1 ZmZlcldpdGhvdXRSZWxjYWNoZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgRm9ya051bWJl ciBmb3JrTnVtLApAQCAtODI1LDcgKzgyNSw3IEBAIFJlYWRCdWZmZXJXaXRob3V0UmVsY2Fj aGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya051bSwKIHsKIAli b29sCQloaXQ7CiAKLQlTTWdyUmVsYXRpb24gc21nciA9IHNtZ3JvcGVuKHJsb2NhdG9yLCBJ bnZhbGlkQmFja2VuZElkKTsKKwlTTWdyUmVsYXRpb24gc21nciA9IHNtZ3JvcGVuKHJsb2Nh dG9yLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAogCXJldHVybiBSZWFkQnVmZmVyX2NvbW1v bihzbWdyLCBwZXJtYW5lbnQgPyBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQgOgogCQkJCQkJ CSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCwgZm9ya051bSwgYmxvY2tOdW0sCkBAIC0zMzIy LDcgKzMzMjIsNyBAQCBEZWJ1Z1ByaW50QnVmZmVyUmVmY291bnQoQnVmZmVyIGJ1ZmZlcikK IAlpbnQzMgkJbG9jY291bnQ7CiAJY2hhcgkgICAqcGF0aDsKIAljaGFyCSAgICpyZXN1bHQ7 Ci0JQmFja2VuZElkCWJhY2tlbmQ7CisJUHJvY051bWJlcgliYWNrZW5kOwogCXVpbnQzMgkJ YnVmX3N0YXRlOwogCiAJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSk7CkBAIC0zMzMw LDEzICszMzMwLDEzIEBAIERlYnVnUHJpbnRCdWZmZXJSZWZjb3VudChCdWZmZXIgYnVmZmVy KQogCXsKIAkJYnVmID0gR2V0TG9jYWxCdWZmZXJEZXNjcmlwdG9yKC1idWZmZXIgLSAxKTsK IAkJbG9jY291bnQgPSBMb2NhbFJlZkNvdW50Wy1idWZmZXIgLSAxXTsKLQkJYmFja2VuZCA9 IE15QmFja2VuZElkOworCQliYWNrZW5kID0gTXlQcm9jTnVtYmVyOwogCX0KIAllbHNlCiAJ ewogCQlidWYgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGJ1ZmZlciAtIDEpOwogCQlsb2Njb3Vu dCA9IEdldFByaXZhdGVSZWZDb3VudChidWZmZXIpOwotCQliYWNrZW5kID0gSW52YWxpZEJh Y2tlbmRJZDsKKwkJYmFja2VuZCA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJfQogCiAJLyog dGhlb3JldGljYWxseSB3ZSBzaG91bGQgbG9jayB0aGUgYnVmaGRyIGhlcmUgKi8KQEAgLTM0 NjEsNyArMzQ2MSw3IEBAIEZsdXNoQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgU01nclJlbGF0 aW9uIHJlbG4sIElPT2JqZWN0IGlvX29iamVjdCwKIAogCS8qIEZpbmQgc21nciByZWxhdGlv biBmb3IgYnVmZmVyICovCiAJaWYgKHJlbG4gPT0gTlVMTCkKLQkJcmVsbiA9IHNtZ3JvcGVu KEJ1ZlRhZ0dldFJlbEZpbGVMb2NhdG9yKCZidWYtPnRhZyksIEludmFsaWRCYWNrZW5kSWQp OworCQlyZWxuID0gc21ncm9wZW4oQnVmVGFnR2V0UmVsRmlsZUxvY2F0b3IoJmJ1Zi0+dGFn KSwgSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAlUUkFDRV9QT1NUR1JFU1FMX0JVRkZFUl9G TFVTSF9TVEFSVChCdWZUYWdHZXRGb3JrTnVtKCZidWYtPnRhZyksCiAJCQkJCQkJCQkJYnVm LT50YWcuYmxvY2tOdW0sCkBAIC0zNjk2LDcgKzM2OTYsNyBAQCBEcm9wUmVsYXRpb25CdWZm ZXJzKFNNZ3JSZWxhdGlvbiBzbWdyX3JlbG4sIEZvcmtOdW1iZXIgKmZvcmtOdW0sCiAJLyog SWYgaXQncyBhIGxvY2FsIHJlbGF0aW9uLCBpdCdzIGxvY2FsYnVmLmMncyBwcm9ibGVtLiAq LwogCWlmIChSZWxGaWxlTG9jYXRvckJhY2tlbmRJc1RlbXAocmxvY2F0b3IpKQogCXsKLQkJ aWYgKHJsb2NhdG9yLmJhY2tlbmQgPT0gTXlCYWNrZW5kSWQpCisJCWlmIChybG9jYXRvci5i YWNrZW5kID09IE15UHJvY051bWJlcikKIAkJewogCQkJZm9yIChqID0gMDsgaiA8IG5mb3Jr czsgaisrKQogCQkJCURyb3BSZWxhdGlvbkxvY2FsQnVmZmVycyhybG9jYXRvci5sb2NhdG9y LCBmb3JrTnVtW2pdLApAQCAtMzgyNiw3ICszODI2LDcgQEAgRHJvcFJlbGF0aW9uc0FsbEJ1 ZmZlcnMoU01nclJlbGF0aW9uICpzbWdyX3JlbG4sIGludCBubG9jYXRvcnMpCiAJewogCQlp ZiAoUmVsRmlsZUxvY2F0b3JCYWNrZW5kSXNUZW1wKHNtZ3JfcmVsbltpXS0+c21ncl9ybG9j YXRvcikpCiAJCXsKLQkJCWlmIChzbWdyX3JlbG5baV0tPnNtZ3JfcmxvY2F0b3IuYmFja2Vu ZCA9PSBNeUJhY2tlbmRJZCkKKwkJCWlmIChzbWdyX3JlbG5baV0tPnNtZ3JfcmxvY2F0b3Iu YmFja2VuZCA9PSBNeVByb2NOdW1iZXIpCiAJCQkJRHJvcFJlbGF0aW9uQWxsTG9jYWxCdWZm ZXJzKHNtZ3JfcmVsbltpXS0+c21ncl9ybG9jYXRvci5sb2NhdG9yKTsKIAkJfQogCQllbHNl CkBAIC00MDkwLDcgKzQwOTAsNyBAQCBQcmludEJ1ZmZlckRlc2NzKHZvaWQpCiAJCQkgImJs b2NrTnVtPSV1LCBmbGFncz0weCV4LCByZWZjb3VudD0ldSAlZCkiLAogCQkJIGksIGJ1Zi0+ ZnJlZU5leHQsCiAJCQkgcmVscGF0aGJhY2tlbmQoQnVmVGFnR2V0UmVsRmlsZUxvY2F0b3Io JmJ1Zi0+dGFnKSwKLQkJCQkJCQlJbnZhbGlkQmFja2VuZElkLCBCdWZUYWdHZXRGb3JrTnVt KCZidWYtPnRhZykpLAorCQkJCQkJCUlOVkFMSURfUFJPQ19OVU1CRVIsIEJ1ZlRhZ0dldEZv cmtOdW0oJmJ1Zi0+dGFnKSksCiAJCQkgYnVmLT50YWcuYmxvY2tOdW0sIGJ1Zi0+ZmxhZ3Ms CiAJCQkgYnVmLT5yZWZjb3VudCwgR2V0UHJpdmF0ZVJlZkNvdW50KGIpKTsKIAl9CkBAIC00 MzY0LDcgKzQzNjQsNyBAQCBSZWxhdGlvbkNvcHlTdG9yYWdlVXNpbmdCdWZmZXIoUmVsRmls ZUxvY2F0b3Igc3JjbG9jYXRvciwKIAl1c2Vfd2FsID0gWExvZ0lzTmVlZGVkKCkgJiYgKHBl cm1hbmVudCB8fCBmb3JrTnVtID09IElOSVRfRk9SS05VTSk7CiAKIAkvKiBHZXQgbnVtYmVy IG9mIGJsb2NrcyBpbiB0aGUgc291cmNlIHJlbGF0aW9uLiAqLwotCW5ibG9ja3MgPSBzbWdy bmJsb2NrcyhzbWdyb3BlbihzcmNsb2NhdG9yLCBJbnZhbGlkQmFja2VuZElkKSwKKwluYmxv Y2tzID0gc21ncm5ibG9ja3Moc21ncm9wZW4oc3JjbG9jYXRvciwgSU5WQUxJRF9QUk9DX05V TUJFUiksCiAJCQkJCQkgIGZvcmtOdW0pOwogCiAJLyogTm90aGluZyB0byBjb3B5OyBqdXN0 IHJldHVybi4gKi8KQEAgLTQzNzYsNyArNDM3Niw3IEBAIFJlbGF0aW9uQ29weVN0b3JhZ2VV c2luZ0J1ZmZlcihSZWxGaWxlTG9jYXRvciBzcmNsb2NhdG9yLAogCSAqIHJlbGF0aW9uIGJl Zm9yZSBzdGFydGluZyB0byBjb3B5IGJsb2NrIGJ5IGJsb2NrLgogCSAqLwogCW1lbXNldChi dWYuZGF0YSwgMCwgQkxDS1NaKTsKLQlzbWdyZXh0ZW5kKHNtZ3JvcGVuKGRzdGxvY2F0b3Is IEludmFsaWRCYWNrZW5kSWQpLCBmb3JrTnVtLCBuYmxvY2tzIC0gMSwKKwlzbWdyZXh0ZW5k KHNtZ3JvcGVuKGRzdGxvY2F0b3IsIElOVkFMSURfUFJPQ19OVU1CRVIpLCBmb3JrTnVtLCBu YmxvY2tzIC0gMSwKIAkJCSAgIGJ1Zi5kYXRhLCB0cnVlKTsKIAogCS8qIFRoaXMgaXMgYSBi dWxrIG9wZXJhdGlvbiwgc28gdXNlIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ2llcy4gKi8KQEAg LTQ0NDMsOCArNDQ0Myw4IEBAIENyZWF0ZUFuZENvcHlSZWxhdGlvbkRhdGEoUmVsRmlsZUxv Y2F0b3Igc3JjX3Jsb2NhdG9yLAogCXJlbHBlcnNpc3RlbmNlID0gcGVybWFuZW50ID8KIAkJ UkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UIDogUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQ7CiAK LQlzcmNfcmVsID0gc21ncm9wZW4oc3JjX3Jsb2NhdG9yLCBJbnZhbGlkQmFja2VuZElkKTsK LQlkc3RfcmVsID0gc21ncm9wZW4oZHN0X3Jsb2NhdG9yLCBJbnZhbGlkQmFja2VuZElkKTsK KwlzcmNfcmVsID0gc21ncm9wZW4oc3JjX3Jsb2NhdG9yLCBJTlZBTElEX1BST0NfTlVNQkVS KTsKKwlkc3RfcmVsID0gc21ncm9wZW4oZHN0X3Jsb2NhdG9yLCBJTlZBTElEX1BST0NfTlVN QkVSKTsKIAogCS8qCiAJICogQ3JlYXRlIGFuZCBjb3B5IGFsbCBmb3JrcyBvZiB0aGUgcmVs YXRpb24uICBEdXJpbmcgY3JlYXRlIGRhdGFiYXNlIHdlCkBAIC01MzQ4LDcgKzUzNDgsNyBA QCBsb2NhbF9idWZmZXJfd3JpdGVfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogCWlmIChi dWZIZHIgIT0gTlVMTCkKIAl7CiAJCWNoYXIJICAgKnBhdGggPSByZWxwYXRoYmFja2VuZChC dWZUYWdHZXRSZWxGaWxlTG9jYXRvcigmYnVmSGRyLT50YWcpLAotCQkJCQkJCQkJCSAgTXlC YWNrZW5kSWQsCisJCQkJCQkJCQkJICBNeVByb2NOdW1iZXIsCiAJCQkJCQkJCQkJICBCdWZU YWdHZXRGb3JrTnVtKCZidWZIZHItPnRhZykpOwogCiAJCWVycmNvbnRleHQoIndyaXRpbmcg YmxvY2sgJXUgb2YgcmVsYXRpb24gJXMiLApAQCAtNTY1Myw3ICs1NjUzLDcgQEAgSXNzdWVQ ZW5kaW5nV3JpdGViYWNrcyhXcml0ZWJhY2tDb250ZXh0ICp3Yl9jb250ZXh0LCBJT0NvbnRl eHQgaW9fY29udGV4dCkKIAkJaSArPSBhaGVhZDsKIAogCQkvKiBhbmQgZmluYWxseSB0ZWxs IHRoZSBrZXJuZWwgdG8gd3JpdGUgdGhlIGRhdGEgdG8gc3RvcmFnZSAqLwotCQlyZWxuID0g c21ncm9wZW4oY3VycmxvY2F0b3IsIEludmFsaWRCYWNrZW5kSWQpOworCQlyZWxuID0gc21n cm9wZW4oY3VycmxvY2F0b3IsIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCQlzbWdyd3JpdGVi YWNrKHJlbG4sIEJ1ZlRhZ0dldEZvcmtOdW0oJnRhZyksIHRhZy5ibG9ja051bSwgbmJsb2Nr cyk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2Nh bGJ1Zi5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwppbmRleCAx ZjAyZmVkMjUwZS4uZjRiMjk0NDc2ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2xvY2FsYnVmLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIv bG9jYWxidWYuYwpAQCAtMjQyLDcgKzI0Miw3IEBAIEdldExvY2FsVmljdGltQnVmZmVyKHZv aWQpCiAJCVBhZ2UJCWxvY2FscGFnZSA9IChjaGFyICopIExvY2FsQnVmSGRyR2V0QmxvY2so YnVmSGRyKTsKIAogCQkvKiBGaW5kIHNtZ3IgcmVsYXRpb24gZm9yIGJ1ZmZlciAqLwotCQlv cmVsbiA9IHNtZ3JvcGVuKEJ1ZlRhZ0dldFJlbEZpbGVMb2NhdG9yKCZidWZIZHItPnRhZyks IE15QmFja2VuZElkKTsKKwkJb3JlbG4gPSBzbWdyb3BlbihCdWZUYWdHZXRSZWxGaWxlTG9j YXRvcigmYnVmSGRyLT50YWcpLCBNeVByb2NOdW1iZXIpOwogCiAJCVBhZ2VTZXRDaGVja3N1 bUlucGxhY2UobG9jYWxwYWdlLCBidWZIZHItPnRhZy5ibG9ja051bSk7CiAKQEAgLTUwOSw3 ICs1MDksNyBAQCBEcm9wUmVsYXRpb25Mb2NhbEJ1ZmZlcnMoUmVsRmlsZUxvY2F0b3Igcmxv Y2F0b3IsIEZvcmtOdW1iZXIgZm9ya051bSwKIAkJCQllbG9nKEVSUk9SLCAiYmxvY2sgJXUg b2YgJXMgaXMgc3RpbGwgcmVmZXJlbmNlZCAobG9jYWwgJXUpIiwKIAkJCQkJIGJ1Zkhkci0+ dGFnLmJsb2NrTnVtLAogCQkJCQkgcmVscGF0aGJhY2tlbmQoQnVmVGFnR2V0UmVsRmlsZUxv Y2F0b3IoJmJ1Zkhkci0+dGFnKSwKLQkJCQkJCQkJCU15QmFja2VuZElkLAorCQkJCQkJCQkJ TXlQcm9jTnVtYmVyLAogCQkJCQkJCQkJQnVmVGFnR2V0Rm9ya051bSgmYnVmSGRyLT50YWcp KSwKIAkJCQkJIExvY2FsUmVmQ291bnRbaV0pOwogCkBAIC01NTQsNyArNTU0LDcgQEAgRHJv cFJlbGF0aW9uQWxsTG9jYWxCdWZmZXJzKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQogCQkJ CWVsb2coRVJST1IsICJibG9jayAldSBvZiAlcyBpcyBzdGlsbCByZWZlcmVuY2VkIChsb2Nh bCAldSkiLAogCQkJCQkgYnVmSGRyLT50YWcuYmxvY2tOdW0sCiAJCQkJCSByZWxwYXRoYmFj a2VuZChCdWZUYWdHZXRSZWxGaWxlTG9jYXRvcigmYnVmSGRyLT50YWcpLAotCQkJCQkJCQkJ TXlCYWNrZW5kSWQsCisJCQkJCQkJCQlNeVByb2NOdW1iZXIsCiAJCQkJCQkJCQlCdWZUYWdH ZXRGb3JrTnVtKCZidWZIZHItPnRhZykpLAogCQkJCQkgTG9jYWxSZWZDb3VudFtpXSk7CiAJ CQkvKiBSZW1vdmUgZW50cnkgZnJvbSBoYXNodGFibGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY2FycmF5LmMKaW5kZXggZDk2NjA2ZWJiYTUuLjA0YjUwMjA0YjgxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtODE4LDkgKzgxOCw5IEBAIFByb2NB cnJheUdyb3VwQ2xlYXJYaWQoUEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklkIGxhdGVzdFhp ZCkKIAkgKiBJZiB0aGUgbGlzdCB3YXMgbm90IGVtcHR5LCB0aGUgbGVhZGVyIHdpbGwgY2xl YXIgb3VyIFhJRC4gIEl0IGlzCiAJICogaW1wb3NzaWJsZSB0byBoYXZlIGZvbGxvd2VycyB3 aXRob3V0IGEgbGVhZGVyIGJlY2F1c2UgdGhlIGZpcnN0IHByb2Nlc3MKIAkgKiB0aGF0IGhh cyBhZGRlZCBpdHNlbGYgdG8gdGhlIGxpc3Qgd2lsbCBhbHdheXMgaGF2ZSBuZXh0aWR4IGFz Ci0JICogSU5WQUxJRF9QR1BST0NOTy4KKwkgKiBJTlZBTElEX1BST0NfTlVNQkVSLgogCSAq LwotCWlmIChuZXh0aWR4ICE9IElOVkFMSURfUEdQUk9DTk8pCisJaWYgKG5leHRpZHggIT0g SU5WQUxJRF9QUk9DX05VTUJFUikKIAl7CiAJCWludAkJCWV4dHJhV2FpdHMgPSAwOwogCkBA IC04MzYsNyArODM2LDcgQEAgUHJvY0FycmF5R3JvdXBDbGVhclhpZChQR1BST0MgKnByb2Ms IFRyYW5zYWN0aW9uSWQgbGF0ZXN0WGlkKQogCQl9CiAJCXBnc3RhdF9yZXBvcnRfd2FpdF9l bmQoKTsKIAotCQlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZwcm9jLT5wcm9jQXJyYXlH cm91cE5leHQpID09IElOVkFMSURfUEdQUk9DTk8pOworCQlBc3NlcnQocGdfYXRvbWljX3Jl YWRfdTMyKCZwcm9jLT5wcm9jQXJyYXlHcm91cE5leHQpID09IElOVkFMSURfUFJPQ19OVU1C RVIpOwogCiAJCS8qIEZpeCBzZW1hcGhvcmUgY291bnQgZm9yIGFueSBhYnNvcmJlZCB3YWtl dXBzICovCiAJCXdoaWxlIChleHRyYVdhaXRzLS0gPiAwKQpAQCAtODUzLDEzICs4NTMsMTMg QEAgUHJvY0FycmF5R3JvdXBDbGVhclhpZChQR1BST0MgKnByb2MsIFRyYW5zYWN0aW9uSWQg bGF0ZXN0WGlkKQogCSAqIHRvIHBvcCBlbGVtZW50cyBvbmUgYXQgYSB0aW1lIGNvdWxkIGxl YWQgdG8gYW4gQUJBIHByb2JsZW0uCiAJICovCiAJbmV4dGlkeCA9IHBnX2F0b21pY19leGNo YW5nZV91MzIoJnByb2NnbG9iYWwtPnByb2NBcnJheUdyb3VwRmlyc3QsCi0JCQkJCQkJCQkg SU5WQUxJRF9QR1BST0NOTyk7CisJCQkJCQkJCQkgSU5WQUxJRF9QUk9DX05VTUJFUik7CiAK IAkvKiBSZW1lbWJlciBoZWFkIG9mIGxpc3Qgc28gd2UgY2FuIHBlcmZvcm0gd2FrZXVwcyBh ZnRlciBkcm9wcGluZyBsb2NrLiAqLwogCXdha2VpZHggPSBuZXh0aWR4OwogCiAJLyogV2Fs ayB0aGUgbGlzdCBhbmQgY2xlYXIgYWxsIFhJRHMuICovCi0Jd2hpbGUgKG5leHRpZHggIT0g SU5WQUxJRF9QR1BST0NOTykKKwl3aGlsZSAobmV4dGlkeCAhPSBJTlZBTElEX1BST0NfTlVN QkVSKQogCXsKIAkJUEdQUk9DCSAgICpuZXh0cHJvYyA9ICZhbGxQcm9jc1tuZXh0aWR4XTsK IApAQCAtODc5LDEyICs4NzksMTIgQEAgUHJvY0FycmF5R3JvdXBDbGVhclhpZChQR1BST0Mg KnByb2MsIFRyYW5zYWN0aW9uSWQgbGF0ZXN0WGlkKQogCSAqIHVwIGFyZSBwcm9iYWJseSBt dWNoIHNsb3dlciB0aGFuIHRoZSBzaW1wbGUgbWVtb3J5IHdyaXRlcyB3ZSBkaWQgd2hpbGUK IAkgKiBob2xkaW5nIHRoZSBsb2NrLgogCSAqLwotCXdoaWxlICh3YWtlaWR4ICE9IElOVkFM SURfUEdQUk9DTk8pCisJd2hpbGUgKHdha2VpZHggIT0gSU5WQUxJRF9QUk9DX05VTUJFUikK IAl7CiAJCVBHUFJPQwkgICAqbmV4dHByb2MgPSAmYWxsUHJvY3Nbd2FrZWlkeF07CiAKIAkJ d2FrZWlkeCA9IHBnX2F0b21pY19yZWFkX3UzMigmbmV4dHByb2MtPnByb2NBcnJheUdyb3Vw TmV4dCk7Ci0JCXBnX2F0b21pY193cml0ZV91MzIoJm5leHRwcm9jLT5wcm9jQXJyYXlHcm91 cE5leHQsIElOVkFMSURfUEdQUk9DTk8pOworCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZuZXh0 cHJvYy0+cHJvY0FycmF5R3JvdXBOZXh0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAogCQkv KiBlbnN1cmUgYWxsIHByZXZpb3VzIHdyaXRlcyBhcmUgdmlzaWJsZSBiZWZvcmUgZm9sbG93 ZXIgY29udGludWVzLiAqLwogCQlwZ193cml0ZV9iYXJyaWVyKCk7CkBAIC0yNTM4LDcgKzI1 MzgsNyBAQCBQcm9jQXJyYXlJbnN0YWxsSW1wb3J0ZWRYbWluKFRyYW5zYWN0aW9uSWQgeG1p biwKIAogCS8qCiAJICogRmluZCB0aGUgUEdQUk9DIGVudHJ5IG9mIHRoZSBzb3VyY2UgdHJh bnNhY3Rpb24uIChUaGlzIGNvdWxkIHVzZQotCSAqIEdldFBHUHJvY0J5QmFja2VuZElkKCks IHVubGVzcyBpdCdzIGEgcHJlcGFyZWQgeGFjdC4gIEJ1dCB0aGlzIGlzbid0CisJICogR2V0 UEdQcm9jQnlOdW1iZXIoKSwgdW5sZXNzIGl0J3MgYSBwcmVwYXJlZCB4YWN0LiAgQnV0IHRo aXMgaXNuJ3QKIAkgKiBwZXJmb3JtYW5jZSBjcml0aWNhbC4pCiAJICovCiAJZm9yIChpbmRl eCA9IDA7IGluZGV4IDwgYXJyYXlQLT5udW1Qcm9jczsgaW5kZXgrKykKQEAgLTI1NTMsNyAr MjU1Myw3IEBAIFByb2NBcnJheUluc3RhbGxJbXBvcnRlZFhtaW4oVHJhbnNhY3Rpb25JZCB4 bWluLAogCQkJY29udGludWU7CiAKIAkJLyogV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0 aGUgc3BlY2lmaWMgdmlydHVhbCB0cmFuc2FjdGlvbi4gKi8KLQkJaWYgKHByb2MtPnZ4aWQu YmFja2VuZElkICE9IHNvdXJjZXZ4aWQtPmJhY2tlbmRJZCkKKwkJaWYgKHByb2MtPnZ4aWQu cHJvY051bWJlciAhPSBzb3VyY2V2eGlkLT5wcm9jTnVtYmVyKQogCQkJY29udGludWU7CiAJ CWlmIChwcm9jLT52eGlkLmx4aWQgIT0gc291cmNldnhpZC0+bG9jYWxUcmFuc2FjdGlvbklk KQogCQkJY29udGludWU7CkBAIC0zMTA1LDIwICszMTA1LDIwIEBAIEhhdmVWaXJ0dWFsWElE c0RlbGF5aW5nQ2hrcHQoVmlydHVhbFRyYW5zYWN0aW9uSWQgKnZ4aWRzLCBpbnQgbnZ4aWRz LCBpbnQgdHlwZSkKIH0KIAogLyoKLSAqIEJhY2tlbmRJZEdldFByb2MgLS0gZ2V0IGEgYmFj a2VuZCdzIFBHUFJPQyBnaXZlbiBpdHMgYmFja2VuZCBJRAorICogUHJvY051bWJlckdldFBy b2MgLS0gZ2V0IGEgYmFja2VuZCdzIFBHUFJPQyBnaXZlbiBpdHMgcHJvYyBudW1iZXIKICAq CiAgKiBUaGUgcmVzdWx0IG1heSBiZSBvdXQgb2YgZGF0ZSBhcmJpdHJhcmlseSBxdWlja2x5 LCBzbyB0aGUgY2FsbGVyCiAgKiBtdXN0IGJlIGNhcmVmdWwgYWJvdXQgaG93IHRoaXMgaW5m b3JtYXRpb24gaXMgdXNlZC4gIE5VTEwgaXMKICAqIHJldHVybmVkIGlmIHRoZSBiYWNrZW5k IGlzIG5vdCBhY3RpdmUuCiAgKi8KIFBHUFJPQyAqCi1CYWNrZW5kSWRHZXRQcm9jKGludCBi YWNrZW5kSUQpCitQcm9jTnVtYmVyR2V0UHJvYyhQcm9jTnVtYmVyIHByb2NOdW1iZXIpCiB7 CiAJUEdQUk9DCSAgICpyZXN1bHQ7CiAKLQlpZiAoYmFja2VuZElEIDwgMSB8fCBiYWNrZW5k SUQgPiBQcm9jR2xvYmFsLT5hbGxQcm9jQ291bnQpCisJaWYgKHByb2NOdW1iZXIgPCAwIHx8 IHByb2NOdW1iZXIgPj0gUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50KQogCQlyZXR1cm4gTlVM TDsKLQlyZXN1bHQgPSBHZXRQR1Byb2NCeUJhY2tlbmRJZChiYWNrZW5kSUQpOworCXJlc3Vs dCA9IEdldFBHUHJvY0J5TnVtYmVyKHByb2NOdW1iZXIpOwogCiAJaWYgKHJlc3VsdC0+cGlk ID09IDApCiAJCXJldHVybiBOVUxMOwpAQCAtMzEyNywxNSArMzEyNywxNSBAQCBCYWNrZW5k SWRHZXRQcm9jKGludCBiYWNrZW5kSUQpCiB9CiAKIC8qCi0gKiBCYWNrZW5kSWRHZXRUcmFu c2FjdGlvbklkcyAtLSBnZXQgYSBiYWNrZW5kJ3MgdHJhbnNhY3Rpb24gc3RhdHVzCisgKiBQ cm9jTnVtYmVyR2V0VHJhbnNhY3Rpb25JZHMgLS0gZ2V0IGEgYmFja2VuZCdzIHRyYW5zYWN0 aW9uIHN0YXR1cwogICoKICAqIEdldCB0aGUgeGlkLCB4bWluLCBuc3VieGlkIGFuZCBvdmVy ZmxvdyBzdGF0dXMgb2YgdGhlIGJhY2tlbmQuICBUaGUKICAqIHJlc3VsdCBtYXkgYmUgb3V0 IG9mIGRhdGUgYXJiaXRyYXJpbHkgcXVpY2tseSwgc28gdGhlIGNhbGxlciBtdXN0IGJlCiAg KiBjYXJlZnVsIGFib3V0IGhvdyB0aGlzIGluZm9ybWF0aW9uIGlzIHVzZWQuCiAgKi8KIHZv aWQKLUJhY2tlbmRJZEdldFRyYW5zYWN0aW9uSWRzKGludCBiYWNrZW5kSUQsIFRyYW5zYWN0 aW9uSWQgKnhpZCwKLQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnhtaW4sIGludCAqbnN1Ynhp ZCwgYm9vbCAqb3ZlcmZsb3dlZCkKK1Byb2NOdW1iZXJHZXRUcmFuc2FjdGlvbklkcyhQcm9j TnVtYmVyIHByb2NOdW1iZXIsIFRyYW5zYWN0aW9uSWQgKnhpZCwKKwkJCQkJCQlUcmFuc2Fj dGlvbklkICp4bWluLCBpbnQgKm5zdWJ4aWQsIGJvb2wgKm92ZXJmbG93ZWQpCiB7CiAJUEdQ Uk9DCSAgICpwcm9jOwogCkBAIC0zMTQ0LDkgKzMxNDQsOSBAQCBCYWNrZW5kSWRHZXRUcmFu c2FjdGlvbklkcyhpbnQgYmFja2VuZElELCBUcmFuc2FjdGlvbklkICp4aWQsCiAJKm5zdWJ4 aWQgPSAwOwogCSpvdmVyZmxvd2VkID0gZmFsc2U7CiAKLQlpZiAoYmFja2VuZElEIDwgMSB8 fCBiYWNrZW5kSUQgPiBQcm9jR2xvYmFsLT5hbGxQcm9jQ291bnQpCisJaWYgKHByb2NOdW1i ZXIgPCAwIHx8IHByb2NOdW1iZXIgPj0gUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50KQogCQly ZXR1cm47Ci0JcHJvYyA9IEdldFBHUHJvY0J5QmFja2VuZElkKGJhY2tlbmRJRCk7CisJcHJv YyA9IEdldFBHUHJvY0J5TnVtYmVyKHByb2NOdW1iZXIpOwogCiAJLyogTmVlZCB0byBsb2Nr IG91dCBhZGRpdGlvbnMvcmVtb3ZhbHMgb2YgYmFja2VuZHMgKi8KIAlMV0xvY2tBY3F1aXJl KFByb2NBcnJheUxvY2ssIExXX1NIQVJFRCk7CkBAIC0zNDUzLDcgKzM0NTMsNyBAQCBHZXRD b25mbGljdGluZ1ZpcnR1YWxYSURzKFRyYW5zYWN0aW9uSWQgbGltaXRYbWluLCBPaWQgZGJP aWQpCiAJTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlMb2NrKTsKIAogCS8qIGFkZCB0aGUgdGVy bWluYXRvciAqLwotCXZ4aWRzW2NvdW50XS5iYWNrZW5kSWQgPSBJbnZhbGlkQmFja2VuZElk OworCXZ4aWRzW2NvdW50XS5wcm9jTnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAl2 eGlkc1tjb3VudF0ubG9jYWxUcmFuc2FjdGlvbklkID0gSW52YWxpZExvY2FsVHJhbnNhY3Rp b25JZDsKIAogCXJldHVybiB2eGlkczsKQEAgLTM0ODgsNyArMzQ4OCw3IEBAIFNpZ25hbFZp cnR1YWxUcmFuc2FjdGlvbihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBQcm9jU2lnbmFs UmVhc29uIHNpZ21vZGUsCiAKIAkJR0VUX1ZYSURfRlJPTV9QR1BST0MocHJvY3Z4aWQsICpw cm9jKTsKIAotCQlpZiAocHJvY3Z4aWQuYmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkICYm CisJCWlmIChwcm9jdnhpZC5wcm9jTnVtYmVyID09IHZ4aWQucHJvY051bWJlciAmJgogCQkJ cHJvY3Z4aWQubG9jYWxUcmFuc2FjdGlvbklkID09IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklk KQogCQl7CiAJCQlwcm9jLT5yZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IGNvbmZsaWN0UGVu ZGluZzsKQEAgLTM0OTksNyArMzQ5OSw3IEBAIFNpZ25hbFZpcnR1YWxUcmFuc2FjdGlvbihW aXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBQcm9jU2lnbmFsUmVhc29uIHNpZ21vZGUsCiAJ CQkJICogS2lsbCB0aGUgcGlkIGlmIGl0J3Mgc3RpbGwgaGVyZS4gSWYgbm90LCB0aGF0J3Mg d2hhdCB3ZQogCQkJCSAqIHdhbnRlZCBzbyBpZ25vcmUgYW55IGVycm9ycy4KIAkJCQkgKi8K LQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwocGlkLCBzaWdtb2RlLCB2eGlkLmJhY2tlbmRJ ZCk7CisJCQkJKHZvaWQpIFNlbmRQcm9jU2lnbmFsKHBpZCwgc2lnbW9kZSwgdnhpZC5wcm9j TnVtYmVyKTsKIAkJCX0KIAkJCWJyZWFrOwogCQl9CkBAIC0zNjYyLDcgKzM2NjIsNyBAQCBD YW5jZWxEQkJhY2tlbmRzKE9pZCBkYXRhYmFzZWlkLCBQcm9jU2lnbmFsUmVhc29uIHNpZ21v ZGUsIGJvb2wgY29uZmxpY3RQZW5kaW5nKQogCQkJCSAqIEtpbGwgdGhlIHBpZCBpZiBpdCdz IHN0aWxsIGhlcmUuIElmIG5vdCwgdGhhdCdzIHdoYXQgd2UKIAkJCQkgKiB3YW50ZWQgc28g aWdub3JlIGFueSBlcnJvcnMuCiAJCQkJICovCi0JCQkJKHZvaWQpIFNlbmRQcm9jU2lnbmFs KHBpZCwgc2lnbW9kZSwgcHJvY3Z4aWQuYmFja2VuZElkKTsKKwkJCQkodm9pZCkgU2VuZFBy b2NTaWduYWwocGlkLCBzaWdtb2RlLCBwcm9jdnhpZC5wcm9jTnVtYmVyKTsKIAkJCX0KIAkJ fQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCAxOTlkZDE4 MjI1My4uZjdkOWM5YWY1MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMKQEAgLTQzLDEwICs0MywxMCBAQAogICogb2JzZXJ2ZSBpdCBvbmx5IG9uY2UuKQogICoK ICAqIEVhY2ggcHJvY2VzcyB0aGF0IHdhbnRzIHRvIHJlY2VpdmUgc2lnbmFscyByZWdpc3Rl cnMgaXRzIHByb2Nlc3MgSUQKLSAqIGluIHRoZSBQcm9jU2lnbmFsU2xvdHMgYXJyYXkuIFRo ZSBhcnJheSBpcyBpbmRleGVkIGJ5IGJhY2tlbmQgSUQgdG8gbWFrZQorICogaW4gdGhlIFBy b2NTaWduYWxTbG90cyBhcnJheS4gVGhlIGFycmF5IGlzIGluZGV4ZWQgYnkgUHJvY051bWJl ciB0byBtYWtlCiAgKiBzbG90IGFsbG9jYXRpb24gc2ltcGxlLCBhbmQgdG8gYXZvaWQgaGF2 aW5nIHRvIHNlYXJjaCB0aGUgYXJyYXkgd2hlbiB5b3UKLSAqIGtub3cgdGhlIGJhY2tlbmQg SUQgb2YgdGhlIHByb2Nlc3MgeW91J3JlIHNpZ25hbGluZy4gIChXZSBkbyBzdXBwb3J0Ci0g KiBzaWduYWxpbmcgd2l0aG91dCBiYWNrZW5kIElELCBidXQgaXQncyBhIGJpdCBsZXNzIGVm ZmljaWVudC4pCisgKiBrbm93IHRoZSBQcm9jTnVtYmVyIG9mIHRoZSBwcm9jZXNzIHlvdSdy ZSBzaWduYWxpbmcuICAoV2UgZG8gc3VwcG9ydAorICogc2lnbmFsaW5nIHdpdGhvdXQgUHJv Y051bWJlciwgYnV0IGl0J3MgYSBiaXQgbGVzcyBlZmZpY2llbnQuKQogICoKICAqIFRoZSBm bGFncyBhcmUgYWN0dWFsbHkgZGVjbGFyZWQgYXMgInZvbGF0aWxlIHNpZ19hdG9taWNfdCIg Zm9yIG1heGltdW0KICAqIHBvcnRhYmlsaXR5LiAgVGhpcyBzaG91bGQgZW5zdXJlIHRoYXQg bG9hZHMgYW5kIHN0b3JlcyBvZiB0aGUgZmxhZwpAQCAtODMsNyArODMsNyBAQCB0eXBlZGVm IHN0cnVjdAogfSBQcm9jU2lnbmFsSGVhZGVyOwogCiAvKgotICogV2UgcmVzZXJ2ZSBhIHNs b3QgZm9yIGVhY2ggcG9zc2libGUgQmFja2VuZElkLCBwbHVzIG9uZSBmb3IgZWFjaAorICog V2UgcmVzZXJ2ZSBhIHNsb3QgZm9yIGVhY2ggcG9zc2libGUgUHJvY051bWJlciwgcGx1cyBv bmUgZm9yIGVhY2gKICAqIHBvc3NpYmxlIGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUuICAoVGhp cyBzY2hlbWUgYXNzdW1lcyB0aGVyZSBpcyBub3QKICAqIG1vcmUgdGhhbiBvbmUgb2YgYW55 IGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUgYXQgYSB0aW1lLikKICAqLwpAQCAtMTYxLDE2ICsx NjEsMTYgQEAgUHJvY1NpZ25hbEluaXQodm9pZCkKIAlQcm9jU2lnbmFsU2xvdCAqc2xvdDsK IAl1aW50NjQJCWJhcnJpZXJfZ2VuZXJhdGlvbjsKIAotCWlmIChNeUJhY2tlbmRJZCA8PSAw KQotCQllbG9nKEVSUk9SLCAiTXlCYWNrZW5kSWQgbm90IHNldCIpOwotCWlmIChNeUJhY2tl bmRJZCA+IE51bVByb2NTaWduYWxTbG90cykKLQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQg TXlCYWNrZW5kSWQgJWQgaW4gUHJvY1NpZ25hbEluaXQgKG1heCAlZCkiLCBNeUJhY2tlbmRJ ZCwgTnVtUHJvY1NpZ25hbFNsb3RzKTsKLQlzbG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90 W015QmFja2VuZElkIC0gMV07CisJaWYgKE15UHJvY051bWJlciA8IDApCisJCWVsb2coRVJS T1IsICJNeVByb2NOdW1iZXIgbm90IHNldCIpOworCWlmIChNeVByb2NOdW1iZXIgPj0gTnVt UHJvY1NpZ25hbFNsb3RzKQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBNeVByb2NOdW1i ZXIgJWQgaW4gUHJvY1NpZ25hbEluaXQgKG1heCAlZCkiLCBNeVByb2NOdW1iZXIsIE51bVBy b2NTaWduYWxTbG90cyk7CisJc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtNeVByb2NO dW1iZXJdOwogCiAJLyogc2FuaXR5IGNoZWNrICovCiAJaWYgKHNsb3QtPnBzc19waWQgIT0g MCkKIAkJZWxvZyhMT0csICJwcm9jZXNzICVkIHRha2luZyBvdmVyIFByb2NTaWduYWwgc2xv dCAlZCwgYnV0IGl0J3Mgbm90IGVtcHR5IiwKLQkJCSBNeVByb2NQaWQsIE15QmFja2VuZElk IC0gMSk7CisJCQkgTXlQcm9jUGlkLCBNeVByb2NOdW1iZXIpOwogCiAJLyogQ2xlYXIgb3V0 IGFueSBsZWZ0b3ZlciBzaWduYWwgcmVhc29ucyAqLwogCU1lbVNldChzbG90LT5wc3Nfc2ln bmFsRmxhZ3MsIDAsIE5VTV9QUk9DU0lHTkFMUyAqIHNpemVvZihzaWdfYXRvbWljX3QpKTsK QEAgLTIxOCw2ICsyMTgsNyBAQCBDbGVhbnVwUHJvY1NpZ25hbFN0YXRlKGludCBzdGF0dXMs IERhdHVtIGFyZykKIAkgKiB3b24ndCB0cnkgdG8gYWNjZXNzIGl0IGFmdGVyIGl0J3Mgbm8g bG9uZ2VyIG91cnMgKGFuZCBwZXJoYXBzIGV2ZW4KIAkgKiBhZnRlciB3ZSd2ZSB1bm1hcHBl ZCB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50KS4KIAkgKi8KKwlBc3NlcnQoTXlQcm9jU2ln bmFsU2xvdCAhPSBOVUxMKTsKIAlNeVByb2NTaWduYWxTbG90ID0gTlVMTDsKIAogCS8qIHNh bml0eSBjaGVjayAqLwpAQCAtMjQ2LDcgKzI0Nyw3IEBAIENsZWFudXBQcm9jU2lnbmFsU3Rh dGUoaW50IHN0YXR1cywgRGF0dW0gYXJnKQogICogU2VuZFByb2NTaWduYWwKICAqCQlTZW5k IGEgc2lnbmFsIHRvIGEgUG9zdGdyZXMgcHJvY2VzcwogICoKLSAqIFByb3ZpZGluZyBiYWNr ZW5kSWQgaXMgb3B0aW9uYWwsIGJ1dCBpdCB3aWxsIHNwZWVkIHVwIHRoZSBvcGVyYXRpb24u CisgKiBQcm92aWRpbmcgcHJvY051bWJlciBpcyBvcHRpb25hbCwgYnV0IGl0IHdpbGwgc3Bl ZWQgdXAgdGhlIG9wZXJhdGlvbi4KICAqCiAgKiBPbiBzdWNjZXNzIChhIHNpZ25hbCB3YXMg c2VudCksIHplcm8gaXMgcmV0dXJuZWQuCiAgKiBPbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQs IGFuZCBlcnJubyBpcyBzZXQgKHR5cGljYWxseSB0byBFU1JDSCBvciBFUEVSTSkuCkBAIC0y NTQsMTMgKzI1NSwxMyBAQCBDbGVhbnVwUHJvY1NpZ25hbFN0YXRlKGludCBzdGF0dXMsIERh dHVtIGFyZykKICAqIE5vdCB0byBiZSBjb25mdXNlZCB3aXRoIFByb2NTZW5kU2lnbmFsCiAg Ki8KIGludAotU2VuZFByb2NTaWduYWwocGlkX3QgcGlkLCBQcm9jU2lnbmFsUmVhc29uIHJl YXNvbiwgQmFja2VuZElkIGJhY2tlbmRJZCkKK1NlbmRQcm9jU2lnbmFsKHBpZF90IHBpZCwg UHJvY1NpZ25hbFJlYXNvbiByZWFzb24sIFByb2NOdW1iZXIgcHJvY051bWJlcikKIHsKIAl2 b2xhdGlsZSBQcm9jU2lnbmFsU2xvdCAqc2xvdDsKIAotCWlmIChiYWNrZW5kSWQgIT0gSW52 YWxpZEJhY2tlbmRJZCkKKwlpZiAocHJvY051bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVS KQogCXsKLQkJc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtiYWNrZW5kSWQgLSAxXTsK KwkJc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtwcm9jTnVtYmVyXTsKIAogCQkvKgog CQkgKiBOb3RlOiBTaW5jZSB0aGVyZSdzIG5vIGxvY2tpbmcsIGl0J3MgcG9zc2libGUgdGhh dCB0aGUgdGFyZ2V0CkBAIC0yODEsMTAgKzI4MiwxMSBAQCBTZW5kUHJvY1NpZ25hbChwaWRf dCBwaWQsIFByb2NTaWduYWxSZWFzb24gcmVhc29uLCBCYWNrZW5kSWQgYmFja2VuZElkKQog CWVsc2UKIAl7CiAJCS8qCi0JCSAqIEJhY2tlbmRJZCBub3QgcHJvdmlkZWQsIHNvIHNlYXJj aCB0aGUgYXJyYXkgdXNpbmcgcGlkLiAgV2Ugc2VhcmNoCisJCSAqIFByb251bWJlciBub3Qg cHJvdmlkZWQsIHNvIHNlYXJjaCB0aGUgYXJyYXkgdXNpbmcgcGlkLiAgV2Ugc2VhcmNoCiAJ CSAqIHRoZSBhcnJheSBiYWNrIHRvIGZyb250IHNvIGFzIHRvIHJlZHVjZSBzZWFyY2ggb3Zl cmhlYWQuICBQYXNzaW5nCi0JCSAqIEludmFsaWRCYWNrZW5kSWQgbWVhbnMgdGhhdCB0aGUg dGFyZ2V0IGlzIG1vc3QgbGlrZWx5IGFuIGF1eGlsaWFyeQotCQkgKiBwcm9jZXNzLCB3aGlj aCB3aWxsIGhhdmUgYSBzbG90IG5lYXIgdGhlIGVuZCBvZiB0aGUgYXJyYXkuCisJCSAqIElO VkFMSURfUFJPQ19OVU1CRVIgbWVhbnMgdGhhdCB0aGUgdGFyZ2V0IGlzIG1vc3QgbGlrZWx5 IGFuCisJCSAqIGF1eGlsaWFyeSBwcm9jZXNzLCB3aGljaCB3aWxsIGhhdmUgYSBzbG90IG5l YXIgdGhlIGVuZCBvZiB0aGUKKwkJICogYXJyYXkuCiAJCSAqLwogCQlpbnQJCQlpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jCmluZGV4IGY2MjRiZmM3ZDc4Li5iNDg2 ZDhkZGQxZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0 LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMKQEAgLTE5LDkg KzE5LDkgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9iYWNrZW5kaWQuaCIKICNpbmNsdWRlICJz dG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY251bWJlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFk dC5oIgpAQCAtMTU1LDggKzE1NSw4IEBAIHR5cGVkZWYgc3RydWN0IFByb2NTdGF0ZQogCiAJ LyoKIAkgKiBOZXh0IExvY2FsVHJhbnNhY3Rpb25JZCB0byB1c2UgZm9yIGVhY2ggaWRsZSBi YWNrZW5kIHNsb3QuICBXZSBrZWVwCi0JICogdGhpcyBoZXJlIGJlY2F1c2UgaXQgaXMgaW5k ZXhlZCBieSBCYWNrZW5kSWQgYW5kIGl0IGlzIGNvbnZlbmllbnQgdG8KLQkgKiBjb3B5IHRo ZSB2YWx1ZSB0byBhbmQgZnJvbSBsb2NhbCBtZW1vcnkgd2hlbiBNeUJhY2tlbmRJZCBpcyBz ZXQuIEl0J3MKKwkgKiB0aGlzIGhlcmUgYmVjYXVzZSBpdCBpcyBpbmRleGVkIGJ5IFByb2NO dW1iZXIgYW5kIGl0IGlzIGNvbnZlbmllbnQgdG8KKwkgKiBjb3B5IHRoZSB2YWx1ZSB0byBh bmQgZnJvbSBsb2NhbCBtZW1vcnkgd2hlbiBNeVByb2NOdW1iZXIgaXMgc2V0LiBJdCdzCiAJ ICogbWVhbmluZ2xlc3MgaW4gYW4gYWN0aXZlIFByb2NTdGF0ZSBlbnRyeS4KIAkgKi8KIAlM b2NhbFRyYW5zYWN0aW9uSWQgbmV4dExYSUQ7CkBAIC0xOTcsNyArMTk3LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgU0lTZWcKIH0gU0lTZWc7CiAKIC8qCi0gKiBXZSByZXNlcnZlIGEgc2xvdCBm b3IgZWFjaCBwb3NzaWJsZSBCYWNrZW5kSWQsIHBsdXMgb25lIGZvciBlYWNoCisgKiBXZSBy ZXNlcnZlIGEgc2xvdCBmb3IgZWFjaCBwb3NzaWJsZSBQcm9jTnVtYmVyLCBwbHVzIG9uZSBm b3IgZWFjaAogICogcG9zc2libGUgYXV4aWxpYXJ5IHByb2Nlc3MgdHlwZS4gIChUaGlzIHNj aGVtZSBhc3N1bWVzIHRoZXJlIGlzIG5vdAogICogbW9yZSB0aGFuIG9uZSBvZiBhbnkgYXV4 aWxpYXJ5IHByb2Nlc3MgdHlwZSBhdCBhIHRpbWUuKQogICovCkBAIC0yNzQsMTUgKzI3NCwx MyBAQCBTaGFyZWRJbnZhbEJhY2tlbmRJbml0KGJvb2wgc2VuZE9ubHkpCiAJUHJvY1N0YXRl ICAqc3RhdGVQOwogCXBpZF90CQlvbGRQaWQ7CiAJU0lTZWcJICAgKnNlZ1AgPSBzaG1JbnZh bEJ1ZmZlcjsKLQlpbnQJCQlwZ3Byb2NubzsKIAotCWlmIChNeUJhY2tlbmRJZCA8PSAwKQot CQllbG9nKEVSUk9SLCAiTXlCYWNrZW5kSWQgbm90IHNldCIpOwotCWlmIChNeUJhY2tlbmRJ ZCA+IE51bVByb2NTdGF0ZVNsb3RzKQotCQllbG9nKFBBTklDLCAidW5leHBlY3RlZCBNeUJh Y2tlbmRJZCAlZCBpbiBTaGFyZWRJbnZhbEJhY2tlbmRJbml0IChtYXggJWQpIiwKLQkJCSBN eUJhY2tlbmRJZCwgTnVtUHJvY1N0YXRlU2xvdHMpOwotCXBncHJvY25vID0gTXlCYWNrZW5k SWQgLSAxOwotCXN0YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbcGdwcm9jbm9dOworCWlmIChN eVByb2NOdW1iZXIgPCAwKQorCQllbG9nKEVSUk9SLCAiTXlQcm9jTnVtYmVyIG5vdCBzZXQi KTsKKwlpZiAoTXlQcm9jTnVtYmVyID49IE51bVByb2NTdGF0ZVNsb3RzKQorCQllbG9nKFBB TklDLCAidW5leHBlY3RlZCBNeVByb2NOdW1iZXIgJWQgaW4gU2hhcmVkSW52YWxCYWNrZW5k SW5pdCAobWF4ICVkKSIsCisJCQkgTXlQcm9jTnVtYmVyLCBOdW1Qcm9jU3RhdGVTbG90cyk7 CisJc3RhdGVQID0gJnNlZ1AtPnByb2NTdGF0ZVtNeVByb2NOdW1iZXJdOwogCiAJLyoKIAkg KiBUaGlzIGNhbiBydW4gaW4gcGFyYWxsZWwgd2l0aCByZWFkIG9wZXJhdGlvbnMsIGJ1dCBu b3Qgd2l0aCB3cml0ZQpAQCAtMjk2LDEwICsyOTQsMTAgQEAgU2hhcmVkSW52YWxCYWNrZW5k SW5pdChib29sIHNlbmRPbmx5KQogCXsKIAkJTFdMb2NrUmVsZWFzZShTSW52YWxXcml0ZUxv Y2spOwogCQllbG9nKEVSUk9SLCAic2ludmFsIHNsb3QgZm9yIGJhY2tlbmQgJWQgaXMgYWxy ZWFkeSBpbiB1c2UgYnkgcHJvY2VzcyAlZCIsCi0JCQkgTXlCYWNrZW5kSWQsIChpbnQpIG9s ZFBpZCk7CisJCQkgTXlQcm9jTnVtYmVyLCAoaW50KSBvbGRQaWQpOwogCX0KIAotCXNobUlu dmFsQnVmZmVyLT5wZ3Byb2Nub3Nbc2htSW52YWxCdWZmZXItPm51bVByb2NzKytdID0gcGdw cm9jbm87CisJc2htSW52YWxCdWZmZXItPnBncHJvY25vc1tzaG1JbnZhbEJ1ZmZlci0+bnVt UHJvY3MrK10gPSBNeVByb2NOdW1iZXI7CiAKIAkvKiBGZXRjaCBuZXh0IGxvY2FsIHRyYW5z YWN0aW9uIElEIGludG8gbG9jYWwgbWVtb3J5ICovCiAJbmV4dExvY2FsVHJhbnNhY3Rpb25J ZCA9IHN0YXRlUC0+bmV4dExYSUQ7CkBAIC0zMzEsMTYgKzMyOSwxNSBAQCBDbGVhbnVwSW52 YWxpZGF0aW9uU3RhdGUoaW50IHN0YXR1cywgRGF0dW0gYXJnKQogewogCVNJU2VnCSAgICpz ZWdQID0gKFNJU2VnICopIERhdHVtR2V0UG9pbnRlcihhcmcpOwogCVByb2NTdGF0ZSAgKnN0 YXRlUDsKLQlpbnQJCQlwZ3Byb2NubyA9IE15QmFja2VuZElkIC0gMTsKIAlpbnQJCQlpOwog CiAJQXNzZXJ0KFBvaW50ZXJJc1ZhbGlkKHNlZ1ApKTsKIAogCUxXTG9ja0FjcXVpcmUoU0lu dmFsV3JpdGVMb2NrLCBMV19FWENMVVNJVkUpOwogCi0Jc3RhdGVQID0gJnNlZ1AtPnByb2NT dGF0ZVtwZ3Byb2Nub107CisJc3RhdGVQID0gJnNlZ1AtPnByb2NTdGF0ZVtNeVByb2NOdW1i ZXJdOwogCi0JLyogVXBkYXRlIG5leHQgbG9jYWwgdHJhbnNhY3Rpb24gSUQgZm9yIG5leHQg aG9sZGVyIG9mIHRoaXMgYmFja2VuZElEICovCisJLyogVXBkYXRlIG5leHQgbG9jYWwgdHJh bnNhY3Rpb24gSUQgZm9yIG5leHQgaG9sZGVyIG9mIHRoaXMgcHJvYyBudW1iZXIgKi8KIAlz dGF0ZVAtPm5leHRMWElEID0gbmV4dExvY2FsVHJhbnNhY3Rpb25JZDsKIAogCS8qIE1hcmsg bXlzZWxmIGluYWN0aXZlICovCkBAIC0zNTEsNyArMzQ4LDcgQEAgQ2xlYW51cEludmFsaWRh dGlvblN0YXRlKGludCBzdGF0dXMsIERhdHVtIGFyZykKIAogCWZvciAoaSA9IHNlZ1AtPm51 bVByb2NzIC0gMTsgaSA+PSAwOyBpLS0pCiAJewotCQlpZiAoc2VnUC0+cGdwcm9jbm9zW2ld ID09IHBncHJvY25vKQorCQlpZiAoc2VnUC0+cGdwcm9jbm9zW2ldID09IE15UHJvY051bWJl cikKIAkJewogCQkJaWYgKGkgIT0gc2VnUC0+bnVtUHJvY3MgLSAxKQogCQkJCXNlZ1AtPnBn cHJvY25vc1tpXSA9IHNlZ1AtPnBncHJvY25vc1tzZWdQLT5udW1Qcm9jcyAtIDFdOwpAQCAt NDgxLDcgKzQ3OCw3IEBAIFNJR2V0RGF0YUVudHJpZXMoU2hhcmVkSW52YWxpZGF0aW9uTWVz c2FnZSAqZGF0YSwgaW50IGRhdGFzaXplKQogCWludAkJCW47CiAKIAlzZWdQID0gc2htSW52 YWxCdWZmZXI7Ci0Jc3RhdGVQID0gJnNlZ1AtPnByb2NTdGF0ZVtNeUJhY2tlbmRJZCAtIDFd OworCXN0YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbTXlQcm9jTnVtYmVyXTsKIAogCS8qCiAJ ICogQmVmb3JlIHN0YXJ0aW5nIHRvIHRha2UgbG9ja3MsIGRvIGEgcXVpY2ssIHVubG9ja2Vk IHRlc3QgdG8gc2VlIHdoZXRoZXIKQEAgLTY2OCwxMyArNjY1LDEzIEBAIFNJQ2xlYW51cFF1 ZXVlKGJvb2wgY2FsbGVySGFzV3JpdGVMb2NrLCBpbnQgbWluRnJlZSkKIAlpZiAobmVlZFNp ZykKIAl7CiAJCXBpZF90CQloaXNfcGlkID0gbmVlZFNpZy0+cHJvY1BpZDsKLQkJQmFja2Vu ZElkCWhpc19iYWNrZW5kSWQgPSAobmVlZFNpZyAtICZzZWdQLT5wcm9jU3RhdGVbMF0pICsg MTsKKwkJUHJvY051bWJlcgloaXNfcHJvY051bWJlciA9IChuZWVkU2lnIC0gJnNlZ1AtPnBy b2NTdGF0ZVswXSk7CiAKIAkJbmVlZFNpZy0+c2lnbmFsZWQgPSB0cnVlOwogCQlMV0xvY2tS ZWxlYXNlKFNJbnZhbFJlYWRMb2NrKTsKIAkJTFdMb2NrUmVsZWFzZShTSW52YWxXcml0ZUxv Y2spOwogCQllbG9nKERFQlVHNCwgInNlbmRpbmcgc2ludmFsIGNhdGNodXAgc2lnbmFsIHRv IFBJRCAlZCIsIChpbnQpIGhpc19waWQpOwotCQlTZW5kUHJvY1NpZ25hbChoaXNfcGlkLCBQ Uk9DU0lHX0NBVENIVVBfSU5URVJSVVBULCBoaXNfYmFja2VuZElkKTsKKwkJU2VuZFByb2NT aWduYWwoaGlzX3BpZCwgUFJPQ1NJR19DQVRDSFVQX0lOVEVSUlVQVCwgaGlzX3Byb2NOdW1i ZXIpOwogCQlpZiAoY2FsbGVySGFzV3JpdGVMb2NrKQogCQkJTFdMb2NrQWNxdWlyZShTSW52 YWxXcml0ZUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJfQpAQCAtNjkzLDExICs2OTAsMTEgQEAg U0lDbGVhbnVwUXVldWUoYm9vbCBjYWxsZXJIYXNXcml0ZUxvY2ssIGludCBtaW5GcmVlKQog ICogV2Ugc3BsaXQgVmlydHVhbFRyYW5zYWN0aW9uSWRzIGludG8gdHdvIHBhcnRzIHNvIHRo YXQgaXQgaXMgcG9zc2libGUKICAqIHRvIGFsbG9jYXRlIGEgbmV3IG9uZSB3aXRob3V0IGFu eSBjb250ZW50aW9uIGZvciBzaGFyZWQgbWVtb3J5LCBleGNlcHQKICAqIGZvciBhIGJpdCBv ZiBhZGRpdGlvbmFsIG92ZXJoZWFkIGR1cmluZyBiYWNrZW5kIHN0YXJ0dXAvc2h1dGRvd24u Ci0gKiBUaGUgaGlnaC1vcmRlciBwYXJ0IG9mIGEgVmlydHVhbFRyYW5zYWN0aW9uSWQgaXMg YSBCYWNrZW5kSWQsIGFuZCB0aGUKKyAqIFRoZSBoaWdoLW9yZGVyIHBhcnQgb2YgYSBWaXJ0 dWFsVHJhbnNhY3Rpb25JZCBpcyBhIFByb2NOdW1iZXIsIGFuZCB0aGUKICAqIGxvdy1vcmRl ciBwYXJ0IGlzIGEgTG9jYWxUcmFuc2FjdGlvbklkLCB3aGljaCB3ZSBhc3NpZ24gZnJvbSBh IGxvY2FsCiAgKiBjb3VudGVyLiAgVG8gYXZvaWQgdGhlIHJpc2sgb2YgYSBWaXJ0dWFsVHJh bnNhY3Rpb25JZCBiZWluZyByZXVzZWQKLSAqIHdpdGhpbiBhIHNob3J0IGludGVydmFsLCBz dWNjZXNzaXZlIHByb2NzIG9jY3VweWluZyB0aGUgc2FtZSBiYWNrZW5kIElECi0gKiBzbG90 IHNob3VsZCB1c2UgYSBjb25zZWN1dGl2ZSBzZXF1ZW5jZSBvZiBsb2NhbCBJRHMsIHdoaWNo IGlzIGltcGxlbWVudGVkCisgKiB3aXRoaW4gYSBzaG9ydCBpbnRlcnZhbCwgc3VjY2Vzc2l2 ZSBwcm9jcyBvY2N1cHlpbmcgdGhlIHNhbWUgUEdQUk9DIHNsb3QKKyAqIHNob3VsZCB1c2Ug YSBjb25zZWN1dGl2ZSBzZXF1ZW5jZSBvZiBsb2NhbCBJRHMsIHdoaWNoIGlzIGltcGxlbWVu dGVkCiAgKiBieSBjb3B5aW5nIG5leHRMb2NhbFRyYW5zYWN0aW9uSWQgYXMgc2VlbiBhYm92 ZS4KICAqLwogTG9jYWxUcmFuc2FjdGlvbklkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5 LmMKaW5kZXggOTdkMWFiNjU3NDAuLjIzYWIxY2ZkZThkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jCkBAIC0xMzcsOCArMTM3LDggQEAgSW5pdFJlY292ZXJ5VHJhbnNhY3Rp b25FbnZpcm9ubWVudCh2b2lkKQogCSAqIGFyZSBoZWxkIGJ5IHZ4aWRzIGFuZCByb3cgbGV2 ZWwgbG9ja3MgYXJlIGhlbGQgYnkgeGlkcy4gQWxsIHF1ZXJpZXMKIAkgKiBob2xkIEFjY2Vz c1NoYXJlTG9ja3Mgc28gbmV2ZXIgYmxvY2sgd2hpbGUgd2Ugd3JpdGUgb3IgbG9jayBuZXcg cm93cy4KIAkgKi8KLQlNeVByb2MtPnZ4aWQuYmFja2VuZElkID0gTXlCYWNrZW5kSWQ7Ci0J dnhpZC5iYWNrZW5kSWQgPSBNeUJhY2tlbmRJZDsKKwlNeVByb2MtPnZ4aWQucHJvY051bWJl ciA9IE15UHJvY051bWJlcjsKKwl2eGlkLnByb2NOdW1iZXIgPSBNeVByb2NOdW1iZXI7CiAJ dnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPSBHZXROZXh0TG9jYWxUcmFuc2FjdGlvbklkKCk7 CiAJVmlydHVhbFhhY3RMb2NrVGFibGVJbnNlcnQodnhpZCk7CiAKQEAgLTMwMCw3ICszMDAs NyBAQCBMb2dSZWNvdmVyeUNvbmZsaWN0KFByb2NTaWduYWxSZWFzb24gcmVhc29uLCBUaW1l c3RhbXBUeiB3YWl0X3N0YXJ0LAogCQl2eGlkcyA9IHdhaXRfbGlzdDsKIAkJd2hpbGUgKFZp cnR1YWxUcmFuc2FjdGlvbklkSXNWYWxpZCgqdnhpZHMpKQogCQl7Ci0JCQlQR1BST0MJICAg KnByb2MgPSBCYWNrZW5kSWRHZXRQcm9jKHZ4aWRzLT5iYWNrZW5kSWQpOworCQkJUEdQUk9D CSAgICpwcm9jID0gUHJvY051bWJlckdldFByb2ModnhpZHMtPnByb2NOdW1iZXIpOwogCiAJ CQkvKiBwcm9jIGNhbiBiZSBOVUxMIGlmIHRoZSB0YXJnZXQgYmFja2VuZCBpcyBub3QgYWN0 aXZlICovCiAJCQlpZiAocHJvYykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9sbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCmluZGV4IDQ5 NzVkNGI2N2Q3Li43ZDk2NGYyZGMwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCkBA IC05NDcsNyArOTQ3LDcgQEAgV2FpdEZvckxvY2tlcnNNdWx0aXBsZShMaXN0ICpsb2NrdGFn cywgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgcHJvZ3Jlc3MpCiAJCQkvKiBJZiByZXF1ZXN0 ZWQsIHB1Ymxpc2ggd2hvIHdlJ3JlIGdvaW5nIHRvIHdhaXQgZm9yLiAqLwogCQkJaWYgKHBy b2dyZXNzKQogCQkJewotCQkJCVBHUFJPQwkgICAqaG9sZGVyID0gQmFja2VuZElkR2V0UHJv Yyhsb2NraG9sZGVycy0+YmFja2VuZElkKTsKKwkJCQlQR1BST0MJICAgKmhvbGRlciA9IFBy b2NOdW1iZXJHZXRQcm9jKGxvY2tob2xkZXJzLT5wcm9jTnVtYmVyKTsKIAogCQkJCWlmICho b2xkZXIpCiAJCQkJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfV0FJ VEZPUl9DVVJSRU5UX1BJRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IGU2Mjk2 OGI0YTg2Li4wZDkwNGVmNjU1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCkBAIC0y OTk1LDcgKzI5OTUsNyBAQCBHZXRMb2NrQ29uZmxpY3RzKGNvbnN0IExPQ0tUQUcgKmxvY2t0 YWcsIExPQ0tNT0RFIGxvY2ttb2RlLCBpbnQgKmNvdW50cCkKIAkJICogb24gdGhpcyBsb2Nr YWJsZSBvYmplY3QuCiAJCSAqLwogCQlMV0xvY2tSZWxlYXNlKHBhcnRpdGlvbkxvY2spOwot CQl2eGlkc1tjb3VudF0uYmFja2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKKwkJdnhpZHNb Y291bnRdLnByb2NOdW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQl2eGlkc1tjb3Vu dF0ubG9jYWxUcmFuc2FjdGlvbklkID0gSW52YWxpZExvY2FsVHJhbnNhY3Rpb25JZDsKIAkJ aWYgKGNvdW50cCkKIAkJCSpjb3VudHAgPSBjb3VudDsKQEAgLTMwNDEsNyArMzA0MSw3IEBA IEdldExvY2tDb25mbGljdHMoY29uc3QgTE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9j a21vZGUsIGludCAqY291bnRwKQogCWlmIChjb3VudCA+IE1heEJhY2tlbmRzICsgbWF4X3By ZXBhcmVkX3hhY3RzKQkvKiBzaG91bGQgbmV2ZXIgaGFwcGVuICovCiAJCWVsb2coUEFOSUMs ICJ0b28gbWFueSBjb25mbGljdGluZyBsb2NrcyBmb3VuZCIpOwogCi0JdnhpZHNbY291bnRd LmJhY2tlbmRJZCA9IEludmFsaWRCYWNrZW5kSWQ7CisJdnhpZHNbY291bnRdLnByb2NOdW1i ZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCXZ4aWRzW2NvdW50XS5sb2NhbFRyYW5zYWN0 aW9uSWQgPSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkOwogCWlmIChjb3VudHApCiAJCSpj b3VudHAgPSBjb3VudDsKQEAgLTM2MjUsNyArMzYyNSw3IEBAIEdldExvY2tTdGF0dXNEYXRh KHZvaWQpCiAJCQkJCQkJCSBwcm9jLT5mcFJlbElkW2ZdKTsKIAkJCWluc3RhbmNlLT5ob2xk TWFzayA9IGxvY2tiaXRzIDw8IEZBU1RfUEFUSF9MT0NLTlVNQkVSX09GRlNFVDsKIAkJCWlu c3RhbmNlLT53YWl0TG9ja01vZGUgPSBOb0xvY2s7Ci0JCQlpbnN0YW5jZS0+dnhpZC5iYWNr ZW5kSWQgPSBwcm9jLT52eGlkLmJhY2tlbmRJZDsKKwkJCWluc3RhbmNlLT52eGlkLnByb2NO dW1iZXIgPSBwcm9jLT52eGlkLnByb2NOdW1iZXI7CiAJCQlpbnN0YW5jZS0+dnhpZC5sb2Nh bFRyYW5zYWN0aW9uSWQgPSBwcm9jLT52eGlkLmx4aWQ7CiAJCQlpbnN0YW5jZS0+cGlkID0g cHJvYy0+cGlkOwogCQkJaW5zdGFuY2UtPmxlYWRlclBpZCA9IHByb2MtPnBpZDsKQEAgLTM2 NTIsMTQgKzM2NTIsMTQgQEAgR2V0TG9ja1N0YXR1c0RhdGEodm9pZCkKIAkJCQkJcmVwYWxs b2MoZGF0YS0+bG9ja3MsIHNpemVvZihMb2NrSW5zdGFuY2VEYXRhKSAqIGVscyk7CiAJCQl9 CiAKLQkJCXZ4aWQuYmFja2VuZElkID0gcHJvYy0+dnhpZC5iYWNrZW5kSWQ7CisJCQl2eGlk LnByb2NOdW1iZXIgPSBwcm9jLT52eGlkLnByb2NOdW1iZXI7CiAJCQl2eGlkLmxvY2FsVHJh bnNhY3Rpb25JZCA9IHByb2MtPmZwTG9jYWxUcmFuc2FjdGlvbklkOwogCiAJCQlpbnN0YW5j ZSA9ICZkYXRhLT5sb2Nrc1tlbF07CiAJCQlTRVRfTE9DS1RBR19WSVJUVUFMVFJBTlNBQ1RJ T04oaW5zdGFuY2UtPmxvY2t0YWcsIHZ4aWQpOwogCQkJaW5zdGFuY2UtPmhvbGRNYXNrID0g TE9DS0JJVF9PTihFeGNsdXNpdmVMb2NrKTsKIAkJCWluc3RhbmNlLT53YWl0TG9ja01vZGUg PSBOb0xvY2s7Ci0JCQlpbnN0YW5jZS0+dnhpZC5iYWNrZW5kSWQgPSBwcm9jLT52eGlkLmJh Y2tlbmRJZDsKKwkJCWluc3RhbmNlLT52eGlkLnByb2NOdW1iZXIgPSBwcm9jLT52eGlkLnBy b2NOdW1iZXI7CiAJCQlpbnN0YW5jZS0+dnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPSBwcm9j LT52eGlkLmx4aWQ7CiAJCQlpbnN0YW5jZS0+cGlkID0gcHJvYy0+cGlkOwogCQkJaW5zdGFu Y2UtPmxlYWRlclBpZCA9IHByb2MtPnBpZDsKQEAgLTM3MTIsNyArMzcxMiw3IEBAIEdldExv Y2tTdGF0dXNEYXRhKHZvaWQpCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2RlID0gcHJvYy0+ d2FpdExvY2tNb2RlOwogCQllbHNlCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2RlID0gTm9M b2NrOwotCQlpbnN0YW5jZS0+dnhpZC5iYWNrZW5kSWQgPSBwcm9jLT52eGlkLmJhY2tlbmRJ ZDsKKwkJaW5zdGFuY2UtPnZ4aWQucHJvY051bWJlciA9IHByb2MtPnZ4aWQucHJvY051bWJl cjsKIAkJaW5zdGFuY2UtPnZ4aWQubG9jYWxUcmFuc2FjdGlvbklkID0gcHJvYy0+dnhpZC5s eGlkOwogCQlpbnN0YW5jZS0+cGlkID0gcHJvYy0+cGlkOwogCQlpbnN0YW5jZS0+bGVhZGVy UGlkID0gcHJvY2xvY2stPmdyb3VwTGVhZGVyLT5waWQ7CkBAIC0zODg4LDcgKzM4ODgsNyBA QCBHZXRTaW5nbGVQcm9jQmxvY2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9ja2VkX3Byb2Ms IEJsb2NrZWRQcm9jc0RhdGEgKmRhdGEpCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2RlID0g cHJvYy0+d2FpdExvY2tNb2RlOwogCQllbHNlCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2Rl ID0gTm9Mb2NrOwotCQlpbnN0YW5jZS0+dnhpZC5iYWNrZW5kSWQgPSBwcm9jLT52eGlkLmJh Y2tlbmRJZDsKKwkJaW5zdGFuY2UtPnZ4aWQucHJvY051bWJlciA9IHByb2MtPnZ4aWQucHJv Y051bWJlcjsKIAkJaW5zdGFuY2UtPnZ4aWQubG9jYWxUcmFuc2FjdGlvbklkID0gcHJvYy0+ dnhpZC5seGlkOwogCQlpbnN0YW5jZS0+cGlkID0gcHJvYy0+cGlkOwogCQlpbnN0YW5jZS0+ bGVhZGVyUGlkID0gcHJvY2xvY2stPmdyb3VwTGVhZGVyLT5waWQ7CkBAIC00MzkxLDcgKzQz OTEsNyBAQCBWaXJ0dWFsWGFjdExvY2tUYWJsZUluc2VydChWaXJ0dWFsVHJhbnNhY3Rpb25J ZCB2eGlkKQogCiAJTFdMb2NrQWNxdWlyZSgmTXlQcm9jLT5mcEluZm9Mb2NrLCBMV19FWENM VVNJVkUpOwogCi0JQXNzZXJ0KE15UHJvYy0+dnhpZC5iYWNrZW5kSWQgPT0gdnhpZC5iYWNr ZW5kSWQpOworCUFzc2VydChNeVByb2MtPnZ4aWQucHJvY051bWJlciA9PSB2eGlkLnByb2NO dW1iZXIpOwogCUFzc2VydChNeVByb2MtPmZwTG9jYWxUcmFuc2FjdGlvbklkID09IEludmFs aWRMb2NhbFRyYW5zYWN0aW9uSWQpOwogCUFzc2VydChNeVByb2MtPmZwVlhJRExvY2sgPT0g ZmFsc2UpOwogCkBAIC00NDEzLDcgKzQ0MTMsNyBAQCBWaXJ0dWFsWGFjdExvY2tUYWJsZUNs ZWFudXAodm9pZCkKIAlib29sCQlmYXN0cGF0aDsKIAlMb2NhbFRyYW5zYWN0aW9uSWQgbHhp ZDsKIAotCUFzc2VydChNeVByb2MtPnZ4aWQuYmFja2VuZElkICE9IEludmFsaWRCYWNrZW5k SWQpOworCUFzc2VydChNeVByb2MtPnZ4aWQucHJvY051bWJlciAhPSBJTlZBTElEX1BST0Nf TlVNQkVSKTsKIAogCS8qCiAJICogQ2xlYW4gdXAgc2hhcmVkIG1lbW9yeSBzdGF0ZS4KQEAg LTQ0MzYsNyArNDQzNiw3IEBAIFZpcnR1YWxYYWN0TG9ja1RhYmxlQ2xlYW51cCh2b2lkKQog CQlWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkOwogCQlMT0NLVEFHCQlsb2NrdGFnOwogCi0J CXZ4aWQuYmFja2VuZElkID0gTXlCYWNrZW5kSWQ7CisJCXZ4aWQucHJvY051bWJlciA9IE15 UHJvY051bWJlcjsKIAkJdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPSBseGlkOwogCQlTRVRf TE9DS1RBR19WSVJUVUFMVFJBTlNBQ1RJT04obG9ja3RhZywgdnhpZCk7CiAKQEAgLTQ1MzAs MTggKzQ1MzAsMTggQEAgVmlydHVhbFhhY3RMb2NrKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4 aWQsIGJvb2wgd2FpdCkKIAkgKiByZWxldmFudCBseGlkIGlzIG5vIGxvbmdlciBydW5uaW5n IGhlcmUsIHRoYXQncyBlbm91Z2ggdG8gcHJvdmUgdGhhdAogCSAqIGl0J3Mgbm8gbG9uZ2Vy IHJ1bm5pbmcgYW55d2hlcmUuCiAJICovCi0JcHJvYyA9IEJhY2tlbmRJZEdldFByb2Modnhp ZC5iYWNrZW5kSWQpOworCXByb2MgPSBQcm9jTnVtYmVyR2V0UHJvYyh2eGlkLnByb2NOdW1i ZXIpOwogCWlmIChwcm9jID09IE5VTEwpCiAJCXJldHVybiBYYWN0TG9ja0ZvclZpcnR1YWxY YWN0KHZ4aWQsIEludmFsaWRUcmFuc2FjdGlvbklkLCB3YWl0KTsKIAogCS8qCi0JICogV2Ug bXVzdCBhY3F1aXJlIHRoaXMgbG9jayBiZWZvcmUgY2hlY2tpbmcgdGhlIGJhY2tlbmRJZCBh bmQgbHhpZAorCSAqIFdlIG11c3QgYWNxdWlyZSB0aGlzIGxvY2sgYmVmb3JlIGNoZWNraW5n IHRoZSBwcm9jTnVtYmVyIGFuZCBseGlkCiAJICogYWdhaW5zdCB0aGUgb25lcyB3ZSdyZSB3 YWl0aW5nIGZvci4gIFRoZSB0YXJnZXQgYmFja2VuZCB3aWxsIG9ubHkgc2V0CiAJICogb3Ig Y2xlYXIgbHhpZCB3aGlsZSBob2xkaW5nIHRoaXMgbG9jay4KIAkgKi8KIAlMV0xvY2tBY3F1 aXJlKCZwcm9jLT5mcEluZm9Mb2NrLCBMV19FWENMVVNJVkUpOwogCi0JaWYgKHByb2MtPnZ4 aWQuYmFja2VuZElkICE9IHZ4aWQuYmFja2VuZElkCisJaWYgKHByb2MtPnZ4aWQucHJvY051 bWJlciAhPSB2eGlkLnByb2NOdW1iZXIKIAkJfHwgcHJvYy0+ZnBMb2NhbFRyYW5zYWN0aW9u SWQgIT0gdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQpCiAJewogCQkvKiBWWElEIGVuZGVkICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggZDYyMDYwZDU4Yzgu LjU0ZTM0MzkwOGNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJl ZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBA IC0xMjQ4LDcgKzEyNDgsNyBAQCBJbml0UHJlZGljYXRlTG9ja3Modm9pZCkKIAkJUHJlZFhh Y3QtPk9sZENvbW1pdHRlZFN4YWN0LT54bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJ CVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmxhZ3MgPSBTWEFDVF9GTEFHX0NPTU1J VFRFRDsKIAkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5waWQgPSAwOwotCQlQcmVk WGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnBncHJvY25vID0gSU5WQUxJRF9QR1BST0NOTzsK KwkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5wZ3Byb2NubyA9IElOVkFMSURfUFJP Q19OVU1CRVI7CiAJfQogCS8qIFRoaXMgbmV2ZXIgY2hhbmdlcywgc28gbGV0J3Mga2VlcCBh IGxvY2FsIGNvcHkuICovCiAJT2xkQ29tbWl0dGVkU3hhY3QgPSBQcmVkWGFjdC0+T2xkQ29t bWl0dGVkU3hhY3Q7CkBAIC00ODM0LDcgKzQ4MzQsNyBAQCBQb3N0UHJlcGFyZV9QcmVkaWNh dGVMb2NrcyhUcmFuc2FjdGlvbklkIHhpZCkKIAlBc3NlcnQoU3hhY3RJc1ByZXBhcmVkKE15 U2VyaWFsaXphYmxlWGFjdCkpOwogCiAJTXlTZXJpYWxpemFibGVYYWN0LT5waWQgPSAwOwot CU15U2VyaWFsaXphYmxlWGFjdC0+cGdwcm9jbm8gPSBJTlZBTElEX1BHUFJPQ05POworCU15 U2VyaWFsaXphYmxlWGFjdC0+cGdwcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCiAJ aGFzaF9kZXN0cm95KExvY2FsUHJlZGljYXRlTG9ja0hhc2gpOwogCUxvY2FsUHJlZGljYXRl TG9ja0hhc2ggPSBOVUxMOwpAQCAtNDkwNiwxMSArNDkwNiwxMSBAQCBwcmVkaWNhdGVsb2Nr X3R3b3BoYXNlX3JlY292ZXIoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAogCQkJCQkgZXJybXNnKCJvdXQg b2Ygc2hhcmVkIG1lbW9yeSIpKSk7CiAKLQkJLyogdnhpZCBmb3IgYSBwcmVwYXJlZCB4YWN0 IGlzIEludmFsaWRCYWNrZW5kSWQveGlkOyBubyBwaWQgKi8KLQkJc3hhY3QtPnZ4aWQuYmFj a2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKKwkJLyogdnhpZCBmb3IgYSBwcmVwYXJlZCB4 YWN0IGlzIElOVkFMSURfUFJPQ19OVU1CRVIveGlkOyBubyBwaWQgKi8KKwkJc3hhY3QtPnZ4 aWQucHJvY051bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCXN4YWN0LT52eGlkLmxv Y2FsVHJhbnNhY3Rpb25JZCA9IChMb2NhbFRyYW5zYWN0aW9uSWQpIHhpZDsKIAkJc3hhY3Qt PnBpZCA9IDA7Ci0JCXN4YWN0LT5wZ3Byb2NubyA9IElOVkFMSURfUEdQUk9DTk87CisJCXN4 YWN0LT5wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAKIAkJLyogYSBwcmVwYXJl ZCB4YWN0IGhhc24ndCBjb21taXR0ZWQgeWV0ICovCiAJCXN4YWN0LT5wcmVwYXJlU2VxTm8g PSBSZWNvdmVyeVNlckNvbW1pdFNlcU5vOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5k ZXggY2RjZjQ2NzRlMmUuLjY5ZWRhODQwZjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKQEAgLTY1LDcgKzY1LDYgQEAgYm9vbAkJbG9nX2xvY2tfd2FpdHMgPSBmYWxzZTsKIAog LyogUG9pbnRlciB0byB0aGlzIHByb2Nlc3MncyBQR1BST0Mgc3RydWN0LCBpZiBhbnkgKi8K IFBHUFJPQwkgICAqTXlQcm9jID0gTlVMTDsKLWludAkJCU15UHJvY051bWJlciA9IElOVkFM SURfUEdQUk9DTk87CiAKIC8qCiAgKiBUaGlzIHNwaW5sb2NrIHByb3RlY3RzIHRoZSBmcmVl bGlzdCBvZiByZWN5Y2xlZCBQR1BST0Mgc3RydWN0dXJlcy4KQEAgLTE4MCw4ICsxNzksOCBA QCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCVByb2NHbG9iYWwtPnN0YXJ0dXBCdWZmZXJQaW5X YWl0QnVmSWQgPSAtMTsKIAlQcm9jR2xvYmFsLT53YWx3cml0ZXJMYXRjaCA9IE5VTEw7CiAJ UHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyTGF0Y2ggPSBOVUxMOwotCXBnX2F0b21pY19pbml0 X3UzMigmUHJvY0dsb2JhbC0+cHJvY0FycmF5R3JvdXBGaXJzdCwgSU5WQUxJRF9QR1BST0NO Tyk7Ci0JcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5jbG9nR3JvdXBGaXJzdCwg SU5WQUxJRF9QR1BST0NOTyk7CisJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5w cm9jQXJyYXlHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlwZ19hdG9taWNf aW5pdF91MzIoJlByb2NHbG9iYWwtPmNsb2dHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVN QkVSKTsKIAogCS8qCiAJICogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGFsbCB0aGUgUEdQUk9D IHN0cnVjdHVyZXMgd2UnbGwgbmVlZC4gIFRoZXJlIGFyZQpAQCAtMjc0LDggKzI3Myw4IEBA IEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJCSAqIEluaXRpYWxpemUgdGhlIGF0b21pYyB2YXJp YWJsZXMsIG90aGVyd2lzZSwgaXQgd29uJ3QgYmUgc2FmZSB0bwogCQkgKiBhY2Nlc3MgdGhl bSBmb3IgYmFja2VuZHMgdGhhdCBhcmVuJ3QgY3VycmVudGx5IGluIHVzZS4KIAkJICovCi0J CXBnX2F0b21pY19pbml0X3UzMigmKHByb2MtPnByb2NBcnJheUdyb3VwTmV4dCksIElOVkFM SURfUEdQUk9DTk8pOwotCQlwZ19hdG9taWNfaW5pdF91MzIoJihwcm9jLT5jbG9nR3JvdXBO ZXh0KSwgSU5WQUxJRF9QR1BST0NOTyk7CisJCXBnX2F0b21pY19pbml0X3UzMigmKHByb2Mt PnByb2NBcnJheUdyb3VwTmV4dCksIElOVkFMSURfUFJPQ19OVU1CRVIpOworCQlwZ19hdG9t aWNfaW5pdF91MzIoJihwcm9jLT5jbG9nR3JvdXBOZXh0KSwgSU5WQUxJRF9QUk9DX05VTUJF Uik7CiAJCXBnX2F0b21pY19pbml0X3U2NCgmKHByb2MtPndhaXRTdGFydCksIDApOwogCX0K IApAQCAtMzU0LDcgKzM1Myw2IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJCQkJIGVycm1zZygi c29ycnksIHRvbyBtYW55IGNsaWVudHMgYWxyZWFkeSIpKSk7CiAJfQogCU15UHJvY051bWJl ciA9IEdldE51bWJlckZyb21QR1Byb2MoTXlQcm9jKTsKLQlNeUJhY2tlbmRJZCA9IEdldEJh Y2tlbmRJZEZyb21QR1Byb2MoTXlQcm9jKTsKIAogCS8qCiAJICogQ3Jvc3MtY2hlY2sgdGhh dCB0aGUgUEdQUk9DIGlzIG9mIHRoZSB0eXBlIHdlIGV4cGVjdDsgaWYgdGhpcyB3ZXJlIG5v dApAQCAtMzgyLDcgKzM4MCw3IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJTXlQcm9jLT54aWQg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlNeVByb2MtPnhtaW4gPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKIAlNeVByb2MtPnBpZCA9IE15UHJvY1BpZDsKLQlNeVByb2MtPnZ4aWQuYmFj a2VuZElkID0gTXlCYWNrZW5kSWQ7CisJTXlQcm9jLT52eGlkLnByb2NOdW1iZXIgPSBNeVBy b2NOdW1iZXI7CiAJTXlQcm9jLT52eGlkLmx4aWQgPSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlv bklkOwogCS8qIGRhdGFiYXNlSWQgYW5kIHJvbGVJZCB3aWxsIGJlIGZpbGxlZCBpbiBsYXRl ciAqLwogCU15UHJvYy0+ZGF0YWJhc2VJZCA9IEludmFsaWRPaWQ7CkBAIC00MTgsNyArNDE2 LDcgQEAgSW5pdFByb2Nlc3Modm9pZCkKIAkvKiBJbml0aWFsaXplIGZpZWxkcyBmb3IgZ3Jv dXAgWElEIGNsZWFyaW5nLiAqLwogCU15UHJvYy0+cHJvY0FycmF5R3JvdXBNZW1iZXIgPSBm YWxzZTsKIAlNeVByb2MtPnByb2NBcnJheUdyb3VwTWVtYmVyWGlkID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7Ci0JQXNzZXJ0KHBnX2F0b21pY19yZWFkX3UzMigmTXlQcm9jLT5wcm9jQXJy YXlHcm91cE5leHQpID09IElOVkFMSURfUEdQUk9DTk8pOworCUFzc2VydChwZ19hdG9taWNf cmVhZF91MzIoJk15UHJvYy0+cHJvY0FycmF5R3JvdXBOZXh0KSA9PSBJTlZBTElEX1BST0Nf TlVNQkVSKTsKIAogCS8qIENoZWNrIHRoYXQgZ3JvdXAgbG9ja2luZyBmaWVsZHMgYXJlIGlu IGEgcHJvcGVyIGluaXRpYWwgc3RhdGUuICovCiAJQXNzZXJ0KE15UHJvYy0+bG9ja0dyb3Vw TGVhZGVyID09IE5VTEwpOwpAQCAtNDMzLDcgKzQzMSw3IEBAIEluaXRQcm9jZXNzKHZvaWQp CiAJTXlQcm9jLT5jbG9nR3JvdXBNZW1iZXJYaWRTdGF0dXMgPSBUUkFOU0FDVElPTl9TVEFU VVNfSU5fUFJPR1JFU1M7CiAJTXlQcm9jLT5jbG9nR3JvdXBNZW1iZXJQYWdlID0gLTE7CiAJ TXlQcm9jLT5jbG9nR3JvdXBNZW1iZXJMc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQlBc3Nl cnQocGdfYXRvbWljX3JlYWRfdTMyKCZNeVByb2MtPmNsb2dHcm91cE5leHQpID09IElOVkFM SURfUEdQUk9DTk8pOworCUFzc2VydChwZ19hdG9taWNfcmVhZF91MzIoJk15UHJvYy0+Y2xv Z0dyb3VwTmV4dCkgPT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAkvKgogCSAqIEFjcXVp cmUgb3duZXJzaGlwIG9mIHRoZSBQR1BST0MncyBsYXRjaCwgc28gdGhhdCB3ZSBjYW4gdXNl IFdhaXRMYXRjaApAQCAtNTY4LDcgKzU2Niw2IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZv aWQpCiAKIAlNeVByb2MgPSBhdXhwcm9jOwogCU15UHJvY051bWJlciA9IEdldE51bWJlckZy b21QR1Byb2MoTXlQcm9jKTsKLQlNeUJhY2tlbmRJZCA9IEdldEJhY2tlbmRJZEZyb21QR1By b2MoTXlQcm9jKTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBhbGwgZmllbGRzIG9mIE15UHJv YywgZXhjZXB0IGZvciB0aG9zZSBwcmV2aW91c2x5CkBAIC01ODAsNyArNTc3LDcgQEAgSW5p dEF1eGlsaWFyeVByb2Nlc3Modm9pZCkKIAlNeVByb2MtPmZwTG9jYWxUcmFuc2FjdGlvbklk ID0gSW52YWxpZExvY2FsVHJhbnNhY3Rpb25JZDsKIAlNeVByb2MtPnhpZCA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogCU15UHJvYy0+eG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwot CU15UHJvYy0+dnhpZC5iYWNrZW5kSWQgPSBJbnZhbGlkQmFja2VuZElkOworCU15UHJvYy0+ dnhpZC5wcm9jTnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAlNeVByb2MtPnZ4aWQu bHhpZCA9IEludmFsaWRMb2NhbFRyYW5zYWN0aW9uSWQ7CiAJTXlQcm9jLT5kYXRhYmFzZUlk ID0gSW52YWxpZE9pZDsKIAlNeVByb2MtPnJvbGVJZCA9IEludmFsaWRPaWQ7CkBAIC05MTEs MTMgKzkwOCwxMiBAQCBQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQogCiAJcHJvYyA9 IE15UHJvYzsKIAlNeVByb2MgPSBOVUxMOwotCU15UHJvY051bWJlciA9IElOVkFMSURfUEdQ Uk9DTk87Ci0JTXlCYWNrZW5kSWQgPSBJbnZhbGlkQmFja2VuZElkOworCU15UHJvY051bWJl ciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJRGlzb3duTGF0Y2goJnByb2MtPnByb2NMYXRj aCk7CiAKIAkvKiBNYXJrIHRoZSBwcm9jIG5vIGxvbmdlciBpbiB1c2UgKi8KIAlwcm9jLT5w aWQgPSAwOwotCXByb2MtPnZ4aWQuYmFja2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKKwlw cm9jLT52eGlkLnByb2NOdW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCXByb2MtPnZ4 aWQubHhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJcHJvY2dsb2JhbGxpc3QgPSBw cm9jLT5wcm9jZ2xvYmFsbGlzdDsKQEAgLTk4OSw4ICs5ODUsNyBAQCBBdXhpbGlhcnlQcm9j S2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQogCiAJcHJvYyA9IE15UHJvYzsKIAlNeVByb2Mg PSBOVUxMOwotCU15UHJvY051bWJlciA9IElOVkFMSURfUEdQUk9DTk87Ci0JTXlCYWNrZW5k SWQgPSBJbnZhbGlkQmFja2VuZElkOworCU15UHJvY051bWJlciA9IElOVkFMSURfUFJPQ19O VU1CRVI7CiAJRGlzb3duTGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CiAKIAlTcGluTG9ja0Fj cXVpcmUoUHJvY1N0cnVjdExvY2spOwpAQCAtMTg1MiwxNSArMTg0NywxNSBAQCBQcm9jV2Fp dEZvclNpZ25hbCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKQogfQogCiAvKgotICogUHJvY1Nl bmRTaWduYWwgLSBzZXQgdGhlIGxhdGNoIG9mIGEgYmFja2VuZCBpZGVudGlmaWVkIGJ5IHBn cHJvY25vCisgKiBQcm9jU2VuZFNpZ25hbCAtIHNldCB0aGUgbGF0Y2ggb2YgYSBiYWNrZW5k IGlkZW50aWZpZWQgYnkgUHJvY051bWJlcgogICovCiB2b2lkCi1Qcm9jU2VuZFNpZ25hbChp bnQgcGdwcm9jbm8pCitQcm9jU2VuZFNpZ25hbChQcm9jTnVtYmVyIHByb2NOdW1iZXIpCiB7 Ci0JaWYgKHBncHJvY25vIDwgMCB8fCBwZ3Byb2NubyA+PSBQcm9jR2xvYmFsLT5hbGxQcm9j Q291bnQpCi0JCWVsb2coRVJST1IsICJwZ3Byb2NubyBvdXQgb2YgcmFuZ2UiKTsKKwlpZiAo cHJvY051bWJlciA8IDAgfHwgcHJvY051bWJlciA+PSBQcm9jR2xvYmFsLT5hbGxQcm9jQ291 bnQpCisJCWVsb2coRVJST1IsICJwcm9jTnVtYmVyIG91dCBvZiByYW5nZSIpOwogCi0JU2V0 TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW3BncHJvY25vXS5wcm9jTGF0Y2gpOworCVNl dExhdGNoKCZQcm9jR2xvYmFsLT5hbGxQcm9jc1twcm9jTnVtYmVyXS5wcm9jTGF0Y2gpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL21kLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL3NtZ3IvbWQuYwppbmRleCBiMWU5OTMyYTI5MS4uZTQ3NGY5 ZDgzNGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9tZC5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9tZC5jCkBAIC0xNDExLDcgKzE0MTEsNyBAQCBE cm9wUmVsYXRpb25GaWxlcyhSZWxGaWxlTG9jYXRvciAqZGVscmVscywgaW50IG5kZWxyZWxz LCBib29sIGlzUmVkbykKIAlzcmVscyA9IHBhbGxvYyhzaXplb2YoU01nclJlbGF0aW9uKSAq IG5kZWxyZWxzKTsKIAlmb3IgKGkgPSAwOyBpIDwgbmRlbHJlbHM7IGkrKykKIAl7Ci0JCVNN Z3JSZWxhdGlvbiBzcmVsID0gc21ncm9wZW4oZGVscmVsc1tpXSwgSW52YWxpZEJhY2tlbmRJ ZCk7CisJCVNNZ3JSZWxhdGlvbiBzcmVsID0gc21ncm9wZW4oZGVscmVsc1tpXSwgSU5WQUxJ RF9QUk9DX05VTUJFUik7CiAKIAkJaWYgKGlzUmVkbykKIAkJewpAQCAtMTY5NSw3ICsxNjk1 LDcgQEAgX21kbmJsb2NrcyhTTWdyUmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBmb3JrbnVt LCBNZGZkVmVjICpzZWcpCiBpbnQKIG1kc3luY2ZpbGV0YWcoY29uc3QgRmlsZVRhZyAqZnRh ZywgY2hhciAqcGF0aCkKIHsKLQlTTWdyUmVsYXRpb24gcmVsbiA9IHNtZ3JvcGVuKGZ0YWct PnJsb2NhdG9yLCBJbnZhbGlkQmFja2VuZElkKTsKKwlTTWdyUmVsYXRpb24gcmVsbiA9IHNt Z3JvcGVuKGZ0YWctPnJsb2NhdG9yLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlGaWxlCQlm aWxlOwogCWluc3RyX3RpbWUJaW9fc3RhcnQ7CiAJYm9vbAkJbmVlZF90b19jbG9zZTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL3NtZ3Ivc21nci5jCmluZGV4IGM2N2JhOWE1MWM4Li4yMjI5NWI0ODVmNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCkBAIC0xOTQsNyArMTk0LDcgQEAgc21ncnNo dXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpCiAgKiBUaGlzIGRvZXMgbm90IGF0dGVtcHQg dG8gYWN0dWFsbHkgb3BlbiB0aGUgdW5kZXJseWluZyBmaWxlcy4KICAqLwogU01nclJlbGF0 aW9uCi1zbWdyb3BlbihSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgQmFja2VuZElkIGJhY2tl bmQpCitzbWdyb3BlbihSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgUHJvY051bWJlciBiYWNr ZW5kKQogewogCVJlbEZpbGVMb2NhdG9yQmFja2VuZCBicmxvY2F0b3I7CiAJU01nclJlbGF0 aW9uIHJlbG47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNr ZW5kX3N0YXR1cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0 dXMuYwppbmRleCAzZDNmN2IwNjcyMy4uYzkxZWQ1YTRiNjQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwpAQCAtMjM4LDcgKzIzOCw3IEBA IENyZWF0ZVNoYXJlZEJhY2tlbmRTdGF0dXModm9pZCkKIAogLyoKICAqIEluaXRpYWxpemUg cGdzdGF0cyBiYWNrZW5kIGFjdGl2aXR5IHN0YXRlLCBhbmQgc2V0IHVwIG91ciBvbi1wcm9j LWV4aXQKLSAqIGhvb2suICBDYWxsZWQgZnJvbSBJbml0UG9zdGdyZXMgYW5kIEF1eGlsaWFy eVByb2Nlc3NNYWluLiAgTXlCYWNrZW5kSWQgbXVzdAorICogaG9vay4gIENhbGxlZCBmcm9t IEluaXRQb3N0Z3JlcyBhbmQgQXV4aWxpYXJ5UHJvY2Vzc01haW4uICBNeVByb2NOdW1iZXIg bXVzdAogICogYmUgc2V0LCBidXQgd2UgbXVzdCBub3QgaGF2ZSBzdGFydGVkIGFueSB0cmFu c2FjdGlvbiB5ZXQgKHNpbmNlIHRoZSBleGl0CiAgKiBob29rIG11c3QgcnVuIGFmdGVyIHRo ZSBsYXN0IHRyYW5zYWN0aW9uIGV4aXQpLgogICoKQEAgLTI0OCw5ICsyNDgsOSBAQCB2b2lk CiBwZ3N0YXRfYmVpbml0KHZvaWQpCiB7CiAJLyogSW5pdGlhbGl6ZSBNeUJFRW50cnkgKi8K LQlBc3NlcnQoTXlCYWNrZW5kSWQgIT0gSW52YWxpZEJhY2tlbmRJZCk7Ci0JQXNzZXJ0KE15 QmFja2VuZElkID49IDEgJiYgTXlCYWNrZW5kSWQgPD0gTnVtQmFja2VuZFN0YXRTbG90cyk7 Ci0JTXlCRUVudHJ5ID0gJkJhY2tlbmRTdGF0dXNBcnJheVtNeUJhY2tlbmRJZCAtIDFdOwor CUFzc2VydChNeVByb2NOdW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CisJQXNzZXJ0 KE15UHJvY051bWJlciA+PSAwICYmIE15UHJvY051bWJlciA8IE51bUJhY2tlbmRTdGF0U2xv dHMpOworCU15QkVFbnRyeSA9ICZCYWNrZW5kU3RhdHVzQXJyYXlbTXlQcm9jTnVtYmVyXTsK IAogCS8qIFNldCB1cCBhIHByb2Nlc3MtZXhpdCBob29rIHRvIGNsZWFuIHVwICovCiAJb25f c2htZW1fZXhpdChwZ3N0YXRfYmVzaHV0ZG93bl9ob29rLCAwKTsKQEAgLTcyMSw3ICs3MjEs NyBAQCBwZ3N0YXRfcmVhZF9jdXJyZW50X3N0YXR1cyh2b2lkKQogI2lmZGVmIEVOQUJMRV9H U1MKIAlQZ0JhY2tlbmRHU1NTdGF0dXMgKmxvY2FsZ3Nzc3RhdHVzOwogI2VuZGlmCi0JaW50 CQkJaTsKKwlQcm9jTnVtYmVyCXByb2NOdW1iZXI7CiAKIAlpZiAobG9jYWxCYWNrZW5kU3Rh dHVzVGFibGUpCiAJCXJldHVybjsJCQkJCS8qIGFscmVhZHkgZG9uZSAqLwpAQCAtNzY0LDcg Kzc2NCw3IEBAIHBnc3RhdF9yZWFkX2N1cnJlbnRfc3RhdHVzKHZvaWQpCiAKIAliZWVudHJ5 ID0gQmFja2VuZFN0YXR1c0FycmF5OwogCWxvY2FsZW50cnkgPSBsb2NhbHRhYmxlOwotCWZv ciAoaSA9IDE7IGkgPD0gTnVtQmFja2VuZFN0YXRTbG90czsgaSsrKQorCWZvciAocHJvY051 bWJlciA9IDA7IHByb2NOdW1iZXIgPCBOdW1CYWNrZW5kU3RhdFNsb3RzOyBwcm9jTnVtYmVy KyspCiAJewogCQkvKgogCQkgKiBGb2xsb3cgdGhlIHByb3RvY29sIG9mIHJldHJ5aW5nIGlm IHN0X2NoYW5nZWNvdW50IGNoYW5nZXMgd2hpbGUgd2UKQEAgLTgzMCwxNyArODMwLDE3IEBA IHBnc3RhdF9yZWFkX2N1cnJlbnRfc3RhdHVzKHZvaWQpCiAJCWlmIChsb2NhbGVudHJ5LT5i YWNrZW5kU3RhdHVzLnN0X3Byb2NwaWQgPiAwKQogCQl7CiAJCQkvKgotCQkJICogVGhlIEJh Y2tlbmRTdGF0dXNBcnJheSBpbmRleCBpcyBleGFjdGx5IHRoZSBCYWNrZW5kSWQgb2YgdGhl CisJCQkgKiBUaGUgQmFja2VuZFN0YXR1c0FycmF5IGluZGV4IGlzIGV4YWN0bHkgdGhlIFBy b2NOdW1iZXIgb2YgdGhlCiAJCQkgKiBzb3VyY2UgYmFja2VuZC4gIE5vdGUgdGhhdCB0aGlz IG1lYW5zIGxvY2FsQmFja2VuZFN0YXR1c1RhYmxlCi0JCQkgKiBpcyBpbiBvcmRlciBieSBi YWNrZW5kX2lkLiAgcGdzdGF0X2dldF9iZWVudHJ5X2J5X2JhY2tlbmRfaWQoKQorCQkJICog aXMgaW4gb3JkZXIgYnkgcHJvY19udW1iZXIuICBwZ3N0YXRfZ2V0X2JlZW50cnlfYnlfYmFj a2VuZF9pZCgpCiAJCQkgKiBkZXBlbmRzIG9uIHRoYXQuCiAJCQkgKi8KLQkJCWxvY2FsZW50 cnktPmJhY2tlbmRfaWQgPSBpOwotCQkJQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMoaSwK LQkJCQkJCQkJCSAgICZsb2NhbGVudHJ5LT5iYWNrZW5kX3hpZCwKLQkJCQkJCQkJCSAgICZs b2NhbGVudHJ5LT5iYWNrZW5kX3htaW4sCi0JCQkJCQkJCQkgICAmbG9jYWxlbnRyeS0+YmFj a2VuZF9zdWJ4YWN0X2NvdW50LAotCQkJCQkJCQkJICAgJmxvY2FsZW50cnktPmJhY2tlbmRf c3VieGFjdF9vdmVyZmxvd2VkKTsKKwkJCWxvY2FsZW50cnktPnByb2NfbnVtYmVyID0gcHJv Y051bWJlcjsKKwkJCVByb2NOdW1iZXJHZXRUcmFuc2FjdGlvbklkcyhwcm9jTnVtYmVyLAor CQkJCQkJCQkJCSZsb2NhbGVudHJ5LT5iYWNrZW5kX3hpZCwKKwkJCQkJCQkJCQkmbG9jYWxl bnRyeS0+YmFja2VuZF94bWluLAorCQkJCQkJCQkJCSZsb2NhbGVudHJ5LT5iYWNrZW5kX3N1 YnhhY3RfY291bnQsCisJCQkJCQkJCQkJJmxvY2FsZW50cnktPmJhY2tlbmRfc3VieGFjdF9v dmVyZmxvd2VkKTsKIAogCQkJbG9jYWxlbnRyeSsrOwogCQkJbG9jYWxhcHBuYW1lICs9IE5B TUVEQVRBTEVOOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgcGdzdGF0X2dldF9teV9xdWVyeV9p ZCh2b2lkKQogICogY21wX2xiZXN0YXR1cwogICoKICAqCUNvbXBhcmlzb24gZnVuY3Rpb24g Zm9yIGJzZWFyY2goKSBvbiBhbiBhcnJheSBvZiBMb2NhbFBnQmFja2VuZFN0YXR1cy4KLSAq CVRoZSBiYWNrZW5kX2lkIGZpZWxkIGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgYXJndW1lbnRz LgorICoJVGhlIHByb2NfbnVtYmVyIGZpZWxkIGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgYXJn dW1lbnRzLgogICogLS0tLS0tLS0tLQogICovCiBzdGF0aWMgaW50CkBAIC0xMDUyLDE3ICsx MDUyLDE3IEBAIGNtcF9sYmVzdGF0dXMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikK IAljb25zdCBMb2NhbFBnQmFja2VuZFN0YXR1cyAqbGJlc3RhdHVzMSA9IChjb25zdCBMb2Nh bFBnQmFja2VuZFN0YXR1cyAqKSBhOwogCWNvbnN0IExvY2FsUGdCYWNrZW5kU3RhdHVzICps YmVzdGF0dXMyID0gKGNvbnN0IExvY2FsUGdCYWNrZW5kU3RhdHVzICopIGI7CiAKLQlyZXR1 cm4gbGJlc3RhdHVzMS0+YmFja2VuZF9pZCAtIGxiZXN0YXR1czItPmJhY2tlbmRfaWQ7CisJ cmV0dXJuIGxiZXN0YXR1czEtPnByb2NfbnVtYmVyIC0gbGJlc3RhdHVzMi0+cHJvY19udW1i ZXI7CiB9CiAKIC8qIC0tLS0tLS0tLS0KLSAqIHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9iYWNr ZW5kX2lkKCkgLQorICogcGdzdGF0X2dldF9iZWVudHJ5X2J5X3Byb2NfbnVtYmVyKCkgLQog ICoKICAqCVN1cHBvcnQgZnVuY3Rpb24gZm9yIHRoZSBTUUwtY2FsbGFibGUgcGdzdGF0KiBm dW5jdGlvbnMuIFJldHVybnMKICAqCW91ciBsb2NhbCBjb3B5IG9mIHRoZSBjdXJyZW50LWFj dGl2aXR5IGVudHJ5IGZvciBvbmUgYmFja2VuZCwKICAqCW9yIE5VTEwgaWYgdGhlIGdpdmVu IGJlaWQgZG9lc24ndCBpZGVudGlmeSBhbnkga25vd24gc2Vzc2lvbi4KICAqCi0gKglUaGUg YmVpZCBhcmd1bWVudCBpcyB0aGUgQmFja2VuZElkIG9mIHRoZSBkZXNpcmVkIHNlc3Npb24K KyAqCVRoZSBhcmd1bWVudCBpcyB0aGUgUHJvY051bWJlciBvZiB0aGUgZGVzaXJlZCBzZXNz aW9uCiAgKgkobm90ZSB0aGF0IHRoaXMgaXMgdW5saWtlIHBnc3RhdF9nZXRfbG9jYWxfYmVl bnRyeV9ieV9pbmRleCgpKS4KICAqCiAgKglOQjogY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZv ciBhIGNoZWNrIGlmIHRoZSB1c2VyIGlzIHBlcm1pdHRlZCB0byBzZWUKQEAgLTEwNzAsOSAr MTA3MCw5IEBAIGNtcF9sYmVzdGF0dXMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikK ICAqIC0tLS0tLS0tLS0KICAqLwogUGdCYWNrZW5kU3RhdHVzICoKLXBnc3RhdF9nZXRfYmVl bnRyeV9ieV9iYWNrZW5kX2lkKEJhY2tlbmRJZCBiZWlkKQorcGdzdGF0X2dldF9iZWVudHJ5 X2J5X3Byb2NfbnVtYmVyKFByb2NOdW1iZXIgcHJvY051bWJlcikKIHsKLQlMb2NhbFBnQmFj a2VuZFN0YXR1cyAqcmV0ID0gcGdzdGF0X2dldF9sb2NhbF9iZWVudHJ5X2J5X2JhY2tlbmRf aWQoYmVpZCk7CisJTG9jYWxQZ0JhY2tlbmRTdGF0dXMgKnJldCA9IHBnc3RhdF9nZXRfbG9j YWxfYmVlbnRyeV9ieV9wcm9jX251bWJlcihwcm9jTnVtYmVyKTsKIAogCWlmIChyZXQpCiAJ CXJldHVybiAmcmV0LT5iYWNrZW5kU3RhdHVzOwpAQCAtMTA4MiwxMiArMTA4MiwxMiBAQCBw Z3N0YXRfZ2V0X2JlZW50cnlfYnlfYmFja2VuZF9pZChCYWNrZW5kSWQgYmVpZCkKIAogCiAv KiAtLS0tLS0tLS0tCi0gKiBwZ3N0YXRfZ2V0X2xvY2FsX2JlZW50cnlfYnlfYmFja2VuZF9p ZCgpIC0KKyAqIHBnc3RhdF9nZXRfbG9jYWxfYmVlbnRyeV9ieV9wcm9jX251bWJlcigpIC0K ICAqCi0gKglMaWtlIHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9iYWNrZW5kX2lkKCkgYnV0IHdp dGggbG9jYWxseSBjb21wdXRlZCBhZGRpdGlvbnMKKyAqCUxpa2UgcGdzdGF0X2dldF9iZWVu dHJ5X2J5X3Byb2NfbnVtYmVyKCkgYnV0IHdpdGggbG9jYWxseSBjb21wdXRlZCBhZGRpdGlv bnMKICAqCShsaWtlIHhpZCBhbmQgeG1pbiB2YWx1ZXMgb2YgdGhlIGJhY2tlbmQpCiAgKgot ICoJVGhlIGJlaWQgYXJndW1lbnQgaXMgdGhlIEJhY2tlbmRJZCBvZiB0aGUgZGVzaXJlZCBz ZXNzaW9uCisgKglUaGUgYXJndW1lbnQgaXMgdGhlIFByb2NOdW1iZXIgb2YgdGhlIGRlc2ly ZWQgc2Vzc2lvbgogICoJKG5vdGUgdGhhdCB0aGlzIGlzIHVubGlrZSBwZ3N0YXRfZ2V0X2xv Y2FsX2JlZW50cnlfYnlfaW5kZXgoKSkuCiAgKgogICoJTkI6IGNhbGxlciBpcyByZXNwb25z aWJsZSBmb3IgY2hlY2tpbmcgaWYgdGhlIHVzZXIgaXMgcGVybWl0dGVkIHRvIHNlZSB0aGlz CkBAIC0xMDk1LDcgKzEwOTUsNyBAQCBwZ3N0YXRfZ2V0X2JlZW50cnlfYnlfYmFja2VuZF9p ZChCYWNrZW5kSWQgYmVpZCkKICAqIC0tLS0tLS0tLS0KICAqLwogTG9jYWxQZ0JhY2tlbmRT dGF0dXMgKgotcGdzdGF0X2dldF9sb2NhbF9iZWVudHJ5X2J5X2JhY2tlbmRfaWQoQmFja2Vu ZElkIGJlaWQpCitwZ3N0YXRfZ2V0X2xvY2FsX2JlZW50cnlfYnlfcHJvY19udW1iZXIoUHJv Y051bWJlciBwcm9jTnVtYmVyKQogewogCUxvY2FsUGdCYWNrZW5kU3RhdHVzIGtleTsKIApA QCAtMTEwNSw3ICsxMTA1LDcgQEAgcGdzdGF0X2dldF9sb2NhbF9iZWVudHJ5X2J5X2JhY2tl bmRfaWQoQmFja2VuZElkIGJlaWQpCiAJICogU2luY2UgdGhlIGxvY2FsQmFja2VuZFN0YXR1 c1RhYmxlIGlzIGluIG9yZGVyIGJ5IGJhY2tlbmRfaWQsIHdlIGNhbiB1c2UKIAkgKiBic2Vh cmNoKCkgdG8gc2VhcmNoIGl0IGVmZmljaWVudGx5LgogCSAqLwotCWtleS5iYWNrZW5kX2lk ID0gYmVpZDsKKwlrZXkucHJvY19udW1iZXIgPSBwcm9jTnVtYmVyOwogCXJldHVybiBic2Vh cmNoKCZrZXksIGxvY2FsQmFja2VuZFN0YXR1c1RhYmxlLCBsb2NhbE51bUJhY2tlbmRzLAog CQkJCSAgIHNpemVvZihMb2NhbFBnQmFja2VuZFN0YXR1cyksIGNtcF9sYmVzdGF0dXMpOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5jCmluZGV4IDJkZjAyNWQ1MGFhLi4zZTg1MTAzMjc4 NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYwpAQCAtMzA2LDcgKzMwNiw3IEBAIHBnX3Rh Ymxlc3BhY2Vfc2l6ZV9uYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKiBpcyBubyBjaGVjayBo ZXJlIG9yIGF0IHRoZSBjYWxsIHNpdGVzIGZvciB0aGF0LgogICovCiBzdGF0aWMgaW50NjQK LWNhbGN1bGF0ZV9yZWxhdGlvbl9zaXplKFJlbEZpbGVMb2NhdG9yICpyZm4sIEJhY2tlbmRJ ZCBiYWNrZW5kLCBGb3JrTnVtYmVyIGZvcmtudW0pCitjYWxjdWxhdGVfcmVsYXRpb25fc2l6 ZShSZWxGaWxlTG9jYXRvciAqcmZuLCBQcm9jTnVtYmVyIGJhY2tlbmQsIEZvcmtOdW1iZXIg Zm9ya251bSkKIHsKIAlpbnQ2NAkJdG90YWxzaXplID0gMDsKIAljaGFyCSAgICpyZWxhdGlv bnBhdGg7CkBAIC05NTEsNyArOTUxLDcgQEAgcGdfcmVsYXRpb25fZmlsZXBhdGgoUEdfRlVO Q1RJT05fQVJHUykKIAlIZWFwVHVwbGUJdHVwbGU7CiAJRm9ybV9wZ19jbGFzcyByZWxmb3Jt OwogCVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwotCUJhY2tlbmRJZAliYWNrZW5kOworCVBy b2NOdW1iZXIJYmFja2VuZDsKIAljaGFyCSAgICpwYXRoOwogCiAJdHVwbGUgPSBTZWFyY2hT eXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CkBAIC05OTYsMjEg Kzk5NiwyMSBAQCBwZ19yZWxhdGlvbl9maWxlcGF0aChQR19GVU5DVElPTl9BUkdTKQogCXsK IAkJY2FzZSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRDoKIAkJY2FzZSBSRUxQRVJTSVNURU5D RV9QRVJNQU5FTlQ6Ci0JCQliYWNrZW5kID0gSW52YWxpZEJhY2tlbmRJZDsKKwkJCWJhY2tl bmQgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQkJYnJlYWs7CiAJCWNhc2UgUkVMUEVSU0lT VEVOQ0VfVEVNUDoKIAkJCWlmIChpc1RlbXBPclRlbXBUb2FzdE5hbWVzcGFjZShyZWxmb3Jt LT5yZWxuYW1lc3BhY2UpKQotCQkJCWJhY2tlbmQgPSBCYWNrZW5kSWRGb3JUZW1wUmVsYXRp b25zKCk7CisJCQkJYmFja2VuZCA9IFByb2NOdW1iZXJGb3JUZW1wUmVsYXRpb25zKCk7CiAJ CQllbHNlCiAJCQl7CiAJCQkJLyogRG8gaXQgdGhlIGhhcmQgd2F5LiAqLwotCQkJCWJhY2tl bmQgPSBHZXRUZW1wTmFtZXNwYWNlQmFja2VuZElkKHJlbGZvcm0tPnJlbG5hbWVzcGFjZSk7 Ci0JCQkJQXNzZXJ0KGJhY2tlbmQgIT0gSW52YWxpZEJhY2tlbmRJZCk7CisJCQkJYmFja2Vu ZCA9IEdldFRlbXBOYW1lc3BhY2VQcm9jTnVtYmVyKHJlbGZvcm0tPnJlbG5hbWVzcGFjZSk7 CisJCQkJQXNzZXJ0KGJhY2tlbmQgIT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAJCQl9CiAJ CQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJpbnZhbGlkIHJlbHBlcnNp c3RlbmNlOiAlYyIsIHJlbGZvcm0tPnJlbHBlcnNpc3RlbmNlKTsKLQkJCWJhY2tlbmQgPSBJ bnZhbGlkQmFja2VuZElkOyAvKiBwbGFjYXRlIGNvbXBpbGVyICovCisJCQliYWNrZW5kID0g SU5WQUxJRF9QUk9DX05VTUJFUjsJLyogcGxhY2F0ZSBjb21waWxlciAqLwogCQkJYnJlYWs7 CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKaW5kZXggYmJlNWNjMDgwNmUu Ljg2MjQ0NzBiMWQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCkBAIC03Mywx NSArNzMsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QKICAqIFRoaXMgaXMgY3VycmVudGx5IG9ubHkg dXNlZCBpbiBwZ19sb2NrX3N0YXR1cywgc28gd2UgcHV0IGl0IGhlcmUuCiAgKi8KIHN0YXRp YyBEYXR1bQotVlhJREdldERhdHVtKEJhY2tlbmRJZCBiaWQsIExvY2FsVHJhbnNhY3Rpb25J ZCBseGlkKQorVlhJREdldERhdHVtKFByb2NOdW1iZXIgcHJvY051bWJlciwgTG9jYWxUcmFu c2FjdGlvbklkIGx4aWQpCiB7CiAJLyoKLQkgKiBUaGUgcmVwcmVzZW50YXRpb24gaXMgIjxi aWQ+LzxseGlkPiIsIGRlY2ltYWwgYW5kIHVuc2lnbmVkIGRlY2ltYWwKLQkgKiByZXNwZWN0 aXZlbHkuICBOb3RlIHRoYXQgZWxvZy5jIGFsc28ga25vd3MgaG93IHRvIGZvcm1hdCBhIHZ4 aWQuCisJICogVGhlIHJlcHJlc2VudGF0aW9uIGlzICI8cHJvY051bWJlcj4vPGx4aWQ+Iiwg ZGVjaW1hbCBhbmQgdW5zaWduZWQKKwkgKiBkZWNpbWFsIHJlc3BlY3RpdmVseS4gIE5vdGUg dGhhdCBlbG9nLmMgYWxzbyBrbm93cyBob3cgdG8gZm9ybWF0IGEKKwkgKiB2eGlkLgogCSAq LwogCWNoYXIJCXZ4aWRzdHJbMzJdOwogCi0Jc25wcmludGYodnhpZHN0ciwgc2l6ZW9mKHZ4 aWRzdHIpLCAiJWQvJXUiLCBiaWQsIGx4aWQpOworCXNucHJpbnRmKHZ4aWRzdHIsIHNpemVv Zih2eGlkc3RyKSwgIiVkLyV1IiwgcHJvY051bWJlciwgbHhpZCk7CiAKIAlyZXR1cm4gQ1N0 cmluZ0dldFRleHREYXR1bSh2eGlkc3RyKTsKIH0KQEAgLTM1Myw3ICszNTQsNyBAQCBwZ19s b2NrX3N0YXR1cyhQR19GVU5DVElPTl9BUkdTKQogCQkJCWJyZWFrOwogCQl9CiAKLQkJdmFs dWVzWzEwXSA9IFZYSURHZXREYXR1bShpbnN0YW5jZS0+dnhpZC5iYWNrZW5kSWQsIGluc3Rh bmNlLT52eGlkLmxvY2FsVHJhbnNhY3Rpb25JZCk7CisJCXZhbHVlc1sxMF0gPSBWWElER2V0 RGF0dW0oaW5zdGFuY2UtPnZ4aWQucHJvY051bWJlciwgaW5zdGFuY2UtPnZ4aWQubG9jYWxU cmFuc2FjdGlvbklkKTsKIAkJaWYgKGluc3RhbmNlLT5waWQgIT0gMCkKIAkJCXZhbHVlc1sx MV0gPSBJbnQzMkdldERhdHVtKGluc3RhbmNlLT5waWQpOwogCQllbHNlCkBAIC00MTksNyAr NDIwLDcgQEAgcGdfbG9ja19zdGF0dXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJbnVsbHNbOV0g PSB0cnVlOwkJLyogb2Jqc3ViaWQgKi8KIAogCQkvKiBsb2NrIGhvbGRlciAqLwotCQl2YWx1 ZXNbMTBdID0gVlhJREdldERhdHVtKHhhY3QtPnZ4aWQuYmFja2VuZElkLAorCQl2YWx1ZXNb MTBdID0gVlhJREdldERhdHVtKHhhY3QtPnZ4aWQucHJvY051bWJlciwKIAkJCQkJCQkJICB4 YWN0LT52eGlkLmxvY2FsVHJhbnNhY3Rpb25JZCk7CiAJCWlmICh4YWN0LT5waWQgIT0gMCkK IAkJCXZhbHVlc1sxMV0gPSBJbnQzMkdldERhdHVtKHhhY3QtPnBpZCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvbWN4dGZ1bmNzLmMKaW5kZXggYTcyNjdkYzE1ZDEuLmMyOTMyMGIzNzg1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCkBAIC0xNDYsNyArMTQ2LDcgQEAgcGdfbG9n X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJaW50CQkJ cGlkID0gUEdfR0VUQVJHX0lOVDMyKDApOwogCVBHUFJPQwkgICAqcHJvYzsKLQlCYWNrZW5k SWQJYmFja2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKKwlQcm9jTnVtYmVyCXByb2NOdW1i ZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCiAJLyoKIAkgKiBTZWUgaWYgdGhlIHByb2Nl c3Mgd2l0aCBnaXZlbiBwaWQgaXMgYSBiYWNrZW5kIG9yIGFuIGF1eGlsaWFyeSBwcm9jZXNz LgpAQCAtMTc1LDkgKzE3NSw4IEBAIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhQ R19GVU5DVElPTl9BUkdTKQogCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CiAJfQogCi0JaWYg KHByb2MgIT0gTlVMTCkKLQkJYmFja2VuZElkID0gR2V0QmFja2VuZElkRnJvbVBHUHJvYyhw cm9jKTsKLQlpZiAoU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX0xPR19NRU1PUllfQ09O VEVYVCwgYmFja2VuZElkKSA8IDApCisJcHJvY051bWJlciA9IEdldE51bWJlckZyb21QR1By b2MocHJvYyk7CisJaWYgKFNlbmRQcm9jU2lnbmFsKHBpZCwgUFJPQ1NJR19MT0dfTUVNT1JZ X0NPTlRFWFQsIHByb2NOdW1iZXIpIDwgMCkKIAl7CiAJCS8qIEFnYWluLCBqdXN0IGEgd2Fy bmluZyB0byBhbGxvdyBsb29wcyAqLwogCQllcmVwb3J0KFdBUk5JTkcsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IDMwYTIwNjM1MDU3Li5kMWU5YWE4MjkwZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTIxMyw3ICsyMTMsNyBA QCBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCS8qIGRv IHdoZW4gdGhlcmUgaXMgbW9yZSBsZWZ0IHRvIHNlbmQgKi8KIAkJTG9jYWxQZ0JhY2tlbmRT dGF0dXMgKmxvY2FsX2JlZW50cnkgPSBwZ3N0YXRfZ2V0X2xvY2FsX2JlZW50cnlfYnlfaW5k ZXgoZmN0eFswXSk7CiAKLQkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIEludDMyR2V0RGF0 dW0obG9jYWxfYmVlbnRyeS0+YmFja2VuZF9pZCkpOworCQlTUkZfUkVUVVJOX05FWFQoZnVu Y2N0eCwgSW50MzJHZXREYXR1bShsb2NhbF9iZWVudHJ5LT5wcm9jX251bWJlcikpOwogCX0K IAllbHNlCiAJewpAQCAtNjY5LDEwICs2NjksMTAgQEAgcGdfYmFja2VuZF9waWQoUEdfRlVO Q1RJT05fQVJHUykKIERhdHVtCiBwZ19zdGF0X2dldF9iYWNrZW5kX3BpZChQR19GVU5DVElP Tl9BUkdTKQogewotCWludDMyCQliZWlkID0gUEdfR0VUQVJHX0lOVDMyKDApOworCWludDMy CQlwcm9jTnVtYmVyID0gUEdfR0VUQVJHX0lOVDMyKDApOwogCVBnQmFja2VuZFN0YXR1cyAq YmVlbnRyeTsKIAotCWlmICgoYmVlbnRyeSA9IHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9iYWNr ZW5kX2lkKGJlaWQpKSA9PSBOVUxMKQorCWlmICgoYmVlbnRyeSA9IHBnc3RhdF9nZXRfYmVl bnRyeV9ieV9wcm9jX251bWJlcihwcm9jTnVtYmVyKSkgPT0gTlVMTCkKIAkJUEdfUkVUVVJO X05VTEwoKTsKIAogCVBHX1JFVFVSTl9JTlQzMihiZWVudHJ5LT5zdF9wcm9jcGlkKTsKQEAg LTY4MiwxMCArNjgyLDEwIEBAIHBnX3N0YXRfZ2V0X2JhY2tlbmRfcGlkKFBHX0ZVTkNUSU9O X0FSR1MpCiBEYXR1bQogcGdfc3RhdF9nZXRfYmFja2VuZF9kYmlkKFBHX0ZVTkNUSU9OX0FS R1MpCiB7Ci0JaW50MzIJCWJlaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJaW50MzIJCXBy b2NOdW1iZXIgPSBQR19HRVRBUkdfSU5UMzIoMCk7CiAJUGdCYWNrZW5kU3RhdHVzICpiZWVu dHJ5OwogCi0JaWYgKChiZWVudHJ5ID0gcGdzdGF0X2dldF9iZWVudHJ5X2J5X2JhY2tlbmRf aWQoYmVpZCkpID09IE5VTEwpCisJaWYgKChiZWVudHJ5ID0gcGdzdGF0X2dldF9iZWVudHJ5 X2J5X3Byb2NfbnVtYmVyKHByb2NOdW1iZXIpKSA9PSBOVUxMKQogCQlQR19SRVRVUk5fTlVM TCgpOwogCiAJUEdfUkVUVVJOX09JRChiZWVudHJ5LT5zdF9kYXRhYmFzZWlkKTsKQEAgLTY5 NSwxMCArNjk1LDEwIEBAIHBnX3N0YXRfZ2V0X2JhY2tlbmRfZGJpZChQR19GVU5DVElPTl9B UkdTKQogRGF0dW0KIHBnX3N0YXRfZ2V0X2JhY2tlbmRfdXNlcmlkKFBHX0ZVTkNUSU9OX0FS R1MpCiB7Ci0JaW50MzIJCWJlaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJaW50MzIJCXBy b2NOdW1iZXIgPSBQR19HRVRBUkdfSU5UMzIoMCk7CiAJUGdCYWNrZW5kU3RhdHVzICpiZWVu dHJ5OwogCi0JaWYgKChiZWVudHJ5ID0gcGdzdGF0X2dldF9iZWVudHJ5X2J5X2JhY2tlbmRf aWQoYmVpZCkpID09IE5VTEwpCisJaWYgKChiZWVudHJ5ID0gcGdzdGF0X2dldF9iZWVudHJ5 X2J5X3Byb2NfbnVtYmVyKHByb2NOdW1iZXIpKSA9PSBOVUxMKQogCQlQR19SRVRVUk5fTlVM TCgpOwogCiAJUEdfUkVUVVJOX09JRChiZWVudHJ5LT5zdF91c2VyaWQpOwpAQCAtNzExLDcg KzcxMSw3IEBAIHBnX3N0YXRfZ2V0X2JhY2tlbmRfc3VieGFjdChQR19GVU5DVElPTl9BUkdT KQogCVR1cGxlRGVzYwl0dXBkZXNjOwogCURhdHVtCQl2YWx1ZXNbUEdfU1RBVF9HRVRfU1VC WEFDVF9DT0xTXSA9IHswfTsKIAlib29sCQludWxsc1tQR19TVEFUX0dFVF9TVUJYQUNUX0NP TFNdID0gezB9OwotCWludDMyCQliZWlkID0gUEdfR0VUQVJHX0lOVDMyKDApOworCWludDMy CQlwcm9jTnVtYmVyID0gUEdfR0VUQVJHX0lOVDMyKDApOwogCUxvY2FsUGdCYWNrZW5kU3Rh dHVzICpsb2NhbF9iZWVudHJ5OwogCiAJLyogSW5pdGlhbGlzZSBhdHRyaWJ1dGVzIGluZm9y bWF0aW9uIGluIHRoZSB0dXBsZSBkZXNjcmlwdG9yICovCkBAIC03MjMsNyArNzIzLDcgQEAg cGdfc3RhdF9nZXRfYmFja2VuZF9zdWJ4YWN0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlCbGVz c1R1cGxlRGVzYyh0dXBkZXNjKTsKIAotCWlmICgobG9jYWxfYmVlbnRyeSA9IHBnc3RhdF9n ZXRfbG9jYWxfYmVlbnRyeV9ieV9iYWNrZW5kX2lkKGJlaWQpKSAhPSBOVUxMKQorCWlmICgo bG9jYWxfYmVlbnRyeSA9IHBnc3RhdF9nZXRfbG9jYWxfYmVlbnRyeV9ieV9wcm9jX251bWJl cihwcm9jTnVtYmVyKSkgIT0gTlVMTCkKIAl7CiAJCS8qIEZpbGwgdmFsdWVzIGFuZCBOVUxM cyAqLwogCQl2YWx1ZXNbMF0gPSBJbnQzMkdldERhdHVtKGxvY2FsX2JlZW50cnktPmJhY2tl bmRfc3VieGFjdF9jb3VudCk7CkBAIC03NDIsMTMgKzc0MiwxMyBAQCBwZ19zdGF0X2dldF9i YWNrZW5kX3N1YnhhY3QoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBwZ19zdGF0X2dldF9i YWNrZW5kX2FjdGl2aXR5KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JaW50MzIJCWJlaWQgPSBQ R19HRVRBUkdfSU5UMzIoMCk7CisJaW50MzIJCXByb2NOdW1iZXIgPSBQR19HRVRBUkdfSU5U MzIoMCk7CiAJUGdCYWNrZW5kU3RhdHVzICpiZWVudHJ5OwogCWNvbnN0IGNoYXIgKmFjdGl2 aXR5OwogCWNoYXIJICAgKmNsaXBwZWRfYWN0aXZpdHk7CiAJdGV4dAkgICAqcmV0OwogCi0J aWYgKChiZWVudHJ5ID0gcGdzdGF0X2dldF9iZWVudHJ5X2J5X2JhY2tlbmRfaWQoYmVpZCkp ID09IE5VTEwpCisJaWYgKChiZWVudHJ5ID0gcGdzdGF0X2dldF9iZWVudHJ5X2J5X3Byb2Nf bnVtYmVyKHByb2NOdW1iZXIpKSA9PSBOVUxMKQogCQlhY3Rpdml0eSA9ICI8YmFja2VuZCBp bmZvcm1hdGlvbiBub3QgYXZhaWxhYmxlPiI7CiAJZWxzZSBpZiAoIUhBU19QR1NUQVRfUEVS TUlTU0lPTlMoYmVlbnRyeS0+c3RfdXNlcmlkKSkKIAkJYWN0aXZpdHkgPSAiPGluc3VmZmlj aWVudCBwcml2aWxlZ2U+IjsKQEAgLTc2NywxMiArNzY3LDEyIEBAIHBnX3N0YXRfZ2V0X2Jh Y2tlbmRfYWN0aXZpdHkoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBwZ19zdGF0X2dldF9i YWNrZW5kX3dhaXRfZXZlbnRfdHlwZShQR19GVU5DVElPTl9BUkdTKQogewotCWludDMyCQli ZWlkID0gUEdfR0VUQVJHX0lOVDMyKDApOworCWludDMyCQlwcm9jTnVtYmVyID0gUEdfR0VU QVJHX0lOVDMyKDApOwogCVBnQmFja2VuZFN0YXR1cyAqYmVlbnRyeTsKIAlQR1BST0MJICAg KnByb2M7CiAJY29uc3QgY2hhciAqd2FpdF9ldmVudF90eXBlID0gTlVMTDsKIAotCWlmICgo YmVlbnRyeSA9IHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9iYWNrZW5kX2lkKGJlaWQpKSA9PSBO VUxMKQorCWlmICgoYmVlbnRyeSA9IHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9wcm9jX251bWJl cihwcm9jTnVtYmVyKSkgPT0gTlVMTCkKIAkJd2FpdF9ldmVudF90eXBlID0gIjxiYWNrZW5k IGluZm9ybWF0aW9uIG5vdCBhdmFpbGFibGU+IjsKIAllbHNlIGlmICghSEFTX1BHU1RBVF9Q RVJNSVNTSU9OUyhiZWVudHJ5LT5zdF91c2VyaWQpKQogCQl3YWl0X2V2ZW50X3R5cGUgPSAi PGluc3VmZmljaWVudCBwcml2aWxlZ2U+IjsKQEAgLTc4OCwxMiArNzg4LDEyIEBAIHBnX3N0 YXRfZ2V0X2JhY2tlbmRfd2FpdF9ldmVudF90eXBlKFBHX0ZVTkNUSU9OX0FSR1MpCiBEYXR1 bQogcGdfc3RhdF9nZXRfYmFja2VuZF93YWl0X2V2ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiB7 Ci0JaW50MzIJCWJlaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJaW50MzIJCXByb2NOdW1i ZXIgPSBQR19HRVRBUkdfSU5UMzIoMCk7CiAJUGdCYWNrZW5kU3RhdHVzICpiZWVudHJ5Owog CVBHUFJPQwkgICAqcHJvYzsKIAljb25zdCBjaGFyICp3YWl0X2V2ZW50ID0gTlVMTDsKIAot CWlmICgoYmVlbnRyeSA9IHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9iYWNrZW5kX2lkKGJlaWQp KSA9PSBOVUxMKQorCWlmICgoYmVlbnRyeSA9IHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9wcm9j X251bWJlcihwcm9jTnVtYmVyKSkgPT0gTlVMTCkKIAkJd2FpdF9ldmVudCA9ICI8YmFja2Vu ZCBpbmZvcm1hdGlvbiBub3QgYXZhaWxhYmxlPiI7CiAJZWxzZSBpZiAoIUhBU19QR1NUQVRf UEVSTUlTU0lPTlMoYmVlbnRyeS0+c3RfdXNlcmlkKSkKIAkJd2FpdF9ldmVudCA9ICI8aW5z dWZmaWNpZW50IHByaXZpbGVnZT4iOwpAQCAtODEwLDExICs4MTAsMTEgQEAgcGdfc3RhdF9n ZXRfYmFja2VuZF93YWl0X2V2ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiBEYXR1bQogcGdfc3Rh dF9nZXRfYmFja2VuZF9hY3Rpdml0eV9zdGFydChQR19GVU5DVElPTl9BUkdTKQogewotCWlu dDMyCQliZWlkID0gUEdfR0VUQVJHX0lOVDMyKDApOworCWludDMyCQlwcm9jTnVtYmVyID0g UEdfR0VUQVJHX0lOVDMyKDApOwogCVRpbWVzdGFtcFR6IHJlc3VsdDsKIAlQZ0JhY2tlbmRT dGF0dXMgKmJlZW50cnk7CiAKLQlpZiAoKGJlZW50cnkgPSBwZ3N0YXRfZ2V0X2JlZW50cnlf YnlfYmFja2VuZF9pZChiZWlkKSkgPT0gTlVMTCkKKwlpZiAoKGJlZW50cnkgPSBwZ3N0YXRf Z2V0X2JlZW50cnlfYnlfcHJvY19udW1iZXIocHJvY051bWJlcikpID09IE5VTEwpCiAJCVBH X1JFVFVSTl9OVUxMKCk7CiAKIAllbHNlIGlmICghSEFTX1BHU1RBVF9QRVJNSVNTSU9OUyhi ZWVudHJ5LT5zdF91c2VyaWQpKQpAQCAtODM2LDExICs4MzYsMTEgQEAgcGdfc3RhdF9nZXRf YmFja2VuZF9hY3Rpdml0eV9zdGFydChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX3N0 YXRfZ2V0X2JhY2tlbmRfeGFjdF9zdGFydChQR19GVU5DVElPTl9BUkdTKQogewotCWludDMy CQliZWlkID0gUEdfR0VUQVJHX0lOVDMyKDApOworCWludDMyCQlwcm9jTnVtYmVyID0gUEdf R0VUQVJHX0lOVDMyKDApOwogCVRpbWVzdGFtcFR6IHJlc3VsdDsKIAlQZ0JhY2tlbmRTdGF0 dXMgKmJlZW50cnk7CiAKLQlpZiAoKGJlZW50cnkgPSBwZ3N0YXRfZ2V0X2JlZW50cnlfYnlf YmFja2VuZF9pZChiZWlkKSkgPT0gTlVMTCkKKwlpZiAoKGJlZW50cnkgPSBwZ3N0YXRfZ2V0 X2JlZW50cnlfYnlfcHJvY19udW1iZXIocHJvY051bWJlcikpID09IE5VTEwpCiAJCVBHX1JF VFVSTl9OVUxMKCk7CiAKIAllbHNlIGlmICghSEFTX1BHU1RBVF9QRVJNSVNTSU9OUyhiZWVu dHJ5LT5zdF91c2VyaWQpKQpAQCAtODU4LDExICs4NTgsMTEgQEAgcGdfc3RhdF9nZXRfYmFj a2VuZF94YWN0X3N0YXJ0KFBHX0ZVTkNUSU9OX0FSR1MpCiBEYXR1bQogcGdfc3RhdF9nZXRf YmFja2VuZF9zdGFydChQR19GVU5DVElPTl9BUkdTKQogewotCWludDMyCQliZWlkID0gUEdf R0VUQVJHX0lOVDMyKDApOworCWludDMyCQlwcm9jTnVtYmVyID0gUEdfR0VUQVJHX0lOVDMy KDApOwogCVRpbWVzdGFtcFR6IHJlc3VsdDsKIAlQZ0JhY2tlbmRTdGF0dXMgKmJlZW50cnk7 CiAKLQlpZiAoKGJlZW50cnkgPSBwZ3N0YXRfZ2V0X2JlZW50cnlfYnlfYmFja2VuZF9pZChi ZWlkKSkgPT0gTlVMTCkKKwlpZiAoKGJlZW50cnkgPSBwZ3N0YXRfZ2V0X2JlZW50cnlfYnlf cHJvY19udW1iZXIocHJvY051bWJlcikpID09IE5VTEwpCiAJCVBHX1JFVFVSTl9OVUxMKCk7 CiAKIAllbHNlIGlmICghSEFTX1BHU1RBVF9QRVJNSVNTSU9OUyhiZWVudHJ5LT5zdF91c2Vy aWQpKQpAQCAtODgwLDEzICs4ODAsMTMgQEAgcGdfc3RhdF9nZXRfYmFja2VuZF9zdGFydChQ R19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX3N0YXRfZ2V0X2JhY2tlbmRfY2xpZW50X2Fk ZHIoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlpbnQzMgkJYmVpZCA9IFBHX0dFVEFSR19JTlQz MigwKTsKKwlpbnQzMgkJcHJvY051bWJlciA9IFBHX0dFVEFSR19JTlQzMigwKTsKIAlQZ0Jh Y2tlbmRTdGF0dXMgKmJlZW50cnk7CiAJU29ja0FkZHIJemVyb19jbGllbnRhZGRyOwogCWNo YXIJCXJlbW90ZV9ob3N0W05JX01BWEhPU1RdOwogCWludAkJCXJldDsKIAotCWlmICgoYmVl bnRyeSA9IHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9iYWNrZW5kX2lkKGJlaWQpKSA9PSBOVUxM KQorCWlmICgoYmVlbnRyeSA9IHBnc3RhdF9nZXRfYmVlbnRyeV9ieV9wcm9jX251bWJlcihw cm9jTnVtYmVyKSkgPT0gTlVMTCkKIAkJUEdfUkVUVVJOX05VTEwoKTsKIAogCWVsc2UgaWYg KCFIQVNfUEdTVEFUX1BFUk1JU1NJT05TKGJlZW50cnktPnN0X3VzZXJpZCkpCkBAIC05MjUs MTMgKzkyNSwxMyBAQCBwZ19zdGF0X2dldF9iYWNrZW5kX2NsaWVudF9hZGRyKFBHX0ZVTkNU SU9OX0FSR1MpCiBEYXR1bQogcGdfc3RhdF9nZXRfYmFja2VuZF9jbGllbnRfcG9ydChQR19G VU5DVElPTl9BUkdTKQogewotCWludDMyCQliZWlkID0gUEdfR0VUQVJHX0lOVDMyKDApOwor CWludDMyCQlwcm9jTnVtYmVyID0gUEdfR0VUQVJHX0lOVDMyKDApOwogCVBnQmFja2VuZFN0 YXR1cyAqYmVlbnRyeTsKIAlTb2NrQWRkcgl6ZXJvX2NsaWVudGFkZHI7CiAJY2hhcgkJcmVt b3RlX3BvcnRbTklfTUFYU0VSVl07CiAJaW50CQkJcmV0OwogCi0JaWYgKChiZWVudHJ5ID0g cGdzdGF0X2dldF9iZWVudHJ5X2J5X2JhY2tlbmRfaWQoYmVpZCkpID09IE5VTEwpCisJaWYg KChiZWVudHJ5ID0gcGdzdGF0X2dldF9iZWVudHJ5X2J5X3Byb2NfbnVtYmVyKHByb2NOdW1i ZXIpKSA9PSBOVUxMKQogCQlQR19SRVRVUk5fTlVMTCgpOwogCiAJZWxzZSBpZiAoIUhBU19Q R1NUQVRfUEVSTUlTU0lPTlMoYmVlbnRyeS0+c3RfdXNlcmlkKSkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9pbnZhbC5jCmluZGV4IGY1OWIwN2E3MGY4Li44MTZiODgzYjZkYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvaW52YWwuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9pbnZhbC5jCkBAIC0xNDUzLDggKzE0NTMsOCBAQCBDYWNoZUludmFsaWRhdGVS ZWxjYWNoZUJ5UmVsaWQoT2lkIHJlbGlkKQogICogcmVwbGF5aW5nIFdBTCBhcyB3ZWxsIGFz IHdoZW4gY3JlYXRpbmcgaXQuCiAgKgogICogTm90ZTogSW4gb3JkZXIgdG8gYXZvaWQgYmxv YXRpbmcgU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSwgd2Ugc3RvcmUgb25seQotICogdGhy ZWUgYnl0ZXMgb2YgdGhlIGJhY2tlbmQgSUQgdXNpbmcgd2hhdCB3b3VsZCBvdGhlcndpc2Ug YmUgcGFkZGluZyBzcGFjZS4KLSAqIFRodXMsIHRoZSBtYXhpbXVtIHBvc3NpYmxlIGJhY2tl bmQgSUQgaXMgMl4yMy0xLgorICogdGhyZWUgYnl0ZXMgb2YgdGhlIFByb2NOdW1iZXIgdXNp bmcgd2hhdCB3b3VsZCBvdGhlcndpc2UgYmUgcGFkZGluZyBzcGFjZS4KKyAqIFRodXMsIHRo ZSBtYXhpbXVtIHBvc3NpYmxlIFByb2NOdW1iZXIgaXMgMl4yMy0xLgogICovCiB2b2lkCiBD YWNoZUludmFsaWRhdGVTbWdyKFJlbEZpbGVMb2NhdG9yQmFja2VuZCBybG9jYXRvcikKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDUwYWNhZTQ1Mjk4Li4zN2MzN2Rm NTZjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC0xMTQ0LDEzICsx MTQ0LDEzIEBAIHJldHJ5OgogCXsKIAkJY2FzZSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRDoK IAkJY2FzZSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQ6Ci0JCQlyZWxhdGlvbi0+cmRfYmFj a2VuZCA9IEludmFsaWRCYWNrZW5kSWQ7CisJCQlyZWxhdGlvbi0+cmRfYmFja2VuZCA9IElO VkFMSURfUFJPQ19OVU1CRVI7CiAJCQlyZWxhdGlvbi0+cmRfaXNsb2NhbHRlbXAgPSBmYWxz ZTsKIAkJCWJyZWFrOwogCQljYXNlIFJFTFBFUlNJU1RFTkNFX1RFTVA6CiAJCQlpZiAoaXNU ZW1wT3JUZW1wVG9hc3ROYW1lc3BhY2UocmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNwYWNl KSkKIAkJCXsKLQkJCQlyZWxhdGlvbi0+cmRfYmFja2VuZCA9IEJhY2tlbmRJZEZvclRlbXBS ZWxhdGlvbnMoKTsKKwkJCQlyZWxhdGlvbi0+cmRfYmFja2VuZCA9IFByb2NOdW1iZXJGb3JU ZW1wUmVsYXRpb25zKCk7CiAJCQkJcmVsYXRpb24tPnJkX2lzbG9jYWx0ZW1wID0gdHJ1ZTsK IAkJCX0KIAkJCWVsc2UKQEAgLTExNTksMTggKzExNTksMTggQEAgcmV0cnk6CiAJCQkJICog SWYgaXQncyBhIHRlbXAgdGFibGUsIGJ1dCBub3Qgb25lIG9mIG91cnMsIHdlIGhhdmUgdG8g dXNlCiAJCQkJICogdGhlIHNsb3csIGdyb3R0eSBtZXRob2QgdG8gZmlndXJlIG91dCB0aGUg b3duaW5nIGJhY2tlbmQuCiAJCQkJICoKLQkJCQkgKiBOb3RlOiBpdCdzIHBvc3NpYmxlIHRo YXQgcmRfYmFja2VuZCBnZXRzIHNldCB0byBNeUJhY2tlbmRJZAotCQkJCSAqIGhlcmUsIGlu IGNhc2Ugd2UgYXJlIGxvb2tpbmcgYXQgYSBwZ19jbGFzcyBlbnRyeSBsZWZ0IG92ZXIKLQkJ CQkgKiBmcm9tIGEgY3Jhc2hlZCBiYWNrZW5kIHRoYXQgY29pbmNpZGVudGFsbHkgaGFkIHRo ZSBzYW1lCi0JCQkJICogQmFja2VuZElkIHdlJ3JlIHVzaW5nLiAgV2Ugc2hvdWxkICpub3Qq IGNvbnNpZGVyIHN1Y2ggYQotCQkJCSAqIHRhYmxlIHRvIGJlICJvdXJzIjsgdGhpcyBpcyB3 aHkgd2UgbmVlZCB0aGUgc2VwYXJhdGUKLQkJCQkgKiByZF9pc2xvY2FsdGVtcCBmbGFnLiAg VGhlIHBnX2NsYXNzIGVudHJ5IHdpbGwgZ2V0IGZsdXNoZWQKLQkJCQkgKiBpZi93aGVuIHdl IGNsZWFuIG91dCB0aGUgY29ycmVzcG9uZGluZyB0ZW1wIHRhYmxlIG5hbWVzcGFjZQotCQkJ CSAqIGluIHByZXBhcmF0aW9uIGZvciB1c2luZyBpdC4KKwkJCQkgKiBOb3RlOiBpdCdzIHBv c3NpYmxlIHRoYXQgcmRfYmFja2VuZCBnZXRzIHNldCB0bworCQkJCSAqIE15UHJvY051bWJl ciBoZXJlLCBpbiBjYXNlIHdlIGFyZSBsb29raW5nIGF0IGEgcGdfY2xhc3MKKwkJCQkgKiBl bnRyeSBsZWZ0IG92ZXIgZnJvbSBhIGNyYXNoZWQgYmFja2VuZCB0aGF0IGNvaW5jaWRlbnRh bGx5CisJCQkJICogaGFkIHRoZSBzYW1lIFByb2NOdW1iZXIgd2UncmUgdXNpbmcuICBXZSBz aG91bGQgKm5vdCoKKwkJCQkgKiBjb25zaWRlciBzdWNoIGEgdGFibGUgdG8gYmUgIm91cnMi OyB0aGlzIGlzIHdoeSB3ZSBuZWVkIHRoZQorCQkJCSAqIHNlcGFyYXRlIHJkX2lzbG9jYWx0 ZW1wIGZsYWcuICBUaGUgcGdfY2xhc3MgZW50cnkgd2lsbCBnZXQKKwkJCQkgKiBmbHVzaGVk IGlmL3doZW4gd2UgY2xlYW4gb3V0IHRoZSBjb3JyZXNwb25kaW5nIHRlbXAgdGFibGUKKwkJ CQkgKiBuYW1lc3BhY2UgaW4gcHJlcGFyYXRpb24gZm9yIHVzaW5nIGl0LgogCQkJCSAqLwog CQkJCXJlbGF0aW9uLT5yZF9iYWNrZW5kID0KLQkJCQkJR2V0VGVtcE5hbWVzcGFjZUJhY2tl bmRJZChyZWxhdGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2UpOwotCQkJCUFzc2VydChyZWxh dGlvbi0+cmRfYmFja2VuZCAhPSBJbnZhbGlkQmFja2VuZElkKTsKKwkJCQkJR2V0VGVtcE5h bWVzcGFjZVByb2NOdW1iZXIocmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlKTsKKwkJ CQlBc3NlcnQocmVsYXRpb24tPnJkX2JhY2tlbmQgIT0gSU5WQUxJRF9QUk9DX05VTUJFUik7 CiAJCQkJcmVsYXRpb24tPnJkX2lzbG9jYWx0ZW1wID0gZmFsc2U7CiAJCQl9CiAJCQlicmVh azsKQEAgLTE4OTYsNyArMTg5Niw3IEBAIGZvcm1yZGVzYyhjb25zdCBjaGFyICpyZWxhdGlv bk5hbWUsIE9pZCByZWxhdGlvblJlbHR5cGUsCiAJcmVsYXRpb24tPnJkX25ld1JlbGZpbGVs b2NhdG9yU3ViaWQgPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsKIAlyZWxhdGlvbi0+cmRf Zmlyc3RSZWxmaWxlbG9jYXRvclN1YmlkID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CiAJ cmVsYXRpb24tPnJkX2Ryb3BwZWRTdWJpZCA9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkOwot CXJlbGF0aW9uLT5yZF9iYWNrZW5kID0gSW52YWxpZEJhY2tlbmRJZDsKKwlyZWxhdGlvbi0+ cmRfYmFja2VuZCA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJcmVsYXRpb24tPnJkX2lzbG9j YWx0ZW1wID0gZmFsc2U7CiAKIAkvKgpAQCAtMzYxMSwxMiArMzYxMSwxMiBAQCBSZWxhdGlv bkJ1aWxkTG9jYWxSZWxhdGlvbihjb25zdCBjaGFyICpyZWxuYW1lLAogCXsKIAkJY2FzZSBS RUxQRVJTSVNURU5DRV9VTkxPR0dFRDoKIAkJY2FzZSBSRUxQRVJTSVNURU5DRV9QRVJNQU5F TlQ6Ci0JCQlyZWwtPnJkX2JhY2tlbmQgPSBJbnZhbGlkQmFja2VuZElkOworCQkJcmVsLT5y ZF9iYWNrZW5kID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJCXJlbC0+cmRfaXNsb2NhbHRl bXAgPSBmYWxzZTsKIAkJCWJyZWFrOwogCQljYXNlIFJFTFBFUlNJU1RFTkNFX1RFTVA6CiAJ CQlBc3NlcnQoaXNUZW1wT3JUZW1wVG9hc3ROYW1lc3BhY2UocmVsbmFtZXNwYWNlKSk7Ci0J CQlyZWwtPnJkX2JhY2tlbmQgPSBCYWNrZW5kSWRGb3JUZW1wUmVsYXRpb25zKCk7CisJCQly ZWwtPnJkX2JhY2tlbmQgPSBQcm9jTnVtYmVyRm9yVGVtcFJlbGF0aW9ucygpOwogCQkJcmVs LT5yZF9pc2xvY2FsdGVtcCA9IHRydWU7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2NzdmxvZy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvZXJyb3IvY3N2bG9nLmMKaW5kZXggMWQ0NGQ4YTZhMzEuLjk5YTNkODYyMjUwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9jc3Zsb2cuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9lcnJvci9jc3Zsb2cuYwpAQCAtMTUyLDggKzE1Miw4IEBAIHdyaXRl X2NzdmxvZyhFcnJvckRhdGEgKmVkYXRhKQogCiAJLyogVmlydHVhbCB0cmFuc2FjdGlvbiBp ZCAqLwogCS8qIGtlZXAgVlhJRCBmb3JtYXQgaW4gc3luYyB3aXRoIGxvY2tmdW5jcy5jICov Ci0JaWYgKE15UHJvYyAhPSBOVUxMICYmIE15UHJvYy0+dnhpZC5iYWNrZW5kSWQgIT0gSW52 YWxpZEJhY2tlbmRJZCkKLQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiJWQvJXUiLCBNeVBy b2MtPnZ4aWQuYmFja2VuZElkLCBNeVByb2MtPnZ4aWQubHhpZCk7CisJaWYgKE15UHJvYyAh PSBOVUxMICYmIE15UHJvYy0+dnhpZC5wcm9jTnVtYmVyICE9IElOVkFMSURfUFJPQ19OVU1C RVIpCisJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIiVkLyV1IiwgTXlQcm9jLT52eGlkLnBy b2NOdW1iZXIsIE15UHJvYy0+dnhpZC5seGlkKTsKIAlhcHBlbmRTdHJpbmdJbmZvQ2hhcigm YnVmLCAnLCcpOwogCiAJLyogVHJhbnNhY3Rpb24gaWQgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vs b2cuYwppbmRleCA4Y2YzNmNiY2UwNy4uMTBjY2ZlNzllZWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9lcnJv ci9lbG9nLmMKQEAgLTMwNzgsMTggKzMwNzgsMTggQEAgbG9nX3N0YXR1c19mb3JtYXQoU3Ry aW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKmZvcm1hdCwgRXJyb3JEYXRhICplZGF0YSkKIAkJ CQlicmVhazsKIAkJCWNhc2UgJ3YnOgogCQkJCS8qIGtlZXAgVlhJRCBmb3JtYXQgaW4gc3lu YyB3aXRoIGxvY2tmdW5jcy5jICovCi0JCQkJaWYgKE15UHJvYyAhPSBOVUxMICYmIE15UHJv Yy0+dnhpZC5iYWNrZW5kSWQgIT0gSW52YWxpZEJhY2tlbmRJZCkKKwkJCQlpZiAoTXlQcm9j ICE9IE5VTEwgJiYgTXlQcm9jLT52eGlkLnByb2NOdW1iZXIgIT0gSU5WQUxJRF9QUk9DX05V TUJFUikKIAkJCQl7CiAJCQkJCWlmIChwYWRkaW5nICE9IDApCiAJCQkJCXsKIAkJCQkJCWNo YXIJCXN0cmZidWZbMTI4XTsKIAogCQkJCQkJc25wcmludGYoc3RyZmJ1Ziwgc2l6ZW9mKHN0 cmZidWYpIC0gMSwgIiVkLyV1IiwKLQkJCQkJCQkJIE15UHJvYy0+dnhpZC5iYWNrZW5kSWQs IE15UHJvYy0+dnhpZC5seGlkKTsKKwkJCQkJCQkJIE15UHJvYy0+dnhpZC5wcm9jTnVtYmVy LCBNeVByb2MtPnZ4aWQubHhpZCk7CiAJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiUq cyIsIHBhZGRpbmcsIHN0cmZidWYpOwogCQkJCQl9CiAJCQkJCWVsc2UKLQkJCQkJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiJWQvJXUiLCBNeVByb2MtPnZ4aWQuYmFja2VuZElkLCBNeVBy b2MtPnZ4aWQubHhpZCk7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVkLyV1Iiwg TXlQcm9jLT52eGlkLnByb2NOdW1iZXIsIE15UHJvYy0+dnhpZC5seGlkKTsKIAkJCQl9CiAJ CQkJZWxzZSBpZiAocGFkZGluZyAhPSAwKQogCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3BhY2Vz KGJ1ZiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2pzb25sb2cuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2pzb25sb2cuYwppbmRleCAwNjdkOWUzMGIxNi4u ZDUyYzIxNDMwMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2pzb25s b2cuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9qc29ubG9nLmMKQEAgLTE5Nyw5 ICsxOTcsOSBAQCB3cml0ZV9qc29ubG9nKEVycm9yRGF0YSAqZWRhdGEpCiAKIAkvKiBWaXJ0 dWFsIHRyYW5zYWN0aW9uIGlkICovCiAJLyoga2VlcCBWWElEIGZvcm1hdCBpbiBzeW5jIHdp dGggbG9ja2Z1bmNzLmMgKi8KLQlpZiAoTXlQcm9jICE9IE5VTEwgJiYgTXlQcm9jLT52eGlk LmJhY2tlbmRJZCAhPSBJbnZhbGlkQmFja2VuZElkKQorCWlmIChNeVByb2MgIT0gTlVMTCAm JiBNeVByb2MtPnZ4aWQucHJvY051bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQlh cHBlbmRKU09OS2V5VmFsdWVGbXQoJmJ1ZiwgInZ4aWQiLCB0cnVlLCAiJWQvJXUiLAotCQkJ CQkJCSAgTXlQcm9jLT52eGlkLmJhY2tlbmRJZCwgTXlQcm9jLT52eGlkLmx4aWQpOworCQkJ CQkJCSAgTXlQcm9jLT52eGlkLnByb2NOdW1iZXIsIE15UHJvYy0+dnhpZC5seGlkKTsKIAog CS8qIFRyYW5zYWN0aW9uIGlkICovCiAJYXBwZW5kSlNPTktleVZhbHVlRm10KCZidWYsICJ0 eGlkIiwgZmFsc2UsICIldSIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0 L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IGYw MjRiMWE4NDk3Li5mNzY3MmJhYjlkYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9nbG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMK QEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJsaWJwcS9saWJwcS1iZS5oIgogI2luY2x1 ZGUgImxpYnBxL3BxY29tbS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgotI2luY2x1ZGUg InN0b3JhZ2UvYmFja2VuZGlkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVtYmVyLmgi CiAKIAogUHJvdG9jb2xWZXJzaW9uIEZyb250ZW5kUHJvdG9jb2w7CkBAIC04Myw5ICs4Myw5 IEBAIGNoYXIJCXBvc3RncmVzX2V4ZWNfcGF0aFtNQVhQR1BBVEhdOwkvKiBmdWxsIHBhdGgg dG8gYmFja2VuZCAqLwogLyogbm90ZTogY3VycmVudGx5IHRoaXMgaXMgbm90IHZhbGlkIGlu IGJhY2tlbmQgcHJvY2Vzc2VzICovCiAjZW5kaWYKIAotQmFja2VuZElkCU15QmFja2VuZElk ID0gSW52YWxpZEJhY2tlbmRJZDsKK1Byb2NOdW1iZXIJTXlQcm9jTnVtYmVyID0gSU5WQUxJ RF9QUk9DX05VTUJFUjsKIAotQmFja2VuZElkCVBhcmFsbGVsTGVhZGVyQmFja2VuZElkID0g SW52YWxpZEJhY2tlbmRJZDsKK1Byb2NOdW1iZXIJUGFyYWxsZWxMZWFkZXJQcm9jTnVtYmVy ID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAogT2lkCQkJTXlEYXRhYmFzZUlkID0gSW52YWxp ZE9pZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMg Yi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwppbmRleCBhMDkxNjk1OWIxNy4u MDY3MzVmNjY3MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1n ci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCkBAIC0xMTU0LDcg KzExNTQsNyBAQCBFeHBvcnRTbmFwc2hvdChTbmFwc2hvdCBzbmFwc2hvdCkKIAkgKiBpbnNp ZGUgdGhlIHRyYW5zYWN0aW9uIGZyb20gMS4KIAkgKi8KIAlzbnByaW50ZihwYXRoLCBzaXpl b2YocGF0aCksIFNOQVBTSE9UX0VYUE9SVF9ESVIgIi8lMDhYLSUwOFgtJWQiLAotCQkJIE15 UHJvYy0+dnhpZC5iYWNrZW5kSWQsIE15UHJvYy0+dnhpZC5seGlkLAorCQkJIE15UHJvYy0+ dnhpZC5wcm9jTnVtYmVyLCBNeVByb2MtPnZ4aWQubHhpZCwKIAkJCSBsaXN0X2xlbmd0aChl eHBvcnRlZFNuYXBzaG90cykgKyAxKTsKIAogCS8qCkBAIC0xMTgyLDcgKzExODIsNyBAQCBF eHBvcnRTbmFwc2hvdChTbmFwc2hvdCBzbmFwc2hvdCkKIAkgKi8KIAlpbml0U3RyaW5nSW5m bygmYnVmKTsKIAotCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgInZ4aWQ6JWQvJXVcbiIsIE15 UHJvYy0+dnhpZC5iYWNrZW5kSWQsIE15UHJvYy0+dnhpZC5seGlkKTsKKwlhcHBlbmRTdHJp bmdJbmZvKCZidWYsICJ2eGlkOiVkLyV1XG4iLCBNeVByb2MtPnZ4aWQucHJvY051bWJlciwg TXlQcm9jLT52eGlkLmx4aWQpOwogCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgInBpZDolZFxu IiwgTXlQcm9jUGlkKTsKIAlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJkYmlkOiV1XG4iLCBN eURhdGFiYXNlSWQpOwogCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgImlzbzolZFxuIiwgWGFj dElzb0xldmVsKTsKQEAgLTEzNTIsNyArMTM1Miw3IEBAIHBhcnNlVnhpZEZyb21UZXh0KGNv bnN0IGNoYXIgKnByZWZpeCwgY2hhciAqKnMsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKIAkJCQkg ZXJybXNnKCJpbnZhbGlkIHNuYXBzaG90IGRhdGEgaW4gZmlsZSBcIiVzXCIiLCBmaWxlbmFt ZSkpKTsKIAlwdHIgKz0gcHJlZml4bGVuOwotCWlmIChzc2NhbmYocHRyLCAiJWQvJXUiLCAm dnhpZC0+YmFja2VuZElkLCAmdnhpZC0+bG9jYWxUcmFuc2FjdGlvbklkKSAhPSAyKQorCWlm IChzc2NhbmYocHRyLCAiJWQvJXUiLCAmdnhpZC0+cHJvY051bWJlciwgJnZ4aWQtPmxvY2Fs VHJhbnNhY3Rpb25JZCkgIT0gMikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCiAJCQkJIGVycm1zZygiaW52 YWxpZCBzbmFwc2hvdCBkYXRhIGluIGZpbGUgXCIlc1wiIiwgZmlsZW5hbWUpKSk7CmRpZmYg LS1naXQgYS9zcmMvY29tbW9uL3JlbHBhdGguYyBiL3NyYy9jb21tb24vcmVscGF0aC5jCmlu ZGV4IGIxNmZlMTlkZWE2Li5kNmY0NWZmYmY5MSAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9y ZWxwYXRoLmMKKysrIGIvc3JjL2NvbW1vbi9yZWxwYXRoLmMKQEAgLTIwLDcgKzIwLDcgQEAK IAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZV9kLmgiCiAjaW5jbHVkZSAiY29t bW9uL3JlbHBhdGguaCIKLSNpbmNsdWRlICJzdG9yYWdlL2JhY2tlbmRpZC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgogCiAKIC8qCkBAIC0xMzMsMTMgKzEzMywxMyBA QCBHZXREYXRhYmFzZVBhdGgoT2lkIGRiT2lkLCBPaWQgc3BjT2lkKQogICoKICAqIFJlc3Vs dCBpcyBhIHBhbGxvYydkIHN0cmluZy4KICAqCi0gKiBOb3RlOiBpZGVhbGx5LCBiYWNrZW5k SWQgd291bGQgYmUgZGVjbGFyZWQgYXMgdHlwZSBCYWNrZW5kSWQsIGJ1dCByZWxwYXRoLmgK LSAqIHdvdWxkIGhhdmUgdG8gaW5jbHVkZSBhIGJhY2tlbmQtb25seSBoZWFkZXIgdG8gZG8g dGhhdDsgZG9lc24ndCBzZWVtIHdvcnRoCi0gKiB0aGUgdHJvdWJsZSBjb25zaWRlcmluZyBC YWNrZW5kSWQgaXMganVzdCBpbnQgYW55d2F5LgorICogTm90ZTogaWRlYWxseSwgcHJvY051 bWJlciB3b3VsZCBiZSBkZWNsYXJlZCBhcyB0eXBlIFByb2NOdW1iZXIsIGJ1dAorICogcmVs cGF0aC5oIHdvdWxkIGhhdmUgdG8gaW5jbHVkZSBhIGJhY2tlbmQtb25seSBoZWFkZXIgdG8g ZG8gdGhhdDsgZG9lc24ndAorICogc2VlbSB3b3J0aCB0aGUgdHJvdWJsZSBjb25zaWRlcmlu ZyBQcm9jTnVtYmVyIGlzIGp1c3QgaW50IGFueXdheS4KICAqLwogY2hhciAqCiBHZXRSZWxh dGlvblBhdGgoT2lkIGRiT2lkLCBPaWQgc3BjT2lkLCBSZWxGaWxlTnVtYmVyIHJlbE51bWJl ciwKLQkJCQlpbnQgYmFja2VuZElkLCBGb3JrTnVtYmVyIGZvcmtOdW1iZXIpCisJCQkJaW50 IHByb2NOdW1iZXIsIEZvcmtOdW1iZXIgZm9ya051bWJlcikKIHsKIAljaGFyCSAgICpwYXRo OwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgR2V0UmVsYXRpb25QYXRoKE9pZCBkYk9pZCwgT2lk IHNwY09pZCwgUmVsRmlsZU51bWJlciByZWxOdW1iZXIsCiAJewogCQkvKiBTaGFyZWQgc3lz dGVtIHJlbGF0aW9ucyBsaXZlIGluIHtkYXRhZGlyfS9nbG9iYWwgKi8KIAkJQXNzZXJ0KGRi T2lkID09IDApOwotCQlBc3NlcnQoYmFja2VuZElkID09IEludmFsaWRCYWNrZW5kSWQpOwor CQlBc3NlcnQocHJvY051bWJlciA9PSBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAkJaWYgKGZv cmtOdW1iZXIgIT0gTUFJTl9GT1JLTlVNKQogCQkJcGF0aCA9IHBzcHJpbnRmKCJnbG9iYWwv JXVfJXMiLAogCQkJCQkJCXJlbE51bWJlciwgZm9ya05hbWVzW2ZvcmtOdW1iZXJdKTsKQEAg LTE1Nyw3ICsxNTcsNyBAQCBHZXRSZWxhdGlvblBhdGgoT2lkIGRiT2lkLCBPaWQgc3BjT2lk LCBSZWxGaWxlTnVtYmVyIHJlbE51bWJlciwKIAllbHNlIGlmIChzcGNPaWQgPT0gREVGQVVM VFRBQkxFU1BBQ0VfT0lEKQogCXsKIAkJLyogVGhlIGRlZmF1bHQgdGFibGVzcGFjZSBpcyB7 ZGF0YWRpcn0vYmFzZSAqLwotCQlpZiAoYmFja2VuZElkID09IEludmFsaWRCYWNrZW5kSWQp CisJCWlmIChwcm9jTnVtYmVyID09IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJCXsKIAkJCWlm IChmb3JrTnVtYmVyICE9IE1BSU5fRk9SS05VTSkKIAkJCQlwYXRoID0gcHNwcmludGYoImJh c2UvJXUvJXVfJXMiLApAQCAtMTcxLDE3ICsxNzEsMTcgQEAgR2V0UmVsYXRpb25QYXRoKE9p ZCBkYk9pZCwgT2lkIHNwY09pZCwgUmVsRmlsZU51bWJlciByZWxOdW1iZXIsCiAJCXsKIAkJ CWlmIChmb3JrTnVtYmVyICE9IE1BSU5fRk9SS05VTSkKIAkJCQlwYXRoID0gcHNwcmludGYo ImJhc2UvJXUvdCVkXyV1XyVzIiwKLQkJCQkJCQkJZGJPaWQsIGJhY2tlbmRJZCwgcmVsTnVt YmVyLAorCQkJCQkJCQlkYk9pZCwgcHJvY051bWJlciwgcmVsTnVtYmVyLAogCQkJCQkJCQlm b3JrTmFtZXNbZm9ya051bWJlcl0pOwogCQkJZWxzZQogCQkJCXBhdGggPSBwc3ByaW50Zigi YmFzZS8ldS90JWRfJXUiLAotCQkJCQkJCQlkYk9pZCwgYmFja2VuZElkLCByZWxOdW1iZXIp OworCQkJCQkJCQlkYk9pZCwgcHJvY051bWJlciwgcmVsTnVtYmVyKTsKIAkJfQogCX0KIAll bHNlCiAJewogCQkvKiBBbGwgb3RoZXIgdGFibGVzcGFjZXMgYXJlIGFjY2Vzc2VkIHZpYSBz eW1saW5rcyAqLwotCQlpZiAoYmFja2VuZElkID09IEludmFsaWRCYWNrZW5kSWQpCisJCWlm IChwcm9jTnVtYmVyID09IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJCXsKIAkJCWlmIChmb3Jr TnVtYmVyICE9IE1BSU5fRk9SS05VTSkKIAkJCQlwYXRoID0gcHNwcmludGYoInBnX3RibHNw Yy8ldS8lcy8ldS8ldV8lcyIsCkBAIC0xOTgsMTIgKzE5OCwxMiBAQCBHZXRSZWxhdGlvblBh dGgoT2lkIGRiT2lkLCBPaWQgc3BjT2lkLCBSZWxGaWxlTnVtYmVyIHJlbE51bWJlciwKIAkJ CWlmIChmb3JrTnVtYmVyICE9IE1BSU5fRk9SS05VTSkKIAkJCQlwYXRoID0gcHNwcmludGYo InBnX3RibHNwYy8ldS8lcy8ldS90JWRfJXVfJXMiLAogCQkJCQkJCQlzcGNPaWQsIFRBQkxF U1BBQ0VfVkVSU0lPTl9ESVJFQ1RPUlksCi0JCQkJCQkJCWRiT2lkLCBiYWNrZW5kSWQsIHJl bE51bWJlciwKKwkJCQkJCQkJZGJPaWQsIHByb2NOdW1iZXIsIHJlbE51bWJlciwKIAkJCQkJ CQkJZm9ya05hbWVzW2ZvcmtOdW1iZXJdKTsKIAkJCWVsc2UKIAkJCQlwYXRoID0gcHNwcmlu dGYoInBnX3RibHNwYy8ldS8lcy8ldS90JWRfJXUiLAogCQkJCQkJCQlzcGNPaWQsIFRBQkxF U1BBQ0VfVkVSU0lPTl9ESVJFQ1RPUlksCi0JCQkJCQkJCWRiT2lkLCBiYWNrZW5kSWQsIHJl bE51bWJlcik7CisJCQkJCQkJCWRiT2lkLCBwcm9jTnVtYmVyLCByZWxOdW1iZXIpOwogCQl9 CiAJfQogCXJldHVybiBwYXRoOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R3 b3BoYXNlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHdvcGhhc2UuaAppbmRleCAwZjZjZjhl MjhiNC4uNTYyNDhjMDAwNjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90d29w aGFzZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90d29waGFzZS5oCkBAIC0zNyw3ICsz Nyw3IEBAIGV4dGVybiB2b2lkIFBvc3RQcmVwYXJlX1R3b3BoYXNlKHZvaWQpOwogZXh0ZXJu IFRyYW5zYWN0aW9uSWQgVHdvUGhhc2VHZXRYaWRCeVZpcnR1YWxYSUQoVmlydHVhbFRyYW5z YWN0aW9uSWQgdnhpZCwKIAkJCQkJCQkJCQkJCWJvb2wgKmhhdmVfbW9yZSk7CiBleHRlcm4g UEdQUk9DICpUd29QaGFzZUdldER1bW15UHJvYyhUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBs b2NrX2hlbGQpOwotZXh0ZXJuIEJhY2tlbmRJZCBUd29QaGFzZUdldER1bW15QmFja2VuZElk KFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGxvY2tfaGVsZCk7CitleHRlcm4gaW50CVR3b1Bo YXNlR2V0RHVtbXlQcm9jTnVtYmVyKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGxvY2tfaGVs ZCk7CiAKIGV4dGVybiBHbG9iYWxUcmFuc2FjdGlvbiBNYXJrQXNQcmVwYXJpbmcoVHJhbnNh Y3Rpb25JZCB4aWQsIGNvbnN0IGNoYXIgKmdpZCwKIAkJCQkJCQkJCQkgVGltZXN0YW1wVHog cHJlcGFyZWRfYXQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFj ZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaAppbmRleCAyNTk5YzdiZGIx NC4uOGQ0MzRkNDhkNTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNw YWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaApAQCAtMTYsNiAr MTYsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvcHJpbW5vZGVzLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVtYmVyLmgiCiAKIAogLyoK QEAgLTE1Niw3ICsxNTcsNyBAQCBleHRlcm4gYm9vbCBpc1RlbXBPclRlbXBUb2FzdE5hbWVz cGFjZShPaWQgbmFtZXNwYWNlSWQpOwogZXh0ZXJuIGJvb2wgaXNBbnlUZW1wTmFtZXNwYWNl KE9pZCBuYW1lc3BhY2VJZCk7CiBleHRlcm4gYm9vbCBpc090aGVyVGVtcE5hbWVzcGFjZShP aWQgbmFtZXNwYWNlSWQpOwogZXh0ZXJuIFRlbXBOYW1lc3BhY2VTdGF0dXMgY2hlY2tUZW1w TmFtZXNwYWNlU3RhdHVzKE9pZCBuYW1lc3BhY2VJZCk7Ci1leHRlcm4gaW50CUdldFRlbXBO YW1lc3BhY2VCYWNrZW5kSWQoT2lkIG5hbWVzcGFjZUlkKTsKK2V4dGVybiBQcm9jTnVtYmVy IEdldFRlbXBOYW1lc3BhY2VQcm9jTnVtYmVyKE9pZCBuYW1lc3BhY2VJZCk7CiBleHRlcm4g T2lkCUdldFRlbXBUb2FzdE5hbWVzcGFjZSh2b2lkKTsKIGV4dGVybiB2b2lkIEdldFRlbXBO YW1lc3BhY2VTdGF0ZShPaWQgKnRlbXBOYW1lc3BhY2VJZCwKIAkJCQkJCQkJICBPaWQgKnRl bXBUb2FzdE5hbWVzcGFjZUlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi9y ZWxwYXRoLmggYi9zcmMvaW5jbHVkZS9jb21tb24vcmVscGF0aC5oCmluZGV4IDFmYWI1NmI2 ZDZhLi42ZjAwNmQ1YTkzOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL3JlbHBh dGguaAorKysgYi9zcmMvaW5jbHVkZS9jb21tb24vcmVscGF0aC5oCkBAIC03NCw3ICs3NCw3 IEBAIGV4dGVybiBpbnQJZm9ya25hbWVfY2hhcnMoY29uc3QgY2hhciAqc3RyLCBGb3JrTnVt YmVyICpmb3JrKTsKIGV4dGVybiBjaGFyICpHZXREYXRhYmFzZVBhdGgoT2lkIGRiT2lkLCBP aWQgc3BjT2lkKTsKIAogZXh0ZXJuIGNoYXIgKkdldFJlbGF0aW9uUGF0aChPaWQgZGJPaWQs IE9pZCBzcGNPaWQsIFJlbEZpbGVOdW1iZXIgcmVsTnVtYmVyLAotCQkJCQkJCSBpbnQgYmFj a2VuZElkLCBGb3JrTnVtYmVyIGZvcmtOdW1iZXIpOworCQkJCQkJCSBpbnQgcHJvY051bWJl ciwgRm9ya051bWJlciBmb3JrTnVtYmVyKTsKIAogLyoKICAqIFdyYXBwZXIgbWFjcm9zIGZv ciBHZXRSZWxhdGlvblBhdGguICBCZXdhcmUgb2YgbXVsdGlwbGUKQEAgLTg4LDcgKzg4LDcg QEAgZXh0ZXJuIGNoYXIgKkdldFJlbGF0aW9uUGF0aChPaWQgZGJPaWQsIE9pZCBzcGNPaWQs IFJlbEZpbGVOdW1iZXIgcmVsTnVtYmVyLAogCiAvKiBGaXJzdCBhcmd1bWVudCBpcyBhIFJl bEZpbGVMb2NhdG9yICovCiAjZGVmaW5lIHJlbHBhdGhwZXJtKHJsb2NhdG9yLCBmb3JrbnVt KSBcCi0JcmVscGF0aGJhY2tlbmQocmxvY2F0b3IsIEludmFsaWRCYWNrZW5kSWQsIGZvcmtu dW0pCisJcmVscGF0aGJhY2tlbmQocmxvY2F0b3IsIElOVkFMSURfUFJPQ19OVU1CRVIsIGZv cmtudW0pCiAKIC8qIEZpcnN0IGFyZ3VtZW50IGlzIGEgUmVsRmlsZUxvY2F0b3JCYWNrZW5k ICovCiAjZGVmaW5lIHJlbHBhdGgocmxvY2F0b3IsIGZvcmtudW0pIFwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2xpYnBxL3BxbXEuaCBiL3NyYy9pbmNsdWRlL2xpYnBxL3BxbXEuaApp bmRleCBkNmIyNDg5YzhjZi4uMjI3ZGY4OTc2ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2xpYnBxL3BxbXEuaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9wcW1xLmgKQEAgLTE3LDcg KzE3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgogCiBleHRlcm4gdm9pZCBw cV9yZWRpcmVjdF90b19zaG1fbXEoZHNtX3NlZ21lbnQgKnNlZywgc2htX21xX2hhbmRsZSAq bXFoKTsKLWV4dGVybiB2b2lkIHBxX3NldF9wYXJhbGxlbF9sZWFkZXIocGlkX3QgcGlkLCBC YWNrZW5kSWQgYmFja2VuZF9pZCk7CitleHRlcm4gdm9pZCBwcV9zZXRfcGFyYWxsZWxfbGVh ZGVyKHBpZF90IHBpZCwgUHJvY051bWJlciBwcm9jTnVtYmVyKTsKIAogZXh0ZXJuIHZvaWQg cHFfcGFyc2VfZXJyb3Jub3RpY2UoU3RyaW5nSW5mbyBtc2csIEVycm9yRGF0YSAqZWRhdGEp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRl L21pc2NhZG1pbi5oCmluZGV4IDE5MjEzNjkzZWE0Li5mNDk4M2U4OTJkZCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmgKQEAgLTE5NSwxMSArMTk1LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgcGtnbGli X3BhdGhbXTsKIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyIHBvc3RncmVzX2V4ZWNfcGF0aFtd OwogI2VuZGlmCiAKLS8qCi0gKiBkb25lIGluIHN0b3JhZ2UvYmFja2VuZGlkLmggZm9yIG5v dy4KLSAqCi0gKiBleHRlcm4gQmFja2VuZElkICAgIE15QmFja2VuZElkOwotICovCiBleHRl cm4gUEdETExJTVBPUlQgT2lkIE15RGF0YWJhc2VJZDsKIAogZXh0ZXJuIFBHRExMSU1QT1JU IE9pZCBNeURhdGFiYXNlVGFibGVTcGFjZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bv c3RtYXN0ZXIvcG9zdG1hc3Rlci5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9wb3N0bWFz dGVyLmgKaW5kZXggMDNmNzhiNWIyNWYuLjQ2Zjk1ZjdjOGE2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0 bWFzdGVyL3Bvc3RtYXN0ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBleHRlcm4gdm9pZCBTaG1l bUJhY2tlbmRBcnJheUFsbG9jYXRpb24odm9pZCk7CiAgKiBieSB1c2luZyBhIDY0Yml0IHN0 YXRlOyBidXQgaXQncyB1bmxpa2VseSB0byBiZSB3b3J0aHdoaWxlIGFzIDJeMTgtMQogICog YmFja2VuZHMgZXhjZWVkIGN1cnJlbnRseSByZWFsaXN0aWMgY29uZmlndXJhdGlvbnMuIEV2 ZW4gaWYgdGhhdCBsaW1pdGF0aW9uCiAgKiB3ZXJlIHJlbW92ZWQsIHdlIHN0aWxsIGNvdWxk IG5vdCBhKSBleGNlZWQgMl4yMy0xIGJlY2F1c2UgaW52YWwuYyBzdG9yZXMKLSAqIHRoZSBi YWNrZW5kIElEIGFzIGEgMy1ieXRlIHNpZ25lZCBpbnRlZ2VyLCBiKSBJTlRfTUFYLzQgYmVj YXVzZSBzb21lIHBsYWNlcworICogdGhlIFByb2NOdW1iZXIgYXMgYSAzLWJ5dGUgc2lnbmVk IGludGVnZXIsIGIpIElOVF9NQVgvNCBiZWNhdXNlIHNvbWUgcGxhY2VzCiAgKiBjb21wdXRl IDQqTWF4QmFja2VuZHMgd2l0aG91dCBhbnkgb3ZlcmZsb3cgY2hlY2suICBUaGlzIGlzIHJl Y2hlY2tlZCBpbiB0aGUKICAqIHJlbGV2YW50IEdVQyBjaGVjayBob29rcyBhbmQgaW4gUmVn aXN0ZXJCYWNrZ3JvdW5kV29ya2VyKCkuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3N0b3JhZ2UvYmFja2VuZGlkLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2JhY2tlbmRpZC5o CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM4NzcyM2Y3OS4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9iYWNrZW5kaWQuaAorKysgL2Rldi9udWxs CkBAIC0xLDQxICswLDAgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoKLSAqIGJhY2tl bmRpZC5oCi0gKgkgIFBPU1RHUkVTIGJhY2tlbmQgaWQgY29tbXVuaWNhdGlvbiBkZWZpbml0 aW9ucwotICoKLSAqCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKLSAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCi0g KgotICogc3JjL2luY2x1ZGUvc3RvcmFnZS9iYWNrZW5kaWQuaAotICoKLSAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotICovCi0jaWZuZGVmIEJBQ0tFTkRJRF9ICi0jZGVmaW5lIEJBQ0tFTkRJ RF9ICi0KLS8qCi0gKiBCYWNrZW5kSWQgdW5pcXVlbHkgaWRlbnRpZmllcyBhbiBhY3RpdmUg YmFja2VuZCBvciBhdXhpbGlhcnkgcHJvY2Vzcy4gIEl0J3MKLSAqIGFzc2lnbmVkIGF0IGJh Y2tlbmQgc3RhcnR1cCBhZnRlciBhdXRoZW50aWNhdGlvbi4gIE5vdGUgdGhhdCBhIGJhY2tl bmQgSUQKLSAqIGNhbiBiZSByZXVzZWQgZm9yIGEgZGlmZmVyZW50IGJhY2tlbmQgaW1tZWRp YXRlbHkgYWZ0ZXIgYSBiYWNrZW5kIGV4aXRzLgotICoKLSAqIEJhY2tlbmQgSURzIGFyZSBh c3NpZ25lZCBzdGFydGluZyBmcm9tIDEuIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIEJhY2tl bmRJZAotICogMCBpcyB1bnVzZWQsIGJ1dCBJbnZhbGlkQmFja2VuZElkIGlzIGRlZmluZWQg YXMgLTEuCi0gKi8KLXR5cGVkZWYgaW50IEJhY2tlbmRJZDsKLQotI2RlZmluZSBJbnZhbGlk QmFja2VuZElkCQkoLTEpCi0KLWV4dGVybiBQR0RMTElNUE9SVCBCYWNrZW5kSWQgTXlCYWNr ZW5kSWQ7CS8qIGJhY2tlbmQgaWQgb2YgdGhpcyBiYWNrZW5kICovCi0KLS8qIGJhY2tlbmQg aWQgb2Ygb3VyIHBhcmFsbGVsIHNlc3Npb24gbGVhZGVyLCBvciBJbnZhbGlkQmFja2VuZElk IGlmIG5vbmUgKi8KLWV4dGVybiBQR0RMTElNUE9SVCBCYWNrZW5kSWQgUGFyYWxsZWxMZWFk ZXJCYWNrZW5kSWQ7Ci0KLS8qCi0gKiBUaGUgQmFja2VuZElkIHRvIHVzZSBmb3Igb3VyIHNl c3Npb24ncyB0ZW1wIHJlbGF0aW9ucyBpcyBub3JtYWxseSBvdXIgb3duLAotICogYnV0IHBh cmFsbGVsIHdvcmtlcnMgc2hvdWxkIHVzZSB0aGVpciBsZWFkZXIncyBJRC4KLSAqLwotI2Rl ZmluZSBCYWNrZW5kSWRGb3JUZW1wUmVsYXRpb25zKCkgXAotCShQYXJhbGxlbExlYWRlckJh Y2tlbmRJZCA9PSBJbnZhbGlkQmFja2VuZElkID8gTXlCYWNrZW5kSWQgOiBQYXJhbGxlbExl YWRlckJhY2tlbmRJZCkKLQotI2VuZGlmCQkJCQkJCS8qIEJBQ0tFTkRJRF9IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvbG9jay5oCmluZGV4IGM1Yzg0MjAxMzc4Li4zYjA5NjFhMjg4YyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9s b2NrLmgKQEAgLTE5LDkgKzE5LDkgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAibGliL2lsaXN0 LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9iYWNrZW5kaWQuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xvY2tkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2NudW1iZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5j bHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKQEAgLTQyLDcgKzQyLDcgQEAgZXh0ZXJuIFBH RExMSU1QT1JUIGJvb2wgRGVidWdfZGVhZGxvY2tzOwogCiAvKgogICogVG9wLWxldmVsIHRy YW5zYWN0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBWaXJ0dWFsVHJhbnNhY3Rpb25JRHMgY29t cHJpc2luZwotICogUEdQUk9DIGZpZWxkcyBiYWNrZW5kSWQgYW5kIGx4aWQuICBGb3IgcmVj b3ZlcmVkIHByZXBhcmVkIHRyYW5zYWN0aW9ucywgdGhlCisgKiBQR1BST0MgZmllbGRzIHBy b2NOdW1iZXIgYW5kIGx4aWQuICBGb3IgcmVjb3ZlcmVkIHByZXBhcmVkIHRyYW5zYWN0aW9u cywgdGhlCiAgKiBMb2NhbFRyYW5zYWN0aW9uSWQgaXMgYW4gb3JkaW5hcnkgWElEOyBMT0NL VEFHX1ZJUlRVQUxUUkFOU0FDVElPTiBuZXZlcgogICogcmVmZXJzIHRvIHRoYXQga2luZC4g IFRoZXNlIGFyZSBndWFyYW50ZWVkIHVuaXF1ZSBvdmVyIHRoZSBzaG9ydCB0ZXJtLCBidXQK ICAqIHdpbGwgYmUgcmV1c2VkIGFmdGVyIGEgZGF0YWJhc2UgcmVzdGFydCBvciBYSUQgd3Jh cGFyb3VuZDsgaGVuY2UgdGhleQpAQCAtNTAsNyArNTAsNyBAQCBleHRlcm4gUEdETExJTVBP UlQgYm9vbCBEZWJ1Z19kZWFkbG9ja3M7CiAgKgogICogTm90ZSB0aGF0IHN0cnVjdCBWaXJ0 dWFsVHJhbnNhY3Rpb25JZCBjYW4gbm90IGJlIGFzc3VtZWQgdG8gYmUgYXRvbWljYWxseQog ICogYXNzaWduYWJsZSBhcyBhIHdob2xlLiAgSG93ZXZlciwgdHlwZSBMb2NhbFRyYW5zYWN0 aW9uSWQgaXMgYXNzdW1lZCB0bwotICogYmUgYXRvbWljYWxseSBhc3NpZ25hYmxlLCBhbmQg dGhlIGJhY2tlbmQgSUQgZG9lc24ndCBjaGFuZ2Ugb2Z0ZW4gZW5vdWdoCisgKiBiZSBhdG9t aWNhbGx5IGFzc2lnbmFibGUsIGFuZCB0aGUgcHJvYyBudW1iZXIgZG9lc24ndCBjaGFuZ2Ug b2Z0ZW4gZW5vdWdoCiAgKiB0byBiZSBhIHByb2JsZW0sIHNvIHdlIGNhbiBmZXRjaCBvciBh c3NpZ24gdGhlIHR3byBmaWVsZHMgc2VwYXJhdGVseS4KICAqIFdlIGRlbGliZXJhdGVseSBy ZWZyYWluIGZyb20gdXNpbmcgdGhlIHN0cnVjdCB3aXRoaW4gUEdQUk9DLCB0byBwcmV2ZW50 CiAgKiBjb2RpbmcgZXJyb3JzIGZyb20gdHJ5aW5nIHRvIHVzZSBzdHJ1Y3QgYXNzaWdubWVu dCB3aXRoIGl0OyBpbnN0ZWFkIHVzZQpAQCAtNTgsNyArNTgsNyBAQCBleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBEZWJ1Z19kZWFkbG9ja3M7CiAgKi8KIHR5cGVkZWYgc3RydWN0CiB7Ci0J QmFja2VuZElkCWJhY2tlbmRJZDsJCS8qIGJhY2tlbmRJZCBmcm9tIFBHUFJPQyAqLworCVBy b2NOdW1iZXIJcHJvY051bWJlcjsJCS8qIHByb2MgbnVtYmVyIG9mIHRoZSBQR1BST0MgKi8K IAlMb2NhbFRyYW5zYWN0aW9uSWQgbG9jYWxUcmFuc2FjdGlvbklkOwkvKiBseGlkIGZyb20g UEdQUk9DICovCiB9IFZpcnR1YWxUcmFuc2FjdGlvbklkOwogCkBAIC02NywxNSArNjcsMTUg QEAgdHlwZWRlZiBzdHJ1Y3QKICNkZWZpbmUgVmlydHVhbFRyYW5zYWN0aW9uSWRJc1ZhbGlk KHZ4aWQpIFwKIAkoTG9jYWxUcmFuc2FjdGlvbklkSXNWYWxpZCgodnhpZCkubG9jYWxUcmFu c2FjdGlvbklkKSkKICNkZWZpbmUgVmlydHVhbFRyYW5zYWN0aW9uSWRJc1JlY292ZXJlZFBy ZXBhcmVkWGFjdCh2eGlkKSBcCi0JKCh2eGlkKS5iYWNrZW5kSWQgPT0gSW52YWxpZEJhY2tl bmRJZCkKKwkoKHZ4aWQpLnByb2NOdW1iZXIgPT0gSU5WQUxJRF9QUk9DX05VTUJFUikKICNk ZWZpbmUgVmlydHVhbFRyYW5zYWN0aW9uSWRFcXVhbHModnhpZDEsIHZ4aWQyKSBcCi0JKCh2 eGlkMSkuYmFja2VuZElkID09ICh2eGlkMikuYmFja2VuZElkICYmIFwKKwkoKHZ4aWQxKS5w cm9jTnVtYmVyID09ICh2eGlkMikucHJvY051bWJlciAmJiBcCiAJICh2eGlkMSkubG9jYWxU cmFuc2FjdGlvbklkID09ICh2eGlkMikubG9jYWxUcmFuc2FjdGlvbklkKQogI2RlZmluZSBT ZXRJbnZhbGlkVmlydHVhbFRyYW5zYWN0aW9uSWQodnhpZCkgXAotCSgodnhpZCkuYmFja2Vu ZElkID0gSW52YWxpZEJhY2tlbmRJZCwgXAorCSgodnhpZCkucHJvY051bWJlciA9IElOVkFM SURfUFJPQ19OVU1CRVIsIFwKIAkgKHZ4aWQpLmxvY2FsVHJhbnNhY3Rpb25JZCA9IEludmFs aWRMb2NhbFRyYW5zYWN0aW9uSWQpCiAjZGVmaW5lIEdFVF9WWElEX0ZST01fUEdQUk9DKHZ4 aWRfZHN0LCBwcm9jKSBcCi0JKCh2eGlkX2RzdCkuYmFja2VuZElkID0gKHByb2MpLnZ4aWQu YmFja2VuZElkLCBcCisJKCh2eGlkX2RzdCkucHJvY051bWJlciA9IChwcm9jKS52eGlkLnBy b2NOdW1iZXIsIFwKIAkJICh2eGlkX2RzdCkubG9jYWxUcmFuc2FjdGlvbklkID0gKHByb2Mp LnZ4aWQubHhpZCkKIAogLyogTUFYX0xPQ0tNT0RFUyBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4g dGhlICMgb2YgYml0cyBpbiBMT0NLTUFTSyAqLwpAQCAtMjMzLDcgKzIzMyw3IEBAIHR5cGVk ZWYgc3RydWN0IExPQ0tUQUcKIAogLyogSUQgaW5mbyBmb3IgYSB2aXJ0dWFsIHRyYW5zYWN0 aW9uIGlzIGl0cyBWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqLwogI2RlZmluZSBTRVRfTE9DS1RB R19WSVJUVUFMVFJBTlNBQ1RJT04obG9ja3RhZyx2eGlkKSBcCi0JKChsb2NrdGFnKS5sb2Nr dGFnX2ZpZWxkMSA9ICh2eGlkKS5iYWNrZW5kSWQsIFwKKwkoKGxvY2t0YWcpLmxvY2t0YWdf ZmllbGQxID0gKHZ4aWQpLnByb2NOdW1iZXIsIFwKIAkgKGxvY2t0YWcpLmxvY2t0YWdfZmll bGQyID0gKHZ4aWQpLmxvY2FsVHJhbnNhY3Rpb25JZCwgXAogCSAobG9ja3RhZykubG9ja3Rh Z19maWVsZDMgPSAwLCBcCiAJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkNCA9IDAsIFwKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jLmgKaW5kZXggZDI5ODExY2UxNmQuLjEwOTVhZWZkZGZlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2MuaApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcGdfc2VtYS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2xp c3RfdHlwZXMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKIAogLyoKICAq IEVhY2ggYmFja2VuZCBhZHZlcnRpc2VzIHVwIHRvIFBHUFJPQ19NQVhfQ0FDSEVEX1NVQlhJ RFMgVHJhbnNhY3Rpb25JZHMKQEAgLTg0LDEyICs4NSw2IEBAIHN0cnVjdCBYaWRDYWNoZQog ICovCiAjZGVmaW5lCQlGUF9MT0NLX1NMT1RTX1BFUl9CQUNLRU5EIDE2CiAKLS8qCi0gKiBB biBpbnZhbGlkIHBncHJvY25vLiAgTXVzdCBiZSBsYXJnZXIgdGhhbiB0aGUgbWF4aW11bSBu dW1iZXIgb2YgUEdQUk9DCi0gKiBzdHJ1Y3R1cmVzIHdlIGNvdWxkIHBvc3NpYmx5IGhhdmUu ICBTZWUgY29tbWVudHMgZm9yIE1BWF9CQUNLRU5EUy4KLSAqLwotI2RlZmluZSBJTlZBTElE X1BHUFJPQ05PCQlQR19JTlQzMl9NQVgKLQogLyoKICAqIEZsYWdzIGZvciBQR1BST0MuZGVs YXlDaGtwdEZsYWdzCiAgKgpAQCAtMTk3LDE4ICsxOTIsMTggQEAgc3RydWN0IFBHUFJPQwog CSAqIGlzIG5vdCBhdG9taWNhbGx5IGFzc2lnbmFibGUgYXMgd2hvbGUsIGFuZCB3ZSB3YW50 IHRvIGVuZm9yY2UgY29kZSB0bwogCSAqIGNvbnNpZGVyIGJvdGggcGFydHMgc2VwYXJhdGVs eS4gIFNlZSBjb21tZW50cyBhdCBWaXJ0dWFsVHJhbnNhY3Rpb25JZC4KIAkgKi8KLQlzdHJ1 Y3QgewotCQlCYWNrZW5kSWQJYmFja2VuZElkOwkJLyogRm9yIHJlZ3VsYXIgYmFja2VuZHMs IGVxdWFsIHRvCi0JCQkJCQkJCQkgKiBHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKHByb2MpLiAg Rm9yCi0JCQkJCQkJCQkgKiBwcmVwYXJlZCB4YWN0cywgSUQgb2YgdGhlIG9yaWdpbmFsCi0J CQkJCQkJCQkgKiBiYWNrZW5kIHRoYXQgcHJvY2Vzc2VkIHRoZQotCQkJCQkJCQkJICogdHJh bnNhY3Rpb24uIEZvciB1bnVzZWQgUEdQUk9DIGVudHJpZXMsCi0JCQkJCQkJCQkgKiBJbnZh bGlkYmFja2VuZElELiAqLworCXN0cnVjdAorCXsKKwkJUHJvY051bWJlcglwcm9jTnVtYmVy OyAvKiBGb3IgcmVndWxhciBiYWNrZW5kcywgZXF1YWwgdG8KKwkJCQkJCQkJICogR2V0TnVt YmVyRnJvbVBHUHJvYyhwcm9jKS4gIEZvciBwcmVwYXJlZAorCQkJCQkJCQkgKiB4YWN0cywg SUQgb2YgdGhlIG9yaWdpbmFsIGJhY2tlbmQgdGhhdAorCQkJCQkJCQkgKiBwcm9jZXNzZWQg dGhlIHRyYW5zYWN0aW9uLiBGb3IgdW51c2VkCisJCQkJCQkJCSAqIFBHUFJPQyBlbnRyaWVz LCBJTlZBTElEX1BST0NfTlVNQkVSLiAqLwogCQlMb2NhbFRyYW5zYWN0aW9uSWQgbHhpZDsJ LyogbG9jYWwgaWQgb2YgdG9wLWxldmVsIHRyYW5zYWN0aW9uCiAJCQkJCQkJCQkgKiBjdXJy ZW50bHkgKiBiZWluZyBleGVjdXRlZCBieSB0aGlzCiAJCQkJCQkJCQkgKiBwcm9jLCBpZiBy dW5uaW5nOyBlbHNlCiAJCQkJCQkJCQkgKiBJbnZhbGlkTG9jYWx0cmFuc2FjdGlvbklkICov Ci0JfSB2eGlkOworCX0JCQl2eGlkOwogCiAJLyogVGhlc2UgZmllbGRzIGFyZSB6ZXJvIHdo aWxlIGEgYmFja2VuZCBpcyBzdGlsbCBzdGFydGluZyB1cDogKi8KIAlPaWQJCQlkYXRhYmFz ZUlkOwkJLyogT0lEIG9mIGRhdGFiYXNlIHRoaXMgYmFja2VuZCBpcyB1c2luZyAqLwpAQCAt MzE3LDcgKzMxMiwxOSBAQCBzdHJ1Y3QgUEdQUk9DCiAKIAogZXh0ZXJuIFBHRExMSU1QT1JU IFBHUFJPQyAqTXlQcm9jOwotZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNeVByb2NOdW1iZXI7 CS8qIHNhbWUgYXMgR2V0TnVtYmVyRnJvbVBHUHJvYyhNeVByb2MpICovCisKKy8qIFByb2Mg bnVtYmVyIG9mIHRoaXMgYmFja2VuZC4gRXF1YWwgdG8gR2V0TnVtYmVyRnJvbVBHUHJvYyhN eVByb2MpLiAqLworZXh0ZXJuIFBHRExMSU1QT1JUIFByb2NOdW1iZXIgTXlQcm9jTnVtYmVy OworCisvKiBPdXIgcGFyYWxsZWwgc2Vzc2lvbiBsZWFkZXIsIG9yIElOVkFMSURfUFJPQ19O VU1CRVIgaWYgbm9uZSAqLworZXh0ZXJuIFBHRExMSU1QT1JUIFByb2NOdW1iZXIgUGFyYWxs ZWxMZWFkZXJQcm9jTnVtYmVyOworCisvKgorICogVGhlIHByb2MgbnVtYmVyIHRvIHVzZSBm b3Igb3VyIHNlc3Npb24ncyB0ZW1wIHJlbGF0aW9ucyBpcyBub3JtYWxseSBvdXIgb3duLAor ICogYnV0IHBhcmFsbGVsIHdvcmtlcnMgc2hvdWxkIHVzZSB0aGVpciBsZWFkZXIncyBJRC4K KyAqLworI2RlZmluZSBQcm9jTnVtYmVyRm9yVGVtcFJlbGF0aW9ucygpIFwKKwkoUGFyYWxs ZWxMZWFkZXJQcm9jTnVtYmVyID09IElOVkFMSURfUFJPQ19OVU1CRVIgPyBNeVByb2NOdW1i ZXIgOiBQYXJhbGxlbExlYWRlclByb2NOdW1iZXIpCiAKIC8qCiAgKiBUaGVyZSBpcyBvbmUg UHJvY0dsb2JhbCBzdHJ1Y3QgZm9yIHRoZSB3aG9sZSBkYXRhYmFzZSBjbHVzdGVyLgpAQCAt NDIyLDE1ICs0MjksMTAgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFBST0NfSERSICpQcm9jR2xv YmFsOwogZXh0ZXJuIFBHRExMSU1QT1JUIFBHUFJPQyAqUHJlcGFyZWRYYWN0UHJvY3M7CiAK IC8qCi0gKiBBY2Nlc3NvcnMgZm9yIGdldHRpbmcgUEdQUk9DIGdpdmVuIGEgcGdwcm9jbm8g b3IgQmFja2VuZElkLCBhbmQgdmljZSB2ZXJzYS4KLSAqCi0gKiBGb3IgaGlzdG9yaWNhbCBy ZWFzb25zLCBzb21lIGNvZGUgdXNlcyAwLWJhc2VkICJwcm9jIG51bWJlcnMiLCB3aGlsZSBv dGhlcgotICogY29kZSB1c2VzIDEtYmFzZWQgYmFja2VuZCBJRHMuCisgKiBBY2Nlc3NvcnMg Zm9yIGdldHRpbmcgUEdQUk9DIGdpdmVuIGEgUHJvY051bWJlciBhbmQgdmljZSB2ZXJzYS4K ICAqLwogI2RlZmluZSBHZXRQR1Byb2NCeU51bWJlcihuKSAoJlByb2NHbG9iYWwtPmFsbFBy b2NzWyhuKV0pCiAjZGVmaW5lIEdldE51bWJlckZyb21QR1Byb2MocHJvYykgKChwcm9jKSAt ICZQcm9jR2xvYmFsLT5hbGxQcm9jc1swXSkKLSNkZWZpbmUgR2V0UEdQcm9jQnlCYWNrZW5k SWQobikgKCZQcm9jR2xvYmFsLT5hbGxQcm9jc1sobikgLSAxXSkKLSNkZWZpbmUgR2V0QmFj a2VuZElkRnJvbVBHUHJvYyhwcm9jKSAoR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSArIDEp CiAKIC8qCiAgKiBXZSBzZXQgYXNpZGUgc29tZSBleHRyYSBQR1BST0Mgc3RydWN0dXJlcyBm b3IgYXV4aWxpYXJ5IHByb2Nlc3NlcywKQEAgLTQ3Nyw3ICs0NzksNyBAQCBleHRlcm4gYm9v bCBJc1dhaXRpbmdGb3JMb2NrKHZvaWQpOwogZXh0ZXJuIHZvaWQgTG9ja0Vycm9yQ2xlYW51 cCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgUHJvY1dhaXRGb3JTaWduYWwodWludDMyIHdhaXRf ZXZlbnRfaW5mbyk7Ci1leHRlcm4gdm9pZCBQcm9jU2VuZFNpZ25hbChpbnQgcGdwcm9jbm8p OworZXh0ZXJuIHZvaWQgUHJvY1NlbmRTaWduYWwoUHJvY051bWJlciBwcm9jTnVtYmVyKTsK IAogZXh0ZXJuIFBHUFJPQyAqQXV4aWxpYXJ5UGlkR2V0UHJvYyhpbnQgcGlkKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvY2FycmF5LmgKaW5kZXggM2FmNzU3N2U4YzYuLjhjYTYwNTA0NjIyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCisrKyBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKQEAgLTY0LDEwICs2NCwxMCBAQCBleHRlcm4g VmlydHVhbFRyYW5zYWN0aW9uSWQgKkdldFZpcnR1YWxYSURzRGVsYXlpbmdDaGtwdChpbnQg Km52eGlkcywgaW50IHR5cGUpOwogZXh0ZXJuIGJvb2wgSGF2ZVZpcnR1YWxYSURzRGVsYXlp bmdDaGtwdChWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqdnhpZHMsCiAJCQkJCQkJCQkJIGludCBu dnhpZHMsIGludCB0eXBlKTsKIAotZXh0ZXJuIFBHUFJPQyAqQmFja2VuZElkR2V0UHJvYyhp bnQgYmFja2VuZElEKTsKLWV4dGVybiB2b2lkIEJhY2tlbmRJZEdldFRyYW5zYWN0aW9uSWRz KGludCBiYWNrZW5kSUQsIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCSAgIFRyYW5z YWN0aW9uSWQgKnhtaW4sIGludCAqbnN1YnhpZCwKLQkJCQkJCQkJCSAgIGJvb2wgKm92ZXJm bG93ZWQpOworZXh0ZXJuIFBHUFJPQyAqUHJvY051bWJlckdldFByb2MoaW50IHByb2NOdW1i ZXIpOworZXh0ZXJuIHZvaWQgUHJvY051bWJlckdldFRyYW5zYWN0aW9uSWRzKGludCBwcm9j TnVtYmVyLCBUcmFuc2FjdGlvbklkICp4aWQsCisJCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCAq eG1pbiwgaW50ICpuc3VieGlkLAorCQkJCQkJCQkJCWJvb2wgKm92ZXJmbG93ZWQpOwogZXh0 ZXJuIFBHUFJPQyAqQmFja2VuZFBpZEdldFByb2MoaW50IHBpZCk7CiBleHRlcm4gUEdQUk9D ICpCYWNrZW5kUGlkR2V0UHJvY1dpdGhMb2NrKGludCBwaWQpOwogZXh0ZXJuIGludAlCYWNr ZW5kWGlkR2V0UGlkKFRyYW5zYWN0aW9uSWQgeGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvY2xpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2xpc3Qu aAppbmRleCBhMWNhNGNiZDYzMS4uMzRhMWI3ZGNhYjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvY2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Ns aXN0LmgKQEAgLTI4LDcgKzI4LDcgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZAogcHJvY2xpc3Rf aW5pdChwcm9jbGlzdF9oZWFkICpsaXN0KQogewotCWxpc3QtPmhlYWQgPSBsaXN0LT50YWls ID0gSU5WQUxJRF9QR1BST0NOTzsKKwlsaXN0LT5oZWFkID0gbGlzdC0+dGFpbCA9IElOVkFM SURfUFJPQ19OVU1CRVI7CiB9CiAKIC8qCkBAIC0zNyw3ICszNyw3IEBAIHByb2NsaXN0X2lu aXQocHJvY2xpc3RfaGVhZCAqbGlzdCkKIHN0YXRpYyBpbmxpbmUgYm9vbAogcHJvY2xpc3Rf aXNfZW1wdHkoY29uc3QgcHJvY2xpc3RfaGVhZCAqbGlzdCkKIHsKLQlyZXR1cm4gbGlzdC0+ aGVhZCA9PSBJTlZBTElEX1BHUFJPQ05POworCXJldHVybiBsaXN0LT5oZWFkID09IElOVkFM SURfUFJPQ19OVU1CRVI7CiB9CiAKIC8qCkBAIC02MiwyMCArNjIsMjAgQEAgcHJvY2xpc3Rf cHVzaF9oZWFkX29mZnNldChwcm9jbGlzdF9oZWFkICpsaXN0LCBpbnQgcHJvY25vLCBzaXpl X3Qgbm9kZV9vZmZzZXQpCiAKIAlBc3NlcnQobm9kZS0+bmV4dCA9PSAwICYmIG5vZGUtPnBy ZXYgPT0gMCk7CiAKLQlpZiAobGlzdC0+aGVhZCA9PSBJTlZBTElEX1BHUFJPQ05PKQorCWlm IChsaXN0LT5oZWFkID09IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJewotCQlBc3NlcnQobGlz dC0+dGFpbCA9PSBJTlZBTElEX1BHUFJPQ05PKTsKLQkJbm9kZS0+bmV4dCA9IG5vZGUtPnBy ZXYgPSBJTlZBTElEX1BHUFJPQ05POworCQlBc3NlcnQobGlzdC0+dGFpbCA9PSBJTlZBTElE X1BST0NfTlVNQkVSKTsKKwkJbm9kZS0+bmV4dCA9IG5vZGUtPnByZXYgPSBJTlZBTElEX1BS T0NfTlVNQkVSOwogCQlsaXN0LT5oZWFkID0gbGlzdC0+dGFpbCA9IHByb2NubzsKIAl9CiAJ ZWxzZQogCXsKLQkJQXNzZXJ0KGxpc3QtPnRhaWwgIT0gSU5WQUxJRF9QR1BST0NOTyk7CisJ CUFzc2VydChsaXN0LT50YWlsICE9IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCQlBc3NlcnQo bGlzdC0+aGVhZCAhPSBwcm9jbm8pOwogCQlBc3NlcnQobGlzdC0+dGFpbCAhPSBwcm9jbm8p OwogCQlub2RlLT5uZXh0ID0gbGlzdC0+aGVhZDsKIAkJcHJvY2xpc3Rfbm9kZV9nZXQobm9k ZS0+bmV4dCwgbm9kZV9vZmZzZXQpLT5wcmV2ID0gcHJvY25vOwotCQlub2RlLT5wcmV2ID0g SU5WQUxJRF9QR1BST0NOTzsKKwkJbm9kZS0+cHJldiA9IElOVkFMSURfUFJPQ19OVU1CRVI7 CiAJCWxpc3QtPmhlYWQgPSBwcm9jbm87CiAJfQogfQpAQCAtOTAsMjAgKzkwLDIwIEBAIHBy b2NsaXN0X3B1c2hfdGFpbF9vZmZzZXQocHJvY2xpc3RfaGVhZCAqbGlzdCwgaW50IHByb2Nu bywgc2l6ZV90IG5vZGVfb2Zmc2V0KQogCiAJQXNzZXJ0KG5vZGUtPm5leHQgPT0gMCAmJiBu b2RlLT5wcmV2ID09IDApOwogCi0JaWYgKGxpc3QtPnRhaWwgPT0gSU5WQUxJRF9QR1BST0NO TykKKwlpZiAobGlzdC0+dGFpbCA9PSBJTlZBTElEX1BST0NfTlVNQkVSKQogCXsKLQkJQXNz ZXJ0KGxpc3QtPmhlYWQgPT0gSU5WQUxJRF9QR1BST0NOTyk7Ci0JCW5vZGUtPm5leHQgPSBu b2RlLT5wcmV2ID0gSU5WQUxJRF9QR1BST0NOTzsKKwkJQXNzZXJ0KGxpc3QtPmhlYWQgPT0g SU5WQUxJRF9QUk9DX05VTUJFUik7CisJCW5vZGUtPm5leHQgPSBub2RlLT5wcmV2ID0gSU5W QUxJRF9QUk9DX05VTUJFUjsKIAkJbGlzdC0+aGVhZCA9IGxpc3QtPnRhaWwgPSBwcm9jbm87 CiAJfQogCWVsc2UKIAl7Ci0JCUFzc2VydChsaXN0LT5oZWFkICE9IElOVkFMSURfUEdQUk9D Tk8pOworCQlBc3NlcnQobGlzdC0+aGVhZCAhPSBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAkJ QXNzZXJ0KGxpc3QtPmhlYWQgIT0gcHJvY25vKTsKIAkJQXNzZXJ0KGxpc3QtPnRhaWwgIT0g cHJvY25vKTsKIAkJbm9kZS0+cHJldiA9IGxpc3QtPnRhaWw7CiAJCXByb2NsaXN0X25vZGVf Z2V0KG5vZGUtPnByZXYsIG5vZGVfb2Zmc2V0KS0+bmV4dCA9IHByb2NubzsKLQkJbm9kZS0+ bmV4dCA9IElOVkFMSURfUEdQUk9DTk87CisJCW5vZGUtPm5leHQgPSBJTlZBTElEX1BST0Nf TlVNQkVSOwogCQlsaXN0LT50YWlsID0gcHJvY25vOwogCX0KIH0KQEAgLTExOCw3ICsxMTgs NyBAQCBwcm9jbGlzdF9kZWxldGVfb2Zmc2V0KHByb2NsaXN0X2hlYWQgKmxpc3QsIGludCBw cm9jbm8sIHNpemVfdCBub2RlX29mZnNldCkKIAogCUFzc2VydChub2RlLT5uZXh0ICE9IDAg fHwgbm9kZS0+cHJldiAhPSAwKTsKIAotCWlmIChub2RlLT5wcmV2ID09IElOVkFMSURfUEdQ Uk9DTk8pCisJaWYgKG5vZGUtPnByZXYgPT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAl7CiAJ CUFzc2VydChsaXN0LT5oZWFkID09IHByb2Nubyk7CiAJCWxpc3QtPmhlYWQgPSBub2RlLT5u ZXh0OwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByb2NsaXN0X2RlbGV0ZV9vZmZzZXQocHJvY2xp c3RfaGVhZCAqbGlzdCwgaW50IHByb2Nubywgc2l6ZV90IG5vZGVfb2Zmc2V0KQogCWVsc2UK IAkJcHJvY2xpc3Rfbm9kZV9nZXQobm9kZS0+cHJldiwgbm9kZV9vZmZzZXQpLT5uZXh0ID0g bm9kZS0+bmV4dDsKIAotCWlmIChub2RlLT5uZXh0ID09IElOVkFMSURfUEdQUk9DTk8pCisJ aWYgKG5vZGUtPm5leHQgPT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAl7CiAJCUFzc2VydChs aXN0LT50YWlsID09IHByb2Nubyk7CiAJCWxpc3QtPnRhaWwgPSBub2RlLT5wcmV2OwpAQCAt MTYwLDggKzE2MCw4IEBAIHByb2NsaXN0X2NvbnRhaW5zX29mZnNldChjb25zdCBwcm9jbGlz dF9oZWFkICpsaXN0LCBpbnQgcHJvY25vLAogCSAqIHRhaWwsIGFuZCB0aGF0IHNlZW1zIHdv cnRoIGRvaW5nLCBzaW5jZSBpbiBwcmFjdGljZSB0aGF0IHNob3VsZCBvZnRlbgogCSAqIGJl IGVub3VnaCB0byBjYXRjaCBtaXN0YWtlcy4KIAkgKi8KLQlBc3NlcnQobm9kZS0+cHJldiAh PSBJTlZBTElEX1BHUFJPQ05PIHx8IGxpc3QtPmhlYWQgPT0gcHJvY25vKTsKLQlBc3NlcnQo bm9kZS0+bmV4dCAhPSBJTlZBTElEX1BHUFJPQ05PIHx8IGxpc3QtPnRhaWwgPT0gcHJvY25v KTsKKwlBc3NlcnQobm9kZS0+cHJldiAhPSBJTlZBTElEX1BST0NfTlVNQkVSIHx8IGxpc3Qt PmhlYWQgPT0gcHJvY25vKTsKKwlBc3NlcnQobm9kZS0+bmV4dCAhPSBJTlZBTElEX1BST0Nf TlVNQkVSIHx8IGxpc3QtPnRhaWwgPT0gcHJvY25vKTsKIAogCXJldHVybiB0cnVlOwogfQpA QCAtMjA3LDEyICsyMDcsMTIgQEAgcHJvY2xpc3RfcG9wX2hlYWRfbm9kZV9vZmZzZXQocHJv Y2xpc3RfaGVhZCAqbGlzdCwgc2l6ZV90IG5vZGVfb2Zmc2V0KQogCWZvciAoQXNzZXJ0VmFy aWFibGVJc09mVHlwZU1hY3JvKGl0ZXIsIHByb2NsaXN0X211dGFibGVfaXRlciksCQkJXAog CQkgQXNzZXJ0VmFyaWFibGVJc09mVHlwZU1hY3JvKGxoZWFkLCBwcm9jbGlzdF9oZWFkICop LAkJCQlcCiAJCSAoaXRlcikuY3VyID0gKGxoZWFkKS0+aGVhZCwJCQkJCQkJCQkJXAotCQkg KGl0ZXIpLm5leHQgPSAoaXRlcikuY3VyID09IElOVkFMSURfUEdQUk9DTk8gPyBJTlZBTElE X1BHUFJPQ05PIDoJXAorCQkgKGl0ZXIpLm5leHQgPSAoaXRlcikuY3VyID09IElOVkFMSURf UFJPQ19OVU1CRVIgPyBJTlZBTElEX1BST0NfTlVNQkVSIDoJXAogCQkJIHByb2NsaXN0X25v ZGVfZ2V0KChpdGVyKS5jdXIsCQkJCQkJCQkJXAogCQkJCQkJCSAgIG9mZnNldG9mKFBHUFJP QywgbGlua19tZW1iZXIpKS0+bmV4dDsJCVwKLQkJIChpdGVyKS5jdXIgIT0gSU5WQUxJRF9Q R1BST0NOTzsJCQkJCQkJCQlcCisJCSAoaXRlcikuY3VyICE9IElOVkFMSURfUFJPQ19OVU1C RVI7CQkJCQkJCQkJXAogCQkgKGl0ZXIpLmN1ciA9IChpdGVyKS5uZXh0LAkJCQkJCQkJCQkJ XAotCQkgKGl0ZXIpLm5leHQgPSAoaXRlcikuY3VyID09IElOVkFMSURfUEdQUk9DTk8gPyBJ TlZBTElEX1BHUFJPQ05PIDoJXAorCQkgKGl0ZXIpLm5leHQgPSAoaXRlcikuY3VyID09IElO VkFMSURfUFJPQ19OVU1CRVIgPyBJTlZBTElEX1BST0NfTlVNQkVSIDoJXAogCQkJIHByb2Ns aXN0X25vZGVfZ2V0KChpdGVyKS5jdXIsCQkJCQkJCQkJXAogCQkJCQkJCSAgIG9mZnNldG9m KFBHUFJPQywgbGlua19tZW1iZXIpKS0+bmV4dCkKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jbGlzdF90eXBlcy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j bGlzdF90eXBlcy5oCmluZGV4IDc5YzUwOWYyOWEyLi5hNGZiODhjMWQwZCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jbGlzdF90eXBlcy5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvY2xpc3RfdHlwZXMuaApAQCAtMTUsMjggKzE1LDMwIEBACiAjaWZu ZGVmIFBST0NMSVNUX1RZUEVTX0gKICNkZWZpbmUgUFJPQ0xJU1RfVFlQRVNfSAogCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jbnVtYmVyLmgiCisKIC8qCiAgKiBBIG5vZGUgaW4gYSBkb3Vi bHktbGlua2VkIGxpc3Qgb2YgcHJvY2Vzc2VzLiAgVGhlIGxpbmsgZmllbGRzIGNvbnRhaW4K ICAqIHRoZSAwLWJhc2VkIFBHUFJPQyBpbmRleGVzIG9mIHRoZSBuZXh0IGFuZCBwcmV2aW91 cyBwcm9jZXNzLCBvcgotICogSU5WQUxJRF9QR1BST0NOTyBpbiB0aGUgbmV4dC1saW5rIG9m IHRoZSBsYXN0IG5vZGUgYW5kIHRoZSBwcmV2LWxpbmsKKyAqIElOVkFMSURfUFJPQ19OVU1C RVIgaW4gdGhlIG5leHQtbGluayBvZiB0aGUgbGFzdCBub2RlIGFuZCB0aGUgcHJldi1saW5r CiAgKiBvZiB0aGUgZmlyc3Qgbm9kZS4gIEEgbm9kZSB0aGF0IGlzIGN1cnJlbnRseSBub3Qg aW4gYW55IGxpc3QKICAqIHNob3VsZCBoYXZlIG5leHQgPT0gcHJldiA9PSAwOyB0aGlzIGlz IG5vdCBhIHBvc3NpYmxlIHN0YXRlIGZvciBhIG5vZGUKICAqIHRoYXQgaXMgaW4gYSBsaXN0 LCBiZWNhdXNlIHdlIGRpc2FsbG93IGNpcmN1bGFyaXR5LgogICovCiB0eXBlZGVmIHN0cnVj dCBwcm9jbGlzdF9ub2RlCiB7Ci0JaW50CQkJbmV4dDsJCQkvKiBwZ3Byb2NubyBvZiB0aGUg bmV4dCBQR1BST0MgKi8KLQlpbnQJCQlwcmV2OwkJCS8qIHBncHJvY25vIG9mIHRoZSBwcmV2 IFBHUFJPQyAqLworCVByb2NOdW1iZXIJbmV4dDsJCQkvKiBwZ3Byb2NubyBvZiB0aGUgbmV4 dCBQR1BST0MgKi8KKwlQcm9jTnVtYmVyCXByZXY7CQkJLyogcGdwcm9jbm8gb2YgdGhlIHBy ZXYgUEdQUk9DICovCiB9IHByb2NsaXN0X25vZGU7CiAKIC8qCiAgKiBIZWFkZXIgb2YgYSBk b3VibHktbGlua2VkIGxpc3Qgb2YgUEdQUk9DcywgaWRlbnRpZmllZCBieSBwZ3Byb2Nuby4K LSAqIEFuIGVtcHR5IGxpc3QgaXMgcmVwcmVzZW50ZWQgYnkgaGVhZCA9PSB0YWlsID09IElO VkFMSURfUEdQUk9DTk8uCisgKiBBbiBlbXB0eSBsaXN0IGlzIHJlcHJlc2VudGVkIGJ5IGhl YWQgPT0gdGFpbCA9PSBJTlZBTElEX1BST0NfTlVNQkVSLgogICovCiB0eXBlZGVmIHN0cnVj dCBwcm9jbGlzdF9oZWFkCiB7Ci0JaW50CQkJaGVhZDsJCQkvKiBwZ3Byb2NubyBvZiB0aGUg aGVhZCBQR1BST0MgKi8KLQlpbnQJCQl0YWlsOwkJCS8qIHBncHJvY25vIG9mIHRoZSB0YWls IFBHUFJPQyAqLworCVByb2NOdW1iZXIJaGVhZDsJCQkvKiBwZ3Byb2NubyBvZiB0aGUgaGVh ZCBQR1BST0MgKi8KKwlQcm9jTnVtYmVyCXRhaWw7CQkJLyogcGdwcm9jbm8gb2YgdGhlIHRh aWwgUEdQUk9DICovCiB9IHByb2NsaXN0X2hlYWQ7CiAKIC8qCkBAIC00NCw4ICs0Niw4IEBA IHR5cGVkZWYgc3RydWN0IHByb2NsaXN0X2hlYWQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgcHJv Y2xpc3RfbXV0YWJsZV9pdGVyCiB7Ci0JaW50CQkJY3VyOwkJCS8qIHBncHJvY25vIG9mIHRo ZSBjdXJyZW50IFBHUFJPQyAqLwotCWludAkJCW5leHQ7CQkJLyogcGdwcm9jbm8gb2YgdGhl IG5leHQgUEdQUk9DICovCisJUHJvY051bWJlcgljdXI7CQkJLyogcGdwcm9jbm8gb2YgdGhl IGN1cnJlbnQgUEdQUk9DICovCisJUHJvY051bWJlcgluZXh0OwkJCS8qIHBncHJvY25vIG9m IHRoZSBuZXh0IFBHUFJPQyAqLwogfSBwcm9jbGlzdF9tdXRhYmxlX2l0ZXI7CiAKICNlbmRp ZgkJCQkJCQkvKiBQUk9DTElTVF9UWVBFU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2NudW1iZXIuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY251bWJl ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OWViMGUyMTVj YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY251bWJlci5o CkBAIC0wLDAgKzEsNDMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHByb2Nu dW1iZXIuaAorICoJICBkZWZpbml0aW9uIG9mIHByb2Nlc3MgbnVtYmVyCisgKgorICoKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdl bnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2NudW1iZXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisjaWZuZGVmIFBST0NOVU1CRVJfSAorI2RlZmluZSBQUk9DTlVNQkVSX0gKKworLyoKKyAq IFByb2NOdW1iZXIgdW5pcXVlbHkgaWRlbnRpZmllcyBhbiBhY3RpdmUgYmFja2VuZCBvciBh dXhpbGlhcnkgcHJvY2Vzcy4KKyAqIEl0J3MgYXNzaWduZWQgYXQgYmFja2VuZCBzdGFydHVw IGFmdGVyIGF1dGhlbnRpY2F0aW9uLCB3aGVuIHRoZSBwcm9jZXNzCisgKiBhZGRzIGl0c2Vs ZiB0byB0aGUgcHJvYyBhcnJheS4gIEl0IGlzIGFuIGluZGV4IGludG8gdGhlIHByb2MgYXJy YXksCisgKiBzdGFydGluZyBmcm9tIDAuIE5vdGUgdGhhdCBhIFByb2NOdW1iZXIgY2FuIGJl IHJldXNlZCBmb3IgYSBkaWZmZXJlbnQKKyAqIGJhY2tlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIg YSBiYWNrZW5kIGV4aXRzLgorICovCit0eXBlZGVmIGludCBQcm9jTnVtYmVyOworCisjZGVm aW5lIElOVkFMSURfUFJPQ19OVU1CRVIJCSgtMSkKKworLyoKKyAqIFByb2MgbnVtYmVyIG9m IHRoaXMgYmFja2VuZCAoc2FtZSBhcyBHZXROdW1iZXJGcm9tUEdQcm9jKE15UHJvYykpCisg Ki8KK2V4dGVybiBQR0RMTElNUE9SVCBQcm9jTnVtYmVyIE15UHJvY051bWJlcjsKKworLyog cHJvYyBudW1iZXIgb2Ygb3VyIHBhcmFsbGVsIHNlc3Npb24gbGVhZGVyLCBvciBJTlZBTElE X1BST0NfTlVNQkVSIGlmIG5vbmUgKi8KK2V4dGVybiBQR0RMTElNUE9SVCBQcm9jTnVtYmVy IFBhcmFsbGVsTGVhZGVyUHJvY051bWJlcjsKKworLyoKKyAqIFRoZSBQcm9jTnVtYmVyIHRv IHVzZSBmb3Igb3VyIHNlc3Npb24ncyB0ZW1wIHJlbGF0aW9ucyBpcyBub3JtYWxseSBvdXIg b3duLAorICogYnV0IHBhcmFsbGVsIHdvcmtlcnMgc2hvdWxkIHVzZSB0aGVpciBsZWFkZXIn cyBwcm9jIG51bWJlci4KKyAqLworI2RlZmluZSBQcm9jTnVtYmVyRm9yVGVtcFJlbGF0aW9u cygpIFwKKwkoUGFyYWxsZWxMZWFkZXJQcm9jTnVtYmVyID09IElOVkFMSURfUFJPQ19OVU1C RVIgPyBNeVByb2NOdW1iZXIgOiBQYXJhbGxlbExlYWRlclByb2NOdW1iZXIpCisKKyNlbmRp ZgkJCQkJCQkvKiBQUk9DTlVNQkVSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgK aW5kZXggZmViZGRhMzYxMWMuLjdkMjkwZWE3ZDA1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Nz aWduYWwuaApAQCAtMTQsNyArMTQsNyBAQAogI2lmbmRlZiBQUk9DU0lHTkFMX0gKICNkZWZp bmUgUFJPQ1NJR05BTF9ICiAKLSNpbmNsdWRlICJzdG9yYWdlL2JhY2tlbmRpZC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgogCiAKIC8qCkBAIC02NCw3ICs2NCw3IEBA IGV4dGVybiB2b2lkIFByb2NTaWduYWxTaG1lbUluaXQodm9pZCk7CiAKIGV4dGVybiB2b2lk IFByb2NTaWduYWxJbml0KHZvaWQpOwogZXh0ZXJuIGludAlTZW5kUHJvY1NpZ25hbChwaWRf dCBwaWQsIFByb2NTaWduYWxSZWFzb24gcmVhc29uLAotCQkJCQkJICAgQmFja2VuZElkIGJh Y2tlbmRJZCk7CisJCQkJCQkgICBQcm9jTnVtYmVyIHByb2NOdW1iZXIpOwogCiBleHRlcm4g dWludDY0IEVtaXRQcm9jU2lnbmFsQmFycmllcihQcm9jU2lnbmFsQmFycmllclR5cGUgdHlw ZSk7CiBleHRlcm4gdm9pZCBXYWl0Rm9yUHJvY1NpZ25hbEJhcnJpZXIodWludDY0IGdlbmVy YXRpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9yZWxmaWxlbG9jYXRv ci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9yZWxmaWxlbG9jYXRvci5oCmluZGV4IGVmOGMy YjQ1MmIzLi4yZjk3MGEyNWMzNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9y ZWxmaWxlbG9jYXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcmVsZmlsZWxvY2F0 b3IuaApAQCAtMTUsMTQgKzE1LDE1IEBACiAjZGVmaW5lIFJFTEZJTEVMT0NBVE9SX0gKIAog I2luY2x1ZGUgImNvbW1vbi9yZWxwYXRoLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9iYWNrZW5k aWQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKIAogLyoKICAqIFJlbEZp bGVMb2NhdG9yIG11c3QgcHJvdmlkZSBhbGwgdGhhdCB3ZSBuZWVkIHRvIGtub3cgdG8gcGh5 c2ljYWxseSBhY2Nlc3MKLSAqIGEgcmVsYXRpb24sIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0 aGUgYmFja2VuZCBJRCwgd2hpY2ggY2FuIGJlIHByb3ZpZGVkCi0gKiBzZXBhcmF0ZWx5LiBO b3RlLCBob3dldmVyLCB0aGF0IGEgInBoeXNpY2FsIiByZWxhdGlvbiBpcyBjb21wcmlzZWQg b2YKLSAqIG11bHRpcGxlIGZpbGVzIG9uIHRoZSBmaWxlc3lzdGVtLCBhcyBlYWNoIGZvcmsg aXMgc3RvcmVkIGFzIGEgc2VwYXJhdGUKLSAqIGZpbGUsIGFuZCBlYWNoIGZvcmsgY2FuIGJl IGRpdmlkZWQgaW50byBtdWx0aXBsZSBzZWdtZW50cy4gU2VlIG1kLmMuCisgKiBhIHJlbGF0 aW9uLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIGJhY2tlbmQncyBwcm9jIG51bWJlciwg d2hpY2ggY2FuIGJlCisgKiBwcm92aWRlZCBzZXBhcmF0ZWx5LiAgTm90ZSwgaG93ZXZlciwg dGhhdCBhICJwaHlzaWNhbCIgcmVsYXRpb24gaXMKKyAqIGNvbXByaXNlZCBvZiBtdWx0aXBs ZSBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSwgYXMgZWFjaCBmb3JrIGlzIHN0b3JlZCBhcwor ICogYSBzZXBhcmF0ZSBmaWxlLCBhbmQgZWFjaCBmb3JrIGNhbiBiZSBkaXZpZGVkIGludG8g bXVsdGlwbGUgc2VnbWVudHMuIFNlZQorICogbWQuYy4KICAqCiAgKiBzcGNPaWQgaWRlbnRp ZmllcyB0aGUgdGFibGVzcGFjZSBvZiB0aGUgcmVsYXRpb24uICBJdCBjb3JyZXNwb25kcyB0 bwogICogcGdfdGFibGVzcGFjZS5vaWQuCkBAIC02MiwyOCArNjMsMjggQEAgdHlwZWRlZiBz dHJ1Y3QgUmVsRmlsZUxvY2F0b3IKIH0gUmVsRmlsZUxvY2F0b3I7CiAKIC8qCi0gKiBBdWdt ZW50aW5nIGEgcmVsZmlsZWxvY2F0b3Igd2l0aCB0aGUgYmFja2VuZCBJRCBwcm92aWRlcyBh bGwgdGhlIGluZm9ybWF0aW9uCi0gKiB3ZSBuZWVkIHRvIGxvY2F0ZSB0aGUgcGh5c2ljYWwg c3RvcmFnZS4gIFRoZSBiYWNrZW5kIElEIGlzIEludmFsaWRCYWNrZW5kSWQKLSAqIGZvciBy ZWd1bGFyIHJlbGF0aW9ucyAodGhvc2UgYWNjZXNzaWJsZSB0byBtb3JlIHRoYW4gb25lIGJh Y2tlbmQpLCBvciB0aGUKLSAqIG93bmluZyBiYWNrZW5kJ3MgSUQgZm9yIGJhY2tlbmQtbG9j YWwgcmVsYXRpb25zLiAgQmFja2VuZC1sb2NhbCByZWxhdGlvbnMKLSAqIGFyZSBhbHdheXMg dHJhbnNpZW50IGFuZCByZW1vdmVkIGluIGNhc2Ugb2YgYSBkYXRhYmFzZSBjcmFzaDsgdGhl eSBhcmUKLSAqIG5ldmVyIFdBTC1sb2dnZWQgb3IgZnN5bmMnZC4KKyAqIEF1Z21lbnRpbmcg YSByZWxmaWxlbG9jYXRvciB3aXRoIHRoZSBiYWNrZW5kJ3MgcHJvYyBudW1iZXIgcHJvdmlk ZXMgYWxsIHRoZQorICogaW5mb3JtYXRpb24gd2UgbmVlZCB0byBsb2NhdGUgdGhlIHBoeXNp Y2FsIHN0b3JhZ2UuICAnYmFja2VuZCcgaXMKKyAqIElOVkFMSURfUFJPQ19OVU1CRVIgZm9y IHJlZ3VsYXIgcmVsYXRpb25zICh0aG9zZSBhY2Nlc3NpYmxlIHRvIG1vcmUgdGhhbgorICog b25lIGJhY2tlbmQpLCBvciB0aGUgb3duaW5nIGJhY2tlbmQncyBwcm9jIG51bWJlciBmb3Ig YmFja2VuZC1sb2NhbAorICogcmVsYXRpb25zLiAgQmFja2VuZC1sb2NhbCByZWxhdGlvbnMg YXJlIGFsd2F5cyB0cmFuc2llbnQgYW5kIHJlbW92ZWQgaW4KKyAqIGNhc2Ugb2YgYSBkYXRh YmFzZSBjcmFzaDsgdGhleSBhcmUgbmV2ZXIgV0FMLWxvZ2dlZCBvciBmc3luYydkLgogICov CiB0eXBlZGVmIHN0cnVjdCBSZWxGaWxlTG9jYXRvckJhY2tlbmQKIHsKIAlSZWxGaWxlTG9j YXRvciBsb2NhdG9yOwotCUJhY2tlbmRJZAliYWNrZW5kOworCVByb2NOdW1iZXIJYmFja2Vu ZDsKIH0gUmVsRmlsZUxvY2F0b3JCYWNrZW5kOwogCiAjZGVmaW5lIFJlbEZpbGVMb2NhdG9y QmFja2VuZElzVGVtcChybG9jYXRvcikgXAotCSgocmxvY2F0b3IpLmJhY2tlbmQgIT0gSW52 YWxpZEJhY2tlbmRJZCkKKwkoKHJsb2NhdG9yKS5iYWNrZW5kICE9IElOVkFMSURfUFJPQ19O VU1CRVIpCiAKIC8qCiAgKiBOb3RlOiBSZWxGaWxlTG9jYXRvckVxdWFscyBhbmQgUmVsRmls ZUxvY2F0b3JCYWNrZW5kRXF1YWxzIGNvbXBhcmUgcmVsTnVtYmVyCiAgKiBmaXJzdCBzaW5j ZSB0aGF0IGlzIG1vc3QgbGlrZWx5IHRvIGJlIGRpZmZlcmVudCBpbiB0d28gdW5lcXVhbAog ICogUmVsRmlsZUxvY2F0b3JzLiAgSXQgaXMgcHJvYmFibHkgcmVkdW5kYW50IHRvIGNvbXBh cmUgc3BjT2lkIGlmIHRoZSBvdGhlcgogICogZmllbGRzIGFyZSBmb3VuZCBlcXVhbCwgYnV0 IGRvIGl0IGFueXdheSB0byBiZSBzdXJlLiAgTGlrZXdpc2UgZm9yIGNoZWNraW5nCi0gKiB0 aGUgYmFja2VuZCBJRCBpbiBSZWxGaWxlTG9jYXRvckJhY2tlbmRFcXVhbHMuCisgKiB0aGUg YmFja2VuZCBudW1iZXIgaW4gUmVsRmlsZUxvY2F0b3JCYWNrZW5kRXF1YWxzLgogICovCiAj ZGVmaW5lIFJlbEZpbGVMb2NhdG9yRXF1YWxzKGxvY2F0b3IxLCBsb2NhdG9yMikgXAogCSgo bG9jYXRvcjEpLnJlbE51bWJlciA9PSAobG9jYXRvcjIpLnJlbE51bWJlciAmJiBcCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbC5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9zaW52YWwuaAppbmRleCAxYmRkNTg5NDVkMi4uOGY1NzQ0YjIxYmMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9zaW52YWwuaApAQCAtODgsOCArODgsOCBAQCB0eXBlZGVmIHN0cnVjdAogewogCS8q IG5vdGU6IGZpZWxkIGxheW91dCBjaG9zZW4gdG8gcGFjayBpbnRvIDE2IGJ5dGVzICovCiAJ aW50OAkJaWQ7CQkJCS8qIHR5cGUgZmllbGQgLS0tIG11c3QgYmUgZmlyc3QgKi8KLQlpbnQ4 CQliYWNrZW5kX2hpOwkJLyogaGlnaCBiaXRzIG9mIGJhY2tlbmQgSUQsIGlmIHRlbXByZWwg Ki8KLQl1aW50MTYJCWJhY2tlbmRfbG87CQkvKiBsb3cgYml0cyBvZiBiYWNrZW5kIElELCBp ZiB0ZW1wcmVsICovCisJaW50OAkJYmFja2VuZF9oaTsJCS8qIGhpZ2ggYml0cyBvZiBiYWNr ZW5kIHByb2NubywgaWYgdGVtcHJlbCAqLworCXVpbnQxNgkJYmFja2VuZF9sbzsJCS8qIGxv dyBiaXRzIG9mIGJhY2tlbmQgcHJvY25vLCBpZiB0ZW1wcmVsICovCiAJUmVsRmlsZUxvY2F0 b3IgcmxvY2F0b3I7CS8qIHNwY09pZCwgZGJPaWQsIHJlbE51bWJlciAqLwogfSBTaGFyZWRJ bnZhbFNtZ3JNc2c7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc21nci5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zbWdyLmgKaW5kZXggOGQ5MGQxZjhlMjIuLmUxMzBh Y2VlYThhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NtZ3IuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3NtZ3IuaApAQCAtNzQsNyArNzQsNyBAQCB0eXBlZGVmIFNN Z3JSZWxhdGlvbkRhdGEgKlNNZ3JSZWxhdGlvbjsKIAlSZWxGaWxlTG9jYXRvckJhY2tlbmRJ c1RlbXAoKHNtZ3IpLT5zbWdyX3Jsb2NhdG9yKQogCiBleHRlcm4gdm9pZCBzbWdyaW5pdCh2 b2lkKTsKLWV4dGVybiBTTWdyUmVsYXRpb24gc21ncm9wZW4oUmVsRmlsZUxvY2F0b3Igcmxv Y2F0b3IsIEJhY2tlbmRJZCBiYWNrZW5kKTsKK2V4dGVybiBTTWdyUmVsYXRpb24gc21ncm9w ZW4oUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIFByb2NOdW1iZXIgYmFja2VuZCk7CiBleHRl cm4gYm9vbCBzbWdyZXhpc3RzKFNNZ3JSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtu dW0pOwogZXh0ZXJuIHZvaWQgc21ncnBpbihTTWdyUmVsYXRpb24gcmVsbik7CiBleHRlcm4g dm9pZCBzbWdydW5waW4oU01nclJlbGF0aW9uIHJlbG4pOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tl bmRfc3RhdHVzLmgKaW5kZXggN2I4YTM0ZjY0ZjYuLjdiN2Y2ZjU5ZDA3IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKQEAgLTEzLDcgKzEzLDcgQEAKICNpbmNsdWRlICJk YXRhdHlwZS90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJsaWJwcS9wcWNvbW0uaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIJCQkvKiBmb3IgQmFja2VuZFR5cGUgKi8KLSNpbmNsdWRlICJz dG9yYWdlL2JhY2tlbmRpZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgog I2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfcHJvZ3Jlc3MuaCIKIAogCkBAIC04Nyw3ICs4Nyw3 IEBAIHR5cGVkZWYgc3RydWN0IFBnQmFja2VuZEdTU1N0YXR1cwogICoKICAqIEVhY2ggbGl2 ZSBiYWNrZW5kIG1haW50YWlucyBhIFBnQmFja2VuZFN0YXR1cyBzdHJ1Y3QgaW4gc2hhcmVk IG1lbW9yeQogICogc2hvd2luZyBpdHMgY3VycmVudCBhY3Rpdml0eS4gIChUaGUgc3RydWN0 cyBhcmUgYWxsb2NhdGVkIGFjY29yZGluZyB0bwotICogQmFja2VuZElkLCBidXQgdGhhdCBp cyBub3QgY3JpdGljYWwuKSAgTm90ZSB0aGF0IHRoaXMgaXMgdW5yZWxhdGVkIHRvIHRoZQor ICogUHJvY051bWJlciwgYnV0IHRoYXQgaXMgbm90IGNyaXRpY2FsLikgIE5vdGUgdGhhdCB0 aGlzIGlzIHVucmVsYXRlZCB0byB0aGUKICAqIGN1bXVsYXRpdmUgc3RhdHMgc3lzdGVtIChp LmUuIHBnc3RhdC5jIGV0IGFsKS4KICAqCiAgKiBFYWNoIGF1eGlsaWFyeSBwcm9jZXNzIGFs c28gbWFpbnRhaW5zIGEgUGdCYWNrZW5kU3RhdHVzIHN0cnVjdCBpbiBzaGFyZWQKQEAgLTI1 MCwxMSArMjUwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9jYWxQZ0JhY2tlbmRTdGF0dXMKIAlQ Z0JhY2tlbmRTdGF0dXMgYmFja2VuZFN0YXR1czsKIAogCS8qCi0JICogVGhlIGJhY2tlbmQg SUQuICBGb3IgYXV4aWxpYXJ5IHByb2Nlc3NlcywgdGhpcyB3aWxsIGJlIHNldCB0byBhIHZh bHVlCi0JICogZ3JlYXRlciB0aGFuIE1heEJhY2tlbmRzIChzaW5jZSBhdXhpbGlhcnkgcHJv Y2Vzc2VzIGRvIG5vdCBoYXZlIHByb3BlcgotCSAqIGJhY2tlbmQgSURzKS4KKwkgKiBUaGUg cHJvYyBudW1iZXIuCiAJICovCi0JQmFja2VuZElkCWJhY2tlbmRfaWQ7CisJUHJvY051bWJl cglwcm9jX251bWJlcjsKIAogCS8qCiAJICogVGhlIHhpZCBvZiB0aGUgY3VycmVudCB0cmFu c2FjdGlvbiBpZiBhdmFpbGFibGUsIEludmFsaWRUcmFuc2FjdGlvbklkCkBAIC0zMzMsOCAr MzMxLDggQEAgZXh0ZXJuIHVpbnQ2NCBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKHZvaWQpOwog ICogLS0tLS0tLS0tLQogICovCiBleHRlcm4gaW50CXBnc3RhdF9mZXRjaF9zdGF0X251bWJh Y2tlbmRzKHZvaWQpOwotZXh0ZXJuIFBnQmFja2VuZFN0YXR1cyAqcGdzdGF0X2dldF9iZWVu dHJ5X2J5X2JhY2tlbmRfaWQoQmFja2VuZElkIGJlaWQpOwotZXh0ZXJuIExvY2FsUGdCYWNr ZW5kU3RhdHVzICpwZ3N0YXRfZ2V0X2xvY2FsX2JlZW50cnlfYnlfYmFja2VuZF9pZChCYWNr ZW5kSWQgYmVpZCk7CitleHRlcm4gUGdCYWNrZW5kU3RhdHVzICpwZ3N0YXRfZ2V0X2JlZW50 cnlfYnlfcHJvY19udW1iZXIoUHJvY051bWJlciBwcm9jTnVtYmVyKTsKK2V4dGVybiBMb2Nh bFBnQmFja2VuZFN0YXR1cyAqcGdzdGF0X2dldF9sb2NhbF9iZWVudHJ5X2J5X3Byb2NfbnVt YmVyKFByb2NOdW1iZXIgcHJvY051bWJlcik7CiBleHRlcm4gTG9jYWxQZ0JhY2tlbmRTdGF0 dXMgKnBnc3RhdF9nZXRfbG9jYWxfYmVlbnRyeV9ieV9pbmRleChpbnQgaWR4KTsKIGV4dGVy biBjaGFyICpwZ3N0YXRfY2xpcF9hY3Rpdml0eShjb25zdCBjaGFyICpyYXdfYWN0aXZpdHkp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3JlbC5oCmluZGV4IGFiOWZhNGZhZjlmLi5iM2VhMmIyMDQyMSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmgKQEAgLTU3LDcgKzU3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25EYXRhCiAJUmVs RmlsZUxvY2F0b3IgcmRfbG9jYXRvcjsJLyogcmVsYXRpb24gcGh5c2ljYWwgaWRlbnRpZmll ciAqLwogCVNNZ3JSZWxhdGlvbiByZF9zbWdyOwkJLyogY2FjaGVkIGZpbGUgaGFuZGxlLCBv ciBOVUxMICovCiAJaW50CQkJcmRfcmVmY250OwkJLyogcmVmZXJlbmNlIGNvdW50ICovCi0J QmFja2VuZElkCXJkX2JhY2tlbmQ7CQkvKiBvd25pbmcgYmFja2VuZCBpZCwgaWYgdGVtcG9y YXJ5IHJlbGF0aW9uICovCisJUHJvY051bWJlcglyZF9iYWNrZW5kOwkJLyogb3duaW5nIGJh Y2tlbmQncyBwcm9jIG51bWJlciwgaWYgdGVtcCByZWwgKi8KIAlib29sCQlyZF9pc2xvY2Fs dGVtcDsgLyogcmVsIGlzIGEgdGVtcCByZWwgb2YgdGhpcyBzZXNzaW9uICovCiAJYm9vbAkJ cmRfaXNuYWlsZWQ7CS8qIHJlbCBpcyBuYWlsZWQgaW4gY2FjaGUgKi8KIAlib29sCQlyZF9p c3ZhbGlkOwkJLyogcmVsY2FjaGUgZW50cnkgaXMgdmFsaWQgKi8KLS0gCjIuMzkuMgoK --------------LB4LeaPPEnnj873WKcnN4ONy--