Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mg5hx-00033Q-U5 for pgsql-hackers@arkaria.postgresql.org; Thu, 28 Oct 2021 13:44:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mg5hw-00015o-6F for pgsql-hackers@arkaria.postgresql.org; Thu, 28 Oct 2021 13:44:40 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mg5hv-00015f-Nm for pgsql-hackers@lists.postgresql.org; Thu, 28 Oct 2021 13:44:39 +0000 Received: from mxout2.routing.net ([2a03:2900:1:a::b]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mg5hr-0006uR-Lc for pgsql-hackers@postgresql.org; Thu, 28 Oct 2021 13:44:39 +0000 Received: from mxbox1.masterlogin.de (unknown [192.168.10.88]) by mxout2.routing.net (Postfix) with ESMTP id 00C775FBCB for ; Thu, 28 Oct 2021 13:44:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1635428673; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=ReYsC4DNMzXt9m0Kd08Ut2bgWVl1fbrPZyp2ZlEGGKI=; b=t3NaQWxMxtB1DrXNwPUECwyzNoV9jjdyyGIKHXoLjT5oj5Kya4VuIVOzYu7teKcYiuBKZr vPJDFOpiKmttHLAqpoFsTB5O94Pg78p6/yKTam/UGywXQpRvLNN7b5k5MwK2BJOd+JW/qI GnLGa/XKYcfKho3Yitw4lNUscRRfasI= Received: from remote.index.de (business-90-187-114-221.pool2.vodafone-ip.de [90.187.114.221]) by mxbox1.masterlogin.de (Postfix) with ESMTPSA id 5A65640269 for ; Thu, 28 Oct 2021 13:44:32 +0000 (UTC) Received: from acedia.index-gruppe.local (192.168.3.121) by invidia.index-gruppe.local (192.168.3.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Thu, 28 Oct 2021 15:44:31 +0200 Received: from acedia.index-gruppe.local ([fe80::d41b:9219:c8a2:ec55]) by acedia.index-gruppe.local ([fe80::d41b:9219:c8a2:ec55%13]) with mapi id 15.01.2176.014; Thu, 28 Oct 2021 15:44:31 +0200 From: Arne Roland To: pgsql-hackers Subject: Re: missing indexes in indexlist with partitioned tables Thread-Topic: missing indexes in indexlist with partitioned tables Thread-Index: AQHXsJoeXw6ojQG4NkOLdiX4KUBdD6vkTOpc Date: Thu, 28 Oct 2021 13:44:31 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.255.1.33] Content-Type: multipart/mixed; boundary="_004_fa4168b2f72e44939e66f297037b9be9indexde_" MIME-Version: 1.0 X-Mail-ID: 3c46b756-b8df-46a6-baae-e850a32208ac List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_fa4168b2f72e44939e66f297037b9be9indexde_ Content-Type: multipart/alternative; boundary="_000_fa4168b2f72e44939e66f297037b9be9indexde_" --_000_fa4168b2f72e44939e66f297037b9be9indexde_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, I stumbled across a few places that depend on the inheritance appends being= applied at a later date, so I quickly abandoned that idea. I thought a bit= about the indexlist, in particular the inhparent, and I am not sure what d= epends on get_relation_info working in that way. Therefore I propose a new attribute partIndexlist of RelOptInfo to include = information about uniqueness, in the case the executor can't use the struct= ure that causes the uniqueness to begin with. Said attribute can be used by= relation_has_unique_index_for and rel_supports_distinctness. The attached patch takes that route. I'd appreciate feedback! Regards Arne --_000_fa4168b2f72e44939e66f297037b9be9indexde_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi,


I stumbled across a few places that depend on the inheritance appends be= ing applied at a later date, so I quickly abandoned that idea. I thought a = bit about the indexlist, in particular the inhparent, and I am not sure wha= t depends on get_relation_info working in that way.


Therefore I propose a new attribute partIndexlist of RelOptInfo to inclu= de information about uniqueness, in the case the executor can't use the str= ucture that causes the uniqueness to begin with. Said attribute can be used= by relation_has_unique_index_for and rel_supports_distinctness.


The attached patch takes that route. I'd appreciate feedback!


Regards
Arne


--_000_fa4168b2f72e44939e66f297037b9be9indexde_-- --_004_fa4168b2f72e44939e66f297037b9be9indexde_ Content-Type: text/x-patch; name="partIndexlistClean.patch" Content-Description: partIndexlistClean.patch Content-Disposition: attachment; filename="partIndexlistClean.patch"; size=65736; creation-date="Thu, 28 Oct 2021 13:44:09 GMT"; modification-date="Thu, 28 Oct 2021 13:44:09 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCAwNTIyMWNjMWQ2Li5lM2RjYTRi NDY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMzc1LDcgKzIzNzUs NyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3JlbChMVlJlbFN0YXRlICp2YWNyZWwpCiAKIAllcmVwb3J0 KGVsZXZlbCwKIAkJCShlcnJtc2coInRhYmxlIFwiJXNcIjogcmVtb3ZlZCAlbGxkIGRlYWQgaXRl bSBpZGVudGlmaWVycyBpbiAldSBwYWdlcyIsCi0JCQkJCXZhY3JlbC0+cmVsbmFtZSwgKGxvbmcg bG9uZyApIHR1cGluZGV4LCB2YWN1dW1lZF9wYWdlcyksCisJCQkJCXZhY3JlbC0+cmVsbmFtZSwg KGxvbmcgbG9uZykgdHVwaW5kZXgsIHZhY3V1bWVkX3BhZ2VzKSwKIAkJCSBlcnJkZXRhaWxfaW50 ZXJuYWwoIiVzIiwgcGdfcnVzYWdlX3Nob3coJnJ1MCkpKSk7CiAKIAkvKiBSZXZlcnQgdG8gdGhl IHByZXZpb3VzIHBoYXNlIGluZm9ybWF0aW9uIGZvciBlcnJvciB0cmFjZWJhY2sgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBmNTQ3ZWZkMjk0Li45NGZjYThjZjhiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC05MDYsNyArOTA2LDcgQEAgc3RhdGljIHZvaWQgY2hl Y2tUaW1lTGluZVN3aXRjaChYTG9nUmVjUHRyIGxzbiwgVGltZUxpbmVJRCBuZXdUTEksCiAJCQkJ CQkJCVRpbWVMaW5lSUQgcHJldlRMSSk7CiBzdGF0aWMgdm9pZCBWZXJpZnlPdmVyd3JpdGVDb250 cmVjb3JkKHhsX292ZXJ3cml0ZV9jb250cmVjb3JkICp4bHJlYywKIAkJCQkJCQkJCSAgWExvZ1Jl YWRlclN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgaW50IExvY2FsU2V0WExvZ0luc2VydEFsbG93ZWQo dm9pZCk7CitzdGF0aWMgaW50CUxvY2FsU2V0WExvZ0luc2VydEFsbG93ZWQodm9pZCk7CiBzdGF0 aWMgdm9pZCBDcmVhdGVFbmRPZlJlY292ZXJ5UmVjb3JkKHZvaWQpOwogc3RhdGljIFhMb2dSZWNQ dHIgQ3JlYXRlT3ZlcndyaXRlQ29udHJlY29yZFJlY29yZChYTG9nUmVjUHRyIGFib3J0ZWRfbHNu KTsKIHN0YXRpYyB2b2lkIENoZWNrUG9pbnRHdXRzKFhMb2dSZWNQdHIgY2hlY2tQb2ludFJlZG8s IGludCBmbGFncyk7CkBAIC01NzUzLDM4ICs1NzUzLDM4IEBAIENsZWFudXBBZnRlckFyY2hpdmVS ZWNvdmVyeShUaW1lTGluZUlEIEVuZE9mTG9nVExJLCBYTG9nUmVjUHRyIEVuZE9mTG9nKQogCSAq IFdlIHN3aXRjaGVkIHRvIGEgbmV3IHRpbWVsaW5lLiBDbGVhbiB1cCBzZWdtZW50cyBvbiB0aGUg b2xkIHRpbWVsaW5lLgogCSAqCiAJICogSWYgdGhlcmUgYXJlIGFueSBoaWdoZXItbnVtYmVyZWQg c2VnbWVudHMgb24gdGhlIG9sZCB0aW1lbGluZSwgcmVtb3ZlCi0JICogdGhlbS4gVGhleSBtaWdo dCBjb250YWluIHZhbGlkIFdBTCwgYnV0IHRoZXkgbWlnaHQgYWxzbyBiZSBwcmUtYWxsb2NhdGVk Ci0JICogZmlsZXMgY29udGFpbmluZyBnYXJiYWdlLiBJbiBhbnkgY2FzZSwgdGhleSBhcmUgbm90 IHBhcnQgb2YgdGhlIG5ldwotCSAqIHRpbWVsaW5lJ3MgaGlzdG9yeSBzbyB3ZSBkb24ndCBuZWVk IHRoZW0uCisJICogdGhlbS4gVGhleSBtaWdodCBjb250YWluIHZhbGlkIFdBTCwgYnV0IHRoZXkg bWlnaHQgYWxzbyBiZQorCSAqIHByZS1hbGxvY2F0ZWQgZmlsZXMgY29udGFpbmluZyBnYXJiYWdl LiBJbiBhbnkgY2FzZSwgdGhleSBhcmUgbm90IHBhcnQKKwkgKiBvZiB0aGUgbmV3IHRpbWVsaW5l J3MgaGlzdG9yeSBzbyB3ZSBkb24ndCBuZWVkIHRoZW0uCiAJICovCiAJUmVtb3ZlTm9uUGFyZW50 WGxvZ0ZpbGVzKEVuZE9mTG9nLCBUaGlzVGltZUxpbmVJRCk7CiAKIAkvKgogCSAqIElmIHRoZSBz d2l0Y2ggaGFwcGVuZWQgaW4gdGhlIG1pZGRsZSBvZiBhIHNlZ21lbnQsIHdoYXQgdG8gZG8gd2l0 aCB0aGUKIAkgKiBsYXN0LCBwYXJ0aWFsIHNlZ21lbnQgb24gdGhlIG9sZCB0aW1lbGluZT8gSWYg d2UgZG9uJ3QgYXJjaGl2ZSBpdCwgYW5kCi0JICogdGhlIHNlcnZlciB0aGF0IGNyZWF0ZWQgdGhl IFdBTCBuZXZlciBhcmNoaXZlcyBpdCBlaXRoZXIgKGUuZy4gYmVjYXVzZSBpdAotCSAqIHdhcyBo aXQgYnkgYSBtZXRlb3IpLCBpdCB3aWxsIG5ldmVyIG1ha2UgaXQgdG8gdGhlIGFyY2hpdmUuIFRo YXQncyBPSwotCSAqIGZyb20gb3VyIHBvaW50IG9mIHZpZXcsIGJlY2F1c2UgdGhlIG5ldyBzZWdt ZW50IHRoYXQgd2UgY3JlYXRlZCB3aXRoIHRoZQotCSAqIG5ldyBUTEkgY29udGFpbnMgYWxsIHRo ZSBXQUwgZnJvbSB0aGUgb2xkIHRpbWVsaW5lIHVwIHRvIHRoZSBzd2l0Y2gKKwkgKiB0aGUgc2Vy dmVyIHRoYXQgY3JlYXRlZCB0aGUgV0FMIG5ldmVyIGFyY2hpdmVzIGl0IGVpdGhlciAoZS5nLiBi ZWNhdXNlCisJICogaXQgd2FzIGhpdCBieSBhIG1ldGVvciksIGl0IHdpbGwgbmV2ZXIgbWFrZSBp dCB0byB0aGUgYXJjaGl2ZS4gVGhhdCdzCisJICogT0sgZnJvbSBvdXIgcG9pbnQgb2Ygdmlldywg YmVjYXVzZSB0aGUgbmV3IHNlZ21lbnQgdGhhdCB3ZSBjcmVhdGVkIHdpdGgKKwkgKiB0aGUgbmV3 IFRMSSBjb250YWlucyBhbGwgdGhlIFdBTCBmcm9tIHRoZSBvbGQgdGltZWxpbmUgdXAgdG8gdGhl IHN3aXRjaAogCSAqIHBvaW50LiBCdXQgaWYgeW91IGxhdGVyIHRyeSB0byBkbyBQSVRSIHRvIHRo ZSAibWlzc2luZyIgV0FMIG9uIHRoZSBvbGQKLQkgKiB0aW1lbGluZSwgcmVjb3Zlcnkgd29uJ3Qg ZmluZCBpdCBpbiB0aGUgYXJjaGl2ZS4gSXQncyBwaHlzaWNhbGx5IHByZXNlbnQKLQkgKiBpbiB0 aGUgbmV3IGZpbGUgd2l0aCBuZXcgVExJLCBidXQgcmVjb3Zlcnkgd29uJ3QgbG9vayB0aGVyZSB3 aGVuIGl0J3MKLQkgKiByZWNvdmVyaW5nIHRvIHRoZSBvbGRlciB0aW1lbGluZS4gT24gdGhlIG90 aGVyIGhhbmQsIGlmIHdlIGFyY2hpdmUgdGhlCi0JICogcGFydGlhbCBzZWdtZW50LCBhbmQgdGhl IG9yaWdpbmFsIHNlcnZlciBvbiB0aGF0IHRpbWVsaW5lIGlzIHN0aWxsCi0JICogcnVubmluZyBh bmQgYXJjaGl2ZXMgdGhlIGNvbXBsZXRlZCB2ZXJzaW9uIG9mIHRoZSBzYW1lIHNlZ21lbnQgbGF0 ZXIsIGl0Ci0JICogd2lsbCBmYWlsLiAoV2UgdXNlZCB0byBkbyB0aGF0IGluIDkuNCBhbmQgYmVs b3csIGFuZCBpdCBjYXVzZWQgc3VjaAotCSAqIHByb2JsZW1zKS4KKwkgKiB0aW1lbGluZSwgcmVj b3Zlcnkgd29uJ3QgZmluZCBpdCBpbiB0aGUgYXJjaGl2ZS4gSXQncyBwaHlzaWNhbGx5CisJICog cHJlc2VudCBpbiB0aGUgbmV3IGZpbGUgd2l0aCBuZXcgVExJLCBidXQgcmVjb3Zlcnkgd29uJ3Qg bG9vayB0aGVyZQorCSAqIHdoZW4gaXQncyByZWNvdmVyaW5nIHRvIHRoZSBvbGRlciB0aW1lbGlu ZS4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHdlCisJICogYXJjaGl2ZSB0aGUgcGFydGlhbCBzZWdt ZW50LCBhbmQgdGhlIG9yaWdpbmFsIHNlcnZlciBvbiB0aGF0IHRpbWVsaW5lCisJICogaXMgc3Rp bGwgcnVubmluZyBhbmQgYXJjaGl2ZXMgdGhlIGNvbXBsZXRlZCB2ZXJzaW9uIG9mIHRoZSBzYW1l IHNlZ21lbnQKKwkgKiBsYXRlciwgaXQgd2lsbCBmYWlsLiAoV2UgdXNlZCB0byBkbyB0aGF0IGlu IDkuNCBhbmQgYmVsb3csIGFuZCBpdAorCSAqIGNhdXNlZCBzdWNoIHByb2JsZW1zKS4KIAkgKgot CSAqIEFzIGEgY29tcHJvbWlzZSwgd2UgcmVuYW1lIHRoZSBsYXN0IHNlZ21lbnQgd2l0aCB0aGUg LnBhcnRpYWwgc3VmZml4LCBhbmQKLQkgKiBhcmNoaXZlIGl0LiBBcmNoaXZlIHJlY292ZXJ5IHdp bGwgbmV2ZXIgdHJ5IHRvIHJlYWQgLnBhcnRpYWwgc2VnbWVudHMsIHNvCi0JICogdGhleSB3aWxs IG5vcm1hbGx5IGdvIHVudXNlZC4gQnV0IGluIHRoZSBvZGQgUElUUiBjYXNlLCB0aGUgYWRtaW5p c3RyYXRvcgotCSAqIGNhbiBjb3B5IHRoZW0gbWFudWFsbHkgdG8gdGhlIHBnX3dhbCBkaXJlY3Rv cnkgKHJlbW92aW5nIHRoZSBzdWZmaXgpLgotCSAqIFRoZXkgY2FuIGJlIHVzZWZ1bCBpbiBkZWJ1 Z2dpbmcsIHRvby4KKwkgKiBBcyBhIGNvbXByb21pc2UsIHdlIHJlbmFtZSB0aGUgbGFzdCBzZWdt ZW50IHdpdGggdGhlIC5wYXJ0aWFsIHN1ZmZpeCwKKwkgKiBhbmQgYXJjaGl2ZSBpdC4gQXJjaGl2 ZSByZWNvdmVyeSB3aWxsIG5ldmVyIHRyeSB0byByZWFkIC5wYXJ0aWFsCisJICogc2VnbWVudHMs IHNvIHRoZXkgd2lsbCBub3JtYWxseSBnbyB1bnVzZWQuIEJ1dCBpbiB0aGUgb2RkIFBJVFIgY2Fz ZSwKKwkgKiB0aGUgYWRtaW5pc3RyYXRvciBjYW4gY29weSB0aGVtIG1hbnVhbGx5IHRvIHRoZSBw Z193YWwgZGlyZWN0b3J5CisJICogKHJlbW92aW5nIHRoZSBzdWZmaXgpLiBUaGV5IGNhbiBiZSB1 c2VmdWwgaW4gZGVidWdnaW5nLCB0b28uCiAJICoKIAkgKiBJZiBhIC5kb25lIG9yIC5yZWFkeSBm aWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgb2xkIHRpbWVsaW5lLCBob3dldmVyLAotCSAqIHdl IGhhZCBhbHJlYWR5IGRldGVybWluZWQgdGhhdCB0aGUgc2VnbWVudCBpcyBjb21wbGV0ZSwgc28g d2UgY2FuIGxldCBpdAotCSAqIGJlIGFyY2hpdmVkIG5vcm1hbGx5LiAoSW4gcGFydGljdWxhciwg aWYgaXQgd2FzIHJlc3RvcmVkIGZyb20gdGhlIGFyY2hpdmUKLQkgKiB0byBiZWdpbiB3aXRoLCBp dCdzIGV4cGVjdGVkIHRvIGhhdmUgYSAuZG9uZSBmaWxlKS4KKwkgKiB3ZSBoYWQgYWxyZWFkeSBk ZXRlcm1pbmVkIHRoYXQgdGhlIHNlZ21lbnQgaXMgY29tcGxldGUsIHNvIHdlIGNhbiBsZXQKKwkg KiBpdCBiZSBhcmNoaXZlZCBub3JtYWxseS4gKEluIHBhcnRpY3VsYXIsIGlmIGl0IHdhcyByZXN0 b3JlZCBmcm9tIHRoZQorCSAqIGFyY2hpdmUgdG8gYmVnaW4gd2l0aCwgaXQncyBleHBlY3RlZCB0 byBoYXZlIGEgLmRvbmUgZmlsZSkuCiAJICovCiAJaWYgKFhMb2dTZWdtZW50T2Zmc2V0KEVuZE9m TG9nLCB3YWxfc2VnbWVudF9zaXplKSAhPSAwICYmCiAJCVhMb2dBcmNoaXZpbmdBY3RpdmUoKSkK QEAgLTgxMDAsMTAgKzgxMDAsMTAgQEAgU3RhcnR1cFhMT0codm9pZCkKIAkgKiBFbWl0IGNoZWNr cG9pbnQgb3IgZW5kLW9mLXJlY292ZXJ5IHJlY29yZCBpbiBYTE9HLCBpZiByZXF1aXJlZC4KIAkg KgogCSAqIFhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciB3aWxsIGJlIGEgdmFsaWQgTFNO IGlmIGFuZCBvbmx5IGlmIHdlCi0JICogZW50ZXJlZCByZWNvdmVyeS4gRXZlbiBpZiB3ZSB1bHRp bWF0ZWx5IHJlcGxheWVkIG5vIFdBTCByZWNvcmRzLCBpdCB3aWxsCi0JICogaGF2ZSBiZWVuIGlu aXRpYWxpemVkIGJhc2VkIG9uIHdoZXJlIHJlcGxheSB3YXMgZHVlIHRvIHN0YXJ0LiAgV2UgZG9u J3QKLQkgKiBuZWVkIGEgbG9jayB0byBhY2Nlc3MgdGhpcywgc2luY2UgdGhpcyBjYW4ndCBjaGFu Z2UgYW55IG1vcmUgYnkgdGhlIHRpbWUKLQkgKiB3ZSByZWFjaCB0aGlzIGNvZGUuCisJICogZW50 ZXJlZCByZWNvdmVyeS4gRXZlbiBpZiB3ZSB1bHRpbWF0ZWx5IHJlcGxheWVkIG5vIFdBTCByZWNv cmRzLCBpdAorCSAqIHdpbGwgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGJhc2VkIG9uIHdoZXJlIHJl cGxheSB3YXMgZHVlIHRvIHN0YXJ0LiAgV2UKKwkgKiBkb24ndCBuZWVkIGEgbG9jayB0byBhY2Nl c3MgdGhpcywgc2luY2UgdGhpcyBjYW4ndCBjaGFuZ2UgYW55IG1vcmUgYnkKKwkgKiB0aGUgdGlt ZSB3ZSByZWFjaCB0aGlzIGNvZGUuCiAJICovCiAJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKFhM b2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0cikpCiAJCXByb21vdGVkID0gUGVyZm9ybVJlY292 ZXJ5WExvZ0FjdGlvbigpOwpAQCAtODI5MiwxNSArODI5MiwxNSBAQCBQZXJmb3JtUmVjb3ZlcnlY TG9nQWN0aW9uKHZvaWQpCiAJLyoKIAkgKiBQZXJmb3JtIGEgY2hlY2twb2ludCB0byB1cGRhdGUg YWxsIG91ciByZWNvdmVyeSBhY3Rpdml0eSB0byBkaXNrLgogCSAqCi0JICogTm90ZSB0aGF0IHdl IHdyaXRlIGEgc2h1dGRvd24gY2hlY2twb2ludCByYXRoZXIgdGhhbiBhbiBvbi1saW5lIG9uZS4g VGhpcwotCSAqIGlzIG5vdCBwYXJ0aWN1bGFybHkgY3JpdGljYWwsIGJ1dCBzaW5jZSB3ZSBtYXkg YmUgYXNzaWduaW5nIGEgbmV3IFRMSSwKLQkgKiB1c2luZyBhIHNodXRkb3duIGNoZWNrcG9pbnQg YWxsb3dzIHVzIHRvIGhhdmUgdGhlIHJ1bGUgdGhhdCBUTEkgb25seQotCSAqIGNoYW5nZXMgaW4g c2h1dGRvd24gY2hlY2twb2ludHMsIHdoaWNoIGFsbG93cyBzb21lIGV4dHJhIGVycm9yIGNoZWNr aW5nCi0JICogaW4geGxvZ19yZWRvLgorCSAqIE5vdGUgdGhhdCB3ZSB3cml0ZSBhIHNodXRkb3du IGNoZWNrcG9pbnQgcmF0aGVyIHRoYW4gYW4gb24tbGluZSBvbmUuCisJICogVGhpcyBpcyBub3Qg cGFydGljdWxhcmx5IGNyaXRpY2FsLCBidXQgc2luY2Ugd2UgbWF5IGJlIGFzc2lnbmluZyBhIG5l dworCSAqIFRMSSwgdXNpbmcgYSBzaHV0ZG93biBjaGVja3BvaW50IGFsbG93cyB1cyB0byBoYXZl IHRoZSBydWxlIHRoYXQgVExJCisJICogb25seSBjaGFuZ2VzIGluIHNodXRkb3duIGNoZWNrcG9p bnRzLCB3aGljaCBhbGxvd3Mgc29tZSBleHRyYSBlcnJvcgorCSAqIGNoZWNraW5nIGluIHhsb2df cmVkby4KIAkgKgotCSAqIEluIHByb21vdGlvbiwgb25seSBjcmVhdGUgYSBsaWdodHdlaWdodCBl bmQtb2YtcmVjb3ZlcnkgcmVjb3JkIGluc3RlYWQgb2YKLQkgKiBhIGZ1bGwgY2hlY2twb2ludC4g QSBjaGVja3BvaW50IGlzIHJlcXVlc3RlZCBsYXRlciwgYWZ0ZXIgd2UncmUgZnVsbHkgb3V0Ci0J ICogb2YgcmVjb3ZlcnkgbW9kZSBhbmQgYWxyZWFkeSBhY2NlcHRpbmcgcXVlcmllcy4KKwkgKiBJ biBwcm9tb3Rpb24sIG9ubHkgY3JlYXRlIGEgbGlnaHR3ZWlnaHQgZW5kLW9mLXJlY292ZXJ5IHJl Y29yZCBpbnN0ZWFkCisJICogb2YgYSBmdWxsIGNoZWNrcG9pbnQuIEEgY2hlY2twb2ludCBpcyBy ZXF1ZXN0ZWQgbGF0ZXIsIGFmdGVyIHdlJ3JlCisJICogZnVsbHkgb3V0IG9mIHJlY292ZXJ5IG1v ZGUgYW5kIGFscmVhZHkgYWNjZXB0aW5nIHF1ZXJpZXMuCiAJICovCiAJaWYgKEFyY2hpdmVSZWNv dmVyeVJlcXVlc3RlZCAmJiBJc1VuZGVyUG9zdG1hc3RlciAmJgogCQlMb2NhbFByb21vdGVJc1Ry aWdnZXJlZCkKQEAgLTgzMTAsMTEgKzgzMTAsMTEgQEAgUGVyZm9ybVJlY292ZXJ5WExvZ0FjdGlv bih2b2lkKQogCQkvKgogCQkgKiBJbnNlcnQgYSBzcGVjaWFsIFdBTCByZWNvcmQgdG8gbWFyayB0 aGUgZW5kIG9mIHJlY292ZXJ5LCBzaW5jZSB3ZQogCQkgKiBhcmVuJ3QgZG9pbmcgYSBjaGVja3Bv aW50LiBUaGF0IG1lYW5zIHRoYXQgdGhlIGNoZWNrcG9pbnRlciBwcm9jZXNzCi0JCSAqIG1heSBs aWtlbHkgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRpbWUtc21vb3RoZWQgcmVzdGFydHBvaW50IGFu ZCBjb3VsZAotCQkgKiBjb250aW51ZSB0byBiZSBmb3IgbWludXRlcyBhZnRlciB0aGlzLiAgVGhh dCBzb3VuZHMgc3RyYW5nZSwgYnV0IHRoZQotCQkgKiBlZmZlY3QgaXMgcm91Z2hseSB0aGUgc2Ft ZSBhbmQgaXQgd291bGQgYmUgc3RyYW5nZXIgdG8gdHJ5IHRvIGNvbWUKLQkJICogb3V0IG9mIHRo ZSByZXN0YXJ0cG9pbnQgYW5kIHRoZW4gY2hlY2twb2ludC4gV2UgcmVxdWVzdCBhIGNoZWNrcG9p bnQKLQkJICogbGF0ZXIgYW55d2F5LCBqdXN0IGZvciBzYWZldHkuCisJCSAqIG1heSBsaWtlbHkg YmUgaW4gdGhlIG1pZGRsZSBvZiBhIHRpbWUtc21vb3RoZWQgcmVzdGFydHBvaW50IGFuZAorCQkg KiBjb3VsZCBjb250aW51ZSB0byBiZSBmb3IgbWludXRlcyBhZnRlciB0aGlzLiAgVGhhdCBzb3Vu ZHMgc3RyYW5nZSwKKwkJICogYnV0IHRoZSBlZmZlY3QgaXMgcm91Z2hseSB0aGUgc2FtZSBhbmQg aXQgd291bGQgYmUgc3RyYW5nZXIgdG8gdHJ5CisJCSAqIHRvIGNvbWUgb3V0IG9mIHRoZSByZXN0 YXJ0cG9pbnQgYW5kIHRoZW4gY2hlY2twb2ludC4gV2UgcmVxdWVzdCBhCisJCSAqIGNoZWNrcG9p bnQgbGF0ZXIgYW55d2F5LCBqdXN0IGZvciBzYWZldHkuCiAJCSAqLwogCQlDcmVhdGVFbmRPZlJl Y292ZXJ5UmVjb3JkKCk7CiAJfQpAQCAtODQ4Niw3ICs4NDg2LDcgQEAgWExvZ0luc2VydEFsbG93 ZWQodm9pZCkKIHN0YXRpYyBpbnQKIExvY2FsU2V0WExvZ0luc2VydEFsbG93ZWQodm9pZCkKIHsK LQlpbnQJCW9sZFhMb2dBbGxvd2VkID0gTG9jYWxYTG9nSW5zZXJ0QWxsb3dlZDsKKwlpbnQJCQlv bGRYTG9nQWxsb3dlZCA9IExvY2FsWExvZ0luc2VydEFsbG93ZWQ7CiAKIAlMb2NhbFhMb2dJbnNl cnRBbGxvd2VkID0gMTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCA4MWNjMzlmYjcwLi45N2RkZDJiMjRh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2hlYXAuYwpAQCAtMzU1MCw5ICszNTUwLDggQEAgcmVzdGFydDoKIAkJLyoKIAkJ ICogSWYgdGhpcyBjb25zdHJhaW50IGhhcyBhIHBhcmVudCBjb25zdHJhaW50IHdoaWNoIHdlIGhh dmUgbm90IHNlZW4KIAkJICogeWV0LCBrZWVwIHRyYWNrIG9mIGl0IGZvciB0aGUgc2Vjb25kIGxv b3AsIGJlbG93LiAgVHJhY2tpbmcgcGFyZW50Ci0JCSAqIGNvbnN0cmFpbnRzIGFsbG93cyB1cyB0 byBjbGltYiB1cCB0byB0aGUgdG9wLWxldmVsIGNvbnN0cmFpbnQKLQkJICogYW5kIGxvb2sgZm9y IGFsbCBwb3NzaWJsZSByZWxhdGlvbnMgcmVmZXJlbmNpbmcgdGhlIHBhcnRpdGlvbmVkCi0JCSAq IHRhYmxlLgorCQkgKiBjb25zdHJhaW50cyBhbGxvd3MgdXMgdG8gY2xpbWIgdXAgdG8gdGhlIHRv cC1sZXZlbCBjb25zdHJhaW50IGFuZAorCQkgKiBsb29rIGZvciBhbGwgcG9zc2libGUgcmVsYXRp b25zIHJlZmVyZW5jaW5nIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4KIAkJICovCiAJCWlmIChPaWRJ c1ZhbGlkKGNvbi0+Y29ucGFyZW50aWQpICYmCiAJCQkhbGlzdF9tZW1iZXJfb2lkKHBhcmVudF9j b25zLCBjb24tPmNvbnBhcmVudGlkKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv b2JqZWN0YWRkcmVzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5k ZXggMmJhZTNmYmIxNy4uODZiOTgxMzMwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9vYmplY3RhZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNz LmMKQEAgLTg1Niw3ICs4NTYsNyBAQCBjb25zdCBPYmplY3RBZGRyZXNzIEludmFsaWRPYmplY3RB ZGRyZXNzID0KIH07CiAKIHN0YXRpYyBPYmplY3RBZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc191 bnF1YWxpZmllZChPYmplY3RUeXBlIG9ianR5cGUsCi0JCQkJCQkJCQkJCQkJU3RyaW5nICpzdHJ2 YWwsIGJvb2wgbWlzc2luZ19vayk7CisJCQkJCQkJCQkJCQkJU3RyaW5nICogc3RydmFsLCBib29s IG1pc3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFkZHJlc3MgZ2V0X3JlbGF0aW9uX2J5X3F1YWxp ZmllZF9uYW1lKE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJCQkJCQkJCQlMaXN0ICpvYmplY3Qs IFJlbGF0aW9uICpyZWxwLAogCQkJCQkJCQkJCQkJCUxPQ0tNT0RFIGxvY2ttb2RlLCBib29sIG1p c3Npbmdfb2spOwpAQCAtMTI1NSw3ICsxMjU1LDcgQEAgZ2V0X29iamVjdF9hZGRyZXNzX3J2KE9i amVjdFR5cGUgb2JqdHlwZSwgUmFuZ2VWYXIgKnJlbCwgTGlzdCAqb2JqZWN0LAogICovCiBzdGF0 aWMgT2JqZWN0QWRkcmVzcwogZ2V0X29iamVjdF9hZGRyZXNzX3VucXVhbGlmaWVkKE9iamVjdFR5 cGUgb2JqdHlwZSwKLQkJCQkJCQkgICBTdHJpbmcgKnN0cnZhbCwgYm9vbCBtaXNzaW5nX29rKQor CQkJCQkJCSAgIFN0cmluZyAqIHN0cnZhbCwgYm9vbCBtaXNzaW5nX29rKQogewogCWNvbnN0IGNo YXIgKm5hbWU7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCmlu ZGV4IDQ5Mjg3MDJhZWMuLjliN2JiMWIzYmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTQy OCw3ICs0MjgsNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFt cyAqcGFyYW1zLAogCSAqLwogCWlmIChvbmVyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFKQogCXsKLQkJTGlzdCAqaWR4cyA9IFJlbGF0aW9uR2V0SW5kZXhM aXN0KG9uZXJlbCk7CisJCUxpc3QJICAgKmlkeHMgPSBSZWxhdGlvbkdldEluZGV4TGlzdChvbmVy ZWwpOwogCiAJCUlyZWwgPSBOVUxMOwogCQluaW5kZXhlcyA9IDA7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVy LmMKaW5kZXggOWQyMmY2NDhhOC4uZmZiYTQ3OTI2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY2x1c3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwpA QCAtMTUyOSw4ICsxNTI5LDggQEAgZmluaXNoX2hlYXBfc3dhcChPaWQgT0lET2xkSGVhcCwgT2lk IE9JRE5ld0hlYXAsCiAKIAkJCS8qCiAJCQkgKiBSZXNldCB0aGUgcmVscmV3cml0ZSBmb3IgdGhl IHRvYXN0LiBUaGUgY29tbWFuZC1jb3VudGVyCi0JCQkgKiBpbmNyZW1lbnQgaXMgcmVxdWlyZWQg aGVyZSBhcyB3ZSBhcmUgYWJvdXQgdG8gdXBkYXRlCi0JCQkgKiB0aGUgdHVwbGUgdGhhdCBpcyB1 cGRhdGVkIGFzIHBhcnQgb2YgUmVuYW1lUmVsYXRpb25JbnRlcm5hbC4KKwkJCSAqIGluY3JlbWVu dCBpcyByZXF1aXJlZCBoZXJlIGFzIHdlIGFyZSBhYm91dCB0byB1cGRhdGUgdGhlIHR1cGxlCisJ CQkgKiB0aGF0IGlzIHVwZGF0ZWQgYXMgcGFydCBvZiBSZW5hbWVSZWxhdGlvbkludGVybmFsLgog CQkJICovCiAJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCQkJUmVzZXRSZWxSZXdyaXRl KG5ld3JlbC0+cmRfcmVsLT5yZWx0b2FzdHJlbGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMKaW5kZXggZDFmZmYxM2QyZS4uMjFiZjUwYTgxYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTgxMyw3ICs4MTMsNyBAQCBSZW1vdmVQdWJsaWNh dGlvbkJ5SWQoT2lkIHB1YmlkKQogCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQogCQllbG9n KEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcHVibGljYXRpb24gJXUiLCBwdWJpZCk7 CiAKLQlwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pR0VUU1RSVUNUKHR1cCk7CisJcHVi Zm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAogCS8qIEludmFs aWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuICovCiAJ aWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3N0YXRzY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKaW5kZXgg OGYxNTUwZWM4MC4uZTJmZTFlMTc0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv c3RhdHNjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRzLmMKQEAgLTI2 MSw5ICsyNjEsOSBAQCBDcmVhdGVTdGF0aXN0aWNzKENyZWF0ZVN0YXRzU3RtdCAqc3RtdCkKIAkJ CW5hdHRudW1zKys7CiAJCQlSZWxlYXNlU3lzQ2FjaGUoYXR0dHVwbGUpOwogCQl9Ci0JCWVsc2Ug aWYgKElzQShzZWxlbS0+ZXhwciwgVmFyKSkJLyogY29sdW1uIHJlZmVyZW5jZSBpbiBwYXJlbnMg Ki8KKwkJZWxzZSBpZiAoSXNBKHNlbGVtLT5leHByLCBWYXIpKSAvKiBjb2x1bW4gcmVmZXJlbmNl IGluIHBhcmVucyAqLwogCQl7Ci0JCQlWYXIgKnZhciA9IChWYXIgKikgc2VsZW0tPmV4cHI7CisJ CQlWYXIJCSAgICp2YXIgPSAoVmFyICopIHNlbGVtLT5leHByOwogCQkJVHlwZUNhY2hlRW50cnkg KnR5cGU7CiAKIAkJCS8qIERpc2FsbG93IHVzZSBvZiBzeXN0ZW0gYXR0cmlidXRlcyBpbiBleHRl bmRlZCBzdGF0cyAqLwpAQCAtMzAwLDEwICszMDAsMTEgQEAgQ3JlYXRlU3RhdGlzdGljcyhDcmVh dGVTdGF0c1N0bXQgKnN0bXQpCiAJCQl3aGlsZSAoKGsgPSBibXNfbmV4dF9tZW1iZXIoYXR0bnVt cywgaykpID49IDApCiAJCQl7CiAJCQkJQXR0ck51bWJlcglhdHRudW0gPSBrICsgRmlyc3RMb3dJ bnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKKwogCQkJCWlmIChhdHRudW0gPD0gMCkKIAkJCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKLQkJCQkJCSBlcnJtc2coInN0YXRpc3RpY3MgY3JlYXRpb24gb24gc3lzdGVtIGNvbHVt bnMgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coInN0YXRpc3RpY3MgY3JlYXRpb24gb24g c3lzdGVtIGNvbHVtbnMgaXMgbm90IHN1cHBvcnRlZCIpKSk7CiAJCQl9CiAKIAkJCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDg1N2NjNWNlNmUuLjI4YTA1MWY0ZmYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xNzUyNSwxMiArMTc1MjUsMTIgQEAgQVRFeGVjQXR0YWNo UGFydGl0aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQs CiAJLyoKIAkgKiBJZiB0aGUgcGFydGl0aW9uIHdlIGp1c3QgYXR0YWNoZWQgaXMgcGFydGl0aW9u ZWQgaXRzZWxmLCBpbnZhbGlkYXRlCiAJICogcmVsY2FjaGUgZm9yIGFsbCBkZXNjZW5kZW50IHBh cnRpdGlvbnMgdG9vIHRvIGVuc3VyZSB0aGF0IHRoZWlyCi0JICogcmRfcGFydGNoZWNrIGV4cHJl c3Npb24gdHJlZXMgYXJlIHJlYnVpbHQ7IHBhcnRpdGlvbnMgYWxyZWFkeSBsb2NrZWQKLQkgKiBh dCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgZnVuY3Rpb24uCisJICogcmRfcGFydGNoZWNrIGV4cHJl c3Npb24gdHJlZXMgYXJlIHJlYnVpbHQ7IHBhcnRpdGlvbnMgYWxyZWFkeSBsb2NrZWQgYXQKKwkg KiB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgZnVuY3Rpb24uCiAJICovCiAJaWYgKGF0dGFjaHJlbC0+ cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCiAJewotCQlMaXN0 Q2VsbCAqbDsKKwkJTGlzdENlbGwgICAqbDsKIAogCQlmb3JlYWNoKGwsIGF0dGFjaHJlbF9jaGls ZHJlbikKIAkJewpAQCAtMTgyMzIsMTMgKzE4MjMyLDEzIEBAIERldGFjaFBhcnRpdGlvbkZpbmFs aXplKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gcGFydFJlbCwgYm9vbCBjb25jdXJyZW50LAogCS8q CiAJICogSWYgdGhlIHBhcnRpdGlvbiB3ZSBqdXN0IGRldGFjaGVkIGlzIHBhcnRpdGlvbmVkIGl0 c2VsZiwgaW52YWxpZGF0ZQogCSAqIHJlbGNhY2hlIGZvciBhbGwgZGVzY2VuZGVudCBwYXJ0aXRp b25zIHRvbyB0byBlbnN1cmUgdGhhdCB0aGVpcgotCSAqIHJkX3BhcnRjaGVjayBleHByZXNzaW9u IHRyZWVzIGFyZSByZWJ1aWx0OyBtdXN0IGxvY2sgcGFydGl0aW9ucwotCSAqIGJlZm9yZSBkb2lu ZyBzbywgdXNpbmcgdGhlIHNhbWUgbG9ja21vZGUgYXMgd2hhdCBwYXJ0UmVsIGhhcyBiZWVuCi0J ICogbG9ja2VkIHdpdGggYnkgdGhlIGNhbGxlci4KKwkgKiByZF9wYXJ0Y2hlY2sgZXhwcmVzc2lv biB0cmVlcyBhcmUgcmVidWlsdDsgbXVzdCBsb2NrIHBhcnRpdGlvbnMgYmVmb3JlCisJICogZG9p bmcgc28sIHVzaW5nIHRoZSBzYW1lIGxvY2ttb2RlIGFzIHdoYXQgcGFydFJlbCBoYXMgYmVlbiBs b2NrZWQgd2l0aAorCSAqIGJ5IHRoZSBjYWxsZXIuCiAJICovCiAJaWYgKHBhcnRSZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCXsKLQkJTGlzdCAgICpj aGlsZHJlbjsKKwkJTGlzdAkgICAqY2hpbGRyZW47CiAKIAkJY2hpbGRyZW4gPSBmaW5kX2FsbF9p bmhlcml0b3JzKFJlbGF0aW9uR2V0UmVsaWQocGFydFJlbCksCiAJCQkJCQkJCQkgICBBY2Nlc3NF eGNsdXNpdmVMb2NrLCBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK aW5kZXggZDMyODg1NmFlNS4uZDEzZmJmNDU5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMKQEAgLTcxNSw3ICs3MTUsNyBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlU3Rh dGUgKm10c3RhdGUsCiAJCQl7CiAJCQkJVHVwbGVEZXNjCXRkZXNjID0gQ3JlYXRlVHVwbGVEZXNj Q29weShzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yKTsKIAkJCQlUdXBsZURlc2MJcGxhbl90ZGVz YyA9Ci0JCQkJCUNyZWF0ZVR1cGxlRGVzY0NvcHkocGxhblNsb3QtPnR0c190dXBsZURlc2NyaXB0 b3IpOworCQkJCUNyZWF0ZVR1cGxlRGVzY0NvcHkocGxhblNsb3QtPnR0c190dXBsZURlc2NyaXB0 b3IpOwogCiAJCQkJcmVzdWx0UmVsSW5mby0+cmlfU2xvdHNbcmVzdWx0UmVsSW5mby0+cmlfTnVt U2xvdHNdID0KIAkJCQkJTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHRkZXNjLCBzbG90LT50dHNf b3BzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXQuYyBiL3NyYy9i YWNrZW5kL2ppdC9sbHZtL2xsdm1qaXQuYwppbmRleCAxNjlkYWQ5NmQ3Li40ZTcyMTJlN2JmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0LmMKKysrIGIvc3JjL2JhY2tl bmQvaml0L2xsdm0vbGx2bWppdC5jCkBAIC04OTAsOCArODkwLDggQEAgbGx2bV9zaHV0ZG93bihp bnQgY29kZSwgRGF0dW0gYXJnKQogCSAqIGhhcyBvY2N1cnJlZCBpbiB0aGUgbWlkZGxlIG9mIExM Vk0gY29kZS4gSXQgaXMgbm90IHNhZmUgdG8gY2FsbCBiYWNrCiAJICogaW50byBMTFZNICh3aGlj aCBpcyB3aHkgYSBGQVRBTCBlcnJvciB3YXMgdGhyb3duKS4KIAkgKgotCSAqIFdlIGRvIG5lZWQg dG8gc2h1dGRvd24gTExWTSBpbiBvdGhlciBzaHV0ZG93biBjYXNlcywgb3RoZXJ3aXNlCi0JICog ZS5nLiBwcm9maWxpbmcgZGF0YSB3b24ndCBiZSB3cml0dGVuIG91dC4KKwkgKiBXZSBkbyBuZWVk IHRvIHNodXRkb3duIExMVk0gaW4gb3RoZXIgc2h1dGRvd24gY2FzZXMsIG90aGVyd2lzZSBlLmcu CisJICogcHJvZmlsaW5nIGRhdGEgd29uJ3QgYmUgd3JpdHRlbiBvdXQuCiAJICovCiAJaWYgKGxs dm1faW5fZmF0YWxfb25fb29tKCkpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCA4MjQ2NGM5 ODg5Li4yMzJjZjM3ZDIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtNDkyNSw5ICs0OTI1LDkg QEAgX2NvcHlFeHRlbnNpYmxlTm9kZShjb25zdCBFeHRlbnNpYmxlTm9kZSAqZnJvbSkKICAqICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKICAqLwogc3RhdGljIEludGVnZXIgKgotX2NvcHlJbnRlZ2VyKGNvbnN0IEludGVnZXIg KmZyb20pCitfY29weUludGVnZXIoY29uc3QgSW50ZWdlciAqIGZyb20pCiB7Ci0JSW50ZWdlcgkg ICAqbmV3bm9kZSA9IG1ha2VOb2RlKEludGVnZXIpOworCUludGVnZXIgICAgKm5ld25vZGUgPSBt YWtlTm9kZShJbnRlZ2VyKTsKIAogCUNPUFlfU0NBTEFSX0ZJRUxEKHZhbCk7CiAKQEAgLTQ5MzUs NyArNDkzNSw3IEBAIF9jb3B5SW50ZWdlcihjb25zdCBJbnRlZ2VyICpmcm9tKQogfQogCiBzdGF0 aWMgRmxvYXQgKgotX2NvcHlGbG9hdChjb25zdCBGbG9hdCAqZnJvbSkKK19jb3B5RmxvYXQoY29u c3QgRmxvYXQgKiBmcm9tKQogewogCUZsb2F0CSAgICpuZXdub2RlID0gbWFrZU5vZGUoRmxvYXQp OwogCkBAIC00OTQ1LDcgKzQ5NDUsNyBAQCBfY29weUZsb2F0KGNvbnN0IEZsb2F0ICpmcm9tKQog fQogCiBzdGF0aWMgU3RyaW5nICoKLV9jb3B5U3RyaW5nKGNvbnN0IFN0cmluZyAqZnJvbSkKK19j b3B5U3RyaW5nKGNvbnN0IFN0cmluZyAqIGZyb20pCiB7CiAJU3RyaW5nCSAgICpuZXdub2RlID0g bWFrZU5vZGUoU3RyaW5nKTsKIApAQCAtNDk1NSw5ICs0OTU1LDkgQEAgX2NvcHlTdHJpbmcoY29u c3QgU3RyaW5nICpmcm9tKQogfQogCiBzdGF0aWMgQml0U3RyaW5nICoKLV9jb3B5Qml0U3RyaW5n KGNvbnN0IEJpdFN0cmluZyAqZnJvbSkKK19jb3B5Qml0U3RyaW5nKGNvbnN0IEJpdFN0cmluZyAq IGZyb20pCiB7Ci0JQml0U3RyaW5nICAgKm5ld25vZGUgPSBtYWtlTm9kZShCaXRTdHJpbmcpOwor CUJpdFN0cmluZyAgKm5ld25vZGUgPSBtYWtlTm9kZShCaXRTdHJpbmcpOwogCiAJQ09QWV9TVFJJ TkdfRklFTEQodmFsKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCmluZGV4IGY1MzdkM2ViOTYuLmZj YTcyYzhlNDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTI0MzcsOCArMjQzNyw3IEBAIHN0 YXRpYyBib29sCiBfZXF1YWxBX0NvbnN0KGNvbnN0IEFfQ29uc3QgKmEsIGNvbnN0IEFfQ29uc3Qg KmIpCiB7CiAJLyoKLQkgKiBIYWNrIGZvciBpbi1saW5lIHZhbCBmaWVsZC4gIEFsc28gdmFsIGlz IG5vdCB2YWxpZCBpcyBpc251bGwgaXMKLQkgKiB0cnVlLgorCSAqIEhhY2sgZm9yIGluLWxpbmUg dmFsIGZpZWxkLiAgQWxzbyB2YWwgaXMgbm90IHZhbGlkIGlzIGlzbnVsbCBpcyB0cnVlLgogCSAq LwogCWlmICghYS0+aXNudWxsICYmICFiLT5pc251bGwgJiYKIAkJIWVxdWFsKCZhLT52YWwsICZi LT52YWwpKQpAQCAtMzEyMiw3ICszMTIxLDcgQEAgX2VxdWFsTGlzdChjb25zdCBMaXN0ICphLCBj b25zdCBMaXN0ICpiKQogICovCiAKIHN0YXRpYyBib29sCi1fZXF1YWxJbnRlZ2VyKGNvbnN0IElu dGVnZXIgKmEsIGNvbnN0IEludGVnZXIgKmIpCitfZXF1YWxJbnRlZ2VyKGNvbnN0IEludGVnZXIg KiBhLCBjb25zdCBJbnRlZ2VyICogYikKIHsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRCh2YWwpOwog CkBAIC0zMTMwLDcgKzMxMjksNyBAQCBfZXF1YWxJbnRlZ2VyKGNvbnN0IEludGVnZXIgKmEsIGNv bnN0IEludGVnZXIgKmIpCiB9CiAKIHN0YXRpYyBib29sCi1fZXF1YWxGbG9hdChjb25zdCBGbG9h dCAqYSwgY29uc3QgRmxvYXQgKmIpCitfZXF1YWxGbG9hdChjb25zdCBGbG9hdCAqIGEsIGNvbnN0 IEZsb2F0ICogYikKIHsKIAlDT01QQVJFX1NUUklOR19GSUVMRCh2YWwpOwogCkBAIC0zMTM4LDcg KzMxMzcsNyBAQCBfZXF1YWxGbG9hdChjb25zdCBGbG9hdCAqYSwgY29uc3QgRmxvYXQgKmIpCiB9 CiAKIHN0YXRpYyBib29sCi1fZXF1YWxTdHJpbmcoY29uc3QgU3RyaW5nICphLCBjb25zdCBTdHJp bmcgKmIpCitfZXF1YWxTdHJpbmcoY29uc3QgU3RyaW5nICogYSwgY29uc3QgU3RyaW5nICogYikK IHsKIAlDT01QQVJFX1NUUklOR19GSUVMRCh2YWwpOwogCkBAIC0zMTQ2LDcgKzMxNDUsNyBAQCBf ZXF1YWxTdHJpbmcoY29uc3QgU3RyaW5nICphLCBjb25zdCBTdHJpbmcgKmIpCiB9CiAKIHN0YXRp YyBib29sCi1fZXF1YWxCaXRTdHJpbmcoY29uc3QgQml0U3RyaW5nICphLCBjb25zdCBCaXRTdHJp bmcgKmIpCitfZXF1YWxCaXRTdHJpbmcoY29uc3QgQml0U3RyaW5nICogYSwgY29uc3QgQml0U3Ry aW5nICogYikKIHsKIAlDT01QQVJFX1NUUklOR19GSUVMRCh2YWwpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YwppbmRleCAyZTVlZDc3ZTE4Li5iZDVhYmEwMmVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTM0 MTQsMjcgKzM0MTQsMjcgQEAgX291dEFfRXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgQV9FeHBy ICpub2RlKQogfQogCiBzdGF0aWMgdm9pZAotX291dEludGVnZXIoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IEludGVnZXIgKm5vZGUpCitfb3V0SW50ZWdlcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgSW50 ZWdlciAqIG5vZGUpCiB7CiAJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIlZCIsIG5vZGUtPnZhbCk7 CiB9CiAKIHN0YXRpYyB2b2lkCi1fb3V0RmxvYXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEZsb2F0 ICpub2RlKQorX291dEZsb2F0KFN0cmluZ0luZm8gc3RyLCBjb25zdCBGbG9hdCAqIG5vZGUpCiB7 CiAJLyoKLQkgKiBXZSBhc3N1bWUgdGhlIHZhbHVlIGlzIGEgdmFsaWQgbnVtZXJpYyBsaXRlcmFs IGFuZCBzbyBkb2VzIG5vdAotCSAqIG5lZWQgcXVvdGluZy4KKwkgKiBXZSBhc3N1bWUgdGhlIHZh bHVlIGlzIGEgdmFsaWQgbnVtZXJpYyBsaXRlcmFsIGFuZCBzbyBkb2VzIG5vdCBuZWVkCisJICog cXVvdGluZy4KIAkgKi8KIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgbm9kZS0+dmFsKTsK IH0KIAogc3RhdGljIHZvaWQKLV9vdXRTdHJpbmcoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFN0cmlu ZyAqbm9kZSkKK19vdXRTdHJpbmcoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFN0cmluZyAqIG5vZGUp CiB7CiAJLyoKLQkgKiBXZSB1c2Ugb3V0VG9rZW4gdG8gcHJvdmlkZSBlc2NhcGluZyBvZiB0aGUg c3RyaW5nJ3MgY29udGVudCwKLQkgKiBidXQgd2UgZG9uJ3Qgd2FudCBpdCB0byBkbyBhbnl0aGlu ZyB3aXRoIGFuIGVtcHR5IHN0cmluZy4KKwkgKiBXZSB1c2Ugb3V0VG9rZW4gdG8gcHJvdmlkZSBl c2NhcGluZyBvZiB0aGUgc3RyaW5nJ3MgY29udGVudCwgYnV0IHdlCisJICogZG9uJ3Qgd2FudCBp dCB0byBkbyBhbnl0aGluZyB3aXRoIGFuIGVtcHR5IHN0cmluZy4KIAkgKi8KIAlhcHBlbmRTdHJp bmdJbmZvQ2hhcihzdHIsICciJyk7CiAJaWYgKG5vZGUtPnZhbFswXSAhPSAnXDAnKQpAQCAtMzQ0 Myw3ICszNDQzLDcgQEAgX291dFN0cmluZyhTdHJpbmdJbmZvIHN0ciwgY29uc3QgU3RyaW5nICpu b2RlKQogfQogCiBzdGF0aWMgdm9pZAotX291dEJpdFN0cmluZyhTdHJpbmdJbmZvIHN0ciwgY29u c3QgQml0U3RyaW5nICpub2RlKQorX291dEJpdFN0cmluZyhTdHJpbmdJbmZvIHN0ciwgY29uc3Qg Qml0U3RyaW5nICogbm9kZSkKIHsKIAkvKiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBhbHJlYWR5 IGhhcyBsZWFkaW5nICdiJyAqLwogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCBub2RlLT52 YWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvdmFsdWUuYyBiL3NyYy9iYWNrZW5k L25vZGVzL3ZhbHVlLmMKaW5kZXggNTE1ZjkzYzIyMy4uOTgwMjQ1ZWQ1ZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvdmFsdWUuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy92YWx1ZS5j CkBAIC0yMiw3ICsyMiw3IEBACiBJbnRlZ2VyICoKIG1ha2VJbnRlZ2VyKGludCBpKQogewotCUlu dGVnZXIJICAgKnYgPSBtYWtlTm9kZShJbnRlZ2VyKTsKKwlJbnRlZ2VyICAgICp2ID0gbWFrZU5v ZGUoSW50ZWdlcik7CiAKIAl2LT52YWwgPSBpOwogCXJldHVybiB2OwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2luZHhwYXRoLmMKaW5kZXggMGU0ZTAwZWFmMC4uODQ3NWMxODU2MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCkBAIC0zNTE3LDcgKzM1MTcsNyBAQCByZWxhdGlv bl9oYXNfdW5pcXVlX2luZGV4X2ZvcihQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs LAogCUFzc2VydChsaXN0X2xlbmd0aChleHBybGlzdCkgPT0gbGlzdF9sZW5ndGgob3BybGlzdCkp OwogCiAJLyogU2hvcnQtY2lyY3VpdCBpZiBubyBpbmRleGVzLi4uICovCi0JaWYgKHJlbC0+aW5k ZXhsaXN0ID09IE5JTCkKKwlpZiAocmVsLT5pbmRleGxpc3QgPT0gTklMICYmIHJlbC0+cGFydElu ZGV4bGlzdCA9PSBOSUwpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qCkBAIC0zNTYyLDcgKzM1NjIs NyBAQCByZWxhdGlvbl9oYXNfdW5pcXVlX2luZGV4X2ZvcihQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsLAogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFeGFtaW5lIGVhY2ggaW5kZXgg b2YgdGhlIHJlbGF0aW9uIC4uLiAqLwotCWZvcmVhY2goaWMsIHJlbC0+aW5kZXhsaXN0KQorCWZv cmVhY2goaWMsIGxpc3RfY29uY2F0KHJlbC0+aW5kZXhsaXN0LCByZWwtPnBhcnRJbmRleGxpc3Qp KQogCXsKIAkJSW5kZXhPcHRJbmZvICppbmQgPSAoSW5kZXhPcHRJbmZvICopIGxmaXJzdChpYyk7 CiAJCWludAkJCWM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFs eXplam9pbnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCmlu ZGV4IDM3ZWI2NGJjZWYuLjNlYTUzZDUyMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL2FuYWx5emVqb2lucy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2FuYWx5emVqb2lucy5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIK IAogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL2NsYXVzZXMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvam9p bmluZm8uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCkBAIC01OTgsNyArNTk5 LDcgQEAgcmVsX3N1cHBvcnRzX2Rpc3RpbmN0bmVzcyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqcmVsKQogCQkgKi8KIAkJTGlzdENlbGwgICAqbGM7CiAKLQkJZm9yZWFjaChsYywgcmVs LT5pbmRleGxpc3QpCisJCWZvcmVhY2gobGMsIGxpc3RfY29uY2F0KHJlbC0+aW5kZXhsaXN0LCBy ZWwtPnBhcnRJbmRleGxpc3QpKQogCQl7CiAJCQlJbmRleE9wdEluZm8gKmluZCA9IChJbmRleE9w dEluZm8gKikgbGZpcnN0KGxjKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGxhbmNhdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmlu ZGV4IGM1MTk0ZmRiYmYuLjcxYzk5NjU4MmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFu Y2F0LmMKQEAgLTExNyw2ICsxMTcsNyBAQCBnZXRfcmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAq cm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAogCVJlbGF0aW9uCXJl bGF0aW9uOwogCWJvb2wJCWhhc2luZGV4OwogCUxpc3QJICAgKmluZGV4aW5mb3MgPSBOSUw7CisJ TGlzdAkgICAqcGFydEluZGV4aW5mb3MgPSBOSUw7CiAKIAkvKgogCSAqIFdlIG5lZWQgbm90IGxv Y2sgdGhlIHJlbGF0aW9uIHNpbmNlIGl0IHdhcyBhbHJlYWR5IGxvY2tlZCwgZWl0aGVyIGJ5CkBA IC0xNjMsNyArMTY0LDcgQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIE9p ZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAllbHNlCiAJCWhhc2luZGV4ID0g cmVsYXRpb24tPnJkX3JlbC0+cmVsaGFzaW5kZXg7CiAKLQlpZiAoaGFzaW5kZXgpCisJaWYgKCEo SWdub3JlU3lzdGVtSW5kZXhlcyAmJiAhSXNTeXN0ZW1SZWxhdGlvbihyZWxhdGlvbikpICYmIHJl bGF0aW9uLT5yZF9yZWwtPnJlbGhhc2luZGV4KQogCXsKIAkJTGlzdAkgICAqaW5kZXhvaWRsaXN0 OwogCQlMT0NLTU9ERQlsbW9kZTsKQEAgLTIxMiwxMCArMjEzLDEyIEBAIGdldF9yZWxhdGlvbl9p bmZvKFBsYW5uZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJl bnQsCiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBJZ25vcmUgcGFydGl0aW9uZWQgaW5kZXhlcywgc2lu Y2UgdGhleSBhcmUgbm90IHVzYWJsZSBmb3IKLQkJCSAqIHF1ZXJpZXMuCisJCQkgKiBEb24ndCBh ZGQgcGFydGl0aW9uZWQgaW5kZXhlcyB0byB0aGUgaW5kZXhsaXN0LCBzaW5jZSB0aGV5IGFyZQor CQkJICogbm90IHVzYWJsZSBieSB0aGUgZXhlY3V0b3IuIElmIHRoZXkgYXJlIHVuaXF1ZSBhZGQg dGhlbSB0byB0aGUKKwkJCSAqIHBhcnRpbmRleGxpc3QgaW5zdGVhZCwgdG8gdXNlIGZvciBmdXJ0 aGVyIHBydW5pbmcuIElmIHRoZXkKKwkJCSAqIGFyZW4ndCB0aGF0IGVpdGhlciwgc2ltcGx5IHNr aXAgdGhlbS4KIAkJCSAqLwotCQkJaWYgKGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYKQorCQkJaWYgKGluaHBhcmVudCAmJiAoIWluZGV4 LT5pbmRpc3VuaXF1ZSB8fCBpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lO RF9QQVJUSVRJT05FRF9JTkRFWCkpCiAJCQl7CiAJCQkJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlv biwgTm9Mb2NrKTsKIAkJCQljb250aW51ZTsKQEAgLTI2Myw3ICsyNjYsNDAgQEAgZ2V0X3JlbGF0 aW9uX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElkLCBib29sIGlu aHBhcmVudCwKIAkJCQlpbmZvLT5pbmRleGNvbGxhdGlvbnNbaV0gPSBpbmRleFJlbGF0aW9uLT5y ZF9pbmRjb2xsYXRpb25baV07CiAJCQl9CiAKLQkJCWluZm8tPnJlbGFtID0gaW5kZXhSZWxhdGlv bi0+cmRfcmVsLT5yZWxhbTsKKwkJCS8qCisJCQkgKiBGZXRjaCB0aGUgaW5kZXggZXhwcmVzc2lv bnMgYW5kIHByZWRpY2F0ZSwgaWYgYW55LiAgV2UgbXVzdAorCQkJICogbW9kaWZ5IHRoZSBjb3Bp ZXMgd2Ugb2J0YWluIGZyb20gdGhlIHJlbGNhY2hlIHRvIGhhdmUgdGhlCisJCQkgKiBjb3JyZWN0 IHZhcm5vIGZvciB0aGUgcGFyZW50IHJlbGF0aW9uLCBzbyB0aGF0IHRoZXkgbWF0Y2ggdXAKKwkJ CSAqIGNvcnJlY3RseSBhZ2FpbnN0IHF1YWwgY2xhdXNlcy4KKwkJCSAqLworCQkJaW5mby0+aW5k ZXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5kZXhSZWxhdGlvbik7CisJCQlp bmZvLT5pbmRwcmVkID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpbmRleFJlbGF0aW9uKTsK KwkJCWlmIChpbmZvLT5pbmRleHBycyAmJiB2YXJubyAhPSAxKQorCQkJCUNoYW5nZVZhck5vZGVz KChOb2RlICopIGluZm8tPmluZGV4cHJzLCAxLCB2YXJubywgMCk7CisJCQlpZiAoaW5mby0+aW5k cHJlZCAmJiB2YXJubyAhPSAxKQorCQkJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIGluZm8tPmlu ZHByZWQsIDEsIHZhcm5vLCAwKTsKKworCQkJaW5mby0+dW5pcXVlID0gaW5kZXgtPmluZGlzdW5p cXVlOworCQkJaW5mby0+aW1tZWRpYXRlID0gaW5kZXgtPmluZGltbWVkaWF0ZTsKKworCQkJLyoK KwkJCSAqIERvbid0IGFkZCBwYXJ0aXRpb25lZCBpbmRleGVzIHRvIHRoZSBpbmRleGxpc3QsIGFk ZCB0aGVtIHRvIHRoZQorCQkJICogcGFydGluZGV4bGlzdCBpbnN0ZWFkLCBzaW5jZSB0aGV5IGFy ZSBub3QgdXNhYmxlIGJ5IHRoZQorCQkJICogZXhlY3V0b3IuCisJCQkgKi8KKwkJCWlmIChpbmRl eFJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCkK KwkJCXsKKwkJCQlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOworCQkJCXBhcnRJ bmRleGluZm9zID0gbGFwcGVuZChwYXJ0SW5kZXhpbmZvcywgaW5mbyk7CisJCQkJY29udGludWU7 CisJCQl9CisKKwkJCWluZm8tPmh5cG90aGV0aWNhbCA9IGZhbHNlOworCQkJaW5mby0+aW5kcmVz dHJpY3RpbmZvID0gTklMOwkvKiBzZXQgbGF0ZXIsIGluIGluZHhwYXRoLmMgKi8KKwkJCWluZm8t PnByZWRPSyA9IGZhbHNlOwkvKiBzZXQgbGF0ZXIsIGluIGluZHhwYXRoLmMgKi8KKworCQkJLyog QnVpbGQgdGFyZ2V0bGlzdCB1c2luZyB0aGUgY29tcGxldGVkIGluZGV4cHJzIGRhdGEgKi8KKwkJ CWluZm8tPmluZGV4dGxpc3QgPSBidWlsZF9pbmRleF90bGlzdChyb290LCBpbmZvLCByZWxhdGlv bik7CiAKIAkJCS8qIFdlIGNvcHkganVzdCB0aGUgZmllbGRzIHdlIG5lZWQsIG5vdCBhbGwgb2Yg cmRfaW5kYW0gKi8KIAkJCWFtcm91dGluZSA9IGluZGV4UmVsYXRpb24tPnJkX2luZGFtOwpAQCAt MjgzLDYgKzMxOSw4IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZvICpyb290LCBPaWQg cmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJCQkvKiBGZXRjaCBpbmRleCBvcGNs YXNzIG9wdGlvbnMgKi8KIAkJCWluZm8tPm9wY2xhc3NvcHRpb25zID0gUmVsYXRpb25HZXRJbmRl eEF0dE9wdGlvbnMoaW5kZXhSZWxhdGlvbiwgdHJ1ZSk7CiAKKwkJCWluZm8tPnJlbGFtID0gaW5k ZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxhbTsKKwogCQkJLyoKIAkJCSAqIEZldGNoIHRoZSBvcmRl cmluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIGluZGV4LCBpZiBhbnkuCiAJCQkgKi8KQEAgLTM2OSwy OCArNDA3LDYgQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIE9pZCByZWxh dGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAkJCQlpbmZvLT5udWxsc19maXJzdCA9IE5V TEw7CiAJCQl9CiAKLQkJCS8qCi0JCQkgKiBGZXRjaCB0aGUgaW5kZXggZXhwcmVzc2lvbnMgYW5k IHByZWRpY2F0ZSwgaWYgYW55LiAgV2UgbXVzdAotCQkJICogbW9kaWZ5IHRoZSBjb3BpZXMgd2Ug b2J0YWluIGZyb20gdGhlIHJlbGNhY2hlIHRvIGhhdmUgdGhlCi0JCQkgKiBjb3JyZWN0IHZhcm5v IGZvciB0aGUgcGFyZW50IHJlbGF0aW9uLCBzbyB0aGF0IHRoZXkgbWF0Y2ggdXAKLQkJCSAqIGNv cnJlY3RseSBhZ2FpbnN0IHF1YWwgY2xhdXNlcy4KLQkJCSAqLwotCQkJaW5mby0+aW5kZXhwcnMg PSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5kZXhSZWxhdGlvbik7Ci0JCQlpbmZvLT5p bmRwcmVkID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpbmRleFJlbGF0aW9uKTsKLQkJCWlm IChpbmZvLT5pbmRleHBycyAmJiB2YXJubyAhPSAxKQotCQkJCUNoYW5nZVZhck5vZGVzKChOb2Rl ICopIGluZm8tPmluZGV4cHJzLCAxLCB2YXJubywgMCk7Ci0JCQlpZiAoaW5mby0+aW5kcHJlZCAm JiB2YXJubyAhPSAxKQotCQkJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIGluZm8tPmluZHByZWQs IDEsIHZhcm5vLCAwKTsKLQotCQkJLyogQnVpbGQgdGFyZ2V0bGlzdCB1c2luZyB0aGUgY29tcGxl dGVkIGluZGV4cHJzIGRhdGEgKi8KLQkJCWluZm8tPmluZGV4dGxpc3QgPSBidWlsZF9pbmRleF90 bGlzdChyb290LCBpbmZvLCByZWxhdGlvbik7Ci0KLQkJCWluZm8tPmluZHJlc3RyaWN0aW5mbyA9 IE5JTDsJLyogc2V0IGxhdGVyLCBpbiBpbmR4cGF0aC5jICovCi0JCQlpbmZvLT5wcmVkT0sgPSBm YWxzZTsJLyogc2V0IGxhdGVyLCBpbiBpbmR4cGF0aC5jICovCi0JCQlpbmZvLT51bmlxdWUgPSBp bmRleC0+aW5kaXN1bmlxdWU7Ci0JCQlpbmZvLT5pbW1lZGlhdGUgPSBpbmRleC0+aW5kaW1tZWRp YXRlOwotCQkJaW5mby0+aHlwb3RoZXRpY2FsID0gZmFsc2U7Ci0KIAkJCS8qCiAJCQkgKiBFc3Rp bWF0ZSB0aGUgaW5kZXggc2l6ZS4gIElmIGl0J3Mgbm90IGEgcGFydGlhbCBpbmRleCwgd2UgbG9j awogCQkJICogdGhlIG51bWJlci1vZi10dXBsZXMgZXN0aW1hdGUgdG8gZXF1YWwgdGhlIHBhcmVu dCB0YWJsZTsgaWYgaXQKQEAgLTQ0MCw2ICs0NTYsNyBAQCBnZXRfcmVsYXRpb25faW5mbyhQbGFu bmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAogCX0K IAogCXJlbC0+aW5kZXhsaXN0ID0gaW5kZXhpbmZvczsKKwlyZWwtPnBhcnRJbmRleGxpc3QgPSBw YXJ0SW5kZXhpbmZvczsKIAogCXJlbC0+c3RhdGxpc3QgPSBnZXRfcmVsYXRpb25fc3RhdGlzdGlj cyhyZWwsIHJlbGF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5 emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggMTQ2ZWU4ZGQxZS4uZjE2 NTUzMWE3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0yMDM5LDggKzIwMzksOCBAQCB0cmFuc2Zv cm1TZXRPcGVyYXRpb25UcmVlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCwK IAkJTGlzdENlbGwgICAqbHRsOwogCQlMaXN0Q2VsbCAgICpydGw7CiAJCWNvbnN0IGNoYXIgKmNv bnRleHQ7Ci0JCWJvb2wgcmVjdXJzaXZlID0gKHBzdGF0ZS0+cF9wYXJlbnRfY3RlICYmCi0JCQkJ CQkgIHBzdGF0ZS0+cF9wYXJlbnRfY3RlLT5jdGVyZWN1cnNpdmUpOworCQlib29sCQlyZWN1cnNp dmUgPSAocHN0YXRlLT5wX3BhcmVudF9jdGUgJiYKKwkJCQkJCQkJIHBzdGF0ZS0+cF9wYXJlbnRf Y3RlLT5jdGVyZWN1cnNpdmUpOwogCiAJCWNvbnRleHQgPSAoc3RtdC0+b3AgPT0gU0VUT1BfVU5J T04gPyAiVU5JT04iIDoKIAkJCQkgICAoc3RtdC0+b3AgPT0gU0VUT1BfSU5URVJTRUNUID8gIklO VEVSU0VDVCIgOgpAQCAtMjE5NCw3ICsyMTk0LDEwIEBAIHRyYW5zZm9ybVNldE9wZXJhdGlvblRy ZWUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10LAogCQkJCXNldHVwX3BhcnNl cl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNic3RhdGUsIHBzdGF0ZSwKIAkJCQkJCQkJCQkJCSAg YmVzdGxvY2F0aW9uKTsKIAotCQkJCS8qIElmIGl0J3MgYSByZWN1cnNpdmUgdW5pb24sIHdlIG5l ZWQgdG8gcmVxdWlyZSBoYXNoaW5nIHN1cHBvcnQuICovCisJCQkJLyoKKwkJCQkgKiBJZiBpdCdz IGEgcmVjdXJzaXZlIHVuaW9uLCB3ZSBuZWVkIHRvIHJlcXVpcmUgaGFzaGluZworCQkJCSAqIHN1 cHBvcnQuCisJCQkJICovCiAJCQkJb3AtPmdyb3VwQ2xhdXNlcyA9IGxhcHBlbmQob3AtPmdyb3Vw Q2xhdXNlcywKIAkJCQkJCQkJCQkgICBtYWtlU29ydEdyb3VwQ2xhdXNlRm9yU2V0T3AocmVzY29s dHlwZSwgcmVjdXJzaXZlKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9jbGF1c2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwppbmRleCAwNzgw MjliYTFmLi4zZTQ1MDA1M2M1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Y2xhdXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCkBAIC0xOTk4 LDcgKzE5OTgsNyBAQCBmaW5kVGFyZ2V0bGlzdEVudHJ5U1FMOTIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpub2RlLCBMaXN0ICoqdGxpc3QsCiAJfQogCWlmIChJc0Eobm9kZSwgQV9Db25zdCkp CiAJewotCQlBX0NvbnN0CSAgICphY29uc3QgPSBjYXN0Tm9kZShBX0NvbnN0LCBub2RlKTsKKwkJ QV9Db25zdCAgICAqYWNvbnN0ID0gY2FzdE5vZGUoQV9Db25zdCwgbm9kZSk7CiAJCWludAkJCXRh cmdldGxpc3RfcG9zID0gMDsKIAkJaW50CQkJdGFyZ2V0X3BvczsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25p bmcvcGFydGRlc2MuYwppbmRleCBmYjQ5NzQ3ZjZlLi4zMjIwZDQ4MDhkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydGRlc2MuYwpAQCAtOTEsOCArOTEsOCBAQCBSZWxhdGlvbkdldFBhcnRpdGlv bkRlc2MoUmVsYXRpb24gcmVsLCBib29sIG9taXRfZGV0YWNoZWQpCiAJICogY2FjaGVkIGRlc2Ny aXB0b3IgdG9vLiAgV2UgZGV0ZXJtaW5lIHRoYXQgYmFzZWQgb24gdGhlIHBnX2luaGVyaXRzLnht aW4KIAkgKiB0aGF0IHdhcyBzYXZlZCBhbG9uZ3NpZGUgdGhhdCBkZXNjcmlwdG9yOiBpZiB0aGUg eG1pbiB0aGF0IHdhcyBub3QgaW4KIAkgKiBwcm9ncmVzcyBmb3IgdGhhdCBhY3RpdmUgc25hcHNo b3QgaXMgYWxzbyBub3QgaW4gcHJvZ3Jlc3MgZm9yIHRoZQotCSAqIGN1cnJlbnQgYWN0aXZlIHNu YXBzaG90LCB0aGVuIHdlIGNhbiB1c2UgaXQuICBPdGhlcndpc2UgYnVpbGQgb25lCi0JICogZnJv bSBzY3JhdGNoLgorCSAqIGN1cnJlbnQgYWN0aXZlIHNuYXBzaG90LCB0aGVuIHdlIGNhbiB1c2Ug aXQuICBPdGhlcndpc2UgYnVpbGQgb25lIGZyb20KKwkgKiBzY3JhdGNoLgogCSAqLwogCWlmIChv bWl0X2RldGFjaGVkICYmCiAJCXJlbC0+cmRfcGFydGRlc2Nfbm9kZXRhY2hlZCAmJgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IGMwNWY1MDA2MzkuLjlkNjNhYjRiMWYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTgyNiw5ICs4MjYsOSBAQCBTdGFydEJhY2tncm91bmRX b3JrZXIodm9pZCkKIAogCS8qCiAJICogQ3JlYXRlIGEgcGVyLWJhY2tlbmQgUEdQUk9DIHN0cnVj dCBpbiBzaGFyZWQgbWVtb3J5LCBleGNlcHQgaW4gdGhlCi0JICogRVhFQ19CQUNLRU5EIGNhc2Ug d2hlcmUgdGhpcyB3YXMgZG9uZSBpbiBTdWJQb3N0bWFzdGVyTWFpbi4gV2UgbXVzdAotCSAqIGRv IHRoaXMgYmVmb3JlIHdlIGNhbiB1c2UgTFdMb2NrcyAoYW5kIGluIHRoZSBFWEVDX0JBQ0tFTkQg Y2FzZSB3ZQotCSAqIGFscmVhZHkgaGFkIHRvIGRvIHNvbWUgc3R1ZmYgd2l0aCBMV0xvY2tzKS4K KwkgKiBFWEVDX0JBQ0tFTkQgY2FzZSB3aGVyZSB0aGlzIHdhcyBkb25lIGluIFN1YlBvc3RtYXN0 ZXJNYWluLiBXZSBtdXN0IGRvCisJICogdGhpcyBiZWZvcmUgd2UgY2FuIHVzZSBMV0xvY2tzIChh bmQgaW4gdGhlIEVYRUNfQkFDS0VORCBjYXNlIHdlIGFscmVhZHkKKwkgKiBoYWQgdG8gZG8gc29t ZSBzdHVmZiB3aXRoIExXTG9ja3MpLgogCSAqLwogI2lmbmRlZiBFWEVDX0JBQ0tFTkQKIAlJbml0 UHJvY2VzcygpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKaW5kZXggYjdkMGZiYWVmZC4uMmQxZDdl M2FjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCkBAIC0yNjMsNyArMjYzLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgVHdvUGhhc2VQZ1N0YXRSZWNvcmQKIAlQZ1N0YXRfQ291bnRlciBkZWxldGVkX3By ZV90cnVuY2Ryb3A7CiAJT2lkCQkJdF9pZDsJCQkvKiB0YWJsZSdzIE9JRCAqLwogCWJvb2wJCXRf c2hhcmVkOwkJLyogaXMgaXQgYSBzaGFyZWQgY2F0YWxvZz8gKi8KLQlib29sCQl0X3RydW5jZHJv cHBlZDsJLyogd2FzIHRoZSByZWxhdGlvbiB0cnVuY2F0ZWQvZHJvcHBlZD8gKi8KKwlib29sCQl0 X3RydW5jZHJvcHBlZDsgLyogd2FzIHRoZSByZWxhdGlvbiB0cnVuY2F0ZWQvZHJvcHBlZD8gKi8K IH0gVHdvUGhhc2VQZ1N0YXRSZWNvcmQ7CiAKIC8qCkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGlj IHZvaWQgcGdzdGF0X3JlY3ZfdmFjdXVtKFBnU3RhdF9Nc2dWYWN1dW0gKm1zZywgaW50IGxlbik7 CiBzdGF0aWMgdm9pZCBwZ3N0YXRfcmVjdl9hbmFseXplKFBnU3RhdF9Nc2dBbmFseXplICptc2cs IGludCBsZW4pOwogc3RhdGljIHZvaWQgcGdzdGF0X3JlY3ZfYXJjaGl2ZXIoUGdTdGF0X01zZ0Fy Y2hpdmVyICptc2csIGludCBsZW4pOwogc3RhdGljIHZvaWQgcGdzdGF0X3JlY3ZfYmd3cml0ZXIo UGdTdGF0X01zZ0JnV3JpdGVyICptc2csIGludCBsZW4pOwotc3RhdGljIHZvaWQgcGdzdGF0X3Jl Y3ZfY2hlY2twb2ludGVyKFBnU3RhdF9Nc2dDaGVja3BvaW50ZXIgKm1zZywgaW50IGxlbik7Citz dGF0aWMgdm9pZCBwZ3N0YXRfcmVjdl9jaGVja3BvaW50ZXIoUGdTdGF0X01zZ0NoZWNrcG9pbnRl ciAqIG1zZywgaW50IGxlbik7CiBzdGF0aWMgdm9pZCBwZ3N0YXRfcmVjdl93YWwoUGdTdGF0X01z Z1dhbCAqbXNnLCBpbnQgbGVuKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9yZWN2X3NscnUoUGdTdGF0 X01zZ1NMUlUgKm1zZywgaW50IGxlbik7CiBzdGF0aWMgdm9pZCBwZ3N0YXRfcmVjdl9mdW5jc3Rh dChQZ1N0YXRfTXNnRnVuY3N0YXQgKm1zZywgaW50IGxlbik7CkBAIC0yNTMwLDExICsyNTMwLDEx IEBAIEF0RU9TdWJYYWN0X1BnU3RhdF9SZWxhdGlvbnMoUGdTdGF0X1N1YlhhY3RTdGF0dXMgKnhh Y3Rfc3RhdGUsIGJvb2wgaXNDb21taXQsIGluCiAJCQl7CiAJCQkJLyoKIAkJCQkgKiBXaGVuIHRo ZXJlIGlzbid0IGFuIGltbWVkaWF0ZSBwYXJlbnQgc3RhdGUsIHdlIGNhbiBqdXN0Ci0JCQkJICog cmV1c2UgdGhlIHJlY29yZCBpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggYQotCQkJCSAqIHBhbGxv Yy9wZnJlZSBwdXNodXAgKHRoaXMgd29ya3Mgc2luY2UgaXQncyBhbGwgaW4KLQkJCQkgKiBUb3BU cmFuc2FjdGlvbkNvbnRleHQgYW55d2F5KS4gIFdlIGhhdmUgdG8gcmUtbGluayBpdAotCQkJCSAq IGludG8gdGhlIHBhcmVudCBsZXZlbCwgdGhvdWdoLCBhbmQgdGhhdCBtaWdodCBtZWFuCi0JCQkJ ICogcHVzaGluZyBhIG5ldyBlbnRyeSBpbnRvIHRoZSBwZ1N0YXRYYWN0U3RhY2suCisJCQkJICog cmV1c2UgdGhlIHJlY29yZCBpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggYSBwYWxsb2MvcGZyZWUK KwkJCQkgKiBwdXNodXAgKHRoaXMgd29ya3Mgc2luY2UgaXQncyBhbGwgaW4gVG9wVHJhbnNhY3Rp b25Db250ZXh0CisJCQkJICogYW55d2F5KS4gIFdlIGhhdmUgdG8gcmUtbGluayBpdCBpbnRvIHRo ZSBwYXJlbnQgbGV2ZWwsCisJCQkJICogdGhvdWdoLCBhbmQgdGhhdCBtaWdodCBtZWFuIHB1c2hp bmcgYSBuZXcgZW50cnkgaW50byB0aGUKKwkJCQkgKiBwZ1N0YXRYYWN0U3RhY2suCiAJCQkJICov CiAJCQkJUGdTdGF0X1N1YlhhY3RTdGF0dXMgKnVwcGVyX3hhY3Rfc3RhdGU7CiAKQEAgLTMyNDQs OSArMzI0NCw5IEBAIHBnc3RhdF9zZW5kX3dhbChib29sIGZvcmNlKQogCQlXYWxVc2FnZQl3YWx1 c2FnZTsKIAogCQkvKgotCQkgKiBDYWxjdWxhdGUgaG93IG11Y2ggV0FMIHVzYWdlIGNvdW50ZXJz IHdlcmUgaW5jcmVhc2VkIGJ5Ci0JCSAqIHN1YnRyYWN0aW5nIHRoZSBwcmV2aW91cyBjb3VudGVy cyBmcm9tIHRoZSBjdXJyZW50IG9uZXMuIEZpbGwgdGhlCi0JCSAqIHJlc3VsdHMgaW4gV0FMIHN0 YXRzIG1lc3NhZ2UuCisJCSAqIENhbGN1bGF0ZSBob3cgbXVjaCBXQUwgdXNhZ2UgY291bnRlcnMg d2VyZSBpbmNyZWFzZWQgYnkgc3VidHJhY3RpbmcKKwkJICogdGhlIHByZXZpb3VzIGNvdW50ZXJz IGZyb20gdGhlIGN1cnJlbnQgb25lcy4gRmlsbCB0aGUgcmVzdWx0cyBpbgorCQkgKiBXQUwgc3Rh dHMgbWVzc2FnZS4KIAkJICovCiAJCU1lbVNldCgmd2FsdXNhZ2UsIDAsIHNpemVvZihXYWxVc2Fn ZSkpOwogCQlXYWxVc2FnZUFjY3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmcHJldldh bFVzYWdlKTsKQEAgLTQwNzcsNyArNDA3Nyw3IEBAIHBnc3RhdF9yZWFkX3N0YXRzZmlsZXMoT2lk IG9ubHlkYiwgYm9vbCBwZXJtYW5lbnQsIGJvb2wgZGVlcCkKIAlib29sCQlmb3VuZDsKIAljb25z dCBjaGFyICpzdGF0ZmlsZSA9IHBlcm1hbmVudCA/IFBHU1RBVF9TVEFUX1BFUk1BTkVOVF9GSUxF TkFNRSA6IHBnc3RhdF9zdGF0X2ZpbGVuYW1lOwogCWludAkJCWk7Ci0JVGltZXN0YW1wVHoJdHM7 CisJVGltZXN0YW1wVHogdHM7CiAKIAkvKgogCSAqIFRoZSB0YWJsZXMgd2lsbCBsaXZlIGluIHBn U3RhdExvY2FsQ29udGV4dC4KQEAgLTUwNTksNiArNTA1OSw3IEBAIHBnc3RhdF9yZWN2X3RhYnN0 YXQoUGdTdGF0X01zZ1RhYnN0YXQgKm1zZywgaW50IGxlbikKIAkJCXRhYmVudHJ5LT50dXBsZXNf dXBkYXRlZCArPSB0YWJtc2ctPnRfY291bnRzLnRfdHVwbGVzX3VwZGF0ZWQ7CiAJCQl0YWJlbnRy eS0+dHVwbGVzX2RlbGV0ZWQgKz0gdGFibXNnLT50X2NvdW50cy50X3R1cGxlc19kZWxldGVkOwog CQkJdGFiZW50cnktPnR1cGxlc19ob3RfdXBkYXRlZCArPSB0YWJtc2ctPnRfY291bnRzLnRfdHVw bGVzX2hvdF91cGRhdGVkOworCiAJCQkvKgogCQkJICogSWYgdGFibGUgd2FzIHRydW5jYXRlZC9k cm9wcGVkLCBmaXJzdCByZXNldCB0aGUgbGl2ZS9kZWFkCiAJCQkgKiBjb3VudGVycy4KQEAgLTUy MjEsNyArNTIyMiwxMCBAQCBwZ3N0YXRfcmVjdl9yZXNldHNoYXJlZGNvdW50ZXIoUGdTdGF0X01z Z1Jlc2V0c2hhcmVkY291bnRlciAqbXNnLCBpbnQgbGVuKQogewogCWlmIChtc2ctPm1fcmVzZXR0 YXJnZXQgPT0gUkVTRVRfQkdXUklURVIpCiAJewotCQkvKiBSZXNldCB0aGUgZ2xvYmFsLCBiZ3dy aXRlciBhbmQgY2hlY2twb2ludGVyIHN0YXRpc3RpY3MgZm9yIHRoZSBjbHVzdGVyLiAqLworCQkv KgorCQkgKiBSZXNldCB0aGUgZ2xvYmFsLCBiZ3dyaXRlciBhbmQgY2hlY2twb2ludGVyIHN0YXRp c3RpY3MgZm9yIHRoZQorCQkgKiBjbHVzdGVyLgorCQkgKi8KIAkJbWVtc2V0KCZnbG9iYWxTdGF0 cywgMCwgc2l6ZW9mKGdsb2JhbFN0YXRzKSk7CiAJCWdsb2JhbFN0YXRzLmJnd3JpdGVyLnN0YXRf cmVzZXRfdGltZXN0YW1wID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCX0KQEAgLTU1MDEsNyAr NTUwNSw3IEBAIHBnc3RhdF9yZWN2X2Jnd3JpdGVyKFBnU3RhdF9Nc2dCZ1dyaXRlciAqbXNnLCBp bnQgbGVuKQogICogLS0tLS0tLS0tLQogICovCiBzdGF0aWMgdm9pZAotcGdzdGF0X3JlY3ZfY2hl Y2twb2ludGVyKFBnU3RhdF9Nc2dDaGVja3BvaW50ZXIgKm1zZywgaW50IGxlbikKK3Bnc3RhdF9y ZWN2X2NoZWNrcG9pbnRlcihQZ1N0YXRfTXNnQ2hlY2twb2ludGVyICogbXNnLCBpbnQgbGVuKQog ewogCWdsb2JhbFN0YXRzLmNoZWNrcG9pbnRlci50aW1lZF9jaGVja3BvaW50cyArPSBtc2ctPm1f dGltZWRfY2hlY2twb2ludHM7CiAJZ2xvYmFsU3RhdHMuY2hlY2twb2ludGVyLnJlcXVlc3RlZF9j aGVja3BvaW50cyArPSBtc2ctPm1fcmVxdWVzdGVkX2NoZWNrcG9pbnRzOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3N0YXJ0dXAuYwppbmRleCAyOGU2OGRkODcxLi4xZGRjOTQyOTkxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3N0YXJ0dXAuYwpAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190 IHN0YXJ0dXBfcHJvZ3Jlc3NfdGltZXJfZXhwaXJlZCA9IGZhbHNlOwogLyoKICAqIFRpbWUgYmV0 d2VlbiBwcm9ncmVzcyB1cGRhdGVzIGZvciBsb25nLXJ1bm5pbmcgc3RhcnR1cCBvcGVyYXRpb25z LgogICovCi1pbnQgbG9nX3N0YXJ0dXBfcHJvZ3Jlc3NfaW50ZXJ2YWwgPSAxMDAwMDsJLyogMTAg c2VjICovCitpbnQJCQlsb2dfc3RhcnR1cF9wcm9ncmVzc19pbnRlcnZhbCA9IDEwMDAwOwkvKiAx MCBzZWMgKi8KIAogLyogU2lnbmFsIGhhbmRsZXJzICovCiBzdGF0aWMgdm9pZCBTdGFydHVwUHJv Y1RyaWdnZXJIYW5kbGVyKFNJR05BTF9BUkdTKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVu Y2llcy5jCmluZGV4IDhiZjgwZGI4ZTQuLmFiYjBhMDk1YmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9kZXBlbmRlbmNpZXMuYwpAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRleHRfZGVwZW5kZW5jaWVz X2J1aWxkKFN0YXRzQnVpbGREYXRhICpkYXRhKQogCiAJLyogcmVzdWx0ICovCiAJTVZEZXBlbmRl bmNpZXMgKmRlcGVuZGVuY2llcyA9IE5VTEw7Ci0JTWVtb3J5Q29udGV4dAljeHQ7CisJTWVtb3J5 Q29udGV4dCBjeHQ7CiAKIAlBc3NlcnQoZGF0YS0+bmF0dG51bXMgPj0gMik7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNz L21jdi5jCmluZGV4IGIzNTBmYzVmN2IuLjE4YzdiZTgxOTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0YXRpc3RpY3MvbWN2LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYwpA QCAtMTYxOSw3ICsxNjE5LDcgQEAgbWN2X2dldF9tYXRjaF9iaXRtYXAoUGxhbm5lckluZm8gKnJv b3QsIExpc3QgKmNsYXVzZXMsCiAJQXNzZXJ0KG1jdmxpc3QtPm5pdGVtcyA8PSBTVEFUU19NQ1ZM SVNUX01BWF9JVEVNUyk7CiAKIAltYXRjaGVzID0gcGFsbG9jKHNpemVvZihib29sKSAqIG1jdmxp c3QtPm5pdGVtcyk7Ci0JbWVtc2V0KG1hdGNoZXMsICFpc19vciwgIHNpemVvZihib29sKSAqIG1j dmxpc3QtPm5pdGVtcyk7CisJbWVtc2V0KG1hdGNoZXMsICFpc19vciwgc2l6ZW9mKGJvb2wpICog bWN2bGlzdC0+bml0ZW1zKTsKIAogCS8qCiAJICogTG9vcCB0aHJvdWdoIHRoZSBsaXN0IG9mIGNs YXVzZXMsIGFuZCBmb3IgZWFjaCBvZiB0aGVtIGV2YWx1YXRlIGFsbCB0aGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggMDhlYmFiZmU5Ni4uNjAwMzQzMWUyYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTY2Niw5ICs2NjYsOCBAQCBSZWFkUmVjZW50QnVm ZmVyKFJlbEZpbGVOb2RlIHJub2RlLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJsb2NrTnVtYmVyIGJs b2NrTnVtLAogCQl7CiAJCQkvKgogCQkJICogSXQncyBub3cgc2FmZSB0byBwaW4gdGhlIGJ1ZmZl ci4gIFdlIGNhbid0IHBpbiBmaXJzdCBhbmQgYXNrCi0JCQkgKiBxdWVzdGlvbnMgbGF0ZXIsIGJl Y2F1c2UgaXQgbWlnaHQgY29uZnVzZSBjb2RlIHBhdGhzCi0JCQkgKiBsaWtlIEludmFsaWRhdGVC dWZmZXIoKSBpZiB3ZSBwaW5uZWQgYSByYW5kb20gbm9uLW1hdGNoaW5nCi0JCQkgKiBidWZmZXIu CisJCQkgKiBxdWVzdGlvbnMgbGF0ZXIsIGJlY2F1c2UgaXQgbWlnaHQgY29uZnVzZSBjb2RlIHBh dGhzIGxpa2UKKwkJCSAqIEludmFsaWRhdGVCdWZmZXIoKSBpZiB3ZSBwaW5uZWQgYSByYW5kb20g bm9uLW1hdGNoaW5nIGJ1ZmZlci4KIAkJCSAqLwogCQkJaWYgKGhhdmVfcHJpdmF0ZV9yZWYpCiAJ CQkJUGluQnVmZmVyKGJ1ZkhkciwgTlVMTCk7CS8qIGJ1bXAgcGluIGNvdW50ICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv ZmlsZS9mZC5jCmluZGV4IGNiMWE4ZGQzNGYuLjQwZGM0ZDU3MGYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9m ZC5jCkBAIC05MTEsNyArOTExLDcgQEAgSW5pdEZpbGVBY2Nlc3Modm9pZCkKIHZvaWQKIEluaXRU ZW1wb3JhcnlGaWxlQWNjZXNzKHZvaWQpCiB7Ci0JQXNzZXJ0KFNpemVWZmRDYWNoZSAhPSAwKTsJ LyogSW5pdEZpbGVBY2Nlc3MoKSBuZWVkcyB0byBoYXZlIHJ1biovCisJQXNzZXJ0KFNpemVWZmRD YWNoZSAhPSAwKTsJLyogSW5pdEZpbGVBY2Nlc3MoKSBuZWVkcyB0byBoYXZlIHJ1biAqLwogCUFz c2VydCghdGVtcG9yYXJ5X2ZpbGVzX2FsbG93ZWQpOwkvKiBjYWxsIG1lIG9ubHkgb25jZSAqLwog CiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggYmQzYzdhNDdmZS4uZWRh ODBjOGQ5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTI1NSw3ICsyNTUs NyBAQCB0eXBlZGVmIGVudW0gR2xvYmFsVmlzSG9yaXpvbktpbmQKIAlWSVNIT1JJWk9OX0NBVEFM T0csCiAJVklTSE9SSVpPTl9EQVRBLAogCVZJU0hPUklaT05fVEVNUAotfSBHbG9iYWxWaXNIb3Jp em9uS2luZDsKK30JCQlHbG9iYWxWaXNIb3Jpem9uS2luZDsKIAogCiBzdGF0aWMgUHJvY0FycmF5 U3RydWN0ICpwcm9jQXJyYXk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1fbXEuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5jCmluZGV4IGI0Y2U5NjI5 ZDQuLjliY2RiNWJmYTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9t cS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5jCkBAIC01MzQsOSArNTM0 LDkgQEAgc2htX21xX3NlbmR2KHNobV9tcV9oYW5kbGUgKm1xaCwgc2htX21xX2lvdmVjICppb3Ys IGludCBpb3ZjbnQsIGJvb2wgbm93YWl0LAogCX0KIAogCS8qCi0JICogSWYgdGhlIGNhbGxlciBo YXMgcmVxdWVzdGVkIGZvcmNlIGZsdXNoIG9yIHdlIGhhdmUgd3JpdHRlbiBtb3JlIHRoYW4gMS80 Ci0JICogb2YgdGhlIHJpbmcgc2l6ZSwgbWFyayBpdCBhcyB3cml0dGVuIGluIHNoYXJlZCBtZW1v cnkgYW5kIG5vdGlmeSB0aGUKLQkgKiByZWNlaXZlci4KKwkgKiBJZiB0aGUgY2FsbGVyIGhhcyBy ZXF1ZXN0ZWQgZm9yY2UgZmx1c2ggb3Igd2UgaGF2ZSB3cml0dGVuIG1vcmUgdGhhbgorCSAqIDEv NCBvZiB0aGUgcmluZyBzaXplLCBtYXJrIGl0IGFzIHdyaXR0ZW4gaW4gc2hhcmVkIG1lbW9yeSBh bmQgbm90aWZ5CisJICogdGhlIHJlY2VpdmVyLgogCSAqLwogCWlmIChmb3JjZV9mbHVzaCB8fCBt cWgtPm1xaF9zZW5kX3BlbmRpbmcgPiAobXEtPm1xX3Jpbmdfc2l6ZSA+PiAyKSkKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL2xvY2suYwppbmRleCBjMjVhZjdmZTA5Li42NTNiMzcxMjA2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9sb2NrLmMKQEAgLTMyMzcsNyArMzIzNyw3IEBAIENoZWNrRm9yU2Vzc2lvbkFuZFhh Y3RMb2Nrcyh2b2lkKQogCQlMT0NLVEFHCQlsb2NrOwkJLyogaWRlbnRpZmllcyB0aGUgbG9ja2Fi bGUgb2JqZWN0ICovCiAJCWJvb2wJCXNlc3NMb2NrOwkvKiBpcyBhbnkgbG9ja21vZGUgaGVsZCBh dCBzZXNzaW9uIGxldmVsPyAqLwogCQlib29sCQl4YWN0TG9jazsJLyogaXMgYW55IGxvY2ttb2Rl IGhlbGQgYXQgeGFjdCBsZXZlbD8gKi8KLQl9IFBlckxvY2tUYWdFbnRyeTsKKwl9CQkJUGVyTG9j a1RhZ0VudHJ5OwogCiAJSEFTSENUTAkJaGFzaF9jdGw7CiAJSFRBQgkgICAqbG9ja2h0YWI7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwppbmRleCA2NjBlODU0ZTkzLi41OGQ0OTE3OWNjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKQEAgLTM5OTYsNyArMzk5Niw4IEBAIGhhc2hf YXJyYXkoUEdfRlVOQ1RJT05fQVJHUykKIAogCQkJLyoKIAkJCSAqIE1ha2UgZmFrZSB0eXBlIGNh Y2hlIGVudHJ5IHN0cnVjdHVyZS4gIE5vdGUgdGhhdCB3ZSBjYW4ndCBqdXN0Ci0JCQkgKiBtb2Rp ZnkgdHlwZW50cnksIHNpbmNlIHRoYXQgcG9pbnRzIGRpcmVjdGx5IGludG8gdGhlIHR5cGUgY2Fj aGUuCisJCQkgKiBtb2RpZnkgdHlwZW50cnksIHNpbmNlIHRoYXQgcG9pbnRzIGRpcmVjdGx5IGlu dG8gdGhlIHR5cGUKKwkJCSAqIGNhY2hlLgogCQkJICovCiAJCQlyZWNvcmRfdHlwZW50cnkgPSBw YWxsb2MwKHNpemVvZigqcmVjb3JkX3R5cGVudHJ5KSk7CiAJCQlyZWNvcmRfdHlwZW50cnktPnR5 cGVfaWQgPSBlbGVtZW50X3R5cGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv bXVsdGlyYW5nZXR5cGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVz LmMKaW5kZXggNzc3MzIxNTU2NC4uZjNkMmU1MmRiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9t dWx0aXJhbmdldHlwZXMuYwpAQCAtMjY1MSw3ICsyNjUxLDcgQEAgbXVsdGlyYW5nZV91bm5lc3Qo UEdfRlVOQ1RJT05fQVJHUykKIAkJTXVsdGlyYW5nZVR5cGUgKm1yOwogCQlUeXBlQ2FjaGVFbnRy eSAqdHlwY2FjaGU7CiAJCWludAkJCWluZGV4OwotCX0gbXVsdGlyYW5nZV91bm5lc3RfZmN0eDsK Kwl9CQkJbXVsdGlyYW5nZV91bm5lc3RfZmN0eDsKIAogCUZ1bmNDYWxsQ29udGV4dCAqZnVuY2N0 eDsKIAltdWx0aXJhbmdlX3VubmVzdF9mY3R4ICpmY3R4OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfc3BnaXN0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cmFuZ2V0eXBlc19zcGdpc3QuYwppbmRleCA5MTJiNDNmMDgzLi45Mzk1YjMyNTc2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19zcGdpc3QuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19zcGdpc3QuYwpAQCAtNjA4LDggKzYwOCw4IEBA IHNwZ19yYW5nZV9xdWFkX2lubmVyX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJ LyoKIAkJCQkJICogTm9uLWVtcHR5IHJhbmdlIEEgY29udGFpbnMgbm9uLWVtcHR5IHJhbmdlIEIg aWYgbG93ZXIKIAkJCQkJICogYm91bmQgb2YgQSBpcyBsb3dlciBvciBlcXVhbCB0byBsb3dlciBi b3VuZCBvZiByYW5nZSBCCi0JCQkJCSAqIGFuZCB1cHBlciBib3VuZCBvZiByYW5nZSBBIGlzIGdy ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB1cHBlcgotCQkJCQkgKiBib3VuZCBvZiByYW5nZSBBLgor CQkJCQkgKiBhbmQgdXBwZXIgYm91bmQgb2YgcmFuZ2UgQSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1 YWwgdG8KKwkJCQkJICogdXBwZXIgYm91bmQgb2YgcmFuZ2UgQS4KIAkJCQkJICoKIAkJCQkJICog QWxsIG5vbi1lbXB0eSByYW5nZXMgY29udGFpbiBhbiBlbXB0eSByYW5nZS4KIAkJCQkJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvaW52YWwuYwppbmRleCA3NzdmYWI0OTE1Li4yNDk3MmUzYTcxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2ludmFsLmMKQEAgLTE2Niw3ICsxNjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbnZh bE1lc3NhZ2VBcnJheQogewogCVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKm1zZ3M7CS8qIHBh bGxvYydkIGFycmF5IChjYW4gYmUgZXhwYW5kZWQpICovCiAJaW50CQkJbWF4bXNnczsJCS8qIGN1 cnJlbnQgYWxsb2NhdGVkIHNpemUgb2YgYXJyYXkgKi8KLX0gSW52YWxNZXNzYWdlQXJyYXk7Cit9 CQkJSW52YWxNZXNzYWdlQXJyYXk7CiAKIHN0YXRpYyBJbnZhbE1lc3NhZ2VBcnJheSBJbnZhbE1l c3NhZ2VBcnJheXNbMl07CiAKQEAgLTE3NSw3ICsxNzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbnZh bGlkYXRpb25Nc2dzR3JvdXAKIHsKIAlpbnQJCQlmaXJzdG1zZ1syXTsJLyogZmlyc3QgaW5kZXgg aW4gcmVsZXZhbnQgYXJyYXkgKi8KIAlpbnQJCQluZXh0bXNnWzJdOwkJLyogbGFzdCsxIGluZGV4 ICovCi19IEludmFsaWRhdGlvbk1zZ3NHcm91cDsKK30JCQlJbnZhbGlkYXRpb25Nc2dzR3JvdXA7 CiAKIC8qIE1hY3JvcyB0byBoZWxwIHByZXNlcnZlIEludmFsaWRhdGlvbk1zZ3NHcm91cCBhYnN0 cmFjdGlvbiAqLwogI2RlZmluZSBTZXRTdWJHcm91cFRvRm9sbG93KHRhcmdldGdyb3VwLCBwcmlv cmdyb3VwLCBzdWJncm91cCkgXApAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyBpbnQJcmVsY2Fj aGVfY2FsbGJhY2tfY291bnQgPSAwOwogICogc3ViZ3JvdXAgbXVzdCBiZSBDYXRDYWNoZU1zZ3Mg b3IgUmVsQ2FjaGVNc2dzLgogICovCiBzdGF0aWMgdm9pZAotQWRkSW52YWxpZGF0aW9uTWVzc2Fn ZShJbnZhbGlkYXRpb25Nc2dzR3JvdXAgKmdyb3VwLCBpbnQgc3ViZ3JvdXAsCitBZGRJbnZhbGlk YXRpb25NZXNzYWdlKEludmFsaWRhdGlvbk1zZ3NHcm91cCAqIGdyb3VwLCBpbnQgc3ViZ3JvdXAs CiAJCQkJCSAgIGNvbnN0IFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKm1zZykKIHsKIAlJbnZh bE1lc3NhZ2VBcnJheSAqaW1hID0gJkludmFsTWVzc2FnZUFycmF5c1tzdWJncm91cF07CkBAIC0z MjcsOCArMzI3LDggQEAgQWRkSW52YWxpZGF0aW9uTWVzc2FnZShJbnZhbGlkYXRpb25Nc2dzR3Jv dXAgKmdyb3VwLCBpbnQgc3ViZ3JvdXAsCiAgKiB0aGUgc291cmNlIHN1Ymdyb3VwIHRvIGVtcHR5 LgogICovCiBzdGF0aWMgdm9pZAotQXBwZW5kSW52YWxpZGF0aW9uTWVzc2FnZVN1Ykdyb3VwKElu dmFsaWRhdGlvbk1zZ3NHcm91cCAqZGVzdCwKLQkJCQkJCQkJICBJbnZhbGlkYXRpb25Nc2dzR3Jv dXAgKnNyYywKK0FwcGVuZEludmFsaWRhdGlvbk1lc3NhZ2VTdWJHcm91cChJbnZhbGlkYXRpb25N c2dzR3JvdXAgKiBkZXN0LAorCQkJCQkJCQkgIEludmFsaWRhdGlvbk1zZ3NHcm91cCAqIHNyYywK IAkJCQkJCQkJICBpbnQgc3ViZ3JvdXApCiB7CiAJLyogTWVzc2FnZXMgbXVzdCBiZSBhZGphY2Vu dCBpbiBtYWluIGFycmF5ICovCkBAIC0zOTIsNyArMzkyLDcgQEAgQXBwZW5kSW52YWxpZGF0aW9u TWVzc2FnZVN1Ykdyb3VwKEludmFsaWRhdGlvbk1zZ3NHcm91cCAqZGVzdCwKICAqIEFkZCBhIGNh dGNhY2hlIGludmFsIGVudHJ5CiAgKi8KIHN0YXRpYyB2b2lkCi1BZGRDYXRjYWNoZUludmFsaWRh dGlvbk1lc3NhZ2UoSW52YWxpZGF0aW9uTXNnc0dyb3VwICpncm91cCwKK0FkZENhdGNhY2hlSW52 YWxpZGF0aW9uTWVzc2FnZShJbnZhbGlkYXRpb25Nc2dzR3JvdXAgKiBncm91cCwKIAkJCQkJCQkg ICBpbnQgaWQsIHVpbnQzMiBoYXNoVmFsdWUsIE9pZCBkYklkKQogewogCVNoYXJlZEludmFsaWRh dGlvbk1lc3NhZ2UgbXNnOwpAQCAtNDIwLDcgKzQyMCw3IEBAIEFkZENhdGNhY2hlSW52YWxpZGF0 aW9uTWVzc2FnZShJbnZhbGlkYXRpb25Nc2dzR3JvdXAgKmdyb3VwLAogICogQWRkIGEgd2hvbGUt Y2F0YWxvZyBpbnZhbCBlbnRyeQogICovCiBzdGF0aWMgdm9pZAotQWRkQ2F0YWxvZ0ludmFsaWRh dGlvbk1lc3NhZ2UoSW52YWxpZGF0aW9uTXNnc0dyb3VwICpncm91cCwKK0FkZENhdGFsb2dJbnZh bGlkYXRpb25NZXNzYWdlKEludmFsaWRhdGlvbk1zZ3NHcm91cCAqIGdyb3VwLAogCQkJCQkJCSAg T2lkIGRiSWQsIE9pZCBjYXRJZCkKIHsKIAlTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlIG1zZzsK QEAgLTQzOCw3ICs0MzgsNyBAQCBBZGRDYXRhbG9nSW52YWxpZGF0aW9uTWVzc2FnZShJbnZhbGlk YXRpb25Nc2dzR3JvdXAgKmdyb3VwLAogICogQWRkIGEgcmVsY2FjaGUgaW52YWwgZW50cnkKICAq Lwogc3RhdGljIHZvaWQKLUFkZFJlbGNhY2hlSW52YWxpZGF0aW9uTWVzc2FnZShJbnZhbGlkYXRp b25Nc2dzR3JvdXAgKmdyb3VwLAorQWRkUmVsY2FjaGVJbnZhbGlkYXRpb25NZXNzYWdlKEludmFs aWRhdGlvbk1zZ3NHcm91cCAqIGdyb3VwLAogCQkJCQkJCSAgIE9pZCBkYklkLCBPaWQgcmVsSWQp CiB7CiAJU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSBtc2c7CkBAIC00NzAsNyArNDcwLDcgQEAg QWRkUmVsY2FjaGVJbnZhbGlkYXRpb25NZXNzYWdlKEludmFsaWRhdGlvbk1zZ3NHcm91cCAqZ3Jv dXAsCiAgKiBXZSBwdXQgdGhlc2UgaW50byB0aGUgcmVsY2FjaGUgc3ViZ3JvdXAgZm9yIHNpbXBs aWNpdHkuCiAgKi8KIHN0YXRpYyB2b2lkCi1BZGRTbmFwc2hvdEludmFsaWRhdGlvbk1lc3NhZ2Uo SW52YWxpZGF0aW9uTXNnc0dyb3VwICpncm91cCwKK0FkZFNuYXBzaG90SW52YWxpZGF0aW9uTWVz c2FnZShJbnZhbGlkYXRpb25Nc2dzR3JvdXAgKiBncm91cCwKIAkJCQkJCQkgICBPaWQgZGJJZCwg T2lkIHJlbElkKQogewogCVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgbXNnOwpAQCAtNDk3LDgg KzQ5Nyw4IEBAIEFkZFNuYXBzaG90SW52YWxpZGF0aW9uTWVzc2FnZShJbnZhbGlkYXRpb25Nc2dz R3JvdXAgKmdyb3VwLAogICogdGhlIHNvdXJjZSBncm91cCB0byBlbXB0eS4KICAqLwogc3RhdGlj IHZvaWQKLUFwcGVuZEludmFsaWRhdGlvbk1lc3NhZ2VzKEludmFsaWRhdGlvbk1zZ3NHcm91cCAq ZGVzdCwKLQkJCQkJCSAgIEludmFsaWRhdGlvbk1zZ3NHcm91cCAqc3JjKQorQXBwZW5kSW52YWxp ZGF0aW9uTWVzc2FnZXMoSW52YWxpZGF0aW9uTXNnc0dyb3VwICogZGVzdCwKKwkJCQkJCSAgIElu dmFsaWRhdGlvbk1zZ3NHcm91cCAqIHNyYykKIHsKIAlBcHBlbmRJbnZhbGlkYXRpb25NZXNzYWdl U3ViR3JvdXAoZGVzdCwgc3JjLCBDYXRDYWNoZU1zZ3MpOwogCUFwcGVuZEludmFsaWRhdGlvbk1l c3NhZ2VTdWJHcm91cChkZXN0LCBzcmMsIFJlbENhY2hlTXNncyk7CkBAIC01MTEsNyArNTExLDcg QEAgQXBwZW5kSW52YWxpZGF0aW9uTWVzc2FnZXMoSW52YWxpZGF0aW9uTXNnc0dyb3VwICpkZXN0 LAogICogY2F0Y2FjaGUgZW50cmllcyBhcmUgcHJvY2Vzc2VkIGZpcnN0LCBmb3IgcmVhc29ucyBt ZW50aW9uZWQgYWJvdmUuCiAgKi8KIHN0YXRpYyB2b2lkCi1Qcm9jZXNzSW52YWxpZGF0aW9uTWVz c2FnZXMoSW52YWxpZGF0aW9uTXNnc0dyb3VwICpncm91cCwKK1Byb2Nlc3NJbnZhbGlkYXRpb25N ZXNzYWdlcyhJbnZhbGlkYXRpb25Nc2dzR3JvdXAgKiBncm91cCwKIAkJCQkJCQl2b2lkICgqZnVu YykgKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKm1zZykpCiB7CiAJUHJvY2Vzc01lc3NhZ2VT dWJHcm91cChncm91cCwgQ2F0Q2FjaGVNc2dzLCBmdW5jKG1zZykpOwpAQCAtNTIzLDcgKzUyMyw3 IEBAIFByb2Nlc3NJbnZhbGlkYXRpb25NZXNzYWdlcyhJbnZhbGlkYXRpb25Nc2dzR3JvdXAgKmdy b3VwLAogICogcmF0aGVyIHRoYW4ganVzdCBvbmUgYXQgYSB0aW1lLgogICovCiBzdGF0aWMgdm9p ZAotUHJvY2Vzc0ludmFsaWRhdGlvbk1lc3NhZ2VzTXVsdGkoSW52YWxpZGF0aW9uTXNnc0dyb3Vw ICpncm91cCwKK1Byb2Nlc3NJbnZhbGlkYXRpb25NZXNzYWdlc011bHRpKEludmFsaWRhdGlvbk1z Z3NHcm91cCAqIGdyb3VwLAogCQkJCQkJCQkgdm9pZCAoKmZ1bmMpIChjb25zdCBTaGFyZWRJbnZh bGlkYXRpb25NZXNzYWdlICptc2dzLCBpbnQgbikpCiB7CiAJUHJvY2Vzc01lc3NhZ2VTdWJHcm91 cE11bHRpKGdyb3VwLCBDYXRDYWNoZU1zZ3MsIGZ1bmMobXNncywgbikpOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL3BnX2FtY2hlY2suYyBiL3NyYy9iaW4vcGdfYW1jaGVjay9wZ19h bWNoZWNrLmMKaW5kZXggZDRhNTNjOGU2My4uYTNjMTNmYTI3ZSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19hbWNoZWNrL3BnX2FtY2hlY2suYworKysgYi9zcmMvYmluL3BnX2FtY2hlY2svcGdfYW1j aGVjay5jCkBAIC0xMTAwLDE3ICsxMTAwLDE3IEBAIHZlcmlmeV9idHJlZV9zbG90X2hhbmRsZXIo UEdyZXN1bHQgKnJlcywgUEdjb25uICpjb25uLCB2b2lkICpjb250ZXh0KQogCiAJaWYgKFBRcmVz dWx0U3RhdHVzKHJlcykgPT0gUEdSRVNfVFVQTEVTX09LKQogCXsKLQkJaW50ICAgICAgICAgICAg ICAgICAgICAgbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKKwkJaW50CQkJbnR1cHMgPSBQUW50dXBs ZXMocmVzKTsKIAogCQlpZiAobnR1cHMgPiAxKQogCQl7CiAJCQkvKgogCQkJICogV2UgZXhwZWN0 IHRoZSBidHJlZSBjaGVja2luZyBmdW5jdGlvbnMgdG8gcmV0dXJuIG9uZSB2b2lkIHJvdwogCQkJ ICogZWFjaCwgb3IgemVybyByb3dzIGlmIHRoZSBjaGVjayB3YXMgc2tpcHBlZCBkdWUgdG8gdGhl IG9iamVjdAotCQkJICogYmVpbmcgaW4gdGhlIHdyb25nIHN0YXRlIHRvIGJlIGNoZWNrZWQsIHNv IHdlIHNob3VsZCBvdXRwdXQgc29tZQotCQkJICogc29ydCBvZiB3YXJuaW5nIGlmIHdlIGdldCBh bnl0aGluZyBtb3JlLCBub3QgYmVjYXVzZSBpdAotCQkJICogaW5kaWNhdGVzIGNvcnJ1cHRpb24s IGJ1dCBiZWNhdXNlIGl0IHN1Z2dlc3RzIGEgbWlzbWF0Y2ggYmV0d2VlbgotCQkJICogYW1jaGVj ayBhbmQgcGdfYW1jaGVjayB2ZXJzaW9ucy4KKwkJCSAqIGJlaW5nIGluIHRoZSB3cm9uZyBzdGF0 ZSB0byBiZSBjaGVja2VkLCBzbyB3ZSBzaG91bGQgb3V0cHV0CisJCQkgKiBzb21lIHNvcnQgb2Yg d2FybmluZyBpZiB3ZSBnZXQgYW55dGhpbmcgbW9yZSwgbm90IGJlY2F1c2UgaXQKKwkJCSAqIGlu ZGljYXRlcyBjb3JydXB0aW9uLCBidXQgYmVjYXVzZSBpdCBzdWdnZXN0cyBhIG1pc21hdGNoCisJ CQkgKiBiZXR3ZWVuIGFtY2hlY2sgYW5kIHBnX2FtY2hlY2sgdmVyc2lvbnMuCiAJCQkgKgogCQkJ ICogSW4gY29uanVuY3Rpb24gd2l0aCAtLXByb2dyZXNzLCBhbnl0aGluZyB3cml0dGVuIHRvIHN0 ZGVyciBhdAogCQkJICogdGhpcyB0aW1lIHdvdWxkIHByZXNlbnQgc3RyYW5nZWx5IHRvIHRoZSB1 c2VyIHdpdGhvdXQgYW4gZXh0cmEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9w Z19iYXNlYmFja3VwLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jCmlu ZGV4IDI3ZWU2Mzk0Y2YuLjE5YjdiMWQ0MTIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJh Y2t1cC9wZ19iYXNlYmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2Vi YWNrdXAuYwpAQCAtMTg4OCwyNiArMTg4OCwyNiBAQCBCYXNlQmFja3VwKHZvaWQpCiAJfQogCWlm IChtYXhyYXRlID4gMCkKIAkJQXBwZW5kSW50ZWdlckNvbW1hbmRPcHRpb24oJmJ1ZiwgdXNlX25l d19vcHRpb25fc3ludGF4LCAiTUFYX1JBVEUiLAotCQkJCQkJCQkJICBtYXhyYXRlKTsKKwkJCQkJ CQkJICAgbWF4cmF0ZSk7CiAJaWYgKGZvcm1hdCA9PSAndCcpCiAJCUFwcGVuZFBsYWluQ29tbWFu ZE9wdGlvbigmYnVmLCB1c2VfbmV3X29wdGlvbl9zeW50YXgsICJUQUJMRVNQQUNFX01BUCIpOwog CWlmICghdmVyaWZ5X2NoZWNrc3VtcykKIAl7CiAJCWlmICh1c2VfbmV3X29wdGlvbl9zeW50YXgp CiAJCQlBcHBlbmRJbnRlZ2VyQ29tbWFuZE9wdGlvbigmYnVmLCB1c2VfbmV3X29wdGlvbl9zeW50 YXgsCi0JCQkJCQkJCQkJICAiVkVSSUZZX0NIRUNLU1VNUyIsIDApOworCQkJCQkJCQkJICAgIlZF UklGWV9DSEVDS1NVTVMiLCAwKTsKIAkJZWxzZQogCQkJQXBwZW5kUGxhaW5Db21tYW5kT3B0aW9u KCZidWYsIHVzZV9uZXdfb3B0aW9uX3N5bnRheCwKLQkJCQkJCQkJCQkiTk9WRVJJRllfQ0hFQ0tT VU1TIik7CisJCQkJCQkJCQkgIk5PVkVSSUZZX0NIRUNLU1VNUyIpOwogCX0KIAogCWlmIChtYW5p ZmVzdCkKIAl7CiAJCUFwcGVuZFN0cmluZ0NvbW1hbmRPcHRpb24oJmJ1ZiwgdXNlX25ld19vcHRp b25fc3ludGF4LCAiTUFOSUZFU1QiLAotCQkJCQkJCQkJIG1hbmlmZXN0X2ZvcmNlX2VuY29kZSA/ ICJmb3JjZS1lbmNvZGUiIDogInllcyIpOworCQkJCQkJCQkgIG1hbmlmZXN0X2ZvcmNlX2VuY29k ZSA/ICJmb3JjZS1lbmNvZGUiIDogInllcyIpOwogCQlpZiAobWFuaWZlc3RfY2hlY2tzdW1zICE9 IE5VTEwpCiAJCQlBcHBlbmRTdHJpbmdDb21tYW5kT3B0aW9uKCZidWYsIHVzZV9uZXdfb3B0aW9u X3N5bnRheCwKLQkJCQkJCQkJCQkgIk1BTklGRVNUX0NIRUNLU1VNUyIsIG1hbmlmZXN0X2NoZWNr c3Vtcyk7CisJCQkJCQkJCQkgICJNQU5JRkVTVF9DSEVDS1NVTVMiLCBtYW5pZmVzdF9jaGVja3N1 bXMpOwogCX0KIAogCWlmICh2ZXJib3NlKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFj a3VwL3N0cmVhbXV0aWwuYyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9zdHJlYW11dGlsLmMKaW5k ZXggMmEzZTBjNjg4Zi4uMDY5MDM5MzkxMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFj a3VwL3N0cmVhbXV0aWwuYworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvc3RyZWFtdXRpbC5j CkBAIC02MjUsNyArNjI1LDcgQEAgQ3JlYXRlUmVwbGljYXRpb25TbG90KFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqc2xvdF9uYW1lLCBjb25zdCBjaGFyICpwbHVnaW4sCiAJCQkvKiBwZ19yZWN2 bG9naWNhbCBkb2Vzbid0IHVzZSBhbiBleHBvcnRlZCBzbmFwc2hvdCwgc28gc3VwcHJlc3MgKi8K IAkJCWlmICh1c2VfbmV3X29wdGlvbl9zeW50YXgpCiAJCQkJQXBwZW5kU3RyaW5nQ29tbWFuZE9w dGlvbihxdWVyeSwgdXNlX25ld19vcHRpb25fc3ludGF4LAotCQkJCQkJCQkJCSAgICJTTkFQU0hP VCIsICJub3RoaW5nIik7CisJCQkJCQkJCQkJICAiU05BUFNIT1QiLCAibm90aGluZyIpOwogCQkJ ZWxzZQogCQkJCUFwcGVuZFBsYWluQ29tbWFuZE9wdGlvbihxdWVyeSwgdXNlX25ld19vcHRpb25f c3ludGF4LAogCQkJCQkJCQkJCSAiTk9FWFBPUlRfU05BUFNIT1QiKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfY3RsL3BnX2N0bC5jIGIvc3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMKaW5kZXggN2Zi YmU3MDIyZS4uN2ZkMWQ2MmQwMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMK KysrIGIvc3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMKQEAgLTE3NDgsNyArMTc0OCw3IEBAIHR5cGVk ZWYgQk9PTCAoV0lOQVBJICogX19RdWVyeUluZm9ybWF0aW9uSm9iT2JqZWN0KSAoSEFORExFLCBK T0JPQkpFQ1RJTkZPQ0xBU1MsCiAgKiBhY2hpZXZlcyB0aGUgZ29hbCBvZiBwb3N0bWFzdGVyIHJ1 bm5pbmcgaW4gYSBzaW1pbGFyIGVudmlyb25tZW50IGFzIHBnX2N0bC4KICAqLwogc3RhdGljIHZv aWQKLUluaGVyaXRTdGRIYW5kbGVzKFNUQVJUVVBJTkZPKiBzaSkKK0luaGVyaXRTdGRIYW5kbGVz KFNUQVJUVVBJTkZPICpzaSkKIHsKIAlzaS0+ZHdGbGFncyB8PSBTVEFSVEZfVVNFU1RESEFORExF UzsKIAlzaS0+aFN0ZElucHV0ID0gR2V0U3RkSGFuZGxlKFNURF9JTlBVVF9IQU5ETEUpOwpAQCAt MTgwMCw4ICsxODAwLDggQEAgQ3JlYXRlUmVzdHJpY3RlZFByb2Nlc3MoY2hhciAqY21kLCBQUk9D RVNTX0lORk9STUFUSU9OICpwcm9jZXNzSW5mbywgYm9vbCBhc19zZXIKIAlzaS5jYiA9IHNpemVv ZihzaSk7CiAKIAkvKgotCSAqIFNldCBzdGRpbi9zdGRvdXQvc3RkZXJyIGhhbmRsZXMgdG8gYmUg aW5oZXJpdGVkIGluIHRoZSBjaGlsZAotCSAqIHByb2Nlc3MuIFRoYXQgYWxsb3dzIHBvc3RtYXN0 ZXIgYW5kIHRoZSBwcm9jZXNzZXMgaXQgc3RhcnRzIHRvIHBlcmZvcm0KKwkgKiBTZXQgc3RkaW4v c3Rkb3V0L3N0ZGVyciBoYW5kbGVzIHRvIGJlIGluaGVyaXRlZCBpbiB0aGUgY2hpbGQgcHJvY2Vz cy4KKwkgKiBUaGF0IGFsbG93cyBwb3N0bWFzdGVyIGFuZCB0aGUgcHJvY2Vzc2VzIGl0IHN0YXJ0 cyB0byBwZXJmb3JtCiAJICogYWRkaXRpb25hbCBjaGVja3MgdG8gc2VlIGlmIHJ1bm5pbmcgaW4g YSBzZXJ2aWNlIChvdGhlcndpc2UgdGhleSBnZXQKIAkgKiB0aGUgZGVmYXVsdCBjb25zb2xlIGhh bmRsZXMgLSB3aGljaCBwb2ludCB0byAic29tZXdoZXJlIikuCiAJICovCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvY29tbW9uLmMgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKaW5kZXgg ZWNhYjBhOWU0ZS4uM2UwOTFhNzU0ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1v bi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwpAQCAtNTksNyArNTksNyBAQCB0eXBl ZGVmIHN0cnVjdCBfY2F0YWxvZ0lkTWFwRW50cnkKIAl1aW50MzIJCWhhc2h2YWw7CQkvKiBoYXNo IGNvZGUgZm9yIHRoZSBDYXRhbG9nSWQgKi8KIAlEdW1wYWJsZU9iamVjdCAqZG9iajsJCS8qIHRo ZSBhc3NvY2lhdGVkIER1bXBhYmxlT2JqZWN0LCBpZiBhbnkgKi8KIAlFeHRlbnNpb25JbmZvICpl eHQ7CQkJLyogb3duaW5nIGV4dGVuc2lvbiwgaWYgYW55ICovCi19IENhdGFsb2dJZE1hcEVudHJ5 OworfQkJCUNhdGFsb2dJZE1hcEVudHJ5OwogCiAjZGVmaW5lIFNIX1BSRUZJWAkJY2F0YWxvZ2lk CiAjZGVmaW5lIFNIX0VMRU1FTlRfVFlQRQlDYXRhbG9nSWRNYXBFbnRyeQpAQCAtNzcsNyArNzcs NyBAQCB0eXBlZGVmIHN0cnVjdCBfY2F0YWxvZ0lkTWFwRW50cnkKIAogI2RlZmluZSBDQVRBTE9H SURIQVNIX0lOSVRJQUxfU0laRQkxMDAwMAogCi1zdGF0aWMgY2F0YWxvZ2lkX2hhc2ggKmNhdGFs b2dJZEhhc2ggPSBOVUxMOworc3RhdGljIGNhdGFsb2dpZF9oYXNoICogY2F0YWxvZ0lkSGFzaCA9 IE5VTEw7CiAKIHN0YXRpYyB2b2lkIGZsYWdJbmhUYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJ bmZvICp0YmluZm8sIGludCBudW1UYWJsZXMsCiAJCQkJCQkgIEluaEluZm8gKmluaGluZm8sIGlu dCBudW1Jbmhlcml0cyk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIv c3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCBkMTdmNjkzMzNmLi4yZTM0NTE2ZDNlIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMKQEAgLTQxNTgsNyArNDE1OCw3IEBAIGluaXRHZW5lcmF0ZURhdGFDbGllbnRT aWRlKFBHY29ubiAqY29uKQogCVBHcmVzdWx0ICAgKnJlczsKIAlpbnQJCQlpOwogCWludDY0CQlr OwotCWNoYXIJCSpjb3B5X3N0YXRlbWVudDsKKwljaGFyCSAgICpjb3B5X3N0YXRlbWVudDsKIAog CS8qIHVzZWQgdG8gdHJhY2sgZWxhcHNlZCB0aW1lIGFuZCBlc3RpbWF0ZSBvZiB0aGUgcmVtYWlu aW5nIHRpbWUgKi8KIAlwZ190aW1lX3VzZWNfdCBzdGFydDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfY2xhc3MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaApp bmRleCBmZWY5OTQ1ZWQ4Li42ZDYwOTgxOWE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NsYXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCkBAIC0x OTgsNyArMTk4LDcgQEAgREVDTEFSRV9JTkRFWChwZ19jbGFzc190YmxzcGNfcmVsZmlsZW5vZGVf aW5kZXgsIDM0NTUsIENsYXNzVGJsc3BjUmVsZmlsZW5vZGVJbmQKIAkgKHJlbGtpbmQpID09IFJF TEtJTkRfVE9BU1RWQUxVRSB8fCBcCiAJIChyZWxraW5kKSA9PSBSRUxLSU5EX01BVFZJRVcpCiAK LWV4dGVybiBpbnQgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChjaGFyIHJlbGtpbmQp OworZXh0ZXJuIGludAllcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKGNoYXIgcmVsa2lu ZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVz LmgKaW5kZXggN2M2NTdjMTI0MS4uNGNkMDAwNGExMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC02NzAsNyAr NjcwLDggQEAgZXh0ZXJuIGJvb2wgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7 CiAgKi8KIHR5cGVkZWYgZG91YmxlIFNlbGVjdGl2aXR5OwkJLyogZnJhY3Rpb24gb2YgdHVwbGVz IGEgcXVhbGlmaWVyIHdpbGwgcGFzcyAqLwogdHlwZWRlZiBkb3VibGUgQ29zdDsJCQkvKiBleGVj dXRpb24gY29zdCAoaW4gcGFnZS1hY2Nlc3MgdW5pdHMpICovCi10eXBlZGVmIGRvdWJsZSBDYXJk aW5hbGl0eTsJCS8qIChlc3RpbWF0ZWQpIG51bWJlciBvZiByb3dzIG9yIG90aGVyIGludGVnZXIg Y291bnQgKi8KK3R5cGVkZWYgZG91YmxlIENhcmRpbmFsaXR5OwkJLyogKGVzdGltYXRlZCkgbnVt YmVyIG9mIHJvd3Mgb3Igb3RoZXIgaW50ZWdlcgorCQkJCQkJCQkgKiBjb3VudCAqLwogCiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggNDkxMjNlMjhhNC4uOGU4ZWZjMDhlYSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaApAQCAtMjk1LDYgKzI5NSw3IEBAIHR5cGVkZWYgc3RydWN0IEFfRXhw cgogdHlwZWRlZiBzdHJ1Y3QgQV9Db25zdAogewogCU5vZGVUYWcJCXR5cGU7CisKIAkvKgogCSAq IFZhbHVlIG5vZGVzIGFyZSBpbmxpbmUgZm9yIHBlcmZvcm1hbmNlLiAgWW91IGNhbiB0cmVhdCAn dmFsJyBhcyBhIG5vZGUsCiAJICogYXMgaW4gSXNBKCZ2YWwsIEludGVnZXIpLiAgJ3ZhbCcgaXMg bm90IHZhbGlkIGlmIGlzbnVsbCBpcyB0cnVlLgpAQCAtNzU2LDcgKzc1Nyw4IEBAIHR5cGVkZWYg c3RydWN0IERlZkVsZW0KIAlOb2RlVGFnCQl0eXBlOwogCWNoYXIJICAgKmRlZm5hbWVzcGFjZTsJ LyogTlVMTCBpZiB1bnF1YWxpZmllZCBuYW1lICovCiAJY2hhcgkgICAqZGVmbmFtZTsKLQlOb2Rl CSAgICphcmc7CQkJLyogdHlwaWNhbGx5IEludGVnZXIsIEZsb2F0LCBTdHJpbmcsIG9yIFR5cGVO YW1lICovCisJTm9kZQkgICAqYXJnOwkJCS8qIHR5cGljYWxseSBJbnRlZ2VyLCBGbG9hdCwgU3Ry aW5nLCBvcgorCQkJCQkJCQkgKiBUeXBlTmFtZSAqLwogCURlZkVsZW1BY3Rpb24gZGVmYWN0aW9u OwkvKiB1bnNwZWNpZmllZCBhY3Rpb24sIG9yIFNFVC9BREQvRFJPUCAqLwogCWludAkJCWxvY2F0 aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gRGVmRWxlbTsK QEAgLTExNDQsNyArMTE0Niw3IEBAIHR5cGVkZWYgc3RydWN0IFJhbmdlVGJsRW50cnkKIAkgKiBG aWVsZHMgdmFsaWQgZm9yIEVOUiBSVEVzIChlbHNlIE5VTEwvemVybyk6CiAJICovCiAJY2hhcgkg ICAqZW5ybmFtZTsJCS8qIG5hbWUgb2YgZXBoZW1lcmFsIG5hbWVkIHJlbGF0aW9uICovCi0JQ2Fy ZGluYWxpdHkJZW5ydHVwbGVzOwkJLyogZXN0aW1hdGVkIG9yIGFjdHVhbCBmcm9tIGNhbGxlciAq LworCUNhcmRpbmFsaXR5IGVucnR1cGxlczsJCS8qIGVzdGltYXRlZCBvciBhY3R1YWwgZnJvbSBj YWxsZXIgKi8KIAogCS8qCiAJICogRmllbGRzIHZhbGlkIGluIGFsbCBSVEVzOgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaAppbmRleCAyYTUzYTZlMzQ0Li42NjM4OTE4NWNmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aApAQCAtMzM0LDExICszMzQsMTEgQEAgc3RydWN0IFBsYW5uZXJJbmZvCiAKIAlNZW1vcnlDb250 ZXh0IHBsYW5uZXJfY3h0OwkvKiBjb250ZXh0IGhvbGRpbmcgUGxhbm5lckluZm8gKi8KIAotCUNh cmRpbmFsaXR5CXRvdGFsX3RhYmxlX3BhZ2VzOwkvKiAjIG9mIHBhZ2VzIGluIGFsbCBub24tZHVt bXkgdGFibGVzIG9mCisJQ2FyZGluYWxpdHkgdG90YWxfdGFibGVfcGFnZXM7CS8qICMgb2YgcGFn ZXMgaW4gYWxsIG5vbi1kdW1teSB0YWJsZXMgb2YKIAkJCQkJCQkJCSAqIHF1ZXJ5ICovCiAKLQlT ZWxlY3Rpdml0eQl0dXBsZV9mcmFjdGlvbjsgLyogdHVwbGVfZnJhY3Rpb24gcGFzc2VkIHRvIHF1 ZXJ5X3BsYW5uZXIgKi8KLQlDYXJkaW5hbGl0eQlsaW1pdF90dXBsZXM7CS8qIGxpbWl0X3R1cGxl cyBwYXNzZWQgdG8gcXVlcnlfcGxhbm5lciAqLworCVNlbGVjdGl2aXR5IHR1cGxlX2ZyYWN0aW9u OyAvKiB0dXBsZV9mcmFjdGlvbiBwYXNzZWQgdG8gcXVlcnlfcGxhbm5lciAqLworCUNhcmRpbmFs aXR5IGxpbWl0X3R1cGxlczsJLyogbGltaXRfdHVwbGVzIHBhc3NlZCB0byBxdWVyeV9wbGFubmVy ICovCiAKIAlJbmRleAkJcXVhbF9zZWN1cml0eV9sZXZlbDsJLyogbWluaW11bSBzZWN1cml0eV9s ZXZlbCBmb3IgcXVhbHMgKi8KIAkvKiBOb3RlOiBxdWFsX3NlY3VyaXR5X2xldmVsIGlzIHplcm8g aWYgdGhlcmUgYXJlIG5vIHNlY3VyaXR5UXVhbHMgKi8KQEAgLTY4MSw3ICs2ODEsNyBAQCB0eXBl ZGVmIHN0cnVjdCBSZWxPcHRJbmZvCiAJUmVsaWRzCQlyZWxpZHM7CQkJLyogc2V0IG9mIGJhc2Ug cmVsaWRzIChyYW5nZXRhYmxlIGluZGV4ZXMpICovCiAKIAkvKiBzaXplIGVzdGltYXRlcyBnZW5l cmF0ZWQgYnkgcGxhbm5lciAqLwotCUNhcmRpbmFsaXR5CXJvd3M7CQkJLyogZXN0aW1hdGVkIG51 bWJlciBvZiByZXN1bHQgdHVwbGVzICovCisJQ2FyZGluYWxpdHkgcm93czsJCQkvKiBlc3RpbWF0 ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgKi8KIAogCS8qIHBlci1yZWxhdGlvbiBwbGFubmVy IGNvbnRyb2wgZmxhZ3MgKi8KIAlib29sCQljb25zaWRlcl9zdGFydHVwOwkvKiBrZWVwIGNoZWFw LXN0YXJ0dXAtY29zdCBwYXRocz8gKi8KQEAgLTcxNiw5ICs3MTYsMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgUmVsT3B0SW5mbwogCUxpc3QJICAgKmxhdGVyYWxfdmFyczsJLyogTEFURVJBTCBWYXJzIGFu ZCBQSFZzIHJlZmVyZW5jZWQgYnkgcmVsICovCiAJUmVsaWRzCQlsYXRlcmFsX3JlZmVyZW5jZXJz OwkvKiByZWxzIHRoYXQgcmVmZXJlbmNlIG1lIGxhdGVyYWxseSAqLwogCUxpc3QJICAgKmluZGV4 bGlzdDsJCS8qIGxpc3Qgb2YgSW5kZXhPcHRJbmZvICovCisJTGlzdAkgICAqcGFydEluZGV4bGlz dDsJLyogbGlzdCBvZiBJbmRleE9wdEluZm8gKi8KIAlMaXN0CSAgICpzdGF0bGlzdDsJCS8qIGxp c3Qgb2YgU3RhdGlzdGljRXh0SW5mbyAqLwogCUJsb2NrTnVtYmVyIHBhZ2VzOwkJCS8qIHNpemUg ZXN0aW1hdGVzIGRlcml2ZWQgZnJvbSBwZ19jbGFzcyAqLwotCUNhcmRpbmFsaXR5CXR1cGxlczsK KwlDYXJkaW5hbGl0eSB0dXBsZXM7CiAJZG91YmxlCQlhbGx2aXNmcmFjOwogCUJpdG1hcHNldCAg KmVjbGFzc19pbmRleGVzOyAvKiBJbmRleGVzIGluIFBsYW5uZXJJbmZvJ3MgZXFfY2xhc3NlcyBs aXN0IG9mCiAJCQkJCQkJCSAqIEVDcyB0aGF0IG1lbnRpb24gdGhpcyByZWwgKi8KQEAgLTg0MSw3 ICs4NDIsNyBAQCBzdHJ1Y3QgSW5kZXhPcHRJbmZvCiAKIAkvKiBpbmRleC1zaXplIHN0YXRpc3Rp Y3MgKGZyb20gcGdfY2xhc3MgYW5kIGVsc2V3aGVyZSkgKi8KIAlCbG9ja051bWJlciBwYWdlczsJ CQkvKiBudW1iZXIgb2YgZGlzayBwYWdlcyBpbiBpbmRleCAqLwotCUNhcmRpbmFsaXR5CXR1cGxl czsJCQkvKiBudW1iZXIgb2YgaW5kZXggdHVwbGVzIGluIGluZGV4ICovCisJQ2FyZGluYWxpdHkg dHVwbGVzOwkJCS8qIG51bWJlciBvZiBpbmRleCB0dXBsZXMgaW4gaW5kZXggKi8KIAlpbnQJCQl0 cmVlX2hlaWdodDsJLyogaW5kZXggdHJlZSBoZWlnaHQsIG9yIC0xIGlmIHVua25vd24gKi8KIAog CS8qIGluZGV4IGRlc2NyaXB0b3IgaW5mb3JtYXRpb24gKi8KQEAgLTExMzksNyArMTE0MCw3IEBA IHR5cGVkZWYgc3RydWN0IFBhcmFtUGF0aEluZm8KIAlOb2RlVGFnCQl0eXBlOwogCiAJUmVsaWRz CQlwcGlfcmVxX291dGVyOwkvKiByZWxzIHN1cHBseWluZyBwYXJhbWV0ZXJzIHVzZWQgYnkgcGF0 aCAqLwotCUNhcmRpbmFsaXR5CXBwaV9yb3dzOwkJLyogZXN0aW1hdGVkIG51bWJlciBvZiByZXN1 bHQgdHVwbGVzICovCisJQ2FyZGluYWxpdHkgcHBpX3Jvd3M7CQkvKiBlc3RpbWF0ZWQgbnVtYmVy IG9mIHJlc3VsdCB0dXBsZXMgKi8KIAlMaXN0CSAgICpwcGlfY2xhdXNlczsJLyogam9pbiBjbGF1 c2VzIGF2YWlsYWJsZSBmcm9tIG91dGVyIHJlbHMgKi8KIH0gUGFyYW1QYXRoSW5mbzsKIApAQCAt MTE4OSw3ICsxMTkwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGF0aAogCWludAkJCXBhcmFsbGVsX3dv cmtlcnM7CS8qIGRlc2lyZWQgIyBvZiB3b3JrZXJzOyAwID0gbm90IHBhcmFsbGVsICovCiAKIAkv KiBlc3RpbWF0ZWQgc2l6ZS9jb3N0cyBmb3IgcGF0aCAoc2VlIGNvc3RzaXplLmMgZm9yIG1vcmUg aW5mbykgKi8KLQlDYXJkaW5hbGl0eQlyb3dzOwkJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgcmVz dWx0IHR1cGxlcyAqLworCUNhcmRpbmFsaXR5IHJvd3M7CQkJLyogZXN0aW1hdGVkIG51bWJlciBv ZiByZXN1bHQgdHVwbGVzICovCiAJQ29zdAkJc3RhcnR1cF9jb3N0OwkvKiBjb3N0IGV4cGVuZGVk IGJlZm9yZSBmZXRjaGluZyBhbnkgdHVwbGVzICovCiAJQ29zdAkJdG90YWxfY29zdDsJCS8qIHRv dGFsIGNvc3QgKGFzc3VtaW5nIGFsbCB0dXBsZXMgZmV0Y2hlZCkgKi8KIApAQCAtMTQ1Miw3ICsx NDUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kUGF0aAogCUxpc3QJICAgKnN1YnBhdGhzOwkJ LyogbGlzdCBvZiBjb21wb25lbnQgUGF0aHMgKi8KIAkvKiBJbmRleCBvZiBmaXJzdCBwYXJ0aWFs IHBhdGggaW4gc3VicGF0aHM7IGxpc3RfbGVuZ3RoKHN1YnBhdGhzKSBpZiBub25lICovCiAJaW50 CQkJZmlyc3RfcGFydGlhbF9wYXRoOwotCUNhcmRpbmFsaXR5CWxpbWl0X3R1cGxlczsJLyogaGFy ZCBsaW1pdCBvbiBvdXRwdXQgdHVwbGVzLCBvciAtMSAqLworCUNhcmRpbmFsaXR5IGxpbWl0X3R1 cGxlczsJLyogaGFyZCBsaW1pdCBvbiBvdXRwdXQgdHVwbGVzLCBvciAtMSAqLwogfSBBcHBlbmRQ YXRoOwogCiAjZGVmaW5lIElTX0RVTU1ZX0FQUEVORChwKSBcCkBAIC0xNDc0LDcgKzE0NzUsNyBA QCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZFBhdGgKIHsKIAlQYXRoCQlwYXRoOwogCUxpc3QJ ICAgKnN1YnBhdGhzOwkJLyogbGlzdCBvZiBjb21wb25lbnQgUGF0aHMgKi8KLQlDYXJkaW5hbGl0 eQlsaW1pdF90dXBsZXM7CS8qIGhhcmQgbGltaXQgb24gb3V0cHV0IHR1cGxlcywgb3IgLTEgKi8K KwlDYXJkaW5hbGl0eSBsaW1pdF90dXBsZXM7CS8qIGhhcmQgbGltaXQgb24gb3V0cHV0IHR1cGxl cywgb3IgLTEgKi8KIH0gTWVyZ2VBcHBlbmRQYXRoOwogCiAvKgpAQCAtMTUxNSw3ICsxNTE2LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb2l6ZVBhdGgKIAlMaXN0CSAgICpwYXJhbV9leHByczsJLyog Y2FjaGUga2V5cyAqLwogCWJvb2wJCXNpbmdsZXJvdzsJCS8qIHRydWUgaWYgdGhlIGNhY2hlIGVu dHJ5IGlzIHRvIGJlIG1hcmtlZCBhcwogCQkJCQkJCQkgKiBjb21wbGV0ZSBhZnRlciBjYWNoaW5n IHRoZSBmaXJzdCByZWNvcmQuICovCi0JQ2FyZGluYWxpdHkJY2FsbHM7CQkJLyogZXhwZWN0ZWQg bnVtYmVyIG9mIHJlc2NhbnMgKi8KKwlDYXJkaW5hbGl0eSBjYWxsczsJCQkvKiBleHBlY3RlZCBu dW1iZXIgb2YgcmVzY2FucyAqLwogCXVpbnQzMgkJZXN0X2VudHJpZXM7CS8qIFRoZSBtYXhpbXVt IG51bWJlciBvZiBlbnRyaWVzIHRoYXQgdGhlCiAJCQkJCQkJCSAqIHBsYW5uZXIgZXhwZWN0cyB3 aWxsIGZpdCBpbiB0aGUgY2FjaGUsIG9yIDAKIAkJCQkJCQkJICogaWYgdW5rbm93biAqLwpAQCAt MTY2Nyw3ICsxNjY4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSGFzaFBhdGgKIAlKb2luUGF0aAlqcGF0 aDsKIAlMaXN0CSAgICpwYXRoX2hhc2hjbGF1c2VzOwkvKiBqb2luIGNsYXVzZXMgdXNlZCBmb3Ig aGFzaGluZyAqLwogCWludAkJCW51bV9iYXRjaGVzOwkvKiBudW1iZXIgb2YgYmF0Y2hlcyBleHBl Y3RlZCAqLwotCUNhcmRpbmFsaXR5CWlubmVyX3Jvd3NfdG90YWw7CS8qIHRvdGFsIGlubmVyIHJv d3MgZXhwZWN0ZWQgKi8KKwlDYXJkaW5hbGl0eSBpbm5lcl9yb3dzX3RvdGFsOwkvKiB0b3RhbCBp bm5lciByb3dzIGV4cGVjdGVkICovCiB9IEhhc2hQYXRoOwogCiAvKgpAQCAtMTc3MCw3ICsxNzcx LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQWdnUGF0aAogCVBhdGgJICAgKnN1YnBhdGg7CQkvKiBwYXRo IHJlcHJlc2VudGluZyBpbnB1dCBzb3VyY2UgKi8KIAlBZ2dTdHJhdGVneSBhZ2dzdHJhdGVneTsJ LyogYmFzaWMgc3RyYXRlZ3ksIHNlZSBub2Rlcy5oICovCiAJQWdnU3BsaXQJYWdnc3BsaXQ7CQkv KiBhZ2ctc3BsaXR0aW5nIG1vZGUsIHNlZSBub2Rlcy5oICovCi0JQ2FyZGluYWxpdHkJbnVtR3Jv dXBzOwkJLyogZXN0aW1hdGVkIG51bWJlciBvZiBncm91cHMgaW4gaW5wdXQgKi8KKwlDYXJkaW5h bGl0eSBudW1Hcm91cHM7CQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAq LwogCXVpbnQ2NAkJdHJhbnNpdGlvblNwYWNlOwkvKiBmb3IgcGFzcy1ieS1yZWYgdHJhbnNpdGlv biBkYXRhICovCiAJTGlzdAkgICAqZ3JvdXBDbGF1c2U7CS8qIGEgbGlzdCBvZiBTb3J0R3JvdXBD bGF1c2UncyAqLwogCUxpc3QJICAgKnF1YWw7CQkJLyogcXVhbHMgKEhBVklORyBxdWFscyksIGlm IGFueSAqLwpAQCAtMTc4NCw3ICsxNzg1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgR3JvdXBpbmdTZXRE YXRhCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlMaXN0CSAgICpzZXQ7CQkJLyogZ3JvdXBpbmcgc2V0 IGFzIGxpc3Qgb2Ygc29ydGdyb3VwcmVmcyAqLwotCUNhcmRpbmFsaXR5CW51bUdyb3VwczsJCS8q IGVzdC4gbnVtYmVyIG9mIHJlc3VsdCBncm91cHMgKi8KKwlDYXJkaW5hbGl0eSBudW1Hcm91cHM7 CQkvKiBlc3QuIG51bWJlciBvZiByZXN1bHQgZ3JvdXBzICovCiB9IEdyb3VwaW5nU2V0RGF0YTsK IAogdHlwZWRlZiBzdHJ1Y3QgUm9sbHVwRGF0YQpAQCAtMTc5Myw3ICsxNzk0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUm9sbHVwRGF0YQogCUxpc3QJICAgKmdyb3VwQ2xhdXNlOwkvKiBhcHBsaWNhYmxl IHN1YnNldCBvZiBwYXJzZS0+Z3JvdXBDbGF1c2UgKi8KIAlMaXN0CSAgICpnc2V0czsJCQkvKiBs aXN0cyBvZiBpbnRlZ2VyIGluZGV4ZXMgaW50byBncm91cENsYXVzZSAqLwogCUxpc3QJICAgKmdz ZXRzX2RhdGE7CQkvKiBsaXN0IG9mIEdyb3VwaW5nU2V0RGF0YSAqLwotCUNhcmRpbmFsaXR5CW51 bUdyb3VwczsJCS8qIGVzdC4gbnVtYmVyIG9mIHJlc3VsdCBncm91cHMgKi8KKwlDYXJkaW5hbGl0 eSBudW1Hcm91cHM7CQkvKiBlc3QuIG51bWJlciBvZiByZXN1bHQgZ3JvdXBzICovCiAJYm9vbAkJ aGFzaGFibGU7CQkvKiBjYW4gYmUgaGFzaGVkICovCiAJYm9vbAkJaXNfaGFzaGVkOwkJLyogdG8g YmUgaW1wbGVtZW50ZWQgYXMgYSBoYXNoYWdnICovCiB9IFJvbGx1cERhdGE7CkBAIC0xODQ0LDcg KzE4NDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBTZXRPcFBhdGgKIAlMaXN0CSAgICpkaXN0aW5jdExp c3Q7CS8qIFNvcnRHcm91cENsYXVzZXMgaWRlbnRpZnlpbmcgdGFyZ2V0IGNvbHMgKi8KIAlBdHRy TnVtYmVyCWZsYWdDb2xJZHg7CQkvKiB3aGVyZSBpcyB0aGUgZmxhZyBjb2x1bW4sIGlmIGFueSAq LwogCWludAkJCWZpcnN0RmxhZzsJCS8qIGZsYWcgdmFsdWUgZm9yIGZpcnN0IGlucHV0IHJlbGF0 aW9uICovCi0JQ2FyZGluYWxpdHkJbnVtR3JvdXBzOwkJLyogZXN0aW1hdGVkIG51bWJlciBvZiBn cm91cHMgaW4gaW5wdXQgKi8KKwlDYXJkaW5hbGl0eSBudW1Hcm91cHM7CQkvKiBlc3RpbWF0ZWQg bnVtYmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAqLwogfSBTZXRPcFBhdGg7CiAKIC8qCkBAIC0xODU3 LDcgKzE4NTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWN1cnNpdmVVbmlvblBhdGgKIAlQYXRoCSAg ICpyaWdodHBhdGg7CiAJTGlzdAkgICAqZGlzdGluY3RMaXN0OwkvKiBTb3J0R3JvdXBDbGF1c2Vz IGlkZW50aWZ5aW5nIHRhcmdldCBjb2xzICovCiAJaW50CQkJd3RQYXJhbTsJCS8qIElEIG9mIFBh cmFtIHJlcHJlc2VudGluZyB3b3JrIHRhYmxlICovCi0JQ2FyZGluYWxpdHkJbnVtR3JvdXBzOwkJ LyogZXN0aW1hdGVkIG51bWJlciBvZiBncm91cHMgaW4gaW5wdXQgKi8KKwlDYXJkaW5hbGl0eSBu dW1Hcm91cHM7CQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAqLwogfSBS ZWN1cnNpdmVVbmlvblBhdGg7CiAKIC8qCkBAIC0yNjEyLDcgKzI2MTMsNyBAQCB0eXBlZGVmIHN0 cnVjdAogdHlwZWRlZiBzdHJ1Y3QKIHsKIAlib29sCQlsaW1pdF9uZWVkZWQ7Ci0JQ2FyZGluYWxp dHkJbGltaXRfdHVwbGVzOworCUNhcmRpbmFsaXR5IGxpbWl0X3R1cGxlczsKIAlpbnQ2NAkJY291 bnRfZXN0OwogCWludDY0CQlvZmZzZXRfZXN0OwogfSBGaW5hbFBhdGhFeHRyYURhdGE7CkBAIC0y NjQzLDE1ICsyNjQ0LDE1IEBAIHR5cGVkZWYgc3RydWN0IEpvaW5Db3N0V29ya3NwYWNlCiAJQ29z dAkJaW5uZXJfcmVzY2FuX3J1bl9jb3N0OwogCiAJLyogcHJpdmF0ZSBmb3IgY29zdF9tZXJnZWpv aW4gY29kZSAqLwotCUNhcmRpbmFsaXR5CW91dGVyX3Jvd3M7Ci0JQ2FyZGluYWxpdHkJaW5uZXJf cm93czsKLQlDYXJkaW5hbGl0eQlvdXRlcl9za2lwX3Jvd3M7Ci0JQ2FyZGluYWxpdHkJaW5uZXJf c2tpcF9yb3dzOworCUNhcmRpbmFsaXR5IG91dGVyX3Jvd3M7CisJQ2FyZGluYWxpdHkgaW5uZXJf cm93czsKKwlDYXJkaW5hbGl0eSBvdXRlcl9za2lwX3Jvd3M7CisJQ2FyZGluYWxpdHkgaW5uZXJf c2tpcF9yb3dzOwogCiAJLyogcHJpdmF0ZSBmb3IgY29zdF9oYXNoam9pbiBjb2RlICovCiAJaW50 CQkJbnVtYnVja2V0czsKIAlpbnQJCQludW1iYXRjaGVzOwotCUNhcmRpbmFsaXR5CWlubmVyX3Jv d3NfdG90YWw7CisJQ2FyZGluYWxpdHkgaW5uZXJfcm93c190b3RhbDsKIH0gSm9pbkNvc3RXb3Jr c3BhY2U7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDAxYTI0NmQ1MGUuLmYwZTE1ZTQ5 MDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGxhbgogCS8qCiAJICogcGxhbm5lcidzIGVzdGltYXRlIG9mIHJlc3VsdCBzaXplIG9mIHRo aXMgcGxhbiBzdGVwCiAJICovCi0JQ2FyZGluYWxpdHkJcGxhbl9yb3dzOwkJLyogbnVtYmVyIG9m IHJvd3MgcGxhbiBpcyBleHBlY3RlZCB0byBlbWl0ICovCisJQ2FyZGluYWxpdHkgcGxhbl9yb3dz OwkJLyogbnVtYmVyIG9mIHJvd3MgcGxhbiBpcyBleHBlY3RlZCB0byBlbWl0ICovCiAJaW50CQkJ cGxhbl93aWR0aDsJCS8qIGF2ZXJhZ2Ugcm93IHdpZHRoIGluIGJ5dGVzICovCiAKIAkvKgpAQCAt OTc2LDcgKzk3Niw3IEBAIHR5cGVkZWYgc3RydWN0IEhhc2gKIAlBdHRyTnVtYmVyCXNrZXdDb2x1 bW47CQkvKiBvdXRlciBqb2luIGtleSdzIGNvbHVtbiAjLCBvciB6ZXJvICovCiAJYm9vbAkJc2tl d0luaGVyaXQ7CS8qIGlzIG91dGVyIGpvaW4gcmVsIGFuIGluaGVyaXRhbmNlIHRyZWU/ICovCiAJ LyogYWxsIG90aGVyIGluZm8gaXMgaW4gdGhlIHBhcmVudCBIYXNoSm9pbiBub2RlICovCi0JQ2Fy ZGluYWxpdHkJcm93c190b3RhbDsJCS8qIGVzdGltYXRlIHRvdGFsIHJvd3MgaWYgcGFyYWxsZWxf YXdhcmUgKi8KKwlDYXJkaW5hbGl0eSByb3dzX3RvdGFsOwkJLyogZXN0aW1hdGUgdG90YWwgcm93 cyBpZiBwYXJhbGxlbF9hd2FyZSAqLwogfSBIYXNoOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy92YWx1ZS5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv dmFsdWUuaAppbmRleCA4YjcxYjUxMGViLi42N2I1ZjY2YjU4IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy92YWx1ZS5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ZhbHVlLmgKQEAgLTI5 LDcgKzI5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW50ZWdlcgogewogCU5vZGVUYWcJCXR5cGU7CiAJ aW50CQkJdmFsOwotfSBJbnRlZ2VyOworfQkJCUludGVnZXI7CiAKIC8qCiAgKiBGbG9hdCBpcyBp bnRlcm5hbGx5IHJlcHJlc2VudGVkIGFzIHN0cmluZy4gIFVzaW5nIFRfRmxvYXQgYXMgdGhlIG5v ZGUgdHlwZQpAQCAtNDYsMjcgKzQ2LDI3IEBAIHR5cGVkZWYgc3RydWN0IEZsb2F0CiB7CiAJTm9k ZVRhZwkJdHlwZTsKIAljaGFyCSAgICp2YWw7Ci19IEZsb2F0OworfQkJCUZsb2F0OwogCiB0eXBl ZGVmIHN0cnVjdCBTdHJpbmcKIHsKIAlOb2RlVGFnCQl0eXBlOwogCWNoYXIJICAgKnZhbDsKLX0g U3RyaW5nOworfQkJCVN0cmluZzsKIAogdHlwZWRlZiBzdHJ1Y3QgQml0U3RyaW5nCiB7CiAJTm9k ZVRhZwkJdHlwZTsKIAljaGFyCSAgICp2YWw7Ci19IEJpdFN0cmluZzsKK30JCQlCaXRTdHJpbmc7 CiAKICNkZWZpbmUgaW50VmFsKHYpCQkoY2FzdE5vZGUoSW50ZWdlciwgdiktPnZhbCkKICNkZWZp bmUgZmxvYXRWYWwodikJCWF0b2YoY2FzdE5vZGUoRmxvYXQsIHYpLT52YWwpCiAjZGVmaW5lIHN0 clZhbCh2KQkJKGNhc3ROb2RlKFN0cmluZywgdiktPnZhbCkKIAotZXh0ZXJuIEludGVnZXIgKm1h a2VJbnRlZ2VyKGludCBpKTsKLWV4dGVybiBGbG9hdCAqbWFrZUZsb2F0KGNoYXIgKm51bWVyaWNT dHIpOwotZXh0ZXJuIFN0cmluZyAqbWFrZVN0cmluZyhjaGFyICpzdHIpOwotZXh0ZXJuIEJpdFN0 cmluZyAqbWFrZUJpdFN0cmluZyhjaGFyICpzdHIpOworZXh0ZXJuIEludGVnZXIgKiBtYWtlSW50 ZWdlcihpbnQgaSk7CitleHRlcm4gRmxvYXQgKiBtYWtlRmxvYXQoY2hhciAqbnVtZXJpY1N0cik7 CitleHRlcm4gU3RyaW5nICogbWFrZVN0cmluZyhjaGFyICpzdHIpOworZXh0ZXJuIEJpdFN0cmlu ZyAqIG1ha2VCaXRTdHJpbmcoY2hhciAqc3RyKTsKIAogI2VuZGlmCQkJCQkJCS8qIFZBTFVFX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0 LmgKaW5kZXggYmNkMzU4OGVhMi4uMTc3ODVmN2U1NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTE4Niw4ICsxODYsOCBAQCB0 eXBlZGVmIHN0cnVjdCBQZ1N0YXRfVGFibGVYYWN0U3RhdHVzCiAJUGdTdGF0X0NvdW50ZXIgdHVw bGVzX2luc2VydGVkOyAvKiB0dXBsZXMgaW5zZXJ0ZWQgaW4gKHN1Yil4YWN0ICovCiAJUGdTdGF0 X0NvdW50ZXIgdHVwbGVzX3VwZGF0ZWQ7CS8qIHR1cGxlcyB1cGRhdGVkIGluIChzdWIpeGFjdCAq LwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19kZWxldGVkOwkvKiB0dXBsZXMgZGVsZXRlZCBpbiAo c3ViKXhhY3QgKi8KLQlib29sCQl0cnVuY2Ryb3BwZWQ7CQkvKiByZWxhdGlvbiB0cnVuY2F0ZWQv ZHJvcHBlZCBpbiB0aGlzCi0JCQkJCQkJCQkgKiAoc3ViKXhhY3QgKi8KKwlib29sCQl0cnVuY2Ry b3BwZWQ7CS8qIHJlbGF0aW9uIHRydW5jYXRlZC9kcm9wcGVkIGluIHRoaXMKKwkJCQkJCQkJICog KHN1Yil4YWN0ICovCiAJLyogdHVwbGVzIGkvdS9kIHByaW9yIHRvIHRydW5jYXRlL2Ryb3AgKi8K IAlQZ1N0YXRfQ291bnRlciBpbnNlcnRlZF9wcmVfdHJ1bmNkcm9wOwogCVBnU3RhdF9Db3VudGVy IHVwZGF0ZWRfcHJlX3RydW5jZHJvcDsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB0eXBlZGVmIHN0cnVj dCBQZ1N0YXRfTXNnQ2hlY2twb2ludGVyCiAJUGdTdGF0X0NvdW50ZXIgbV9idWZfZnN5bmNfYmFj a2VuZDsKIAlQZ1N0YXRfQ291bnRlciBtX2NoZWNrcG9pbnRfd3JpdGVfdGltZTsgLyogdGltZXMg aW4gbWlsbGlzZWNvbmRzICovCiAJUGdTdGF0X0NvdW50ZXIgbV9jaGVja3BvaW50X3N5bmNfdGlt ZTsKLX0gUGdTdGF0X01zZ0NoZWNrcG9pbnRlcjsKK30JCQlQZ1N0YXRfTXNnQ2hlY2twb2ludGVy OwogCiAvKiAtLS0tLS0tLS0tCiAgKiBQZ1N0YXRfTXNnV2FsCQkJU2VudCBieSBiYWNrZW5kcyBh bmQgYmFja2dyb3VuZCBwcm9jZXNzZXMgdG8gdXBkYXRlIFdBTCBzdGF0aXN0aWNzLgpAQCAtODUz LDcgKzg1Myw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9CZ1dyaXRlclN0YXRzCiAJUGdTdGF0 X0NvdW50ZXIgbWF4d3JpdHRlbl9jbGVhbjsKIAlQZ1N0YXRfQ291bnRlciBidWZfYWxsb2M7CiAJ VGltZXN0YW1wVHogc3RhdF9yZXNldF90aW1lc3RhbXA7Ci19IFBnU3RhdF9CZ1dyaXRlclN0YXRz OworfQkJCVBnU3RhdF9CZ1dyaXRlclN0YXRzOwogCiAvKgogICogQ2hlY2twb2ludGVyIHN0YXRp c3RpY3Mga2VwdCBpbiB0aGUgc3RhdHMgY29sbGVjdG9yCkBAIC04NjgsNyArODY4LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGdTdGF0X0NoZWNrcG9pbnRlclN0YXRzCiAJUGdTdGF0X0NvdW50ZXIgYnVm X3dyaXR0ZW5fY2hlY2twb2ludHM7CiAJUGdTdGF0X0NvdW50ZXIgYnVmX3dyaXR0ZW5fYmFja2Vu ZDsKIAlQZ1N0YXRfQ291bnRlciBidWZfZnN5bmNfYmFja2VuZDsKLX0gUGdTdGF0X0NoZWNrcG9p bnRlclN0YXRzOworfQkJCVBnU3RhdF9DaGVja3BvaW50ZXJTdGF0czsKIAogLyoKICAqIEdsb2Jh bCBzdGF0aXN0aWNzIGtlcHQgaW4gdGhlIHN0YXRzIGNvbGxlY3RvcgpAQCAtMTEzMCw4ICsxMTMw LDggQEAgZXh0ZXJuIFBnU3RhdF9TdGF0REJFbnRyeSAqcGdzdGF0X2ZldGNoX3N0YXRfZGJlbnRy eShPaWQgZGJpZCk7CiBleHRlcm4gUGdTdGF0X1N0YXRUYWJFbnRyeSAqcGdzdGF0X2ZldGNoX3N0 YXRfdGFiZW50cnkoT2lkIHJlbGlkKTsKIGV4dGVybiBQZ1N0YXRfU3RhdEZ1bmNFbnRyeSAqcGdz dGF0X2ZldGNoX3N0YXRfZnVuY2VudHJ5KE9pZCBmdW5jaWQpOwogZXh0ZXJuIFBnU3RhdF9BcmNo aXZlclN0YXRzICpwZ3N0YXRfZmV0Y2hfc3RhdF9hcmNoaXZlcih2b2lkKTsKLWV4dGVybiBQZ1N0 YXRfQmdXcml0ZXJTdGF0cyAqcGdzdGF0X2ZldGNoX3N0YXRfYmd3cml0ZXIodm9pZCk7Ci1leHRl cm4gUGdTdGF0X0NoZWNrcG9pbnRlclN0YXRzICpwZ3N0YXRfZmV0Y2hfc3RhdF9jaGVja3BvaW50 ZXIodm9pZCk7CitleHRlcm4gUGdTdGF0X0JnV3JpdGVyU3RhdHMgKiBwZ3N0YXRfZmV0Y2hfc3Rh dF9iZ3dyaXRlcih2b2lkKTsKK2V4dGVybiBQZ1N0YXRfQ2hlY2twb2ludGVyU3RhdHMgKiBwZ3N0 YXRfZmV0Y2hfc3RhdF9jaGVja3BvaW50ZXIodm9pZCk7CiBleHRlcm4gUGdTdGF0X0dsb2JhbFN0 YXRzICpwZ3N0YXRfZmV0Y2hfZ2xvYmFsKHZvaWQpOwogZXh0ZXJuIFBnU3RhdF9XYWxTdGF0cyAq cGdzdGF0X2ZldGNoX3N0YXRfd2FsKHZvaWQpOwogZXh0ZXJuIFBnU3RhdF9TTFJVU3RhdHMgKnBn c3RhdF9mZXRjaF9zbHJ1KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci9zdGFydHVwLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3N0YXJ0dXAuaAppbmRleCAyZmIy MDhiZGI1Li5kYjdmYjBkYjdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3N0 YXJ0dXAuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3N0YXJ0dXAuaApAQCAtMjMsNyAr MjMsNyBAQAogCQkJZXJlcG9ydChMT0csIGVycm1zZyhtc2csIHNlY3MsICh1c2VjcyAvIDEwMDAw KSwgIF9fVkFfQVJHU19fICkpOyBcCiAJfSB3aGlsZSgwKQogCi1leHRlcm4gaW50ICBsb2dfc3Rh cnR1cF9wcm9ncmVzc19pbnRlcnZhbDsKK2V4dGVybiBpbnQJbG9nX3N0YXJ0dXBfcHJvZ3Jlc3Nf aW50ZXJ2YWw7CiAKIGV4dGVybiB2b2lkIEhhbmRsZVN0YXJ0dXBQcm9jSW50ZXJydXB0cyh2b2lk KTsKIGV4dGVybiB2b2lkIFN0YXJ0dXBQcm9jZXNzTWFpbih2b2lkKSBwZ19hdHRyaWJ1dGVfbm9y ZXR1cm4oKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fam9pbi5vdXQK aW5kZXggMjdmNzUyNWIzZS4uMDFkNmIyNjc1OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wYXJ0aXRpb25fam9pbi5vdXQKQEAgLTQ1OSw2ICs0NTksMTkgQEAgU0VMRUNUIHQxLmEs IHNzLnQyYSwgc3MudDJjIEZST00gcHJ0MSB0MSBMRUZUIEpPSU4gTEFURVJBTAogIDU1MCB8ICAg ICB8IAogKDEyIHJvd3MpCiAKKy0tIGpvaW4gcHJ1bmluZworQ1JFQVRFIFVOSVFVRSBJTkRFWCBw cnQxX3AxX2FfaWR4IE9OIHBydDEgKGEpOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHQx LmEgRlJPTSBwcnQxIHQxIExFRlQgSk9JTiBwcnQxIFVTSU5HIChhKTsKKyAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFw cGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDEgdDFfMQorICAgLT4gIFNlcSBTY2FuIG9u IHBydDFfcDIgdDFfMgorICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDMgdDFfMworKDQgcm93cykK KworRFJPUCBJTkRFWCBwcnQxX3AxX2FfaWR4OwogLS0gYnVnIHdpdGggaW5hZGVxdWF0ZSBzb3J0 IGtleSByZXByZXNlbnRhdGlvbgogU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSBU TyB0cnVlOwogU0VUIGVuYWJsZV9oYXNoam9pbiBUTyBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9qb2luLnNxbAppbmRleCBkOTdiNWI2OWZmLi5lMzljMDUyMzFhIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fam9pbi5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2pvaW4uc3FsCkBAIC05MCw2ICs5MCwxMyBAQCBTRUxF Q1QgdDEuYSwgc3MudDJhLCBzcy50MmMgRlJPTSBwcnQxIHQxIExFRlQgSk9JTiBMQVRFUkFMCiBT RUxFQ1QgdDEuYSwgc3MudDJhLCBzcy50MmMgRlJPTSBwcnQxIHQxIExFRlQgSk9JTiBMQVRFUkFM CiAJCQkgIChTRUxFQ1QgdDIuYSBBUyB0MmEsIHQzLmEgQVMgdDNhLCB0Mi5iIHQyYiwgdDIuYyB0 MmMsIGxlYXN0KHQxLmEsdDIuYSx0My5hKSBGUk9NIHBydDEgdDIgSk9JTiBwcnQyIHQzIE9OICh0 Mi5hID0gdDMuYikpIHNzCiAJCQkgIE9OIHQxLmMgPSBzcy50MmMgV0hFUkUgKHQxLmIgKyBjb2Fs ZXNjZShzcy50MmIsIDApKSA9IDAgT1JERVIgQlkgdDEuYTsKKy0tIGpvaW4gcHJ1bmluZworQ1JF QVRFIFVOSVFVRSBJTkRFWCBwcnQxX3AxX2FfaWR4IE9OIHBydDEgKGEpOworCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgdDEuYSBGUk9NIHBydDEgdDEgTEVGVCBKT0lOIHBydDEgVVNJTkcg KGEpOworCitEUk9QIElOREVYIHBydDFfcDFfYV9pZHg7CiAKIC0tIGJ1ZyB3aXRoIGluYWRlcXVh dGUgc29ydCBrZXkgcmVwcmVzZW50YXRpb24KIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dy ZWdhdGUgVE8gdHJ1ZTsK --_004_fa4168b2f72e44939e66f297037b9be9indexde_--