From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shards.monkeyblade.net ([149.20.54.216]:59265 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752511AbbLJTiE (ORCPT ); Thu, 10 Dec 2015 14:38:04 -0500 Received: from localhost (unknown [38.140.131.194]) (Authenticated sender: davem-davemloft) by shards.monkeyblade.net (Postfix) with ESMTPSA id 919035A5D58 for ; Thu, 10 Dec 2015 11:38:00 -0800 (PST) Date: Thu, 10 Dec 2015 14:37:58 -0500 (EST) Message-Id: <20151210.143758.931942885189069714.davem@davemloft.net> To: stable@vger.kernel.org Subject: [PATCHES] Networking From: David Miller Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Thu_Dec_10_14_37_58_2015_327)--" Content-Transfer-Encoding: 7bit Sender: stable-owner@vger.kernel.org List-ID: ----Next_Part(Thu_Dec_10_14_37_58_2015_327)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Please queue up the following networking bug fixes for 3.18, 4.1, 4.2, and 4.3 -stable, respectively. Thanks! ----Next_Part(Thu_Dec_10_14_37_58_2015_327)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_318.mbox" RnJvbSA3YzI0MmQ5YTg3MWY1Yzk5NjJkOGIzYTE0MDcxMmZhYWI1ZGMzNTEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWluZXIgV2Vpa3VzYXQgPHJ3ZWlrdXNhdEBtb2JpbGVhY3Rp dmVkZWZlbnNlLmNvbT4KRGF0ZTogRnJpLCAyMCBOb3YgMjAxNSAyMjowNzoyMyArMDAwMApTdWJq ZWN0OiBbUEFUQ0ggMDEvMjNdIHVuaXg6IGF2b2lkIHVzZS1hZnRlci1mcmVlIGluIGVwX3JlbW92 ZV93YWl0X3F1ZXVlCgpbIFVwc3RyZWFtIGNvbW1pdCA3ZDI2NzI3OGE5ZWNlOTYzZDc3ZWVmZWM2 MTYzMDIyM2ZjZTA4YzZjIF0KClJhaW5lciBXZWlrdXNhdCA8cndlaWt1c2F0QG1vYmlsZWFjdGl2 ZWRlZmVuc2UuY29tPiB3cml0ZXM6CkFuIEFGX1VOSVggZGF0YWdyYW0gc29ja2V0IGJlaW5nIHRo ZSBjbGllbnQgaW4gYW4gbjoxIGFzc29jaWF0aW9uIHdpdGgKc29tZSBzZXJ2ZXIgc29ja2V0IGlz IG9ubHkgYWxsb3dlZCB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBzZXJ2ZXIgaWYgdGhlCnJlY2Vp dmUgcXVldWUgb2YgdGhpcyBzb2NrZXQgY29udGFpbnMgYXQgbW9zdCBza19tYXhfYWNrX2JhY2ts b2cKZGF0YWdyYW1zLiBUaGlzIGltcGxpZXMgdGhhdCBwcm9zcGVjdGl2ZSB3cml0ZXJzIG1pZ2h0 IGJlIGZvcmNlZCB0byBnbwp0byBzbGVlcCBkZXNwaXRlIG5vbmUgb2YgdGhlIG1lc3NhZ2UgcHJl c2VudGx5IGVucXVldWVkIG9uIHRoZSBzZXJ2ZXIKcmVjZWl2ZSBxdWV1ZSB3ZXJlIHNlbnQgYnkg dGhlbS4gSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlc2Ugd2lsbCBiZQp3b2tlbiB1cCBvbmNl IHNwYWNlIGJlY29tZXMgYWdhaW4gYXZhaWxhYmxlLCB0aGUgcHJlc2VudCB1bml4X2RncmFtX3Bv bGwKcm91dGluZSBkb2VzIGEgc2Vjb25kIHNvY2tfcG9sbF93YWl0IGNhbGwgd2l0aCB0aGUgcGVl cl93YWl0IHdhaXQgcXVldWUKb2YgdGhlIHNlcnZlciBzb2NrZXQgYXMgcXVldWUgYXJndW1lbnQg KHVuaXhfZGdyYW1fcmVjdm1zZyBkb2VzIGEgd2FrZQp1cCBvbiB0aGlzIHF1ZXVlIGFmdGVyIGEg ZGF0YWdyYW0gd2FzIHJlY2VpdmVkKS4gVGhpcyBpcyBpbmhlcmVudGx5CnByb2JsZW1hdGljIGJl Y2F1c2UgdGhlIHNlcnZlciBzb2NrZXQgaXMgb25seSBndWFyYW50ZWVkIHRvIHJlbWFpbiBhbGl2 ZQpmb3IgYXMgbG9uZyBhcyB0aGUgY2xpZW50IHN0aWxsIGhvbGRzIGEgcmVmZXJlbmNlIHRvIGl0 LiBJbiBjYXNlIHRoZQpjb25uZWN0aW9uIGlzIGRpc3NvbHZlZCB2aWEgY29ubmVjdCBvciBieSB0 aGUgZGVhZCBwZWVyIGRldGVjdGlvbiBsb2dpYwppbiB1bml4X2RncmFtX3NlbmRtc2csIHRoZSBz ZXJ2ZXIgc29ja2V0IG1heSBiZSBmcmVlZCBkZXNwaXRlICJ0aGUKcG9sbGluZyBtZWNoYW5pc20i IChpbiBwYXJ0aWN1bGFyLCBlcG9sbCkgc3RpbGwgaGFzIGEgcG9pbnRlciB0byB0aGUKY29ycmVz cG9uZGluZyBwZWVyX3dhaXQgcXVldWUuIFRoZXJlJ3Mgbm8gd2F5IHRvIGZvcmNpYmx5IGRlcmVn aXN0ZXIgYQp3YWl0IHF1ZXVlIHdpdGggZXBvbGwuCgpCYXNlZCBvbiBhbiBpZGVhIGJ5IEphc29u IEJhcm9uLCB0aGUgcGF0Y2ggYmVsb3cgY2hhbmdlcyB0aGUgY29kZSBzdWNoCnRoYXQgYSB3YWl0 X3F1ZXVlX3QgYmVsb25naW5nIHRvIHRoZSBjbGllbnQgc29ja2V0IGlzIGVucXVldWVkIG9uIHRo ZQpwZWVyX3dhaXQgcXVldWUgb2YgdGhlIHNlcnZlciB3aGVuZXZlciB0aGUgcGVlciByZWNlaXZl IHF1ZXVlIGZ1bGwKY29uZGl0aW9uIGlzIGRldGVjdGVkIGJ5IGVpdGhlciBhIHNlbmRtc2cgb3Ig YSBwb2xsLiBBIHdha2UgdXAgb24gdGhlCnBlZXIgcXVldWUgaXMgdGhlbiByZWxheWVkIHRvIHRo ZSBvcmRpbmFyeSB3YWl0IHF1ZXVlIG9mIHRoZSBjbGllbnQKc29ja2V0IHZpYSB3YWtlIGZ1bmN0 aW9uLiBUaGUgY29ubmVjdGlvbiB0byB0aGUgcGVlciB3YWl0IHF1ZXVlIGlzIGFnYWluCmRpc3Nv bHZlZCBpZiBlaXRoZXIgYSB3YWtlIHVwIGlzIGFib3V0IHRvIGJlIHJlbGF5ZWQgb3IgdGhlIGNs aWVudApzb2NrZXQgcmVjb25uZWN0cyBvciBhIGRlYWQgcGVlciBpcyBkZXRlY3RlZCBvciB0aGUg Y2xpZW50IHNvY2tldCBpcwppdHNlbGYgY2xvc2VkLiBUaGlzIGVuYWJsZXMgcmVtb3ZpbmcgdGhl IHNlY29uZCBzb2NrX3BvbGxfd2FpdCBmcm9tCnVuaXhfZGdyYW1fcG9sbCwgdGh1cyBhdm9pZGlu ZyB0aGUgdXNlLWFmdGVyLWZyZWUsIHdoaWxlIHN0aWxsIGVuc3VyaW5nCnRoYXQgbm8gYmxvY2tl ZCB3cml0ZXIgc2xlZXBzIGZvcmV2ZXIuCgpTaWduZWQtb2ZmLWJ5OiBSYWluZXIgV2Vpa3VzYXQg PHJ3ZWlrdXNhdEBtb2JpbGVhY3RpdmVkZWZlbnNlLmNvbT4KRml4ZXM6IGVjMGQyMTVmOTQyMCAo ImFmX3VuaXg6IGZpeCAncG9sbCBmb3Igd3JpdGUnL2Nvbm5lY3RlZCBER1JBTSBzb2NrZXRzIikK UmV2aWV3ZWQtYnk6IEphc29uIEJhcm9uIDxqYmFyb25AYWthbWFpLmNvbT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1ZGUvbmV0 L2FmX3VuaXguaCB8ICAgMSArCiBuZXQvdW5peC9hZl91bml4LmMgICAgfCAxODMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIDIgZmlsZXMgY2hhbmdl ZCwgMTY1IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbmV0L2FmX3VuaXguaCBiL2luY2x1ZGUvbmV0L2FmX3VuaXguaAppbmRleCBhMTc1YmE0Li5j YjRhNzI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9hZl91bml4LmgKKysrIGIvaW5jbHVkZS9u ZXQvYWZfdW5peC5oCkBAIC02Myw2ICs2Myw3IEBAIHN0cnVjdCB1bml4X3NvY2sgewogI2RlZmlu ZSBVTklYX0dDX0NBTkRJREFURQkwCiAjZGVmaW5lIFVOSVhfR0NfTUFZQkVfQ1lDTEUJMQogCXN0 cnVjdCBzb2NrZXRfd3EJcGVlcl93cTsKKwl3YWl0X3F1ZXVlX3QJCXBlZXJfd2FrZTsKIH07CiAj ZGVmaW5lIHVuaXhfc2soX19zaykgKChzdHJ1Y3QgdW5peF9zb2NrICopX19zaykKIApkaWZmIC0t Z2l0IGEvbmV0L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jCmluZGV4IDgyMzIx MTguLmIxMTU2MmUgMTAwNjQ0Ci0tLSBhL25ldC91bml4L2FmX3VuaXguYworKysgYi9uZXQvdW5p eC9hZl91bml4LmMKQEAgLTMxNiw2ICszMTYsMTE4IEBAIGZvdW5kOgogCXJldHVybiBzOwogfQog CisvKiBTdXBwb3J0IGNvZGUgZm9yIGFzeW1tZXRyaWNhbGx5IGNvbm5lY3RlZCBkZ3JhbSBzb2Nr ZXRzCisgKgorICogSWYgYSBkYXRhZ3JhbSBzb2NrZXQgaXMgY29ubmVjdGVkIHRvIGEgc29ja2V0 IG5vdCBpdHNlbGYgY29ubmVjdGVkCisgKiB0byB0aGUgZmlyc3Qgc29ja2V0IChlZywgL2Rldi9s b2cpLCBjbGllbnRzIG1heSBvbmx5IGVucXVldWUgbW9yZQorICogbWVzc2FnZXMgaWYgdGhlIHBy ZXNlbnQgcmVjZWl2ZSBxdWV1ZSBvZiB0aGUgc2VydmVyIHNvY2tldCBpcyBub3QKKyAqICJ0b28g bGFyZ2UiLiBUaGlzIG1lYW5zIHRoZXJlJ3MgYSBzZWNvbmQgd3JpdGVhYmlsaXR5IGNvbmRpdGlv bgorICogcG9sbCBhbmQgc2VuZG1zZyBuZWVkIHRvIHRlc3QuIFRoZSBkZ3JhbSByZWN2IGNvZGUg d2lsbCBkbyBhIHdha2UKKyAqIHVwIG9uIHRoZSBwZWVyX3dhaXQgd2FpdCBxdWV1ZSBvZiBhIHNv Y2tldCB1cG9uIHJlY2VwdGlvbiBvZiBhCisgKiBkYXRhZ3JhbSB3aGljaCBuZWVkcyB0byBiZSBw cm9wYWdhdGVkIHRvIHNsZWVwaW5nIHdvdWxkLWJlIHdyaXRlcnMKKyAqIHNpbmNlIHRoZXNlIG1p Z2h0IG5vdCBoYXZlIHNlbnQgYW55dGhpbmcgc28gZmFyLiBUaGlzIGNhbid0IGJlCisgKiBhY2Nv bXBsaXNoZWQgdmlhIHBvbGxfd2FpdCBiZWNhdXNlIHRoZSBsaWZldGltZSBvZiB0aGUgc2VydmVy CisgKiBzb2NrZXQgbWlnaHQgYmUgbGVzcyB0aGFuIHRoYXQgb2YgaXRzIGNsaWVudHMgaWYgdGhl c2UgYnJlYWsgdGhlaXIKKyAqIGFzc29jaWF0aW9uIHdpdGggaXQgb3IgaWYgdGhlIHNlcnZlciBz b2NrZXQgaXMgY2xvc2VkIHdoaWxlIGNsaWVudHMKKyAqIGFyZSBzdGlsbCBjb25uZWN0ZWQgdG8g aXQgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIGluZm9ybSAiYSBwb2xsaW5nCisgKiBpbXBsZW1lbnRh dGlvbiIgdGhhdCBpdCBzaG91bGQgbGV0IGdvIG9mIGEgY2VydGFpbiB3YWl0IHF1ZXVlCisgKgor ICogSW4gb3JkZXIgdG8gcHJvcGFnYXRlIGEgd2FrZSB1cCwgYSB3YWl0X3F1ZXVlX3Qgb2YgdGhl IGNsaWVudAorICogc29ja2V0IGlzIGVucXVldWVkIG9uIHRoZSBwZWVyX3dhaXQgcXVldWUgb2Yg dGhlIHNlcnZlciBzb2NrZXQKKyAqIHdob3NlIHdha2UgZnVuY3Rpb24gZG9lcyBhIHdha2VfdXAg b24gdGhlIG9yZGluYXJ5IGNsaWVudCBzb2NrZXQKKyAqIHdhaXQgcXVldWUuIFRoaXMgY29ubmVj dGlvbiBpcyBlc3RhYmxpc2hlZCB3aGVuZXZlciBhIHdyaXRlIChvcgorICogcG9sbCBmb3Igd3Jp dGUpIGhpdCB0aGUgZmxvdyBjb250cm9sIGNvbmRpdGlvbiBhbmQgYnJva2VuIHdoZW4gdGhlCisg KiBhc3NvY2lhdGlvbiB0byB0aGUgc2VydmVyIHNvY2tldCBpcyBkaXNzb2x2ZWQgb3IgYWZ0ZXIg YSB3YWtlIHVwCisgKiB3YXMgcmVsYXllZC4KKyAqLworCitzdGF0aWMgaW50IHVuaXhfZGdyYW1f cGVlcl93YWtlX3JlbGF5KHdhaXRfcXVldWVfdCAqcSwgdW5zaWduZWQgbW9kZSwgaW50IGZsYWdz LAorCQkJCSAgICAgIHZvaWQgKmtleSkKK3sKKwlzdHJ1Y3QgdW5peF9zb2NrICp1OworCXdhaXRf cXVldWVfaGVhZF90ICp1X3NsZWVwOworCisJdSA9IGNvbnRhaW5lcl9vZihxLCBzdHJ1Y3QgdW5p eF9zb2NrLCBwZWVyX3dha2UpOworCisJX19yZW1vdmVfd2FpdF9xdWV1ZSgmdW5peF9zayh1LT5w ZWVyX3dha2UucHJpdmF0ZSktPnBlZXJfd2FpdCwKKwkJCSAgICBxKTsKKwl1LT5wZWVyX3dha2Uu cHJpdmF0ZSA9IE5VTEw7CisKKwkvKiByZWxheWluZyBjYW4gb25seSBoYXBwZW4gd2hpbGUgdGhl IHdxIHN0aWxsIGV4aXN0cyAqLworCXVfc2xlZXAgPSBza19zbGVlcCgmdS0+c2spOworCWlmICh1 X3NsZWVwKQorCQl3YWtlX3VwX2ludGVycnVwdGlibGVfcG9sbCh1X3NsZWVwLCBrZXkpOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdW5peF9kZ3JhbV9wZWVyX3dha2VfY29ubmVjdChz dHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpvdGhlcikKK3sKKwlzdHJ1Y3QgdW5peF9zb2Nr ICp1LCAqdV9vdGhlcjsKKwlpbnQgcmM7CisKKwl1ID0gdW5peF9zayhzayk7CisJdV9vdGhlciA9 IHVuaXhfc2sob3RoZXIpOworCXJjID0gMDsKKwlzcGluX2xvY2soJnVfb3RoZXItPnBlZXJfd2Fp dC5sb2NrKTsKKworCWlmICghdS0+cGVlcl93YWtlLnByaXZhdGUpIHsKKwkJdS0+cGVlcl93YWtl LnByaXZhdGUgPSBvdGhlcjsKKwkJX19hZGRfd2FpdF9xdWV1ZSgmdV9vdGhlci0+cGVlcl93YWl0 LCAmdS0+cGVlcl93YWtlKTsKKworCQlyYyA9IDE7CisJfQorCisJc3Bpbl91bmxvY2soJnVfb3Ro ZXItPnBlZXJfd2FpdC5sb2NrKTsKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkIHVuaXhf ZGdyYW1fcGVlcl93YWtlX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLAorCQkJCQkgICAgc3Ry dWN0IHNvY2sgKm90aGVyKQoreworCXN0cnVjdCB1bml4X3NvY2sgKnUsICp1X290aGVyOworCisJ dSA9IHVuaXhfc2soc2spOworCXVfb3RoZXIgPSB1bml4X3NrKG90aGVyKTsKKwlzcGluX2xvY2so JnVfb3RoZXItPnBlZXJfd2FpdC5sb2NrKTsKKworCWlmICh1LT5wZWVyX3dha2UucHJpdmF0ZSA9 PSBvdGhlcikgeworCQlfX3JlbW92ZV93YWl0X3F1ZXVlKCZ1X290aGVyLT5wZWVyX3dhaXQsICZ1 LT5wZWVyX3dha2UpOworCQl1LT5wZWVyX3dha2UucHJpdmF0ZSA9IE5VTEw7CisJfQorCisJc3Bp bl91bmxvY2soJnVfb3RoZXItPnBlZXJfd2FpdC5sb2NrKTsKK30KKworc3RhdGljIHZvaWQgdW5p eF9kZ3JhbV9wZWVyX3dha2VfZGlzY29ubmVjdF93YWtldXAoc3RydWN0IHNvY2sgKnNrLAorCQkJ CQkJICAgc3RydWN0IHNvY2sgKm90aGVyKQoreworCXVuaXhfZGdyYW1fcGVlcl93YWtlX2Rpc2Nv bm5lY3Qoc2ssIG90aGVyKTsKKwl3YWtlX3VwX2ludGVycnVwdGlibGVfcG9sbChza19zbGVlcChz ayksCisJCQkJICAgUE9MTE9VVCB8CisJCQkJICAgUE9MTFdSTk9STSB8CisJCQkJICAgUE9MTFdS QkFORCk7Cit9CisKKy8qIHByZWNvbmRpdGlvbnM6CisgKgktIHVuaXhfcGVlcihzaykgPT0gb3Ro ZXIKKyAqCS0gYXNzb2NpYXRpb24gaXMgc3RhYmxlCisgKi8KK3N0YXRpYyBpbnQgdW5peF9kZ3Jh bV9wZWVyX3dha2VfbWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqb3RoZXIpCit7CisJ aW50IGNvbm5lY3RlZDsKKworCWNvbm5lY3RlZCA9IHVuaXhfZGdyYW1fcGVlcl93YWtlX2Nvbm5l Y3Qoc2ssIG90aGVyKTsKKworCWlmICh1bml4X3JlY3ZxX2Z1bGwob3RoZXIpKQorCQlyZXR1cm4g MTsKKworCWlmIChjb25uZWN0ZWQpCisJCXVuaXhfZGdyYW1fcGVlcl93YWtlX2Rpc2Nvbm5lY3Qo c2ssIG90aGVyKTsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW5saW5lIGludCB1bml4X3dy aXRhYmxlKHN0cnVjdCBzb2NrICpzaykKIHsKIAlyZXR1cm4gKGF0b21pY19yZWFkKCZzay0+c2tf d21lbV9hbGxvYykgPDwgMikgPD0gc2stPnNrX3NuZGJ1ZjsKQEAgLTQyMCw2ICs1MzIsOCBAQCBz dGF0aWMgdm9pZCB1bml4X3JlbGVhc2Vfc29jayhzdHJ1Y3Qgc29jayAqc2ssIGludCBlbWJyaW9u KQogCQkJc2twYWlyLT5za19zdGF0ZV9jaGFuZ2Uoc2twYWlyKTsKIAkJCXNrX3dha2VfYXN5bmMo c2twYWlyLCBTT0NLX1dBS0VfV0FJVEQsIFBPTExfSFVQKTsKIAkJfQorCisJCXVuaXhfZGdyYW1f cGVlcl93YWtlX2Rpc2Nvbm5lY3Qoc2ssIHNrcGFpcik7CiAJCXNvY2tfcHV0KHNrcGFpcik7IC8q IEl0IG1heSBub3cgZGllICovCiAJCXVuaXhfcGVlcihzaykgPSBOVUxMOwogCX0KQEAgLTY1Myw2 ICs3NjcsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnVuaXhfY3JlYXRlMShzdHJ1Y3QgbmV0ICpu ZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2spCiAJSU5JVF9MSVNUX0hFQUQoJnUtPmxpbmspOwogCW11 dGV4X2luaXQoJnUtPnJlYWRsb2NrKTsgLyogc2luZ2xlIHRhc2sgcmVhZGluZyBsb2NrICovCiAJ aW5pdF93YWl0cXVldWVfaGVhZCgmdS0+cGVlcl93YWl0KTsKKwlpbml0X3dhaXRxdWV1ZV9mdW5j X2VudHJ5KCZ1LT5wZWVyX3dha2UsIHVuaXhfZGdyYW1fcGVlcl93YWtlX3JlbGF5KTsKIAl1bml4 X2luc2VydF9zb2NrZXQodW5peF9zb2NrZXRzX3VuYm91bmQoc2spLCBzayk7CiBvdXQ6CiAJaWYg KHNrID09IE5VTEwpCkBAIC0xMDIwLDYgKzExMzUsOCBAQCByZXN0YXJ0OgogCWlmICh1bml4X3Bl ZXIoc2spKSB7CiAJCXN0cnVjdCBzb2NrICpvbGRfcGVlciA9IHVuaXhfcGVlcihzayk7CiAJCXVu aXhfcGVlcihzaykgPSBvdGhlcjsKKwkJdW5peF9kZ3JhbV9wZWVyX3dha2VfZGlzY29ubmVjdF93 YWtldXAoc2ssIG9sZF9wZWVyKTsKKwogCQl1bml4X3N0YXRlX2RvdWJsZV91bmxvY2soc2ssIG90 aGVyKTsKIAogCQlpZiAob3RoZXIgIT0gb2xkX3BlZXIpCkBAIC0xNDU5LDYgKzE1NzYsNyBAQCBz dGF0aWMgaW50IHVuaXhfZGdyYW1fc2VuZG1zZyhzdHJ1Y3Qga2lvY2IgKmtpb2NiLCBzdHJ1Y3Qg c29ja2V0ICpzb2NrLAogCXN0cnVjdCBzY21fY29va2llIHRtcF9zY207CiAJaW50IG1heF9sZXZl bDsKIAlpbnQgZGF0YV9sZW4gPSAwOworCWludCBza19sb2NrZWQ7CiAKIAlpZiAoTlVMTCA9PSBz aW9jYi0+c2NtKQogCQlzaW9jYi0+c2NtID0gJnRtcF9zY207CkBAIC0xNTQwLDEyICsxNjU4LDE0 IEBAIHJlc3RhcnQ6CiAJCWdvdG8gb3V0X2ZyZWU7CiAJfQogCisJc2tfbG9ja2VkID0gMDsKIAl1 bml4X3N0YXRlX2xvY2sob3RoZXIpOworcmVzdGFydF9sb2NrZWQ6CiAJZXJyID0gLUVQRVJNOwog CWlmICghdW5peF9tYXlfc2VuZChzaywgb3RoZXIpKQogCQlnb3RvIG91dF91bmxvY2s7CiAKLQlp ZiAoc29ja19mbGFnKG90aGVyLCBTT0NLX0RFQUQpKSB7CisJaWYgKHVubGlrZWx5KHNvY2tfZmxh ZyhvdGhlciwgU09DS19ERUFEKSkpIHsKIAkJLyoKIAkJICoJQ2hlY2sgd2l0aCAxMDAzLjFnIC0g d2hhdCBzaG91bGQKIAkJICoJZGF0YWdyYW0gZXJyb3IKQEAgLTE1NTMsMTAgKzE2NzMsMTQgQEAg cmVzdGFydDoKIAkJdW5peF9zdGF0ZV91bmxvY2sob3RoZXIpOwogCQlzb2NrX3B1dChvdGhlcik7 CiAKKwkJaWYgKCFza19sb2NrZWQpCisJCQl1bml4X3N0YXRlX2xvY2soc2spOworCiAJCWVyciA9 IDA7Ci0JCXVuaXhfc3RhdGVfbG9jayhzayk7CiAJCWlmICh1bml4X3BlZXIoc2spID09IG90aGVy KSB7CiAJCQl1bml4X3BlZXIoc2spID0gTlVMTDsKKwkJCXVuaXhfZGdyYW1fcGVlcl93YWtlX2Rp c2Nvbm5lY3Rfd2FrZXVwKHNrLCBvdGhlcik7CisKIAkJCXVuaXhfc3RhdGVfdW5sb2NrKHNrKTsK IAogCQkJdW5peF9kZ3JhbV9kaXNjb25uZWN0ZWQoc2ssIG90aGVyKTsKQEAgLTE1ODIsMjEgKzE3 MDYsMzggQEAgcmVzdGFydDoKIAkJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAKLQlpZiAodW5peF9w ZWVyKG90aGVyKSAhPSBzayAmJiB1bml4X3JlY3ZxX2Z1bGwob3RoZXIpKSB7Ci0JCWlmICghdGlt ZW8pIHsKLQkJCWVyciA9IC1FQUdBSU47Ci0JCQlnb3RvIG91dF91bmxvY2s7CisJaWYgKHVubGlr ZWx5KHVuaXhfcGVlcihvdGhlcikgIT0gc2sgJiYgdW5peF9yZWN2cV9mdWxsKG90aGVyKSkpIHsK KwkJaWYgKHRpbWVvKSB7CisJCQl0aW1lbyA9IHVuaXhfd2FpdF9mb3JfcGVlcihvdGhlciwgdGlt ZW8pOworCisJCQllcnIgPSBzb2NrX2ludHJfZXJybm8odGltZW8pOworCQkJaWYgKHNpZ25hbF9w ZW5kaW5nKGN1cnJlbnQpKQorCQkJCWdvdG8gb3V0X2ZyZWU7CisKKwkJCWdvdG8gcmVzdGFydDsK IAkJfQogCi0JCXRpbWVvID0gdW5peF93YWl0X2Zvcl9wZWVyKG90aGVyLCB0aW1lbyk7CisJCWlm ICghc2tfbG9ja2VkKSB7CisJCQl1bml4X3N0YXRlX3VubG9jayhvdGhlcik7CisJCQl1bml4X3N0 YXRlX2RvdWJsZV9sb2NrKHNrLCBvdGhlcik7CisJCX0KIAotCQllcnIgPSBzb2NrX2ludHJfZXJy bm8odGltZW8pOwotCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCi0JCQlnb3RvIG91dF9m cmVlOworCQlpZiAodW5peF9wZWVyKHNrKSAhPSBvdGhlciB8fAorCQkgICAgdW5peF9kZ3JhbV9w ZWVyX3dha2VfbWUoc2ssIG90aGVyKSkgeworCQkJZXJyID0gLUVBR0FJTjsKKwkJCXNrX2xvY2tl ZCA9IDE7CisJCQlnb3RvIG91dF91bmxvY2s7CisJCX0KIAotCQlnb3RvIHJlc3RhcnQ7CisJCWlm ICghc2tfbG9ja2VkKSB7CisJCQlza19sb2NrZWQgPSAxOworCQkJZ290byByZXN0YXJ0X2xvY2tl ZDsKKwkJfQogCX0KIAorCWlmICh1bmxpa2VseShza19sb2NrZWQpKQorCQl1bml4X3N0YXRlX3Vu bG9jayhzayk7CisKIAlpZiAoc29ja19mbGFnKG90aGVyLCBTT0NLX1JDVlRTVEFNUCkpCiAJCV9f bmV0X3RpbWVzdGFtcChza2IpOwogCW1heWJlX2FkZF9jcmVkcyhza2IsIHNvY2ssIG90aGVyKTsK QEAgLTE2MTAsNiArMTc1MSw4IEBAIHJlc3RhcnQ6CiAJcmV0dXJuIGxlbjsKIAogb3V0X3VubG9j azoKKwlpZiAoc2tfbG9ja2VkKQorCQl1bml4X3N0YXRlX3VubG9jayhzayk7CiAJdW5peF9zdGF0 ZV91bmxvY2sob3RoZXIpOwogb3V0X2ZyZWU6CiAJa2ZyZWVfc2tiKHNrYik7CkBAIC0yMjU1LDE0 ICsyMzk4LDE2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgdW5peF9kZ3JhbV9wb2xsKHN0cnVjdCBm aWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLAogCQlyZXR1cm4gbWFzazsKIAogCXdyaXRh YmxlID0gdW5peF93cml0YWJsZShzayk7Ci0Jb3RoZXIgPSB1bml4X3BlZXJfZ2V0KHNrKTsKLQlp ZiAob3RoZXIpIHsKLQkJaWYgKHVuaXhfcGVlcihvdGhlcikgIT0gc2spIHsKLQkJCXNvY2tfcG9s bF93YWl0KGZpbGUsICZ1bml4X3NrKG90aGVyKS0+cGVlcl93YWl0LCB3YWl0KTsKLQkJCWlmICh1 bml4X3JlY3ZxX2Z1bGwob3RoZXIpKQotCQkJCXdyaXRhYmxlID0gMDsKLQkJfQotCQlzb2NrX3B1 dChvdGhlcik7CisJaWYgKHdyaXRhYmxlKSB7CisJCXVuaXhfc3RhdGVfbG9jayhzayk7CisKKwkJ b3RoZXIgPSB1bml4X3BlZXIoc2spOworCQlpZiAob3RoZXIgJiYgdW5peF9wZWVyKG90aGVyKSAh PSBzayAmJgorCQkgICAgdW5peF9yZWN2cV9mdWxsKG90aGVyKSAmJgorCQkgICAgdW5peF9kZ3Jh bV9wZWVyX3dha2VfbWUoc2ssIG90aGVyKSkKKwkJCXdyaXRhYmxlID0gMDsKKworCQl1bml4X3N0 YXRlX3VubG9jayhzayk7CiAJfQogCiAJaWYgKHdyaXRhYmxlKQotLSAKMi40LjEKCgpGcm9tIDRj MzE3YzI2MDg2OGY0NDhmNTQ2NzUzNTUzNWEyNDZjNWE4M2IwOGIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEthbWFsIE1vc3RhZmEgPGthbWFsQGNhbm9uaWNhbC5jb20+CkRhdGU6IFdl ZCwgMTEgTm92IDIwMTUgMTQ6MjQ6MjcgLTA4MDAKU3ViamVjdDogW1BBVENIIDAyLzIzXSB0b29s cy9uZXQ6IFVzZSBpbmNsdWRlL3VhcGkgd2l0aCBfX0VYUE9SVEVEX0hFQURFUlNfXwoKWyBVcHN0 cmVhbSBjb21taXQgZDc0NzVkZTU4NTc1YzkwNDgxOGVmYTM2OWM4MmU4OGM2NjQ4Y2UyZSBdCgpV c2UgdGhlIGxvY2FsIHVhcGkgaGVhZGVycyB0byBrZWVwIGluIHN5bmMgd2l0aCAicmVjZW50bHki IGFkZGVkICNkZWZpbmUncwooZS5nLiBTS0ZfQURfVkxBTl9UUElEKS4gIFJlZmFjdG9yZWQgQ0ZM QUdTLCBhbmQgYnBmX2FzbSBkb2Vzbid0IG5lZWQgLUkuCgpGaXhlczogM2YzNTYzODVlOGE0ICgi ZmlsdGVyOiBicGZfYXNtOiBhZGQgbWluaW1hbCBicGYgYXNtIHRvb2wiKQpTaWduZWQtb2ZmLWJ5 OiBLYW1hbCBNb3N0YWZhIDxrYW1hbEBjYW5vbmljYWwuY29tPgpBY2tlZC1ieTogRGFuaWVsIEJv cmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWls bGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIHRvb2xzL25ldC9NYWtlZmlsZSB8IDcgKysr Ky0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS90b29scy9uZXQvTWFrZWZpbGUgYi90b29scy9uZXQvTWFrZWZpbGUKaW5kZXgg ZWU1NzdlYS4uZGRmODg4MCAxMDA2NDQKLS0tIGEvdG9vbHMvbmV0L01ha2VmaWxlCisrKyBiL3Rv b2xzL25ldC9NYWtlZmlsZQpAQCAtNCw2ICs0LDkgQEAgQ0MgPSBnY2MKIExFWCA9IGZsZXgKIFlB Q0MgPSBiaXNvbgogCitDRkxBR1MgKz0gLVdhbGwgLU8yCitDRkxBR1MgKz0gLURfX0VYUE9SVEVE X0hFQURFUlNfXyAtSS4uLy4uL2luY2x1ZGUvdWFwaSAtSS4uLy4uL2luY2x1ZGUKKwogJS55YWNj LmM6ICUueQogCSQoWUFDQykgLW8gJEAgLWQgJDwKIApAQCAtMTIsMTUgKzE1LDEzIEBAIFlBQ0Mg PSBiaXNvbgogCiBhbGwgOiBicGZfaml0X2Rpc2FzbSBicGZfZGJnIGJwZl9hc20KIAotYnBmX2pp dF9kaXNhc20gOiBDRkxBR1MgPSAtV2FsbCAtTzIgLURQQUNLQUdFPSdicGZfaml0X2Rpc2FzbScK K2JwZl9qaXRfZGlzYXNtIDogQ0ZMQUdTICs9IC1EUEFDS0FHRT0nYnBmX2ppdF9kaXNhc20nCiBi cGZfaml0X2Rpc2FzbSA6IExETElCUyA9IC1sb3Bjb2RlcyAtbGJmZCAtbGRsCiBicGZfaml0X2Rp c2FzbSA6IGJwZl9qaXRfZGlzYXNtLm8KIAotYnBmX2RiZyA6IENGTEFHUyA9IC1XYWxsIC1PMgog YnBmX2RiZyA6IExETElCUyA9IC1scmVhZGxpbmUKIGJwZl9kYmcgOiBicGZfZGJnLm8KIAotYnBm X2FzbSA6IENGTEFHUyA9IC1XYWxsIC1PMiAtSS4KIGJwZl9hc20gOiBMRExJQlMgPQogYnBmX2Fz bSA6IGJwZl9hc20ubyBicGZfZXhwLnlhY2MubyBicGZfZXhwLmxleC5vCiBicGZfZXhwLmxleC5v IDogYnBmX2V4cC55YWNjLmMKLS0gCjIuNC4xCgoKRnJvbSAxYWRkMmE1MWVjMWUwZGQwZTY2Yjdi NWQ1NTk0ZjEyMGYxMzA1NzQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwg Qm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpEYXRlOiBXZWQsIDExIE5vdiAyMDE1IDIz OjI1OjQwICswMTAwClN1YmplY3Q6IFtQQVRDSCAwMy8yM10gcGFja2V0OiBkbyBza2JfcHJvYmVf dHJhbnNwb3J0X2hlYWRlciB3aGVuIHdlIGFjdHVhbGx5CiBoYXZlIGRhdGEKClsgVXBzdHJlYW0g Y29tbWl0IGVmZGZhMmY3ODQ4ZjY0NTE3MDA4MTM2ZmI0MWY1M2M0YTFmYWY5M2EgXQoKSW4gdHBh Y2tldF9maWxsX3NrYigpIGNvbW1pdCBjMWFhZDI3NWIwMjkgKCJwYWNrZXQ6IHNldCB0cmFuc3Bv cnQKaGVhZGVyIGJlZm9yZSBkb2luZyB4bWl0IikgYW5kIGxhdGVyIG9uIDQwODkzZmQwZmQ0ZSAo Im5ldDogc3dpdGNoCnRvIHVzZSBza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlcigpIikgd2FzIHBy b2JpbmcgZm9yIGEgdHJhbnNwb3J0CmhlYWRlciBvbiB0aGUgc2tiIGZyb20gYSByaW5nIGJ1ZmZl ciBzbG90LCBidXQgYXQgYSB0aW1lLCB3aGVyZQp0aGUgc2tiIGhhcyBfbm90IGV2ZW5fIGJlZW4g ZmlsbGVkIHdpdGggZGF0YSB5ZXQuIFNvIHRoYXQgY2FsbCBpbnRvCnRoZSBmbG93IGRpc3NlY3Rv ciBpcyBwcmV0dHkgdXNlbGVzcy4gTGV0cyBkbyBpdCBhZnRlciB3ZSd2ZSBzZXQKdXAgdGhlIHNr YiBmcmFncy4KCkZpeGVzOiBjMWFhZDI3NWIwMjkgKCJwYWNrZXQ6IHNldCB0cmFuc3BvcnQgaGVh ZGVyIGJlZm9yZSBkb2luZyB4bWl0IikKUmVwb3J0ZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6 ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9n ZWFyYm94Lm5ldD4KQWNrZWQtYnk6IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBu ZXQvcGFja2V0L2FmX3BhY2tldC5jIHwgNSArKystLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3BhY2tl dC5jIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCBiZjYwOTc3Li4wYTY4NjhlIDEwMDY0 NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0 LmMKQEAgLTIxMTcsOCArMjExNyw2IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1 Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXNrYl9yZXNlcnZlKHNr YiwgaGxlbik7CiAJc2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7CiAKLQlpZiAoIXBhY2tl dF91c2VfZGlyZWN0X3htaXQocG8pKQotCQlza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlcihza2Is IDApOwogCWlmICh1bmxpa2VseShwby0+dHBfdHhfaGFzX29mZikpIHsKIAkJaW50IG9mZl9taW4s IG9mZl9tYXgsIG9mZjsKIAkJb2ZmX21pbiA9IHBvLT50cF9oZHJsZW4gLSBzaXplb2Yoc3RydWN0 IHNvY2thZGRyX2xsKTsKQEAgLTIyMDIsNiArMjIwMCw5IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9m aWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQls ZW4gPSAoKHRvX3dyaXRlID4gbGVuX21heCkgPyBsZW5fbWF4IDogdG9fd3JpdGUpOwogCX0KIAor CWlmICghcGFja2V0X3VzZV9kaXJlY3RfeG1pdChwbykpCisJCXNrYl9wcm9iZV90cmFuc3BvcnRf aGVhZGVyKHNrYiwgMCk7CisKIAlyZXR1cm4gdHBfbGVuOwogfQogCi0tIAoyLjQuMQoKCkZyb20g ZGE2NjFlMTlhZmM1ODk1OTI2ZmIyZjljOGRmNTAzZWZlZTU5NmRiZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KRGF0 ZTogV2VkLCAxMSBOb3YgMjAxNSAyMzoyNTo0MSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDQvMjNd IHBhY2tldDogYWx3YXlzIHByb2JlIGZvciB0cmFuc3BvcnQgaGVhZGVyCgpbIFVwc3RyZWFtIGNv bW1pdCA4ZmQ2YzgwZDlkZDkzOGNhMzM4YzcwNjk4NTMzYTdlMzA0NzUyODQ2IF0KCldlIGNvbmNs dWRlZCB0aGF0IHRoZSBza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlcigpIHNob3VsZCBiZXR0ZXIg YmUKY2FsbGVkIHVuY29uZGl0aW9uYWxseS4gQXZvaWRpbmcgdGhlIGNhbGwgaW50byB0aGUgZmxv dyBkaXNzZWN0b3IgaGFzCmFsc28gbm90IHJlYWxseSBtdWNoIHRvIGRvIHdpdGggdGhlIGRpcmVj dCB4bWl0IG1vZGUuCgpXaGlsZSBpdCBzZWVtcyB0aGF0IG9ubHkgdmlydGlvX25ldCBjb2RlIG1h a2VzIHVzZSBvZiBHU08gZnJvbSBub24KUlgvVFggcmluZyBwYWNrZXQgc29ja2V0IHBhdGhzLCB3 ZSBzaG91bGQgcHJvYmUgZm9yIGEgdHJhbnNwb3J0IGhlYWRlcgpuZXZlcnRoZWxlc3MgYmVmb3Jl IHRoZXkgaGl0IGRldmljZXMuCgpSZWZlcmVuY2U6IGh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dt YW5lLmxpbnV4Lm5ldHdvcmsvMzg2MTczLwpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQm9ya21hbm4g PGRhbmllbEBpb2dlYXJib3gubmV0PgpBY2tlZC1ieTogSmFzb24gV2FuZyA8amFzb3dhbmdAcmVk aGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIG5ldC9wYWNrZXQvYWZfcGFja2V0LmMgfCA3ICsrKy0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3Bh Y2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXggMGE2ODY4ZS4u OWFjNTFiNSAxMDA2NDQKLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYworKysgYi9uZXQvcGFj a2V0L2FmX3BhY2tldC5jCkBAIC0yMjAwLDggKzIyMDAsNyBAQCBzdGF0aWMgaW50IHRwYWNrZXRf ZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJ bGVuID0gKCh0b193cml0ZSA+IGxlbl9tYXgpID8gbGVuX21heCA6IHRvX3dyaXRlKTsKIAl9CiAK LQlpZiAoIXBhY2tldF91c2VfZGlyZWN0X3htaXQocG8pKQotCQlza2JfcHJvYmVfdHJhbnNwb3J0 X2hlYWRlcihza2IsIDApOworCXNrYl9wcm9iZV90cmFuc3BvcnRfaGVhZGVyKHNrYiwgMCk7CiAK IAlyZXR1cm4gdHBfbGVuOwogfQpAQCAtMjUzOCw4ICsyNTM3LDggQEAgc3RhdGljIGludCBwYWNr ZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxl bikKIAkJbGVuICs9IHZuZXRfaGRyX2xlbjsKIAl9CiAKLQlpZiAoIXBhY2tldF91c2VfZGlyZWN0 X3htaXQocG8pKQotCQlza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlcihza2IsIHJlc2VydmUpOwor CXNrYl9wcm9iZV90cmFuc3BvcnRfaGVhZGVyKHNrYiwgcmVzZXJ2ZSk7CisKIAlpZiAodW5saWtl bHkoZXh0cmFfbGVuID09IDQpKQogCQlza2ItPm5vX2ZjcyA9IDE7CiAKLS0gCjIuNC4xCgoKRnJv bSAyYTVjZGM1NGY0OTY5YTVmNjdlZDAzZGIwMTRlZjgwZjYxZDNkNDA3IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgRHJvemRvdiA8YWwuZHJvemRvdkBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjggSnVsIDIwMTUgMTM6NTc6MDEgKzAzMDAKU3ViamVjdDogW1BBVENIIDA1 LzIzXSBwYWNrZXQ6IHRwYWNrZXRfc25kKCk6IGZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNv bgoKWyBVcHN0cmVhbSBjb21taXQgZGJkNDZhYjQxMmI4ZmIzOTVmMmIwZmY2ZjZhN2VlYzlkZjMx MTU1MCBdCgp0cGFja2V0X2ZpbGxfc2tiKCkgY2FuIHJldHVybiBhIG5lZ2F0aXZlIHZhbHVlICgt ZXJybm8pIHdoaWNoCmlzIHN0b3JlZCBpbiB0cF9sZW4gdmFyaWFibGUuIEluIHRoYXQgY2FzZSB0 aGUgZm9sbG93aW5nCmNvbmRpdGlvbiB3aWxsIGJlIChidXQgc2hvdWxkbid0IGJlKSB0cnVlOgoK dHBfbGVuID4gZGV2LT5tdHUgKyBkZXYtPmhhcmRfaGVhZGVyX2xlbgoKYXMgZGV2LT5tdHUgYW5k IGRldi0+aGFyZF9oZWFkZXJfbGVuIGFyZSBib3RoIHVuc2lnbmVkLgoKVGhhdCBtYXkgbGVhZCB0 byBqdXN0IHJldHVybmluZyBhbiBpbmNvcnJlY3QgRU1TR1NJWkUgZXJybm8KdG8gdGhlIHVzZXIu CgpGaXhlczogNTJmMTQ1NGY2MjlmYSAoInBhY2tldDogYWxsb3cgdG8gdHJhbnNtaXQgKzQgYnl0 ZSBpbiBUWF9SSU5HIHNsb3QgZm9yIFZMQU4gY2FzZSIpClNpZ25lZC1vZmYtYnk6IEFsZXhhbmRl ciBEcm96ZG92IDxhbC5kcm96ZG92QGdtYWlsLmNvbT4KQWNrZWQtYnk6IERhbmllbCBCb3JrbWFu biA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvcGFja2V0L2FmX3BhY2tldC5jIHwgMyArKy0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRl eCA5YWM1MWI1Li40MGRmN2NkIDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCisr KyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTIyNzQsNyArMjI3NCw4IEBAIHN0YXRpYyBp bnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNn KQogCiAJCXRwX2xlbiA9IHRwYWNrZXRfZmlsbF9za2IocG8sIHNrYiwgcGgsIGRldiwgc2l6ZV9t YXgsIHByb3RvLAogCQkJCQkgIGFkZHIsIGhsZW4pOwotCQlpZiAodHBfbGVuID4gZGV2LT5tdHUg KyBkZXYtPmhhcmRfaGVhZGVyX2xlbikgeworCQlpZiAobGlrZWx5KHRwX2xlbiA+PSAwKSAmJgor CQkgICAgdHBfbGVuID4gZGV2LT5tdHUgKyBkZXYtPmhhcmRfaGVhZGVyX2xlbikgewogCQkJc3Ry dWN0IGV0aGhkciAqZWhkcjsKIAkJCS8qIEVhcmxpZXIgY29kZSBhc3N1bWVkIHRoaXMgd291bGQg YmUgYSBWTEFOIHBrdCwKIAkJCSAqIGRvdWJsZS1jaGVjayB0aGlzIG5vdyB0aGF0IHdlIGhhdmUg dGhlIGFjdHVhbAotLSAKMi40LjEKCgpGcm9tIDgxMDczNDA3YTFlZDRhZTM5NjQ4MzgwNzQyODRk MjU1NjNjOGI4MzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IERhbmllbCBCb3JrbWFu biA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkRhdGU6IFdlZCwgMTEgTm92IDIwMTUgMjM6MjU6NDIg KzAxMDAKU3ViamVjdDogW1BBVENIIDA2LzIzXSBwYWNrZXQ6IG9ubHkgYWxsb3cgZXh0cmEgdmxh biBsZW4gb24gZXRoZXJuZXQgZGV2aWNlcwoKWyBVcHN0cmVhbSBjb21taXQgM2M3MGMxMzI0ODg3 OTRlMjQ4OWFiMDQ1NTU5YjBjZTBhZmNmMTdkZSBdCgpQYWNrZXQgc29ja2V0cyBjYW4gYmUgdXNl ZCBieSB2YXJpb3VzIG5ldCBkZXZpY2VzIGFuZCBhcmUgbm90CnJlYWxseSByZXN0cmljdGVkIHRv IEFSUEhSRF9FVEhFUiBkZXZpY2UgdHlwZXMuIEhvd2V2ZXIsIHdoZW4KY3VycmVudGx5IGNoZWNr aW5nIGZvciB0aGUgZXh0cmEgNCBieXRlcyB0aGF0IGNhbiBiZSB0cmFuc21pdHRlZAppbiBWTEFO IGNhc2UsIG91ciBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgZ2VuZXJhbGx5IHByb2JlIG9uCkFSUEhS RF9FVEhFUiBkZXZpY2VzLiBUaGVyZWZvcmUsIGJlZm9yZSBsb29raW5nIGludG8gRXRoZXJuZXQK aGVhZGVyLCBjaGVjayB0aGUgZGV2aWNlIHR5cGUgZmlyc3QuCgpUaGlzIGFsc28gZml4ZXMgdGhl IGlzc3VlIHdoZXJlIG5vbi1BUlBIUkRfRVRIRVIgZGV2aWNlcyBjb3VsZApoYXZlIG5vIGRldi0+ aGFyZF9oZWFkZXJfbGVuIGluIFRYX1JJTkcgU09DS19SQVcgY2FzZSwgYW5kIHRodXMKdGhlIGNo ZWNrIHdvdWxkIHRlc3QgdW5maWxsZWQgbGluZWFyIHBhcnQgb2YgdGhlIHNrYiAoaW5zdGVhZApv ZiBub24tbGluZWFyKS4KCkZpeGVzOiA1N2Y4OWJmYTIxNDAgKCJuZXR3b3JrOiBBbGxvdyBhZl9w YWNrZXQgdG8gdHJhbnNtaXQgKzQgYnl0ZXMgZm9yIFZMQU4gcGFja2V0cy4iKQpGaXhlczogNTJm MTQ1NGY2MjlmICgicGFja2V0OiBhbGxvdyB0byB0cmFuc21pdCArNCBieXRlIGluIFRYX1JJTkcg c2xvdCBmb3IgVkxBTiBjYXNlIikKU2lnbmVkLW9mZi1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5p ZWxAaW9nZWFyYm94Lm5ldD4KQWNrZWQtYnk6IFdpbGxlbSBkZSBCcnVpam4gPHdpbGxlbWJAZ29v Z2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIG5ldC9wYWNrZXQvYWZfcGFja2V0LmMgfCA2MCArKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI1IGluc2Vy dGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFj a2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCmluZGV4IDQwZGY3Y2QuLjg2NzBmZmIgMTAw NjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKKysrIGIvbmV0L3BhY2tldC9hZl9wYWNr ZXQuYwpAQCAtMTUwNyw2ICsxNTA3LDIwIEBAIHN0YXRpYyB2b2lkIGZhbm91dF9yZWxlYXNlKHN0 cnVjdCBzb2NrICpzaykKIAltdXRleF91bmxvY2soJmZhbm91dF9tdXRleCk7CiB9CiAKK3N0YXRp YyBib29sIHBhY2tldF9leHRyYV92bGFuX2xlbl9hbGxvd2VkKGNvbnN0IHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYsCisJCQkJCSAgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwkvKiBFYXJsaWVyIGNv ZGUgYXNzdW1lZCB0aGlzIHdvdWxkIGJlIGEgVkxBTiBwa3QsIGRvdWJsZS1jaGVjaworCSAqIHRo aXMgbm93IHRoYXQgd2UgaGF2ZSB0aGUgYWN0dWFsIHBhY2tldCBpbiBoYW5kLiBXZSBjYW4gb25s eQorCSAqIGRvIHRoaXMgY2hlY2sgb24gRXRoZXJuZXQgZGV2aWNlcy4KKwkgKi8KKwlpZiAodW5s aWtlbHkoZGV2LT50eXBlICE9IEFSUEhSRF9FVEhFUikpCisJCXJldHVybiBmYWxzZTsKKworCXNr Yl9yZXNldF9tYWNfaGVhZGVyKHNrYik7CisJcmV0dXJuIGxpa2VseShldGhfaGRyKHNrYiktPmhf cHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpKTsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBw cm90b19vcHMgcGFja2V0X29wczsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFj a2V0X29wc19zcGt0OwpAQCAtMTY2OCwxOCArMTY4MiwxMCBAQCByZXRyeToKIAkJZ290byByZXRy eTsKIAl9CiAKLQlpZiAobGVuID4gKGRldi0+bXR1ICsgZGV2LT5oYXJkX2hlYWRlcl9sZW4gKyBl eHRyYV9sZW4pKSB7Ci0JCS8qIEVhcmxpZXIgY29kZSBhc3N1bWVkIHRoaXMgd291bGQgYmUgYSBW TEFOIHBrdCwKLQkJICogZG91YmxlLWNoZWNrIHRoaXMgbm93IHRoYXQgd2UgaGF2ZSB0aGUgYWN0 dWFsCi0JCSAqIHBhY2tldCBpbiBoYW5kLgotCQkgKi8KLQkJc3RydWN0IGV0aGhkciAqZWhkcjsK LQkJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKLQkJZWhkciA9IGV0aF9oZHIoc2tiKTsKLQkJ aWYgKGVoZHItPmhfcHJvdG8gIT0gaHRvbnMoRVRIX1BfODAyMVEpKSB7Ci0JCQllcnIgPSAtRU1T R1NJWkU7Ci0JCQlnb3RvIG91dF91bmxvY2s7Ci0JCX0KKwlpZiAobGVuID4gKGRldi0+bXR1ICsg ZGV2LT5oYXJkX2hlYWRlcl9sZW4gKyBleHRyYV9sZW4pICYmCisJICAgICFwYWNrZXRfZXh0cmFf dmxhbl9sZW5fYWxsb3dlZChkZXYsIHNrYikpIHsKKwkJZXJyID0gLUVNU0dTSVpFOworCQlnb3Rv IG91dF91bmxvY2s7CiAJfQogCiAJc2tiLT5wcm90b2NvbCA9IHByb3RvOwpAQCAtMjI3NSwxOCAr MjI4MSwxMCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8s IHN0cnVjdCBtc2doZHIgKm1zZykKIAkJdHBfbGVuID0gdHBhY2tldF9maWxsX3NrYihwbywgc2ti LCBwaCwgZGV2LCBzaXplX21heCwgcHJvdG8sCiAJCQkJCSAgYWRkciwgaGxlbik7CiAJCWlmIChs aWtlbHkodHBfbGVuID49IDApICYmCi0JCSAgICB0cF9sZW4gPiBkZXYtPm10dSArIGRldi0+aGFy ZF9oZWFkZXJfbGVuKSB7Ci0JCQlzdHJ1Y3QgZXRoaGRyICplaGRyOwotCQkJLyogRWFybGllciBj b2RlIGFzc3VtZWQgdGhpcyB3b3VsZCBiZSBhIFZMQU4gcGt0LAotCQkJICogZG91YmxlLWNoZWNr IHRoaXMgbm93IHRoYXQgd2UgaGF2ZSB0aGUgYWN0dWFsCi0JCQkgKiBwYWNrZXQgaW4gaGFuZC4K LQkJCSAqLworCQkgICAgdHBfbGVuID4gZGV2LT5tdHUgKyBkZXYtPmhhcmRfaGVhZGVyX2xlbiAm JgorCQkgICAgIXBhY2tldF9leHRyYV92bGFuX2xlbl9hbGxvd2VkKGRldiwgc2tiKSkKKwkJCXRw X2xlbiA9IC1FTVNHU0laRTsKIAotCQkJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKLQkJCWVo ZHIgPSBldGhfaGRyKHNrYik7Ci0JCQlpZiAoZWhkci0+aF9wcm90byAhPSBodG9ucyhFVEhfUF84 MDIxUSkpCi0JCQkJdHBfbGVuID0gLUVNU0dTSVpFOwotCQl9CiAJCWlmICh1bmxpa2VseSh0cF9s ZW4gPCAwKSkgewogCQkJaWYgKHBvLT50cF9sb3NzKSB7CiAJCQkJX19wYWNrZXRfc2V0X3N0YXR1 cyhwbywgcGgsCkBAIC0yNDk4LDE4ICsyNDk2LDEwIEBAIHN0YXRpYyBpbnQgcGFja2V0X3NuZChz dHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pCiAKIAlz b2NrX3R4X3RpbWVzdGFtcChzaywgJnNrYl9zaGluZm8oc2tiKS0+dHhfZmxhZ3MpOwogCi0JaWYg KCFnc29fdHlwZSAmJiAobGVuID4gZGV2LT5tdHUgKyByZXNlcnZlICsgZXh0cmFfbGVuKSkgewot CQkvKiBFYXJsaWVyIGNvZGUgYXNzdW1lZCB0aGlzIHdvdWxkIGJlIGEgVkxBTiBwa3QsCi0JCSAq IGRvdWJsZS1jaGVjayB0aGlzIG5vdyB0aGF0IHdlIGhhdmUgdGhlIGFjdHVhbAotCQkgKiBwYWNr ZXQgaW4gaGFuZC4KLQkJICovCi0JCXN0cnVjdCBldGhoZHIgKmVoZHI7Ci0JCXNrYl9yZXNldF9t YWNfaGVhZGVyKHNrYik7Ci0JCWVoZHIgPSBldGhfaGRyKHNrYik7Ci0JCWlmIChlaGRyLT5oX3By b3RvICE9IGh0b25zKEVUSF9QXzgwMjFRKSkgewotCQkJZXJyID0gLUVNU0dTSVpFOwotCQkJZ290 byBvdXRfZnJlZTsKLQkJfQorCWlmICghZ3NvX3R5cGUgJiYgKGxlbiA+IGRldi0+bXR1ICsgcmVz ZXJ2ZSArIGV4dHJhX2xlbikgJiYKKwkgICAgIXBhY2tldF9leHRyYV92bGFuX2xlbl9hbGxvd2Vk KGRldiwgc2tiKSkgeworCQllcnIgPSAtRU1TR1NJWkU7CisJCWdvdG8gb3V0X2ZyZWU7CiAJfQog CiAJc2tiLT5wcm90b2NvbCA9IHByb3RvOwotLSAKMi40LjEKCgpGcm9tIDEyYmFkODdlNDAyMGFi YWM0N2M3ZDE5OGU0MTQyYzI4ZGNlZTA1NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkRhdGU6IFdlZCwgMTEgTm92 IDIwMTUgMjM6MjU6NDMgKzAxMDAKU3ViamVjdDogW1BBVENIIDA3LzIzXSBwYWNrZXQ6IGluZmVy IHByb3RvY29sIGZyb20gZXRoZXJuZXQgaGVhZGVyIGlmIHVuc2V0CgpbIFVwc3RyZWFtIGNvbW1p dCBjNzIyMTliNzVmZGU3NjhlZmNjZjc2NjYzNDIyODJmYWI3ZjllNGU3IF0KCkluIGNhc2Ugbm8g c3RydWN0IHNvY2thZGRyX2xsIGhhcyBiZWVuIHBhc3NlZCB0byBwYWNrZXQKc29ja2V0J3Mgc2Vu ZG1zZygpIHdoZW4gZG9pbmcgYSBUWF9SSU5HIGZsdXNoIHJ1biwgdGhlbgpza2ItPnByb3RvY29s IGlzIHNldCB0byBwby0+bnVtIGluc3RlYWQsIHdoaWNoIGlzIHRoZSBwcm90b2NvbApwYXNzZWQg dmlhIHNvY2tldCgyKS9iaW5kKDIpLgoKQXBwbGljYXRpb25zIG9ubHkgeG1pdHRpbmcgY2FuIGdv IHRoZSBwYXRoIG9mIGFsbG9jYXRpbmcgdGhlCnNvY2tldCBhcyBzb2NrZXQoUEZfUEFDS0VULCA8 bW9kZT4sIDApIGFuZCBkbyBhIGJpbmQoMikgb24gdGhlClRYX1JJTkcgd2l0aCBzbGxfcHJvdG9j b2wgb2YgMC4gVGhhdCB3YXksIHJlZ2lzdGVyX3Byb3RfaG9vaygpCmlzIG5laXRoZXIgY2FsbGVk IG9uIGNyZWF0aW9uIG5vciBvbiBiaW5kIHRpbWUsIHdoaWNoIHNhdmVzCmN5Y2xlcyB3aGVuIHRo ZXJlJ3Mgbm8gaW50ZXJlc3QgaW4gY2FwdHVyaW5nIGFueXdheS4KClRoYXQgbGVhdmVzIHVzIGhv d2V2ZXIgd2l0aCBwby0+bnVtIDAgaW5zdGVhZCBhbmQgdGhlcmVmb3JlCnRoZSBUWF9SSU5HIGZs dXNoIHJ1biBzZXRzIHNrYi0+cHJvdG9jb2wgdG8gMCBhcyB3ZWxsLiBFcmljCnJlcG9ydGVkIHRo YXQgdGhpcyBsZWFkcyB0byBwcm9ibGVtcyB3aGVuIHVzaW5nIHRvb2xzIGxpa2UKdHJhZmdlbiBv dmVyIGJvbmRpbmcgZGV2aWNlLiBJLmUuIHRoZSBib25kaW5nJ3MgaGFzaCBmdW5jdGlvbgpjb3Vs ZCBpbnZva2UgdGhlIGtlcm5lbCdzIGZsb3cgZGlzc2VjdG9yLCB3aGljaCBkZXBlbmRzIG9uCnNr Yi0+cHJvdG9jb2wgYmVpbmcgcHJvcGVybHkgc2V0LiBJbiB0aGUgY3VycmVudCBzaXR1YXRpb24s IGFsbAp0aGUgdHJhZmZpYyBpcyB0aGVuIGRpcmVjdGVkIHRvIGEgc2luZ2xlIHNsYXZlLgoKRml4 IGl0IHVwIGJ5IGluZmVycmluZyBza2ItPnByb3RvY29sIGZyb20gdGhlIEV0aGVybmV0IGhlYWRl cgp3aGVuIG5vdCBzZXQgYW5kIHdlIGhhdmUgQVJQSFJEX0VUSEVSIGRldmljZSB0eXBlLiBUaGlz IGlzIG9ubHkKZG9uZSBpbiBjYXNlIG9mIFNPQ0tfUkFXIGFuZCB3aGVyZSB3ZSBoYXZlIGEgZGV2 LT5oYXJkX2hlYWRlcl9sZW4KbGVuZ3RoLiBJbiBjYXNlIG9mIEFSUEhSRF9FVEhFUiBkZXZpY2Vz LCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8KY292ZXIgRVRIX0hMRU4sIGFuZCB0aGVyZWZvcmUgYmVp bmcgYWNjZXNzZWQgb24gdGhlIHNrYiBhZnRlcgp0aGUgc2tiX3N0b3JlX2JpdHMoKS4KClJlcG9y dGVkLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6 IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkFja2VkLWJ5OiBXaWxsZW0g ZGUgQnJ1aWpuIDx3aWxsZW1iQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvcGFja2V0L2FmX3BhY2tldC5jIHwg MTEgKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5k ZXggODY3MGZmYi4uODFkZmM2NiAxMDA2NDQKLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwor KysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCkBAIC0yMDg3LDYgKzIwODcsMTUgQEAgc3RhdGlj IHZvaWQgdHBhY2tldF9kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzb2NrX3dm cmVlKHNrYik7CiB9CiAKK3N0YXRpYyB2b2lkIHRwYWNrZXRfc2V0X3Byb3RvY29sKGNvbnN0IHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsCisJCQkJIHN0cnVjdCBza19idWZmICpza2IpCit7CisJaWYg KGRldi0+dHlwZSA9PSBBUlBIUkRfRVRIRVIpIHsKKwkJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2ti KTsKKwkJc2tiLT5wcm90b2NvbCA9IGV0aF9oZHIoc2tiKS0+aF9wcm90bzsKKwl9Cit9CisKIHN0 YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qg c2tfYnVmZiAqc2tiLAogCQl2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50 IHNpemVfbWF4LAogCQlfX2JlMTYgcHJvdG8sIHVuc2lnbmVkIGNoYXIgKmFkZHIsIGludCBobGVu KQpAQCAtMjE3Miw2ICsyMTgxLDggQEAgc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVj dCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJZGV2LT5oYXJkX2hl YWRlcl9sZW4pOwogCQlpZiAodW5saWtlbHkoZXJyKSkKIAkJCXJldHVybiBlcnI7CisJCWlmICgh c2tiLT5wcm90b2NvbCkKKwkJCXRwYWNrZXRfc2V0X3Byb3RvY29sKGRldiwgc2tiKTsKIAogCQlk YXRhICs9IGRldi0+aGFyZF9oZWFkZXJfbGVuOwogCQl0b193cml0ZSAtPSBkZXYtPmhhcmRfaGVh ZGVyX2xlbjsKLS0gCjIuNC4xCgoKRnJvbSAzYThkMDNmOGE2YzI5ODY5ZGMwMWY0NjQ1MjllNDIz NTRiMzgzOTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQm9ya21hbm4g PGRhbmllbEBpb2dlYXJib3gubmV0PgpEYXRlOiBXZWQsIDExIE5vdiAyMDE1IDIzOjI1OjQ0ICsw MTAwClN1YmplY3Q6IFtQQVRDSCAwOC8yM10gcGFja2V0OiBmaXggdHBhY2tldF9zbmQgbWF4IGZy YW1lIGxlbgoKWyBVcHN0cmVhbSBjb21taXQgNWNmYjRjOGQwNWI0NDA5YzQwNDRjYjljMDViMTk3 MDVjMWQ5ODE4YiBdCgpTaW5jZSBpdCdzIGludHJvZHVjdGlvbiBpbiBjb21taXQgNjllM2M3NWY0 ZDU0ICgibmV0OiBUWF9SSU5HIGFuZApwYWNrZXQgbW1hcCIpLCBUWF9SSU5HIGNvdWxkIGJlIHVz ZWQgZnJvbSBTT0NLX0RHUkFNIGFuZCBTT0NLX1JBVwpzaWRlLiBXaGVuIHVzZWQgd2l0aCBTT0NL X0RHUkFNIG9ubHksIHRoZSBzaXplX21heCA+IGRldi0+bXR1ICsKcmVzZXJ2ZSBjaGVjayBzaG91 bGQgaGF2ZSByZXNlcnZlIGFzIDAsIGJ1dCBjdXJyZW50bHksIHRoaXMgaXMKdW5jb25kaXRpb25h bGx5IHNldCAoaW4gaXQncyBvcmlnaW5hbCBmb3JtIGFzIGRldi0+aGFyZF9oZWFkZXJfbGVuKS4K CkkgdGhpbmsgdGhpcyBpcyBub3QgY29ycmVjdCBzaW5jZSB0cGFja2V0X2ZpbGxfc2tiKCkgd291 bGQgdGhlbgp0YWtlIGRldi0+bXR1IGFuZCBkZXYtPmhhcmRfaGVhZGVyX2xlbiBpbnRvIGFjY291 bnQgZm9yIFNPQ0tfREdSQU0sCnRoZSBleHRyYSBWTEFOX0hMRU4gY291bGQgYmUgcG9zc2libGUg aW4gYm90aCBjYXNlcy4gUHJlc3VtYWJseSwgdGhlCnJlc2VydmUgY29kZSB3YXMgY29waWVkIGZy b20gcGFja2V0X3NuZCgpLCBidXQgbGF0ZXIgb24gbWlzc2VkIHRoZQpjaGVjay4gTWFrZSBpdCBz aW1pbGFyIGFzIHdlIGhhdmUgaXQgaW4gcGFja2V0X3NuZCgpLgoKRml4ZXM6IDY5ZTNjNzVmNGQ1 NCAoIm5ldDogVFhfUklORyBhbmQgcGFja2V0IG1tYXAiKQpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwg Qm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpBY2tlZC1ieTogV2lsbGVtIGRlIEJydWlq biA8d2lsbGVtYkBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3BhY2tldC9hZl9wYWNrZXQuYyB8IDkgKysrKyst LS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5j CmluZGV4IDgxZGZjNjYuLmNiNjJkYWYgMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0 LmMKKysrIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwpAQCAtMjI2MywxMiArMjI2MywxMyBAQCBz dGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2do ZHIgKm1zZykKIAlpZiAodW5saWtlbHkoIShkZXYtPmZsYWdzICYgSUZGX1VQKSkpCiAJCWdvdG8g b3V0X3B1dDsKIAotCXJlc2VydmUgPSBkZXYtPmhhcmRfaGVhZGVyX2xlbiArIFZMQU5fSExFTjsK KwlpZiAocG8tPnNrLnNrX3NvY2tldC0+dHlwZSA9PSBTT0NLX1JBVykKKwkJcmVzZXJ2ZSA9IGRl di0+aGFyZF9oZWFkZXJfbGVuOwogCXNpemVfbWF4ID0gcG8tPnR4X3JpbmcuZnJhbWVfc2l6ZQog CQktIChwby0+dHBfaGRybGVuIC0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9sbCkpOwogCi0JaWYg KHNpemVfbWF4ID4gZGV2LT5tdHUgKyByZXNlcnZlKQotCQlzaXplX21heCA9IGRldi0+bXR1ICsg cmVzZXJ2ZTsKKwlpZiAoc2l6ZV9tYXggPiBkZXYtPm10dSArIHJlc2VydmUgKyBWTEFOX0hMRU4p CisJCXNpemVfbWF4ID0gZGV2LT5tdHUgKyByZXNlcnZlICsgVkxBTl9ITEVOOwogCiAJZG8gewog CQlwaCA9IHBhY2tldF9jdXJyZW50X2ZyYW1lKHBvLCAmcG8tPnR4X3JpbmcsCkBAIC0yMjkyLDcg KzIyOTMsNyBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8s IHN0cnVjdCBtc2doZHIgKm1zZykKIAkJdHBfbGVuID0gdHBhY2tldF9maWxsX3NrYihwbywgc2ti LCBwaCwgZGV2LCBzaXplX21heCwgcHJvdG8sCiAJCQkJCSAgYWRkciwgaGxlbik7CiAJCWlmIChs aWtlbHkodHBfbGVuID49IDApICYmCi0JCSAgICB0cF9sZW4gPiBkZXYtPm10dSArIGRldi0+aGFy ZF9oZWFkZXJfbGVuICYmCisJCSAgICB0cF9sZW4gPiBkZXYtPm10dSArIHJlc2VydmUgJiYKIAkJ ICAgICFwYWNrZXRfZXh0cmFfdmxhbl9sZW5fYWxsb3dlZChkZXYsIHNrYikpCiAJCQl0cF9sZW4g PSAtRU1TR1NJWkU7CiAKLS0gCjIuNC4xCgoKRnJvbSBjMmUzNGM1ZDBmZmM0ODJmY2QyMjllNzNj NDdhNDUyZTA2YzQwODU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBsdWNpZW4gPGx1 Y2llbi54aW5AZ21haWwuY29tPgpEYXRlOiBUaHUsIDEyIE5vdiAyMDE1IDEzOjA3OjA3ICswODAw ClN1YmplY3Q6IFtQQVRDSCAwOS8yM10gc2N0cDogdHJhbnNsYXRlIGhvc3Qgb3JkZXIgdG8gbmV0 d29yayBvcmRlciB3aGVuCiBzZXR0aW5nIGEgaG1hY2lkCgpbIFVwc3RyZWFtIGNvbW1pdCBlZDVh Mzc3ZDg3ZGM0Yzg3ZmIzZTFmN2Y2OThjYmEzOGNkODkzMTAzIF0KCm5vdyBzY3RwIGF1dGggY2Fu bm90IHdvcmsgd2VsbCB3aGVuIHNldHRpbmcgYSBobWFjaWQgbWFudWFsbHksIHdoaWNoCmlzIGNh dXNlZCBieSB0aGF0IHdlIGRpZG4ndCB1c2UgdGhlIG5ldHdvcmsgb3JkZXIgZm9yIGhtYWNpZCwg c28gZml4Cml0IGJ5IGFkZGluZyB0aGUgdHJhbnNmb3JtYXRpb24gaW4gc2N0cF9hdXRoX2VwX3Nl dF9obWFjcy4KCmV2ZW4gd2Ugc2V0IGhtYWNpZCB3aXRoIHRoZSBuZXR3b3JrIG9yZGVyIGluIHVz ZXJzcGFjZSwgaXQgc3RpbGwKY2FuJ3Qgd29yaywgYmVjYXVzZSBvZiB0aGlzIGNvbmRpdGlvbiBp biBzY3RwX2F1dGhfZXBfc2V0X2htYWNzKCk6CgoJCWlmIChpZCA+IFNDVFBfQVVUSF9ITUFDX0lE X01BWCkKCQkJcmV0dXJuIC1FT1BOT1RTVVBQOwoKc28gdGhpcyB3YXNuJ3Qgd29ya2luZyBiZWZv cmUgYW5kIHRodXMgaXQgd29uJ3QgYnJlYWsgY29tcGF0aWJpbGl0eS4KCkZpeGVzOiA2NWIwN2U1 ZDBkMDkgKCJbU0NUUF06IEFQSSB1cGRhdGVzIHRvIHN1cG9ydCBTQ1RQLUFVVEggZXh0ZW5zaW9u cy4iKQpTaWduZWQtb2ZmLWJ5OiBYaW4gTG9uZyA8bHVjaWVuLnhpbkBnbWFpbC5jb20+ClNpZ25l ZC1vZmYtYnk6IE1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRuZXJAZ21haWwu Y29tPgpBY2tlZC1ieTogTmVpbCBIb3JtYW4gPG5ob3JtYW5AdHV4ZHJpdmVyLmNvbT4KQWNrZWQt Ynk6IFZsYWQgWWFzZXZpY2ggPHZ5YXNldmljaEBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IERh dmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvc2N0cC9hdXRoLmMg fCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jCmluZGV4IGZi Nzk3NmEuLjYwM2MzYmIgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2F1dGguYworKysgYi9uZXQvc2N0 cC9hdXRoLmMKQEAgLTgwMCw4ICs4MDAsOCBAQCBpbnQgc2N0cF9hdXRoX2VwX3NldF9obWFjcyhz dHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsCiAJaWYgKCFoYXNfc2hhMSkKIAkJcmV0dXJuIC1FSU5W QUw7CiAKLQltZW1jcHkoZXAtPmF1dGhfaG1hY3NfbGlzdC0+aG1hY19pZHMsICZobWFjcy0+c2ht YWNfaWRlbnRzWzBdLAotCQlobWFjcy0+c2htYWNfbnVtX2lkZW50cyAqIHNpemVvZihfX3UxNikp OworCWZvciAoaSA9IDA7IGkgPCBobWFjcy0+c2htYWNfbnVtX2lkZW50czsgaSsrKQorCQllcC0+ YXV0aF9obWFjc19saXN0LT5obWFjX2lkc1tpXSA9IGh0b25zKGhtYWNzLT5zaG1hY19pZGVudHNb aV0pOwogCWVwLT5hdXRoX2htYWNzX2xpc3QtPnBhcmFtX2hkci5sZW5ndGggPSBodG9ucyhzaXpl b2Yoc2N0cF9wYXJhbWhkcl90KSArCiAJCQkJaG1hY3MtPnNobWFjX251bV9pZGVudHMgKiBzaXpl b2YoX191MTYpKTsKIAlyZXR1cm4gMDsKLS0gCjIuNC4xCgoKRnJvbSBlNDY3ZDZmYWMzYjQ4ZjFj M2JiZGQ3MDJhNDYxMmQyMjRjZTg1OGU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAi SmFzb24gQS4gRG9uZW5mZWxkIiA8SmFzb25AengyYzQuY29tPgpEYXRlOiBUaHUsIDEyIE5vdiAy MDE1IDE3OjM1OjU4ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxMC8yM10gaXBfdHVubmVsOiBkaXNh YmxlIHByZWVtcHRpb24gd2hlbiB1cGRhdGluZyBwZXItY3B1CiB0c3RhdHMKClsgVXBzdHJlYW0g Y29tbWl0IGI0ZmU4NWY5YzkxNDZmNjA0NTdlOTUxMmZiNjA1NWU2OWU2YTdhNjUgXQoKRHJpdmVy cyBsaWtlIHZ4bGFuIHVzZSB0aGUgcmVjZW50bHkgaW50cm9kdWNlZAp1ZHBfdHVubmVsX3htaXRf c2tiL3VkcF90dW5uZWw2X3htaXRfc2tiIEFQSXMuIHVkcF90dW5uZWw2X3htaXRfc2tiCm1ha2Vz IHVzZSBvZiBpcDZ0dW5uZWxfeG1pdCwgYW5kIGlwNnR1bm5lbF94bWl0LCBhZnRlciBzZW5kaW5n IHRoZQpwYWNrZXQsIHVwZGF0ZXMgdGhlIHN0cnVjdCBzdGF0cyB1c2luZyB0aGUgdXN1YWwKdTY0 X3N0YXRzX3VwZGF0ZV9iZWdpbi9lbmQgY2FsbHMgb24gdGhpc19jcHVfcHRyKGRldi0+dHN0YXRz KS4KdWRwX3R1bm5lbF94bWl0X3NrYiBtYWtlcyB1c2Ugb2YgaXB0dW5uZWxfeG1pdCwgd2hpY2gg ZG9lc24ndCB0b3VjaAp0c3RhdHMsIHNvIGRyaXZlcnMgbGlrZSB2eGxhbiwgaW1tZWRpYXRlbHkg YWZ0ZXIsIGNhbGwKaXB0dW5uZWxfeG1pdF9zdGF0cywgd2hpY2ggZG9lcyB0aGUgc2FtZSB0aGlu ZyAtIGNhbGxzCnU2NF9zdGF0c191cGRhdGVfYmVnaW4vZW5kIG9uIHRoaXNfY3B1X3B0cihkZXYt PnRzdGF0cykuCgpXaGlsZSB2eGxhbiBpcyBwcm9iYWJseSBmaW5lIChJIGRvbid0IGtub3c/KSwg Y2FsbGluZyBhIHNpbWlsYXIgZnVuY3Rpb24KZnJvbSwgc2F5LCBhbiB1bmJvdW5kIHdvcmtxdWV1 ZSwgb24gYSBmdWxseSBwcmVlbXB0YWJsZSBrZXJuZWwgY2F1c2VzCnJlYWwgaXNzdWVzOgoKWyAg MTg4LjQzNDUzN10gQlVHOiB1c2luZyBzbXBfcHJvY2Vzc29yX2lkKCkgaW4gcHJlZW1wdGlibGUg WzAwMDAwMDAwXSBjb2RlOiBrd29ya2VyL3U4OjAvNgpbICAxODguNDM1NTc5XSBjYWxsZXIgaXMg ZGVidWdfc21wX3Byb2Nlc3Nvcl9pZCsweDE3LzB4MjAKWyAgMTg4LjQzNTU4M10gQ1BVOiAwIFBJ RDogNiBDb21tOiBrd29ya2VyL3U4OjAgTm90IHRhaW50ZWQgNC4yLjYgIzIKWyAgMTg4LjQzNTYw N10gQ2FsbCBUcmFjZToKWyAgMTg4LjQzNTYxMV0gIFs8ZmZmZmZmZmY4MjM0ZTkzNj5dIGR1bXBf c3RhY2srMHg0Zi8weDdiClsgIDE4OC40MzU2MTVdICBbPGZmZmZmZmZmODE5MTVmM2Q+XSBjaGVj a19wcmVlbXB0aW9uX2Rpc2FibGVkKzB4MTlkLzB4MWMwClsgIDE4OC40MzU2MTldICBbPGZmZmZm ZmZmODE5MTVmNzc+XSBkZWJ1Z19zbXBfcHJvY2Vzc29yX2lkKzB4MTcvMHgyMAoKVGhlIHNvbHV0 aW9uIHdvdWxkIGJlIHRvIHByb3RlY3QgdGhlIHdob2xlCnRoaXNfY3B1X3B0cihkZXYtPnRzdGF0 cykvdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbi9lbmQgYmxvY2tzIHdpdGgKZGlzYWJsaW5nIHByZWVt cHRpb24gYW5kIHRoZW4gcmVlbmFibGluZyBpdC4KClNpZ25lZC1vZmYtYnk6IEphc29uIEEuIERv bmVuZmVsZCA8SmFzb25AengyYzQuY29tPgpBY2tlZC1ieTogSGFubmVzIEZyZWRlcmljIFNvd2Eg PGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxs ZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogaW5jbHVkZS9uZXQvaXA2X3R1bm5lbC5oIHwg MyArKy0KIGluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaCB8IDMgKystCiAyIGZpbGVzIGNoYW5nZWQs IDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25l dC9pcDZfdHVubmVsLmggYi9pbmNsdWRlL25ldC9pcDZfdHVubmVsLmgKaW5kZXggYTU1OTNkYS4u ZWY5NTU3NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXA2X3R1bm5lbC5oCisrKyBiL2luY2x1 ZGUvbmV0L2lwNl90dW5uZWwuaApAQCAtNzksMTEgKzc5LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBpcDZ0dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAq ZGV2KQogCWVyciA9IGlwNl9sb2NhbF9vdXQoc2tiKTsKIAogCWlmIChuZXRfeG1pdF9ldmFsKGVy cikgPT0gMCkgewotCQlzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0cyAqdHN0YXRzID0gdGhpc19jcHVf cHRyKGRldi0+dHN0YXRzKTsKKwkJc3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0cyA9IGdl dF9jcHVfcHRyKGRldi0+dHN0YXRzKTsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmdHN0YXRz LT5zeW5jcCk7CiAJCXRzdGF0cy0+dHhfYnl0ZXMgKz0gcGt0X2xlbjsKIAkJdHN0YXRzLT50eF9w YWNrZXRzKys7CiAJCXU2NF9zdGF0c191cGRhdGVfZW5kKCZ0c3RhdHMtPnN5bmNwKTsKKwkJcHV0 X2NwdV9wdHIodHN0YXRzKTsKIAl9IGVsc2UgewogCQlzdGF0cy0+dHhfZXJyb3JzKys7CiAJCXN0 YXRzLT50eF9hYm9ydGVkX2Vycm9ycysrOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdHVu bmVscy5oIGIvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oCmluZGV4IDViYzZlZGUuLmEzZjJmODAg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaAorKysgYi9pbmNsdWRlL25ldC9p cF90dW5uZWxzLmgKQEAgLTE4NiwxMiArMTg2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcHR1 bm5lbF94bWl0X3N0YXRzKGludCBlcnIsCiAJCQkJICAgICAgIHN0cnVjdCBwY3B1X3N3X25ldHN0 YXRzIF9fcGVyY3B1ICpzdGF0cykKIHsKIAlpZiAoZXJyID4gMCkgewotCQlzdHJ1Y3QgcGNwdV9z d19uZXRzdGF0cyAqdHN0YXRzID0gdGhpc19jcHVfcHRyKHN0YXRzKTsKKwkJc3RydWN0IHBjcHVf c3dfbmV0c3RhdHMgKnRzdGF0cyA9IGdldF9jcHVfcHRyKHN0YXRzKTsKIAogCQl1NjRfc3RhdHNf dXBkYXRlX2JlZ2luKCZ0c3RhdHMtPnN5bmNwKTsKIAkJdHN0YXRzLT50eF9ieXRlcyArPSBlcnI7 CiAJCXRzdGF0cy0+dHhfcGFja2V0cysrOwogCQl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmdHN0YXRz LT5zeW5jcCk7CisJCXB1dF9jcHVfcHRyKHRzdGF0cyk7CiAJfSBlbHNlIGlmIChlcnIgPCAwKSB7 CiAJCWVycl9zdGF0cy0+dHhfZXJyb3JzKys7CiAJCWVycl9zdGF0cy0+dHhfYWJvcnRlZF9lcnJv cnMrKzsKLS0gCjIuNC4xCgoKRnJvbSBlNjE5NWZmNzZjMzZlNGEyZDMxNzNiOGUwNTE1OGRhMTBj OGQ2OTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOZWlsIEhvcm1hbiA8bmhvcm1h bkB0dXhkcml2ZXIuY29tPgpEYXRlOiBNb24sIDE2IE5vdiAyMDE1IDEzOjA5OjEwIC0wNTAwClN1 YmplY3Q6IFtQQVRDSCAxMS8yM10gc25tcDogUmVtb3ZlIGR1cGxpY2F0ZSBPVVRNQ0FTVCBzdGF0 IGluY3JlbWVudAoKWyBVcHN0cmVhbSBjb21taXQgNDEwMzNmMDI5ZTM5M2E2NGU4MTk2NmNiZTM0 ZDY2YzZjZjhhMmU3ZSBdCgp0aGUgT1VUTUNBU1Qgc3RhdCBpcyBkb3VibGUgaW5jcmVtZW50ZWQs IGdldHRpbmcgYnVtcGVkIG9uY2UgaW4gdGhlIG1jYXN0IGNvZGUKaXRzZWxmLCBhbmQgYWdhaW4g aW4gdGhlIGNvbW1vbiBpcCBvdXRwdXQgcGF0aC4gIFJlbW92ZSB0aGUgbWNhc3QgYnVtcCwgYXMg aXRzCm5vdCBuZWVkZWQKClZhbGlkYXRlZCBieSB0aGUgcmVwb3J0ZXIsIHdpdGggZ29vZCByZXN1 bHRzCgpTaWduZWQtb2ZmLWJ5OiBOZWlsIEhvcm1hbiA8bmhvcm1hbkB0dXhkcml2ZXIuY29tPgpS ZXBvcnRlZC1ieTogQ2xhdXMgSmVuc2VuIDxjbGF1cy5qZW5zZW5AbWljcm9zZW1pLmNvbT4KQ0M6 IENsYXVzIEplbnNlbiA8Y2xhdXMuamVuc2VuQG1pY3Jvc2VtaS5jb20+CkNDOiBEYXZpZCBNaWxs ZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2Ni9tY2FzdC5jIHwgMiAtLQogMSBmaWxl IGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbWNhc3QuYyBi L25ldC9pcHY2L21jYXN0LmMKaW5kZXggZWQyYzRlNC4uNWFlZGY3NiAxMDA2NDQKLS0tIGEvbmV0 L2lwdjYvbWNhc3QuYworKysgYi9uZXQvaXB2Ni9tY2FzdC5jCkBAIC0xNjUyLDcgKzE2NTIsNiBA QCBvdXQ6CiAJaWYgKCFlcnIpIHsKIAkJSUNNUDZNU0dPVVRfSU5DX1NUQVRTKG5ldCwgaWRldiwg SUNNUFY2X01MRDJfUkVQT1JUKTsKIAkJSUNNUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSUNNUDZf TUlCX09VVE1TR1MpOwotCQlJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJf T1VUTUNBU1QsIHBheWxvYWRfbGVuKTsKIAl9IGVsc2UgewogCQlJUDZfSU5DX1NUQVRTKG5ldCwg aWRldiwgSVBTVEFUU19NSUJfT1VURElTQ0FSRFMpOwogCX0KQEAgLTIwMTUsNyArMjAxNCw2IEBA IG91dDoKIAlpZiAoIWVycikgewogCQlJQ01QNk1TR09VVF9JTkNfU1RBVFMobmV0LCBpZGV2LCB0 eXBlKTsKIAkJSUNNUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSUNNUDZfTUlCX09VVE1TR1MpOwot CQlJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTUNBU1QsIGZ1bGxf bGVuKTsKIAl9IGVsc2UKIAkJSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09V VERJU0NBUkRTKTsKIAotLSAKMi40LjEKCgpGcm9tIGY5YjNlZTYzMGE4YzhiNTE1MWQzZWM3NTli OWZlYWUxMTlkNGNmNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9C aj1DMz1COHJuPTIwTW9yaz89IDxiam9ybkBtb3JrLm5vPgpEYXRlOiBXZWQsIDE4IE5vdiAyMDE1 IDIxOjEzOjA3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxMi8yM10gbmV0OiBxbWlfd3dhbjogYWRk IFhTIFN0aWNrIFcxMDAtMiBmcm9tIDRHIFN5c3RlbXMKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVu dC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp bmc6IDhiaXQKClsgVXBzdHJlYW0gY29tbWl0IDY4MjQyYTVhMWUyZWRjZTM5YjA2OTM4NWNiYWZi ODIzMDRlYWMwZjEgXQoKVGhvbWFzIHJlcG9ydHMKIgo0Z3N5c3RlbXMgc2VsbHMgdHdvIHRvdGFs IGRpZmZlcmVudCBMVEUtc3VyZnN0aWNrcyB1bmRlciB0aGUgc2FtZSBuYW1lLgouLgpUaGUgbmV3 ZXIgdmVyc2lvbiBvZiBYUyBTdGljayBXMTAwIGlzIGZyb20gIm9tZWdhIgouLgpVbmRlciB3aW5k b3dzIHRoZSBkcml2ZXIgc3dpdGNoZXMgdG8gdGhlIHNhbWUgSUQsIGFuZCB1c2VzIE1JMDNcNiBm b3IKbmV0d29yayBhbmQgTUkwMVw2IGZvciBtb2RlbS4KLi4KZWNobyAiMWM5ZSA5YjAxIiA+IC9z eXMvYnVzL3VzYi9kcml2ZXJzL3FtaV93d2FuL25ld19pZAplY2hvICIxYzllIDliMDEiID4gL3N5 cy9idXMvdXNiLXNlcmlhbC9kcml2ZXJzL29wdGlvbjEvbmV3X2lkCgpUOiAgQnVzPTAxIExldj0w MSBQcm50PTAxIFBvcnQ9MDMgQ250PTAxIERldiM9ICA0IFNwZD00ODAgTXhDaD0gMApEOiAgVmVy PSAyLjAwIENscz0wMCg+aWZjICkgU3ViPTAwIFByb3Q9MDAgTXhQUz02NCAjQ2Zncz0gIDEKUDog IFZlbmRvcj0xYzllIFByb2RJRD05YjAxIFJldj0wMi4zMgpTOiAgTWFudWZhY3R1cmVyPVVTQiBN b2RlbQpTOiAgUHJvZHVjdD1VU0IgTW9kZW0KUzogIFNlcmlhbE51bWJlcj0KQzogICNJZnM9IDUg Q2ZnIz0gMSBBdHI9ODAgTXhQd3I9NTAwbUEKSTogIElmIz0gMCBBbHQ9IDAgI0VQcz0gMiBDbHM9 ZmYodmVuZC4pIFN1Yj1mZiBQcm90PWZmIERyaXZlcj1vcHRpb24KSTogIElmIz0gMSBBbHQ9IDAg I0VQcz0gMyBDbHM9ZmYodmVuZC4pIFN1Yj1mZiBQcm90PWZmIERyaXZlcj1vcHRpb24KSTogIElm Iz0gMiBBbHQ9IDAgI0VQcz0gMyBDbHM9ZmYodmVuZC4pIFN1Yj1mZiBQcm90PWZmIERyaXZlcj1v cHRpb24KSTogIElmIz0gMyBBbHQ9IDAgI0VQcz0gMyBDbHM9ZmYodmVuZC4pIFN1Yj1mZiBQcm90 PWZmIERyaXZlcj1xbWlfd3dhbgpJOiAgSWYjPSA0IEFsdD0gMCAjRVBzPSAyIENscz0wOChzdG9y LikgU3ViPTA2IFByb3Q9NTAgRHJpdmVyPXVzYi1zdG9yYWdlCgpOb3cgYWxsIGltcG9ydGFudCB0 aGluZ3MgYXJlIHRoZXJlOgoKd3dwMHMyOWY3dTJpMyAobmV0KSwgdHR5VVNCMiAoYXQpLCBjZGMt d2RtMCAocW1pKSwgdHR5VVNCMSAoYXQpCgpUaGVyZSBpcyBhbHNvIHR0eVVTQjAsIGJ1dCBpdCBp cyBub3QgdXNhYmxlLCBhdCBsZWFzdCBub3QgZm9yIGF0LgoKVGhlIGRldmljZSB3b3JrcyB3ZWxs IHdpdGggcW1pIGFuZCBNb2RlbU1hbmFnZXItTmV0d29ya01hbmFnZXIuCiIKClJlcG9ydGVkLWJ5 OiBUaG9tYXMgU2Now6RmZXIgPHRzY2hhZWZlckB0LW9ubGluZS5kZT4KU2lnbmVkLW9mZi1ieTog QmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxl ciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYyB8 IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvdXNiL3FtaV93d2FuLmMgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYwppbmRleCBi OGE4MmI4Li4yNGY0N2ZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYwor KysgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYwpAQCAtNzY2LDYgKzc2Niw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBwcm9kdWN0c1tdID0gewogCXtRTUlfRklYRURf SU5URigweDIzNTcsIDB4OTAwMCwgNCl9LAkvKiBUUC1MSU5LIE1BMjYwICovCiAJe1FNSV9GSVhF RF9JTlRGKDB4MWJjNywgMHgxMjAwLCA1KX0sCS8qIFRlbGl0IExFOTIwICovCiAJe1FNSV9GSVhF RF9JTlRGKDB4MWJjNywgMHgxMjAxLCAyKX0sCS8qIFRlbGl0IExFOTIwICovCisJe1FNSV9GSVhF RF9JTlRGKDB4MWM5ZSwgMHg5YjAxLCAzKX0sCS8qIFhTIFN0aWNrIFcxMDAtMiBmcm9tIDRHIFN5 c3RlbXMgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgwYjNjLCAweGMwMDAsIDQpfSwJLyogT2xpdmV0 dGkgT2xpY2FyZCAxMDAgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgwYjNjLCAweGMwMDEsIDQpfSwJ LyogT2xpdmV0dGkgT2xpY2FyZCAxMjAgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgwYjNjLCAweGMw MDIsIDQpfSwJLyogT2xpdmV0dGkgT2xpY2FyZCAxNDAgKi8KLS0gCjIuNC4xCgoKRnJvbSBmNWNk YzdjMmU5MzVlOWExNTA4ZGMzZjNiMjA1ZTcxODBkZjVjZWE4IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IFdlZCwg MTggTm92IDIwMTUgMTI6NDA6MTMgLTA4MDAKU3ViamVjdDogW1BBVENIIDEzLzIzXSB0Y3A6IG1k NTogZml4IGxvY2tkZXAgYW5ub3RhdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgMWI4ZTZhMDFlMTlm MDAxZTlmOTNiMzljMzIzODc5NjFjOTFlZDNjYyBdCgpXaGVuIGEgcGFzc2l2ZSBUQ1AgaXMgY3Jl YXRlZCwgd2UgZXZlbnR1YWxseSBjYWxsIHRjcF9tZDVfZG9fYWRkKCkKd2l0aCBzayBwb2ludGlu ZyB0byB0aGUgY2hpbGQuIEl0IGlzIG5vdCBvd25lciBieSB0aGUgdXNlciB5ZXQgKHdlCndpbGwg YWRkIHRoaXMgc29ja2V0IGludG8gbGlzdGVuZXIgYWNjZXB0IHF1ZXVlIGEgYml0IGxhdGVyIGFu eXdheSkKCkJ1dCB3ZSBkbyBvd24gdGhlIHNwaW5sb2NrLCBzbyBhbWVuZCB0aGUgbG9ja2RlcCBh bm5vdGF0aW9uIHRvIGF2b2lkCmZvbGxvd2luZyBzcGxhdCA6CgpbIDg0NTEuMDkwOTMyXSBuZXQv aXB2NC90Y3BfaXB2NC5jOjkyMyBzdXNwaWNpb3VzIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQo KSB1c2FnZSEKWyA4NDUxLjA5MDkzMl0KWyA4NDUxLjA5MDkzMl0gb3RoZXIgaW5mbyB0aGF0IG1p Z2h0IGhlbHAgdXMgZGVidWcgdGhpczoKWyA4NDUxLjA5MDkzMl0KWyA4NDUxLjA5MDkzNF0KWyA4 NDUxLjA5MDkzNF0gcmN1X3NjaGVkdWxlcl9hY3RpdmUgPSAxLCBkZWJ1Z19sb2NrcyA9IDEKWyA4 NDUxLjA5MDkzNl0gMyBsb2NrcyBoZWxkIGJ5IHNvY2tldF9zb2Nrb3B0Xy8yMTQ3OTU6ClsgODQ1 MS4wOTA5MzZdICAjMDogIChyY3VfcmVhZF9sb2NrKXsuKy4rLi59LCBhdDogWzxmZmZmZmZmZjg1 NWM2YWMxPl0gX19uZXRpZl9yZWNlaXZlX3NrYl9jb3JlKzB4MTUxLzB4ZTkwClsgODQ1MS4wOTA5 NDddICAjMTogIChyY3VfcmVhZF9sb2NrKXsuKy4rLi59LCBhdDogWzxmZmZmZmZmZjg1NjE4MTQz Pl0gaXBfbG9jYWxfZGVsaXZlcl9maW5pc2grMHg0My8weDJiMApbIDg0NTEuMDkwOTUyXSAgIzI6 ICAoc2xvY2stQUZfSU5FVCl7Ky4tLi4ufSwgYXQ6IFs8ZmZmZmZmZmY4NTVhY2RhNT5dIHNrX2Ns b25lX2xvY2srMHgxYzUvMHg1MDAKWyA4NDUxLjA5MDk1OF0KWyA4NDUxLjA5MDk1OF0gc3RhY2sg YmFja3RyYWNlOgpbIDg0NTEuMDkwOTYwXSBDUFU6IDcgUElEOiAyMTQ3OTUgQ29tbTogc29ja2V0 X3NvY2tvcHRfCgpbIDg0NTEuMDkxMjE1XSBDYWxsIFRyYWNlOgpbIDg0NTEuMDkxMjE2XSAgPElS UT4gIFs8ZmZmZmZmZmY4NTZmYjI5Yz5dIGR1bXBfc3RhY2srMHg1NS8weDc2ClsgODQ1MS4wOTEy MjldICBbPGZmZmZmZmZmODUxMjNiNWI+XSBsb2NrZGVwX3JjdV9zdXNwaWNpb3VzKzB4ZWIvMHgx MTAKWyA4NDUxLjA5MTIzNV0gIFs8ZmZmZmZmZmY4NTY0NTQ0Zj5dIHRjcF9tZDVfZG9fYWRkKzB4 MWJmLzB4MWUwClsgODQ1MS4wOTEyMzldICBbPGZmZmZmZmZmODU2NDU3NTE+XSB0Y3BfdjRfc3lu X3JlY3Zfc29jaysweDFmMS8weDRjMApbIDg0NTEuMDkxMjQyXSAgWzxmZmZmZmZmZjg1NjQyYjI3 Pl0gPyB0Y3BfdjRfbWQ1X2hhc2hfc2tiKzB4MTY3LzB4MTkwClsgODQ1MS4wOTEyNDZdICBbPGZm ZmZmZmZmODU2NDdjNzg+XSB0Y3BfY2hlY2tfcmVxKzB4M2M4LzB4NTAwClsgODQ1MS4wOTEyNDld ICBbPGZmZmZmZmZmODU2NDUxYWU+XSA/IHRjcF92NF9pbmJvdW5kX21kNV9oYXNoKzB4MTFlLzB4 MTkwClsgODQ1MS4wOTEyNTNdICBbPGZmZmZmZmZmODU2NDcxNzA+XSB0Y3BfdjRfcmN2KzB4M2Mw LzB4OWYwClsgODQ1MS4wOTEyNTZdICBbPGZmZmZmZmZmODU2MTgxNDM+XSA/IGlwX2xvY2FsX2Rl bGl2ZXJfZmluaXNoKzB4NDMvMHgyYjAKWyA4NDUxLjA5MTI2MF0gIFs8ZmZmZmZmZmY4NTYxODFi Nj5dIGlwX2xvY2FsX2RlbGl2ZXJfZmluaXNoKzB4YjYvMHgyYjAKWyA4NDUxLjA5MTI2M10gIFs8 ZmZmZmZmZmY4NTYxODE0Mz5dID8gaXBfbG9jYWxfZGVsaXZlcl9maW5pc2grMHg0My8weDJiMApb IDg0NTEuMDkxMjY3XSAgWzxmZmZmZmZmZjg1NjE4ZDM4Pl0gaXBfbG9jYWxfZGVsaXZlcisweDQ4 LzB4ODAKWyA4NDUxLjA5MTI3MF0gIFs8ZmZmZmZmZmY4NTYxODUxMD5dIGlwX3Jjdl9maW5pc2gr MHgxNjAvMHg3MDAKWyA4NDUxLjA5MTI3M10gIFs8ZmZmZmZmZmY4NTYxOTAwZT5dIGlwX3Jjdisw eDI5ZS8weDNkMApbIDg0NTEuMDkxMjc3XSAgWzxmZmZmZmZmZjg1NWM3NGI3Pl0gX19uZXRpZl9y ZWNlaXZlX3NrYl9jb3JlKzB4YjQ3LzB4ZTkwCgpGaXhlczogYThhZmNhMDMyOTk4OCAoInRjcDog bWQ1OiBwcm90ZWN0cyBtZDVzaWdfaW5mbyB3aXRoIFJDVSIpClNpZ25lZC1vZmYtYnk6IEVyaWMg RHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KUmVwb3J0ZWQtYnk6IFdpbGxlbSBkZSBCcnVp am4gPHdpbGxlbWJAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxk YXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L3RjcF9pcHY0LmMgfCAzICsrLQogMSBm aWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jCmluZGV4IGE1ZmRmZTku LjZjZDlmNjkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMKKysrIGIvbmV0L2lwdjQv dGNwX2lwdjQuYwpAQCAtOTU5LDcgKzk1OSw4IEBAIGludCB0Y3BfbWQ1X2RvX2FkZChzdHJ1Y3Qg c29jayAqc2ssIGNvbnN0IHVuaW9uIHRjcF9tZDVfYWRkciAqYWRkciwKIAl9CiAKIAltZDVzaWcg PSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRwLT5tZDVzaWdfaW5mbywKLQkJCQkJICAgc29j a19vd25lZF9ieV91c2VyKHNrKSk7CisJCQkJCSAgIHNvY2tfb3duZWRfYnlfdXNlcihzaykgfHwK KwkJCQkJICAgbG9ja2RlcF9pc19oZWxkKCZzay0+c2tfbG9jay5zbG9jaykpOwogCWlmICghbWQ1 c2lnKSB7CiAJCW1kNXNpZyA9IGttYWxsb2Moc2l6ZW9mKCptZDVzaWcpLCBnZnApOwogCQlpZiAo IW1kNXNpZykKLS0gCjIuNC4xCgoKRnJvbSBlZTU2MzI0Y2U3NGQ1YjY2ZGYwYmY0NDcwMTYzNDcz MmRkYmQwOTU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVk dW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IFdlZCwgMTggTm92IDIwMTUgMjE6MDM6MzMgLTA4MDAK U3ViamVjdDogW1BBVENIIDE0LzIzXSB0Y3A6IGZpeCBwb3RlbnRpYWwgaHVnZSBrbWFsbG9jKCkg Y2FsbHMgaW4gVENQX1JFUEFJUgoKWyBVcHN0cmVhbSBjb21taXQgNWQ0YzliZmJhYmRiMWQ0OTdm MjFhZmQ4MTUwMWU1YzU0YjBjODVkOSBdCgp0Y3Bfc2VuZF9yY3ZxKCkgaXMgdXNlZCBmb3IgcmUt aW5qZWN0aW5nIGRhdGEgaW50byB0Y3AgcmVjZWl2ZSBxdWV1ZS4KClByb2JsZW1zIDoKCi0gTm8g Y2hlY2sgYWdhaW5zdCBzaXplIGlzIHBlcmZvcm1lZCwgYWxsb3dlZCB1c2VyIHRvIGZvb2wga2Vy bmVsIGluCiAgYXR0ZW1wdGluZyB2ZXJ5IGxhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucywgZXZlbnR1 YWxseSB0cmlnZ2VyaW5nCiAgT09NIHdoZW4gbWVtb3J5IGlzIGZyYWdtZW50ZWQuCgotIEluIGNh c2Ugb2YgZmF1bHQgZHVyaW5nIHRoZSBjb3B5IHdlIGRvIG5vdCByZXR1cm4gY29ycmVjdCBlcnJu by4KCkxldHMgdXNlIGFsbG9jX3NrYl93aXRoX2ZyYWdzKCkgdG8gY29vayBvcHRpbWFsIHNrYnMu CgpGaXhlczogMjkyZThkOGM4NTM4ICgidGNwOiBNb3ZlIHJjdnEgc2VuZGluZyB0byB0Y3BfaW5w dXQuYyIpCkZpeGVzOiBjMGU4OGZmMGYyNTYgKCJ0Y3A6IFJlcGFpciBzb2NrZXQgcXVldWVzIikK U2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpDYzogUGF2 ZWwgRW1lbHlhbm92IDx4ZW11bEBwYXJhbGxlbHMuY29tPgpBY2tlZC1ieTogUGF2ZWwgRW1lbHlh bm92IDx4ZW11bEBwYXJhbGxlbHMuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIg PGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjQvdGNwX2lucHV0LmMgfCAyMiArKysr KysrKysrKysrKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9pcHY0 L3RjcF9pbnB1dC5jCmluZGV4IDZmNDZjZGUuLmFhMTY3MTUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0 L3RjcF9pbnB1dC5jCisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCkBAIC00MzU2LDE5ICs0MzU2 LDM0IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIHRjcF9xdWV1ZV9yY3Yoc3RydWN0IHNvY2sg KnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQKIGludCB0Y3Bfc2VuZF9yY3ZxKHN0cnVjdCBz b2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3Qgc2tf YnVmZiAqc2tiOworCWludCBlcnIgPSAtRU5PTUVNOworCWludCBkYXRhX2xlbiA9IDA7CiAJYm9v bCBmcmFnc3RvbGVuOwogCiAJaWYgKHNpemUgPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQlza2IgPSBh bGxvY19za2Ioc2l6ZSwgc2stPnNrX2FsbG9jYXRpb24pOworCWlmIChzaXplID4gUEFHRV9TSVpF KSB7CisJCWludCBucGFnZXMgPSBtaW5fdChzaXplX3QsIHNpemUgPj4gUEFHRV9TSElGVCwgTUFY X1NLQl9GUkFHUyk7CisKKwkJZGF0YV9sZW4gPSBucGFnZXMgPDwgUEFHRV9TSElGVDsKKwkJc2l6 ZSA9IGRhdGFfbGVuICsgKHNpemUgJiB+UEFHRV9NQVNLKTsKKwl9CisJc2tiID0gYWxsb2Nfc2ti X3dpdGhfZnJhZ3Moc2l6ZSAtIGRhdGFfbGVuLCBkYXRhX2xlbiwKKwkJCQkgICBQQUdFX0FMTE9D X0NPU1RMWV9PUkRFUiwKKwkJCQkgICAmZXJyLCBzay0+c2tfYWxsb2NhdGlvbik7CiAJaWYgKCFz a2IpCiAJCWdvdG8gZXJyOwogCisJc2tiX3B1dChza2IsIHNpemUgLSBkYXRhX2xlbik7CisJc2ti LT5kYXRhX2xlbiA9IGRhdGFfbGVuOworCXNrYi0+bGVuID0gc2l6ZTsKKwogCWlmICh0Y3BfdHJ5 X3JtZW1fc2NoZWR1bGUoc2ssIHNrYiwgc2tiLT50cnVlc2l6ZSkpCiAJCWdvdG8gZXJyX2ZyZWU7 CiAKLQlpZiAobWVtY3B5X2Zyb21pb3ZlYyhza2JfcHV0KHNrYiwgc2l6ZSksIG1zZy0+bXNnX2lv diwgc2l6ZSkpCisJZXJyID0gc2tiX2NvcHlfZGF0YWdyYW1faW92ZWMoc2tiLCAwLCBtc2ctPm1z Z19pb3YsIHNpemUpOworCWlmIChlcnIpCiAJCWdvdG8gZXJyX2ZyZWU7CiAKIAlUQ1BfU0tCX0NC KHNrYiktPnNlcSA9IHRjcF9zayhzayktPnJjdl9ueHQ7CkBAIC00Mzg0LDcgKzQzOTksOCBAQCBp bnQgdGNwX3NlbmRfcmN2cShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6 ZV90IHNpemUpCiBlcnJfZnJlZToKIAlrZnJlZV9za2Ioc2tiKTsKIGVycjoKLQlyZXR1cm4gLUVO T01FTTsKKwlyZXR1cm4gZXJyOworCiB9CiAKIHN0YXRpYyB2b2lkIHRjcF9kYXRhX3F1ZXVlKHN0 cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKLS0gCjIuNC4xCgoKRnJvbSBmNTJm NDY5MmM2Y2Y1ZjM1MjNjODE0MjEwNmUzOWU0ZDE4MjkyZDM2IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IFRodSwg MjYgTm92IDIwMTUgMDg6MTg6MTQgLTA4MDAKU3ViamVjdDogW1BBVENIIDE1LzIzXSB0Y3A6IGlu aXRpYWxpemUgdHAtPmNvcGllZF9zZXEgaW4gY2FzZSBvZiBjcm9zcyBTWU4KIGNvbm5lY3Rpb24K ClsgVXBzdHJlYW0gY29tbWl0IDE0MmEyZTdlY2U4ZDhhYzBlODE4ZWIyYzkxZjk5Y2E4OTQ3MzBl MmEgXQoKRG1pdHJ5IHByb3ZpZGVkIGEgc3l6a2FsbGVyIChodHRwOi8vZ2l0aHViLmNvbS9nb29n bGUvc3l6a2FsbGVyKQpnZW5lcmF0ZWQgcHJvZ3JhbSB0aGF0IHRyaWdnZXJzIHRoZSBXQVJOSU5H IGF0Cm5ldC9pcHY0L3RjcC5jOjE3MjkgaW4gdGNwX3JlY3Ztc2coKSA6CgpXQVJOX09OKHRwLT5j b3BpZWRfc2VxICE9IHRwLT5yY3Zfbnh0ICYmCiAgICAgICAgIShmbGFncyAmIChNU0dfUEVFSyB8 IE1TR19UUlVOQykpKTsKCkhpcyBwcm9ncmFtIGlzIHNwZWNpZmljYWxseSBhdHRlbXB0aW5nIGEg Q3Jvc3MgU1lOIFRDUCBleGNoYW5nZSwKdGhhdCB3ZSBzdXBwb3J0IChmb3IgdGhlIHBsZWFzdXJl IG9mIGhhY2tlcnMgPyksIGJ1dCBpdCBsb29rcyB3ZQpsYWNrIHByb3BlciB0Y3AtPmNvcGllZF9z ZXEgaW5pdGlhbGl6YXRpb24uCgpUaGFua3MgYWdhaW4gRG1pdHJ5IGZvciB5b3VyIHJlcG9ydCBh bmQgdGVzdGluZ3MuCgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2ds ZS5jb20+ClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+ClRl c3RlZC1ieTogRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjQvdGNw X2lucHV0LmMgfCAxICsKIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQoKZGlmZiAtLWdp dCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKaW5kZXggYWEx NjcxNS4uMGM5NjA1NSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmMKKysrIGIvbmV0 L2lwdjQvdGNwX2lucHV0LmMKQEAgLTU1NDAsNiArNTU0MCw3IEBAIGRpc2NhcmQ6CiAJCX0KIAog CQl0cC0+cmN2X254dCA9IFRDUF9TS0JfQ0Ioc2tiKS0+c2VxICsgMTsKKwkJdHAtPmNvcGllZF9z ZXEgPSB0cC0+cmN2X254dDsKIAkJdHAtPnJjdl93dXAgPSBUQ1BfU0tCX0NCKHNrYiktPnNlcSAr IDE7CiAKIAkJLyogUkZDMTMyMzogVGhlIHdpbmRvdyBpbiBTWU4gJiBTWU4vQUNLIHNlZ21lbnRz IGlzCi0tIAoyLjQuMQoKCkZyb20gMWQyNmE1MTk3YzEwZWE0MTk1MjRmYTczMWU0NTYzOThlOTlj ZWE0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGFuaWVsIEJvcmttYW5uIDxkYW5p ZWxAaW9nZWFyYm94Lm5ldD4KRGF0ZTogRnJpLCAyMCBOb3YgMjAxNSAwMDoxMTo1NiArMDEwMApT dWJqZWN0OiBbUEFUQ0ggMTYvMjNdIG5ldCwgc2NtOiBmaXggUGFYIGRldGVjdGVkIG1zZ19jb250 cm9sbGVuIG92ZXJmbG93IGluCiBzY21fZGV0YWNoX2ZkcwoKWyBVcHN0cmVhbSBjb21taXQgNjkw MDMxN2Y1ZWZmMGE3MDcwYzU5MzZlNTM4M2Y1ODllMGRlN2EwOSBdCgpEYXZpZCBhbmQgSGFjS3Vy eCByZXBvcnRlZCBhIGZvbGxvd2luZy9zaW1pbGFyIHNpemUgb3ZlcmZsb3cgdHJpZ2dlcmVkCmlu IGEgZ3JzZWN1cml0eSBrZXJuZWwsIHRoYW5rcyB0byBQYVgncyBnY2Mgc2l6ZSBvdmVyZmxvdyBw bHVnaW46CgooQWxyZWFkeSBmaXhlZCBpbiBsYXRlciBncnNlY3VyaXR5IHZlcnNpb25zIGJ5IEJy YWQgYW5kIFBhWCBUZWFtLikKClsgMTAwMi4yOTYxMzddIFBBWDogc2l6ZSBvdmVyZmxvdyBkZXRl Y3RlZCBpbiBmdW5jdGlvbiBzY21fZGV0YWNoX2ZkcyBuZXQvY29yZS9zY20uYzozMTQKICAgICAg ICAgICAgICAgY2ljdXMuMjAyXzEyNyBtaW4sIGNvdW50OiA0LCBkZWNsOiBtc2dfY29udHJvbGxl bjsgbnVtOiAwOyBjb250ZXh0OiBtc2doZHI7ClsgMTAwMi4yOTYxNDVdIENQVTogMCBQSUQ6IDM2 ODUgQ29tbTogc2NtX3JpZ2h0c19yZWN2IE5vdCB0YWludGVkIDQuMi4zLWdyc2VjKyAjNwpbIDEw MDIuMjk2MTQ5XSBIYXJkd2FyZSBuYW1lOiBBcHBsZSBJbmMuIE1hY0Jvb2tBaXI1LDEvTWFjLTY2 RjM1RjE5RkUyQTBEMDUsIFsuLi5dClsgMTAwMi4yOTYxNTNdICBmZmZmZmZmZjgxYzI3MzY2IDAw MDAwMDAwMDAwMDAwMDAgZmZmZmZmZmY4MWMyNzM3NSBmZmZmYzkwMDA3ODQzYWE4ClsgMTAwMi4y OTYxNjJdICBmZmZmZmZmZjgxODEyOWJhIDAwMDAwMDAwMDAwMDAwMDAgZmZmZmZmZmY4MWMyNzM2 NiBmZmZmYzkwMDA3ODQzYWQ4ClsgMTAwMi4yOTYxNjldICBmZmZmZmZmZjgxMjFmODM4IGZmZmZm ZmZmZmZmZmZmZmMgZmZmZmZmZmZmZmZmZmZmYyBmZmZmYzkwMDA3ODQzZTYwClsgMTAwMi4yOTYx NzZdIENhbGwgVHJhY2U6ClsgMTAwMi4yOTYxOTBdICBbPGZmZmZmZmZmODE4MTI5YmE+XSBkdW1w X3N0YWNrKzB4NDUvMHg1NwpbIDEwMDIuMjk2MjAwXSAgWzxmZmZmZmZmZjgxMjFmODM4Pl0gcmVw b3J0X3NpemVfb3ZlcmZsb3crMHgzOC8weDYwClsgMTAwMi4yOTYyMDldICBbPGZmZmZmZmZmODE2 YTk3OWU+XSBzY21fZGV0YWNoX2ZkcysweDJjZS8weDMwMApbIDEwMDIuMjk2MjIwXSAgWzxmZmZm ZmZmZjgxNzkxODk5Pl0gdW5peF9zdHJlYW1fcmVhZF9nZW5lcmljKzB4NjA5LzB4OTMwClsgMTAw Mi4yOTYyMjhdICBbPGZmZmZmZmZmODE3OTFjOWY+XSB1bml4X3N0cmVhbV9yZWN2bXNnKzB4NGYv MHg2MApbIDEwMDIuMjk2MjM2XSAgWzxmZmZmZmZmZjgxNzhkYzAwPl0gPyB1bml4X3NldF9wZWVr X29mZisweDUwLzB4NTAKWyAxMDAyLjI5NjI0M10gIFs8ZmZmZmZmZmY4MTY4ZmFjNz5dIHNvY2tf cmVjdm1zZysweDQ3LzB4NjAKWyAxMDAyLjI5NjI0OF0gIFs8ZmZmZmZmZmY4MTY5MTUyMj5dIF9f X3N5c19yZWN2bXNnKzB4ZTIvMHgxZTAKWyAxMDAyLjI5NjI1N10gIFs8ZmZmZmZmZmY4MTY5MzQ5 Nj5dIF9fc3lzX3JlY3Ztc2crMHg0Ni8weDgwClsgMTAwMi4yOTYyNjNdICBbPGZmZmZmZmZmODE2 OTM0ZmM+XSBTeVNfcmVjdm1zZysweDJjLzB4NDAKWyAxMDAyLjI5NjI3MV0gIFs8ZmZmZmZmZmY4 MTgxYTNhYj5dIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGgrMHgxMi8weDg1CgpGdXJ0aGVyIGlu dmVzdGlnYXRpb24gc2hvd2VkIHRoYXQgdGhpcyBjYW4gaGFwcGVuIHdoZW4gYW4gKm9kZCogbnVt YmVyIG9mCmZkcyBhcmUgYmVpbmcgcGFzc2VkIG92ZXIgQUZfVU5JWCBzb2NrZXRzLgoKSW4gdGhl c2UgY2FzZXMgQ01TR19MRU4oaSAqIHNpemVvZihpbnQpKSBhbmQgQ01TR19TUEFDRShpICogc2l6 ZW9mKGludCkpLAp3aGVyZSBpIGlzIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bGx5IHBhc3NlZCBm ZHMsIGRpZmZlciBieSA0IGJ5dGVzIGR1ZQp0byB0aGUgZXh0cmEgQ01TR19BTElHTigpIHBhZGRp bmcgaW4gQ01TR19TUEFDRSgpIHRvIGFuIDggYnl0ZSBib3VuZGFyeQpvbiA2NCBiaXQuIFRoZSBw YWRkaW5nIGlzIHVzZWQgdG8gYWxpZ24gc3Vic2VxdWVudCBjbXNnIGhlYWRlcnMgaW4gdGhlCmNv bnRyb2wgYnVmZmVyLgoKV2hlbiB0aGUgY29udHJvbCBidWZmZXIgcGFzc2VkIGluIGZyb20gdGhl IHJlY2VpdmVyIHNpZGUgKmxhY2tzKiB0aGVzZSA0CmJ5dGVzIChlLmcuIGR1ZSB0byBidWdneS93 cm9uZyBBUEkgdXNhZ2UpLCB0aGVuIG1zZy0+bXNnX2NvbnRyb2xsZW4gd2lsbApvdmVyZmxvdyBp biBzY21fZGV0YWNoX2ZkcygpOgoKICBpbnQgY21sZW4gPSBDTVNHX0xFTihpICogc2l6ZW9mKGlu dCkpOyAgPC0tLSBjbWxlbiB3L28gdGFpbC1wYWRkaW5nCiAgZXJyID0gcHV0X3VzZXIoU09MX1NP Q0tFVCwgJmNtLT5jbXNnX2xldmVsKTsKICBpZiAoIWVycikKICAgIGVyciA9IHB1dF91c2VyKFND TV9SSUdIVFMsICZjbS0+Y21zZ190eXBlKTsKICBpZiAoIWVycikKICAgIGVyciA9IHB1dF91c2Vy KGNtbGVuLCAmY20tPmNtc2dfbGVuKTsKICBpZiAoIWVycikgewogICAgY21sZW4gPSBDTVNHX1NQ QUNFKGkgKiBzaXplb2YoaW50KSk7ICA8LS0tIGNtbGVuIHcvIDQgYnl0ZSBleHRyYSB0YWlsLXBh ZGRpbmcKICAgIG1zZy0+bXNnX2NvbnRyb2wgKz0gY21sZW47CiAgICBtc2ctPm1zZ19jb250cm9s bGVuIC09IGNtbGVuOyAgICAgICAgIDwtLS0gaWZmIG5vIHRhaWwtcGFkZGluZyBzcGFjZSBoZXJl IC4uLgogIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiB3 cmFwLWFyb3VuZAoKRi5lLiBpdCB3aWxsIHdyYXAgdG8gYSBsZW5ndGggb2YgMTg0NDY3NDQwNzM3 MDk1NTE2MTIgYnl0ZXMgaW4gY2FzZSB0aGUKcmVjZWl2ZXIgcGFzc2VkIGluIG1zZy0+bXNnX2Nv bnRyb2xsZW4gb2YgMjAgYnl0ZXMsIGFuZCB0aGUgc2VuZGVyCnByb3Blcmx5IHRyYW5zZmVycmVk IDEgZmQgdG8gdGhlIHJlY2VpdmVyLCBzbyB0aGF0IGl0cyBDTVNHX0xFTiByZXN1bHRzCmluIDIw IGJ5dGVzIGFuZCBDTVNHX1NQQUNFIGluIDI0IGJ5dGVzLgoKSW4gY2FzZSBvZiBNU0dfQ01TR19D T01QQVQgKHNjbV9kZXRhY2hfZmRzX2NvbXBhdCgpKSwgSSBoYXZlbid0IHNlZW4gYW4KaXNzdWUg aW4gbXkgdGVzdHMgYXMgYWxpZ25tZW50IHNlZW1zIGFsd2F5cyBvbiA0IGJ5dGUgYm91bmRhcnku IFNhbWUKc2hvdWxkIGJlIGluIGNhc2Ugb2YgbmF0aXZlIDMyIGJpdCwgd2hlcmUgd2UgZW5kIHVw IHdpdGggNCBieXRlIGJvdW5kYXJpZXMKYXMgd2VsbC4KCkluIHByYWN0aWNlLCBwYXNzaW5nIG1z Zy0+bXNnX2NvbnRyb2xsZW4gb2YgMjAgdG8gcmVjdm1zZygpIHdoaWxlIHJlY2VpdmluZwphIHNp bmdsZSBmZCB3b3VsZCBtZWFuIHRoYXQgb24gc3VjY2Vzc2Z1bCByZXR1cm4sIG1zZy0+bXNnX2Nv bnRyb2xsZW4gaXMKYmVpbmcgc2V0IGJ5IHRoZSBrZXJuZWwgdG8gMjQgYnl0ZXMgaW5zdGVhZCwg dGh1cyBtb3JlIHRoYW4gdGhlIGlucHV0CmJ1ZmZlciBhZHZlcnRpc2VkLiBJdCBjb3VsZCBmLmUu IGJlY29tZSBhbiBpc3N1ZSBpZiBzdWNoIGFwcGxpY2F0aW9uIGxhdGVyCm9uIHplcm9lcyBvciBj b3BpZXMgdGhlIGNvbnRyb2wgYnVmZmVyIGJhc2VkIG9uIHRoZSByZXR1cm5lZCBtc2ctPm1zZ19j b250cm9sbGVuCmVsc2V3aGVyZS4KCk1heGltdW0gbnVtYmVyIG9mIGZkcyB3ZSBjYW4gc2VuZCBp cyBhIGhhcmQgdXBwZXIgbGltaXQgU0NNX01BWF9GRCAoMjUzKS4KCkdvaW5nIG92ZXIgdGhlIGNv ZGUsIGl0IHNlZW1zIGxpa2UgbXNnLT5tc2dfY29udHJvbGxlbiBpcyBub3QgYmVpbmcgcmVhZAph ZnRlciBzY21fZGV0YWNoX2ZkcygpIGluIHNjbV9yZWN2KCkgYW55bW9yZSBieSB0aGUga2VybmVs LCBnb29kIQoKUmVsZXZhbnQgcmVjdm1zZygpIGhhbmRsZXIgYXJlIHVuaXhfZGdyYW1fcmVjdm1z ZygpICh1bml4X3NlcXBhY2tldF9yZWN2bXNnKCkpCmFuZCB1bml4X3N0cmVhbV9yZWN2bXNnKCku IEJvdGggcmV0dXJuIGJhY2sgdG8gdGhlaXIgcmVjdm1zZygpIGNhbGxlciwKYW5kIF9fX3N5c19y ZWN2bXNnKCkgcGxhY2VzIHRoZSB1cGRhdGVkIGxlbmd0aCwgdGhhdCBpcywgbmV3IG1zZ19jb250 cm9sIC0Kb2xkIG1zZ19jb250cm9sIHBvaW50ZXIgaW50byBtc2ctPm1zZ19jb250cm9sbGVuICho ZW5jZSB0aGUgMjQgYnl0ZXMgc2VlbgppbiB0aGUgZXhhbXBsZSkuCgpMb25nIHRpbWUgYWdvLCBX ZWkgWW9uZ2p1biBmaXhlZCBzb21ldGhpbmcgcmVsYXRlZCBpbiBjb21taXQgMWFjNzBlN2FkMjRh CigiW05FVF06IEZpeCBmdW5jdGlvbiBwdXRfY21zZygpIHdoaWNoIG1heSBjYXVzZSB1c3IgYXBw bGljYXRpb24gbWVtb3J5Cm92ZXJmbG93IikuCgpSRkMzNTQyLCBzZWN0aW9uIDIwLjIuIHNheXM6 CgogIFRoZSBmaWVsZHMgc2hvd24gYXMgIlhYIiBhcmUgcG9zc2libGUgcGFkZGluZywgYmV0d2Vl biB0aGUgY21zZ2hkcgogIHN0cnVjdHVyZSBhbmQgdGhlIGRhdGEsIGFuZCBiZXR3ZWVuIHRoZSBk YXRhIGFuZCB0aGUgbmV4dCBjbXNnaGRyCiAgc3RydWN0dXJlLCBpZiByZXF1aXJlZCBieSB0aGUg aW1wbGVtZW50YXRpb24uIFdoaWxlIHNlbmRpbmcgYW4KICBhcHBsaWNhdGlvbiBtYXkgb3IgbWF5 IG5vdCBpbmNsdWRlIHBhZGRpbmcgYXQgdGhlIGVuZCBvZiBsYXN0CiAgYW5jaWxsYXJ5IGRhdGEg aW4gbXNnX2NvbnRyb2xsZW4gYW5kIGltcGxlbWVudGF0aW9ucyBtdXN0IGFjY2VwdCBib3RoCiAg YXMgdmFsaWQuIE9uIHJlY2VpdmluZyBhIHBvcnRhYmxlIGFwcGxpY2F0aW9uIG11c3QgcHJvdmlk ZSBzcGFjZSBmb3IKICBwYWRkaW5nIGF0IHRoZSBlbmQgb2YgdGhlIGxhc3QgYW5jaWxsYXJ5IGRh dGEgYXMgaW1wbGVtZW50YXRpb25zIG1heQogIGNvcHkgb3V0IHRoZSBwYWRkaW5nIGF0IHRoZSBl bmQgb2YgdGhlIGNvbnRyb2wgbWVzc2FnZSBidWZmZXIgYW5kCiAgaW5jbHVkZSBpdCBpbiB0aGUg cmVjZWl2ZWQgbXNnX2NvbnRyb2xsZW4uIFdoZW4gcmVjdm1zZygpIGlzIGNhbGxlZAogIGlmIG1z Z19jb250cm9sbGVuIGlzIHRvbyBzbWFsbCBmb3IgYWxsIHRoZSBhbmNpbGxhcnkgZGF0YSBpdGVt cwogIGluY2x1ZGluZyBhbnkgdHJhaWxpbmcgcGFkZGluZyBhZnRlciB0aGUgbGFzdCBpdGVtIGFu IGltcGxlbWVudGF0aW9uCiAgbWF5IHNldCBNU0dfQ1RSVU5DLgoKU2luY2Ugd2UgZGlkbid0IHBs YWNlIE1TR19DVFJVTkMgZm9yIGFscmVhZHkgcXVpdGUgYSBsb25nIHRpbWUsIGp1c3QgZG8KdGhl IHNhbWUgYXMgaW4gMWFjNzBlN2FkMjRhIHRvIGF2b2lkIGFuIG92ZXJmbG93LgoKQnR3LCBldmVu IG1hbi1wYWdlIGF1dGhvciBnb3QgdGhpcyB3cm9uZyA6LyBTZWUgZGI5MzljOWIyNmU5ICgiY21z Zy4zOiBGaXgKZXJyb3IgaW4gU0NNX1JJR0hUUyBjb2RlIHNhbXBsZSIpLiBTb21lIHBlb3BsZSBt dXN0IGhhdmUgY29waWVkIHRoaXMgKD8pLAp0aHVzIGl0IGdvdCB0cmlnZ2VyZWQgaW4gdGhlIHdp bGQgKHJlcG9ydGVkIHNldmVyYWwgdGltZXMgZHVyaW5nIGJvb3QgYnkKRGF2aWQgYW5kIEhhY0t1 cngpLgoKTm8gRml4ZXMgdGFnIHRoaXMgdGltZSBhcyBwcmUgMjAwMiAodGhhdCBpcywgcHJlIGhp c3RvcnkgdHJlZSkuCgpSZXBvcnRlZC1ieTogRGF2aWQgU3RlcmJhIDxkYXZlQGppa29zLmN6PgpS ZXBvcnRlZC1ieTogSGFjS3VyeCA8aGFja3VyeEBnbWFpbC5jb20+CkNjOiBQYVggVGVhbSA8cGFn ZWV4ZWNAZnJlZW1haWwuaHU+CkNjOiBFbWVzZSBSZXZmeSA8cmUuZW1lc2VAZ21haWwuY29tPgpD YzogQnJhZCBTcGVuZ2xlciA8c3BlbmRlckBncnNlY3VyaXR5Lm5ldD4KQ2M6IFdlaSBZb25nanVu IDx5b25nanVuX3dlaUB0cmVuZG1pY3JvLmNvbS5jbj4KQ2M6IEVyaWMgRHVtYXpldCA8ZWR1bWF6 ZXRAZ29vZ2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNA c3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5p ZWxAaW9nZWFyYm94Lm5ldD4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBk YXZlbWxvZnQubmV0PgotLS0KIG5ldC9jb3JlL3NjbS5jIHwgMiArKwogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NjbS5jIGIvbmV0L2NvcmUv c2NtLmMKaW5kZXggYjQ0MmU3ZS4uZDMwZWIwNSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc2NtLmMK KysrIGIvbmV0L2NvcmUvc2NtLmMKQEAgLTMwNiw2ICszMDYsOCBAQCB2b2lkIHNjbV9kZXRhY2hf ZmRzKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNjbV9jb29raWUgKnNjbSkKIAkJCWVyciA9 IHB1dF91c2VyKGNtbGVuLCAmY20tPmNtc2dfbGVuKTsKIAkJaWYgKCFlcnIpIHsKIAkJCWNtbGVu ID0gQ01TR19TUEFDRShpKnNpemVvZihpbnQpKTsKKwkJCWlmIChtc2ctPm1zZ19jb250cm9sbGVu IDwgY21sZW4pCisJCQkJY21sZW4gPSBtc2ctPm1zZ19jb250cm9sbGVuOwogCQkJbXNnLT5tc2df Y29udHJvbCArPSBjbWxlbjsKIAkJCW1zZy0+bXNnX2NvbnRyb2xsZW4gLT0gY21sZW47CiAJCX0K LS0gCjIuNC4xCgoKRnJvbSA1MDY5Y2UzMWIxZDg0ZmUxMDc4YTM3NWQ5NjQwYWZhYWQ5Y2E1MjM5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtvbGF5IEFsZWtzYW5kcm92IDxuaWtv bGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+CkRhdGU6IEZyaSwgMjAgTm92IDIwMTUgMTM6NTQ6MTkg KzAxMDAKU3ViamVjdDogW1BBVENIIDE3LzIzXSBuZXQ6IGlwbXI6IGZpeCBzdGF0aWMgbWZjL2Rl diBsZWFrcyBvbiB0YWJsZQogZGVzdHJ1Y3Rpb24KClsgVXBzdHJlYW0gY29tbWl0IDBlNjE1ZTk2 MDFhMTVlZmVlYjg5NDJjZjdjZDRkYWRiYTBjOGM1YTcgXQoKV2hlbiBkZXN0cm95aW5nIGFuIG1y dCB0YWJsZSB0aGUgc3RhdGljIG1mYyBlbnRyaWVzIGFuZCB0aGUgc3RhdGljCmRldmljZXMgYXJl IGtlcHQsIHdoaWNoIGxlYWRzIHRvIGRldmljZXMgdGhhdCBjYW4gbmV2ZXIgYmUgZGVzdHJveWVk CihiZWNhdXNlIG9mIHJlZmNudCB0YWtlbikgYW5kIGxlYWtlZCBtZW1vcnksIGZvciBleGFtcGxl Ogp1bnJlZmVyZW5jZWQgb2JqZWN0IDB4ZmZmZjg4MDAzNGMxNDRjMCAoc2l6ZSAxOTIpOgogIGNv bW0gIm1mYy1icm9rZW4iLCBwaWQgNDc3NywgamlmZmllcyA0MzIwMzQ5MDU1IChhZ2UgNDYwMDEu OTY0cykKICBoZXggZHVtcCAoZmlyc3QgMzIgYnl0ZXMpOgogICAgOTggNTMgZjAgMzQgMDAgODgg ZmYgZmYgOTggNTMgZjAgMzQgMDAgODggZmYgZmYgIC5TLjQuLi4uLlMuNC4uLi4KICAgIGVmIDBh IDBhIDE0IDAxIDAyIDAzIDA0IDAwIDAwIDAwIDAwIDAxIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4u Li4uCiAgYmFja3RyYWNlOgogICAgWzxmZmZmZmZmZjgxNWMxYjllPl0ga21lbWxlYWtfYWxsb2Mr MHg0ZS8weGIwCiAgICBbPGZmZmZmZmZmODExZWE2ZTA+XSBrbWVtX2NhY2hlX2FsbG9jKzB4MTkw LzB4MzAwCiAgICBbPGZmZmZmZmZmODE1OTMxY2I+XSBpcF9tcm91dGVfc2V0c29ja29wdCsweDVj Yi8weDkxMAogICAgWzxmZmZmZmZmZjgxNTNkNTc1Pl0gZG9faXBfc2V0c29ja29wdC5pc3JhLjEx KzB4MTA1LzB4ZmYwCiAgICBbPGZmZmZmZmZmODE1M2U0OTA+XSBpcF9zZXRzb2Nrb3B0KzB4MzAv MHhhMAogICAgWzxmZmZmZmZmZjgxNTY0ZTEzPl0gcmF3X3NldHNvY2tvcHQrMHgzMy8weDkwCiAg ICBbPGZmZmZmZmZmODE0ZDFlMTQ+XSBzb2NrX2NvbW1vbl9zZXRzb2Nrb3B0KzB4MTQvMHgyMAog ICAgWzxmZmZmZmZmZjgxNGQwYjUxPl0gU3lTX3NldHNvY2tvcHQrMHg3MS8weGMwCiAgICBbPGZm ZmZmZmZmODE1Y2RiZjY+XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4MTYvMHg3YQogICAg WzxmZmZmZmZmZmZmZmZmZmZmPl0gMHhmZmZmZmZmZmZmZmZmZmZmCgpNYWtlIHN1cmUgdGhhdCBl dmVyeXRoaW5nIGlzIGNsZWFuZWQgb24gbmV0bnMgZGVzdHJ1Y3Rpb24uCgpTaWduZWQtb2ZmLWJ5 OiBOaWtvbGF5IEFsZWtzYW5kcm92IDxuaWtvbGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+ClJldmll d2VkLWJ5OiBDb25nIFdhbmcgPGN3YW5nQHR3b3BlbnNvdXJjZS5jb20+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2NC9pcG1y LmMgfCAxNSArKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyks IDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBtci5jIGIvbmV0L2lwdjQv aXBtci5jCmluZGV4IGM4MDM0NTguLmFiYzdkYmQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwbXIu YworKysgYi9uZXQvaXB2NC9pcG1yLmMKQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgaW50IF9f aXBtcl9maWxsX21yb3V0ZShzdHJ1Y3QgbXJfdGFibGUgKm1ydCwgc3RydWN0IHNrX2J1ZmYgKnNr YiwKIAkJCSAgICAgIHN0cnVjdCBtZmNfY2FjaGUgKmMsIHN0cnVjdCBydG1zZyAqcnRtKTsKIHN0 YXRpYyB2b2lkIG1yb3V0ZV9uZXRsaW5rX2V2ZW50KHN0cnVjdCBtcl90YWJsZSAqbXJ0LCBzdHJ1 Y3QgbWZjX2NhY2hlICptZmMsCiAJCQkJIGludCBjbWQpOwotc3RhdGljIHZvaWQgbXJvdXRlX2Ns ZWFuX3RhYmxlcyhzdHJ1Y3QgbXJfdGFibGUgKm1ydCk7CitzdGF0aWMgdm9pZCBtcm91dGVfY2xl YW5fdGFibGVzKHN0cnVjdCBtcl90YWJsZSAqbXJ0LCBib29sIGFsbCk7CiBzdGF0aWMgdm9pZCBp cG1yX2V4cGlyZV9wcm9jZXNzKHVuc2lnbmVkIGxvbmcgYXJnKTsKIAogI2lmZGVmIENPTkZJR19J UF9NUk9VVEVfTVVMVElQTEVfVEFCTEVTCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIHN0cnVj dCBtcl90YWJsZSAqaXBtcl9uZXdfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpCiBzdGF0 aWMgdm9pZCBpcG1yX2ZyZWVfdGFibGUoc3RydWN0IG1yX3RhYmxlICptcnQpCiB7CiAJZGVsX3Rp bWVyX3N5bmMoJm1ydC0+aXBtcl9leHBpcmVfdGltZXIpOwotCW1yb3V0ZV9jbGVhbl90YWJsZXMo bXJ0KTsKKwltcm91dGVfY2xlYW5fdGFibGVzKG1ydCwgdHJ1ZSk7CiAJa2ZyZWUobXJ0KTsKIH0K IApAQCAtMTIwMSw3ICsxMjAxLDcgQEAgc3RhdGljIGludCBpcG1yX21mY19hZGQoc3RydWN0IG5l dCAqbmV0LCBzdHJ1Y3QgbXJfdGFibGUgKm1ydCwKICAqCUNsb3NlIHRoZSBtdWx0aWNhc3Qgc29j a2V0LCBhbmQgY2xlYXIgdGhlIHZpZiB0YWJsZXMgZXRjCiAgKi8KIAotc3RhdGljIHZvaWQgbXJv dXRlX2NsZWFuX3RhYmxlcyhzdHJ1Y3QgbXJfdGFibGUgKm1ydCkKK3N0YXRpYyB2b2lkIG1yb3V0 ZV9jbGVhbl90YWJsZXMoc3RydWN0IG1yX3RhYmxlICptcnQsIGJvb2wgYWxsKQogewogCWludCBp OwogCUxJU1RfSEVBRChsaXN0KTsKQEAgLTEyMTAsOCArMTIxMCw5IEBAIHN0YXRpYyB2b2lkIG1y b3V0ZV9jbGVhbl90YWJsZXMoc3RydWN0IG1yX3RhYmxlICptcnQpCiAJLyogU2h1dCBkb3duIGFs bCBhY3RpdmUgdmlmIGVudHJpZXMgKi8KIAogCWZvciAoaSA9IDA7IGkgPCBtcnQtPm1heHZpZjsg aSsrKSB7Ci0JCWlmICghKG1ydC0+dmlmX3RhYmxlW2ldLmZsYWdzICYgVklGRl9TVEFUSUMpKQot CQkJdmlmX2RlbGV0ZShtcnQsIGksIDAsICZsaXN0KTsKKwkJaWYgKCFhbGwgJiYgKG1ydC0+dmlm X3RhYmxlW2ldLmZsYWdzICYgVklGRl9TVEFUSUMpKQorCQkJY29udGludWU7CisJCXZpZl9kZWxl dGUobXJ0LCBpLCAwLCAmbGlzdCk7CiAJfQogCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmxp c3QpOwogCkBAIC0xMjE5LDcgKzEyMjAsNyBAQCBzdGF0aWMgdm9pZCBtcm91dGVfY2xlYW5fdGFi bGVzKHN0cnVjdCBtcl90YWJsZSAqbXJ0KQogCiAJZm9yIChpID0gMDsgaSA8IE1GQ19MSU5FUzsg aSsrKSB7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjLCBuZXh0LCAmbXJ0LT5tZmNfY2Fj aGVfYXJyYXlbaV0sIGxpc3QpIHsKLQkJCWlmIChjLT5tZmNfZmxhZ3MgJiBNRkNfU1RBVElDKQor CQkJaWYgKCFhbGwgJiYgKGMtPm1mY19mbGFncyAmIE1GQ19TVEFUSUMpKQogCQkJCWNvbnRpbnVl OwogCQkJbGlzdF9kZWxfcmN1KCZjLT5saXN0KTsKIAkJCW1yb3V0ZV9uZXRsaW5rX2V2ZW50KG1y dCwgYywgUlRNX0RFTFJPVVRFKTsKQEAgLTEyNTQsNyArMTI1NSw3IEBAIHN0YXRpYyB2b2lkIG1y dHNvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKQogCQkJCQkJICAgIE5FVENPTkZBX0lGSU5E RVhfQUxMLAogCQkJCQkJICAgIG5ldC0+aXB2NC5kZXZjb25mX2FsbCk7CiAJCQlSQ1VfSU5JVF9Q T0lOVEVSKG1ydC0+bXJvdXRlX3NrLCBOVUxMKTsKLQkJCW1yb3V0ZV9jbGVhbl90YWJsZXMobXJ0 KTsKKwkJCW1yb3V0ZV9jbGVhbl90YWJsZXMobXJ0LCBmYWxzZSk7CiAJCX0KIAl9CiAJcnRubF91 bmxvY2soKTsKLS0gCjIuNC4xCgoKRnJvbSA5ODY0YmIzNjJjYjgzNGQyNTZkMDE0ZWM1NmFmNjk0 OTllMTFmOTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtvbGF5IEFsZWtzYW5k cm92IDxuaWtvbGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+CkRhdGU6IEZyaSwgMjAgTm92IDIwMTUg MTM6NTQ6MjAgKzAxMDAKU3ViamVjdDogW1BBVENIIDE4LzIzXSBuZXQ6IGlwNm1yOiBmaXggc3Rh dGljIG1mYy9kZXYgbGVha3Mgb24gdGFibGUKIGRlc3RydWN0aW9uCgpbIFVwc3RyZWFtIGNvbW1p dCA0YzY5ODA0NjJmMzJiNGYyODJjNWQ4ZTVmN2VhODA3MGUyOTM3NzI1IF0KClNpbWlsYXIgdG8g aXB2NCwgd2hlbiBkZXN0cm95aW5nIGFuIG1ydCB0YWJsZSB0aGUgc3RhdGljIG1mYyBlbnRyaWVz IGFuZAp0aGUgc3RhdGljIGRldmljZXMgYXJlIGtlcHQsIHdoaWNoIGxlYWRzIHRvIGRldmljZXMg dGhhdCBjYW4gbmV2ZXIgYmUKZGVzdHJveWVkIChiZWNhdXNlIG9mIHJlZmNudCB0YWtlbikgYW5k IGxlYWtlZCBtZW1vcnkuIE1ha2Ugc3VyZSB0aGF0CmV2ZXJ5dGhpbmcgaXMgY2xlYW5lZCB1cCBv biBuZXRucyBkZXN0cnVjdGlvbi4KCkZpeGVzOiA4MjI5ZWZkYWVmMWUgKCJuZXRuczogaXA2bXI6 IGVuYWJsZSBuYW1lc3BhY2Ugc3VwcG9ydCBpbiBpcHY2IG11bHRpY2FzdCBmb3J3YXJkaW5nIGNv ZGUiKQpDQzogQmVuamFtaW4gVGhlcnkgPGJlbmphbWluLnRoZXJ5QGJ1bGwubmV0PgpTaWduZWQt b2ZmLWJ5OiBOaWtvbGF5IEFsZWtzYW5kcm92IDxuaWtvbGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+ ClJldmlld2VkLWJ5OiBDb25nIFdhbmcgPGN3YW5nQHR3b3BlbnNvdXJjZS5jb20+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2 Ni9pcDZtci5jIHwgMTUgKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRp b25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNm1yLmMgYi9u ZXQvaXB2Ni9pcDZtci5jCmluZGV4IDBkNTg1NDIuLjRjYTdjZGQgMTAwNjQ0Ci0tLSBhL25ldC9p cHY2L2lwNm1yLmMKKysrIGIvbmV0L2lwdjYvaXA2bXIuYwpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0 YXRpYyB2b2lkIG1yNl9uZXRsaW5rX2V2ZW50KHN0cnVjdCBtcjZfdGFibGUgKm1ydCwgc3RydWN0 IG1mYzZfY2FjaGUgKm1mYywKIAkJCSAgICAgIGludCBjbWQpOwogc3RhdGljIGludCBpcDZtcl9y dG1fZHVtcHJvdXRlKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgICAgc3RydWN0IG5ldGxp bmtfY2FsbGJhY2sgKmNiKTsKLXN0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJsZXMoc3RydWN0 IG1yNl90YWJsZSAqbXJ0KTsKK3N0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJsZXMoc3RydWN0 IG1yNl90YWJsZSAqbXJ0LCBib29sIGFsbCk7CiBzdGF0aWMgdm9pZCBpcG1yX2V4cGlyZV9wcm9j ZXNzKHVuc2lnbmVkIGxvbmcgYXJnKTsKIAogI2lmZGVmIENPTkZJR19JUFY2X01ST1VURV9NVUxU SVBMRV9UQUJMRVMKQEAgLTMzNyw3ICszMzcsNyBAQCBzdGF0aWMgc3RydWN0IG1yNl90YWJsZSAq aXA2bXJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKQogc3RhdGljIHZvaWQgaXA2 bXJfZnJlZV90YWJsZShzdHJ1Y3QgbXI2X3RhYmxlICptcnQpCiB7CiAJZGVsX3RpbWVyKCZtcnQt PmlwbXJfZXhwaXJlX3RpbWVyKTsKLQltcm91dGVfY2xlYW5fdGFibGVzKG1ydCk7CisJbXJvdXRl X2NsZWFuX3RhYmxlcyhtcnQsIHRydWUpOwogCWtmcmVlKG1ydCk7CiB9CiAKQEAgLTE1NDAsNyAr MTU0MCw3IEBAIHN0YXRpYyBpbnQgaXA2bXJfbWZjX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVj dCBtcjZfdGFibGUgKm1ydCwKICAqCUNsb3NlIHRoZSBtdWx0aWNhc3Qgc29ja2V0LCBhbmQgY2xl YXIgdGhlIHZpZiB0YWJsZXMgZXRjCiAgKi8KIAotc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFuX3Rh YmxlcyhzdHJ1Y3QgbXI2X3RhYmxlICptcnQpCitzdGF0aWMgdm9pZCBtcm91dGVfY2xlYW5fdGFi bGVzKHN0cnVjdCBtcjZfdGFibGUgKm1ydCwgYm9vbCBhbGwpCiB7CiAJaW50IGk7CiAJTElTVF9I RUFEKGxpc3QpOwpAQCAtMTU1MCw4ICsxNTUwLDkgQEAgc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFu X3RhYmxlcyhzdHJ1Y3QgbXI2X3RhYmxlICptcnQpCiAJICoJU2h1dCBkb3duIGFsbCBhY3RpdmUg dmlmIGVudHJpZXMKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbXJ0LT5tYXh2aWY7IGkrKykgewot CQlpZiAoIShtcnQtPnZpZjZfdGFibGVbaV0uZmxhZ3MgJiBWSUZGX1NUQVRJQykpCi0JCQltaWY2 X2RlbGV0ZShtcnQsIGksICZsaXN0KTsKKwkJaWYgKCFhbGwgJiYgKG1ydC0+dmlmNl90YWJsZVtp XS5mbGFncyAmIFZJRkZfU1RBVElDKSkKKwkJCWNvbnRpbnVlOworCQltaWY2X2RlbGV0ZShtcnQs IGksICZsaXN0KTsKIAl9CiAJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgmbGlzdCk7CiAKQEAg LTE1NjAsNyArMTU2MSw3IEBAIHN0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJsZXMoc3RydWN0 IG1yNl90YWJsZSAqbXJ0KQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBNRkM2X0xJTkVTOyBpKysp IHsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGMsIG5leHQsICZtcnQtPm1mYzZfY2FjaGVf YXJyYXlbaV0sIGxpc3QpIHsKLQkJCWlmIChjLT5tZmNfZmxhZ3MgJiBNRkNfU1RBVElDKQorCQkJ aWYgKCFhbGwgJiYgKGMtPm1mY19mbGFncyAmIE1GQ19TVEFUSUMpKQogCQkJCWNvbnRpbnVlOwog CQkJd3JpdGVfbG9ja19iaCgmbXJ0X2xvY2spOwogCQkJbGlzdF9kZWwoJmMtPmxpc3QpOwpAQCAt MTYyMyw3ICsxNjI0LDcgQEAgaW50IGlwNm1yX3NrX2RvbmUoc3RydWN0IHNvY2sgKnNrKQogCQkJ CQkJICAgICBuZXQtPmlwdjYuZGV2Y29uZl9hbGwpOwogCQkJd3JpdGVfdW5sb2NrX2JoKCZtcnRf bG9jayk7CiAKLQkJCW1yb3V0ZV9jbGVhbl90YWJsZXMobXJ0KTsKKwkJCW1yb3V0ZV9jbGVhbl90 YWJsZXMobXJ0LCBmYWxzZSk7CiAJCQllcnIgPSAwOwogCQkJYnJlYWs7CiAJCX0KLS0gCjIuNC4x CgoKRnJvbSAwOWNjNDVjNDgzZDcyNzgyZTkyMTZmYzUwZWU2ZmU3MGQ5NTkxMThlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBYXJvIEtvc2tpbmVuIDxhYXJvLmtvc2tpbmVuQGlraS5m aT4KRGF0ZTogU3VuLCAyMiBOb3YgMjAxNSAwMTowODo1NCArMDIwMApTdWJqZWN0OiBbUEFUQ0gg MTkvMjNdIGJyb2FkY29tOiBmaXggUEhZX0lEX0JDTTU0ODEgZW50cnkgaW4gdGhlIGlkIHRhYmxl CgpbIFVwc3RyZWFtIGNvbW1pdCAzYzI1YTg2MGQxN2I3Mzc4ODIyZjM1ZDhjOTE0MWRiOTUwN2Uz YmViIF0KCkNvbW1pdCBmY2IyNmVjNWIxOGQgKCJicm9hZGNvbTogbW92ZSBhbGwgUEhZX0lEJ3Mg dG8gaGVhZGVyIikKdXBkYXRlZCBicm9hZGNvbV90YmwgdG8gdXNlIFBIWV9JRHMsIGJ1dCBpbmNv cnJlY3RseSByZXBsYWNlZCAweDAxNDNiY2EwCndpdGggUEhZX0lEX0JDTTU0ODIgKG1ha2luZyBh IGR1cGxpY2F0ZSBlbnRyeSwgYW5kIGNvbXBsZXRlbHkgb21pdHRpbmcKdGhlIG9yaWdpbmFsKS4g Rml4IHRoYXQuCgpGaXhlczogZmNiMjZlYzViMThkICgiYnJvYWRjb206IG1vdmUgYWxsIFBIWV9J RCdzIHRvIGhlYWRlciIpClNpZ25lZC1vZmYtYnk6IEFhcm8gS29za2luZW4gPGFhcm8ua29za2lu ZW5AaWtpLmZpPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9m dC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9waHkvYnJvYWRjb20uYyBiL2RyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jCmluZGV4IDg1 NGYyYzkuLjY0ODYwYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jCisr KyBiL2RyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jCkBAIC02NzQsNyArNjc0LDcgQEAgc3RhdGlj IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBicm9hZGNvbV90YmxbXSA9IHsK IAl7IFBIWV9JRF9CQ001NDIxLCAweGZmZmZmZmYwIH0sCiAJeyBQSFlfSURfQkNNNTQ2MSwgMHhm ZmZmZmZmMCB9LAogCXsgUEhZX0lEX0JDTTU0NjQsIDB4ZmZmZmZmZjAgfSwKLQl7IFBIWV9JRF9C Q001NDgyLCAweGZmZmZmZmYwIH0sCisJeyBQSFlfSURfQkNNNTQ4MSwgMHhmZmZmZmZmMCB9LAog CXsgUEhZX0lEX0JDTTU0ODIsIDB4ZmZmZmZmZjAgfSwKIAl7IFBIWV9JRF9CQ001MDYxMCwgMHhm ZmZmZmZmMCB9LAogCXsgUEhZX0lEX0JDTTUwNjEwTSwgMHhmZmZmZmZmMCB9LAotLSAKMi40LjEK CgpGcm9tIGM3MjBmMzI2YTA5ZmZmYTc4YzJiNzE0ZDYyZTZlNzhkNmVkMjkwNGYgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9NaWNoYWw9MjBLdWJlPUM0PThEZWs/PSA8 bWt1YmVjZWtAc3VzZS5jej4KRGF0ZTogVHVlLCAyNCBOb3YgMjAxNSAxNTowNzoxMSArMDEwMApT dWJqZWN0OiBbUEFUQ0ggMjAvMjNdIGlwdjY6IGRpc3Rpbmd1aXNoIGZyYWcgcXVldWVzIGJ5IGRl dmljZSBmb3IgbXVsdGljYXN0CiBhbmQgbGluay1sb2NhbCBwYWNrZXRzCgpbIFVwc3RyZWFtIGNv bW1pdCAyNjQ2NDBmYzJjNWY0ZjkxM2RiNWM3M2ZhM2ViMWVhZDJjNDVlOWQ3IF0KCklmIGEgZnJh Z21lbnRlZCBtdWx0aWNhc3QgcGFja2V0IGlzIHJlY2VpdmVkIG9uIGFuIGV0aGVybmV0IGRldmlj ZSB3aGljaApoYXMgYW4gYWN0aXZlIG1hY3ZsYW4gb24gdG9wIG9mIGl0LCBlYWNoIGZyYWdtZW50 IGlzIGR1cGxpY2F0ZWQgYW5kCnJlY2VpdmVkIGJvdGggb24gdGhlIHVuZGVybHlpbmcgZGV2aWNl IGFuZCB0aGUgbWFjdmxhbi4gSWYgc29tZQpmcmFnbWVudHMgZm9yIG1hY3ZsYW4gYXJlIHByb2Nl c3NlZCBiZWZvcmUgdGhlIHdob2xlIHBhY2tldCBmb3IgdGhlCnVuZGVybHlpbmcgZGV2aWNlIGlz IHJlYXNzZW1ibGVkLCB0aGUgIm92ZXJsYXBwaW5nIGZyYWdtZW50cyIgdGVzdCBpbgppcDZfZnJh Z19xdWV1ZSgpIGRpc2NhcmRzIHRoZSB3aG9sZSBmcmFnbWVudCBxdWV1ZS4KClRvIHJlc29sdmUg dGhpcywgYWRkIGRldmljZSBpZmluZGV4IHRvIHRoZSBzZWFyY2gga2V5IGFuZCByZXF1aXJlIGl0 IHRvCm1hdGNoIHJlYXNzZW1ibGluZyBtdWx0aWNhc3QgcGFja2V0cyBhbmQgcGFja2V0cyB0byBs aW5rLWxvY2FsCmFkZHJlc3Nlcy4KCk5vdGU6IHNpbWlsYXIgcGF0Y2ggaGFzIGJlZW4gYWxyZWFk eSBzdWJtaXR0ZWQgYnkgWW9zaGlmdWppIEhpZGVha2kgaW4KCiAgaHR0cDovL3BhdGNod29yay5v emxhYnMub3JnL3BhdGNoLzIyMDk3OS8KCmJ1dCBnb3QgbG9zdCBhbmQgZm9yZ290dGVuIGZvciBz b21lIHJlYXNvbi4KClNpZ25lZC1vZmYtYnk6IE1pY2hhbCBLdWJlY2VrIDxta3ViZWNla0BzdXNl LmN6PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ Ci0tLQogaW5jbHVkZS9uZXQvaXB2Ni5oICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogbmV0 L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jIHwgIDUgKysrLS0KIG5ldC9pcHY2 L3JlYXNzZW1ibHkuYyAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKystLS0KIDMgZmlsZXMg Y2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9p bmNsdWRlL25ldC9pcHY2LmggYi9pbmNsdWRlL25ldC9pcHY2LmgKaW5kZXggNDI5MjkyOS4uYmM1 NmU4YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXB2Ni5oCisrKyBiL2luY2x1ZGUvbmV0L2lw djYuaApAQCAtNDkwLDYgKzQ5MCw3IEBAIHN0cnVjdCBpcDZfY3JlYXRlX2FyZyB7CiAJdTMyIHVz ZXI7CiAJY29uc3Qgc3RydWN0IGluNl9hZGRyICpzcmM7CiAJY29uc3Qgc3RydWN0IGluNl9hZGRy ICpkc3Q7CisJaW50IGlpZjsKIAl1OCBlY247CiB9OwogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9u ZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29u bnRyYWNrX3JlYXNtLmMKaW5kZXggNmYxODdjOC4uZDIzNWVkNyAxMDA2NDQKLS0tIGEvbmV0L2lw djYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jCisrKyBiL25ldC9pcHY2L25ldGZpbHRl ci9uZl9jb25udHJhY2tfcmVhc20uYwpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyB2b2lkIG5m X2N0X2ZyYWc2X2V4cGlyZSh1bnNpZ25lZCBsb25nIGRhdGEpCiAvKiBDcmVhdGlvbiBwcmltaXRp dmVzLiAqLwogc3RhdGljIGlubGluZSBzdHJ1Y3QgZnJhZ19xdWV1ZSAqZnFfZmluZChzdHJ1Y3Qg bmV0ICpuZXQsIF9fYmUzMiBpZCwKIAkJCQkJIHUzMiB1c2VyLCBzdHJ1Y3QgaW42X2FkZHIgKnNy YywKLQkJCQkJIHN0cnVjdCBpbjZfYWRkciAqZHN0LCB1OCBlY24pCisJCQkJCSBzdHJ1Y3QgaW42 X2FkZHIgKmRzdCwgaW50IGlpZiwgdTggZWNuKQogewogCXN0cnVjdCBpbmV0X2ZyYWdfcXVldWUg KnE7CiAJc3RydWN0IGlwNl9jcmVhdGVfYXJnIGFyZzsKQEAgLTIwMCw2ICsyMDAsNyBAQCBzdGF0 aWMgaW5saW5lIHN0cnVjdCBmcmFnX3F1ZXVlICpmcV9maW5kKHN0cnVjdCBuZXQgKm5ldCwgX19i ZTMyIGlkLAogCWFyZy51c2VyID0gdXNlcjsKIAlhcmcuc3JjID0gc3JjOwogCWFyZy5kc3QgPSBk c3Q7CisJYXJnLmlpZiA9IGlpZjsKIAlhcmcuZWNuID0gZWNuOwogCiAJbG9jYWxfYmhfZGlzYWJs ZSgpOwpAQCAtNjAzLDcgKzYwNCw3IEBAIHN0cnVjdCBza19idWZmICpuZl9jdF9mcmFnNl9nYXRo ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHVzZXIpCiAJZmhkciA9IChzdHJ1Y3QgZnJhZ19o ZHIgKilza2JfdHJhbnNwb3J0X2hlYWRlcihjbG9uZSk7CiAKIAlmcSA9IGZxX2ZpbmQobmV0LCBm aGRyLT5pZGVudGlmaWNhdGlvbiwgdXNlciwgJmhkci0+c2FkZHIsICZoZHItPmRhZGRyLAotCQkg ICAgIGlwNl9mcmFnX2VjbihoZHIpKTsKKwkJICAgICBza2ItPmRldiA/IHNrYi0+ZGV2LT5pZmlu ZGV4IDogMCwgaXA2X2ZyYWdfZWNuKGhkcikpOwogCWlmIChmcSA9PSBOVUxMKSB7CiAJCXByX2Rl YnVnKCJDYW4ndCBmaW5kIGFuZCBjYW4ndCBjcmVhdGUgbmV3IHF1ZXVlXG4iKTsKIAkJZ290byBy ZXRfb3JpZzsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JlYXNzZW1ibHkuYyBiL25ldC9pcHY2L3Jl YXNzZW1ibHkuYwppbmRleCAxYTE1N2NhLi4yOGU3MmYzIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9y ZWFzc2VtYmx5LmMKKysrIGIvbmV0L2lwdjYvcmVhc3NlbWJseS5jCkBAIC0xMDgsNyArMTA4LDEw IEBAIGJvb2wgaXA2X2ZyYWdfbWF0Y2goY29uc3Qgc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcSwg Y29uc3Qgdm9pZCAqYSkKIAlyZXR1cm4JZnEtPmlkID09IGFyZy0+aWQgJiYKIAkJZnEtPnVzZXIg PT0gYXJnLT51c2VyICYmCiAJCWlwdjZfYWRkcl9lcXVhbCgmZnEtPnNhZGRyLCBhcmctPnNyYykg JiYKLQkJaXB2Nl9hZGRyX2VxdWFsKCZmcS0+ZGFkZHIsIGFyZy0+ZHN0KTsKKwkJaXB2Nl9hZGRy X2VxdWFsKCZmcS0+ZGFkZHIsIGFyZy0+ZHN0KSAmJgorCQkoYXJnLT5paWYgPT0gZnEtPmlpZiB8 fAorCQkgIShpcHY2X2FkZHJfdHlwZShhcmctPmRzdCkgJiAoSVBWNl9BRERSX01VTFRJQ0FTVCB8 CisJCQkJCSAgICAgICBJUFY2X0FERFJfTElOS0xPQ0FMKSkpOwogfQogRVhQT1JUX1NZTUJPTChp cDZfZnJhZ19tYXRjaCk7CiAKQEAgLTE4MCw3ICsxODMsNyBAQCBzdGF0aWMgdm9pZCBpcDZfZnJh Z19leHBpcmUodW5zaWduZWQgbG9uZyBkYXRhKQogCiBzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3Qg ZnJhZ19xdWV1ZSAqCiBmcV9maW5kKHN0cnVjdCBuZXQgKm5ldCwgX19iZTMyIGlkLCBjb25zdCBz dHJ1Y3QgaW42X2FkZHIgKnNyYywKLQljb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRzdCwgdTggZWNu KQorCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZHN0LCBpbnQgaWlmLCB1OCBlY24pCiB7CiAJc3Ry dWN0IGluZXRfZnJhZ19xdWV1ZSAqcTsKIAlzdHJ1Y3QgaXA2X2NyZWF0ZV9hcmcgYXJnOwpAQCAt MTkwLDYgKzE5Myw3IEBAIGZxX2ZpbmQoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgaWQsIGNvbnN0 IHN0cnVjdCBpbjZfYWRkciAqc3JjLAogCWFyZy51c2VyID0gSVA2X0RFRlJBR19MT0NBTF9ERUxJ VkVSOwogCWFyZy5zcmMgPSBzcmM7CiAJYXJnLmRzdCA9IGRzdDsKKwlhcmcuaWlmID0gaWlmOwog CWFyZy5lY24gPSBlY247CiAKIAloYXNoID0gaW5ldDZfaGFzaF9mcmFnKGlkLCBzcmMsIGRzdCk7 CkBAIC01NTAsNyArNTU0LDcgQEAgc3RhdGljIGludCBpcHY2X2ZyYWdfcmN2KHN0cnVjdCBza19i dWZmICpza2IpCiAJfQogCiAJZnEgPSBmcV9maW5kKG5ldCwgZmhkci0+aWRlbnRpZmljYXRpb24s ICZoZHItPnNhZGRyLCAmaGRyLT5kYWRkciwKLQkJICAgICBpcDZfZnJhZ19lY24oaGRyKSk7CisJ CSAgICAgc2tiLT5kZXYgPyBza2ItPmRldi0+aWZpbmRleCA6IDAsIGlwNl9mcmFnX2VjbihoZHIp KTsKIAlpZiAoZnEgIT0gTlVMTCkgewogCQlpbnQgcmV0OwogCi0tIAoyLjQuMQoKCkZyb20gZmJi NTJiODIwMTk5M2JlMmUwZmJlOWFmN2M0NGJhMWMwNGY5YWIzZiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBTdW4s IDI5IE5vdiAyMDE1IDE5OjM3OjU3IC0wODAwClN1YmplY3Q6IFtQQVRDSCAyMS8yM10gaXB2Njog YWRkIGNvbXBsZXRlIHJjdSBwcm90ZWN0aW9uIGFyb3VuZCBucC0+b3B0CgpbIFVwc3RyZWFtIGNv bW1pdCA0NWY2ZmFkODRjYzMwNTEwM2IyOGQ3MzQ4MmIzNDRkN2Y1Yjc2ZjM5IF0KClRoaXMgcGF0 Y2ggYWRkcmVzc2VzIG11bHRpcGxlIHByb2JsZW1zIDoKClVEUC9SQVcgc2VuZG1zZygpIG5lZWQg dG8gZ2V0IGEgc3RhYmxlIHN0cnVjdCBpcHY2X3R4b3B0aW9ucwp3aGlsZSBzb2NrZXQgaXMgbm90 IGxvY2tlZCA6IE90aGVyIHRocmVhZHMgY2FuIGNoYW5nZSBucC0+b3B0CmNvbmN1cnJlbnRseS4g RG1pdHJ5IHBvc3RlZCBhIHN5emthbGxlcgooaHR0cDovL2dpdGh1Yi5jb20vZ29vZ2xlL3N5emth bGxlcikgcHJvZ3JhbSBkZXNtb25zdHJhdGluZwp1c2UtYWZ0ZXItZnJlZS4KClN0YXJ0aW5nIHdp dGggVENQL0RDQ1AgbG9ja2xlc3MgbGlzdGVuZXJzLCB0Y3BfdjZfc3luX3JlY3Zfc29jaygpCmFu ZCBkY2NwX3Y2X3JlcXVlc3RfcmVjdl9zb2NrKCkgYWxzbyBuZWVkIHRvIHVzZSBSQ1UgcHJvdGVj dGlvbgp0byBkZXJlZmVyZW5jZSBucC0+b3B0IG9uY2UgKGJlZm9yZSBjYWxsaW5nIGlwdjZfZHVw X29wdGlvbnMoKSkKClRoaXMgcGF0Y2ggYWRkcyBmdWxsIFJDVSBwcm90ZWN0aW9uIHRvIG5wLT5v cHQKClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+ClNpZ25l ZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQWNrZWQtYnk6IEhh bm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVkLW9m Zi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1ZGUv bGludXgvaXB2Ni5oICAgICAgICAgICAgIHwgIDIgKy0KIGluY2x1ZGUvbmV0L2lwdjYuaCAgICAg ICAgICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKystCiBuZXQvZGNjcC9pcHY2LmMgICAg ICAgICAgICAgICAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogbmV0 L2lwdjYvYWZfaW5ldDYuYyAgICAgICAgICAgICAgfCAxMyArKysrKysrKystLS0tCiBuZXQvaXB2 Ni9kYXRhZ3JhbS5jICAgICAgICAgICAgICB8ICA0ICsrKy0KIG5ldC9pcHY2L2V4dGhkcnMuYyAg ICAgICAgICAgICAgIHwgIDMgKystCiBuZXQvaXB2Ni9pbmV0Nl9jb25uZWN0aW9uX3NvY2suYyB8 IDExICsrKysrKysrLS0tCiBuZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMgICAgICAgICB8IDM2ICsr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogbmV0L2lwdjYvcmF3LmMgICAgICAg ICAgICAgICAgICAgfCAgOCArKysrKystLQogbmV0L2lwdjYvc3luY29va2llcy5jICAgICAgICAg ICAgfCAgMiArLQogbmV0L2lwdjYvdGNwX2lwdjYuYyAgICAgICAgICAgICAgfCAyOCArKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tCiBuZXQvaXB2Ni91ZHAuYyAgICAgICAgICAgICAgICAgICB8 ICA4ICsrKysrKy0tCiBuZXQvbDJ0cC9sMnRwX2lwNi5jICAgICAgICAgICAgICB8ICA4ICsrKysr Ky0tCiAxMyBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pcHY2LmggYi9pbmNsdWRlL2xpbnV4L2lwdjYu aAppbmRleCBmZjU2MDUzLi4yNzI1YjAzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lwdjYu aAorKysgYi9pbmNsdWRlL2xpbnV4L2lwdjYuaApAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBp cHY2X3BpbmZvIHsKIAlzdHJ1Y3QgaXB2Nl9hY19zb2NrbGlzdAkqaXB2Nl9hY19saXN0OwogCXN0 cnVjdCBpcHY2X2ZsX3NvY2tsaXN0IF9fcmN1ICppcHY2X2ZsX2xpc3Q7CiAKLQlzdHJ1Y3QgaXB2 Nl90eG9wdGlvbnMJKm9wdDsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgX19yY3UJKm9wdDsKIAlz dHJ1Y3Qgc2tfYnVmZgkJKnBrdG9wdGlvbnM7CiAJc3RydWN0IHNrX2J1ZmYJCSpyeHBtdHU7CiAJ c3RydWN0IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lw djYuaAppbmRleCBiYzU2ZThhLi5hNTE2OWE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcHY2 LmgKKysrIGIvaW5jbHVkZS9uZXQvaXB2Ni5oCkBAIC0yMDcsNiArMjA3LDcgQEAgZXh0ZXJuIHJ3 bG9ja190IGlwNl9yYV9sb2NrOwogICovCiAKIHN0cnVjdCBpcHY2X3R4b3B0aW9ucyB7CisJYXRv bWljX3QJCXJlZmNudDsKIAkvKiBMZW5ndGggb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KIAlpbnQJCQl0 b3RfbGVuOwogCkBAIC0yMTksNyArMjIwLDcgQEAgc3RydWN0IGlwdjZfdHhvcHRpb25zIHsKIAlz dHJ1Y3QgaXB2Nl9vcHRfaGRyCSpkc3Qwb3B0OwogCXN0cnVjdCBpcHY2X3J0X2hkcgkqc3JjcnQ7 CS8qIFJvdXRpbmcgSGVhZGVyICovCiAJc3RydWN0IGlwdjZfb3B0X2hkcgkqZHN0MW9wdDsKLQor CXN0cnVjdCByY3VfaGVhZAkJcmN1OwogCS8qIE9wdGlvbiBidWZmZXIsIGFzIHJlYWQgYnkgSVBW Nl9QS1RPUFRJT05TLCBzdGFydHMgaGVyZS4gKi8KIH07CiAKQEAgLTI1Miw2ICsyNTMsMjQgQEAg c3RydWN0IGlwdjZfZmxfc29ja2xpc3QgewogCXN0cnVjdCByY3VfaGVhZAkJCXJjdTsKIH07CiAK K3N0YXRpYyBpbmxpbmUgc3RydWN0IGlwdjZfdHhvcHRpb25zICp0eG9wdF9nZXQoY29uc3Qgc3Ry dWN0IGlwdjZfcGluZm8gKm5wKQoreworCXN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0OworCisJ cmN1X3JlYWRfbG9jaygpOworCW9wdCA9IHJjdV9kZXJlZmVyZW5jZShucC0+b3B0KTsKKwlpZiAo b3B0ICYmICFhdG9taWNfaW5jX25vdF96ZXJvKCZvcHQtPnJlZmNudCkpCisJCW9wdCA9IE5VTEw7 CisJcmN1X3JlYWRfdW5sb2NrKCk7CisJcmV0dXJuIG9wdDsKK30KKworc3RhdGljIGlubGluZSB2 b2lkIHR4b3B0X3B1dChzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdCkKK3sKKwlpZiAob3B0ICYm IGF0b21pY19kZWNfYW5kX3Rlc3QoJm9wdC0+cmVmY250KSkKKwkJa2ZyZWVfcmN1KG9wdCwgcmN1 KTsKK30KKwogc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsNl9zb2NrX2xvb2t1cChzdHJ1Y3Qgc29j ayAqc2ssIF9fYmUzMiBsYWJlbCk7CiBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKmZsNl9tZXJnZV9v cHRpb25zKHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0X3NwYWNlLAogCQkJCQkgc3RydWN0IGlw Nl9mbG93bGFiZWwgKmZsLApkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvaXB2Ni5jIGIvbmV0L2RjY3Av aXB2Ni5jCmluZGV4IDZiY2FhMzMuLjdiY2IyMjMgMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL2lwdjYu YworKysgYi9uZXQvZGNjcC9pcHY2LmMKQEAgLTIzOCw3ICsyMzgsOSBAQCBzdGF0aWMgaW50IGRj Y3BfdjZfc2VuZF9yZXNwb25zZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sg KnJlcSkKIAlzZWN1cml0eV9yZXFfY2xhc3NpZnlfZmxvdyhyZXEsIGZsb3dpNl90b19mbG93aSgm Zmw2KSk7CiAKIAotCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgmZmw2LCBucC0+b3B0LCAmZmlu YWwpOworCXJjdV9yZWFkX2xvY2soKTsKKwlmaW5hbF9wID0gZmw2X3VwZGF0ZV9kc3QoJmZsNiwg cmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLCAmZmluYWwpOworCXJjdV9yZWFkX3VubG9jaygpOwog CiAJZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhzaywgJmZsNiwgZmluYWxfcCk7CiAJaWYgKElT X0VSUihkc3QpKSB7CkBAIC0yNTUsNyArMjU3LDEwIEBAIHN0YXRpYyBpbnQgZGNjcF92Nl9zZW5k X3Jlc3BvbnNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogCQkJ CQkJCSAmaXJlcS0+aXJfdjZfbG9jX2FkZHIsCiAJCQkJCQkJICZpcmVxLT5pcl92Nl9ybXRfYWRk cik7CiAJCWZsNi5kYWRkciA9IGlyZXEtPmlyX3Y2X3JtdF9hZGRyOwotCQllcnIgPSBpcDZfeG1p dChzaywgc2tiLCAmZmw2LCBucC0+b3B0LCBucC0+dGNsYXNzKTsKKwkJcmN1X3JlYWRfbG9jaygp OworCQllcnIgPSBpcDZfeG1pdChzaywgc2tiLCAmZmw2LCByY3VfZGVyZWZlcmVuY2UobnAtPm9w dCksCisJCQkgICAgICAgbnAtPnRjbGFzcyk7CisJCXJjdV9yZWFkX3VubG9jaygpOwogCQllcnIg PSBuZXRfeG1pdF9ldmFsKGVycik7CiAJfQogCkBAIC00NTAsNiArNDU1LDcgQEAgc3RhdGljIHN0 cnVjdCBzb2NrICpkY2NwX3Y2X3JlcXVlc3RfcmVjdl9zb2NrKHN0cnVjdCBzb2NrICpzaywKIHsK IAlzdHJ1Y3QgaW5ldF9yZXF1ZXN0X3NvY2sgKmlyZXEgPSBpbmV0X3JzayhyZXEpOwogCXN0cnVj dCBpcHY2X3BpbmZvICpuZXducCwgKm5wID0gaW5ldDZfc2soc2spOworCXN0cnVjdCBpcHY2X3R4 b3B0aW9ucyAqb3B0OwogCXN0cnVjdCBpbmV0X3NvY2sgKm5ld2luZXQ7CiAJc3RydWN0IGRjY3A2 X3NvY2sgKm5ld2RwNjsKIAlzdHJ1Y3Qgc29jayAqbmV3c2s7CkBAIC01NzMsMTMgKzU3OSwxNSBA QCBzdGF0aWMgc3RydWN0IHNvY2sgKmRjY3BfdjZfcmVxdWVzdF9yZWN2X3NvY2soc3RydWN0IHNv Y2sgKnNrLAogCSAqIFllcywga2VlcGluZyByZWZlcmVuY2UgY291bnQgd291bGQgYmUgbXVjaCBt b3JlIGNsZXZlciwgYnV0IHdlIG1ha2UKIAkgKiBvbmUgbW9yZSBvbmUgdGhpbmcgdGhlcmU6IHJl YXR0YWNoIG9wdG1lbSB0byBuZXdzay4KIAkgKi8KLQlpZiAobnAtPm9wdCAhPSBOVUxMKQotCQlu ZXducC0+b3B0ID0gaXB2Nl9kdXBfb3B0aW9ucyhuZXdzaywgbnAtPm9wdCk7Ci0KKwlvcHQgPSBy Y3VfZGVyZWZlcmVuY2UobnAtPm9wdCk7CisJaWYgKG9wdCkgeworCQlvcHQgPSBpcHY2X2R1cF9v cHRpb25zKG5ld3NrLCBvcHQpOworCQlSQ1VfSU5JVF9QT0lOVEVSKG5ld25wLT5vcHQsIG9wdCk7 CisJfQogCWluZXRfY3NrKG5ld3NrKS0+aWNza19leHRfaGRyX2xlbiA9IDA7Ci0JaWYgKG5ld25w LT5vcHQgIT0gTlVMTCkKLQkJaW5ldF9jc2sobmV3c2spLT5pY3NrX2V4dF9oZHJfbGVuID0gKG5l d25wLT5vcHQtPm9wdF9uZmxlbiArCi0JCQkJCQkgICAgIG5ld25wLT5vcHQtPm9wdF9mbGVuKTsK KwlpZiAob3B0KQorCQlpbmV0X2NzayhuZXdzayktPmljc2tfZXh0X2hkcl9sZW4gPSBvcHQtPm9w dF9uZmxlbiArCisJCQkJCQkgICAgb3B0LT5vcHRfZmxlbjsKIAogCWRjY3Bfc3luY19tc3MobmV3 c2ssIGRzdF9tdHUoZHN0KSk7CiAKQEAgLTgzMiw2ICs4NDAsNyBAQCBzdGF0aWMgaW50IGRjY3Bf djZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsCiAJc3Ry dWN0IGlwdjZfcGluZm8gKm5wID0gaW5ldDZfc2soc2spOwogCXN0cnVjdCBkY2NwX3NvY2sgKmRw ID0gZGNjcF9zayhzayk7CiAJc3RydWN0IGluNl9hZGRyICpzYWRkciA9IE5VTEwsICpmaW5hbF9w LCBmaW5hbDsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdDsKIAlzdHJ1Y3QgZmxvd2k2IGZs NjsKIAlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiAJaW50IGFkZHJfdHlwZTsKQEAgLTkzMyw3ICs5 NDIsOCBAQCBzdGF0aWMgaW50IGRjY3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVj dCBzb2NrYWRkciAqdWFkZHIsCiAJZmw2LmZsNl9zcG9ydCA9IGluZXQtPmluZXRfc3BvcnQ7CiAJ c2VjdXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zsb3dpKCZmbDYpKTsKIAot CWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgmZmw2LCBucC0+b3B0LCAmZmluYWwpOworCW9wdCA9 IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobnAtPm9wdCwgc29ja19vd25lZF9ieV91c2VyKHNr KSk7CisJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG9wdCwgJmZpbmFsKTsKIAogCWRz dCA9IGlwNl9kc3RfbG9va3VwX2Zsb3coc2ssICZmbDYsIGZpbmFsX3ApOwogCWlmIChJU19FUlIo ZHN0KSkgewpAQCAtOTUzLDkgKzk2Myw4IEBAIHN0YXRpYyBpbnQgZGNjcF92Nl9jb25uZWN0KHN0 cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKIAlfX2lwNl9kc3Rfc3RvcmUo c2ssIGRzdCwgTlVMTCwgTlVMTCk7CiAKIAlpY3NrLT5pY3NrX2V4dF9oZHJfbGVuID0gMDsKLQlp ZiAobnAtPm9wdCAhPSBOVUxMKQotCQlpY3NrLT5pY3NrX2V4dF9oZHJfbGVuID0gKG5wLT5vcHQt Pm9wdF9mbGVuICsKLQkJCQkJICBucC0+b3B0LT5vcHRfbmZsZW4pOworCWlmIChvcHQpCisJCWlj c2stPmljc2tfZXh0X2hkcl9sZW4gPSBvcHQtPm9wdF9mbGVuICsgb3B0LT5vcHRfbmZsZW47CiAK IAlpbmV0LT5pbmV0X2Rwb3J0ID0gdXNpbi0+c2luNl9wb3J0OwogCmRpZmYgLS1naXQgYS9uZXQv aXB2Ni9hZl9pbmV0Ni5jIGIvbmV0L2lwdjYvYWZfaW5ldDYuYwppbmRleCBlOGM0NDAwLi4wNTQx N2MzIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZl9pbmV0Ni5jCisrKyBiL25ldC9pcHY2L2FmX2lu ZXQ2LmMKQEAgLTQyNSw5ICs0MjUsMTEgQEAgdm9pZCBpbmV0Nl9kZXN0cm95X3NvY2soc3RydWN0 IHNvY2sgKnNrKQogCiAJLyogRnJlZSB0eCBvcHRpb25zICovCiAKLQlvcHQgPSB4Y2hnKCZucC0+ b3B0LCBOVUxMKTsKLQlpZiAob3B0ICE9IE5VTEwpCi0JCXNvY2tfa2ZyZWVfcyhzaywgb3B0LCBv cHQtPnRvdF9sZW4pOworCW9wdCA9IHhjaGcoKF9fZm9yY2Ugc3RydWN0IGlwdjZfdHhvcHRpb25z ICoqKSZucC0+b3B0LCBOVUxMKTsKKwlpZiAob3B0KSB7CisJCWF0b21pY19zdWIob3B0LT50b3Rf bGVuLCAmc2stPnNrX29tZW1fYWxsb2MpOworCQl0eG9wdF9wdXQob3B0KTsKKwl9CiB9CiBFWFBP UlRfU1lNQk9MX0dQTChpbmV0Nl9kZXN0cm95X3NvY2spOwogCkBAIC02NTYsNyArNjU4LDEwIEBA IGludCBpbmV0Nl9za19yZWJ1aWxkX2hlYWRlcihzdHJ1Y3Qgc29jayAqc2spCiAJCWZsNi5mbDZf c3BvcnQgPSBpbmV0LT5pbmV0X3Nwb3J0OwogCQlzZWN1cml0eV9za19jbGFzc2lmeV9mbG93KHNr LCBmbG93aTZfdG9fZmxvd2koJmZsNikpOwogCi0JCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgm Zmw2LCBucC0+b3B0LCAmZmluYWwpOworCQlyY3VfcmVhZF9sb2NrKCk7CisJCWZpbmFsX3AgPSBm bDZfdXBkYXRlX2RzdCgmZmw2LCByY3VfZGVyZWZlcmVuY2UobnAtPm9wdCksCisJCQkJCSAmZmlu YWwpOworCQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlkc3QgPSBpcDZfZHN0X2xvb2t1cF9mbG93 KHNrLCAmZmw2LCBmaW5hbF9wKTsKIAkJaWYgKElTX0VSUihkc3QpKSB7CmRpZmYgLS1naXQgYS9u ZXQvaXB2Ni9kYXRhZ3JhbS5jIGIvbmV0L2lwdjYvZGF0YWdyYW0uYwppbmRleCBlMDY5YWViMi4u OWUzYjBiNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvZGF0YWdyYW0uYworKysgYi9uZXQvaXB2Ni9k YXRhZ3JhbS5jCkBAIC0xNjcsOCArMTY3LDEwIEBAIGlwdjRfY29ubmVjdGVkOgogCiAJc2VjdXJp dHlfc2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zsb3dpKCZmbDYpKTsKIAotCW9wdCA9 IGZsb3dsYWJlbCA/IGZsb3dsYWJlbC0+b3B0IDogbnAtPm9wdDsKKwlyY3VfcmVhZF9sb2NrKCk7 CisJb3B0ID0gZmxvd2xhYmVsID8gZmxvd2xhYmVsLT5vcHQgOiByY3VfZGVyZWZlcmVuY2UobnAt Pm9wdCk7CiAJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG9wdCwgJmZpbmFsKTsKKwly Y3VfcmVhZF91bmxvY2soKTsKIAogCWRzdCA9IGlwNl9kc3RfbG9va3VwX2Zsb3coc2ssICZmbDYs IGZpbmFsX3ApOwogCWVyciA9IDA7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9leHRoZHJzLmMgYi9u ZXQvaXB2Ni9leHRoZHJzLmMKaW5kZXggYmZkZTM2MS4uNGYwOGEwZiAxMDA2NDQKLS0tIGEvbmV0 L2lwdjYvZXh0aGRycy5jCisrKyBiL25ldC9pcHY2L2V4dGhkcnMuYwpAQCAtNzI3LDYgKzcyNyw3 IEBAIGlwdjZfZHVwX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaXB2Nl90eG9wdGlv bnMgKm9wdCkKIAkJCSooKGNoYXIgKiopJm9wdDItPmRzdDFvcHQpICs9IGRpZjsKIAkJaWYgKG9w dDItPnNyY3J0KQogCQkJKigoY2hhciAqKikmb3B0Mi0+c3JjcnQpICs9IGRpZjsKKwkJYXRvbWlj X3NldCgmb3B0Mi0+cmVmY250LCAxKTsKIAl9CiAJcmV0dXJuIG9wdDI7CiB9CkBAIC03OTAsNyAr NzkxLDcgQEAgaXB2Nl9yZW5ld19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGlwdjZf dHhvcHRpb25zICpvcHQsCiAJCXJldHVybiBFUlJfUFRSKC1FTk9CVUZTKTsKIAogCW1lbXNldChv cHQyLCAwLCB0b3RfbGVuKTsKLQorCWF0b21pY19zZXQoJm9wdDItPnJlZmNudCwgMSk7CiAJb3B0 Mi0+dG90X2xlbiA9IHRvdF9sZW47CiAJcCA9IChjaGFyICopKG9wdDIgKyAxKTsKIApkaWZmIC0t Z2l0IGEvbmV0L2lwdjYvaW5ldDZfY29ubmVjdGlvbl9zb2NrLmMgYi9uZXQvaXB2Ni9pbmV0Nl9j b25uZWN0aW9uX3NvY2suYwppbmRleCAyOWIzMjIwLi42Y2M1MTZjIDEwMDY0NAotLS0gYS9uZXQv aXB2Ni9pbmV0Nl9jb25uZWN0aW9uX3NvY2suYworKysgYi9uZXQvaXB2Ni9pbmV0Nl9jb25uZWN0 aW9uX3NvY2suYwpAQCAtNzcsNyArNzcsOSBAQCBzdHJ1Y3QgZHN0X2VudHJ5ICppbmV0Nl9jc2tf cm91dGVfcmVxKHN0cnVjdCBzb2NrICpzaywKIAltZW1zZXQoZmw2LCAwLCBzaXplb2YoKmZsNikp OwogCWZsNi0+Zmxvd2k2X3Byb3RvID0gSVBQUk9UT19UQ1A7CiAJZmw2LT5kYWRkciA9IGlyZXEt PmlyX3Y2X3JtdF9hZGRyOwotCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdChmbDYsIG5wLT5vcHQs ICZmaW5hbCk7CisJcmN1X3JlYWRfbG9jaygpOworCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdChm bDYsIHJjdV9kZXJlZmVyZW5jZShucC0+b3B0KSwgJmZpbmFsKTsKKwlyY3VfcmVhZF91bmxvY2so KTsKIAlmbDYtPnNhZGRyID0gaXJlcS0+aXJfdjZfbG9jX2FkZHI7CiAJZmw2LT5mbG93aTZfb2lm ID0gaXJlcS0+aXJfaWlmOwogCWZsNi0+Zmxvd2k2X21hcmsgPSBpcmVxLT5pcl9tYXJrOwpAQCAt MjA4LDcgKzIxMCw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICppbmV0Nl9jc2tfcm91dGVf c29ja2V0KHN0cnVjdCBzb2NrICpzaywKIAlmbDYtPmZsNl9kcG9ydCA9IGluZXQtPmluZXRfZHBv cnQ7CiAJc2VjdXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zsb3dpKGZsNikp OwogCi0JZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KGZsNiwgbnAtPm9wdCwgJmZpbmFsKTsKKwly Y3VfcmVhZF9sb2NrKCk7CisJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KGZsNiwgcmN1X2RlcmVm ZXJlbmNlKG5wLT5vcHQpLCAmZmluYWwpOworCXJjdV9yZWFkX3VubG9jaygpOwogCiAJZHN0ID0g X19pbmV0Nl9jc2tfZHN0X2NoZWNrKHNrLCBucC0+ZHN0X2Nvb2tpZSk7CiAJaWYgKCFkc3QpIHsK QEAgLTI0MSw3ICsyNDUsOCBAQCBpbnQgaW5ldDZfY3NrX3htaXQoc3RydWN0IHNvY2sgKnNrLCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2kgKmZsX3VudXNlZAogCS8qIFJlc3RvcmUg ZmluYWwgZGVzdGluYXRpb24gYmFjayBhZnRlciByb3V0aW5nIGRvbmUgKi8KIAlmbDYuZGFkZHIg PSBzay0+c2tfdjZfZGFkZHI7CiAKLQlyZXMgPSBpcDZfeG1pdChzaywgc2tiLCAmZmw2LCBucC0+ b3B0LCBucC0+dGNsYXNzKTsKKwlyZXMgPSBpcDZfeG1pdChzaywgc2tiLCAmZmw2LCByY3VfZGVy ZWZlcmVuY2UobnAtPm9wdCksCisJCSAgICAgICBucC0+dGNsYXNzKTsKIAlyY3VfcmVhZF91bmxv Y2soKTsKIAlyZXR1cm4gcmVzOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1 ZS5jIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jCmluZGV4IGUxYTk1ODMuLmY4MWZjYzAgMTAw NjQ0Ci0tLSBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYworKysgYi9uZXQvaXB2Ni9pcHY2X3Nv Y2tnbHVlLmMKQEAgLTExMCwxMCArMTEwLDEyIEBAIHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqaXB2 Nl91cGRhdGVfb3B0aW9ucyhzdHJ1Y3Qgc29jayAqc2ssCiAJCQlpY3NrLT5pY3NrX2V4dF9oZHJf bGVuID0gb3B0LT5vcHRfZmxlbiArIG9wdC0+b3B0X25mbGVuOwogCQkJaWNzay0+aWNza19zeW5j X21zcyhzaywgaWNzay0+aWNza19wbXR1X2Nvb2tpZSk7CiAJCX0KLQkJb3B0ID0geGNoZygmaW5l dDZfc2soc2spLT5vcHQsIG9wdCk7CisJCW9wdCA9IHhjaGcoKF9fZm9yY2Ugc3RydWN0IGlwdjZf dHhvcHRpb25zICoqKSZpbmV0Nl9zayhzayktPm9wdCwKKwkJCSAgIG9wdCk7CiAJfSBlbHNlIHsK IAkJc3Bpbl9sb2NrKCZzay0+c2tfZHN0X2xvY2spOwotCQlvcHQgPSB4Y2hnKCZpbmV0Nl9zayhz ayktPm9wdCwgb3B0KTsKKwkJb3B0ID0geGNoZygoX19mb3JjZSBzdHJ1Y3QgaXB2Nl90eG9wdGlv bnMgKiopJmluZXQ2X3NrKHNrKS0+b3B0LAorCQkJICAgb3B0KTsKIAkJc3Bpbl91bmxvY2soJnNr LT5za19kc3RfbG9jayk7CiAJfQogCXNrX2RzdF9yZXNldChzayk7CkBAIC0yMTMsOSArMjE1LDEy IEBAIHN0YXRpYyBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxl dmVsLCBpbnQgb3B0bmFtZSwKIAkJCQlzay0+c2tfc29ja2V0LT5vcHMgPSAmaW5ldF9kZ3JhbV9v cHM7CiAJCQkJc2stPnNrX2ZhbWlseSA9IFBGX0lORVQ7CiAJCQl9Ci0JCQlvcHQgPSB4Y2hnKCZu cC0+b3B0LCBOVUxMKTsKLQkJCWlmIChvcHQpCi0JCQkJc29ja19rZnJlZV9zKHNrLCBvcHQsIG9w dC0+dG90X2xlbik7CisJCQlvcHQgPSB4Y2hnKChfX2ZvcmNlIHN0cnVjdCBpcHY2X3R4b3B0aW9u cyAqKikmbnAtPm9wdCwKKwkJCQkgICBOVUxMKTsKKwkJCWlmIChvcHQpIHsKKwkJCQlhdG9taWNf c3ViKG9wdC0+dG90X2xlbiwgJnNrLT5za19vbWVtX2FsbG9jKTsKKwkJCQl0eG9wdF9wdXQob3B0 KTsKKwkJCX0KIAkJCXBrdG9wdCA9IHhjaGcoJm5wLT5wa3RvcHRpb25zLCBOVUxMKTsKIAkJCWtm cmVlX3NrYihwa3RvcHQpOwogCkBAIC0zODUsNyArMzkwLDggQEAgc3RhdGljIGludCBkb19pcHY2 X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogCQlp ZiAob3B0bmFtZSAhPSBJUFY2X1JUSERSICYmICFuc19jYXBhYmxlKG5ldC0+dXNlcl9ucywgQ0FQ X05FVF9SQVcpKQogCQkJYnJlYWs7CiAKLQkJb3B0ID0gaXB2Nl9yZW5ld19vcHRpb25zKHNrLCBu cC0+b3B0LCBvcHRuYW1lLAorCQlvcHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG5wLT5v cHQsIHNvY2tfb3duZWRfYnlfdXNlcihzaykpOworCQlvcHQgPSBpcHY2X3JlbmV3X29wdGlvbnMo c2ssIG9wdCwgb3B0bmFtZSwKIAkJCQkJIChzdHJ1Y3QgaXB2Nl9vcHRfaGRyIF9fdXNlciAqKW9w dHZhbCwKIAkJCQkJIG9wdGxlbik7CiAJCWlmIChJU19FUlIob3B0KSkgewpAQCAtNDE0LDggKzQy MCwxMCBAQCBzdGF0aWMgaW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGlu dCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJCXJldHYgPSAwOwogCQlvcHQgPSBpcHY2X3VwZGF0ZV9v cHRpb25zKHNrLCBvcHQpOwogc3RpY2t5X2RvbmU6Ci0JCWlmIChvcHQpCi0JCQlzb2NrX2tmcmVl X3Moc2ssIG9wdCwgb3B0LT50b3RfbGVuKTsKKwkJaWYgKG9wdCkgeworCQkJYXRvbWljX3N1Yihv cHQtPnRvdF9sZW4sICZzay0+c2tfb21lbV9hbGxvYyk7CisJCQl0eG9wdF9wdXQob3B0KTsKKwkJ fQogCQlicmVhazsKIAl9CiAKQEAgLTQ2OCw2ICs0NzYsNyBAQCBzdGlja3lfZG9uZToKIAkJCWJy ZWFrOwogCiAJCW1lbXNldChvcHQsIDAsIHNpemVvZigqb3B0KSk7CisJCWF0b21pY19zZXQoJm9w dC0+cmVmY250LCAxKTsKIAkJb3B0LT50b3RfbGVuID0gc2l6ZW9mKCpvcHQpICsgb3B0bGVuOwog CQlyZXR2ID0gLUVGQVVMVDsKIAkJaWYgKGNvcHlfZnJvbV91c2VyKG9wdCsxLCBvcHR2YWwsIG9w dGxlbikpCkBAIC00ODQsOCArNDkzLDEwIEBAIHVwZGF0ZToKIAkJcmV0diA9IDA7CiAJCW9wdCA9 IGlwdjZfdXBkYXRlX29wdGlvbnMoc2ssIG9wdCk7CiBkb25lOgotCQlpZiAob3B0KQotCQkJc29j a19rZnJlZV9zKHNrLCBvcHQsIG9wdC0+dG90X2xlbik7CisJCWlmIChvcHQpIHsKKwkJCWF0b21p Y19zdWIob3B0LT50b3RfbGVuLCAmc2stPnNrX29tZW1fYWxsb2MpOworCQkJdHhvcHRfcHV0KG9w dCk7CisJCX0KIAkJYnJlYWs7CiAJfQogCWNhc2UgSVBWNl9VTklDQVNUX0hPUFM6CkBAIC0xMDky LDEwICsxMTAzLDExIEBAIHN0YXRpYyBpbnQgZG9faXB2Nl9nZXRzb2Nrb3B0KHN0cnVjdCBzb2Nr ICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAljYXNlIElQVjZfUlRIRFI6CiAJY2FzZSBJ UFY2X0RTVE9QVFM6CiAJeworCQlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdDsKIAogCQlsb2Nr X3NvY2soc2spOwotCQlsZW4gPSBpcHY2X2dldHNvY2tvcHRfc3RpY2t5KHNrLCBucC0+b3B0LAot CQkJCQkgICAgIG9wdG5hbWUsIG9wdHZhbCwgbGVuKTsKKwkJb3B0ID0gcmN1X2RlcmVmZXJlbmNl X3Byb3RlY3RlZChucC0+b3B0LCBzb2NrX293bmVkX2J5X3VzZXIoc2spKTsKKwkJbGVuID0gaXB2 Nl9nZXRzb2Nrb3B0X3N0aWNreShzaywgb3B0LCBvcHRuYW1lLCBvcHR2YWwsIGxlbik7CiAJCXJl bGVhc2Vfc29jayhzayk7CiAJCS8qIGNoZWNrIGlmIGlwdjZfZ2V0c29ja29wdF9zdGlja3koKSBy ZXR1cm5zIGVyciBjb2RlICovCiAJCWlmIChsZW4gPCAwKQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYv cmF3LmMgYi9uZXQvaXB2Ni9yYXcuYwppbmRleCA4OTZhZjg4Li5hNjZhNjdkIDEwMDY0NAotLS0g YS9uZXQvaXB2Ni9yYXcuYworKysgYi9uZXQvaXB2Ni9yYXcuYwpAQCAtNzM1LDYgKzczNSw3IEBA IHN0YXRpYyBpbnQgcmF3djZfcHJvYmVfcHJvdG9fb3B0KHN0cnVjdCBmbG93aTYgKmZsNiwgc3Ry dWN0IG1zZ2hkciAqbXNnKQogc3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0cnVjdCBraW9jYiAq aW9jYiwgc3RydWN0IHNvY2sgKnNrLAogCQkgICBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBs ZW4pCiB7CisJc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHRfdG9fZnJlZSA9IE5VTEw7CiAJc3Ry dWN0IGlwdjZfdHhvcHRpb25zIG9wdF9zcGFjZTsKIAlERUNMQVJFX1NPQ0tBRERSKHN0cnVjdCBz b2NrYWRkcl9pbjYgKiwgc2luNiwgbXNnLT5tc2dfbmFtZSk7CiAJc3RydWN0IGluNl9hZGRyICpk YWRkciwgKmZpbmFsX3AsIGZpbmFsOwpAQCAtODQwLDggKzg0MSwxMCBAQCBzdGF0aWMgaW50IHJh d3Y2X3NlbmRtc2coc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3Qgc29jayAqc2ssCiAJCWlmICgh KG9wdC0+b3B0X25mbGVufG9wdC0+b3B0X2ZsZW4pKQogCQkJb3B0ID0gTlVMTDsKIAl9Ci0JaWYg KG9wdCA9PSBOVUxMKQotCQlvcHQgPSBucC0+b3B0OworCWlmICghb3B0KSB7CisJCW9wdCA9IHR4 b3B0X2dldChucCk7CisJCW9wdF90b19mcmVlID0gb3B0OworCX0KIAlpZiAoZmxvd2xhYmVsKQog CQlvcHQgPSBmbDZfbWVyZ2Vfb3B0aW9ucygmb3B0X3NwYWNlLCBmbG93bGFiZWwsIG9wdCk7CiAJ b3B0ID0gaXB2Nl9maXh1cF9vcHRpb25zKCZvcHRfc3BhY2UsIG9wdCk7CkBAIC05MDIsNiArOTA1 LDcgQEAgZG9uZToKIAlkc3RfcmVsZWFzZShkc3QpOwogb3V0OgogCWZsNl9zb2NrX3JlbGVhc2Uo Zmxvd2xhYmVsKTsKKwl0eG9wdF9wdXQob3B0X3RvX2ZyZWUpOwogCXJldHVybiBlcnIgPCAwID8g ZXJyIDogbGVuOwogZG9fY29uZmlybToKIAlkc3RfY29uZmlybShkc3QpOwpkaWZmIC0tZ2l0IGEv bmV0L2lwdjYvc3luY29va2llcy5jIGIvbmV0L2lwdjYvc3luY29va2llcy5jCmluZGV4IDJmMjVj YjYuLmFhOTY5OTMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3N5bmNvb2tpZXMuYworKysgYi9uZXQv aXB2Ni9zeW5jb29raWVzLmMKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdHJ1Y3Qgc29jayAqY29va2ll X3Y2X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJbWVtc2V0 KCZmbDYsIDAsIHNpemVvZihmbDYpKTsKIAkJZmw2LmZsb3dpNl9wcm90byA9IElQUFJPVE9fVENQ OwogCQlmbDYuZGFkZHIgPSBpcmVxLT5pcl92Nl9ybXRfYWRkcjsKLQkJZmluYWxfcCA9IGZsNl91 cGRhdGVfZHN0KCZmbDYsIG5wLT5vcHQsICZmaW5hbCk7CisJCWZpbmFsX3AgPSBmbDZfdXBkYXRl X2RzdCgmZmw2LCByY3VfZGVyZWZlcmVuY2UobnAtPm9wdCksICZmaW5hbCk7CiAJCWZsNi5zYWRk ciA9IGlyZXEtPmlyX3Y2X2xvY19hZGRyOwogCQlmbDYuZmxvd2k2X29pZiA9IHNrLT5za19ib3Vu ZF9kZXZfaWY7CiAJCWZsNi5mbG93aTZfbWFyayA9IGlyZXEtPmlyX21hcms7CmRpZmYgLS1naXQg YS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuYwppbmRleCBhM2Y5ZjEx Li4yNmZlYWRkIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jCisrKyBiL25ldC9pcHY2 L3RjcF9pcHY2LmMKQEAgLTEzNCw2ICsxMzQsNyBAQCBzdGF0aWMgaW50IHRjcF92Nl9jb25uZWN0 KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKIAlzdHJ1Y3QgaXB2Nl9w aW5mbyAqbnAgPSBpbmV0Nl9zayhzayk7CiAJc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhz ayk7CiAJc3RydWN0IGluNl9hZGRyICpzYWRkciA9IE5VTEwsICpmaW5hbF9wLCBmaW5hbDsKKwlz dHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdDsKIAlzdHJ1Y3QgcnQ2X2luZm8gKnJ0OwogCXN0cnVj dCBmbG93aTYgZmw2OwogCXN0cnVjdCBkc3RfZW50cnkgKmRzdDsKQEAgLTI1Myw3ICsyNTQsOCBA QCBzdGF0aWMgaW50IHRjcF92Nl9jb25uZWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2th ZGRyICp1YWRkciwKIAlmbDYuZmw2X2Rwb3J0ID0gdXNpbi0+c2luNl9wb3J0OwogCWZsNi5mbDZf c3BvcnQgPSBpbmV0LT5pbmV0X3Nwb3J0OwogCi0JZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZm bDYsIG5wLT5vcHQsICZmaW5hbCk7CisJb3B0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChu cC0+b3B0LCBzb2NrX293bmVkX2J5X3VzZXIoc2spKTsKKwlmaW5hbF9wID0gZmw2X3VwZGF0ZV9k c3QoJmZsNiwgb3B0LCAmZmluYWwpOwogCiAJc2VjdXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywg Zmxvd2k2X3RvX2Zsb3dpKCZmbDYpKTsKIApAQCAtMjgyLDkgKzI4NCw5IEBAIHN0YXRpYyBpbnQg dGNwX3Y2X2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAog CQl0Y3BfZmV0Y2hfdGltZXdhaXRfc3RhbXAoc2ssIGRzdCk7CiAKIAlpY3NrLT5pY3NrX2V4dF9o ZHJfbGVuID0gMDsKLQlpZiAobnAtPm9wdCkKLQkJaWNzay0+aWNza19leHRfaGRyX2xlbiA9IChu cC0+b3B0LT5vcHRfZmxlbiArCi0JCQkJCSAgbnAtPm9wdC0+b3B0X25mbGVuKTsKKwlpZiAob3B0 KQorCQlpY3NrLT5pY3NrX2V4dF9oZHJfbGVuID0gb3B0LT5vcHRfZmxlbiArCisJCQkJCSBvcHQt Pm9wdF9uZmxlbjsKIAogCXRwLT5yeF9vcHQubXNzX2NsYW1wID0gSVBWNl9NSU5fTVRVIC0gc2l6 ZW9mKHN0cnVjdCB0Y3BoZHIpIC0gc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKTsKIApAQCAtNTAxLDcg KzUwMyw4IEBAIHN0YXRpYyBpbnQgdGNwX3Y2X3NlbmRfc3luYWNrKHN0cnVjdCBzb2NrICpzaywg c3RydWN0IGRzdF9lbnRyeSAqZHN0LAogCQkJZmw2LT5mbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVs KGlwdjZfaGRyKGlyZXEtPnBrdG9wdHMpKTsKIAogCQlza2Jfc2V0X3F1ZXVlX21hcHBpbmcoc2ti LCBxdWV1ZV9tYXBwaW5nKTsKLQkJZXJyID0gaXA2X3htaXQoc2ssIHNrYiwgZmw2LCBucC0+b3B0 LCBucC0+dGNsYXNzKTsKKwkJZXJyID0gaXA2X3htaXQoc2ssIHNrYiwgZmw2LCByY3VfZGVyZWZl cmVuY2UobnAtPm9wdCksCisJCQkgICAgICAgbnAtPnRjbGFzcyk7CiAJCWVyciA9IG5ldF94bWl0 X2V2YWwoZXJyKTsKIAl9CiAKQEAgLTEwNTIsNiArMTA1NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29j ayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAq c2tiLAogCXN0cnVjdCBpbmV0X3JlcXVlc3Rfc29jayAqaXJlcTsKIAlzdHJ1Y3QgaXB2Nl9waW5m byAqbmV3bnAsICpucCA9IGluZXQ2X3NrKHNrKTsKIAlzdHJ1Y3QgdGNwNl9zb2NrICpuZXd0Y3A2 c2s7CisJc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHQ7CiAJc3RydWN0IGluZXRfc29jayAqbmV3 aW5ldDsKIAlzdHJ1Y3QgdGNwX3NvY2sgKm5ld3RwOwogCXN0cnVjdCBzb2NrICpuZXdzazsKQEAg LTExOTEsMTMgKzExOTUsMTUgQEAgc3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zf c29jayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJICAgYnV0IHdlIG1h a2Ugb25lIG1vcmUgb25lIHRoaW5nIHRoZXJlOiByZWF0dGFjaCBvcHRtZW0KIAkgICB0byBuZXdz ay4KIAkgKi8KLQlpZiAobnAtPm9wdCkKLQkJbmV3bnAtPm9wdCA9IGlwdjZfZHVwX29wdGlvbnMo bmV3c2ssIG5wLT5vcHQpOwotCisJb3B0ID0gcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpOworCWlm IChvcHQpIHsKKwkJb3B0ID0gaXB2Nl9kdXBfb3B0aW9ucyhuZXdzaywgb3B0KTsKKwkJUkNVX0lO SVRfUE9JTlRFUihuZXducC0+b3B0LCBvcHQpOworCX0KIAlpbmV0X2NzayhuZXdzayktPmljc2tf ZXh0X2hkcl9sZW4gPSAwOwotCWlmIChuZXducC0+b3B0KQotCQlpbmV0X2NzayhuZXdzayktPmlj c2tfZXh0X2hkcl9sZW4gPSAobmV3bnAtPm9wdC0+b3B0X25mbGVuICsKLQkJCQkJCSAgICAgbmV3 bnAtPm9wdC0+b3B0X2ZsZW4pOworCWlmIChvcHQpCisJCWluZXRfY3NrKG5ld3NrKS0+aWNza19l eHRfaGRyX2xlbiA9IG9wdC0+b3B0X25mbGVuICsKKwkJCQkJCSAgICBvcHQtPm9wdF9mbGVuOwog CiAJdGNwX3N5bmNfbXNzKG5ld3NrLCBkc3RfbXR1KGRzdCkpOwogCW5ld3RwLT5hZHZtc3MgPSBk c3RfbWV0cmljX2Fkdm1zcyhkc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdWRwLmMgYi9uZXQv aXB2Ni91ZHAuYwppbmRleCBkZDUzMGYwLi5hNWNlNzA1IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni91 ZHAuYworKysgYi9uZXQvaXB2Ni91ZHAuYwpAQCAtMTA4Miw2ICsxMDgyLDcgQEAgaW50IHVkcHY2 X3NlbmRtc2coc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3Qgc29jayAqc2ssCiAJREVDTEFSRV9T T0NLQUREUihzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIHNpbjYsIG1zZy0+bXNnX25hbWUpOwogCXN0 cnVjdCBpbjZfYWRkciAqZGFkZHIsICpmaW5hbF9wLCBmaW5hbDsKIAlzdHJ1Y3QgaXB2Nl90eG9w dGlvbnMgKm9wdCA9IE5VTEw7CisJc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHRfdG9fZnJlZSA9 IE5VTEw7CiAJc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7CiAJc3RydWN0 IGZsb3dpNiBmbDY7CiAJc3RydWN0IGRzdF9lbnRyeSAqZHN0OwpAQCAtMTIzNCw4ICsxMjM1LDEw IEBAIGRvX3VkcF9zZW5kbXNnOgogCQkJb3B0ID0gTlVMTDsKIAkJY29ubmVjdGVkID0gMDsKIAl9 Ci0JaWYgKG9wdCA9PSBOVUxMKQotCQlvcHQgPSBucC0+b3B0OworCWlmICghb3B0KSB7CisJCW9w dCA9IHR4b3B0X2dldChucCk7CisJCW9wdF90b19mcmVlID0gb3B0OworCX0KIAlpZiAoZmxvd2xh YmVsKQogCQlvcHQgPSBmbDZfbWVyZ2Vfb3B0aW9ucygmb3B0X3NwYWNlLCBmbG93bGFiZWwsIG9w dCk7CiAJb3B0ID0gaXB2Nl9maXh1cF9vcHRpb25zKCZvcHRfc3BhY2UsIG9wdCk7CkBAIC0xMzI5 LDYgKzEzMzIsNyBAQCBkb19hcHBlbmRfZGF0YToKIG91dDoKIAlkc3RfcmVsZWFzZShkc3QpOwog CWZsNl9zb2NrX3JlbGVhc2UoZmxvd2xhYmVsKTsKKwl0eG9wdF9wdXQob3B0X3RvX2ZyZWUpOwog CWlmICghZXJyKQogCQlyZXR1cm4gbGVuOwogCS8qCmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRw X2lwNi5jIGIvbmV0L2wydHAvbDJ0cF9pcDYuYwppbmRleCAwZWRiMjYzLi4zODY1ODgyIDEwMDY0 NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2lwNi5jCisrKyBiL25ldC9sMnRwL2wydHBfaXA2LmMKQEAg LTQ4Nyw2ICs0ODcsNyBAQCBzdGF0aWMgaW50IGwydHBfaXA2X3NlbmRtc2coc3RydWN0IGtpb2Ni ICppb2NiLCBzdHJ1Y3Qgc29jayAqc2ssCiAJREVDTEFSRV9TT0NLQUREUihzdHJ1Y3Qgc29ja2Fk ZHJfbDJ0cGlwNiAqLCBsc2EsIG1zZy0+bXNnX25hbWUpOwogCXN0cnVjdCBpbjZfYWRkciAqZGFk ZHIsICpmaW5hbF9wLCBmaW5hbDsKIAlzdHJ1Y3QgaXB2Nl9waW5mbyAqbnAgPSBpbmV0Nl9zayhz ayk7CisJc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHRfdG9fZnJlZSA9IE5VTEw7CiAJc3RydWN0 IGlwdjZfdHhvcHRpb25zICpvcHQgPSBOVUxMOwogCXN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbG93 bGFiZWwgPSBOVUxMOwogCXN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IE5VTEw7CkBAIC01NzYsOCAr NTc3LDEwIEBAIHN0YXRpYyBpbnQgbDJ0cF9pcDZfc2VuZG1zZyhzdHJ1Y3Qga2lvY2IgKmlvY2Is IHN0cnVjdCBzb2NrICpzaywKIAkJCW9wdCA9IE5VTEw7CiAJfQogCi0JaWYgKG9wdCA9PSBOVUxM KQotCQlvcHQgPSBucC0+b3B0OworCWlmICghb3B0KSB7CisJCW9wdCA9IHR4b3B0X2dldChucCk7 CisJCW9wdF90b19mcmVlID0gb3B0OworCX0KIAlpZiAoZmxvd2xhYmVsKQogCQlvcHQgPSBmbDZf bWVyZ2Vfb3B0aW9ucygmb3B0X3NwYWNlLCBmbG93bGFiZWwsIG9wdCk7CiAJb3B0ID0gaXB2Nl9m aXh1cF9vcHRpb25zKCZvcHRfc3BhY2UsIG9wdCk7CkBAIC02MzIsNiArNjM1LDcgQEAgZG9uZToK IAlkc3RfcmVsZWFzZShkc3QpOwogb3V0OgogCWZsNl9zb2NrX3JlbGVhc2UoZmxvd2xhYmVsKTsK Kwl0eG9wdF9wdXQob3B0X3RvX2ZyZWUpOwogCiAJcmV0dXJuIGVyciA8IDAgPyBlcnIgOiBsZW47 CiAKLS0gCjIuNC4xCgoKRnJvbSAxNmZkODkzOGNjMDRkNWU1NmU3YWQ4M2QyYjc5ZTFjMTc2YTUz ZDEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb25zdGFudGluIEtobGVibmlrb3Yg PGtvY3Q5aUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMSBEZWMgMjAxNSAwMToxNDo0OCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggMjIvMjNdIG5ldC9uZWlnaGJvdXI6IGZpeCBjcmFzaCBhdCBkdW1waW5n IGRldmljZS1hZ25vc3RpYwogcHJveHkgZW50cmllcwoKWyBVcHN0cmVhbSBjb21taXQgNmFkYzVm ZDZhMTQyYzZlMmM4MDU3NGMxZGIwYzdjMTdkZWRhYTQyZSBdCgpQcm94eSBlbnRyaWVzIGNvdWxk IGhhdmUgbnVsbCBwb2ludGVyIHRvIG5ldC1kZXZpY2UuCgpTaWduZWQtb2ZmLWJ5OiBLb25zdGFu dGluIEtobGVibmlrb3YgPGtvY3Q5aUBnbWFpbC5jb20+CkZpeGVzOiA4NDkyMGMxNDIwZTIgKCJu ZXQ6IEFsbG93IGlwdjYgcHJveGllcyBhbmQgYXJwIHByb3hpZXMgYmUgc2hvd24gd2l0aCBpcHJv dXRlMiIpClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD4KLS0tCiBuZXQvY29yZS9uZWlnaGJvdXIuYyB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9uZWln aGJvdXIuYyBiL25ldC9jb3JlL25laWdoYm91ci5jCmluZGV4IDJiMGQ5OWQuLjA0Nzg0MjMgMTAw NjQ0Ci0tLSBhL25ldC9jb3JlL25laWdoYm91ci5jCisrKyBiL25ldC9jb3JlL25laWdoYm91ci5j CkBAIC0yMjYzLDcgKzIyNjMsNyBAQCBzdGF0aWMgaW50IHBuZWlnaF9maWxsX2luZm8oc3RydWN0 IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBuZWlnaF9lbnRyeSAqcG4sCiAJbmRtLT5uZG1fcGFkMiAg ICA9IDA7CiAJbmRtLT5uZG1fZmxhZ3MJID0gcG4tPmZsYWdzIHwgTlRGX1BST1hZOwogCW5kbS0+ bmRtX3R5cGUJID0gUlROX1VOSUNBU1Q7Ci0JbmRtLT5uZG1faWZpbmRleCA9IHBuLT5kZXYtPmlm aW5kZXg7CisJbmRtLT5uZG1faWZpbmRleCA9IHBuLT5kZXYgPyBwbi0+ZGV2LT5pZmluZGV4IDog MDsKIAluZG0tPm5kbV9zdGF0ZQkgPSBOVURfTk9ORTsKIAogCWlmIChubGFfcHV0KHNrYiwgTkRB X0RTVCwgdGJsLT5rZXlfbGVuLCBwbi0+a2V5KSkKQEAgLTIzMzcsNyArMjMzNyw3IEBAIHN0YXRp YyBpbnQgcG5laWdoX2R1bXBfdGFibGUoc3RydWN0IG5laWdoX3RhYmxlICp0YmwsIHN0cnVjdCBz a19idWZmICpza2IsCiAJCWlmIChoID4gc19oKQogCQkJc19pZHggPSAwOwogCQlmb3IgKG4gPSB0 YmwtPnBoYXNoX2J1Y2tldHNbaF0sIGlkeCA9IDA7IG47IG4gPSBuLT5uZXh0KSB7Ci0JCQlpZiAo ZGV2X25ldChuLT5kZXYpICE9IG5ldCkKKwkJCWlmIChwbmVpZ2hfbmV0KG4pICE9IG5ldCkKIAkJ CQljb250aW51ZTsKIAkJCWlmIChpZHggPCBzX2lkeCkKIAkJCQlnb3RvIG5leHQ7Ci0tIAoyLjQu MQoKCkZyb20gOThjYzA1ZTNjNmM0NzVhMWM1ZjMyOWU3ZDc2ZmQ4MWUwMDU0ZjYyYSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29t PgpEYXRlOiBUdWUsIDEgRGVjIDIwMTUgMDc6MjA6MDcgLTA4MDAKU3ViamVjdDogW1BBVENIIDIz LzIzXSBpcHY2OiBzY3RwOiBpbXBsZW1lbnQgc2N0cF92Nl9kZXN0cm95X3NvY2soKQoKWyBVcHN0 cmVhbSBjb21taXQgNjAyZGQ2MmRmYmRhM2U2M2EyZDZhM2NiZGU5NTNlYmU4MmJmNTA4NyBdCgpE bWl0cnkgVnl1a292IHJlcG9ydGVkIGEgbWVtb3J5IGxlYWsgdXNpbmcgSVBWNiBTQ1RQIHNvY2tl dHMuCgpXZSBuZWVkIHRvIGNhbGwgaW5ldDZfZGVzdHJveV9zb2NrKCkgdG8gcHJvcGVybHkgcmVs ZWFzZQppbmV0NiBzcGVjaWZpYyBmaWVsZHMuCgpSZXBvcnRlZC1ieTogRG1pdHJ5IFZ5dWtvdiA8 ZHZ5dWtvdkBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0 QGdvb2dsZS5jb20+CkFja2VkLWJ5OiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gu bmV0PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ Ci0tLQogbmV0L3NjdHAvc29ja2V0LmMgfCA5ICsrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDgg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NvY2tl dC5jIGIvbmV0L3NjdHAvc29ja2V0LmMKaW5kZXggOTllNjQwYy4uZmIwODJhYSAxMDA2NDQKLS0t IGEvbmV0L3NjdHAvc29ja2V0LmMKKysrIGIvbmV0L3NjdHAvc29ja2V0LmMKQEAgLTczOTMsNiAr NzM5MywxMyBAQCBzdHJ1Y3QgcHJvdG8gc2N0cF9wcm90ID0gewogCiAjaWYgSVNfRU5BQkxFRChD T05GSUdfSVBWNikKIAorI2luY2x1ZGUgPG5ldC90cmFuc3BfdjYuaD4KK3N0YXRpYyB2b2lkIHNj dHBfdjZfZGVzdHJveV9zb2NrKHN0cnVjdCBzb2NrICpzaykKK3sKKwlzY3RwX2Rlc3Ryb3lfc29j ayhzayk7CisJaW5ldDZfZGVzdHJveV9zb2NrKHNrKTsKK30KKwogc3RydWN0IHByb3RvIHNjdHB2 Nl9wcm90ID0gewogCS5uYW1lCQk9ICJTQ1RQdjYiLAogCS5vd25lcgkJPSBUSElTX01PRFVMRSwK QEAgLTc0MDIsNyArNzQwOSw3IEBAIHN0cnVjdCBwcm90byBzY3RwdjZfcHJvdCA9IHsKIAkuYWNj ZXB0CQk9IHNjdHBfYWNjZXB0LAogCS5pb2N0bAkJPSBzY3RwX2lvY3RsLAogCS5pbml0CQk9IHNj dHBfaW5pdF9zb2NrLAotCS5kZXN0cm95CT0gc2N0cF9kZXN0cm95X3NvY2ssCisJLmRlc3Ryb3kJ PSBzY3RwX3Y2X2Rlc3Ryb3lfc29jaywKIAkuc2h1dGRvd24JPSBzY3RwX3NodXRkb3duLAogCS5z ZXRzb2Nrb3B0CT0gc2N0cF9zZXRzb2Nrb3B0LAogCS5nZXRzb2Nrb3B0CT0gc2N0cF9nZXRzb2Nr b3B0LAotLSAKMi40LjEKCg== ----Next_Part(Thu_Dec_10_14_37_58_2015_327)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_41.mbox" RnJvbSA1MmU5ZjljODJjMDg0YjA3YTVkYjEwYjFiOWI0MjVkYTE5YzdhY2MxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWluZXIgV2Vpa3VzYXQgPHJ3ZWlrdXNhdEBtb2JpbGVhY3Rp dmVkZWZlbnNlLmNvbT4KRGF0ZTogRnJpLCAyMCBOb3YgMjAxNSAyMjowNzoyMyArMDAwMApTdWJq ZWN0OiBbUEFUQ0ggMDEvMjZdIHVuaXg6IGF2b2lkIHVzZS1hZnRlci1mcmVlIGluIGVwX3JlbW92 ZV93YWl0X3F1ZXVlCgpbIFVwc3RyZWFtIGNvbW1pdCA3ZDI2NzI3OGE5ZWNlOTYzZDc3ZWVmZWM2 MTYzMDIyM2ZjZTA4YzZjIF0KClJhaW5lciBXZWlrdXNhdCA8cndlaWt1c2F0QG1vYmlsZWFjdGl2 ZWRlZmVuc2UuY29tPiB3cml0ZXM6CkFuIEFGX1VOSVggZGF0YWdyYW0gc29ja2V0IGJlaW5nIHRo ZSBjbGllbnQgaW4gYW4gbjoxIGFzc29jaWF0aW9uIHdpdGgKc29tZSBzZXJ2ZXIgc29ja2V0IGlz IG9ubHkgYWxsb3dlZCB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBzZXJ2ZXIgaWYgdGhlCnJlY2Vp dmUgcXVldWUgb2YgdGhpcyBzb2NrZXQgY29udGFpbnMgYXQgbW9zdCBza19tYXhfYWNrX2JhY2ts b2cKZGF0YWdyYW1zLiBUaGlzIGltcGxpZXMgdGhhdCBwcm9zcGVjdGl2ZSB3cml0ZXJzIG1pZ2h0 IGJlIGZvcmNlZCB0byBnbwp0byBzbGVlcCBkZXNwaXRlIG5vbmUgb2YgdGhlIG1lc3NhZ2UgcHJl c2VudGx5IGVucXVldWVkIG9uIHRoZSBzZXJ2ZXIKcmVjZWl2ZSBxdWV1ZSB3ZXJlIHNlbnQgYnkg dGhlbS4gSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlc2Ugd2lsbCBiZQp3b2tlbiB1cCBvbmNl IHNwYWNlIGJlY29tZXMgYWdhaW4gYXZhaWxhYmxlLCB0aGUgcHJlc2VudCB1bml4X2RncmFtX3Bv bGwKcm91dGluZSBkb2VzIGEgc2Vjb25kIHNvY2tfcG9sbF93YWl0IGNhbGwgd2l0aCB0aGUgcGVl cl93YWl0IHdhaXQgcXVldWUKb2YgdGhlIHNlcnZlciBzb2NrZXQgYXMgcXVldWUgYXJndW1lbnQg KHVuaXhfZGdyYW1fcmVjdm1zZyBkb2VzIGEgd2FrZQp1cCBvbiB0aGlzIHF1ZXVlIGFmdGVyIGEg ZGF0YWdyYW0gd2FzIHJlY2VpdmVkKS4gVGhpcyBpcyBpbmhlcmVudGx5CnByb2JsZW1hdGljIGJl Y2F1c2UgdGhlIHNlcnZlciBzb2NrZXQgaXMgb25seSBndWFyYW50ZWVkIHRvIHJlbWFpbiBhbGl2 ZQpmb3IgYXMgbG9uZyBhcyB0aGUgY2xpZW50IHN0aWxsIGhvbGRzIGEgcmVmZXJlbmNlIHRvIGl0 LiBJbiBjYXNlIHRoZQpjb25uZWN0aW9uIGlzIGRpc3NvbHZlZCB2aWEgY29ubmVjdCBvciBieSB0 aGUgZGVhZCBwZWVyIGRldGVjdGlvbiBsb2dpYwppbiB1bml4X2RncmFtX3NlbmRtc2csIHRoZSBz ZXJ2ZXIgc29ja2V0IG1heSBiZSBmcmVlZCBkZXNwaXRlICJ0aGUKcG9sbGluZyBtZWNoYW5pc20i IChpbiBwYXJ0aWN1bGFyLCBlcG9sbCkgc3RpbGwgaGFzIGEgcG9pbnRlciB0byB0aGUKY29ycmVz cG9uZGluZyBwZWVyX3dhaXQgcXVldWUuIFRoZXJlJ3Mgbm8gd2F5IHRvIGZvcmNpYmx5IGRlcmVn aXN0ZXIgYQp3YWl0IHF1ZXVlIHdpdGggZXBvbGwuCgpCYXNlZCBvbiBhbiBpZGVhIGJ5IEphc29u IEJhcm9uLCB0aGUgcGF0Y2ggYmVsb3cgY2hhbmdlcyB0aGUgY29kZSBzdWNoCnRoYXQgYSB3YWl0 X3F1ZXVlX3QgYmVsb25naW5nIHRvIHRoZSBjbGllbnQgc29ja2V0IGlzIGVucXVldWVkIG9uIHRo ZQpwZWVyX3dhaXQgcXVldWUgb2YgdGhlIHNlcnZlciB3aGVuZXZlciB0aGUgcGVlciByZWNlaXZl IHF1ZXVlIGZ1bGwKY29uZGl0aW9uIGlzIGRldGVjdGVkIGJ5IGVpdGhlciBhIHNlbmRtc2cgb3Ig YSBwb2xsLiBBIHdha2UgdXAgb24gdGhlCnBlZXIgcXVldWUgaXMgdGhlbiByZWxheWVkIHRvIHRo ZSBvcmRpbmFyeSB3YWl0IHF1ZXVlIG9mIHRoZSBjbGllbnQKc29ja2V0IHZpYSB3YWtlIGZ1bmN0 aW9uLiBUaGUgY29ubmVjdGlvbiB0byB0aGUgcGVlciB3YWl0IHF1ZXVlIGlzIGFnYWluCmRpc3Nv bHZlZCBpZiBlaXRoZXIgYSB3YWtlIHVwIGlzIGFib3V0IHRvIGJlIHJlbGF5ZWQgb3IgdGhlIGNs aWVudApzb2NrZXQgcmVjb25uZWN0cyBvciBhIGRlYWQgcGVlciBpcyBkZXRlY3RlZCBvciB0aGUg Y2xpZW50IHNvY2tldCBpcwppdHNlbGYgY2xvc2VkLiBUaGlzIGVuYWJsZXMgcmVtb3ZpbmcgdGhl IHNlY29uZCBzb2NrX3BvbGxfd2FpdCBmcm9tCnVuaXhfZGdyYW1fcG9sbCwgdGh1cyBhdm9pZGlu ZyB0aGUgdXNlLWFmdGVyLWZyZWUsIHdoaWxlIHN0aWxsIGVuc3VyaW5nCnRoYXQgbm8gYmxvY2tl ZCB3cml0ZXIgc2xlZXBzIGZvcmV2ZXIuCgpTaWduZWQtb2ZmLWJ5OiBSYWluZXIgV2Vpa3VzYXQg PHJ3ZWlrdXNhdEBtb2JpbGVhY3RpdmVkZWZlbnNlLmNvbT4KRml4ZXM6IGVjMGQyMTVmOTQyMCAo ImFmX3VuaXg6IGZpeCAncG9sbCBmb3Igd3JpdGUnL2Nvbm5lY3RlZCBER1JBTSBzb2NrZXRzIikK UmV2aWV3ZWQtYnk6IEphc29uIEJhcm9uIDxqYmFyb25AYWthbWFpLmNvbT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1ZGUvbmV0 L2FmX3VuaXguaCB8ICAgMSArCiBuZXQvdW5peC9hZl91bml4LmMgICAgfCAxODMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIDIgZmlsZXMgY2hhbmdl ZCwgMTY1IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbmV0L2FmX3VuaXguaCBiL2luY2x1ZGUvbmV0L2FmX3VuaXguaAppbmRleCBkZmU0ZGRmLi5l ODMwYzNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9hZl91bml4LmgKKysrIGIvaW5jbHVkZS9u ZXQvYWZfdW5peC5oCkBAIC02Myw2ICs2Myw3IEBAIHN0cnVjdCB1bml4X3NvY2sgewogI2RlZmlu ZSBVTklYX0dDX0NBTkRJREFURQkwCiAjZGVmaW5lIFVOSVhfR0NfTUFZQkVfQ1lDTEUJMQogCXN0 cnVjdCBzb2NrZXRfd3EJcGVlcl93cTsKKwl3YWl0X3F1ZXVlX3QJCXBlZXJfd2FrZTsKIH07CiAK IHN0YXRpYyBpbmxpbmUgc3RydWN0IHVuaXhfc29jayAqdW5peF9zayhzdHJ1Y3Qgc29jayAqc2sp CmRpZmYgLS1naXQgYS9uZXQvdW5peC9hZl91bml4LmMgYi9uZXQvdW5peC9hZl91bml4LmMKaW5k ZXggNzZlNjY2OS4uMTk3NWZkOCAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jCisrKyBi L25ldC91bml4L2FmX3VuaXguYwpAQCAtMzE2LDYgKzMxNiwxMTggQEAgZm91bmQ6CiAJcmV0dXJu IHM7CiB9CiAKKy8qIFN1cHBvcnQgY29kZSBmb3IgYXN5bW1ldHJpY2FsbHkgY29ubmVjdGVkIGRn cmFtIHNvY2tldHMKKyAqCisgKiBJZiBhIGRhdGFncmFtIHNvY2tldCBpcyBjb25uZWN0ZWQgdG8g YSBzb2NrZXQgbm90IGl0c2VsZiBjb25uZWN0ZWQKKyAqIHRvIHRoZSBmaXJzdCBzb2NrZXQgKGVn LCAvZGV2L2xvZyksIGNsaWVudHMgbWF5IG9ubHkgZW5xdWV1ZSBtb3JlCisgKiBtZXNzYWdlcyBp ZiB0aGUgcHJlc2VudCByZWNlaXZlIHF1ZXVlIG9mIHRoZSBzZXJ2ZXIgc29ja2V0IGlzIG5vdAor ICogInRvbyBsYXJnZSIuIFRoaXMgbWVhbnMgdGhlcmUncyBhIHNlY29uZCB3cml0ZWFiaWxpdHkg Y29uZGl0aW9uCisgKiBwb2xsIGFuZCBzZW5kbXNnIG5lZWQgdG8gdGVzdC4gVGhlIGRncmFtIHJl Y3YgY29kZSB3aWxsIGRvIGEgd2FrZQorICogdXAgb24gdGhlIHBlZXJfd2FpdCB3YWl0IHF1ZXVl IG9mIGEgc29ja2V0IHVwb24gcmVjZXB0aW9uIG9mIGEKKyAqIGRhdGFncmFtIHdoaWNoIG5lZWRz IHRvIGJlIHByb3BhZ2F0ZWQgdG8gc2xlZXBpbmcgd291bGQtYmUgd3JpdGVycworICogc2luY2Ug dGhlc2UgbWlnaHQgbm90IGhhdmUgc2VudCBhbnl0aGluZyBzbyBmYXIuIFRoaXMgY2FuJ3QgYmUK KyAqIGFjY29tcGxpc2hlZCB2aWEgcG9sbF93YWl0IGJlY2F1c2UgdGhlIGxpZmV0aW1lIG9mIHRo ZSBzZXJ2ZXIKKyAqIHNvY2tldCBtaWdodCBiZSBsZXNzIHRoYW4gdGhhdCBvZiBpdHMgY2xpZW50 cyBpZiB0aGVzZSBicmVhayB0aGVpcgorICogYXNzb2NpYXRpb24gd2l0aCBpdCBvciBpZiB0aGUg c2VydmVyIHNvY2tldCBpcyBjbG9zZWQgd2hpbGUgY2xpZW50cworICogYXJlIHN0aWxsIGNvbm5l Y3RlZCB0byBpdCBhbmQgdGhlcmUncyBubyB3YXkgdG8gaW5mb3JtICJhIHBvbGxpbmcKKyAqIGlt cGxlbWVudGF0aW9uIiB0aGF0IGl0IHNob3VsZCBsZXQgZ28gb2YgYSBjZXJ0YWluIHdhaXQgcXVl dWUKKyAqCisgKiBJbiBvcmRlciB0byBwcm9wYWdhdGUgYSB3YWtlIHVwLCBhIHdhaXRfcXVldWVf dCBvZiB0aGUgY2xpZW50CisgKiBzb2NrZXQgaXMgZW5xdWV1ZWQgb24gdGhlIHBlZXJfd2FpdCBx dWV1ZSBvZiB0aGUgc2VydmVyIHNvY2tldAorICogd2hvc2Ugd2FrZSBmdW5jdGlvbiBkb2VzIGEg d2FrZV91cCBvbiB0aGUgb3JkaW5hcnkgY2xpZW50IHNvY2tldAorICogd2FpdCBxdWV1ZS4gVGhp cyBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIHdoZW5ldmVyIGEgd3JpdGUgKG9yCisgKiBwb2xs IGZvciB3cml0ZSkgaGl0IHRoZSBmbG93IGNvbnRyb2wgY29uZGl0aW9uIGFuZCBicm9rZW4gd2hl biB0aGUKKyAqIGFzc29jaWF0aW9uIHRvIHRoZSBzZXJ2ZXIgc29ja2V0IGlzIGRpc3NvbHZlZCBv ciBhZnRlciBhIHdha2UgdXAKKyAqIHdhcyByZWxheWVkLgorICovCisKK3N0YXRpYyBpbnQgdW5p eF9kZ3JhbV9wZWVyX3dha2VfcmVsYXkod2FpdF9xdWV1ZV90ICpxLCB1bnNpZ25lZCBtb2RlLCBp bnQgZmxhZ3MsCisJCQkJICAgICAgdm9pZCAqa2V5KQoreworCXN0cnVjdCB1bml4X3NvY2sgKnU7 CisJd2FpdF9xdWV1ZV9oZWFkX3QgKnVfc2xlZXA7CisKKwl1ID0gY29udGFpbmVyX29mKHEsIHN0 cnVjdCB1bml4X3NvY2ssIHBlZXJfd2FrZSk7CisKKwlfX3JlbW92ZV93YWl0X3F1ZXVlKCZ1bml4 X3NrKHUtPnBlZXJfd2FrZS5wcml2YXRlKS0+cGVlcl93YWl0LAorCQkJICAgIHEpOworCXUtPnBl ZXJfd2FrZS5wcml2YXRlID0gTlVMTDsKKworCS8qIHJlbGF5aW5nIGNhbiBvbmx5IGhhcHBlbiB3 aGlsZSB0aGUgd3Egc3RpbGwgZXhpc3RzICovCisJdV9zbGVlcCA9IHNrX3NsZWVwKCZ1LT5zayk7 CisJaWYgKHVfc2xlZXApCisJCXdha2VfdXBfaW50ZXJydXB0aWJsZV9wb2xsKHVfc2xlZXAsIGtl eSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1bml4X2RncmFtX3BlZXJfd2FrZV9j b25uZWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKm90aGVyKQoreworCXN0cnVjdCB1 bml4X3NvY2sgKnUsICp1X290aGVyOworCWludCByYzsKKworCXUgPSB1bml4X3NrKHNrKTsKKwl1 X290aGVyID0gdW5peF9zayhvdGhlcik7CisJcmMgPSAwOworCXNwaW5fbG9jaygmdV9vdGhlci0+ cGVlcl93YWl0LmxvY2spOworCisJaWYgKCF1LT5wZWVyX3dha2UucHJpdmF0ZSkgeworCQl1LT5w ZWVyX3dha2UucHJpdmF0ZSA9IG90aGVyOworCQlfX2FkZF93YWl0X3F1ZXVlKCZ1X290aGVyLT5w ZWVyX3dhaXQsICZ1LT5wZWVyX3dha2UpOworCisJCXJjID0gMTsKKwl9CisKKwlzcGluX3VubG9j aygmdV9vdGhlci0+cGVlcl93YWl0LmxvY2spOworCXJldHVybiByYzsKK30KKworc3RhdGljIHZv aWQgdW5peF9kZ3JhbV9wZWVyX3dha2VfZGlzY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssCisJCQkJ CSAgICBzdHJ1Y3Qgc29jayAqb3RoZXIpCit7CisJc3RydWN0IHVuaXhfc29jayAqdSwgKnVfb3Ro ZXI7CisKKwl1ID0gdW5peF9zayhzayk7CisJdV9vdGhlciA9IHVuaXhfc2sob3RoZXIpOworCXNw aW5fbG9jaygmdV9vdGhlci0+cGVlcl93YWl0LmxvY2spOworCisJaWYgKHUtPnBlZXJfd2FrZS5w cml2YXRlID09IG90aGVyKSB7CisJCV9fcmVtb3ZlX3dhaXRfcXVldWUoJnVfb3RoZXItPnBlZXJf d2FpdCwgJnUtPnBlZXJfd2FrZSk7CisJCXUtPnBlZXJfd2FrZS5wcml2YXRlID0gTlVMTDsKKwl9 CisKKwlzcGluX3VubG9jaygmdV9vdGhlci0+cGVlcl93YWl0LmxvY2spOworfQorCitzdGF0aWMg dm9pZCB1bml4X2RncmFtX3BlZXJfd2FrZV9kaXNjb25uZWN0X3dha2V1cChzdHJ1Y3Qgc29jayAq c2ssCisJCQkJCQkgICBzdHJ1Y3Qgc29jayAqb3RoZXIpCit7CisJdW5peF9kZ3JhbV9wZWVyX3dh a2VfZGlzY29ubmVjdChzaywgb3RoZXIpOworCXdha2VfdXBfaW50ZXJydXB0aWJsZV9wb2xsKHNr X3NsZWVwKHNrKSwKKwkJCQkgICBQT0xMT1VUIHwKKwkJCQkgICBQT0xMV1JOT1JNIHwKKwkJCQkg ICBQT0xMV1JCQU5EKTsKK30KKworLyogcHJlY29uZGl0aW9uczoKKyAqCS0gdW5peF9wZWVyKHNr KSA9PSBvdGhlcgorICoJLSBhc3NvY2lhdGlvbiBpcyBzdGFibGUKKyAqLworc3RhdGljIGludCB1 bml4X2RncmFtX3BlZXJfd2FrZV9tZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpvdGhl cikKK3sKKwlpbnQgY29ubmVjdGVkOworCisJY29ubmVjdGVkID0gdW5peF9kZ3JhbV9wZWVyX3dh a2VfY29ubmVjdChzaywgb3RoZXIpOworCisJaWYgKHVuaXhfcmVjdnFfZnVsbChvdGhlcikpCisJ CXJldHVybiAxOworCisJaWYgKGNvbm5lY3RlZCkKKwkJdW5peF9kZ3JhbV9wZWVyX3dha2VfZGlz Y29ubmVjdChzaywgb3RoZXIpOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50 IHVuaXhfd3JpdGFibGUoc3RydWN0IHNvY2sgKnNrKQogewogCXJldHVybiAoYXRvbWljX3JlYWQo JnNrLT5za193bWVtX2FsbG9jKSA8PCAyKSA8PSBzay0+c2tfc25kYnVmOwpAQCAtNDIwLDYgKzUz Miw4IEBAIHN0YXRpYyB2b2lkIHVuaXhfcmVsZWFzZV9zb2NrKHN0cnVjdCBzb2NrICpzaywgaW50 IGVtYnJpb24pCiAJCQlza3BhaXItPnNrX3N0YXRlX2NoYW5nZShza3BhaXIpOwogCQkJc2tfd2Fr ZV9hc3luYyhza3BhaXIsIFNPQ0tfV0FLRV9XQUlURCwgUE9MTF9IVVApOwogCQl9CisKKwkJdW5p eF9kZ3JhbV9wZWVyX3dha2VfZGlzY29ubmVjdChzaywgc2twYWlyKTsKIAkJc29ja19wdXQoc2tw YWlyKTsgLyogSXQgbWF5IG5vdyBkaWUgKi8KIAkJdW5peF9wZWVyKHNrKSA9IE5VTEw7CiAJfQpA QCAtNjQ4LDYgKzc2Miw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdW5peF9jcmVhdGUxKHN0cnVj dCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaykKIAlJTklUX0xJU1RfSEVBRCgmdS0+bGlu ayk7CiAJbXV0ZXhfaW5pdCgmdS0+cmVhZGxvY2spOyAvKiBzaW5nbGUgdGFzayByZWFkaW5nIGxv Y2sgKi8KIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ1LT5wZWVyX3dhaXQpOworCWluaXRfd2FpdHF1 ZXVlX2Z1bmNfZW50cnkoJnUtPnBlZXJfd2FrZSwgdW5peF9kZ3JhbV9wZWVyX3dha2VfcmVsYXkp OwogCXVuaXhfaW5zZXJ0X3NvY2tldCh1bml4X3NvY2tldHNfdW5ib3VuZChzayksIHNrKTsKIG91 dDoKIAlpZiAoc2sgPT0gTlVMTCkKQEAgLTEwMTUsNiArMTEzMCw4IEBAIHJlc3RhcnQ6CiAJaWYg KHVuaXhfcGVlcihzaykpIHsKIAkJc3RydWN0IHNvY2sgKm9sZF9wZWVyID0gdW5peF9wZWVyKHNr KTsKIAkJdW5peF9wZWVyKHNrKSA9IG90aGVyOworCQl1bml4X2RncmFtX3BlZXJfd2FrZV9kaXNj b25uZWN0X3dha2V1cChzaywgb2xkX3BlZXIpOworCiAJCXVuaXhfc3RhdGVfZG91YmxlX3VubG9j ayhzaywgb3RoZXIpOwogCiAJCWlmIChvdGhlciAhPSBvbGRfcGVlcikKQEAgLTE0NTMsNiArMTU3 MCw3IEBAIHN0YXRpYyBpbnQgdW5peF9kZ3JhbV9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ss IHN0cnVjdCBtc2doZHIgKm1zZywKIAlzdHJ1Y3Qgc2NtX2Nvb2tpZSBzY207CiAJaW50IG1heF9s ZXZlbDsKIAlpbnQgZGF0YV9sZW4gPSAwOworCWludCBza19sb2NrZWQ7CiAKIAl3YWl0X2Zvcl91 bml4X2djKCk7CiAJZXJyID0gc2NtX3NlbmQoc29jaywgbXNnLCAmc2NtLCBmYWxzZSk7CkBAIC0x NTMyLDEyICsxNjUwLDE0IEBAIHJlc3RhcnQ6CiAJCWdvdG8gb3V0X2ZyZWU7CiAJfQogCisJc2tf bG9ja2VkID0gMDsKIAl1bml4X3N0YXRlX2xvY2sob3RoZXIpOworcmVzdGFydF9sb2NrZWQ6CiAJ ZXJyID0gLUVQRVJNOwogCWlmICghdW5peF9tYXlfc2VuZChzaywgb3RoZXIpKQogCQlnb3RvIG91 dF91bmxvY2s7CiAKLQlpZiAoc29ja19mbGFnKG90aGVyLCBTT0NLX0RFQUQpKSB7CisJaWYgKHVu bGlrZWx5KHNvY2tfZmxhZyhvdGhlciwgU09DS19ERUFEKSkpIHsKIAkJLyoKIAkJICoJQ2hlY2sg d2l0aCAxMDAzLjFnIC0gd2hhdCBzaG91bGQKIAkJICoJZGF0YWdyYW0gZXJyb3IKQEAgLTE1NDUs MTAgKzE2NjUsMTQgQEAgcmVzdGFydDoKIAkJdW5peF9zdGF0ZV91bmxvY2sob3RoZXIpOwogCQlz b2NrX3B1dChvdGhlcik7CiAKKwkJaWYgKCFza19sb2NrZWQpCisJCQl1bml4X3N0YXRlX2xvY2so c2spOworCiAJCWVyciA9IDA7Ci0JCXVuaXhfc3RhdGVfbG9jayhzayk7CiAJCWlmICh1bml4X3Bl ZXIoc2spID09IG90aGVyKSB7CiAJCQl1bml4X3BlZXIoc2spID0gTlVMTDsKKwkJCXVuaXhfZGdy YW1fcGVlcl93YWtlX2Rpc2Nvbm5lY3Rfd2FrZXVwKHNrLCBvdGhlcik7CisKIAkJCXVuaXhfc3Rh dGVfdW5sb2NrKHNrKTsKIAogCQkJdW5peF9kZ3JhbV9kaXNjb25uZWN0ZWQoc2ssIG90aGVyKTsK QEAgLTE1NzQsMjEgKzE2OTgsMzggQEAgcmVzdGFydDoKIAkJCWdvdG8gb3V0X3VubG9jazsKIAl9 CiAKLQlpZiAodW5peF9wZWVyKG90aGVyKSAhPSBzayAmJiB1bml4X3JlY3ZxX2Z1bGwob3RoZXIp KSB7Ci0JCWlmICghdGltZW8pIHsKLQkJCWVyciA9IC1FQUdBSU47Ci0JCQlnb3RvIG91dF91bmxv Y2s7CisJaWYgKHVubGlrZWx5KHVuaXhfcGVlcihvdGhlcikgIT0gc2sgJiYgdW5peF9yZWN2cV9m dWxsKG90aGVyKSkpIHsKKwkJaWYgKHRpbWVvKSB7CisJCQl0aW1lbyA9IHVuaXhfd2FpdF9mb3Jf cGVlcihvdGhlciwgdGltZW8pOworCisJCQllcnIgPSBzb2NrX2ludHJfZXJybm8odGltZW8pOwor CQkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQorCQkJCWdvdG8gb3V0X2ZyZWU7CisKKwkJ CWdvdG8gcmVzdGFydDsKIAkJfQogCi0JCXRpbWVvID0gdW5peF93YWl0X2Zvcl9wZWVyKG90aGVy LCB0aW1lbyk7CisJCWlmICghc2tfbG9ja2VkKSB7CisJCQl1bml4X3N0YXRlX3VubG9jayhvdGhl cik7CisJCQl1bml4X3N0YXRlX2RvdWJsZV9sb2NrKHNrLCBvdGhlcik7CisJCX0KIAotCQllcnIg PSBzb2NrX2ludHJfZXJybm8odGltZW8pOwotCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkp Ci0JCQlnb3RvIG91dF9mcmVlOworCQlpZiAodW5peF9wZWVyKHNrKSAhPSBvdGhlciB8fAorCQkg ICAgdW5peF9kZ3JhbV9wZWVyX3dha2VfbWUoc2ssIG90aGVyKSkgeworCQkJZXJyID0gLUVBR0FJ TjsKKwkJCXNrX2xvY2tlZCA9IDE7CisJCQlnb3RvIG91dF91bmxvY2s7CisJCX0KIAotCQlnb3Rv IHJlc3RhcnQ7CisJCWlmICghc2tfbG9ja2VkKSB7CisJCQlza19sb2NrZWQgPSAxOworCQkJZ290 byByZXN0YXJ0X2xvY2tlZDsKKwkJfQogCX0KIAorCWlmICh1bmxpa2VseShza19sb2NrZWQpKQor CQl1bml4X3N0YXRlX3VubG9jayhzayk7CisKIAlpZiAoc29ja19mbGFnKG90aGVyLCBTT0NLX1JD VlRTVEFNUCkpCiAJCV9fbmV0X3RpbWVzdGFtcChza2IpOwogCW1heWJlX2FkZF9jcmVkcyhza2Is IHNvY2ssIG90aGVyKTsKQEAgLTE2MDIsNiArMTc0Myw4IEBAIHJlc3RhcnQ6CiAJcmV0dXJuIGxl bjsKIAogb3V0X3VubG9jazoKKwlpZiAoc2tfbG9ja2VkKQorCQl1bml4X3N0YXRlX3VubG9jayhz ayk7CiAJdW5peF9zdGF0ZV91bmxvY2sob3RoZXIpOwogb3V0X2ZyZWU6CiAJa2ZyZWVfc2tiKHNr Yik7CkBAIC0yMjQ1LDE0ICsyMzg4LDE2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgdW5peF9kZ3Jh bV9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLAogCQlyZXR1cm4g bWFzazsKIAogCXdyaXRhYmxlID0gdW5peF93cml0YWJsZShzayk7Ci0Jb3RoZXIgPSB1bml4X3Bl ZXJfZ2V0KHNrKTsKLQlpZiAob3RoZXIpIHsKLQkJaWYgKHVuaXhfcGVlcihvdGhlcikgIT0gc2sp IHsKLQkJCXNvY2tfcG9sbF93YWl0KGZpbGUsICZ1bml4X3NrKG90aGVyKS0+cGVlcl93YWl0LCB3 YWl0KTsKLQkJCWlmICh1bml4X3JlY3ZxX2Z1bGwob3RoZXIpKQotCQkJCXdyaXRhYmxlID0gMDsK LQkJfQotCQlzb2NrX3B1dChvdGhlcik7CisJaWYgKHdyaXRhYmxlKSB7CisJCXVuaXhfc3RhdGVf bG9jayhzayk7CisKKwkJb3RoZXIgPSB1bml4X3BlZXIoc2spOworCQlpZiAob3RoZXIgJiYgdW5p eF9wZWVyKG90aGVyKSAhPSBzayAmJgorCQkgICAgdW5peF9yZWN2cV9mdWxsKG90aGVyKSAmJgor CQkgICAgdW5peF9kZ3JhbV9wZWVyX3dha2VfbWUoc2ssIG90aGVyKSkKKwkJCXdyaXRhYmxlID0g MDsKKworCQl1bml4X3N0YXRlX3VubG9jayhzayk7CiAJfQogCiAJaWYgKHdyaXRhYmxlKQotLSAK Mi40LjEKCgpGcm9tIGVmM2ExMGZiOWQyY2M4MmNiZDJkNjZiZmMxYzE5ZmZiZDAyN2UwYmIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEthbWFsIE1vc3RhZmEgPGthbWFsQGNhbm9uaWNh bC5jb20+CkRhdGU6IFdlZCwgMTEgTm92IDIwMTUgMTQ6MjQ6MjcgLTA4MDAKU3ViamVjdDogW1BB VENIIDAyLzI2XSB0b29scy9uZXQ6IFVzZSBpbmNsdWRlL3VhcGkgd2l0aCBfX0VYUE9SVEVEX0hF QURFUlNfXwoKWyBVcHN0cmVhbSBjb21taXQgZDc0NzVkZTU4NTc1YzkwNDgxOGVmYTM2OWM4MmU4 OGM2NjQ4Y2UyZSBdCgpVc2UgdGhlIGxvY2FsIHVhcGkgaGVhZGVycyB0byBrZWVwIGluIHN5bmMg d2l0aCAicmVjZW50bHkiIGFkZGVkICNkZWZpbmUncwooZS5nLiBTS0ZfQURfVkxBTl9UUElEKS4g IFJlZmFjdG9yZWQgQ0ZMQUdTLCBhbmQgYnBmX2FzbSBkb2Vzbid0IG5lZWQgLUkuCgpGaXhlczog M2YzNTYzODVlOGE0ICgiZmlsdGVyOiBicGZfYXNtOiBhZGQgbWluaW1hbCBicGYgYXNtIHRvb2wi KQpTaWduZWQtb2ZmLWJ5OiBLYW1hbCBNb3N0YWZhIDxrYW1hbEBjYW5vbmljYWwuY29tPgpBY2tl ZC1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIHRvb2xzL25ldC9N YWtlZmlsZSB8IDcgKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9uZXQvTWFrZWZpbGUgYi90b29scy9uZXQv TWFrZWZpbGUKaW5kZXggZWU1NzdlYS4uZGRmODg4MCAxMDA2NDQKLS0tIGEvdG9vbHMvbmV0L01h a2VmaWxlCisrKyBiL3Rvb2xzL25ldC9NYWtlZmlsZQpAQCAtNCw2ICs0LDkgQEAgQ0MgPSBnY2MK IExFWCA9IGZsZXgKIFlBQ0MgPSBiaXNvbgogCitDRkxBR1MgKz0gLVdhbGwgLU8yCitDRkxBR1Mg Kz0gLURfX0VYUE9SVEVEX0hFQURFUlNfXyAtSS4uLy4uL2luY2x1ZGUvdWFwaSAtSS4uLy4uL2lu Y2x1ZGUKKwogJS55YWNjLmM6ICUueQogCSQoWUFDQykgLW8gJEAgLWQgJDwKIApAQCAtMTIsMTUg KzE1LDEzIEBAIFlBQ0MgPSBiaXNvbgogCiBhbGwgOiBicGZfaml0X2Rpc2FzbSBicGZfZGJnIGJw Zl9hc20KIAotYnBmX2ppdF9kaXNhc20gOiBDRkxBR1MgPSAtV2FsbCAtTzIgLURQQUNLQUdFPSdi cGZfaml0X2Rpc2FzbScKK2JwZl9qaXRfZGlzYXNtIDogQ0ZMQUdTICs9IC1EUEFDS0FHRT0nYnBm X2ppdF9kaXNhc20nCiBicGZfaml0X2Rpc2FzbSA6IExETElCUyA9IC1sb3Bjb2RlcyAtbGJmZCAt bGRsCiBicGZfaml0X2Rpc2FzbSA6IGJwZl9qaXRfZGlzYXNtLm8KIAotYnBmX2RiZyA6IENGTEFH UyA9IC1XYWxsIC1PMgogYnBmX2RiZyA6IExETElCUyA9IC1scmVhZGxpbmUKIGJwZl9kYmcgOiBi cGZfZGJnLm8KIAotYnBmX2FzbSA6IENGTEFHUyA9IC1XYWxsIC1PMiAtSS4KIGJwZl9hc20gOiBM RExJQlMgPQogYnBmX2FzbSA6IGJwZl9hc20ubyBicGZfZXhwLnlhY2MubyBicGZfZXhwLmxleC5v CiBicGZfZXhwLmxleC5vIDogYnBmX2V4cC55YWNjLmMKLS0gCjIuNC4xCgoKRnJvbSBlODdjYjBi MGE2N2YyOGU0NWYyMjJiZmM2MDk4YzEzOTg3NGU0MTUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpEYXRlOiBXZWQs IDExIE5vdiAyMDE1IDIzOjI1OjQwICswMTAwClN1YmplY3Q6IFtQQVRDSCAwMy8yNl0gcGFja2V0 OiBkbyBza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlciB3aGVuIHdlIGFjdHVhbGx5CiBoYXZlIGRh dGEKClsgVXBzdHJlYW0gY29tbWl0IGVmZGZhMmY3ODQ4ZjY0NTE3MDA4MTM2ZmI0MWY1M2M0YTFm YWY5M2EgXQoKSW4gdHBhY2tldF9maWxsX3NrYigpIGNvbW1pdCBjMWFhZDI3NWIwMjkgKCJwYWNr ZXQ6IHNldCB0cmFuc3BvcnQKaGVhZGVyIGJlZm9yZSBkb2luZyB4bWl0IikgYW5kIGxhdGVyIG9u IDQwODkzZmQwZmQ0ZSAoIm5ldDogc3dpdGNoCnRvIHVzZSBza2JfcHJvYmVfdHJhbnNwb3J0X2hl YWRlcigpIikgd2FzIHByb2JpbmcgZm9yIGEgdHJhbnNwb3J0CmhlYWRlciBvbiB0aGUgc2tiIGZy b20gYSByaW5nIGJ1ZmZlciBzbG90LCBidXQgYXQgYSB0aW1lLCB3aGVyZQp0aGUgc2tiIGhhcyBf bm90IGV2ZW5fIGJlZW4gZmlsbGVkIHdpdGggZGF0YSB5ZXQuIFNvIHRoYXQgY2FsbCBpbnRvCnRo ZSBmbG93IGRpc3NlY3RvciBpcyBwcmV0dHkgdXNlbGVzcy4gTGV0cyBkbyBpdCBhZnRlciB3ZSd2 ZSBzZXQKdXAgdGhlIHNrYiBmcmFncy4KCkZpeGVzOiBjMWFhZDI3NWIwMjkgKCJwYWNrZXQ6IHNl dCB0cmFuc3BvcnQgaGVhZGVyIGJlZm9yZSBkb2luZyB4bWl0IikKUmVwb3J0ZWQtYnk6IEVyaWMg RHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEJvcmtt YW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KQWNrZWQtYnk6IEphc29uIFdhbmcgPGphc293YW5n QHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1s b2Z0Lm5ldD4KLS0tCiBuZXQvcGFja2V0L2FmX3BhY2tldC5jIHwgNSArKystLQogMSBmaWxlIGNo YW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQv cGFja2V0L2FmX3BhY2tldC5jIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCA2ODZlNjAx Li4xNmE4YjM3IDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCisrKyBiL25ldC9w YWNrZXQvYWZfcGFja2V0LmMKQEAgLTIxNTEsOCArMjE1MSw2IEBAIHN0YXRpYyBpbnQgdHBhY2tl dF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAog CXNrYl9yZXNlcnZlKHNrYiwgaGxlbik7CiAJc2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7 CiAKLQlpZiAoIXBhY2tldF91c2VfZGlyZWN0X3htaXQocG8pKQotCQlza2JfcHJvYmVfdHJhbnNw b3J0X2hlYWRlcihza2IsIDApOwogCWlmICh1bmxpa2VseShwby0+dHBfdHhfaGFzX29mZikpIHsK IAkJaW50IG9mZl9taW4sIG9mZl9tYXgsIG9mZjsKIAkJb2ZmX21pbiA9IHBvLT50cF9oZHJsZW4g LSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKTsKQEAgLTIyMzIsNiArMjIzMCw5IEBAIHN0YXRp YyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tf YnVmZiAqc2tiLAogCQlsZW4gPSAoKHRvX3dyaXRlID4gbGVuX21heCkgPyBsZW5fbWF4IDogdG9f d3JpdGUpOwogCX0KIAorCWlmICghcGFja2V0X3VzZV9kaXJlY3RfeG1pdChwbykpCisJCXNrYl9w cm9iZV90cmFuc3BvcnRfaGVhZGVyKHNrYiwgMCk7CisKIAlyZXR1cm4gdHBfbGVuOwogfQogCi0t IAoyLjQuMQoKCkZyb20gNTEyNmYzODYyNzY1MTBiYzc3MTg2NjNmNzlkYTNhNjg0NDk0MGVhNyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9n ZWFyYm94Lm5ldD4KRGF0ZTogV2VkLCAxMSBOb3YgMjAxNSAyMzoyNTo0MSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggMDQvMjZdIHBhY2tldDogYWx3YXlzIHByb2JlIGZvciB0cmFuc3BvcnQgaGVhZGVy CgpbIFVwc3RyZWFtIGNvbW1pdCA4ZmQ2YzgwZDlkZDkzOGNhMzM4YzcwNjk4NTMzYTdlMzA0NzUy ODQ2IF0KCldlIGNvbmNsdWRlZCB0aGF0IHRoZSBza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlcigp IHNob3VsZCBiZXR0ZXIgYmUKY2FsbGVkIHVuY29uZGl0aW9uYWxseS4gQXZvaWRpbmcgdGhlIGNh bGwgaW50byB0aGUgZmxvdyBkaXNzZWN0b3IgaGFzCmFsc28gbm90IHJlYWxseSBtdWNoIHRvIGRv IHdpdGggdGhlIGRpcmVjdCB4bWl0IG1vZGUuCgpXaGlsZSBpdCBzZWVtcyB0aGF0IG9ubHkgdmly dGlvX25ldCBjb2RlIG1ha2VzIHVzZSBvZiBHU08gZnJvbSBub24KUlgvVFggcmluZyBwYWNrZXQg c29ja2V0IHBhdGhzLCB3ZSBzaG91bGQgcHJvYmUgZm9yIGEgdHJhbnNwb3J0IGhlYWRlcgpuZXZl cnRoZWxlc3MgYmVmb3JlIHRoZXkgaGl0IGRldmljZXMuCgpSZWZlcmVuY2U6IGh0dHA6Ly90aHJl YWQuZ21hbmUub3JnL2dtYW5lLmxpbnV4Lm5ldHdvcmsvMzg2MTczLwpTaWduZWQtb2ZmLWJ5OiBE YW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpBY2tlZC1ieTogSmFzb24gV2Fu ZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxk YXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9wYWNrZXQvYWZfcGFja2V0LmMgfCA3ICsrKy0t LS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMK aW5kZXggMTZhOGIzNy4uMzEzMTE5YyAxMDA2NDQKLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQu YworKysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCkBAIC0yMjMwLDggKzIyMzAsNyBAQCBzdGF0 aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNr X2J1ZmYgKnNrYiwKIAkJbGVuID0gKCh0b193cml0ZSA+IGxlbl9tYXgpID8gbGVuX21heCA6IHRv X3dyaXRlKTsKIAl9CiAKLQlpZiAoIXBhY2tldF91c2VfZGlyZWN0X3htaXQocG8pKQotCQlza2Jf cHJvYmVfdHJhbnNwb3J0X2hlYWRlcihza2IsIDApOworCXNrYl9wcm9iZV90cmFuc3BvcnRfaGVh ZGVyKHNrYiwgMCk7CiAKIAlyZXR1cm4gdHBfbGVuOwogfQpAQCAtMjU4Myw4ICsyNTgyLDggQEAg c3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIg Km1zZywgc2l6ZV90IGxlbikKIAkJbGVuICs9IHZuZXRfaGRyX2xlbjsKIAl9CiAKLQlpZiAoIXBh Y2tldF91c2VfZGlyZWN0X3htaXQocG8pKQotCQlza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlcihz a2IsIHJlc2VydmUpOworCXNrYl9wcm9iZV90cmFuc3BvcnRfaGVhZGVyKHNrYiwgcmVzZXJ2ZSk7 CisKIAlpZiAodW5saWtlbHkoZXh0cmFfbGVuID09IDQpKQogCQlza2ItPm5vX2ZjcyA9IDE7CiAK LS0gCjIuNC4xCgoKRnJvbSBlNjBkZmFiYTI4OGIxNjA3NTlkMGEyODkxOWMzMTI5ZjY4NjE4MjE4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBp b2dlYXJib3gubmV0PgpEYXRlOiBXZWQsIDExIE5vdiAyMDE1IDIzOjI1OjQyICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAwNS8yNl0gcGFja2V0OiBvbmx5IGFsbG93IGV4dHJhIHZsYW4gbGVuIG9uIGV0 aGVybmV0IGRldmljZXMKClsgVXBzdHJlYW0gY29tbWl0IDNjNzBjMTMyNDg4Nzk0ZTI0ODlhYjA0 NTU1OWIwY2UwYWZjZjE3ZGUgXQoKUGFja2V0IHNvY2tldHMgY2FuIGJlIHVzZWQgYnkgdmFyaW91 cyBuZXQgZGV2aWNlcyBhbmQgYXJlIG5vdApyZWFsbHkgcmVzdHJpY3RlZCB0byBBUlBIUkRfRVRI RVIgZGV2aWNlIHR5cGVzLiBIb3dldmVyLCB3aGVuCmN1cnJlbnRseSBjaGVja2luZyBmb3IgdGhl IGV4dHJhIDQgYnl0ZXMgdGhhdCBjYW4gYmUgdHJhbnNtaXR0ZWQKaW4gVkxBTiBjYXNlLCBvdXIg YXNzdW1wdGlvbiBpcyB0aGF0IHdlIGdlbmVyYWxseSBwcm9iZSBvbgpBUlBIUkRfRVRIRVIgZGV2 aWNlcy4gVGhlcmVmb3JlLCBiZWZvcmUgbG9va2luZyBpbnRvIEV0aGVybmV0CmhlYWRlciwgY2hl Y2sgdGhlIGRldmljZSB0eXBlIGZpcnN0LgoKVGhpcyBhbHNvIGZpeGVzIHRoZSBpc3N1ZSB3aGVy ZSBub24tQVJQSFJEX0VUSEVSIGRldmljZXMgY291bGQKaGF2ZSBubyBkZXYtPmhhcmRfaGVhZGVy X2xlbiBpbiBUWF9SSU5HIFNPQ0tfUkFXIGNhc2UsIGFuZCB0aHVzCnRoZSBjaGVjayB3b3VsZCB0 ZXN0IHVuZmlsbGVkIGxpbmVhciBwYXJ0IG9mIHRoZSBza2IgKGluc3RlYWQKb2Ygbm9uLWxpbmVh cikuCgpGaXhlczogNTdmODliZmEyMTQwICgibmV0d29yazogQWxsb3cgYWZfcGFja2V0IHRvIHRy YW5zbWl0ICs0IGJ5dGVzIGZvciBWTEFOIHBhY2tldHMuIikKRml4ZXM6IDUyZjE0NTRmNjI5ZiAo InBhY2tldDogYWxsb3cgdG8gdHJhbnNtaXQgKzQgYnl0ZSBpbiBUWF9SSU5HIHNsb3QgZm9yIFZM QU4gY2FzZSIpClNpZ25lZC1vZmYtYnk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJv eC5uZXQ+CkFja2VkLWJ5OiBXaWxsZW0gZGUgQnJ1aWpuIDx3aWxsZW1iQGdvb2dsZS5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBu ZXQvcGFja2V0L2FmX3BhY2tldC5jIHwgNjAgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAz NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jIGIvbmV0 L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCAzMTMxMTljLi4zNmVjZTZmIDEwMDY0NAotLS0gYS9u ZXQvcGFja2V0L2FmX3BhY2tldC5jCisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTE1 MjQsNiArMTUyNCwyMCBAQCBzdGF0aWMgdm9pZCBmYW5vdXRfcmVsZWFzZShzdHJ1Y3Qgc29jayAq c2spCiAJbXV0ZXhfdW5sb2NrKCZmYW5vdXRfbXV0ZXgpOwogfQogCitzdGF0aWMgYm9vbCBwYWNr ZXRfZXh0cmFfdmxhbl9sZW5fYWxsb3dlZChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAor CQkJCQkgIHN0cnVjdCBza19idWZmICpza2IpCit7CisJLyogRWFybGllciBjb2RlIGFzc3VtZWQg dGhpcyB3b3VsZCBiZSBhIFZMQU4gcGt0LCBkb3VibGUtY2hlY2sKKwkgKiB0aGlzIG5vdyB0aGF0 IHdlIGhhdmUgdGhlIGFjdHVhbCBwYWNrZXQgaW4gaGFuZC4gV2UgY2FuIG9ubHkKKwkgKiBkbyB0 aGlzIGNoZWNrIG9uIEV0aGVybmV0IGRldmljZXMuCisJICovCisJaWYgKHVubGlrZWx5KGRldi0+ dHlwZSAhPSBBUlBIUkRfRVRIRVIpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlza2JfcmVzZXRfbWFj X2hlYWRlcihza2IpOworCXJldHVybiBsaWtlbHkoZXRoX2hkcihza2IpLT5oX3Byb3RvID09IGh0 b25zKEVUSF9QXzgwMjFRKSk7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBh Y2tldF9vcHM7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3Br dDsKQEAgLTE2ODUsMTggKzE2OTksMTAgQEAgcmV0cnk6CiAJCWdvdG8gcmV0cnk7CiAJfQogCi0J aWYgKGxlbiA+IChkZXYtPm10dSArIGRldi0+aGFyZF9oZWFkZXJfbGVuICsgZXh0cmFfbGVuKSkg ewotCQkvKiBFYXJsaWVyIGNvZGUgYXNzdW1lZCB0aGlzIHdvdWxkIGJlIGEgVkxBTiBwa3QsCi0J CSAqIGRvdWJsZS1jaGVjayB0aGlzIG5vdyB0aGF0IHdlIGhhdmUgdGhlIGFjdHVhbAotCQkgKiBw YWNrZXQgaW4gaGFuZC4KLQkJICovCi0JCXN0cnVjdCBldGhoZHIgKmVoZHI7Ci0JCXNrYl9yZXNl dF9tYWNfaGVhZGVyKHNrYik7Ci0JCWVoZHIgPSBldGhfaGRyKHNrYik7Ci0JCWlmIChlaGRyLT5o X3Byb3RvICE9IGh0b25zKEVUSF9QXzgwMjFRKSkgewotCQkJZXJyID0gLUVNU0dTSVpFOwotCQkJ Z290byBvdXRfdW5sb2NrOwotCQl9CisJaWYgKGxlbiA+IChkZXYtPm10dSArIGRldi0+aGFyZF9o ZWFkZXJfbGVuICsgZXh0cmFfbGVuKSAmJgorCSAgICAhcGFja2V0X2V4dHJhX3ZsYW5fbGVuX2Fs bG93ZWQoZGV2LCBza2IpKSB7CisJCWVyciA9IC1FTVNHU0laRTsKKwkJZ290byBvdXRfdW5sb2Nr OwogCX0KIAogCXNrYi0+cHJvdG9jb2wgPSBwcm90bzsKQEAgLTIzMDgsMTggKzIzMTQsMTAgQEAg c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNn aGRyICptc2cpCiAJCXRwX2xlbiA9IHRwYWNrZXRfZmlsbF9za2IocG8sIHNrYiwgcGgsIGRldiwg c2l6ZV9tYXgsIHByb3RvLAogCQkJCQkgIGFkZHIsIGhsZW4pOwogCQlpZiAobGlrZWx5KHRwX2xl biA+PSAwKSAmJgotCQkgICAgdHBfbGVuID4gZGV2LT5tdHUgKyBkZXYtPmhhcmRfaGVhZGVyX2xl bikgewotCQkJc3RydWN0IGV0aGhkciAqZWhkcjsKLQkJCS8qIEVhcmxpZXIgY29kZSBhc3N1bWVk IHRoaXMgd291bGQgYmUgYSBWTEFOIHBrdCwKLQkJCSAqIGRvdWJsZS1jaGVjayB0aGlzIG5vdyB0 aGF0IHdlIGhhdmUgdGhlIGFjdHVhbAotCQkJICogcGFja2V0IGluIGhhbmQuCi0JCQkgKi8KKwkJ ICAgIHRwX2xlbiA+IGRldi0+bXR1ICsgZGV2LT5oYXJkX2hlYWRlcl9sZW4gJiYKKwkJICAgICFw YWNrZXRfZXh0cmFfdmxhbl9sZW5fYWxsb3dlZChkZXYsIHNrYikpCisJCQl0cF9sZW4gPSAtRU1T R1NJWkU7CiAKLQkJCXNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7Ci0JCQllaGRyID0gZXRoX2hk cihza2IpOwotCQkJaWYgKGVoZHItPmhfcHJvdG8gIT0gaHRvbnMoRVRIX1BfODAyMVEpKQotCQkJ CXRwX2xlbiA9IC1FTVNHU0laRTsKLQkJfQogCQlpZiAodW5saWtlbHkodHBfbGVuIDwgMCkpIHsK IAkJCWlmIChwby0+dHBfbG9zcykgewogCQkJCV9fcGFja2V0X3NldF9zdGF0dXMocG8sIHBoLApA QCAtMjU0MCwxOCArMjUzOCwxMCBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tl dCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKQogCiAJc29ja190eF90aW1l c3RhbXAoc2ssICZza2Jfc2hpbmZvKHNrYiktPnR4X2ZsYWdzKTsKIAotCWlmICghZ3NvX3R5cGUg JiYgKGxlbiA+IGRldi0+bXR1ICsgcmVzZXJ2ZSArIGV4dHJhX2xlbikpIHsKLQkJLyogRWFybGll ciBjb2RlIGFzc3VtZWQgdGhpcyB3b3VsZCBiZSBhIFZMQU4gcGt0LAotCQkgKiBkb3VibGUtY2hl Y2sgdGhpcyBub3cgdGhhdCB3ZSBoYXZlIHRoZSBhY3R1YWwKLQkJICogcGFja2V0IGluIGhhbmQu Ci0JCSAqLwotCQlzdHJ1Y3QgZXRoaGRyICplaGRyOwotCQlza2JfcmVzZXRfbWFjX2hlYWRlcihz a2IpOwotCQllaGRyID0gZXRoX2hkcihza2IpOwotCQlpZiAoZWhkci0+aF9wcm90byAhPSBodG9u cyhFVEhfUF84MDIxUSkpIHsKLQkJCWVyciA9IC1FTVNHU0laRTsKLQkJCWdvdG8gb3V0X2ZyZWU7 Ci0JCX0KKwlpZiAoIWdzb190eXBlICYmIChsZW4gPiBkZXYtPm10dSArIHJlc2VydmUgKyBleHRy YV9sZW4pICYmCisJICAgICFwYWNrZXRfZXh0cmFfdmxhbl9sZW5fYWxsb3dlZChkZXYsIHNrYikp IHsKKwkJZXJyID0gLUVNU0dTSVpFOworCQlnb3RvIG91dF9mcmVlOwogCX0KIAogCXNrYi0+cHJv dG9jb2wgPSBwcm90bzsKLS0gCjIuNC4xCgoKRnJvbSBjYWRiMWUzMTlkNjY5OGY5OWQ4NTU5YzUw MTc0Yzg0NzlhMjMzMDMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQm9y a21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpEYXRlOiBXZWQsIDExIE5vdiAyMDE1IDIzOjI1 OjQzICswMTAwClN1YmplY3Q6IFtQQVRDSCAwNi8yNl0gcGFja2V0OiBpbmZlciBwcm90b2NvbCBm cm9tIGV0aGVybmV0IGhlYWRlciBpZiB1bnNldAoKWyBVcHN0cmVhbSBjb21taXQgYzcyMjE5Yjc1 ZmRlNzY4ZWZjY2Y3NjY2MzQyMjgyZmFiN2Y5ZTRlNyBdCgpJbiBjYXNlIG5vIHN0cnVjdCBzb2Nr YWRkcl9sbCBoYXMgYmVlbiBwYXNzZWQgdG8gcGFja2V0CnNvY2tldCdzIHNlbmRtc2coKSB3aGVu IGRvaW5nIGEgVFhfUklORyBmbHVzaCBydW4sIHRoZW4Kc2tiLT5wcm90b2NvbCBpcyBzZXQgdG8g cG8tPm51bSBpbnN0ZWFkLCB3aGljaCBpcyB0aGUgcHJvdG9jb2wKcGFzc2VkIHZpYSBzb2NrZXQo MikvYmluZCgyKS4KCkFwcGxpY2F0aW9ucyBvbmx5IHhtaXR0aW5nIGNhbiBnbyB0aGUgcGF0aCBv ZiBhbGxvY2F0aW5nIHRoZQpzb2NrZXQgYXMgc29ja2V0KFBGX1BBQ0tFVCwgPG1vZGU+LCAwKSBh bmQgZG8gYSBiaW5kKDIpIG9uIHRoZQpUWF9SSU5HIHdpdGggc2xsX3Byb3RvY29sIG9mIDAuIFRo YXQgd2F5LCByZWdpc3Rlcl9wcm90X2hvb2soKQppcyBuZWl0aGVyIGNhbGxlZCBvbiBjcmVhdGlv biBub3Igb24gYmluZCB0aW1lLCB3aGljaCBzYXZlcwpjeWNsZXMgd2hlbiB0aGVyZSdzIG5vIGlu dGVyZXN0IGluIGNhcHR1cmluZyBhbnl3YXkuCgpUaGF0IGxlYXZlcyB1cyBob3dldmVyIHdpdGgg cG8tPm51bSAwIGluc3RlYWQgYW5kIHRoZXJlZm9yZQp0aGUgVFhfUklORyBmbHVzaCBydW4gc2V0 cyBza2ItPnByb3RvY29sIHRvIDAgYXMgd2VsbC4gRXJpYwpyZXBvcnRlZCB0aGF0IHRoaXMgbGVh ZHMgdG8gcHJvYmxlbXMgd2hlbiB1c2luZyB0b29scyBsaWtlCnRyYWZnZW4gb3ZlciBib25kaW5n IGRldmljZS4gSS5lLiB0aGUgYm9uZGluZydzIGhhc2ggZnVuY3Rpb24KY291bGQgaW52b2tlIHRo ZSBrZXJuZWwncyBmbG93IGRpc3NlY3Rvciwgd2hpY2ggZGVwZW5kcyBvbgpza2ItPnByb3RvY29s IGJlaW5nIHByb3Blcmx5IHNldC4gSW4gdGhlIGN1cnJlbnQgc2l0dWF0aW9uLCBhbGwKdGhlIHRy YWZmaWMgaXMgdGhlbiBkaXJlY3RlZCB0byBhIHNpbmdsZSBzbGF2ZS4KCkZpeCBpdCB1cCBieSBp bmZlcnJpbmcgc2tiLT5wcm90b2NvbCBmcm9tIHRoZSBFdGhlcm5ldCBoZWFkZXIKd2hlbiBub3Qg c2V0IGFuZCB3ZSBoYXZlIEFSUEhSRF9FVEhFUiBkZXZpY2UgdHlwZS4gVGhpcyBpcyBvbmx5CmRv bmUgaW4gY2FzZSBvZiBTT0NLX1JBVyBhbmQgd2hlcmUgd2UgaGF2ZSBhIGRldi0+aGFyZF9oZWFk ZXJfbGVuCmxlbmd0aC4gSW4gY2FzZSBvZiBBUlBIUkRfRVRIRVIgZGV2aWNlcywgdGhpcyBpcyBn dWFyYW50ZWVkIHRvCmNvdmVyIEVUSF9ITEVOLCBhbmQgdGhlcmVmb3JlIGJlaW5nIGFjY2Vzc2Vk IG9uIHRoZSBza2IgYWZ0ZXIKdGhlIHNrYl9zdG9yZV9iaXRzKCkuCgpSZXBvcnRlZC1ieTogRXJp YyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQm9y a21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpBY2tlZC1ieTogV2lsbGVtIGRlIEJydWlqbiA8 d2lsbGVtYkBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVt QGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3BhY2tldC9hZl9wYWNrZXQuYyB8IDExICsrKysrKysr KysrCiAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL25ldC9w YWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCmluZGV4IDM2ZWNlNmYu LjJkODMxMjQgMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKKysrIGIvbmV0L3Bh Y2tldC9hZl9wYWNrZXQuYwpAQCAtMjEyMSw2ICsyMTIxLDE1IEBAIHN0YXRpYyBib29sIGxsX2hl YWRlcl90cnVuY2F0ZWQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGxlbikKIAly ZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyB2b2lkIHRwYWNrZXRfc2V0X3Byb3RvY29sKGNvbnN0 IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCisJCQkJIHN0cnVjdCBza19idWZmICpza2IpCit7CisJ aWYgKGRldi0+dHlwZSA9PSBBUlBIUkRfRVRIRVIpIHsKKwkJc2tiX3Jlc2V0X21hY19oZWFkZXIo c2tiKTsKKwkJc2tiLT5wcm90b2NvbCA9IGV0aF9oZHIoc2tiKS0+aF9wcm90bzsKKwl9Cit9CisK IHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLAogCQl2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwg aW50IHNpemVfbWF4LAogCQlfX2JlMTYgcHJvdG8sIHVuc2lnbmVkIGNoYXIgKmFkZHIsIGludCBo bGVuKQpAQCAtMjIwMiw2ICsyMjExLDggQEAgc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0 cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJZGV2LT5oYXJk X2hlYWRlcl9sZW4pOwogCQlpZiAodW5saWtlbHkoZXJyKSkKIAkJCXJldHVybiBlcnI7CisJCWlm ICghc2tiLT5wcm90b2NvbCkKKwkJCXRwYWNrZXRfc2V0X3Byb3RvY29sKGRldiwgc2tiKTsKIAog CQlkYXRhICs9IGRldi0+aGFyZF9oZWFkZXJfbGVuOwogCQl0b193cml0ZSAtPSBkZXYtPmhhcmRf aGVhZGVyX2xlbjsKLS0gCjIuNC4xCgoKRnJvbSA0YTNjY2Q2YTI1YzgzZTJhMTg0ZTQ2NWVmNjJk N2E5ZTRkYWU5MDI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQm9ya21h bm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpEYXRlOiBXZWQsIDExIE5vdiAyMDE1IDIzOjI1OjQ0 ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwNy8yNl0gcGFja2V0OiBmaXggdHBhY2tldF9zbmQgbWF4 IGZyYW1lIGxlbgoKWyBVcHN0cmVhbSBjb21taXQgNWNmYjRjOGQwNWI0NDA5YzQwNDRjYjljMDVi MTk3MDVjMWQ5ODE4YiBdCgpTaW5jZSBpdCdzIGludHJvZHVjdGlvbiBpbiBjb21taXQgNjllM2M3 NWY0ZDU0ICgibmV0OiBUWF9SSU5HIGFuZApwYWNrZXQgbW1hcCIpLCBUWF9SSU5HIGNvdWxkIGJl IHVzZWQgZnJvbSBTT0NLX0RHUkFNIGFuZCBTT0NLX1JBVwpzaWRlLiBXaGVuIHVzZWQgd2l0aCBT T0NLX0RHUkFNIG9ubHksIHRoZSBzaXplX21heCA+IGRldi0+bXR1ICsKcmVzZXJ2ZSBjaGVjayBz aG91bGQgaGF2ZSByZXNlcnZlIGFzIDAsIGJ1dCBjdXJyZW50bHksIHRoaXMgaXMKdW5jb25kaXRp b25hbGx5IHNldCAoaW4gaXQncyBvcmlnaW5hbCBmb3JtIGFzIGRldi0+aGFyZF9oZWFkZXJfbGVu KS4KCkkgdGhpbmsgdGhpcyBpcyBub3QgY29ycmVjdCBzaW5jZSB0cGFja2V0X2ZpbGxfc2tiKCkg d291bGQgdGhlbgp0YWtlIGRldi0+bXR1IGFuZCBkZXYtPmhhcmRfaGVhZGVyX2xlbiBpbnRvIGFj Y291bnQgZm9yIFNPQ0tfREdSQU0sCnRoZSBleHRyYSBWTEFOX0hMRU4gY291bGQgYmUgcG9zc2li bGUgaW4gYm90aCBjYXNlcy4gUHJlc3VtYWJseSwgdGhlCnJlc2VydmUgY29kZSB3YXMgY29waWVk IGZyb20gcGFja2V0X3NuZCgpLCBidXQgbGF0ZXIgb24gbWlzc2VkIHRoZQpjaGVjay4gTWFrZSBp dCBzaW1pbGFyIGFzIHdlIGhhdmUgaXQgaW4gcGFja2V0X3NuZCgpLgoKRml4ZXM6IDY5ZTNjNzVm NGQ1NCAoIm5ldDogVFhfUklORyBhbmQgcGFja2V0IG1tYXAiKQpTaWduZWQtb2ZmLWJ5OiBEYW5p ZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpBY2tlZC1ieTogV2lsbGVtIGRlIEJy dWlqbiA8d2lsbGVtYkBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIg PGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3BhY2tldC9hZl9wYWNrZXQuYyB8IDkgKysr KystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tl dC5jCmluZGV4IDJkODMxMjQuLmViYzM5ZTYgMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFj a2V0LmMKKysrIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwpAQCAtMjI5MywxMiArMjI5MywxMyBA QCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBt c2doZHIgKm1zZykKIAlpZiAodW5saWtlbHkoIShkZXYtPmZsYWdzICYgSUZGX1VQKSkpCiAJCWdv dG8gb3V0X3B1dDsKIAotCXJlc2VydmUgPSBkZXYtPmhhcmRfaGVhZGVyX2xlbiArIFZMQU5fSExF TjsKKwlpZiAocG8tPnNrLnNrX3NvY2tldC0+dHlwZSA9PSBTT0NLX1JBVykKKwkJcmVzZXJ2ZSA9 IGRldi0+aGFyZF9oZWFkZXJfbGVuOwogCXNpemVfbWF4ID0gcG8tPnR4X3JpbmcuZnJhbWVfc2l6 ZQogCQktIChwby0+dHBfaGRybGVuIC0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9sbCkpOwogCi0J aWYgKHNpemVfbWF4ID4gZGV2LT5tdHUgKyByZXNlcnZlKQotCQlzaXplX21heCA9IGRldi0+bXR1 ICsgcmVzZXJ2ZTsKKwlpZiAoc2l6ZV9tYXggPiBkZXYtPm10dSArIHJlc2VydmUgKyBWTEFOX0hM RU4pCisJCXNpemVfbWF4ID0gZGV2LT5tdHUgKyByZXNlcnZlICsgVkxBTl9ITEVOOwogCiAJZG8g ewogCQlwaCA9IHBhY2tldF9jdXJyZW50X2ZyYW1lKHBvLCAmcG8tPnR4X3JpbmcsCkBAIC0yMzI1 LDcgKzIzMjYsNyBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAq cG8sIHN0cnVjdCBtc2doZHIgKm1zZykKIAkJdHBfbGVuID0gdHBhY2tldF9maWxsX3NrYihwbywg c2tiLCBwaCwgZGV2LCBzaXplX21heCwgcHJvdG8sCiAJCQkJCSAgYWRkciwgaGxlbik7CiAJCWlm IChsaWtlbHkodHBfbGVuID49IDApICYmCi0JCSAgICB0cF9sZW4gPiBkZXYtPm10dSArIGRldi0+ aGFyZF9oZWFkZXJfbGVuICYmCisJCSAgICB0cF9sZW4gPiBkZXYtPm10dSArIHJlc2VydmUgJiYK IAkJICAgICFwYWNrZXRfZXh0cmFfdmxhbl9sZW5fYWxsb3dlZChkZXYsIHNrYikpCiAJCQl0cF9s ZW4gPSAtRU1TR1NJWkU7CiAKLS0gCjIuNC4xCgoKRnJvbSAzNDNlZDdlNTczYmExYjc0NTk5YzYw MmZjYjg4NWVhMjA1YjJmYzM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBsdWNpZW4g PGx1Y2llbi54aW5AZ21haWwuY29tPgpEYXRlOiBUaHUsIDEyIE5vdiAyMDE1IDEzOjA3OjA3ICsw ODAwClN1YmplY3Q6IFtQQVRDSCAwOC8yNl0gc2N0cDogdHJhbnNsYXRlIGhvc3Qgb3JkZXIgdG8g bmV0d29yayBvcmRlciB3aGVuCiBzZXR0aW5nIGEgaG1hY2lkCgpbIFVwc3RyZWFtIGNvbW1pdCBl ZDVhMzc3ZDg3ZGM0Yzg3ZmIzZTFmN2Y2OThjYmEzOGNkODkzMTAzIF0KCm5vdyBzY3RwIGF1dGgg Y2Fubm90IHdvcmsgd2VsbCB3aGVuIHNldHRpbmcgYSBobWFjaWQgbWFudWFsbHksIHdoaWNoCmlz IGNhdXNlZCBieSB0aGF0IHdlIGRpZG4ndCB1c2UgdGhlIG5ldHdvcmsgb3JkZXIgZm9yIGhtYWNp ZCwgc28gZml4Cml0IGJ5IGFkZGluZyB0aGUgdHJhbnNmb3JtYXRpb24gaW4gc2N0cF9hdXRoX2Vw X3NldF9obWFjcy4KCmV2ZW4gd2Ugc2V0IGhtYWNpZCB3aXRoIHRoZSBuZXR3b3JrIG9yZGVyIGlu IHVzZXJzcGFjZSwgaXQgc3RpbGwKY2FuJ3Qgd29yaywgYmVjYXVzZSBvZiB0aGlzIGNvbmRpdGlv biBpbiBzY3RwX2F1dGhfZXBfc2V0X2htYWNzKCk6CgoJCWlmIChpZCA+IFNDVFBfQVVUSF9ITUFD X0lEX01BWCkKCQkJcmV0dXJuIC1FT1BOT1RTVVBQOwoKc28gdGhpcyB3YXNuJ3Qgd29ya2luZyBi ZWZvcmUgYW5kIHRodXMgaXQgd29uJ3QgYnJlYWsgY29tcGF0aWJpbGl0eS4KCkZpeGVzOiA2NWIw N2U1ZDBkMDkgKCJbU0NUUF06IEFQSSB1cGRhdGVzIHRvIHN1cG9ydCBTQ1RQLUFVVEggZXh0ZW5z aW9ucy4iKQpTaWduZWQtb2ZmLWJ5OiBYaW4gTG9uZyA8bHVjaWVuLnhpbkBnbWFpbC5jb20+ClNp Z25lZC1vZmYtYnk6IE1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRuZXJAZ21h aWwuY29tPgpBY2tlZC1ieTogTmVpbCBIb3JtYW4gPG5ob3JtYW5AdHV4ZHJpdmVyLmNvbT4KQWNr ZWQtYnk6IFZsYWQgWWFzZXZpY2ggPHZ5YXNldmljaEBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvc2N0cC9hdXRo LmMgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jCmluZGV4 IDRmMTViN2QuLjE1NDNlMzkgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2F1dGguYworKysgYi9uZXQv c2N0cC9hdXRoLmMKQEAgLTgwOSw4ICs4MDksOCBAQCBpbnQgc2N0cF9hdXRoX2VwX3NldF9obWFj cyhzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsCiAJaWYgKCFoYXNfc2hhMSkKIAkJcmV0dXJuIC1F SU5WQUw7CiAKLQltZW1jcHkoZXAtPmF1dGhfaG1hY3NfbGlzdC0+aG1hY19pZHMsICZobWFjcy0+ c2htYWNfaWRlbnRzWzBdLAotCQlobWFjcy0+c2htYWNfbnVtX2lkZW50cyAqIHNpemVvZihfX3Ux NikpOworCWZvciAoaSA9IDA7IGkgPCBobWFjcy0+c2htYWNfbnVtX2lkZW50czsgaSsrKQorCQll cC0+YXV0aF9obWFjc19saXN0LT5obWFjX2lkc1tpXSA9IGh0b25zKGhtYWNzLT5zaG1hY19pZGVu dHNbaV0pOwogCWVwLT5hdXRoX2htYWNzX2xpc3QtPnBhcmFtX2hkci5sZW5ndGggPSBodG9ucyhz aXplb2Yoc2N0cF9wYXJhbWhkcl90KSArCiAJCQkJaG1hY3MtPnNobWFjX251bV9pZGVudHMgKiBz aXplb2YoX191MTYpKTsKIAlyZXR1cm4gMDsKLS0gCjIuNC4xCgoKRnJvbSAxOTQ3OGY3Mzc2MGU3 ODlhZTcwY2QyNDZkOWM2YWZmODc3NzRkNDc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiAiSmFzb24gQS4gRG9uZW5mZWxkIiA8SmFzb25AengyYzQuY29tPgpEYXRlOiBUaHUsIDEyIE5v diAyMDE1IDE3OjM1OjU4ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwOS8yNl0gaXBfdHVubmVsOiBk aXNhYmxlIHByZWVtcHRpb24gd2hlbiB1cGRhdGluZyBwZXItY3B1CiB0c3RhdHMKClsgVXBzdHJl YW0gY29tbWl0IGI0ZmU4NWY5YzkxNDZmNjA0NTdlOTUxMmZiNjA1NWU2OWU2YTdhNjUgXQoKRHJp dmVycyBsaWtlIHZ4bGFuIHVzZSB0aGUgcmVjZW50bHkgaW50cm9kdWNlZAp1ZHBfdHVubmVsX3ht aXRfc2tiL3VkcF90dW5uZWw2X3htaXRfc2tiIEFQSXMuIHVkcF90dW5uZWw2X3htaXRfc2tiCm1h a2VzIHVzZSBvZiBpcDZ0dW5uZWxfeG1pdCwgYW5kIGlwNnR1bm5lbF94bWl0LCBhZnRlciBzZW5k aW5nIHRoZQpwYWNrZXQsIHVwZGF0ZXMgdGhlIHN0cnVjdCBzdGF0cyB1c2luZyB0aGUgdXN1YWwK dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbi9lbmQgY2FsbHMgb24gdGhpc19jcHVfcHRyKGRldi0+dHN0 YXRzKS4KdWRwX3R1bm5lbF94bWl0X3NrYiBtYWtlcyB1c2Ugb2YgaXB0dW5uZWxfeG1pdCwgd2hp Y2ggZG9lc24ndCB0b3VjaAp0c3RhdHMsIHNvIGRyaXZlcnMgbGlrZSB2eGxhbiwgaW1tZWRpYXRl bHkgYWZ0ZXIsIGNhbGwKaXB0dW5uZWxfeG1pdF9zdGF0cywgd2hpY2ggZG9lcyB0aGUgc2FtZSB0 aGluZyAtIGNhbGxzCnU2NF9zdGF0c191cGRhdGVfYmVnaW4vZW5kIG9uIHRoaXNfY3B1X3B0cihk ZXYtPnRzdGF0cykuCgpXaGlsZSB2eGxhbiBpcyBwcm9iYWJseSBmaW5lIChJIGRvbid0IGtub3c/ KSwgY2FsbGluZyBhIHNpbWlsYXIgZnVuY3Rpb24KZnJvbSwgc2F5LCBhbiB1bmJvdW5kIHdvcmtx dWV1ZSwgb24gYSBmdWxseSBwcmVlbXB0YWJsZSBrZXJuZWwgY2F1c2VzCnJlYWwgaXNzdWVzOgoK WyAgMTg4LjQzNDUzN10gQlVHOiB1c2luZyBzbXBfcHJvY2Vzc29yX2lkKCkgaW4gcHJlZW1wdGli bGUgWzAwMDAwMDAwXSBjb2RlOiBrd29ya2VyL3U4OjAvNgpbICAxODguNDM1NTc5XSBjYWxsZXIg aXMgZGVidWdfc21wX3Byb2Nlc3Nvcl9pZCsweDE3LzB4MjAKWyAgMTg4LjQzNTU4M10gQ1BVOiAw IFBJRDogNiBDb21tOiBrd29ya2VyL3U4OjAgTm90IHRhaW50ZWQgNC4yLjYgIzIKWyAgMTg4LjQz NTYwN10gQ2FsbCBUcmFjZToKWyAgMTg4LjQzNTYxMV0gIFs8ZmZmZmZmZmY4MjM0ZTkzNj5dIGR1 bXBfc3RhY2srMHg0Zi8weDdiClsgIDE4OC40MzU2MTVdICBbPGZmZmZmZmZmODE5MTVmM2Q+XSBj aGVja19wcmVlbXB0aW9uX2Rpc2FibGVkKzB4MTlkLzB4MWMwClsgIDE4OC40MzU2MTldICBbPGZm ZmZmZmZmODE5MTVmNzc+XSBkZWJ1Z19zbXBfcHJvY2Vzc29yX2lkKzB4MTcvMHgyMAoKVGhlIHNv bHV0aW9uIHdvdWxkIGJlIHRvIHByb3RlY3QgdGhlIHdob2xlCnRoaXNfY3B1X3B0cihkZXYtPnRz dGF0cykvdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbi9lbmQgYmxvY2tzIHdpdGgKZGlzYWJsaW5nIHBy ZWVtcHRpb24gYW5kIHRoZW4gcmVlbmFibGluZyBpdC4KClNpZ25lZC1vZmYtYnk6IEphc29uIEEu IERvbmVuZmVsZCA8SmFzb25AengyYzQuY29tPgpBY2tlZC1ieTogSGFubmVzIEZyZWRlcmljIFNv d2EgPGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBN aWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogaW5jbHVkZS9uZXQvaXA2X3R1bm5lbC5o IHwgMyArKy0KIGluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaCB8IDMgKystCiAyIGZpbGVzIGNoYW5n ZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRl L25ldC9pcDZfdHVubmVsLmggYi9pbmNsdWRlL25ldC9pcDZfdHVubmVsLmgKaW5kZXggYjg1Mjlh YS4uYjBmNzQ0NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXA2X3R1bm5lbC5oCisrKyBiL2lu Y2x1ZGUvbmV0L2lwNl90dW5uZWwuaApAQCAtODMsMTEgKzgzLDEyIEBAIHN0YXRpYyBpbmxpbmUg dm9pZCBpcDZ0dW5uZWxfeG1pdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2Is CiAJZXJyID0gaXA2X2xvY2FsX291dF9zayhzaywgc2tiKTsKIAogCWlmIChuZXRfeG1pdF9ldmFs KGVycikgPT0gMCkgewotCQlzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0cyAqdHN0YXRzID0gdGhpc19j cHVfcHRyKGRldi0+dHN0YXRzKTsKKwkJc3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0cyA9 IGdldF9jcHVfcHRyKGRldi0+dHN0YXRzKTsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmdHN0 YXRzLT5zeW5jcCk7CiAJCXRzdGF0cy0+dHhfYnl0ZXMgKz0gcGt0X2xlbjsKIAkJdHN0YXRzLT50 eF9wYWNrZXRzKys7CiAJCXU2NF9zdGF0c191cGRhdGVfZW5kKCZ0c3RhdHMtPnN5bmNwKTsKKwkJ cHV0X2NwdV9wdHIodHN0YXRzKTsKIAl9IGVsc2UgewogCQlzdGF0cy0+dHhfZXJyb3JzKys7CiAJ CXN0YXRzLT50eF9hYm9ydGVkX2Vycm9ycysrOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBf dHVubmVscy5oIGIvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oCmluZGV4IGQ4MjE0Y2IuLjljMjg5 N2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaAorKysgYi9pbmNsdWRlL25l dC9pcF90dW5uZWxzLmgKQEAgLTIwNywxMiArMjA3LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBp cHR1bm5lbF94bWl0X3N0YXRzKGludCBlcnIsCiAJCQkJICAgICAgIHN0cnVjdCBwY3B1X3N3X25l dHN0YXRzIF9fcGVyY3B1ICpzdGF0cykKIHsKIAlpZiAoZXJyID4gMCkgewotCQlzdHJ1Y3QgcGNw dV9zd19uZXRzdGF0cyAqdHN0YXRzID0gdGhpc19jcHVfcHRyKHN0YXRzKTsKKwkJc3RydWN0IHBj cHVfc3dfbmV0c3RhdHMgKnRzdGF0cyA9IGdldF9jcHVfcHRyKHN0YXRzKTsKIAogCQl1NjRfc3Rh dHNfdXBkYXRlX2JlZ2luKCZ0c3RhdHMtPnN5bmNwKTsKIAkJdHN0YXRzLT50eF9ieXRlcyArPSBl cnI7CiAJCXRzdGF0cy0+dHhfcGFja2V0cysrOwogCQl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmdHN0 YXRzLT5zeW5jcCk7CisJCXB1dF9jcHVfcHRyKHRzdGF0cyk7CiAJfSBlbHNlIGlmIChlcnIgPCAw KSB7CiAJCWVycl9zdGF0cy0+dHhfZXJyb3JzKys7CiAJCWVycl9zdGF0cy0+dHhfYWJvcnRlZF9l cnJvcnMrKzsKLS0gCjIuNC4xCgoKRnJvbSAzMWJlZjc3MWFkODYyZjZhY2MzMjA1NDE2ZjdiZGZj N2NhM2RhMTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOZWlsIEhvcm1hbiA8bmhv cm1hbkB0dXhkcml2ZXIuY29tPgpEYXRlOiBNb24sIDE2IE5vdiAyMDE1IDEzOjA5OjEwIC0wNTAw ClN1YmplY3Q6IFtQQVRDSCAxMC8yNl0gc25tcDogUmVtb3ZlIGR1cGxpY2F0ZSBPVVRNQ0FTVCBz dGF0IGluY3JlbWVudAoKWyBVcHN0cmVhbSBjb21taXQgNDEwMzNmMDI5ZTM5M2E2NGU4MTk2NmNi ZTM0ZDY2YzZjZjhhMmU3ZSBdCgp0aGUgT1VUTUNBU1Qgc3RhdCBpcyBkb3VibGUgaW5jcmVtZW50 ZWQsIGdldHRpbmcgYnVtcGVkIG9uY2UgaW4gdGhlIG1jYXN0IGNvZGUKaXRzZWxmLCBhbmQgYWdh aW4gaW4gdGhlIGNvbW1vbiBpcCBvdXRwdXQgcGF0aC4gIFJlbW92ZSB0aGUgbWNhc3QgYnVtcCwg YXMgaXRzCm5vdCBuZWVkZWQKClZhbGlkYXRlZCBieSB0aGUgcmVwb3J0ZXIsIHdpdGggZ29vZCBy ZXN1bHRzCgpTaWduZWQtb2ZmLWJ5OiBOZWlsIEhvcm1hbiA8bmhvcm1hbkB0dXhkcml2ZXIuY29t PgpSZXBvcnRlZC1ieTogQ2xhdXMgSmVuc2VuIDxjbGF1cy5qZW5zZW5AbWljcm9zZW1pLmNvbT4K Q0M6IENsYXVzIEplbnNlbiA8Y2xhdXMuamVuc2VuQG1pY3Jvc2VtaS5jb20+CkNDOiBEYXZpZCBN aWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxl ciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2Ni9tY2FzdC5jIHwgMiAtLQogMSBm aWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbWNhc3Qu YyBiL25ldC9pcHY2L21jYXN0LmMKaW5kZXggMDgzYjI5Mi4uNDFlM2I1ZSAxMDA2NDQKLS0tIGEv bmV0L2lwdjYvbWNhc3QuYworKysgYi9uZXQvaXB2Ni9tY2FzdC5jCkBAIC0xNjUxLDcgKzE2NTEs NiBAQCBvdXQ6CiAJaWYgKCFlcnIpIHsKIAkJSUNNUDZNU0dPVVRfSU5DX1NUQVRTKG5ldCwgaWRl diwgSUNNUFY2X01MRDJfUkVQT1JUKTsKIAkJSUNNUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSUNN UDZfTUlCX09VVE1TR1MpOwotCQlJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19N SUJfT1VUTUNBU1QsIHBheWxvYWRfbGVuKTsKIAl9IGVsc2UgewogCQlJUDZfSU5DX1NUQVRTKG5l dCwgaWRldiwgSVBTVEFUU19NSUJfT1VURElTQ0FSRFMpOwogCX0KQEAgLTIwMTQsNyArMjAxMyw2 IEBAIG91dDoKIAlpZiAoIWVycikgewogCQlJQ01QNk1TR09VVF9JTkNfU1RBVFMobmV0LCBpZGV2 LCB0eXBlKTsKIAkJSUNNUDZfSU5DX1NUQVRTKG5ldCwgaWRldiwgSUNNUDZfTUlCX09VVE1TR1Mp OwotCQlJUDZfVVBEX1BPX1NUQVRTKG5ldCwgaWRldiwgSVBTVEFUU19NSUJfT1VUTUNBU1QsIGZ1 bGxfbGVuKTsKIAl9IGVsc2UKIAkJSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlC X09VVERJU0NBUkRTKTsKIAotLSAKMi40LjEKCgpGcm9tIGQzNmMyMzc2YzJmYTlkOTU5ZTc2MWFk NTU0Mzg3ZTE1YmI3MTAzNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/ cT9Caj1DMz1COHJuPTIwTW9yaz89IDxiam9ybkBtb3JrLm5vPgpEYXRlOiBXZWQsIDE4IE5vdiAy MDE1IDIxOjEzOjA3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxMS8yNl0gbmV0OiBxbWlfd3dhbjog YWRkIFhTIFN0aWNrIFcxMDAtMiBmcm9tIDRHIFN5c3RlbXMKTUlNRS1WZXJzaW9uOiAxLjAKQ29u dGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5j b2Rpbmc6IDhiaXQKClsgVXBzdHJlYW0gY29tbWl0IDY4MjQyYTVhMWUyZWRjZTM5YjA2OTM4NWNi YWZiODIzMDRlYWMwZjEgXQoKVGhvbWFzIHJlcG9ydHMKIgo0Z3N5c3RlbXMgc2VsbHMgdHdvIHRv dGFsIGRpZmZlcmVudCBMVEUtc3VyZnN0aWNrcyB1bmRlciB0aGUgc2FtZSBuYW1lLgouLgpUaGUg bmV3ZXIgdmVyc2lvbiBvZiBYUyBTdGljayBXMTAwIGlzIGZyb20gIm9tZWdhIgouLgpVbmRlciB3 aW5kb3dzIHRoZSBkcml2ZXIgc3dpdGNoZXMgdG8gdGhlIHNhbWUgSUQsIGFuZCB1c2VzIE1JMDNc NiBmb3IKbmV0d29yayBhbmQgTUkwMVw2IGZvciBtb2RlbS4KLi4KZWNobyAiMWM5ZSA5YjAxIiA+ IC9zeXMvYnVzL3VzYi9kcml2ZXJzL3FtaV93d2FuL25ld19pZAplY2hvICIxYzllIDliMDEiID4g L3N5cy9idXMvdXNiLXNlcmlhbC9kcml2ZXJzL29wdGlvbjEvbmV3X2lkCgpUOiAgQnVzPTAxIExl dj0wMSBQcm50PTAxIFBvcnQ9MDMgQ250PTAxIERldiM9ICA0IFNwZD00ODAgTXhDaD0gMApEOiAg VmVyPSAyLjAwIENscz0wMCg+aWZjICkgU3ViPTAwIFByb3Q9MDAgTXhQUz02NCAjQ2Zncz0gIDEK UDogIFZlbmRvcj0xYzllIFByb2RJRD05YjAxIFJldj0wMi4zMgpTOiAgTWFudWZhY3R1cmVyPVVT QiBNb2RlbQpTOiAgUHJvZHVjdD1VU0IgTW9kZW0KUzogIFNlcmlhbE51bWJlcj0KQzogICNJZnM9 IDUgQ2ZnIz0gMSBBdHI9ODAgTXhQd3I9NTAwbUEKSTogIElmIz0gMCBBbHQ9IDAgI0VQcz0gMiBD bHM9ZmYodmVuZC4pIFN1Yj1mZiBQcm90PWZmIERyaXZlcj1vcHRpb24KSTogIElmIz0gMSBBbHQ9 IDAgI0VQcz0gMyBDbHM9ZmYodmVuZC4pIFN1Yj1mZiBQcm90PWZmIERyaXZlcj1vcHRpb24KSTog IElmIz0gMiBBbHQ9IDAgI0VQcz0gMyBDbHM9ZmYodmVuZC4pIFN1Yj1mZiBQcm90PWZmIERyaXZl cj1vcHRpb24KSTogIElmIz0gMyBBbHQ9IDAgI0VQcz0gMyBDbHM9ZmYodmVuZC4pIFN1Yj1mZiBQ cm90PWZmIERyaXZlcj1xbWlfd3dhbgpJOiAgSWYjPSA0IEFsdD0gMCAjRVBzPSAyIENscz0wOChz dG9yLikgU3ViPTA2IFByb3Q9NTAgRHJpdmVyPXVzYi1zdG9yYWdlCgpOb3cgYWxsIGltcG9ydGFu dCB0aGluZ3MgYXJlIHRoZXJlOgoKd3dwMHMyOWY3dTJpMyAobmV0KSwgdHR5VVNCMiAoYXQpLCBj ZGMtd2RtMCAocW1pKSwgdHR5VVNCMSAoYXQpCgpUaGVyZSBpcyBhbHNvIHR0eVVTQjAsIGJ1dCBp dCBpcyBub3QgdXNhYmxlLCBhdCBsZWFzdCBub3QgZm9yIGF0LgoKVGhlIGRldmljZSB3b3JrcyB3 ZWxsIHdpdGggcW1pIGFuZCBNb2RlbU1hbmFnZXItTmV0d29ya01hbmFnZXIuCiIKClJlcG9ydGVk LWJ5OiBUaG9tYXMgU2Now6RmZXIgPHRzY2hhZWZlckB0LW9ubGluZS5kZT4KU2lnbmVkLW9mZi1i eTogQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC91c2IvcW1pX3d3YW4u YyB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvdXNiL3FtaV93d2FuLmMgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYwppbmRl eCA0ZTA0NzBkLi43MTE5MGRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4u YworKysgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYwpAQCAtNzc0LDYgKzc3NCw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBwcm9kdWN0c1tdID0gewogCXtRTUlfRklY RURfSU5URigweDIzNTcsIDB4OTAwMCwgNCl9LAkvKiBUUC1MSU5LIE1BMjYwICovCiAJe1FNSV9G SVhFRF9JTlRGKDB4MWJjNywgMHgxMjAwLCA1KX0sCS8qIFRlbGl0IExFOTIwICovCiAJe1FNSV9G SVhFRF9JTlRGKDB4MWJjNywgMHgxMjAxLCAyKX0sCS8qIFRlbGl0IExFOTIwICovCisJe1FNSV9G SVhFRF9JTlRGKDB4MWM5ZSwgMHg5YjAxLCAzKX0sCS8qIFhTIFN0aWNrIFcxMDAtMiBmcm9tIDRH IFN5c3RlbXMgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgwYjNjLCAweGMwMDAsIDQpfSwJLyogT2xp dmV0dGkgT2xpY2FyZCAxMDAgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgwYjNjLCAweGMwMDEsIDQp fSwJLyogT2xpdmV0dGkgT2xpY2FyZCAxMjAgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgwYjNjLCAw eGMwMDIsIDQpfSwJLyogT2xpdmV0dGkgT2xpY2FyZCAxNDAgKi8KLS0gCjIuNC4xCgoKRnJvbSAx NmExMWE1MGFjNGYxODVmMGVkYmZlMjkwNDdlMThmM2NiZGM4YmY5IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IFdl ZCwgMTggTm92IDIwMTUgMTI6NDA6MTMgLTA4MDAKU3ViamVjdDogW1BBVENIIDEyLzI2XSB0Y3A6 IG1kNTogZml4IGxvY2tkZXAgYW5ub3RhdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgMWI4ZTZhMDFl MTlmMDAxZTlmOTNiMzljMzIzODc5NjFjOTFlZDNjYyBdCgpXaGVuIGEgcGFzc2l2ZSBUQ1AgaXMg Y3JlYXRlZCwgd2UgZXZlbnR1YWxseSBjYWxsIHRjcF9tZDVfZG9fYWRkKCkKd2l0aCBzayBwb2lu dGluZyB0byB0aGUgY2hpbGQuIEl0IGlzIG5vdCBvd25lciBieSB0aGUgdXNlciB5ZXQgKHdlCndp bGwgYWRkIHRoaXMgc29ja2V0IGludG8gbGlzdGVuZXIgYWNjZXB0IHF1ZXVlIGEgYml0IGxhdGVy IGFueXdheSkKCkJ1dCB3ZSBkbyBvd24gdGhlIHNwaW5sb2NrLCBzbyBhbWVuZCB0aGUgbG9ja2Rl cCBhbm5vdGF0aW9uIHRvIGF2b2lkCmZvbGxvd2luZyBzcGxhdCA6CgpbIDg0NTEuMDkwOTMyXSBu ZXQvaXB2NC90Y3BfaXB2NC5jOjkyMyBzdXNwaWNpb3VzIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0 ZWQoKSB1c2FnZSEKWyA4NDUxLjA5MDkzMl0KWyA4NDUxLjA5MDkzMl0gb3RoZXIgaW5mbyB0aGF0 IG1pZ2h0IGhlbHAgdXMgZGVidWcgdGhpczoKWyA4NDUxLjA5MDkzMl0KWyA4NDUxLjA5MDkzNF0K WyA4NDUxLjA5MDkzNF0gcmN1X3NjaGVkdWxlcl9hY3RpdmUgPSAxLCBkZWJ1Z19sb2NrcyA9IDEK WyA4NDUxLjA5MDkzNl0gMyBsb2NrcyBoZWxkIGJ5IHNvY2tldF9zb2Nrb3B0Xy8yMTQ3OTU6Clsg ODQ1MS4wOTA5MzZdICAjMDogIChyY3VfcmVhZF9sb2NrKXsuKy4rLi59LCBhdDogWzxmZmZmZmZm Zjg1NWM2YWMxPl0gX19uZXRpZl9yZWNlaXZlX3NrYl9jb3JlKzB4MTUxLzB4ZTkwClsgODQ1MS4w OTA5NDddICAjMTogIChyY3VfcmVhZF9sb2NrKXsuKy4rLi59LCBhdDogWzxmZmZmZmZmZjg1NjE4 MTQzPl0gaXBfbG9jYWxfZGVsaXZlcl9maW5pc2grMHg0My8weDJiMApbIDg0NTEuMDkwOTUyXSAg IzI6ICAoc2xvY2stQUZfSU5FVCl7Ky4tLi4ufSwgYXQ6IFs8ZmZmZmZmZmY4NTVhY2RhNT5dIHNr X2Nsb25lX2xvY2srMHgxYzUvMHg1MDAKWyA4NDUxLjA5MDk1OF0KWyA4NDUxLjA5MDk1OF0gc3Rh Y2sgYmFja3RyYWNlOgpbIDg0NTEuMDkwOTYwXSBDUFU6IDcgUElEOiAyMTQ3OTUgQ29tbTogc29j a2V0X3NvY2tvcHRfCgpbIDg0NTEuMDkxMjE1XSBDYWxsIFRyYWNlOgpbIDg0NTEuMDkxMjE2XSAg PElSUT4gIFs8ZmZmZmZmZmY4NTZmYjI5Yz5dIGR1bXBfc3RhY2srMHg1NS8weDc2ClsgODQ1MS4w OTEyMjldICBbPGZmZmZmZmZmODUxMjNiNWI+XSBsb2NrZGVwX3JjdV9zdXNwaWNpb3VzKzB4ZWIv MHgxMTAKWyA4NDUxLjA5MTIzNV0gIFs8ZmZmZmZmZmY4NTY0NTQ0Zj5dIHRjcF9tZDVfZG9fYWRk KzB4MWJmLzB4MWUwClsgODQ1MS4wOTEyMzldICBbPGZmZmZmZmZmODU2NDU3NTE+XSB0Y3BfdjRf c3luX3JlY3Zfc29jaysweDFmMS8weDRjMApbIDg0NTEuMDkxMjQyXSAgWzxmZmZmZmZmZjg1NjQy YjI3Pl0gPyB0Y3BfdjRfbWQ1X2hhc2hfc2tiKzB4MTY3LzB4MTkwClsgODQ1MS4wOTEyNDZdICBb PGZmZmZmZmZmODU2NDdjNzg+XSB0Y3BfY2hlY2tfcmVxKzB4M2M4LzB4NTAwClsgODQ1MS4wOTEy NDldICBbPGZmZmZmZmZmODU2NDUxYWU+XSA/IHRjcF92NF9pbmJvdW5kX21kNV9oYXNoKzB4MTFl LzB4MTkwClsgODQ1MS4wOTEyNTNdICBbPGZmZmZmZmZmODU2NDcxNzA+XSB0Y3BfdjRfcmN2KzB4 M2MwLzB4OWYwClsgODQ1MS4wOTEyNTZdICBbPGZmZmZmZmZmODU2MTgxNDM+XSA/IGlwX2xvY2Fs X2RlbGl2ZXJfZmluaXNoKzB4NDMvMHgyYjAKWyA4NDUxLjA5MTI2MF0gIFs8ZmZmZmZmZmY4NTYx ODFiNj5dIGlwX2xvY2FsX2RlbGl2ZXJfZmluaXNoKzB4YjYvMHgyYjAKWyA4NDUxLjA5MTI2M10g IFs8ZmZmZmZmZmY4NTYxODE0Mz5dID8gaXBfbG9jYWxfZGVsaXZlcl9maW5pc2grMHg0My8weDJi MApbIDg0NTEuMDkxMjY3XSAgWzxmZmZmZmZmZjg1NjE4ZDM4Pl0gaXBfbG9jYWxfZGVsaXZlcisw eDQ4LzB4ODAKWyA4NDUxLjA5MTI3MF0gIFs8ZmZmZmZmZmY4NTYxODUxMD5dIGlwX3Jjdl9maW5p c2grMHgxNjAvMHg3MDAKWyA4NDUxLjA5MTI3M10gIFs8ZmZmZmZmZmY4NTYxOTAwZT5dIGlwX3Jj disweDI5ZS8weDNkMApbIDg0NTEuMDkxMjc3XSAgWzxmZmZmZmZmZjg1NWM3NGI3Pl0gX19uZXRp Zl9yZWNlaXZlX3NrYl9jb3JlKzB4YjQ3LzB4ZTkwCgpGaXhlczogYThhZmNhMDMyOTk4OCAoInRj cDogbWQ1OiBwcm90ZWN0cyBtZDVzaWdfaW5mbyB3aXRoIFJDVSIpClNpZ25lZC1vZmYtYnk6IEVy aWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KUmVwb3J0ZWQtYnk6IFdpbGxlbSBkZSBC cnVpam4gPHdpbGxlbWJAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVy IDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L3RjcF9pcHY0LmMgfCAzICsrLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jCmluZGV4IDQ0MWNh NmYuLjg4MjAzZTcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMKKysrIGIvbmV0L2lw djQvdGNwX2lwdjQuYwpAQCAtOTIyLDcgKzkyMiw4IEBAIGludCB0Y3BfbWQ1X2RvX2FkZChzdHJ1 Y3Qgc29jayAqc2ssIGNvbnN0IHVuaW9uIHRjcF9tZDVfYWRkciAqYWRkciwKIAl9CiAKIAltZDVz aWcgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRwLT5tZDVzaWdfaW5mbywKLQkJCQkJICAg c29ja19vd25lZF9ieV91c2VyKHNrKSk7CisJCQkJCSAgIHNvY2tfb3duZWRfYnlfdXNlcihzaykg fHwKKwkJCQkJICAgbG9ja2RlcF9pc19oZWxkKCZzay0+c2tfbG9jay5zbG9jaykpOwogCWlmICgh bWQ1c2lnKSB7CiAJCW1kNXNpZyA9IGttYWxsb2Moc2l6ZW9mKCptZDVzaWcpLCBnZnApOwogCQlp ZiAoIW1kNXNpZykKLS0gCjIuNC4xCgoKRnJvbSAzNjE5ODM2NmI1MzM4NzFlODc5NmE0YTllMGM2 ZTBkZTdkMDE3YjA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBZdWNodW5nIENoZW5n IDx5Y2hlbmdAZ29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxOCBOb3YgMjAxNSAxODoxNzozMCAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggMTMvMjZdIHRjcDogZGlzYWJsZSBGYXN0IE9wZW4gb24gdGltZW91 dHMgYWZ0ZXIgaGFuZHNoYWtlCgpbIFVwc3RyZWFtIGNvbW1pdCAwZTQ1ZjRkYTU5ODE4OTVlODg1 ZGQ3MmZlOTEyYTNmOGUzMmJhZTczIF0KClNvbWUgbWlkZGxlLWJveGVzIGJsYWNrLWhvbGUgdGhl IGRhdGEgYWZ0ZXIgdGhlIEZhc3QgT3BlbiBoYW5kc2hha2UKKGh0dHBzOi8vd3d3LmlldGYub3Jn L3Byb2NlZWRpbmdzLzk0L3NsaWRlcy9zbGlkZXMtOTQtdGNwbS0xMy5wZGYpLgpUaGUgZXhhY3Qg cmVhc29uIGlzIHVua25vd24uIFRoZSB3b3JrLWFyb3VuZCBpcyB0byBkaXNhYmxlIEZhc3QgT3Bl bgp0ZW1wb3JhcmlseSBhZnRlciBtdWx0aXBsZSByZWN1cnJpbmcgdGltZW91dHMgd2l0aCBmZXcg b3Igbm8gZGF0YQpkZWxpdmVyZWQgaW4gdGhlIGVzdGFibGlzaGVkIHN0YXRlLgoKU2lnbmVkLW9m Zi1ieTogWXVjaHVuZyBDaGVuZyA8eWNoZW5nQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEVy aWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KUmVwb3J0ZWQtYnk6IENocmlzdG9waCBQ YWFzY2ggPGNwYWFzY2hAYXBwbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIg PGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjQvdGNwX3RpbWVyLmMgfCAxMiArKysr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv bmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwppbmRleCA4YzY1ZGMx Li5jOGY5Nzg1IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuYworKysgYi9uZXQvaXB2 NC90Y3BfdGltZXIuYwpAQCAtMTc2LDYgKzE3NiwxOCBAQCBzdGF0aWMgaW50IHRjcF93cml0ZV90 aW1lb3V0KHN0cnVjdCBzb2NrICpzaykKIAkJc3luX3NldCA9IHRydWU7CiAJfSBlbHNlIHsKIAkJ aWYgKHJldHJhbnNtaXRzX3RpbWVkX291dChzaywgc3lzY3RsX3RjcF9yZXRyaWVzMSwgMCwgMCkp IHsKKwkJCS8qIFNvbWUgbWlkZGxlLWJveGVzIG1heSBibGFjay1ob2xlIEZhc3QgT3BlbiBfYWZ0 ZXJfCisJCQkgKiB0aGUgaGFuZHNoYWtlLiBUaGVyZWZvcmUgd2UgY29uc2VydmF0aXZlbHkgZGlz YWJsZQorCQkJICogRmFzdCBPcGVuIG9uIHRoaXMgcGF0aCBvbiByZWN1cnJpbmcgdGltZW91dHMg d2l0aAorCQkJICogZmV3IG9yIHplcm8gYnl0ZXMgYWNrZWQgYWZ0ZXIgRmFzdCBPcGVuLgorCQkJ ICovCisJCQlpZiAodHAtPnN5bl9kYXRhX2Fja2VkICYmCisJCQkgICAgdHAtPmJ5dGVzX2Fja2Vk IDw9IHRwLT5yeF9vcHQubXNzX2NsYW1wKSB7CisJCQkJdGNwX2Zhc3RvcGVuX2NhY2hlX3NldChz aywgMCwgTlVMTCwgdHJ1ZSwgMCk7CisJCQkJaWYgKGljc2stPmljc2tfcmV0cmFuc21pdHMgPT0g c3lzY3RsX3RjcF9yZXRyaWVzMSkKKwkJCQkJTkVUX0lOQ19TVEFUU19CSChzb2NrX25ldChzayks CisJCQkJCQkJIExJTlVYX01JQl9UQ1BGQVNUT1BFTkFDVElWRUZBSUwpOworCQkJfQogCQkJLyog QmxhY2sgaG9sZSBkZXRlY3Rpb24gKi8KIAkJCXRjcF9tdHVfcHJvYmluZyhpY3NrLCBzayk7CiAK LS0gCjIuNC4xCgoKRnJvbSA3N2RjZTYzMjk0ZjEzZGM4ZmYxMmQxNDE3YjkzYWFmODBmNzY0ZjFk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdv b2dsZS5jb20+CkRhdGU6IFdlZCwgMTggTm92IDIwMTUgMjE6MDM6MzMgLTA4MDAKU3ViamVjdDog W1BBVENIIDE0LzI2XSB0Y3A6IGZpeCBwb3RlbnRpYWwgaHVnZSBrbWFsbG9jKCkgY2FsbHMgaW4g VENQX1JFUEFJUgoKWyBVcHN0cmVhbSBjb21taXQgNWQ0YzliZmJhYmRiMWQ0OTdmMjFhZmQ4MTUw MWU1YzU0YjBjODVkOSBdCgp0Y3Bfc2VuZF9yY3ZxKCkgaXMgdXNlZCBmb3IgcmUtaW5qZWN0aW5n IGRhdGEgaW50byB0Y3AgcmVjZWl2ZSBxdWV1ZS4KClByb2JsZW1zIDoKCi0gTm8gY2hlY2sgYWdh aW5zdCBzaXplIGlzIHBlcmZvcm1lZCwgYWxsb3dlZCB1c2VyIHRvIGZvb2wga2VybmVsIGluCiAg YXR0ZW1wdGluZyB2ZXJ5IGxhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucywgZXZlbnR1YWxseSB0cmln Z2VyaW5nCiAgT09NIHdoZW4gbWVtb3J5IGlzIGZyYWdtZW50ZWQuCgotIEluIGNhc2Ugb2YgZmF1 bHQgZHVyaW5nIHRoZSBjb3B5IHdlIGRvIG5vdCByZXR1cm4gY29ycmVjdCBlcnJuby4KCkxldHMg dXNlIGFsbG9jX3NrYl93aXRoX2ZyYWdzKCkgdG8gY29vayBvcHRpbWFsIHNrYnMuCgpGaXhlczog MjkyZThkOGM4NTM4ICgidGNwOiBNb3ZlIHJjdnEgc2VuZGluZyB0byB0Y3BfaW5wdXQuYyIpCkZp eGVzOiBjMGU4OGZmMGYyNTYgKCJ0Y3A6IFJlcGFpciBzb2NrZXQgcXVldWVzIikKU2lnbmVkLW9m Zi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpDYzogUGF2ZWwgRW1lbHlh bm92IDx4ZW11bEBwYXJhbGxlbHMuY29tPgpBY2tlZC1ieTogUGF2ZWwgRW1lbHlhbm92IDx4ZW11 bEBwYXJhbGxlbHMuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRh dmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjQvdGNwX2lucHV0LmMgfCAyMiArKysrKysrKysrKysr KysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1 dC5jCmluZGV4IGM5YWI5NjQuLjdiMWZjOTUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pbnB1 dC5jCisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCkBAIC00NDM4LDE5ICs0NDM4LDM0IEBAIHN0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIHRjcF9xdWV1ZV9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCBpbnQKIGludCB0Y3Bfc2VuZF9yY3ZxKHN0cnVjdCBzb2NrICpzaywg c3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2ti OworCWludCBlcnIgPSAtRU5PTUVNOworCWludCBkYXRhX2xlbiA9IDA7CiAJYm9vbCBmcmFnc3Rv bGVuOwogCiAJaWYgKHNpemUgPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQlza2IgPSBhbGxvY19za2Io c2l6ZSwgc2stPnNrX2FsbG9jYXRpb24pOworCWlmIChzaXplID4gUEFHRV9TSVpFKSB7CisJCWlu dCBucGFnZXMgPSBtaW5fdChzaXplX3QsIHNpemUgPj4gUEFHRV9TSElGVCwgTUFYX1NLQl9GUkFH Uyk7CisKKwkJZGF0YV9sZW4gPSBucGFnZXMgPDwgUEFHRV9TSElGVDsKKwkJc2l6ZSA9IGRhdGFf bGVuICsgKHNpemUgJiB+UEFHRV9NQVNLKTsKKwl9CisJc2tiID0gYWxsb2Nfc2tiX3dpdGhfZnJh Z3Moc2l6ZSAtIGRhdGFfbGVuLCBkYXRhX2xlbiwKKwkJCQkgICBQQUdFX0FMTE9DX0NPU1RMWV9P UkRFUiwKKwkJCQkgICAmZXJyLCBzay0+c2tfYWxsb2NhdGlvbik7CiAJaWYgKCFza2IpCiAJCWdv dG8gZXJyOwogCisJc2tiX3B1dChza2IsIHNpemUgLSBkYXRhX2xlbik7CisJc2tiLT5kYXRhX2xl biA9IGRhdGFfbGVuOworCXNrYi0+bGVuID0gc2l6ZTsKKwogCWlmICh0Y3BfdHJ5X3JtZW1fc2No ZWR1bGUoc2ssIHNrYiwgc2tiLT50cnVlc2l6ZSkpCiAJCWdvdG8gZXJyX2ZyZWU7CiAKLQlpZiAo bWVtY3B5X2Zyb21fbXNnKHNrYl9wdXQoc2tiLCBzaXplKSwgbXNnLCBzaXplKSkKKwllcnIgPSBz a2JfY29weV9kYXRhZ3JhbV9mcm9tX2l0ZXIoc2tiLCAwLCAmbXNnLT5tc2dfaXRlciwgc2l6ZSk7 CisJaWYgKGVycikKIAkJZ290byBlcnJfZnJlZTsKIAogCVRDUF9TS0JfQ0Ioc2tiKS0+c2VxID0g dGNwX3NrKHNrKS0+cmN2X254dDsKQEAgLTQ0NjYsNyArNDQ4MSw4IEBAIGludCB0Y3Bfc2VuZF9y Y3ZxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSkKIGVy cl9mcmVlOgogCWtmcmVlX3NrYihza2IpOwogZXJyOgotCXJldHVybiAtRU5PTUVNOworCXJldHVy biBlcnI7CisKIH0KIAogc3RhdGljIHZvaWQgdGNwX2RhdGFfcXVldWUoc3RydWN0IHNvY2sgKnNr LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQotLSAKMi40LjEKCgpGcm9tIDU4YjY2NTEzYmI4MTM1MTkz YzJhM2UwZGNlNGFmZGVjMjI5ZWViOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVy aWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogVGh1LCAyNiBOb3YgMjAxNSAw ODoxODoxNCAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMTUvMjZdIHRjcDogaW5pdGlhbGl6ZSB0cC0+ Y29waWVkX3NlcSBpbiBjYXNlIG9mIGNyb3NzIFNZTgogY29ubmVjdGlvbgoKWyBVcHN0cmVhbSBj b21taXQgMTQyYTJlN2VjZThkOGFjMGU4MThlYjJjOTFmOTljYTg5NDczMGUyYSBdCgpEbWl0cnkg cHJvdmlkZWQgYSBzeXprYWxsZXIgKGh0dHA6Ly9naXRodWIuY29tL2dvb2dsZS9zeXprYWxsZXIp CmdlbmVyYXRlZCBwcm9ncmFtIHRoYXQgdHJpZ2dlcnMgdGhlIFdBUk5JTkcgYXQKbmV0L2lwdjQv dGNwLmM6MTcyOSBpbiB0Y3BfcmVjdm1zZygpIDoKCldBUk5fT04odHAtPmNvcGllZF9zZXEgIT0g dHAtPnJjdl9ueHQgJiYKICAgICAgICAhKGZsYWdzICYgKE1TR19QRUVLIHwgTVNHX1RSVU5DKSkp OwoKSGlzIHByb2dyYW0gaXMgc3BlY2lmaWNhbGx5IGF0dGVtcHRpbmcgYSBDcm9zcyBTWU4gVENQ IGV4Y2hhbmdlLAp0aGF0IHdlIHN1cHBvcnQgKGZvciB0aGUgcGxlYXN1cmUgb2YgaGFja2VycyA/ KSwgYnV0IGl0IGxvb2tzIHdlCmxhY2sgcHJvcGVyIHRjcC0+Y29waWVkX3NlcSBpbml0aWFsaXph dGlvbi4KClRoYW5rcyBhZ2FpbiBEbWl0cnkgZm9yIHlvdXIgcmVwb3J0IGFuZCB0ZXN0aW5ncy4K ClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KUmVwb3J0 ZWQtYnk6IERtaXRyeSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4KVGVzdGVkLWJ5OiBEbWl0 cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2NC90Y3BfaW5wdXQuYyB8IDEg KwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQv dGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCA3YjFmYzk1Li44NzQ2M2M4 IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuYworKysgYi9uZXQvaXB2NC90Y3BfaW5w dXQuYwpAQCAtNTYzOCw2ICs1NjM4LDcgQEAgZGlzY2FyZDoKIAkJfQogCiAJCXRwLT5yY3Zfbnh0 ID0gVENQX1NLQl9DQihza2IpLT5zZXEgKyAxOworCQl0cC0+Y29waWVkX3NlcSA9IHRwLT5yY3Zf bnh0OwogCQl0cC0+cmN2X3d1cCA9IFRDUF9TS0JfQ0Ioc2tiKS0+c2VxICsgMTsKIAogCQkvKiBS RkMxMzIzOiBUaGUgd2luZG93IGluIFNZTiAmIFNZTi9BQ0sgc2VnbWVudHMgaXMKLS0gCjIuNC4x CgoKRnJvbSAzYmJmOTRmNWQxYjgzNTQ1ZDY0YzNjYWE4MWM4M2QzYWFkMTA0YTljIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gu bmV0PgpEYXRlOiBGcmksIDIwIE5vdiAyMDE1IDAwOjExOjU2ICswMTAwClN1YmplY3Q6IFtQQVRD SCAxNi8yNl0gbmV0LCBzY206IGZpeCBQYVggZGV0ZWN0ZWQgbXNnX2NvbnRyb2xsZW4gb3ZlcmZs b3cgaW4KIHNjbV9kZXRhY2hfZmRzCgpbIFVwc3RyZWFtIGNvbW1pdCA2OTAwMzE3ZjVlZmYwYTcw NzBjNTkzNmU1MzgzZjU4OWUwZGU3YTA5IF0KCkRhdmlkIGFuZCBIYWNLdXJ4IHJlcG9ydGVkIGEg Zm9sbG93aW5nL3NpbWlsYXIgc2l6ZSBvdmVyZmxvdyB0cmlnZ2VyZWQKaW4gYSBncnNlY3VyaXR5 IGtlcm5lbCwgdGhhbmtzIHRvIFBhWCdzIGdjYyBzaXplIG92ZXJmbG93IHBsdWdpbjoKCihBbHJl YWR5IGZpeGVkIGluIGxhdGVyIGdyc2VjdXJpdHkgdmVyc2lvbnMgYnkgQnJhZCBhbmQgUGFYIFRl YW0uKQoKWyAxMDAyLjI5NjEzN10gUEFYOiBzaXplIG92ZXJmbG93IGRldGVjdGVkIGluIGZ1bmN0 aW9uIHNjbV9kZXRhY2hfZmRzIG5ldC9jb3JlL3NjbS5jOjMxNAogICAgICAgICAgICAgICBjaWN1 cy4yMDJfMTI3IG1pbiwgY291bnQ6IDQsIGRlY2w6IG1zZ19jb250cm9sbGVuOyBudW06IDA7IGNv bnRleHQ6IG1zZ2hkcjsKWyAxMDAyLjI5NjE0NV0gQ1BVOiAwIFBJRDogMzY4NSBDb21tOiBzY21f cmlnaHRzX3JlY3YgTm90IHRhaW50ZWQgNC4yLjMtZ3JzZWMrICM3ClsgMTAwMi4yOTYxNDldIEhh cmR3YXJlIG5hbWU6IEFwcGxlIEluYy4gTWFjQm9va0FpcjUsMS9NYWMtNjZGMzVGMTlGRTJBMEQw NSwgWy4uLl0KWyAxMDAyLjI5NjE1M10gIGZmZmZmZmZmODFjMjczNjYgMDAwMDAwMDAwMDAwMDAw MCBmZmZmZmZmZjgxYzI3Mzc1IGZmZmZjOTAwMDc4NDNhYTgKWyAxMDAyLjI5NjE2Ml0gIGZmZmZm ZmZmODE4MTI5YmEgMDAwMDAwMDAwMDAwMDAwMCBmZmZmZmZmZjgxYzI3MzY2IGZmZmZjOTAwMDc4 NDNhZDgKWyAxMDAyLjI5NjE2OV0gIGZmZmZmZmZmODEyMWY4MzggZmZmZmZmZmZmZmZmZmZmYyBm ZmZmZmZmZmZmZmZmZmZjIGZmZmZjOTAwMDc4NDNlNjAKWyAxMDAyLjI5NjE3Nl0gQ2FsbCBUcmFj ZToKWyAxMDAyLjI5NjE5MF0gIFs8ZmZmZmZmZmY4MTgxMjliYT5dIGR1bXBfc3RhY2srMHg0NS8w eDU3ClsgMTAwMi4yOTYyMDBdICBbPGZmZmZmZmZmODEyMWY4Mzg+XSByZXBvcnRfc2l6ZV9vdmVy ZmxvdysweDM4LzB4NjAKWyAxMDAyLjI5NjIwOV0gIFs8ZmZmZmZmZmY4MTZhOTc5ZT5dIHNjbV9k ZXRhY2hfZmRzKzB4MmNlLzB4MzAwClsgMTAwMi4yOTYyMjBdICBbPGZmZmZmZmZmODE3OTE4OTk+ XSB1bml4X3N0cmVhbV9yZWFkX2dlbmVyaWMrMHg2MDkvMHg5MzAKWyAxMDAyLjI5NjIyOF0gIFs8 ZmZmZmZmZmY4MTc5MWM5Zj5dIHVuaXhfc3RyZWFtX3JlY3Ztc2crMHg0Zi8weDYwClsgMTAwMi4y OTYyMzZdICBbPGZmZmZmZmZmODE3OGRjMDA+XSA/IHVuaXhfc2V0X3BlZWtfb2ZmKzB4NTAvMHg1 MApbIDEwMDIuMjk2MjQzXSAgWzxmZmZmZmZmZjgxNjhmYWM3Pl0gc29ja19yZWN2bXNnKzB4NDcv MHg2MApbIDEwMDIuMjk2MjQ4XSAgWzxmZmZmZmZmZjgxNjkxNTIyPl0gX19fc3lzX3JlY3Ztc2cr MHhlMi8weDFlMApbIDEwMDIuMjk2MjU3XSAgWzxmZmZmZmZmZjgxNjkzNDk2Pl0gX19zeXNfcmVj dm1zZysweDQ2LzB4ODAKWyAxMDAyLjI5NjI2M10gIFs8ZmZmZmZmZmY4MTY5MzRmYz5dIFN5U19y ZWN2bXNnKzB4MmMvMHg0MApbIDEwMDIuMjk2MjcxXSAgWzxmZmZmZmZmZjgxODFhM2FiPl0gZW50 cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsweDEyLzB4ODUKCkZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBz aG93ZWQgdGhhdCB0aGlzIGNhbiBoYXBwZW4gd2hlbiBhbiAqb2RkKiBudW1iZXIgb2YKZmRzIGFy ZSBiZWluZyBwYXNzZWQgb3ZlciBBRl9VTklYIHNvY2tldHMuCgpJbiB0aGVzZSBjYXNlcyBDTVNH X0xFTihpICogc2l6ZW9mKGludCkpIGFuZCBDTVNHX1NQQUNFKGkgKiBzaXplb2YoaW50KSksCndo ZXJlIGkgaXMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsbHkgcGFzc2VkIGZkcywgZGlmZmVyIGJ5 IDQgYnl0ZXMgZHVlCnRvIHRoZSBleHRyYSBDTVNHX0FMSUdOKCkgcGFkZGluZyBpbiBDTVNHX1NQ QUNFKCkgdG8gYW4gOCBieXRlIGJvdW5kYXJ5Cm9uIDY0IGJpdC4gVGhlIHBhZGRpbmcgaXMgdXNl ZCB0byBhbGlnbiBzdWJzZXF1ZW50IGNtc2cgaGVhZGVycyBpbiB0aGUKY29udHJvbCBidWZmZXIu CgpXaGVuIHRoZSBjb250cm9sIGJ1ZmZlciBwYXNzZWQgaW4gZnJvbSB0aGUgcmVjZWl2ZXIgc2lk ZSAqbGFja3MqIHRoZXNlIDQKYnl0ZXMgKGUuZy4gZHVlIHRvIGJ1Z2d5L3dyb25nIEFQSSB1c2Fn ZSksIHRoZW4gbXNnLT5tc2dfY29udHJvbGxlbiB3aWxsCm92ZXJmbG93IGluIHNjbV9kZXRhY2hf ZmRzKCk6CgogIGludCBjbWxlbiA9IENNU0dfTEVOKGkgKiBzaXplb2YoaW50KSk7ICA8LS0tIGNt bGVuIHcvbyB0YWlsLXBhZGRpbmcKICBlcnIgPSBwdXRfdXNlcihTT0xfU09DS0VULCAmY20tPmNt c2dfbGV2ZWwpOwogIGlmICghZXJyKQogICAgZXJyID0gcHV0X3VzZXIoU0NNX1JJR0hUUywgJmNt LT5jbXNnX3R5cGUpOwogIGlmICghZXJyKQogICAgZXJyID0gcHV0X3VzZXIoY21sZW4sICZjbS0+ Y21zZ19sZW4pOwogIGlmICghZXJyKSB7CiAgICBjbWxlbiA9IENNU0dfU1BBQ0UoaSAqIHNpemVv ZihpbnQpKTsgIDwtLS0gY21sZW4gdy8gNCBieXRlIGV4dHJhIHRhaWwtcGFkZGluZwogICAgbXNn LT5tc2dfY29udHJvbCArPSBjbWxlbjsKICAgIG1zZy0+bXNnX2NvbnRyb2xsZW4gLT0gY21sZW47 ICAgICAgICAgPC0tLSBpZmYgbm8gdGFpbC1wYWRkaW5nIHNwYWNlIGhlcmUgLi4uCiAgfSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIHdyYXAtYXJvdW5kCgpG LmUuIGl0IHdpbGwgd3JhcCB0byBhIGxlbmd0aCBvZiAxODQ0Njc0NDA3MzcwOTU1MTYxMiBieXRl cyBpbiBjYXNlIHRoZQpyZWNlaXZlciBwYXNzZWQgaW4gbXNnLT5tc2dfY29udHJvbGxlbiBvZiAy MCBieXRlcywgYW5kIHRoZSBzZW5kZXIKcHJvcGVybHkgdHJhbnNmZXJyZWQgMSBmZCB0byB0aGUg cmVjZWl2ZXIsIHNvIHRoYXQgaXRzIENNU0dfTEVOIHJlc3VsdHMKaW4gMjAgYnl0ZXMgYW5kIENN U0dfU1BBQ0UgaW4gMjQgYnl0ZXMuCgpJbiBjYXNlIG9mIE1TR19DTVNHX0NPTVBBVCAoc2NtX2Rl dGFjaF9mZHNfY29tcGF0KCkpLCBJIGhhdmVuJ3Qgc2VlbiBhbgppc3N1ZSBpbiBteSB0ZXN0cyBh cyBhbGlnbm1lbnQgc2VlbXMgYWx3YXlzIG9uIDQgYnl0ZSBib3VuZGFyeS4gU2FtZQpzaG91bGQg YmUgaW4gY2FzZSBvZiBuYXRpdmUgMzIgYml0LCB3aGVyZSB3ZSBlbmQgdXAgd2l0aCA0IGJ5dGUg Ym91bmRhcmllcwphcyB3ZWxsLgoKSW4gcHJhY3RpY2UsIHBhc3NpbmcgbXNnLT5tc2dfY29udHJv bGxlbiBvZiAyMCB0byByZWN2bXNnKCkgd2hpbGUgcmVjZWl2aW5nCmEgc2luZ2xlIGZkIHdvdWxk IG1lYW4gdGhhdCBvbiBzdWNjZXNzZnVsIHJldHVybiwgbXNnLT5tc2dfY29udHJvbGxlbiBpcwpi ZWluZyBzZXQgYnkgdGhlIGtlcm5lbCB0byAyNCBieXRlcyBpbnN0ZWFkLCB0aHVzIG1vcmUgdGhh biB0aGUgaW5wdXQKYnVmZmVyIGFkdmVydGlzZWQuIEl0IGNvdWxkIGYuZS4gYmVjb21lIGFuIGlz c3VlIGlmIHN1Y2ggYXBwbGljYXRpb24gbGF0ZXIKb24gemVyb2VzIG9yIGNvcGllcyB0aGUgY29u dHJvbCBidWZmZXIgYmFzZWQgb24gdGhlIHJldHVybmVkIG1zZy0+bXNnX2NvbnRyb2xsZW4KZWxz ZXdoZXJlLgoKTWF4aW11bSBudW1iZXIgb2YgZmRzIHdlIGNhbiBzZW5kIGlzIGEgaGFyZCB1cHBl ciBsaW1pdCBTQ01fTUFYX0ZEICgyNTMpLgoKR29pbmcgb3ZlciB0aGUgY29kZSwgaXQgc2VlbXMg bGlrZSBtc2ctPm1zZ19jb250cm9sbGVuIGlzIG5vdCBiZWluZyByZWFkCmFmdGVyIHNjbV9kZXRh Y2hfZmRzKCkgaW4gc2NtX3JlY3YoKSBhbnltb3JlIGJ5IHRoZSBrZXJuZWwsIGdvb2QhCgpSZWxl dmFudCByZWN2bXNnKCkgaGFuZGxlciBhcmUgdW5peF9kZ3JhbV9yZWN2bXNnKCkgKHVuaXhfc2Vx cGFja2V0X3JlY3Ztc2coKSkKYW5kIHVuaXhfc3RyZWFtX3JlY3Ztc2coKS4gQm90aCByZXR1cm4g YmFjayB0byB0aGVpciByZWN2bXNnKCkgY2FsbGVyLAphbmQgX19fc3lzX3JlY3Ztc2coKSBwbGFj ZXMgdGhlIHVwZGF0ZWQgbGVuZ3RoLCB0aGF0IGlzLCBuZXcgbXNnX2NvbnRyb2wgLQpvbGQgbXNn X2NvbnRyb2wgcG9pbnRlciBpbnRvIG1zZy0+bXNnX2NvbnRyb2xsZW4gKGhlbmNlIHRoZSAyNCBi eXRlcyBzZWVuCmluIHRoZSBleGFtcGxlKS4KCkxvbmcgdGltZSBhZ28sIFdlaSBZb25nanVuIGZp eGVkIHNvbWV0aGluZyByZWxhdGVkIGluIGNvbW1pdCAxYWM3MGU3YWQyNGEKKCJbTkVUXTogRml4 IGZ1bmN0aW9uIHB1dF9jbXNnKCkgd2hpY2ggbWF5IGNhdXNlIHVzciBhcHBsaWNhdGlvbiBtZW1v cnkKb3ZlcmZsb3ciKS4KClJGQzM1NDIsIHNlY3Rpb24gMjAuMi4gc2F5czoKCiAgVGhlIGZpZWxk cyBzaG93biBhcyAiWFgiIGFyZSBwb3NzaWJsZSBwYWRkaW5nLCBiZXR3ZWVuIHRoZSBjbXNnaGRy CiAgc3RydWN0dXJlIGFuZCB0aGUgZGF0YSwgYW5kIGJldHdlZW4gdGhlIGRhdGEgYW5kIHRoZSBu ZXh0IGNtc2doZHIKICBzdHJ1Y3R1cmUsIGlmIHJlcXVpcmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlv bi4gV2hpbGUgc2VuZGluZyBhbgogIGFwcGxpY2F0aW9uIG1heSBvciBtYXkgbm90IGluY2x1ZGUg cGFkZGluZyBhdCB0aGUgZW5kIG9mIGxhc3QKICBhbmNpbGxhcnkgZGF0YSBpbiBtc2dfY29udHJv bGxlbiBhbmQgaW1wbGVtZW50YXRpb25zIG11c3QgYWNjZXB0IGJvdGgKICBhcyB2YWxpZC4gT24g cmVjZWl2aW5nIGEgcG9ydGFibGUgYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIHNwYWNlIGZvcgog IHBhZGRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgbGFzdCBhbmNpbGxhcnkgZGF0YSBhcyBpbXBsZW1l bnRhdGlvbnMgbWF5CiAgY29weSBvdXQgdGhlIHBhZGRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgY29u dHJvbCBtZXNzYWdlIGJ1ZmZlciBhbmQKICBpbmNsdWRlIGl0IGluIHRoZSByZWNlaXZlZCBtc2df Y29udHJvbGxlbi4gV2hlbiByZWN2bXNnKCkgaXMgY2FsbGVkCiAgaWYgbXNnX2NvbnRyb2xsZW4g aXMgdG9vIHNtYWxsIGZvciBhbGwgdGhlIGFuY2lsbGFyeSBkYXRhIGl0ZW1zCiAgaW5jbHVkaW5n IGFueSB0cmFpbGluZyBwYWRkaW5nIGFmdGVyIHRoZSBsYXN0IGl0ZW0gYW4gaW1wbGVtZW50YXRp b24KICBtYXkgc2V0IE1TR19DVFJVTkMuCgpTaW5jZSB3ZSBkaWRuJ3QgcGxhY2UgTVNHX0NUUlVO QyBmb3IgYWxyZWFkeSBxdWl0ZSBhIGxvbmcgdGltZSwganVzdCBkbwp0aGUgc2FtZSBhcyBpbiAx YWM3MGU3YWQyNGEgdG8gYXZvaWQgYW4gb3ZlcmZsb3cuCgpCdHcsIGV2ZW4gbWFuLXBhZ2UgYXV0 aG9yIGdvdCB0aGlzIHdyb25nIDovIFNlZSBkYjkzOWM5YjI2ZTkgKCJjbXNnLjM6IEZpeAplcnJv ciBpbiBTQ01fUklHSFRTIGNvZGUgc2FtcGxlIikuIFNvbWUgcGVvcGxlIG11c3QgaGF2ZSBjb3Bp ZWQgdGhpcyAoPyksCnRodXMgaXQgZ290IHRyaWdnZXJlZCBpbiB0aGUgd2lsZCAocmVwb3J0ZWQg c2V2ZXJhbCB0aW1lcyBkdXJpbmcgYm9vdCBieQpEYXZpZCBhbmQgSGFjS3VyeCkuCgpObyBGaXhl cyB0YWcgdGhpcyB0aW1lIGFzIHByZSAyMDAyICh0aGF0IGlzLCBwcmUgaGlzdG9yeSB0cmVlKS4K ClJlcG9ydGVkLWJ5OiBEYXZpZCBTdGVyYmEgPGRhdmVAamlrb3MuY3o+ClJlcG9ydGVkLWJ5OiBI YWNLdXJ4IDxoYWNrdXJ4QGdtYWlsLmNvbT4KQ2M6IFBhWCBUZWFtIDxwYWdlZXhlY0BmcmVlbWFp bC5odT4KQ2M6IEVtZXNlIFJldmZ5IDxyZS5lbWVzZUBnbWFpbC5jb20+CkNjOiBCcmFkIFNwZW5n bGVyIDxzcGVuZGVyQGdyc2VjdXJpdHkubmV0PgpDYzogV2VpIFlvbmdqdW4gPHlvbmdqdW5fd2Vp QHRyZW5kbWljcm8uY29tLmNuPgpDYzogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29t PgpSZXZpZXdlZC1ieTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3NpbmR1a3Rp b24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gu bmV0PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ Ci0tLQogbmV0L2NvcmUvc2NtLmMgfCAyICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspCgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc2NtLmMgYi9uZXQvY29yZS9zY20uYwppbmRleCAz YjY4OTliLi44YTE3NDFiIDEwMDY0NAotLS0gYS9uZXQvY29yZS9zY20uYworKysgYi9uZXQvY29y ZS9zY20uYwpAQCAtMzA1LDYgKzMwNSw4IEBAIHZvaWQgc2NtX2RldGFjaF9mZHMoc3RydWN0IG1z Z2hkciAqbXNnLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKQogCQkJZXJyID0gcHV0X3VzZXIoY21s ZW4sICZjbS0+Y21zZ19sZW4pOwogCQlpZiAoIWVycikgewogCQkJY21sZW4gPSBDTVNHX1NQQUNF KGkqc2l6ZW9mKGludCkpOworCQkJaWYgKG1zZy0+bXNnX2NvbnRyb2xsZW4gPCBjbWxlbikKKwkJ CQljbWxlbiA9IG1zZy0+bXNnX2NvbnRyb2xsZW47CiAJCQltc2ctPm1zZ19jb250cm9sICs9IGNt bGVuOwogCQkJbXNnLT5tc2dfY29udHJvbGxlbiAtPSBjbWxlbjsKIAkJfQotLSAKMi40LjEKCgpG cm9tIGJjMmEzMmEyMTU4MGNiNGEzZjgwN2EwMGU3MzU1ZjM2NWVjMmY5NjkgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IE5pa29sYXkgQWxla3NhbmRyb3YgPG5pa29sYXlAY3VtdWx1c25l dHdvcmtzLmNvbT4KRGF0ZTogRnJpLCAyMCBOb3YgMjAxNSAxMzo1NDoxOSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggMTcvMjZdIG5ldDogaXBtcjogZml4IHN0YXRpYyBtZmMvZGV2IGxlYWtzIG9uIHRh YmxlCiBkZXN0cnVjdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgMGU2MTVlOTYwMWExNWVmZWViODk0 MmNmN2NkNGRhZGJhMGM4YzVhNyBdCgpXaGVuIGRlc3Ryb3lpbmcgYW4gbXJ0IHRhYmxlIHRoZSBz dGF0aWMgbWZjIGVudHJpZXMgYW5kIHRoZSBzdGF0aWMKZGV2aWNlcyBhcmUga2VwdCwgd2hpY2gg bGVhZHMgdG8gZGV2aWNlcyB0aGF0IGNhbiBuZXZlciBiZSBkZXN0cm95ZWQKKGJlY2F1c2Ugb2Yg cmVmY250IHRha2VuKSBhbmQgbGVha2VkIG1lbW9yeSwgZm9yIGV4YW1wbGU6CnVucmVmZXJlbmNl ZCBvYmplY3QgMHhmZmZmODgwMDM0YzE0NGMwIChzaXplIDE5Mik6CiAgY29tbSAibWZjLWJyb2tl biIsIHBpZCA0Nzc3LCBqaWZmaWVzIDQzMjAzNDkwNTUgKGFnZSA0NjAwMS45NjRzKQogIGhleCBk dW1wIChmaXJzdCAzMiBieXRlcyk6CiAgICA5OCA1MyBmMCAzNCAwMCA4OCBmZiBmZiA5OCA1MyBm MCAzNCAwMCA4OCBmZiBmZiAgLlMuNC4uLi4uUy40Li4uLgogICAgZWYgMGEgMGEgMTQgMDEgMDIg MDMgMDQgMDAgMDAgMDAgMDAgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICBiYWNrdHJh Y2U6CiAgICBbPGZmZmZmZmZmODE1YzFiOWU+XSBrbWVtbGVha19hbGxvYysweDRlLzB4YjAKICAg IFs8ZmZmZmZmZmY4MTFlYTZlMD5dIGttZW1fY2FjaGVfYWxsb2MrMHgxOTAvMHgzMDAKICAgIFs8 ZmZmZmZmZmY4MTU5MzFjYj5dIGlwX21yb3V0ZV9zZXRzb2Nrb3B0KzB4NWNiLzB4OTEwCiAgICBb PGZmZmZmZmZmODE1M2Q1NzU+XSBkb19pcF9zZXRzb2Nrb3B0LmlzcmEuMTErMHgxMDUvMHhmZjAK ICAgIFs8ZmZmZmZmZmY4MTUzZTQ5MD5dIGlwX3NldHNvY2tvcHQrMHgzMC8weGEwCiAgICBbPGZm ZmZmZmZmODE1NjRlMTM+XSByYXdfc2V0c29ja29wdCsweDMzLzB4OTAKICAgIFs8ZmZmZmZmZmY4 MTRkMWUxND5dIHNvY2tfY29tbW9uX3NldHNvY2tvcHQrMHgxNC8weDIwCiAgICBbPGZmZmZmZmZm ODE0ZDBiNTE+XSBTeVNfc2V0c29ja29wdCsweDcxLzB4YzAKICAgIFs8ZmZmZmZmZmY4MTVjZGJm Nj5dIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGgrMHgxNi8weDdhCiAgICBbPGZmZmZmZmZmZmZm ZmZmZmY+XSAweGZmZmZmZmZmZmZmZmZmZmYKCk1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXMg Y2xlYW5lZCBvbiBuZXRucyBkZXN0cnVjdGlvbi4KClNpZ25lZC1vZmYtYnk6IE5pa29sYXkgQWxl a3NhbmRyb3YgPG5pa29sYXlAY3VtdWx1c25ldHdvcmtzLmNvbT4KUmV2aWV3ZWQtYnk6IENvbmcg V2FuZyA8Y3dhbmdAdHdvcGVuc291cmNlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWls bGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L2lwbXIuYyB8IDE1ICsrKysr KysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcG1yLmMgYi9uZXQvaXB2NC9pcG1yLmMKaW5kZXgg ZGYyODY5My4uYzNiZmViZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBtci5jCisrKyBiL25ldC9p cHY0L2lwbXIuYwpAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyBpbnQgX19pcG1yX2ZpbGxfbXJv dXRlKHN0cnVjdCBtcl90YWJsZSAqbXJ0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAg c3RydWN0IG1mY19jYWNoZSAqYywgc3RydWN0IHJ0bXNnICpydG0pOwogc3RhdGljIHZvaWQgbXJv dXRlX25ldGxpbmtfZXZlbnQoc3RydWN0IG1yX3RhYmxlICptcnQsIHN0cnVjdCBtZmNfY2FjaGUg Km1mYywKIAkJCQkgaW50IGNtZCk7Ci1zdGF0aWMgdm9pZCBtcm91dGVfY2xlYW5fdGFibGVzKHN0 cnVjdCBtcl90YWJsZSAqbXJ0KTsKK3N0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJsZXMoc3Ry dWN0IG1yX3RhYmxlICptcnQsIGJvb2wgYWxsKTsKIHN0YXRpYyB2b2lkIGlwbXJfZXhwaXJlX3By b2Nlc3ModW5zaWduZWQgbG9uZyBhcmcpOwogCiAjaWZkZWYgQ09ORklHX0lQX01ST1VURV9NVUxU SVBMRV9UQUJMRVMKQEAgLTM1MSw3ICszNTEsNyBAQCBzdGF0aWMgc3RydWN0IG1yX3RhYmxlICpp cG1yX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCkKIHN0YXRpYyB2b2lkIGlwbXJf ZnJlZV90YWJsZShzdHJ1Y3QgbXJfdGFibGUgKm1ydCkKIHsKIAlkZWxfdGltZXJfc3luYygmbXJ0 LT5pcG1yX2V4cGlyZV90aW1lcik7Ci0JbXJvdXRlX2NsZWFuX3RhYmxlcyhtcnQpOworCW1yb3V0 ZV9jbGVhbl90YWJsZXMobXJ0LCB0cnVlKTsKIAlrZnJlZShtcnQpOwogfQogCkBAIC0xMjA5LDcg KzEyMDksNyBAQCBzdGF0aWMgaW50IGlwbXJfbWZjX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVj dCBtcl90YWJsZSAqbXJ0LAogICoJQ2xvc2UgdGhlIG11bHRpY2FzdCBzb2NrZXQsIGFuZCBjbGVh ciB0aGUgdmlmIHRhYmxlcyBldGMKICAqLwogCi1zdGF0aWMgdm9pZCBtcm91dGVfY2xlYW5fdGFi bGVzKHN0cnVjdCBtcl90YWJsZSAqbXJ0KQorc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFuX3RhYmxl cyhzdHJ1Y3QgbXJfdGFibGUgKm1ydCwgYm9vbCBhbGwpCiB7CiAJaW50IGk7CiAJTElTVF9IRUFE KGxpc3QpOwpAQCAtMTIxOCw4ICsxMjE4LDkgQEAgc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFuX3Rh YmxlcyhzdHJ1Y3QgbXJfdGFibGUgKm1ydCkKIAkvKiBTaHV0IGRvd24gYWxsIGFjdGl2ZSB2aWYg ZW50cmllcyAqLwogCiAJZm9yIChpID0gMDsgaSA8IG1ydC0+bWF4dmlmOyBpKyspIHsKLQkJaWYg KCEobXJ0LT52aWZfdGFibGVbaV0uZmxhZ3MgJiBWSUZGX1NUQVRJQykpCi0JCQl2aWZfZGVsZXRl KG1ydCwgaSwgMCwgJmxpc3QpOworCQlpZiAoIWFsbCAmJiAobXJ0LT52aWZfdGFibGVbaV0uZmxh Z3MgJiBWSUZGX1NUQVRJQykpCisJCQljb250aW51ZTsKKwkJdmlmX2RlbGV0ZShtcnQsIGksIDAs ICZsaXN0KTsKIAl9CiAJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgmbGlzdCk7CiAKQEAgLTEy MjcsNyArMTIyOCw3IEBAIHN0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJsZXMoc3RydWN0IG1y X3RhYmxlICptcnQpCiAKIAlmb3IgKGkgPSAwOyBpIDwgTUZDX0xJTkVTOyBpKyspIHsKIAkJbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKGMsIG5leHQsICZtcnQtPm1mY19jYWNoZV9hcnJheVtpXSwg bGlzdCkgewotCQkJaWYgKGMtPm1mY19mbGFncyAmIE1GQ19TVEFUSUMpCisJCQlpZiAoIWFsbCAm JiAoYy0+bWZjX2ZsYWdzICYgTUZDX1NUQVRJQykpCiAJCQkJY29udGludWU7CiAJCQlsaXN0X2Rl bF9yY3UoJmMtPmxpc3QpOwogCQkJbXJvdXRlX25ldGxpbmtfZXZlbnQobXJ0LCBjLCBSVE1fREVM Uk9VVEUpOwpAQCAtMTI2Miw3ICsxMjYzLDcgQEAgc3RhdGljIHZvaWQgbXJ0c29ja19kZXN0cnVj dChzdHJ1Y3Qgc29jayAqc2spCiAJCQkJCQkgICAgTkVUQ09ORkFfSUZJTkRFWF9BTEwsCiAJCQkJ CQkgICAgbmV0LT5pcHY0LmRldmNvbmZfYWxsKTsKIAkJCVJDVV9JTklUX1BPSU5URVIobXJ0LT5t cm91dGVfc2ssIE5VTEwpOwotCQkJbXJvdXRlX2NsZWFuX3RhYmxlcyhtcnQpOworCQkJbXJvdXRl X2NsZWFuX3RhYmxlcyhtcnQsIGZhbHNlKTsKIAkJfQogCX0KIAlydG5sX3VubG9jaygpOwotLSAK Mi40LjEKCgpGcm9tIDlmYzIxODg1NjQ4ZTE0ZmJjMWE1YTc4Mjk5OGMwZThiMzc4NDAzMDYgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5pa29sYXkgQWxla3NhbmRyb3YgPG5pa29sYXlA Y3VtdWx1c25ldHdvcmtzLmNvbT4KRGF0ZTogRnJpLCAyMCBOb3YgMjAxNSAxMzo1NDoyMCArMDEw MApTdWJqZWN0OiBbUEFUQ0ggMTgvMjZdIG5ldDogaXA2bXI6IGZpeCBzdGF0aWMgbWZjL2RldiBs ZWFrcyBvbiB0YWJsZQogZGVzdHJ1Y3Rpb24KClsgVXBzdHJlYW0gY29tbWl0IDRjNjk4MDQ2MmYz MmI0ZjI4MmM1ZDhlNWY3ZWE4MDcwZTI5Mzc3MjUgXQoKU2ltaWxhciB0byBpcHY0LCB3aGVuIGRl c3Ryb3lpbmcgYW4gbXJ0IHRhYmxlIHRoZSBzdGF0aWMgbWZjIGVudHJpZXMgYW5kCnRoZSBzdGF0 aWMgZGV2aWNlcyBhcmUga2VwdCwgd2hpY2ggbGVhZHMgdG8gZGV2aWNlcyB0aGF0IGNhbiBuZXZl ciBiZQpkZXN0cm95ZWQgKGJlY2F1c2Ugb2YgcmVmY250IHRha2VuKSBhbmQgbGVha2VkIG1lbW9y eS4gTWFrZSBzdXJlIHRoYXQKZXZlcnl0aGluZyBpcyBjbGVhbmVkIHVwIG9uIG5ldG5zIGRlc3Ry dWN0aW9uLgoKRml4ZXM6IDgyMjllZmRhZWYxZSAoIm5ldG5zOiBpcDZtcjogZW5hYmxlIG5hbWVz cGFjZSBzdXBwb3J0IGluIGlwdjYgbXVsdGljYXN0IGZvcndhcmRpbmcgY29kZSIpCkNDOiBCZW5q YW1pbiBUaGVyeSA8YmVuamFtaW4udGhlcnlAYnVsbC5uZXQ+ClNpZ25lZC1vZmYtYnk6IE5pa29s YXkgQWxla3NhbmRyb3YgPG5pa29sYXlAY3VtdWx1c25ldHdvcmtzLmNvbT4KUmV2aWV3ZWQtYnk6 IENvbmcgV2FuZyA8Y3dhbmdAdHdvcGVuc291cmNlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQg Uy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY2L2lwNm1yLmMgfCAx NSArKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDcgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2bXIuYyBiL25ldC9pcHY2L2lwNm1y LmMKaW5kZXggNWYzNjI2Ni4uYTdhZWY0YiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2bXIuYwor KysgYi9uZXQvaXB2Ni9pcDZtci5jCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgbXI2 X25ldGxpbmtfZXZlbnQoc3RydWN0IG1yNl90YWJsZSAqbXJ0LCBzdHJ1Y3QgbWZjNl9jYWNoZSAq bWZjLAogCQkJICAgICAgaW50IGNtZCk7CiBzdGF0aWMgaW50IGlwNm1yX3J0bV9kdW1wcm91dGUo c3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgICBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAq Y2IpOwotc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFuX3RhYmxlcyhzdHJ1Y3QgbXI2X3RhYmxlICpt cnQpOworc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFuX3RhYmxlcyhzdHJ1Y3QgbXI2X3RhYmxlICpt cnQsIGJvb2wgYWxsKTsKIHN0YXRpYyB2b2lkIGlwbXJfZXhwaXJlX3Byb2Nlc3ModW5zaWduZWQg bG9uZyBhcmcpOwogCiAjaWZkZWYgQ09ORklHX0lQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFUwpA QCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXI2X3RhYmxlICppcDZtcl9uZXdfdGFi bGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpCiBzdGF0aWMgdm9pZCBpcDZtcl9mcmVlX3RhYmxl KHN0cnVjdCBtcjZfdGFibGUgKm1ydCkKIHsKIAlkZWxfdGltZXJfc3luYygmbXJ0LT5pcG1yX2V4 cGlyZV90aW1lcik7Ci0JbXJvdXRlX2NsZWFuX3RhYmxlcyhtcnQpOworCW1yb3V0ZV9jbGVhbl90 YWJsZXMobXJ0LCB0cnVlKTsKIAlrZnJlZShtcnQpOwogfQogCkBAIC0xNTQzLDcgKzE1NDMsNyBA QCBzdGF0aWMgaW50IGlwNm1yX21mY19hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbXI2X3Rh YmxlICptcnQsCiAgKglDbG9zZSB0aGUgbXVsdGljYXN0IHNvY2tldCwgYW5kIGNsZWFyIHRoZSB2 aWYgdGFibGVzIGV0YwogICovCiAKLXN0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJsZXMoc3Ry dWN0IG1yNl90YWJsZSAqbXJ0KQorc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFuX3RhYmxlcyhzdHJ1 Y3QgbXI2X3RhYmxlICptcnQsIGJvb2wgYWxsKQogewogCWludCBpOwogCUxJU1RfSEVBRChsaXN0 KTsKQEAgLTE1NTMsOCArMTU1Myw5IEBAIHN0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJsZXMo c3RydWN0IG1yNl90YWJsZSAqbXJ0KQogCSAqCVNodXQgZG93biBhbGwgYWN0aXZlIHZpZiBlbnRy aWVzCiAJICovCiAJZm9yIChpID0gMDsgaSA8IG1ydC0+bWF4dmlmOyBpKyspIHsKLQkJaWYgKCEo bXJ0LT52aWY2X3RhYmxlW2ldLmZsYWdzICYgVklGRl9TVEFUSUMpKQotCQkJbWlmNl9kZWxldGUo bXJ0LCBpLCAmbGlzdCk7CisJCWlmICghYWxsICYmIChtcnQtPnZpZjZfdGFibGVbaV0uZmxhZ3Mg JiBWSUZGX1NUQVRJQykpCisJCQljb250aW51ZTsKKwkJbWlmNl9kZWxldGUobXJ0LCBpLCAmbGlz dCk7CiAJfQogCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmxpc3QpOwogCkBAIC0xNTYzLDcg KzE1NjQsNyBAQCBzdGF0aWMgdm9pZCBtcm91dGVfY2xlYW5fdGFibGVzKHN0cnVjdCBtcjZfdGFi bGUgKm1ydCkKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgTUZDNl9MSU5FUzsgaSsrKSB7CiAJCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShjLCBuZXh0LCAmbXJ0LT5tZmM2X2NhY2hlX2FycmF5W2ld LCBsaXN0KSB7Ci0JCQlpZiAoYy0+bWZjX2ZsYWdzICYgTUZDX1NUQVRJQykKKwkJCWlmICghYWxs ICYmIChjLT5tZmNfZmxhZ3MgJiBNRkNfU1RBVElDKSkKIAkJCQljb250aW51ZTsKIAkJCXdyaXRl X2xvY2tfYmgoJm1ydF9sb2NrKTsKIAkJCWxpc3RfZGVsKCZjLT5saXN0KTsKQEAgLTE2MjYsNyAr MTYyNyw3IEBAIGludCBpcDZtcl9za19kb25lKHN0cnVjdCBzb2NrICpzaykKIAkJCQkJCSAgICAg bmV0LT5pcHY2LmRldmNvbmZfYWxsKTsKIAkJCXdyaXRlX3VubG9ja19iaCgmbXJ0X2xvY2spOwog Ci0JCQltcm91dGVfY2xlYW5fdGFibGVzKG1ydCk7CisJCQltcm91dGVfY2xlYW5fdGFibGVzKG1y dCwgZmFsc2UpOwogCQkJZXJyID0gMDsKIAkJCWJyZWFrOwogCQl9Ci0tIAoyLjQuMQoKCkZyb20g ZGE3ODViNjJjYTliNTRmMjIxNmUwNzUyMWE1MTdkNTk5ZTk4NDk2MiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogQWFybyBLb3NraW5lbiA8YWFyby5rb3NraW5lbkBpa2kuZmk+CkRhdGU6 IFN1biwgMjIgTm92IDIwMTUgMDE6MDg6NTQgKzAyMDAKU3ViamVjdDogW1BBVENIIDE5LzI2XSBi cm9hZGNvbTogZml4IFBIWV9JRF9CQ001NDgxIGVudHJ5IGluIHRoZSBpZCB0YWJsZQoKWyBVcHN0 cmVhbSBjb21taXQgM2MyNWE4NjBkMTdiNzM3ODgyMmYzNWQ4YzkxNDFkYjk1MDdlM2JlYiBdCgpD b21taXQgZmNiMjZlYzViMThkICgiYnJvYWRjb206IG1vdmUgYWxsIFBIWV9JRCdzIHRvIGhlYWRl ciIpCnVwZGF0ZWQgYnJvYWRjb21fdGJsIHRvIHVzZSBQSFlfSURzLCBidXQgaW5jb3JyZWN0bHkg cmVwbGFjZWQgMHgwMTQzYmNhMAp3aXRoIFBIWV9JRF9CQ001NDgyIChtYWtpbmcgYSBkdXBsaWNh dGUgZW50cnksIGFuZCBjb21wbGV0ZWx5IG9taXR0aW5nCnRoZSBvcmlnaW5hbCkuIEZpeCB0aGF0 LgoKRml4ZXM6IGZjYjI2ZWM1YjE4ZCAoImJyb2FkY29tOiBtb3ZlIGFsbCBQSFlfSUQncyB0byBo ZWFkZXIiKQpTaWduZWQtb2ZmLWJ5OiBBYXJvIEtvc2tpbmVuIDxhYXJvLmtvc2tpbmVuQGlraS5m aT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0Pgot LS0KIGRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5 L2Jyb2FkY29tLmMgYi9kcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYwppbmRleCA5YzcxMjk1Li44 NWU2NDA0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2Jyb2FkY29tLmMKKysrIGIvZHJp dmVycy9uZXQvcGh5L2Jyb2FkY29tLmMKQEAgLTY3NSw3ICs2NzUsNyBAQCBzdGF0aWMgc3RydWN0 IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGJyb2FkY29tX3RibFtdID0gewogCXsgUEhZ X0lEX0JDTTU0NjEsIDB4ZmZmZmZmZjAgfSwKIAl7IFBIWV9JRF9CQ001NDYxNlMsIDB4ZmZmZmZm ZjAgfSwKIAl7IFBIWV9JRF9CQ001NDY0LCAweGZmZmZmZmYwIH0sCi0JeyBQSFlfSURfQkNNNTQ4 MiwgMHhmZmZmZmZmMCB9LAorCXsgUEhZX0lEX0JDTTU0ODEsIDB4ZmZmZmZmZjAgfSwKIAl7IFBI WV9JRF9CQ001NDgyLCAweGZmZmZmZmYwIH0sCiAJeyBQSFlfSURfQkNNNTA2MTAsIDB4ZmZmZmZm ZjAgfSwKIAl7IFBIWV9JRF9CQ001MDYxME0sIDB4ZmZmZmZmZjAgfSwKLS0gCjIuNC4xCgoKRnJv bSBjMDA4MWZiZmQ1MGE4MjE4NjExZWY2YTdhMTU0M2VkMGMxYTZkM2U2IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGFsPTIwS3ViZT1DND04RGVrPz0gPG1rdWJl Y2VrQHN1c2UuY3o+CkRhdGU6IFR1ZSwgMjQgTm92IDIwMTUgMTU6MDc6MTEgKzAxMDAKU3ViamVj dDogW1BBVENIIDIwLzI2XSBpcHY2OiBkaXN0aW5ndWlzaCBmcmFnIHF1ZXVlcyBieSBkZXZpY2Ug Zm9yIG11bHRpY2FzdAogYW5kIGxpbmstbG9jYWwgcGFja2V0cwoKWyBVcHN0cmVhbSBjb21taXQg MjY0NjQwZmMyYzVmNGY5MTNkYjVjNzNmYTNlYjFlYWQyYzQ1ZTlkNyBdCgpJZiBhIGZyYWdtZW50 ZWQgbXVsdGljYXN0IHBhY2tldCBpcyByZWNlaXZlZCBvbiBhbiBldGhlcm5ldCBkZXZpY2Ugd2hp Y2gKaGFzIGFuIGFjdGl2ZSBtYWN2bGFuIG9uIHRvcCBvZiBpdCwgZWFjaCBmcmFnbWVudCBpcyBk dXBsaWNhdGVkIGFuZApyZWNlaXZlZCBib3RoIG9uIHRoZSB1bmRlcmx5aW5nIGRldmljZSBhbmQg dGhlIG1hY3ZsYW4uIElmIHNvbWUKZnJhZ21lbnRzIGZvciBtYWN2bGFuIGFyZSBwcm9jZXNzZWQg YmVmb3JlIHRoZSB3aG9sZSBwYWNrZXQgZm9yIHRoZQp1bmRlcmx5aW5nIGRldmljZSBpcyByZWFz c2VtYmxlZCwgdGhlICJvdmVybGFwcGluZyBmcmFnbWVudHMiIHRlc3QgaW4KaXA2X2ZyYWdfcXVl dWUoKSBkaXNjYXJkcyB0aGUgd2hvbGUgZnJhZ21lbnQgcXVldWUuCgpUbyByZXNvbHZlIHRoaXMs IGFkZCBkZXZpY2UgaWZpbmRleCB0byB0aGUgc2VhcmNoIGtleSBhbmQgcmVxdWlyZSBpdCB0bwpt YXRjaCByZWFzc2VtYmxpbmcgbXVsdGljYXN0IHBhY2tldHMgYW5kIHBhY2tldHMgdG8gbGluay1s b2NhbAphZGRyZXNzZXMuCgpOb3RlOiBzaW1pbGFyIHBhdGNoIGhhcyBiZWVuIGFscmVhZHkgc3Vi bWl0dGVkIGJ5IFlvc2hpZnVqaSBIaWRlYWtpIGluCgogIGh0dHA6Ly9wYXRjaHdvcmsub3psYWJz Lm9yZy9wYXRjaC8yMjA5NzkvCgpidXQgZ290IGxvc3QgYW5kIGZvcmdvdHRlbiBmb3Igc29tZSBy ZWFzb24uCgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgS3ViZWNlayA8bWt1YmVjZWtAc3VzZS5jej4K U2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0K IGluY2x1ZGUvbmV0L2lwdjYuaCAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIG5ldC9pcHY2 L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYyB8ICA1ICsrKy0tCiBuZXQvaXB2Ni9yZWFz c2VtYmx5LmMgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrLS0tCiAzIGZpbGVzIGNoYW5n ZWQsIDExIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9uZXQvaXB2Ni5oIGIvaW5jbHVkZS9uZXQvaXB2Ni5oCmluZGV4IGVlYzhhZDMuLmFiOGViZDMg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwdjYuaAorKysgYi9pbmNsdWRlL25ldC9pcHY2LmgK QEAgLTQ4OCw2ICs0ODgsNyBAQCBzdHJ1Y3QgaXA2X2NyZWF0ZV9hcmcgewogCXUzMiB1c2VyOwog CWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc3JjOwogCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZHN0 OworCWludCBpaWY7CiAJdTggZWNuOwogfTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0Zmls dGVyL25mX2Nvbm50cmFja19yZWFzbS5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFj a19yZWFzbS5jCmluZGV4IDZmMTg3YzguLmQyMzVlZDcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25l dGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYworKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZf Y29ubnRyYWNrX3JlYXNtLmMKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCBuZl9jdF9m cmFnNl9leHBpcmUodW5zaWduZWQgbG9uZyBkYXRhKQogLyogQ3JlYXRpb24gcHJpbWl0aXZlcy4g Ki8KIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZyYWdfcXVldWUgKmZxX2ZpbmQoc3RydWN0IG5ldCAq bmV0LCBfX2JlMzIgaWQsCiAJCQkJCSB1MzIgdXNlciwgc3RydWN0IGluNl9hZGRyICpzcmMsCi0J CQkJCSBzdHJ1Y3QgaW42X2FkZHIgKmRzdCwgdTggZWNuKQorCQkJCQkgc3RydWN0IGluNl9hZGRy ICpkc3QsIGludCBpaWYsIHU4IGVjbikKIHsKIAlzdHJ1Y3QgaW5ldF9mcmFnX3F1ZXVlICpxOwog CXN0cnVjdCBpcDZfY3JlYXRlX2FyZyBhcmc7CkBAIC0yMDAsNiArMjAwLDcgQEAgc3RhdGljIGlu bGluZSBzdHJ1Y3QgZnJhZ19xdWV1ZSAqZnFfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIF9fYmUzMiBp ZCwKIAlhcmcudXNlciA9IHVzZXI7CiAJYXJnLnNyYyA9IHNyYzsKIAlhcmcuZHN0ID0gZHN0Owor CWFyZy5paWYgPSBpaWY7CiAJYXJnLmVjbiA9IGVjbjsKIAogCWxvY2FsX2JoX2Rpc2FibGUoKTsK QEAgLTYwMyw3ICs2MDQsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqbmZfY3RfZnJhZzZfZ2F0aGVyKHN0 cnVjdCBza19idWZmICpza2IsIHUzMiB1c2VyKQogCWZoZHIgPSAoc3RydWN0IGZyYWdfaGRyICop c2tiX3RyYW5zcG9ydF9oZWFkZXIoY2xvbmUpOwogCiAJZnEgPSBmcV9maW5kKG5ldCwgZmhkci0+ aWRlbnRpZmljYXRpb24sIHVzZXIsICZoZHItPnNhZGRyLCAmaGRyLT5kYWRkciwKLQkJICAgICBp cDZfZnJhZ19lY24oaGRyKSk7CisJCSAgICAgc2tiLT5kZXYgPyBza2ItPmRldi0+aWZpbmRleCA6 IDAsIGlwNl9mcmFnX2VjbihoZHIpKTsKIAlpZiAoZnEgPT0gTlVMTCkgewogCQlwcl9kZWJ1Zygi Q2FuJ3QgZmluZCBhbmQgY2FuJ3QgY3JlYXRlIG5ldyBxdWV1ZVxuIik7CiAJCWdvdG8gcmV0X29y aWc7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yZWFzc2VtYmx5LmMgYi9uZXQvaXB2Ni9yZWFzc2Vt Ymx5LmMKaW5kZXggOGZmYTJjOC4uOWQxZjZhMiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcmVhc3Nl bWJseS5jCisrKyBiL25ldC9pcHY2L3JlYXNzZW1ibHkuYwpAQCAtMTA4LDcgKzEwOCwxMCBAQCBi b29sIGlwNl9mcmFnX21hdGNoKGNvbnN0IHN0cnVjdCBpbmV0X2ZyYWdfcXVldWUgKnEsIGNvbnN0 IHZvaWQgKmEpCiAJcmV0dXJuCWZxLT5pZCA9PSBhcmctPmlkICYmCiAJCWZxLT51c2VyID09IGFy Zy0+dXNlciAmJgogCQlpcHY2X2FkZHJfZXF1YWwoJmZxLT5zYWRkciwgYXJnLT5zcmMpICYmCi0J CWlwdjZfYWRkcl9lcXVhbCgmZnEtPmRhZGRyLCBhcmctPmRzdCk7CisJCWlwdjZfYWRkcl9lcXVh bCgmZnEtPmRhZGRyLCBhcmctPmRzdCkgJiYKKwkJKGFyZy0+aWlmID09IGZxLT5paWYgfHwKKwkJ ICEoaXB2Nl9hZGRyX3R5cGUoYXJnLT5kc3QpICYgKElQVjZfQUREUl9NVUxUSUNBU1QgfAorCQkJ CQkgICAgICAgSVBWNl9BRERSX0xJTktMT0NBTCkpKTsKIH0KIEVYUE9SVF9TWU1CT0woaXA2X2Zy YWdfbWF0Y2gpOwogCkBAIC0xODAsNyArMTgzLDcgQEAgc3RhdGljIHZvaWQgaXA2X2ZyYWdfZXhw aXJlKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAogc3RhdGljIHN0cnVjdCBmcmFnX3F1ZXVlICoKIGZx X2ZpbmQoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgaWQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAq c3JjLAotCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZHN0LCB1OCBlY24pCisJY29uc3Qgc3RydWN0 IGluNl9hZGRyICpkc3QsIGludCBpaWYsIHU4IGVjbikKIHsKIAlzdHJ1Y3QgaW5ldF9mcmFnX3F1 ZXVlICpxOwogCXN0cnVjdCBpcDZfY3JlYXRlX2FyZyBhcmc7CkBAIC0xOTAsNiArMTkzLDcgQEAg ZnFfZmluZChzdHJ1Y3QgbmV0ICpuZXQsIF9fYmUzMiBpZCwgY29uc3Qgc3RydWN0IGluNl9hZGRy ICpzcmMsCiAJYXJnLnVzZXIgPSBJUDZfREVGUkFHX0xPQ0FMX0RFTElWRVI7CiAJYXJnLnNyYyA9 IHNyYzsKIAlhcmcuZHN0ID0gZHN0OworCWFyZy5paWYgPSBpaWY7CiAJYXJnLmVjbiA9IGVjbjsK IAogCWhhc2ggPSBpbmV0Nl9oYXNoX2ZyYWcoaWQsIHNyYywgZHN0KTsKQEAgLTU1MSw3ICs1NTUs NyBAQCBzdGF0aWMgaW50IGlwdjZfZnJhZ19yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAl9CiAK IAlmcSA9IGZxX2ZpbmQobmV0LCBmaGRyLT5pZGVudGlmaWNhdGlvbiwgJmhkci0+c2FkZHIsICZo ZHItPmRhZGRyLAotCQkgICAgIGlwNl9mcmFnX2VjbihoZHIpKTsKKwkJICAgICBza2ItPmRldiA/ IHNrYi0+ZGV2LT5pZmluZGV4IDogMCwgaXA2X2ZyYWdfZWNuKGhkcikpOwogCWlmIChmcSkgewog CQlpbnQgcmV0OwogCi0tIAoyLjQuMQoKCkZyb20gOWZlMWU2YjJlNmE1NjdmYTI4ZGUwZWNiY2Jj NjExNGE0YjQ2MDhjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUXVlbnRpbiBDYXNh c25vdmFzIDxxdWVudGluLmNhc2Fzbm92YXNAb3JhY2xlLmNvbT4KRGF0ZTogVHVlLCAyNCBOb3Yg MjAxNSAxNzoxMzoyMSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMjEvMjZdIFJEUzogZml4IHJhY2Ug Y29uZGl0aW9uIHdoZW4gc2VuZGluZyBhIG1lc3NhZ2Ugb24KIHVuYm91bmQgc29ja2V0CgpbIFVw c3RyZWFtIGNvbW1pdCA4YzcxODhiMjM0NzRjY2EwMTdiM2VmMzU0YzRhNTg0NTZmNjgzMDNhIF0K ClNhc2hhJ3MgZm91bmQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlIFJEUyBjb25u ZWN0aW9uIGNvZGUgd2hlbgpzZW5kaW5nIGEgbWVzc2FnZSB0byBhbiBhcHBhcmVudGx5IHVuYm91 bmQgc29ja2V0LiAgVGhlIHByb2JsZW0gaXMgY2F1c2VkCmJ5IHRoZSBjb2RlIGNoZWNraW5nIGlm IHRoZSBzb2NrZXQgaXMgYm91bmQgaW4gcmRzX3NlbmRtc2coKSwgd2hpY2ggY2hlY2tzCnRoZSBy c19ib3VuZF9hZGRyIGZpZWxkIHdpdGhvdXQgdGFraW5nIGEgbG9jayBvbiB0aGUgc29ja2V0LiAg VGhpcyBvcGVucyBhCnJhY2Ugd2hlcmUgcnNfYm91bmRfYWRkciBpcyB0ZW1wb3JhcmlseSBzZXQg YnV0IHdoZXJlIHRoZSB0cmFuc3BvcnQgaXMgbm90CmluIHJkc19iaW5kKCksIGxlYWRpbmcgdG8g YSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB0cnlpbmcgdG8KZGVyZWZlcmVuY2UgJ3Ry YW5zJyBpbiBfX3Jkc19jb25uX2NyZWF0ZSgpLgoKVmVnYXJkIHdyb3RlIGEgcmVwcm9kdWNlciBm b3IgdGhpcyBpc3N1ZSwgc28ga2luZGx5IGFzayBoaW0gdG8gc2hhcmUgaWYKeW91J3JlIGludGVy ZXN0ZWQuCgpJIGNhbm5vdCByZXByb2R1Y2UgdGhlIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB1 c2luZyBWZWdhcmQncyByZXByb2R1Y2VyCndpdGggdGhpcyBwYXRjaCwgd2hlcmVhcyBJIGNvdWxk IHdpdGhvdXQuCgpDb21wbGV0ZSBlYXJsaWVyIGluY29tcGxldGUgZml4IHRvIENWRS0yMDE1LTY5 Mzc6CgogIDc0ZTk4ZWIwODU4OCAoIlJEUzogdmVyaWZ5IHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9y dCBleGlzdHMgYmVmb3JlIGNyZWF0aW5nIGEgY29ubmVjdGlvbiIpCgpDYzogRGF2aWQgUy4gTWls bGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwoKUmV2 aWV3ZWQtYnk6IFZlZ2FyZCBOb3NzdW0gPHZlZ2FyZC5ub3NzdW1Ab3JhY2xlLmNvbT4KUmV2aWV3 ZWQtYnk6IFNhc2hhIExldmluIDxzYXNoYS5sZXZpbkBvcmFjbGUuY29tPgpBY2tlZC1ieTogU2Fu dG9zaCBTaGlsaW1rYXIgPHNhbnRvc2guc2hpbGlta2FyQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYt Ynk6IFF1ZW50aW4gQ2FzYXNub3ZhcyA8cXVlbnRpbi5jYXNhc25vdmFzQG9yYWNsZS5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBu ZXQvcmRzL2Nvbm5lY3Rpb24uYyB8IDYgLS0tLS0tCiBuZXQvcmRzL3NlbmQuYyAgICAgICB8IDQg KysrLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbmV0L3Jkcy9jb25uZWN0aW9uLmMgYi9uZXQvcmRzL2Nvbm5lY3Rpb24uYwpp bmRleCA5ZDY2NzA1Li5kYTZkYTU3IDEwMDY0NAotLS0gYS9uZXQvcmRzL2Nvbm5lY3Rpb24uYwor KysgYi9uZXQvcmRzL2Nvbm5lY3Rpb24uYwpAQCAtMTg3LDEyICsxODcsNiBAQCBuZXdfY29ubjoK IAkJfQogCX0KIAotCWlmICh0cmFucyA9PSBOVUxMKSB7Ci0JCWttZW1fY2FjaGVfZnJlZShyZHNf Y29ubl9zbGFiLCBjb25uKTsKLQkJY29ubiA9IEVSUl9QVFIoLUVOT0RFVik7Ci0JCWdvdG8gb3V0 OwotCX0KLQogCWNvbm4tPmNfdHJhbnMgPSB0cmFuczsKIAogCXJldCA9IHRyYW5zLT5jb25uX2Fs bG9jKGNvbm4sIGdmcCk7CmRpZmYgLS1naXQgYS9uZXQvcmRzL3NlbmQuYyBiL25ldC9yZHMvc2Vu ZC5jCmluZGV4IGU5NDMwZjUuLjdiMzBjMGYgMTAwNjQ0Ci0tLSBhL25ldC9yZHMvc2VuZC5jCisr KyBiL25ldC9yZHMvc2VuZC5jCkBAIC05ODYsMTEgKzk4NiwxMyBAQCBpbnQgcmRzX3NlbmRtc2co c3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgcGF5bG9hZF9s ZW4pCiAJCXJlbGVhc2Vfc29jayhzayk7CiAJfQogCi0JLyogcmFjaW5nIHdpdGggYW5vdGhlciB0 aHJlYWQgYmluZGluZyBzZWVtcyBvayBoZXJlICovCisJbG9ja19zb2NrKHNrKTsKIAlpZiAoZGFk ZHIgPT0gMCB8fCBycy0+cnNfYm91bmRfYWRkciA9PSAwKSB7CisJCXJlbGVhc2Vfc29jayhzayk7 CiAJCXJldCA9IC1FTk9UQ09OTjsgLyogWFhYIG5vdCBhIGdyZWF0IGVycm5vICovCiAJCWdvdG8g b3V0OwogCX0KKwlyZWxlYXNlX3NvY2soc2spOwogCiAJLyogc2l6ZSBvZiBybSBpbmNsdWRpbmcg YWxsIHNncyAqLwogCXJldCA9IHJkc19ybV9zaXplKG1zZywgcGF5bG9hZF9sZW4pOwotLSAKMi40 LjEKCgpGcm9tIDExODI5ODg1MzVkZDkzY2ZjNzFiZGIzOTIwMmM3MzNjZTM5NzRmMzYgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJv eC5uZXQ+CkRhdGU6IE1vbiwgMzAgTm92IDIwMTUgMTM6MDI6NTYgKzAxMDAKU3ViamVjdDogW1BB VENIIDIyLzI2XSBicGYsIGFycmF5OiBmaXggaGVhcCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVu IHVwZGF0aW5nCiBlbGVtZW50cwoKWyBVcHN0cmVhbSBjb21taXQgZmJjYTlkMmQzNWM2ZWYxYjMy M2ZhZTc1Y2M5NTQ1MDA1YmEyNTA5NyBdCgpEdXJpbmcgb3duIHJldmlldyBidXQgYWxzbyByZXBv cnRlZCBieSBEbWl0cnkncyBzeXprYWxsZXIgWzFdIGl0IGhhcyBiZWVuCm5vdGljZWQgdGhhdCB3 ZSB0cmlnZ2VyIGEgaGVhcCBvdXQtb2YtYm91bmRzIGFjY2VzcyBvbiBlQlBGIGFycmF5IG1hcHMK d2hlbiB1cGRhdGluZyBlbGVtZW50cy4gVGhpcyBoYXBwZW5zIHdpdGggZWFjaCBtYXAgd2hvc2Ug bWFwLT52YWx1ZV9zaXplCihzcGVjaWZpZWQgZHVyaW5nIG1hcCBjcmVhdGlvbiB0aW1lKSBpcyBu b3QgbXVsdGlwbGUgb2YgOCBieXRlcy4KCkluIGFycmF5X21hcF9hbGxvYygpLCBlbGVtX3NpemUg aXMgcm91bmRfdXAoYXR0ci0+dmFsdWVfc2l6ZSwgOCkgYW5kCnVzZWQgdG8gYWxpZ24gYXJyYXkg bWFwIHNsb3RzIGZvciBmYXN0ZXIgYWNjZXNzLiBIb3dldmVyLCBpbiBmdW5jdGlvbgphcnJheV9t YXBfdXBkYXRlX2VsZW0oKSwgd2UgdXBkYXRlIHRoZSBlbGVtZW50IGFzIC4uLgoKbWVtY3B5KGFy cmF5LT52YWx1ZSArIGFycmF5LT5lbGVtX3NpemUgKiBpbmRleCwgdmFsdWUsIGFycmF5LT5lbGVt X3NpemUpOwoKLi4uIHdoZXJlIHdlIGFjY2VzcyAndmFsdWUnIG91dC1vZi1ib3VuZHMsIHNpbmNl IGl0IHdhcyBhbGxvY2F0ZWQgZnJvbQptYXBfdXBkYXRlX2VsZW0oKSBmcm9tIHN5c2NhbGwgc2lk ZSBhcyBrbWFsbG9jKG1hcC0+dmFsdWVfc2l6ZSwgR0ZQX1VTRVIpCmFuZCBsYXRlciBvbiBjb3Bp ZWQgdGhyb3VnaCBjb3B5X2Zyb21fdXNlcih2YWx1ZSwgdXZhbHVlLCBtYXAtPnZhbHVlX3NpemUp LgpUaHVzLCB1cCB0byA3IGJ5dGVzLCB3ZSBjYW4gYWNjZXNzIG91dC1vZi1ib3VuZHMuCgpTYW1l IGNvdWxkIGhhcHBlbiBmcm9tIHdpdGhpbiBhbiBlQlBGIHByb2dyYW0sIHdoZXJlIGluIHdvcnN0 IGNhc2Ugd2UKYWNjZXNzIGJleW9uZCBhbiBlQlBGIHByb2dyYW0ncyBkZXNpZ25hdGVkIHN0YWNr LgoKU2luY2UgMWJlN2Y3NWQxNjY4ICgiYnBmOiBlbmFibGUgbm9uLXJvb3QgZUJQRiBwcm9ncmFt cyIpIGRpZG4ndCBoaXQgYW4Kb2ZmaWNpYWwgcmVsZWFzZSB5ZXQsIGl0IG9ubHkgYWZmZWN0cyBw cml2aWxlZGdlZCB1c2Vycy4KCkluIGNhc2Ugb2YgYXJyYXlfbWFwX2xvb2t1cF9lbGVtKCksIHRo ZSB2ZXJpZmllciBwcmV2ZW50cyBlQlBGIHByb2dyYW1zCmZyb20gYWNjZXNzaW5nIGJleW9uZCBt YXAtPnZhbHVlX3NpemUgdGhyb3VnaCBjaGVja19tYXBfYWNjZXNzKCkuIEFsc28KZnJvbSBzeXNj YWxsIHNpZGUgbWFwX2xvb2t1cF9lbGVtKCkgb25seSBjb3BpZXMgbWFwLT52YWx1ZV9zaXplIGJh Y2sgdG8KdXNlciwgc28gbm90aGluZyBjb3VsZCBsZWFrLgoKICBbMV0gaHR0cDovL2dpdGh1Yi5j b20vZ29vZ2xlL3N5emthbGxlcgoKRml4ZXM6IDI4ZmJjZmEwOGQ4ZSAoImJwZjogYWRkIGFycmF5 IHR5cGUgb2YgZUJQRiBtYXBzIikKUmVwb3J0ZWQtYnk6IERtaXRyeSBWeXVrb3YgPGR2eXVrb3ZA Z29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFy Ym94Lm5ldD4KQWNrZWQtYnk6IEFsZXhlaSBTdGFyb3ZvaXRvdiA8YXN0QGtlcm5lbC5vcmc+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBr ZXJuZWwvYnBmL2FycmF5bWFwLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2FycmF5bWFwLmMgYi9r ZXJuZWwvYnBmL2FycmF5bWFwLmMKaW5kZXggOGE2NjE2NS4uMWMxYjhhYiAxMDA2NDQKLS0tIGEv a2VybmVsL2JwZi9hcnJheW1hcC5jCisrKyBiL2tlcm5lbC9icGYvYXJyYXltYXAuYwpAQCAtMTA5 LDcgKzEwOSw3IEBAIHN0YXRpYyBpbnQgYXJyYXlfbWFwX3VwZGF0ZV9lbGVtKHN0cnVjdCBicGZf bWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsCiAJCS8qIGFsbCBlbGVtZW50cyBhbHJl YWR5IGV4aXN0ICovCiAJCXJldHVybiAtRUVYSVNUOwogCi0JbWVtY3B5KGFycmF5LT52YWx1ZSAr IGFycmF5LT5lbGVtX3NpemUgKiBpbmRleCwgdmFsdWUsIGFycmF5LT5lbGVtX3NpemUpOworCW1l bWNweShhcnJheS0+dmFsdWUgKyBhcnJheS0+ZWxlbV9zaXplICogaW5kZXgsIHZhbHVlLCBtYXAt PnZhbHVlX3NpemUpOwogCXJldHVybiAwOwogfQogCi0tIAoyLjQuMQoKCkZyb20gZDIwMzNmNzM4 NTQ5NDIxMWYxOTdkOWZmNTNkODY4MmEwM2JmZWM5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBTdW4sIDI5IE5v diAyMDE1IDE5OjM3OjU3IC0wODAwClN1YmplY3Q6IFtQQVRDSCAyMy8yNl0gaXB2NjogYWRkIGNv bXBsZXRlIHJjdSBwcm90ZWN0aW9uIGFyb3VuZCBucC0+b3B0CgpbIFVwc3RyZWFtIGNvbW1pdCA0 NWY2ZmFkODRjYzMwNTEwM2IyOGQ3MzQ4MmIzNDRkN2Y1Yjc2ZjM5IF0KClRoaXMgcGF0Y2ggYWRk cmVzc2VzIG11bHRpcGxlIHByb2JsZW1zIDoKClVEUC9SQVcgc2VuZG1zZygpIG5lZWQgdG8gZ2V0 IGEgc3RhYmxlIHN0cnVjdCBpcHY2X3R4b3B0aW9ucwp3aGlsZSBzb2NrZXQgaXMgbm90IGxvY2tl ZCA6IE90aGVyIHRocmVhZHMgY2FuIGNoYW5nZSBucC0+b3B0CmNvbmN1cnJlbnRseS4gRG1pdHJ5 IHBvc3RlZCBhIHN5emthbGxlcgooaHR0cDovL2dpdGh1Yi5jb20vZ29vZ2xlL3N5emthbGxlcikg cHJvZ3JhbSBkZXNtb25zdHJhdGluZwp1c2UtYWZ0ZXItZnJlZS4KClN0YXJ0aW5nIHdpdGggVENQ L0RDQ1AgbG9ja2xlc3MgbGlzdGVuZXJzLCB0Y3BfdjZfc3luX3JlY3Zfc29jaygpCmFuZCBkY2Nw X3Y2X3JlcXVlc3RfcmVjdl9zb2NrKCkgYWxzbyBuZWVkIHRvIHVzZSBSQ1UgcHJvdGVjdGlvbgp0 byBkZXJlZmVyZW5jZSBucC0+b3B0IG9uY2UgKGJlZm9yZSBjYWxsaW5nIGlwdjZfZHVwX29wdGlv bnMoKSkKClRoaXMgcGF0Y2ggYWRkcyBmdWxsIFJDVSBwcm90ZWN0aW9uIHRvIG5wLT5vcHQKClJl cG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYt Ynk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQWNrZWQtYnk6IEhhbm5lcyBG cmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1ZGUvbGludXgv aXB2Ni5oICAgICAgICAgICAgIHwgIDIgKy0KIGluY2x1ZGUvbmV0L2lwdjYuaCAgICAgICAgICAg ICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKystCiBuZXQvZGNjcC9pcHY2LmMgICAgICAgICAg ICAgICAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogbmV0L2lwdjYv YWZfaW5ldDYuYyAgICAgICAgICAgICAgfCAxMyArKysrKysrKystLS0tCiBuZXQvaXB2Ni9kYXRh Z3JhbS5jICAgICAgICAgICAgICB8ICA0ICsrKy0KIG5ldC9pcHY2L2V4dGhkcnMuYyAgICAgICAg ICAgICAgIHwgIDMgKystCiBuZXQvaXB2Ni9pbmV0Nl9jb25uZWN0aW9uX3NvY2suYyB8IDExICsr KysrKysrLS0tCiBuZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMgICAgICAgICB8IDMzICsrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLQogbmV0L2lwdjYvcmF3LmMgICAgICAgICAgICAgICAg ICAgfCAgOCArKysrKystLQogbmV0L2lwdjYvc3luY29va2llcy5jICAgICAgICAgICAgfCAgMiAr LQogbmV0L2lwdjYvdGNwX2lwdjYuYyAgICAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBuZXQvaXB2Ni91ZHAuYyAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysr Ky0tCiBuZXQvbDJ0cC9sMnRwX2lwNi5jICAgICAgICAgICAgICB8ICA4ICsrKysrKy0tCiAxMyBm aWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9pcHY2LmggYi9pbmNsdWRlL2xpbnV4L2lwdjYuaAppbmRleCA4 MjgwNmM2Li5lNGI0NjQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lwdjYuaAorKysgYi9p bmNsdWRlL2xpbnV4L2lwdjYuaApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0cnVjdCBpcHY2X3BpbmZv IHsKIAlzdHJ1Y3QgaXB2Nl9hY19zb2NrbGlzdAkqaXB2Nl9hY19saXN0OwogCXN0cnVjdCBpcHY2 X2ZsX3NvY2tsaXN0IF9fcmN1ICppcHY2X2ZsX2xpc3Q7CiAKLQlzdHJ1Y3QgaXB2Nl90eG9wdGlv bnMJKm9wdDsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgX19yY3UJKm9wdDsKIAlzdHJ1Y3Qgc2tf YnVmZgkJKnBrdG9wdGlvbnM7CiAJc3RydWN0IHNrX2J1ZmYJCSpyeHBtdHU7CiAJc3RydWN0IGlu ZXQ2X2NvcmsJY29yazsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUv bmV0L2lwdjYuaAppbmRleCBhYjhlYmQzLi5kZjU1NWVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25l dC9pcHY2LmgKKysrIGIvaW5jbHVkZS9uZXQvaXB2Ni5oCkBAIC0yMDUsNiArMjA1LDcgQEAgZXh0 ZXJuIHJ3bG9ja190IGlwNl9yYV9sb2NrOwogICovCiAKIHN0cnVjdCBpcHY2X3R4b3B0aW9ucyB7 CisJYXRvbWljX3QJCXJlZmNudDsKIAkvKiBMZW5ndGggb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KIAlp bnQJCQl0b3RfbGVuOwogCkBAIC0yMTcsNyArMjE4LDcgQEAgc3RydWN0IGlwdjZfdHhvcHRpb25z IHsKIAlzdHJ1Y3QgaXB2Nl9vcHRfaGRyCSpkc3Qwb3B0OwogCXN0cnVjdCBpcHY2X3J0X2hkcgkq c3JjcnQ7CS8qIFJvdXRpbmcgSGVhZGVyICovCiAJc3RydWN0IGlwdjZfb3B0X2hkcgkqZHN0MW9w dDsKLQorCXN0cnVjdCByY3VfaGVhZAkJcmN1OwogCS8qIE9wdGlvbiBidWZmZXIsIGFzIHJlYWQg YnkgSVBWNl9QS1RPUFRJT05TLCBzdGFydHMgaGVyZS4gKi8KIH07CiAKQEAgLTI1MCw2ICsyNTEs MjQgQEAgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgewogCXN0cnVjdCByY3VfaGVhZAkJCXJjdTsK IH07CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGlwdjZfdHhvcHRpb25zICp0eG9wdF9nZXQoY29u c3Qgc3RydWN0IGlwdjZfcGluZm8gKm5wKQoreworCXN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0 OworCisJcmN1X3JlYWRfbG9jaygpOworCW9wdCA9IHJjdV9kZXJlZmVyZW5jZShucC0+b3B0KTsK KwlpZiAob3B0ICYmICFhdG9taWNfaW5jX25vdF96ZXJvKCZvcHQtPnJlZmNudCkpCisJCW9wdCA9 IE5VTEw7CisJcmN1X3JlYWRfdW5sb2NrKCk7CisJcmV0dXJuIG9wdDsKK30KKworc3RhdGljIGlu bGluZSB2b2lkIHR4b3B0X3B1dChzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdCkKK3sKKwlpZiAo b3B0ICYmIGF0b21pY19kZWNfYW5kX3Rlc3QoJm9wdC0+cmVmY250KSkKKwkJa2ZyZWVfcmN1KG9w dCwgcmN1KTsKK30KKwogc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsNl9zb2NrX2xvb2t1cChzdHJ1 Y3Qgc29jayAqc2ssIF9fYmUzMiBsYWJlbCk7CiBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKmZsNl9t ZXJnZV9vcHRpb25zKHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0X3NwYWNlLAogCQkJCQkgc3Ry dWN0IGlwNl9mbG93bGFiZWwgKmZsLApkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvaXB2Ni5jIGIvbmV0 L2RjY3AvaXB2Ni5jCmluZGV4IDUxNjU1NzEuLmEwNDkwNTAgMTAwNjQ0Ci0tLSBhL25ldC9kY2Nw L2lwdjYuYworKysgYi9uZXQvZGNjcC9pcHY2LmMKQEAgLTIwMiw3ICsyMDIsOSBAQCBzdGF0aWMg aW50IGRjY3BfdjZfc2VuZF9yZXNwb25zZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0 X3NvY2sgKnJlcSkKIAlzZWN1cml0eV9yZXFfY2xhc3NpZnlfZmxvdyhyZXEsIGZsb3dpNl90b19m bG93aSgmZmw2KSk7CiAKIAotCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgmZmw2LCBucC0+b3B0 LCAmZmluYWwpOworCXJjdV9yZWFkX2xvY2soKTsKKwlmaW5hbF9wID0gZmw2X3VwZGF0ZV9kc3Qo JmZsNiwgcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLCAmZmluYWwpOworCXJjdV9yZWFkX3VubG9j aygpOwogCiAJZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhzaywgJmZsNiwgZmluYWxfcCk7CiAJ aWYgKElTX0VSUihkc3QpKSB7CkBAIC0yMTksNyArMjIxLDEwIEBAIHN0YXRpYyBpbnQgZGNjcF92 Nl9zZW5kX3Jlc3BvbnNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVx KQogCQkJCQkJCSAmaXJlcS0+aXJfdjZfbG9jX2FkZHIsCiAJCQkJCQkJICZpcmVxLT5pcl92Nl9y bXRfYWRkcik7CiAJCWZsNi5kYWRkciA9IGlyZXEtPmlyX3Y2X3JtdF9hZGRyOwotCQllcnIgPSBp cDZfeG1pdChzaywgc2tiLCAmZmw2LCBucC0+b3B0LCBucC0+dGNsYXNzKTsKKwkJcmN1X3JlYWRf bG9jaygpOworCQllcnIgPSBpcDZfeG1pdChzaywgc2tiLCAmZmw2LCByY3VfZGVyZWZlcmVuY2Uo bnAtPm9wdCksCisJCQkgICAgICAgbnAtPnRjbGFzcyk7CisJCXJjdV9yZWFkX3VubG9jaygpOwog CQllcnIgPSBuZXRfeG1pdF9ldmFsKGVycik7CiAJfQogCkBAIC00MTUsNiArNDIwLDcgQEAgc3Rh dGljIHN0cnVjdCBzb2NrICpkY2NwX3Y2X3JlcXVlc3RfcmVjdl9zb2NrKHN0cnVjdCBzb2NrICpz aywKIHsKIAlzdHJ1Y3QgaW5ldF9yZXF1ZXN0X3NvY2sgKmlyZXEgPSBpbmV0X3JzayhyZXEpOwog CXN0cnVjdCBpcHY2X3BpbmZvICpuZXducCwgKm5wID0gaW5ldDZfc2soc2spOworCXN0cnVjdCBp cHY2X3R4b3B0aW9ucyAqb3B0OwogCXN0cnVjdCBpbmV0X3NvY2sgKm5ld2luZXQ7CiAJc3RydWN0 IGRjY3A2X3NvY2sgKm5ld2RwNjsKIAlzdHJ1Y3Qgc29jayAqbmV3c2s7CkBAIC01MzQsMTMgKzU0 MCwxNSBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmRjY3BfdjZfcmVxdWVzdF9yZWN2X3NvY2soc3Ry dWN0IHNvY2sgKnNrLAogCSAqIFllcywga2VlcGluZyByZWZlcmVuY2UgY291bnQgd291bGQgYmUg bXVjaCBtb3JlIGNsZXZlciwgYnV0IHdlIG1ha2UKIAkgKiBvbmUgbW9yZSBvbmUgdGhpbmcgdGhl cmU6IHJlYXR0YWNoIG9wdG1lbSB0byBuZXdzay4KIAkgKi8KLQlpZiAobnAtPm9wdCAhPSBOVUxM KQotCQluZXducC0+b3B0ID0gaXB2Nl9kdXBfb3B0aW9ucyhuZXdzaywgbnAtPm9wdCk7Ci0KKwlv cHQgPSByY3VfZGVyZWZlcmVuY2UobnAtPm9wdCk7CisJaWYgKG9wdCkgeworCQlvcHQgPSBpcHY2 X2R1cF9vcHRpb25zKG5ld3NrLCBvcHQpOworCQlSQ1VfSU5JVF9QT0lOVEVSKG5ld25wLT5vcHQs IG9wdCk7CisJfQogCWluZXRfY3NrKG5ld3NrKS0+aWNza19leHRfaGRyX2xlbiA9IDA7Ci0JaWYg KG5ld25wLT5vcHQgIT0gTlVMTCkKLQkJaW5ldF9jc2sobmV3c2spLT5pY3NrX2V4dF9oZHJfbGVu ID0gKG5ld25wLT5vcHQtPm9wdF9uZmxlbiArCi0JCQkJCQkgICAgIG5ld25wLT5vcHQtPm9wdF9m bGVuKTsKKwlpZiAob3B0KQorCQlpbmV0X2NzayhuZXdzayktPmljc2tfZXh0X2hkcl9sZW4gPSBv cHQtPm9wdF9uZmxlbiArCisJCQkJCQkgICAgb3B0LT5vcHRfZmxlbjsKIAogCWRjY3Bfc3luY19t c3MobmV3c2ssIGRzdF9tdHUoZHN0KSk7CiAKQEAgLTc5Myw2ICs4MDEsNyBAQCBzdGF0aWMgaW50 IGRjY3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIs CiAJc3RydWN0IGlwdjZfcGluZm8gKm5wID0gaW5ldDZfc2soc2spOwogCXN0cnVjdCBkY2NwX3Nv Y2sgKmRwID0gZGNjcF9zayhzayk7CiAJc3RydWN0IGluNl9hZGRyICpzYWRkciA9IE5VTEwsICpm aW5hbF9wLCBmaW5hbDsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdDsKIAlzdHJ1Y3QgZmxv d2k2IGZsNjsKIAlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiAJaW50IGFkZHJfdHlwZTsKQEAgLTg5 Miw3ICs5MDEsOCBAQCBzdGF0aWMgaW50IGRjY3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ss IHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsCiAJZmw2LmZsNl9zcG9ydCA9IGluZXQtPmluZXRfc3Bv cnQ7CiAJc2VjdXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zsb3dpKCZmbDYp KTsKIAotCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgmZmw2LCBucC0+b3B0LCAmZmluYWwpOwor CW9wdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobnAtPm9wdCwgc29ja19vd25lZF9ieV91 c2VyKHNrKSk7CisJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG9wdCwgJmZpbmFsKTsK IAogCWRzdCA9IGlwNl9kc3RfbG9va3VwX2Zsb3coc2ssICZmbDYsIGZpbmFsX3ApOwogCWlmIChJ U19FUlIoZHN0KSkgewpAQCAtOTEyLDkgKzkyMiw4IEBAIHN0YXRpYyBpbnQgZGNjcF92Nl9jb25u ZWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKIAlfX2lwNl9kc3Rf c3RvcmUoc2ssIGRzdCwgTlVMTCwgTlVMTCk7CiAKIAlpY3NrLT5pY3NrX2V4dF9oZHJfbGVuID0g MDsKLQlpZiAobnAtPm9wdCAhPSBOVUxMKQotCQlpY3NrLT5pY3NrX2V4dF9oZHJfbGVuID0gKG5w LT5vcHQtPm9wdF9mbGVuICsKLQkJCQkJICBucC0+b3B0LT5vcHRfbmZsZW4pOworCWlmIChvcHQp CisJCWljc2stPmljc2tfZXh0X2hkcl9sZW4gPSBvcHQtPm9wdF9mbGVuICsgb3B0LT5vcHRfbmZs ZW47CiAKIAlpbmV0LT5pbmV0X2Rwb3J0ID0gdXNpbi0+c2luNl9wb3J0OwogCmRpZmYgLS1naXQg YS9uZXQvaXB2Ni9hZl9pbmV0Ni5jIGIvbmV0L2lwdjYvYWZfaW5ldDYuYwppbmRleCBlZWY2M2Iz Li4yZDA0NGQyIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZl9pbmV0Ni5jCisrKyBiL25ldC9pcHY2 L2FmX2luZXQ2LmMKQEAgLTQyNSw5ICs0MjUsMTEgQEAgdm9pZCBpbmV0Nl9kZXN0cm95X3NvY2so c3RydWN0IHNvY2sgKnNrKQogCiAJLyogRnJlZSB0eCBvcHRpb25zICovCiAKLQlvcHQgPSB4Y2hn KCZucC0+b3B0LCBOVUxMKTsKLQlpZiAob3B0KQotCQlzb2NrX2tmcmVlX3Moc2ssIG9wdCwgb3B0 LT50b3RfbGVuKTsKKwlvcHQgPSB4Y2hnKChfX2ZvcmNlIHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAq KikmbnAtPm9wdCwgTlVMTCk7CisJaWYgKG9wdCkgeworCQlhdG9taWNfc3ViKG9wdC0+dG90X2xl biwgJnNrLT5za19vbWVtX2FsbG9jKTsKKwkJdHhvcHRfcHV0KG9wdCk7CisJfQogfQogRVhQT1JU X1NZTUJPTF9HUEwoaW5ldDZfZGVzdHJveV9zb2NrKTsKIApAQCAtNjU2LDcgKzY1OCwxMCBAQCBp bnQgaW5ldDZfc2tfcmVidWlsZF9oZWFkZXIoc3RydWN0IHNvY2sgKnNrKQogCQlmbDYuZmw2X3Nw b3J0ID0gaW5ldC0+aW5ldF9zcG9ydDsKIAkJc2VjdXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywg Zmxvd2k2X3RvX2Zsb3dpKCZmbDYpKTsKIAotCQlmaW5hbF9wID0gZmw2X3VwZGF0ZV9kc3QoJmZs NiwgbnAtPm9wdCwgJmZpbmFsKTsKKwkJcmN1X3JlYWRfbG9jaygpOworCQlmaW5hbF9wID0gZmw2 X3VwZGF0ZV9kc3QoJmZsNiwgcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLAorCQkJCQkgJmZpbmFs KTsKKwkJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAkJZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhz aywgJmZsNiwgZmluYWxfcCk7CiAJCWlmIChJU19FUlIoZHN0KSkgewpkaWZmIC0tZ2l0IGEvbmV0 L2lwdjYvZGF0YWdyYW0uYyBiL25ldC9pcHY2L2RhdGFncmFtLmMKaW5kZXggYjEwYTg4OS4uMTNj YTRjZiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvZGF0YWdyYW0uYworKysgYi9uZXQvaXB2Ni9kYXRh Z3JhbS5jCkBAIC0xNjcsOCArMTY3LDEwIEBAIGlwdjRfY29ubmVjdGVkOgogCiAJc2VjdXJpdHlf c2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zsb3dpKCZmbDYpKTsKIAotCW9wdCA9IGZs b3dsYWJlbCA/IGZsb3dsYWJlbC0+b3B0IDogbnAtPm9wdDsKKwlyY3VfcmVhZF9sb2NrKCk7CisJ b3B0ID0gZmxvd2xhYmVsID8gZmxvd2xhYmVsLT5vcHQgOiByY3VfZGVyZWZlcmVuY2UobnAtPm9w dCk7CiAJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG9wdCwgJmZpbmFsKTsKKwlyY3Vf cmVhZF91bmxvY2soKTsKIAogCWRzdCA9IGlwNl9kc3RfbG9va3VwX2Zsb3coc2ssICZmbDYsIGZp bmFsX3ApOwogCWVyciA9IDA7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9leHRoZHJzLmMgYi9uZXQv aXB2Ni9leHRoZHJzLmMKaW5kZXggYTdiYmJlNC4uYWRiZDY5NSAxMDA2NDQKLS0tIGEvbmV0L2lw djYvZXh0aGRycy5jCisrKyBiL25ldC9pcHY2L2V4dGhkcnMuYwpAQCAtNzI3LDYgKzcyNyw3IEBA IGlwdjZfZHVwX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMg Km9wdCkKIAkJCSooKGNoYXIgKiopJm9wdDItPmRzdDFvcHQpICs9IGRpZjsKIAkJaWYgKG9wdDIt PnNyY3J0KQogCQkJKigoY2hhciAqKikmb3B0Mi0+c3JjcnQpICs9IGRpZjsKKwkJYXRvbWljX3Nl dCgmb3B0Mi0+cmVmY250LCAxKTsKIAl9CiAJcmV0dXJuIG9wdDI7CiB9CkBAIC03OTAsNyArNzkx LDcgQEAgaXB2Nl9yZW5ld19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGlwdjZfdHhv cHRpb25zICpvcHQsCiAJCXJldHVybiBFUlJfUFRSKC1FTk9CVUZTKTsKIAogCW1lbXNldChvcHQy LCAwLCB0b3RfbGVuKTsKLQorCWF0b21pY19zZXQoJm9wdDItPnJlZmNudCwgMSk7CiAJb3B0Mi0+ dG90X2xlbiA9IHRvdF9sZW47CiAJcCA9IChjaGFyICopKG9wdDIgKyAxKTsKIApkaWZmIC0tZ2l0 IGEvbmV0L2lwdjYvaW5ldDZfY29ubmVjdGlvbl9zb2NrLmMgYi9uZXQvaXB2Ni9pbmV0Nl9jb25u ZWN0aW9uX3NvY2suYwppbmRleCA2OTI3ZjNmLi45YmVlZDMwIDEwMDY0NAotLS0gYS9uZXQvaXB2 Ni9pbmV0Nl9jb25uZWN0aW9uX3NvY2suYworKysgYi9uZXQvaXB2Ni9pbmV0Nl9jb25uZWN0aW9u X3NvY2suYwpAQCAtNzcsNyArNzcsOSBAQCBzdHJ1Y3QgZHN0X2VudHJ5ICppbmV0Nl9jc2tfcm91 dGVfcmVxKHN0cnVjdCBzb2NrICpzaywKIAltZW1zZXQoZmw2LCAwLCBzaXplb2YoKmZsNikpOwog CWZsNi0+Zmxvd2k2X3Byb3RvID0gSVBQUk9UT19UQ1A7CiAJZmw2LT5kYWRkciA9IGlyZXEtPmly X3Y2X3JtdF9hZGRyOwotCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdChmbDYsIG5wLT5vcHQsICZm aW5hbCk7CisJcmN1X3JlYWRfbG9jaygpOworCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdChmbDYs IHJjdV9kZXJlZmVyZW5jZShucC0+b3B0KSwgJmZpbmFsKTsKKwlyY3VfcmVhZF91bmxvY2soKTsK IAlmbDYtPnNhZGRyID0gaXJlcS0+aXJfdjZfbG9jX2FkZHI7CiAJZmw2LT5mbG93aTZfb2lmID0g aXJlcS0+aXJfaWlmOwogCWZsNi0+Zmxvd2k2X21hcmsgPSBpcmVxLT5pcl9tYXJrOwpAQCAtMjA3 LDcgKzIwOSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICppbmV0Nl9jc2tfcm91dGVfc29j a2V0KHN0cnVjdCBzb2NrICpzaywKIAlmbDYtPmZsNl9kcG9ydCA9IGluZXQtPmluZXRfZHBvcnQ7 CiAJc2VjdXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zsb3dpKGZsNikpOwog Ci0JZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KGZsNiwgbnAtPm9wdCwgJmZpbmFsKTsKKwlyY3Vf cmVhZF9sb2NrKCk7CisJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KGZsNiwgcmN1X2RlcmVmZXJl bmNlKG5wLT5vcHQpLCAmZmluYWwpOworCXJjdV9yZWFkX3VubG9jaygpOwogCiAJZHN0ID0gX19p bmV0Nl9jc2tfZHN0X2NoZWNrKHNrLCBucC0+ZHN0X2Nvb2tpZSk7CiAJaWYgKCFkc3QpIHsKQEAg LTI0MCw3ICsyNDQsOCBAQCBpbnQgaW5ldDZfY3NrX3htaXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2kgKmZsX3VudXNlZAogCS8qIFJlc3RvcmUgZmlu YWwgZGVzdGluYXRpb24gYmFjayBhZnRlciByb3V0aW5nIGRvbmUgKi8KIAlmbDYuZGFkZHIgPSBz ay0+c2tfdjZfZGFkZHI7CiAKLQlyZXMgPSBpcDZfeG1pdChzaywgc2tiLCAmZmw2LCBucC0+b3B0 LCBucC0+dGNsYXNzKTsKKwlyZXMgPSBpcDZfeG1pdChzaywgc2tiLCAmZmw2LCByY3VfZGVyZWZl cmVuY2UobnAtPm9wdCksCisJCSAgICAgICBucC0+dGNsYXNzKTsKIAlyY3VfcmVhZF91bmxvY2so KTsKIAlyZXR1cm4gcmVzOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5j IGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jCmluZGV4IDYzZTY5NTYuLjQ0NDlhZDEgMTAwNjQ0 Ci0tLSBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYworKysgYi9uZXQvaXB2Ni9pcHY2X3NvY2tn bHVlLmMKQEAgLTExMSw3ICsxMTEsOCBAQCBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKmlwdjZfdXBk YXRlX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLAogCQkJaWNzay0+aWNza19zeW5jX21zcyhzaywg aWNzay0+aWNza19wbXR1X2Nvb2tpZSk7CiAJCX0KIAl9Ci0Jb3B0ID0geGNoZygmaW5ldDZfc2so c2spLT5vcHQsIG9wdCk7CisJb3B0ID0geGNoZygoX19mb3JjZSBzdHJ1Y3QgaXB2Nl90eG9wdGlv bnMgKiopJmluZXQ2X3NrKHNrKS0+b3B0LAorCQkgICBvcHQpOwogCXNrX2RzdF9yZXNldChzayk7 CiAKIAlyZXR1cm4gb3B0OwpAQCAtMjMxLDkgKzIzMiwxMiBAQCBzdGF0aWMgaW50IGRvX2lwdjZf c2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJCQkJ c2stPnNrX3NvY2tldC0+b3BzID0gJmluZXRfZGdyYW1fb3BzOwogCQkJCXNrLT5za19mYW1pbHkg PSBQRl9JTkVUOwogCQkJfQotCQkJb3B0ID0geGNoZygmbnAtPm9wdCwgTlVMTCk7Ci0JCQlpZiAo b3B0KQotCQkJCXNvY2tfa2ZyZWVfcyhzaywgb3B0LCBvcHQtPnRvdF9sZW4pOworCQkJb3B0ID0g eGNoZygoX19mb3JjZSBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKiopJm5wLT5vcHQsCisJCQkJICAg TlVMTCk7CisJCQlpZiAob3B0KSB7CisJCQkJYXRvbWljX3N1YihvcHQtPnRvdF9sZW4sICZzay0+ c2tfb21lbV9hbGxvYyk7CisJCQkJdHhvcHRfcHV0KG9wdCk7CisJCQl9CiAJCQlwa3RvcHQgPSB4 Y2hnKCZucC0+cGt0b3B0aW9ucywgTlVMTCk7CiAJCQlrZnJlZV9za2IocGt0b3B0KTsKIApAQCAt NDAzLDcgKzQwNyw4IEBAIHN0YXRpYyBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2Nr ICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAkJaWYgKG9wdG5hbWUgIT0gSVBWNl9SVEhE UiAmJiAhbnNfY2FwYWJsZShuZXQtPnVzZXJfbnMsIENBUF9ORVRfUkFXKSkKIAkJCWJyZWFrOwog Ci0JCW9wdCA9IGlwdjZfcmVuZXdfb3B0aW9ucyhzaywgbnAtPm9wdCwgb3B0bmFtZSwKKwkJb3B0 ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChucC0+b3B0LCBzb2NrX293bmVkX2J5X3VzZXIo c2spKTsKKwkJb3B0ID0gaXB2Nl9yZW5ld19vcHRpb25zKHNrLCBvcHQsIG9wdG5hbWUsCiAJCQkJ CSAoc3RydWN0IGlwdjZfb3B0X2hkciBfX3VzZXIgKilvcHR2YWwsCiAJCQkJCSBvcHRsZW4pOwog CQlpZiAoSVNfRVJSKG9wdCkpIHsKQEAgLTQzMiw4ICs0MzcsMTAgQEAgc3RhdGljIGludCBkb19p cHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAog CQlyZXR2ID0gMDsKIAkJb3B0ID0gaXB2Nl91cGRhdGVfb3B0aW9ucyhzaywgb3B0KTsKIHN0aWNr eV9kb25lOgotCQlpZiAob3B0KQotCQkJc29ja19rZnJlZV9zKHNrLCBvcHQsIG9wdC0+dG90X2xl bik7CisJCWlmIChvcHQpIHsKKwkJCWF0b21pY19zdWIob3B0LT50b3RfbGVuLCAmc2stPnNrX29t ZW1fYWxsb2MpOworCQkJdHhvcHRfcHV0KG9wdCk7CisJCX0KIAkJYnJlYWs7CiAJfQogCkBAIC00 ODYsNiArNDkzLDcgQEAgc3RpY2t5X2RvbmU6CiAJCQlicmVhazsKIAogCQltZW1zZXQob3B0LCAw LCBzaXplb2YoKm9wdCkpOworCQlhdG9taWNfc2V0KCZvcHQtPnJlZmNudCwgMSk7CiAJCW9wdC0+ dG90X2xlbiA9IHNpemVvZigqb3B0KSArIG9wdGxlbjsKIAkJcmV0diA9IC1FRkFVTFQ7CiAJCWlm IChjb3B5X2Zyb21fdXNlcihvcHQrMSwgb3B0dmFsLCBvcHRsZW4pKQpAQCAtNTAyLDggKzUxMCwx MCBAQCB1cGRhdGU6CiAJCXJldHYgPSAwOwogCQlvcHQgPSBpcHY2X3VwZGF0ZV9vcHRpb25zKHNr LCBvcHQpOwogZG9uZToKLQkJaWYgKG9wdCkKLQkJCXNvY2tfa2ZyZWVfcyhzaywgb3B0LCBvcHQt PnRvdF9sZW4pOworCQlpZiAob3B0KSB7CisJCQlhdG9taWNfc3ViKG9wdC0+dG90X2xlbiwgJnNr LT5za19vbWVtX2FsbG9jKTsKKwkJCXR4b3B0X3B1dChvcHQpOworCQl9CiAJCWJyZWFrOwogCX0K IAljYXNlIElQVjZfVU5JQ0FTVF9IT1BTOgpAQCAtMTExMCwxMCArMTEyMCwxMSBAQCBzdGF0aWMg aW50IGRvX2lwdjZfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9w dG5hbWUsCiAJY2FzZSBJUFY2X1JUSERSOgogCWNhc2UgSVBWNl9EU1RPUFRTOgogCXsKKwkJc3Ry dWN0IGlwdjZfdHhvcHRpb25zICpvcHQ7CiAKIAkJbG9ja19zb2NrKHNrKTsKLQkJbGVuID0gaXB2 Nl9nZXRzb2Nrb3B0X3N0aWNreShzaywgbnAtPm9wdCwKLQkJCQkJICAgICBvcHRuYW1lLCBvcHR2 YWwsIGxlbik7CisJCW9wdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobnAtPm9wdCwgc29j a19vd25lZF9ieV91c2VyKHNrKSk7CisJCWxlbiA9IGlwdjZfZ2V0c29ja29wdF9zdGlja3koc2ss IG9wdCwgb3B0bmFtZSwgb3B0dmFsLCBsZW4pOwogCQlyZWxlYXNlX3NvY2soc2spOwogCQkvKiBj aGVjayBpZiBpcHY2X2dldHNvY2tvcHRfc3RpY2t5KCkgcmV0dXJucyBlcnIgY29kZSAqLwogCQlp ZiAobGVuIDwgMCkKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3Jhdy5jIGIvbmV0L2lwdjYvcmF3LmMK aW5kZXggODA3MmJkNC4uMmM2MzlhZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcmF3LmMKKysrIGIv bmV0L2lwdjYvcmF3LmMKQEAgLTczMSw2ICs3MzEsNyBAQCBzdGF0aWMgaW50IHJhdzZfZ2V0ZnJh Zyh2b2lkICpmcm9tLCBjaGFyICp0bywgaW50IG9mZnNldCwgaW50IGxlbiwgaW50IG9kZCwKIAog c3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAq bXNnLCBzaXplX3QgbGVuKQogeworCXN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0X3RvX2ZyZWUg PSBOVUxMOwogCXN0cnVjdCBpcHY2X3R4b3B0aW9ucyBvcHRfc3BhY2U7CiAJREVDTEFSRV9TT0NL QUREUihzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIHNpbjYsIG1zZy0+bXNnX25hbWUpOwogCXN0cnVj dCBpbjZfYWRkciAqZGFkZHIsICpmaW5hbF9wLCBmaW5hbDsKQEAgLTgzNyw4ICs4MzgsMTAgQEAg c3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAq bXNnLCBzaXplX3QgbGVuKQogCQlpZiAoIShvcHQtPm9wdF9uZmxlbnxvcHQtPm9wdF9mbGVuKSkK IAkJCW9wdCA9IE5VTEw7CiAJfQotCWlmICghb3B0KQotCQlvcHQgPSBucC0+b3B0OworCWlmICgh b3B0KSB7CisJCW9wdCA9IHR4b3B0X2dldChucCk7CisJCW9wdF90b19mcmVlID0gb3B0OworCQl9 CiAJaWYgKGZsb3dsYWJlbCkKIAkJb3B0ID0gZmw2X21lcmdlX29wdGlvbnMoJm9wdF9zcGFjZSwg Zmxvd2xhYmVsLCBvcHQpOwogCW9wdCA9IGlwdjZfZml4dXBfb3B0aW9ucygmb3B0X3NwYWNlLCBv cHQpOwpAQCAtOTAxLDYgKzkwNCw3IEBAIGRvbmU6CiAJZHN0X3JlbGVhc2UoZHN0KTsKIG91dDoK IAlmbDZfc29ja19yZWxlYXNlKGZsb3dsYWJlbCk7CisJdHhvcHRfcHV0KG9wdF90b19mcmVlKTsK IAlyZXR1cm4gZXJyIDwgMCA/IGVyciA6IGxlbjsKIGRvX2NvbmZpcm06CiAJZHN0X2NvbmZpcm0o ZHN0KTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3N5bmNvb2tpZXMuYyBiL25ldC9pcHY2L3N5bmNv b2tpZXMuYwppbmRleCAyMWJjMmViLi5hNGNmMDA0IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9zeW5j b29raWVzLmMKKysrIGIvbmV0L2lwdjYvc3luY29va2llcy5jCkBAIC0yNDIsNyArMjQyLDcgQEAg c3RydWN0IHNvY2sgKmNvb2tpZV92Nl9jaGVjayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19i dWZmICpza2IpCiAJCW1lbXNldCgmZmw2LCAwLCBzaXplb2YoZmw2KSk7CiAJCWZsNi5mbG93aTZf cHJvdG8gPSBJUFBST1RPX1RDUDsKIAkJZmw2LmRhZGRyID0gaXJlcS0+aXJfdjZfcm10X2FkZHI7 Ci0JCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgmZmw2LCBucC0+b3B0LCAmZmluYWwpOworCQlm aW5hbF9wID0gZmw2X3VwZGF0ZV9kc3QoJmZsNiwgcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLCAm ZmluYWwpOwogCQlmbDYuc2FkZHIgPSBpcmVxLT5pcl92Nl9sb2NfYWRkcjsKIAkJZmw2LmZsb3dp Nl9vaWYgPSBzay0+c2tfYm91bmRfZGV2X2lmOwogCQlmbDYuZmxvd2k2X21hcmsgPSBpcmVxLT5p cl9tYXJrOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9p cHY2LmMKaW5kZXggZTU0MWQ2OC4uY2ZiMjdmNSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdGNwX2lw djYuYworKysgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC0xMjEsNiArMTIxLDcgQEAgc3RhdGlj IGludCB0Y3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkciAqdWFk ZHIsCiAJc3RydWN0IGlwdjZfcGluZm8gKm5wID0gaW5ldDZfc2soc2spOwogCXN0cnVjdCB0Y3Bf c29jayAqdHAgPSB0Y3Bfc2soc2spOwogCXN0cnVjdCBpbjZfYWRkciAqc2FkZHIgPSBOVUxMLCAq ZmluYWxfcCwgZmluYWw7CisJc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHQ7CiAJc3RydWN0IHJ0 Nl9pbmZvICpydDsKIAlzdHJ1Y3QgZmxvd2k2IGZsNjsKIAlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7 CkBAIC0yMzcsNyArMjM4LDggQEAgc3RhdGljIGludCB0Y3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29j ayAqc2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsCiAJZmw2LmZsNl9kcG9ydCA9IHVzaW4tPnNp bjZfcG9ydDsKIAlmbDYuZmw2X3Nwb3J0ID0gaW5ldC0+aW5ldF9zcG9ydDsKIAotCWZpbmFsX3Ag PSBmbDZfdXBkYXRlX2RzdCgmZmw2LCBucC0+b3B0LCAmZmluYWwpOworCW9wdCA9IHJjdV9kZXJl ZmVyZW5jZV9wcm90ZWN0ZWQobnAtPm9wdCwgc29ja19vd25lZF9ieV91c2VyKHNrKSk7CisJZmlu YWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG9wdCwgJmZpbmFsKTsKIAogCXNlY3VyaXR5X3Nr X2NsYXNzaWZ5X2Zsb3coc2ssIGZsb3dpNl90b19mbG93aSgmZmw2KSk7CiAKQEAgLTI2Niw5ICsy NjgsOSBAQCBzdGF0aWMgaW50IHRjcF92Nl9jb25uZWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0 IHNvY2thZGRyICp1YWRkciwKIAkJdGNwX2ZldGNoX3RpbWV3YWl0X3N0YW1wKHNrLCBkc3QpOwog CiAJaWNzay0+aWNza19leHRfaGRyX2xlbiA9IDA7Ci0JaWYgKG5wLT5vcHQpCi0JCWljc2stPmlj c2tfZXh0X2hkcl9sZW4gPSAobnAtPm9wdC0+b3B0X2ZsZW4gKwotCQkJCQkgIG5wLT5vcHQtPm9w dF9uZmxlbik7CisJaWYgKG9wdCkKKwkJaWNzay0+aWNza19leHRfaGRyX2xlbiA9IG9wdC0+b3B0 X2ZsZW4gKworCQkJCQkgb3B0LT5vcHRfbmZsZW47CiAKIAl0cC0+cnhfb3B0Lm1zc19jbGFtcCA9 IElQVjZfTUlOX01UVSAtIHNpemVvZihzdHJ1Y3QgdGNwaGRyKSAtIHNpemVvZihzdHJ1Y3QgaXB2 Nmhkcik7CiAKQEAgLTQ2NCw3ICs0NjYsOCBAQCBzdGF0aWMgaW50IHRjcF92Nl9zZW5kX3N5bmFj ayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBkc3RfZW50cnkgKmRzdCwKIAkJCWZsNi0+Zmxvd2xh YmVsID0gaXA2X2Zsb3dsYWJlbChpcHY2X2hkcihpcmVxLT5wa3RvcHRzKSk7CiAKIAkJc2tiX3Nl dF9xdWV1ZV9tYXBwaW5nKHNrYiwgcXVldWVfbWFwcGluZyk7Ci0JCWVyciA9IGlwNl94bWl0KHNr LCBza2IsIGZsNiwgbnAtPm9wdCwgbnAtPnRjbGFzcyk7CisJCWVyciA9IGlwNl94bWl0KHNrLCBz a2IsIGZsNiwgcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLAorCQkJICAgICAgIG5wLT50Y2xhc3Mp OwogCQllcnIgPSBuZXRfeG1pdF9ldmFsKGVycik7CiAJfQogCkBAIC05OTQsNiArOTk3LDcgQEAg c3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhzdHJ1Y3Qgc29jayAqc2ss IHN0cnVjdCBza19idWZmICpza2IsCiAJc3RydWN0IGluZXRfcmVxdWVzdF9zb2NrICppcmVxOwog CXN0cnVjdCBpcHY2X3BpbmZvICpuZXducCwgKm5wID0gaW5ldDZfc2soc2spOwogCXN0cnVjdCB0 Y3A2X3NvY2sgKm5ld3RjcDZzazsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdDsKIAlzdHJ1 Y3QgaW5ldF9zb2NrICpuZXdpbmV0OwogCXN0cnVjdCB0Y3Bfc29jayAqbmV3dHA7CiAJc3RydWN0 IHNvY2sgKm5ld3NrOwpAQCAtMTEyOSwxMyArMTEzMywxNSBAQCBzdGF0aWMgc3RydWN0IHNvY2sg KnRjcF92Nl9zeW5fcmVjdl9zb2NrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNr YiwKIAkgICBidXQgd2UgbWFrZSBvbmUgbW9yZSBvbmUgdGhpbmcgdGhlcmU6IHJlYXR0YWNoIG9w dG1lbQogCSAgIHRvIG5ld3NrLgogCSAqLwotCWlmIChucC0+b3B0KQotCQluZXducC0+b3B0ID0g aXB2Nl9kdXBfb3B0aW9ucyhuZXdzaywgbnAtPm9wdCk7Ci0KKwlvcHQgPSByY3VfZGVyZWZlcmVu Y2UobnAtPm9wdCk7CisJaWYgKG9wdCkgeworCQlvcHQgPSBpcHY2X2R1cF9vcHRpb25zKG5ld3Nr LCBvcHQpOworCQlSQ1VfSU5JVF9QT0lOVEVSKG5ld25wLT5vcHQsIG9wdCk7CisJfQogCWluZXRf Y3NrKG5ld3NrKS0+aWNza19leHRfaGRyX2xlbiA9IDA7Ci0JaWYgKG5ld25wLT5vcHQpCi0JCWlu ZXRfY3NrKG5ld3NrKS0+aWNza19leHRfaGRyX2xlbiA9IChuZXducC0+b3B0LT5vcHRfbmZsZW4g KwotCQkJCQkJICAgICBuZXducC0+b3B0LT5vcHRfZmxlbik7CisJaWYgKG9wdCkKKwkJaW5ldF9j c2sobmV3c2spLT5pY3NrX2V4dF9oZHJfbGVuID0gb3B0LT5vcHRfbmZsZW4gKworCQkJCQkJICAg IG9wdC0+b3B0X2ZsZW47CiAKIAl0Y3BfY2Ffb3BlbnJlcV9jaGlsZChuZXdzaywgZHN0KTsKIApk aWZmIC0tZ2l0IGEvbmV0L2lwdjYvdWRwLmMgYi9uZXQvaXB2Ni91ZHAuYwppbmRleCBlNTFmYzNl Li43MzMzZjM1IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni91ZHAuYworKysgYi9uZXQvaXB2Ni91ZHAu YwpAQCAtMTEwNyw2ICsxMTA3LDcgQEAgaW50IHVkcHY2X3NlbmRtc2coc3RydWN0IHNvY2sgKnNr LCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pCiAJREVDTEFSRV9TT0NLQUREUihzdHJ1 Y3Qgc29ja2FkZHJfaW42ICosIHNpbjYsIG1zZy0+bXNnX25hbWUpOwogCXN0cnVjdCBpbjZfYWRk ciAqZGFkZHIsICpmaW5hbF9wLCBmaW5hbDsKIAlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdCA9 IE5VTEw7CisJc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHRfdG9fZnJlZSA9IE5VTEw7CiAJc3Ry dWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7CiAJc3RydWN0IGZsb3dpNiBmbDY7 CiAJc3RydWN0IGRzdF9lbnRyeSAqZHN0OwpAQCAtMTI2MCw4ICsxMjYxLDEwIEBAIGRvX3VkcF9z ZW5kbXNnOgogCQkJb3B0ID0gTlVMTDsKIAkJY29ubmVjdGVkID0gMDsKIAl9Ci0JaWYgKCFvcHQp Ci0JCW9wdCA9IG5wLT5vcHQ7CisJaWYgKCFvcHQpIHsKKwkJb3B0ID0gdHhvcHRfZ2V0KG5wKTsK KwkJb3B0X3RvX2ZyZWUgPSBvcHQ7CisJfQogCWlmIChmbG93bGFiZWwpCiAJCW9wdCA9IGZsNl9t ZXJnZV9vcHRpb25zKCZvcHRfc3BhY2UsIGZsb3dsYWJlbCwgb3B0KTsKIAlvcHQgPSBpcHY2X2Zp eHVwX29wdGlvbnMoJm9wdF9zcGFjZSwgb3B0KTsKQEAgLTEzNzAsNiArMTM3Myw3IEBAIHJlbGVh c2VfZHN0Ogogb3V0OgogCWRzdF9yZWxlYXNlKGRzdCk7CiAJZmw2X3NvY2tfcmVsZWFzZShmbG93 bGFiZWwpOworCXR4b3B0X3B1dChvcHRfdG9fZnJlZSk7CiAJaWYgKCFlcnIpCiAJCXJldHVybiBs ZW47CiAJLyoKZGlmZiAtLWdpdCBhL25ldC9sMnRwL2wydHBfaXA2LmMgYi9uZXQvbDJ0cC9sMnRw X2lwNi5jCmluZGV4IGQxZGVkMzcuLjBjZTlkYTkgMTAwNjQ0Ci0tLSBhL25ldC9sMnRwL2wydHBf aXA2LmMKKysrIGIvbmV0L2wydHAvbDJ0cF9pcDYuYwpAQCAtNDg2LDYgKzQ4Niw3IEBAIHN0YXRp YyBpbnQgbDJ0cF9pcDZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1z Zywgc2l6ZV90IGxlbikKIAlERUNMQVJFX1NPQ0tBRERSKHN0cnVjdCBzb2NrYWRkcl9sMnRwaXA2 ICosIGxzYSwgbXNnLT5tc2dfbmFtZSk7CiAJc3RydWN0IGluNl9hZGRyICpkYWRkciwgKmZpbmFs X3AsIGZpbmFsOwogCXN0cnVjdCBpcHY2X3BpbmZvICpucCA9IGluZXQ2X3NrKHNrKTsKKwlzdHJ1 Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdF90b19mcmVlID0gTlVMTDsKIAlzdHJ1Y3QgaXB2Nl90eG9w dGlvbnMgKm9wdCA9IE5VTEw7CiAJc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5V TEw7CiAJc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gTlVMTDsKQEAgLTU3NSw4ICs1NzYsMTAgQEAg c3RhdGljIGludCBsMnRwX2lwNl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hk ciAqbXNnLCBzaXplX3QgbGVuKQogCQkJb3B0ID0gTlVMTDsKIAl9CiAKLQlpZiAob3B0ID09IE5V TEwpCi0JCW9wdCA9IG5wLT5vcHQ7CisJaWYgKCFvcHQpIHsKKwkJb3B0ID0gdHhvcHRfZ2V0KG5w KTsKKwkJb3B0X3RvX2ZyZWUgPSBvcHQ7CisJfQogCWlmIChmbG93bGFiZWwpCiAJCW9wdCA9IGZs Nl9tZXJnZV9vcHRpb25zKCZvcHRfc3BhY2UsIGZsb3dsYWJlbCwgb3B0KTsKIAlvcHQgPSBpcHY2 X2ZpeHVwX29wdGlvbnMoJm9wdF9zcGFjZSwgb3B0KTsKQEAgLTYzMSw2ICs2MzQsNyBAQCBkb25l OgogCWRzdF9yZWxlYXNlKGRzdCk7CiBvdXQ6CiAJZmw2X3NvY2tfcmVsZWFzZShmbG93bGFiZWwp OworCXR4b3B0X3B1dChvcHRfdG9fZnJlZSk7CiAKIAlyZXR1cm4gZXJyIDwgMCA/IGVyciA6IGxl bjsKIAotLSAKMi40LjEKCgpGcm9tIGMxYWI4ZTRjOTNmOWEyNDE3YWRhM2FiYTBiZmFhZDRjMzM0 ZjVlMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEtvbnN0YW50aW4gS2hsZWJuaWtv diA8a29jdDlpQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAxIERlYyAyMDE1IDAxOjE0OjQ4ICswMzAw ClN1YmplY3Q6IFtQQVRDSCAyNC8yNl0gbmV0L25laWdoYm91cjogZml4IGNyYXNoIGF0IGR1bXBp bmcgZGV2aWNlLWFnbm9zdGljCiBwcm94eSBlbnRyaWVzCgpbIFVwc3RyZWFtIGNvbW1pdCA2YWRj NWZkNmExNDJjNmUyYzgwNTc0YzFkYjBjN2MxN2RlZGFhNDJlIF0KClByb3h5IGVudHJpZXMgY291 bGQgaGF2ZSBudWxsIHBvaW50ZXIgdG8gbmV0LWRldmljZS4KClNpZ25lZC1vZmYtYnk6IEtvbnN0 YW50aW4gS2hsZWJuaWtvdiA8a29jdDlpQGdtYWlsLmNvbT4KRml4ZXM6IDg0OTIwYzE0MjBlMiAo Im5ldDogQWxsb3cgaXB2NiBwcm94aWVzIGFuZCBhcnAgcHJveGllcyBiZSBzaG93biB3aXRoIGlw cm91dGUyIikKU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIG5ldC9jb3JlL25laWdoYm91ci5jIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL25l aWdoYm91ci5jIGIvbmV0L2NvcmUvbmVpZ2hib3VyLmMKaW5kZXggMjIzN2MxYi4uZDZlOGNmYyAx MDA2NDQKLS0tIGEvbmV0L2NvcmUvbmVpZ2hib3VyLmMKKysrIGIvbmV0L2NvcmUvbmVpZ2hib3Vy LmMKQEAgLTIyMDcsNyArMjIwNyw3IEBAIHN0YXRpYyBpbnQgcG5laWdoX2ZpbGxfaW5mbyhzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcG5laWdoX2VudHJ5ICpwbiwKIAluZG0tPm5kbV9wYWQy ICAgID0gMDsKIAluZG0tPm5kbV9mbGFncwkgPSBwbi0+ZmxhZ3MgfCBOVEZfUFJPWFk7CiAJbmRt LT5uZG1fdHlwZQkgPSBSVE5fVU5JQ0FTVDsKLQluZG0tPm5kbV9pZmluZGV4ID0gcG4tPmRldi0+ aWZpbmRleDsKKwluZG0tPm5kbV9pZmluZGV4ID0gcG4tPmRldiA/IHBuLT5kZXYtPmlmaW5kZXgg OiAwOwogCW5kbS0+bmRtX3N0YXRlCSA9IE5VRF9OT05FOwogCiAJaWYgKG5sYV9wdXQoc2tiLCBO REFfRFNULCB0YmwtPmtleV9sZW4sIHBuLT5rZXkpKQpAQCAtMjI4Miw3ICsyMjgyLDcgQEAgc3Rh dGljIGludCBwbmVpZ2hfZHVtcF90YWJsZShzdHJ1Y3QgbmVpZ2hfdGFibGUgKnRibCwgc3RydWN0 IHNrX2J1ZmYgKnNrYiwKIAkJaWYgKGggPiBzX2gpCiAJCQlzX2lkeCA9IDA7CiAJCWZvciAobiA9 IHRibC0+cGhhc2hfYnVja2V0c1toXSwgaWR4ID0gMDsgbjsgbiA9IG4tPm5leHQpIHsKLQkJCWlm IChkZXZfbmV0KG4tPmRldikgIT0gbmV0KQorCQkJaWYgKHBuZWlnaF9uZXQobikgIT0gbmV0KQog CQkJCWNvbnRpbnVlOwogCQkJaWYgKGlkeCA8IHNfaWR4KQogCQkJCWdvdG8gbmV4dDsKLS0gCjIu NC4xCgoKRnJvbSA3MDJhNzQxNTgwZDczZjNjMzliODQyOTMxMTI3ODMyYzIxNTBhYzJhIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5j b20+CkRhdGU6IFR1ZSwgMSBEZWMgMjAxNSAwNzoyMDowNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0gg MjUvMjZdIGlwdjY6IHNjdHA6IGltcGxlbWVudCBzY3RwX3Y2X2Rlc3Ryb3lfc29jaygpCgpbIFVw c3RyZWFtIGNvbW1pdCA2MDJkZDYyZGZiZGEzZTYzYTJkNmEzY2JkZTk1M2ViZTgyYmY1MDg3IF0K CkRtaXRyeSBWeXVrb3YgcmVwb3J0ZWQgYSBtZW1vcnkgbGVhayB1c2luZyBJUFY2IFNDVFAgc29j a2V0cy4KCldlIG5lZWQgdG8gY2FsbCBpbmV0Nl9kZXN0cm95X3NvY2soKSB0byBwcm9wZXJseSBy ZWxlYXNlCmluZXQ2IHNwZWNpZmljIGZpZWxkcy4KClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292 IDxkdnl1a292QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6 ZXRAZ29vZ2xlLmNvbT4KQWNrZWQtYnk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJv eC5uZXQ+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD4KLS0tCiBuZXQvc2N0cC9zb2NrZXQuYyB8IDkgKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwg OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc29j a2V0LmMgYi9uZXQvc2N0cC9zb2NrZXQuYwppbmRleCA1ZjZjNGU2Li42NmQ3OTYwIDEwMDY0NAot LS0gYS9uZXQvc2N0cC9zb2NrZXQuYworKysgYi9uZXQvc2N0cC9zb2NrZXQuYwpAQCAtNzM4Nyw2 ICs3Mzg3LDEzIEBAIHN0cnVjdCBwcm90byBzY3RwX3Byb3QgPSB7CiAKICNpZiBJU19FTkFCTEVE KENPTkZJR19JUFY2KQogCisjaW5jbHVkZSA8bmV0L3RyYW5zcF92Ni5oPgorc3RhdGljIHZvaWQg c2N0cF92Nl9kZXN0cm95X3NvY2soc3RydWN0IHNvY2sgKnNrKQoreworCXNjdHBfZGVzdHJveV9z b2NrKHNrKTsKKwlpbmV0Nl9kZXN0cm95X3NvY2soc2spOworfQorCiBzdHJ1Y3QgcHJvdG8gc2N0 cHY2X3Byb3QgPSB7CiAJLm5hbWUJCT0gIlNDVFB2NiIsCiAJLm93bmVyCQk9IFRISVNfTU9EVUxF LApAQCAtNzM5Niw3ICs3NDAzLDcgQEAgc3RydWN0IHByb3RvIHNjdHB2Nl9wcm90ID0gewogCS5h Y2NlcHQJCT0gc2N0cF9hY2NlcHQsCiAJLmlvY3RsCQk9IHNjdHBfaW9jdGwsCiAJLmluaXQJCT0g c2N0cF9pbml0X3NvY2ssCi0JLmRlc3Ryb3kJPSBzY3RwX2Rlc3Ryb3lfc29jaywKKwkuZGVzdHJv eQk9IHNjdHBfdjZfZGVzdHJveV9zb2NrLAogCS5zaHV0ZG93bgk9IHNjdHBfc2h1dGRvd24sCiAJ LnNldHNvY2tvcHQJPSBzY3RwX3NldHNvY2tvcHQsCiAJLmdldHNvY2tvcHQJPSBzY3RwX2dldHNv Y2tvcHQsCi0tIAoyLjQuMQoKCkZyb20gNjJjMzliZmRmZjNjY2FkYzBjNDA2MDY2YWVlM2UwZTY3 MzMxNDhlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVt YXpldEBnb29nbGUuY29tPgpEYXRlOiBUdWUsIDEgRGVjIDIwMTUgMjA6MDg6NTEgLTA4MDAKU3Vi amVjdDogW1BBVENIIDI2LzI2XSBuZXRfc2NoZWQ6IGZpeCBxZGlzY190cmVlX2RlY3JlYXNlX3Fs ZW4oKSByYWNlcwoKWyBVcHN0cmVhbSBjb21taXQgNGVhZjNiODRmMjg4MWM5YzAyOGYxZDVlNzZj NTJhYjU3NWZlM2E2NiBdCgpxZGlzY190cmVlX2RlY3JlYXNlX3FsZW4oKSBzdWZmZXJzIGZyb20g dHdvIHByb2JsZW1zIG9uIG11bHRpcXVldWUKZGV2aWNlcy4KCk9uZSBwcm9ibGVtIGlzIHRoYXQg aXQgdXBkYXRlcyBzY2gtPnEucWxlbiBhbmQgc2NoLT5xc3RhdHMuZHJvcHMKb24gdGhlIG1xL21x cHJpbyByb290IHFkaXNjLCB3aGlsZSBpdCBzaG91bGQgbm90IDogRGFuaWVsZQpyZXBvcnRlZCB1 bmRlcmZsb3dzIGVycm9ycyA6ClsgIDY4MS43NzQ4MjFdIFBBWDogc2NoLT5xLnFsZW46IDAgbjog MQpbICA2ODEuNzc0ODI1XSBQQVg6IHNpemUgb3ZlcmZsb3cgZGV0ZWN0ZWQgaW4gZnVuY3Rpb24g cWRpc2NfdHJlZV9kZWNyZWFzZV9xbGVuIG5ldC9zY2hlZC9zY2hfYXBpLmM6NzY5IGNpY3VzLjY5 M180OSBtaW4sIGNvdW50OiA3MiwgZGVjbDogcWxlbjsgbnVtOiAwOyBjb250ZXh0OiBza19idWZm X2hlYWQ7ClsgIDY4MS43NzQ5NTRdIENQVTogMiBQSUQ6IDE5IENvbW06IGtzb2Z0aXJxZC8yIFRh aW50ZWQ6IEcgICAgICAgICAgIE8gICAgNC4yLjYuMjAxNTExMjgyMjM5LTEtZ3JzZWMgIzEKWyAg NjgxLjc3NDk1NV0gSGFyZHdhcmUgbmFtZTogQVNVU1RlSyBDT01QVVRFUiBJTkMuIFgzMDJMSi9Y MzAyTEosIEJJT1MgWDMwMkxKLjIwMiAwMy8wNS8yMDE1ClsgIDY4MS43NzQ5NTZdICBmZmZmZmZm ZmE5YTA0ODYzIDAwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCBmZmZmZmZmZmE5OTBm ZjdjClsgIDY4MS43NzQ5NTldICBmZmZmYzkwMDAwZDNiYzM4IGZmZmZmZmZmYTk1ZDI4MTAgMDAw MDAwMDAwMDAwMDAwNyBmZmZmZmZmZmE5OTEwMDJiClsgIDY4MS43NzQ5NjBdICBmZmZmYzkwMDAw ZDNiYzY4IGZmZmZmZmZmYTkxYTQ0ZjQgMDAwMDAwMDAwMDAwMDAwMSAwMDAwMDAwMDAwMDAwMDAx ClsgIDY4MS43NzQ5NjJdIENhbGwgVHJhY2U6ClsgIDY4MS43NzQ5NjddICBbPGZmZmZmZmZmYTk1 ZDI4MTA+XSBkdW1wX3N0YWNrKzB4NGMvMHg3ZgpbICA2ODEuNzc0OTcwXSAgWzxmZmZmZmZmZmE5 MWE0NGY0Pl0gcmVwb3J0X3NpemVfb3ZlcmZsb3crMHgzNC8weDUwClsgIDY4MS43NzQ5NzJdICBb PGZmZmZmZmZmYTk0ZDE3ZTI+XSBxZGlzY190cmVlX2RlY3JlYXNlX3FsZW4rMHgxNTIvMHgxNjAK WyAgNjgxLjc3NDk3Nl0gIFs8ZmZmZmZmZmZjMDI2OTRiMT5dIGZxX2NvZGVsX2RlcXVldWUrMHg3 YjEvMHg4MjAgW3NjaF9mcV9jb2RlbF0KWyAgNjgxLjc3NDk3OF0gIFs8ZmZmZmZmZmZjMDI2ODBh MD5dID8gcWRpc2NfcGVla19kZXF1ZXVlZCsweGEwLzB4YTAgW3NjaF9mcV9jb2RlbF0KWyAgNjgx Ljc3NDk4MF0gIFs8ZmZmZmZmZmZhOTRjZDkyZD5dIF9fcWRpc2NfcnVuKzB4NGQvMHgxZDAKWyAg NjgxLjc3NDk4M10gIFs8ZmZmZmZmZmZhOTQ5YjJiMj5dIG5ldF90eF9hY3Rpb24rMHhjMi8weDE2 MApbICA2ODEuNzc0OTg1XSAgWzxmZmZmZmZmZmE5MDY2NGMxPl0gX19kb19zb2Z0aXJxKzB4ZjEv MHgyMDAKWyAgNjgxLjc3NDk4N10gIFs8ZmZmZmZmZmZhOTA2NjVlZT5dIHJ1bl9rc29mdGlycWQr MHgxZS8weDMwClsgIDY4MS43NzQ5ODldICBbPGZmZmZmZmZmYTkwODk2YjA+XSBzbXBib290X3Ro cmVhZF9mbisweDE1MC8weDI2MApbICA2ODEuNzc0OTkxXSAgWzxmZmZmZmZmZmE5MDg5NTYwPl0g PyBzb3J0X3JhbmdlKzB4NDAvMHg0MApbICA2ODEuNzc0OTkyXSAgWzxmZmZmZmZmZmE5MDg1ZmU0 Pl0ga3RocmVhZCsweGU0LzB4MTAwClsgIDY4MS43NzQ5OTRdICBbPGZmZmZmZmZmYTkwODVmMDA+ XSA/IGt0aHJlYWRfd29ya2VyX2ZuKzB4MTcwLzB4MTcwClsgIDY4MS43NzQ5OTVdICBbPGZmZmZm ZmZmYTk1ZDhkMWU+XSByZXRfZnJvbV9mb3JrKzB4M2UvMHg3MAoKbXEvbXFwcmlvIGhhdmUgdGhl aXIgb3duIHdheXMgdG8gcmVwb3J0IHFsZW4vZHJvcHMgYnkgZm9sZGluZyBzdGF0cyBvbgphbGwg dGhlaXIgcXVldWVzLCB3aXRoIGFwcHJvcHJpYXRlIGxvY2tpbmcuCgpBIHNlY29uZCBwcm9ibGVt IGlzIHRoYXQgcWRpc2NfdHJlZV9kZWNyZWFzZV9xbGVuKCkgY2FsbHMgcWRpc2NfbG9va3VwKCkK d2l0aG91dCBwcm9wZXIgbG9ja2luZyA6IGNvbmN1cnJlbnQgcWRpc2MgdXBkYXRlcyBjb3VsZCBj b3JydXB0IHRoZSBsaXN0CnRoYXQgcWRpc2NfbWF0Y2hfZnJvbV9yb290KCkgcGFyc2VzIHRvIGZp bmQgYSBxZGlzYyBnaXZlbiBpdHMgaGFuZGxlLgoKRml4IGZpcnN0IHByb2JsZW0gYWRkaW5nIGEg VENRX0ZfTk9QQVJFTlQgcWRpc2MgZmxhZyB0aGF0CnFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbigp IGNhbiB1c2UgdG8gYWJvcnQgaXRzIHRyZWUgdHJhdmVyc2FsLAphcyBzb29uIGFzIGl0IG1lZXRz IGEgbXEvbXFwcmlvIHFkaXNjIGNoaWxkcmVuLgoKU2Vjb25kIHByb2JsZW0gY2FuIGJlIGZpeGVk IGJ5IFJDVSBwcm90ZWN0aW9uLgpRZGlzYyBhcmUgYWxyZWFkeSBmcmVlZCBhZnRlciBSQ1UgZ3Jh Y2UgcGVyaW9kLCBzbyBxZGlzY19saXN0X2FkZCgpIGFuZApxZGlzY19saXN0X2RlbCgpIHNpbXBs eSBoYXZlIHRvIHVzZSBhcHByb3ByaWF0ZSByY3UgbGlzdCB2YXJpYW50cy4KCkEgZnV0dXJlIHBh dGNoIHdpbGwgYWRkIGEgcGVyIHN0cnVjdCBuZXRkZXZfcXVldWUgbGlzdCBhbmNob3IsIHNvIHRo YXQKcWRpc2NfdHJlZV9kZWNyZWFzZV9xbGVuKCkgY2FuIGhhdmUgbW9yZSBlZmZpY2llbnQgbG9v a3Vwcy4KClJlcG9ydGVkLWJ5OiBEYW5pZWxlIEZ1Y2luaSA8ZGZ1Y2luaUBnbWFpbC5jb20+ClNp Z25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQ2M6IENvbmcg V2FuZyA8Y3dhbmdAdHdvcGVuc291cmNlLmNvbT4KQ2M6IEphbWFsIEhhZGkgU2FsaW0gPGpoc0Bt b2phdGF0dS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1s b2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oIHwgIDMgKysrCiBuZXQvc2No ZWQvc2NoX2FwaS5jICAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBuZXQv c2NoZWQvc2NoX2dlbmVyaWMuYyAgIHwgIDIgKy0KIG5ldC9zY2hlZC9zY2hfbXEuYyAgICAgICAg fCAgNCArKy0tCiBuZXQvc2NoZWQvc2NoX21xcHJpby5jICAgIHwgIDQgKystLQogNSBmaWxlcyBj aGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9p bmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oIGIvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaAppbmRl eCA2ZDc3OGVmLi4wODBiNjU3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5o CisrKyBiL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmgKQEAgLTYxLDYgKzYxLDkgQEAgc3RydWN0 IFFkaXNjIHsKIAkJCQkgICAgICAqLwogI2RlZmluZSBUQ1FfRl9XQVJOX05PTldDCSgxIDw8IDE2 KQogI2RlZmluZSBUQ1FfRl9DUFVTVEFUUwkJMHgyMCAvKiBydW4gdXNpbmcgcGVyY3B1IHN0YXRp c3RpY3MgKi8KKyNkZWZpbmUgVENRX0ZfTk9QQVJFTlQJCTB4NDAgLyogcm9vdCBvZiBpdHMgaGll cmFyY2h5IDoKKwkJCQkgICAgICAqIHFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbigpIHNob3VsZCBz dG9wLgorCQkJCSAgICAgICovCiAJdTMyCQkJbGltaXQ7CiAJY29uc3Qgc3RydWN0IFFkaXNjX29w cwkqb3BzOwogCXN0cnVjdCBxZGlzY19zaXplX3RhYmxlCV9fcmN1ICpzdGFiOwpkaWZmIC0tZ2l0 IGEvbmV0L3NjaGVkL3NjaF9hcGkuYyBiL25ldC9zY2hlZC9zY2hfYXBpLmMKaW5kZXggMWUxYzg5 ZS4uZDRiNmYzNiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9hcGkuYworKysgYi9uZXQvc2No ZWQvc2NoX2FwaS5jCkBAIC0yNTMsNyArMjUzLDggQEAgaW50IHFkaXNjX3NldF9kZWZhdWx0KGNv bnN0IGNoYXIgKm5hbWUpCiB9CiAKIC8qIFdlIGtub3cgaGFuZGxlLiBGaW5kIHFkaXNjIGFtb25n IGFsbCBxZGlzYydzIGF0dGFjaGVkIHRvIGRldmljZQotICAgKHJvb3QgcWRpc2MsIGFsbCBpdHMg Y2hpbGRyZW4sIGNoaWxkcmVuIG9mIGNoaWxkcmVuIGV0Yy4pCisgKiAocm9vdCBxZGlzYywgYWxs IGl0cyBjaGlsZHJlbiwgY2hpbGRyZW4gb2YgY2hpbGRyZW4gZXRjLikKKyAqIE5vdGU6IGNhbGxl ciBlaXRoZXIgdXNlcyBydG5sIG9yIHJjdV9yZWFkX2xvY2soKQogICovCiAKIHN0YXRpYyBzdHJ1 Y3QgUWRpc2MgKnFkaXNjX21hdGNoX2Zyb21fcm9vdChzdHJ1Y3QgUWRpc2MgKnJvb3QsIHUzMiBo YW5kbGUpCkBAIC0yNjQsNyArMjY1LDcgQEAgc3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfbWF0 Y2hfZnJvbV9yb290KHN0cnVjdCBRZGlzYyAqcm9vdCwgdTMyIGhhbmRsZSkKIAkgICAgcm9vdC0+ aGFuZGxlID09IGhhbmRsZSkKIAkJcmV0dXJuIHJvb3Q7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHEsICZyb290LT5saXN0LCBsaXN0KSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocSwgJnJv b3QtPmxpc3QsIGxpc3QpIHsKIAkJaWYgKHEtPmhhbmRsZSA9PSBoYW5kbGUpCiAJCQlyZXR1cm4g cTsKIAl9CkBAIC0yNzcsMTUgKzI3OCwxOCBAQCB2b2lkIHFkaXNjX2xpc3RfYWRkKHN0cnVjdCBR ZGlzYyAqcSkKIAkJc3RydWN0IFFkaXNjICpyb290ID0gcWRpc2NfZGV2KHEpLT5xZGlzYzsKIAog CQlXQVJOX09OX09OQ0Uocm9vdCA9PSAmbm9vcF9xZGlzYyk7Ci0JCWxpc3RfYWRkX3RhaWwoJnEt Pmxpc3QsICZyb290LT5saXN0KTsKKwkJQVNTRVJUX1JUTkwoKTsKKwkJbGlzdF9hZGRfdGFpbF9y Y3UoJnEtPmxpc3QsICZyb290LT5saXN0KTsKIAl9CiB9CiBFWFBPUlRfU1lNQk9MKHFkaXNjX2xp c3RfYWRkKTsKIAogdm9pZCBxZGlzY19saXN0X2RlbChzdHJ1Y3QgUWRpc2MgKnEpCiB7Ci0JaWYg KChxLT5wYXJlbnQgIT0gVENfSF9ST09UKSAmJiAhKHEtPmZsYWdzICYgVENRX0ZfSU5HUkVTUykp Ci0JCWxpc3RfZGVsKCZxLT5saXN0KTsKKwlpZiAoKHEtPnBhcmVudCAhPSBUQ19IX1JPT1QpICYm ICEocS0+ZmxhZ3MgJiBUQ1FfRl9JTkdSRVNTKSkgeworCQlBU1NFUlRfUlROTCgpOworCQlsaXN0 X2RlbF9yY3UoJnEtPmxpc3QpOworCX0KIH0KIEVYUE9SVF9TWU1CT0wocWRpc2NfbGlzdF9kZWwp OwogCkBAIC03NTAsMTQgKzc1NCwxOCBAQCB2b2lkIHFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbihz dHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgaW50IG4pCiAJaWYgKG4gPT0gMCkKIAkJcmV0dXJu OwogCWRyb3BzID0gbWF4X3QoaW50LCBuLCAwKTsKKwlyY3VfcmVhZF9sb2NrKCk7CiAJd2hpbGUg KChwYXJlbnRpZCA9IHNjaC0+cGFyZW50KSkgewogCQlpZiAoVENfSF9NQUoocGFyZW50aWQpID09 IFRDX0hfTUFKKFRDX0hfSU5HUkVTUykpCi0JCQlyZXR1cm47CisJCQlicmVhazsKIAorCQlpZiAo c2NoLT5mbGFncyAmIFRDUV9GX05PUEFSRU5UKQorCQkJYnJlYWs7CisJCS8qIFRPRE86IHBlcmZv cm0gdGhlIHNlYXJjaCBvbiBhIHBlciB0eHEgYmFzaXMgKi8KIAkJc2NoID0gcWRpc2NfbG9va3Vw KHFkaXNjX2RldihzY2gpLCBUQ19IX01BSihwYXJlbnRpZCkpOwogCQlpZiAoc2NoID09IE5VTEwp IHsKLQkJCVdBUk5fT04ocGFyZW50aWQgIT0gVENfSF9ST09UKTsKLQkJCXJldHVybjsKKwkJCVdB Uk5fT05fT05DRShwYXJlbnRpZCAhPSBUQ19IX1JPT1QpOworCQkJYnJlYWs7CiAJCX0KIAkJY29w cyA9IHNjaC0+b3BzLT5jbF9vcHM7CiAJCWlmIChjb3BzLT5xbGVuX25vdGlmeSkgewpAQCAtNzY4 LDYgKzc3Niw3IEBAIHZvaWQgcWRpc2NfdHJlZV9kZWNyZWFzZV9xbGVuKHN0cnVjdCBRZGlzYyAq c2NoLCB1bnNpZ25lZCBpbnQgbikKIAkJc2NoLT5xLnFsZW4gLT0gbjsKIAkJX19xZGlzY19xc3Rh dHNfZHJvcChzY2gsIGRyb3BzKTsKIAl9CisJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CiBFWFBPUlRf U1lNQk9MKHFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbik7CiAKQEAgLTk0MSw3ICs5NTAsNyBAQCBx ZGlzY19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZSAq ZGV2X3F1ZXVlLAogCQl9CiAJCWxvY2tkZXBfc2V0X2NsYXNzKHFkaXNjX2xvY2soc2NoKSwgJnFk aXNjX3R4X2xvY2spOwogCQlpZiAoIW5ldGlmX2lzX211bHRpcXVldWUoZGV2KSkKLQkJCXNjaC0+ ZmxhZ3MgfD0gVENRX0ZfT05FVFhRVUVVRTsKKwkJCXNjaC0+ZmxhZ3MgfD0gVENRX0ZfT05FVFhR VUVVRSB8IFRDUV9GX05PUEFSRU5UOwogCX0KIAogCXNjaC0+aGFuZGxlID0gaGFuZGxlOwpkaWZm IC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMu YwppbmRleCA2ZWZjYTMwLi5iNDUzMjcwIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2dlbmVy aWMuYworKysgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwpAQCAtNzQzLDcgKzc0Myw3IEBAIHN0 YXRpYyB2b2lkIGF0dGFjaF9vbmVfZGVmYXVsdF9xZGlzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 LAogCQkJcmV0dXJuOwogCQl9CiAJCWlmICghbmV0aWZfaXNfbXVsdGlxdWV1ZShkZXYpKQotCQkJ cWRpc2MtPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUU7CisJCQlxZGlzYy0+ZmxhZ3MgfD0gVENR X0ZfT05FVFhRVUVVRSB8IFRDUV9GX05PUEFSRU5UOwogCX0KIAlkZXZfcXVldWUtPnFkaXNjX3Ns ZWVwaW5nID0gcWRpc2M7CiB9CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX21xLmMgYi9uZXQv c2NoZWQvc2NoX21xLmMKaW5kZXggZjNjYmFlYy4uM2U4MmYwNCAxMDA2NDQKLS0tIGEvbmV0L3Nj aGVkL3NjaF9tcS5jCisrKyBiL25ldC9zY2hlZC9zY2hfbXEuYwpAQCAtNjMsNyArNjMsNyBAQCBz dGF0aWMgaW50IG1xX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCkK IAkJaWYgKHFkaXNjID09IE5VTEwpCiAJCQlnb3RvIGVycjsKIAkJcHJpdi0+cWRpc2NzW250eF0g PSBxZGlzYzsKLQkJcWRpc2MtPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUU7CisJCXFkaXNjLT5m bGFncyB8PSBUQ1FfRl9PTkVUWFFVRVVFIHwgVENRX0ZfTk9QQVJFTlQ7CiAJfQogCiAJc2NoLT5m bGFncyB8PSBUQ1FfRl9NUVJPT1Q7CkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIGludCBtcV9n cmFmdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCwgc3RydWN0IFFkaXNjICpu ZXcsCiAKIAkqb2xkID0gZGV2X2dyYWZ0X3FkaXNjKGRldl9xdWV1ZSwgbmV3KTsKIAlpZiAobmV3 KQotCQluZXctPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUU7CisJCW5ldy0+ZmxhZ3MgfD0gVENR X0ZfT05FVFhRVUVVRSB8IFRDUV9GX05PUEFSRU5UOwogCWlmIChkZXYtPmZsYWdzICYgSUZGX1VQ KQogCQlkZXZfYWN0aXZhdGUoZGV2KTsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL25ldC9zY2hl ZC9zY2hfbXFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX21xcHJpby5jCmluZGV4IDM4MTFhNzQuLmFk NzBlY2YgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfbXFwcmlvLmMKKysrIGIvbmV0L3NjaGVk L3NjaF9tcXByaW8uYwpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBpbnQgbXFwcmlvX2luaXQo c3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCkKIAkJCWdvdG8gZXJyOwogCQl9 CiAJCXByaXYtPnFkaXNjc1tpXSA9IHFkaXNjOwotCQlxZGlzYy0+ZmxhZ3MgfD0gVENRX0ZfT05F VFhRVUVVRTsKKwkJcWRpc2MtPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUUgfCBUQ1FfRl9OT1BB UkVOVDsKIAl9CiAKIAkvKiBJZiB0aGUgbXFwcmlvIG9wdGlvbnMgaW5kaWNhdGUgdGhhdCBoYXJk d2FyZSBzaG91bGQgb3duCkBAIC0yMDksNyArMjA5LDcgQEAgc3RhdGljIGludCBtcXByaW9fZ3Jh ZnQoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgY2wsIHN0cnVjdCBRZGlzYyAqbmV3 LAogCSpvbGQgPSBkZXZfZ3JhZnRfcWRpc2MoZGV2X3F1ZXVlLCBuZXcpOwogCiAJaWYgKG5ldykK LQkJbmV3LT5mbGFncyB8PSBUQ1FfRl9PTkVUWFFVRVVFOworCQluZXctPmZsYWdzIHw9IFRDUV9G X09ORVRYUVVFVUUgfCBUQ1FfRl9OT1BBUkVOVDsKIAogCWlmIChkZXYtPmZsYWdzICYgSUZGX1VQ KQogCQlkZXZfYWN0aXZhdGUoZGV2KTsKLS0gCjIuNC4xCgo= ----Next_Part(Thu_Dec_10_14_37_58_2015_327)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_42.mbox" RnJvbSAwZmQxMTgwOTdhMGMzNGRlYzRmZGQzOTcxNmNlNjQ0ZGU5ZDM2YmNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0cmVzc2lu ZHVrdGlvbi5vcmc+CkRhdGU6IFR1ZSwgMTAgTm92IDIwMTUgMTY6MjM6MTUgKzAxMDAKU3ViamVj dDogW1BBVENIIDAxLzM3XSBhZi11bml4OiBmaXggdXNlLWFmdGVyLWZyZWUgd2l0aCBjb25jdXJy ZW50IHJlYWRlcnMKIHdoaWxlIHNwbGljaW5nCgpbIFVwc3RyZWFtIGNvbW1pdCA3M2VkNWQyNWRj ZTAzNTRlYTM4MWQ2ZGM5MzAwNWMzMDg1ZmFlMDNkIF0KCkR1cmluZyBzcGxpY2luZyBhbiBhZi11 bml4IHNvY2tldCB0byBhIHBpcGUgd2UgaGF2ZSB0byBkcm9wIGFsbAphZi11bml4IHNvY2tldCBs b2Nrcy4gV2hpbGUgZG9pbmcgc28gd2UgYWxsb3cgYW5vdGhlciByZWFkZXIgdG8gZW50ZXIKdW5p eF9zdHJlYW1fcmVhZF9nZW5lcmljIHdoaWNoIGNhbiByZWFkLCBjb3B5IGFuZCBmaW5hbGx5IGZy ZWUgYW5vdGhlcgpza2IuIElmIGV4YWN0bHkgdGhpcyBza2IgaXMganVzdCBpbiBwcm9jZXNzIG9m IGJlaW5nIHNwbGljZWQgd2UgZ2V0IGEKdXNlLWFmdGVyLWZyZWUgcmVwb3J0IGJ5IGthc2FuLgoK Rmlyc3QsIHdlIG11c3QgbWFrZSBzdXJlIHRvIG5vdCBoYXZlIGEgZnJlZSB3aGlsZSB0aGUgc2ti IGlzIHVzZWQgZHVyaW5nCnRoZSBzcGxpY2Ugb3BlcmF0aW9uLiBXZSBzaW1wbHkgaW5jcmVtZW50 IGl0cyB1c2UgY291bnRlciBiZWZvcmUgdW5sb2NraW5nCnRoZSByZWFkZXIgbG9jay4KClN0cmVh bSBzb2NrZXRzIGhhdmUgdGhlIG5pY2UgY2hhcmFjdGVyaXN0aWMgdGhhdCB3ZSBkb24ndCBjYXJl IGFib3V0Cnplcm8gbGVuZ3RoIHdyaXRlcyBhbmQgdGhleSBuZXZlciByZWFjaCB0aGUgcGVlciBz b2NrZXQncyBxdWV1ZS4gVGhhdApzYWlkLCB3ZSBjYW4gdGFrZSB0aGUgVU5JWENCLmNvbnN1bWVk IGZpZWxkIGFzIHRoZSBpbmRpY2F0b3IgaWYgdGhlCnNrYiB3YXMgYWxyZWFkeSBmcmVlZCBmcm9t IHRoZSBzb2NrZXQncyByZWNlaXZlIHF1ZXVlLiBJZiB0aGUgc2tiIHdhcwpmdWxseSBjb25zdW1l ZCBhZnRlciB3ZSBsb2NrZWQgdGhlIHJlYWRlciBzaWRlIGFnYWluIHdlIGtub3cgaXQgaGFzIGJl ZW4KZHJvcHBlZCBieSBhIHNlY29uZCByZWFkZXIuIFdlIGluZGljYXRlIGEgc2hvcnQgcmVhZCB0 byB1c2VyIHNwYWNlIGFuZAphYm9ydCB0aGUgY3VycmVudCBzcGxpY2Ugb3BlcmF0aW9uLgoKVGhp cyBidWcgaGFzIGJlZW4gZm91bmQgd2l0aCBzeXprYWxsZXIKKGh0dHA6Ly9naXRodWIuY29tL2dv b2dsZS9zeXprYWxsZXIpIGJ5IERtaXRyeSBWeXVrb3YuCgpGaXhlczogMmI1MTQ1NzRmN2U4ICgi bmV0OiBhZl91bml4OiBpbXBsZW1lbnQgc3BsaWNlIGZvciBzdHJlYW0gYWZfdW5peCBzb2NrZXRz IikKUmVwb3J0ZWQtYnk6IERtaXRyeSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4KQ2M6IERt aXRyeSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4KQ2M6IEVyaWMgRHVtYXpldCA8ZXJpYy5k dW1hemV0QGdtYWlsLmNvbT4KQWNrZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xl LmNvbT4KU2lnbmVkLW9mZi1ieTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3Np bmR1a3Rpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVt bG9mdC5uZXQ+Ci0tLQogbmV0L3VuaXgvYWZfdW5peC5jIHwgMTggKysrKysrKysrKysrKysrKysr CiAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL25ldC91bml4 L2FmX3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguYwppbmRleCA5NGY2NTgyLi5hNWFmZTQxIDEw MDY0NAotLS0gYS9uZXQvdW5peC9hZl91bml4LmMKKysrIGIvbmV0L3VuaXgvYWZfdW5peC5jCkBA IC00NDAsNiArNDQwLDcgQEAgc3RhdGljIHZvaWQgdW5peF9yZWxlYXNlX3NvY2soc3RydWN0IHNv Y2sgKnNrLCBpbnQgZW1icmlvbikKIAkJaWYgKHN0YXRlID09IFRDUF9MSVNURU4pCiAJCQl1bml4 X3JlbGVhc2Vfc29jayhza2ItPnNrLCAxKTsKIAkJLyogcGFzc2VkIGZkcyBhcmUgZXJhc2VkIGlu IHRoZSBrZnJlZV9za2IgaG9vawkgICAgICAqLworCQlVTklYQ0Ioc2tiKS5jb25zdW1lZCA9IHNr Yi0+bGVuOwogCQlrZnJlZV9za2Ioc2tiKTsKIAl9CiAKQEAgLTIwNzEsNiArMjA3Miw3IEBAIHN0 YXRpYyBpbnQgdW5peF9zdHJlYW1fcmVhZF9nZW5lcmljKHN0cnVjdCB1bml4X3N0cmVhbV9yZWFk X3N0YXRlICpzdGF0ZSkKIAogCWRvIHsKIAkJaW50IGNodW5rOworCQlib29sIGRyb3Bfc2tiOwog CQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqbGFzdDsKIAogCQl1bml4X3N0YXRlX2xvY2soc2spOwpA QCAtMjE1MSw3ICsyMTUzLDExIEBAIHVubG9jazoKIAkJfQogCiAJCWNodW5rID0gbWluX3QodW5z aWduZWQgaW50LCB1bml4X3NrYl9sZW4oc2tiKSAtIHNraXAsIHNpemUpOworCQlza2JfZ2V0KHNr Yik7CiAJCWNodW5rID0gc3RhdGUtPnJlY3ZfYWN0b3Ioc2tiLCBza2lwLCBjaHVuaywgc3RhdGUp OworCQlkcm9wX3NrYiA9ICF1bml4X3NrYl9sZW4oc2tiKTsKKwkJLyogc2tiIGlzIG9ubHkgc2Fm ZSB0byB1c2UgaWYgIWRyb3Bfc2tiICovCisJCWNvbnN1bWVfc2tiKHNrYik7CiAJCWlmIChjaHVu ayA8IDApIHsKIAkJCWlmIChjb3BpZWQgPT0gMCkKIAkJCQljb3BpZWQgPSAtRUZBVUxUOwpAQCAt MjE2MCw2ICsyMTY2LDE4IEBAIHVubG9jazoKIAkJY29waWVkICs9IGNodW5rOwogCQlzaXplIC09 IGNodW5rOwogCisJCWlmIChkcm9wX3NrYikgeworCQkJLyogdGhlIHNrYiB3YXMgdG91Y2hlZCBi eSBhIGNvbmN1cnJlbnQgcmVhZGVyOworCQkJICogd2Ugc2hvdWxkIG5vdCBleHBlY3QgYW55dGhp bmcgZnJvbSB0aGlzIHNrYgorCQkJICogYW55bW9yZSBhbmQgYXNzdW1lIGl0IGludmFsaWQgLSB3 ZSBjYW4gYmUKKwkJCSAqIHN1cmUgaXQgd2FzIGRyb3BwZWQgZnJvbSB0aGUgc29ja2V0IHF1ZXVl CisJCQkgKgorCQkJICogbGV0J3MgcmVwb3J0IGEgc2hvcnQgcmVhZAorCQkJICovCisJCQllcnIg PSAwOworCQkJYnJlYWs7CisJCX0KKwogCQkvKiBNYXJrIHJlYWQgcGFydCBvZiBza2IgYXMgdXNl ZCAqLwogCQlpZiAoIShmbGFncyAmIE1TR19QRUVLKSkgewogCQkJVU5JWENCKHNrYikuY29uc3Vt ZWQgKz0gY2h1bms7Ci0tIAoyLjEuMAoKCkZyb20gMWQyNDkxMmM2OTJmYWUyYzI5MDNmZWVlMThh YmZhNGVkMDJlZTRhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSGFubmVzIEZyZWRl cmljIFNvd2EgPGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3JnPgpEYXRlOiBNb24sIDE2IE5vdiAy MDE1IDE2OjI1OjU2ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwMi8zN10gYWZfdW5peDogZG9uJ3Qg YXBwZW5kIGNvbnN1bWVkIHNrYnMgdG8gc2tfcmVjZWl2ZV9xdWV1ZQoKWyBVcHN0cmVhbSBjb21t aXQgODg0NGY5NzIzOGNhNmMxY2E5MmE1ZDZjNjlmNTNlZmQzNjFhMjY2ZiBdCgpJbiBjYXNlIG11 bHRpcGxlIHdyaXRlcyB0byBhIHVuaXggc3RyZWFtIHNvY2tldCByYWNlIHdlIGNvdWxkIGVuZCB1 cCBpbiBhCnNpdHVhdGlvbiB3aGVyZSB3ZSBwcmUtYWxsb2NhdGUgYSBuZXcgc2tiIGZvciB1c2Ug aW4gdW5peF9zdHJlYW1fc2VuZHBhZ2UKYnV0IGhhdmUgdG8gZnJlZSBpdCBhZ2FpbiBpbiB0aGUg bG9ja2VkIHNlY3Rpb24gYmVjYXVzZSBhbm90aGVyIHNrYgpoYXMgYmVlbiBhcHBlbmRlZCBtZWFu d2hpbGUsIHdoaWNoIHdlIG11c3QgdXNlLiBBY2NpZGVudGFsbHkgd2UgZGlkbid0CmNsZWFyIHRo ZSBwb2ludGVyIGFmdGVyIGNvbnN1bWluZyBpdCBhbmQgc28gd2UgdG91Y2hlZCBmcmVlZCBtZW1v cnkKd2hpbGUgYXBwZW5kaW5nIGl0IHRvIHRoZSBza19yZWNlaXZlX3F1ZXVlLiBTbywgY2xlYXIg dGhlIHBvaW50ZXIgYWZ0ZXIKY29uc3VtaW5nIHRoZSBza2IuCgpUaGlzIGJ1ZyBoYXMgYmVlbiBm b3VuZCB3aXRoIHN5emthbGxlcgooaHR0cDovL2dpdGh1Yi5jb20vZ29vZ2xlL3N5emthbGxlcikg YnkgRG1pdHJ5IFZ5dWtvdi4KCkZpeGVzOiA4NjllN2M2MjQ4NmUgKCJuZXQ6IGFmX3VuaXg6IGlt cGxlbWVudCBzdHJlYW0gc2VuZHBhZ2Ugc3VwcG9ydCIpClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1 a292IDxkdnl1a292QGdvb2dsZS5jb20+CkNjOiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2ds ZS5jb20+CkNjOiBFcmljIER1bWF6ZXQgPGVyaWMuZHVtYXpldEBnbWFpbC5jb20+ClNpZ25lZC1v ZmYtYnk6IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4K QWNrZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC91bml4L2Fm X3VuaXguYyB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0 IGEvbmV0L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jCmluZGV4IGE1YWZlNDEu LjNlMmNhMzkgMTAwNjQ0Ci0tLSBhL25ldC91bml4L2FmX3VuaXguYworKysgYi9uZXQvdW5peC9h Zl91bml4LmMKQEAgLTE3OTksNiArMTc5OSw3IEBAIGFsbG9jX3NrYjoKIAkJICogdGhpcyAtIGRv ZXMgbm8gaGFybQogCQkgKi8KIAkJY29uc3VtZV9za2IobmV3c2tiKTsKKwkJbmV3c2tiID0gTlVM TDsKIAl9CiAKIAlpZiAoc2tiX2FwcGVuZF9wYWdlZnJhZ3Moc2tiLCBwYWdlLCBvZmZzZXQsIHNp emUpKSB7Ci0tIAoyLjEuMAoKCkZyb20gMjYwN2ViZTIyODEyOTU5NTljYTM5ZDY1ZjA3YzJiZGFj ZDJhZmU1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSGFubmVzIEZyZWRlcmljIFNv d2EgPGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3JnPgpEYXRlOiBUdWUsIDE3IE5vdiAyMDE1IDE1 OjEwOjU5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwMy8zN10gYWZfdW5peDogdGFrZSByZWNlaXZl IHF1ZXVlIGxvY2sgd2hpbGUgYXBwZW5kaW5nIG5ldwogc2tiCgpbIFVwc3RyZWFtIGNvbW1pdCBh M2ExMTZlMDRjYzZhOTRkNTk1ZWFkNGU5NTZhYjFiYzFkMmY0NzQ2IF0KCldoaWxlIHBvc3NpYmx5 IGluIGZ1dHVyZSB3ZSBkb24ndCBuZWNlc3NhcmlseSBuZWVkIHRvIHVzZQpza19idWZmX2hlYWQu bG9jayB0aGlzIGlzIGEgcmF0aGVyIGxhcmdlciBjaGFuZ2UsIGFzIGl0IGFmZmVjdHMgdGhlCmFm X3VuaXggZmQgZ2FyYmFnZSBjb2xsZWN0b3IsIGRpYWcgYW5kIHNvY2tldCBjbGVhbnVwcy4gVGhp cyBpcyB0b28gbXVjaApmb3IgYSBzdGFibGUgcGF0Y2guCgpGb3IgdGhlIHRpbWUgYmVpbmcgZ3Jh YiBza19idWZmX2hlYWQubG9jayB3aXRob3V0IGRpc2FibGluZyBiaCBhbmQgaXJxcywKc28gZG9u J3QgdXNlIGxvY2tlZCBza2JfcXVldWVfdGFpbC4KCkZpeGVzOiA4NjllN2M2MjQ4NmUgKCJuZXQ6 IGFmX3VuaXg6IGltcGxlbWVudCBzdHJlYW0gc2VuZHBhZ2Ugc3VwcG9ydCIpCkNjOiBFcmljIER1 bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEhhbm5lcyBGcmVkZXJp YyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KUmVwb3J0ZWQtYnk6IEVyaWMgRHVt YXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQWNrZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6 ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZl bWxvZnQubmV0PgotLS0KIG5ldC91bml4L2FmX3VuaXguYyB8IDUgKysrKy0KIDEgZmlsZSBjaGFu Z2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9uZXQvdW5p eC9hZl91bml4LmMgYi9uZXQvdW5peC9hZl91bml4LmMKaW5kZXggM2UyY2EzOS4uNDJhYjJjYyAx MDA2NDQKLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jCisrKyBiL25ldC91bml4L2FmX3VuaXguYwpA QCAtMTgxMiw4ICsxODEyLDExIEBAIGFsbG9jX3NrYjoKIAlza2ItPnRydWVzaXplICs9IHNpemU7 CiAJYXRvbWljX2FkZChzaXplLCAmc2stPnNrX3dtZW1fYWxsb2MpOwogCi0JaWYgKG5ld3NrYikK KwlpZiAobmV3c2tiKSB7CisJCXNwaW5fbG9jaygmb3RoZXItPnNrX3JlY2VpdmVfcXVldWUubG9j ayk7CiAJCV9fc2tiX3F1ZXVlX3RhaWwoJm90aGVyLT5za19yZWNlaXZlX3F1ZXVlLCBuZXdza2Ip OworCQlzcGluX3VubG9jaygmb3RoZXItPnNrX3JlY2VpdmVfcXVldWUubG9jayk7CisJfQogCiAJ dW5peF9zdGF0ZV91bmxvY2sob3RoZXIpOwogCW11dGV4X3VubG9jaygmdW5peF9zayhvdGhlcikt PnJlYWRsb2NrKTsKLS0gCjIuMS4wCgoKRnJvbSA5MThhOTQ5MDk0OWZmYzFhOTIwZDY5NWMyZDVm NWY4M2M4NzkwNmRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSYWluZXIgV2Vpa3Vz YXQgPHJ3ZWlrdXNhdEBtb2JpbGVhY3RpdmVkZWZlbnNlLmNvbT4KRGF0ZTogRnJpLCAyMCBOb3Yg MjAxNSAyMjowNzoyMyArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDQvMzddIHVuaXg6IGF2b2lkIHVz ZS1hZnRlci1mcmVlIGluIGVwX3JlbW92ZV93YWl0X3F1ZXVlCgpbIFVwc3RyZWFtIGNvbW1pdCA3 ZDI2NzI3OGE5ZWNlOTYzZDc3ZWVmZWM2MTYzMDIyM2ZjZTA4YzZjIF0KClJhaW5lciBXZWlrdXNh dCA8cndlaWt1c2F0QG1vYmlsZWFjdGl2ZWRlZmVuc2UuY29tPiB3cml0ZXM6CkFuIEFGX1VOSVgg ZGF0YWdyYW0gc29ja2V0IGJlaW5nIHRoZSBjbGllbnQgaW4gYW4gbjoxIGFzc29jaWF0aW9uIHdp dGgKc29tZSBzZXJ2ZXIgc29ja2V0IGlzIG9ubHkgYWxsb3dlZCB0byBzZW5kIG1lc3NhZ2VzIHRv IHRoZSBzZXJ2ZXIgaWYgdGhlCnJlY2VpdmUgcXVldWUgb2YgdGhpcyBzb2NrZXQgY29udGFpbnMg YXQgbW9zdCBza19tYXhfYWNrX2JhY2tsb2cKZGF0YWdyYW1zLiBUaGlzIGltcGxpZXMgdGhhdCBw cm9zcGVjdGl2ZSB3cml0ZXJzIG1pZ2h0IGJlIGZvcmNlZCB0byBnbwp0byBzbGVlcCBkZXNwaXRl IG5vbmUgb2YgdGhlIG1lc3NhZ2UgcHJlc2VudGx5IGVucXVldWVkIG9uIHRoZSBzZXJ2ZXIKcmVj ZWl2ZSBxdWV1ZSB3ZXJlIHNlbnQgYnkgdGhlbS4gSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhl c2Ugd2lsbCBiZQp3b2tlbiB1cCBvbmNlIHNwYWNlIGJlY29tZXMgYWdhaW4gYXZhaWxhYmxlLCB0 aGUgcHJlc2VudCB1bml4X2RncmFtX3BvbGwKcm91dGluZSBkb2VzIGEgc2Vjb25kIHNvY2tfcG9s bF93YWl0IGNhbGwgd2l0aCB0aGUgcGVlcl93YWl0IHdhaXQgcXVldWUKb2YgdGhlIHNlcnZlciBz b2NrZXQgYXMgcXVldWUgYXJndW1lbnQgKHVuaXhfZGdyYW1fcmVjdm1zZyBkb2VzIGEgd2FrZQp1 cCBvbiB0aGlzIHF1ZXVlIGFmdGVyIGEgZGF0YWdyYW0gd2FzIHJlY2VpdmVkKS4gVGhpcyBpcyBp bmhlcmVudGx5CnByb2JsZW1hdGljIGJlY2F1c2UgdGhlIHNlcnZlciBzb2NrZXQgaXMgb25seSBn dWFyYW50ZWVkIHRvIHJlbWFpbiBhbGl2ZQpmb3IgYXMgbG9uZyBhcyB0aGUgY2xpZW50IHN0aWxs IGhvbGRzIGEgcmVmZXJlbmNlIHRvIGl0LiBJbiBjYXNlIHRoZQpjb25uZWN0aW9uIGlzIGRpc3Nv bHZlZCB2aWEgY29ubmVjdCBvciBieSB0aGUgZGVhZCBwZWVyIGRldGVjdGlvbiBsb2dpYwppbiB1 bml4X2RncmFtX3NlbmRtc2csIHRoZSBzZXJ2ZXIgc29ja2V0IG1heSBiZSBmcmVlZCBkZXNwaXRl ICJ0aGUKcG9sbGluZyBtZWNoYW5pc20iIChpbiBwYXJ0aWN1bGFyLCBlcG9sbCkgc3RpbGwgaGFz IGEgcG9pbnRlciB0byB0aGUKY29ycmVzcG9uZGluZyBwZWVyX3dhaXQgcXVldWUuIFRoZXJlJ3Mg bm8gd2F5IHRvIGZvcmNpYmx5IGRlcmVnaXN0ZXIgYQp3YWl0IHF1ZXVlIHdpdGggZXBvbGwuCgpC YXNlZCBvbiBhbiBpZGVhIGJ5IEphc29uIEJhcm9uLCB0aGUgcGF0Y2ggYmVsb3cgY2hhbmdlcyB0 aGUgY29kZSBzdWNoCnRoYXQgYSB3YWl0X3F1ZXVlX3QgYmVsb25naW5nIHRvIHRoZSBjbGllbnQg c29ja2V0IGlzIGVucXVldWVkIG9uIHRoZQpwZWVyX3dhaXQgcXVldWUgb2YgdGhlIHNlcnZlciB3 aGVuZXZlciB0aGUgcGVlciByZWNlaXZlIHF1ZXVlIGZ1bGwKY29uZGl0aW9uIGlzIGRldGVjdGVk IGJ5IGVpdGhlciBhIHNlbmRtc2cgb3IgYSBwb2xsLiBBIHdha2UgdXAgb24gdGhlCnBlZXIgcXVl dWUgaXMgdGhlbiByZWxheWVkIHRvIHRoZSBvcmRpbmFyeSB3YWl0IHF1ZXVlIG9mIHRoZSBjbGll bnQKc29ja2V0IHZpYSB3YWtlIGZ1bmN0aW9uLiBUaGUgY29ubmVjdGlvbiB0byB0aGUgcGVlciB3 YWl0IHF1ZXVlIGlzIGFnYWluCmRpc3NvbHZlZCBpZiBlaXRoZXIgYSB3YWtlIHVwIGlzIGFib3V0 IHRvIGJlIHJlbGF5ZWQgb3IgdGhlIGNsaWVudApzb2NrZXQgcmVjb25uZWN0cyBvciBhIGRlYWQg cGVlciBpcyBkZXRlY3RlZCBvciB0aGUgY2xpZW50IHNvY2tldCBpcwppdHNlbGYgY2xvc2VkLiBU aGlzIGVuYWJsZXMgcmVtb3ZpbmcgdGhlIHNlY29uZCBzb2NrX3BvbGxfd2FpdCBmcm9tCnVuaXhf ZGdyYW1fcG9sbCwgdGh1cyBhdm9pZGluZyB0aGUgdXNlLWFmdGVyLWZyZWUsIHdoaWxlIHN0aWxs IGVuc3VyaW5nCnRoYXQgbm8gYmxvY2tlZCB3cml0ZXIgc2xlZXBzIGZvcmV2ZXIuCgpTaWduZWQt b2ZmLWJ5OiBSYWluZXIgV2Vpa3VzYXQgPHJ3ZWlrdXNhdEBtb2JpbGVhY3RpdmVkZWZlbnNlLmNv bT4KRml4ZXM6IGVjMGQyMTVmOTQyMCAoImFmX3VuaXg6IGZpeCAncG9sbCBmb3Igd3JpdGUnL2Nv bm5lY3RlZCBER1JBTSBzb2NrZXRzIikKUmV2aWV3ZWQtYnk6IEphc29uIEJhcm9uIDxqYmFyb25A YWthbWFpLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxv ZnQubmV0PgotLS0KIGluY2x1ZGUvbmV0L2FmX3VuaXguaCB8ICAgMSArCiBuZXQvdW5peC9hZl91 bml4LmMgICAgfCAxODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FmX3VuaXguaCBiL2luY2x1ZGUvbmV0L2Fm X3VuaXguaAppbmRleCBjYjFiOWJiLi40OWM3NjgzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9h Zl91bml4LmgKKysrIGIvaW5jbHVkZS9uZXQvYWZfdW5peC5oCkBAIC02Miw2ICs2Miw3IEBAIHN0 cnVjdCB1bml4X3NvY2sgewogI2RlZmluZSBVTklYX0dDX0NBTkRJREFURQkwCiAjZGVmaW5lIFVO SVhfR0NfTUFZQkVfQ1lDTEUJMQogCXN0cnVjdCBzb2NrZXRfd3EJcGVlcl93cTsKKwl3YWl0X3F1 ZXVlX3QJCXBlZXJfd2FrZTsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHVuaXhfc29jayAq dW5peF9zayhzdHJ1Y3Qgc29jayAqc2spCmRpZmYgLS1naXQgYS9uZXQvdW5peC9hZl91bml4LmMg Yi9uZXQvdW5peC9hZl91bml4LmMKaW5kZXggNDJhYjJjYy4uMTUzYjJmMiAxMDA2NDQKLS0tIGEv bmV0L3VuaXgvYWZfdW5peC5jCisrKyBiL25ldC91bml4L2FmX3VuaXguYwpAQCAtMzI2LDYgKzMy NiwxMTggQEAgZm91bmQ6CiAJcmV0dXJuIHM7CiB9CiAKKy8qIFN1cHBvcnQgY29kZSBmb3IgYXN5 bW1ldHJpY2FsbHkgY29ubmVjdGVkIGRncmFtIHNvY2tldHMKKyAqCisgKiBJZiBhIGRhdGFncmFt IHNvY2tldCBpcyBjb25uZWN0ZWQgdG8gYSBzb2NrZXQgbm90IGl0c2VsZiBjb25uZWN0ZWQKKyAq IHRvIHRoZSBmaXJzdCBzb2NrZXQgKGVnLCAvZGV2L2xvZyksIGNsaWVudHMgbWF5IG9ubHkgZW5x dWV1ZSBtb3JlCisgKiBtZXNzYWdlcyBpZiB0aGUgcHJlc2VudCByZWNlaXZlIHF1ZXVlIG9mIHRo ZSBzZXJ2ZXIgc29ja2V0IGlzIG5vdAorICogInRvbyBsYXJnZSIuIFRoaXMgbWVhbnMgdGhlcmUn cyBhIHNlY29uZCB3cml0ZWFiaWxpdHkgY29uZGl0aW9uCisgKiBwb2xsIGFuZCBzZW5kbXNnIG5l ZWQgdG8gdGVzdC4gVGhlIGRncmFtIHJlY3YgY29kZSB3aWxsIGRvIGEgd2FrZQorICogdXAgb24g dGhlIHBlZXJfd2FpdCB3YWl0IHF1ZXVlIG9mIGEgc29ja2V0IHVwb24gcmVjZXB0aW9uIG9mIGEK KyAqIGRhdGFncmFtIHdoaWNoIG5lZWRzIHRvIGJlIHByb3BhZ2F0ZWQgdG8gc2xlZXBpbmcgd291 bGQtYmUgd3JpdGVycworICogc2luY2UgdGhlc2UgbWlnaHQgbm90IGhhdmUgc2VudCBhbnl0aGlu ZyBzbyBmYXIuIFRoaXMgY2FuJ3QgYmUKKyAqIGFjY29tcGxpc2hlZCB2aWEgcG9sbF93YWl0IGJl Y2F1c2UgdGhlIGxpZmV0aW1lIG9mIHRoZSBzZXJ2ZXIKKyAqIHNvY2tldCBtaWdodCBiZSBsZXNz IHRoYW4gdGhhdCBvZiBpdHMgY2xpZW50cyBpZiB0aGVzZSBicmVhayB0aGVpcgorICogYXNzb2Np YXRpb24gd2l0aCBpdCBvciBpZiB0aGUgc2VydmVyIHNvY2tldCBpcyBjbG9zZWQgd2hpbGUgY2xp ZW50cworICogYXJlIHN0aWxsIGNvbm5lY3RlZCB0byBpdCBhbmQgdGhlcmUncyBubyB3YXkgdG8g aW5mb3JtICJhIHBvbGxpbmcKKyAqIGltcGxlbWVudGF0aW9uIiB0aGF0IGl0IHNob3VsZCBsZXQg Z28gb2YgYSBjZXJ0YWluIHdhaXQgcXVldWUKKyAqCisgKiBJbiBvcmRlciB0byBwcm9wYWdhdGUg YSB3YWtlIHVwLCBhIHdhaXRfcXVldWVfdCBvZiB0aGUgY2xpZW50CisgKiBzb2NrZXQgaXMgZW5x dWV1ZWQgb24gdGhlIHBlZXJfd2FpdCBxdWV1ZSBvZiB0aGUgc2VydmVyIHNvY2tldAorICogd2hv c2Ugd2FrZSBmdW5jdGlvbiBkb2VzIGEgd2FrZV91cCBvbiB0aGUgb3JkaW5hcnkgY2xpZW50IHNv Y2tldAorICogd2FpdCBxdWV1ZS4gVGhpcyBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIHdoZW5l dmVyIGEgd3JpdGUgKG9yCisgKiBwb2xsIGZvciB3cml0ZSkgaGl0IHRoZSBmbG93IGNvbnRyb2wg Y29uZGl0aW9uIGFuZCBicm9rZW4gd2hlbiB0aGUKKyAqIGFzc29jaWF0aW9uIHRvIHRoZSBzZXJ2 ZXIgc29ja2V0IGlzIGRpc3NvbHZlZCBvciBhZnRlciBhIHdha2UgdXAKKyAqIHdhcyByZWxheWVk LgorICovCisKK3N0YXRpYyBpbnQgdW5peF9kZ3JhbV9wZWVyX3dha2VfcmVsYXkod2FpdF9xdWV1 ZV90ICpxLCB1bnNpZ25lZCBtb2RlLCBpbnQgZmxhZ3MsCisJCQkJICAgICAgdm9pZCAqa2V5KQor eworCXN0cnVjdCB1bml4X3NvY2sgKnU7CisJd2FpdF9xdWV1ZV9oZWFkX3QgKnVfc2xlZXA7CisK Kwl1ID0gY29udGFpbmVyX29mKHEsIHN0cnVjdCB1bml4X3NvY2ssIHBlZXJfd2FrZSk7CisKKwlf X3JlbW92ZV93YWl0X3F1ZXVlKCZ1bml4X3NrKHUtPnBlZXJfd2FrZS5wcml2YXRlKS0+cGVlcl93 YWl0LAorCQkJICAgIHEpOworCXUtPnBlZXJfd2FrZS5wcml2YXRlID0gTlVMTDsKKworCS8qIHJl bGF5aW5nIGNhbiBvbmx5IGhhcHBlbiB3aGlsZSB0aGUgd3Egc3RpbGwgZXhpc3RzICovCisJdV9z bGVlcCA9IHNrX3NsZWVwKCZ1LT5zayk7CisJaWYgKHVfc2xlZXApCisJCXdha2VfdXBfaW50ZXJy dXB0aWJsZV9wb2xsKHVfc2xlZXAsIGtleSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCB1bml4X2RncmFtX3BlZXJfd2FrZV9jb25uZWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNv Y2sgKm90aGVyKQoreworCXN0cnVjdCB1bml4X3NvY2sgKnUsICp1X290aGVyOworCWludCByYzsK KworCXUgPSB1bml4X3NrKHNrKTsKKwl1X290aGVyID0gdW5peF9zayhvdGhlcik7CisJcmMgPSAw OworCXNwaW5fbG9jaygmdV9vdGhlci0+cGVlcl93YWl0LmxvY2spOworCisJaWYgKCF1LT5wZWVy X3dha2UucHJpdmF0ZSkgeworCQl1LT5wZWVyX3dha2UucHJpdmF0ZSA9IG90aGVyOworCQlfX2Fk ZF93YWl0X3F1ZXVlKCZ1X290aGVyLT5wZWVyX3dhaXQsICZ1LT5wZWVyX3dha2UpOworCisJCXJj ID0gMTsKKwl9CisKKwlzcGluX3VubG9jaygmdV9vdGhlci0+cGVlcl93YWl0LmxvY2spOworCXJl dHVybiByYzsKK30KKworc3RhdGljIHZvaWQgdW5peF9kZ3JhbV9wZWVyX3dha2VfZGlzY29ubmVj dChzdHJ1Y3Qgc29jayAqc2ssCisJCQkJCSAgICBzdHJ1Y3Qgc29jayAqb3RoZXIpCit7CisJc3Ry dWN0IHVuaXhfc29jayAqdSwgKnVfb3RoZXI7CisKKwl1ID0gdW5peF9zayhzayk7CisJdV9vdGhl ciA9IHVuaXhfc2sob3RoZXIpOworCXNwaW5fbG9jaygmdV9vdGhlci0+cGVlcl93YWl0LmxvY2sp OworCisJaWYgKHUtPnBlZXJfd2FrZS5wcml2YXRlID09IG90aGVyKSB7CisJCV9fcmVtb3ZlX3dh aXRfcXVldWUoJnVfb3RoZXItPnBlZXJfd2FpdCwgJnUtPnBlZXJfd2FrZSk7CisJCXUtPnBlZXJf d2FrZS5wcml2YXRlID0gTlVMTDsKKwl9CisKKwlzcGluX3VubG9jaygmdV9vdGhlci0+cGVlcl93 YWl0LmxvY2spOworfQorCitzdGF0aWMgdm9pZCB1bml4X2RncmFtX3BlZXJfd2FrZV9kaXNjb25u ZWN0X3dha2V1cChzdHJ1Y3Qgc29jayAqc2ssCisJCQkJCQkgICBzdHJ1Y3Qgc29jayAqb3RoZXIp Cit7CisJdW5peF9kZ3JhbV9wZWVyX3dha2VfZGlzY29ubmVjdChzaywgb3RoZXIpOworCXdha2Vf dXBfaW50ZXJydXB0aWJsZV9wb2xsKHNrX3NsZWVwKHNrKSwKKwkJCQkgICBQT0xMT1VUIHwKKwkJ CQkgICBQT0xMV1JOT1JNIHwKKwkJCQkgICBQT0xMV1JCQU5EKTsKK30KKworLyogcHJlY29uZGl0 aW9uczoKKyAqCS0gdW5peF9wZWVyKHNrKSA9PSBvdGhlcgorICoJLSBhc3NvY2lhdGlvbiBpcyBz dGFibGUKKyAqLworc3RhdGljIGludCB1bml4X2RncmFtX3BlZXJfd2FrZV9tZShzdHJ1Y3Qgc29j ayAqc2ssIHN0cnVjdCBzb2NrICpvdGhlcikKK3sKKwlpbnQgY29ubmVjdGVkOworCisJY29ubmVj dGVkID0gdW5peF9kZ3JhbV9wZWVyX3dha2VfY29ubmVjdChzaywgb3RoZXIpOworCisJaWYgKHVu aXhfcmVjdnFfZnVsbChvdGhlcikpCisJCXJldHVybiAxOworCisJaWYgKGNvbm5lY3RlZCkKKwkJ dW5peF9kZ3JhbV9wZWVyX3dha2VfZGlzY29ubmVjdChzaywgb3RoZXIpOworCisJcmV0dXJuIDA7 Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50IHVuaXhfd3JpdGFibGUoc3RydWN0IHNvY2sgKnNrKQog ewogCXJldHVybiAoYXRvbWljX3JlYWQoJnNrLT5za193bWVtX2FsbG9jKSA8PCAyKSA8PSBzay0+ c2tfc25kYnVmOwpAQCAtNDMwLDYgKzU0Miw4IEBAIHN0YXRpYyB2b2lkIHVuaXhfcmVsZWFzZV9z b2NrKHN0cnVjdCBzb2NrICpzaywgaW50IGVtYnJpb24pCiAJCQlza3BhaXItPnNrX3N0YXRlX2No YW5nZShza3BhaXIpOwogCQkJc2tfd2FrZV9hc3luYyhza3BhaXIsIFNPQ0tfV0FLRV9XQUlURCwg UE9MTF9IVVApOwogCQl9CisKKwkJdW5peF9kZ3JhbV9wZWVyX3dha2VfZGlzY29ubmVjdChzaywg c2twYWlyKTsKIAkJc29ja19wdXQoc2twYWlyKTsgLyogSXQgbWF5IG5vdyBkaWUgKi8KIAkJdW5p eF9wZWVyKHNrKSA9IE5VTEw7CiAJfQpAQCAtNjY1LDYgKzc3OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qg c29jayAqdW5peF9jcmVhdGUxKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywg aW50IGtlcm4pCiAJSU5JVF9MSVNUX0hFQUQoJnUtPmxpbmspOwogCW11dGV4X2luaXQoJnUtPnJl YWRsb2NrKTsgLyogc2luZ2xlIHRhc2sgcmVhZGluZyBsb2NrICovCiAJaW5pdF93YWl0cXVldWVf aGVhZCgmdS0+cGVlcl93YWl0KTsKKwlpbml0X3dhaXRxdWV1ZV9mdW5jX2VudHJ5KCZ1LT5wZWVy X3dha2UsIHVuaXhfZGdyYW1fcGVlcl93YWtlX3JlbGF5KTsKIAl1bml4X2luc2VydF9zb2NrZXQo dW5peF9zb2NrZXRzX3VuYm91bmQoc2spLCBzayk7CiBvdXQ6CiAJaWYgKHNrID09IE5VTEwpCkBA IC0xMDMyLDYgKzExNDcsOCBAQCByZXN0YXJ0OgogCWlmICh1bml4X3BlZXIoc2spKSB7CiAJCXN0 cnVjdCBzb2NrICpvbGRfcGVlciA9IHVuaXhfcGVlcihzayk7CiAJCXVuaXhfcGVlcihzaykgPSBv dGhlcjsKKwkJdW5peF9kZ3JhbV9wZWVyX3dha2VfZGlzY29ubmVjdF93YWtldXAoc2ssIG9sZF9w ZWVyKTsKKwogCQl1bml4X3N0YXRlX2RvdWJsZV91bmxvY2soc2ssIG90aGVyKTsKIAogCQlpZiAo b3RoZXIgIT0gb2xkX3BlZXIpCkBAIC0xNDcxLDYgKzE1ODgsNyBAQCBzdGF0aWMgaW50IHVuaXhf ZGdyYW1fc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCiAJ c3RydWN0IHNjbV9jb29raWUgc2NtOwogCWludCBtYXhfbGV2ZWw7CiAJaW50IGRhdGFfbGVuID0g MDsKKwlpbnQgc2tfbG9ja2VkOwogCiAJd2FpdF9mb3JfdW5peF9nYygpOwogCWVyciA9IHNjbV9z ZW5kKHNvY2ssIG1zZywgJnNjbSwgZmFsc2UpOwpAQCAtMTU0OSwxMiArMTY2NywxNCBAQCByZXN0 YXJ0OgogCQlnb3RvIG91dF9mcmVlOwogCX0KIAorCXNrX2xvY2tlZCA9IDA7CiAJdW5peF9zdGF0 ZV9sb2NrKG90aGVyKTsKK3Jlc3RhcnRfbG9ja2VkOgogCWVyciA9IC1FUEVSTTsKIAlpZiAoIXVu aXhfbWF5X3NlbmQoc2ssIG90aGVyKSkKIAkJZ290byBvdXRfdW5sb2NrOwogCi0JaWYgKHNvY2tf ZmxhZyhvdGhlciwgU09DS19ERUFEKSkgeworCWlmICh1bmxpa2VseShzb2NrX2ZsYWcob3RoZXIs IFNPQ0tfREVBRCkpKSB7CiAJCS8qCiAJCSAqCUNoZWNrIHdpdGggMTAwMy4xZyAtIHdoYXQgc2hv dWxkCiAJCSAqCWRhdGFncmFtIGVycm9yCkBAIC0xNTYyLDEwICsxNjgyLDE0IEBAIHJlc3RhcnQ6 CiAJCXVuaXhfc3RhdGVfdW5sb2NrKG90aGVyKTsKIAkJc29ja19wdXQob3RoZXIpOwogCisJCWlm ICghc2tfbG9ja2VkKQorCQkJdW5peF9zdGF0ZV9sb2NrKHNrKTsKKwogCQllcnIgPSAwOwotCQl1 bml4X3N0YXRlX2xvY2soc2spOwogCQlpZiAodW5peF9wZWVyKHNrKSA9PSBvdGhlcikgewogCQkJ dW5peF9wZWVyKHNrKSA9IE5VTEw7CisJCQl1bml4X2RncmFtX3BlZXJfd2FrZV9kaXNjb25uZWN0 X3dha2V1cChzaywgb3RoZXIpOworCiAJCQl1bml4X3N0YXRlX3VubG9jayhzayk7CiAKIAkJCXVu aXhfZGdyYW1fZGlzY29ubmVjdGVkKHNrLCBvdGhlcik7CkBAIC0xNTkxLDIxICsxNzE1LDM4IEBA IHJlc3RhcnQ6CiAJCQlnb3RvIG91dF91bmxvY2s7CiAJfQogCi0JaWYgKHVuaXhfcGVlcihvdGhl cikgIT0gc2sgJiYgdW5peF9yZWN2cV9mdWxsKG90aGVyKSkgewotCQlpZiAoIXRpbWVvKSB7Ci0J CQllcnIgPSAtRUFHQUlOOwotCQkJZ290byBvdXRfdW5sb2NrOworCWlmICh1bmxpa2VseSh1bml4 X3BlZXIob3RoZXIpICE9IHNrICYmIHVuaXhfcmVjdnFfZnVsbChvdGhlcikpKSB7CisJCWlmICh0 aW1lbykgeworCQkJdGltZW8gPSB1bml4X3dhaXRfZm9yX3BlZXIob3RoZXIsIHRpbWVvKTsKKwor CQkJZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVvKTsKKwkJCWlmIChzaWduYWxfcGVuZGluZyhj dXJyZW50KSkKKwkJCQlnb3RvIG91dF9mcmVlOworCisJCQlnb3RvIHJlc3RhcnQ7CiAJCX0KIAot CQl0aW1lbyA9IHVuaXhfd2FpdF9mb3JfcGVlcihvdGhlciwgdGltZW8pOworCQlpZiAoIXNrX2xv Y2tlZCkgeworCQkJdW5peF9zdGF0ZV91bmxvY2sob3RoZXIpOworCQkJdW5peF9zdGF0ZV9kb3Vi bGVfbG9jayhzaywgb3RoZXIpOworCQl9CiAKLQkJZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVv KTsKLQkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQotCQkJZ290byBvdXRfZnJlZTsKKwkJ aWYgKHVuaXhfcGVlcihzaykgIT0gb3RoZXIgfHwKKwkJICAgIHVuaXhfZGdyYW1fcGVlcl93YWtl X21lKHNrLCBvdGhlcikpIHsKKwkJCWVyciA9IC1FQUdBSU47CisJCQlza19sb2NrZWQgPSAxOwor CQkJZ290byBvdXRfdW5sb2NrOworCQl9CiAKLQkJZ290byByZXN0YXJ0OworCQlpZiAoIXNrX2xv Y2tlZCkgeworCQkJc2tfbG9ja2VkID0gMTsKKwkJCWdvdG8gcmVzdGFydF9sb2NrZWQ7CisJCX0K IAl9CiAKKwlpZiAodW5saWtlbHkoc2tfbG9ja2VkKSkKKwkJdW5peF9zdGF0ZV91bmxvY2soc2sp OworCiAJaWYgKHNvY2tfZmxhZyhvdGhlciwgU09DS19SQ1ZUU1RBTVApKQogCQlfX25ldF90aW1l c3RhbXAoc2tiKTsKIAltYXliZV9hZGRfY3JlZHMoc2tiLCBzb2NrLCBvdGhlcik7CkBAIC0xNjE5 LDYgKzE3NjAsOCBAQCByZXN0YXJ0OgogCXJldHVybiBsZW47CiAKIG91dF91bmxvY2s6CisJaWYg KHNrX2xvY2tlZCkKKwkJdW5peF9zdGF0ZV91bmxvY2soc2spOwogCXVuaXhfc3RhdGVfdW5sb2Nr KG90aGVyKTsKIG91dF9mcmVlOgogCWtmcmVlX3NrYihza2IpOwpAQCAtMjQ3NSwxNCArMjYxOCwx NiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHVuaXhfZGdyYW1fcG9sbChzdHJ1Y3QgZmlsZSAqZmls ZSwgc3RydWN0IHNvY2tldCAqc29jaywKIAkJcmV0dXJuIG1hc2s7CiAKIAl3cml0YWJsZSA9IHVu aXhfd3JpdGFibGUoc2spOwotCW90aGVyID0gdW5peF9wZWVyX2dldChzayk7Ci0JaWYgKG90aGVy KSB7Ci0JCWlmICh1bml4X3BlZXIob3RoZXIpICE9IHNrKSB7Ci0JCQlzb2NrX3BvbGxfd2FpdChm aWxlLCAmdW5peF9zayhvdGhlciktPnBlZXJfd2FpdCwgd2FpdCk7Ci0JCQlpZiAodW5peF9yZWN2 cV9mdWxsKG90aGVyKSkKLQkJCQl3cml0YWJsZSA9IDA7Ci0JCX0KLQkJc29ja19wdXQob3RoZXIp OworCWlmICh3cml0YWJsZSkgeworCQl1bml4X3N0YXRlX2xvY2soc2spOworCisJCW90aGVyID0g dW5peF9wZWVyKHNrKTsKKwkJaWYgKG90aGVyICYmIHVuaXhfcGVlcihvdGhlcikgIT0gc2sgJiYK KwkJICAgIHVuaXhfcmVjdnFfZnVsbChvdGhlcikgJiYKKwkJICAgIHVuaXhfZGdyYW1fcGVlcl93 YWtlX21lKHNrLCBvdGhlcikpCisJCQl3cml0YWJsZSA9IDA7CisKKwkJdW5peF9zdGF0ZV91bmxv Y2soc2spOwogCX0KIAogCWlmICh3cml0YWJsZSkKLS0gCjIuMS4wCgoKRnJvbSBkYTVkOTYwZGJm NGYxNzQ2ZDAwNTVkNjY4YzU0MzllNGJhY2JiNWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0cmVzc2luZHVrdGlvbi5vcmc+CkRh dGU6IFRodSwgMjYgTm92IDIwMTUgMTI6MDg6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIDA1LzM3 XSBhZi11bml4OiBwYXNzY3JlZCBzdXBwb3J0IGZvciBzZW5kcGFnZQoKWyBVcHN0cmVhbSBjb21t aXQgOTQ5MGY4ODZiMTkyOTY0Nzk2Mjg1OTA3ZDc3N2ZmMDBmYmExZmEwZiBdCgpzZW5kcGFnZSBk aWQgbm90IGNhcmUgYWJvdXQgY3JlZGVudGlhbHMgYXQgYWxsLiBUaGlzIGNvdWxkIGxlYWQgdG8K c2l0dWF0aW9ucyBpbiB3aGljaCBiZWNhdXNlIG9mIGZkIHBhc3NpbmcgYmV0d2VlbiBwcm9jZXNz ZXMgd2UgY291bGQKYXBwZW5kIGRhdGEgdG8gc2ticyB3aXRoIGRpZmZlcmVudCBzY20gZGF0YS4g SXQgaXMgaWxsZWdhbCB0byBzcGxpY2UgdGhvc2UKc2ticyB0b2dldGhlci4gSW5zdGVhZCB3ZSBo YXZlIHRvIGFsbG9jYXRlIGEgbmV3IHNrYiBhbmQgaWYgcmVxdWVzdGVkCmZpbGwgb3V0IHRoZSBz Y20gZGV0YWlscy4KCkZpeGVzOiA4NjllN2M2MjQ4NmVjICgibmV0OiBhZl91bml4OiBpbXBsZW1l bnQgc3RyZWFtIHNlbmRwYWdlIHN1cHBvcnQiKQpSZXBvcnRlZC1ieTogQWwgVmlybyA8dmlyb0B6 ZW5pdi5saW51eC5vcmcudWs+CkNjOiBBbCBWaXJvIDx2aXJvQHplbml2LmxpbnV4Lm9yZy51az4K Q2M6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogSGFu bmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3JnPgpTaWduZWQtb2Zm LWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3VuaXgv YWZfdW5peC5jIHwgNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5p eC5jCmluZGV4IDE1M2IyZjIuLjEyOGIwOTggMTAwNjQ0Ci0tLSBhL25ldC91bml4L2FmX3VuaXgu YworKysgYi9uZXQvdW5peC9hZl91bml4LmMKQEAgLTE1NTAsNiArMTU1MCwxNCBAQCBzdGF0aWMg aW50IHVuaXhfc2NtX3RvX3NrYihzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtLCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBib29sIHNlbgogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRpYyBib29sIHVuaXhfcGFz c2NyZWRfZW5hYmxlZChjb25zdCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLAorCQkJCSAgY29uc3Qgc3Ry dWN0IHNvY2sgKm90aGVyKQoreworCXJldHVybiB0ZXN0X2JpdChTT0NLX1BBU1NDUkVELCAmc29j ay0+ZmxhZ3MpIHx8CisJICAgICAgICFvdGhlci0+c2tfc29ja2V0IHx8CisJICAgICAgIHRlc3Rf Yml0KFNPQ0tfUEFTU0NSRUQsICZvdGhlci0+c2tfc29ja2V0LT5mbGFncyk7Cit9CisKIC8qCiAg KiBTb21lIGFwcHMgcmVseSBvbiB3cml0ZSgpIGdpdmluZyBTQ01fQ1JFREVOVElBTFMKICAqIFdl IGluY2x1ZGUgY3JlZGVudGlhbHMgaWYgc291cmNlIG9yIGRlc3RpbmF0aW9uIHNvY2tldApAQCAt MTU2MCwxNCArMTU2OCw0MSBAQCBzdGF0aWMgdm9pZCBtYXliZV9hZGRfY3JlZHMoc3RydWN0IHNr X2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHNvY2tldCAqc29jaywKIHsKIAlpZiAoVU5JWENCKHNr YikucGlkKQogCQlyZXR1cm47Ci0JaWYgKHRlc3RfYml0KFNPQ0tfUEFTU0NSRUQsICZzb2NrLT5m bGFncykgfHwKLQkgICAgIW90aGVyLT5za19zb2NrZXQgfHwKLQkgICAgdGVzdF9iaXQoU09DS19Q QVNTQ1JFRCwgJm90aGVyLT5za19zb2NrZXQtPmZsYWdzKSkgeworCWlmICh1bml4X3Bhc3NjcmVk X2VuYWJsZWQoc29jaywgb3RoZXIpKSB7CiAJCVVOSVhDQihza2IpLnBpZCAgPSBnZXRfcGlkKHRh c2tfdGdpZChjdXJyZW50KSk7CiAJCWN1cnJlbnRfdWlkX2dpZCgmVU5JWENCKHNrYikudWlkLCAm VU5JWENCKHNrYikuZ2lkKTsKIAl9CiB9CiAKK3N0YXRpYyBpbnQgbWF5YmVfaW5pdF9jcmVkcyhz dHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtLAorCQkJICAgIHN0cnVjdCBzb2NrZXQgKnNvY2tldCwKKwkJ CSAgICBjb25zdCBzdHJ1Y3Qgc29jayAqb3RoZXIpCit7CisJaW50IGVycjsKKwlzdHJ1Y3QgbXNn aGRyIG1zZyA9IHsgLm1zZ19jb250cm9sbGVuID0gMCB9OworCisJZXJyID0gc2NtX3NlbmQoc29j a2V0LCAmbXNnLCBzY20sIGZhbHNlKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJaWYg KHVuaXhfcGFzc2NyZWRfZW5hYmxlZChzb2NrZXQsIG90aGVyKSkgeworCQlzY20tPnBpZCA9IGdl dF9waWQodGFza190Z2lkKGN1cnJlbnQpKTsKKwkJY3VycmVudF91aWRfZ2lkKCZzY20tPmNyZWRz LnVpZCwgJnNjbS0+Y3JlZHMuZ2lkKTsKKwl9CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGJv b2wgdW5peF9za2Jfc2NtX2VxKHN0cnVjdCBza19idWZmICpza2IsCisJCQkgICAgc3RydWN0IHNj bV9jb29raWUgKnNjbSkKK3sKKwljb25zdCBzdHJ1Y3QgdW5peF9za2JfcGFybXMgKnUgPSAmVU5J WENCKHNrYik7CisKKwlyZXR1cm4gdS0+cGlkID09IHNjbS0+cGlkICYmCisJICAgICAgIHVpZF9l cSh1LT51aWQsIHNjbS0+Y3JlZHMudWlkKSAmJgorCSAgICAgICBnaWRfZXEodS0+Z2lkLCBzY20t PmNyZWRzLmdpZCkgJiYKKwkgICAgICAgdW5peF9zZWNkYXRhX2VxKHNjbSwgc2tiKTsKK30KKwog LyoKICAqCVNlbmQgQUZfVU5JWCBkYXRhLgogICovCkBAIC0xODgzLDggKzE5MTgsMTAgQEAgb3V0 X2VycjoKIHN0YXRpYyBzc2l6ZV90IHVuaXhfc3RyZWFtX3NlbmRwYWdlKHN0cnVjdCBzb2NrZXQg KnNvY2tldCwgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJCQkJICAgIGludCBvZmZzZXQsIHNpemVfdCBz aXplLCBpbnQgZmxhZ3MpCiB7Ci0JaW50IGVyciA9IDA7Ci0JYm9vbCBzZW5kX3NpZ3BpcGUgPSB0 cnVlOworCWludCBlcnI7CisJYm9vbCBzZW5kX3NpZ3BpcGUgPSBmYWxzZTsKKwlib29sIGluaXRf c2NtID0gdHJ1ZTsKKwlzdHJ1Y3Qgc2NtX2Nvb2tpZSBzY207CiAJc3RydWN0IHNvY2sgKm90aGVy LCAqc2sgPSBzb2NrZXQtPnNrOwogCXN0cnVjdCBza19idWZmICpza2IsICpuZXdza2IgPSBOVUxM LCAqdGFpbCA9IE5VTEw7CiAKQEAgLTE5MDIsNyArMTkzOSw3IEBAIGFsbG9jX3NrYjoKIAkJbmV3 c2tiID0gc29ja19hbGxvY19zZW5kX3Bza2Ioc2ssIDAsIDAsIGZsYWdzICYgTVNHX0RPTlRXQUlU LAogCQkJCQkgICAgICAmZXJyLCAwKTsKIAkJaWYgKCFuZXdza2IpCi0JCQlyZXR1cm4gZXJyOwor CQkJZ290byBlcnI7CiAJfQogCiAJLyogd2UgbXVzdCBhY3F1aXJlIHJlYWRsb2NrIGFzIHdlIG1v ZGlmeSBhbHJlYWR5IHByZXNlbnQKQEAgLTE5MTEsMTIgKzE5NDgsMTIgQEAgYWxsb2Nfc2tiOgog CWVyciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmdW5peF9zayhvdGhlciktPnJlYWRsb2Nr KTsKIAlpZiAoZXJyKSB7CiAJCWVyciA9IGZsYWdzICYgTVNHX0RPTlRXQUlUID8gLUVBR0FJTiA6 IC1FUkVTVEFSVFNZUzsKLQkJc2VuZF9zaWdwaXBlID0gZmFsc2U7CiAJCWdvdG8gZXJyOwogCX0K IAogCWlmIChzay0+c2tfc2h1dGRvd24gJiBTRU5EX1NIVVRET1dOKSB7CiAJCWVyciA9IC1FUElQ RTsKKwkJc2VuZF9zaWdwaXBlID0gdHJ1ZTsKIAkJZ290byBlcnJfdW5sb2NrOwogCX0KIApAQCAt MTkyNSwxNyArMTk2MiwyNyBAQCBhbGxvY19za2I6CiAJaWYgKHNvY2tfZmxhZyhvdGhlciwgU09D S19ERUFEKSB8fAogCSAgICBvdGhlci0+c2tfc2h1dGRvd24gJiBSQ1ZfU0hVVERPV04pIHsKIAkJ ZXJyID0gLUVQSVBFOworCQlzZW5kX3NpZ3BpcGUgPSB0cnVlOwogCQlnb3RvIGVycl9zdGF0ZV91 bmxvY2s7CiAJfQogCisJaWYgKGluaXRfc2NtKSB7CisJCWVyciA9IG1heWJlX2luaXRfY3JlZHMo JnNjbSwgc29ja2V0LCBvdGhlcik7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycl9zdGF0ZV91bmxv Y2s7CisJCWluaXRfc2NtID0gZmFsc2U7CisJfQorCiAJc2tiID0gc2tiX3BlZWtfdGFpbCgmb3Ro ZXItPnNrX3JlY2VpdmVfcXVldWUpOwogCWlmICh0YWlsICYmIHRhaWwgPT0gc2tiKSB7CiAJCXNr YiA9IG5ld3NrYjsKLQl9IGVsc2UgaWYgKCFza2IpIHsKLQkJaWYgKG5ld3NrYikKKwl9IGVsc2Ug aWYgKCFza2IgfHwgIXVuaXhfc2tiX3NjbV9lcShza2IsICZzY20pKSB7CisJCWlmIChuZXdza2Ip IHsKIAkJCXNrYiA9IG5ld3NrYjsKLQkJZWxzZQorCQl9IGVsc2UgeworCQkJdGFpbCA9IHNrYjsK IAkJCWdvdG8gYWxsb2Nfc2tiOworCQl9CiAJfSBlbHNlIGlmIChuZXdza2IpIHsKIAkJLyogdGhp cyBpcyBmYXN0IHBhdGgsIHdlIGRvbid0IG5lY2Vzc2FyaWx5IG5lZWQgdG8KIAkJICogY2FsbCB0 byBrZnJlZV9za2IgZXZlbiB0aG91Z2ggd2l0aCBuZXdza2IgPT0gTlVMTApAQCAtMTk1Niw2ICsy MDAzLDkgQEAgYWxsb2Nfc2tiOgogCWF0b21pY19hZGQoc2l6ZSwgJnNrLT5za193bWVtX2FsbG9j KTsKIAogCWlmIChuZXdza2IpIHsKKwkJZXJyID0gdW5peF9zY21fdG9fc2tiKCZzY20sIHNrYiwg ZmFsc2UpOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJfc3RhdGVfdW5sb2NrOwogCQlzcGluX2xv Y2soJm90aGVyLT5za19yZWNlaXZlX3F1ZXVlLmxvY2spOwogCQlfX3NrYl9xdWV1ZV90YWlsKCZv dGhlci0+c2tfcmVjZWl2ZV9xdWV1ZSwgbmV3c2tiKTsKIAkJc3Bpbl91bmxvY2soJm90aGVyLT5z a19yZWNlaXZlX3F1ZXVlLmxvY2spOwpAQCAtMTk2NSw3ICsyMDE1LDcgQEAgYWxsb2Nfc2tiOgog CW11dGV4X3VubG9jaygmdW5peF9zayhvdGhlciktPnJlYWRsb2NrKTsKIAogCW90aGVyLT5za19k YXRhX3JlYWR5KG90aGVyKTsKLQorCXNjbV9kZXN0cm95KCZzY20pOwogCXJldHVybiBzaXplOwog CiBlcnJfc3RhdGVfdW5sb2NrOgpAQCAtMTk3Niw2ICsyMDI2LDggQEAgZXJyOgogCWtmcmVlX3Nr YihuZXdza2IpOwogCWlmIChzZW5kX3NpZ3BpcGUgJiYgIShmbGFncyAmIE1TR19OT1NJR05BTCkp CiAJCXNlbmRfc2lnKFNJR1BJUEUsIGN1cnJlbnQsIDApOworCWlmICghaW5pdF9zY20pCisJCXNj bV9kZXN0cm95KCZzY20pOwogCXJldHVybiBlcnI7CiB9CiAKQEAgLTIyNzksMTAgKzIzMzEsNyBA QCB1bmxvY2s6CiAKIAkJaWYgKGNoZWNrX2NyZWRzKSB7CiAJCQkvKiBOZXZlciBnbHVlIG1lc3Nh Z2VzIGZyb20gZGlmZmVyZW50IHdyaXRlcnMgKi8KLQkJCWlmICgoVU5JWENCKHNrYikucGlkICAh PSBzY20ucGlkKSB8fAotCQkJICAgICF1aWRfZXEoVU5JWENCKHNrYikudWlkLCBzY20uY3JlZHMu dWlkKSB8fAotCQkJICAgICFnaWRfZXEoVU5JWENCKHNrYikuZ2lkLCBzY20uY3JlZHMuZ2lkKSB8 fAotCQkJICAgICF1bml4X3NlY2RhdGFfZXEoJnNjbSwgc2tiKSkKKwkJCWlmICghdW5peF9za2Jf c2NtX2VxKHNrYiwgJnNjbSkpCiAJCQkJYnJlYWs7CiAJCX0gZWxzZSBpZiAodGVzdF9iaXQoU09D S19QQVNTQ1JFRCwgJnNvY2stPmZsYWdzKSkgewogCQkJLyogQ29weSBjcmVkZW50aWFscyAqLwot LSAKMi4xLjAKCgpGcm9tIDE3YTA0MjYyZDI5NzAxZDFhYWUzMjc2NDU5MTZhNDI3ZGViNzk2MzYg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1hcnRpbiBLYUZhaSBMYXUgPGthZmFpQGZi LmNvbT4KRGF0ZTogV2VkLCAxMSBOb3YgMjAxNSAxMTo1MTowNiAtMDgwMApTdWJqZWN0OiBbUEFU Q0ggMDYvMzddIGlwdjY6IEF2b2lkIGNyZWF0aW5nIFJURl9DQUNIRSBmcm9tIGEgcnQgdGhhdCBp cyBub3QKIG1hbmFnZWQgYnkgZmliNiB0cmVlCgpbIFVwc3RyZWFtIGNvbW1pdCAwZDNmNmQyOTdi ZmI3YWYyNGQwNTA4NDYwZmRiM2QxZWM0OTAzZmEzIF0KClRoZSBvcmlnaW5hbCBidWcgcmVwb3J0 OgpodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEyNzI1NzEKClRo ZSBzZXR1cCBoYXMgYSBJUHY0IEdSRSB0dW5uZWwgcnVubmluZyBpbiBhIElQU2VjLiAgVGhlIGJ1 ZwpoYXBwZW5zIHdoZW4gbmRpc2Mgc3RhcnRzIHNlbmRpbmcgcm91dGVyIHNvbGljaXRhdGlvbiBh dCB0aGUgZ3JlCmludGVyZmFjZS4gIFRoZSBzaW1wbGlmaWVkIG9vcHMgc3RhY2sgaXMgbGlrZToK Cl9fbG9ja19hY3F1aXJlKzB4MWIyLzB4MWMzMApsb2NrX2FjcXVpcmUrMHhiOS8weDE0MApfcmF3 X3dyaXRlX2xvY2tfYmgrMHgzZi8weDUwCl9faXA2X2luc19ydCsweDJlLzB4NjAKaXA2X2luc19y dCsweDQ5LzB4NTAKfn5+fn5+fn4KX19pcDZfcnRfdXBkYXRlX3BtdHUucGFydC41NCsweDE0NS8w eDI1MAppcDZfcnRfdXBkYXRlX3BtdHUrMHgyZS8weDQwCn5+fn5+fn5+CmlwX3R1bm5lbF94bWl0 KzB4MWYxLzB4ZjQwCl9fZ3JlX3htaXQrMHg3YS8weDkwCmlwZ3JlX3htaXQrMHgxNWEvMHgyMjAK ZGV2X2hhcmRfc3RhcnRfeG1pdCsweDJiZC8weDQ4MApfX2Rldl9xdWV1ZV94bWl0KzB4Njk2LzB4 NzMwCmRldl9xdWV1ZV94bWl0KzB4MTAvMHgyMApuZWlnaF9kaXJlY3Rfb3V0cHV0KzB4MTEvMHgy MAppcDZfZmluaXNoX291dHB1dDIrMHgyMWYvMHg3NzAKaXA2X2ZpbmlzaF9vdXRwdXQrMHhhNy8w eDFkMAppcDZfb3V0cHV0KzB4NTYvMHgxOTAKfn5+fn5+fn4KbmRpc2Nfc2VuZF9za2IrMHgxZDkv MHg0MDAKbmRpc2Nfc2VuZF9ycysweDg4LzB4YzAKfn5+fn5+fn4KClRoZSBydCBwYXNzZWQgdG8g aXA2X3J0X3VwZGF0ZV9wbXR1KCkgaXMgY3JlYXRlZCBieQppY21wNl9kc3RfYWxsb2MoKSBhbmQg aXQgaXMgbm90IG1hbmFnZWQgYnkgdGhlIGZpYjYgdHJlZSwKc28gaXRzIHJ0NmlfdGFibGUgPT0g TlVMTC4gIFdoZW4gX19pcDZfcnRfdXBkYXRlX3BtdHUoKSBjcmVhdGVzCmEgUlRGX0NBQ0hFIGNs b25lLCB0aGUgbmV3bHkgY3JlYXRlZCBjbG9uZSBhbHNvIGhhcyBydDZpX3RhYmxlID09IE5VTEwK YW5kIGl0IGNhdXNlcyB0aGUgaXA2X2luc19ydCgpIG9vcHMuCgpEdXJpbmcgcG10dSB1cGRhdGUs IHdlIG9ubHkgd2FudCB0byBjcmVhdGUgYSBSVEZfQ0FDSEUgY2xvbmUKZnJvbSBhIHJ0IHdoaWNo IGlzIGN1cnJlbnRseSBtYW5hZ2VkIChvciBvd25lZCkgYnkgdGhlCmZpYjYgdHJlZS4gIEl0IG1l YW5zIGVpdGhlciBydC0+cnQ2aV9ub2RlICE9IE5VTEwgb3IKcnQgaXMgYSBSVEZfUENQVSBjbG9u ZS4KCkl0IGlzIHdvcnRoIHRvIG5vdGUgdGhhdCBydDZpX3RhYmxlIG1heSBub3QgYmUgTlVMTCBl dmVuIGl0IGlzCm5vdCAoeWV0KSBtYW5hZ2VkIGJ5IHRoZSBmaWI2IHRyZWUgKGUuZy4gYWRkcmNv bmZfZHN0X2FsbG9jKCkpLgpIZW5jZSwgcnQ2aV9ub2RlIGlzIGEgYmV0dGVyIGNoZWNrIGluc3Rl YWQgb2YgcnQ2aV90YWJsZS4KCkZpeGVzOiA0NWU0ZmQyNjY4M2MgKCJpcHY2OiBPbmx5IGNyZWF0 ZSBSVEZfQ0FDSEUgcm91dGVzIGFmdGVyIGVuY291bnRlcmluZyBwbXR1IikKU2lnbmVkLW9mZi1i eTogTWFydGluIEthRmFpIExhdSA8a2FmYWlAZmIuY29tPgpSZXBvcnRlZC1ieTogQ2hyaXMgU2ll YmVubWFubiA8Y2tzLXJoYnVnemlsbGFAY3MudG9yb250by5lZHU+CkNjOiBDaHJpcyBTaWViZW5t YW5uIDxja3MtcmhidWd6aWxsYUBjcy50b3JvbnRvLmVkdT4KQ2M6IEhhbm5lcyBGcmVkZXJpYyBT b3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4g TWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY2L3JvdXRlLmMgfCA4ICsr KysrKystCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmMKaW5kZXggZGQ2 ZWJiYS4uNTUzM2NiNCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcm91dGUuYworKysgYi9uZXQvaXB2 Ni9yb3V0ZS5jCkBAIC0xMzI2LDYgKzEzMjYsMTIgQEAgc3RhdGljIHZvaWQgcnQ2X2RvX3VwZGF0 ZV9wbXR1KHN0cnVjdCBydDZfaW5mbyAqcnQsIHUzMiBtdHUpCiAJcnQ2X3VwZGF0ZV9leHBpcmVz KHJ0LCBuZXQtPmlwdjYuc3lzY3RsLmlwNl9ydF9tdHVfZXhwaXJlcyk7CiB9CiAKK3N0YXRpYyBi b29sIHJ0Nl9jYWNoZV9hbGxvd2VkX2Zvcl9wbXR1KGNvbnN0IHN0cnVjdCBydDZfaW5mbyAqcnQp Cit7CisJcmV0dXJuICEocnQtPnJ0NmlfZmxhZ3MgJiBSVEZfQ0FDSEUpICYmCisJCShydC0+cnQ2 aV9mbGFncyAmIFJURl9QQ1BVIHx8IHJ0LT5ydDZpX25vZGUpOworfQorCiBzdGF0aWMgdm9pZCBf X2lwNl9ydF91cGRhdGVfcG10dShzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIGNvbnN0IHN0cnVjdCBz b2NrICpzaywKIAkJCQkgY29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwaCwgdTMyIG10dSkKIHsKQEAg LTEzMzksNyArMTM0NSw3IEBAIHN0YXRpYyB2b2lkIF9faXA2X3J0X3VwZGF0ZV9wbXR1KHN0cnVj dCBkc3RfZW50cnkgKmRzdCwgY29uc3Qgc3RydWN0IHNvY2sgKnNrLAogCWlmIChtdHUgPj0gZHN0 X210dShkc3QpKQogCQlyZXR1cm47CiAKLQlpZiAocnQ2LT5ydDZpX2ZsYWdzICYgUlRGX0NBQ0hF KSB7CisJaWYgKCFydDZfY2FjaGVfYWxsb3dlZF9mb3JfcG10dShydDYpKSB7CiAJCXJ0Nl9kb191 cGRhdGVfcG10dShydDYsIG10dSk7CiAJfSBlbHNlIHsKIAkJY29uc3Qgc3RydWN0IGluNl9hZGRy ICpkYWRkciwgKnNhZGRyOwotLSAKMi4xLjAKCgpGcm9tIGY5Y2JjOWNhNjUwN2RiZTBmNDcyY2Y0 ZmNiMGM0MDdiMDg4M2MyZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1hcnRpbiBL YUZhaSBMYXUgPGthZmFpQGZiLmNvbT4KRGF0ZTogV2VkLCAxMSBOb3YgMjAxNSAxMTo1MTowNyAt MDgwMApTdWJqZWN0OiBbUEFUQ0ggMDcvMzddIGlwdjY6IENoZWNrIGV4cGlyZSBvbiBEU1RfTk9D QUNIRSByb3V0ZQoKWyBVcHN0cmVhbSBjb21taXQgNTk3M2ZiMWUyNDUwODYwNzFiZjcxOTk0Yzhi NTRkOTk1MjZkZWQwMyBdCgpTaW5jZSB0aGUgZXhwaXJlcyBvZiB0aGUgRFNUX05PQ0FDSEUgcnQg Y2FuIGJlIHNldCBkdXJpbmcKdGhlIGlwNl9ydF91cGRhdGVfcG10dSgpLCB3ZSBhbHNvIG5lZWQg dG8gY29uc2lkZXIgdGhlIGV4cGlyZXMKdmFsdWUgd2hlbiBkb2luZyBpcDZfZHN0X2NoZWNrKCku CgpUaGlzIHBhdGNoZXMgY3JlYXRlcyBfX3J0Nl9jaGVja19leHBpcmVkKCkgdG8gb25seQpjaGVj ayB0aGUgZXhwaXJlIHZhbHVlIChpZiBvbmUgZXhpc3RzKSBvZiB0aGUgY3VycmVudCBydC4KCklu IHJ0Nl9kc3RfZnJvbV9jaGVjaygpLCBpdCBhZGRzIF9fcnQ2X2NoZWNrX2V4cGlyZWQoKSBhcwpv bmUgb2YgdGhlIGNvbmRpdGlvbiBjaGVjay4KClNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLYUZhaSBM YXUgPGthZmFpQGZiLmNvbT4KQ2M6IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNz aW5kdWt0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZl bWxvZnQubmV0PgotLS0KIG5ldC9pcHY2L3JvdXRlLmMgfCAxMSArKysrKysrKysrLQogMSBmaWxl IGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9u ZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuYwppbmRleCA1NTMzY2I0Li5mY2IyMzli IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9yb3V0ZS5jCisrKyBiL25ldC9pcHY2L3JvdXRlLmMKQEAg LTQwMSw2ICs0MDEsMTQgQEAgc3RhdGljIHZvaWQgaXA2X2RzdF9pZmRvd24oc3RydWN0IGRzdF9l bnRyeSAqZHN0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCX0KIH0KIAorc3RhdGljIGJvb2wg X19ydDZfY2hlY2tfZXhwaXJlZChjb25zdCBzdHJ1Y3QgcnQ2X2luZm8gKnJ0KQoreworCWlmIChy dC0+cnQ2aV9mbGFncyAmIFJURl9FWFBJUkVTKQorCQlyZXR1cm4gdGltZV9hZnRlcihqaWZmaWVz LCBydC0+ZHN0LmV4cGlyZXMpOworCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMg Ym9vbCBydDZfY2hlY2tfZXhwaXJlZChjb25zdCBzdHJ1Y3QgcnQ2X2luZm8gKnJ0KQogewogCWlm IChydC0+cnQ2aV9mbGFncyAmIFJURl9FWFBJUkVTKSB7CkBAIC0xMjU1LDcgKzEyNjMsOCBAQCBz dGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqcnQ2X2NoZWNrKHN0cnVjdCBydDZfaW5mbyAqcnQsIHUz MiBjb29raWUpCiAKIHN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICpydDZfZHN0X2Zyb21fY2hlY2so c3RydWN0IHJ0Nl9pbmZvICpydCwgdTMyIGNvb2tpZSkKIHsKLQlpZiAocnQtPmRzdC5vYnNvbGV0 ZSA9PSBEU1RfT0JTT0xFVEVfRk9SQ0VfQ0hLICYmCisJaWYgKCFfX3J0Nl9jaGVja19leHBpcmVk KHJ0KSAmJgorCSAgICBydC0+ZHN0Lm9ic29sZXRlID09IERTVF9PQlNPTEVURV9GT1JDRV9DSEsg JiYKIAkgICAgcnQ2X2NoZWNrKChzdHJ1Y3QgcnQ2X2luZm8gKikocnQtPmRzdC5mcm9tKSwgY29v a2llKSkKIAkJcmV0dXJuICZydC0+ZHN0OwogCWVsc2UKLS0gCjIuMS4wCgoKRnJvbSAzNDBkMDc4 N2IwOTcyZWY0MTQ3MTAxYmY1ZTU1YjgyM2Q4ZGY1NzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBNYXJ0aW4gS2FGYWkgTGF1IDxrYWZhaUBmYi5jb20+CkRhdGU6IFdlZCwgMTEgTm92 IDIwMTUgMTE6NTE6MDggLTA4MDAKU3ViamVjdDogW1BBVENIIDA4LzM3XSBpcHY2OiBDaGVjayBy dC0+ZHN0LmZyb20gZm9yIHRoZSBEU1RfTk9DQUNIRSByb3V0ZQoKWyBVcHN0cmVtIGNvbW1pdCAw MmJjZjRlMDgyZTRkYzYzNDQwOWE2YTZjYjdkZWY4ODA2ZDZlNWU2IF0KCkFsbCBEU1RfTk9DQUNI RSBydDZfaW5mbyB1c2VkIHRvIGhhdmUgcnQtPmRzdC5mcm9tIHNldCB0bwppdHMgcGFyZW50LgoK QWZ0ZXIgY29tbWl0IDhlM2Q1YmU3MzY4MSAoImlwdjY6IEF2b2lkIGRvdWJsZSBkc3RfZnJlZSIp LApEU1RfTk9DQUNIRSBpcyBhbHNvIHNldCB0byBydDZfaW5mbyB3aGljaCBkb2VzIG5vdCBoYXZl CmEgcGFyZW50IChpLmUuIHJ0LT5kc3QuZnJvbSBpcyBOVUxMKS4KClRoaXMgcGF0Y2ggY2F0Y2hl cyB0aGUgcnQtPmRzdC5mcm9tID09IE5VTEwgY2FzZS4KCkZpeGVzOiA4ZTNkNWJlNzM2ODEgKCJp cHY2OiBBdm9pZCBkb3VibGUgZHN0X2ZyZWUiKQpTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS2FGYWkg TGF1IDxrYWZhaUBmYi5jb20+CkNjOiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0cmVz c2luZHVrdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2 ZW1sb2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9pcDZfZmliLmggfCAzICsrLQogbmV0L2lwdjYv cm91dGUuYyAgICAgIHwgMyArKy0KIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwNl9maWIuaCBiL2luY2x1 ZGUvbmV0L2lwNl9maWIuaAppbmRleCAzYjc2ODQ5Li43NWE4ODhjIDEwMDY0NAotLS0gYS9pbmNs dWRlL25ldC9pcDZfZmliLmgKKysrIGIvaW5jbHVkZS9uZXQvaXA2X2ZpYi5oCkBAIC0xNjUsNyAr MTY1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHJ0Nl91cGRhdGVfZXhwaXJlcyhzdHJ1Y3QgcnQ2 X2luZm8gKnJ0MCwgaW50IHRpbWVvdXQpCiAKIHN0YXRpYyBpbmxpbmUgdTMyIHJ0Nl9nZXRfY29v a2llKGNvbnN0IHN0cnVjdCBydDZfaW5mbyAqcnQpCiB7Ci0JaWYgKHJ0LT5ydDZpX2ZsYWdzICYg UlRGX1BDUFUgfHwgdW5saWtlbHkocnQtPmRzdC5mbGFncyAmIERTVF9OT0NBQ0hFKSkKKwlpZiAo cnQtPnJ0NmlfZmxhZ3MgJiBSVEZfUENQVSB8fAorCSAgICAodW5saWtlbHkocnQtPmRzdC5mbGFn cyAmIERTVF9OT0NBQ0hFKSAmJiBydC0+ZHN0LmZyb20pKQogCQlydCA9IChzdHJ1Y3QgcnQ2X2lu Zm8gKikocnQtPmRzdC5mcm9tKTsKIAogCXJldHVybiBydC0+cnQ2aV9ub2RlID8gcnQtPnJ0Nmlf bm9kZS0+Zm5fc2VybnVtIDogMDsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQv aXB2Ni9yb3V0ZS5jCmluZGV4IGZjYjIzOWIuLjg0Nzg3MTkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2 L3JvdXRlLmMKKysrIGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtMTI4NCw3ICsxMjg0LDggQEAgc3Rh dGljIHN0cnVjdCBkc3RfZW50cnkgKmlwNl9kc3RfY2hlY2soc3RydWN0IGRzdF9lbnRyeSAqZHN0 LCB1MzIgY29va2llKQogCiAJcnQ2X2RzdF9mcm9tX21ldHJpY3NfY2hlY2socnQpOwogCi0JaWYg KChydC0+cnQ2aV9mbGFncyAmIFJURl9QQ1BVKSB8fCB1bmxpa2VseShkc3QtPmZsYWdzICYgRFNU X05PQ0FDSEUpKQorCWlmIChydC0+cnQ2aV9mbGFncyAmIFJURl9QQ1BVIHx8CisJICAgICh1bmxp a2VseShkc3QtPmZsYWdzICYgRFNUX05PQ0FDSEUpICYmIHJ0LT5kc3QuZnJvbSkpCiAJCXJldHVy biBydDZfZHN0X2Zyb21fY2hlY2socnQsIGNvb2tpZSk7CiAJZWxzZQogCQlyZXR1cm4gcnQ2X2No ZWNrKHJ0LCBjb29raWUpOwotLSAKMi4xLjAKCgpGcm9tIDQwYWNiZTNlODk1YzVkMGVjZTQyNGVh ZWIwMWEwMjEwNjhhMzZlMTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEthbWFsIE1v c3RhZmEgPGthbWFsQGNhbm9uaWNhbC5jb20+CkRhdGU6IFdlZCwgMTEgTm92IDIwMTUgMTQ6MjQ6 MjcgLTA4MDAKU3ViamVjdDogW1BBVENIIDA5LzM3XSB0b29scy9uZXQ6IFVzZSBpbmNsdWRlL3Vh cGkgd2l0aCBfX0VYUE9SVEVEX0hFQURFUlNfXwoKWyBVcHN0cmVhbSBjb21taXQgZDc0NzVkZTU4 NTc1YzkwNDgxOGVmYTM2OWM4MmU4OGM2NjQ4Y2UyZSBdCgpVc2UgdGhlIGxvY2FsIHVhcGkgaGVh ZGVycyB0byBrZWVwIGluIHN5bmMgd2l0aCAicmVjZW50bHkiIGFkZGVkICNkZWZpbmUncwooZS5n LiBTS0ZfQURfVkxBTl9UUElEKS4gIFJlZmFjdG9yZWQgQ0ZMQUdTLCBhbmQgYnBmX2FzbSBkb2Vz bid0IG5lZWQgLUkuCgpGaXhlczogM2YzNTYzODVlOGE0ICgiZmlsdGVyOiBicGZfYXNtOiBhZGQg bWluaW1hbCBicGYgYXNtIHRvb2wiKQpTaWduZWQtb2ZmLWJ5OiBLYW1hbCBNb3N0YWZhIDxrYW1h bEBjYW5vbmljYWwuY29tPgpBY2tlZC1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFy Ym94Lm5ldD4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIHRvb2xzL25ldC9NYWtlZmlsZSB8IDcgKysrKy0tLQogMSBmaWxlIGNoYW5nZWQs IDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9uZXQv TWFrZWZpbGUgYi90b29scy9uZXQvTWFrZWZpbGUKaW5kZXggZWU1NzdlYS4uZGRmODg4MCAxMDA2 NDQKLS0tIGEvdG9vbHMvbmV0L01ha2VmaWxlCisrKyBiL3Rvb2xzL25ldC9NYWtlZmlsZQpAQCAt NCw2ICs0LDkgQEAgQ0MgPSBnY2MKIExFWCA9IGZsZXgKIFlBQ0MgPSBiaXNvbgogCitDRkxBR1Mg Kz0gLVdhbGwgLU8yCitDRkxBR1MgKz0gLURfX0VYUE9SVEVEX0hFQURFUlNfXyAtSS4uLy4uL2lu Y2x1ZGUvdWFwaSAtSS4uLy4uL2luY2x1ZGUKKwogJS55YWNjLmM6ICUueQogCSQoWUFDQykgLW8g JEAgLWQgJDwKIApAQCAtMTIsMTUgKzE1LDEzIEBAIFlBQ0MgPSBiaXNvbgogCiBhbGwgOiBicGZf aml0X2Rpc2FzbSBicGZfZGJnIGJwZl9hc20KIAotYnBmX2ppdF9kaXNhc20gOiBDRkxBR1MgPSAt V2FsbCAtTzIgLURQQUNLQUdFPSdicGZfaml0X2Rpc2FzbScKK2JwZl9qaXRfZGlzYXNtIDogQ0ZM QUdTICs9IC1EUEFDS0FHRT0nYnBmX2ppdF9kaXNhc20nCiBicGZfaml0X2Rpc2FzbSA6IExETElC UyA9IC1sb3Bjb2RlcyAtbGJmZCAtbGRsCiBicGZfaml0X2Rpc2FzbSA6IGJwZl9qaXRfZGlzYXNt Lm8KIAotYnBmX2RiZyA6IENGTEFHUyA9IC1XYWxsIC1PMgogYnBmX2RiZyA6IExETElCUyA9IC1s cmVhZGxpbmUKIGJwZl9kYmcgOiBicGZfZGJnLm8KIAotYnBmX2FzbSA6IENGTEFHUyA9IC1XYWxs IC1PMiAtSS4KIGJwZl9hc20gOiBMRExJQlMgPQogYnBmX2FzbSA6IGJwZl9hc20ubyBicGZfZXhw LnlhY2MubyBicGZfZXhwLmxleC5vCiBicGZfZXhwLmxleC5vIDogYnBmX2V4cC55YWNjLmMKLS0g CjIuMS4wCgoKRnJvbSBhMDM0Zjc5ZDJhY2VmMGEzNTQyYzI4MWM3MDRiNmVlMTcyMzgwYmM2IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dl YXJib3gubmV0PgpEYXRlOiBXZWQsIDExIE5vdiAyMDE1IDIzOjI1OjQwICswMTAwClN1YmplY3Q6 IFtQQVRDSCAxMC8zN10gcGFja2V0OiBkbyBza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlciB3aGVu IHdlIGFjdHVhbGx5CiBoYXZlIGRhdGEKClsgVXBzdHJlYW0gY29tbWl0IGVmZGZhMmY3ODQ4ZjY0 NTE3MDA4MTM2ZmI0MWY1M2M0YTFmYWY5M2EgXQoKSW4gdHBhY2tldF9maWxsX3NrYigpIGNvbW1p dCBjMWFhZDI3NWIwMjkgKCJwYWNrZXQ6IHNldCB0cmFuc3BvcnQKaGVhZGVyIGJlZm9yZSBkb2lu ZyB4bWl0IikgYW5kIGxhdGVyIG9uIDQwODkzZmQwZmQ0ZSAoIm5ldDogc3dpdGNoCnRvIHVzZSBz a2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlcigpIikgd2FzIHByb2JpbmcgZm9yIGEgdHJhbnNwb3J0 CmhlYWRlciBvbiB0aGUgc2tiIGZyb20gYSByaW5nIGJ1ZmZlciBzbG90LCBidXQgYXQgYSB0aW1l LCB3aGVyZQp0aGUgc2tiIGhhcyBfbm90IGV2ZW5fIGJlZW4gZmlsbGVkIHdpdGggZGF0YSB5ZXQu IFNvIHRoYXQgY2FsbCBpbnRvCnRoZSBmbG93IGRpc3NlY3RvciBpcyBwcmV0dHkgdXNlbGVzcy4g TGV0cyBkbyBpdCBhZnRlciB3ZSd2ZSBzZXQKdXAgdGhlIHNrYiBmcmFncy4KCkZpeGVzOiBjMWFh ZDI3NWIwMjkgKCJwYWNrZXQ6IHNldCB0cmFuc3BvcnQgaGVhZGVyIGJlZm9yZSBkb2luZyB4bWl0 IikKUmVwb3J0ZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVk LW9mZi1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KQWNrZWQtYnk6 IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMu IE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvcGFja2V0L2FmX3BhY2tldC5j IHwgNSArKystLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jIGIvbmV0L3BhY2tldC9hZl9w YWNrZXQuYwppbmRleCA3MWNiMDg1Li5mZjQ1ODZmIDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2Fm X3BhY2tldC5jCisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTIyNDksOCArMjI0OSw2 IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXNrYl9yZXNlcnZlKHNrYiwgaGxlbik7CiAJc2tiX3Jlc2V0 X25ldHdvcmtfaGVhZGVyKHNrYik7CiAKLQlpZiAoIXBhY2tldF91c2VfZGlyZWN0X3htaXQocG8p KQotCQlza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlcihza2IsIDApOwogCWlmICh1bmxpa2VseShw by0+dHBfdHhfaGFzX29mZikpIHsKIAkJaW50IG9mZl9taW4sIG9mZl9tYXgsIG9mZjsKIAkJb2Zm X21pbiA9IHBvLT50cF9oZHJsZW4gLSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKTsKQEAgLTIz MzAsNiArMjMyOCw5IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0 X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlsZW4gPSAoKHRvX3dyaXRlID4gbGVu X21heCkgPyBsZW5fbWF4IDogdG9fd3JpdGUpOwogCX0KIAorCWlmICghcGFja2V0X3VzZV9kaXJl Y3RfeG1pdChwbykpCisJCXNrYl9wcm9iZV90cmFuc3BvcnRfaGVhZGVyKHNrYiwgMCk7CisKIAly ZXR1cm4gdHBfbGVuOwogfQogCi0tIAoyLjEuMAoKCkZyb20gMWNhZTE4YjNmMjVjNjMyOThlNDgw N2U1YzYzNmJiNDVlOWE1M2RhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGFuaWVs IEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KRGF0ZTogV2VkLCAxMSBOb3YgMjAxNSAy MzoyNTo0MSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTEvMzddIHBhY2tldDogYWx3YXlzIHByb2Jl IGZvciB0cmFuc3BvcnQgaGVhZGVyCgpbIFVwc3RyZWFtIGNvbW1pdCA4ZmQ2YzgwZDlkZDkzOGNh MzM4YzcwNjk4NTMzYTdlMzA0NzUyODQ2IF0KCldlIGNvbmNsdWRlZCB0aGF0IHRoZSBza2JfcHJv YmVfdHJhbnNwb3J0X2hlYWRlcigpIHNob3VsZCBiZXR0ZXIgYmUKY2FsbGVkIHVuY29uZGl0aW9u YWxseS4gQXZvaWRpbmcgdGhlIGNhbGwgaW50byB0aGUgZmxvdyBkaXNzZWN0b3IgaGFzCmFsc28g bm90IHJlYWxseSBtdWNoIHRvIGRvIHdpdGggdGhlIGRpcmVjdCB4bWl0IG1vZGUuCgpXaGlsZSBp dCBzZWVtcyB0aGF0IG9ubHkgdmlydGlvX25ldCBjb2RlIG1ha2VzIHVzZSBvZiBHU08gZnJvbSBu b24KUlgvVFggcmluZyBwYWNrZXQgc29ja2V0IHBhdGhzLCB3ZSBzaG91bGQgcHJvYmUgZm9yIGEg dHJhbnNwb3J0IGhlYWRlcgpuZXZlcnRoZWxlc3MgYmVmb3JlIHRoZXkgaGl0IGRldmljZXMuCgpS ZWZlcmVuY2U6IGh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmxpbnV4Lm5ldHdvcmsvMzg2 MTczLwpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0 PgpBY2tlZC1ieTogSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9wYWNrZXQv YWZfcGFja2V0LmMgfCA3ICsrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25l dC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXggZmY0NTg2Zi4uNWIxZWFkYiAxMDA2NDQKLS0tIGEv bmV0L3BhY2tldC9hZl9wYWNrZXQuYworKysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCkBAIC0y MzI4LDggKzIzMjgsNyBAQCBzdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tl dF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGVuID0gKCh0b193cml0ZSA+IGxl bl9tYXgpID8gbGVuX21heCA6IHRvX3dyaXRlKTsKIAl9CiAKLQlpZiAoIXBhY2tldF91c2VfZGly ZWN0X3htaXQocG8pKQotCQlza2JfcHJvYmVfdHJhbnNwb3J0X2hlYWRlcihza2IsIDApOworCXNr Yl9wcm9iZV90cmFuc3BvcnRfaGVhZGVyKHNrYiwgMCk7CiAKIAlyZXR1cm4gdHBfbGVuOwogfQpA QCAtMjY4MSw4ICsyNjgwLDggQEAgc3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQg KnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAkJbGVuICs9IHZuZXRfaGRy X2xlbjsKIAl9CiAKLQlpZiAoIXBhY2tldF91c2VfZGlyZWN0X3htaXQocG8pKQotCQlza2JfcHJv YmVfdHJhbnNwb3J0X2hlYWRlcihza2IsIHJlc2VydmUpOworCXNrYl9wcm9iZV90cmFuc3BvcnRf aGVhZGVyKHNrYiwgcmVzZXJ2ZSk7CisKIAlpZiAodW5saWtlbHkoZXh0cmFfbGVuID09IDQpKQog CQlza2ItPm5vX2ZjcyA9IDE7CiAKLS0gCjIuMS4wCgoKRnJvbSBhOThlYjJmZjM5MzczYmU0NWNj NWUwN2VmZTg5MTdmZDY2NGY0MDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5p ZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpEYXRlOiBXZWQsIDExIE5vdiAyMDE1 IDIzOjI1OjQyICswMTAwClN1YmplY3Q6IFtQQVRDSCAxMi8zN10gcGFja2V0OiBvbmx5IGFsbG93 IGV4dHJhIHZsYW4gbGVuIG9uIGV0aGVybmV0IGRldmljZXMKClsgVXBzdHJlYW0gY29tbWl0IDNj NzBjMTMyNDg4Nzk0ZTI0ODlhYjA0NTU1OWIwY2UwYWZjZjE3ZGUgXQoKUGFja2V0IHNvY2tldHMg Y2FuIGJlIHVzZWQgYnkgdmFyaW91cyBuZXQgZGV2aWNlcyBhbmQgYXJlIG5vdApyZWFsbHkgcmVz dHJpY3RlZCB0byBBUlBIUkRfRVRIRVIgZGV2aWNlIHR5cGVzLiBIb3dldmVyLCB3aGVuCmN1cnJl bnRseSBjaGVja2luZyBmb3IgdGhlIGV4dHJhIDQgYnl0ZXMgdGhhdCBjYW4gYmUgdHJhbnNtaXR0 ZWQKaW4gVkxBTiBjYXNlLCBvdXIgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGdlbmVyYWxseSBwcm9i ZSBvbgpBUlBIUkRfRVRIRVIgZGV2aWNlcy4gVGhlcmVmb3JlLCBiZWZvcmUgbG9va2luZyBpbnRv IEV0aGVybmV0CmhlYWRlciwgY2hlY2sgdGhlIGRldmljZSB0eXBlIGZpcnN0LgoKVGhpcyBhbHNv IGZpeGVzIHRoZSBpc3N1ZSB3aGVyZSBub24tQVJQSFJEX0VUSEVSIGRldmljZXMgY291bGQKaGF2 ZSBubyBkZXYtPmhhcmRfaGVhZGVyX2xlbiBpbiBUWF9SSU5HIFNPQ0tfUkFXIGNhc2UsIGFuZCB0 aHVzCnRoZSBjaGVjayB3b3VsZCB0ZXN0IHVuZmlsbGVkIGxpbmVhciBwYXJ0IG9mIHRoZSBza2Ig KGluc3RlYWQKb2Ygbm9uLWxpbmVhcikuCgpGaXhlczogNTdmODliZmEyMTQwICgibmV0d29yazog QWxsb3cgYWZfcGFja2V0IHRvIHRyYW5zbWl0ICs0IGJ5dGVzIGZvciBWTEFOIHBhY2tldHMuIikK Rml4ZXM6IDUyZjE0NTRmNjI5ZiAoInBhY2tldDogYWxsb3cgdG8gdHJhbnNtaXQgKzQgYnl0ZSBp biBUWF9SSU5HIHNsb3QgZm9yIFZMQU4gY2FzZSIpClNpZ25lZC1vZmYtYnk6IERhbmllbCBCb3Jr bWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkFja2VkLWJ5OiBXaWxsZW0gZGUgQnJ1aWpuIDx3 aWxsZW1iQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1A ZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvcGFja2V0L2FmX3BhY2tldC5jIHwgNjAgKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyNSBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvcGFj a2V0L2FmX3BhY2tldC5jIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCA1YjFlYWRiLi40 NzEwZjIyIDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCisrKyBiL25ldC9wYWNr ZXQvYWZfcGFja2V0LmMKQEAgLTE2MjIsNiArMTYyMiwyMCBAQCBzdGF0aWMgdm9pZCBmYW5vdXRf cmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spCiAJCWtmcmVlX3JjdShwby0+cm9sbG92ZXIsIHJjdSk7 CiB9CiAKK3N0YXRpYyBib29sIHBhY2tldF9leHRyYV92bGFuX2xlbl9hbGxvd2VkKGNvbnN0IHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsCisJCQkJCSAgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwkv KiBFYXJsaWVyIGNvZGUgYXNzdW1lZCB0aGlzIHdvdWxkIGJlIGEgVkxBTiBwa3QsIGRvdWJsZS1j aGVjaworCSAqIHRoaXMgbm93IHRoYXQgd2UgaGF2ZSB0aGUgYWN0dWFsIHBhY2tldCBpbiBoYW5k LiBXZSBjYW4gb25seQorCSAqIGRvIHRoaXMgY2hlY2sgb24gRXRoZXJuZXQgZGV2aWNlcy4KKwkg Ki8KKwlpZiAodW5saWtlbHkoZGV2LT50eXBlICE9IEFSUEhSRF9FVEhFUikpCisJCXJldHVybiBm YWxzZTsKKworCXNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7CisJcmV0dXJuIGxpa2VseShldGhf aGRyKHNrYiktPmhfcHJvdG8gPT0gaHRvbnMoRVRIX1BfODAyMVEpKTsKK30KKwogc3RhdGljIGNv bnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wczsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBw cm90b19vcHMgcGFja2V0X29wc19zcGt0OwpAQCAtMTc4MywxOCArMTc5NywxMCBAQCByZXRyeToK IAkJZ290byByZXRyeTsKIAl9CiAKLQlpZiAobGVuID4gKGRldi0+bXR1ICsgZGV2LT5oYXJkX2hl YWRlcl9sZW4gKyBleHRyYV9sZW4pKSB7Ci0JCS8qIEVhcmxpZXIgY29kZSBhc3N1bWVkIHRoaXMg d291bGQgYmUgYSBWTEFOIHBrdCwKLQkJICogZG91YmxlLWNoZWNrIHRoaXMgbm93IHRoYXQgd2Ug aGF2ZSB0aGUgYWN0dWFsCi0JCSAqIHBhY2tldCBpbiBoYW5kLgotCQkgKi8KLQkJc3RydWN0IGV0 aGhkciAqZWhkcjsKLQkJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKLQkJZWhkciA9IGV0aF9o ZHIoc2tiKTsKLQkJaWYgKGVoZHItPmhfcHJvdG8gIT0gaHRvbnMoRVRIX1BfODAyMVEpKSB7Ci0J CQllcnIgPSAtRU1TR1NJWkU7Ci0JCQlnb3RvIG91dF91bmxvY2s7Ci0JCX0KKwlpZiAobGVuID4g KGRldi0+bXR1ICsgZGV2LT5oYXJkX2hlYWRlcl9sZW4gKyBleHRyYV9sZW4pICYmCisJICAgICFw YWNrZXRfZXh0cmFfdmxhbl9sZW5fYWxsb3dlZChkZXYsIHNrYikpIHsKKwkJZXJyID0gLUVNU0dT SVpFOworCQlnb3RvIG91dF91bmxvY2s7CiAJfQogCiAJc2tiLT5wcm90b2NvbCA9IHByb3RvOwpA QCAtMjQwNiwxOCArMjQxMiwxMCBAQCBzdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNr ZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZykKIAkJdHBfbGVuID0gdHBhY2tldF9maWxs X3NrYihwbywgc2tiLCBwaCwgZGV2LCBzaXplX21heCwgcHJvdG8sCiAJCQkJCSAgYWRkciwgaGxl bik7CiAJCWlmIChsaWtlbHkodHBfbGVuID49IDApICYmCi0JCSAgICB0cF9sZW4gPiBkZXYtPm10 dSArIGRldi0+aGFyZF9oZWFkZXJfbGVuKSB7Ci0JCQlzdHJ1Y3QgZXRoaGRyICplaGRyOwotCQkJ LyogRWFybGllciBjb2RlIGFzc3VtZWQgdGhpcyB3b3VsZCBiZSBhIFZMQU4gcGt0LAotCQkJICog ZG91YmxlLWNoZWNrIHRoaXMgbm93IHRoYXQgd2UgaGF2ZSB0aGUgYWN0dWFsCi0JCQkgKiBwYWNr ZXQgaW4gaGFuZC4KLQkJCSAqLworCQkgICAgdHBfbGVuID4gZGV2LT5tdHUgKyBkZXYtPmhhcmRf aGVhZGVyX2xlbiAmJgorCQkgICAgIXBhY2tldF9leHRyYV92bGFuX2xlbl9hbGxvd2VkKGRldiwg c2tiKSkKKwkJCXRwX2xlbiA9IC1FTVNHU0laRTsKIAotCQkJc2tiX3Jlc2V0X21hY19oZWFkZXIo c2tiKTsKLQkJCWVoZHIgPSBldGhfaGRyKHNrYik7Ci0JCQlpZiAoZWhkci0+aF9wcm90byAhPSBo dG9ucyhFVEhfUF84MDIxUSkpCi0JCQkJdHBfbGVuID0gLUVNU0dTSVpFOwotCQl9CiAJCWlmICh1 bmxpa2VseSh0cF9sZW4gPCAwKSkgewogCQkJaWYgKHBvLT50cF9sb3NzKSB7CiAJCQkJX19wYWNr ZXRfc2V0X3N0YXR1cyhwbywgcGgsCkBAIC0yNjM4LDE4ICsyNjM2LDEwIEBAIHN0YXRpYyBpbnQg cGFja2V0X3NuZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVf dCBsZW4pCiAKIAlzb2NrX3R4X3RpbWVzdGFtcChzaywgJnNrYl9zaGluZm8oc2tiKS0+dHhfZmxh Z3MpOwogCi0JaWYgKCFnc29fdHlwZSAmJiAobGVuID4gZGV2LT5tdHUgKyByZXNlcnZlICsgZXh0 cmFfbGVuKSkgewotCQkvKiBFYXJsaWVyIGNvZGUgYXNzdW1lZCB0aGlzIHdvdWxkIGJlIGEgVkxB TiBwa3QsCi0JCSAqIGRvdWJsZS1jaGVjayB0aGlzIG5vdyB0aGF0IHdlIGhhdmUgdGhlIGFjdHVh bAotCQkgKiBwYWNrZXQgaW4gaGFuZC4KLQkJICovCi0JCXN0cnVjdCBldGhoZHIgKmVoZHI7Ci0J CXNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7Ci0JCWVoZHIgPSBldGhfaGRyKHNrYik7Ci0JCWlm IChlaGRyLT5oX3Byb3RvICE9IGh0b25zKEVUSF9QXzgwMjFRKSkgewotCQkJZXJyID0gLUVNU0dT SVpFOwotCQkJZ290byBvdXRfZnJlZTsKLQkJfQorCWlmICghZ3NvX3R5cGUgJiYgKGxlbiA+IGRl di0+bXR1ICsgcmVzZXJ2ZSArIGV4dHJhX2xlbikgJiYKKwkgICAgIXBhY2tldF9leHRyYV92bGFu X2xlbl9hbGxvd2VkKGRldiwgc2tiKSkgeworCQllcnIgPSAtRU1TR1NJWkU7CisJCWdvdG8gb3V0 X2ZyZWU7CiAJfQogCiAJc2tiLT5wcm90b2NvbCA9IHByb3RvOwotLSAKMi4xLjAKCgpGcm9tIDk3 YzJmZDg3NWY3NGZhYTliNzliNzEyOTA4OTkyNzQ2ZDI1N2M5N2IgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkRhdGU6 IFdlZCwgMTEgTm92IDIwMTUgMjM6MjU6NDMgKzAxMDAKU3ViamVjdDogW1BBVENIIDEzLzM3XSBw YWNrZXQ6IGluZmVyIHByb3RvY29sIGZyb20gZXRoZXJuZXQgaGVhZGVyIGlmIHVuc2V0CgpbIFVw c3RyZWFtIGNvbW1pdCBjNzIyMTliNzVmZGU3NjhlZmNjZjc2NjYzNDIyODJmYWI3ZjllNGU3IF0K CkluIGNhc2Ugbm8gc3RydWN0IHNvY2thZGRyX2xsIGhhcyBiZWVuIHBhc3NlZCB0byBwYWNrZXQK c29ja2V0J3Mgc2VuZG1zZygpIHdoZW4gZG9pbmcgYSBUWF9SSU5HIGZsdXNoIHJ1biwgdGhlbgpz a2ItPnByb3RvY29sIGlzIHNldCB0byBwby0+bnVtIGluc3RlYWQsIHdoaWNoIGlzIHRoZSBwcm90 b2NvbApwYXNzZWQgdmlhIHNvY2tldCgyKS9iaW5kKDIpLgoKQXBwbGljYXRpb25zIG9ubHkgeG1p dHRpbmcgY2FuIGdvIHRoZSBwYXRoIG9mIGFsbG9jYXRpbmcgdGhlCnNvY2tldCBhcyBzb2NrZXQo UEZfUEFDS0VULCA8bW9kZT4sIDApIGFuZCBkbyBhIGJpbmQoMikgb24gdGhlClRYX1JJTkcgd2l0 aCBzbGxfcHJvdG9jb2wgb2YgMC4gVGhhdCB3YXksIHJlZ2lzdGVyX3Byb3RfaG9vaygpCmlzIG5l aXRoZXIgY2FsbGVkIG9uIGNyZWF0aW9uIG5vciBvbiBiaW5kIHRpbWUsIHdoaWNoIHNhdmVzCmN5 Y2xlcyB3aGVuIHRoZXJlJ3Mgbm8gaW50ZXJlc3QgaW4gY2FwdHVyaW5nIGFueXdheS4KClRoYXQg bGVhdmVzIHVzIGhvd2V2ZXIgd2l0aCBwby0+bnVtIDAgaW5zdGVhZCBhbmQgdGhlcmVmb3JlCnRo ZSBUWF9SSU5HIGZsdXNoIHJ1biBzZXRzIHNrYi0+cHJvdG9jb2wgdG8gMCBhcyB3ZWxsLiBFcmlj CnJlcG9ydGVkIHRoYXQgdGhpcyBsZWFkcyB0byBwcm9ibGVtcyB3aGVuIHVzaW5nIHRvb2xzIGxp a2UKdHJhZmdlbiBvdmVyIGJvbmRpbmcgZGV2aWNlLiBJLmUuIHRoZSBib25kaW5nJ3MgaGFzaCBm dW5jdGlvbgpjb3VsZCBpbnZva2UgdGhlIGtlcm5lbCdzIGZsb3cgZGlzc2VjdG9yLCB3aGljaCBk ZXBlbmRzIG9uCnNrYi0+cHJvdG9jb2wgYmVpbmcgcHJvcGVybHkgc2V0LiBJbiB0aGUgY3VycmVu dCBzaXR1YXRpb24sIGFsbAp0aGUgdHJhZmZpYyBpcyB0aGVuIGRpcmVjdGVkIHRvIGEgc2luZ2xl IHNsYXZlLgoKRml4IGl0IHVwIGJ5IGluZmVycmluZyBza2ItPnByb3RvY29sIGZyb20gdGhlIEV0 aGVybmV0IGhlYWRlcgp3aGVuIG5vdCBzZXQgYW5kIHdlIGhhdmUgQVJQSFJEX0VUSEVSIGRldmlj ZSB0eXBlLiBUaGlzIGlzIG9ubHkKZG9uZSBpbiBjYXNlIG9mIFNPQ0tfUkFXIGFuZCB3aGVyZSB3 ZSBoYXZlIGEgZGV2LT5oYXJkX2hlYWRlcl9sZW4KbGVuZ3RoLiBJbiBjYXNlIG9mIEFSUEhSRF9F VEhFUiBkZXZpY2VzLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8KY292ZXIgRVRIX0hMRU4sIGFuZCB0 aGVyZWZvcmUgYmVpbmcgYWNjZXNzZWQgb24gdGhlIHNrYiBhZnRlcgp0aGUgc2tiX3N0b3JlX2Jp dHMoKS4KClJlcG9ydGVkLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNp Z25lZC1vZmYtYnk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkFja2Vk LWJ5OiBXaWxsZW0gZGUgQnJ1aWpuIDx3aWxsZW1iQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvcGFja2V0L2Fm X3BhY2tldC5jIHwgMTEgKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25z KCspCgpkaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZf cGFja2V0LmMKaW5kZXggNDcxMGYyMi4uZWNhZDg5OSAxMDA2NDQKLS0tIGEvbmV0L3BhY2tldC9h Zl9wYWNrZXQuYworKysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCkBAIC0yMjE5LDYgKzIyMTks MTUgQEAgc3RhdGljIGJvb2wgbGxfaGVhZGVyX3RydW5jYXRlZChjb25zdCBzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2LCBpbnQgbGVuKQogCXJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIHZvaWQgdHBh Y2tldF9zZXRfcHJvdG9jb2woY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJCQkgc3Ry dWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlpZiAoZGV2LT50eXBlID09IEFSUEhSRF9FVEhFUikgewor CQlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOworCQlza2ItPnByb3RvY29sID0gZXRoX2hkcihz a2IpLT5oX3Byb3RvOworCX0KK30KKwogc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVj dCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsCiAJCXZvaWQgKmZyYW1lLCBz dHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc2l6ZV9tYXgsCiAJCV9fYmUxNiBwcm90bywgdW5z aWduZWQgY2hhciAqYWRkciwgaW50IGhsZW4pCkBAIC0yMzAwLDYgKzIzMDksOCBAQCBzdGF0aWMg aW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1 ZmYgKnNrYiwKIAkJCQlkZXYtPmhhcmRfaGVhZGVyX2xlbik7CiAJCWlmICh1bmxpa2VseShlcnIp KQogCQkJcmV0dXJuIGVycjsKKwkJaWYgKCFza2ItPnByb3RvY29sKQorCQkJdHBhY2tldF9zZXRf cHJvdG9jb2woZGV2LCBza2IpOwogCiAJCWRhdGEgKz0gZGV2LT5oYXJkX2hlYWRlcl9sZW47CiAJ CXRvX3dyaXRlIC09IGRldi0+aGFyZF9oZWFkZXJfbGVuOwotLSAKMi4xLjAKCgpGcm9tIDg5ZTdh OTNlNTc0N2FiYjg0NWFkMDU4Y2RmN2QxYmIzNzRkNjU2YjEgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkRhdGU6IFdl ZCwgMTEgTm92IDIwMTUgMjM6MjU6NDQgKzAxMDAKU3ViamVjdDogW1BBVENIIDE0LzM3XSBwYWNr ZXQ6IGZpeCB0cGFja2V0X3NuZCBtYXggZnJhbWUgbGVuCgpbIFVwc3RyZWFtIGNvbW1pdCA1Y2Zi NGM4ZDA1YjQ0MDljNDA0NGNiOWMwNWIxOTcwNWMxZDk4MThiIF0KClNpbmNlIGl0J3MgaW50cm9k dWN0aW9uIGluIGNvbW1pdCA2OWUzYzc1ZjRkNTQgKCJuZXQ6IFRYX1JJTkcgYW5kCnBhY2tldCBt bWFwIiksIFRYX1JJTkcgY291bGQgYmUgdXNlZCBmcm9tIFNPQ0tfREdSQU0gYW5kIFNPQ0tfUkFX CnNpZGUuIFdoZW4gdXNlZCB3aXRoIFNPQ0tfREdSQU0gb25seSwgdGhlIHNpemVfbWF4ID4gZGV2 LT5tdHUgKwpyZXNlcnZlIGNoZWNrIHNob3VsZCBoYXZlIHJlc2VydmUgYXMgMCwgYnV0IGN1cnJl bnRseSwgdGhpcyBpcwp1bmNvbmRpdGlvbmFsbHkgc2V0IChpbiBpdCdzIG9yaWdpbmFsIGZvcm0g YXMgZGV2LT5oYXJkX2hlYWRlcl9sZW4pLgoKSSB0aGluayB0aGlzIGlzIG5vdCBjb3JyZWN0IHNp bmNlIHRwYWNrZXRfZmlsbF9za2IoKSB3b3VsZCB0aGVuCnRha2UgZGV2LT5tdHUgYW5kIGRldi0+ aGFyZF9oZWFkZXJfbGVuIGludG8gYWNjb3VudCBmb3IgU09DS19ER1JBTSwKdGhlIGV4dHJhIFZM QU5fSExFTiBjb3VsZCBiZSBwb3NzaWJsZSBpbiBib3RoIGNhc2VzLiBQcmVzdW1hYmx5LCB0aGUK cmVzZXJ2ZSBjb2RlIHdhcyBjb3BpZWQgZnJvbSBwYWNrZXRfc25kKCksIGJ1dCBsYXRlciBvbiBt aXNzZWQgdGhlCmNoZWNrLiBNYWtlIGl0IHNpbWlsYXIgYXMgd2UgaGF2ZSBpdCBpbiBwYWNrZXRf c25kKCkuCgpGaXhlczogNjllM2M3NWY0ZDU0ICgibmV0OiBUWF9SSU5HIGFuZCBwYWNrZXQgbW1h cCIpClNpZ25lZC1vZmYtYnk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+ CkFja2VkLWJ5OiBXaWxsZW0gZGUgQnJ1aWpuIDx3aWxsZW1iQGdvb2dsZS5jb20+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvcGFj a2V0L2FmX3BhY2tldC5jIHwgOSArKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQu YyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXggZWNhZDg5OS4uNzFkNjcxYyAxMDA2NDQK LS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYworKysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5j CkBAIC0yMzkxLDEyICsyMzkxLDEzIEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBh Y2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKQogCWlmICh1bmxpa2VseSghKGRldi0+ ZmxhZ3MgJiBJRkZfVVApKSkKIAkJZ290byBvdXRfcHV0OwogCi0JcmVzZXJ2ZSA9IGRldi0+aGFy ZF9oZWFkZXJfbGVuICsgVkxBTl9ITEVOOworCWlmIChwby0+c2suc2tfc29ja2V0LT50eXBlID09 IFNPQ0tfUkFXKQorCQlyZXNlcnZlID0gZGV2LT5oYXJkX2hlYWRlcl9sZW47CiAJc2l6ZV9tYXgg PSBwby0+dHhfcmluZy5mcmFtZV9zaXplCiAJCS0gKHBvLT50cF9oZHJsZW4gLSBzaXplb2Yoc3Ry dWN0IHNvY2thZGRyX2xsKSk7CiAKLQlpZiAoc2l6ZV9tYXggPiBkZXYtPm10dSArIHJlc2VydmUp Ci0JCXNpemVfbWF4ID0gZGV2LT5tdHUgKyByZXNlcnZlOworCWlmIChzaXplX21heCA+IGRldi0+ bXR1ICsgcmVzZXJ2ZSArIFZMQU5fSExFTikKKwkJc2l6ZV9tYXggPSBkZXYtPm10dSArIHJlc2Vy dmUgKyBWTEFOX0hMRU47CiAKIAlkbyB7CiAJCXBoID0gcGFja2V0X2N1cnJlbnRfZnJhbWUocG8s ICZwby0+dHhfcmluZywKQEAgLTI0MjMsNyArMjQyNCw3IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9z bmQoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKQogCQl0cF9sZW4g PSB0cGFja2V0X2ZpbGxfc2tiKHBvLCBza2IsIHBoLCBkZXYsIHNpemVfbWF4LCBwcm90bywKIAkJ CQkJICBhZGRyLCBobGVuKTsKIAkJaWYgKGxpa2VseSh0cF9sZW4gPj0gMCkgJiYKLQkJICAgIHRw X2xlbiA+IGRldi0+bXR1ICsgZGV2LT5oYXJkX2hlYWRlcl9sZW4gJiYKKwkJICAgIHRwX2xlbiA+ IGRldi0+bXR1ICsgcmVzZXJ2ZSAmJgogCQkgICAgIXBhY2tldF9leHRyYV92bGFuX2xlbl9hbGxv d2VkKGRldiwgc2tiKSkKIAkJCXRwX2xlbiA9IC1FTVNHU0laRTsKIAotLSAKMi4xLjAKCgpGcm9t IDE0N2JhN2IyMDEzMTA0MGFhOGY4MjU2NjY3YTZhNzE5ODE4MDU4ZmQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IGx1Y2llbiA8bHVjaWVuLnhpbkBnbWFpbC5jb20+CkRhdGU6IFRodSwg MTIgTm92IDIwMTUgMTM6MDc6MDcgKzA4MDAKU3ViamVjdDogW1BBVENIIDE1LzM3XSBzY3RwOiB0 cmFuc2xhdGUgaG9zdCBvcmRlciB0byBuZXR3b3JrIG9yZGVyIHdoZW4KIHNldHRpbmcgYSBobWFj aWQKClsgVXBzdHJlYW0gY29tbWl0IGVkNWEzNzdkODdkYzRjODdmYjNlMWY3ZjY5OGNiYTM4Y2Q4 OTMxMDMgXQoKbm93IHNjdHAgYXV0aCBjYW5ub3Qgd29yayB3ZWxsIHdoZW4gc2V0dGluZyBhIGht YWNpZCBtYW51YWxseSwgd2hpY2gKaXMgY2F1c2VkIGJ5IHRoYXQgd2UgZGlkbid0IHVzZSB0aGUg bmV0d29yayBvcmRlciBmb3IgaG1hY2lkLCBzbyBmaXgKaXQgYnkgYWRkaW5nIHRoZSB0cmFuc2Zv cm1hdGlvbiBpbiBzY3RwX2F1dGhfZXBfc2V0X2htYWNzLgoKZXZlbiB3ZSBzZXQgaG1hY2lkIHdp dGggdGhlIG5ldHdvcmsgb3JkZXIgaW4gdXNlcnNwYWNlLCBpdCBzdGlsbApjYW4ndCB3b3JrLCBi ZWNhdXNlIG9mIHRoaXMgY29uZGl0aW9uIGluIHNjdHBfYXV0aF9lcF9zZXRfaG1hY3MoKToKCgkJ aWYgKGlkID4gU0NUUF9BVVRIX0hNQUNfSURfTUFYKQoJCQlyZXR1cm4gLUVPUE5PVFNVUFA7Cgpz byB0aGlzIHdhc24ndCB3b3JraW5nIGJlZm9yZSBhbmQgdGh1cyBpdCB3b24ndCBicmVhayBjb21w YXRpYmlsaXR5LgoKRml4ZXM6IDY1YjA3ZTVkMGQwOSAoIltTQ1RQXTogQVBJIHVwZGF0ZXMgdG8g c3Vwb3J0IFNDVFAtQVVUSCBleHRlbnNpb25zLiIpClNpZ25lZC1vZmYtYnk6IFhpbiBMb25nIDxs dWNpZW4ueGluQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFyY2VsbyBSaWNhcmRvIExlaXRu ZXIgPG1hcmNlbG8ubGVpdG5lckBnbWFpbC5jb20+CkFja2VkLWJ5OiBOZWlsIEhvcm1hbiA8bmhv cm1hbkB0dXhkcml2ZXIuY29tPgpBY2tlZC1ieTogVmxhZCBZYXNldmljaCA8dnlhc2V2aWNoQGdt YWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIG5ldC9zY3RwL2F1dGguYyB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hdXRoLmMg Yi9uZXQvc2N0cC9hdXRoLmMKaW5kZXggNGYxNWI3ZC4uMTU0M2UzOSAxMDA2NDQKLS0tIGEvbmV0 L3NjdHAvYXV0aC5jCisrKyBiL25ldC9zY3RwL2F1dGguYwpAQCAtODA5LDggKzgwOSw4IEBAIGlu dCBzY3RwX2F1dGhfZXBfc2V0X2htYWNzKHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCwKIAlpZiAo IWhhc19zaGExKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCW1lbWNweShlcC0+YXV0aF9obWFjc19s aXN0LT5obWFjX2lkcywgJmhtYWNzLT5zaG1hY19pZGVudHNbMF0sCi0JCWhtYWNzLT5zaG1hY19u dW1faWRlbnRzICogc2l6ZW9mKF9fdTE2KSk7CisJZm9yIChpID0gMDsgaSA8IGhtYWNzLT5zaG1h Y19udW1faWRlbnRzOyBpKyspCisJCWVwLT5hdXRoX2htYWNzX2xpc3QtPmhtYWNfaWRzW2ldID0g aHRvbnMoaG1hY3MtPnNobWFjX2lkZW50c1tpXSk7CiAJZXAtPmF1dGhfaG1hY3NfbGlzdC0+cGFy YW1faGRyLmxlbmd0aCA9IGh0b25zKHNpemVvZihzY3RwX3BhcmFtaGRyX3QpICsKIAkJCQlobWFj cy0+c2htYWNfbnVtX2lkZW50cyAqIHNpemVvZihfX3UxNikpOwogCXJldHVybiAwOwotLSAKMi4x LjAKCgpGcm9tIGE3ZmYyZTM4YjQ3MzY0N2M2YjA1YzZlOWMyNTE2NWUwZjFhNjY1MWMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyYW4gQmVuIEVsaXNoYSA8ZXJhbmJlQG1lbGxhbm94 LmNvbT4KRGF0ZTogVGh1LCAxMiBOb3YgMjAxNSAxOTozNToyOSArMDIwMApTdWJqZWN0OiBbUEFU Q0ggMTYvMzddIG5ldC9tbHg0X2NvcmU6IEZpeCBzbGVlcGluZyB3aGlsZSBob2xkaW5nIHNwaW5s b2NrIGF0CiByZW1fc2xhdmVfY291bnRlcnMKClsgVXBzdHJlYW0gY29tbWl0IGY1YWRiZmVlNzIy ODJiYjFmNDU2ZDUyYjA0YWRhY2Q0ZmU2YWM1MDIgXQoKV2hlbiBjbGVhbmluZyBzbGF2ZSdzIGNv dW50ZXIgcmVzb3VyY2VzLCB3ZSBob2xkIGEgc3BpbmxvY2sgdGhhdApwcm90ZWN0cyB0aGUgc2xh dmUncyBjb3VudGVycyBsaXN0LiBBcyBwYXJ0IG9mIHRoZSBjbGVhbiwgd2UgY2FsbApfX21seDRf Y2xlYXJfaWZfc3RhdCB3aGljaCBjYWxscyBtbHg0X2FsbG9jX2NtZF9tYWlsYm94IHdoaWNoIGlz IGEKc2xlZXBhYmxlIGZ1bmN0aW9uLgoKSW4gb3JkZXIgdG8gZml4IHRoaXMgaXNzdWUsIGhvbGQg dGhlIHNwaW5sb2NrLCBhbmQgY29weSBhbGwgY291bnRlcgppbmRpY2VzIGludG8gYSB0ZW1wb3Jh cnkgYXJyYXksIGFuZCByZWxlYXNlIHRoZSBzcGlubG9jay4gQWZ0ZXJ3YXJkcywKaXRlcmF0ZSBv dmVyIHRoaXMgYXJyYXkgYW5kIGZyZWUgZXZlcnkgY291bnRlci4gUmVwZWF0IHRoaXMgc2NlbmFy aW8KdW50aWwgdGhlIG9yaWdpbmFsIGxpc3QgaXMgZW1wdHkgKGEgbmV3IGNvdW50ZXIgbWlnaHQg aGF2ZSBiZWVuIGFkZGVkCndoaWxlIHJlbGVhc2luZyB0aGUgY291bnRlcnMgZnJvbSB0aGUgdGVt cG9yYXJ5IGFycmF5KS4KCkZpeGVzOiBiNzJjYTdlOTZhY2YgKCJuZXQvbWx4NF9jb3JlOiBSZXNl dCBjb3VudGVycyBkYXRhIHdoZW4gZnJlZWQiKQpSZXBvcnRlZC1ieTogTW9uaSBTaG91YSA8bW9u aXNAbWVsbGFub3guY29tPgpUZXN0ZWQtYnk6IE1vbmkgU2hvdWEgPG1vbmlzQG1lbGxhbm94LmNv bT4KU2lnbmVkLW9mZi1ieTogSmFjayBNb3JnZW5zdGVpbiA8amFja21AZGV2Lm1lbGxhbm94LmNv LmlsPgpTaWduZWQtb2ZmLWJ5OiBFcmFuIEJlbiBFbGlzaGEgPGVyYW5iZUBtZWxsYW5veC5jb20+ ClNpZ25lZC1vZmYtYnk6IE9yIEdlcmxpdHogPG9nZXJsaXR6QG1lbGxhbm94LmNvbT4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIC4uLi9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9yZXNvdXJjZV90cmFja2VyLmMgIHwgMzkgKysrKysr KysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDEyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDQvcmVzb3VyY2VfdHJhY2tlci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NC9yZXNvdXJjZV90cmFja2VyLmMKaW5kZXggNzMxNDIzYy4uOGJlYWQ5NyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9yZXNvdXJjZV90cmFja2VyLmMKKysr IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9yZXNvdXJjZV90cmFja2VyLmMK QEAgLTQ5MzQsMjYgKzQ5MzQsNDEgQEAgc3RhdGljIHZvaWQgcmVtX3NsYXZlX2NvdW50ZXJzKHN0 cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgc2xhdmUpCiAJc3RydWN0IHJlc19jb3VudGVyICpjb3Vu dGVyOwogCXN0cnVjdCByZXNfY291bnRlciAqdG1wOwogCWludCBlcnI7Ci0JaW50IGluZGV4Owor CWludCAqY291bnRlcnNfYXJyID0gTlVMTDsKKwlpbnQgaSwgajsKIAogCWVyciA9IG1vdmVfYWxs X2J1c3koZGV2LCBzbGF2ZSwgUkVTX0NPVU5URVIpOwogCWlmIChlcnIpCiAJCW1seDRfd2Fybihk ZXYsICJyZW1fc2xhdmVfY291bnRlcnM6IENvdWxkIG5vdCBtb3ZlIGFsbCBjb3VudGVycyAtIHRv byBidXN5IGZvciBzbGF2ZSAlZFxuIiwKIAkJCSAgc2xhdmUpOwogCi0Jc3Bpbl9sb2NrX2lycSht bHg0X3Rsb2NrKGRldikpOwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjb3VudGVyLCB0bXAs IGNvdW50ZXJfbGlzdCwgY29tLmxpc3QpIHsKLQkJaWYgKGNvdW50ZXItPmNvbS5vd25lciA9PSBz bGF2ZSkgewotCQkJaW5kZXggPSBjb3VudGVyLT5jb20ucmVzX2lkOwotCQkJcmJfZXJhc2UoJmNv dW50ZXItPmNvbS5ub2RlLAotCQkJCSAmdHJhY2tlci0+cmVzX3RyZWVbUkVTX0NPVU5URVJdKTsK LQkJCWxpc3RfZGVsKCZjb3VudGVyLT5jb20ubGlzdCk7Ci0JCQlrZnJlZShjb3VudGVyKTsKLQkJ CV9fbWx4NF9jb3VudGVyX2ZyZWUoZGV2LCBpbmRleCk7CisJY291bnRlcnNfYXJyID0ga21hbGxv Y19hcnJheShkZXYtPmNhcHMubWF4X2NvdW50ZXJzLAorCQkJCSAgICAgc2l6ZW9mKCpjb3VudGVy c19hcnIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWNvdW50ZXJzX2FycikKKwkJcmV0dXJuOworCisJ ZG8geworCQlpID0gMDsKKwkJaiA9IDA7CisJCXNwaW5fbG9ja19pcnEobWx4NF90bG9jayhkZXYp KTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNvdW50ZXIsIHRtcCwgY291bnRlcl9saXN0 LCBjb20ubGlzdCkgeworCQkJaWYgKGNvdW50ZXItPmNvbS5vd25lciA9PSBzbGF2ZSkgeworCQkJ CWNvdW50ZXJzX2FycltpKytdID0gY291bnRlci0+Y29tLnJlc19pZDsKKwkJCQlyYl9lcmFzZSgm Y291bnRlci0+Y29tLm5vZGUsCisJCQkJCSAmdHJhY2tlci0+cmVzX3RyZWVbUkVTX0NPVU5URVJd KTsKKwkJCQlsaXN0X2RlbCgmY291bnRlci0+Y29tLmxpc3QpOworCQkJCWtmcmVlKGNvdW50ZXIp OworCQkJfQorCQl9CisJCXNwaW5fdW5sb2NrX2lycShtbHg0X3Rsb2NrKGRldikpOworCisJCXdo aWxlIChqIDwgaSkgeworCQkJX19tbHg0X2NvdW50ZXJfZnJlZShkZXYsIGNvdW50ZXJzX2Fycltq KytdKTsKIAkJCW1seDRfcmVsZWFzZV9yZXNvdXJjZShkZXYsIHNsYXZlLCBSRVNfQ09VTlRFUiwg MSwgMCk7CiAJCX0KLQl9Ci0Jc3Bpbl91bmxvY2tfaXJxKG1seDRfdGxvY2soZGV2KSk7CisJfSB3 aGlsZSAoaSk7CisKKwlrZnJlZShjb3VudGVyc19hcnIpOwogfQogCiBzdGF0aWMgdm9pZCByZW1f c2xhdmVfeHJjZG5zKHN0cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgc2xhdmUpCi0tIAoyLjEuMAoK CkZyb20gZGQ2OGQ3ZjQ4YWYyNDM3OGQ0Yjg4OTE4YmVlOTA4OWIyYzA0NjdjYiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogIkphc29uIEEuIERvbmVuZmVsZCIgPEphc29uQHp4MmM0LmNv bT4KRGF0ZTogVGh1LCAxMiBOb3YgMjAxNSAxNzozNTo1OCArMDEwMApTdWJqZWN0OiBbUEFUQ0gg MTcvMzddIGlwX3R1bm5lbDogZGlzYWJsZSBwcmVlbXB0aW9uIHdoZW4gdXBkYXRpbmcgcGVyLWNw dQogdHN0YXRzCgpbIFVwc3RyZWFtIGNvbW1pdCBiNGZlODVmOWM5MTQ2ZjYwNDU3ZTk1MTJmYjYw NTVlNjllNmE3YTY1IF0KCkRyaXZlcnMgbGlrZSB2eGxhbiB1c2UgdGhlIHJlY2VudGx5IGludHJv ZHVjZWQKdWRwX3R1bm5lbF94bWl0X3NrYi91ZHBfdHVubmVsNl94bWl0X3NrYiBBUElzLiB1ZHBf dHVubmVsNl94bWl0X3NrYgptYWtlcyB1c2Ugb2YgaXA2dHVubmVsX3htaXQsIGFuZCBpcDZ0dW5u ZWxfeG1pdCwgYWZ0ZXIgc2VuZGluZyB0aGUKcGFja2V0LCB1cGRhdGVzIHRoZSBzdHJ1Y3Qgc3Rh dHMgdXNpbmcgdGhlIHVzdWFsCnU2NF9zdGF0c191cGRhdGVfYmVnaW4vZW5kIGNhbGxzIG9uIHRo aXNfY3B1X3B0cihkZXYtPnRzdGF0cykuCnVkcF90dW5uZWxfeG1pdF9za2IgbWFrZXMgdXNlIG9m IGlwdHVubmVsX3htaXQsIHdoaWNoIGRvZXNuJ3QgdG91Y2gKdHN0YXRzLCBzbyBkcml2ZXJzIGxp a2UgdnhsYW4sIGltbWVkaWF0ZWx5IGFmdGVyLCBjYWxsCmlwdHVubmVsX3htaXRfc3RhdHMsIHdo aWNoIGRvZXMgdGhlIHNhbWUgdGhpbmcgLSBjYWxscwp1NjRfc3RhdHNfdXBkYXRlX2JlZ2luL2Vu ZCBvbiB0aGlzX2NwdV9wdHIoZGV2LT50c3RhdHMpLgoKV2hpbGUgdnhsYW4gaXMgcHJvYmFibHkg ZmluZSAoSSBkb24ndCBrbm93PyksIGNhbGxpbmcgYSBzaW1pbGFyIGZ1bmN0aW9uCmZyb20sIHNh eSwgYW4gdW5ib3VuZCB3b3JrcXVldWUsIG9uIGEgZnVsbHkgcHJlZW1wdGFibGUga2VybmVsIGNh dXNlcwpyZWFsIGlzc3VlczoKClsgIDE4OC40MzQ1MzddIEJVRzogdXNpbmcgc21wX3Byb2Nlc3Nv cl9pZCgpIGluIHByZWVtcHRpYmxlIFswMDAwMDAwMF0gY29kZToga3dvcmtlci91ODowLzYKWyAg MTg4LjQzNTU3OV0gY2FsbGVyIGlzIGRlYnVnX3NtcF9wcm9jZXNzb3JfaWQrMHgxNy8weDIwClsg IDE4OC40MzU1ODNdIENQVTogMCBQSUQ6IDYgQ29tbToga3dvcmtlci91ODowIE5vdCB0YWludGVk IDQuMi42ICMyClsgIDE4OC40MzU2MDddIENhbGwgVHJhY2U6ClsgIDE4OC40MzU2MTFdICBbPGZm ZmZmZmZmODIzNGU5MzY+XSBkdW1wX3N0YWNrKzB4NGYvMHg3YgpbICAxODguNDM1NjE1XSAgWzxm ZmZmZmZmZjgxOTE1ZjNkPl0gY2hlY2tfcHJlZW1wdGlvbl9kaXNhYmxlZCsweDE5ZC8weDFjMApb ICAxODguNDM1NjE5XSAgWzxmZmZmZmZmZjgxOTE1Zjc3Pl0gZGVidWdfc21wX3Byb2Nlc3Nvcl9p ZCsweDE3LzB4MjAKClRoZSBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcm90ZWN0IHRoZSB3aG9sZQp0 aGlzX2NwdV9wdHIoZGV2LT50c3RhdHMpL3U2NF9zdGF0c191cGRhdGVfYmVnaW4vZW5kIGJsb2Nr cyB3aXRoCmRpc2FibGluZyBwcmVlbXB0aW9uIGFuZCB0aGVuIHJlZW5hYmxpbmcgaXQuCgpTaWdu ZWQtb2ZmLWJ5OiBKYXNvbiBBLiBEb25lbmZlbGQgPEphc29uQHp4MmM0LmNvbT4KQWNrZWQtYnk6 IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1 ZGUvbmV0L2lwNl90dW5uZWwuaCB8IDMgKystCiBpbmNsdWRlL25ldC9pcF90dW5uZWxzLmggfCAz ICsrLQogMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXA2X3R1bm5lbC5oIGIvaW5jbHVkZS9uZXQvaXA2X3R1 bm5lbC5oCmluZGV4IGI4NTI5YWEuLmIwZjc0NDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lw Nl90dW5uZWwuaAorKysgYi9pbmNsdWRlL25ldC9pcDZfdHVubmVsLmgKQEAgLTgzLDExICs4Mywx MiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXA2dHVubmVsX3htaXQoc3RydWN0IHNvY2sgKnNrLCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWVyciA9IGlwNl9sb2NhbF9vdXRfc2soc2ssIHNrYik7CiAK IAlpZiAobmV0X3htaXRfZXZhbChlcnIpID09IDApIHsKLQkJc3RydWN0IHBjcHVfc3dfbmV0c3Rh dHMgKnRzdGF0cyA9IHRoaXNfY3B1X3B0cihkZXYtPnRzdGF0cyk7CisJCXN0cnVjdCBwY3B1X3N3 X25ldHN0YXRzICp0c3RhdHMgPSBnZXRfY3B1X3B0cihkZXYtPnRzdGF0cyk7CiAJCXU2NF9zdGF0 c191cGRhdGVfYmVnaW4oJnRzdGF0cy0+c3luY3ApOwogCQl0c3RhdHMtPnR4X2J5dGVzICs9IHBr dF9sZW47CiAJCXRzdGF0cy0+dHhfcGFja2V0cysrOwogCQl1NjRfc3RhdHNfdXBkYXRlX2VuZCgm dHN0YXRzLT5zeW5jcCk7CisJCXB1dF9jcHVfcHRyKHRzdGF0cyk7CiAJfSBlbHNlIHsKIAkJc3Rh dHMtPnR4X2Vycm9ycysrOwogCQlzdGF0cy0+dHhfYWJvcnRlZF9lcnJvcnMrKzsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaCBiL2luY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaApp bmRleCBkODIxNGNiLi45YzI4OTdlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcF90dW5uZWxz LmgKKysrIGIvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oCkBAIC0yMDcsMTIgKzIwNywxMyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgaXB0dW5uZWxfeG1pdF9zdGF0cyhpbnQgZXJyLAogCQkJCSAgICAg ICBzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0cyBfX3BlcmNwdSAqc3RhdHMpCiB7CiAJaWYgKGVyciA+ IDApIHsKLQkJc3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0cyA9IHRoaXNfY3B1X3B0cihz dGF0cyk7CisJCXN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHMgPSBnZXRfY3B1X3B0cihz dGF0cyk7CiAKIAkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmdHN0YXRzLT5zeW5jcCk7CiAJCXRz dGF0cy0+dHhfYnl0ZXMgKz0gZXJyOwogCQl0c3RhdHMtPnR4X3BhY2tldHMrKzsKIAkJdTY0X3N0 YXRzX3VwZGF0ZV9lbmQoJnRzdGF0cy0+c3luY3ApOworCQlwdXRfY3B1X3B0cih0c3RhdHMpOwog CX0gZWxzZSBpZiAoZXJyIDwgMCkgewogCQllcnJfc3RhdHMtPnR4X2Vycm9ycysrOwogCQllcnJf c3RhdHMtPnR4X2Fib3J0ZWRfZXJyb3JzKys7Ci0tIAoyLjEuMAoKCkZyb20gNTI5NjRlY2IxM2Rj ZmI0NzFhZTQyMDllMDRhMGU5Y2QxOGFhOWNiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogRHJhZ29zIFRhdHVsZWEgPGRyYWdvc0BlbmRvY29kZS5jb20+CkRhdGU6IE1vbiwgMTYgTm92 IDIwMTUgMTA6NTI6NDggKzAxMDAKU3ViamVjdDogW1BBVENIIDE4LzM3XSBuZXQ6IHN3aXRjaGRl djogZml4IHJldHVybiBjb2RlIG9mIGZkYl9kdW1wIHN0dWIKClsgVXBzdHJlYW0gY29tbWl0IDI0 Y2I3MDU1YTMwNjY2MzRhMGYzZmEwY2Q2YTQ3ODA2NTI5MDVkMzUgXQoKcnRubF9mZGJfZHVtcCBh bHdheXMgZXhwZWN0cyBhbiBpbmRleCB0byBiZSByZXR1cm5lZCBieSB0aGUgbmRvX2ZkYl9kdW1w IG9wLApidXQgd2hlbiBDT05GSUdfTkVUX1NXSVRDSERFViBpcyBvZmYsIGl0IHJldHVybnMgYW4g ZXJyb3IuCgpGaXggdGhhdCBieSByZXR1cm5pbmcgdGhlIGdpdmVuIHVubW9kaWZpZWQgaWR4LgoK QSBzaW1pbGFyIGZpeCB3YXMgMDg5MGNmNmNiNmFiICgic3dpdGNoZGV2OiBmaXggcmV0dXJuIHZh bHVlIG9mCnN3aXRjaGRldl9wb3J0X2ZkYl9kdW1wIGluIGNhc2Ugb2YgZXJyb3IiKSBidXQgZm9y IHRoZSBDT05GSUdfTkVUX1NXSVRDSERFVj15CmNhc2UuCgpGaXhlczogNDVkNDEyMmNhN2NkICgi c3dpdGNoZGV2OiBhZGQgc3VwcG9ydCBmb3IgZmRiIGFkZC9kZWwvZHVtcCB2aWEgc3dpdGNoZGV2 X3BvcnRfb2JqIG9wcy4iKQpTaWduZWQtb2ZmLWJ5OiBEcmFnb3MgVGF0dWxlYSA8ZHJhZ29zQGVu ZG9jb2RlLmNvbT4KQWNrZWQtYnk6IEppcmkgUGlya28gPGppcmlAbWVsbGFub3guY29tPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogaW5j bHVkZS9uZXQvc3dpdGNoZGV2LmggfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zd2l0Y2hkZXYuaCBi L2luY2x1ZGUvbmV0L3N3aXRjaGRldi5oCmluZGV4IGQ1NjcxZjEuLjBiOTE5NzkgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbmV0L3N3aXRjaGRldi5oCisrKyBiL2luY2x1ZGUvbmV0L3N3aXRjaGRldi5o CkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIGlubGluZSBpbnQgc3dpdGNoZGV2X3BvcnRfZmRi X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkJICBzdHJ1Y3QgbmV0X2RldmljZSAqZmls dGVyX2RldiwKIAkJCQkJICBpbnQgaWR4KQogewotCXJldHVybiAtRU9QTk9UU1VQUDsKKyAgICAg ICByZXR1cm4gaWR4OwogfQogCiAjZW5kaWYKLS0gCjIuMS4wCgoKRnJvbSA2NzNhNTdlYzRmMGYy MWZlYTNkZGQyZjMzMDM3NDU0NmRjMmM2YjM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBQYXZlbCBGZWRpbiA8cC5mZWRpbkBzYW1zdW5nLmNvbT4KRGF0ZTogTW9uLCAxNiBOb3YgMjAx NSAxNzo1MTozNCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMTkvMzddIG5ldDogdGh1bmRlcjogQ2hl Y2sgZm9yIGRyaXZlciBkYXRhIGluIG5pY3ZmX3JlbW92ZSgpCgpbIFVwc3RyZWFtIGNvbW1pdCA3 NzUwMTMwZDkzZGVjZmYwNjEyMGRmMGQ4ZWEwMjRmZjhhMDM4YTIxIF0KCkluIHNvbWUgY2FzZXMg dGhlIGNyYXNoIGlzIGNhdXNlZCBieSBuaWN2Zl9yZW1vdmUoKSBiZWluZyBjYWxsZWQgZnJvbQpv dXRzaWRlLiBGb3IgZXhhbXBsZSwgaWYgd2UgdHJ5IHRvIGZlZWQgdGhlIGRldmljZSB0byB2Zmlv IGFmdGVyIHRoZQpwcm9iZSBoYXMgZmFpbGVkIGZvciBzb21lIHJlYXNvbi4gU28sIG1vdmUgdGhl IGNoZWNrIHRvIGJldHRlciBwbGFjZS4KClNpZ25lZC1vZmYtYnk6IFBhdmVsIEZlZGluIDxwLmZl ZGluQHNhbXN1bmcuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRh dmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmlj dmZfbWFpbi5jIHwgNyArKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3Ro dW5kZXIvbmljdmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIv bmljdmZfbWFpbi5jCmluZGV4IDNiOTBhZmIuLjZmMmE3NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY3ZmX21haW4uYworKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWN2Zl9tYWluLmMKQEAgLTEzMjUsNyArMTMyNSwx MiBAQCBlcnJfZGlzYWJsZV9kZXZpY2U6CiBzdGF0aWMgdm9pZCBuaWN2Zl9yZW1vdmUoc3RydWN0 IHBjaV9kZXYgKnBkZXYpCiB7CiAJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRf ZHJ2ZGF0YShwZGV2KTsKLQlzdHJ1Y3QgbmljdmYgKm5pYyA9IG5ldGRldl9wcml2KG5ldGRldik7 CisJc3RydWN0IG5pY3ZmICpuaWM7CisKKwlpZiAoIW5ldGRldikKKwkJcmV0dXJuOworCisJbmlj ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsKIAogCXVucmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7CiAJ bmljdmZfdW5yZWdpc3Rlcl9pbnRlcnJ1cHRzKG5pYyk7Ci0tIAoyLjEuMAoKCkZyb20gNGM3MmUz OGU1YTAyYTUyYzMzYmM0YzYxMzA4MmM4YzBhYWNhOGE4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogTmVpbCBIb3JtYW4gPG5ob3JtYW5AdHV4ZHJpdmVyLmNvbT4KRGF0ZTogTW9uLCAx NiBOb3YgMjAxNSAxMzowOToxMCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMjAvMzddIHNubXA6IFJl bW92ZSBkdXBsaWNhdGUgT1VUTUNBU1Qgc3RhdCBpbmNyZW1lbnQKClsgVXBzdHJlYW0gY29tbWl0 IDQxMDMzZjAyOWUzOTNhNjRlODE5NjZjYmUzNGQ2NmM2Y2Y4YTJlN2UgXQoKdGhlIE9VVE1DQVNU IHN0YXQgaXMgZG91YmxlIGluY3JlbWVudGVkLCBnZXR0aW5nIGJ1bXBlZCBvbmNlIGluIHRoZSBt Y2FzdCBjb2RlCml0c2VsZiwgYW5kIGFnYWluIGluIHRoZSBjb21tb24gaXAgb3V0cHV0IHBhdGgu ICBSZW1vdmUgdGhlIG1jYXN0IGJ1bXAsIGFzIGl0cwpub3QgbmVlZGVkCgpWYWxpZGF0ZWQgYnkg dGhlIHJlcG9ydGVyLCB3aXRoIGdvb2QgcmVzdWx0cwoKU2lnbmVkLW9mZi1ieTogTmVpbCBIb3Jt YW4gPG5ob3JtYW5AdHV4ZHJpdmVyLmNvbT4KUmVwb3J0ZWQtYnk6IENsYXVzIEplbnNlbiA8Y2xh dXMuamVuc2VuQG1pY3Jvc2VtaS5jb20+CkNDOiBDbGF1cyBKZW5zZW4gPGNsYXVzLmplbnNlbkBt aWNyb3NlbWkuY29tPgpDQzogRGF2aWQgTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0 L2lwdjYvbWNhc3QuYyB8IDIgLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL25ldC9pcHY2L21jYXN0LmMgYi9uZXQvaXB2Ni9tY2FzdC5jCmluZGV4IDA4M2Iy OTIuLjQxZTNiNWUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L21jYXN0LmMKKysrIGIvbmV0L2lwdjYv bWNhc3QuYwpAQCAtMTY1MSw3ICsxNjUxLDYgQEAgb3V0OgogCWlmICghZXJyKSB7CiAJCUlDTVA2 TVNHT1VUX0lOQ19TVEFUUyhuZXQsIGlkZXYsIElDTVBWNl9NTEQyX1JFUE9SVCk7CiAJCUlDTVA2 X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElDTVA2X01JQl9PVVRNU0dTKTsKLQkJSVA2X1VQRF9QT19T VEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVE1DQVNULCBwYXlsb2FkX2xlbik7CiAJfSBl bHNlIHsKIAkJSVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVERJU0NBUkRT KTsKIAl9CkBAIC0yMDE0LDcgKzIwMTMsNiBAQCBvdXQ6CiAJaWYgKCFlcnIpIHsKIAkJSUNNUDZN U0dPVVRfSU5DX1NUQVRTKG5ldCwgaWRldiwgdHlwZSk7CiAJCUlDTVA2X0lOQ19TVEFUUyhuZXQs IGlkZXYsIElDTVA2X01JQl9PVVRNU0dTKTsKLQkJSVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYs IElQU1RBVFNfTUlCX09VVE1DQVNULCBmdWxsX2xlbik7CiAJfSBlbHNlCiAJCUlQNl9JTkNfU1RB VFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVRESVNDQVJEUyk7CiAKLS0gCjIuMS4wCgoKRnJv bSBlYzY5ZjY3OWI5NDhmOGE1MWNmZWFjZjllYTVhYmM1YTYxYjVjYmIyIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Qmo9QzM9Qjhybj0yME1vcms/PSA8Ympvcm5AbW9y ay5ubz4KRGF0ZTogV2VkLCAxOCBOb3YgMjAxNSAyMToxMzowNyArMDEwMApTdWJqZWN0OiBbUEFU Q0ggMjEvMzddIG5ldDogcW1pX3d3YW46IGFkZCBYUyBTdGljayBXMTAwLTIgZnJvbSA0RyBTeXN0 ZW1zCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpbIFVwc3RyZWFtIGNvbW1pdCA2 ODI0MmE1YTFlMmVkY2UzOWIwNjkzODVjYmFmYjgyMzA0ZWFjMGYxIF0KClRob21hcyByZXBvcnRz CiIKNGdzeXN0ZW1zIHNlbGxzIHR3byB0b3RhbCBkaWZmZXJlbnQgTFRFLXN1cmZzdGlja3MgdW5k ZXIgdGhlIHNhbWUgbmFtZS4KLi4KVGhlIG5ld2VyIHZlcnNpb24gb2YgWFMgU3RpY2sgVzEwMCBp cyBmcm9tICJvbWVnYSIKLi4KVW5kZXIgd2luZG93cyB0aGUgZHJpdmVyIHN3aXRjaGVzIHRvIHRo ZSBzYW1lIElELCBhbmQgdXNlcyBNSTAzXDYgZm9yCm5ldHdvcmsgYW5kIE1JMDFcNiBmb3IgbW9k ZW0uCi4uCmVjaG8gIjFjOWUgOWIwMSIgPiAvc3lzL2J1cy91c2IvZHJpdmVycy9xbWlfd3dhbi9u ZXdfaWQKZWNobyAiMWM5ZSA5YjAxIiA+IC9zeXMvYnVzL3VzYi1zZXJpYWwvZHJpdmVycy9vcHRp b24xL25ld19pZAoKVDogIEJ1cz0wMSBMZXY9MDEgUHJudD0wMSBQb3J0PTAzIENudD0wMSBEZXYj PSAgNCBTcGQ9NDgwIE14Q2g9IDAKRDogIFZlcj0gMi4wMCBDbHM9MDAoPmlmYyApIFN1Yj0wMCBQ cm90PTAwIE14UFM9NjQgI0NmZ3M9ICAxClA6ICBWZW5kb3I9MWM5ZSBQcm9kSUQ9OWIwMSBSZXY9 MDIuMzIKUzogIE1hbnVmYWN0dXJlcj1VU0IgTW9kZW0KUzogIFByb2R1Y3Q9VVNCIE1vZGVtClM6 ICBTZXJpYWxOdW1iZXI9CkM6ICAjSWZzPSA1IENmZyM9IDEgQXRyPTgwIE14UHdyPTUwMG1BCkk6 ICBJZiM9IDAgQWx0PSAwICNFUHM9IDIgQ2xzPWZmKHZlbmQuKSBTdWI9ZmYgUHJvdD1mZiBEcml2 ZXI9b3B0aW9uCkk6ICBJZiM9IDEgQWx0PSAwICNFUHM9IDMgQ2xzPWZmKHZlbmQuKSBTdWI9ZmYg UHJvdD1mZiBEcml2ZXI9b3B0aW9uCkk6ICBJZiM9IDIgQWx0PSAwICNFUHM9IDMgQ2xzPWZmKHZl bmQuKSBTdWI9ZmYgUHJvdD1mZiBEcml2ZXI9b3B0aW9uCkk6ICBJZiM9IDMgQWx0PSAwICNFUHM9 IDMgQ2xzPWZmKHZlbmQuKSBTdWI9ZmYgUHJvdD1mZiBEcml2ZXI9cW1pX3d3YW4KSTogIElmIz0g NCBBbHQ9IDAgI0VQcz0gMiBDbHM9MDgoc3Rvci4pIFN1Yj0wNiBQcm90PTUwIERyaXZlcj11c2It c3RvcmFnZQoKTm93IGFsbCBpbXBvcnRhbnQgdGhpbmdzIGFyZSB0aGVyZToKCnd3cDBzMjlmN3Uy aTMgKG5ldCksIHR0eVVTQjIgKGF0KSwgY2RjLXdkbTAgKHFtaSksIHR0eVVTQjEgKGF0KQoKVGhl cmUgaXMgYWxzbyB0dHlVU0IwLCBidXQgaXQgaXMgbm90IHVzYWJsZSwgYXQgbGVhc3Qgbm90IGZv ciBhdC4KClRoZSBkZXZpY2Ugd29ya3Mgd2VsbCB3aXRoIHFtaSBhbmQgTW9kZW1NYW5hZ2VyLU5l dHdvcmtNYW5hZ2VyLgoiCgpSZXBvcnRlZC1ieTogVGhvbWFzIFNjaMOkZmVyIDx0c2NoYWVmZXJA dC1vbmxpbmUuZGU+ClNpZ25lZC1vZmYtYnk6IEJqw7hybiBNb3JrIDxiam9ybkBtb3JrLm5vPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQog ZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMgfCAxICsKIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jIGIvZHJpdmVy cy9uZXQvdXNiL3FtaV93d2FuLmMKaW5kZXggOGYxNzM4Yy4uZGUyN2Y1MSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMKKysrIGIvZHJpdmVycy9uZXQvdXNiL3FtaV93d2Fu LmMKQEAgLTc3NSw2ICs3NzUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQg cHJvZHVjdHNbXSA9IHsKIAl7UU1JX0ZJWEVEX0lOVEYoMHgyMzU3LCAweDkwMDAsIDQpfSwJLyog VFAtTElOSyBNQTI2MCAqLwogCXtRTUlfRklYRURfSU5URigweDFiYzcsIDB4MTIwMCwgNSl9LAkv KiBUZWxpdCBMRTkyMCAqLwogCXtRTUlfRklYRURfSU5URigweDFiYzcsIDB4MTIwMSwgMil9LAkv KiBUZWxpdCBMRTkyMCAqLworCXtRTUlfRklYRURfSU5URigweDFjOWUsIDB4OWIwMSwgMyl9LAkv KiBYUyBTdGljayBXMTAwLTIgZnJvbSA0RyBTeXN0ZW1zICovCiAJe1FNSV9GSVhFRF9JTlRGKDB4 MGIzYywgMHhjMDAwLCA0KX0sCS8qIE9saXZldHRpIE9saWNhcmQgMTAwICovCiAJe1FNSV9GSVhF RF9JTlRGKDB4MGIzYywgMHhjMDAxLCA0KX0sCS8qIE9saXZldHRpIE9saWNhcmQgMTIwICovCiAJ e1FNSV9GSVhFRF9JTlRGKDB4MGIzYywgMHhjMDAyLCA0KX0sCS8qIE9saXZldHRpIE9saWNhcmQg MTQwICovCi0tIAoyLjEuMAoKCkZyb20gMjBlYjBmMDUzNzQ2N2E4NDUyYWU2YTUzYTRjYTliYjE1 MDY2MGUwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVt YXpldEBnb29nbGUuY29tPgpEYXRlOiBXZWQsIDE4IE5vdiAyMDE1IDEyOjQwOjEzIC0wODAwClN1 YmplY3Q6IFtQQVRDSCAyMi8zN10gdGNwOiBtZDU6IGZpeCBsb2NrZGVwIGFubm90YXRpb24KClsg VXBzdHJlYW0gY29tbWl0IDFiOGU2YTAxZTE5ZjAwMWU5ZjkzYjM5YzMyMzg3OTYxYzkxZWQzY2Mg XQoKV2hlbiBhIHBhc3NpdmUgVENQIGlzIGNyZWF0ZWQsIHdlIGV2ZW50dWFsbHkgY2FsbCB0Y3Bf bWQ1X2RvX2FkZCgpCndpdGggc2sgcG9pbnRpbmcgdG8gdGhlIGNoaWxkLiBJdCBpcyBub3Qgb3du ZXIgYnkgdGhlIHVzZXIgeWV0ICh3ZQp3aWxsIGFkZCB0aGlzIHNvY2tldCBpbnRvIGxpc3RlbmVy IGFjY2VwdCBxdWV1ZSBhIGJpdCBsYXRlciBhbnl3YXkpCgpCdXQgd2UgZG8gb3duIHRoZSBzcGlu bG9jaywgc28gYW1lbmQgdGhlIGxvY2tkZXAgYW5ub3RhdGlvbiB0byBhdm9pZApmb2xsb3dpbmcg c3BsYXQgOgoKWyA4NDUxLjA5MDkzMl0gbmV0L2lwdjQvdGNwX2lwdjQuYzo5MjMgc3VzcGljaW91 cyByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKCkgdXNhZ2UhClsgODQ1MS4wOTA5MzJdClsgODQ1 MS4wOTA5MzJdIG90aGVyIGluZm8gdGhhdCBtaWdodCBoZWxwIHVzIGRlYnVnIHRoaXM6ClsgODQ1 MS4wOTA5MzJdClsgODQ1MS4wOTA5MzRdClsgODQ1MS4wOTA5MzRdIHJjdV9zY2hlZHVsZXJfYWN0 aXZlID0gMSwgZGVidWdfbG9ja3MgPSAxClsgODQ1MS4wOTA5MzZdIDMgbG9ja3MgaGVsZCBieSBz b2NrZXRfc29ja29wdF8vMjE0Nzk1OgpbIDg0NTEuMDkwOTM2XSAgIzA6ICAocmN1X3JlYWRfbG9j ayl7LisuKy4ufSwgYXQ6IFs8ZmZmZmZmZmY4NTVjNmFjMT5dIF9fbmV0aWZfcmVjZWl2ZV9za2Jf Y29yZSsweDE1MS8weGU5MApbIDg0NTEuMDkwOTQ3XSAgIzE6ICAocmN1X3JlYWRfbG9jayl7Lisu Ky4ufSwgYXQ6IFs8ZmZmZmZmZmY4NTYxODE0Mz5dIGlwX2xvY2FsX2RlbGl2ZXJfZmluaXNoKzB4 NDMvMHgyYjAKWyA4NDUxLjA5MDk1Ml0gICMyOiAgKHNsb2NrLUFGX0lORVQpeysuLS4uLn0sIGF0 OiBbPGZmZmZmZmZmODU1YWNkYTU+XSBza19jbG9uZV9sb2NrKzB4MWM1LzB4NTAwClsgODQ1MS4w OTA5NThdClsgODQ1MS4wOTA5NThdIHN0YWNrIGJhY2t0cmFjZToKWyA4NDUxLjA5MDk2MF0gQ1BV OiA3IFBJRDogMjE0Nzk1IENvbW06IHNvY2tldF9zb2Nrb3B0XwoKWyA4NDUxLjA5MTIxNV0gQ2Fs bCBUcmFjZToKWyA4NDUxLjA5MTIxNl0gIDxJUlE+ICBbPGZmZmZmZmZmODU2ZmIyOWM+XSBkdW1w X3N0YWNrKzB4NTUvMHg3NgpbIDg0NTEuMDkxMjI5XSAgWzxmZmZmZmZmZjg1MTIzYjViPl0gbG9j a2RlcF9yY3Vfc3VzcGljaW91cysweGViLzB4MTEwClsgODQ1MS4wOTEyMzVdICBbPGZmZmZmZmZm ODU2NDU0NGY+XSB0Y3BfbWQ1X2RvX2FkZCsweDFiZi8weDFlMApbIDg0NTEuMDkxMjM5XSAgWzxm ZmZmZmZmZjg1NjQ1NzUxPl0gdGNwX3Y0X3N5bl9yZWN2X3NvY2srMHgxZjEvMHg0YzAKWyA4NDUx LjA5MTI0Ml0gIFs8ZmZmZmZmZmY4NTY0MmIyNz5dID8gdGNwX3Y0X21kNV9oYXNoX3NrYisweDE2 Ny8weDE5MApbIDg0NTEuMDkxMjQ2XSAgWzxmZmZmZmZmZjg1NjQ3Yzc4Pl0gdGNwX2NoZWNrX3Jl cSsweDNjOC8weDUwMApbIDg0NTEuMDkxMjQ5XSAgWzxmZmZmZmZmZjg1NjQ1MWFlPl0gPyB0Y3Bf djRfaW5ib3VuZF9tZDVfaGFzaCsweDExZS8weDE5MApbIDg0NTEuMDkxMjUzXSAgWzxmZmZmZmZm Zjg1NjQ3MTcwPl0gdGNwX3Y0X3JjdisweDNjMC8weDlmMApbIDg0NTEuMDkxMjU2XSAgWzxmZmZm ZmZmZjg1NjE4MTQzPl0gPyBpcF9sb2NhbF9kZWxpdmVyX2ZpbmlzaCsweDQzLzB4MmIwClsgODQ1 MS4wOTEyNjBdICBbPGZmZmZmZmZmODU2MTgxYjY+XSBpcF9sb2NhbF9kZWxpdmVyX2ZpbmlzaCsw eGI2LzB4MmIwClsgODQ1MS4wOTEyNjNdICBbPGZmZmZmZmZmODU2MTgxNDM+XSA/IGlwX2xvY2Fs X2RlbGl2ZXJfZmluaXNoKzB4NDMvMHgyYjAKWyA4NDUxLjA5MTI2N10gIFs8ZmZmZmZmZmY4NTYx OGQzOD5dIGlwX2xvY2FsX2RlbGl2ZXIrMHg0OC8weDgwClsgODQ1MS4wOTEyNzBdICBbPGZmZmZm ZmZmODU2MTg1MTA+XSBpcF9yY3ZfZmluaXNoKzB4MTYwLzB4NzAwClsgODQ1MS4wOTEyNzNdICBb PGZmZmZmZmZmODU2MTkwMGU+XSBpcF9yY3YrMHgyOWUvMHgzZDAKWyA4NDUxLjA5MTI3N10gIFs8 ZmZmZmZmZmY4NTVjNzRiNz5dIF9fbmV0aWZfcmVjZWl2ZV9za2JfY29yZSsweGI0Ny8weGU5MAoK Rml4ZXM6IGE4YWZjYTAzMjk5ODggKCJ0Y3A6IG1kNTogcHJvdGVjdHMgbWQ1c2lnX2luZm8gd2l0 aCBSQ1UiKQpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ ClJlcG9ydGVkLWJ5OiBXaWxsZW0gZGUgQnJ1aWpuIDx3aWxsZW1iQGdvb2dsZS5jb20+ClNpZ25l ZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQv aXB2NC90Y3BfaXB2NC5jIHwgMyArKy0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lw djQvdGNwX2lwdjQuYwppbmRleCAwZWEyZTFjLi41NjljNjM4IDEwMDY0NAotLS0gYS9uZXQvaXB2 NC90Y3BfaXB2NC5jCisrKyBiL25ldC9pcHY0L3RjcF9pcHY0LmMKQEAgLTkyMiw3ICs5MjIsOCBA QCBpbnQgdGNwX21kNV9kb19hZGQoc3RydWN0IHNvY2sgKnNrLCBjb25zdCB1bmlvbiB0Y3BfbWQ1 X2FkZHIgKmFkZHIsCiAJfQogCiAJbWQ1c2lnID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCh0 cC0+bWQ1c2lnX2luZm8sCi0JCQkJCSAgIHNvY2tfb3duZWRfYnlfdXNlcihzaykpOworCQkJCQkg ICBzb2NrX293bmVkX2J5X3VzZXIoc2spIHx8CisJCQkJCSAgIGxvY2tkZXBfaXNfaGVsZCgmc2st PnNrX2xvY2suc2xvY2spKTsKIAlpZiAoIW1kNXNpZykgewogCQltZDVzaWcgPSBrbWFsbG9jKHNp emVvZigqbWQ1c2lnKSwgZ2ZwKTsKIAkJaWYgKCFtZDVzaWcpCi0tIAoyLjEuMAoKCkZyb20gZGQ3 MTFmNDYzYmI5ZmFhZmUyNWY5YWI5OGFmMTY1NjY1NTEzNzQ0MSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogWXVjaHVuZyBDaGVuZyA8eWNoZW5nQGdvb2dsZS5jb20+CkRhdGU6IFdlZCwg MTggTm92IDIwMTUgMTg6MTc6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIDIzLzM3XSB0Y3A6IGRp c2FibGUgRmFzdCBPcGVuIG9uIHRpbWVvdXRzIGFmdGVyIGhhbmRzaGFrZQoKWyBVcHN0cmVhbSBj b21taXQgMGU0NWY0ZGE1OTgxODk1ZTg4NWRkNzJmZTkxMmEzZjhlMzJiYWU3MyBdCgpTb21lIG1p ZGRsZS1ib3hlcyBibGFjay1ob2xlIHRoZSBkYXRhIGFmdGVyIHRoZSBGYXN0IE9wZW4gaGFuZHNo YWtlCihodHRwczovL3d3dy5pZXRmLm9yZy9wcm9jZWVkaW5ncy85NC9zbGlkZXMvc2xpZGVzLTk0 LXRjcG0tMTMucGRmKS4KVGhlIGV4YWN0IHJlYXNvbiBpcyB1bmtub3duLiBUaGUgd29yay1hcm91 bmQgaXMgdG8gZGlzYWJsZSBGYXN0IE9wZW4KdGVtcG9yYXJpbHkgYWZ0ZXIgbXVsdGlwbGUgcmVj dXJyaW5nIHRpbWVvdXRzIHdpdGggZmV3IG9yIG5vIGRhdGEKZGVsaXZlcmVkIGluIHRoZSBlc3Rh Ymxpc2hlZCBzdGF0ZS4KClNpZ25lZC1vZmYtYnk6IFl1Y2h1bmcgQ2hlbmcgPHljaGVuZ0Bnb29n bGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ ClJlcG9ydGVkLWJ5OiBDaHJpc3RvcGggUGFhc2NoIDxjcGFhc2NoQGFwcGxlLmNvbT4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9p cHY0L3RjcF90aW1lci5jIHwgMTIgKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTIgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF90aW1lci5jIGIvbmV0L2lwdjQv dGNwX3RpbWVyLmMKaW5kZXggNWI3NTJmNS4uMWU2M2M4ZiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQv dGNwX3RpbWVyLmMKKysrIGIvbmV0L2lwdjQvdGNwX3RpbWVyLmMKQEAgLTE3Niw2ICsxNzYsMTgg QEAgc3RhdGljIGludCB0Y3Bfd3JpdGVfdGltZW91dChzdHJ1Y3Qgc29jayAqc2spCiAJCXN5bl9z ZXQgPSB0cnVlOwogCX0gZWxzZSB7CiAJCWlmIChyZXRyYW5zbWl0c190aW1lZF9vdXQoc2ssIHN5 c2N0bF90Y3BfcmV0cmllczEsIDAsIDApKSB7CisJCQkvKiBTb21lIG1pZGRsZS1ib3hlcyBtYXkg YmxhY2staG9sZSBGYXN0IE9wZW4gX2FmdGVyXworCQkJICogdGhlIGhhbmRzaGFrZS4gVGhlcmVm b3JlIHdlIGNvbnNlcnZhdGl2ZWx5IGRpc2FibGUKKwkJCSAqIEZhc3QgT3BlbiBvbiB0aGlzIHBh dGggb24gcmVjdXJyaW5nIHRpbWVvdXRzIHdpdGgKKwkJCSAqIGZldyBvciB6ZXJvIGJ5dGVzIGFj a2VkIGFmdGVyIEZhc3QgT3Blbi4KKwkJCSAqLworCQkJaWYgKHRwLT5zeW5fZGF0YV9hY2tlZCAm JgorCQkJICAgIHRwLT5ieXRlc19hY2tlZCA8PSB0cC0+cnhfb3B0Lm1zc19jbGFtcCkgeworCQkJ CXRjcF9mYXN0b3Blbl9jYWNoZV9zZXQoc2ssIDAsIE5VTEwsIHRydWUsIDApOworCQkJCWlmIChp Y3NrLT5pY3NrX3JldHJhbnNtaXRzID09IHN5c2N0bF90Y3BfcmV0cmllczEpCisJCQkJCU5FVF9J TkNfU1RBVFNfQkgoc29ja19uZXQoc2spLAorCQkJCQkJCSBMSU5VWF9NSUJfVENQRkFTVE9QRU5B Q1RJVkVGQUlMKTsKKwkJCX0KIAkJCS8qIEJsYWNrIGhvbGUgZGV0ZWN0aW9uICovCiAJCQl0Y3Bf bXR1X3Byb2JpbmcoaWNzaywgc2spOwogCi0tIAoyLjEuMAoKCkZyb20gNmFiZGM5ZjM1ODJiN2Q3 ODc4NDgwNjQ4YmYxODVlOWFhZDZhOGZiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog RXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBXZWQsIDE4IE5vdiAyMDE1 IDIxOjAzOjMzIC0wODAwClN1YmplY3Q6IFtQQVRDSCAyNC8zN10gdGNwOiBmaXggcG90ZW50aWFs IGh1Z2Uga21hbGxvYygpIGNhbGxzIGluIFRDUF9SRVBBSVIKClsgVXBzdHJlYW0gY29tbWl0IDVk NGM5YmZiYWJkYjFkNDk3ZjIxYWZkODE1MDFlNWM1NGIwYzg1ZDkgXQoKdGNwX3NlbmRfcmN2cSgp IGlzIHVzZWQgZm9yIHJlLWluamVjdGluZyBkYXRhIGludG8gdGNwIHJlY2VpdmUgcXVldWUuCgpQ cm9ibGVtcyA6CgotIE5vIGNoZWNrIGFnYWluc3Qgc2l6ZSBpcyBwZXJmb3JtZWQsIGFsbG93ZWQg dXNlciB0byBmb29sIGtlcm5lbCBpbgogIGF0dGVtcHRpbmcgdmVyeSBsYXJnZSBtZW1vcnkgYWxs b2NhdGlvbnMsIGV2ZW50dWFsbHkgdHJpZ2dlcmluZwogIE9PTSB3aGVuIG1lbW9yeSBpcyBmcmFn bWVudGVkLgoKLSBJbiBjYXNlIG9mIGZhdWx0IGR1cmluZyB0aGUgY29weSB3ZSBkbyBub3QgcmV0 dXJuIGNvcnJlY3QgZXJybm8uCgpMZXRzIHVzZSBhbGxvY19za2Jfd2l0aF9mcmFncygpIHRvIGNv b2sgb3B0aW1hbCBza2JzLgoKRml4ZXM6IDI5MmU4ZDhjODUzOCAoInRjcDogTW92ZSByY3ZxIHNl bmRpbmcgdG8gdGNwX2lucHV0LmMiKQpGaXhlczogYzBlODhmZjBmMjU2ICgidGNwOiBSZXBhaXIg c29ja2V0IHF1ZXVlcyIpClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29v Z2xlLmNvbT4KQ2M6IFBhdmVsIEVtZWx5YW5vdiA8eGVtdWxAcGFyYWxsZWxzLmNvbT4KQWNrZWQt Ynk6IFBhdmVsIEVtZWx5YW5vdiA8eGVtdWxAcGFyYWxsZWxzLmNvbT4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L3RjcF9p bnB1dC5jIHwgMjIgKysrKysrKysrKysrKysrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDE5IGlu c2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lu cHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCA3MjhmNWIzLi5jOTkwMTA1IDEwMDY0 NAotLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuYworKysgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwpA QCAtNDQzNCwxOSArNDQzNCwzNCBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayB0Y3BfcXVldWVf cmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50CiBpbnQgdGNwX3Nl bmRfcmN2cShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUp CiB7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwlpbnQgZXJyID0gLUVOT01FTTsKKwlpbnQgZGF0 YV9sZW4gPSAwOwogCWJvb2wgZnJhZ3N0b2xlbjsKIAogCWlmIChzaXplID09IDApCiAJCXJldHVy biAwOwogCi0Jc2tiID0gYWxsb2Nfc2tiKHNpemUsIHNrLT5za19hbGxvY2F0aW9uKTsKKwlpZiAo c2l6ZSA+IFBBR0VfU0laRSkgeworCQlpbnQgbnBhZ2VzID0gbWluX3Qoc2l6ZV90LCBzaXplID4+ IFBBR0VfU0hJRlQsIE1BWF9TS0JfRlJBR1MpOworCisJCWRhdGFfbGVuID0gbnBhZ2VzIDw8IFBB R0VfU0hJRlQ7CisJCXNpemUgPSBkYXRhX2xlbiArIChzaXplICYgflBBR0VfTUFTSyk7CisJfQor CXNrYiA9IGFsbG9jX3NrYl93aXRoX2ZyYWdzKHNpemUgLSBkYXRhX2xlbiwgZGF0YV9sZW4sCisJ CQkJICAgUEFHRV9BTExPQ19DT1NUTFlfT1JERVIsCisJCQkJICAgJmVyciwgc2stPnNrX2FsbG9j YXRpb24pOwogCWlmICghc2tiKQogCQlnb3RvIGVycjsKIAorCXNrYl9wdXQoc2tiLCBzaXplIC0g ZGF0YV9sZW4pOworCXNrYi0+ZGF0YV9sZW4gPSBkYXRhX2xlbjsKKwlza2ItPmxlbiA9IHNpemU7 CisKIAlpZiAodGNwX3RyeV9ybWVtX3NjaGVkdWxlKHNrLCBza2IsIHNrYi0+dHJ1ZXNpemUpKQog CQlnb3RvIGVycl9mcmVlOwogCi0JaWYgKG1lbWNweV9mcm9tX21zZyhza2JfcHV0KHNrYiwgc2l6 ZSksIG1zZywgc2l6ZSkpCisJZXJyID0gc2tiX2NvcHlfZGF0YWdyYW1fZnJvbV9pdGVyKHNrYiwg MCwgJm1zZy0+bXNnX2l0ZXIsIHNpemUpOworCWlmIChlcnIpCiAJCWdvdG8gZXJyX2ZyZWU7CiAK IAlUQ1BfU0tCX0NCKHNrYiktPnNlcSA9IHRjcF9zayhzayktPnJjdl9ueHQ7CkBAIC00NDYyLDcg KzQ0NzcsOCBAQCBpbnQgdGNwX3NlbmRfcmN2cShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2do ZHIgKm1zZywgc2l6ZV90IHNpemUpCiBlcnJfZnJlZToKIAlrZnJlZV9za2Ioc2tiKTsKIGVycjoK LQlyZXR1cm4gLUVOT01FTTsKKwlyZXR1cm4gZXJyOworCiB9CiAKIHN0YXRpYyB2b2lkIHRjcF9k YXRhX3F1ZXVlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKLS0gCjIuMS4w CgoKRnJvbSA5ZjViYmQ5NjhjNGZlYTM5MmQ5MmQ0ODZhZGZjY2I1ODhmOTYzZDY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ CkRhdGU6IFRodSwgMjYgTm92IDIwMTUgMDg6MTg6MTQgLTA4MDAKU3ViamVjdDogW1BBVENIIDI1 LzM3XSB0Y3A6IGluaXRpYWxpemUgdHAtPmNvcGllZF9zZXEgaW4gY2FzZSBvZiBjcm9zcyBTWU4K IGNvbm5lY3Rpb24KClsgVXBzdHJlYW0gY29tbWl0IDE0MmEyZTdlY2U4ZDhhYzBlODE4ZWIyYzkx Zjk5Y2E4OTQ3MzBlMmEgXQoKRG1pdHJ5IHByb3ZpZGVkIGEgc3l6a2FsbGVyIChodHRwOi8vZ2l0 aHViLmNvbS9nb29nbGUvc3l6a2FsbGVyKQpnZW5lcmF0ZWQgcHJvZ3JhbSB0aGF0IHRyaWdnZXJz IHRoZSBXQVJOSU5HIGF0Cm5ldC9pcHY0L3RjcC5jOjE3MjkgaW4gdGNwX3JlY3Ztc2coKSA6CgpX QVJOX09OKHRwLT5jb3BpZWRfc2VxICE9IHRwLT5yY3Zfbnh0ICYmCiAgICAgICAgIShmbGFncyAm IChNU0dfUEVFSyB8IE1TR19UUlVOQykpKTsKCkhpcyBwcm9ncmFtIGlzIHNwZWNpZmljYWxseSBh dHRlbXB0aW5nIGEgQ3Jvc3MgU1lOIFRDUCBleGNoYW5nZSwKdGhhdCB3ZSBzdXBwb3J0IChmb3Ig dGhlIHBsZWFzdXJlIG9mIGhhY2tlcnMgPyksIGJ1dCBpdCBsb29rcyB3ZQpsYWNrIHByb3BlciB0 Y3AtPmNvcGllZF9zZXEgaW5pdGlhbGl6YXRpb24uCgpUaGFua3MgYWdhaW4gRG1pdHJ5IGZvciB5 b3VyIHJlcG9ydCBhbmQgdGVzdGluZ3MuCgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVk dW1hemV0QGdvb2dsZS5jb20+ClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdv b2dsZS5jb20+ClRlc3RlZC1ieTogRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBnb29nbGUuY29tPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQog bmV0L2lwdjQvdGNwX2lucHV0LmMgfCAxICsKIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KQoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0 LmMKaW5kZXggYzk5MDEwNS4uNzc3MzBiNCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0 LmMKKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKQEAgLTU2MzYsNiArNTYzNiw3IEBAIGRpc2Nh cmQ6CiAJCX0KIAogCQl0cC0+cmN2X254dCA9IFRDUF9TS0JfQ0Ioc2tiKS0+c2VxICsgMTsKKwkJ dHAtPmNvcGllZF9zZXEgPSB0cC0+cmN2X254dDsKIAkJdHAtPnJjdl93dXAgPSBUQ1BfU0tCX0NC KHNrYiktPnNlcSArIDE7CiAKIAkJLyogUkZDMTMyMzogVGhlIHdpbmRvdyBpbiBTWU4gJiBTWU4v QUNLIHNlZ21lbnRzIGlzCi0tIAoyLjEuMAoKCkZyb20gZWFlN2FiNzRjYTU0YWQzNTkzYzUyYjZk ZWQyNzE3Y2QzMWQyYTc0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGFuaWVsIEJv cmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KRGF0ZTogRnJpLCAyMCBOb3YgMjAxNSAwMDox MTo1NiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMjYvMzddIG5ldCwgc2NtOiBmaXggUGFYIGRldGVj dGVkIG1zZ19jb250cm9sbGVuIG92ZXJmbG93IGluCiBzY21fZGV0YWNoX2ZkcwoKWyBVcHN0cmVh bSBjb21taXQgNjkwMDMxN2Y1ZWZmMGE3MDcwYzU5MzZlNTM4M2Y1ODllMGRlN2EwOSBdCgpEYXZp ZCBhbmQgSGFjS3VyeCByZXBvcnRlZCBhIGZvbGxvd2luZy9zaW1pbGFyIHNpemUgb3ZlcmZsb3cg dHJpZ2dlcmVkCmluIGEgZ3JzZWN1cml0eSBrZXJuZWwsIHRoYW5rcyB0byBQYVgncyBnY2Mgc2l6 ZSBvdmVyZmxvdyBwbHVnaW46CgooQWxyZWFkeSBmaXhlZCBpbiBsYXRlciBncnNlY3VyaXR5IHZl cnNpb25zIGJ5IEJyYWQgYW5kIFBhWCBUZWFtLikKClsgMTAwMi4yOTYxMzddIFBBWDogc2l6ZSBv dmVyZmxvdyBkZXRlY3RlZCBpbiBmdW5jdGlvbiBzY21fZGV0YWNoX2ZkcyBuZXQvY29yZS9zY20u YzozMTQKICAgICAgICAgICAgICAgY2ljdXMuMjAyXzEyNyBtaW4sIGNvdW50OiA0LCBkZWNsOiBt c2dfY29udHJvbGxlbjsgbnVtOiAwOyBjb250ZXh0OiBtc2doZHI7ClsgMTAwMi4yOTYxNDVdIENQ VTogMCBQSUQ6IDM2ODUgQ29tbTogc2NtX3JpZ2h0c19yZWN2IE5vdCB0YWludGVkIDQuMi4zLWdy c2VjKyAjNwpbIDEwMDIuMjk2MTQ5XSBIYXJkd2FyZSBuYW1lOiBBcHBsZSBJbmMuIE1hY0Jvb2tB aXI1LDEvTWFjLTY2RjM1RjE5RkUyQTBEMDUsIFsuLi5dClsgMTAwMi4yOTYxNTNdICBmZmZmZmZm ZjgxYzI3MzY2IDAwMDAwMDAwMDAwMDAwMDAgZmZmZmZmZmY4MWMyNzM3NSBmZmZmYzkwMDA3ODQz YWE4ClsgMTAwMi4yOTYxNjJdICBmZmZmZmZmZjgxODEyOWJhIDAwMDAwMDAwMDAwMDAwMDAgZmZm ZmZmZmY4MWMyNzM2NiBmZmZmYzkwMDA3ODQzYWQ4ClsgMTAwMi4yOTYxNjldICBmZmZmZmZmZjgx MjFmODM4IGZmZmZmZmZmZmZmZmZmZmMgZmZmZmZmZmZmZmZmZmZmYyBmZmZmYzkwMDA3ODQzZTYw ClsgMTAwMi4yOTYxNzZdIENhbGwgVHJhY2U6ClsgMTAwMi4yOTYxOTBdICBbPGZmZmZmZmZmODE4 MTI5YmE+XSBkdW1wX3N0YWNrKzB4NDUvMHg1NwpbIDEwMDIuMjk2MjAwXSAgWzxmZmZmZmZmZjgx MjFmODM4Pl0gcmVwb3J0X3NpemVfb3ZlcmZsb3crMHgzOC8weDYwClsgMTAwMi4yOTYyMDldICBb PGZmZmZmZmZmODE2YTk3OWU+XSBzY21fZGV0YWNoX2ZkcysweDJjZS8weDMwMApbIDEwMDIuMjk2 MjIwXSAgWzxmZmZmZmZmZjgxNzkxODk5Pl0gdW5peF9zdHJlYW1fcmVhZF9nZW5lcmljKzB4NjA5 LzB4OTMwClsgMTAwMi4yOTYyMjhdICBbPGZmZmZmZmZmODE3OTFjOWY+XSB1bml4X3N0cmVhbV9y ZWN2bXNnKzB4NGYvMHg2MApbIDEwMDIuMjk2MjM2XSAgWzxmZmZmZmZmZjgxNzhkYzAwPl0gPyB1 bml4X3NldF9wZWVrX29mZisweDUwLzB4NTAKWyAxMDAyLjI5NjI0M10gIFs8ZmZmZmZmZmY4MTY4 ZmFjNz5dIHNvY2tfcmVjdm1zZysweDQ3LzB4NjAKWyAxMDAyLjI5NjI0OF0gIFs8ZmZmZmZmZmY4 MTY5MTUyMj5dIF9fX3N5c19yZWN2bXNnKzB4ZTIvMHgxZTAKWyAxMDAyLjI5NjI1N10gIFs8ZmZm ZmZmZmY4MTY5MzQ5Nj5dIF9fc3lzX3JlY3Ztc2crMHg0Ni8weDgwClsgMTAwMi4yOTYyNjNdICBb PGZmZmZmZmZmODE2OTM0ZmM+XSBTeVNfcmVjdm1zZysweDJjLzB4NDAKWyAxMDAyLjI5NjI3MV0g IFs8ZmZmZmZmZmY4MTgxYTNhYj5dIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGgrMHgxMi8weDg1 CgpGdXJ0aGVyIGludmVzdGlnYXRpb24gc2hvd2VkIHRoYXQgdGhpcyBjYW4gaGFwcGVuIHdoZW4g YW4gKm9kZCogbnVtYmVyIG9mCmZkcyBhcmUgYmVpbmcgcGFzc2VkIG92ZXIgQUZfVU5JWCBzb2Nr ZXRzLgoKSW4gdGhlc2UgY2FzZXMgQ01TR19MRU4oaSAqIHNpemVvZihpbnQpKSBhbmQgQ01TR19T UEFDRShpICogc2l6ZW9mKGludCkpLAp3aGVyZSBpIGlzIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1 bGx5IHBhc3NlZCBmZHMsIGRpZmZlciBieSA0IGJ5dGVzIGR1ZQp0byB0aGUgZXh0cmEgQ01TR19B TElHTigpIHBhZGRpbmcgaW4gQ01TR19TUEFDRSgpIHRvIGFuIDggYnl0ZSBib3VuZGFyeQpvbiA2 NCBiaXQuIFRoZSBwYWRkaW5nIGlzIHVzZWQgdG8gYWxpZ24gc3Vic2VxdWVudCBjbXNnIGhlYWRl cnMgaW4gdGhlCmNvbnRyb2wgYnVmZmVyLgoKV2hlbiB0aGUgY29udHJvbCBidWZmZXIgcGFzc2Vk IGluIGZyb20gdGhlIHJlY2VpdmVyIHNpZGUgKmxhY2tzKiB0aGVzZSA0CmJ5dGVzIChlLmcuIGR1 ZSB0byBidWdneS93cm9uZyBBUEkgdXNhZ2UpLCB0aGVuIG1zZy0+bXNnX2NvbnRyb2xsZW4gd2ls bApvdmVyZmxvdyBpbiBzY21fZGV0YWNoX2ZkcygpOgoKICBpbnQgY21sZW4gPSBDTVNHX0xFTihp ICogc2l6ZW9mKGludCkpOyAgPC0tLSBjbWxlbiB3L28gdGFpbC1wYWRkaW5nCiAgZXJyID0gcHV0 X3VzZXIoU09MX1NPQ0tFVCwgJmNtLT5jbXNnX2xldmVsKTsKICBpZiAoIWVycikKICAgIGVyciA9 IHB1dF91c2VyKFNDTV9SSUdIVFMsICZjbS0+Y21zZ190eXBlKTsKICBpZiAoIWVycikKICAgIGVy ciA9IHB1dF91c2VyKGNtbGVuLCAmY20tPmNtc2dfbGVuKTsKICBpZiAoIWVycikgewogICAgY21s ZW4gPSBDTVNHX1NQQUNFKGkgKiBzaXplb2YoaW50KSk7ICA8LS0tIGNtbGVuIHcvIDQgYnl0ZSBl eHRyYSB0YWlsLXBhZGRpbmcKICAgIG1zZy0+bXNnX2NvbnRyb2wgKz0gY21sZW47CiAgICBtc2ct Pm1zZ19jb250cm9sbGVuIC09IGNtbGVuOyAgICAgICAgIDwtLS0gaWZmIG5vIHRhaWwtcGFkZGlu ZyBzcGFjZSBoZXJlIC4uLgogIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC4uLiB3cmFwLWFyb3VuZAoKRi5lLiBpdCB3aWxsIHdyYXAgdG8gYSBsZW5ndGggb2Yg MTg0NDY3NDQwNzM3MDk1NTE2MTIgYnl0ZXMgaW4gY2FzZSB0aGUKcmVjZWl2ZXIgcGFzc2VkIGlu IG1zZy0+bXNnX2NvbnRyb2xsZW4gb2YgMjAgYnl0ZXMsIGFuZCB0aGUgc2VuZGVyCnByb3Blcmx5 IHRyYW5zZmVycmVkIDEgZmQgdG8gdGhlIHJlY2VpdmVyLCBzbyB0aGF0IGl0cyBDTVNHX0xFTiBy ZXN1bHRzCmluIDIwIGJ5dGVzIGFuZCBDTVNHX1NQQUNFIGluIDI0IGJ5dGVzLgoKSW4gY2FzZSBv ZiBNU0dfQ01TR19DT01QQVQgKHNjbV9kZXRhY2hfZmRzX2NvbXBhdCgpKSwgSSBoYXZlbid0IHNl ZW4gYW4KaXNzdWUgaW4gbXkgdGVzdHMgYXMgYWxpZ25tZW50IHNlZW1zIGFsd2F5cyBvbiA0IGJ5 dGUgYm91bmRhcnkuIFNhbWUKc2hvdWxkIGJlIGluIGNhc2Ugb2YgbmF0aXZlIDMyIGJpdCwgd2hl cmUgd2UgZW5kIHVwIHdpdGggNCBieXRlIGJvdW5kYXJpZXMKYXMgd2VsbC4KCkluIHByYWN0aWNl LCBwYXNzaW5nIG1zZy0+bXNnX2NvbnRyb2xsZW4gb2YgMjAgdG8gcmVjdm1zZygpIHdoaWxlIHJl Y2VpdmluZwphIHNpbmdsZSBmZCB3b3VsZCBtZWFuIHRoYXQgb24gc3VjY2Vzc2Z1bCByZXR1cm4s IG1zZy0+bXNnX2NvbnRyb2xsZW4gaXMKYmVpbmcgc2V0IGJ5IHRoZSBrZXJuZWwgdG8gMjQgYnl0 ZXMgaW5zdGVhZCwgdGh1cyBtb3JlIHRoYW4gdGhlIGlucHV0CmJ1ZmZlciBhZHZlcnRpc2VkLiBJ dCBjb3VsZCBmLmUuIGJlY29tZSBhbiBpc3N1ZSBpZiBzdWNoIGFwcGxpY2F0aW9uIGxhdGVyCm9u IHplcm9lcyBvciBjb3BpZXMgdGhlIGNvbnRyb2wgYnVmZmVyIGJhc2VkIG9uIHRoZSByZXR1cm5l ZCBtc2ctPm1zZ19jb250cm9sbGVuCmVsc2V3aGVyZS4KCk1heGltdW0gbnVtYmVyIG9mIGZkcyB3 ZSBjYW4gc2VuZCBpcyBhIGhhcmQgdXBwZXIgbGltaXQgU0NNX01BWF9GRCAoMjUzKS4KCkdvaW5n IG92ZXIgdGhlIGNvZGUsIGl0IHNlZW1zIGxpa2UgbXNnLT5tc2dfY29udHJvbGxlbiBpcyBub3Qg YmVpbmcgcmVhZAphZnRlciBzY21fZGV0YWNoX2ZkcygpIGluIHNjbV9yZWN2KCkgYW55bW9yZSBi eSB0aGUga2VybmVsLCBnb29kIQoKUmVsZXZhbnQgcmVjdm1zZygpIGhhbmRsZXIgYXJlIHVuaXhf ZGdyYW1fcmVjdm1zZygpICh1bml4X3NlcXBhY2tldF9yZWN2bXNnKCkpCmFuZCB1bml4X3N0cmVh bV9yZWN2bXNnKCkuIEJvdGggcmV0dXJuIGJhY2sgdG8gdGhlaXIgcmVjdm1zZygpIGNhbGxlciwK YW5kIF9fX3N5c19yZWN2bXNnKCkgcGxhY2VzIHRoZSB1cGRhdGVkIGxlbmd0aCwgdGhhdCBpcywg bmV3IG1zZ19jb250cm9sIC0Kb2xkIG1zZ19jb250cm9sIHBvaW50ZXIgaW50byBtc2ctPm1zZ19j b250cm9sbGVuIChoZW5jZSB0aGUgMjQgYnl0ZXMgc2VlbgppbiB0aGUgZXhhbXBsZSkuCgpMb25n IHRpbWUgYWdvLCBXZWkgWW9uZ2p1biBmaXhlZCBzb21ldGhpbmcgcmVsYXRlZCBpbiBjb21taXQg MWFjNzBlN2FkMjRhCigiW05FVF06IEZpeCBmdW5jdGlvbiBwdXRfY21zZygpIHdoaWNoIG1heSBj YXVzZSB1c3IgYXBwbGljYXRpb24gbWVtb3J5Cm92ZXJmbG93IikuCgpSRkMzNTQyLCBzZWN0aW9u IDIwLjIuIHNheXM6CgogIFRoZSBmaWVsZHMgc2hvd24gYXMgIlhYIiBhcmUgcG9zc2libGUgcGFk ZGluZywgYmV0d2VlbiB0aGUgY21zZ2hkcgogIHN0cnVjdHVyZSBhbmQgdGhlIGRhdGEsIGFuZCBi ZXR3ZWVuIHRoZSBkYXRhIGFuZCB0aGUgbmV4dCBjbXNnaGRyCiAgc3RydWN0dXJlLCBpZiByZXF1 aXJlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uIFdoaWxlIHNlbmRpbmcgYW4KICBhcHBsaWNhdGlv biBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHBhZGRpbmcgYXQgdGhlIGVuZCBvZiBsYXN0CiAgYW5j aWxsYXJ5IGRhdGEgaW4gbXNnX2NvbnRyb2xsZW4gYW5kIGltcGxlbWVudGF0aW9ucyBtdXN0IGFj Y2VwdCBib3RoCiAgYXMgdmFsaWQuIE9uIHJlY2VpdmluZyBhIHBvcnRhYmxlIGFwcGxpY2F0aW9u IG11c3QgcHJvdmlkZSBzcGFjZSBmb3IKICBwYWRkaW5nIGF0IHRoZSBlbmQgb2YgdGhlIGxhc3Qg YW5jaWxsYXJ5IGRhdGEgYXMgaW1wbGVtZW50YXRpb25zIG1heQogIGNvcHkgb3V0IHRoZSBwYWRk aW5nIGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRyb2wgbWVzc2FnZSBidWZmZXIgYW5kCiAgaW5jbHVk ZSBpdCBpbiB0aGUgcmVjZWl2ZWQgbXNnX2NvbnRyb2xsZW4uIFdoZW4gcmVjdm1zZygpIGlzIGNh bGxlZAogIGlmIG1zZ19jb250cm9sbGVuIGlzIHRvbyBzbWFsbCBmb3IgYWxsIHRoZSBhbmNpbGxh cnkgZGF0YSBpdGVtcwogIGluY2x1ZGluZyBhbnkgdHJhaWxpbmcgcGFkZGluZyBhZnRlciB0aGUg bGFzdCBpdGVtIGFuIGltcGxlbWVudGF0aW9uCiAgbWF5IHNldCBNU0dfQ1RSVU5DLgoKU2luY2Ug d2UgZGlkbid0IHBsYWNlIE1TR19DVFJVTkMgZm9yIGFscmVhZHkgcXVpdGUgYSBsb25nIHRpbWUs IGp1c3QgZG8KdGhlIHNhbWUgYXMgaW4gMWFjNzBlN2FkMjRhIHRvIGF2b2lkIGFuIG92ZXJmbG93 LgoKQnR3LCBldmVuIG1hbi1wYWdlIGF1dGhvciBnb3QgdGhpcyB3cm9uZyA6LyBTZWUgZGI5Mzlj OWIyNmU5ICgiY21zZy4zOiBGaXgKZXJyb3IgaW4gU0NNX1JJR0hUUyBjb2RlIHNhbXBsZSIpLiBT b21lIHBlb3BsZSBtdXN0IGhhdmUgY29waWVkIHRoaXMgKD8pLAp0aHVzIGl0IGdvdCB0cmlnZ2Vy ZWQgaW4gdGhlIHdpbGQgKHJlcG9ydGVkIHNldmVyYWwgdGltZXMgZHVyaW5nIGJvb3QgYnkKRGF2 aWQgYW5kIEhhY0t1cngpLgoKTm8gRml4ZXMgdGFnIHRoaXMgdGltZSBhcyBwcmUgMjAwMiAodGhh dCBpcywgcHJlIGhpc3RvcnkgdHJlZSkuCgpSZXBvcnRlZC1ieTogRGF2aWQgU3RlcmJhIDxkYXZl QGppa29zLmN6PgpSZXBvcnRlZC1ieTogSGFjS3VyeCA8aGFja3VyeEBnbWFpbC5jb20+CkNjOiBQ YVggVGVhbSA8cGFnZWV4ZWNAZnJlZW1haWwuaHU+CkNjOiBFbWVzZSBSZXZmeSA8cmUuZW1lc2VA Z21haWwuY29tPgpDYzogQnJhZCBTcGVuZ2xlciA8c3BlbmRlckBncnNlY3VyaXR5Lm5ldD4KQ2M6 IFdlaSBZb25nanVuIDx5b25nanVuX3dlaUB0cmVuZG1pY3JvLmNvbS5jbj4KQ2M6IEVyaWMgRHVt YXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEhhbm5lcyBGcmVkZXJpYyBT b3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEJv cmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWls bGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9jb3JlL3NjbS5jIHwgMiArKwogMSBm aWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NjbS5j IGIvbmV0L2NvcmUvc2NtLmMKaW5kZXggM2I2ODk5Yi4uOGExNzQxYiAxMDA2NDQKLS0tIGEvbmV0 L2NvcmUvc2NtLmMKKysrIGIvbmV0L2NvcmUvc2NtLmMKQEAgLTMwNSw2ICszMDUsOCBAQCB2b2lk IHNjbV9kZXRhY2hfZmRzKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNjbV9jb29raWUgKnNj bSkKIAkJCWVyciA9IHB1dF91c2VyKGNtbGVuLCAmY20tPmNtc2dfbGVuKTsKIAkJaWYgKCFlcnIp IHsKIAkJCWNtbGVuID0gQ01TR19TUEFDRShpKnNpemVvZihpbnQpKTsKKwkJCWlmIChtc2ctPm1z Z19jb250cm9sbGVuIDwgY21sZW4pCisJCQkJY21sZW4gPSBtc2ctPm1zZ19jb250cm9sbGVuOwog CQkJbXNnLT5tc2dfY29udHJvbCArPSBjbWxlbjsKIAkJCW1zZy0+bXNnX2NvbnRyb2xsZW4gLT0g Y21sZW47CiAJCX0KLS0gCjIuMS4wCgoKRnJvbSA3YWExMmI3MTg5ODNkMDRiNGNlZDVjNzY0OTUw NGYwMzA3ZjJjODJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtvbGF5IEFsZWtz YW5kcm92IDxuaWtvbGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+CkRhdGU6IEZyaSwgMjAgTm92IDIw MTUgMTM6NTQ6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIDI3LzM3XSBuZXQ6IGlwbXI6IGZpeCBz dGF0aWMgbWZjL2RldiBsZWFrcyBvbiB0YWJsZQogZGVzdHJ1Y3Rpb24KClsgVXBzdHJlYW0gY29t bWl0IDBlNjE1ZTk2MDFhMTVlZmVlYjg5NDJjZjdjZDRkYWRiYTBjOGM1YTcgXQoKV2hlbiBkZXN0 cm95aW5nIGFuIG1ydCB0YWJsZSB0aGUgc3RhdGljIG1mYyBlbnRyaWVzIGFuZCB0aGUgc3RhdGlj CmRldmljZXMgYXJlIGtlcHQsIHdoaWNoIGxlYWRzIHRvIGRldmljZXMgdGhhdCBjYW4gbmV2ZXIg YmUgZGVzdHJveWVkCihiZWNhdXNlIG9mIHJlZmNudCB0YWtlbikgYW5kIGxlYWtlZCBtZW1vcnks IGZvciBleGFtcGxlOgp1bnJlZmVyZW5jZWQgb2JqZWN0IDB4ZmZmZjg4MDAzNGMxNDRjMCAoc2l6 ZSAxOTIpOgogIGNvbW0gIm1mYy1icm9rZW4iLCBwaWQgNDc3NywgamlmZmllcyA0MzIwMzQ5MDU1 IChhZ2UgNDYwMDEuOTY0cykKICBoZXggZHVtcCAoZmlyc3QgMzIgYnl0ZXMpOgogICAgOTggNTMg ZjAgMzQgMDAgODggZmYgZmYgOTggNTMgZjAgMzQgMDAgODggZmYgZmYgIC5TLjQuLi4uLlMuNC4u Li4KICAgIGVmIDBhIDBhIDE0IDAxIDAyIDAzIDA0IDAwIDAwIDAwIDAwIDAxIDAwIDAwIDAwICAu Li4uLi4uLi4uLi4uLi4uCiAgYmFja3RyYWNlOgogICAgWzxmZmZmZmZmZjgxNWMxYjllPl0ga21l bWxlYWtfYWxsb2MrMHg0ZS8weGIwCiAgICBbPGZmZmZmZmZmODExZWE2ZTA+XSBrbWVtX2NhY2hl X2FsbG9jKzB4MTkwLzB4MzAwCiAgICBbPGZmZmZmZmZmODE1OTMxY2I+XSBpcF9tcm91dGVfc2V0 c29ja29wdCsweDVjYi8weDkxMAogICAgWzxmZmZmZmZmZjgxNTNkNTc1Pl0gZG9faXBfc2V0c29j a29wdC5pc3JhLjExKzB4MTA1LzB4ZmYwCiAgICBbPGZmZmZmZmZmODE1M2U0OTA+XSBpcF9zZXRz b2Nrb3B0KzB4MzAvMHhhMAogICAgWzxmZmZmZmZmZjgxNTY0ZTEzPl0gcmF3X3NldHNvY2tvcHQr MHgzMy8weDkwCiAgICBbPGZmZmZmZmZmODE0ZDFlMTQ+XSBzb2NrX2NvbW1vbl9zZXRzb2Nrb3B0 KzB4MTQvMHgyMAogICAgWzxmZmZmZmZmZjgxNGQwYjUxPl0gU3lTX3NldHNvY2tvcHQrMHg3MS8w eGMwCiAgICBbPGZmZmZmZmZmODE1Y2RiZjY+XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4 MTYvMHg3YQogICAgWzxmZmZmZmZmZmZmZmZmZmZmPl0gMHhmZmZmZmZmZmZmZmZmZmZmCgpNYWtl IHN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGNsZWFuZWQgb24gbmV0bnMgZGVzdHJ1Y3Rpb24uCgpT aWduZWQtb2ZmLWJ5OiBOaWtvbGF5IEFsZWtzYW5kcm92IDxuaWtvbGF5QGN1bXVsdXNuZXR3b3Jr cy5jb20+ClJldmlld2VkLWJ5OiBDb25nIFdhbmcgPGN3YW5nQHR3b3BlbnNvdXJjZS5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBu ZXQvaXB2NC9pcG1yLmMgfCAxNSArKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGlu c2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBtci5j IGIvbmV0L2lwdjQvaXBtci5jCmluZGV4IGRmMjg2OTMuLmMzYmZlYmQgMTAwNjQ0Ci0tLSBhL25l dC9pcHY0L2lwbXIuYworKysgYi9uZXQvaXB2NC9pcG1yLmMKQEAgLTEzNCw3ICsxMzQsNyBAQCBz dGF0aWMgaW50IF9faXBtcl9maWxsX21yb3V0ZShzdHJ1Y3QgbXJfdGFibGUgKm1ydCwgc3RydWN0 IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgIHN0cnVjdCBtZmNfY2FjaGUgKmMsIHN0cnVjdCBydG1z ZyAqcnRtKTsKIHN0YXRpYyB2b2lkIG1yb3V0ZV9uZXRsaW5rX2V2ZW50KHN0cnVjdCBtcl90YWJs ZSAqbXJ0LCBzdHJ1Y3QgbWZjX2NhY2hlICptZmMsCiAJCQkJIGludCBjbWQpOwotc3RhdGljIHZv aWQgbXJvdXRlX2NsZWFuX3RhYmxlcyhzdHJ1Y3QgbXJfdGFibGUgKm1ydCk7CitzdGF0aWMgdm9p ZCBtcm91dGVfY2xlYW5fdGFibGVzKHN0cnVjdCBtcl90YWJsZSAqbXJ0LCBib29sIGFsbCk7CiBz dGF0aWMgdm9pZCBpcG1yX2V4cGlyZV9wcm9jZXNzKHVuc2lnbmVkIGxvbmcgYXJnKTsKIAogI2lm ZGVmIENPTkZJR19JUF9NUk9VVEVfTVVMVElQTEVfVEFCTEVTCkBAIC0zNTEsNyArMzUxLDcgQEAg c3RhdGljIHN0cnVjdCBtcl90YWJsZSAqaXBtcl9uZXdfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1 MzIgaWQpCiBzdGF0aWMgdm9pZCBpcG1yX2ZyZWVfdGFibGUoc3RydWN0IG1yX3RhYmxlICptcnQp CiB7CiAJZGVsX3RpbWVyX3N5bmMoJm1ydC0+aXBtcl9leHBpcmVfdGltZXIpOwotCW1yb3V0ZV9j bGVhbl90YWJsZXMobXJ0KTsKKwltcm91dGVfY2xlYW5fdGFibGVzKG1ydCwgdHJ1ZSk7CiAJa2Zy ZWUobXJ0KTsKIH0KIApAQCAtMTIwOSw3ICsxMjA5LDcgQEAgc3RhdGljIGludCBpcG1yX21mY19h ZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbXJfdGFibGUgKm1ydCwKICAqCUNsb3NlIHRoZSBt dWx0aWNhc3Qgc29ja2V0LCBhbmQgY2xlYXIgdGhlIHZpZiB0YWJsZXMgZXRjCiAgKi8KIAotc3Rh dGljIHZvaWQgbXJvdXRlX2NsZWFuX3RhYmxlcyhzdHJ1Y3QgbXJfdGFibGUgKm1ydCkKK3N0YXRp YyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJsZXMoc3RydWN0IG1yX3RhYmxlICptcnQsIGJvb2wgYWxs KQogewogCWludCBpOwogCUxJU1RfSEVBRChsaXN0KTsKQEAgLTEyMTgsOCArMTIxOCw5IEBAIHN0 YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJsZXMoc3RydWN0IG1yX3RhYmxlICptcnQpCiAJLyog U2h1dCBkb3duIGFsbCBhY3RpdmUgdmlmIGVudHJpZXMgKi8KIAogCWZvciAoaSA9IDA7IGkgPCBt cnQtPm1heHZpZjsgaSsrKSB7Ci0JCWlmICghKG1ydC0+dmlmX3RhYmxlW2ldLmZsYWdzICYgVklG Rl9TVEFUSUMpKQotCQkJdmlmX2RlbGV0ZShtcnQsIGksIDAsICZsaXN0KTsKKwkJaWYgKCFhbGwg JiYgKG1ydC0+dmlmX3RhYmxlW2ldLmZsYWdzICYgVklGRl9TVEFUSUMpKQorCQkJY29udGludWU7 CisJCXZpZl9kZWxldGUobXJ0LCBpLCAwLCAmbGlzdCk7CiAJfQogCXVucmVnaXN0ZXJfbmV0ZGV2 aWNlX21hbnkoJmxpc3QpOwogCkBAIC0xMjI3LDcgKzEyMjgsNyBAQCBzdGF0aWMgdm9pZCBtcm91 dGVfY2xlYW5fdGFibGVzKHN0cnVjdCBtcl90YWJsZSAqbXJ0KQogCiAJZm9yIChpID0gMDsgaSA8 IE1GQ19MSU5FUzsgaSsrKSB7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjLCBuZXh0LCAm bXJ0LT5tZmNfY2FjaGVfYXJyYXlbaV0sIGxpc3QpIHsKLQkJCWlmIChjLT5tZmNfZmxhZ3MgJiBN RkNfU1RBVElDKQorCQkJaWYgKCFhbGwgJiYgKGMtPm1mY19mbGFncyAmIE1GQ19TVEFUSUMpKQog CQkJCWNvbnRpbnVlOwogCQkJbGlzdF9kZWxfcmN1KCZjLT5saXN0KTsKIAkJCW1yb3V0ZV9uZXRs aW5rX2V2ZW50KG1ydCwgYywgUlRNX0RFTFJPVVRFKTsKQEAgLTEyNjIsNyArMTI2Myw3IEBAIHN0 YXRpYyB2b2lkIG1ydHNvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKQogCQkJCQkJICAgIE5F VENPTkZBX0lGSU5ERVhfQUxMLAogCQkJCQkJICAgIG5ldC0+aXB2NC5kZXZjb25mX2FsbCk7CiAJ CQlSQ1VfSU5JVF9QT0lOVEVSKG1ydC0+bXJvdXRlX3NrLCBOVUxMKTsKLQkJCW1yb3V0ZV9jbGVh bl90YWJsZXMobXJ0KTsKKwkJCW1yb3V0ZV9jbGVhbl90YWJsZXMobXJ0LCBmYWxzZSk7CiAJCX0K IAl9CiAJcnRubF91bmxvY2soKTsKLS0gCjIuMS4wCgoKRnJvbSBiYmQzODNhM2VhOTkxNzgwY2Zj NDFmYjg5YjA2M2Q0YTZiNWYwYzIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtv bGF5IEFsZWtzYW5kcm92IDxuaWtvbGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+CkRhdGU6IEZyaSwg MjAgTm92IDIwMTUgMTM6NTQ6MjAgKzAxMDAKU3ViamVjdDogW1BBVENIIDI4LzM3XSBuZXQ6IGlw Nm1yOiBmaXggc3RhdGljIG1mYy9kZXYgbGVha3Mgb24gdGFibGUKIGRlc3RydWN0aW9uCgpbIFVw c3RyZWFtIGNvbW1pdCA0YzY5ODA0NjJmMzJiNGYyODJjNWQ4ZTVmN2VhODA3MGUyOTM3NzI1IF0K ClNpbWlsYXIgdG8gaXB2NCwgd2hlbiBkZXN0cm95aW5nIGFuIG1ydCB0YWJsZSB0aGUgc3RhdGlj IG1mYyBlbnRyaWVzIGFuZAp0aGUgc3RhdGljIGRldmljZXMgYXJlIGtlcHQsIHdoaWNoIGxlYWRz IHRvIGRldmljZXMgdGhhdCBjYW4gbmV2ZXIgYmUKZGVzdHJveWVkIChiZWNhdXNlIG9mIHJlZmNu dCB0YWtlbikgYW5kIGxlYWtlZCBtZW1vcnkuIE1ha2Ugc3VyZSB0aGF0CmV2ZXJ5dGhpbmcgaXMg Y2xlYW5lZCB1cCBvbiBuZXRucyBkZXN0cnVjdGlvbi4KCkZpeGVzOiA4MjI5ZWZkYWVmMWUgKCJu ZXRuczogaXA2bXI6IGVuYWJsZSBuYW1lc3BhY2Ugc3VwcG9ydCBpbiBpcHY2IG11bHRpY2FzdCBm b3J3YXJkaW5nIGNvZGUiKQpDQzogQmVuamFtaW4gVGhlcnkgPGJlbmphbWluLnRoZXJ5QGJ1bGwu bmV0PgpTaWduZWQtb2ZmLWJ5OiBOaWtvbGF5IEFsZWtzYW5kcm92IDxuaWtvbGF5QGN1bXVsdXNu ZXR3b3Jrcy5jb20+ClJldmlld2VkLWJ5OiBDb25nIFdhbmcgPGN3YW5nQHR3b3BlbnNvdXJjZS5j b20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4K LS0tCiBuZXQvaXB2Ni9pcDZtci5jIHwgMTUgKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgOCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9pcHY2 L2lwNm1yLmMgYi9uZXQvaXB2Ni9pcDZtci5jCmluZGV4IDVmMzYyNjYuLmE3YWVmNGIgMTAwNjQ0 Ci0tLSBhL25ldC9pcHY2L2lwNm1yLmMKKysrIGIvbmV0L2lwdjYvaXA2bXIuYwpAQCAtMTE4LDcg KzExOCw3IEBAIHN0YXRpYyB2b2lkIG1yNl9uZXRsaW5rX2V2ZW50KHN0cnVjdCBtcjZfdGFibGUg Km1ydCwgc3RydWN0IG1mYzZfY2FjaGUgKm1mYywKIAkJCSAgICAgIGludCBjbWQpOwogc3RhdGlj IGludCBpcDZtcl9ydG1fZHVtcHJvdXRlKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgICAg c3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTsKLXN0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90 YWJsZXMoc3RydWN0IG1yNl90YWJsZSAqbXJ0KTsKK3N0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90 YWJsZXMoc3RydWN0IG1yNl90YWJsZSAqbXJ0LCBib29sIGFsbCk7CiBzdGF0aWMgdm9pZCBpcG1y X2V4cGlyZV9wcm9jZXNzKHVuc2lnbmVkIGxvbmcgYXJnKTsKIAogI2lmZGVmIENPTkZJR19JUFY2 X01ST1VURV9NVUxUSVBMRV9UQUJMRVMKQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMgc3RydWN0 IG1yNl90YWJsZSAqaXA2bXJfbmV3X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKQogc3Rh dGljIHZvaWQgaXA2bXJfZnJlZV90YWJsZShzdHJ1Y3QgbXI2X3RhYmxlICptcnQpCiB7CiAJZGVs X3RpbWVyX3N5bmMoJm1ydC0+aXBtcl9leHBpcmVfdGltZXIpOwotCW1yb3V0ZV9jbGVhbl90YWJs ZXMobXJ0KTsKKwltcm91dGVfY2xlYW5fdGFibGVzKG1ydCwgdHJ1ZSk7CiAJa2ZyZWUobXJ0KTsK IH0KIApAQCAtMTU0Myw3ICsxNTQzLDcgQEAgc3RhdGljIGludCBpcDZtcl9tZmNfYWRkKHN0cnVj dCBuZXQgKm5ldCwgc3RydWN0IG1yNl90YWJsZSAqbXJ0LAogICoJQ2xvc2UgdGhlIG11bHRpY2Fz dCBzb2NrZXQsIGFuZCBjbGVhciB0aGUgdmlmIHRhYmxlcyBldGMKICAqLwogCi1zdGF0aWMgdm9p ZCBtcm91dGVfY2xlYW5fdGFibGVzKHN0cnVjdCBtcjZfdGFibGUgKm1ydCkKK3N0YXRpYyB2b2lk IG1yb3V0ZV9jbGVhbl90YWJsZXMoc3RydWN0IG1yNl90YWJsZSAqbXJ0LCBib29sIGFsbCkKIHsK IAlpbnQgaTsKIAlMSVNUX0hFQUQobGlzdCk7CkBAIC0xNTUzLDggKzE1NTMsOSBAQCBzdGF0aWMg dm9pZCBtcm91dGVfY2xlYW5fdGFibGVzKHN0cnVjdCBtcjZfdGFibGUgKm1ydCkKIAkgKglTaHV0 IGRvd24gYWxsIGFjdGl2ZSB2aWYgZW50cmllcwogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBtcnQt Pm1heHZpZjsgaSsrKSB7Ci0JCWlmICghKG1ydC0+dmlmNl90YWJsZVtpXS5mbGFncyAmIFZJRkZf U1RBVElDKSkKLQkJCW1pZjZfZGVsZXRlKG1ydCwgaSwgJmxpc3QpOworCQlpZiAoIWFsbCAmJiAo bXJ0LT52aWY2X3RhYmxlW2ldLmZsYWdzICYgVklGRl9TVEFUSUMpKQorCQkJY29udGludWU7CisJ CW1pZjZfZGVsZXRlKG1ydCwgaSwgJmxpc3QpOwogCX0KIAl1bnJlZ2lzdGVyX25ldGRldmljZV9t YW55KCZsaXN0KTsKIApAQCAtMTU2Myw3ICsxNTY0LDcgQEAgc3RhdGljIHZvaWQgbXJvdXRlX2Ns ZWFuX3RhYmxlcyhzdHJ1Y3QgbXI2X3RhYmxlICptcnQpCiAJICovCiAJZm9yIChpID0gMDsgaSA8 IE1GQzZfTElORVM7IGkrKykgewogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYywgbmV4dCwg Jm1ydC0+bWZjNl9jYWNoZV9hcnJheVtpXSwgbGlzdCkgewotCQkJaWYgKGMtPm1mY19mbGFncyAm IE1GQ19TVEFUSUMpCisJCQlpZiAoIWFsbCAmJiAoYy0+bWZjX2ZsYWdzICYgTUZDX1NUQVRJQykp CiAJCQkJY29udGludWU7CiAJCQl3cml0ZV9sb2NrX2JoKCZtcnRfbG9jayk7CiAJCQlsaXN0X2Rl bCgmYy0+bGlzdCk7CkBAIC0xNjI2LDcgKzE2MjcsNyBAQCBpbnQgaXA2bXJfc2tfZG9uZShzdHJ1 Y3Qgc29jayAqc2spCiAJCQkJCQkgICAgIG5ldC0+aXB2Ni5kZXZjb25mX2FsbCk7CiAJCQl3cml0 ZV91bmxvY2tfYmgoJm1ydF9sb2NrKTsKIAotCQkJbXJvdXRlX2NsZWFuX3RhYmxlcyhtcnQpOwor CQkJbXJvdXRlX2NsZWFuX3RhYmxlcyhtcnQsIGZhbHNlKTsKIAkJCWVyciA9IDA7CiAJCQlicmVh azsKIAkJfQotLSAKMi4xLjAKCgpGcm9tIGE2ODNmZTllNmJkNTE3YzFlMGFmNzRhNGU2YWY0MzRj OTMyNTI0ZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEFhcm8gS29za2luZW4gPGFh cm8ua29za2luZW5AaWtpLmZpPgpEYXRlOiBTdW4sIDIyIE5vdiAyMDE1IDAxOjA4OjU0ICswMjAw ClN1YmplY3Q6IFtQQVRDSCAyOS8zN10gYnJvYWRjb206IGZpeCBQSFlfSURfQkNNNTQ4MSBlbnRy eSBpbiB0aGUgaWQgdGFibGUKClsgVXBzdHJlYW0gY29tbWl0IDNjMjVhODYwZDE3YjczNzg4MjJm MzVkOGM5MTQxZGI5NTA3ZTNiZWIgXQoKQ29tbWl0IGZjYjI2ZWM1YjE4ZCAoImJyb2FkY29tOiBt b3ZlIGFsbCBQSFlfSUQncyB0byBoZWFkZXIiKQp1cGRhdGVkIGJyb2FkY29tX3RibCB0byB1c2Ug UEhZX0lEcywgYnV0IGluY29ycmVjdGx5IHJlcGxhY2VkIDB4MDE0M2JjYTAKd2l0aCBQSFlfSURf QkNNNTQ4MiAobWFraW5nIGEgZHVwbGljYXRlIGVudHJ5LCBhbmQgY29tcGxldGVseSBvbWl0dGlu Zwp0aGUgb3JpZ2luYWwpLiBGaXggdGhhdC4KCkZpeGVzOiBmY2IyNmVjNWIxOGQgKCJicm9hZGNv bTogbW92ZSBhbGwgUEhZX0lEJ3MgdG8gaGVhZGVyIikKU2lnbmVkLW9mZi1ieTogQWFybyBLb3Nr aW5lbiA8YWFyby5rb3NraW5lbkBpa2kuZmk+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxl ciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYyB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jIGIvZHJpdmVycy9uZXQvcGh5L2Jy b2FkY29tLmMKaW5kZXggOWM3MTI5NS4uODVlNjQwNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L3BoeS9icm9hZGNvbS5jCisrKyBiL2RyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jCkBAIC02NzUs NyArNjc1LDcgQEAgc3RhdGljIHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBi cm9hZGNvbV90YmxbXSA9IHsKIAl7IFBIWV9JRF9CQ001NDYxLCAweGZmZmZmZmYwIH0sCiAJeyBQ SFlfSURfQkNNNTQ2MTZTLCAweGZmZmZmZmYwIH0sCiAJeyBQSFlfSURfQkNNNTQ2NCwgMHhmZmZm ZmZmMCB9LAotCXsgUEhZX0lEX0JDTTU0ODIsIDB4ZmZmZmZmZjAgfSwKKwl7IFBIWV9JRF9CQ001 NDgxLCAweGZmZmZmZmYwIH0sCiAJeyBQSFlfSURfQkNNNTQ4MiwgMHhmZmZmZmZmMCB9LAogCXsg UEhZX0lEX0JDTTUwNjEwLCAweGZmZmZmZmYwIH0sCiAJeyBQSFlfSURfQkNNNTA2MTBNLCAweGZm ZmZmZmYwIH0sCi0tIAoyLjEuMAoKCkZyb20gMjZkNDMwZTY5YjFhMTkwNjgzY2YzZmY1ZmVlZDM1 ZTgxZTEzZDYyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP01pY2hh bD0yMEt1YmU9QzQ9OERlaz89IDxta3ViZWNla0BzdXNlLmN6PgpEYXRlOiBUdWUsIDI0IE5vdiAy MDE1IDE1OjA3OjExICswMTAwClN1YmplY3Q6IFtQQVRDSCAzMC8zN10gaXB2NjogZGlzdGluZ3Vp c2ggZnJhZyBxdWV1ZXMgYnkgZGV2aWNlIGZvciBtdWx0aWNhc3QKIGFuZCBsaW5rLWxvY2FsIHBh Y2tldHMKClsgVXBzdHJlYW0gY29tbWl0IDI2NDY0MGZjMmM1ZjRmOTEzZGI1YzczZmEzZWIxZWFk MmM0NWU5ZDcgXQoKSWYgYSBmcmFnbWVudGVkIG11bHRpY2FzdCBwYWNrZXQgaXMgcmVjZWl2ZWQg b24gYW4gZXRoZXJuZXQgZGV2aWNlIHdoaWNoCmhhcyBhbiBhY3RpdmUgbWFjdmxhbiBvbiB0b3Ag b2YgaXQsIGVhY2ggZnJhZ21lbnQgaXMgZHVwbGljYXRlZCBhbmQKcmVjZWl2ZWQgYm90aCBvbiB0 aGUgdW5kZXJseWluZyBkZXZpY2UgYW5kIHRoZSBtYWN2bGFuLiBJZiBzb21lCmZyYWdtZW50cyBm b3IgbWFjdmxhbiBhcmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUgd2hvbGUgcGFja2V0IGZvciB0aGUK dW5kZXJseWluZyBkZXZpY2UgaXMgcmVhc3NlbWJsZWQsIHRoZSAib3ZlcmxhcHBpbmcgZnJhZ21l bnRzIiB0ZXN0IGluCmlwNl9mcmFnX3F1ZXVlKCkgZGlzY2FyZHMgdGhlIHdob2xlIGZyYWdtZW50 IHF1ZXVlLgoKVG8gcmVzb2x2ZSB0aGlzLCBhZGQgZGV2aWNlIGlmaW5kZXggdG8gdGhlIHNlYXJj aCBrZXkgYW5kIHJlcXVpcmUgaXQgdG8KbWF0Y2ggcmVhc3NlbWJsaW5nIG11bHRpY2FzdCBwYWNr ZXRzIGFuZCBwYWNrZXRzIHRvIGxpbmstbG9jYWwKYWRkcmVzc2VzLgoKTm90ZTogc2ltaWxhciBw YXRjaCBoYXMgYmVlbiBhbHJlYWR5IHN1Ym1pdHRlZCBieSBZb3NoaWZ1amkgSGlkZWFraSBpbgoK ICBodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvMjIwOTc5LwoKYnV0IGdvdCBsb3N0 IGFuZCBmb3Jnb3R0ZW4gZm9yIHNvbWUgcmVhc29uLgoKU2lnbmVkLW9mZi1ieTogTWljaGFsIEt1 YmVjZWsgPG1rdWJlY2VrQHN1c2UuY3o+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9pcHY2LmggICAgICAgICAgICAg ICAgICAgICAgfCAgMSArCiBuZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMg fCAgNSArKystLQogbmV0L2lwdjYvcmVhc3NlbWJseS5jICAgICAgICAgICAgICAgICAgIHwgMTAg KysrKysrKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lwdjYu aAppbmRleCA4MmRiZGIwLi4xM2FlY2QxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcHY2LmgK KysrIGIvaW5jbHVkZS9uZXQvaXB2Ni5oCkBAIC00OTAsNiArNDkwLDcgQEAgc3RydWN0IGlwNl9j cmVhdGVfYXJnIHsKIAl1MzIgdXNlcjsKIAljb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNyYzsKIAlj b25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRzdDsKKwlpbnQgaWlmOwogCXU4IGVjbjsKIH07CiAKZGlm ZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYyBiL25ldC9p cHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYwppbmRleCA2ZDAyNDk4Li4yYTQ2ODJj IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKKysr IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jCkBAIC0xOTAsNyArMTkw LDcgQEAgc3RhdGljIHZvaWQgbmZfY3RfZnJhZzZfZXhwaXJlKHVuc2lnbmVkIGxvbmcgZGF0YSkK IC8qIENyZWF0aW9uIHByaW1pdGl2ZXMuICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmcmFnX3F1 ZXVlICpmcV9maW5kKHN0cnVjdCBuZXQgKm5ldCwgX19iZTMyIGlkLAogCQkJCQkgdTMyIHVzZXIs IHN0cnVjdCBpbjZfYWRkciAqc3JjLAotCQkJCQkgc3RydWN0IGluNl9hZGRyICpkc3QsIHU4IGVj bikKKwkJCQkJIHN0cnVjdCBpbjZfYWRkciAqZHN0LCBpbnQgaWlmLCB1OCBlY24pCiB7CiAJc3Ry dWN0IGluZXRfZnJhZ19xdWV1ZSAqcTsKIAlzdHJ1Y3QgaXA2X2NyZWF0ZV9hcmcgYXJnOwpAQCAt MjAwLDYgKzIwMCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZyYWdfcXVldWUgKmZxX2ZpbmQo c3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgaWQsCiAJYXJnLnVzZXIgPSB1c2VyOwogCWFyZy5zcmMg PSBzcmM7CiAJYXJnLmRzdCA9IGRzdDsKKwlhcmcuaWlmID0gaWlmOwogCWFyZy5lY24gPSBlY247 CiAKIAlsb2NhbF9iaF9kaXNhYmxlKCk7CkBAIC02MDMsNyArNjA0LDcgQEAgc3RydWN0IHNrX2J1 ZmYgKm5mX2N0X2ZyYWc2X2dhdGhlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgdXNlcikKIAlm aGRyID0gKHN0cnVjdCBmcmFnX2hkciAqKXNrYl90cmFuc3BvcnRfaGVhZGVyKGNsb25lKTsKIAog CWZxID0gZnFfZmluZChuZXQsIGZoZHItPmlkZW50aWZpY2F0aW9uLCB1c2VyLCAmaGRyLT5zYWRk ciwgJmhkci0+ZGFkZHIsCi0JCSAgICAgaXA2X2ZyYWdfZWNuKGhkcikpOworCQkgICAgIHNrYi0+ ZGV2ID8gc2tiLT5kZXYtPmlmaW5kZXggOiAwLCBpcDZfZnJhZ19lY24oaGRyKSk7CiAJaWYgKGZx ID09IE5VTEwpIHsKIAkJcHJfZGVidWcoIkNhbid0IGZpbmQgYW5kIGNhbid0IGNyZWF0ZSBuZXcg cXVldWVcbiIpOwogCQlnb3RvIHJldF9vcmlnOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmVhc3Nl bWJseS5jIGIvbmV0L2lwdjYvcmVhc3NlbWJseS5jCmluZGV4IGYxMTU5YmIuLjA0MDEzYTkgMTAw NjQ0Ci0tLSBhL25ldC9pcHY2L3JlYXNzZW1ibHkuYworKysgYi9uZXQvaXB2Ni9yZWFzc2VtYmx5 LmMKQEAgLTEwOCw3ICsxMDgsMTAgQEAgYm9vbCBpcDZfZnJhZ19tYXRjaChjb25zdCBzdHJ1Y3Qg aW5ldF9mcmFnX3F1ZXVlICpxLCBjb25zdCB2b2lkICphKQogCXJldHVybglmcS0+aWQgPT0gYXJn LT5pZCAmJgogCQlmcS0+dXNlciA9PSBhcmctPnVzZXIgJiYKIAkJaXB2Nl9hZGRyX2VxdWFsKCZm cS0+c2FkZHIsIGFyZy0+c3JjKSAmJgotCQlpcHY2X2FkZHJfZXF1YWwoJmZxLT5kYWRkciwgYXJn LT5kc3QpOworCQlpcHY2X2FkZHJfZXF1YWwoJmZxLT5kYWRkciwgYXJnLT5kc3QpICYmCisJCShh cmctPmlpZiA9PSBmcS0+aWlmIHx8CisJCSAhKGlwdjZfYWRkcl90eXBlKGFyZy0+ZHN0KSAmIChJ UFY2X0FERFJfTVVMVElDQVNUIHwKKwkJCQkJICAgICAgIElQVjZfQUREUl9MSU5LTE9DQUwpKSk7 CiB9CiBFWFBPUlRfU1lNQk9MKGlwNl9mcmFnX21hdGNoKTsKIApAQCAtMTgwLDcgKzE4Myw3IEBA IHN0YXRpYyB2b2lkIGlwNl9mcmFnX2V4cGlyZSh1bnNpZ25lZCBsb25nIGRhdGEpCiAKIHN0YXRp YyBzdHJ1Y3QgZnJhZ19xdWV1ZSAqCiBmcV9maW5kKHN0cnVjdCBuZXQgKm5ldCwgX19iZTMyIGlk LCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNyYywKLQljb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRz dCwgdTggZWNuKQorCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZHN0LCBpbnQgaWlmLCB1OCBlY24p CiB7CiAJc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcTsKIAlzdHJ1Y3QgaXA2X2NyZWF0ZV9hcmcg YXJnOwpAQCAtMTkwLDYgKzE5Myw3IEBAIGZxX2ZpbmQoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIg aWQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc3JjLAogCWFyZy51c2VyID0gSVA2X0RFRlJBR19M T0NBTF9ERUxJVkVSOwogCWFyZy5zcmMgPSBzcmM7CiAJYXJnLmRzdCA9IGRzdDsKKwlhcmcuaWlm ID0gaWlmOwogCWFyZy5lY24gPSBlY247CiAKIAloYXNoID0gaW5ldDZfaGFzaF9mcmFnKGlkLCBz cmMsIGRzdCk7CkBAIC01NTEsNyArNTU1LDcgQEAgc3RhdGljIGludCBpcHY2X2ZyYWdfcmN2KHN0 cnVjdCBza19idWZmICpza2IpCiAJfQogCiAJZnEgPSBmcV9maW5kKG5ldCwgZmhkci0+aWRlbnRp ZmljYXRpb24sICZoZHItPnNhZGRyLCAmaGRyLT5kYWRkciwKLQkJICAgICBpcDZfZnJhZ19lY24o aGRyKSk7CisJCSAgICAgc2tiLT5kZXYgPyBza2ItPmRldi0+aWZpbmRleCA6IDAsIGlwNl9mcmFn X2VjbihoZHIpKTsKIAlpZiAoZnEpIHsKIAkJaW50IHJldDsKIAotLSAKMi4xLjAKCgpGcm9tIDMw NDkzZmIyOWJjNWFmNDhlZTEzYjQ0ZmRlMGUwOWUyNWVlMmQzOGUgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IFF1ZW50aW4gQ2FzYXNub3ZhcyA8cXVlbnRpbi5jYXNhc25vdmFzQG9yYWNs ZS5jb20+CkRhdGU6IFR1ZSwgMjQgTm92IDIwMTUgMTc6MTM6MjEgLTA1MDAKU3ViamVjdDogW1BB VENIIDMxLzM3XSBSRFM6IGZpeCByYWNlIGNvbmRpdGlvbiB3aGVuIHNlbmRpbmcgYSBtZXNzYWdl IG9uCiB1bmJvdW5kIHNvY2tldAoKWyBVcHN0cmVhbSBjb21taXQgOGM3MTg4YjIzNDc0Y2NhMDE3 YjNlZjM1NGM0YTU4NDU2ZjY4MzAzYSBdCgpTYXNoYSdzIGZvdW5kIGEgTlVMTCBwb2ludGVyIGRl cmVmZXJlbmNlIGluIHRoZSBSRFMgY29ubmVjdGlvbiBjb2RlIHdoZW4Kc2VuZGluZyBhIG1lc3Nh Z2UgdG8gYW4gYXBwYXJlbnRseSB1bmJvdW5kIHNvY2tldC4gIFRoZSBwcm9ibGVtIGlzIGNhdXNl ZApieSB0aGUgY29kZSBjaGVja2luZyBpZiB0aGUgc29ja2V0IGlzIGJvdW5kIGluIHJkc19zZW5k bXNnKCksIHdoaWNoIGNoZWNrcwp0aGUgcnNfYm91bmRfYWRkciBmaWVsZCB3aXRob3V0IHRha2lu ZyBhIGxvY2sgb24gdGhlIHNvY2tldC4gIFRoaXMgb3BlbnMgYQpyYWNlIHdoZXJlIHJzX2JvdW5k X2FkZHIgaXMgdGVtcG9yYXJpbHkgc2V0IGJ1dCB3aGVyZSB0aGUgdHJhbnNwb3J0IGlzIG5vdApp biByZHNfYmluZCgpLCBsZWFkaW5nIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4g dHJ5aW5nIHRvCmRlcmVmZXJlbmNlICd0cmFucycgaW4gX19yZHNfY29ubl9jcmVhdGUoKS4KClZl Z2FyZCB3cm90ZSBhIHJlcHJvZHVjZXIgZm9yIHRoaXMgaXNzdWUsIHNvIGtpbmRseSBhc2sgaGlt IHRvIHNoYXJlIGlmCnlvdSdyZSBpbnRlcmVzdGVkLgoKSSBjYW5ub3QgcmVwcm9kdWNlIHRoZSBO VUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgdXNpbmcgVmVnYXJkJ3MgcmVwcm9kdWNlcgp3aXRoIHRo aXMgcGF0Y2gsIHdoZXJlYXMgSSBjb3VsZCB3aXRob3V0LgoKQ29tcGxldGUgZWFybGllciBpbmNv bXBsZXRlIGZpeCB0byBDVkUtMjAxNS02OTM3OgoKICA3NGU5OGViMDg1ODggKCJSRFM6IHZlcmlm eSB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgZXhpc3RzIGJlZm9yZSBjcmVhdGluZyBhIGNvbm5l Y3Rpb24iKQoKQ2M6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KQ2M6IHN0 YWJsZUB2Z2VyLmtlcm5lbC5vcmcKClJldmlld2VkLWJ5OiBWZWdhcmQgTm9zc3VtIDx2ZWdhcmQu bm9zc3VtQG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGEubGV2aW5A b3JhY2xlLmNvbT4KQWNrZWQtYnk6IFNhbnRvc2ggU2hpbGlta2FyIDxzYW50b3NoLnNoaWxpbWth ckBvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBRdWVudGluIENhc2Fzbm92YXMgPHF1ZW50aW4u Y2FzYXNub3Zhc0BvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3Jkcy9jb25uZWN0aW9uLmMgfCA2IC0tLS0tLQog bmV0L3Jkcy9zZW5kLmMgICAgICAgfCA0ICsrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRp b25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9yZHMvY29ubmVjdGlvbi5j IGIvbmV0L3Jkcy9jb25uZWN0aW9uLmMKaW5kZXggOWQ2NjcwNS4uZGE2ZGE1NyAxMDA2NDQKLS0t IGEvbmV0L3Jkcy9jb25uZWN0aW9uLmMKKysrIGIvbmV0L3Jkcy9jb25uZWN0aW9uLmMKQEAgLTE4 NywxMiArMTg3LDYgQEAgbmV3X2Nvbm46CiAJCX0KIAl9CiAKLQlpZiAodHJhbnMgPT0gTlVMTCkg ewotCQlrbWVtX2NhY2hlX2ZyZWUocmRzX2Nvbm5fc2xhYiwgY29ubik7Ci0JCWNvbm4gPSBFUlJf UFRSKC1FTk9ERVYpOwotCQlnb3RvIG91dDsKLQl9Ci0KIAljb25uLT5jX3RyYW5zID0gdHJhbnM7 CiAKIAlyZXQgPSB0cmFucy0+Y29ubl9hbGxvYyhjb25uLCBnZnApOwpkaWZmIC0tZ2l0IGEvbmV0 L3Jkcy9zZW5kLmMgYi9uZXQvcmRzL3NlbmQuYwppbmRleCBlOTQzMGY1Li43YjMwYzBmIDEwMDY0 NAotLS0gYS9uZXQvcmRzL3NlbmQuYworKysgYi9uZXQvcmRzL3NlbmQuYwpAQCAtOTg2LDExICs5 ODYsMTMgQEAgaW50IHJkc19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2do ZHIgKm1zZywgc2l6ZV90IHBheWxvYWRfbGVuKQogCQlyZWxlYXNlX3NvY2soc2spOwogCX0KIAot CS8qIHJhY2luZyB3aXRoIGFub3RoZXIgdGhyZWFkIGJpbmRpbmcgc2VlbXMgb2sgaGVyZSAqLwor CWxvY2tfc29jayhzayk7CiAJaWYgKGRhZGRyID09IDAgfHwgcnMtPnJzX2JvdW5kX2FkZHIgPT0g MCkgeworCQlyZWxlYXNlX3NvY2soc2spOwogCQlyZXQgPSAtRU5PVENPTk47IC8qIFhYWCBub3Qg YSBncmVhdCBlcnJubyAqLwogCQlnb3RvIG91dDsKIAl9CisJcmVsZWFzZV9zb2NrKHNrKTsKIAog CS8qIHNpemUgb2Ygcm0gaW5jbHVkaW5nIGFsbCBzZ3MgKi8KIAlyZXQgPSByZHNfcm1fc2l6ZSht c2csIHBheWxvYWRfbGVuKTsKLS0gCjIuMS4wCgoKRnJvbSA4OTM5OTU0MTU0MGUyMTA0OThkNzU1 ZDM3YjZjMjQ3NzgxOGU2YWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwg Qm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpEYXRlOiBNb24sIDMwIE5vdiAyMDE1IDEz OjAyOjU2ICswMTAwClN1YmplY3Q6IFtQQVRDSCAzMi8zN10gYnBmLCBhcnJheTogZml4IGhlYXAg b3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiB1cGRhdGluZwogZWxlbWVudHMKClsgVXBzdHJlYW0g Y29tbWl0IGZiY2E5ZDJkMzVjNmVmMWIzMjNmYWU3NWNjOTU0NTAwNWJhMjUwOTcgXQoKRHVyaW5n IG93biByZXZpZXcgYnV0IGFsc28gcmVwb3J0ZWQgYnkgRG1pdHJ5J3Mgc3l6a2FsbGVyIFsxXSBp dCBoYXMgYmVlbgpub3RpY2VkIHRoYXQgd2UgdHJpZ2dlciBhIGhlYXAgb3V0LW9mLWJvdW5kcyBh Y2Nlc3Mgb24gZUJQRiBhcnJheSBtYXBzCndoZW4gdXBkYXRpbmcgZWxlbWVudHMuIFRoaXMgaGFw cGVucyB3aXRoIGVhY2ggbWFwIHdob3NlIG1hcC0+dmFsdWVfc2l6ZQooc3BlY2lmaWVkIGR1cmlu ZyBtYXAgY3JlYXRpb24gdGltZSkgaXMgbm90IG11bHRpcGxlIG9mIDggYnl0ZXMuCgpJbiBhcnJh eV9tYXBfYWxsb2MoKSwgZWxlbV9zaXplIGlzIHJvdW5kX3VwKGF0dHItPnZhbHVlX3NpemUsIDgp IGFuZAp1c2VkIHRvIGFsaWduIGFycmF5IG1hcCBzbG90cyBmb3IgZmFzdGVyIGFjY2Vzcy4gSG93 ZXZlciwgaW4gZnVuY3Rpb24KYXJyYXlfbWFwX3VwZGF0ZV9lbGVtKCksIHdlIHVwZGF0ZSB0aGUg ZWxlbWVudCBhcyAuLi4KCm1lbWNweShhcnJheS0+dmFsdWUgKyBhcnJheS0+ZWxlbV9zaXplICog aW5kZXgsIHZhbHVlLCBhcnJheS0+ZWxlbV9zaXplKTsKCi4uLiB3aGVyZSB3ZSBhY2Nlc3MgJ3Zh bHVlJyBvdXQtb2YtYm91bmRzLCBzaW5jZSBpdCB3YXMgYWxsb2NhdGVkIGZyb20KbWFwX3VwZGF0 ZV9lbGVtKCkgZnJvbSBzeXNjYWxsIHNpZGUgYXMga21hbGxvYyhtYXAtPnZhbHVlX3NpemUsIEdG UF9VU0VSKQphbmQgbGF0ZXIgb24gY29waWVkIHRocm91Z2ggY29weV9mcm9tX3VzZXIodmFsdWUs IHV2YWx1ZSwgbWFwLT52YWx1ZV9zaXplKS4KVGh1cywgdXAgdG8gNyBieXRlcywgd2UgY2FuIGFj Y2VzcyBvdXQtb2YtYm91bmRzLgoKU2FtZSBjb3VsZCBoYXBwZW4gZnJvbSB3aXRoaW4gYW4gZUJQ RiBwcm9ncmFtLCB3aGVyZSBpbiB3b3JzdCBjYXNlIHdlCmFjY2VzcyBiZXlvbmQgYW4gZUJQRiBw cm9ncmFtJ3MgZGVzaWduYXRlZCBzdGFjay4KClNpbmNlIDFiZTdmNzVkMTY2OCAoImJwZjogZW5h YmxlIG5vbi1yb290IGVCUEYgcHJvZ3JhbXMiKSBkaWRuJ3QgaGl0IGFuCm9mZmljaWFsIHJlbGVh c2UgeWV0LCBpdCBvbmx5IGFmZmVjdHMgcHJpdmlsZWRnZWQgdXNlcnMuCgpJbiBjYXNlIG9mIGFy cmF5X21hcF9sb29rdXBfZWxlbSgpLCB0aGUgdmVyaWZpZXIgcHJldmVudHMgZUJQRiBwcm9ncmFt cwpmcm9tIGFjY2Vzc2luZyBiZXlvbmQgbWFwLT52YWx1ZV9zaXplIHRocm91Z2ggY2hlY2tfbWFw X2FjY2VzcygpLiBBbHNvCmZyb20gc3lzY2FsbCBzaWRlIG1hcF9sb29rdXBfZWxlbSgpIG9ubHkg Y29waWVzIG1hcC0+dmFsdWVfc2l6ZSBiYWNrIHRvCnVzZXIsIHNvIG5vdGhpbmcgY291bGQgbGVh ay4KCiAgWzFdIGh0dHA6Ly9naXRodWIuY29tL2dvb2dsZS9zeXprYWxsZXIKCkZpeGVzOiAyOGZi Y2ZhMDhkOGUgKCJicGY6IGFkZCBhcnJheSB0eXBlIG9mIGVCUEYgbWFwcyIpClJlcG9ydGVkLWJ5 OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhbmll bCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkFja2VkLWJ5OiBBbGV4ZWkgU3Rhcm92 b2l0b3YgPGFzdEBrZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQoga2VybmVsL2JwZi9hcnJheW1hcC5jIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv a2VybmVsL2JwZi9hcnJheW1hcC5jIGIva2VybmVsL2JwZi9hcnJheW1hcC5jCmluZGV4IGNiMzEy MjkuLjM0MjY1YTEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvYXJyYXltYXAuYworKysgYi9rZXJu ZWwvYnBmL2FycmF5bWFwLmMKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgaW50IGFycmF5X21h cF91cGRhdGVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHZvaWQgKnZhbHVl LAogCQkvKiBhbGwgZWxlbWVudHMgYWxyZWFkeSBleGlzdCAqLwogCQlyZXR1cm4gLUVFWElTVDsK IAotCW1lbWNweShhcnJheS0+dmFsdWUgKyBhcnJheS0+ZWxlbV9zaXplICogaW5kZXgsIHZhbHVl LCBhcnJheS0+ZWxlbV9zaXplKTsKKwltZW1jcHkoYXJyYXktPnZhbHVlICsgYXJyYXktPmVsZW1f c2l6ZSAqIGluZGV4LCB2YWx1ZSwgbWFwLT52YWx1ZV9zaXplKTsKIAlyZXR1cm4gMDsKIH0KIAot LSAKMi4xLjAKCgpGcm9tIDg4YTUyY2YyZGU3NDBjNGM3NzY4NGMyZjc0ZTZjNThhMDA0YzFmNDUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29v Z2xlLmNvbT4KRGF0ZTogU3VuLCAyOSBOb3YgMjAxNSAxOTozNzo1NyAtMDgwMApTdWJqZWN0OiBb UEFUQ0ggMzMvMzddIGlwdjY6IGFkZCBjb21wbGV0ZSByY3UgcHJvdGVjdGlvbiBhcm91bmQgbnAt Pm9wdAoKWyBVcHN0cmVhbSBjb21taXQgNDVmNmZhZDg0Y2MzMDUxMDNiMjhkNzM0ODJiMzQ0ZDdm NWI3NmYzOSBdCgpUaGlzIHBhdGNoIGFkZHJlc3NlcyBtdWx0aXBsZSBwcm9ibGVtcyA6CgpVRFAv UkFXIHNlbmRtc2coKSBuZWVkIHRvIGdldCBhIHN0YWJsZSBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMK d2hpbGUgc29ja2V0IGlzIG5vdCBsb2NrZWQgOiBPdGhlciB0aHJlYWRzIGNhbiBjaGFuZ2UgbnAt Pm9wdApjb25jdXJyZW50bHkuIERtaXRyeSBwb3N0ZWQgYSBzeXprYWxsZXIKKGh0dHA6Ly9naXRo dWIuY29tL2dvb2dsZS9zeXprYWxsZXIpIHByb2dyYW0gZGVzbW9uc3RyYXRpbmcKdXNlLWFmdGVy LWZyZWUuCgpTdGFydGluZyB3aXRoIFRDUC9EQ0NQIGxvY2tsZXNzIGxpc3RlbmVycywgdGNwX3Y2 X3N5bl9yZWN2X3NvY2soKQphbmQgZGNjcF92Nl9yZXF1ZXN0X3JlY3Zfc29jaygpIGFsc28gbmVl ZCB0byB1c2UgUkNVIHByb3RlY3Rpb24KdG8gZGVyZWZlcmVuY2UgbnAtPm9wdCBvbmNlIChiZWZv cmUgY2FsbGluZyBpcHY2X2R1cF9vcHRpb25zKCkpCgpUaGlzIHBhdGNoIGFkZHMgZnVsbCBSQ1Ug cHJvdGVjdGlvbiB0byBucC0+b3B0CgpSZXBvcnRlZC1ieTogRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtv dkBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2ds ZS5jb20+CkFja2VkLWJ5OiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0cmVzc2luZHVr dGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0 Lm5ldD4KLS0tCiBpbmNsdWRlL2xpbnV4L2lwdjYuaCAgICAgICAgICAgICB8ICAyICstCiBpbmNs dWRlL25ldC9pcHY2LmggICAgICAgICAgICAgICB8IDIxICsrKysrKysrKysrKysrKysrKysrLQog bmV0L2RjY3AvaXB2Ni5jICAgICAgICAgICAgICAgICAgfCAzMyArKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0KIG5ldC9pcHY2L2FmX2luZXQ2LmMgICAgICAgICAgICAgIHwgMTMgKysr KysrKysrLS0tLQogbmV0L2lwdjYvZGF0YWdyYW0uYyAgICAgICAgICAgICAgfCAgNCArKystCiBu ZXQvaXB2Ni9leHRoZHJzLmMgICAgICAgICAgICAgICB8ICAzICsrLQogbmV0L2lwdjYvaW5ldDZf Y29ubmVjdGlvbl9zb2NrLmMgfCAxMSArKysrKysrKy0tLQogbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1 ZS5jICAgICAgICAgfCAzMyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIG5ldC9p cHY2L3Jhdy5jICAgICAgICAgICAgICAgICAgIHwgIDggKysrKysrLS0KIG5ldC9pcHY2L3N5bmNv b2tpZXMuYyAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9pcHY2L3RjcF9pcHY2LmMgICAgICAgICAg ICAgIHwgMjggKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogbmV0L2lwdjYvdWRwLmMgICAg ICAgICAgICAgICAgICAgfCAgOCArKysrKystLQogbmV0L2wydHAvbDJ0cF9pcDYuYyAgICAgICAg ICAgICAgfCAgOCArKysrKystLQogMTMgZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMoKyks IDUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaXB2Ni5oIGIvaW5j bHVkZS9saW51eC9pcHY2LmgKaW5kZXggODI4MDZjNi4uZTRiNDY0OSAxMDA2NDQKLS0tIGEvaW5j bHVkZS9saW51eC9pcHY2LmgKKysrIGIvaW5jbHVkZS9saW51eC9pcHY2LmgKQEAgLTIyNCw3ICsy MjQsNyBAQCBzdHJ1Y3QgaXB2Nl9waW5mbyB7CiAJc3RydWN0IGlwdjZfYWNfc29ja2xpc3QJKmlw djZfYWNfbGlzdDsKIAlzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCBfX3JjdSAqaXB2Nl9mbF9saXN0 OwogCi0Jc3RydWN0IGlwdjZfdHhvcHRpb25zCSpvcHQ7CisJc3RydWN0IGlwdjZfdHhvcHRpb25z IF9fcmN1CSpvcHQ7CiAJc3RydWN0IHNrX2J1ZmYJCSpwa3RvcHRpb25zOwogCXN0cnVjdCBza19i dWZmCQkqcnhwbXR1OwogCXN0cnVjdCBpbmV0Nl9jb3JrCWNvcms7CmRpZmYgLS1naXQgYS9pbmNs dWRlL25ldC9pcHY2LmggYi9pbmNsdWRlL25ldC9pcHY2LmgKaW5kZXggMTNhZWNkMS4uMTc3YTg5 NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXB2Ni5oCisrKyBiL2luY2x1ZGUvbmV0L2lwdjYu aApAQCAtMjA1LDYgKzIwNSw3IEBAIGV4dGVybiByd2xvY2tfdCBpcDZfcmFfbG9jazsKICAqLwog CiBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgeworCWF0b21pY190CQlyZWZjbnQ7CiAJLyogTGVuZ3Ro IG9mIHRoaXMgc3RydWN0dXJlICovCiAJaW50CQkJdG90X2xlbjsKIApAQCAtMjE3LDcgKzIxOCw3 IEBAIHN0cnVjdCBpcHY2X3R4b3B0aW9ucyB7CiAJc3RydWN0IGlwdjZfb3B0X2hkcgkqZHN0MG9w dDsKIAlzdHJ1Y3QgaXB2Nl9ydF9oZHIJKnNyY3J0OwkvKiBSb3V0aW5nIEhlYWRlciAqLwogCXN0 cnVjdCBpcHY2X29wdF9oZHIJKmRzdDFvcHQ7Ci0KKwlzdHJ1Y3QgcmN1X2hlYWQJCXJjdTsKIAkv KiBPcHRpb24gYnVmZmVyLCBhcyByZWFkIGJ5IElQVjZfUEtUT1BUSU9OUywgc3RhcnRzIGhlcmUu ICovCiB9OwogCkBAIC0yNTIsNiArMjUzLDI0IEBAIHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0IHsK IAlzdHJ1Y3QgcmN1X2hlYWQJCQlyY3U7CiB9OwogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpcHY2 X3R4b3B0aW9ucyAqdHhvcHRfZ2V0KGNvbnN0IHN0cnVjdCBpcHY2X3BpbmZvICpucCkKK3sKKwlz dHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdDsKKworCXJjdV9yZWFkX2xvY2soKTsKKwlvcHQgPSBy Y3VfZGVyZWZlcmVuY2UobnAtPm9wdCk7CisJaWYgKG9wdCAmJiAhYXRvbWljX2luY19ub3RfemVy bygmb3B0LT5yZWZjbnQpKQorCQlvcHQgPSBOVUxMOworCXJjdV9yZWFkX3VubG9jaygpOworCXJl dHVybiBvcHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB0eG9wdF9wdXQoc3RydWN0IGlwdjZf dHhvcHRpb25zICpvcHQpCit7CisJaWYgKG9wdCAmJiBhdG9taWNfZGVjX2FuZF90ZXN0KCZvcHQt PnJlZmNudCkpCisJCWtmcmVlX3JjdShvcHQsIHJjdSk7Cit9CisKIHN0cnVjdCBpcDZfZmxvd2xh YmVsICpmbDZfc29ja19sb29rdXAoc3RydWN0IHNvY2sgKnNrLCBfX2JlMzIgbGFiZWwpOwogc3Ry dWN0IGlwdjZfdHhvcHRpb25zICpmbDZfbWVyZ2Vfb3B0aW9ucyhzdHJ1Y3QgaXB2Nl90eG9wdGlv bnMgKm9wdF9zcGFjZSwKIAkJCQkJIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCwKZGlmZiAtLWdp dCBhL25ldC9kY2NwL2lwdjYuYyBiL25ldC9kY2NwL2lwdjYuYwppbmRleCA1MTY1NTcxLi5hMDQ5 MDUwIDEwMDY0NAotLS0gYS9uZXQvZGNjcC9pcHY2LmMKKysrIGIvbmV0L2RjY3AvaXB2Ni5jCkBA IC0yMDIsNyArMjAyLDkgQEAgc3RhdGljIGludCBkY2NwX3Y2X3NlbmRfcmVzcG9uc2Uoc3RydWN0 IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiAJc2VjdXJpdHlfcmVxX2NsYXNz aWZ5X2Zsb3cocmVxLCBmbG93aTZfdG9fZmxvd2koJmZsNikpOwogCiAKLQlmaW5hbF9wID0gZmw2 X3VwZGF0ZV9kc3QoJmZsNiwgbnAtPm9wdCwgJmZpbmFsKTsKKwlyY3VfcmVhZF9sb2NrKCk7CisJ ZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIHJjdV9kZXJlZmVyZW5jZShucC0+b3B0KSwg JmZpbmFsKTsKKwlyY3VfcmVhZF91bmxvY2soKTsKIAogCWRzdCA9IGlwNl9kc3RfbG9va3VwX2Zs b3coc2ssICZmbDYsIGZpbmFsX3ApOwogCWlmIChJU19FUlIoZHN0KSkgewpAQCAtMjE5LDcgKzIy MSwxMCBAQCBzdGF0aWMgaW50IGRjY3BfdjZfc2VuZF9yZXNwb25zZShzdHJ1Y3Qgc29jayAqc2ss IHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKIAkJCQkJCQkgJmlyZXEtPmlyX3Y2X2xvY19hZGRy LAogCQkJCQkJCSAmaXJlcS0+aXJfdjZfcm10X2FkZHIpOwogCQlmbDYuZGFkZHIgPSBpcmVxLT5p cl92Nl9ybXRfYWRkcjsKLQkJZXJyID0gaXA2X3htaXQoc2ssIHNrYiwgJmZsNiwgbnAtPm9wdCwg bnAtPnRjbGFzcyk7CisJCXJjdV9yZWFkX2xvY2soKTsKKwkJZXJyID0gaXA2X3htaXQoc2ssIHNr YiwgJmZsNiwgcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLAorCQkJICAgICAgIG5wLT50Y2xhc3Mp OworCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJZXJyID0gbmV0X3htaXRfZXZhbChlcnIpOwogCX0K IApAQCAtNDE1LDYgKzQyMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqZGNjcF92Nl9yZXF1ZXN0 X3JlY3Zfc29jayhzdHJ1Y3Qgc29jayAqc2ssCiB7CiAJc3RydWN0IGluZXRfcmVxdWVzdF9zb2Nr ICppcmVxID0gaW5ldF9yc2socmVxKTsKIAlzdHJ1Y3QgaXB2Nl9waW5mbyAqbmV3bnAsICpucCA9 IGluZXQ2X3NrKHNrKTsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdDsKIAlzdHJ1Y3QgaW5l dF9zb2NrICpuZXdpbmV0OwogCXN0cnVjdCBkY2NwNl9zb2NrICpuZXdkcDY7CiAJc3RydWN0IHNv Y2sgKm5ld3NrOwpAQCAtNTM0LDEzICs1NDAsMTUgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpkY2Nw X3Y2X3JlcXVlc3RfcmVjdl9zb2NrKHN0cnVjdCBzb2NrICpzaywKIAkgKiBZZXMsIGtlZXBpbmcg cmVmZXJlbmNlIGNvdW50IHdvdWxkIGJlIG11Y2ggbW9yZSBjbGV2ZXIsIGJ1dCB3ZSBtYWtlCiAJ ICogb25lIG1vcmUgb25lIHRoaW5nIHRoZXJlOiByZWF0dGFjaCBvcHRtZW0gdG8gbmV3c2suCiAJ ICovCi0JaWYgKG5wLT5vcHQgIT0gTlVMTCkKLQkJbmV3bnAtPm9wdCA9IGlwdjZfZHVwX29wdGlv bnMobmV3c2ssIG5wLT5vcHQpOwotCisJb3B0ID0gcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpOwor CWlmIChvcHQpIHsKKwkJb3B0ID0gaXB2Nl9kdXBfb3B0aW9ucyhuZXdzaywgb3B0KTsKKwkJUkNV X0lOSVRfUE9JTlRFUihuZXducC0+b3B0LCBvcHQpOworCX0KIAlpbmV0X2NzayhuZXdzayktPmlj c2tfZXh0X2hkcl9sZW4gPSAwOwotCWlmIChuZXducC0+b3B0ICE9IE5VTEwpCi0JCWluZXRfY3Nr KG5ld3NrKS0+aWNza19leHRfaGRyX2xlbiA9IChuZXducC0+b3B0LT5vcHRfbmZsZW4gKwotCQkJ CQkJICAgICBuZXducC0+b3B0LT5vcHRfZmxlbik7CisJaWYgKG9wdCkKKwkJaW5ldF9jc2sobmV3 c2spLT5pY3NrX2V4dF9oZHJfbGVuID0gb3B0LT5vcHRfbmZsZW4gKworCQkJCQkJICAgIG9wdC0+ b3B0X2ZsZW47CiAKIAlkY2NwX3N5bmNfbXNzKG5ld3NrLCBkc3RfbXR1KGRzdCkpOwogCkBAIC03 OTMsNiArODAxLDcgQEAgc3RhdGljIGludCBkY2NwX3Y2X2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNr LCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogCXN0cnVjdCBpcHY2X3BpbmZvICpucCA9IGluZXQ2 X3NrKHNrKTsKIAlzdHJ1Y3QgZGNjcF9zb2NrICpkcCA9IGRjY3Bfc2soc2spOwogCXN0cnVjdCBp bjZfYWRkciAqc2FkZHIgPSBOVUxMLCAqZmluYWxfcCwgZmluYWw7CisJc3RydWN0IGlwdjZfdHhv cHRpb25zICpvcHQ7CiAJc3RydWN0IGZsb3dpNiBmbDY7CiAJc3RydWN0IGRzdF9lbnRyeSAqZHN0 OwogCWludCBhZGRyX3R5cGU7CkBAIC04OTIsNyArOTAxLDggQEAgc3RhdGljIGludCBkY2NwX3Y2 X2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogCWZsNi5m bDZfc3BvcnQgPSBpbmV0LT5pbmV0X3Nwb3J0OwogCXNlY3VyaXR5X3NrX2NsYXNzaWZ5X2Zsb3co c2ssIGZsb3dpNl90b19mbG93aSgmZmw2KSk7CiAKLQlmaW5hbF9wID0gZmw2X3VwZGF0ZV9kc3Qo JmZsNiwgbnAtPm9wdCwgJmZpbmFsKTsKKwlvcHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVk KG5wLT5vcHQsIHNvY2tfb3duZWRfYnlfdXNlcihzaykpOworCWZpbmFsX3AgPSBmbDZfdXBkYXRl X2RzdCgmZmw2LCBvcHQsICZmaW5hbCk7CiAKIAlkc3QgPSBpcDZfZHN0X2xvb2t1cF9mbG93KHNr LCAmZmw2LCBmaW5hbF9wKTsKIAlpZiAoSVNfRVJSKGRzdCkpIHsKQEAgLTkxMiw5ICs5MjIsOCBA QCBzdGF0aWMgaW50IGRjY3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2Nr YWRkciAqdWFkZHIsCiAJX19pcDZfZHN0X3N0b3JlKHNrLCBkc3QsIE5VTEwsIE5VTEwpOwogCiAJ aWNzay0+aWNza19leHRfaGRyX2xlbiA9IDA7Ci0JaWYgKG5wLT5vcHQgIT0gTlVMTCkKLQkJaWNz ay0+aWNza19leHRfaGRyX2xlbiA9IChucC0+b3B0LT5vcHRfZmxlbiArCi0JCQkJCSAgbnAtPm9w dC0+b3B0X25mbGVuKTsKKwlpZiAob3B0KQorCQlpY3NrLT5pY3NrX2V4dF9oZHJfbGVuID0gb3B0 LT5vcHRfZmxlbiArIG9wdC0+b3B0X25mbGVuOwogCiAJaW5ldC0+aW5ldF9kcG9ydCA9IHVzaW4t PnNpbjZfcG9ydDsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWZfaW5ldDYuYyBiL25ldC9pcHY2 L2FmX2luZXQ2LmMKaW5kZXggN2RlNTJiNi4uZDg3NTE5ZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYv YWZfaW5ldDYuYworKysgYi9uZXQvaXB2Ni9hZl9pbmV0Ni5jCkBAIC00MjYsOSArNDI2LDExIEBA IHZvaWQgaW5ldDZfZGVzdHJveV9zb2NrKHN0cnVjdCBzb2NrICpzaykKIAogCS8qIEZyZWUgdHgg b3B0aW9ucyAqLwogCi0Jb3B0ID0geGNoZygmbnAtPm9wdCwgTlVMTCk7Ci0JaWYgKG9wdCkKLQkJ c29ja19rZnJlZV9zKHNrLCBvcHQsIG9wdC0+dG90X2xlbik7CisJb3B0ID0geGNoZygoX19mb3Jj ZSBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKiopJm5wLT5vcHQsIE5VTEwpOworCWlmIChvcHQpIHsK KwkJYXRvbWljX3N1YihvcHQtPnRvdF9sZW4sICZzay0+c2tfb21lbV9hbGxvYyk7CisJCXR4b3B0 X3B1dChvcHQpOworCX0KIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGluZXQ2X2Rlc3Ryb3lfc29jayk7 CiAKQEAgLTY1Nyw3ICs2NTksMTAgQEAgaW50IGluZXQ2X3NrX3JlYnVpbGRfaGVhZGVyKHN0cnVj dCBzb2NrICpzaykKIAkJZmw2LmZsNl9zcG9ydCA9IGluZXQtPmluZXRfc3BvcnQ7CiAJCXNlY3Vy aXR5X3NrX2NsYXNzaWZ5X2Zsb3coc2ssIGZsb3dpNl90b19mbG93aSgmZmw2KSk7CiAKLQkJZmlu YWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG5wLT5vcHQsICZmaW5hbCk7CisJCXJjdV9yZWFk X2xvY2soKTsKKwkJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIHJjdV9kZXJlZmVyZW5j ZShucC0+b3B0KSwKKwkJCQkJICZmaW5hbCk7CisJCXJjdV9yZWFkX3VubG9jaygpOwogCiAJCWRz dCA9IGlwNl9kc3RfbG9va3VwX2Zsb3coc2ssICZmbDYsIGZpbmFsX3ApOwogCQlpZiAoSVNfRVJS KGRzdCkpIHsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2RhdGFncmFtLmMgYi9uZXQvaXB2Ni9kYXRh Z3JhbS5jCmluZGV4IGIxMGE4ODkuLjEzY2E0Y2YgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2RhdGFn cmFtLmMKKysrIGIvbmV0L2lwdjYvZGF0YWdyYW0uYwpAQCAtMTY3LDggKzE2NywxMCBAQCBpcHY0 X2Nvbm5lY3RlZDoKIAogCXNlY3VyaXR5X3NrX2NsYXNzaWZ5X2Zsb3coc2ssIGZsb3dpNl90b19m bG93aSgmZmw2KSk7CiAKLQlvcHQgPSBmbG93bGFiZWwgPyBmbG93bGFiZWwtPm9wdCA6IG5wLT5v cHQ7CisJcmN1X3JlYWRfbG9jaygpOworCW9wdCA9IGZsb3dsYWJlbCA/IGZsb3dsYWJlbC0+b3B0 IDogcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpOwogCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgm Zmw2LCBvcHQsICZmaW5hbCk7CisJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAlkc3QgPSBpcDZfZHN0 X2xvb2t1cF9mbG93KHNrLCAmZmw2LCBmaW5hbF9wKTsKIAllcnIgPSAwOwpkaWZmIC0tZ2l0IGEv bmV0L2lwdjYvZXh0aGRycy5jIGIvbmV0L2lwdjYvZXh0aGRycy5jCmluZGV4IGE3YmJiZTQuLmFk YmQ2OTUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2V4dGhkcnMuYworKysgYi9uZXQvaXB2Ni9leHRo ZHJzLmMKQEAgLTcyNyw2ICs3MjcsNyBAQCBpcHY2X2R1cF9vcHRpb25zKHN0cnVjdCBzb2NrICpz aywgc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHQpCiAJCQkqKChjaGFyICoqKSZvcHQyLT5kc3Qx b3B0KSArPSBkaWY7CiAJCWlmIChvcHQyLT5zcmNydCkKIAkJCSooKGNoYXIgKiopJm9wdDItPnNy Y3J0KSArPSBkaWY7CisJCWF0b21pY19zZXQoJm9wdDItPnJlZmNudCwgMSk7CiAJfQogCXJldHVy biBvcHQyOwogfQpAQCAtNzkwLDcgKzc5MSw3IEBAIGlwdjZfcmVuZXdfb3B0aW9ucyhzdHJ1Y3Qg c29jayAqc2ssIHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0LAogCQlyZXR1cm4gRVJSX1BUUigt RU5PQlVGUyk7CiAKIAltZW1zZXQob3B0MiwgMCwgdG90X2xlbik7Ci0KKwlhdG9taWNfc2V0KCZv cHQyLT5yZWZjbnQsIDEpOwogCW9wdDItPnRvdF9sZW4gPSB0b3RfbGVuOwogCXAgPSAoY2hhciAq KShvcHQyICsgMSk7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2luZXQ2X2Nvbm5lY3Rpb25fc29j ay5jIGIvbmV0L2lwdjYvaW5ldDZfY29ubmVjdGlvbl9zb2NrLmMKaW5kZXggNjkyN2YzZi4uOWJl ZWQzMCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaW5ldDZfY29ubmVjdGlvbl9zb2NrLmMKKysrIGIv bmV0L2lwdjYvaW5ldDZfY29ubmVjdGlvbl9zb2NrLmMKQEAgLTc3LDcgKzc3LDkgQEAgc3RydWN0 IGRzdF9lbnRyeSAqaW5ldDZfY3NrX3JvdXRlX3JlcShzdHJ1Y3Qgc29jayAqc2ssCiAJbWVtc2V0 KGZsNiwgMCwgc2l6ZW9mKCpmbDYpKTsKIAlmbDYtPmZsb3dpNl9wcm90byA9IElQUFJPVE9fVENQ OwogCWZsNi0+ZGFkZHIgPSBpcmVxLT5pcl92Nl9ybXRfYWRkcjsKLQlmaW5hbF9wID0gZmw2X3Vw ZGF0ZV9kc3QoZmw2LCBucC0+b3B0LCAmZmluYWwpOworCXJjdV9yZWFkX2xvY2soKTsKKwlmaW5h bF9wID0gZmw2X3VwZGF0ZV9kc3QoZmw2LCByY3VfZGVyZWZlcmVuY2UobnAtPm9wdCksICZmaW5h bCk7CisJcmN1X3JlYWRfdW5sb2NrKCk7CiAJZmw2LT5zYWRkciA9IGlyZXEtPmlyX3Y2X2xvY19h ZGRyOwogCWZsNi0+Zmxvd2k2X29pZiA9IGlyZXEtPmlyX2lpZjsKIAlmbDYtPmZsb3dpNl9tYXJr ID0gaXJlcS0+aXJfbWFyazsKQEAgLTIwNyw3ICsyMDksOSBAQCBzdGF0aWMgc3RydWN0IGRzdF9l bnRyeSAqaW5ldDZfY3NrX3JvdXRlX3NvY2tldChzdHJ1Y3Qgc29jayAqc2ssCiAJZmw2LT5mbDZf ZHBvcnQgPSBpbmV0LT5pbmV0X2Rwb3J0OwogCXNlY3VyaXR5X3NrX2NsYXNzaWZ5X2Zsb3coc2ss IGZsb3dpNl90b19mbG93aShmbDYpKTsKIAotCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdChmbDYs IG5wLT5vcHQsICZmaW5hbCk7CisJcmN1X3JlYWRfbG9jaygpOworCWZpbmFsX3AgPSBmbDZfdXBk YXRlX2RzdChmbDYsIHJjdV9kZXJlZmVyZW5jZShucC0+b3B0KSwgJmZpbmFsKTsKKwlyY3VfcmVh ZF91bmxvY2soKTsKIAogCWRzdCA9IF9faW5ldDZfY3NrX2RzdF9jaGVjayhzaywgbnAtPmRzdF9j b29raWUpOwogCWlmICghZHN0KSB7CkBAIC0yNDAsNyArMjQ0LDggQEAgaW50IGluZXQ2X2Nza194 bWl0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGZsb3dpICpm bF91bnVzZWQKIAkvKiBSZXN0b3JlIGZpbmFsIGRlc3RpbmF0aW9uIGJhY2sgYWZ0ZXIgcm91dGlu ZyBkb25lICovCiAJZmw2LmRhZGRyID0gc2stPnNrX3Y2X2RhZGRyOwogCi0JcmVzID0gaXA2X3ht aXQoc2ssIHNrYiwgJmZsNiwgbnAtPm9wdCwgbnAtPnRjbGFzcyk7CisJcmVzID0gaXA2X3htaXQo c2ssIHNrYiwgJmZsNiwgcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLAorCQkgICAgICAgbnAtPnRj bGFzcyk7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIHJlczsKIH0KZGlmZiAtLWdpdCBh L25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYyBiL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYwppbmRl eCA2M2U2OTU2Li40NDQ5YWQxIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMK KysrIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jCkBAIC0xMTEsNyArMTExLDggQEAgc3RydWN0 IGlwdjZfdHhvcHRpb25zICppcHY2X3VwZGF0ZV9vcHRpb25zKHN0cnVjdCBzb2NrICpzaywKIAkJ CWljc2stPmljc2tfc3luY19tc3Moc2ssIGljc2stPmljc2tfcG10dV9jb29raWUpOwogCQl9CiAJ fQotCW9wdCA9IHhjaGcoJmluZXQ2X3NrKHNrKS0+b3B0LCBvcHQpOworCW9wdCA9IHhjaGcoKF9f Zm9yY2Ugc3RydWN0IGlwdjZfdHhvcHRpb25zICoqKSZpbmV0Nl9zayhzayktPm9wdCwKKwkJICAg b3B0KTsKIAlza19kc3RfcmVzZXQoc2spOwogCiAJcmV0dXJuIG9wdDsKQEAgLTIzMSw5ICsyMzIs MTIgQEAgc3RhdGljIGludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQg bGV2ZWwsIGludCBvcHRuYW1lLAogCQkJCXNrLT5za19zb2NrZXQtPm9wcyA9ICZpbmV0X2RncmFt X29wczsKIAkJCQlzay0+c2tfZmFtaWx5ID0gUEZfSU5FVDsKIAkJCX0KLQkJCW9wdCA9IHhjaGco Jm5wLT5vcHQsIE5VTEwpOwotCQkJaWYgKG9wdCkKLQkJCQlzb2NrX2tmcmVlX3Moc2ssIG9wdCwg b3B0LT50b3RfbGVuKTsKKwkJCW9wdCA9IHhjaGcoKF9fZm9yY2Ugc3RydWN0IGlwdjZfdHhvcHRp b25zICoqKSZucC0+b3B0LAorCQkJCSAgIE5VTEwpOworCQkJaWYgKG9wdCkgeworCQkJCWF0b21p Y19zdWIob3B0LT50b3RfbGVuLCAmc2stPnNrX29tZW1fYWxsb2MpOworCQkJCXR4b3B0X3B1dChv cHQpOworCQkJfQogCQkJcGt0b3B0ID0geGNoZygmbnAtPnBrdG9wdGlvbnMsIE5VTEwpOwogCQkJ a2ZyZWVfc2tiKHBrdG9wdCk7CiAKQEAgLTQwMyw3ICs0MDcsOCBAQCBzdGF0aWMgaW50IGRvX2lw djZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJ CWlmIChvcHRuYW1lICE9IElQVjZfUlRIRFIgJiYgIW5zX2NhcGFibGUobmV0LT51c2VyX25zLCBD QVBfTkVUX1JBVykpCiAJCQlicmVhazsKIAotCQlvcHQgPSBpcHY2X3JlbmV3X29wdGlvbnMoc2ss IG5wLT5vcHQsIG9wdG5hbWUsCisJCW9wdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobnAt Pm9wdCwgc29ja19vd25lZF9ieV91c2VyKHNrKSk7CisJCW9wdCA9IGlwdjZfcmVuZXdfb3B0aW9u cyhzaywgb3B0LCBvcHRuYW1lLAogCQkJCQkgKHN0cnVjdCBpcHY2X29wdF9oZHIgX191c2VyICop b3B0dmFsLAogCQkJCQkgb3B0bGVuKTsKIAkJaWYgKElTX0VSUihvcHQpKSB7CkBAIC00MzIsOCAr NDM3LDEwIEBAIHN0YXRpYyBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywg aW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAkJcmV0diA9IDA7CiAJCW9wdCA9IGlwdjZfdXBkYXRl X29wdGlvbnMoc2ssIG9wdCk7CiBzdGlja3lfZG9uZToKLQkJaWYgKG9wdCkKLQkJCXNvY2tfa2Zy ZWVfcyhzaywgb3B0LCBvcHQtPnRvdF9sZW4pOworCQlpZiAob3B0KSB7CisJCQlhdG9taWNfc3Vi KG9wdC0+dG90X2xlbiwgJnNrLT5za19vbWVtX2FsbG9jKTsKKwkJCXR4b3B0X3B1dChvcHQpOwor CQl9CiAJCWJyZWFrOwogCX0KIApAQCAtNDg2LDYgKzQ5Myw3IEBAIHN0aWNreV9kb25lOgogCQkJ YnJlYWs7CiAKIAkJbWVtc2V0KG9wdCwgMCwgc2l6ZW9mKCpvcHQpKTsKKwkJYXRvbWljX3NldCgm b3B0LT5yZWZjbnQsIDEpOwogCQlvcHQtPnRvdF9sZW4gPSBzaXplb2YoKm9wdCkgKyBvcHRsZW47 CiAJCXJldHYgPSAtRUZBVUxUOwogCQlpZiAoY29weV9mcm9tX3VzZXIob3B0KzEsIG9wdHZhbCwg b3B0bGVuKSkKQEAgLTUwMiw4ICs1MTAsMTAgQEAgdXBkYXRlOgogCQlyZXR2ID0gMDsKIAkJb3B0 ID0gaXB2Nl91cGRhdGVfb3B0aW9ucyhzaywgb3B0KTsKIGRvbmU6Ci0JCWlmIChvcHQpCi0JCQlz b2NrX2tmcmVlX3Moc2ssIG9wdCwgb3B0LT50b3RfbGVuKTsKKwkJaWYgKG9wdCkgeworCQkJYXRv bWljX3N1YihvcHQtPnRvdF9sZW4sICZzay0+c2tfb21lbV9hbGxvYyk7CisJCQl0eG9wdF9wdXQo b3B0KTsKKwkJfQogCQlicmVhazsKIAl9CiAJY2FzZSBJUFY2X1VOSUNBU1RfSE9QUzoKQEAgLTEx MTAsMTAgKzExMjAsMTEgQEAgc3RhdGljIGludCBkb19pcHY2X2dldHNvY2tvcHQoc3RydWN0IHNv Y2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogCWNhc2UgSVBWNl9SVEhEUjoKIAljYXNl IElQVjZfRFNUT1BUUzoKIAl7CisJCXN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0OwogCiAJCWxv Y2tfc29jayhzayk7Ci0JCWxlbiA9IGlwdjZfZ2V0c29ja29wdF9zdGlja3koc2ssIG5wLT5vcHQs Ci0JCQkJCSAgICAgb3B0bmFtZSwgb3B0dmFsLCBsZW4pOworCQlvcHQgPSByY3VfZGVyZWZlcmVu Y2VfcHJvdGVjdGVkKG5wLT5vcHQsIHNvY2tfb3duZWRfYnlfdXNlcihzaykpOworCQlsZW4gPSBp cHY2X2dldHNvY2tvcHRfc3RpY2t5KHNrLCBvcHQsIG9wdG5hbWUsIG9wdHZhbCwgbGVuKTsKIAkJ cmVsZWFzZV9zb2NrKHNrKTsKIAkJLyogY2hlY2sgaWYgaXB2Nl9nZXRzb2Nrb3B0X3N0aWNreSgp IHJldHVybnMgZXJyIGNvZGUgKi8KIAkJaWYgKGxlbiA8IDApCmRpZmYgLS1naXQgYS9uZXQvaXB2 Ni9yYXcuYyBiL25ldC9pcHY2L3Jhdy5jCmluZGV4IGNhNDcwMGMuLjkyZDUzMjkgMTAwNjQ0Ci0t LSBhL25ldC9pcHY2L3Jhdy5jCisrKyBiL25ldC9pcHY2L3Jhdy5jCkBAIC03MzEsNiArNzMxLDcg QEAgc3RhdGljIGludCByYXc2X2dldGZyYWcodm9pZCAqZnJvbSwgY2hhciAqdG8sIGludCBvZmZz ZXQsIGludCBsZW4sIGludCBvZGQsCiAKIHN0YXRpYyBpbnQgcmF3djZfc2VuZG1zZyhzdHJ1Y3Qg c29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIHsKKwlzdHJ1Y3QgaXB2 Nl90eG9wdGlvbnMgKm9wdF90b19mcmVlID0gTlVMTDsKIAlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMg b3B0X3NwYWNlOwogCURFQ0xBUkVfU09DS0FERFIoc3RydWN0IHNvY2thZGRyX2luNiAqLCBzaW42 LCBtc2ctPm1zZ19uYW1lKTsKIAlzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCAqZmluYWxfcCwgZmlu YWw7CkBAIC04MzcsOCArODM4LDEwIEBAIHN0YXRpYyBpbnQgcmF3djZfc2VuZG1zZyhzdHJ1Y3Qg c29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAkJaWYgKCEob3B0LT5v cHRfbmZsZW58b3B0LT5vcHRfZmxlbikpCiAJCQlvcHQgPSBOVUxMOwogCX0KLQlpZiAoIW9wdCkK LQkJb3B0ID0gbnAtPm9wdDsKKwlpZiAoIW9wdCkgeworCQlvcHQgPSB0eG9wdF9nZXQobnApOwor CQlvcHRfdG9fZnJlZSA9IG9wdDsKKwkJfQogCWlmIChmbG93bGFiZWwpCiAJCW9wdCA9IGZsNl9t ZXJnZV9vcHRpb25zKCZvcHRfc3BhY2UsIGZsb3dsYWJlbCwgb3B0KTsKIAlvcHQgPSBpcHY2X2Zp eHVwX29wdGlvbnMoJm9wdF9zcGFjZSwgb3B0KTsKQEAgLTkwNCw2ICs5MDcsNyBAQCBkb25lOgog CWRzdF9yZWxlYXNlKGRzdCk7CiBvdXQ6CiAJZmw2X3NvY2tfcmVsZWFzZShmbG93bGFiZWwpOwor CXR4b3B0X3B1dChvcHRfdG9fZnJlZSk7CiAJcmV0dXJuIGVyciA8IDAgPyBlcnIgOiBsZW47CiBk b19jb25maXJtOgogCWRzdF9jb25maXJtKGRzdCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9zeW5j b29raWVzLmMgYi9uZXQvaXB2Ni9zeW5jb29raWVzLmMKaW5kZXggMDkwOWY0ZS4uZjMwYmZkYyAx MDA2NDQKLS0tIGEvbmV0L2lwdjYvc3luY29va2llcy5jCisrKyBiL25ldC9pcHY2L3N5bmNvb2tp ZXMuYwpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0cnVjdCBzb2NrICpjb29raWVfdjZfY2hlY2soc3Ry dWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQltZW1zZXQoJmZsNiwgMCwgc2l6 ZW9mKGZsNikpOwogCQlmbDYuZmxvd2k2X3Byb3RvID0gSVBQUk9UT19UQ1A7CiAJCWZsNi5kYWRk ciA9IGlyZXEtPmlyX3Y2X3JtdF9hZGRyOwotCQlmaW5hbF9wID0gZmw2X3VwZGF0ZV9kc3QoJmZs NiwgbnAtPm9wdCwgJmZpbmFsKTsKKwkJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIHJj dV9kZXJlZmVyZW5jZShucC0+b3B0KSwgJmZpbmFsKTsKIAkJZmw2LnNhZGRyID0gaXJlcS0+aXJf djZfbG9jX2FkZHI7CiAJCWZsNi5mbG93aTZfb2lmID0gc2stPnNrX2JvdW5kX2Rldl9pZjsKIAkJ Zmw2LmZsb3dpNl9tYXJrID0gaXJlcS0+aXJfbWFyazsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3Rj cF9pcHY2LmMgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCmluZGV4IDdhNmNlYTUuLjQ1ZTQ3M2UgMTAw NjQ0Ci0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmMKKysrIGIvbmV0L2lwdjYvdGNwX2lwdjYuYwpA QCAtMTIwLDYgKzEyMCw3IEBAIHN0YXRpYyBpbnQgdGNwX3Y2X2Nvbm5lY3Qoc3RydWN0IHNvY2sg KnNrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogCXN0cnVjdCBpcHY2X3BpbmZvICpucCA9IGlu ZXQ2X3NrKHNrKTsKIAlzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTsKIAlzdHJ1Y3Qg aW42X2FkZHIgKnNhZGRyID0gTlVMTCwgKmZpbmFsX3AsIGZpbmFsOworCXN0cnVjdCBpcHY2X3R4 b3B0aW9ucyAqb3B0OwogCXN0cnVjdCBmbG93aTYgZmw2OwogCXN0cnVjdCBkc3RfZW50cnkgKmRz dDsKIAlpbnQgYWRkcl90eXBlOwpAQCAtMjM1LDcgKzIzNiw4IEBAIHN0YXRpYyBpbnQgdGNwX3Y2 X2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogCWZsNi5m bDZfZHBvcnQgPSB1c2luLT5zaW42X3BvcnQ7CiAJZmw2LmZsNl9zcG9ydCA9IGluZXQtPmluZXRf c3BvcnQ7CiAKLQlmaW5hbF9wID0gZmw2X3VwZGF0ZV9kc3QoJmZsNiwgbnAtPm9wdCwgJmZpbmFs KTsKKwlvcHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG5wLT5vcHQsIHNvY2tfb3duZWRf YnlfdXNlcihzaykpOworCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgmZmw2LCBvcHQsICZmaW5h bCk7CiAKIAlzZWN1cml0eV9za19jbGFzc2lmeV9mbG93KHNrLCBmbG93aTZfdG9fZmxvd2koJmZs NikpOwogCkBAIC0yNjMsOSArMjY1LDkgQEAgc3RhdGljIGludCB0Y3BfdjZfY29ubmVjdChzdHJ1 Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsCiAJCXRjcF9mZXRjaF90aW1ld2Fp dF9zdGFtcChzaywgZHN0KTsKIAogCWljc2stPmljc2tfZXh0X2hkcl9sZW4gPSAwOwotCWlmIChu cC0+b3B0KQotCQlpY3NrLT5pY3NrX2V4dF9oZHJfbGVuID0gKG5wLT5vcHQtPm9wdF9mbGVuICsK LQkJCQkJICBucC0+b3B0LT5vcHRfbmZsZW4pOworCWlmIChvcHQpCisJCWljc2stPmljc2tfZXh0 X2hkcl9sZW4gPSBvcHQtPm9wdF9mbGVuICsKKwkJCQkJIG9wdC0+b3B0X25mbGVuOwogCiAJdHAt PnJ4X29wdC5tc3NfY2xhbXAgPSBJUFY2X01JTl9NVFUgLSBzaXplb2Yoc3RydWN0IHRjcGhkcikg LSBzaXplb2Yoc3RydWN0IGlwdjZoZHIpOwogCkBAIC00NjEsNyArNDYzLDggQEAgc3RhdGljIGlu dCB0Y3BfdjZfc2VuZF9zeW5hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZHN0X2VudHJ5ICpk c3QsCiAJCQlmbDYtPmZsb3dsYWJlbCA9IGlwNl9mbG93bGFiZWwoaXB2Nl9oZHIoaXJlcS0+cGt0 b3B0cykpOwogCiAJCXNrYl9zZXRfcXVldWVfbWFwcGluZyhza2IsIHF1ZXVlX21hcHBpbmcpOwot CQllcnIgPSBpcDZfeG1pdChzaywgc2tiLCBmbDYsIG5wLT5vcHQsIG5wLT50Y2xhc3MpOworCQll cnIgPSBpcDZfeG1pdChzaywgc2tiLCBmbDYsIHJjdV9kZXJlZmVyZW5jZShucC0+b3B0KSwKKwkJ CSAgICAgICBucC0+dGNsYXNzKTsKIAkJZXJyID0gbmV0X3htaXRfZXZhbChlcnIpOwogCX0KIApA QCAtOTkxLDYgKzk5NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3Nv Y2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXN0cnVjdCBpbmV0X3Jl cXVlc3Rfc29jayAqaXJlcTsKIAlzdHJ1Y3QgaXB2Nl9waW5mbyAqbmV3bnAsICpucCA9IGluZXQ2 X3NrKHNrKTsKIAlzdHJ1Y3QgdGNwNl9zb2NrICpuZXd0Y3A2c2s7CisJc3RydWN0IGlwdjZfdHhv cHRpb25zICpvcHQ7CiAJc3RydWN0IGluZXRfc29jayAqbmV3aW5ldDsKIAlzdHJ1Y3QgdGNwX3Nv Y2sgKm5ld3RwOwogCXN0cnVjdCBzb2NrICpuZXdzazsKQEAgLTExMjYsMTMgKzExMzAsMTUgQEAg c3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhzdHJ1Y3Qgc29jayAqc2ss IHN0cnVjdCBza19idWZmICpza2IsCiAJICAgYnV0IHdlIG1ha2Ugb25lIG1vcmUgb25lIHRoaW5n IHRoZXJlOiByZWF0dGFjaCBvcHRtZW0KIAkgICB0byBuZXdzay4KIAkgKi8KLQlpZiAobnAtPm9w dCkKLQkJbmV3bnAtPm9wdCA9IGlwdjZfZHVwX29wdGlvbnMobmV3c2ssIG5wLT5vcHQpOwotCisJ b3B0ID0gcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpOworCWlmIChvcHQpIHsKKwkJb3B0ID0gaXB2 Nl9kdXBfb3B0aW9ucyhuZXdzaywgb3B0KTsKKwkJUkNVX0lOSVRfUE9JTlRFUihuZXducC0+b3B0 LCBvcHQpOworCX0KIAlpbmV0X2NzayhuZXdzayktPmljc2tfZXh0X2hkcl9sZW4gPSAwOwotCWlm IChuZXducC0+b3B0KQotCQlpbmV0X2NzayhuZXdzayktPmljc2tfZXh0X2hkcl9sZW4gPSAobmV3 bnAtPm9wdC0+b3B0X25mbGVuICsKLQkJCQkJCSAgICAgbmV3bnAtPm9wdC0+b3B0X2ZsZW4pOwor CWlmIChvcHQpCisJCWluZXRfY3NrKG5ld3NrKS0+aWNza19leHRfaGRyX2xlbiA9IG9wdC0+b3B0 X25mbGVuICsKKwkJCQkJCSAgICBvcHQtPm9wdF9mbGVuOwogCiAJdGNwX2NhX29wZW5yZXFfY2hp bGQobmV3c2ssIGRzdCk7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3VkcC5jIGIvbmV0L2lwdjYv dWRwLmMKaW5kZXggZTUxZmMzZS4uNzMzM2YzNSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdWRwLmMK KysrIGIvbmV0L2lwdjYvdWRwLmMKQEAgLTExMDcsNiArMTEwNyw3IEBAIGludCB1ZHB2Nl9zZW5k bXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKQogCURF Q0xBUkVfU09DS0FERFIoc3RydWN0IHNvY2thZGRyX2luNiAqLCBzaW42LCBtc2ctPm1zZ19uYW1l KTsKIAlzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCAqZmluYWxfcCwgZmluYWw7CiAJc3RydWN0IGlw djZfdHhvcHRpb25zICpvcHQgPSBOVUxMOworCXN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0X3Rv X2ZyZWUgPSBOVUxMOwogCXN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbG93bGFiZWwgPSBOVUxMOwog CXN0cnVjdCBmbG93aTYgZmw2OwogCXN0cnVjdCBkc3RfZW50cnkgKmRzdDsKQEAgLTEyNjAsOCAr MTI2MSwxMCBAQCBkb191ZHBfc2VuZG1zZzoKIAkJCW9wdCA9IE5VTEw7CiAJCWNvbm5lY3RlZCA9 IDA7CiAJfQotCWlmICghb3B0KQotCQlvcHQgPSBucC0+b3B0OworCWlmICghb3B0KSB7CisJCW9w dCA9IHR4b3B0X2dldChucCk7CisJCW9wdF90b19mcmVlID0gb3B0OworCX0KIAlpZiAoZmxvd2xh YmVsKQogCQlvcHQgPSBmbDZfbWVyZ2Vfb3B0aW9ucygmb3B0X3NwYWNlLCBmbG93bGFiZWwsIG9w dCk7CiAJb3B0ID0gaXB2Nl9maXh1cF9vcHRpb25zKCZvcHRfc3BhY2UsIG9wdCk7CkBAIC0xMzcw LDYgKzEzNzMsNyBAQCByZWxlYXNlX2RzdDoKIG91dDoKIAlkc3RfcmVsZWFzZShkc3QpOwogCWZs Nl9zb2NrX3JlbGVhc2UoZmxvd2xhYmVsKTsKKwl0eG9wdF9wdXQob3B0X3RvX2ZyZWUpOwogCWlm ICghZXJyKQogCQlyZXR1cm4gbGVuOwogCS8qCmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2lw Ni5jIGIvbmV0L2wydHAvbDJ0cF9pcDYuYwppbmRleCBkMWRlZDM3Li4wY2U5ZGE5IDEwMDY0NAot LS0gYS9uZXQvbDJ0cC9sMnRwX2lwNi5jCisrKyBiL25ldC9sMnRwL2wydHBfaXA2LmMKQEAgLTQ4 Niw2ICs0ODYsNyBAQCBzdGF0aWMgaW50IGwydHBfaXA2X3NlbmRtc2coc3RydWN0IHNvY2sgKnNr LCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pCiAJREVDTEFSRV9TT0NLQUREUihzdHJ1 Y3Qgc29ja2FkZHJfbDJ0cGlwNiAqLCBsc2EsIG1zZy0+bXNnX25hbWUpOwogCXN0cnVjdCBpbjZf YWRkciAqZGFkZHIsICpmaW5hbF9wLCBmaW5hbDsKIAlzdHJ1Y3QgaXB2Nl9waW5mbyAqbnAgPSBp bmV0Nl9zayhzayk7CisJc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHRfdG9fZnJlZSA9IE5VTEw7 CiAJc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHQgPSBOVUxMOwogCXN0cnVjdCBpcDZfZmxvd2xh YmVsICpmbG93bGFiZWwgPSBOVUxMOwogCXN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IE5VTEw7CkBA IC01NzUsOCArNTc2LDEwIEBAIHN0YXRpYyBpbnQgbDJ0cF9pcDZfc2VuZG1zZyhzdHJ1Y3Qgc29j ayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAkJCW9wdCA9IE5VTEw7CiAJ fQogCi0JaWYgKG9wdCA9PSBOVUxMKQotCQlvcHQgPSBucC0+b3B0OworCWlmICghb3B0KSB7CisJ CW9wdCA9IHR4b3B0X2dldChucCk7CisJCW9wdF90b19mcmVlID0gb3B0OworCX0KIAlpZiAoZmxv d2xhYmVsKQogCQlvcHQgPSBmbDZfbWVyZ2Vfb3B0aW9ucygmb3B0X3NwYWNlLCBmbG93bGFiZWws IG9wdCk7CiAJb3B0ID0gaXB2Nl9maXh1cF9vcHRpb25zKCZvcHRfc3BhY2UsIG9wdCk7CkBAIC02 MzEsNiArNjM0LDcgQEAgZG9uZToKIAlkc3RfcmVsZWFzZShkc3QpOwogb3V0OgogCWZsNl9zb2Nr X3JlbGVhc2UoZmxvd2xhYmVsKTsKKwl0eG9wdF9wdXQob3B0X3RvX2ZyZWUpOwogCiAJcmV0dXJu IGVyciA8IDAgPyBlcnIgOiBsZW47CiAKLS0gCjIuMS4wCgoKRnJvbSAyNjViMWEwYWVmNDE0Zjdk ZWQ5NjNmOTdmOTNiMjE3OTAxYmY1ZDM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBL b25zdGFudGluIEtobGVibmlrb3YgPGtvY3Q5aUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMSBEZWMg MjAxNSAwMToxNDo0OCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMzQvMzddIG5ldC9uZWlnaGJvdXI6 IGZpeCBjcmFzaCBhdCBkdW1waW5nIGRldmljZS1hZ25vc3RpYwogcHJveHkgZW50cmllcwoKWyBV cHN0cmVhbSBjb21taXQgNmFkYzVmZDZhMTQyYzZlMmM4MDU3NGMxZGIwYzdjMTdkZWRhYTQyZSBd CgpQcm94eSBlbnRyaWVzIGNvdWxkIGhhdmUgbnVsbCBwb2ludGVyIHRvIG5ldC1kZXZpY2UuCgpT aWduZWQtb2ZmLWJ5OiBLb25zdGFudGluIEtobGVibmlrb3YgPGtvY3Q5aUBnbWFpbC5jb20+CkZp eGVzOiA4NDkyMGMxNDIwZTIgKCJuZXQ6IEFsbG93IGlwdjYgcHJveGllcyBhbmQgYXJwIHByb3hp ZXMgYmUgc2hvd24gd2l0aCBpcHJvdXRlMiIpClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxl ciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvY29yZS9uZWlnaGJvdXIuYyB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9uZXQvY29yZS9uZWlnaGJvdXIuYyBiL25ldC9jb3JlL25laWdoYm91ci5jCmluZGV4 IDg0MTk1ZGEuLmVjZGIxNzEgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL25laWdoYm91ci5jCisrKyBi L25ldC9jb3JlL25laWdoYm91ci5jCkBAIC0yMjEwLDcgKzIyMTAsNyBAQCBzdGF0aWMgaW50IHBu ZWlnaF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBuZWlnaF9lbnRyeSAq cG4sCiAJbmRtLT5uZG1fcGFkMiAgICA9IDA7CiAJbmRtLT5uZG1fZmxhZ3MJID0gcG4tPmZsYWdz IHwgTlRGX1BST1hZOwogCW5kbS0+bmRtX3R5cGUJID0gUlROX1VOSUNBU1Q7Ci0JbmRtLT5uZG1f aWZpbmRleCA9IHBuLT5kZXYtPmlmaW5kZXg7CisJbmRtLT5uZG1faWZpbmRleCA9IHBuLT5kZXYg PyBwbi0+ZGV2LT5pZmluZGV4IDogMDsKIAluZG0tPm5kbV9zdGF0ZQkgPSBOVURfTk9ORTsKIAog CWlmIChubGFfcHV0KHNrYiwgTkRBX0RTVCwgdGJsLT5rZXlfbGVuLCBwbi0+a2V5KSkKQEAgLTIy ODUsNyArMjI4NSw3IEBAIHN0YXRpYyBpbnQgcG5laWdoX2R1bXBfdGFibGUoc3RydWN0IG5laWdo X3RhYmxlICp0YmwsIHN0cnVjdCBza19idWZmICpza2IsCiAJCWlmIChoID4gc19oKQogCQkJc19p ZHggPSAwOwogCQlmb3IgKG4gPSB0YmwtPnBoYXNoX2J1Y2tldHNbaF0sIGlkeCA9IDA7IG47IG4g PSBuLT5uZXh0KSB7Ci0JCQlpZiAoZGV2X25ldChuLT5kZXYpICE9IG5ldCkKKwkJCWlmIChwbmVp Z2hfbmV0KG4pICE9IG5ldCkKIAkJCQljb250aW51ZTsKIAkJCWlmIChpZHggPCBzX2lkeCkKIAkJ CQlnb3RvIG5leHQ7Ci0tIAoyLjEuMAoKCkZyb20gYWIwMDVhYzcyZDEzZTg2NmMzOWYyNTg5YjA0 OTlhZTc4YjA5MTExNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0 IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBUdWUsIDEgRGVjIDIwMTUgMDc6MjA6MDcgLTA4 MDAKU3ViamVjdDogW1BBVENIIDM1LzM3XSBpcHY2OiBzY3RwOiBpbXBsZW1lbnQgc2N0cF92Nl9k ZXN0cm95X3NvY2soKQoKWyBVcHN0cmVhbSBjb21taXQgNjAyZGQ2MmRmYmRhM2U2M2EyZDZhM2Ni ZGU5NTNlYmU4MmJmNTA4NyBdCgpEbWl0cnkgVnl1a292IHJlcG9ydGVkIGEgbWVtb3J5IGxlYWsg dXNpbmcgSVBWNiBTQ1RQIHNvY2tldHMuCgpXZSBuZWVkIHRvIGNhbGwgaW5ldDZfZGVzdHJveV9z b2NrKCkgdG8gcHJvcGVybHkgcmVsZWFzZQppbmV0NiBzcGVjaWZpYyBmaWVsZHMuCgpSZXBvcnRl ZC1ieTogRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBF cmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkFja2VkLWJ5OiBEYW5pZWwgQm9ya21h bm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIg PGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3NjdHAvc29ja2V0LmMgfCA5ICsrKysrKysr LQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL25ldC9zY3RwL3NvY2tldC5jIGIvbmV0L3NjdHAvc29ja2V0LmMKaW5kZXggMTdiZWYw MS4uM2VjODhiZSAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc29ja2V0LmMKKysrIGIvbmV0L3NjdHAv c29ja2V0LmMKQEAgLTczNzUsNiArNzM3NSwxMyBAQCBzdHJ1Y3QgcHJvdG8gc2N0cF9wcm90ID0g ewogCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKIAorI2luY2x1ZGUgPG5ldC90cmFuc3Bf djYuaD4KK3N0YXRpYyB2b2lkIHNjdHBfdjZfZGVzdHJveV9zb2NrKHN0cnVjdCBzb2NrICpzaykK K3sKKwlzY3RwX2Rlc3Ryb3lfc29jayhzayk7CisJaW5ldDZfZGVzdHJveV9zb2NrKHNrKTsKK30K Kwogc3RydWN0IHByb3RvIHNjdHB2Nl9wcm90ID0gewogCS5uYW1lCQk9ICJTQ1RQdjYiLAogCS5v d25lcgkJPSBUSElTX01PRFVMRSwKQEAgLTczODQsNyArNzM5MSw3IEBAIHN0cnVjdCBwcm90byBz Y3RwdjZfcHJvdCA9IHsKIAkuYWNjZXB0CQk9IHNjdHBfYWNjZXB0LAogCS5pb2N0bAkJPSBzY3Rw X2lvY3RsLAogCS5pbml0CQk9IHNjdHBfaW5pdF9zb2NrLAotCS5kZXN0cm95CT0gc2N0cF9kZXN0 cm95X3NvY2ssCisJLmRlc3Ryb3kJPSBzY3RwX3Y2X2Rlc3Ryb3lfc29jaywKIAkuc2h1dGRvd24J PSBzY3RwX3NodXRkb3duLAogCS5zZXRzb2Nrb3B0CT0gc2N0cF9zZXRzb2Nrb3B0LAogCS5nZXRz b2Nrb3B0CT0gc2N0cF9nZXRzb2Nrb3B0LAotLSAKMi4xLjAKCgpGcm9tIDA0YjUzYzg1MTIyYTk4 ODljMDdkY2FlMGQ5YWFhMWY4NDkxNDI1YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogVHVlLCAxIERlYyAyMDE1 IDIwOjA4OjUxIC0wODAwClN1YmplY3Q6IFtQQVRDSCAzNi8zN10gbmV0X3NjaGVkOiBmaXggcWRp c2NfdHJlZV9kZWNyZWFzZV9xbGVuKCkgcmFjZXMKClsgVXBzdHJlYW0gY29tbWl0IDRlYWYzYjg0 ZjI4ODFjOWMwMjhmMWQ1ZTc2YzUyYWI1NzVmZTNhNjYgXQoKcWRpc2NfdHJlZV9kZWNyZWFzZV9x bGVuKCkgc3VmZmVycyBmcm9tIHR3byBwcm9ibGVtcyBvbiBtdWx0aXF1ZXVlCmRldmljZXMuCgpP bmUgcHJvYmxlbSBpcyB0aGF0IGl0IHVwZGF0ZXMgc2NoLT5xLnFsZW4gYW5kIHNjaC0+cXN0YXRz LmRyb3BzCm9uIHRoZSBtcS9tcXByaW8gcm9vdCBxZGlzYywgd2hpbGUgaXQgc2hvdWxkIG5vdCA6 IERhbmllbGUKcmVwb3J0ZWQgdW5kZXJmbG93cyBlcnJvcnMgOgpbICA2ODEuNzc0ODIxXSBQQVg6 IHNjaC0+cS5xbGVuOiAwIG46IDEKWyAgNjgxLjc3NDgyNV0gUEFYOiBzaXplIG92ZXJmbG93IGRl dGVjdGVkIGluIGZ1bmN0aW9uIHFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbiBuZXQvc2NoZWQvc2No X2FwaS5jOjc2OSBjaWN1cy42OTNfNDkgbWluLCBjb3VudDogNzIsIGRlY2w6IHFsZW47IG51bTog MDsgY29udGV4dDogc2tfYnVmZl9oZWFkOwpbICA2ODEuNzc0OTU0XSBDUFU6IDIgUElEOiAxOSBD b21tOiBrc29mdGlycWQvMiBUYWludGVkOiBHICAgICAgICAgICBPICAgIDQuMi42LjIwMTUxMTI4 MjIzOS0xLWdyc2VjICMxClsgIDY4MS43NzQ5NTVdIEhhcmR3YXJlIG5hbWU6IEFTVVNUZUsgQ09N UFVURVIgSU5DLiBYMzAyTEovWDMwMkxKLCBCSU9TIFgzMDJMSi4yMDIgMDMvMDUvMjAxNQpbICA2 ODEuNzc0OTU2XSAgZmZmZmZmZmZhOWEwNDg2MyAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAw MDAwMDAgZmZmZmZmZmZhOTkwZmY3YwpbICA2ODEuNzc0OTU5XSAgZmZmZmM5MDAwMGQzYmMzOCBm ZmZmZmZmZmE5NWQyODEwIDAwMDAwMDAwMDAwMDAwMDcgZmZmZmZmZmZhOTkxMDAyYgpbICA2ODEu Nzc0OTYwXSAgZmZmZmM5MDAwMGQzYmM2OCBmZmZmZmZmZmE5MWE0NGY0IDAwMDAwMDAwMDAwMDAw MDEgMDAwMDAwMDAwMDAwMDAwMQpbICA2ODEuNzc0OTYyXSBDYWxsIFRyYWNlOgpbICA2ODEuNzc0 OTY3XSAgWzxmZmZmZmZmZmE5NWQyODEwPl0gZHVtcF9zdGFjaysweDRjLzB4N2YKWyAgNjgxLjc3 NDk3MF0gIFs8ZmZmZmZmZmZhOTFhNDRmND5dIHJlcG9ydF9zaXplX292ZXJmbG93KzB4MzQvMHg1 MApbICA2ODEuNzc0OTcyXSAgWzxmZmZmZmZmZmE5NGQxN2UyPl0gcWRpc2NfdHJlZV9kZWNyZWFz ZV9xbGVuKzB4MTUyLzB4MTYwClsgIDY4MS43NzQ5NzZdICBbPGZmZmZmZmZmYzAyNjk0YjE+XSBm cV9jb2RlbF9kZXF1ZXVlKzB4N2IxLzB4ODIwIFtzY2hfZnFfY29kZWxdClsgIDY4MS43NzQ5Nzhd ICBbPGZmZmZmZmZmYzAyNjgwYTA+XSA/IHFkaXNjX3BlZWtfZGVxdWV1ZWQrMHhhMC8weGEwIFtz Y2hfZnFfY29kZWxdClsgIDY4MS43NzQ5ODBdICBbPGZmZmZmZmZmYTk0Y2Q5MmQ+XSBfX3FkaXNj X3J1bisweDRkLzB4MWQwClsgIDY4MS43NzQ5ODNdICBbPGZmZmZmZmZmYTk0OWIyYjI+XSBuZXRf dHhfYWN0aW9uKzB4YzIvMHgxNjAKWyAgNjgxLjc3NDk4NV0gIFs8ZmZmZmZmZmZhOTA2NjRjMT5d IF9fZG9fc29mdGlycSsweGYxLzB4MjAwClsgIDY4MS43NzQ5ODddICBbPGZmZmZmZmZmYTkwNjY1 ZWU+XSBydW5fa3NvZnRpcnFkKzB4MWUvMHgzMApbICA2ODEuNzc0OTg5XSAgWzxmZmZmZmZmZmE5 MDg5NmIwPl0gc21wYm9vdF90aHJlYWRfZm4rMHgxNTAvMHgyNjAKWyAgNjgxLjc3NDk5MV0gIFs8 ZmZmZmZmZmZhOTA4OTU2MD5dID8gc29ydF9yYW5nZSsweDQwLzB4NDAKWyAgNjgxLjc3NDk5Ml0g IFs8ZmZmZmZmZmZhOTA4NWZlND5dIGt0aHJlYWQrMHhlNC8weDEwMApbICA2ODEuNzc0OTk0XSAg WzxmZmZmZmZmZmE5MDg1ZjAwPl0gPyBrdGhyZWFkX3dvcmtlcl9mbisweDE3MC8weDE3MApbICA2 ODEuNzc0OTk1XSAgWzxmZmZmZmZmZmE5NWQ4ZDFlPl0gcmV0X2Zyb21fZm9yaysweDNlLzB4NzAK Cm1xL21xcHJpbyBoYXZlIHRoZWlyIG93biB3YXlzIHRvIHJlcG9ydCBxbGVuL2Ryb3BzIGJ5IGZv bGRpbmcgc3RhdHMgb24KYWxsIHRoZWlyIHF1ZXVlcywgd2l0aCBhcHByb3ByaWF0ZSBsb2NraW5n LgoKQSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbigpIGNh bGxzIHFkaXNjX2xvb2t1cCgpCndpdGhvdXQgcHJvcGVyIGxvY2tpbmcgOiBjb25jdXJyZW50IHFk aXNjIHVwZGF0ZXMgY291bGQgY29ycnVwdCB0aGUgbGlzdAp0aGF0IHFkaXNjX21hdGNoX2Zyb21f cm9vdCgpIHBhcnNlcyB0byBmaW5kIGEgcWRpc2MgZ2l2ZW4gaXRzIGhhbmRsZS4KCkZpeCBmaXJz dCBwcm9ibGVtIGFkZGluZyBhIFRDUV9GX05PUEFSRU5UIHFkaXNjIGZsYWcgdGhhdApxZGlzY190 cmVlX2RlY3JlYXNlX3FsZW4oKSBjYW4gdXNlIHRvIGFib3J0IGl0cyB0cmVlIHRyYXZlcnNhbCwK YXMgc29vbiBhcyBpdCBtZWV0cyBhIG1xL21xcHJpbyBxZGlzYyBjaGlsZHJlbi4KClNlY29uZCBw cm9ibGVtIGNhbiBiZSBmaXhlZCBieSBSQ1UgcHJvdGVjdGlvbi4KUWRpc2MgYXJlIGFscmVhZHkg ZnJlZWQgYWZ0ZXIgUkNVIGdyYWNlIHBlcmlvZCwgc28gcWRpc2NfbGlzdF9hZGQoKSBhbmQKcWRp c2NfbGlzdF9kZWwoKSBzaW1wbHkgaGF2ZSB0byB1c2UgYXBwcm9wcmlhdGUgcmN1IGxpc3QgdmFy aWFudHMuCgpBIGZ1dHVyZSBwYXRjaCB3aWxsIGFkZCBhIHBlciBzdHJ1Y3QgbmV0ZGV2X3F1ZXVl IGxpc3QgYW5jaG9yLCBzbyB0aGF0CnFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbigpIGNhbiBoYXZl IG1vcmUgZWZmaWNpZW50IGxvb2t1cHMuCgpSZXBvcnRlZC1ieTogRGFuaWVsZSBGdWNpbmkgPGRm dWNpbmlAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdv b2dsZS5jb20+CkNjOiBDb25nIFdhbmcgPGN3YW5nQHR3b3BlbnNvdXJjZS5jb20+CkNjOiBKYW1h bCBIYWRpIFNhbGltIDxqaHNAbW9qYXRhdHUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBN aWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMu aCB8ICAzICsrKwogbmV0L3NjaGVkL3NjaF9hcGkuYyAgICAgICB8IDI3ICsrKysrKysrKysrKysr KysrKy0tLS0tLS0tLQogbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgICB8ICAyICstCiBuZXQvc2No ZWQvc2NoX21xLmMgICAgICAgIHwgIDQgKystLQogbmV0L3NjaGVkL3NjaF9tcXByaW8uYyAgICB8 ICA0ICsrLS0KIDUgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaCBiL2luY2x1ZGUvbmV0 L3NjaF9nZW5lcmljLmgKaW5kZXggMjczOGY2Zi4uNDlkZGEzOCAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9uZXQvc2NoX2dlbmVyaWMuaAorKysgYi9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oCkBAIC02 MSw2ICs2MSw5IEBAIHN0cnVjdCBRZGlzYyB7CiAJCQkJICAgICAgKi8KICNkZWZpbmUgVENRX0Zf V0FSTl9OT05XQwkoMSA8PCAxNikKICNkZWZpbmUgVENRX0ZfQ1BVU1RBVFMJCTB4MjAgLyogcnVu IHVzaW5nIHBlcmNwdSBzdGF0aXN0aWNzICovCisjZGVmaW5lIFRDUV9GX05PUEFSRU5UCQkweDQw IC8qIHJvb3Qgb2YgaXRzIGhpZXJhcmNoeSA6CisJCQkJICAgICAgKiBxZGlzY190cmVlX2RlY3Jl YXNlX3FsZW4oKSBzaG91bGQgc3RvcC4KKwkJCQkgICAgICAqLwogCXUzMgkJCWxpbWl0OwogCWNv bnN0IHN0cnVjdCBRZGlzY19vcHMJKm9wczsKIAlzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZQlfX3Jj dSAqc3RhYjsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfYXBpLmMgYi9uZXQvc2NoZWQvc2No X2FwaS5jCmluZGV4IGYwNmFhMDEuLjFhMGFhMmEgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hf YXBpLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9hcGkuYwpAQCAtMjUzLDcgKzI1Myw4IEBAIGludCBx ZGlzY19zZXRfZGVmYXVsdChjb25zdCBjaGFyICpuYW1lKQogfQogCiAvKiBXZSBrbm93IGhhbmRs ZS4gRmluZCBxZGlzYyBhbW9uZyBhbGwgcWRpc2MncyBhdHRhY2hlZCB0byBkZXZpY2UKLSAgIChy b290IHFkaXNjLCBhbGwgaXRzIGNoaWxkcmVuLCBjaGlsZHJlbiBvZiBjaGlsZHJlbiBldGMuKQor ICogKHJvb3QgcWRpc2MsIGFsbCBpdHMgY2hpbGRyZW4sIGNoaWxkcmVuIG9mIGNoaWxkcmVuIGV0 Yy4pCisgKiBOb3RlOiBjYWxsZXIgZWl0aGVyIHVzZXMgcnRubCBvciByY3VfcmVhZF9sb2NrKCkK ICAqLwogCiBzdGF0aWMgc3RydWN0IFFkaXNjICpxZGlzY19tYXRjaF9mcm9tX3Jvb3Qoc3RydWN0 IFFkaXNjICpyb290LCB1MzIgaGFuZGxlKQpAQCAtMjY0LDcgKzI2NSw3IEBAIHN0YXRpYyBzdHJ1 Y3QgUWRpc2MgKnFkaXNjX21hdGNoX2Zyb21fcm9vdChzdHJ1Y3QgUWRpc2MgKnJvb3QsIHUzMiBo YW5kbGUpCiAJICAgIHJvb3QtPmhhbmRsZSA9PSBoYW5kbGUpCiAJCXJldHVybiByb290OwogCi0J bGlzdF9mb3JfZWFjaF9lbnRyeShxLCAmcm9vdC0+bGlzdCwgbGlzdCkgeworCWxpc3RfZm9yX2Vh Y2hfZW50cnlfcmN1KHEsICZyb290LT5saXN0LCBsaXN0KSB7CiAJCWlmIChxLT5oYW5kbGUgPT0g aGFuZGxlKQogCQkJcmV0dXJuIHE7CiAJfQpAQCAtMjc3LDE1ICsyNzgsMTggQEAgdm9pZCBxZGlz Y19saXN0X2FkZChzdHJ1Y3QgUWRpc2MgKnEpCiAJCXN0cnVjdCBRZGlzYyAqcm9vdCA9IHFkaXNj X2RldihxKS0+cWRpc2M7CiAKIAkJV0FSTl9PTl9PTkNFKHJvb3QgPT0gJm5vb3BfcWRpc2MpOwot CQlsaXN0X2FkZF90YWlsKCZxLT5saXN0LCAmcm9vdC0+bGlzdCk7CisJCUFTU0VSVF9SVE5MKCk7 CisJCWxpc3RfYWRkX3RhaWxfcmN1KCZxLT5saXN0LCAmcm9vdC0+bGlzdCk7CiAJfQogfQogRVhQ T1JUX1NZTUJPTChxZGlzY19saXN0X2FkZCk7CiAKIHZvaWQgcWRpc2NfbGlzdF9kZWwoc3RydWN0 IFFkaXNjICpxKQogewotCWlmICgocS0+cGFyZW50ICE9IFRDX0hfUk9PVCkgJiYgIShxLT5mbGFn cyAmIFRDUV9GX0lOR1JFU1MpKQotCQlsaXN0X2RlbCgmcS0+bGlzdCk7CisJaWYgKChxLT5wYXJl bnQgIT0gVENfSF9ST09UKSAmJiAhKHEtPmZsYWdzICYgVENRX0ZfSU5HUkVTUykpIHsKKwkJQVNT RVJUX1JUTkwoKTsKKwkJbGlzdF9kZWxfcmN1KCZxLT5saXN0KTsKKwl9CiB9CiBFWFBPUlRfU1lN Qk9MKHFkaXNjX2xpc3RfZGVsKTsKIApAQCAtNzUwLDE0ICs3NTQsMTggQEAgdm9pZCBxZGlzY190 cmVlX2RlY3JlYXNlX3FsZW4oc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGludCBuKQogCWlm IChuID09IDApCiAJCXJldHVybjsKIAlkcm9wcyA9IG1heF90KGludCwgbiwgMCk7CisJcmN1X3Jl YWRfbG9jaygpOwogCXdoaWxlICgocGFyZW50aWQgPSBzY2gtPnBhcmVudCkpIHsKIAkJaWYgKFRD X0hfTUFKKHBhcmVudGlkKSA9PSBUQ19IX01BSihUQ19IX0lOR1JFU1MpKQotCQkJcmV0dXJuOwor CQkJYnJlYWs7CiAKKwkJaWYgKHNjaC0+ZmxhZ3MgJiBUQ1FfRl9OT1BBUkVOVCkKKwkJCWJyZWFr OworCQkvKiBUT0RPOiBwZXJmb3JtIHRoZSBzZWFyY2ggb24gYSBwZXIgdHhxIGJhc2lzICovCiAJ CXNjaCA9IHFkaXNjX2xvb2t1cChxZGlzY19kZXYoc2NoKSwgVENfSF9NQUoocGFyZW50aWQpKTsK IAkJaWYgKHNjaCA9PSBOVUxMKSB7Ci0JCQlXQVJOX09OKHBhcmVudGlkICE9IFRDX0hfUk9PVCk7 Ci0JCQlyZXR1cm47CisJCQlXQVJOX09OX09OQ0UocGFyZW50aWQgIT0gVENfSF9ST09UKTsKKwkJ CWJyZWFrOwogCQl9CiAJCWNvcHMgPSBzY2gtPm9wcy0+Y2xfb3BzOwogCQlpZiAoY29wcy0+cWxl bl9ub3RpZnkpIHsKQEAgLTc2OCw2ICs3NzYsNyBAQCB2b2lkIHFkaXNjX3RyZWVfZGVjcmVhc2Vf cWxlbihzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgaW50IG4pCiAJCXNjaC0+cS5xbGVuIC09 IG47CiAJCV9fcWRpc2NfcXN0YXRzX2Ryb3Aoc2NoLCBkcm9wcyk7CiAJfQorCXJjdV9yZWFkX3Vu bG9jaygpOwogfQogRVhQT1JUX1NZTUJPTChxZGlzY190cmVlX2RlY3JlYXNlX3FsZW4pOwogCkBA IC05NDEsNyArOTUwLDcgQEAgcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0 cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSwKIAkJfQogCQlsb2NrZGVwX3NldF9jbGFzcyhx ZGlzY19sb2NrKHNjaCksICZxZGlzY190eF9sb2NrKTsKIAkJaWYgKCFuZXRpZl9pc19tdWx0aXF1 ZXVlKGRldikpCi0JCQlzY2gtPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUU7CisJCQlzY2gtPmZs YWdzIHw9IFRDUV9GX09ORVRYUVVFVUUgfCBUQ1FfRl9OT1BBUkVOVDsKIAl9CiAKIAlzY2gtPmhh bmRsZSA9IGhhbmRsZTsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jIGIvbmV0 L3NjaGVkL3NjaF9nZW5lcmljLmMKaW5kZXggNmVmY2EzMC4uYjQ1MzI3MCAxMDA2NDQKLS0tIGEv bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMKQEAg LTc0Myw3ICs3NDMsNyBAQCBzdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3Ry dWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCXJldHVybjsKIAkJfQogCQlpZiAoIW5ldGlmX2lzX211 bHRpcXVldWUoZGV2KSkKLQkJCXFkaXNjLT5mbGFncyB8PSBUQ1FfRl9PTkVUWFFVRVVFOworCQkJ cWRpc2MtPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUUgfCBUQ1FfRl9OT1BBUkVOVDsKIAl9CiAJ ZGV2X3F1ZXVlLT5xZGlzY19zbGVlcGluZyA9IHFkaXNjOwogfQpkaWZmIC0tZ2l0IGEvbmV0L3Nj aGVkL3NjaF9tcS5jIGIvbmV0L3NjaGVkL3NjaF9tcS5jCmluZGV4IGYzY2JhZWMuLjNlODJmMDQg MTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfbXEuYworKysgYi9uZXQvc2NoZWQvc2NoX21xLmMK QEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGludCBtcV9pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBz dHJ1Y3QgbmxhdHRyICpvcHQpCiAJCWlmIChxZGlzYyA9PSBOVUxMKQogCQkJZ290byBlcnI7CiAJ CXByaXYtPnFkaXNjc1tudHhdID0gcWRpc2M7Ci0JCXFkaXNjLT5mbGFncyB8PSBUQ1FfRl9PTkVU WFFVRVVFOworCQlxZGlzYy0+ZmxhZ3MgfD0gVENRX0ZfT05FVFhRVUVVRSB8IFRDUV9GX05PUEFS RU5UOwogCX0KIAogCXNjaC0+ZmxhZ3MgfD0gVENRX0ZfTVFST09UOwpAQCAtMTU2LDcgKzE1Niw3 IEBAIHN0YXRpYyBpbnQgbXFfZ3JhZnQoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcg Y2wsIHN0cnVjdCBRZGlzYyAqbmV3LAogCiAJKm9sZCA9IGRldl9ncmFmdF9xZGlzYyhkZXZfcXVl dWUsIG5ldyk7CiAJaWYgKG5ldykKLQkJbmV3LT5mbGFncyB8PSBUQ1FfRl9PTkVUWFFVRVVFOwor CQluZXctPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUUgfCBUQ1FfRl9OT1BBUkVOVDsKIAlpZiAo ZGV2LT5mbGFncyAmIElGRl9VUCkKIAkJZGV2X2FjdGl2YXRlKGRldik7CiAJcmV0dXJuIDA7CmRp ZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX21xcHJpby5jIGIvbmV0L3NjaGVkL3NjaF9tcXByaW8u YwppbmRleCAzODExYTc0Li5hZDcwZWNmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX21xcHJp by5jCisrKyBiL25ldC9zY2hlZC9zY2hfbXFwcmlvLmMKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0 aWMgaW50IG1xcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQp CiAJCQlnb3RvIGVycjsKIAkJfQogCQlwcml2LT5xZGlzY3NbaV0gPSBxZGlzYzsKLQkJcWRpc2Mt PmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUU7CisJCXFkaXNjLT5mbGFncyB8PSBUQ1FfRl9PTkVU WFFVRVVFIHwgVENRX0ZfTk9QQVJFTlQ7CiAJfQogCiAJLyogSWYgdGhlIG1xcHJpbyBvcHRpb25z IGluZGljYXRlIHRoYXQgaGFyZHdhcmUgc2hvdWxkIG93bgpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0 YXRpYyBpbnQgbXFwcmlvX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNs LCBzdHJ1Y3QgUWRpc2MgKm5ldywKIAkqb2xkID0gZGV2X2dyYWZ0X3FkaXNjKGRldl9xdWV1ZSwg bmV3KTsKIAogCWlmIChuZXcpCi0JCW5ldy0+ZmxhZ3MgfD0gVENRX0ZfT05FVFhRVUVVRTsKKwkJ bmV3LT5mbGFncyB8PSBUQ1FfRl9PTkVUWFFVRVVFIHwgVENRX0ZfTk9QQVJFTlQ7CiAKIAlpZiAo ZGV2LT5mbGFncyAmIElGRl9VUCkKIAkJZGV2X2FjdGl2YXRlKGRldik7Ci0tIAoyLjEuMAoKCkZy b20gMWJlOTA5NjMzNDY3ODVmNWEwODE1NDRhZjI5OWY3YTdlNGRlOGE2YSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogQW5kcmVqIE90YSA8YW5kcmVqQG90YS5zaT4KRGF0ZTogVGh1LCAx NSBPY3QgMjAxNSAwMDoxNDozNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMzcvMzddIHZpYS1yaGlu ZTogZml4IFZMQU4gcmVjZWl2ZSBoYW5kbGluZyByZWdyZXNzaW9uLgoKWyBVcHN0cmVhbSBjb21t aXQgNWY3MTVjMDk3OTY1YzBhZDAzN2Y2NDM5M2QwYjk1YzUwMjg3Nzc1YiBdCgpCZWNhdXNlIGV0 aF90eXBlX3RyYW5zKCkgY29uc3VtZXMgZXRoZXJuZXQgaGVhZGVyIHdvcnRoIG9mIGJ5dGVzLCBh IGNhbGwKdG8gcmVhZCBUQ0kgZnJvbSBlbmQgb2YgcGFja2V0IHVzaW5nIHJoaW5lX3J4X3ZsYW5f dGFnKCkgbm8gbG9uZ2VyIHdvcmtzCmFzIGl0J3MgcmVhZGluZyBmcm9tIGFuIGludmFsaWQgb2Zm c2V0LgoKVGVzdGVkIHRvIGJlIHdvcmtpbmcgb24gUENFbmdpbmVzIEFsaXggYm9hcmQuCgpGaXhl czogODEwZjE5YmNiODYyICgidmlhLXJoaW5lOiBhZGQgY29uc2lzdGVudCBtZW1vcnkgYmFycmll ciBpbiB2bGFuIHJlY2VpdmUgY29kZS4iKQpTaWduZWQtb2ZmLWJ5OiBBbmRyZWogT3RhIDxhbmRy ZWpAb3RhLnNpPgpBY2tlZC1ieTogRnJhbmNvaXMgUm9taWV1IDxyb21pZXVAZnIuem9yZWlsLmNv bT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0Pgot LS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L3ZpYS92aWEtcmhpbmUuYyB8IDMgKystCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvdmlhL3ZpYS1yaGluZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv dmlhL3ZpYS1yaGluZS5jCmluZGV4IGE4MzI2MzcuLjJiNzU1MGMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L3ZpYS92aWEtcmhpbmUuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC92aWEvdmlhLXJoaW5lLmMKQEAgLTIxMzQsMTAgKzIxMzQsMTEgQEAgc3RhdGljIGludCByaGlu ZV9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbGltaXQpCiAJCQl9CiAKIAkJCXNrYl9w dXQoc2tiLCBwa3RfbGVuKTsKLQkJCXNrYi0+cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2Is IGRldik7CiAKIAkJCXJoaW5lX3J4X3ZsYW5fdGFnKHNrYiwgZGVzYywgZGF0YV9zaXplKTsKIAor CQkJc2tiLT5wcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgZGV2KTsKKwogCQkJbmV0aWZf cmVjZWl2ZV9za2Ioc2tiKTsKIAogCQkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmcnAtPnJ4X3N0 YXRzLnN5bmNwKTsKLS0gCjIuMS4wCgo= ----Next_Part(Thu_Dec_10_14_37_58_2015_327)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_43.mbox" RnJvbSAxOTkwMGQwYmQ5NDE4MWZmYTRkMjEzMGI1ZDZhZmNjNmFlZjgwNWUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/ZnJhbj1DMz1BN29pcz0yMHJvbWlldT89IDxy b21pZXVAZnIuem9yZWlsLmNvbT4KRGF0ZTogV2VkLCAxMSBOb3YgMjAxNSAyMzozNToxOCArMDEw MApTdWJqZWN0OiBbUEFUQ0ggMDEvNDNdIHI4MTY5OiBmaXgga2FzYW4gcmVwb3J0ZWQgc2tiIHVz ZS1hZnRlci1mcmVlLgoKWyBVcHN0cmVhbSBjb21taXQgMzkxNzQyOTFkOGU4YWNmZDExMTMyMTRh OTQzMjYzYWFhMDNjNTdjOCBdCgpTaWduZWQtb2ZmLWJ5OiBGcmFuY29pcyBSb21pZXUgPHJvbWll dUBmci56b3JlaWwuY29tPgpSZXBvcnRlZC1ieTogRGF2ZSBKb25lcyA8ZGF2ZWpAY29kZW1vbmtl eS5vcmcudWs+CkZpeGVzOiBkN2QyZDg5ZDRiMGFmICgicjgxNjk6IEFkZCBzb2Z0d2FyZSBjb3Vu dGVyIGZvciBtdWx0aWNhc3QgcGFja2FnZXMiKQpBY2tlZC1ieTogRXJpYyBEdW1hemV0IDxlZHVt YXpldEBnb29nbGUuY29tPgpBY2tlZC1ieTogQ29yaW5uYSBWaW5zY2hlbiA8dmluc2NoZW5AcmVk aGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuYyB8IDYgKysrLS0t CiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuYyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L3JlYWx0ZWsvcjgxNjkuYwppbmRleCBiNGYyMTIzLi43OWVmNzk5IDEwMDY0NAot LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5LmMKKysrIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OS5jCkBAIC03NDI5LDE1ICs3NDI5LDE1IEBAIHByb2Nl c3NfcGt0OgogCiAJCQlydGw4MTY5X3J4X3ZsYW5fdGFnKGRlc2MsIHNrYik7CiAKKwkJCWlmIChz a2ItPnBrdF90eXBlID09IFBBQ0tFVF9NVUxUSUNBU1QpCisJCQkJZGV2LT5zdGF0cy5tdWx0aWNh c3QrKzsKKwogCQkJbmFwaV9ncm9fcmVjZWl2ZSgmdHAtPm5hcGksIHNrYik7CiAKIAkJCXU2NF9z dGF0c191cGRhdGVfYmVnaW4oJnRwLT5yeF9zdGF0cy5zeW5jcCk7CiAJCQl0cC0+cnhfc3RhdHMu cGFja2V0cysrOwogCQkJdHAtPnJ4X3N0YXRzLmJ5dGVzICs9IHBrdF9zaXplOwogCQkJdTY0X3N0 YXRzX3VwZGF0ZV9lbmQoJnRwLT5yeF9zdGF0cy5zeW5jcCk7Ci0KLQkJCWlmIChza2ItPnBrdF90 eXBlID09IFBBQ0tFVF9NVUxUSUNBU1QpCi0JCQkJZGV2LT5zdGF0cy5tdWx0aWNhc3QrKzsKIAkJ fQogcmVsZWFzZV9kZXNjcmlwdG9yOgogCQlkZXNjLT5vcHRzMiA9IDA7Ci0tIAoyLjEuMAoKCkZy b20gMTZlNDYxOTljY2RiODM0MzMwZWQ4MDEwMTlkNmI5NjA3NzI5MWQ3YyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3NpbmR1 a3Rpb24ub3JnPgpEYXRlOiBUdWUsIDEwIE5vdiAyMDE1IDE2OjIzOjE1ICswMTAwClN1YmplY3Q6 IFtQQVRDSCAwMi80M10gYWYtdW5peDogZml4IHVzZS1hZnRlci1mcmVlIHdpdGggY29uY3VycmVu dCByZWFkZXJzCiB3aGlsZSBzcGxpY2luZwoKWyBVcHN0cmVhbSBjb21taXQgNzNlZDVkMjVkY2Uw MzU0ZWEzODFkNmRjOTMwMDVjMzA4NWZhZTAzZCBdCgpEdXJpbmcgc3BsaWNpbmcgYW4gYWYtdW5p eCBzb2NrZXQgdG8gYSBwaXBlIHdlIGhhdmUgdG8gZHJvcCBhbGwKYWYtdW5peCBzb2NrZXQgbG9j a3MuIFdoaWxlIGRvaW5nIHNvIHdlIGFsbG93IGFub3RoZXIgcmVhZGVyIHRvIGVudGVyCnVuaXhf c3RyZWFtX3JlYWRfZ2VuZXJpYyB3aGljaCBjYW4gcmVhZCwgY29weSBhbmQgZmluYWxseSBmcmVl IGFub3RoZXIKc2tiLiBJZiBleGFjdGx5IHRoaXMgc2tiIGlzIGp1c3QgaW4gcHJvY2VzcyBvZiBi ZWluZyBzcGxpY2VkIHdlIGdldCBhCnVzZS1hZnRlci1mcmVlIHJlcG9ydCBieSBrYXNhbi4KCkZp cnN0LCB3ZSBtdXN0IG1ha2Ugc3VyZSB0byBub3QgaGF2ZSBhIGZyZWUgd2hpbGUgdGhlIHNrYiBp cyB1c2VkIGR1cmluZwp0aGUgc3BsaWNlIG9wZXJhdGlvbi4gV2Ugc2ltcGx5IGluY3JlbWVudCBp dHMgdXNlIGNvdW50ZXIgYmVmb3JlIHVubG9ja2luZwp0aGUgcmVhZGVyIGxvY2suCgpTdHJlYW0g c29ja2V0cyBoYXZlIHRoZSBuaWNlIGNoYXJhY3RlcmlzdGljIHRoYXQgd2UgZG9uJ3QgY2FyZSBh Ym91dAp6ZXJvIGxlbmd0aCB3cml0ZXMgYW5kIHRoZXkgbmV2ZXIgcmVhY2ggdGhlIHBlZXIgc29j a2V0J3MgcXVldWUuIFRoYXQKc2FpZCwgd2UgY2FuIHRha2UgdGhlIFVOSVhDQi5jb25zdW1lZCBm aWVsZCBhcyB0aGUgaW5kaWNhdG9yIGlmIHRoZQpza2Igd2FzIGFscmVhZHkgZnJlZWQgZnJvbSB0 aGUgc29ja2V0J3MgcmVjZWl2ZSBxdWV1ZS4gSWYgdGhlIHNrYiB3YXMKZnVsbHkgY29uc3VtZWQg YWZ0ZXIgd2UgbG9ja2VkIHRoZSByZWFkZXIgc2lkZSBhZ2FpbiB3ZSBrbm93IGl0IGhhcyBiZWVu CmRyb3BwZWQgYnkgYSBzZWNvbmQgcmVhZGVyLiBXZSBpbmRpY2F0ZSBhIHNob3J0IHJlYWQgdG8g dXNlciBzcGFjZSBhbmQKYWJvcnQgdGhlIGN1cnJlbnQgc3BsaWNlIG9wZXJhdGlvbi4KClRoaXMg YnVnIGhhcyBiZWVuIGZvdW5kIHdpdGggc3l6a2FsbGVyCihodHRwOi8vZ2l0aHViLmNvbS9nb29n bGUvc3l6a2FsbGVyKSBieSBEbWl0cnkgVnl1a292LgoKRml4ZXM6IDJiNTE0NTc0ZjdlOCAoIm5l dDogYWZfdW5peDogaW1wbGVtZW50IHNwbGljZSBmb3Igc3RyZWFtIGFmX3VuaXggc29ja2V0cyIp ClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+CkNjOiBEbWl0 cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+CkNjOiBFcmljIER1bWF6ZXQgPGVyaWMuZHVt YXpldEBnbWFpbC5jb20+CkFja2VkLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5j b20+ClNpZ25lZC1vZmYtYnk6IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5k dWt0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxv ZnQubmV0PgotLS0KIG5ldC91bml4L2FmX3VuaXguYyB8IDE4ICsrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9uZXQvdW5peC9h Zl91bml4LmMgYi9uZXQvdW5peC9hZl91bml4LmMKaW5kZXggOTRmNjU4Mi4uYTVhZmU0MSAxMDA2 NDQKLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jCisrKyBiL25ldC91bml4L2FmX3VuaXguYwpAQCAt NDQwLDYgKzQ0MCw3IEBAIHN0YXRpYyB2b2lkIHVuaXhfcmVsZWFzZV9zb2NrKHN0cnVjdCBzb2Nr ICpzaywgaW50IGVtYnJpb24pCiAJCWlmIChzdGF0ZSA9PSBUQ1BfTElTVEVOKQogCQkJdW5peF9y ZWxlYXNlX3NvY2soc2tiLT5zaywgMSk7CiAJCS8qIHBhc3NlZCBmZHMgYXJlIGVyYXNlZCBpbiB0 aGUga2ZyZWVfc2tiIGhvb2sJICAgICAgKi8KKwkJVU5JWENCKHNrYikuY29uc3VtZWQgPSBza2It PmxlbjsKIAkJa2ZyZWVfc2tiKHNrYik7CiAJfQogCkBAIC0yMDcxLDYgKzIwNzIsNyBAQCBzdGF0 aWMgaW50IHVuaXhfc3RyZWFtX3JlYWRfZ2VuZXJpYyhzdHJ1Y3QgdW5peF9zdHJlYW1fcmVhZF9z dGF0ZSAqc3RhdGUpCiAKIAlkbyB7CiAJCWludCBjaHVuazsKKwkJYm9vbCBkcm9wX3NrYjsKIAkJ c3RydWN0IHNrX2J1ZmYgKnNrYiwgKmxhc3Q7CiAKIAkJdW5peF9zdGF0ZV9sb2NrKHNrKTsKQEAg LTIxNTEsNyArMjE1MywxMSBAQCB1bmxvY2s6CiAJCX0KIAogCQljaHVuayA9IG1pbl90KHVuc2ln bmVkIGludCwgdW5peF9za2JfbGVuKHNrYikgLSBza2lwLCBzaXplKTsKKwkJc2tiX2dldChza2Ip OwogCQljaHVuayA9IHN0YXRlLT5yZWN2X2FjdG9yKHNrYiwgc2tpcCwgY2h1bmssIHN0YXRlKTsK KwkJZHJvcF9za2IgPSAhdW5peF9za2JfbGVuKHNrYik7CisJCS8qIHNrYiBpcyBvbmx5IHNhZmUg dG8gdXNlIGlmICFkcm9wX3NrYiAqLworCQljb25zdW1lX3NrYihza2IpOwogCQlpZiAoY2h1bmsg PCAwKSB7CiAJCQlpZiAoY29waWVkID09IDApCiAJCQkJY29waWVkID0gLUVGQVVMVDsKQEAgLTIx NjAsNiArMjE2NiwxOCBAQCB1bmxvY2s6CiAJCWNvcGllZCArPSBjaHVuazsKIAkJc2l6ZSAtPSBj aHVuazsKIAorCQlpZiAoZHJvcF9za2IpIHsKKwkJCS8qIHRoZSBza2Igd2FzIHRvdWNoZWQgYnkg YSBjb25jdXJyZW50IHJlYWRlcjsKKwkJCSAqIHdlIHNob3VsZCBub3QgZXhwZWN0IGFueXRoaW5n IGZyb20gdGhpcyBza2IKKwkJCSAqIGFueW1vcmUgYW5kIGFzc3VtZSBpdCBpbnZhbGlkIC0gd2Ug Y2FuIGJlCisJCQkgKiBzdXJlIGl0IHdhcyBkcm9wcGVkIGZyb20gdGhlIHNvY2tldCBxdWV1ZQor CQkJICoKKwkJCSAqIGxldCdzIHJlcG9ydCBhIHNob3J0IHJlYWQKKwkJCSAqLworCQkJZXJyID0g MDsKKwkJCWJyZWFrOworCQl9CisKIAkJLyogTWFyayByZWFkIHBhcnQgb2Ygc2tiIGFzIHVzZWQg Ki8KIAkJaWYgKCEoZmxhZ3MgJiBNU0dfUEVFSykpIHsKIAkJCVVOSVhDQihza2IpLmNvbnN1bWVk ICs9IGNodW5rOwotLSAKMi4xLjAKCgpGcm9tIDc1MjYyZGJkMjE0YTJhNjI4YWEzMzNkNTE1MzFi OWU2NGZkN2RjN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEhhbm5lcyBGcmVkZXJp YyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KRGF0ZTogTW9uLCAxNiBOb3YgMjAx NSAxNjoyNTo1NiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDMvNDNdIGFmX3VuaXg6IGRvbid0IGFw cGVuZCBjb25zdW1lZCBza2JzIHRvIHNrX3JlY2VpdmVfcXVldWUKClsgVXBzdHJlYW0gY29tbWl0 IDg4NDRmOTcyMzhjYTZjMWNhOTJhNWQ2YzY5ZjUzZWZkMzYxYTI2NmYgXQoKSW4gY2FzZSBtdWx0 aXBsZSB3cml0ZXMgdG8gYSB1bml4IHN0cmVhbSBzb2NrZXQgcmFjZSB3ZSBjb3VsZCBlbmQgdXAg aW4gYQpzaXR1YXRpb24gd2hlcmUgd2UgcHJlLWFsbG9jYXRlIGEgbmV3IHNrYiBmb3IgdXNlIGlu IHVuaXhfc3RyZWFtX3NlbmRwYWdlCmJ1dCBoYXZlIHRvIGZyZWUgaXQgYWdhaW4gaW4gdGhlIGxv Y2tlZCBzZWN0aW9uIGJlY2F1c2UgYW5vdGhlciBza2IKaGFzIGJlZW4gYXBwZW5kZWQgbWVhbndo aWxlLCB3aGljaCB3ZSBtdXN0IHVzZS4gQWNjaWRlbnRhbGx5IHdlIGRpZG4ndApjbGVhciB0aGUg cG9pbnRlciBhZnRlciBjb25zdW1pbmcgaXQgYW5kIHNvIHdlIHRvdWNoZWQgZnJlZWQgbWVtb3J5 CndoaWxlIGFwcGVuZGluZyBpdCB0byB0aGUgc2tfcmVjZWl2ZV9xdWV1ZS4gU28sIGNsZWFyIHRo ZSBwb2ludGVyIGFmdGVyCmNvbnN1bWluZyB0aGUgc2tiLgoKVGhpcyBidWcgaGFzIGJlZW4gZm91 bmQgd2l0aCBzeXprYWxsZXIKKGh0dHA6Ly9naXRodWIuY29tL2dvb2dsZS9zeXprYWxsZXIpIGJ5 IERtaXRyeSBWeXVrb3YuCgpGaXhlczogODY5ZTdjNjI0ODZlICgibmV0OiBhZl91bml4OiBpbXBs ZW1lbnQgc3RyZWFtIHNlbmRwYWdlIHN1cHBvcnQiKQpSZXBvcnRlZC1ieTogRG1pdHJ5IFZ5dWtv diA8ZHZ5dWtvdkBnb29nbGUuY29tPgpDYzogRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBnb29nbGUu Y29tPgpDYzogRXJpYyBEdW1hemV0IDxlcmljLmR1bWF6ZXRAZ21haWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0cmVzc2luZHVrdGlvbi5vcmc+CkFj a2VkLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvdW5peC9hZl91 bml4LmMgfCAxICsKIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQoKZGlmZiAtLWdpdCBh L25ldC91bml4L2FmX3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguYwppbmRleCBhNWFmZTQxLi4z ZTJjYTM5IDEwMDY0NAotLS0gYS9uZXQvdW5peC9hZl91bml4LmMKKysrIGIvbmV0L3VuaXgvYWZf dW5peC5jCkBAIC0xNzk5LDYgKzE3OTksNyBAQCBhbGxvY19za2I6CiAJCSAqIHRoaXMgLSBkb2Vz IG5vIGhhcm0KIAkJICovCiAJCWNvbnN1bWVfc2tiKG5ld3NrYik7CisJCW5ld3NrYiA9IE5VTEw7 CiAJfQogCiAJaWYgKHNrYl9hcHBlbmRfcGFnZWZyYWdzKHNrYiwgcGFnZSwgb2Zmc2V0LCBzaXpl KSkgewotLSAKMi4xLjAKCgpGcm9tIGZhYTgzYzZlMDFmODYwNGMzODVjNGUwY2NjN2NhMWRhNTkx MTAwYTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEhhbm5lcyBGcmVkZXJpYyBTb3dh IDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KRGF0ZTogVHVlLCAxNyBOb3YgMjAxNSAxNTox MDo1OSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDQvNDNdIGFmX3VuaXg6IHRha2UgcmVjZWl2ZSBx dWV1ZSBsb2NrIHdoaWxlIGFwcGVuZGluZyBuZXcKIHNrYgoKWyBVcHN0cmVhbSBjb21taXQgYTNh MTE2ZTA0Y2M2YTk0ZDU5NWVhZDRlOTU2YWIxYmMxZDJmNDc0NiBdCgpXaGlsZSBwb3NzaWJseSBp biBmdXR1cmUgd2UgZG9uJ3QgbmVjZXNzYXJpbHkgbmVlZCB0byB1c2UKc2tfYnVmZl9oZWFkLmxv Y2sgdGhpcyBpcyBhIHJhdGhlciBsYXJnZXIgY2hhbmdlLCBhcyBpdCBhZmZlY3RzIHRoZQphZl91 bml4IGZkIGdhcmJhZ2UgY29sbGVjdG9yLCBkaWFnIGFuZCBzb2NrZXQgY2xlYW51cHMuIFRoaXMg aXMgdG9vIG11Y2gKZm9yIGEgc3RhYmxlIHBhdGNoLgoKRm9yIHRoZSB0aW1lIGJlaW5nIGdyYWIg c2tfYnVmZl9oZWFkLmxvY2sgd2l0aG91dCBkaXNhYmxpbmcgYmggYW5kIGlycXMsCnNvIGRvbid0 IHVzZSBsb2NrZWQgc2tiX3F1ZXVlX3RhaWwuCgpGaXhlczogODY5ZTdjNjI0ODZlICgibmV0OiBh Zl91bml4OiBpbXBsZW1lbnQgc3RyZWFtIHNlbmRwYWdlIHN1cHBvcnQiKQpDYzogRXJpYyBEdW1h emV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBIYW5uZXMgRnJlZGVyaWMg U293YSA8aGFubmVzQHN0cmVzc2luZHVrdGlvbi5vcmc+ClJlcG9ydGVkLWJ5OiBFcmljIER1bWF6 ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkFja2VkLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0 QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1s b2Z0Lm5ldD4KLS0tCiBuZXQvdW5peC9hZl91bml4LmMgfCA1ICsrKystCiAxIGZpbGUgY2hhbmdl ZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3VuaXgv YWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jCmluZGV4IDNlMmNhMzkuLjQyYWIyY2MgMTAw NjQ0Ci0tLSBhL25ldC91bml4L2FmX3VuaXguYworKysgYi9uZXQvdW5peC9hZl91bml4LmMKQEAg LTE4MTIsOCArMTgxMiwxMSBAQCBhbGxvY19za2I6CiAJc2tiLT50cnVlc2l6ZSArPSBzaXplOwog CWF0b21pY19hZGQoc2l6ZSwgJnNrLT5za193bWVtX2FsbG9jKTsKIAotCWlmIChuZXdza2IpCisJ aWYgKG5ld3NrYikgeworCQlzcGluX2xvY2soJm90aGVyLT5za19yZWNlaXZlX3F1ZXVlLmxvY2sp OwogCQlfX3NrYl9xdWV1ZV90YWlsKCZvdGhlci0+c2tfcmVjZWl2ZV9xdWV1ZSwgbmV3c2tiKTsK KwkJc3Bpbl91bmxvY2soJm90aGVyLT5za19yZWNlaXZlX3F1ZXVlLmxvY2spOworCX0KIAogCXVu aXhfc3RhdGVfdW5sb2NrKG90aGVyKTsKIAltdXRleF91bmxvY2soJnVuaXhfc2sob3RoZXIpLT5y ZWFkbG9jayk7Ci0tIAoyLjEuMAoKCkZyb20gYTQ2YjlkMmJhYzg2NGYzZWY2YjIxZWI5Njg2NGRk ZDg4Nzk0MjIyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUmFpbmVyIFdlaWt1c2F0 IDxyd2Vpa3VzYXRAbW9iaWxlYWN0aXZlZGVmZW5zZS5jb20+CkRhdGU6IEZyaSwgMjAgTm92IDIw MTUgMjI6MDc6MjMgKzAwMDAKU3ViamVjdDogW1BBVENIIDA1LzQzXSB1bml4OiBhdm9pZCB1c2Ut YWZ0ZXItZnJlZSBpbiBlcF9yZW1vdmVfd2FpdF9xdWV1ZQoKWyBVcHN0cmVhbSBjb21taXQgN2Qy NjcyNzhhOWVjZTk2M2Q3N2VlZmVjNjE2MzAyMjNmY2UwOGM2YyBdCgpSYWluZXIgV2Vpa3VzYXQg PHJ3ZWlrdXNhdEBtb2JpbGVhY3RpdmVkZWZlbnNlLmNvbT4gd3JpdGVzOgpBbiBBRl9VTklYIGRh dGFncmFtIHNvY2tldCBiZWluZyB0aGUgY2xpZW50IGluIGFuIG46MSBhc3NvY2lhdGlvbiB3aXRo CnNvbWUgc2VydmVyIHNvY2tldCBpcyBvbmx5IGFsbG93ZWQgdG8gc2VuZCBtZXNzYWdlcyB0byB0 aGUgc2VydmVyIGlmIHRoZQpyZWNlaXZlIHF1ZXVlIG9mIHRoaXMgc29ja2V0IGNvbnRhaW5zIGF0 IG1vc3Qgc2tfbWF4X2Fja19iYWNrbG9nCmRhdGFncmFtcy4gVGhpcyBpbXBsaWVzIHRoYXQgcHJv c3BlY3RpdmUgd3JpdGVycyBtaWdodCBiZSBmb3JjZWQgdG8gZ28KdG8gc2xlZXAgZGVzcGl0ZSBu b25lIG9mIHRoZSBtZXNzYWdlIHByZXNlbnRseSBlbnF1ZXVlZCBvbiB0aGUgc2VydmVyCnJlY2Vp dmUgcXVldWUgd2VyZSBzZW50IGJ5IHRoZW0uIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZXNl IHdpbGwgYmUKd29rZW4gdXAgb25jZSBzcGFjZSBiZWNvbWVzIGFnYWluIGF2YWlsYWJsZSwgdGhl IHByZXNlbnQgdW5peF9kZ3JhbV9wb2xsCnJvdXRpbmUgZG9lcyBhIHNlY29uZCBzb2NrX3BvbGxf d2FpdCBjYWxsIHdpdGggdGhlIHBlZXJfd2FpdCB3YWl0IHF1ZXVlCm9mIHRoZSBzZXJ2ZXIgc29j a2V0IGFzIHF1ZXVlIGFyZ3VtZW50ICh1bml4X2RncmFtX3JlY3Ztc2cgZG9lcyBhIHdha2UKdXAg b24gdGhpcyBxdWV1ZSBhZnRlciBhIGRhdGFncmFtIHdhcyByZWNlaXZlZCkuIFRoaXMgaXMgaW5o ZXJlbnRseQpwcm9ibGVtYXRpYyBiZWNhdXNlIHRoZSBzZXJ2ZXIgc29ja2V0IGlzIG9ubHkgZ3Vh cmFudGVlZCB0byByZW1haW4gYWxpdmUKZm9yIGFzIGxvbmcgYXMgdGhlIGNsaWVudCBzdGlsbCBo b2xkcyBhIHJlZmVyZW5jZSB0byBpdC4gSW4gY2FzZSB0aGUKY29ubmVjdGlvbiBpcyBkaXNzb2x2 ZWQgdmlhIGNvbm5lY3Qgb3IgYnkgdGhlIGRlYWQgcGVlciBkZXRlY3Rpb24gbG9naWMKaW4gdW5p eF9kZ3JhbV9zZW5kbXNnLCB0aGUgc2VydmVyIHNvY2tldCBtYXkgYmUgZnJlZWQgZGVzcGl0ZSAi dGhlCnBvbGxpbmcgbWVjaGFuaXNtIiAoaW4gcGFydGljdWxhciwgZXBvbGwpIHN0aWxsIGhhcyBh IHBvaW50ZXIgdG8gdGhlCmNvcnJlc3BvbmRpbmcgcGVlcl93YWl0IHF1ZXVlLiBUaGVyZSdzIG5v IHdheSB0byBmb3JjaWJseSBkZXJlZ2lzdGVyIGEKd2FpdCBxdWV1ZSB3aXRoIGVwb2xsLgoKQmFz ZWQgb24gYW4gaWRlYSBieSBKYXNvbiBCYXJvbiwgdGhlIHBhdGNoIGJlbG93IGNoYW5nZXMgdGhl IGNvZGUgc3VjaAp0aGF0IGEgd2FpdF9xdWV1ZV90IGJlbG9uZ2luZyB0byB0aGUgY2xpZW50IHNv Y2tldCBpcyBlbnF1ZXVlZCBvbiB0aGUKcGVlcl93YWl0IHF1ZXVlIG9mIHRoZSBzZXJ2ZXIgd2hl bmV2ZXIgdGhlIHBlZXIgcmVjZWl2ZSBxdWV1ZSBmdWxsCmNvbmRpdGlvbiBpcyBkZXRlY3RlZCBi eSBlaXRoZXIgYSBzZW5kbXNnIG9yIGEgcG9sbC4gQSB3YWtlIHVwIG9uIHRoZQpwZWVyIHF1ZXVl IGlzIHRoZW4gcmVsYXllZCB0byB0aGUgb3JkaW5hcnkgd2FpdCBxdWV1ZSBvZiB0aGUgY2xpZW50 CnNvY2tldCB2aWEgd2FrZSBmdW5jdGlvbi4gVGhlIGNvbm5lY3Rpb24gdG8gdGhlIHBlZXIgd2Fp dCBxdWV1ZSBpcyBhZ2FpbgpkaXNzb2x2ZWQgaWYgZWl0aGVyIGEgd2FrZSB1cCBpcyBhYm91dCB0 byBiZSByZWxheWVkIG9yIHRoZSBjbGllbnQKc29ja2V0IHJlY29ubmVjdHMgb3IgYSBkZWFkIHBl ZXIgaXMgZGV0ZWN0ZWQgb3IgdGhlIGNsaWVudCBzb2NrZXQgaXMKaXRzZWxmIGNsb3NlZC4gVGhp cyBlbmFibGVzIHJlbW92aW5nIHRoZSBzZWNvbmQgc29ja19wb2xsX3dhaXQgZnJvbQp1bml4X2Rn cmFtX3BvbGwsIHRodXMgYXZvaWRpbmcgdGhlIHVzZS1hZnRlci1mcmVlLCB3aGlsZSBzdGlsbCBl bnN1cmluZwp0aGF0IG5vIGJsb2NrZWQgd3JpdGVyIHNsZWVwcyBmb3JldmVyLgoKU2lnbmVkLW9m Zi1ieTogUmFpbmVyIFdlaWt1c2F0IDxyd2Vpa3VzYXRAbW9iaWxlYWN0aXZlZGVmZW5zZS5jb20+ CkZpeGVzOiBlYzBkMjE1Zjk0MjAgKCJhZl91bml4OiBmaXggJ3BvbGwgZm9yIHdyaXRlJy9jb25u ZWN0ZWQgREdSQU0gc29ja2V0cyIpClJldmlld2VkLWJ5OiBKYXNvbiBCYXJvbiA8amJhcm9uQGFr YW1haS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0 Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9hZl91bml4LmggfCAgIDEgKwogbmV0L3VuaXgvYWZfdW5p eC5jICAgIHwgMTgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE2NSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl91bml4LmggYi9pbmNsdWRlL25ldC9hZl91 bml4LmgKaW5kZXggYjM2ZDgzNy4uMmE5MWEwNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYWZf dW5peC5oCisrKyBiL2luY2x1ZGUvbmV0L2FmX3VuaXguaApAQCAtNjIsNiArNjIsNyBAQCBzdHJ1 Y3QgdW5peF9zb2NrIHsKICNkZWZpbmUgVU5JWF9HQ19DQU5ESURBVEUJMAogI2RlZmluZSBVTklY X0dDX01BWUJFX0NZQ0xFCTEKIAlzdHJ1Y3Qgc29ja2V0X3dxCXBlZXJfd3E7CisJd2FpdF9xdWV1 ZV90CQlwZWVyX3dha2U7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB1bml4X3NvY2sgKnVu aXhfc2soY29uc3Qgc3RydWN0IHNvY2sgKnNrKQpkaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5p eC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jCmluZGV4IDQyYWIyY2MuLjE1M2IyZjIgMTAwNjQ0Ci0t LSBhL25ldC91bml4L2FmX3VuaXguYworKysgYi9uZXQvdW5peC9hZl91bml4LmMKQEAgLTMyNiw2 ICszMjYsMTE4IEBAIGZvdW5kOgogCXJldHVybiBzOwogfQogCisvKiBTdXBwb3J0IGNvZGUgZm9y IGFzeW1tZXRyaWNhbGx5IGNvbm5lY3RlZCBkZ3JhbSBzb2NrZXRzCisgKgorICogSWYgYSBkYXRh Z3JhbSBzb2NrZXQgaXMgY29ubmVjdGVkIHRvIGEgc29ja2V0IG5vdCBpdHNlbGYgY29ubmVjdGVk CisgKiB0byB0aGUgZmlyc3Qgc29ja2V0IChlZywgL2Rldi9sb2cpLCBjbGllbnRzIG1heSBvbmx5 IGVucXVldWUgbW9yZQorICogbWVzc2FnZXMgaWYgdGhlIHByZXNlbnQgcmVjZWl2ZSBxdWV1ZSBv ZiB0aGUgc2VydmVyIHNvY2tldCBpcyBub3QKKyAqICJ0b28gbGFyZ2UiLiBUaGlzIG1lYW5zIHRo ZXJlJ3MgYSBzZWNvbmQgd3JpdGVhYmlsaXR5IGNvbmRpdGlvbgorICogcG9sbCBhbmQgc2VuZG1z ZyBuZWVkIHRvIHRlc3QuIFRoZSBkZ3JhbSByZWN2IGNvZGUgd2lsbCBkbyBhIHdha2UKKyAqIHVw IG9uIHRoZSBwZWVyX3dhaXQgd2FpdCBxdWV1ZSBvZiBhIHNvY2tldCB1cG9uIHJlY2VwdGlvbiBv ZiBhCisgKiBkYXRhZ3JhbSB3aGljaCBuZWVkcyB0byBiZSBwcm9wYWdhdGVkIHRvIHNsZWVwaW5n IHdvdWxkLWJlIHdyaXRlcnMKKyAqIHNpbmNlIHRoZXNlIG1pZ2h0IG5vdCBoYXZlIHNlbnQgYW55 dGhpbmcgc28gZmFyLiBUaGlzIGNhbid0IGJlCisgKiBhY2NvbXBsaXNoZWQgdmlhIHBvbGxfd2Fp dCBiZWNhdXNlIHRoZSBsaWZldGltZSBvZiB0aGUgc2VydmVyCisgKiBzb2NrZXQgbWlnaHQgYmUg bGVzcyB0aGFuIHRoYXQgb2YgaXRzIGNsaWVudHMgaWYgdGhlc2UgYnJlYWsgdGhlaXIKKyAqIGFz c29jaWF0aW9uIHdpdGggaXQgb3IgaWYgdGhlIHNlcnZlciBzb2NrZXQgaXMgY2xvc2VkIHdoaWxl IGNsaWVudHMKKyAqIGFyZSBzdGlsbCBjb25uZWN0ZWQgdG8gaXQgYW5kIHRoZXJlJ3Mgbm8gd2F5 IHRvIGluZm9ybSAiYSBwb2xsaW5nCisgKiBpbXBsZW1lbnRhdGlvbiIgdGhhdCBpdCBzaG91bGQg bGV0IGdvIG9mIGEgY2VydGFpbiB3YWl0IHF1ZXVlCisgKgorICogSW4gb3JkZXIgdG8gcHJvcGFn YXRlIGEgd2FrZSB1cCwgYSB3YWl0X3F1ZXVlX3Qgb2YgdGhlIGNsaWVudAorICogc29ja2V0IGlz IGVucXVldWVkIG9uIHRoZSBwZWVyX3dhaXQgcXVldWUgb2YgdGhlIHNlcnZlciBzb2NrZXQKKyAq IHdob3NlIHdha2UgZnVuY3Rpb24gZG9lcyBhIHdha2VfdXAgb24gdGhlIG9yZGluYXJ5IGNsaWVu dCBzb2NrZXQKKyAqIHdhaXQgcXVldWUuIFRoaXMgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCB3 aGVuZXZlciBhIHdyaXRlIChvcgorICogcG9sbCBmb3Igd3JpdGUpIGhpdCB0aGUgZmxvdyBjb250 cm9sIGNvbmRpdGlvbiBhbmQgYnJva2VuIHdoZW4gdGhlCisgKiBhc3NvY2lhdGlvbiB0byB0aGUg c2VydmVyIHNvY2tldCBpcyBkaXNzb2x2ZWQgb3IgYWZ0ZXIgYSB3YWtlIHVwCisgKiB3YXMgcmVs YXllZC4KKyAqLworCitzdGF0aWMgaW50IHVuaXhfZGdyYW1fcGVlcl93YWtlX3JlbGF5KHdhaXRf cXVldWVfdCAqcSwgdW5zaWduZWQgbW9kZSwgaW50IGZsYWdzLAorCQkJCSAgICAgIHZvaWQgKmtl eSkKK3sKKwlzdHJ1Y3QgdW5peF9zb2NrICp1OworCXdhaXRfcXVldWVfaGVhZF90ICp1X3NsZWVw OworCisJdSA9IGNvbnRhaW5lcl9vZihxLCBzdHJ1Y3QgdW5peF9zb2NrLCBwZWVyX3dha2UpOwor CisJX19yZW1vdmVfd2FpdF9xdWV1ZSgmdW5peF9zayh1LT5wZWVyX3dha2UucHJpdmF0ZSktPnBl ZXJfd2FpdCwKKwkJCSAgICBxKTsKKwl1LT5wZWVyX3dha2UucHJpdmF0ZSA9IE5VTEw7CisKKwkv KiByZWxheWluZyBjYW4gb25seSBoYXBwZW4gd2hpbGUgdGhlIHdxIHN0aWxsIGV4aXN0cyAqLwor CXVfc2xlZXAgPSBza19zbGVlcCgmdS0+c2spOworCWlmICh1X3NsZWVwKQorCQl3YWtlX3VwX2lu dGVycnVwdGlibGVfcG9sbCh1X3NsZWVwLCBrZXkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgdW5peF9kZ3JhbV9wZWVyX3dha2VfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVj dCBzb2NrICpvdGhlcikKK3sKKwlzdHJ1Y3QgdW5peF9zb2NrICp1LCAqdV9vdGhlcjsKKwlpbnQg cmM7CisKKwl1ID0gdW5peF9zayhzayk7CisJdV9vdGhlciA9IHVuaXhfc2sob3RoZXIpOworCXJj ID0gMDsKKwlzcGluX2xvY2soJnVfb3RoZXItPnBlZXJfd2FpdC5sb2NrKTsKKworCWlmICghdS0+ cGVlcl93YWtlLnByaXZhdGUpIHsKKwkJdS0+cGVlcl93YWtlLnByaXZhdGUgPSBvdGhlcjsKKwkJ X19hZGRfd2FpdF9xdWV1ZSgmdV9vdGhlci0+cGVlcl93YWl0LCAmdS0+cGVlcl93YWtlKTsKKwor CQlyYyA9IDE7CisJfQorCisJc3Bpbl91bmxvY2soJnVfb3RoZXItPnBlZXJfd2FpdC5sb2NrKTsK KwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkIHVuaXhfZGdyYW1fcGVlcl93YWtlX2Rpc2Nv bm5lY3Qoc3RydWN0IHNvY2sgKnNrLAorCQkJCQkgICAgc3RydWN0IHNvY2sgKm90aGVyKQorewor CXN0cnVjdCB1bml4X3NvY2sgKnUsICp1X290aGVyOworCisJdSA9IHVuaXhfc2soc2spOworCXVf b3RoZXIgPSB1bml4X3NrKG90aGVyKTsKKwlzcGluX2xvY2soJnVfb3RoZXItPnBlZXJfd2FpdC5s b2NrKTsKKworCWlmICh1LT5wZWVyX3dha2UucHJpdmF0ZSA9PSBvdGhlcikgeworCQlfX3JlbW92 ZV93YWl0X3F1ZXVlKCZ1X290aGVyLT5wZWVyX3dhaXQsICZ1LT5wZWVyX3dha2UpOworCQl1LT5w ZWVyX3dha2UucHJpdmF0ZSA9IE5VTEw7CisJfQorCisJc3Bpbl91bmxvY2soJnVfb3RoZXItPnBl ZXJfd2FpdC5sb2NrKTsKK30KKworc3RhdGljIHZvaWQgdW5peF9kZ3JhbV9wZWVyX3dha2VfZGlz Y29ubmVjdF93YWtldXAoc3RydWN0IHNvY2sgKnNrLAorCQkJCQkJICAgc3RydWN0IHNvY2sgKm90 aGVyKQoreworCXVuaXhfZGdyYW1fcGVlcl93YWtlX2Rpc2Nvbm5lY3Qoc2ssIG90aGVyKTsKKwl3 YWtlX3VwX2ludGVycnVwdGlibGVfcG9sbChza19zbGVlcChzayksCisJCQkJICAgUE9MTE9VVCB8 CisJCQkJICAgUE9MTFdSTk9STSB8CisJCQkJICAgUE9MTFdSQkFORCk7Cit9CisKKy8qIHByZWNv bmRpdGlvbnM6CisgKgktIHVuaXhfcGVlcihzaykgPT0gb3RoZXIKKyAqCS0gYXNzb2NpYXRpb24g aXMgc3RhYmxlCisgKi8KK3N0YXRpYyBpbnQgdW5peF9kZ3JhbV9wZWVyX3dha2VfbWUoc3RydWN0 IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqb3RoZXIpCit7CisJaW50IGNvbm5lY3RlZDsKKworCWNv bm5lY3RlZCA9IHVuaXhfZGdyYW1fcGVlcl93YWtlX2Nvbm5lY3Qoc2ssIG90aGVyKTsKKworCWlm ICh1bml4X3JlY3ZxX2Z1bGwob3RoZXIpKQorCQlyZXR1cm4gMTsKKworCWlmIChjb25uZWN0ZWQp CisJCXVuaXhfZGdyYW1fcGVlcl93YWtlX2Rpc2Nvbm5lY3Qoc2ssIG90aGVyKTsKKworCXJldHVy biAwOworfQorCiBzdGF0aWMgaW5saW5lIGludCB1bml4X3dyaXRhYmxlKHN0cnVjdCBzb2NrICpz aykKIHsKIAlyZXR1cm4gKGF0b21pY19yZWFkKCZzay0+c2tfd21lbV9hbGxvYykgPDwgMikgPD0g c2stPnNrX3NuZGJ1ZjsKQEAgLTQzMCw2ICs1NDIsOCBAQCBzdGF0aWMgdm9pZCB1bml4X3JlbGVh c2Vfc29jayhzdHJ1Y3Qgc29jayAqc2ssIGludCBlbWJyaW9uKQogCQkJc2twYWlyLT5za19zdGF0 ZV9jaGFuZ2Uoc2twYWlyKTsKIAkJCXNrX3dha2VfYXN5bmMoc2twYWlyLCBTT0NLX1dBS0VfV0FJ VEQsIFBPTExfSFVQKTsKIAkJfQorCisJCXVuaXhfZGdyYW1fcGVlcl93YWtlX2Rpc2Nvbm5lY3Qo c2ssIHNrcGFpcik7CiAJCXNvY2tfcHV0KHNrcGFpcik7IC8qIEl0IG1heSBub3cgZGllICovCiAJ CXVuaXhfcGVlcihzaykgPSBOVUxMOwogCX0KQEAgLTY2NSw2ICs3NzksNyBAQCBzdGF0aWMgc3Ry dWN0IHNvY2sgKnVuaXhfY3JlYXRlMShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNv Y2ssIGludCBrZXJuKQogCUlOSVRfTElTVF9IRUFEKCZ1LT5saW5rKTsKIAltdXRleF9pbml0KCZ1 LT5yZWFkbG9jayk7IC8qIHNpbmdsZSB0YXNrIHJlYWRpbmcgbG9jayAqLwogCWluaXRfd2FpdHF1 ZXVlX2hlYWQoJnUtPnBlZXJfd2FpdCk7CisJaW5pdF93YWl0cXVldWVfZnVuY19lbnRyeSgmdS0+ cGVlcl93YWtlLCB1bml4X2RncmFtX3BlZXJfd2FrZV9yZWxheSk7CiAJdW5peF9pbnNlcnRfc29j a2V0KHVuaXhfc29ja2V0c191bmJvdW5kKHNrKSwgc2spOwogb3V0OgogCWlmIChzayA9PSBOVUxM KQpAQCAtMTAzMiw2ICsxMTQ3LDggQEAgcmVzdGFydDoKIAlpZiAodW5peF9wZWVyKHNrKSkgewog CQlzdHJ1Y3Qgc29jayAqb2xkX3BlZXIgPSB1bml4X3BlZXIoc2spOwogCQl1bml4X3BlZXIoc2sp ID0gb3RoZXI7CisJCXVuaXhfZGdyYW1fcGVlcl93YWtlX2Rpc2Nvbm5lY3Rfd2FrZXVwKHNrLCBv bGRfcGVlcik7CisKIAkJdW5peF9zdGF0ZV9kb3VibGVfdW5sb2NrKHNrLCBvdGhlcik7CiAKIAkJ aWYgKG90aGVyICE9IG9sZF9wZWVyKQpAQCAtMTQ3MSw2ICsxNTg4LDcgQEAgc3RhdGljIGludCB1 bml4X2RncmFtX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNn LAogCXN0cnVjdCBzY21fY29va2llIHNjbTsKIAlpbnQgbWF4X2xldmVsOwogCWludCBkYXRhX2xl biA9IDA7CisJaW50IHNrX2xvY2tlZDsKIAogCXdhaXRfZm9yX3VuaXhfZ2MoKTsKIAllcnIgPSBz Y21fc2VuZChzb2NrLCBtc2csICZzY20sIGZhbHNlKTsKQEAgLTE1NDksMTIgKzE2NjcsMTQgQEAg cmVzdGFydDoKIAkJZ290byBvdXRfZnJlZTsKIAl9CiAKKwlza19sb2NrZWQgPSAwOwogCXVuaXhf c3RhdGVfbG9jayhvdGhlcik7CityZXN0YXJ0X2xvY2tlZDoKIAllcnIgPSAtRVBFUk07CiAJaWYg KCF1bml4X21heV9zZW5kKHNrLCBvdGhlcikpCiAJCWdvdG8gb3V0X3VubG9jazsKIAotCWlmIChz b2NrX2ZsYWcob3RoZXIsIFNPQ0tfREVBRCkpIHsKKwlpZiAodW5saWtlbHkoc29ja19mbGFnKG90 aGVyLCBTT0NLX0RFQUQpKSkgewogCQkvKgogCQkgKglDaGVjayB3aXRoIDEwMDMuMWcgLSB3aGF0 IHNob3VsZAogCQkgKglkYXRhZ3JhbSBlcnJvcgpAQCAtMTU2MiwxMCArMTY4MiwxNCBAQCByZXN0 YXJ0OgogCQl1bml4X3N0YXRlX3VubG9jayhvdGhlcik7CiAJCXNvY2tfcHV0KG90aGVyKTsKIAor CQlpZiAoIXNrX2xvY2tlZCkKKwkJCXVuaXhfc3RhdGVfbG9jayhzayk7CisKIAkJZXJyID0gMDsK LQkJdW5peF9zdGF0ZV9sb2NrKHNrKTsKIAkJaWYgKHVuaXhfcGVlcihzaykgPT0gb3RoZXIpIHsK IAkJCXVuaXhfcGVlcihzaykgPSBOVUxMOworCQkJdW5peF9kZ3JhbV9wZWVyX3dha2VfZGlzY29u bmVjdF93YWtldXAoc2ssIG90aGVyKTsKKwogCQkJdW5peF9zdGF0ZV91bmxvY2soc2spOwogCiAJ CQl1bml4X2RncmFtX2Rpc2Nvbm5lY3RlZChzaywgb3RoZXIpOwpAQCAtMTU5MSwyMSArMTcxNSwz OCBAQCByZXN0YXJ0OgogCQkJZ290byBvdXRfdW5sb2NrOwogCX0KIAotCWlmICh1bml4X3BlZXIo b3RoZXIpICE9IHNrICYmIHVuaXhfcmVjdnFfZnVsbChvdGhlcikpIHsKLQkJaWYgKCF0aW1lbykg ewotCQkJZXJyID0gLUVBR0FJTjsKLQkJCWdvdG8gb3V0X3VubG9jazsKKwlpZiAodW5saWtlbHko dW5peF9wZWVyKG90aGVyKSAhPSBzayAmJiB1bml4X3JlY3ZxX2Z1bGwob3RoZXIpKSkgeworCQlp ZiAodGltZW8pIHsKKwkJCXRpbWVvID0gdW5peF93YWl0X2Zvcl9wZWVyKG90aGVyLCB0aW1lbyk7 CisKKwkJCWVyciA9IHNvY2tfaW50cl9lcnJubyh0aW1lbyk7CisJCQlpZiAoc2lnbmFsX3BlbmRp bmcoY3VycmVudCkpCisJCQkJZ290byBvdXRfZnJlZTsKKworCQkJZ290byByZXN0YXJ0OwogCQl9 CiAKLQkJdGltZW8gPSB1bml4X3dhaXRfZm9yX3BlZXIob3RoZXIsIHRpbWVvKTsKKwkJaWYgKCFz a19sb2NrZWQpIHsKKwkJCXVuaXhfc3RhdGVfdW5sb2NrKG90aGVyKTsKKwkJCXVuaXhfc3RhdGVf ZG91YmxlX2xvY2soc2ssIG90aGVyKTsKKwkJfQogCi0JCWVyciA9IHNvY2tfaW50cl9lcnJubyh0 aW1lbyk7Ci0JCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKLQkJCWdvdG8gb3V0X2ZyZWU7 CisJCWlmICh1bml4X3BlZXIoc2spICE9IG90aGVyIHx8CisJCSAgICB1bml4X2RncmFtX3BlZXJf d2FrZV9tZShzaywgb3RoZXIpKSB7CisJCQllcnIgPSAtRUFHQUlOOworCQkJc2tfbG9ja2VkID0g MTsKKwkJCWdvdG8gb3V0X3VubG9jazsKKwkJfQogCi0JCWdvdG8gcmVzdGFydDsKKwkJaWYgKCFz a19sb2NrZWQpIHsKKwkJCXNrX2xvY2tlZCA9IDE7CisJCQlnb3RvIHJlc3RhcnRfbG9ja2VkOwor CQl9CiAJfQogCisJaWYgKHVubGlrZWx5KHNrX2xvY2tlZCkpCisJCXVuaXhfc3RhdGVfdW5sb2Nr KHNrKTsKKwogCWlmIChzb2NrX2ZsYWcob3RoZXIsIFNPQ0tfUkNWVFNUQU1QKSkKIAkJX19uZXRf dGltZXN0YW1wKHNrYik7CiAJbWF5YmVfYWRkX2NyZWRzKHNrYiwgc29jaywgb3RoZXIpOwpAQCAt MTYxOSw2ICsxNzYwLDggQEAgcmVzdGFydDoKIAlyZXR1cm4gbGVuOwogCiBvdXRfdW5sb2NrOgor CWlmIChza19sb2NrZWQpCisJCXVuaXhfc3RhdGVfdW5sb2NrKHNrKTsKIAl1bml4X3N0YXRlX3Vu bG9jayhvdGhlcik7CiBvdXRfZnJlZToKIAlrZnJlZV9za2Ioc2tiKTsKQEAgLTI0NzUsMTQgKzI2 MTgsMTYgQEAgc3RhdGljIHVuc2lnbmVkIGludCB1bml4X2RncmFtX3BvbGwoc3RydWN0IGZpbGUg KmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssCiAJCXJldHVybiBtYXNrOwogCiAJd3JpdGFibGUg PSB1bml4X3dyaXRhYmxlKHNrKTsKLQlvdGhlciA9IHVuaXhfcGVlcl9nZXQoc2spOwotCWlmIChv dGhlcikgewotCQlpZiAodW5peF9wZWVyKG90aGVyKSAhPSBzaykgewotCQkJc29ja19wb2xsX3dh aXQoZmlsZSwgJnVuaXhfc2sob3RoZXIpLT5wZWVyX3dhaXQsIHdhaXQpOwotCQkJaWYgKHVuaXhf cmVjdnFfZnVsbChvdGhlcikpCi0JCQkJd3JpdGFibGUgPSAwOwotCQl9Ci0JCXNvY2tfcHV0KG90 aGVyKTsKKwlpZiAod3JpdGFibGUpIHsKKwkJdW5peF9zdGF0ZV9sb2NrKHNrKTsKKworCQlvdGhl ciA9IHVuaXhfcGVlcihzayk7CisJCWlmIChvdGhlciAmJiB1bml4X3BlZXIob3RoZXIpICE9IHNr ICYmCisJCSAgICB1bml4X3JlY3ZxX2Z1bGwob3RoZXIpICYmCisJCSAgICB1bml4X2RncmFtX3Bl ZXJfd2FrZV9tZShzaywgb3RoZXIpKQorCQkJd3JpdGFibGUgPSAwOworCisJCXVuaXhfc3RhdGVf dW5sb2NrKHNrKTsKIAl9CiAKIAlpZiAod3JpdGFibGUpCi0tIAoyLjEuMAoKCkZyb20gOGEwMjlh NmI4ZGYzYTk1NWJkMjQyNTNjZTc3Y2ZjOTM4MzRjZTcxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3Jn PgpEYXRlOiBUaHUsIDI2IE5vdiAyMDE1IDEyOjA4OjE4ICswMTAwClN1YmplY3Q6IFtQQVRDSCAw Ni80M10gYWYtdW5peDogcGFzc2NyZWQgc3VwcG9ydCBmb3Igc2VuZHBhZ2UKClsgVXBzdHJlYW0g Y29tbWl0IDk0OTBmODg2YjE5Mjk2NDc5NjI4NTkwN2Q3NzdmZjAwZmJhMWZhMGYgXQoKc2VuZHBh Z2UgZGlkIG5vdCBjYXJlIGFib3V0IGNyZWRlbnRpYWxzIGF0IGFsbC4gVGhpcyBjb3VsZCBsZWFk IHRvCnNpdHVhdGlvbnMgaW4gd2hpY2ggYmVjYXVzZSBvZiBmZCBwYXNzaW5nIGJldHdlZW4gcHJv Y2Vzc2VzIHdlIGNvdWxkCmFwcGVuZCBkYXRhIHRvIHNrYnMgd2l0aCBkaWZmZXJlbnQgc2NtIGRh dGEuIEl0IGlzIGlsbGVnYWwgdG8gc3BsaWNlIHRob3NlCnNrYnMgdG9nZXRoZXIuIEluc3RlYWQg d2UgaGF2ZSB0byBhbGxvY2F0ZSBhIG5ldyBza2IgYW5kIGlmIHJlcXVlc3RlZApmaWxsIG91dCB0 aGUgc2NtIGRldGFpbHMuCgpGaXhlczogODY5ZTdjNjI0ODZlYyAoIm5ldDogYWZfdW5peDogaW1w bGVtZW50IHN0cmVhbSBzZW5kcGFnZSBzdXBwb3J0IikKUmVwb3J0ZWQtYnk6IEFsIFZpcm8gPHZp cm9AemVuaXYubGludXgub3JnLnVrPgpDYzogQWwgVmlybyA8dmlyb0B6ZW5pdi5saW51eC5vcmcu dWs+CkNjOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6 IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC91 bml4L2FmX3VuaXguYyB8IDc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDE1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC91bml4L2FmX3VuaXguYyBiL25ldC91bml4L2Fm X3VuaXguYwppbmRleCAxNTNiMmYyLi4xMjhiMDk4IDEwMDY0NAotLS0gYS9uZXQvdW5peC9hZl91 bml4LmMKKysrIGIvbmV0L3VuaXgvYWZfdW5peC5jCkBAIC0xNTUwLDYgKzE1NTAsMTQgQEAgc3Rh dGljIGludCB1bml4X3NjbV90b19za2Ioc3RydWN0IHNjbV9jb29raWUgKnNjbSwgc3RydWN0IHNr X2J1ZmYgKnNrYiwgYm9vbCBzZW4KIAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgYm9vbCB1bml4 X3Bhc3NjcmVkX2VuYWJsZWQoY29uc3Qgc3RydWN0IHNvY2tldCAqc29jaywKKwkJCQkgIGNvbnN0 IHN0cnVjdCBzb2NrICpvdGhlcikKK3sKKwlyZXR1cm4gdGVzdF9iaXQoU09DS19QQVNTQ1JFRCwg JnNvY2stPmZsYWdzKSB8fAorCSAgICAgICAhb3RoZXItPnNrX3NvY2tldCB8fAorCSAgICAgICB0 ZXN0X2JpdChTT0NLX1BBU1NDUkVELCAmb3RoZXItPnNrX3NvY2tldC0+ZmxhZ3MpOworfQorCiAv KgogICogU29tZSBhcHBzIHJlbHkgb24gd3JpdGUoKSBnaXZpbmcgU0NNX0NSRURFTlRJQUxTCiAg KiBXZSBpbmNsdWRlIGNyZWRlbnRpYWxzIGlmIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBzb2NrZXQK QEAgLTE1NjAsMTQgKzE1NjgsNDEgQEAgc3RhdGljIHZvaWQgbWF5YmVfYWRkX2NyZWRzKHN0cnVj dCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBzb2NrZXQgKnNvY2ssCiB7CiAJaWYgKFVOSVhD Qihza2IpLnBpZCkKIAkJcmV0dXJuOwotCWlmICh0ZXN0X2JpdChTT0NLX1BBU1NDUkVELCAmc29j ay0+ZmxhZ3MpIHx8Ci0JICAgICFvdGhlci0+c2tfc29ja2V0IHx8Ci0JICAgIHRlc3RfYml0KFNP Q0tfUEFTU0NSRUQsICZvdGhlci0+c2tfc29ja2V0LT5mbGFncykpIHsKKwlpZiAodW5peF9wYXNz Y3JlZF9lbmFibGVkKHNvY2ssIG90aGVyKSkgewogCQlVTklYQ0Ioc2tiKS5waWQgID0gZ2V0X3Bp ZCh0YXNrX3RnaWQoY3VycmVudCkpOwogCQljdXJyZW50X3VpZF9naWQoJlVOSVhDQihza2IpLnVp ZCwgJlVOSVhDQihza2IpLmdpZCk7CiAJfQogfQogCitzdGF0aWMgaW50IG1heWJlX2luaXRfY3Jl ZHMoc3RydWN0IHNjbV9jb29raWUgKnNjbSwKKwkJCSAgICBzdHJ1Y3Qgc29ja2V0ICpzb2NrZXQs CisJCQkgICAgY29uc3Qgc3RydWN0IHNvY2sgKm90aGVyKQoreworCWludCBlcnI7CisJc3RydWN0 IG1zZ2hkciBtc2cgPSB7IC5tc2dfY29udHJvbGxlbiA9IDAgfTsKKworCWVyciA9IHNjbV9zZW5k KHNvY2tldCwgJm1zZywgc2NtLCBmYWxzZSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKwor CWlmICh1bml4X3Bhc3NjcmVkX2VuYWJsZWQoc29ja2V0LCBvdGhlcikpIHsKKwkJc2NtLT5waWQg PSBnZXRfcGlkKHRhc2tfdGdpZChjdXJyZW50KSk7CisJCWN1cnJlbnRfdWlkX2dpZCgmc2NtLT5j cmVkcy51aWQsICZzY20tPmNyZWRzLmdpZCk7CisJfQorCXJldHVybiBlcnI7Cit9CisKK3N0YXRp YyBib29sIHVuaXhfc2tiX3NjbV9lcShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJICAgIHN0cnVj dCBzY21fY29va2llICpzY20pCit7CisJY29uc3Qgc3RydWN0IHVuaXhfc2tiX3Bhcm1zICp1ID0g JlVOSVhDQihza2IpOworCisJcmV0dXJuIHUtPnBpZCA9PSBzY20tPnBpZCAmJgorCSAgICAgICB1 aWRfZXEodS0+dWlkLCBzY20tPmNyZWRzLnVpZCkgJiYKKwkgICAgICAgZ2lkX2VxKHUtPmdpZCwg c2NtLT5jcmVkcy5naWQpICYmCisJICAgICAgIHVuaXhfc2VjZGF0YV9lcShzY20sIHNrYik7Cit9 CisKIC8qCiAgKglTZW5kIEFGX1VOSVggZGF0YS4KICAqLwpAQCAtMTg4Myw4ICsxOTE4LDEwIEBA IG91dF9lcnI6CiBzdGF0aWMgc3NpemVfdCB1bml4X3N0cmVhbV9zZW5kcGFnZShzdHJ1Y3Qgc29j a2V0ICpzb2NrZXQsIHN0cnVjdCBwYWdlICpwYWdlLAogCQkJCSAgICBpbnQgb2Zmc2V0LCBzaXpl X3Qgc2l6ZSwgaW50IGZsYWdzKQogewotCWludCBlcnIgPSAwOwotCWJvb2wgc2VuZF9zaWdwaXBl ID0gdHJ1ZTsKKwlpbnQgZXJyOworCWJvb2wgc2VuZF9zaWdwaXBlID0gZmFsc2U7CisJYm9vbCBp bml0X3NjbSA9IHRydWU7CisJc3RydWN0IHNjbV9jb29raWUgc2NtOwogCXN0cnVjdCBzb2NrICpv dGhlciwgKnNrID0gc29ja2V0LT5zazsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqbmV3c2tiID0g TlVMTCwgKnRhaWwgPSBOVUxMOwogCkBAIC0xOTAyLDcgKzE5MzksNyBAQCBhbGxvY19za2I6CiAJ CW5ld3NrYiA9IHNvY2tfYWxsb2Nfc2VuZF9wc2tiKHNrLCAwLCAwLCBmbGFncyAmIE1TR19ET05U V0FJVCwKIAkJCQkJICAgICAgJmVyciwgMCk7CiAJCWlmICghbmV3c2tiKQotCQkJcmV0dXJuIGVy cjsKKwkJCWdvdG8gZXJyOwogCX0KIAogCS8qIHdlIG11c3QgYWNxdWlyZSByZWFkbG9jayBhcyB3 ZSBtb2RpZnkgYWxyZWFkeSBwcmVzZW50CkBAIC0xOTExLDEyICsxOTQ4LDEyIEBAIGFsbG9jX3Nr YjoKIAllcnIgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnVuaXhfc2sob3RoZXIpLT5yZWFk bG9jayk7CiAJaWYgKGVycikgewogCQllcnIgPSBmbGFncyAmIE1TR19ET05UV0FJVCA/IC1FQUdB SU4gOiAtRVJFU1RBUlRTWVM7Ci0JCXNlbmRfc2lncGlwZSA9IGZhbHNlOwogCQlnb3RvIGVycjsK IAl9CiAKIAlpZiAoc2stPnNrX3NodXRkb3duICYgU0VORF9TSFVURE9XTikgewogCQllcnIgPSAt RVBJUEU7CisJCXNlbmRfc2lncGlwZSA9IHRydWU7CiAJCWdvdG8gZXJyX3VubG9jazsKIAl9CiAK QEAgLTE5MjUsMTcgKzE5NjIsMjcgQEAgYWxsb2Nfc2tiOgogCWlmIChzb2NrX2ZsYWcob3RoZXIs IFNPQ0tfREVBRCkgfHwKIAkgICAgb3RoZXItPnNrX3NodXRkb3duICYgUkNWX1NIVVRET1dOKSB7 CiAJCWVyciA9IC1FUElQRTsKKwkJc2VuZF9zaWdwaXBlID0gdHJ1ZTsKIAkJZ290byBlcnJfc3Rh dGVfdW5sb2NrOwogCX0KIAorCWlmIChpbml0X3NjbSkgeworCQllcnIgPSBtYXliZV9pbml0X2Ny ZWRzKCZzY20sIHNvY2tldCwgb3RoZXIpOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJfc3RhdGVf dW5sb2NrOworCQlpbml0X3NjbSA9IGZhbHNlOworCX0KKwogCXNrYiA9IHNrYl9wZWVrX3RhaWwo Jm90aGVyLT5za19yZWNlaXZlX3F1ZXVlKTsKIAlpZiAodGFpbCAmJiB0YWlsID09IHNrYikgewog CQlza2IgPSBuZXdza2I7Ci0JfSBlbHNlIGlmICghc2tiKSB7Ci0JCWlmIChuZXdza2IpCisJfSBl bHNlIGlmICghc2tiIHx8ICF1bml4X3NrYl9zY21fZXEoc2tiLCAmc2NtKSkgeworCQlpZiAobmV3 c2tiKSB7CiAJCQlza2IgPSBuZXdza2I7Ci0JCWVsc2UKKwkJfSBlbHNlIHsKKwkJCXRhaWwgPSBz a2I7CiAJCQlnb3RvIGFsbG9jX3NrYjsKKwkJfQogCX0gZWxzZSBpZiAobmV3c2tiKSB7CiAJCS8q IHRoaXMgaXMgZmFzdCBwYXRoLCB3ZSBkb24ndCBuZWNlc3NhcmlseSBuZWVkIHRvCiAJCSAqIGNh bGwgdG8ga2ZyZWVfc2tiIGV2ZW4gdGhvdWdoIHdpdGggbmV3c2tiID09IE5VTEwKQEAgLTE5NTYs NiArMjAwMyw5IEBAIGFsbG9jX3NrYjoKIAlhdG9taWNfYWRkKHNpemUsICZzay0+c2tfd21lbV9h bGxvYyk7CiAKIAlpZiAobmV3c2tiKSB7CisJCWVyciA9IHVuaXhfc2NtX3RvX3NrYigmc2NtLCBz a2IsIGZhbHNlKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyX3N0YXRlX3VubG9jazsKIAkJc3Bp bl9sb2NrKCZvdGhlci0+c2tfcmVjZWl2ZV9xdWV1ZS5sb2NrKTsKIAkJX19za2JfcXVldWVfdGFp bCgmb3RoZXItPnNrX3JlY2VpdmVfcXVldWUsIG5ld3NrYik7CiAJCXNwaW5fdW5sb2NrKCZvdGhl ci0+c2tfcmVjZWl2ZV9xdWV1ZS5sb2NrKTsKQEAgLTE5NjUsNyArMjAxNSw3IEBAIGFsbG9jX3Nr YjoKIAltdXRleF91bmxvY2soJnVuaXhfc2sob3RoZXIpLT5yZWFkbG9jayk7CiAKIAlvdGhlci0+ c2tfZGF0YV9yZWFkeShvdGhlcik7Ci0KKwlzY21fZGVzdHJveSgmc2NtKTsKIAlyZXR1cm4gc2l6 ZTsKIAogZXJyX3N0YXRlX3VubG9jazoKQEAgLTE5NzYsNiArMjAyNiw4IEBAIGVycjoKIAlrZnJl ZV9za2IobmV3c2tiKTsKIAlpZiAoc2VuZF9zaWdwaXBlICYmICEoZmxhZ3MgJiBNU0dfTk9TSUdO QUwpKQogCQlzZW5kX3NpZyhTSUdQSVBFLCBjdXJyZW50LCAwKTsKKwlpZiAoIWluaXRfc2NtKQor CQlzY21fZGVzdHJveSgmc2NtKTsKIAlyZXR1cm4gZXJyOwogfQogCkBAIC0yMjc5LDEwICsyMzMx LDcgQEAgdW5sb2NrOgogCiAJCWlmIChjaGVja19jcmVkcykgewogCQkJLyogTmV2ZXIgZ2x1ZSBt ZXNzYWdlcyBmcm9tIGRpZmZlcmVudCB3cml0ZXJzICovCi0JCQlpZiAoKFVOSVhDQihza2IpLnBp ZCAgIT0gc2NtLnBpZCkgfHwKLQkJCSAgICAhdWlkX2VxKFVOSVhDQihza2IpLnVpZCwgc2NtLmNy ZWRzLnVpZCkgfHwKLQkJCSAgICAhZ2lkX2VxKFVOSVhDQihza2IpLmdpZCwgc2NtLmNyZWRzLmdp ZCkgfHwKLQkJCSAgICAhdW5peF9zZWNkYXRhX2VxKCZzY20sIHNrYikpCisJCQlpZiAoIXVuaXhf c2tiX3NjbV9lcShza2IsICZzY20pKQogCQkJCWJyZWFrOwogCQl9IGVsc2UgaWYgKHRlc3RfYml0 KFNPQ0tfUEFTU0NSRUQsICZzb2NrLT5mbGFncykpIHsKIAkJCS8qIENvcHkgY3JlZGVudGlhbHMg Ki8KLS0gCjIuMS4wCgoKRnJvbSA2ZjYxZWJiODIxYjA0NjkwYTU0YWU5OTgxNjBjYjc1OGRiYWE3 ZjliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gS2FGYWkgTGF1IDxrYWZh aUBmYi5jb20+CkRhdGU6IFdlZCwgMTEgTm92IDIwMTUgMTE6NTE6MDYgLTA4MDAKU3ViamVjdDog W1BBVENIIDA3LzQzXSBpcHY2OiBBdm9pZCBjcmVhdGluZyBSVEZfQ0FDSEUgZnJvbSBhIHJ0IHRo YXQgaXMgbm90CiBtYW5hZ2VkIGJ5IGZpYjYgdHJlZQoKWyBVcHN0cmVhbSBjb21taXQgMGQzZjZk Mjk3YmZiN2FmMjRkMDUwODQ2MGZkYjNkMWVjNDkwM2ZhMyBdCgpUaGUgb3JpZ2luYWwgYnVnIHJl cG9ydDoKaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMjcyNTcx CgpUaGUgc2V0dXAgaGFzIGEgSVB2NCBHUkUgdHVubmVsIHJ1bm5pbmcgaW4gYSBJUFNlYy4gIFRo ZSBidWcKaGFwcGVucyB3aGVuIG5kaXNjIHN0YXJ0cyBzZW5kaW5nIHJvdXRlciBzb2xpY2l0YXRp b24gYXQgdGhlIGdyZQppbnRlcmZhY2UuICBUaGUgc2ltcGxpZmllZCBvb3BzIHN0YWNrIGlzIGxp a2U6CgpfX2xvY2tfYWNxdWlyZSsweDFiMi8weDFjMzAKbG9ja19hY3F1aXJlKzB4YjkvMHgxNDAK X3Jhd193cml0ZV9sb2NrX2JoKzB4M2YvMHg1MApfX2lwNl9pbnNfcnQrMHgyZS8weDYwCmlwNl9p bnNfcnQrMHg0OS8weDUwCn5+fn5+fn5+Cl9faXA2X3J0X3VwZGF0ZV9wbXR1LnBhcnQuNTQrMHgx NDUvMHgyNTAKaXA2X3J0X3VwZGF0ZV9wbXR1KzB4MmUvMHg0MAp+fn5+fn5+fgppcF90dW5uZWxf eG1pdCsweDFmMS8weGY0MApfX2dyZV94bWl0KzB4N2EvMHg5MAppcGdyZV94bWl0KzB4MTVhLzB4 MjIwCmRldl9oYXJkX3N0YXJ0X3htaXQrMHgyYmQvMHg0ODAKX19kZXZfcXVldWVfeG1pdCsweDY5 Ni8weDczMApkZXZfcXVldWVfeG1pdCsweDEwLzB4MjAKbmVpZ2hfZGlyZWN0X291dHB1dCsweDEx LzB4MjAKaXA2X2ZpbmlzaF9vdXRwdXQyKzB4MjFmLzB4NzcwCmlwNl9maW5pc2hfb3V0cHV0KzB4 YTcvMHgxZDAKaXA2X291dHB1dCsweDU2LzB4MTkwCn5+fn5+fn5+Cm5kaXNjX3NlbmRfc2tiKzB4 MWQ5LzB4NDAwCm5kaXNjX3NlbmRfcnMrMHg4OC8weGMwCn5+fn5+fn5+CgpUaGUgcnQgcGFzc2Vk IHRvIGlwNl9ydF91cGRhdGVfcG10dSgpIGlzIGNyZWF0ZWQgYnkKaWNtcDZfZHN0X2FsbG9jKCkg YW5kIGl0IGlzIG5vdCBtYW5hZ2VkIGJ5IHRoZSBmaWI2IHRyZWUsCnNvIGl0cyBydDZpX3RhYmxl ID09IE5VTEwuICBXaGVuIF9faXA2X3J0X3VwZGF0ZV9wbXR1KCkgY3JlYXRlcwphIFJURl9DQUNI RSBjbG9uZSwgdGhlIG5ld2x5IGNyZWF0ZWQgY2xvbmUgYWxzbyBoYXMgcnQ2aV90YWJsZSA9PSBO VUxMCmFuZCBpdCBjYXVzZXMgdGhlIGlwNl9pbnNfcnQoKSBvb3BzLgoKRHVyaW5nIHBtdHUgdXBk YXRlLCB3ZSBvbmx5IHdhbnQgdG8gY3JlYXRlIGEgUlRGX0NBQ0hFIGNsb25lCmZyb20gYSBydCB3 aGljaCBpcyBjdXJyZW50bHkgbWFuYWdlZCAob3Igb3duZWQpIGJ5IHRoZQpmaWI2IHRyZWUuICBJ dCBtZWFucyBlaXRoZXIgcnQtPnJ0Nmlfbm9kZSAhPSBOVUxMIG9yCnJ0IGlzIGEgUlRGX1BDUFUg Y2xvbmUuCgpJdCBpcyB3b3J0aCB0byBub3RlIHRoYXQgcnQ2aV90YWJsZSBtYXkgbm90IGJlIE5V TEwgZXZlbiBpdCBpcwpub3QgKHlldCkgbWFuYWdlZCBieSB0aGUgZmliNiB0cmVlIChlLmcuIGFk ZHJjb25mX2RzdF9hbGxvYygpKS4KSGVuY2UsIHJ0Nmlfbm9kZSBpcyBhIGJldHRlciBjaGVjayBp bnN0ZWFkIG9mIHJ0NmlfdGFibGUuCgpGaXhlczogNDVlNGZkMjY2ODNjICgiaXB2NjogT25seSBj cmVhdGUgUlRGX0NBQ0hFIHJvdXRlcyBhZnRlciBlbmNvdW50ZXJpbmcgcG10dSIpClNpZ25lZC1v ZmYtYnk6IE1hcnRpbiBLYUZhaSBMYXUgPGthZmFpQGZiLmNvbT4KUmVwb3J0ZWQtYnk6IENocmlz IFNpZWJlbm1hbm4gPGNrcy1yaGJ1Z3ppbGxhQGNzLnRvcm9udG8uZWR1PgpDYzogQ2hyaXMgU2ll YmVubWFubiA8Y2tzLXJoYnVnemlsbGFAY3MudG9yb250by5lZHU+CkNjOiBIYW5uZXMgRnJlZGVy aWMgU293YSA8aGFubmVzQHN0cmVzc2luZHVrdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlk IFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2Ni9yb3V0ZS5jIHwg OCArKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jCmluZGV4 IDk0Njg4MGEuLjcxMWVjN2EgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRlLmMKKysrIGIvbmV0 L2lwdjYvcm91dGUuYwpAQCAtMTM0MCw2ICsxMzQwLDEyIEBAIHN0YXRpYyB2b2lkIHJ0Nl9kb191 cGRhdGVfcG10dShzdHJ1Y3QgcnQ2X2luZm8gKnJ0LCB1MzIgbXR1KQogCXJ0Nl91cGRhdGVfZXhw aXJlcyhydCwgbmV0LT5pcHY2LnN5c2N0bC5pcDZfcnRfbXR1X2V4cGlyZXMpOwogfQogCitzdGF0 aWMgYm9vbCBydDZfY2FjaGVfYWxsb3dlZF9mb3JfcG10dShjb25zdCBzdHJ1Y3QgcnQ2X2luZm8g KnJ0KQoreworCXJldHVybiAhKHJ0LT5ydDZpX2ZsYWdzICYgUlRGX0NBQ0hFKSAmJgorCQkocnQt PnJ0NmlfZmxhZ3MgJiBSVEZfUENQVSB8fCBydC0+cnQ2aV9ub2RlKTsKK30KKwogc3RhdGljIHZv aWQgX19pcDZfcnRfdXBkYXRlX3BtdHUoc3RydWN0IGRzdF9lbnRyeSAqZHN0LCBjb25zdCBzdHJ1 Y3Qgc29jayAqc2ssCiAJCQkJIGNvbnN0IHN0cnVjdCBpcHY2aGRyICppcGgsIHUzMiBtdHUpCiB7 CkBAIC0xMzUzLDcgKzEzNTksNyBAQCBzdGF0aWMgdm9pZCBfX2lwNl9ydF91cGRhdGVfcG10dShz dHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIGNvbnN0IHN0cnVjdCBzb2NrICpzaywKIAlpZiAobXR1ID49 IGRzdF9tdHUoZHN0KSkKIAkJcmV0dXJuOwogCi0JaWYgKHJ0Ni0+cnQ2aV9mbGFncyAmIFJURl9D QUNIRSkgeworCWlmICghcnQ2X2NhY2hlX2FsbG93ZWRfZm9yX3BtdHUocnQ2KSkgewogCQlydDZf ZG9fdXBkYXRlX3BtdHUocnQ2LCBtdHUpOwogCX0gZWxzZSB7CiAJCWNvbnN0IHN0cnVjdCBpbjZf YWRkciAqZGFkZHIsICpzYWRkcjsKLS0gCjIuMS4wCgoKRnJvbSAzNmU1MzI1MDIzZDUzZTYwM2Nl NDZiZmNkNTU1ODdmMTY0ODUwMTAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0 aW4gS2FGYWkgTGF1IDxrYWZhaUBmYi5jb20+CkRhdGU6IFdlZCwgMTEgTm92IDIwMTUgMTE6NTE6 MDcgLTA4MDAKU3ViamVjdDogW1BBVENIIDA4LzQzXSBpcHY2OiBDaGVjayBleHBpcmUgb24gRFNU X05PQ0FDSEUgcm91dGUKClsgVXBzdHJlYW0gY29tbWl0IDU5NzNmYjFlMjQ1MDg2MDcxYmY3MTk5 NGM4YjU0ZDk5NTI2ZGVkMDMgXQoKU2luY2UgdGhlIGV4cGlyZXMgb2YgdGhlIERTVF9OT0NBQ0hF IHJ0IGNhbiBiZSBzZXQgZHVyaW5nCnRoZSBpcDZfcnRfdXBkYXRlX3BtdHUoKSwgd2UgYWxzbyBu ZWVkIHRvIGNvbnNpZGVyIHRoZSBleHBpcmVzCnZhbHVlIHdoZW4gZG9pbmcgaXA2X2RzdF9jaGVj aygpLgoKVGhpcyBwYXRjaGVzIGNyZWF0ZXMgX19ydDZfY2hlY2tfZXhwaXJlZCgpIHRvIG9ubHkK Y2hlY2sgdGhlIGV4cGlyZSB2YWx1ZSAoaWYgb25lIGV4aXN0cykgb2YgdGhlIGN1cnJlbnQgcnQu CgpJbiBydDZfZHN0X2Zyb21fY2hlY2soKSwgaXQgYWRkcyBfX3J0Nl9jaGVja19leHBpcmVkKCkg YXMKb25lIG9mIHRoZSBjb25kaXRpb24gY2hlY2suCgpTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS2FG YWkgTGF1IDxrYWZhaUBmYi5jb20+CkNjOiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0 cmVzc2luZHVrdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1A ZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2Ni9yb3V0ZS5jIHwgMTEgKysrKysrKysrKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmMKaW5kZXggNzExZWM3YS4uZWE4 OTJjMSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcm91dGUuYworKysgYi9uZXQvaXB2Ni9yb3V0ZS5j CkBAIC00MDMsNiArNDAzLDE0IEBAIHN0YXRpYyB2b2lkIGlwNl9kc3RfaWZkb3duKHN0cnVjdCBk c3RfZW50cnkgKmRzdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9CiB9CiAKK3N0YXRpYyBi b29sIF9fcnQ2X2NoZWNrX2V4cGlyZWQoY29uc3Qgc3RydWN0IHJ0Nl9pbmZvICpydCkKK3sKKwlp ZiAocnQtPnJ0NmlfZmxhZ3MgJiBSVEZfRVhQSVJFUykKKwkJcmV0dXJuIHRpbWVfYWZ0ZXIoamlm ZmllcywgcnQtPmRzdC5leHBpcmVzKTsKKwllbHNlCisJCXJldHVybiBmYWxzZTsKK30KKwogc3Rh dGljIGJvb2wgcnQ2X2NoZWNrX2V4cGlyZWQoY29uc3Qgc3RydWN0IHJ0Nl9pbmZvICpydCkKIHsK IAlpZiAocnQtPnJ0NmlfZmxhZ3MgJiBSVEZfRVhQSVJFUykgewpAQCAtMTI3MCw3ICsxMjc4LDgg QEAgc3RhdGljIHN0cnVjdCBkc3RfZW50cnkgKnJ0Nl9jaGVjayhzdHJ1Y3QgcnQ2X2luZm8gKnJ0 LCB1MzIgY29va2llKQogCiBzdGF0aWMgc3RydWN0IGRzdF9lbnRyeSAqcnQ2X2RzdF9mcm9tX2No ZWNrKHN0cnVjdCBydDZfaW5mbyAqcnQsIHUzMiBjb29raWUpCiB7Ci0JaWYgKHJ0LT5kc3Qub2Jz b2xldGUgPT0gRFNUX09CU09MRVRFX0ZPUkNFX0NISyAmJgorCWlmICghX19ydDZfY2hlY2tfZXhw aXJlZChydCkgJiYKKwkgICAgcnQtPmRzdC5vYnNvbGV0ZSA9PSBEU1RfT0JTT0xFVEVfRk9SQ0Vf Q0hLICYmCiAJICAgIHJ0Nl9jaGVjaygoc3RydWN0IHJ0Nl9pbmZvICopKHJ0LT5kc3QuZnJvbSks IGNvb2tpZSkpCiAJCXJldHVybiAmcnQtPmRzdDsKIAllbHNlCi0tIAoyLjEuMAoKCkZyb20gMDM3 MTA0YThhYzRhMzUwOWVlODAwY2ZhMTI0ODk3NjAwYzk0ODNlNyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogTWFydGluIEthRmFpIExhdSA8a2FmYWlAZmIuY29tPgpEYXRlOiBXZWQsIDEx IE5vdiAyMDE1IDExOjUxOjA4IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwOS80M10gaXB2NjogQ2hl Y2sgcnQtPmRzdC5mcm9tIGZvciB0aGUgRFNUX05PQ0FDSEUgcm91dGUKClsgVXBzdHJlbSBjb21t aXQgMDJiY2Y0ZTA4MmU0ZGM2MzQ0MDlhNmE2Y2I3ZGVmODgwNmQ2ZTVlNiBdCgpBbGwgRFNUX05P Q0FDSEUgcnQ2X2luZm8gdXNlZCB0byBoYXZlIHJ0LT5kc3QuZnJvbSBzZXQgdG8KaXRzIHBhcmVu dC4KCkFmdGVyIGNvbW1pdCA4ZTNkNWJlNzM2ODEgKCJpcHY2OiBBdm9pZCBkb3VibGUgZHN0X2Zy ZWUiKSwKRFNUX05PQ0FDSEUgaXMgYWxzbyBzZXQgdG8gcnQ2X2luZm8gd2hpY2ggZG9lcyBub3Qg aGF2ZQphIHBhcmVudCAoaS5lLiBydC0+ZHN0LmZyb20gaXMgTlVMTCkuCgpUaGlzIHBhdGNoIGNh dGNoZXMgdGhlIHJ0LT5kc3QuZnJvbSA9PSBOVUxMIGNhc2UuCgpGaXhlczogOGUzZDViZTczNjgx ICgiaXB2NjogQXZvaWQgZG91YmxlIGRzdF9mcmVlIikKU2lnbmVkLW9mZi1ieTogTWFydGluIEth RmFpIExhdSA8a2FmYWlAZmIuY29tPgpDYzogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0Bz dHJlc3NpbmR1a3Rpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVt QGRhdmVtbG9mdC5uZXQ+Ci0tLQogaW5jbHVkZS9uZXQvaXA2X2ZpYi5oIHwgMyArKy0KIG5ldC9p cHY2L3JvdXRlLmMgICAgICB8IDMgKystCiAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcDZfZmliLmggYi9p bmNsdWRlL25ldC9pcDZfZmliLmgKaW5kZXggYWFmOTcwMC4uZmI5NjFhNSAxMDA2NDQKLS0tIGEv aW5jbHVkZS9uZXQvaXA2X2ZpYi5oCisrKyBiL2luY2x1ZGUvbmV0L2lwNl9maWIuaApAQCAtMTY3 LDcgKzE2Nyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydDZfdXBkYXRlX2V4cGlyZXMoc3RydWN0 IHJ0Nl9pbmZvICpydDAsIGludCB0aW1lb3V0KQogCiBzdGF0aWMgaW5saW5lIHUzMiBydDZfZ2V0 X2Nvb2tpZShjb25zdCBzdHJ1Y3QgcnQ2X2luZm8gKnJ0KQogewotCWlmIChydC0+cnQ2aV9mbGFn cyAmIFJURl9QQ1BVIHx8IHVubGlrZWx5KHJ0LT5kc3QuZmxhZ3MgJiBEU1RfTk9DQUNIRSkpCisJ aWYgKHJ0LT5ydDZpX2ZsYWdzICYgUlRGX1BDUFUgfHwKKwkgICAgKHVubGlrZWx5KHJ0LT5kc3Qu ZmxhZ3MgJiBEU1RfTk9DQUNIRSkgJiYgcnQtPmRzdC5mcm9tKSkKIAkJcnQgPSAoc3RydWN0IHJ0 Nl9pbmZvICopKHJ0LT5kc3QuZnJvbSk7CiAKIAlyZXR1cm4gcnQtPnJ0Nmlfbm9kZSA/IHJ0LT5y dDZpX25vZGUtPmZuX3Nlcm51bSA6IDA7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIv bmV0L2lwdjYvcm91dGUuYwppbmRleCBlYTg5MmMxLi5kMzc3MzI2IDEwMDY0NAotLS0gYS9uZXQv aXB2Ni9yb3V0ZS5jCisrKyBiL25ldC9pcHY2L3JvdXRlLmMKQEAgLTEyOTksNyArMTI5OSw4IEBA IHN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICppcDZfZHN0X2NoZWNrKHN0cnVjdCBkc3RfZW50cnkg KmRzdCwgdTMyIGNvb2tpZSkKIAogCXJ0Nl9kc3RfZnJvbV9tZXRyaWNzX2NoZWNrKHJ0KTsKIAot CWlmICgocnQtPnJ0NmlfZmxhZ3MgJiBSVEZfUENQVSkgfHwgdW5saWtlbHkoZHN0LT5mbGFncyAm IERTVF9OT0NBQ0hFKSkKKwlpZiAocnQtPnJ0NmlfZmxhZ3MgJiBSVEZfUENQVSB8fAorCSAgICAo dW5saWtlbHkoZHN0LT5mbGFncyAmIERTVF9OT0NBQ0hFKSAmJiBydC0+ZHN0LmZyb20pKQogCQly ZXR1cm4gcnQ2X2RzdF9mcm9tX2NoZWNrKHJ0LCBjb29raWUpOwogCWVsc2UKIAkJcmV0dXJuIHJ0 Nl9jaGVjayhydCwgY29va2llKTsKLS0gCjIuMS4wCgoKRnJvbSBiYmVjZmRjZDA4NDk0OTI5ZDBj ZGU5MTc2MzQ2ZDUxMDA3ZmI3N2VkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWNv bGFzIERpY2h0ZWwgPG5pY29sYXMuZGljaHRlbEA2d2luZC5jb20+CkRhdGU6IEZyaSwgMjcgTm92 IDIwMTUgMTg6MTc6MDUgKzAxMDAKU3ViamVjdDogW1BBVENIIDEwLzQzXSBSZXZlcnQgImlwdjY6 IG5kaXNjOiBpbmhlcml0IG1ldGFkYXRhIGRzdCB3aGVuIGNyZWF0aW5nCiBuZGlzYyByZXF1ZXN0 cyIKClsgVXBzdHJlYW0gY29tbWl0IDMwNGQ4ODhiMjljZjk2ZjFkZDUzNTExZWU2ODY0OTljZDhj ZGYyNDkgXQoKVGhpcyByZXZlcnRzIGNvbW1pdCBhYjQ1MDYwNWIzNWNhYTc2OGNhMzNlODZkYjk0 MDMyMjliZjQyYmU0LgoKSW4gSVB2Niwgd2UgY2Fubm90IGluaGVyaXQgdGhlIGRzdCBvZiB0aGUg b3JpZ2luYWwgZHN0LiBuZGlzYyBwYWNrZXRzCmFyZSBJUHY2IHBhY2tldHMgYW5kIG1heSB0YWtl IGFub3RoZXIgcm91dGUgdGhhbiB0aGUgb3JpZ2luYWwgcGFja2V0LgoKVGhpcyBwYXRjaCBicmVh a3MgdGhlIGZvbGxvd2luZyBzY2VuYXJpbzogYSBwYWNrZXQgY29tZXMgZnJvbSBldGgwIGFuZApp cyBmb3J3YXJkZWQgdGhyb3VnaCB2eGxhbjEuIFRoZSBlbmNhcHN1bGF0ZWQgcGFja2V0IHRyaWdn ZXJzIGFuIE5TCndoaWNoIGNhbm5vdCBiZSBzZW50IGJlY2F1c2Ugb2YgdGhlIHdyb25nIHJvdXRl LgoKQ0M6IEppcmkgQmVuYyA8amJlbmNAcmVkaGF0LmNvbT4KQ0M6IFRob21hcyBHcmFmIDx0Z3Jh ZkBzdXVnLmNoPgpTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIERpY2h0ZWwgPG5pY29sYXMuZGljaHRl bEA2d2luZC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1s b2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9uZGlzYy5oIHwgIDMgKy0tCiBuZXQvaXB2Ni9hZGRy Y29uZi5jIHwgIDIgKy0KIG5ldC9pcHY2L25kaXNjLmMgICAgfCAxMCArKystLS0tLS0tCiBuZXQv aXB2Ni9yb3V0ZS5jICAgIHwgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCsp LCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZGlzYy5oIGIvaW5j bHVkZS9uZXQvbmRpc2MuaAppbmRleCBhYmE1Njk1Li5iM2E3NzUxIDEwMDY0NAotLS0gYS9pbmNs dWRlL25ldC9uZGlzYy5oCisrKyBiL2luY2x1ZGUvbmV0L25kaXNjLmgKQEAgLTE4Miw4ICsxODIs NyBAQCBpbnQgbmRpc2NfcmN2KHN0cnVjdCBza19idWZmICpza2IpOwogCiB2b2lkIG5kaXNjX3Nl bmRfbnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5laWdoYm91ciAqbmVpZ2gsCiAJ CSAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc29saWNpdCwKLQkJICAgY29uc3Qgc3RydWN0IGlu Nl9hZGRyICpkYWRkciwgY29uc3Qgc3RydWN0IGluNl9hZGRyICpzYWRkciwKLQkJICAgc3RydWN0 IHNrX2J1ZmYgKm9za2IpOworCQkgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCBjb25z dCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKTsKIAogdm9pZCBuZGlzY19zZW5kX3JzKHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYsCiAJCSAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc2FkZHIsIGNvbnN0 IHN0cnVjdCBpbjZfYWRkciAqZGFkZHIpOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYu YyBiL25ldC9pcHY2L2FkZHJjb25mLmMKaW5kZXggZGQwMDgyOC4uMzkzOWRkMiAxMDA2NDQKLS0t IGEvbmV0L2lwdjYvYWRkcmNvbmYuYworKysgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCkBAIC0zNjI4 LDcgKzM2MjgsNyBAQCBzdGF0aWMgdm9pZCBhZGRyY29uZl9kYWRfd29yayhzdHJ1Y3Qgd29ya19z dHJ1Y3QgKncpCiAKIAkvKiBzZW5kIGEgbmVpZ2hib3VyIHNvbGljaXRhdGlvbiBmb3Igb3VyIGFk ZHIgKi8KIAlhZGRyY29uZl9hZGRyX3NvbGljdF9tdWx0KCZpZnAtPmFkZHIsICZtY2FkZHIpOwot CW5kaXNjX3NlbmRfbnMoaWZwLT5pZGV2LT5kZXYsIE5VTEwsICZpZnAtPmFkZHIsICZtY2FkZHIs ICZpbjZhZGRyX2FueSwgTlVMTCk7CisJbmRpc2Nfc2VuZF9ucyhpZnAtPmlkZXYtPmRldiwgTlVM TCwgJmlmcC0+YWRkciwgJm1jYWRkciwgJmluNmFkZHJfYW55KTsKIG91dDoKIAlpbjZfaWZhX3B1 dChpZnApOwogCXJ0bmxfdW5sb2NrKCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZGlzYy5jIGIv bmV0L2lwdjYvbmRpc2MuYwppbmRleCA2NGE3MTM1Li45YWQ0NmNkIDEwMDY0NAotLS0gYS9uZXQv aXB2Ni9uZGlzYy5jCisrKyBiL25ldC9pcHY2L25kaXNjLmMKQEAgLTU1Myw4ICs1NTMsNyBAQCBz dGF0aWMgdm9pZCBuZGlzY19zZW5kX3Vuc29sX25hKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAK IHZvaWQgbmRpc2Nfc2VuZF9ucyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmVpZ2hi b3VyICpuZWlnaCwKIAkJICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpzb2xpY2l0LAotCQkgICBj b25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRy LAotCQkgICBzdHJ1Y3Qgc2tfYnVmZiAqb3NrYikKKwkJICAgY29uc3Qgc3RydWN0IGluNl9hZGRy ICpkYWRkciwgY29uc3Qgc3RydWN0IGluNl9hZGRyICpzYWRkcikKIHsKIAlzdHJ1Y3Qgc2tfYnVm ZiAqc2tiOwogCXN0cnVjdCBpbjZfYWRkciBhZGRyX2J1ZjsKQEAgLTU5MCw5ICs1ODksNiBAQCB2 b2lkIG5kaXNjX3NlbmRfbnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5laWdoYm91 ciAqbmVpZ2gsCiAJCW5kaXNjX2ZpbGxfYWRkcl9vcHRpb24oc2tiLCBORF9PUFRfU09VUkNFX0xM X0FERFIsCiAJCQkJICAgICAgIGRldi0+ZGV2X2FkZHIpOwogCi0JaWYgKCEoZGV2LT5wcml2X2Zs YWdzICYgSUZGX1hNSVRfRFNUX1JFTEVBU0UpICYmIG9za2IpCi0JCXNrYl9kc3RfY29weShza2Is IG9za2IpOwotCiAJbmRpc2Nfc2VuZF9za2Ioc2tiLCBkYWRkciwgc2FkZHIpOwogfQogCkBAIC02 NzksMTIgKzY3NSwxMiBAQCBzdGF0aWMgdm9pZCBuZGlzY19zb2xpY2l0KHN0cnVjdCBuZWlnaGJv dXIgKm5laWdoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQkJCSAgIiVzOiB0cnlpbmcgdG8gdWNh c3QgcHJvYmUgaW4gTlVEX0lOVkFMSUQ6ICVwSTZcbiIsCiAJCQkJICBfX2Z1bmNfXywgdGFyZ2V0 KTsKIAkJfQotCQluZGlzY19zZW5kX25zKGRldiwgbmVpZ2gsIHRhcmdldCwgdGFyZ2V0LCBzYWRk ciwgc2tiKTsKKwkJbmRpc2Nfc2VuZF9ucyhkZXYsIG5laWdoLCB0YXJnZXQsIHRhcmdldCwgc2Fk ZHIpOwogCX0gZWxzZSBpZiAoKHByb2JlcyAtPSBORUlHSF9WQVIobmVpZ2gtPnBhcm1zLCBBUFBf UFJPQkVTKSkgPCAwKSB7CiAJCW5laWdoX2FwcF9ucyhuZWlnaCk7CiAJfSBlbHNlIHsKIAkJYWRk cmNvbmZfYWRkcl9zb2xpY3RfbXVsdCh0YXJnZXQsICZtY2FkZHIpOwotCQluZGlzY19zZW5kX25z KGRldiwgTlVMTCwgdGFyZ2V0LCAmbWNhZGRyLCBzYWRkciwgc2tiKTsKKwkJbmRpc2Nfc2VuZF9u cyhkZXYsIE5VTEwsIHRhcmdldCwgJm1jYWRkciwgc2FkZHIpOwogCX0KIH0KIApkaWZmIC0tZ2l0 IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmMKaW5kZXggZDM3NzMyNi4uZmQw ZTY3NCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcm91dGUuYworKysgYi9uZXQvaXB2Ni9yb3V0ZS5j CkBAIC01NDYsNyArNTQ2LDcgQEAgc3RhdGljIHZvaWQgcnQ2X3Byb2JlX2RlZmVycmVkKHN0cnVj dCB3b3JrX3N0cnVjdCAqdykKIAkJY29udGFpbmVyX29mKHcsIHN0cnVjdCBfX3J0Nl9wcm9iZV93 b3JrLCB3b3JrKTsKIAogCWFkZHJjb25mX2FkZHJfc29saWN0X211bHQoJndvcmstPnRhcmdldCwg Jm1jYWRkcik7Ci0JbmRpc2Nfc2VuZF9ucyh3b3JrLT5kZXYsIE5VTEwsICZ3b3JrLT50YXJnZXQs ICZtY2FkZHIsIE5VTEwsIE5VTEwpOworCW5kaXNjX3NlbmRfbnMod29yay0+ZGV2LCBOVUxMLCAm d29yay0+dGFyZ2V0LCAmbWNhZGRyLCBOVUxMKTsKIAlkZXZfcHV0KHdvcmstPmRldik7CiAJa2Zy ZWUod29yayk7CiB9Ci0tIAoyLjEuMAoKCkZyb20gMzg1NWUwN2E4MmMwMTgwZDkxMTBhYzAzZDg0 NDA1ZjllY2M3OTg2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS2FtYWwgTW9zdGFm YSA8a2FtYWxAY2Fub25pY2FsLmNvbT4KRGF0ZTogV2VkLCAxMSBOb3YgMjAxNSAxNDoyNDoyNyAt MDgwMApTdWJqZWN0OiBbUEFUQ0ggMTEvNDNdIHRvb2xzL25ldDogVXNlIGluY2x1ZGUvdWFwaSB3 aXRoIF9fRVhQT1JURURfSEVBREVSU19fCgpbIFVwc3RyZWFtIGNvbW1pdCBkNzQ3NWRlNTg1NzVj OTA0ODE4ZWZhMzY5YzgyZTg4YzY2NDhjZTJlIF0KClVzZSB0aGUgbG9jYWwgdWFwaSBoZWFkZXJz IHRvIGtlZXAgaW4gc3luYyB3aXRoICJyZWNlbnRseSIgYWRkZWQgI2RlZmluZSdzCihlLmcuIFNL Rl9BRF9WTEFOX1RQSUQpLiAgUmVmYWN0b3JlZCBDRkxBR1MsIGFuZCBicGZfYXNtIGRvZXNuJ3Qg bmVlZCAtSS4KCkZpeGVzOiAzZjM1NjM4NWU4YTQgKCJmaWx0ZXI6IGJwZl9hc206IGFkZCBtaW5p bWFsIGJwZiBhc20gdG9vbCIpClNpZ25lZC1vZmYtYnk6IEthbWFsIE1vc3RhZmEgPGthbWFsQGNh bm9uaWNhbC5jb20+CkFja2VkLWJ5OiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gu bmV0PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ Ci0tLQogdG9vbHMvbmV0L01ha2VmaWxlIHwgNyArKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC9NYWtl ZmlsZSBiL3Rvb2xzL25ldC9NYWtlZmlsZQppbmRleCBlZTU3N2VhLi5kZGY4ODgwIDEwMDY0NAot LS0gYS90b29scy9uZXQvTWFrZWZpbGUKKysrIGIvdG9vbHMvbmV0L01ha2VmaWxlCkBAIC00LDYg KzQsOSBAQCBDQyA9IGdjYwogTEVYID0gZmxleAogWUFDQyA9IGJpc29uCiAKK0NGTEFHUyArPSAt V2FsbCAtTzIKK0NGTEFHUyArPSAtRF9fRVhQT1JURURfSEVBREVSU19fIC1JLi4vLi4vaW5jbHVk ZS91YXBpIC1JLi4vLi4vaW5jbHVkZQorCiAlLnlhY2MuYzogJS55CiAJJChZQUNDKSAtbyAkQCAt ZCAkPAogCkBAIC0xMiwxNSArMTUsMTMgQEAgWUFDQyA9IGJpc29uCiAKIGFsbCA6IGJwZl9qaXRf ZGlzYXNtIGJwZl9kYmcgYnBmX2FzbQogCi1icGZfaml0X2Rpc2FzbSA6IENGTEFHUyA9IC1XYWxs IC1PMiAtRFBBQ0tBR0U9J2JwZl9qaXRfZGlzYXNtJworYnBmX2ppdF9kaXNhc20gOiBDRkxBR1Mg Kz0gLURQQUNLQUdFPSdicGZfaml0X2Rpc2FzbScKIGJwZl9qaXRfZGlzYXNtIDogTERMSUJTID0g LWxvcGNvZGVzIC1sYmZkIC1sZGwKIGJwZl9qaXRfZGlzYXNtIDogYnBmX2ppdF9kaXNhc20ubwog Ci1icGZfZGJnIDogQ0ZMQUdTID0gLVdhbGwgLU8yCiBicGZfZGJnIDogTERMSUJTID0gLWxyZWFk bGluZQogYnBmX2RiZyA6IGJwZl9kYmcubwogCi1icGZfYXNtIDogQ0ZMQUdTID0gLVdhbGwgLU8y IC1JLgogYnBmX2FzbSA6IExETElCUyA9CiBicGZfYXNtIDogYnBmX2FzbS5vIGJwZl9leHAueWFj Yy5vIGJwZl9leHAubGV4Lm8KIGJwZl9leHAubGV4Lm8gOiBicGZfZXhwLnlhY2MuYwotLSAKMi4x LjAKCgpGcm9tIDAwZTdjNDU3MTJlOWQ4MjZhMjkwOGNkZmI0ZDE1NTgxZjgyNWU0N2QgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJv eC5uZXQ+CkRhdGU6IFdlZCwgMTEgTm92IDIwMTUgMjM6MjU6NDAgKzAxMDAKU3ViamVjdDogW1BB VENIIDEyLzQzXSBwYWNrZXQ6IGRvIHNrYl9wcm9iZV90cmFuc3BvcnRfaGVhZGVyIHdoZW4gd2Ug YWN0dWFsbHkKIGhhdmUgZGF0YQoKWyBVcHN0cmVhbSBjb21taXQgZWZkZmEyZjc4NDhmNjQ1MTcw MDgxMzZmYjQxZjUzYzRhMWZhZjkzYSBdCgpJbiB0cGFja2V0X2ZpbGxfc2tiKCkgY29tbWl0IGMx YWFkMjc1YjAyOSAoInBhY2tldDogc2V0IHRyYW5zcG9ydApoZWFkZXIgYmVmb3JlIGRvaW5nIHht aXQiKSBhbmQgbGF0ZXIgb24gNDA4OTNmZDBmZDRlICgibmV0OiBzd2l0Y2gKdG8gdXNlIHNrYl9w cm9iZV90cmFuc3BvcnRfaGVhZGVyKCkiKSB3YXMgcHJvYmluZyBmb3IgYSB0cmFuc3BvcnQKaGVh ZGVyIG9uIHRoZSBza2IgZnJvbSBhIHJpbmcgYnVmZmVyIHNsb3QsIGJ1dCBhdCBhIHRpbWUsIHdo ZXJlCnRoZSBza2IgaGFzIF9ub3QgZXZlbl8gYmVlbiBmaWxsZWQgd2l0aCBkYXRhIHlldC4gU28g dGhhdCBjYWxsIGludG8KdGhlIGZsb3cgZGlzc2VjdG9yIGlzIHByZXR0eSB1c2VsZXNzLiBMZXRz IGRvIGl0IGFmdGVyIHdlJ3ZlIHNldAp1cCB0aGUgc2tiIGZyYWdzLgoKRml4ZXM6IGMxYWFkMjc1 YjAyOSAoInBhY2tldDogc2V0IHRyYW5zcG9ydCBoZWFkZXIgYmVmb3JlIGRvaW5nIHhtaXQiKQpS ZXBvcnRlZC1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2Zm LWJ5OiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpBY2tlZC1ieTogSmFz b24gV2FuZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWls bGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9wYWNrZXQvYWZfcGFja2V0LmMgfCA1 ICsrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tl dC5jCmluZGV4IDI3YjI4OTguLmJlMDM4YzkgMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFj a2V0LmMKKysrIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwpAQCAtMjM2OCw4ICsyMzY4LDYgQEAg c3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVj dCBza19idWZmICpza2IsCiAJc2tiX3Jlc2VydmUoc2tiLCBobGVuKTsKIAlza2JfcmVzZXRfbmV0 d29ya19oZWFkZXIoc2tiKTsKIAotCWlmICghcGFja2V0X3VzZV9kaXJlY3RfeG1pdChwbykpCi0J CXNrYl9wcm9iZV90cmFuc3BvcnRfaGVhZGVyKHNrYiwgMCk7CiAJaWYgKHVubGlrZWx5KHBvLT50 cF90eF9oYXNfb2ZmKSkgewogCQlpbnQgb2ZmX21pbiwgb2ZmX21heCwgb2ZmOwogCQlvZmZfbWlu ID0gcG8tPnRwX2hkcmxlbiAtIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbGwpOwpAQCAtMjQ0OSw2 ICsyNDQ3LDkgQEAgc3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29j ayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsCiAJCWxlbiA9ICgodG9fd3JpdGUgPiBsZW5fbWF4 KSA/IGxlbl9tYXggOiB0b193cml0ZSk7CiAJfQogCisJaWYgKCFwYWNrZXRfdXNlX2RpcmVjdF94 bWl0KHBvKSkKKwkJc2tiX3Byb2JlX3RyYW5zcG9ydF9oZWFkZXIoc2tiLCAwKTsKKwogCXJldHVy biB0cF9sZW47CiB9CiAKLS0gCjIuMS4wCgoKRnJvbSA5OTVhZmE4OGYyN2M3MDZlMGRhZjMyOWY2 ZmIwNzM5ODQxNGYyMzM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQm9y a21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpEYXRlOiBXZWQsIDExIE5vdiAyMDE1IDIzOjI1 OjQxICswMTAwClN1YmplY3Q6IFtQQVRDSCAxMy80M10gcGFja2V0OiBhbHdheXMgcHJvYmUgZm9y IHRyYW5zcG9ydCBoZWFkZXIKClsgVXBzdHJlYW0gY29tbWl0IDhmZDZjODBkOWRkOTM4Y2EzMzhj NzA2OTg1MzNhN2UzMDQ3NTI4NDYgXQoKV2UgY29uY2x1ZGVkIHRoYXQgdGhlIHNrYl9wcm9iZV90 cmFuc3BvcnRfaGVhZGVyKCkgc2hvdWxkIGJldHRlciBiZQpjYWxsZWQgdW5jb25kaXRpb25hbGx5 LiBBdm9pZGluZyB0aGUgY2FsbCBpbnRvIHRoZSBmbG93IGRpc3NlY3RvciBoYXMKYWxzbyBub3Qg cmVhbGx5IG11Y2ggdG8gZG8gd2l0aCB0aGUgZGlyZWN0IHhtaXQgbW9kZS4KCldoaWxlIGl0IHNl ZW1zIHRoYXQgb25seSB2aXJ0aW9fbmV0IGNvZGUgbWFrZXMgdXNlIG9mIEdTTyBmcm9tIG5vbgpS WC9UWCByaW5nIHBhY2tldCBzb2NrZXQgcGF0aHMsIHdlIHNob3VsZCBwcm9iZSBmb3IgYSB0cmFu c3BvcnQgaGVhZGVyCm5ldmVydGhlbGVzcyBiZWZvcmUgdGhleSBoaXQgZGV2aWNlcy4KClJlZmVy ZW5jZTogaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUubGludXgubmV0d29yay8zODYxNzMv ClNpZ25lZC1vZmYtYnk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkFj a2VkLWJ5OiBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBE YXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3BhY2tldC9hZl9w YWNrZXQuYyB8IDcgKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jIGIvbmV0L3Bh Y2tldC9hZl9wYWNrZXQuYwppbmRleCBiZTAzOGM5Li4zMDU5ZjUxIDEwMDY0NAotLS0gYS9uZXQv cGFja2V0L2FmX3BhY2tldC5jCisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTI0NDcs OCArMjQ0Nyw3IEBAIHN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3Nv Y2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlsZW4gPSAoKHRvX3dyaXRlID4gbGVuX21h eCkgPyBsZW5fbWF4IDogdG9fd3JpdGUpOwogCX0KIAotCWlmICghcGFja2V0X3VzZV9kaXJlY3Rf eG1pdChwbykpCi0JCXNrYl9wcm9iZV90cmFuc3BvcnRfaGVhZGVyKHNrYiwgMCk7CisJc2tiX3By b2JlX3RyYW5zcG9ydF9oZWFkZXIoc2tiLCAwKTsKIAogCXJldHVybiB0cF9sZW47CiB9CkBAIC0y ODAwLDggKzI3OTksOCBAQCBzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29j aywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKQogCQlsZW4gKz0gdm5ldF9oZHJfbGVu OwogCX0KIAotCWlmICghcGFja2V0X3VzZV9kaXJlY3RfeG1pdChwbykpCi0JCXNrYl9wcm9iZV90 cmFuc3BvcnRfaGVhZGVyKHNrYiwgcmVzZXJ2ZSk7CisJc2tiX3Byb2JlX3RyYW5zcG9ydF9oZWFk ZXIoc2tiLCByZXNlcnZlKTsKKwogCWlmICh1bmxpa2VseShleHRyYV9sZW4gPT0gNCkpCiAJCXNr Yi0+bm9fZmNzID0gMTsKIAotLSAKMi4xLjAKCgpGcm9tIDg1ZGYwZmFiMWJmYWJkNWE4OGI5ZDUz YTA5ZDM0ZGY1MTY3MjI4MmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IERhbmllbCBC b3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkRhdGU6IFdlZCwgMTEgTm92IDIwMTUgMjM6 MjU6NDIgKzAxMDAKU3ViamVjdDogW1BBVENIIDE0LzQzXSBwYWNrZXQ6IG9ubHkgYWxsb3cgZXh0 cmEgdmxhbiBsZW4gb24gZXRoZXJuZXQgZGV2aWNlcwoKWyBVcHN0cmVhbSBjb21taXQgM2M3MGMx MzI0ODg3OTRlMjQ4OWFiMDQ1NTU5YjBjZTBhZmNmMTdkZSBdCgpQYWNrZXQgc29ja2V0cyBjYW4g YmUgdXNlZCBieSB2YXJpb3VzIG5ldCBkZXZpY2VzIGFuZCBhcmUgbm90CnJlYWxseSByZXN0cmlj dGVkIHRvIEFSUEhSRF9FVEhFUiBkZXZpY2UgdHlwZXMuIEhvd2V2ZXIsIHdoZW4KY3VycmVudGx5 IGNoZWNraW5nIGZvciB0aGUgZXh0cmEgNCBieXRlcyB0aGF0IGNhbiBiZSB0cmFuc21pdHRlZApp biBWTEFOIGNhc2UsIG91ciBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgZ2VuZXJhbGx5IHByb2JlIG9u CkFSUEhSRF9FVEhFUiBkZXZpY2VzLiBUaGVyZWZvcmUsIGJlZm9yZSBsb29raW5nIGludG8gRXRo ZXJuZXQKaGVhZGVyLCBjaGVjayB0aGUgZGV2aWNlIHR5cGUgZmlyc3QuCgpUaGlzIGFsc28gZml4 ZXMgdGhlIGlzc3VlIHdoZXJlIG5vbi1BUlBIUkRfRVRIRVIgZGV2aWNlcyBjb3VsZApoYXZlIG5v IGRldi0+aGFyZF9oZWFkZXJfbGVuIGluIFRYX1JJTkcgU09DS19SQVcgY2FzZSwgYW5kIHRodXMK dGhlIGNoZWNrIHdvdWxkIHRlc3QgdW5maWxsZWQgbGluZWFyIHBhcnQgb2YgdGhlIHNrYiAoaW5z dGVhZApvZiBub24tbGluZWFyKS4KCkZpeGVzOiA1N2Y4OWJmYTIxNDAgKCJuZXR3b3JrOiBBbGxv dyBhZl9wYWNrZXQgdG8gdHJhbnNtaXQgKzQgYnl0ZXMgZm9yIFZMQU4gcGFja2V0cy4iKQpGaXhl czogNTJmMTQ1NGY2MjlmICgicGFja2V0OiBhbGxvdyB0byB0cmFuc21pdCArNCBieXRlIGluIFRY X1JJTkcgc2xvdCBmb3IgVkxBTiBjYXNlIikKU2lnbmVkLW9mZi1ieTogRGFuaWVsIEJvcmttYW5u IDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KQWNrZWQtYnk6IFdpbGxlbSBkZSBCcnVpam4gPHdpbGxl bWJAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZl bWxvZnQubmV0PgotLS0KIG5ldC9wYWNrZXQvYWZfcGFja2V0LmMgfCA2MCArKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI1 IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQv YWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCmluZGV4IDMwNTlmNTEuLjZlM2Nk MmYgMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKKysrIGIvbmV0L3BhY2tldC9h Zl9wYWNrZXQuYwpAQCAtMTc0MSw2ICsxNzQxLDIwIEBAIHN0YXRpYyB2b2lkIGZhbm91dF9yZWxl YXNlKHN0cnVjdCBzb2NrICpzaykKIAkJa2ZyZWVfcmN1KHBvLT5yb2xsb3ZlciwgcmN1KTsKIH0K IAorc3RhdGljIGJvb2wgcGFja2V0X2V4dHJhX3ZsYW5fbGVuX2FsbG93ZWQoY29uc3Qgc3RydWN0 IG5ldF9kZXZpY2UgKmRldiwKKwkJCQkJICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCS8qIEVh cmxpZXIgY29kZSBhc3N1bWVkIHRoaXMgd291bGQgYmUgYSBWTEFOIHBrdCwgZG91YmxlLWNoZWNr CisJICogdGhpcyBub3cgdGhhdCB3ZSBoYXZlIHRoZSBhY3R1YWwgcGFja2V0IGluIGhhbmQuIFdl IGNhbiBvbmx5CisJICogZG8gdGhpcyBjaGVjayBvbiBFdGhlcm5ldCBkZXZpY2VzLgorCSAqLwor CWlmICh1bmxpa2VseShkZXYtPnR5cGUgIT0gQVJQSFJEX0VUSEVSKSkKKwkJcmV0dXJuIGZhbHNl OworCisJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKKwlyZXR1cm4gbGlrZWx5KGV0aF9oZHIo c2tiKS0+aF9wcm90byA9PSBodG9ucyhFVEhfUF84MDIxUSkpOworfQorCiBzdGF0aWMgY29uc3Qg c3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHByb3Rv X29wcyBwYWNrZXRfb3BzX3Nwa3Q7CkBAIC0xOTAyLDE4ICsxOTE2LDEwIEBAIHJldHJ5OgogCQln b3RvIHJldHJ5OwogCX0KIAotCWlmIChsZW4gPiAoZGV2LT5tdHUgKyBkZXYtPmhhcmRfaGVhZGVy X2xlbiArIGV4dHJhX2xlbikpIHsKLQkJLyogRWFybGllciBjb2RlIGFzc3VtZWQgdGhpcyB3b3Vs ZCBiZSBhIFZMQU4gcGt0LAotCQkgKiBkb3VibGUtY2hlY2sgdGhpcyBub3cgdGhhdCB3ZSBoYXZl IHRoZSBhY3R1YWwKLQkJICogcGFja2V0IGluIGhhbmQuCi0JCSAqLwotCQlzdHJ1Y3QgZXRoaGRy ICplaGRyOwotCQlza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpOwotCQllaGRyID0gZXRoX2hkcihz a2IpOwotCQlpZiAoZWhkci0+aF9wcm90byAhPSBodG9ucyhFVEhfUF84MDIxUSkpIHsKLQkJCWVy ciA9IC1FTVNHU0laRTsKLQkJCWdvdG8gb3V0X3VubG9jazsKLQkJfQorCWlmIChsZW4gPiAoZGV2 LT5tdHUgKyBkZXYtPmhhcmRfaGVhZGVyX2xlbiArIGV4dHJhX2xlbikgJiYKKwkgICAgIXBhY2tl dF9leHRyYV92bGFuX2xlbl9hbGxvd2VkKGRldiwgc2tiKSkgeworCQllcnIgPSAtRU1TR1NJWkU7 CisJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAKIAlza2ItPnByb3RvY29sID0gcHJvdG87CkBAIC0y NTI1LDE4ICsyNTMxLDEwIEBAIHN0YXRpYyBpbnQgdHBhY2tldF9zbmQoc3RydWN0IHBhY2tldF9z b2NrICpwbywgc3RydWN0IG1zZ2hkciAqbXNnKQogCQl0cF9sZW4gPSB0cGFja2V0X2ZpbGxfc2ti KHBvLCBza2IsIHBoLCBkZXYsIHNpemVfbWF4LCBwcm90bywKIAkJCQkJICBhZGRyLCBobGVuKTsK IAkJaWYgKGxpa2VseSh0cF9sZW4gPj0gMCkgJiYKLQkJICAgIHRwX2xlbiA+IGRldi0+bXR1ICsg ZGV2LT5oYXJkX2hlYWRlcl9sZW4pIHsKLQkJCXN0cnVjdCBldGhoZHIgKmVoZHI7Ci0JCQkvKiBF YXJsaWVyIGNvZGUgYXNzdW1lZCB0aGlzIHdvdWxkIGJlIGEgVkxBTiBwa3QsCi0JCQkgKiBkb3Vi bGUtY2hlY2sgdGhpcyBub3cgdGhhdCB3ZSBoYXZlIHRoZSBhY3R1YWwKLQkJCSAqIHBhY2tldCBp biBoYW5kLgotCQkJICovCisJCSAgICB0cF9sZW4gPiBkZXYtPm10dSArIGRldi0+aGFyZF9oZWFk ZXJfbGVuICYmCisJCSAgICAhcGFja2V0X2V4dHJhX3ZsYW5fbGVuX2FsbG93ZWQoZGV2LCBza2Ip KQorCQkJdHBfbGVuID0gLUVNU0dTSVpFOwogCi0JCQlza2JfcmVzZXRfbWFjX2hlYWRlcihza2Ip OwotCQkJZWhkciA9IGV0aF9oZHIoc2tiKTsKLQkJCWlmIChlaGRyLT5oX3Byb3RvICE9IGh0b25z KEVUSF9QXzgwMjFRKSkKLQkJCQl0cF9sZW4gPSAtRU1TR1NJWkU7Ci0JCX0KIAkJaWYgKHVubGlr ZWx5KHRwX2xlbiA8IDApKSB7CiAJCQlpZiAocG8tPnRwX2xvc3MpIHsKIAkJCQlfX3BhY2tldF9z ZXRfc3RhdHVzKHBvLCBwaCwKQEAgLTI3NTcsMTggKzI3NTUsMTAgQEAgc3RhdGljIGludCBwYWNr ZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxl bikKIAogCXNvY2tfdHhfdGltZXN0YW1wKHNrLCAmc2tiX3NoaW5mbyhza2IpLT50eF9mbGFncyk7 CiAKLQlpZiAoIWdzb190eXBlICYmIChsZW4gPiBkZXYtPm10dSArIHJlc2VydmUgKyBleHRyYV9s ZW4pKSB7Ci0JCS8qIEVhcmxpZXIgY29kZSBhc3N1bWVkIHRoaXMgd291bGQgYmUgYSBWTEFOIHBr dCwKLQkJICogZG91YmxlLWNoZWNrIHRoaXMgbm93IHRoYXQgd2UgaGF2ZSB0aGUgYWN0dWFsCi0J CSAqIHBhY2tldCBpbiBoYW5kLgotCQkgKi8KLQkJc3RydWN0IGV0aGhkciAqZWhkcjsKLQkJc2ti X3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKLQkJZWhkciA9IGV0aF9oZHIoc2tiKTsKLQkJaWYgKGVo ZHItPmhfcHJvdG8gIT0gaHRvbnMoRVRIX1BfODAyMVEpKSB7Ci0JCQllcnIgPSAtRU1TR1NJWkU7 Ci0JCQlnb3RvIG91dF9mcmVlOwotCQl9CisJaWYgKCFnc29fdHlwZSAmJiAobGVuID4gZGV2LT5t dHUgKyByZXNlcnZlICsgZXh0cmFfbGVuKSAmJgorCSAgICAhcGFja2V0X2V4dHJhX3ZsYW5fbGVu X2FsbG93ZWQoZGV2LCBza2IpKSB7CisJCWVyciA9IC1FTVNHU0laRTsKKwkJZ290byBvdXRfZnJl ZTsKIAl9CiAKIAlza2ItPnByb3RvY29sID0gcHJvdG87Ci0tIAoyLjEuMAoKCkZyb20gMzg2MjEz N2JkZWU4NjdiOTlhZGU4MTVhM2M0ZDk2NmFiMjIzYWM2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KRGF0ZTogV2Vk LCAxMSBOb3YgMjAxNSAyMzoyNTo0MyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTUvNDNdIHBhY2tl dDogaW5mZXIgcHJvdG9jb2wgZnJvbSBldGhlcm5ldCBoZWFkZXIgaWYgdW5zZXQKClsgVXBzdHJl YW0gY29tbWl0IGM3MjIxOWI3NWZkZTc2OGVmY2NmNzY2NjM0MjI4MmZhYjdmOWU0ZTcgXQoKSW4g Y2FzZSBubyBzdHJ1Y3Qgc29ja2FkZHJfbGwgaGFzIGJlZW4gcGFzc2VkIHRvIHBhY2tldApzb2Nr ZXQncyBzZW5kbXNnKCkgd2hlbiBkb2luZyBhIFRYX1JJTkcgZmx1c2ggcnVuLCB0aGVuCnNrYi0+ cHJvdG9jb2wgaXMgc2V0IHRvIHBvLT5udW0gaW5zdGVhZCwgd2hpY2ggaXMgdGhlIHByb3RvY29s CnBhc3NlZCB2aWEgc29ja2V0KDIpL2JpbmQoMikuCgpBcHBsaWNhdGlvbnMgb25seSB4bWl0dGlu ZyBjYW4gZ28gdGhlIHBhdGggb2YgYWxsb2NhdGluZyB0aGUKc29ja2V0IGFzIHNvY2tldChQRl9Q QUNLRVQsIDxtb2RlPiwgMCkgYW5kIGRvIGEgYmluZCgyKSBvbiB0aGUKVFhfUklORyB3aXRoIHNs bF9wcm90b2NvbCBvZiAwLiBUaGF0IHdheSwgcmVnaXN0ZXJfcHJvdF9ob29rKCkKaXMgbmVpdGhl ciBjYWxsZWQgb24gY3JlYXRpb24gbm9yIG9uIGJpbmQgdGltZSwgd2hpY2ggc2F2ZXMKY3ljbGVz IHdoZW4gdGhlcmUncyBubyBpbnRlcmVzdCBpbiBjYXB0dXJpbmcgYW55d2F5LgoKVGhhdCBsZWF2 ZXMgdXMgaG93ZXZlciB3aXRoIHBvLT5udW0gMCBpbnN0ZWFkIGFuZCB0aGVyZWZvcmUKdGhlIFRY X1JJTkcgZmx1c2ggcnVuIHNldHMgc2tiLT5wcm90b2NvbCB0byAwIGFzIHdlbGwuIEVyaWMKcmVw b3J0ZWQgdGhhdCB0aGlzIGxlYWRzIHRvIHByb2JsZW1zIHdoZW4gdXNpbmcgdG9vbHMgbGlrZQp0 cmFmZ2VuIG92ZXIgYm9uZGluZyBkZXZpY2UuIEkuZS4gdGhlIGJvbmRpbmcncyBoYXNoIGZ1bmN0 aW9uCmNvdWxkIGludm9rZSB0aGUga2VybmVsJ3MgZmxvdyBkaXNzZWN0b3IsIHdoaWNoIGRlcGVu ZHMgb24Kc2tiLT5wcm90b2NvbCBiZWluZyBwcm9wZXJseSBzZXQuIEluIHRoZSBjdXJyZW50IHNp dHVhdGlvbiwgYWxsCnRoZSB0cmFmZmljIGlzIHRoZW4gZGlyZWN0ZWQgdG8gYSBzaW5nbGUgc2xh dmUuCgpGaXggaXQgdXAgYnkgaW5mZXJyaW5nIHNrYi0+cHJvdG9jb2wgZnJvbSB0aGUgRXRoZXJu ZXQgaGVhZGVyCndoZW4gbm90IHNldCBhbmQgd2UgaGF2ZSBBUlBIUkRfRVRIRVIgZGV2aWNlIHR5 cGUuIFRoaXMgaXMgb25seQpkb25lIGluIGNhc2Ugb2YgU09DS19SQVcgYW5kIHdoZXJlIHdlIGhh dmUgYSBkZXYtPmhhcmRfaGVhZGVyX2xlbgpsZW5ndGguIEluIGNhc2Ugb2YgQVJQSFJEX0VUSEVS IGRldmljZXMsIHRoaXMgaXMgZ3VhcmFudGVlZCB0bwpjb3ZlciBFVEhfSExFTiwgYW5kIHRoZXJl Zm9yZSBiZWluZyBhY2Nlc3NlZCBvbiB0aGUgc2tiIGFmdGVyCnRoZSBza2Jfc3RvcmVfYml0cygp LgoKUmVwb3J0ZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVk LW9mZi1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KQWNrZWQtYnk6 IFdpbGxlbSBkZSBCcnVpam4gPHdpbGxlbWJAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2 aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9wYWNrZXQvYWZfcGFj a2V0LmMgfCAxMSArKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jIGIvbmV0L3BhY2tldC9hZl9wYWNr ZXQuYwppbmRleCA2ZTNjZDJmLi40NWQ0MTk2IDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3Bh Y2tldC5jCisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTIzMzgsNiArMjMzOCwxNSBA QCBzdGF0aWMgYm9vbCBsbF9oZWFkZXJfdHJ1bmNhdGVkKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYsIGludCBsZW4pCiAJcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgdm9pZCB0cGFja2V0 X3NldF9wcm90b2NvbChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJCSBzdHJ1Y3Qg c2tfYnVmZiAqc2tiKQoreworCWlmIChkZXYtPnR5cGUgPT0gQVJQSFJEX0VUSEVSKSB7CisJCXNr Yl9yZXNldF9tYWNfaGVhZGVyKHNrYik7CisJCXNrYi0+cHJvdG9jb2wgPSBldGhfaGRyKHNrYikt PmhfcHJvdG87CisJfQorfQorCiBzdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBh Y2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJdm9pZCAqZnJhbWUsIHN0cnVj dCBuZXRfZGV2aWNlICpkZXYsIGludCBzaXplX21heCwKIAkJX19iZTE2IHByb3RvLCB1bnNpZ25l ZCBjaGFyICphZGRyLCBpbnQgaGxlbikKQEAgLTI0MTksNiArMjQyOCw4IEBAIHN0YXRpYyBpbnQg dHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAq c2tiLAogCQkJCWRldi0+aGFyZF9oZWFkZXJfbGVuKTsKIAkJaWYgKHVubGlrZWx5KGVycikpCiAJ CQlyZXR1cm4gZXJyOworCQlpZiAoIXNrYi0+cHJvdG9jb2wpCisJCQl0cGFja2V0X3NldF9wcm90 b2NvbChkZXYsIHNrYik7CiAKIAkJZGF0YSArPSBkZXYtPmhhcmRfaGVhZGVyX2xlbjsKIAkJdG9f d3JpdGUgLT0gZGV2LT5oYXJkX2hlYWRlcl9sZW47Ci0tIAoyLjEuMAoKCkZyb20gYzVjZGUwY2Nm OTE5MjdjODdmZDA2Yjg2ZDM5ZDU4MGE5MjQ0ZmI1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KRGF0ZTogV2VkLCAx MSBOb3YgMjAxNSAyMzoyNTo0NCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTYvNDNdIHBhY2tldDog Zml4IHRwYWNrZXRfc25kIG1heCBmcmFtZSBsZW4KClsgVXBzdHJlYW0gY29tbWl0IDVjZmI0Yzhk MDViNDQwOWM0MDQ0Y2I5YzA1YjE5NzA1YzFkOTgxOGIgXQoKU2luY2UgaXQncyBpbnRyb2R1Y3Rp b24gaW4gY29tbWl0IDY5ZTNjNzVmNGQ1NCAoIm5ldDogVFhfUklORyBhbmQKcGFja2V0IG1tYXAi KSwgVFhfUklORyBjb3VsZCBiZSB1c2VkIGZyb20gU09DS19ER1JBTSBhbmQgU09DS19SQVcKc2lk ZS4gV2hlbiB1c2VkIHdpdGggU09DS19ER1JBTSBvbmx5LCB0aGUgc2l6ZV9tYXggPiBkZXYtPm10 dSArCnJlc2VydmUgY2hlY2sgc2hvdWxkIGhhdmUgcmVzZXJ2ZSBhcyAwLCBidXQgY3VycmVudGx5 LCB0aGlzIGlzCnVuY29uZGl0aW9uYWxseSBzZXQgKGluIGl0J3Mgb3JpZ2luYWwgZm9ybSBhcyBk ZXYtPmhhcmRfaGVhZGVyX2xlbikuCgpJIHRoaW5rIHRoaXMgaXMgbm90IGNvcnJlY3Qgc2luY2Ug dHBhY2tldF9maWxsX3NrYigpIHdvdWxkIHRoZW4KdGFrZSBkZXYtPm10dSBhbmQgZGV2LT5oYXJk X2hlYWRlcl9sZW4gaW50byBhY2NvdW50IGZvciBTT0NLX0RHUkFNLAp0aGUgZXh0cmEgVkxBTl9I TEVOIGNvdWxkIGJlIHBvc3NpYmxlIGluIGJvdGggY2FzZXMuIFByZXN1bWFibHksIHRoZQpyZXNl cnZlIGNvZGUgd2FzIGNvcGllZCBmcm9tIHBhY2tldF9zbmQoKSwgYnV0IGxhdGVyIG9uIG1pc3Nl ZCB0aGUKY2hlY2suIE1ha2UgaXQgc2ltaWxhciBhcyB3ZSBoYXZlIGl0IGluIHBhY2tldF9zbmQo KS4KCkZpeGVzOiA2OWUzYzc1ZjRkNTQgKCJuZXQ6IFRYX1JJTkcgYW5kIHBhY2tldCBtbWFwIikK U2lnbmVkLW9mZi1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KQWNr ZWQtYnk6IFdpbGxlbSBkZSBCcnVpam4gPHdpbGxlbWJAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9wYWNrZXQv YWZfcGFja2V0LmMgfCA5ICsrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jIGIv bmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCA0NWQ0MTk2Li40Njk1YTM2IDEwMDY0NAotLS0g YS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAg LTI1MTAsMTIgKzI1MTAsMTMgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0 X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpCiAJaWYgKHVubGlrZWx5KCEoZGV2LT5mbGFn cyAmIElGRl9VUCkpKQogCQlnb3RvIG91dF9wdXQ7CiAKLQlyZXNlcnZlID0gZGV2LT5oYXJkX2hl YWRlcl9sZW4gKyBWTEFOX0hMRU47CisJaWYgKHBvLT5zay5za19zb2NrZXQtPnR5cGUgPT0gU09D S19SQVcpCisJCXJlc2VydmUgPSBkZXYtPmhhcmRfaGVhZGVyX2xlbjsKIAlzaXplX21heCA9IHBv LT50eF9yaW5nLmZyYW1lX3NpemUKIAkJLSAocG8tPnRwX2hkcmxlbiAtIHNpemVvZihzdHJ1Y3Qg c29ja2FkZHJfbGwpKTsKIAotCWlmIChzaXplX21heCA+IGRldi0+bXR1ICsgcmVzZXJ2ZSkKLQkJ c2l6ZV9tYXggPSBkZXYtPm10dSArIHJlc2VydmU7CisJaWYgKHNpemVfbWF4ID4gZGV2LT5tdHUg KyByZXNlcnZlICsgVkxBTl9ITEVOKQorCQlzaXplX21heCA9IGRldi0+bXR1ICsgcmVzZXJ2ZSAr IFZMQU5fSExFTjsKIAogCWRvIHsKIAkJcGggPSBwYWNrZXRfY3VycmVudF9mcmFtZShwbywgJnBv LT50eF9yaW5nLApAQCAtMjU0Miw3ICsyNTQzLDcgQEAgc3RhdGljIGludCB0cGFja2V0X3NuZChz dHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpCiAJCXRwX2xlbiA9IHRw YWNrZXRfZmlsbF9za2IocG8sIHNrYiwgcGgsIGRldiwgc2l6ZV9tYXgsIHByb3RvLAogCQkJCQkg IGFkZHIsIGhsZW4pOwogCQlpZiAobGlrZWx5KHRwX2xlbiA+PSAwKSAmJgotCQkgICAgdHBfbGVu ID4gZGV2LT5tdHUgKyBkZXYtPmhhcmRfaGVhZGVyX2xlbiAmJgorCQkgICAgdHBfbGVuID4gZGV2 LT5tdHUgKyByZXNlcnZlICYmCiAJCSAgICAhcGFja2V0X2V4dHJhX3ZsYW5fbGVuX2FsbG93ZWQo ZGV2LCBza2IpKQogCQkJdHBfbGVuID0gLUVNU0dTSVpFOwogCi0tIAoyLjEuMAoKCkZyb20gOTNk ODM5NWE5OWVlZmRkM2I0NzBjZjljMDRlOTQ3YzZjYjhiYjg1YSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogbHVjaWVuIDxsdWNpZW4ueGluQGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAxMiBO b3YgMjAxNSAxMzowNzowNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMTcvNDNdIHNjdHA6IHRyYW5z bGF0ZSBob3N0IG9yZGVyIHRvIG5ldHdvcmsgb3JkZXIgd2hlbgogc2V0dGluZyBhIGhtYWNpZAoK WyBVcHN0cmVhbSBjb21taXQgZWQ1YTM3N2Q4N2RjNGM4N2ZiM2UxZjdmNjk4Y2JhMzhjZDg5MzEw MyBdCgpub3cgc2N0cCBhdXRoIGNhbm5vdCB3b3JrIHdlbGwgd2hlbiBzZXR0aW5nIGEgaG1hY2lk IG1hbnVhbGx5LCB3aGljaAppcyBjYXVzZWQgYnkgdGhhdCB3ZSBkaWRuJ3QgdXNlIHRoZSBuZXR3 b3JrIG9yZGVyIGZvciBobWFjaWQsIHNvIGZpeAppdCBieSBhZGRpbmcgdGhlIHRyYW5zZm9ybWF0 aW9uIGluIHNjdHBfYXV0aF9lcF9zZXRfaG1hY3MuCgpldmVuIHdlIHNldCBobWFjaWQgd2l0aCB0 aGUgbmV0d29yayBvcmRlciBpbiB1c2Vyc3BhY2UsIGl0IHN0aWxsCmNhbid0IHdvcmssIGJlY2F1 c2Ugb2YgdGhpcyBjb25kaXRpb24gaW4gc2N0cF9hdXRoX2VwX3NldF9obWFjcygpOgoKCQlpZiAo aWQgPiBTQ1RQX0FVVEhfSE1BQ19JRF9NQVgpCgkJCXJldHVybiAtRU9QTk9UU1VQUDsKCnNvIHRo aXMgd2Fzbid0IHdvcmtpbmcgYmVmb3JlIGFuZCB0aHVzIGl0IHdvbid0IGJyZWFrIGNvbXBhdGli aWxpdHkuCgpGaXhlczogNjViMDdlNWQwZDA5ICgiW1NDVFBdOiBBUEkgdXBkYXRlcyB0byBzdXBv cnQgU0NUUC1BVVRIIGV4dGVuc2lvbnMuIikKU2lnbmVkLW9mZi1ieTogWGluIExvbmcgPGx1Y2ll bi54aW5AZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXJjZWxvIFJpY2FyZG8gTGVpdG5lciA8 bWFyY2Vsby5sZWl0bmVyQGdtYWlsLmNvbT4KQWNrZWQtYnk6IE5laWwgSG9ybWFuIDxuaG9ybWFu QHR1eGRyaXZlci5jb20+CkFja2VkLWJ5OiBWbGFkIFlhc2V2aWNoIDx2eWFzZXZpY2hAZ21haWwu Y29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ Ci0tLQogbmV0L3NjdHAvYXV0aC5jIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL2F1dGguYyBiL25l dC9zY3RwL2F1dGguYwppbmRleCA0ZjE1YjdkLi4xNTQzZTM5IDEwMDY0NAotLS0gYS9uZXQvc2N0 cC9hdXRoLmMKKysrIGIvbmV0L3NjdHAvYXV0aC5jCkBAIC04MDksOCArODA5LDggQEAgaW50IHNj dHBfYXV0aF9lcF9zZXRfaG1hY3Moc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLAogCWlmICghaGFz X3NoYTEpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JbWVtY3B5KGVwLT5hdXRoX2htYWNzX2xpc3Qt PmhtYWNfaWRzLCAmaG1hY3MtPnNobWFjX2lkZW50c1swXSwKLQkJaG1hY3MtPnNobWFjX251bV9p ZGVudHMgKiBzaXplb2YoX191MTYpKTsKKwlmb3IgKGkgPSAwOyBpIDwgaG1hY3MtPnNobWFjX251 bV9pZGVudHM7IGkrKykKKwkJZXAtPmF1dGhfaG1hY3NfbGlzdC0+aG1hY19pZHNbaV0gPSBodG9u cyhobWFjcy0+c2htYWNfaWRlbnRzW2ldKTsKIAllcC0+YXV0aF9obWFjc19saXN0LT5wYXJhbV9o ZHIubGVuZ3RoID0gaHRvbnMoc2l6ZW9mKHNjdHBfcGFyYW1oZHJfdCkgKwogCQkJCWhtYWNzLT5z aG1hY19udW1faWRlbnRzICogc2l6ZW9mKF9fdTE2KSk7CiAJcmV0dXJuIDA7Ci0tIAoyLjEuMAoK CkZyb20gZDUzZTNkYmRlZGZhYTJlMWUwZmQ4YjM3YTVlMzRiMGRmOGEyOTVjNSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogVGFyaXEgVG91a2FuIDx0YXJpcXRAbWVsbGFub3guY29tPgpE YXRlOiBUaHUsIDEyIE5vdiAyMDE1IDE5OjM1OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxOC80 M10gbmV0L21seDVlOiBBZGRlZCBzZWxmIGxvb3BiYWNrIHByZXZlbnRpb24KClsgVXBzdHJlYW0g Y29tbWl0IDY2MTg5OTYxZTk4NmU1M2FlMzk4MjI4OThmYzJjZTg4ZjQ0YzYxYmIgXQoKUHJldmVu dCBvdXRnb2luZyBtdWx0aWNhc3QgZnJhbWVzIGZyb20gbG9vcGluZyBiYWNrIHRvIHRoZSBSWCBx dWV1ZS4KCkJ5IGludHJvZHVjaW5nIG5ldyBIVyBjYXBhYmlsaXR5IHNlbGZfbGJfZW5fbW9kaWZp YWJsZSwgd2hpY2ggaW5kaWNhdGVzCnRoZSBzdXBwb3J0IHRvIG1vZGlmeSBzZWxmX2xiX2VuIGJp dCBpbiBtb2RpZnlfdGlyIGNvbW1hbmQuCgpXaGVuIHRoaXMgY2FwYWJpbGl0eSBpcyBzZXQgd2Ug Y2FuIHByZXZlbnQgVElScyBmcm9tIHNlbmRpbmcgYmFjawpsb29wYmFjayBtdWx0aWNhc3QgdHJh ZmZpYyB0byB0aGVpciBvd24gUlFzLCBieSAicmVmcmVzaGluZyBUSVJzIiB3aXRoCm1vZGlmeV90 aXIgY29tbWFuZCwgb24gZXZlcnkgdGltZSBuZXcgY2hhbm5lbHMgKFNRcy9SUXMpIGFyZSBjcmVh dGVkIGF0CmRldmljZSBvcGVuLgpUaGlzIGlzIG5lZWRlZCBzaW5jZSBUSVJzIGFyZSBzdGF0aWMg YW5kIG9ubHkgYWxsb2NhdGVkIG9uY2Ugb24gZHJpdmVyCmxvYWQsIGFuZCB0aGUgbG9vcGJhY2sg ZGVjaXNpb24gaXMgdW5kZXIgdGhlaXIgcmVzcG9uc2liaWxpdHkuCgpGaXhlcyBpc3N1ZXMgb2Yg dGhlIGtpbmQ6CiJJUHY2OiBldGgyOiBJUHY2IGR1cGxpY2F0ZSBhZGRyZXNzIGZlODA6OmU2MWQ6 MmRmZjpmZTVjOmYyZTkgZGV0ZWN0ZWQhIgpUaGUgaXNzdWUgaXMgc2VlbiBzaW5jZSB0aGUgSVB2 NiBzb2xpY2l0YXRpb25zIG11bHRpY2FzdCBtZXNzYWdlcyBhcmUKbG9vcGVkYmFjayBhbmQgdGhl IG5ldHdvcmsgc3RhY2sgdGhpbmtzIHRoZXkgYXJlIGNvbWluZyBmcm9tIGFub3RoZXIgaG9zdC4K CkZpeGVzOiA1YzUwMzY4ZjM4MzEgKCJuZXQvbWx4NWU6IExpZ2h0LXdlaWdodCBuZXRkZXYgb3Bl bi9zdG9wIikKU2lnbmVkLW9mZi1ieTogVGFyaXEgVG91a2FuIDx0YXJpcXRAbWVsbGFub3guY29t PgpTaWduZWQtb2ZmLWJ5OiBTYWVlZCBNYWhhbWVlZCA8c2FlZWRtQG1lbGxhbm94LmNvbT4KU2ln bmVkLW9mZi1ieTogT3IgR2VybGl0eiA8b2dlcmxpdHpAbWVsbGFub3guY29tPgpTaWduZWQtb2Zm LWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYyB8IDU2ICsrKysrKysrKysr KysrKysrKysrKystCiBpbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaCAgICAgICAgICAgICAg ICAgICAgIHwgMjQgKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCsp LCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2VuX21haW4uYwppbmRleCA1OTg3NGQ2Li40NDM2MzJkIDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCisrKyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMKQEAgLTEzMzIs NiArMTMzMiw0MiBAQCBzdGF0aWMgaW50IG1seDVlX21vZGlmeV90aXJfbHJvKHN0cnVjdCBtbHg1 ZV9wcml2ICpwcml2LCBpbnQgdHQpCiAJcmV0dXJuIGVycjsKIH0KIAorc3RhdGljIGludCBtbHg1 ZV9yZWZyZXNoX3Rpcl9zZWxmX2xvb3BiYWNrX2VuYWJsZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAq bWRldiwKKwkJCQkJCSAgdTMyIHRpcm4pCit7CisJdm9pZCAqaW47CisJaW50IGlubGVuOworCWlu dCBlcnI7CisKKwlpbmxlbiA9IE1MWDVfU1RfU1pfQllURVMobW9kaWZ5X3Rpcl9pbik7CisJaW4g PSBtbHg1X3Z6YWxsb2MoaW5sZW4pOworCWlmICghaW4pCisJCXJldHVybiAtRU5PTUVNOworCisJ TUxYNV9TRVQobW9kaWZ5X3Rpcl9pbiwgaW4sIGJpdG1hc2suc2VsZl9sYl9lbiwgMSk7CisKKwll cnIgPSBtbHg1X2NvcmVfbW9kaWZ5X3RpcihtZGV2LCB0aXJuLCBpbiwgaW5sZW4pOworCisJa3Zm cmVlKGluKTsKKworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbWx4NWVfcmVmcmVzaF90 aXJzX3NlbGZfbG9vcGJhY2tfZW5hYmxlKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQoreworCWlu dCBlcnI7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTUxYNUVfTlVNX1RUOyBpKyspIHsK KwkJZXJyID0gbWx4NWVfcmVmcmVzaF90aXJfc2VsZl9sb29wYmFja19lbmFibGUocHJpdi0+bWRl diwKKwkJCQkJCQkgICAgIHByaXYtPnRpcm5baV0pOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVy cjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBtbHg1ZV9zZXRfZGV2X3BvcnRf bXR1KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpCiB7CiAJc3RydWN0IG1seDVlX3ByaXYgKnBy aXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwpAQCAtMTM2NywxMyArMTQwMywyMCBAQCBpbnQgbWx4 NWVfb3Blbl9sb2NrZWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKIAogCWVyciA9IG1seDVl X3NldF9kZXZfcG9ydF9tdHUobmV0ZGV2KTsKIAlpZiAoZXJyKQotCQlyZXR1cm4gZXJyOworCQln b3RvIGVycl9jbGVhcl9zdGF0ZV9vcGVuZWRfZmxhZzsKIAogCWVyciA9IG1seDVlX29wZW5fY2hh bm5lbHMocHJpdik7CiAJaWYgKGVycikgewogCQluZXRkZXZfZXJyKG5ldGRldiwgIiVzOiBtbHg1 ZV9vcGVuX2NoYW5uZWxzIGZhaWxlZCwgJWRcbiIsCiAJCQkgICBfX2Z1bmNfXywgZXJyKTsKLQkJ cmV0dXJuIGVycjsKKwkJZ290byBlcnJfY2xlYXJfc3RhdGVfb3BlbmVkX2ZsYWc7CisJfQorCisJ ZXJyID0gbWx4NWVfcmVmcmVzaF90aXJzX3NlbGZfbG9vcGJhY2tfZW5hYmxlKHByaXYpOworCWlm IChlcnIpIHsKKwkJbmV0ZGV2X2VycihuZXRkZXYsICIlczogbWx4NWVfcmVmcmVzaF90aXJzX3Nl bGZfbG9vcGJhY2tfZW5hYmxlIGZhaWxlZCwgJWRcbiIsCisJCQkgICBfX2Z1bmNfXywgZXJyKTsK KwkJZ290byBlcnJfY2xvc2VfY2hhbm5lbHM7CiAJfQogCiAJbWx4NWVfdXBkYXRlX2NhcnJpZXIo cHJpdik7CkBAIC0xMzgyLDYgKzE0MjUsMTIgQEAgaW50IG1seDVlX29wZW5fbG9ja2VkKHN0cnVj dCBuZXRfZGV2aWNlICpuZXRkZXYpCiAJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZwcml2LT51cGRh dGVfc3RhdHNfd29yaywgMCk7CiAKIAlyZXR1cm4gMDsKKworZXJyX2Nsb3NlX2NoYW5uZWxzOgor CW1seDVlX2Nsb3NlX2NoYW5uZWxzKHByaXYpOworZXJyX2NsZWFyX3N0YXRlX29wZW5lZF9mbGFn OgorCWNsZWFyX2JpdChNTFg1RV9TVEFURV9PUEVORUQsICZwcml2LT5zdGF0ZSk7CisJcmV0dXJu IGVycjsKIH0KIAogc3RhdGljIGludCBtbHg1ZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRk ZXYpCkBAIC0xODk5LDYgKzE5NDgsOSBAQCBzdGF0aWMgaW50IG1seDVlX2NoZWNrX3JlcXVpcmVk X2hjYV9jYXAoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYpCiAJCQkgICAgICAgIk5vdCBjcmVh dGluZyBuZXQgZGV2aWNlLCBzb21lIHJlcXVpcmVkIGRldmljZSBjYXBhYmlsaXRpZXMgYXJlIG1p c3NpbmdcbiIpOwogCQlyZXR1cm4gLUVOT1RTVVBQOwogCX0KKwlpZiAoIU1MWDVfQ0FQX0VUSCht ZGV2LCBzZWxmX2xiX2VuX21vZGlmaWFibGUpKQorCQltbHg1X2NvcmVfd2FybihtZGV2LCAiU2Vs ZiBsb29wIGJhY2sgcHJldmVudGlvbiBpcyBub3Qgc3VwcG9ydGVkXG4iKTsKKwogCXJldHVybiAw OwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmMuaCBiL2luY2x1 ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oCmluZGV4IGRkMjA5NzQuLjE1NjUzMjQgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvbWx4NS9tbHg1X2lmYy5oCisrKyBiL2luY2x1ZGUvbGludXgvbWx4 NS9tbHg1X2lmYy5oCkBAIC00NTMsMjYgKzQ1MywyOCBAQCBzdHJ1Y3QgbWx4NV9pZmNfcGVyX3By b3RvY29sX25ldHdvcmtpbmdfb2ZmbG9hZF9jYXBzX2JpdHMgewogCXU4ICAgICAgICAgbHJvX2Nh cFsweDFdOwogCXU4ICAgICAgICAgbHJvX3BzaF9mbGFnWzB4MV07CiAJdTggICAgICAgICBscm9f dGltZV9zdGFtcFsweDFdOwotCXU4ICAgICAgICAgcmVzZXJ2ZWRfMFsweDZdOworCXU4ICAgICAg ICAgcmVzZXJ2ZWRfMFsweDNdOworCXU4ICAgICAgICAgc2VsZl9sYl9lbl9tb2RpZmlhYmxlWzB4 MV07CisJdTggICAgICAgICByZXNlcnZlZF8xWzB4Ml07CiAJdTggICAgICAgICBtYXhfbHNvX2Nh cFsweDVdOwotCXU4ICAgICAgICAgcmVzZXJ2ZWRfMVsweDRdOworCXU4ICAgICAgICAgcmVzZXJ2 ZWRfMlsweDRdOwogCXU4ICAgICAgICAgcnNzX2luZF90YmxfY2FwWzB4NF07Ci0JdTggICAgICAg ICByZXNlcnZlZF8yWzB4M107CisJdTggICAgICAgICByZXNlcnZlZF8zWzB4M107CiAJdTggICAg ICAgICB0dW5uZWxfbHNvX2NvbnN0X291dF9pcF9pZFsweDFdOwotCXU4ICAgICAgICAgcmVzZXJ2 ZWRfM1sweDJdOworCXU4ICAgICAgICAgcmVzZXJ2ZWRfNFsweDJdOwogCXU4ICAgICAgICAgdHVu bmVsX3N0YXRsZXNzX2dyZVsweDFdOwogCXU4ICAgICAgICAgdHVubmVsX3N0YXRlbGVzc192eGxh blsweDFdOwogCi0JdTggICAgICAgICByZXNlcnZlZF80WzB4MjBdOworCXU4ICAgICAgICAgcmVz ZXJ2ZWRfNVsweDIwXTsKIAotCXU4ICAgICAgICAgcmVzZXJ2ZWRfNVsweDEwXTsKKwl1OCAgICAg ICAgIHJlc2VydmVkXzZbMHgxMF07CiAJdTggICAgICAgICBscm9fbWluX21zc19zaXplWzB4MTBd OwogCi0JdTggICAgICAgICByZXNlcnZlZF82WzB4MTIwXTsKKwl1OCAgICAgICAgIHJlc2VydmVk XzdbMHgxMjBdOwogCiAJdTggICAgICAgICBscm9fdGltZXJfc3VwcG9ydGVkX3BlcmlvZHNbNF1b MHgyMF07CiAKLQl1OCAgICAgICAgIHJlc2VydmVkXzdbMHg2MDBdOworCXU4ICAgICAgICAgcmVz ZXJ2ZWRfOFsweDYwMF07CiB9OwogCiBzdHJ1Y3QgbWx4NV9pZmNfcm9jZV9jYXBfYml0cyB7CkBA IC00MDUxLDkgKzQwNTMsMTEgQEAgc3RydWN0IG1seDVfaWZjX21vZGlmeV90aXNfaW5fYml0cyB7 CiB9OwogCiBzdHJ1Y3QgbWx4NV9pZmNfbW9kaWZ5X3Rpcl9iaXRtYXNrX2JpdHMgewotCXU4CSAg IHJlc2VydmVkWzB4MjBdOworCXU4CSAgIHJlc2VydmVkXzBbMHgyMF07CiAKLQl1OCAgICAgICAg IHJlc2VydmVkMVsweDFmXTsKKwl1OCAgICAgICAgIHJlc2VydmVkXzFbMHgxYl07CisJdTggICAg ICAgICBzZWxmX2xiX2VuWzB4MV07CisJdTggICAgICAgICByZXNlcnZlZF8yWzB4M107CiAJdTgg ICAgICAgICBscm9bMHgxXTsKIH07CiAKLS0gCjIuMS4wCgoKRnJvbSA3NTJmODMzZjE4YmM1YWYw ZDBmNTE3MmNiZWI1NTRjZjliODM2MzExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBF cmFuIEJlbiBFbGlzaGEgPGVyYW5iZUBtZWxsYW5veC5jb20+CkRhdGU6IFRodSwgMTIgTm92IDIw MTUgMTk6MzU6MjkgKzAyMDAKU3ViamVjdDogW1BBVENIIDE5LzQzXSBuZXQvbWx4NF9jb3JlOiBG aXggc2xlZXBpbmcgd2hpbGUgaG9sZGluZyBzcGlubG9jayBhdAogcmVtX3NsYXZlX2NvdW50ZXJz CgpbIFVwc3RyZWFtIGNvbW1pdCBmNWFkYmZlZTcyMjgyYmIxZjQ1NmQ1MmIwNGFkYWNkNGZlNmFj NTAyIF0KCldoZW4gY2xlYW5pbmcgc2xhdmUncyBjb3VudGVyIHJlc291cmNlcywgd2UgaG9sZCBh IHNwaW5sb2NrIHRoYXQKcHJvdGVjdHMgdGhlIHNsYXZlJ3MgY291bnRlcnMgbGlzdC4gQXMgcGFy dCBvZiB0aGUgY2xlYW4sIHdlIGNhbGwKX19tbHg0X2NsZWFyX2lmX3N0YXQgd2hpY2ggY2FsbHMg bWx4NF9hbGxvY19jbWRfbWFpbGJveCB3aGljaCBpcyBhCnNsZWVwYWJsZSBmdW5jdGlvbi4KCklu IG9yZGVyIHRvIGZpeCB0aGlzIGlzc3VlLCBob2xkIHRoZSBzcGlubG9jaywgYW5kIGNvcHkgYWxs IGNvdW50ZXIKaW5kaWNlcyBpbnRvIGEgdGVtcG9yYXJ5IGFycmF5LCBhbmQgcmVsZWFzZSB0aGUg c3BpbmxvY2suIEFmdGVyd2FyZHMsCml0ZXJhdGUgb3ZlciB0aGlzIGFycmF5IGFuZCBmcmVlIGV2 ZXJ5IGNvdW50ZXIuIFJlcGVhdCB0aGlzIHNjZW5hcmlvCnVudGlsIHRoZSBvcmlnaW5hbCBsaXN0 IGlzIGVtcHR5IChhIG5ldyBjb3VudGVyIG1pZ2h0IGhhdmUgYmVlbiBhZGRlZAp3aGlsZSByZWxl YXNpbmcgdGhlIGNvdW50ZXJzIGZyb20gdGhlIHRlbXBvcmFyeSBhcnJheSkuCgpGaXhlczogYjcy Y2E3ZTk2YWNmICgibmV0L21seDRfY29yZTogUmVzZXQgY291bnRlcnMgZGF0YSB3aGVuIGZyZWVk IikKUmVwb3J0ZWQtYnk6IE1vbmkgU2hvdWEgPG1vbmlzQG1lbGxhbm94LmNvbT4KVGVzdGVkLWJ5 OiBNb25pIFNob3VhIDxtb25pc0BtZWxsYW5veC5jb20+ClNpZ25lZC1vZmYtYnk6IEphY2sgTW9y Z2Vuc3RlaW4gPGphY2ttQGRldi5tZWxsYW5veC5jby5pbD4KU2lnbmVkLW9mZi1ieTogRXJhbiBC ZW4gRWxpc2hhIDxlcmFuYmVAbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBPciBHZXJsaXR6 IDxvZ2VybGl0ekBtZWxsYW5veC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiAuLi4vbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQv cmVzb3VyY2VfdHJhY2tlci5jICB8IDM5ICsrKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L3Jlc291cmNlX3RyYWNrZXIuYyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvcmVzb3VyY2VfdHJhY2tlci5jCmluZGV4 IDczMTQyM2MuLjhiZWFkOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDQvcmVzb3VyY2VfdHJhY2tlci5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDQvcmVzb3VyY2VfdHJhY2tlci5jCkBAIC00OTM0LDI2ICs0OTM0LDQxIEBAIHN0 YXRpYyB2b2lkIHJlbV9zbGF2ZV9jb3VudGVycyhzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50IHNs YXZlKQogCXN0cnVjdCByZXNfY291bnRlciAqY291bnRlcjsKIAlzdHJ1Y3QgcmVzX2NvdW50ZXIg KnRtcDsKIAlpbnQgZXJyOwotCWludCBpbmRleDsKKwlpbnQgKmNvdW50ZXJzX2FyciA9IE5VTEw7 CisJaW50IGksIGo7CiAKIAllcnIgPSBtb3ZlX2FsbF9idXN5KGRldiwgc2xhdmUsIFJFU19DT1VO VEVSKTsKIAlpZiAoZXJyKQogCQltbHg0X3dhcm4oZGV2LCAicmVtX3NsYXZlX2NvdW50ZXJzOiBD b3VsZCBub3QgbW92ZSBhbGwgY291bnRlcnMgLSB0b28gYnVzeSBmb3Igc2xhdmUgJWRcbiIsCiAJ CQkgIHNsYXZlKTsKIAotCXNwaW5fbG9ja19pcnEobWx4NF90bG9jayhkZXYpKTsKLQlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUoY291bnRlciwgdG1wLCBjb3VudGVyX2xpc3QsIGNvbS5saXN0KSB7 Ci0JCWlmIChjb3VudGVyLT5jb20ub3duZXIgPT0gc2xhdmUpIHsKLQkJCWluZGV4ID0gY291bnRl ci0+Y29tLnJlc19pZDsKLQkJCXJiX2VyYXNlKCZjb3VudGVyLT5jb20ubm9kZSwKLQkJCQkgJnRy YWNrZXItPnJlc190cmVlW1JFU19DT1VOVEVSXSk7Ci0JCQlsaXN0X2RlbCgmY291bnRlci0+Y29t Lmxpc3QpOwotCQkJa2ZyZWUoY291bnRlcik7Ci0JCQlfX21seDRfY291bnRlcl9mcmVlKGRldiwg aW5kZXgpOworCWNvdW50ZXJzX2FyciA9IGttYWxsb2NfYXJyYXkoZGV2LT5jYXBzLm1heF9jb3Vu dGVycywKKwkJCQkgICAgIHNpemVvZigqY291bnRlcnNfYXJyKSwgR0ZQX0tFUk5FTCk7CisJaWYg KCFjb3VudGVyc19hcnIpCisJCXJldHVybjsKKworCWRvIHsKKwkJaSA9IDA7CisJCWogPSAwOwor CQlzcGluX2xvY2tfaXJxKG1seDRfdGxvY2soZGV2KSk7CisJCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShjb3VudGVyLCB0bXAsIGNvdW50ZXJfbGlzdCwgY29tLmxpc3QpIHsKKwkJCWlmIChjb3Vu dGVyLT5jb20ub3duZXIgPT0gc2xhdmUpIHsKKwkJCQljb3VudGVyc19hcnJbaSsrXSA9IGNvdW50 ZXItPmNvbS5yZXNfaWQ7CisJCQkJcmJfZXJhc2UoJmNvdW50ZXItPmNvbS5ub2RlLAorCQkJCQkg JnRyYWNrZXItPnJlc190cmVlW1JFU19DT1VOVEVSXSk7CisJCQkJbGlzdF9kZWwoJmNvdW50ZXIt PmNvbS5saXN0KTsKKwkJCQlrZnJlZShjb3VudGVyKTsKKwkJCX0KKwkJfQorCQlzcGluX3VubG9j a19pcnEobWx4NF90bG9jayhkZXYpKTsKKworCQl3aGlsZSAoaiA8IGkpIHsKKwkJCV9fbWx4NF9j b3VudGVyX2ZyZWUoZGV2LCBjb3VudGVyc19hcnJbaisrXSk7CiAJCQltbHg0X3JlbGVhc2VfcmVz b3VyY2UoZGV2LCBzbGF2ZSwgUkVTX0NPVU5URVIsIDEsIDApOwogCQl9Ci0JfQotCXNwaW5fdW5s b2NrX2lycShtbHg0X3Rsb2NrKGRldikpOworCX0gd2hpbGUgKGkpOworCisJa2ZyZWUoY291bnRl cnNfYXJyKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtX3NsYXZlX3hyY2RucyhzdHJ1Y3QgbWx4NF9k ZXYgKmRldiwgaW50IHNsYXZlKQotLSAKMi4xLjAKCgpGcm9tIDMwZGUzODYxZDAxZGU3MDU1MWM0 MTUyOWE5OTMzY2MyZDMyMjFjN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ICJKYXNv biBBLiBEb25lbmZlbGQiIDxKYXNvbkB6eDJjNC5jb20+CkRhdGU6IFRodSwgMTIgTm92IDIwMTUg MTc6MzU6NTggKzAxMDAKU3ViamVjdDogW1BBVENIIDIwLzQzXSBpcF90dW5uZWw6IGRpc2FibGUg cHJlZW1wdGlvbiB3aGVuIHVwZGF0aW5nIHBlci1jcHUKIHRzdGF0cwoKWyBVcHN0cmVhbSBjb21t aXQgYjRmZTg1ZjljOTE0NmY2MDQ1N2U5NTEyZmI2MDU1ZTY5ZTZhN2E2NSBdCgpEcml2ZXJzIGxp a2UgdnhsYW4gdXNlIHRoZSByZWNlbnRseSBpbnRyb2R1Y2VkCnVkcF90dW5uZWxfeG1pdF9za2Iv dWRwX3R1bm5lbDZfeG1pdF9za2IgQVBJcy4gdWRwX3R1bm5lbDZfeG1pdF9za2IKbWFrZXMgdXNl IG9mIGlwNnR1bm5lbF94bWl0LCBhbmQgaXA2dHVubmVsX3htaXQsIGFmdGVyIHNlbmRpbmcgdGhl CnBhY2tldCwgdXBkYXRlcyB0aGUgc3RydWN0IHN0YXRzIHVzaW5nIHRoZSB1c3VhbAp1NjRfc3Rh dHNfdXBkYXRlX2JlZ2luL2VuZCBjYWxscyBvbiB0aGlzX2NwdV9wdHIoZGV2LT50c3RhdHMpLgp1 ZHBfdHVubmVsX3htaXRfc2tiIG1ha2VzIHVzZSBvZiBpcHR1bm5lbF94bWl0LCB3aGljaCBkb2Vz bid0IHRvdWNoCnRzdGF0cywgc28gZHJpdmVycyBsaWtlIHZ4bGFuLCBpbW1lZGlhdGVseSBhZnRl ciwgY2FsbAppcHR1bm5lbF94bWl0X3N0YXRzLCB3aGljaCBkb2VzIHRoZSBzYW1lIHRoaW5nIC0g Y2FsbHMKdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbi9lbmQgb24gdGhpc19jcHVfcHRyKGRldi0+dHN0 YXRzKS4KCldoaWxlIHZ4bGFuIGlzIHByb2JhYmx5IGZpbmUgKEkgZG9uJ3Qga25vdz8pLCBjYWxs aW5nIGEgc2ltaWxhciBmdW5jdGlvbgpmcm9tLCBzYXksIGFuIHVuYm91bmQgd29ya3F1ZXVlLCBv biBhIGZ1bGx5IHByZWVtcHRhYmxlIGtlcm5lbCBjYXVzZXMKcmVhbCBpc3N1ZXM6CgpbICAxODgu NDM0NTM3XSBCVUc6IHVzaW5nIHNtcF9wcm9jZXNzb3JfaWQoKSBpbiBwcmVlbXB0aWJsZSBbMDAw MDAwMDBdIGNvZGU6IGt3b3JrZXIvdTg6MC82ClsgIDE4OC40MzU1NzldIGNhbGxlciBpcyBkZWJ1 Z19zbXBfcHJvY2Vzc29yX2lkKzB4MTcvMHgyMApbICAxODguNDM1NTgzXSBDUFU6IDAgUElEOiA2 IENvbW06IGt3b3JrZXIvdTg6MCBOb3QgdGFpbnRlZCA0LjIuNiAjMgpbICAxODguNDM1NjA3XSBD YWxsIFRyYWNlOgpbICAxODguNDM1NjExXSAgWzxmZmZmZmZmZjgyMzRlOTM2Pl0gZHVtcF9zdGFj aysweDRmLzB4N2IKWyAgMTg4LjQzNTYxNV0gIFs8ZmZmZmZmZmY4MTkxNWYzZD5dIGNoZWNrX3By ZWVtcHRpb25fZGlzYWJsZWQrMHgxOWQvMHgxYzAKWyAgMTg4LjQzNTYxOV0gIFs8ZmZmZmZmZmY4 MTkxNWY3Nz5dIGRlYnVnX3NtcF9wcm9jZXNzb3JfaWQrMHgxNy8weDIwCgpUaGUgc29sdXRpb24g d291bGQgYmUgdG8gcHJvdGVjdCB0aGUgd2hvbGUKdGhpc19jcHVfcHRyKGRldi0+dHN0YXRzKS91 NjRfc3RhdHNfdXBkYXRlX2JlZ2luL2VuZCBibG9ja3Mgd2l0aApkaXNhYmxpbmcgcHJlZW1wdGlv biBhbmQgdGhlbiByZWVuYWJsaW5nIGl0LgoKU2lnbmVkLW9mZi1ieTogSmFzb24gQS4gRG9uZW5m ZWxkIDxKYXNvbkB6eDJjNC5jb20+CkFja2VkLWJ5OiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFu bmVzQHN0cmVzc2luZHVrdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9pcDZfdHVubmVsLmggfCAzICsr LQogaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oIHwgMyArKy0KIDIgZmlsZXMgY2hhbmdlZCwgNCBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lw Nl90dW5uZWwuaCBiL2luY2x1ZGUvbmV0L2lwNl90dW5uZWwuaAppbmRleCBmYTkxNWZhLi5kNDlh OGY4IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcDZfdHVubmVsLmgKKysrIGIvaW5jbHVkZS9u ZXQvaXA2X3R1bm5lbC5oCkBAIC05MCwxMSArOTAsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGlw NnR1bm5lbF94bWl0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAllcnIg PSBpcDZfbG9jYWxfb3V0X3NrKHNrLCBza2IpOwogCiAJaWYgKG5ldF94bWl0X2V2YWwoZXJyKSA9 PSAwKSB7Ci0JCXN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHMgPSB0aGlzX2NwdV9wdHIo ZGV2LT50c3RhdHMpOworCQlzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0cyAqdHN0YXRzID0gZ2V0X2Nw dV9wdHIoZGV2LT50c3RhdHMpOwogCQl1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKCZ0c3RhdHMtPnN5 bmNwKTsKIAkJdHN0YXRzLT50eF9ieXRlcyArPSBwa3RfbGVuOwogCQl0c3RhdHMtPnR4X3BhY2tl dHMrKzsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9lbmQoJnRzdGF0cy0+c3luY3ApOworCQlwdXRfY3B1 X3B0cih0c3RhdHMpOwogCX0gZWxzZSB7CiAJCXN0YXRzLT50eF9lcnJvcnMrKzsKIAkJc3RhdHMt PnR4X2Fib3J0ZWRfZXJyb3JzKys7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF90dW5uZWxz LmggYi9pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgKaW5kZXggZjZkYWZlYy4uNjJhNzUwYSAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oCisrKyBiL2luY2x1ZGUvbmV0L2lwX3R1 bm5lbHMuaApAQCAtMjg3LDEyICsyODcsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwdHVubmVs X3htaXRfc3RhdHMoaW50IGVyciwKIAkJCQkgICAgICAgc3RydWN0IHBjcHVfc3dfbmV0c3RhdHMg X19wZXJjcHUgKnN0YXRzKQogewogCWlmIChlcnIgPiAwKSB7Ci0JCXN0cnVjdCBwY3B1X3N3X25l dHN0YXRzICp0c3RhdHMgPSB0aGlzX2NwdV9wdHIoc3RhdHMpOworCQlzdHJ1Y3QgcGNwdV9zd19u ZXRzdGF0cyAqdHN0YXRzID0gZ2V0X2NwdV9wdHIoc3RhdHMpOwogCiAJCXU2NF9zdGF0c191cGRh dGVfYmVnaW4oJnRzdGF0cy0+c3luY3ApOwogCQl0c3RhdHMtPnR4X2J5dGVzICs9IGVycjsKIAkJ dHN0YXRzLT50eF9wYWNrZXRzKys7CiAJCXU2NF9zdGF0c191cGRhdGVfZW5kKCZ0c3RhdHMtPnN5 bmNwKTsKKwkJcHV0X2NwdV9wdHIodHN0YXRzKTsKIAl9IGVsc2UgaWYgKGVyciA8IDApIHsKIAkJ ZXJyX3N0YXRzLT50eF9lcnJvcnMrKzsKIAkJZXJyX3N0YXRzLT50eF9hYm9ydGVkX2Vycm9ycysr OwotLSAKMi4xLjAKCgpGcm9tIGI1MzJhNjMzNzQwYTQ2ODA2YTUzZDYxODYzNGZmMTE2OWM1ZTlh NGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IERyYWdvcyBUYXR1bGVhIDxkcmFnb3NA ZW5kb2NvZGUuY29tPgpEYXRlOiBNb24sIDE2IE5vdiAyMDE1IDEwOjUyOjQ4ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAyMS80M10gbmV0OiBzd2l0Y2hkZXY6IGZpeCByZXR1cm4gY29kZSBvZiBmZGJf ZHVtcCBzdHViCgpbIFVwc3RyZWFtIGNvbW1pdCAyNGNiNzA1NWEzMDY2NjM0YTBmM2ZhMGNkNmE0 NzgwNjUyOTA1ZDM1IF0KCnJ0bmxfZmRiX2R1bXAgYWx3YXlzIGV4cGVjdHMgYW4gaW5kZXggdG8g YmUgcmV0dXJuZWQgYnkgdGhlIG5kb19mZGJfZHVtcCBvcCwKYnV0IHdoZW4gQ09ORklHX05FVF9T V0lUQ0hERVYgaXMgb2ZmLCBpdCByZXR1cm5zIGFuIGVycm9yLgoKRml4IHRoYXQgYnkgcmV0dXJu aW5nIHRoZSBnaXZlbiB1bm1vZGlmaWVkIGlkeC4KCkEgc2ltaWxhciBmaXggd2FzIDA4OTBjZjZj YjZhYiAoInN3aXRjaGRldjogZml4IHJldHVybiB2YWx1ZSBvZgpzd2l0Y2hkZXZfcG9ydF9mZGJf ZHVtcCBpbiBjYXNlIG9mIGVycm9yIikgYnV0IGZvciB0aGUgQ09ORklHX05FVF9TV0lUQ0hERVY9 eQpjYXNlLgoKRml4ZXM6IDQ1ZDQxMjJjYTdjZCAoInN3aXRjaGRldjogYWRkIHN1cHBvcnQgZm9y IGZkYiBhZGQvZGVsL2R1bXAgdmlhIHN3aXRjaGRldl9wb3J0X29iaiBvcHMuIikKU2lnbmVkLW9m Zi1ieTogRHJhZ29zIFRhdHVsZWEgPGRyYWdvc0BlbmRvY29kZS5jb20+CkFja2VkLWJ5OiBKaXJp IFBpcmtvIDxqaXJpQG1lbGxhbm94LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVy IDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1ZGUvbmV0L3N3aXRjaGRldi5oIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9uZXQvc3dpdGNoZGV2LmggYi9pbmNsdWRlL25ldC9zd2l0Y2hkZXYuaApp bmRleCAzMTliYWFiLi43MzFjNDBlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9zd2l0Y2hkZXYu aAorKysgYi9pbmNsdWRlL25ldC9zd2l0Y2hkZXYuaApAQCAtMjcyLDcgKzI3Miw3IEBAIHN0YXRp YyBpbmxpbmUgaW50IHN3aXRjaGRldl9wb3J0X2ZkYl9kdW1wKHN0cnVjdCBza19idWZmICpza2Is CiAJCQkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmZpbHRlcl9kZXYsCiAJCQkJCSAgaW50IGlkeCkK IHsKLQlyZXR1cm4gLUVPUE5PVFNVUFA7CisgICAgICAgcmV0dXJuIGlkeDsKIH0KIAogc3RhdGlj IGlubGluZSB2b2lkIHN3aXRjaGRldl9wb3J0X2Z3ZF9tYXJrX3NldChzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2LAotLSAKMi4xLjAKCgpGcm9tIDA2NDE2NjM0ZTViNTdmMzM4NTRhNTkwNWJkZjg3ZGRj NjhmOTlmZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFBhdmVsIEZlZGluIDxwLmZl ZGluQHNhbXN1bmcuY29tPgpEYXRlOiBNb24sIDE2IE5vdiAyMDE1IDE3OjUxOjM0ICswMzAwClN1 YmplY3Q6IFtQQVRDSCAyMi80M10gbmV0OiB0aHVuZGVyOiBDaGVjayBmb3IgZHJpdmVyIGRhdGEg aW4gbmljdmZfcmVtb3ZlKCkKClsgVXBzdHJlYW0gY29tbWl0IDc3NTAxMzBkOTNkZWNmZjA2MTIw ZGYwZDhlYTAyNGZmOGEwMzhhMjEgXQoKSW4gc29tZSBjYXNlcyB0aGUgY3Jhc2ggaXMgY2F1c2Vk IGJ5IG5pY3ZmX3JlbW92ZSgpIGJlaW5nIGNhbGxlZCBmcm9tCm91dHNpZGUuIEZvciBleGFtcGxl LCBpZiB3ZSB0cnkgdG8gZmVlZCB0aGUgZGV2aWNlIHRvIHZmaW8gYWZ0ZXIgdGhlCnByb2JlIGhh cyBmYWlsZWQgZm9yIHNvbWUgcmVhc29uLiBTbywgbW92ZSB0aGUgY2hlY2sgdG8gYmV0dGVyIHBs YWNlLgoKU2lnbmVkLW9mZi1ieTogUGF2ZWwgRmVkaW4gPHAuZmVkaW5Ac2Ftc3VuZy5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBk cml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWN2Zl9tYWluLmMgfCAxMCArKysr KysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY3ZmX21h aW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY3ZmX21haW4uYwpp bmRleCBhOTM3NzcyLi43ZjcwOWNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9j YXZpdW0vdGh1bmRlci9uaWN2Zl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2 aXVtL3RodW5kZXIvbmljdmZfbWFpbi5jCkBAIC0xNTgzLDggKzE1ODMsMTQgQEAgZXJyX2Rpc2Fi bGVfZGV2aWNlOgogc3RhdGljIHZvaWQgbmljdmZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2 KQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7 Ci0Jc3RydWN0IG5pY3ZmICpuaWMgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwotCXN0cnVjdCBuZXRf ZGV2aWNlICpwbmV0ZGV2ID0gbmljLT5wbmljdmYtPm5ldGRldjsKKwlzdHJ1Y3QgbmljdmYgKm5p YzsKKwlzdHJ1Y3QgbmV0X2RldmljZSAqcG5ldGRldjsKKworCWlmICghbmV0ZGV2KQorCQlyZXR1 cm47CisKKwluaWMgPSBuZXRkZXZfcHJpdihuZXRkZXYpOworCXBuZXRkZXYgPSBuaWMtPnBuaWN2 Zi0+bmV0ZGV2OwogCiAJLyogQ2hlY2sgaWYgdGhpcyBRc2V0IGlzIGFzc2lnbmVkIHRvIGRpZmZl cmVudCBWRi4KIAkgKiBJZiB5ZXMsIGNsZWFuIHByaW1hcnkgYW5kIGFsbCBzZWNvbmRhcnkgUXNl dHMuCi0tIAoyLjEuMAoKCkZyb20gZmJhNTE3NGFmODJjNzgxYjE1NGFhNWZmY2MwZmFkMjIyOTc2 N2VjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTmVpbCBIb3JtYW4gPG5ob3JtYW5A dHV4ZHJpdmVyLmNvbT4KRGF0ZTogTW9uLCAxNiBOb3YgMjAxNSAxMzowOToxMCAtMDUwMApTdWJq ZWN0OiBbUEFUQ0ggMjMvNDNdIHNubXA6IFJlbW92ZSBkdXBsaWNhdGUgT1VUTUNBU1Qgc3RhdCBp bmNyZW1lbnQKClsgVXBzdHJlYW0gY29tbWl0IDQxMDMzZjAyOWUzOTNhNjRlODE5NjZjYmUzNGQ2 NmM2Y2Y4YTJlN2UgXQoKdGhlIE9VVE1DQVNUIHN0YXQgaXMgZG91YmxlIGluY3JlbWVudGVkLCBn ZXR0aW5nIGJ1bXBlZCBvbmNlIGluIHRoZSBtY2FzdCBjb2RlCml0c2VsZiwgYW5kIGFnYWluIGlu IHRoZSBjb21tb24gaXAgb3V0cHV0IHBhdGguICBSZW1vdmUgdGhlIG1jYXN0IGJ1bXAsIGFzIGl0 cwpub3QgbmVlZGVkCgpWYWxpZGF0ZWQgYnkgdGhlIHJlcG9ydGVyLCB3aXRoIGdvb2QgcmVzdWx0 cwoKU2lnbmVkLW9mZi1ieTogTmVpbCBIb3JtYW4gPG5ob3JtYW5AdHV4ZHJpdmVyLmNvbT4KUmVw b3J0ZWQtYnk6IENsYXVzIEplbnNlbiA8Y2xhdXMuamVuc2VuQG1pY3Jvc2VtaS5jb20+CkNDOiBD bGF1cyBKZW5zZW4gPGNsYXVzLmplbnNlbkBtaWNyb3NlbWkuY29tPgpDQzogRGF2aWQgTWlsbGVy IDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjYvbWNhc3QuYyB8IDIgLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L21jYXN0LmMgYi9u ZXQvaXB2Ni9tY2FzdC5jCmluZGV4IDA4M2IyOTIuLjQxZTNiNWUgMTAwNjQ0Ci0tLSBhL25ldC9p cHY2L21jYXN0LmMKKysrIGIvbmV0L2lwdjYvbWNhc3QuYwpAQCAtMTY1MSw3ICsxNjUxLDYgQEAg b3V0OgogCWlmICghZXJyKSB7CiAJCUlDTVA2TVNHT1VUX0lOQ19TVEFUUyhuZXQsIGlkZXYsIElD TVBWNl9NTEQyX1JFUE9SVCk7CiAJCUlDTVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElDTVA2X01J Ql9PVVRNU0dTKTsKLQkJSVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09V VE1DQVNULCBwYXlsb2FkX2xlbik7CiAJfSBlbHNlIHsKIAkJSVA2X0lOQ19TVEFUUyhuZXQsIGlk ZXYsIElQU1RBVFNfTUlCX09VVERJU0NBUkRTKTsKIAl9CkBAIC0yMDE0LDcgKzIwMTMsNiBAQCBv dXQ6CiAJaWYgKCFlcnIpIHsKIAkJSUNNUDZNU0dPVVRfSU5DX1NUQVRTKG5ldCwgaWRldiwgdHlw ZSk7CiAJCUlDTVA2X0lOQ19TVEFUUyhuZXQsIGlkZXYsIElDTVA2X01JQl9PVVRNU0dTKTsKLQkJ SVA2X1VQRF9QT19TVEFUUyhuZXQsIGlkZXYsIElQU1RBVFNfTUlCX09VVE1DQVNULCBmdWxsX2xl bik7CiAJfSBlbHNlCiAJCUlQNl9JTkNfU1RBVFMobmV0LCBpZGV2LCBJUFNUQVRTX01JQl9PVVRE SVNDQVJEUyk7CiAKLS0gCjIuMS4wCgoKRnJvbSA2NzcyOThmZDUzNGUxNjI3NGM4ODU5ZTc2NThl NTc4NjRiZGRiMmE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYW9sbyBBYmVuaSA8 cGFiZW5pQHJlZGhhdC5jb20+CkRhdGU6IFdlZCwgMTggTm92IDIwMTUgMTY6NDA6MTkgKzAxMDAK U3ViamVjdDogW1BBVENIIDI0LzQzXSBuZXQvaXA2X3R1bm5lbDogZml4IGRzdCBsZWFrCgpbIFVw c3RyZWFtIGNvbW1pdCAyMDZiNDk1MDBkZjU1OGRiYzE1ZDg4MzZiMDlmNjM5N2VjNWVkOGJiIF0K CnRoZSBjb21taXQgY2RmMzQ2NGU2YzZiICgiaXB2NjogRml4IGRzdF9lbnRyeSByZWZjbnQgYnVn cyBpbiBpcDZfdHVubmVsIikKaW50cm9kdWNlZCBwZXJjcHUgc3RvcmFnZSBmb3IgaXA2X3R1bm5l bCBkc3QgY2FjaGUsIGJ1dCB3aGlsZSBjbGVhcmluZwpzdWNoIGNhY2hlIGl0IHVzZWQgcmF3X2Nw dV9wdHIgdG8gd2FsayB0aGUgcGVyIGNwdSBlbnRyaWVzLCBzbyBjYWNoZWQKZHN0IG9uIG5vbiBj dXJyZW50IGNwdSBhcmUgbm90IGFjdHVhbGx5IHJlc2V0LgoKVGhpcyBwYXRjaCByZXBsYWNlcyBy YXdfY3B1X3B0ciB3aXRoIHBlcl9jcHVfcHRyLCBwcm9wZXJseSBjbGVhbmluZwpzdWNoIHN0b3Jh Z2UuCgpGaXhlczogY2RmMzQ2NGU2YzZiICgiaXB2NjogRml4IGRzdF9lbnRyeSByZWZjbnQgYnVn cyBpbiBpcDZfdHVubmVsIikKU2lnbmVkLW9mZi1ieTogUGFvbG8gQWJlbmkgPHBhYmVuaUByZWRo YXQuY29tPgpBY2tlZC1ieTogTWFydGluIEthRmFpIExhdSA8a2FmYWlAZmIuY29tPgpTaWduZWQt b2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lw djYvaXA2X3R1bm5lbC5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X3R1bm5lbC5jIGIvbmV0L2lw djYvaXA2X3R1bm5lbC5jCmluZGV4IGVhYmZmYmIuLjEzN2ZjYTQgMTAwNjQ0Ci0tLSBhL25ldC9p cHY2L2lwNl90dW5uZWwuYworKysgYi9uZXQvaXB2Ni9pcDZfdHVubmVsLmMKQEAgLTE3Nyw3ICsx NzcsNyBAQCB2b2lkIGlwNl90bmxfZHN0X3Jlc2V0KHN0cnVjdCBpcDZfdG5sICp0KQogCWludCBp OwogCiAJZm9yX2VhY2hfcG9zc2libGVfY3B1KGkpCi0JCWlwNl90bmxfcGVyX2NwdV9kc3Rfc2V0 KHJhd19jcHVfcHRyKHQtPmRzdF9jYWNoZSksIE5VTEwpOworCQlpcDZfdG5sX3Blcl9jcHVfZHN0 X3NldChwZXJfY3B1X3B0cih0LT5kc3RfY2FjaGUsIGkpLCBOVUxMKTsKIH0KIEVYUE9SVF9TWU1C T0xfR1BMKGlwNl90bmxfZHN0X3Jlc2V0KTsKIAotLSAKMi4xLjAKCgpGcm9tIDE0NTFlMTg2ZGRk YmQxMjMzMWNiYmQ4MmNkMWVjNGRmNjIwN2Q1OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206ID0/VVRGLTg/cT9Caj1DMz1COHJuPTIwTW9yaz89IDxiam9ybkBtb3JrLm5vPgpEYXRlOiBX ZWQsIDE4IE5vdiAyMDE1IDIxOjEzOjA3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAyNS80M10gbmV0 OiBxbWlfd3dhbjogYWRkIFhTIFN0aWNrIFcxMDAtMiBmcm9tIDRHIFN5c3RlbXMKTUlNRS1WZXJz aW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQt VHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClsgVXBzdHJlYW0gY29tbWl0IDY4MjQyYTVhMWUyZWRj ZTM5YjA2OTM4NWNiYWZiODIzMDRlYWMwZjEgXQoKVGhvbWFzIHJlcG9ydHMKIgo0Z3N5c3RlbXMg c2VsbHMgdHdvIHRvdGFsIGRpZmZlcmVudCBMVEUtc3VyZnN0aWNrcyB1bmRlciB0aGUgc2FtZSBu YW1lLgouLgpUaGUgbmV3ZXIgdmVyc2lvbiBvZiBYUyBTdGljayBXMTAwIGlzIGZyb20gIm9tZWdh IgouLgpVbmRlciB3aW5kb3dzIHRoZSBkcml2ZXIgc3dpdGNoZXMgdG8gdGhlIHNhbWUgSUQsIGFu ZCB1c2VzIE1JMDNcNiBmb3IKbmV0d29yayBhbmQgTUkwMVw2IGZvciBtb2RlbS4KLi4KZWNobyAi MWM5ZSA5YjAxIiA+IC9zeXMvYnVzL3VzYi9kcml2ZXJzL3FtaV93d2FuL25ld19pZAplY2hvICIx YzllIDliMDEiID4gL3N5cy9idXMvdXNiLXNlcmlhbC9kcml2ZXJzL29wdGlvbjEvbmV3X2lkCgpU OiAgQnVzPTAxIExldj0wMSBQcm50PTAxIFBvcnQ9MDMgQ250PTAxIERldiM9ICA0IFNwZD00ODAg TXhDaD0gMApEOiAgVmVyPSAyLjAwIENscz0wMCg+aWZjICkgU3ViPTAwIFByb3Q9MDAgTXhQUz02 NCAjQ2Zncz0gIDEKUDogIFZlbmRvcj0xYzllIFByb2RJRD05YjAxIFJldj0wMi4zMgpTOiAgTWFu dWZhY3R1cmVyPVVTQiBNb2RlbQpTOiAgUHJvZHVjdD1VU0IgTW9kZW0KUzogIFNlcmlhbE51bWJl cj0KQzogICNJZnM9IDUgQ2ZnIz0gMSBBdHI9ODAgTXhQd3I9NTAwbUEKSTogIElmIz0gMCBBbHQ9 IDAgI0VQcz0gMiBDbHM9ZmYodmVuZC4pIFN1Yj1mZiBQcm90PWZmIERyaXZlcj1vcHRpb24KSTog IElmIz0gMSBBbHQ9IDAgI0VQcz0gMyBDbHM9ZmYodmVuZC4pIFN1Yj1mZiBQcm90PWZmIERyaXZl cj1vcHRpb24KSTogIElmIz0gMiBBbHQ9IDAgI0VQcz0gMyBDbHM9ZmYodmVuZC4pIFN1Yj1mZiBQ cm90PWZmIERyaXZlcj1vcHRpb24KSTogIElmIz0gMyBBbHQ9IDAgI0VQcz0gMyBDbHM9ZmYodmVu ZC4pIFN1Yj1mZiBQcm90PWZmIERyaXZlcj1xbWlfd3dhbgpJOiAgSWYjPSA0IEFsdD0gMCAjRVBz PSAyIENscz0wOChzdG9yLikgU3ViPTA2IFByb3Q9NTAgRHJpdmVyPXVzYi1zdG9yYWdlCgpOb3cg YWxsIGltcG9ydGFudCB0aGluZ3MgYXJlIHRoZXJlOgoKd3dwMHMyOWY3dTJpMyAobmV0KSwgdHR5 VVNCMiAoYXQpLCBjZGMtd2RtMCAocW1pKSwgdHR5VVNCMSAoYXQpCgpUaGVyZSBpcyBhbHNvIHR0 eVVTQjAsIGJ1dCBpdCBpcyBub3QgdXNhYmxlLCBhdCBsZWFzdCBub3QgZm9yIGF0LgoKVGhlIGRl dmljZSB3b3JrcyB3ZWxsIHdpdGggcW1pIGFuZCBNb2RlbU1hbmFnZXItTmV0d29ya01hbmFnZXIu CiIKClJlcG9ydGVkLWJ5OiBUaG9tYXMgU2Now6RmZXIgPHRzY2hhZWZlckB0LW9ubGluZS5kZT4K U2lnbmVkLW9mZi1ieTogQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC91 c2IvcW1pX3d3YW4uYyB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMgYi9kcml2ZXJzL25ldC91c2IvcW1p X3d3YW4uYwppbmRleCAyYTdjMWJlLi42NmUwODUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91 c2IvcW1pX3d3YW4uYworKysgYi9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYwpAQCAtNzc1LDYg Kzc3NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBwcm9kdWN0c1tdID0g ewogCXtRTUlfRklYRURfSU5URigweDIzNTcsIDB4OTAwMCwgNCl9LAkvKiBUUC1MSU5LIE1BMjYw ICovCiAJe1FNSV9GSVhFRF9JTlRGKDB4MWJjNywgMHgxMjAwLCA1KX0sCS8qIFRlbGl0IExFOTIw ICovCiAJe1FNSV9GSVhFRF9JTlRGKDB4MWJjNywgMHgxMjAxLCAyKX0sCS8qIFRlbGl0IExFOTIw ICovCisJe1FNSV9GSVhFRF9JTlRGKDB4MWM5ZSwgMHg5YjAxLCAzKX0sCS8qIFhTIFN0aWNrIFcx MDAtMiBmcm9tIDRHIFN5c3RlbXMgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgwYjNjLCAweGMwMDAs IDQpfSwJLyogT2xpdmV0dGkgT2xpY2FyZCAxMDAgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgwYjNj LCAweGMwMDEsIDQpfSwJLyogT2xpdmV0dGkgT2xpY2FyZCAxMjAgKi8KIAl7UU1JX0ZJWEVEX0lO VEYoMHgwYjNjLCAweGMwMDIsIDQpfSwJLyogT2xpdmV0dGkgT2xpY2FyZCAxNDAgKi8KLS0gCjIu MS4wCgoKRnJvbSBjMTM3Mzk3MjU2ZWY5NTAyY2ZiYTRkZTBmYTc3Zjg1MGVkMGFkN2E2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5j b20+CkRhdGU6IFdlZCwgMTggTm92IDIwMTUgMTI6NDA6MTMgLTA4MDAKU3ViamVjdDogW1BBVENI IDI2LzQzXSB0Y3A6IG1kNTogZml4IGxvY2tkZXAgYW5ub3RhdGlvbgoKWyBVcHN0cmVhbSBjb21t aXQgMWI4ZTZhMDFlMTlmMDAxZTlmOTNiMzljMzIzODc5NjFjOTFlZDNjYyBdCgpXaGVuIGEgcGFz c2l2ZSBUQ1AgaXMgY3JlYXRlZCwgd2UgZXZlbnR1YWxseSBjYWxsIHRjcF9tZDVfZG9fYWRkKCkK d2l0aCBzayBwb2ludGluZyB0byB0aGUgY2hpbGQuIEl0IGlzIG5vdCBvd25lciBieSB0aGUgdXNl ciB5ZXQgKHdlCndpbGwgYWRkIHRoaXMgc29ja2V0IGludG8gbGlzdGVuZXIgYWNjZXB0IHF1ZXVl IGEgYml0IGxhdGVyIGFueXdheSkKCkJ1dCB3ZSBkbyBvd24gdGhlIHNwaW5sb2NrLCBzbyBhbWVu ZCB0aGUgbG9ja2RlcCBhbm5vdGF0aW9uIHRvIGF2b2lkCmZvbGxvd2luZyBzcGxhdCA6CgpbIDg0 NTEuMDkwOTMyXSBuZXQvaXB2NC90Y3BfaXB2NC5jOjkyMyBzdXNwaWNpb3VzIHJjdV9kZXJlZmVy ZW5jZV9wcm90ZWN0ZWQoKSB1c2FnZSEKWyA4NDUxLjA5MDkzMl0KWyA4NDUxLjA5MDkzMl0gb3Ro ZXIgaW5mbyB0aGF0IG1pZ2h0IGhlbHAgdXMgZGVidWcgdGhpczoKWyA4NDUxLjA5MDkzMl0KWyA4 NDUxLjA5MDkzNF0KWyA4NDUxLjA5MDkzNF0gcmN1X3NjaGVkdWxlcl9hY3RpdmUgPSAxLCBkZWJ1 Z19sb2NrcyA9IDEKWyA4NDUxLjA5MDkzNl0gMyBsb2NrcyBoZWxkIGJ5IHNvY2tldF9zb2Nrb3B0 Xy8yMTQ3OTU6ClsgODQ1MS4wOTA5MzZdICAjMDogIChyY3VfcmVhZF9sb2NrKXsuKy4rLi59LCBh dDogWzxmZmZmZmZmZjg1NWM2YWMxPl0gX19uZXRpZl9yZWNlaXZlX3NrYl9jb3JlKzB4MTUxLzB4 ZTkwClsgODQ1MS4wOTA5NDddICAjMTogIChyY3VfcmVhZF9sb2NrKXsuKy4rLi59LCBhdDogWzxm ZmZmZmZmZjg1NjE4MTQzPl0gaXBfbG9jYWxfZGVsaXZlcl9maW5pc2grMHg0My8weDJiMApbIDg0 NTEuMDkwOTUyXSAgIzI6ICAoc2xvY2stQUZfSU5FVCl7Ky4tLi4ufSwgYXQ6IFs8ZmZmZmZmZmY4 NTVhY2RhNT5dIHNrX2Nsb25lX2xvY2srMHgxYzUvMHg1MDAKWyA4NDUxLjA5MDk1OF0KWyA4NDUx LjA5MDk1OF0gc3RhY2sgYmFja3RyYWNlOgpbIDg0NTEuMDkwOTYwXSBDUFU6IDcgUElEOiAyMTQ3 OTUgQ29tbTogc29ja2V0X3NvY2tvcHRfCgpbIDg0NTEuMDkxMjE1XSBDYWxsIFRyYWNlOgpbIDg0 NTEuMDkxMjE2XSAgPElSUT4gIFs8ZmZmZmZmZmY4NTZmYjI5Yz5dIGR1bXBfc3RhY2srMHg1NS8w eDc2ClsgODQ1MS4wOTEyMjldICBbPGZmZmZmZmZmODUxMjNiNWI+XSBsb2NrZGVwX3JjdV9zdXNw aWNpb3VzKzB4ZWIvMHgxMTAKWyA4NDUxLjA5MTIzNV0gIFs8ZmZmZmZmZmY4NTY0NTQ0Zj5dIHRj cF9tZDVfZG9fYWRkKzB4MWJmLzB4MWUwClsgODQ1MS4wOTEyMzldICBbPGZmZmZmZmZmODU2NDU3 NTE+XSB0Y3BfdjRfc3luX3JlY3Zfc29jaysweDFmMS8weDRjMApbIDg0NTEuMDkxMjQyXSAgWzxm ZmZmZmZmZjg1NjQyYjI3Pl0gPyB0Y3BfdjRfbWQ1X2hhc2hfc2tiKzB4MTY3LzB4MTkwClsgODQ1 MS4wOTEyNDZdICBbPGZmZmZmZmZmODU2NDdjNzg+XSB0Y3BfY2hlY2tfcmVxKzB4M2M4LzB4NTAw ClsgODQ1MS4wOTEyNDldICBbPGZmZmZmZmZmODU2NDUxYWU+XSA/IHRjcF92NF9pbmJvdW5kX21k NV9oYXNoKzB4MTFlLzB4MTkwClsgODQ1MS4wOTEyNTNdICBbPGZmZmZmZmZmODU2NDcxNzA+XSB0 Y3BfdjRfcmN2KzB4M2MwLzB4OWYwClsgODQ1MS4wOTEyNTZdICBbPGZmZmZmZmZmODU2MTgxNDM+ XSA/IGlwX2xvY2FsX2RlbGl2ZXJfZmluaXNoKzB4NDMvMHgyYjAKWyA4NDUxLjA5MTI2MF0gIFs8 ZmZmZmZmZmY4NTYxODFiNj5dIGlwX2xvY2FsX2RlbGl2ZXJfZmluaXNoKzB4YjYvMHgyYjAKWyA4 NDUxLjA5MTI2M10gIFs8ZmZmZmZmZmY4NTYxODE0Mz5dID8gaXBfbG9jYWxfZGVsaXZlcl9maW5p c2grMHg0My8weDJiMApbIDg0NTEuMDkxMjY3XSAgWzxmZmZmZmZmZjg1NjE4ZDM4Pl0gaXBfbG9j YWxfZGVsaXZlcisweDQ4LzB4ODAKWyA4NDUxLjA5MTI3MF0gIFs8ZmZmZmZmZmY4NTYxODUxMD5d IGlwX3Jjdl9maW5pc2grMHgxNjAvMHg3MDAKWyA4NDUxLjA5MTI3M10gIFs8ZmZmZmZmZmY4NTYx OTAwZT5dIGlwX3JjdisweDI5ZS8weDNkMApbIDg0NTEuMDkxMjc3XSAgWzxmZmZmZmZmZjg1NWM3 NGI3Pl0gX19uZXRpZl9yZWNlaXZlX3NrYl9jb3JlKzB4YjQ3LzB4ZTkwCgpGaXhlczogYThhZmNh MDMyOTk4OCAoInRjcDogbWQ1OiBwcm90ZWN0cyBtZDVzaWdfaW5mbyB3aXRoIFJDVSIpClNpZ25l ZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KUmVwb3J0ZWQtYnk6 IFdpbGxlbSBkZSBCcnVpam4gPHdpbGxlbWJAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2 aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L3RjcF9pcHY0 LmMgfCAzICsrLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5j CmluZGV4IDkzODk4ZTAuLmE3NzM5YzggMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMK KysrIGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpAQCAtOTIyLDcgKzkyMiw4IEBAIGludCB0Y3BfbWQ1 X2RvX2FkZChzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHVuaW9uIHRjcF9tZDVfYWRkciAqYWRkciwK IAl9CiAKIAltZDVzaWcgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRwLT5tZDVzaWdfaW5m bywKLQkJCQkJICAgc29ja19vd25lZF9ieV91c2VyKHNrKSk7CisJCQkJCSAgIHNvY2tfb3duZWRf YnlfdXNlcihzaykgfHwKKwkJCQkJICAgbG9ja2RlcF9pc19oZWxkKCZzay0+c2tfbG9jay5zbG9j aykpOwogCWlmICghbWQ1c2lnKSB7CiAJCW1kNXNpZyA9IGttYWxsb2Moc2l6ZW9mKCptZDVzaWcp LCBnZnApOwogCQlpZiAoIW1kNXNpZykKLS0gCjIuMS4wCgoKRnJvbSA5YTkyMDFlNTk0ZjFlMzI4 YTkyN2VhMTJmNjcyYTM1NDFiMDNkNzk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBZ dWNodW5nIENoZW5nIDx5Y2hlbmdAZ29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxOCBOb3YgMjAxNSAx ODoxNzozMCAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMjcvNDNdIHRjcDogZGlzYWJsZSBGYXN0IE9w ZW4gb24gdGltZW91dHMgYWZ0ZXIgaGFuZHNoYWtlCgpbIFVwc3RyZWFtIGNvbW1pdCAwZTQ1ZjRk YTU5ODE4OTVlODg1ZGQ3MmZlOTEyYTNmOGUzMmJhZTczIF0KClNvbWUgbWlkZGxlLWJveGVzIGJs YWNrLWhvbGUgdGhlIGRhdGEgYWZ0ZXIgdGhlIEZhc3QgT3BlbiBoYW5kc2hha2UKKGh0dHBzOi8v d3d3LmlldGYub3JnL3Byb2NlZWRpbmdzLzk0L3NsaWRlcy9zbGlkZXMtOTQtdGNwbS0xMy5wZGYp LgpUaGUgZXhhY3QgcmVhc29uIGlzIHVua25vd24uIFRoZSB3b3JrLWFyb3VuZCBpcyB0byBkaXNh YmxlIEZhc3QgT3Blbgp0ZW1wb3JhcmlseSBhZnRlciBtdWx0aXBsZSByZWN1cnJpbmcgdGltZW91 dHMgd2l0aCBmZXcgb3Igbm8gZGF0YQpkZWxpdmVyZWQgaW4gdGhlIGVzdGFibGlzaGVkIHN0YXRl LgoKU2lnbmVkLW9mZi1ieTogWXVjaHVuZyBDaGVuZyA8eWNoZW5nQGdvb2dsZS5jb20+ClNpZ25l ZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KUmVwb3J0ZWQtYnk6 IENocmlzdG9waCBQYWFzY2ggPGNwYWFzY2hAYXBwbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZp ZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjQvdGNwX3RpbWVy LmMgfCAxMiArKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwpp bmRleCA3MTQ5ZWJjLi4wNGYwYTA1IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuYwor KysgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwpAQCAtMTc2LDYgKzE3NiwxOCBAQCBzdGF0aWMgaW50 IHRjcF93cml0ZV90aW1lb3V0KHN0cnVjdCBzb2NrICpzaykKIAkJc3luX3NldCA9IHRydWU7CiAJ fSBlbHNlIHsKIAkJaWYgKHJldHJhbnNtaXRzX3RpbWVkX291dChzaywgc3lzY3RsX3RjcF9yZXRy aWVzMSwgMCwgMCkpIHsKKwkJCS8qIFNvbWUgbWlkZGxlLWJveGVzIG1heSBibGFjay1ob2xlIEZh c3QgT3BlbiBfYWZ0ZXJfCisJCQkgKiB0aGUgaGFuZHNoYWtlLiBUaGVyZWZvcmUgd2UgY29uc2Vy dmF0aXZlbHkgZGlzYWJsZQorCQkJICogRmFzdCBPcGVuIG9uIHRoaXMgcGF0aCBvbiByZWN1cnJp bmcgdGltZW91dHMgd2l0aAorCQkJICogZmV3IG9yIHplcm8gYnl0ZXMgYWNrZWQgYWZ0ZXIgRmFz dCBPcGVuLgorCQkJICovCisJCQlpZiAodHAtPnN5bl9kYXRhX2Fja2VkICYmCisJCQkgICAgdHAt PmJ5dGVzX2Fja2VkIDw9IHRwLT5yeF9vcHQubXNzX2NsYW1wKSB7CisJCQkJdGNwX2Zhc3RvcGVu X2NhY2hlX3NldChzaywgMCwgTlVMTCwgdHJ1ZSwgMCk7CisJCQkJaWYgKGljc2stPmljc2tfcmV0 cmFuc21pdHMgPT0gc3lzY3RsX3RjcF9yZXRyaWVzMSkKKwkJCQkJTkVUX0lOQ19TVEFUU19CSChz b2NrX25ldChzayksCisJCQkJCQkJIExJTlVYX01JQl9UQ1BGQVNUT1BFTkFDVElWRUZBSUwpOwor CQkJfQogCQkJLyogQmxhY2sgaG9sZSBkZXRlY3Rpb24gKi8KIAkJCXRjcF9tdHVfcHJvYmluZyhp Y3NrLCBzayk7CiAKLS0gCjIuMS4wCgoKRnJvbSBmYzZjNjEyNDlkZDllMjQ5Yjk2MjkxYjgzYzA3 NTFiNDQxY2RhOGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQg PGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IFdlZCwgMTggTm92IDIwMTUgMjE6MDM6MzMgLTA4 MDAKU3ViamVjdDogW1BBVENIIDI4LzQzXSB0Y3A6IGZpeCBwb3RlbnRpYWwgaHVnZSBrbWFsbG9j KCkgY2FsbHMgaW4gVENQX1JFUEFJUgoKWyBVcHN0cmVhbSBjb21taXQgNWQ0YzliZmJhYmRiMWQ0 OTdmMjFhZmQ4MTUwMWU1YzU0YjBjODVkOSBdCgp0Y3Bfc2VuZF9yY3ZxKCkgaXMgdXNlZCBmb3Ig cmUtaW5qZWN0aW5nIGRhdGEgaW50byB0Y3AgcmVjZWl2ZSBxdWV1ZS4KClByb2JsZW1zIDoKCi0g Tm8gY2hlY2sgYWdhaW5zdCBzaXplIGlzIHBlcmZvcm1lZCwgYWxsb3dlZCB1c2VyIHRvIGZvb2wg a2VybmVsIGluCiAgYXR0ZW1wdGluZyB2ZXJ5IGxhcmdlIG1lbW9yeSBhbGxvY2F0aW9ucywgZXZl bnR1YWxseSB0cmlnZ2VyaW5nCiAgT09NIHdoZW4gbWVtb3J5IGlzIGZyYWdtZW50ZWQuCgotIElu IGNhc2Ugb2YgZmF1bHQgZHVyaW5nIHRoZSBjb3B5IHdlIGRvIG5vdCByZXR1cm4gY29ycmVjdCBl cnJuby4KCkxldHMgdXNlIGFsbG9jX3NrYl93aXRoX2ZyYWdzKCkgdG8gY29vayBvcHRpbWFsIHNr YnMuCgpGaXhlczogMjkyZThkOGM4NTM4ICgidGNwOiBNb3ZlIHJjdnEgc2VuZGluZyB0byB0Y3Bf aW5wdXQuYyIpCkZpeGVzOiBjMGU4OGZmMGYyNTYgKCJ0Y3A6IFJlcGFpciBzb2NrZXQgcXVldWVz IikKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpDYzog UGF2ZWwgRW1lbHlhbm92IDx4ZW11bEBwYXJhbGxlbHMuY29tPgpBY2tlZC1ieTogUGF2ZWwgRW1l bHlhbm92IDx4ZW11bEBwYXJhbGxlbHMuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxs ZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjQvdGNwX2lucHV0LmMgfCAyMiAr KysrKysrKysrKysrKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9p cHY0L3RjcF9pbnB1dC5jCmluZGV4IGE4ZjUxNWIuLmNjNmJkNDMgMTAwNjQ0Ci0tLSBhL25ldC9p cHY0L3RjcF9pbnB1dC5jCisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCkBAIC00NDU3LDE5ICs0 NDU3LDM0IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIHRjcF9xdWV1ZV9yY3Yoc3RydWN0IHNv Y2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQKIGludCB0Y3Bfc2VuZF9yY3ZxKHN0cnVj dCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3Qg c2tfYnVmZiAqc2tiOworCWludCBlcnIgPSAtRU5PTUVNOworCWludCBkYXRhX2xlbiA9IDA7CiAJ Ym9vbCBmcmFnc3RvbGVuOwogCiAJaWYgKHNpemUgPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQlza2Ig PSBhbGxvY19za2Ioc2l6ZSwgc2stPnNrX2FsbG9jYXRpb24pOworCWlmIChzaXplID4gUEFHRV9T SVpFKSB7CisJCWludCBucGFnZXMgPSBtaW5fdChzaXplX3QsIHNpemUgPj4gUEFHRV9TSElGVCwg TUFYX1NLQl9GUkFHUyk7CisKKwkJZGF0YV9sZW4gPSBucGFnZXMgPDwgUEFHRV9TSElGVDsKKwkJ c2l6ZSA9IGRhdGFfbGVuICsgKHNpemUgJiB+UEFHRV9NQVNLKTsKKwl9CisJc2tiID0gYWxsb2Nf c2tiX3dpdGhfZnJhZ3Moc2l6ZSAtIGRhdGFfbGVuLCBkYXRhX2xlbiwKKwkJCQkgICBQQUdFX0FM TE9DX0NPU1RMWV9PUkRFUiwKKwkJCQkgICAmZXJyLCBzay0+c2tfYWxsb2NhdGlvbik7CiAJaWYg KCFza2IpCiAJCWdvdG8gZXJyOwogCisJc2tiX3B1dChza2IsIHNpemUgLSBkYXRhX2xlbik7CisJ c2tiLT5kYXRhX2xlbiA9IGRhdGFfbGVuOworCXNrYi0+bGVuID0gc2l6ZTsKKwogCWlmICh0Y3Bf dHJ5X3JtZW1fc2NoZWR1bGUoc2ssIHNrYiwgc2tiLT50cnVlc2l6ZSkpCiAJCWdvdG8gZXJyX2Zy ZWU7CiAKLQlpZiAobWVtY3B5X2Zyb21fbXNnKHNrYl9wdXQoc2tiLCBzaXplKSwgbXNnLCBzaXpl KSkKKwllcnIgPSBza2JfY29weV9kYXRhZ3JhbV9mcm9tX2l0ZXIoc2tiLCAwLCAmbXNnLT5tc2df aXRlciwgc2l6ZSk7CisJaWYgKGVycikKIAkJZ290byBlcnJfZnJlZTsKIAogCVRDUF9TS0JfQ0Io c2tiKS0+c2VxID0gdGNwX3NrKHNrKS0+cmN2X254dDsKQEAgLTQ0ODUsNyArNDUwMCw4IEBAIGlu dCB0Y3Bfc2VuZF9yY3ZxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXpl X3Qgc2l6ZSkKIGVycl9mcmVlOgogCWtmcmVlX3NrYihza2IpOwogZXJyOgotCXJldHVybiAtRU5P TUVNOworCXJldHVybiBlcnI7CisKIH0KIAogc3RhdGljIHZvaWQgdGNwX2RhdGFfcXVldWUoc3Ry dWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQotLSAKMi4xLjAKCgpGcm9tIDQxOWVl M2ViMWQ2ZGVhNjY4ZjAwZWU0NDBjNjcwZjhmNDc5ZjgyMTYgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogVGh1LCAy NiBOb3YgMjAxNSAwODoxODoxNCAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMjkvNDNdIHRjcDogaW5p dGlhbGl6ZSB0cC0+Y29waWVkX3NlcSBpbiBjYXNlIG9mIGNyb3NzIFNZTgogY29ubmVjdGlvbgoK WyBVcHN0cmVhbSBjb21taXQgMTQyYTJlN2VjZThkOGFjMGU4MThlYjJjOTFmOTljYTg5NDczMGUy YSBdCgpEbWl0cnkgcHJvdmlkZWQgYSBzeXprYWxsZXIgKGh0dHA6Ly9naXRodWIuY29tL2dvb2ds ZS9zeXprYWxsZXIpCmdlbmVyYXRlZCBwcm9ncmFtIHRoYXQgdHJpZ2dlcnMgdGhlIFdBUk5JTkcg YXQKbmV0L2lwdjQvdGNwLmM6MTcyOSBpbiB0Y3BfcmVjdm1zZygpIDoKCldBUk5fT04odHAtPmNv cGllZF9zZXEgIT0gdHAtPnJjdl9ueHQgJiYKICAgICAgICAhKGZsYWdzICYgKE1TR19QRUVLIHwg TVNHX1RSVU5DKSkpOwoKSGlzIHByb2dyYW0gaXMgc3BlY2lmaWNhbGx5IGF0dGVtcHRpbmcgYSBD cm9zcyBTWU4gVENQIGV4Y2hhbmdlLAp0aGF0IHdlIHN1cHBvcnQgKGZvciB0aGUgcGxlYXN1cmUg b2YgaGFja2VycyA/KSwgYnV0IGl0IGxvb2tzIHdlCmxhY2sgcHJvcGVyIHRjcC0+Y29waWVkX3Nl cSBpbml0aWFsaXphdGlvbi4KClRoYW5rcyBhZ2FpbiBEbWl0cnkgZm9yIHlvdXIgcmVwb3J0IGFu ZCB0ZXN0aW5ncy4KClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xl LmNvbT4KUmVwb3J0ZWQtYnk6IERtaXRyeSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4KVGVz dGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2NC90Y3Bf aW5wdXQuYyB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0 IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCBjYzZi ZDQzLi4wYTJiNjFkIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuYworKysgYi9uZXQv aXB2NC90Y3BfaW5wdXQuYwpAQCAtNTY1OSw2ICs1NjU5LDcgQEAgZGlzY2FyZDoKIAkJfQogCiAJ CXRwLT5yY3Zfbnh0ID0gVENQX1NLQl9DQihza2IpLT5zZXEgKyAxOworCQl0cC0+Y29waWVkX3Nl cSA9IHRwLT5yY3Zfbnh0OwogCQl0cC0+cmN2X3d1cCA9IFRDUF9TS0JfQ0Ioc2tiKS0+c2VxICsg MTsKIAogCQkvKiBSRkMxMzIzOiBUaGUgd2luZG93IGluIFNZTiAmIFNZTi9BQ0sgc2VnbWVudHMg aXMKLS0gCjIuMS4wCgoKRnJvbSA0ZDhiYWYyMzQ1ODIxMTExM2IyYjRhYWFjMjZkNzE1YTFjZmE5 YTRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQm9ya21hbm4gPGRhbmll bEBpb2dlYXJib3gubmV0PgpEYXRlOiBGcmksIDIwIE5vdiAyMDE1IDAwOjExOjU2ICswMTAwClN1 YmplY3Q6IFtQQVRDSCAzMC80M10gbmV0LCBzY206IGZpeCBQYVggZGV0ZWN0ZWQgbXNnX2NvbnRy b2xsZW4gb3ZlcmZsb3cgaW4KIHNjbV9kZXRhY2hfZmRzCgpbIFVwc3RyZWFtIGNvbW1pdCA2OTAw MzE3ZjVlZmYwYTcwNzBjNTkzNmU1MzgzZjU4OWUwZGU3YTA5IF0KCkRhdmlkIGFuZCBIYWNLdXJ4 IHJlcG9ydGVkIGEgZm9sbG93aW5nL3NpbWlsYXIgc2l6ZSBvdmVyZmxvdyB0cmlnZ2VyZWQKaW4g YSBncnNlY3VyaXR5IGtlcm5lbCwgdGhhbmtzIHRvIFBhWCdzIGdjYyBzaXplIG92ZXJmbG93IHBs dWdpbjoKCihBbHJlYWR5IGZpeGVkIGluIGxhdGVyIGdyc2VjdXJpdHkgdmVyc2lvbnMgYnkgQnJh ZCBhbmQgUGFYIFRlYW0uKQoKWyAxMDAyLjI5NjEzN10gUEFYOiBzaXplIG92ZXJmbG93IGRldGVj dGVkIGluIGZ1bmN0aW9uIHNjbV9kZXRhY2hfZmRzIG5ldC9jb3JlL3NjbS5jOjMxNAogICAgICAg ICAgICAgICBjaWN1cy4yMDJfMTI3IG1pbiwgY291bnQ6IDQsIGRlY2w6IG1zZ19jb250cm9sbGVu OyBudW06IDA7IGNvbnRleHQ6IG1zZ2hkcjsKWyAxMDAyLjI5NjE0NV0gQ1BVOiAwIFBJRDogMzY4 NSBDb21tOiBzY21fcmlnaHRzX3JlY3YgTm90IHRhaW50ZWQgNC4yLjMtZ3JzZWMrICM3ClsgMTAw Mi4yOTYxNDldIEhhcmR3YXJlIG5hbWU6IEFwcGxlIEluYy4gTWFjQm9va0FpcjUsMS9NYWMtNjZG MzVGMTlGRTJBMEQwNSwgWy4uLl0KWyAxMDAyLjI5NjE1M10gIGZmZmZmZmZmODFjMjczNjYgMDAw MDAwMDAwMDAwMDAwMCBmZmZmZmZmZjgxYzI3Mzc1IGZmZmZjOTAwMDc4NDNhYTgKWyAxMDAyLjI5 NjE2Ml0gIGZmZmZmZmZmODE4MTI5YmEgMDAwMDAwMDAwMDAwMDAwMCBmZmZmZmZmZjgxYzI3MzY2 IGZmZmZjOTAwMDc4NDNhZDgKWyAxMDAyLjI5NjE2OV0gIGZmZmZmZmZmODEyMWY4MzggZmZmZmZm ZmZmZmZmZmZmYyBmZmZmZmZmZmZmZmZmZmZjIGZmZmZjOTAwMDc4NDNlNjAKWyAxMDAyLjI5NjE3 Nl0gQ2FsbCBUcmFjZToKWyAxMDAyLjI5NjE5MF0gIFs8ZmZmZmZmZmY4MTgxMjliYT5dIGR1bXBf c3RhY2srMHg0NS8weDU3ClsgMTAwMi4yOTYyMDBdICBbPGZmZmZmZmZmODEyMWY4Mzg+XSByZXBv cnRfc2l6ZV9vdmVyZmxvdysweDM4LzB4NjAKWyAxMDAyLjI5NjIwOV0gIFs8ZmZmZmZmZmY4MTZh OTc5ZT5dIHNjbV9kZXRhY2hfZmRzKzB4MmNlLzB4MzAwClsgMTAwMi4yOTYyMjBdICBbPGZmZmZm ZmZmODE3OTE4OTk+XSB1bml4X3N0cmVhbV9yZWFkX2dlbmVyaWMrMHg2MDkvMHg5MzAKWyAxMDAy LjI5NjIyOF0gIFs8ZmZmZmZmZmY4MTc5MWM5Zj5dIHVuaXhfc3RyZWFtX3JlY3Ztc2crMHg0Zi8w eDYwClsgMTAwMi4yOTYyMzZdICBbPGZmZmZmZmZmODE3OGRjMDA+XSA/IHVuaXhfc2V0X3BlZWtf b2ZmKzB4NTAvMHg1MApbIDEwMDIuMjk2MjQzXSAgWzxmZmZmZmZmZjgxNjhmYWM3Pl0gc29ja19y ZWN2bXNnKzB4NDcvMHg2MApbIDEwMDIuMjk2MjQ4XSAgWzxmZmZmZmZmZjgxNjkxNTIyPl0gX19f c3lzX3JlY3Ztc2crMHhlMi8weDFlMApbIDEwMDIuMjk2MjU3XSAgWzxmZmZmZmZmZjgxNjkzNDk2 Pl0gX19zeXNfcmVjdm1zZysweDQ2LzB4ODAKWyAxMDAyLjI5NjI2M10gIFs8ZmZmZmZmZmY4MTY5 MzRmYz5dIFN5U19yZWN2bXNnKzB4MmMvMHg0MApbIDEwMDIuMjk2MjcxXSAgWzxmZmZmZmZmZjgx ODFhM2FiPl0gZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsweDEyLzB4ODUKCkZ1cnRoZXIgaW52 ZXN0aWdhdGlvbiBzaG93ZWQgdGhhdCB0aGlzIGNhbiBoYXBwZW4gd2hlbiBhbiAqb2RkKiBudW1i ZXIgb2YKZmRzIGFyZSBiZWluZyBwYXNzZWQgb3ZlciBBRl9VTklYIHNvY2tldHMuCgpJbiB0aGVz ZSBjYXNlcyBDTVNHX0xFTihpICogc2l6ZW9mKGludCkpIGFuZCBDTVNHX1NQQUNFKGkgKiBzaXpl b2YoaW50KSksCndoZXJlIGkgaXMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsbHkgcGFzc2VkIGZk cywgZGlmZmVyIGJ5IDQgYnl0ZXMgZHVlCnRvIHRoZSBleHRyYSBDTVNHX0FMSUdOKCkgcGFkZGlu ZyBpbiBDTVNHX1NQQUNFKCkgdG8gYW4gOCBieXRlIGJvdW5kYXJ5Cm9uIDY0IGJpdC4gVGhlIHBh ZGRpbmcgaXMgdXNlZCB0byBhbGlnbiBzdWJzZXF1ZW50IGNtc2cgaGVhZGVycyBpbiB0aGUKY29u dHJvbCBidWZmZXIuCgpXaGVuIHRoZSBjb250cm9sIGJ1ZmZlciBwYXNzZWQgaW4gZnJvbSB0aGUg cmVjZWl2ZXIgc2lkZSAqbGFja3MqIHRoZXNlIDQKYnl0ZXMgKGUuZy4gZHVlIHRvIGJ1Z2d5L3dy b25nIEFQSSB1c2FnZSksIHRoZW4gbXNnLT5tc2dfY29udHJvbGxlbiB3aWxsCm92ZXJmbG93IGlu IHNjbV9kZXRhY2hfZmRzKCk6CgogIGludCBjbWxlbiA9IENNU0dfTEVOKGkgKiBzaXplb2YoaW50 KSk7ICA8LS0tIGNtbGVuIHcvbyB0YWlsLXBhZGRpbmcKICBlcnIgPSBwdXRfdXNlcihTT0xfU09D S0VULCAmY20tPmNtc2dfbGV2ZWwpOwogIGlmICghZXJyKQogICAgZXJyID0gcHV0X3VzZXIoU0NN X1JJR0hUUywgJmNtLT5jbXNnX3R5cGUpOwogIGlmICghZXJyKQogICAgZXJyID0gcHV0X3VzZXIo Y21sZW4sICZjbS0+Y21zZ19sZW4pOwogIGlmICghZXJyKSB7CiAgICBjbWxlbiA9IENNU0dfU1BB Q0UoaSAqIHNpemVvZihpbnQpKTsgIDwtLS0gY21sZW4gdy8gNCBieXRlIGV4dHJhIHRhaWwtcGFk ZGluZwogICAgbXNnLT5tc2dfY29udHJvbCArPSBjbWxlbjsKICAgIG1zZy0+bXNnX2NvbnRyb2xs ZW4gLT0gY21sZW47ICAgICAgICAgPC0tLSBpZmYgbm8gdGFpbC1wYWRkaW5nIHNwYWNlIGhlcmUg Li4uCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIHdy YXAtYXJvdW5kCgpGLmUuIGl0IHdpbGwgd3JhcCB0byBhIGxlbmd0aCBvZiAxODQ0Njc0NDA3Mzcw OTU1MTYxMiBieXRlcyBpbiBjYXNlIHRoZQpyZWNlaXZlciBwYXNzZWQgaW4gbXNnLT5tc2dfY29u dHJvbGxlbiBvZiAyMCBieXRlcywgYW5kIHRoZSBzZW5kZXIKcHJvcGVybHkgdHJhbnNmZXJyZWQg MSBmZCB0byB0aGUgcmVjZWl2ZXIsIHNvIHRoYXQgaXRzIENNU0dfTEVOIHJlc3VsdHMKaW4gMjAg Ynl0ZXMgYW5kIENNU0dfU1BBQ0UgaW4gMjQgYnl0ZXMuCgpJbiBjYXNlIG9mIE1TR19DTVNHX0NP TVBBVCAoc2NtX2RldGFjaF9mZHNfY29tcGF0KCkpLCBJIGhhdmVuJ3Qgc2VlbiBhbgppc3N1ZSBp biBteSB0ZXN0cyBhcyBhbGlnbm1lbnQgc2VlbXMgYWx3YXlzIG9uIDQgYnl0ZSBib3VuZGFyeS4g U2FtZQpzaG91bGQgYmUgaW4gY2FzZSBvZiBuYXRpdmUgMzIgYml0LCB3aGVyZSB3ZSBlbmQgdXAg d2l0aCA0IGJ5dGUgYm91bmRhcmllcwphcyB3ZWxsLgoKSW4gcHJhY3RpY2UsIHBhc3NpbmcgbXNn LT5tc2dfY29udHJvbGxlbiBvZiAyMCB0byByZWN2bXNnKCkgd2hpbGUgcmVjZWl2aW5nCmEgc2lu Z2xlIGZkIHdvdWxkIG1lYW4gdGhhdCBvbiBzdWNjZXNzZnVsIHJldHVybiwgbXNnLT5tc2dfY29u dHJvbGxlbiBpcwpiZWluZyBzZXQgYnkgdGhlIGtlcm5lbCB0byAyNCBieXRlcyBpbnN0ZWFkLCB0 aHVzIG1vcmUgdGhhbiB0aGUgaW5wdXQKYnVmZmVyIGFkdmVydGlzZWQuIEl0IGNvdWxkIGYuZS4g YmVjb21lIGFuIGlzc3VlIGlmIHN1Y2ggYXBwbGljYXRpb24gbGF0ZXIKb24gemVyb2VzIG9yIGNv cGllcyB0aGUgY29udHJvbCBidWZmZXIgYmFzZWQgb24gdGhlIHJldHVybmVkIG1zZy0+bXNnX2Nv bnRyb2xsZW4KZWxzZXdoZXJlLgoKTWF4aW11bSBudW1iZXIgb2YgZmRzIHdlIGNhbiBzZW5kIGlz IGEgaGFyZCB1cHBlciBsaW1pdCBTQ01fTUFYX0ZEICgyNTMpLgoKR29pbmcgb3ZlciB0aGUgY29k ZSwgaXQgc2VlbXMgbGlrZSBtc2ctPm1zZ19jb250cm9sbGVuIGlzIG5vdCBiZWluZyByZWFkCmFm dGVyIHNjbV9kZXRhY2hfZmRzKCkgaW4gc2NtX3JlY3YoKSBhbnltb3JlIGJ5IHRoZSBrZXJuZWws IGdvb2QhCgpSZWxldmFudCByZWN2bXNnKCkgaGFuZGxlciBhcmUgdW5peF9kZ3JhbV9yZWN2bXNn KCkgKHVuaXhfc2VxcGFja2V0X3JlY3Ztc2coKSkKYW5kIHVuaXhfc3RyZWFtX3JlY3Ztc2coKS4g Qm90aCByZXR1cm4gYmFjayB0byB0aGVpciByZWN2bXNnKCkgY2FsbGVyLAphbmQgX19fc3lzX3Jl Y3Ztc2coKSBwbGFjZXMgdGhlIHVwZGF0ZWQgbGVuZ3RoLCB0aGF0IGlzLCBuZXcgbXNnX2NvbnRy b2wgLQpvbGQgbXNnX2NvbnRyb2wgcG9pbnRlciBpbnRvIG1zZy0+bXNnX2NvbnRyb2xsZW4gKGhl bmNlIHRoZSAyNCBieXRlcyBzZWVuCmluIHRoZSBleGFtcGxlKS4KCkxvbmcgdGltZSBhZ28sIFdl aSBZb25nanVuIGZpeGVkIHNvbWV0aGluZyByZWxhdGVkIGluIGNvbW1pdCAxYWM3MGU3YWQyNGEK KCJbTkVUXTogRml4IGZ1bmN0aW9uIHB1dF9jbXNnKCkgd2hpY2ggbWF5IGNhdXNlIHVzciBhcHBs aWNhdGlvbiBtZW1vcnkKb3ZlcmZsb3ciKS4KClJGQzM1NDIsIHNlY3Rpb24gMjAuMi4gc2F5czoK CiAgVGhlIGZpZWxkcyBzaG93biBhcyAiWFgiIGFyZSBwb3NzaWJsZSBwYWRkaW5nLCBiZXR3ZWVu IHRoZSBjbXNnaGRyCiAgc3RydWN0dXJlIGFuZCB0aGUgZGF0YSwgYW5kIGJldHdlZW4gdGhlIGRh dGEgYW5kIHRoZSBuZXh0IGNtc2doZHIKICBzdHJ1Y3R1cmUsIGlmIHJlcXVpcmVkIGJ5IHRoZSBp bXBsZW1lbnRhdGlvbi4gV2hpbGUgc2VuZGluZyBhbgogIGFwcGxpY2F0aW9uIG1heSBvciBtYXkg bm90IGluY2x1ZGUgcGFkZGluZyBhdCB0aGUgZW5kIG9mIGxhc3QKICBhbmNpbGxhcnkgZGF0YSBp biBtc2dfY29udHJvbGxlbiBhbmQgaW1wbGVtZW50YXRpb25zIG11c3QgYWNjZXB0IGJvdGgKICBh cyB2YWxpZC4gT24gcmVjZWl2aW5nIGEgcG9ydGFibGUgYXBwbGljYXRpb24gbXVzdCBwcm92aWRl IHNwYWNlIGZvcgogIHBhZGRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgbGFzdCBhbmNpbGxhcnkgZGF0 YSBhcyBpbXBsZW1lbnRhdGlvbnMgbWF5CiAgY29weSBvdXQgdGhlIHBhZGRpbmcgYXQgdGhlIGVu ZCBvZiB0aGUgY29udHJvbCBtZXNzYWdlIGJ1ZmZlciBhbmQKICBpbmNsdWRlIGl0IGluIHRoZSBy ZWNlaXZlZCBtc2dfY29udHJvbGxlbi4gV2hlbiByZWN2bXNnKCkgaXMgY2FsbGVkCiAgaWYgbXNn X2NvbnRyb2xsZW4gaXMgdG9vIHNtYWxsIGZvciBhbGwgdGhlIGFuY2lsbGFyeSBkYXRhIGl0ZW1z CiAgaW5jbHVkaW5nIGFueSB0cmFpbGluZyBwYWRkaW5nIGFmdGVyIHRoZSBsYXN0IGl0ZW0gYW4g aW1wbGVtZW50YXRpb24KICBtYXkgc2V0IE1TR19DVFJVTkMuCgpTaW5jZSB3ZSBkaWRuJ3QgcGxh Y2UgTVNHX0NUUlVOQyBmb3IgYWxyZWFkeSBxdWl0ZSBhIGxvbmcgdGltZSwganVzdCBkbwp0aGUg c2FtZSBhcyBpbiAxYWM3MGU3YWQyNGEgdG8gYXZvaWQgYW4gb3ZlcmZsb3cuCgpCdHcsIGV2ZW4g bWFuLXBhZ2UgYXV0aG9yIGdvdCB0aGlzIHdyb25nIDovIFNlZSBkYjkzOWM5YjI2ZTkgKCJjbXNn LjM6IEZpeAplcnJvciBpbiBTQ01fUklHSFRTIGNvZGUgc2FtcGxlIikuIFNvbWUgcGVvcGxlIG11 c3QgaGF2ZSBjb3BpZWQgdGhpcyAoPyksCnRodXMgaXQgZ290IHRyaWdnZXJlZCBpbiB0aGUgd2ls ZCAocmVwb3J0ZWQgc2V2ZXJhbCB0aW1lcyBkdXJpbmcgYm9vdCBieQpEYXZpZCBhbmQgSGFjS3Vy eCkuCgpObyBGaXhlcyB0YWcgdGhpcyB0aW1lIGFzIHByZSAyMDAyICh0aGF0IGlzLCBwcmUgaGlz dG9yeSB0cmVlKS4KClJlcG9ydGVkLWJ5OiBEYXZpZCBTdGVyYmEgPGRhdmVAamlrb3MuY3o+ClJl cG9ydGVkLWJ5OiBIYWNLdXJ4IDxoYWNrdXJ4QGdtYWlsLmNvbT4KQ2M6IFBhWCBUZWFtIDxwYWdl ZXhlY0BmcmVlbWFpbC5odT4KQ2M6IEVtZXNlIFJldmZ5IDxyZS5lbWVzZUBnbWFpbC5jb20+CkNj OiBCcmFkIFNwZW5nbGVyIDxzcGVuZGVyQGdyc2VjdXJpdHkubmV0PgpDYzogV2VpIFlvbmdqdW4g PHlvbmdqdW5fd2VpQHRyZW5kbWljcm8uY29tLmNuPgpDYzogRXJpYyBEdW1hemV0IDxlZHVtYXpl dEBnb29nbGUuY29tPgpSZXZpZXdlZC1ieTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0Bz dHJlc3NpbmR1a3Rpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQm9ya21hbm4gPGRhbmll bEBpb2dlYXJib3gubmV0PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRh dmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2NvcmUvc2NtLmMgfCAyICsrCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc2NtLmMgYi9uZXQvY29yZS9z Y20uYwppbmRleCAzYjY4OTliLi44YTE3NDFiIDEwMDY0NAotLS0gYS9uZXQvY29yZS9zY20uYwor KysgYi9uZXQvY29yZS9zY20uYwpAQCAtMzA1LDYgKzMwNSw4IEBAIHZvaWQgc2NtX2RldGFjaF9m ZHMoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKQogCQkJZXJyID0g cHV0X3VzZXIoY21sZW4sICZjbS0+Y21zZ19sZW4pOwogCQlpZiAoIWVycikgewogCQkJY21sZW4g PSBDTVNHX1NQQUNFKGkqc2l6ZW9mKGludCkpOworCQkJaWYgKG1zZy0+bXNnX2NvbnRyb2xsZW4g PCBjbWxlbikKKwkJCQljbWxlbiA9IG1zZy0+bXNnX2NvbnRyb2xsZW47CiAJCQltc2ctPm1zZ19j b250cm9sICs9IGNtbGVuOwogCQkJbXNnLT5tc2dfY29udHJvbGxlbiAtPSBjbWxlbjsKIAkJfQot LSAKMi4xLjAKCgpGcm9tIGZkMTAxMTYwNjVlOWE3YmRlNmViNzBmM2Y2OWM1ZTllYzI3MjJlMmUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5pa29sYXkgQWxla3NhbmRyb3YgPG5pa29s YXlAY3VtdWx1c25ldHdvcmtzLmNvbT4KRGF0ZTogRnJpLCAyMCBOb3YgMjAxNSAxMzo1NDoxOSAr MDEwMApTdWJqZWN0OiBbUEFUQ0ggMzEvNDNdIG5ldDogaXBtcjogZml4IHN0YXRpYyBtZmMvZGV2 IGxlYWtzIG9uIHRhYmxlCiBkZXN0cnVjdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgMGU2MTVlOTYw MWExNWVmZWViODk0MmNmN2NkNGRhZGJhMGM4YzVhNyBdCgpXaGVuIGRlc3Ryb3lpbmcgYW4gbXJ0 IHRhYmxlIHRoZSBzdGF0aWMgbWZjIGVudHJpZXMgYW5kIHRoZSBzdGF0aWMKZGV2aWNlcyBhcmUg a2VwdCwgd2hpY2ggbGVhZHMgdG8gZGV2aWNlcyB0aGF0IGNhbiBuZXZlciBiZSBkZXN0cm95ZWQK KGJlY2F1c2Ugb2YgcmVmY250IHRha2VuKSBhbmQgbGVha2VkIG1lbW9yeSwgZm9yIGV4YW1wbGU6 CnVucmVmZXJlbmNlZCBvYmplY3QgMHhmZmZmODgwMDM0YzE0NGMwIChzaXplIDE5Mik6CiAgY29t bSAibWZjLWJyb2tlbiIsIHBpZCA0Nzc3LCBqaWZmaWVzIDQzMjAzNDkwNTUgKGFnZSA0NjAwMS45 NjRzKQogIGhleCBkdW1wIChmaXJzdCAzMiBieXRlcyk6CiAgICA5OCA1MyBmMCAzNCAwMCA4OCBm ZiBmZiA5OCA1MyBmMCAzNCAwMCA4OCBmZiBmZiAgLlMuNC4uLi4uUy40Li4uLgogICAgZWYgMGEg MGEgMTQgMDEgMDIgMDMgMDQgMDAgMDAgMDAgMDAgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u Li4KICBiYWNrdHJhY2U6CiAgICBbPGZmZmZmZmZmODE1YzFiOWU+XSBrbWVtbGVha19hbGxvYysw eDRlLzB4YjAKICAgIFs8ZmZmZmZmZmY4MTFlYTZlMD5dIGttZW1fY2FjaGVfYWxsb2MrMHgxOTAv MHgzMDAKICAgIFs8ZmZmZmZmZmY4MTU5MzFjYj5dIGlwX21yb3V0ZV9zZXRzb2Nrb3B0KzB4NWNi LzB4OTEwCiAgICBbPGZmZmZmZmZmODE1M2Q1NzU+XSBkb19pcF9zZXRzb2Nrb3B0LmlzcmEuMTEr MHgxMDUvMHhmZjAKICAgIFs8ZmZmZmZmZmY4MTUzZTQ5MD5dIGlwX3NldHNvY2tvcHQrMHgzMC8w eGEwCiAgICBbPGZmZmZmZmZmODE1NjRlMTM+XSByYXdfc2V0c29ja29wdCsweDMzLzB4OTAKICAg IFs8ZmZmZmZmZmY4MTRkMWUxND5dIHNvY2tfY29tbW9uX3NldHNvY2tvcHQrMHgxNC8weDIwCiAg ICBbPGZmZmZmZmZmODE0ZDBiNTE+XSBTeVNfc2V0c29ja29wdCsweDcxLzB4YzAKICAgIFs8ZmZm ZmZmZmY4MTVjZGJmNj5dIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGgrMHgxNi8weDdhCiAgICBb PGZmZmZmZmZmZmZmZmZmZmY+XSAweGZmZmZmZmZmZmZmZmZmZmYKCk1ha2Ugc3VyZSB0aGF0IGV2 ZXJ5dGhpbmcgaXMgY2xlYW5lZCBvbiBuZXRucyBkZXN0cnVjdGlvbi4KClNpZ25lZC1vZmYtYnk6 IE5pa29sYXkgQWxla3NhbmRyb3YgPG5pa29sYXlAY3VtdWx1c25ldHdvcmtzLmNvbT4KUmV2aWV3 ZWQtYnk6IENvbmcgV2FuZyA8Y3dhbmdAdHdvcGVuc291cmNlLmNvbT4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L2lwbXIu YyB8IDE1ICsrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcG1yLmMgYi9uZXQvaXB2NC9p cG1yLmMKaW5kZXggOGU4MjAzZC4uZWY3ZTJjNCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBtci5j CisrKyBiL25ldC9pcHY0L2lwbXIuYwpAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyBpbnQgX19p cG1yX2ZpbGxfbXJvdXRlKHN0cnVjdCBtcl90YWJsZSAqbXJ0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti LAogCQkJICAgICAgc3RydWN0IG1mY19jYWNoZSAqYywgc3RydWN0IHJ0bXNnICpydG0pOwogc3Rh dGljIHZvaWQgbXJvdXRlX25ldGxpbmtfZXZlbnQoc3RydWN0IG1yX3RhYmxlICptcnQsIHN0cnVj dCBtZmNfY2FjaGUgKm1mYywKIAkJCQkgaW50IGNtZCk7Ci1zdGF0aWMgdm9pZCBtcm91dGVfY2xl YW5fdGFibGVzKHN0cnVjdCBtcl90YWJsZSAqbXJ0KTsKK3N0YXRpYyB2b2lkIG1yb3V0ZV9jbGVh bl90YWJsZXMoc3RydWN0IG1yX3RhYmxlICptcnQsIGJvb2wgYWxsKTsKIHN0YXRpYyB2b2lkIGlw bXJfZXhwaXJlX3Byb2Nlc3ModW5zaWduZWQgbG9uZyBhcmcpOwogCiAjaWZkZWYgQ09ORklHX0lQ X01ST1VURV9NVUxUSVBMRV9UQUJMRVMKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgc3RydWN0 IG1yX3RhYmxlICppcG1yX25ld190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZCkKIHN0YXRp YyB2b2lkIGlwbXJfZnJlZV90YWJsZShzdHJ1Y3QgbXJfdGFibGUgKm1ydCkKIHsKIAlkZWxfdGlt ZXJfc3luYygmbXJ0LT5pcG1yX2V4cGlyZV90aW1lcik7Ci0JbXJvdXRlX2NsZWFuX3RhYmxlcyht cnQpOworCW1yb3V0ZV9jbGVhbl90YWJsZXMobXJ0LCB0cnVlKTsKIAlrZnJlZShtcnQpOwogfQog CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBzdGF0aWMgaW50IGlwbXJfbWZjX2FkZChzdHJ1Y3QgbmV0 ICpuZXQsIHN0cnVjdCBtcl90YWJsZSAqbXJ0LAogICoJQ2xvc2UgdGhlIG11bHRpY2FzdCBzb2Nr ZXQsIGFuZCBjbGVhciB0aGUgdmlmIHRhYmxlcyBldGMKICAqLwogCi1zdGF0aWMgdm9pZCBtcm91 dGVfY2xlYW5fdGFibGVzKHN0cnVjdCBtcl90YWJsZSAqbXJ0KQorc3RhdGljIHZvaWQgbXJvdXRl X2NsZWFuX3RhYmxlcyhzdHJ1Y3QgbXJfdGFibGUgKm1ydCwgYm9vbCBhbGwpCiB7CiAJaW50IGk7 CiAJTElTVF9IRUFEKGxpc3QpOwpAQCAtMTIxNyw4ICsxMjE3LDkgQEAgc3RhdGljIHZvaWQgbXJv dXRlX2NsZWFuX3RhYmxlcyhzdHJ1Y3QgbXJfdGFibGUgKm1ydCkKIAkvKiBTaHV0IGRvd24gYWxs IGFjdGl2ZSB2aWYgZW50cmllcyAqLwogCiAJZm9yIChpID0gMDsgaSA8IG1ydC0+bWF4dmlmOyBp KyspIHsKLQkJaWYgKCEobXJ0LT52aWZfdGFibGVbaV0uZmxhZ3MgJiBWSUZGX1NUQVRJQykpCi0J CQl2aWZfZGVsZXRlKG1ydCwgaSwgMCwgJmxpc3QpOworCQlpZiAoIWFsbCAmJiAobXJ0LT52aWZf dGFibGVbaV0uZmxhZ3MgJiBWSUZGX1NUQVRJQykpCisJCQljb250aW51ZTsKKwkJdmlmX2RlbGV0 ZShtcnQsIGksIDAsICZsaXN0KTsKIAl9CiAJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueSgmbGlz dCk7CiAKQEAgLTEyMjYsNyArMTIyNyw3IEBAIHN0YXRpYyB2b2lkIG1yb3V0ZV9jbGVhbl90YWJs ZXMoc3RydWN0IG1yX3RhYmxlICptcnQpCiAKIAlmb3IgKGkgPSAwOyBpIDwgTUZDX0xJTkVTOyBp KyspIHsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGMsIG5leHQsICZtcnQtPm1mY19jYWNo ZV9hcnJheVtpXSwgbGlzdCkgewotCQkJaWYgKGMtPm1mY19mbGFncyAmIE1GQ19TVEFUSUMpCisJ CQlpZiAoIWFsbCAmJiAoYy0+bWZjX2ZsYWdzICYgTUZDX1NUQVRJQykpCiAJCQkJY29udGludWU7 CiAJCQlsaXN0X2RlbF9yY3UoJmMtPmxpc3QpOwogCQkJbXJvdXRlX25ldGxpbmtfZXZlbnQobXJ0 LCBjLCBSVE1fREVMUk9VVEUpOwpAQCAtMTI2MSw3ICsxMjYyLDcgQEAgc3RhdGljIHZvaWQgbXJ0 c29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spCiAJCQkJCQkgICAgTkVUQ09ORkFfSUZJTkRF WF9BTEwsCiAJCQkJCQkgICAgbmV0LT5pcHY0LmRldmNvbmZfYWxsKTsKIAkJCVJDVV9JTklUX1BP SU5URVIobXJ0LT5tcm91dGVfc2ssIE5VTEwpOwotCQkJbXJvdXRlX2NsZWFuX3RhYmxlcyhtcnQp OworCQkJbXJvdXRlX2NsZWFuX3RhYmxlcyhtcnQsIGZhbHNlKTsKIAkJfQogCX0KIAlydG5sX3Vu bG9jaygpOwotLSAKMi4xLjAKCgpGcm9tIDZmZWE3YTZiZjlhODMyZWEzMDZhODE2MjA0OTg0ZTIy NDQwMDA3ODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5pa29sYXkgQWxla3NhbmRy b3YgPG5pa29sYXlAY3VtdWx1c25ldHdvcmtzLmNvbT4KRGF0ZTogRnJpLCAyMCBOb3YgMjAxNSAx Mzo1NDoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMzIvNDNdIG5ldDogaXA2bXI6IGZpeCBzdGF0 aWMgbWZjL2RldiBsZWFrcyBvbiB0YWJsZQogZGVzdHJ1Y3Rpb24KClsgVXBzdHJlYW0gY29tbWl0 IDRjNjk4MDQ2MmYzMmI0ZjI4MmM1ZDhlNWY3ZWE4MDcwZTI5Mzc3MjUgXQoKU2ltaWxhciB0byBp cHY0LCB3aGVuIGRlc3Ryb3lpbmcgYW4gbXJ0IHRhYmxlIHRoZSBzdGF0aWMgbWZjIGVudHJpZXMg YW5kCnRoZSBzdGF0aWMgZGV2aWNlcyBhcmUga2VwdCwgd2hpY2ggbGVhZHMgdG8gZGV2aWNlcyB0 aGF0IGNhbiBuZXZlciBiZQpkZXN0cm95ZWQgKGJlY2F1c2Ugb2YgcmVmY250IHRha2VuKSBhbmQg bGVha2VkIG1lbW9yeS4gTWFrZSBzdXJlIHRoYXQKZXZlcnl0aGluZyBpcyBjbGVhbmVkIHVwIG9u IG5ldG5zIGRlc3RydWN0aW9uLgoKRml4ZXM6IDgyMjllZmRhZWYxZSAoIm5ldG5zOiBpcDZtcjog ZW5hYmxlIG5hbWVzcGFjZSBzdXBwb3J0IGluIGlwdjYgbXVsdGljYXN0IGZvcndhcmRpbmcgY29k ZSIpCkNDOiBCZW5qYW1pbiBUaGVyeSA8YmVuamFtaW4udGhlcnlAYnVsbC5uZXQ+ClNpZ25lZC1v ZmYtYnk6IE5pa29sYXkgQWxla3NhbmRyb3YgPG5pa29sYXlAY3VtdWx1c25ldHdvcmtzLmNvbT4K UmV2aWV3ZWQtYnk6IENvbmcgV2FuZyA8Y3dhbmdAdHdvcGVuc291cmNlLmNvbT4KU2lnbmVkLW9m Zi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY2 L2lwNm1yLmMgfCAxNSArKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlv bnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2bXIuYyBiL25l dC9pcHY2L2lwNm1yLmMKaW5kZXggMGUwMDRjYy4uMzVlZWU3MiAxMDA2NDQKLS0tIGEvbmV0L2lw djYvaXA2bXIuYworKysgYi9uZXQvaXB2Ni9pcDZtci5jCkBAIC0xMTgsNyArMTE4LDcgQEAgc3Rh dGljIHZvaWQgbXI2X25ldGxpbmtfZXZlbnQoc3RydWN0IG1yNl90YWJsZSAqbXJ0LCBzdHJ1Y3Qg bWZjNl9jYWNoZSAqbWZjLAogCQkJICAgICAgaW50IGNtZCk7CiBzdGF0aWMgaW50IGlwNm1yX3J0 bV9kdW1wcm91dGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgICBzdHJ1Y3QgbmV0bGlu a19jYWxsYmFjayAqY2IpOwotc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFuX3RhYmxlcyhzdHJ1Y3Qg bXI2X3RhYmxlICptcnQpOworc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFuX3RhYmxlcyhzdHJ1Y3Qg bXI2X3RhYmxlICptcnQsIGJvb2wgYWxsKTsKIHN0YXRpYyB2b2lkIGlwbXJfZXhwaXJlX3Byb2Nl c3ModW5zaWduZWQgbG9uZyBhcmcpOwogCiAjaWZkZWYgQ09ORklHX0lQVjZfTVJPVVRFX01VTFRJ UExFX1RBQkxFUwpAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXI2X3RhYmxlICpp cDZtcl9uZXdfdGFibGUoc3RydWN0IG5ldCAqbmV0LCB1MzIgaWQpCiBzdGF0aWMgdm9pZCBpcDZt cl9mcmVlX3RhYmxlKHN0cnVjdCBtcjZfdGFibGUgKm1ydCkKIHsKIAlkZWxfdGltZXJfc3luYygm bXJ0LT5pcG1yX2V4cGlyZV90aW1lcik7Ci0JbXJvdXRlX2NsZWFuX3RhYmxlcyhtcnQpOworCW1y b3V0ZV9jbGVhbl90YWJsZXMobXJ0LCB0cnVlKTsKIAlrZnJlZShtcnQpOwogfQogCkBAIC0xNTQy LDcgKzE1NDIsNyBAQCBzdGF0aWMgaW50IGlwNm1yX21mY19hZGQoc3RydWN0IG5ldCAqbmV0LCBz dHJ1Y3QgbXI2X3RhYmxlICptcnQsCiAgKglDbG9zZSB0aGUgbXVsdGljYXN0IHNvY2tldCwgYW5k IGNsZWFyIHRoZSB2aWYgdGFibGVzIGV0YwogICovCiAKLXN0YXRpYyB2b2lkIG1yb3V0ZV9jbGVh bl90YWJsZXMoc3RydWN0IG1yNl90YWJsZSAqbXJ0KQorc3RhdGljIHZvaWQgbXJvdXRlX2NsZWFu X3RhYmxlcyhzdHJ1Y3QgbXI2X3RhYmxlICptcnQsIGJvb2wgYWxsKQogewogCWludCBpOwogCUxJ U1RfSEVBRChsaXN0KTsKQEAgLTE1NTIsOCArMTU1Miw5IEBAIHN0YXRpYyB2b2lkIG1yb3V0ZV9j bGVhbl90YWJsZXMoc3RydWN0IG1yNl90YWJsZSAqbXJ0KQogCSAqCVNodXQgZG93biBhbGwgYWN0 aXZlIHZpZiBlbnRyaWVzCiAJICovCiAJZm9yIChpID0gMDsgaSA8IG1ydC0+bWF4dmlmOyBpKysp IHsKLQkJaWYgKCEobXJ0LT52aWY2X3RhYmxlW2ldLmZsYWdzICYgVklGRl9TVEFUSUMpKQotCQkJ bWlmNl9kZWxldGUobXJ0LCBpLCAmbGlzdCk7CisJCWlmICghYWxsICYmIChtcnQtPnZpZjZfdGFi bGVbaV0uZmxhZ3MgJiBWSUZGX1NUQVRJQykpCisJCQljb250aW51ZTsKKwkJbWlmNl9kZWxldGUo bXJ0LCBpLCAmbGlzdCk7CiAJfQogCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoJmxpc3QpOwog CkBAIC0xNTYyLDcgKzE1NjMsNyBAQCBzdGF0aWMgdm9pZCBtcm91dGVfY2xlYW5fdGFibGVzKHN0 cnVjdCBtcjZfdGFibGUgKm1ydCkKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgTUZDNl9MSU5FUzsg aSsrKSB7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjLCBuZXh0LCAmbXJ0LT5tZmM2X2Nh Y2hlX2FycmF5W2ldLCBsaXN0KSB7Ci0JCQlpZiAoYy0+bWZjX2ZsYWdzICYgTUZDX1NUQVRJQykK KwkJCWlmICghYWxsICYmIChjLT5tZmNfZmxhZ3MgJiBNRkNfU1RBVElDKSkKIAkJCQljb250aW51 ZTsKIAkJCXdyaXRlX2xvY2tfYmgoJm1ydF9sb2NrKTsKIAkJCWxpc3RfZGVsKCZjLT5saXN0KTsK QEAgLTE2MjUsNyArMTYyNiw3IEBAIGludCBpcDZtcl9za19kb25lKHN0cnVjdCBzb2NrICpzaykK IAkJCQkJCSAgICAgbmV0LT5pcHY2LmRldmNvbmZfYWxsKTsKIAkJCXdyaXRlX3VubG9ja19iaCgm bXJ0X2xvY2spOwogCi0JCQltcm91dGVfY2xlYW5fdGFibGVzKG1ydCk7CisJCQltcm91dGVfY2xl YW5fdGFibGVzKG1ydCwgZmFsc2UpOwogCQkJZXJyID0gMDsKIAkJCWJyZWFrOwogCQl9Ci0tIAoy LjEuMAoKCkZyb20gNDZiMTUyNjE0NTNhODIxZTNkMzM4ODkxODk3MTVkNjFjNGZiMGFmMiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTmlrb2xheSBBbGVrc2FuZHJvdiA8bmlrb2xheUBj dW11bHVzbmV0d29ya3MuY29tPgpEYXRlOiBTYXQsIDIxIE5vdiAyMDE1IDE5OjQ2OjE5ICswMTAw ClN1YmplY3Q6IFtQQVRDSCAzMy80M10gdnJmOiBmaXggZG91YmxlIGZyZWUgYW5kIG1lbW9yeSBj b3JydXB0aW9uIG9uCiByZWdpc3Rlcl9uZXRkZXZpY2UgZmFpbHVyZQoKWyBVcHN0cmVhbSBjb21t aXQgN2YxMDlmN2NjMzcxMDhjYmE3MjQzYmM4MzI5ODg1MjViMGQ4NTkwOSBdCgpXaGVuIHZyZidz IC0+bmV3bGluayBpcyBjYWxsZWQsIGlmIHJlZ2lzdGVyX25ldGRldmljZSgpIGZhaWxzIHRoZW4g aXQKZG9lcyBmcmVlX25ldGRldigpLCBidXQgdGhhdCdzIGFsc28gZG9uZSBieSBydG5sX25ld2xp bmsoKSBzbyBhIHNlY29uZApmcmVlIGhhcHBlbnMgYW5kIG1lbW9yeSBnZXRzIGNvcnJ1cHRlZCwg dG8gcmVwcm9kdWNlIGV4ZWN1dGUgdGhlCmZvbGxvd2luZyBsaW5lIGEgY291cGxlIG9mIHRpbWVz ICgxIC0gNSB1c3VhbGx5IGlzIGVub3VnaCk6CiQgZm9yIGkgaW4gYHNlcSAxIDVgOyBkbyBpcCBs aW5rIGFkZCB2cmY6IHR5cGUgdnJmIHRhYmxlIDE7IGRvbmU7ClRoaXMgd29ya3MgYmVjYXVzZSB3 ZSBmYWlsIGluIHJlZ2lzdGVyX25ldGRldmljZSgpIGJlY2F1c2Ugb2YgdGhlIHdyb25nCm5hbWUg InZyZjoiLgoKQW5kIGhlcmUncyBhIHRyYWNlIG9mIG9uZSBjcmFzaDoKWyAgIDI4Ljc5MjE1N10g LS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tClsgICAyOC43OTI0MDddIGtlcm5l bCBCVUcgYXQgZnMvbmFtZWkuYzoyNDYhClsgICAyOC43OTI2MDhdIGludmFsaWQgb3Bjb2RlOiAw MDAwIFsjMV0gU01QClsgICAyOC43OTMyNDBdIE1vZHVsZXMgbGlua2VkIGluOiB2cmYgbmZzZCBh dXRoX3JwY2dzcyBvaWRfcmVnaXN0cnkKbmZzX2FjbCBuZnMgbG9ja2QgZ3JhY2Ugc3VucnBjIGNy Y3QxMGRpZl9wY2xtdWwgY3JjMzJfcGNsbXVsCmNyYzMyY19pbnRlbCBxeGwgZHJtX2ttc19oZWxw ZXIgdHRtIGRybSBhZXNuaV9pbnRlbCBhZXNfeDg2XzY0IHBzbW91c2UKZ2x1ZV9oZWxwZXIgbHJ3 IGV2ZGV2IGdmMTI4bXVsIGkyY19waWl4NCBhYmxrX2hlbHBlciBjcnlwdGQgcHBkZXYKcGFycG9y dF9wYyBwYXJwb3J0IHNlcmlvX3JhdyBwY3Nwa3IgdmlydGlvX2JhbGxvb24gdmlydGlvX2NvbnNv bGUKaTJjX2NvcmUgYWNwaV9jcHVmcmVxIGJ1dHRvbiA5cG5ldF92aXJ0aW8gOXAgOXBuZXQgZnNj YWNoZSBpcHY2IGF1dG9mczQKZXh0NCBjcmMxNiBtYmNhY2hlIGpiZDIgdmlydGlvX2JsayB2aXJ0 aW9fbmV0IHNnIHNyX21vZCBjZHJvbQphdGFfZ2VuZXJpYyBlaGNpX3BjaSB1aGNpX2hjZCBlaGNp X2hjZCBlMTAwMCB1c2Jjb3JlIHVzYl9jb21tb24gYXRhX3BpaXgKbGliYXRhIHZpcnRpb19wY2kg dmlydGlvX3JpbmcgdmlydGlvIHNjc2lfbW9kIGZsb3BweQpbICAgMjguNzk2MDE2XSBDUFU6IDAg UElEOiAxMTQ4IENvbW06IGxkLWxpbnV4LXg4Ni02NCBOb3QgdGFpbnRlZAo0LjQuMC1yYzErICMy NApbICAgMjguNzk2MDE2XSBIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlgg KyBQSUlYLCAxOTk2KSwKQklPUyAxLjguMS0yMDE1MDMxOF8xODMzNTgtIDA0LzAxLzIwMTQKWyAg IDI4Ljc5NjAxNl0gdGFzazogZmZmZjg4MDAzNTI1NjFjMCB0aTogZmZmZjg4MDAzNTkyYzAwMCB0 YXNrLnRpOgpmZmZmODgwMDM1OTJjMDAwClsgICAyOC43OTYwMTZdIFJJUDogMDAxMDpbPGZmZmZm ZmZmODEyMTg3YjM+XSAgWzxmZmZmZmZmZjgxMjE4N2IzPl0KcHV0bmFtZSsweDQzLzB4NjAKWyAg IDI4Ljc5NjAxNl0gUlNQOiAwMDE4OmZmZmY4ODAwMzU5MmZlODggIEVGTEFHUzogMDAwMTAyNDYK WyAgIDI4Ljc5NjAxNl0gUkFYOiAwMDAwMDAwMDAwMDAwMDAwIFJCWDogZmZmZjg4MDAzNTI1NjFj MCBSQ1g6CjAwMDAwMDAwMDAwMDAwMDEKWyAgIDI4Ljc5NjAxNl0gUkRYOiAwMDAwMDAwMDAwMDAw MDAwIFJTSTogMDAwMDAwMDAwMDAwMDAwMCBSREk6CmZmZmY4ODAwMzc4NGYwMDAKWyAgIDI4Ljc5 NjAxNl0gUkJQOiBmZmZmODgwMDM1OTJmZjA4IFIwODogMDAwMDAwMDAwMDAwMDAwMSBSMDk6CjAw MDAwMDAwMDAwMDAwMDAKWyAgIDI4Ljc5NjAxNl0gUjEwOiAwMDAwMDAwMDAwMDAwMDAwIFIxMTog MDAwMDAwMDAwMDAwMDAwMSBSMTI6CjAwMDAwMDAwMDAwMDAwMDAKWyAgIDI4Ljc5NjAxNl0gUjEz OiAwMDAwMDAwMDAwMDAwNDdjIFIxNDogZmZmZjg4MDAzNzg0ZjAwMCBSMTU6CmZmZmY4ODAwMzU4 YzRhMDAKWyAgIDI4Ljc5NjAxNl0gRlM6ICAwMDAwMDAwMDAwMDAwMDAwKDAwMDApIEdTOmZmZmY4 ODAwM2ZjMDAwMDAoMDAwMCkKa25sR1M6MDAwMDAwMDAwMDAwMDAwMApbICAgMjguNzk2MDE2XSBD UzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgwMDUwMDMzClsgICAyOC43 OTYwMTZdIENSMjogMDAwMDdmZmQ1ODNiYzJkOSBDUjM6IDAwMDAwMDAwMzVhOTkwMDAgQ1I0Ogow MDAwMDAwMDAwMDQwNmYwClsgICAyOC43OTYwMTZdIFN0YWNrOgpbICAgMjguNzk2MDE2XSAgZmZm ZmZmZmY4MTIxMDQ1ZCBmZmZmZmZmZjgxMjEwMmQzIGZmZmY4ODAwMzUyNTYxYzAKZmZmZjg4MDAz NWE5MTY2MApbICAgMjguNzk2MDE2XSAgZmZmZjg4MDAwMDhhOTg4MCAwMDAwMDAwMDAwMDAwMDAw IGZmZmZmZmZmODFhNDk5NDAKMDBmZmZmZmY4MTIxODY4NApbICAgMjguNzk2MDE2XSAgZmZmZjg4 MDAzNTI1NjFjMCAwMDAwMDAwMDAwMDAwNDdjIDAwMDAwMDAwMDAwMDAwMDAKZmZmZjg4MDAzNWIz NmQ4MApbICAgMjguNzk2MDE2XSBDYWxsIFRyYWNlOgpbICAgMjguNzk2MDE2XSAgWzxmZmZmZmZm ZjgxMjEwNDVkPl0gPwpkb19leGVjdmVhdF9jb21tb24uaXNyYS4zNCsweDc0ZC8weDkzMApbICAg MjguNzk2MDE2XSAgWzxmZmZmZmZmZjgxMjEwMmQzPl0gPwpkb19leGVjdmVhdF9jb21tb24uaXNy YS4zNCsweDVjMy8weDkzMApbICAgMjguNzk2MDE2XSAgWzxmZmZmZmZmZjgxMjEwNjZjPl0gZG9f ZXhlY3ZlKzB4MmMvMHgzMApbICAgMjguNzk2MDE2XSAgWzxmZmZmZmZmZjgxMDkzOWEwPl0KY2Fs bF91c2VybW9kZWhlbHBlcl9leGVjX2FzeW5jKzB4ZjAvMHgxNDAKWyAgIDI4Ljc5NjAxNl0gIFs8 ZmZmZmZmZmY4MTA5MzhiMD5dID8gdW1oX2NvbXBsZXRlKzB4NDAvMHg0MApbICAgMjguNzk2MDE2 XSAgWzxmZmZmZmZmZjgxNWNiMWFmPl0gcmV0X2Zyb21fZm9yaysweDNmLzB4NzAKWyAgIDI4Ljc5 NjAxNl0gQ29kZTogNDggOGQgNDcgMWMgNDggODkgZTUgNTMgNDggOGIgMzcgNDggODkgZmIgNDgg MzkgYzYKNzQgMWEgNDggOGIgM2QgN2UgZTkgOGYgMDAgZTggNDkgZmEgZmMgZmYgNDggODkgZGYg ZTggZjEgMDEgZmQgZmYgNWIgNWQKZjMgYzMgPDBmPiAwYiA0OCA4OSBmZSA0OCA4YiAzZCA2MSBl OSA4ZiAwMCBlOCAyYyBmYSBmYyBmZiA1YiA1ZCBlYiBlOQpbICAgMjguNzk2MDE2XSBSSVAgIFs8 ZmZmZmZmZmY4MTIxODdiMz5dIHB1dG5hbWUrMHg0My8weDYwClsgICAyOC43OTYwMTZdICBSU1Ag PGZmZmY4ODAwMzU5MmZlODg+CgpGaXhlczogMTkzMTI1ZGJkOGViICgibmV0OiBJbnRyb2R1Y2Ug VlJGIGRldmljZSBkcml2ZXIiKQpTaWduZWQtb2ZmLWJ5OiBOaWtvbGF5IEFsZWtzYW5kcm92IDxu aWtvbGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+CkFja2VkLWJ5OiBEYXZpZCBBaGVybiA8ZHNhQGN1 bXVsdXNuZXR3b3Jrcy5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1A ZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC92cmYuYyB8IDE1ICsrLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvdnJmLmMgYi9kcml2ZXJzL25ldC92cmYuYwppbmRleCA0ODhj NmY1Li5jOWUzMDljIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC92cmYuYworKysgYi9kcml2ZXJz L25ldC92cmYuYwpAQCAtNTgxLDcgKzU4MSw2IEBAIHN0YXRpYyBpbnQgdnJmX25ld2xpbmsoc3Ry dWN0IG5ldCAqc3JjX25ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIHsKIAlzdHJ1Y3QgbmV0 X3ZyZiAqdnJmID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlzdHJ1Y3QgbmV0X3ZyZl9kZXYgKnZyZl9w dHI7Ci0JaW50IGVycjsKIAogCWlmICghZGF0YSB8fCAhZGF0YVtJRkxBX1ZSRl9UQUJMRV0pCiAJ CXJldHVybiAtRUlOVkFMOwpAQCAtNTkwLDI2ICs1ODksMTYgQEAgc3RhdGljIGludCB2cmZfbmV3 bGluayhzdHJ1Y3QgbmV0ICpzcmNfbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiAJZGV2 LT5wcml2X2ZsYWdzIHw9IElGRl9WUkZfTUFTVEVSOwogCi0JZXJyID0gLUVOT01FTTsKIAl2cmZf cHRyID0ga21hbGxvYyhzaXplb2YoKmRldi0+dnJmX3B0ciksIEdGUF9LRVJORUwpOwogCWlmICgh dnJmX3B0cikKLQkJZ290byBvdXRfZmFpbDsKKwkJcmV0dXJuIC1FTk9NRU07CiAKIAl2cmZfcHRy LT5pZmluZGV4ID0gZGV2LT5pZmluZGV4OwogCXZyZl9wdHItPnRiX2lkID0gdnJmLT50Yl9pZDsK IAotCWVyciA9IHJlZ2lzdGVyX25ldGRldmljZShkZXYpOwotCWlmIChlcnIgPCAwKQotCQlnb3Rv IG91dF9mYWlsOwotCiAJcmN1X2Fzc2lnbl9wb2ludGVyKGRldi0+dnJmX3B0ciwgdnJmX3B0cik7 CiAKLQlyZXR1cm4gMDsKLQotb3V0X2ZhaWw6Ci0Ja2ZyZWUodnJmX3B0cik7Ci0JZnJlZV9uZXRk ZXYoZGV2KTsKLQlyZXR1cm4gZXJyOworCXJldHVybiByZWdpc3Rlcl9uZXRkZXYoZGV2KTsKIH0K IAogc3RhdGljIHNpemVfdCB2cmZfbmxfZ2V0c2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAq ZGV2KQotLSAKMi4xLjAKCgpGcm9tIDNhYzQwNjNmOTkwYTllMTA2Yzg5NzFkNjBlMWI0MzA1MThm YjVjZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEFhcm8gS29za2luZW4gPGFhcm8u a29za2luZW5AaWtpLmZpPgpEYXRlOiBTdW4sIDIyIE5vdiAyMDE1IDAxOjA4OjU0ICswMjAwClN1 YmplY3Q6IFtQQVRDSCAzNC80M10gYnJvYWRjb206IGZpeCBQSFlfSURfQkNNNTQ4MSBlbnRyeSBp biB0aGUgaWQgdGFibGUKClsgVXBzdHJlYW0gY29tbWl0IDNjMjVhODYwZDE3YjczNzg4MjJmMzVk OGM5MTQxZGI5NTA3ZTNiZWIgXQoKQ29tbWl0IGZjYjI2ZWM1YjE4ZCAoImJyb2FkY29tOiBtb3Zl IGFsbCBQSFlfSUQncyB0byBoZWFkZXIiKQp1cGRhdGVkIGJyb2FkY29tX3RibCB0byB1c2UgUEhZ X0lEcywgYnV0IGluY29ycmVjdGx5IHJlcGxhY2VkIDB4MDE0M2JjYTAKd2l0aCBQSFlfSURfQkNN NTQ4MiAobWFraW5nIGEgZHVwbGljYXRlIGVudHJ5LCBhbmQgY29tcGxldGVseSBvbWl0dGluZwp0 aGUgb3JpZ2luYWwpLiBGaXggdGhhdC4KCkZpeGVzOiBmY2IyNmVjNWIxOGQgKCJicm9hZGNvbTog bW92ZSBhbGwgUEhZX0lEJ3MgdG8gaGVhZGVyIikKU2lnbmVkLW9mZi1ieTogQWFybyBLb3NraW5l biA8YWFyby5rb3NraW5lbkBpa2kuZmk+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC9waHkvYnJvYWRjb20uYyB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jIGIvZHJpdmVycy9uZXQvcGh5L2Jyb2Fk Y29tLmMKaW5kZXggOWM3MTI5NS4uODVlNjQwNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Bo eS9icm9hZGNvbS5jCisrKyBiL2RyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jCkBAIC02NzUsNyAr Njc1LDcgQEAgc3RhdGljIHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBicm9h ZGNvbV90YmxbXSA9IHsKIAl7IFBIWV9JRF9CQ001NDYxLCAweGZmZmZmZmYwIH0sCiAJeyBQSFlf SURfQkNNNTQ2MTZTLCAweGZmZmZmZmYwIH0sCiAJeyBQSFlfSURfQkNNNTQ2NCwgMHhmZmZmZmZm MCB9LAotCXsgUEhZX0lEX0JDTTU0ODIsIDB4ZmZmZmZmZjAgfSwKKwl7IFBIWV9JRF9CQ001NDgx LCAweGZmZmZmZmYwIH0sCiAJeyBQSFlfSURfQkNNNTQ4MiwgMHhmZmZmZmZmMCB9LAogCXsgUEhZ X0lEX0JDTTUwNjEwLCAweGZmZmZmZmYwIH0sCiAJeyBQSFlfSURfQkNNNTA2MTBNLCAweGZmZmZm ZmYwIH0sCi0tIAoyLjEuMAoKCkZyb20gZDcxYjdjZDcxNDYzNzhiMzEyNTJlMzNhMjNhZDY5M2I2 ZDQ2MWVkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogWWluZyBYdWUgPHlpbmcueHVl QHdpbmRyaXZlci5jb20+CkRhdGU6IFR1ZSwgMjQgTm92IDIwMTUgMTM6NTc6NTcgKzA4MDAKU3Vi amVjdDogW1BBVENIIDM1LzQzXSB0aXBjOiBmaXggZXJyb3IgaGFuZGxpbmcgb2YgZXhwYW5kaW5n IGJ1ZmZlciBoZWFkcm9vbQoKWyBVcHN0cmVhbSBjb21taXQgNzA5ODM1NmJhY2E3MjM1MTNlOTdj YTAwMjBkZjRlMThiYzM1M2JlMyBdCgpDb3Zlcml0eSBzYXlzOgoKKioqIENJRCAxMzM4MDY1OiAg RXJyb3IgaGFuZGxpbmcgaXNzdWVzICAoQ0hFQ0tFRF9SRVRVUk4pCi9uZXQvdGlwYy91ZHBfbWVk aWEuYzogMTYyIGluIHRpcGNfdWRwX3NlbmRfbXNnKCkKMTU2ICAgICAJc3RydWN0IHVkcF9tZWRp YV9hZGRyICpkc3QgPSAoc3RydWN0IHVkcF9tZWRpYV9hZGRyICopJmRlc3QtPnZhbHVlOwoxNTcg ICAgIAlzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKnNyYyA9IChzdHJ1Y3QgdWRwX21lZGlhX2FkZHIg KikmYi0+YWRkci52YWx1ZTsKMTU4ICAgICAJc3RydWN0IHNrX2J1ZmYgKmNsb25lOwoxNTkgICAg IAlzdHJ1Y3QgcnRhYmxlICpydDsKMTYwCjE2MSAgICAgCWlmIChza2JfaGVhZHJvb20oc2tiKSA8 IFVEUF9NSU5fSEVBRFJPT00pCj4+PiAgICAgQ0lEIDEzMzgwNjU6ICBFcnJvciBoYW5kbGluZyBp c3N1ZXMgIChDSEVDS0VEX1JFVFVSTikKPj4+ICAgICBDYWxsaW5nICJwc2tiX2V4cGFuZF9oZWFk IiB3aXRob3V0IGNoZWNraW5nIHJldHVybiB2YWx1ZSAoYXMgaXMgZG9uZSBlbHNld2hlcmUgNTEg b3V0IG9mIDU2IHRpbWVzKS4KMTYyICAgICAJCXBza2JfZXhwYW5kX2hlYWQoc2tiLCBVRFBfTUlO X0hFQURST09NLCAwLCBHRlBfQVRPTUlDKTsKMTYzCjE2NCAgICAgCWNsb25lID0gc2tiX2Nsb25l KHNrYiwgR0ZQX0FUT01JQyk7CjE2NSAgICAgCXNrYl9zZXRfaW5uZXJfcHJvdG9jb2woY2xvbmUs IGh0b25zKEVUSF9QX1RJUEMpKTsKMTY2ICAgICAJdWIgPSByY3VfZGVyZWZlcmVuY2VfcnRubChi LT5tZWRpYV9wdHIpOwoxNjcgICAgIAlpZiAoIXViKSB7CgpXaGVuIGV4cGFuZGluZyBidWZmZXIg aGVhZHJvb20gb3ZlciB1ZHAgdHVubmVsIHdpdGggcHNrYl9leHBhbmRfaGVhZCgpLAppdCdzIHVu Zm9ydHVuYXRlIHRoYXQgd2UgZG9uJ3QgY2hlY2sgaXRzIHJldHVybiB2YWx1ZS4gQXMgYSByZXN1 bHQsIGlmCnRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yIGNvZGUgZHVlIHRvIHRoZSBsYWNr IG9mIG1lbW9yeSwgaXQgbWF5CmNhdXNlIHVucHJlZGljdGFibGUgY29uc2VxdWVuY2UgYXMgd2Ug dW5jb25kaXRpb25hbGx5IGNvbnNpZGVyIHRoYXQKaXQncyBhbHdheXMgc3VjY2Vzc2Z1bC4KCkZp eGVzOiBlNTM1Njc5NDhmODIgKCJ0aXBjOiBjb25kaXRpb25hbGx5IGV4cGFuZCBidWZmZXIgaGVh ZHJvb20gb3ZlciB1ZHAgdHVubmVsIikKUmVwb3J0ZWQtYnk6IDxzY2FuLWFkbWluQGNvdmVyaXR5 LmNvbT4KQ2M6IFN0ZXBoZW4gSGVtbWluZ2VyIDxzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZz4K U2lnbmVkLW9mZi1ieTogWWluZyBYdWUgPHlpbmcueHVlQHdpbmRyaXZlci5jb20+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvdGlw Yy91ZHBfbWVkaWEuYyB8IDcgKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvdGlwYy91ZHBfbWVkaWEuYyBiL25l dC90aXBjL3VkcF9tZWRpYS5jCmluZGV4IGNkN2M1ZjEuLjg2ZjJlN2MgMTAwNjQ0Ci0tLSBhL25l dC90aXBjL3VkcF9tZWRpYS5jCisrKyBiL25ldC90aXBjL3VkcF9tZWRpYS5jCkBAIC0xNTksOCAr MTU5LDExIEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfc2VuZF9tc2coc3RydWN0IG5ldCAqbmV0LCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXN0cnVjdCBza19idWZmICpjbG9uZTsKIAlzdHJ1Y3QgcnRh YmxlICpydDsKIAotCWlmIChza2JfaGVhZHJvb20oc2tiKSA8IFVEUF9NSU5fSEVBRFJPT00pCi0J CXBza2JfZXhwYW5kX2hlYWQoc2tiLCBVRFBfTUlOX0hFQURST09NLCAwLCBHRlBfQVRPTUlDKTsK KwlpZiAoc2tiX2hlYWRyb29tKHNrYikgPCBVRFBfTUlOX0hFQURST09NKSB7CisJCWVyciA9IHBz a2JfZXhwYW5kX2hlYWQoc2tiLCBVRFBfTUlOX0hFQURST09NLCAwLCBHRlBfQVRPTUlDKTsKKwkJ aWYgKGVycikKKwkJCWdvdG8gdHhfZXJyb3I7CisJfQogCiAJY2xvbmUgPSBza2JfY2xvbmUoc2ti LCBHRlBfQVRPTUlDKTsKIAlza2Jfc2V0X2lubmVyX3Byb3RvY29sKGNsb25lLCBodG9ucyhFVEhf UF9USVBDKSk7Ci0tIAoyLjEuMAoKCkZyb20gZDI2ODM0Njg0ZmY5NjMyNTllZDdmZDllMTljODE2 ZWQ3MWQ3YmY2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP01pY2hh bD0yMEt1YmU9QzQ9OERlaz89IDxta3ViZWNla0BzdXNlLmN6PgpEYXRlOiBUdWUsIDI0IE5vdiAy MDE1IDE1OjA3OjExICswMTAwClN1YmplY3Q6IFtQQVRDSCAzNi80M10gaXB2NjogZGlzdGluZ3Vp c2ggZnJhZyBxdWV1ZXMgYnkgZGV2aWNlIGZvciBtdWx0aWNhc3QKIGFuZCBsaW5rLWxvY2FsIHBh Y2tldHMKClsgVXBzdHJlYW0gY29tbWl0IDI2NDY0MGZjMmM1ZjRmOTEzZGI1YzczZmEzZWIxZWFk MmM0NWU5ZDcgXQoKSWYgYSBmcmFnbWVudGVkIG11bHRpY2FzdCBwYWNrZXQgaXMgcmVjZWl2ZWQg b24gYW4gZXRoZXJuZXQgZGV2aWNlIHdoaWNoCmhhcyBhbiBhY3RpdmUgbWFjdmxhbiBvbiB0b3Ag b2YgaXQsIGVhY2ggZnJhZ21lbnQgaXMgZHVwbGljYXRlZCBhbmQKcmVjZWl2ZWQgYm90aCBvbiB0 aGUgdW5kZXJseWluZyBkZXZpY2UgYW5kIHRoZSBtYWN2bGFuLiBJZiBzb21lCmZyYWdtZW50cyBm b3IgbWFjdmxhbiBhcmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUgd2hvbGUgcGFja2V0IGZvciB0aGUK dW5kZXJseWluZyBkZXZpY2UgaXMgcmVhc3NlbWJsZWQsIHRoZSAib3ZlcmxhcHBpbmcgZnJhZ21l bnRzIiB0ZXN0IGluCmlwNl9mcmFnX3F1ZXVlKCkgZGlzY2FyZHMgdGhlIHdob2xlIGZyYWdtZW50 IHF1ZXVlLgoKVG8gcmVzb2x2ZSB0aGlzLCBhZGQgZGV2aWNlIGlmaW5kZXggdG8gdGhlIHNlYXJj aCBrZXkgYW5kIHJlcXVpcmUgaXQgdG8KbWF0Y2ggcmVhc3NlbWJsaW5nIG11bHRpY2FzdCBwYWNr ZXRzIGFuZCBwYWNrZXRzIHRvIGxpbmstbG9jYWwKYWRkcmVzc2VzLgoKTm90ZTogc2ltaWxhciBw YXRjaCBoYXMgYmVlbiBhbHJlYWR5IHN1Ym1pdHRlZCBieSBZb3NoaWZ1amkgSGlkZWFraSBpbgoK ICBodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvMjIwOTc5LwoKYnV0IGdvdCBsb3N0 IGFuZCBmb3Jnb3R0ZW4gZm9yIHNvbWUgcmVhc29uLgoKU2lnbmVkLW9mZi1ieTogTWljaGFsIEt1 YmVjZWsgPG1rdWJlY2VrQHN1c2UuY3o+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9pcHY2LmggICAgICAgICAgICAg ICAgICAgICAgfCAgMSArCiBuZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMg fCAgNSArKystLQogbmV0L2lwdjYvcmVhc3NlbWJseS5jICAgICAgICAgICAgICAgICAgIHwgMTAg KysrKysrKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYuaCBiL2luY2x1ZGUvbmV0L2lwdjYu aAppbmRleCA3MTFjY2E0Li4xYjYzNzE3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcHY2LmgK KysrIGIvaW5jbHVkZS9uZXQvaXB2Ni5oCkBAIC00OTAsNiArNDkwLDcgQEAgc3RydWN0IGlwNl9j cmVhdGVfYXJnIHsKIAl1MzIgdXNlcjsKIAljb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNyYzsKIAlj b25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRzdDsKKwlpbnQgaWlmOwogCXU4IGVjbjsKIH07CiAKZGlm ZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYyBiL25ldC9p cHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYwppbmRleCBjNzE5NmFkLi5kYzUwMTQz IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKKysr IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jCkBAIC0xOTAsNyArMTkw LDcgQEAgc3RhdGljIHZvaWQgbmZfY3RfZnJhZzZfZXhwaXJlKHVuc2lnbmVkIGxvbmcgZGF0YSkK IC8qIENyZWF0aW9uIHByaW1pdGl2ZXMuICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmcmFnX3F1 ZXVlICpmcV9maW5kKHN0cnVjdCBuZXQgKm5ldCwgX19iZTMyIGlkLAogCQkJCQkgdTMyIHVzZXIs IHN0cnVjdCBpbjZfYWRkciAqc3JjLAotCQkJCQkgc3RydWN0IGluNl9hZGRyICpkc3QsIHU4IGVj bikKKwkJCQkJIHN0cnVjdCBpbjZfYWRkciAqZHN0LCBpbnQgaWlmLCB1OCBlY24pCiB7CiAJc3Ry dWN0IGluZXRfZnJhZ19xdWV1ZSAqcTsKIAlzdHJ1Y3QgaXA2X2NyZWF0ZV9hcmcgYXJnOwpAQCAt MjAwLDYgKzIwMCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZyYWdfcXVldWUgKmZxX2ZpbmQo c3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgaWQsCiAJYXJnLnVzZXIgPSB1c2VyOwogCWFyZy5zcmMg PSBzcmM7CiAJYXJnLmRzdCA9IGRzdDsKKwlhcmcuaWlmID0gaWlmOwogCWFyZy5lY24gPSBlY247 CiAKIAlsb2NhbF9iaF9kaXNhYmxlKCk7CkBAIC02MDMsNyArNjA0LDcgQEAgc3RydWN0IHNrX2J1 ZmYgKm5mX2N0X2ZyYWc2X2dhdGhlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgdXNlcikKIAlm aGRyID0gKHN0cnVjdCBmcmFnX2hkciAqKXNrYl90cmFuc3BvcnRfaGVhZGVyKGNsb25lKTsKIAog CWZxID0gZnFfZmluZChuZXQsIGZoZHItPmlkZW50aWZpY2F0aW9uLCB1c2VyLCAmaGRyLT5zYWRk ciwgJmhkci0+ZGFkZHIsCi0JCSAgICAgaXA2X2ZyYWdfZWNuKGhkcikpOworCQkgICAgIHNrYi0+ ZGV2ID8gc2tiLT5kZXYtPmlmaW5kZXggOiAwLCBpcDZfZnJhZ19lY24oaGRyKSk7CiAJaWYgKGZx ID09IE5VTEwpIHsKIAkJcHJfZGVidWcoIkNhbid0IGZpbmQgYW5kIGNhbid0IGNyZWF0ZSBuZXcg cXVldWVcbiIpOwogCQlnb3RvIHJldF9vcmlnOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcmVhc3Nl bWJseS5jIGIvbmV0L2lwdjYvcmVhc3NlbWJseS5jCmluZGV4IGYxMTU5YmIuLjA0MDEzYTkgMTAw NjQ0Ci0tLSBhL25ldC9pcHY2L3JlYXNzZW1ibHkuYworKysgYi9uZXQvaXB2Ni9yZWFzc2VtYmx5 LmMKQEAgLTEwOCw3ICsxMDgsMTAgQEAgYm9vbCBpcDZfZnJhZ19tYXRjaChjb25zdCBzdHJ1Y3Qg aW5ldF9mcmFnX3F1ZXVlICpxLCBjb25zdCB2b2lkICphKQogCXJldHVybglmcS0+aWQgPT0gYXJn LT5pZCAmJgogCQlmcS0+dXNlciA9PSBhcmctPnVzZXIgJiYKIAkJaXB2Nl9hZGRyX2VxdWFsKCZm cS0+c2FkZHIsIGFyZy0+c3JjKSAmJgotCQlpcHY2X2FkZHJfZXF1YWwoJmZxLT5kYWRkciwgYXJn LT5kc3QpOworCQlpcHY2X2FkZHJfZXF1YWwoJmZxLT5kYWRkciwgYXJnLT5kc3QpICYmCisJCShh cmctPmlpZiA9PSBmcS0+aWlmIHx8CisJCSAhKGlwdjZfYWRkcl90eXBlKGFyZy0+ZHN0KSAmIChJ UFY2X0FERFJfTVVMVElDQVNUIHwKKwkJCQkJICAgICAgIElQVjZfQUREUl9MSU5LTE9DQUwpKSk7 CiB9CiBFWFBPUlRfU1lNQk9MKGlwNl9mcmFnX21hdGNoKTsKIApAQCAtMTgwLDcgKzE4Myw3IEBA IHN0YXRpYyB2b2lkIGlwNl9mcmFnX2V4cGlyZSh1bnNpZ25lZCBsb25nIGRhdGEpCiAKIHN0YXRp YyBzdHJ1Y3QgZnJhZ19xdWV1ZSAqCiBmcV9maW5kKHN0cnVjdCBuZXQgKm5ldCwgX19iZTMyIGlk LCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnNyYywKLQljb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmRz dCwgdTggZWNuKQorCWNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZHN0LCBpbnQgaWlmLCB1OCBlY24p CiB7CiAJc3RydWN0IGluZXRfZnJhZ19xdWV1ZSAqcTsKIAlzdHJ1Y3QgaXA2X2NyZWF0ZV9hcmcg YXJnOwpAQCAtMTkwLDYgKzE5Myw3IEBAIGZxX2ZpbmQoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIg aWQsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqc3JjLAogCWFyZy51c2VyID0gSVA2X0RFRlJBR19M T0NBTF9ERUxJVkVSOwogCWFyZy5zcmMgPSBzcmM7CiAJYXJnLmRzdCA9IGRzdDsKKwlhcmcuaWlm ID0gaWlmOwogCWFyZy5lY24gPSBlY247CiAKIAloYXNoID0gaW5ldDZfaGFzaF9mcmFnKGlkLCBz cmMsIGRzdCk7CkBAIC01NTEsNyArNTU1LDcgQEAgc3RhdGljIGludCBpcHY2X2ZyYWdfcmN2KHN0 cnVjdCBza19idWZmICpza2IpCiAJfQogCiAJZnEgPSBmcV9maW5kKG5ldCwgZmhkci0+aWRlbnRp ZmljYXRpb24sICZoZHItPnNhZGRyLCAmaGRyLT5kYWRkciwKLQkJICAgICBpcDZfZnJhZ19lY24o aGRyKSk7CisJCSAgICAgc2tiLT5kZXYgPyBza2ItPmRldi0+aWZpbmRleCA6IDAsIGlwNl9mcmFn X2VjbihoZHIpKTsKIAlpZiAoZnEpIHsKIAkJaW50IHJldDsKIAotLSAKMi4xLjAKCgpGcm9tIGE5 YmI3YjY1YWM3Y2QxNmJhZmM1Y2JkNGViYjE4MmNlNWJiY2I0ODggTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IFF1ZW50aW4gQ2FzYXNub3ZhcyA8cXVlbnRpbi5jYXNhc25vdmFzQG9yYWNs ZS5jb20+CkRhdGU6IFR1ZSwgMjQgTm92IDIwMTUgMTc6MTM6MjEgLTA1MDAKU3ViamVjdDogW1BB VENIIDM3LzQzXSBSRFM6IGZpeCByYWNlIGNvbmRpdGlvbiB3aGVuIHNlbmRpbmcgYSBtZXNzYWdl IG9uCiB1bmJvdW5kIHNvY2tldAoKWyBVcHN0cmVhbSBjb21taXQgOGM3MTg4YjIzNDc0Y2NhMDE3 YjNlZjM1NGM0YTU4NDU2ZjY4MzAzYSBdCgpTYXNoYSdzIGZvdW5kIGEgTlVMTCBwb2ludGVyIGRl cmVmZXJlbmNlIGluIHRoZSBSRFMgY29ubmVjdGlvbiBjb2RlIHdoZW4Kc2VuZGluZyBhIG1lc3Nh Z2UgdG8gYW4gYXBwYXJlbnRseSB1bmJvdW5kIHNvY2tldC4gIFRoZSBwcm9ibGVtIGlzIGNhdXNl ZApieSB0aGUgY29kZSBjaGVja2luZyBpZiB0aGUgc29ja2V0IGlzIGJvdW5kIGluIHJkc19zZW5k bXNnKCksIHdoaWNoIGNoZWNrcwp0aGUgcnNfYm91bmRfYWRkciBmaWVsZCB3aXRob3V0IHRha2lu ZyBhIGxvY2sgb24gdGhlIHNvY2tldC4gIFRoaXMgb3BlbnMgYQpyYWNlIHdoZXJlIHJzX2JvdW5k X2FkZHIgaXMgdGVtcG9yYXJpbHkgc2V0IGJ1dCB3aGVyZSB0aGUgdHJhbnNwb3J0IGlzIG5vdApp biByZHNfYmluZCgpLCBsZWFkaW5nIHRvIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4g dHJ5aW5nIHRvCmRlcmVmZXJlbmNlICd0cmFucycgaW4gX19yZHNfY29ubl9jcmVhdGUoKS4KClZl Z2FyZCB3cm90ZSBhIHJlcHJvZHVjZXIgZm9yIHRoaXMgaXNzdWUsIHNvIGtpbmRseSBhc2sgaGlt IHRvIHNoYXJlIGlmCnlvdSdyZSBpbnRlcmVzdGVkLgoKSSBjYW5ub3QgcmVwcm9kdWNlIHRoZSBO VUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgdXNpbmcgVmVnYXJkJ3MgcmVwcm9kdWNlcgp3aXRoIHRo aXMgcGF0Y2gsIHdoZXJlYXMgSSBjb3VsZCB3aXRob3V0LgoKQ29tcGxldGUgZWFybGllciBpbmNv bXBsZXRlIGZpeCB0byBDVkUtMjAxNS02OTM3OgoKICA3NGU5OGViMDg1ODggKCJSRFM6IHZlcmlm eSB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgZXhpc3RzIGJlZm9yZSBjcmVhdGluZyBhIGNvbm5l Y3Rpb24iKQoKQ2M6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KQ2M6IHN0 YWJsZUB2Z2VyLmtlcm5lbC5vcmcKClJldmlld2VkLWJ5OiBWZWdhcmQgTm9zc3VtIDx2ZWdhcmQu bm9zc3VtQG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGEubGV2aW5A b3JhY2xlLmNvbT4KQWNrZWQtYnk6IFNhbnRvc2ggU2hpbGlta2FyIDxzYW50b3NoLnNoaWxpbWth ckBvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBRdWVudGluIENhc2Fzbm92YXMgPHF1ZW50aW4u Y2FzYXNub3Zhc0BvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3Jkcy9jb25uZWN0aW9uLmMgfCA2IC0tLS0tLQog bmV0L3Jkcy9zZW5kLmMgICAgICAgfCA0ICsrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRp b25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9yZHMvY29ubmVjdGlvbi5j IGIvbmV0L3Jkcy9jb25uZWN0aW9uLmMKaW5kZXggNDlhZGVlZi4uOWIyZGU1ZSAxMDA2NDQKLS0t IGEvbmV0L3Jkcy9jb25uZWN0aW9uLmMKKysrIGIvbmV0L3Jkcy9jb25uZWN0aW9uLmMKQEAgLTE5 MCwxMiArMTkwLDYgQEAgbmV3X2Nvbm46CiAJCX0KIAl9CiAKLQlpZiAodHJhbnMgPT0gTlVMTCkg ewotCQlrbWVtX2NhY2hlX2ZyZWUocmRzX2Nvbm5fc2xhYiwgY29ubik7Ci0JCWNvbm4gPSBFUlJf UFRSKC1FTk9ERVYpOwotCQlnb3RvIG91dDsKLQl9Ci0KIAljb25uLT5jX3RyYW5zID0gdHJhbnM7 CiAKIAlyZXQgPSB0cmFucy0+Y29ubl9hbGxvYyhjb25uLCBnZnApOwpkaWZmIC0tZ2l0IGEvbmV0 L3Jkcy9zZW5kLmMgYi9uZXQvcmRzL3NlbmQuYwppbmRleCA0ZGY2MWE1Li44NTlkZTZmIDEwMDY0 NAotLS0gYS9uZXQvcmRzL3NlbmQuYworKysgYi9uZXQvcmRzL3NlbmQuYwpAQCAtMTAwOSwxMSAr MTAwOSwxMyBAQCBpbnQgcmRzX3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1z Z2hkciAqbXNnLCBzaXplX3QgcGF5bG9hZF9sZW4pCiAJCXJlbGVhc2Vfc29jayhzayk7CiAJfQog Ci0JLyogcmFjaW5nIHdpdGggYW5vdGhlciB0aHJlYWQgYmluZGluZyBzZWVtcyBvayBoZXJlICov CisJbG9ja19zb2NrKHNrKTsKIAlpZiAoZGFkZHIgPT0gMCB8fCBycy0+cnNfYm91bmRfYWRkciA9 PSAwKSB7CisJCXJlbGVhc2Vfc29jayhzayk7CiAJCXJldCA9IC1FTk9UQ09OTjsgLyogWFhYIG5v dCBhIGdyZWF0IGVycm5vICovCiAJCWdvdG8gb3V0OwogCX0KKwlyZWxlYXNlX3NvY2soc2spOwog CiAJaWYgKHBheWxvYWRfbGVuID4gcmRzX3NrX3NuZGJ1ZihycykpIHsKIAkJcmV0ID0gLUVNU0dT SVpFOwotLSAKMi4xLjAKCgpGcm9tIGY2Yzc5NjdmMjVlODIyMDkxM2JlZGY1OTZjMjYwYzM3OWRh YjUzNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IERhbmllbCBCb3JrbWFubiA8ZGFu aWVsQGlvZ2VhcmJveC5uZXQ+CkRhdGU6IE1vbiwgMzAgTm92IDIwMTUgMTM6MDI6NTYgKzAxMDAK U3ViamVjdDogW1BBVENIIDM4LzQzXSBicGYsIGFycmF5OiBmaXggaGVhcCBvdXQtb2YtYm91bmRz IGFjY2VzcyB3aGVuIHVwZGF0aW5nCiBlbGVtZW50cwoKWyBVcHN0cmVhbSBjb21taXQgZmJjYTlk MmQzNWM2ZWYxYjMyM2ZhZTc1Y2M5NTQ1MDA1YmEyNTA5NyBdCgpEdXJpbmcgb3duIHJldmlldyBi dXQgYWxzbyByZXBvcnRlZCBieSBEbWl0cnkncyBzeXprYWxsZXIgWzFdIGl0IGhhcyBiZWVuCm5v dGljZWQgdGhhdCB3ZSB0cmlnZ2VyIGEgaGVhcCBvdXQtb2YtYm91bmRzIGFjY2VzcyBvbiBlQlBG IGFycmF5IG1hcHMKd2hlbiB1cGRhdGluZyBlbGVtZW50cy4gVGhpcyBoYXBwZW5zIHdpdGggZWFj aCBtYXAgd2hvc2UgbWFwLT52YWx1ZV9zaXplCihzcGVjaWZpZWQgZHVyaW5nIG1hcCBjcmVhdGlv biB0aW1lKSBpcyBub3QgbXVsdGlwbGUgb2YgOCBieXRlcy4KCkluIGFycmF5X21hcF9hbGxvYygp LCBlbGVtX3NpemUgaXMgcm91bmRfdXAoYXR0ci0+dmFsdWVfc2l6ZSwgOCkgYW5kCnVzZWQgdG8g YWxpZ24gYXJyYXkgbWFwIHNsb3RzIGZvciBmYXN0ZXIgYWNjZXNzLiBIb3dldmVyLCBpbiBmdW5j dGlvbgphcnJheV9tYXBfdXBkYXRlX2VsZW0oKSwgd2UgdXBkYXRlIHRoZSBlbGVtZW50IGFzIC4u LgoKbWVtY3B5KGFycmF5LT52YWx1ZSArIGFycmF5LT5lbGVtX3NpemUgKiBpbmRleCwgdmFsdWUs IGFycmF5LT5lbGVtX3NpemUpOwoKLi4uIHdoZXJlIHdlIGFjY2VzcyAndmFsdWUnIG91dC1vZi1i b3VuZHMsIHNpbmNlIGl0IHdhcyBhbGxvY2F0ZWQgZnJvbQptYXBfdXBkYXRlX2VsZW0oKSBmcm9t IHN5c2NhbGwgc2lkZSBhcyBrbWFsbG9jKG1hcC0+dmFsdWVfc2l6ZSwgR0ZQX1VTRVIpCmFuZCBs YXRlciBvbiBjb3BpZWQgdGhyb3VnaCBjb3B5X2Zyb21fdXNlcih2YWx1ZSwgdXZhbHVlLCBtYXAt PnZhbHVlX3NpemUpLgpUaHVzLCB1cCB0byA3IGJ5dGVzLCB3ZSBjYW4gYWNjZXNzIG91dC1vZi1i b3VuZHMuCgpTYW1lIGNvdWxkIGhhcHBlbiBmcm9tIHdpdGhpbiBhbiBlQlBGIHByb2dyYW0sIHdo ZXJlIGluIHdvcnN0IGNhc2Ugd2UKYWNjZXNzIGJleW9uZCBhbiBlQlBGIHByb2dyYW0ncyBkZXNp Z25hdGVkIHN0YWNrLgoKU2luY2UgMWJlN2Y3NWQxNjY4ICgiYnBmOiBlbmFibGUgbm9uLXJvb3Qg ZUJQRiBwcm9ncmFtcyIpIGRpZG4ndCBoaXQgYW4Kb2ZmaWNpYWwgcmVsZWFzZSB5ZXQsIGl0IG9u bHkgYWZmZWN0cyBwcml2aWxlZGdlZCB1c2Vycy4KCkluIGNhc2Ugb2YgYXJyYXlfbWFwX2xvb2t1 cF9lbGVtKCksIHRoZSB2ZXJpZmllciBwcmV2ZW50cyBlQlBGIHByb2dyYW1zCmZyb20gYWNjZXNz aW5nIGJleW9uZCBtYXAtPnZhbHVlX3NpemUgdGhyb3VnaCBjaGVja19tYXBfYWNjZXNzKCkuIEFs c28KZnJvbSBzeXNjYWxsIHNpZGUgbWFwX2xvb2t1cF9lbGVtKCkgb25seSBjb3BpZXMgbWFwLT52 YWx1ZV9zaXplIGJhY2sgdG8KdXNlciwgc28gbm90aGluZyBjb3VsZCBsZWFrLgoKICBbMV0gaHR0 cDovL2dpdGh1Yi5jb20vZ29vZ2xlL3N5emthbGxlcgoKRml4ZXM6IDI4ZmJjZmEwOGQ4ZSAoImJw ZjogYWRkIGFycmF5IHR5cGUgb2YgZUJQRiBtYXBzIikKUmVwb3J0ZWQtYnk6IERtaXRyeSBWeXVr b3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEJvcmttYW5uIDxk YW5pZWxAaW9nZWFyYm94Lm5ldD4KQWNrZWQtYnk6IEFsZXhlaSBTdGFyb3ZvaXRvdiA8YXN0QGtl cm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0 Lm5ldD4KLS0tCiBrZXJuZWwvYnBmL2FycmF5bWFwLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Fy cmF5bWFwLmMgYi9rZXJuZWwvYnBmL2FycmF5bWFwLmMKaW5kZXggMjlhY2UxMC4uN2EwZGVjZiAx MDA2NDQKLS0tIGEva2VybmVsL2JwZi9hcnJheW1hcC5jCisrKyBiL2tlcm5lbC9icGYvYXJyYXlt YXAuYwpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBpbnQgYXJyYXlfbWFwX3VwZGF0ZV9lbGVt KHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsCiAJCS8qIGFsbCBl bGVtZW50cyBhbHJlYWR5IGV4aXN0ICovCiAJCXJldHVybiAtRUVYSVNUOwogCi0JbWVtY3B5KGFy cmF5LT52YWx1ZSArIGFycmF5LT5lbGVtX3NpemUgKiBpbmRleCwgdmFsdWUsIGFycmF5LT5lbGVt X3NpemUpOworCW1lbWNweShhcnJheS0+dmFsdWUgKyBhcnJheS0+ZWxlbV9zaXplICogaW5kZXgs IHZhbHVlLCBtYXAtPnZhbHVlX3NpemUpOwogCXJldHVybiAwOwogfQogCi0tIAoyLjEuMAoKCkZy b20gNWMzYzY3YmEzNGM2NDBmYTNkOTNmZjRlMDUwNmNiNTgyNjYxOWRlMiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRl OiBTdW4sIDI5IE5vdiAyMDE1IDE5OjM3OjU3IC0wODAwClN1YmplY3Q6IFtQQVRDSCAzOS80M10g aXB2NjogYWRkIGNvbXBsZXRlIHJjdSBwcm90ZWN0aW9uIGFyb3VuZCBucC0+b3B0CgpbIFVwc3Ry ZWFtIGNvbW1pdCA0NWY2ZmFkODRjYzMwNTEwM2IyOGQ3MzQ4MmIzNDRkN2Y1Yjc2ZjM5IF0KClRo aXMgcGF0Y2ggYWRkcmVzc2VzIG11bHRpcGxlIHByb2JsZW1zIDoKClVEUC9SQVcgc2VuZG1zZygp IG5lZWQgdG8gZ2V0IGEgc3RhYmxlIHN0cnVjdCBpcHY2X3R4b3B0aW9ucwp3aGlsZSBzb2NrZXQg aXMgbm90IGxvY2tlZCA6IE90aGVyIHRocmVhZHMgY2FuIGNoYW5nZSBucC0+b3B0CmNvbmN1cnJl bnRseS4gRG1pdHJ5IHBvc3RlZCBhIHN5emthbGxlcgooaHR0cDovL2dpdGh1Yi5jb20vZ29vZ2xl L3N5emthbGxlcikgcHJvZ3JhbSBkZXNtb25zdHJhdGluZwp1c2UtYWZ0ZXItZnJlZS4KClN0YXJ0 aW5nIHdpdGggVENQL0RDQ1AgbG9ja2xlc3MgbGlzdGVuZXJzLCB0Y3BfdjZfc3luX3JlY3Zfc29j aygpCmFuZCBkY2NwX3Y2X3JlcXVlc3RfcmVjdl9zb2NrKCkgYWxzbyBuZWVkIHRvIHVzZSBSQ1Ug cHJvdGVjdGlvbgp0byBkZXJlZmVyZW5jZSBucC0+b3B0IG9uY2UgKGJlZm9yZSBjYWxsaW5nIGlw djZfZHVwX29wdGlvbnMoKSkKClRoaXMgcGF0Y2ggYWRkcyBmdWxsIFJDVSBwcm90ZWN0aW9uIHRv IG5wLT5vcHQKClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+ ClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQWNrZWQt Ynk6IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2ln bmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGlu Y2x1ZGUvbGludXgvaXB2Ni5oICAgICAgICAgICAgIHwgIDIgKy0KIGluY2x1ZGUvbmV0L2lwdjYu aCAgICAgICAgICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKystCiBuZXQvZGNjcC9pcHY2 LmMgICAgICAgICAgICAgICAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LQogbmV0L2lwdjYvYWZfaW5ldDYuYyAgICAgICAgICAgICAgfCAxMyArKysrKysrKystLS0tCiBu ZXQvaXB2Ni9kYXRhZ3JhbS5jICAgICAgICAgICAgICB8ICA0ICsrKy0KIG5ldC9pcHY2L2V4dGhk cnMuYyAgICAgICAgICAgICAgIHwgIDMgKystCiBuZXQvaXB2Ni9pbmV0Nl9jb25uZWN0aW9uX3Nv Y2suYyB8IDExICsrKysrKysrLS0tCiBuZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMgICAgICAgICB8 IDMzICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogbmV0L2lwdjYvcmF3LmMgICAg ICAgICAgICAgICAgICAgfCAgOCArKysrKystLQogbmV0L2lwdjYvc3luY29va2llcy5jICAgICAg ICAgICAgfCAgMiArLQogbmV0L2lwdjYvdGNwX2lwdjYuYyAgICAgICAgICAgICAgfCAyOCArKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBuZXQvaXB2Ni91ZHAuYyAgICAgICAgICAgICAgICAg ICB8ICA4ICsrKysrKy0tCiBuZXQvbDJ0cC9sMnRwX2lwNi5jICAgICAgICAgICAgICB8ICA4ICsr KysrKy0tCiAxMyBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pcHY2LmggYi9pbmNsdWRlL2xpbnV4L2lw djYuaAppbmRleCBmMWYzMmFmLi4zZTRmZjNmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lw djYuaAorKysgYi9pbmNsdWRlL2xpbnV4L2lwdjYuaApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0cnVj dCBpcHY2X3BpbmZvIHsKIAlzdHJ1Y3QgaXB2Nl9hY19zb2NrbGlzdAkqaXB2Nl9hY19saXN0Owog CXN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0IF9fcmN1ICppcHY2X2ZsX2xpc3Q7CiAKLQlzdHJ1Y3Qg aXB2Nl90eG9wdGlvbnMJKm9wdDsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgX19yY3UJKm9wdDsK IAlzdHJ1Y3Qgc2tfYnVmZgkJKnBrdG9wdGlvbnM7CiAJc3RydWN0IHNrX2J1ZmYJCSpyeHBtdHU7 CiAJc3RydWN0IGluZXQ2X2NvcmsJY29yazsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwdjYu aCBiL2luY2x1ZGUvbmV0L2lwdjYuaAppbmRleCAxYjYzNzE3Li5iMTRlMTU4IDEwMDY0NAotLS0g YS9pbmNsdWRlL25ldC9pcHY2LmgKKysrIGIvaW5jbHVkZS9uZXQvaXB2Ni5oCkBAIC0yMDUsNiAr MjA1LDcgQEAgZXh0ZXJuIHJ3bG9ja190IGlwNl9yYV9sb2NrOwogICovCiAKIHN0cnVjdCBpcHY2 X3R4b3B0aW9ucyB7CisJYXRvbWljX3QJCXJlZmNudDsKIAkvKiBMZW5ndGggb2YgdGhpcyBzdHJ1 Y3R1cmUgKi8KIAlpbnQJCQl0b3RfbGVuOwogCkBAIC0yMTcsNyArMjE4LDcgQEAgc3RydWN0IGlw djZfdHhvcHRpb25zIHsKIAlzdHJ1Y3QgaXB2Nl9vcHRfaGRyCSpkc3Qwb3B0OwogCXN0cnVjdCBp cHY2X3J0X2hkcgkqc3JjcnQ7CS8qIFJvdXRpbmcgSGVhZGVyICovCiAJc3RydWN0IGlwdjZfb3B0 X2hkcgkqZHN0MW9wdDsKLQorCXN0cnVjdCByY3VfaGVhZAkJcmN1OwogCS8qIE9wdGlvbiBidWZm ZXIsIGFzIHJlYWQgYnkgSVBWNl9QS1RPUFRJT05TLCBzdGFydHMgaGVyZS4gKi8KIH07CiAKQEAg LTI1Miw2ICsyNTMsMjQgQEAgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgewogCXN0cnVjdCByY3Vf aGVhZAkJCXJjdTsKIH07CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGlwdjZfdHhvcHRpb25zICp0 eG9wdF9nZXQoY29uc3Qgc3RydWN0IGlwdjZfcGluZm8gKm5wKQoreworCXN0cnVjdCBpcHY2X3R4 b3B0aW9ucyAqb3B0OworCisJcmN1X3JlYWRfbG9jaygpOworCW9wdCA9IHJjdV9kZXJlZmVyZW5j ZShucC0+b3B0KTsKKwlpZiAob3B0ICYmICFhdG9taWNfaW5jX25vdF96ZXJvKCZvcHQtPnJlZmNu dCkpCisJCW9wdCA9IE5VTEw7CisJcmN1X3JlYWRfdW5sb2NrKCk7CisJcmV0dXJuIG9wdDsKK30K Kworc3RhdGljIGlubGluZSB2b2lkIHR4b3B0X3B1dChzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9w dCkKK3sKKwlpZiAob3B0ICYmIGF0b21pY19kZWNfYW5kX3Rlc3QoJm9wdC0+cmVmY250KSkKKwkJ a2ZyZWVfcmN1KG9wdCwgcmN1KTsKK30KKwogc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsNl9zb2Nr X2xvb2t1cChzdHJ1Y3Qgc29jayAqc2ssIF9fYmUzMiBsYWJlbCk7CiBzdHJ1Y3QgaXB2Nl90eG9w dGlvbnMgKmZsNl9tZXJnZV9vcHRpb25zKHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0X3NwYWNl LAogCQkJCQkgc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsLApkaWZmIC0tZ2l0IGEvbmV0L2RjY3Av aXB2Ni5jIGIvbmV0L2RjY3AvaXB2Ni5jCmluZGV4IDUxNjU1NzEuLmEwNDkwNTAgMTAwNjQ0Ci0t LSBhL25ldC9kY2NwL2lwdjYuYworKysgYi9uZXQvZGNjcC9pcHY2LmMKQEAgLTIwMiw3ICsyMDIs OSBAQCBzdGF0aWMgaW50IGRjY3BfdjZfc2VuZF9yZXNwb25zZShzdHJ1Y3Qgc29jayAqc2ssIHN0 cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKIAlzZWN1cml0eV9yZXFfY2xhc3NpZnlfZmxvdyhyZXEs IGZsb3dpNl90b19mbG93aSgmZmw2KSk7CiAKIAotCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgm Zmw2LCBucC0+b3B0LCAmZmluYWwpOworCXJjdV9yZWFkX2xvY2soKTsKKwlmaW5hbF9wID0gZmw2 X3VwZGF0ZV9kc3QoJmZsNiwgcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLCAmZmluYWwpOworCXJj dV9yZWFkX3VubG9jaygpOwogCiAJZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhzaywgJmZsNiwg ZmluYWxfcCk7CiAJaWYgKElTX0VSUihkc3QpKSB7CkBAIC0yMTksNyArMjIxLDEwIEBAIHN0YXRp YyBpbnQgZGNjcF92Nl9zZW5kX3Jlc3BvbnNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVl c3Rfc29jayAqcmVxKQogCQkJCQkJCSAmaXJlcS0+aXJfdjZfbG9jX2FkZHIsCiAJCQkJCQkJICZp cmVxLT5pcl92Nl9ybXRfYWRkcik7CiAJCWZsNi5kYWRkciA9IGlyZXEtPmlyX3Y2X3JtdF9hZGRy OwotCQllcnIgPSBpcDZfeG1pdChzaywgc2tiLCAmZmw2LCBucC0+b3B0LCBucC0+dGNsYXNzKTsK KwkJcmN1X3JlYWRfbG9jaygpOworCQllcnIgPSBpcDZfeG1pdChzaywgc2tiLCAmZmw2LCByY3Vf ZGVyZWZlcmVuY2UobnAtPm9wdCksCisJCQkgICAgICAgbnAtPnRjbGFzcyk7CisJCXJjdV9yZWFk X3VubG9jaygpOwogCQllcnIgPSBuZXRfeG1pdF9ldmFsKGVycik7CiAJfQogCkBAIC00MTUsNiAr NDIwLDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpkY2NwX3Y2X3JlcXVlc3RfcmVjdl9zb2NrKHN0 cnVjdCBzb2NrICpzaywKIHsKIAlzdHJ1Y3QgaW5ldF9yZXF1ZXN0X3NvY2sgKmlyZXEgPSBpbmV0 X3JzayhyZXEpOwogCXN0cnVjdCBpcHY2X3BpbmZvICpuZXducCwgKm5wID0gaW5ldDZfc2soc2sp OworCXN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0OwogCXN0cnVjdCBpbmV0X3NvY2sgKm5ld2lu ZXQ7CiAJc3RydWN0IGRjY3A2X3NvY2sgKm5ld2RwNjsKIAlzdHJ1Y3Qgc29jayAqbmV3c2s7CkBA IC01MzQsMTMgKzU0MCwxNSBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmRjY3BfdjZfcmVxdWVzdF9y ZWN2X3NvY2soc3RydWN0IHNvY2sgKnNrLAogCSAqIFllcywga2VlcGluZyByZWZlcmVuY2UgY291 bnQgd291bGQgYmUgbXVjaCBtb3JlIGNsZXZlciwgYnV0IHdlIG1ha2UKIAkgKiBvbmUgbW9yZSBv bmUgdGhpbmcgdGhlcmU6IHJlYXR0YWNoIG9wdG1lbSB0byBuZXdzay4KIAkgKi8KLQlpZiAobnAt Pm9wdCAhPSBOVUxMKQotCQluZXducC0+b3B0ID0gaXB2Nl9kdXBfb3B0aW9ucyhuZXdzaywgbnAt Pm9wdCk7Ci0KKwlvcHQgPSByY3VfZGVyZWZlcmVuY2UobnAtPm9wdCk7CisJaWYgKG9wdCkgewor CQlvcHQgPSBpcHY2X2R1cF9vcHRpb25zKG5ld3NrLCBvcHQpOworCQlSQ1VfSU5JVF9QT0lOVEVS KG5ld25wLT5vcHQsIG9wdCk7CisJfQogCWluZXRfY3NrKG5ld3NrKS0+aWNza19leHRfaGRyX2xl biA9IDA7Ci0JaWYgKG5ld25wLT5vcHQgIT0gTlVMTCkKLQkJaW5ldF9jc2sobmV3c2spLT5pY3Nr X2V4dF9oZHJfbGVuID0gKG5ld25wLT5vcHQtPm9wdF9uZmxlbiArCi0JCQkJCQkgICAgIG5ld25w LT5vcHQtPm9wdF9mbGVuKTsKKwlpZiAob3B0KQorCQlpbmV0X2NzayhuZXdzayktPmljc2tfZXh0 X2hkcl9sZW4gPSBvcHQtPm9wdF9uZmxlbiArCisJCQkJCQkgICAgb3B0LT5vcHRfZmxlbjsKIAog CWRjY3Bfc3luY19tc3MobmV3c2ssIGRzdF9tdHUoZHN0KSk7CiAKQEAgLTc5Myw2ICs4MDEsNyBA QCBzdGF0aWMgaW50IGRjY3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2Nr YWRkciAqdWFkZHIsCiAJc3RydWN0IGlwdjZfcGluZm8gKm5wID0gaW5ldDZfc2soc2spOwogCXN0 cnVjdCBkY2NwX3NvY2sgKmRwID0gZGNjcF9zayhzayk7CiAJc3RydWN0IGluNl9hZGRyICpzYWRk ciA9IE5VTEwsICpmaW5hbF9wLCBmaW5hbDsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdDsK IAlzdHJ1Y3QgZmxvd2k2IGZsNjsKIAlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiAJaW50IGFkZHJf dHlwZTsKQEAgLTg5Miw3ICs5MDEsOCBAQCBzdGF0aWMgaW50IGRjY3BfdjZfY29ubmVjdChzdHJ1 Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsCiAJZmw2LmZsNl9zcG9ydCA9IGlu ZXQtPmluZXRfc3BvcnQ7CiAJc2VjdXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3Rv X2Zsb3dpKCZmbDYpKTsKIAotCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgmZmw2LCBucC0+b3B0 LCAmZmluYWwpOworCW9wdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQobnAtPm9wdCwgc29j a19vd25lZF9ieV91c2VyKHNrKSk7CisJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG9w dCwgJmZpbmFsKTsKIAogCWRzdCA9IGlwNl9kc3RfbG9va3VwX2Zsb3coc2ssICZmbDYsIGZpbmFs X3ApOwogCWlmIChJU19FUlIoZHN0KSkgewpAQCAtOTEyLDkgKzkyMiw4IEBAIHN0YXRpYyBpbnQg ZGNjcF92Nl9jb25uZWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwK IAlfX2lwNl9kc3Rfc3RvcmUoc2ssIGRzdCwgTlVMTCwgTlVMTCk7CiAKIAlpY3NrLT5pY3NrX2V4 dF9oZHJfbGVuID0gMDsKLQlpZiAobnAtPm9wdCAhPSBOVUxMKQotCQlpY3NrLT5pY3NrX2V4dF9o ZHJfbGVuID0gKG5wLT5vcHQtPm9wdF9mbGVuICsKLQkJCQkJICBucC0+b3B0LT5vcHRfbmZsZW4p OworCWlmIChvcHQpCisJCWljc2stPmljc2tfZXh0X2hkcl9sZW4gPSBvcHQtPm9wdF9mbGVuICsg b3B0LT5vcHRfbmZsZW47CiAKIAlpbmV0LT5pbmV0X2Rwb3J0ID0gdXNpbi0+c2luNl9wb3J0Owog CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9hZl9pbmV0Ni5jIGIvbmV0L2lwdjYvYWZfaW5ldDYuYwpp bmRleCA0NGJiNjZiLi4zOGQ2NmRkIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZl9pbmV0Ni5jCisr KyBiL25ldC9pcHY2L2FmX2luZXQ2LmMKQEAgLTQyOCw5ICs0MjgsMTEgQEAgdm9pZCBpbmV0Nl9k ZXN0cm95X3NvY2soc3RydWN0IHNvY2sgKnNrKQogCiAJLyogRnJlZSB0eCBvcHRpb25zICovCiAK LQlvcHQgPSB4Y2hnKCZucC0+b3B0LCBOVUxMKTsKLQlpZiAob3B0KQotCQlzb2NrX2tmcmVlX3Mo c2ssIG9wdCwgb3B0LT50b3RfbGVuKTsKKwlvcHQgPSB4Y2hnKChfX2ZvcmNlIHN0cnVjdCBpcHY2 X3R4b3B0aW9ucyAqKikmbnAtPm9wdCwgTlVMTCk7CisJaWYgKG9wdCkgeworCQlhdG9taWNfc3Vi KG9wdC0+dG90X2xlbiwgJnNrLT5za19vbWVtX2FsbG9jKTsKKwkJdHhvcHRfcHV0KG9wdCk7CisJ fQogfQogRVhQT1JUX1NZTUJPTF9HUEwoaW5ldDZfZGVzdHJveV9zb2NrKTsKIApAQCAtNjU5LDcg KzY2MSwxMCBAQCBpbnQgaW5ldDZfc2tfcmVidWlsZF9oZWFkZXIoc3RydWN0IHNvY2sgKnNrKQog CQlmbDYuZmw2X3Nwb3J0ID0gaW5ldC0+aW5ldF9zcG9ydDsKIAkJc2VjdXJpdHlfc2tfY2xhc3Np ZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zsb3dpKCZmbDYpKTsKIAotCQlmaW5hbF9wID0gZmw2X3Vw ZGF0ZV9kc3QoJmZsNiwgbnAtPm9wdCwgJmZpbmFsKTsKKwkJcmN1X3JlYWRfbG9jaygpOworCQlm aW5hbF9wID0gZmw2X3VwZGF0ZV9kc3QoJmZsNiwgcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLAor CQkJCQkgJmZpbmFsKTsKKwkJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAkJZHN0ID0gaXA2X2RzdF9s b29rdXBfZmxvdyhzaywgJmZsNiwgZmluYWxfcCk7CiAJCWlmIChJU19FUlIoZHN0KSkgewpkaWZm IC0tZ2l0IGEvbmV0L2lwdjYvZGF0YWdyYW0uYyBiL25ldC9pcHY2L2RhdGFncmFtLmMKaW5kZXgg OWFhZGQ1Ny4uYTQyYTY3MyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvZGF0YWdyYW0uYworKysgYi9u ZXQvaXB2Ni9kYXRhZ3JhbS5jCkBAIC0xNjcsOCArMTY3LDEwIEBAIGlwdjRfY29ubmVjdGVkOgog CiAJc2VjdXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zsb3dpKCZmbDYpKTsK IAotCW9wdCA9IGZsb3dsYWJlbCA/IGZsb3dsYWJlbC0+b3B0IDogbnAtPm9wdDsKKwlyY3VfcmVh ZF9sb2NrKCk7CisJb3B0ID0gZmxvd2xhYmVsID8gZmxvd2xhYmVsLT5vcHQgOiByY3VfZGVyZWZl cmVuY2UobnAtPm9wdCk7CiAJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG9wdCwgJmZp bmFsKTsKKwlyY3VfcmVhZF91bmxvY2soKTsKIAogCWRzdCA9IGlwNl9kc3RfbG9va3VwX2Zsb3co c2ssICZmbDYsIGZpbmFsX3ApOwogCWVyciA9IDA7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9leHRo ZHJzLmMgYi9uZXQvaXB2Ni9leHRoZHJzLmMKaW5kZXggY2UyMDNiMC4uZWE3YzRkNiAxMDA2NDQK LS0tIGEvbmV0L2lwdjYvZXh0aGRycy5jCisrKyBiL25ldC9pcHY2L2V4dGhkcnMuYwpAQCAtNzI3 LDYgKzcyNyw3IEBAIGlwdjZfZHVwX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaXB2 Nl90eG9wdGlvbnMgKm9wdCkKIAkJCSooKGNoYXIgKiopJm9wdDItPmRzdDFvcHQpICs9IGRpZjsK IAkJaWYgKG9wdDItPnNyY3J0KQogCQkJKigoY2hhciAqKikmb3B0Mi0+c3JjcnQpICs9IGRpZjsK KwkJYXRvbWljX3NldCgmb3B0Mi0+cmVmY250LCAxKTsKIAl9CiAJcmV0dXJuIG9wdDI7CiB9CkBA IC03OTAsNyArNzkxLDcgQEAgaXB2Nl9yZW5ld19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3Ry dWN0IGlwdjZfdHhvcHRpb25zICpvcHQsCiAJCXJldHVybiBFUlJfUFRSKC1FTk9CVUZTKTsKIAog CW1lbXNldChvcHQyLCAwLCB0b3RfbGVuKTsKLQorCWF0b21pY19zZXQoJm9wdDItPnJlZmNudCwg MSk7CiAJb3B0Mi0+dG90X2xlbiA9IHRvdF9sZW47CiAJcCA9IChjaGFyICopKG9wdDIgKyAxKTsK IApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaW5ldDZfY29ubmVjdGlvbl9zb2NrLmMgYi9uZXQvaXB2 Ni9pbmV0Nl9jb25uZWN0aW9uX3NvY2suYwppbmRleCA2OTI3ZjNmLi45YmVlZDMwIDEwMDY0NAot LS0gYS9uZXQvaXB2Ni9pbmV0Nl9jb25uZWN0aW9uX3NvY2suYworKysgYi9uZXQvaXB2Ni9pbmV0 Nl9jb25uZWN0aW9uX3NvY2suYwpAQCAtNzcsNyArNzcsOSBAQCBzdHJ1Y3QgZHN0X2VudHJ5ICpp bmV0Nl9jc2tfcm91dGVfcmVxKHN0cnVjdCBzb2NrICpzaywKIAltZW1zZXQoZmw2LCAwLCBzaXpl b2YoKmZsNikpOwogCWZsNi0+Zmxvd2k2X3Byb3RvID0gSVBQUk9UT19UQ1A7CiAJZmw2LT5kYWRk ciA9IGlyZXEtPmlyX3Y2X3JtdF9hZGRyOwotCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdChmbDYs IG5wLT5vcHQsICZmaW5hbCk7CisJcmN1X3JlYWRfbG9jaygpOworCWZpbmFsX3AgPSBmbDZfdXBk YXRlX2RzdChmbDYsIHJjdV9kZXJlZmVyZW5jZShucC0+b3B0KSwgJmZpbmFsKTsKKwlyY3VfcmVh ZF91bmxvY2soKTsKIAlmbDYtPnNhZGRyID0gaXJlcS0+aXJfdjZfbG9jX2FkZHI7CiAJZmw2LT5m bG93aTZfb2lmID0gaXJlcS0+aXJfaWlmOwogCWZsNi0+Zmxvd2k2X21hcmsgPSBpcmVxLT5pcl9t YXJrOwpAQCAtMjA3LDcgKzIwOSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHN0X2VudHJ5ICppbmV0Nl9j c2tfcm91dGVfc29ja2V0KHN0cnVjdCBzb2NrICpzaywKIAlmbDYtPmZsNl9kcG9ydCA9IGluZXQt PmluZXRfZHBvcnQ7CiAJc2VjdXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zs b3dpKGZsNikpOwogCi0JZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KGZsNiwgbnAtPm9wdCwgJmZp bmFsKTsKKwlyY3VfcmVhZF9sb2NrKCk7CisJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KGZsNiwg cmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLCAmZmluYWwpOworCXJjdV9yZWFkX3VubG9jaygpOwog CiAJZHN0ID0gX19pbmV0Nl9jc2tfZHN0X2NoZWNrKHNrLCBucC0+ZHN0X2Nvb2tpZSk7CiAJaWYg KCFkc3QpIHsKQEAgLTI0MCw3ICsyNDQsOCBAQCBpbnQgaW5ldDZfY3NrX3htaXQoc3RydWN0IHNv Y2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZmxvd2kgKmZsX3VudXNlZAogCS8q IFJlc3RvcmUgZmluYWwgZGVzdGluYXRpb24gYmFjayBhZnRlciByb3V0aW5nIGRvbmUgKi8KIAlm bDYuZGFkZHIgPSBzay0+c2tfdjZfZGFkZHI7CiAKLQlyZXMgPSBpcDZfeG1pdChzaywgc2tiLCAm Zmw2LCBucC0+b3B0LCBucC0+dGNsYXNzKTsKKwlyZXMgPSBpcDZfeG1pdChzaywgc2tiLCAmZmw2 LCByY3VfZGVyZWZlcmVuY2UobnAtPm9wdCksCisJCSAgICAgICBucC0+dGNsYXNzKTsKIAlyY3Vf cmVhZF91bmxvY2soKTsKIAlyZXR1cm4gcmVzOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXB2 Nl9zb2NrZ2x1ZS5jIGIvbmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jCmluZGV4IDYzZTY5NTYuLjQ0 NDlhZDEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwdjZfc29ja2dsdWUuYworKysgYi9uZXQvaXB2 Ni9pcHY2X3NvY2tnbHVlLmMKQEAgLTExMSw3ICsxMTEsOCBAQCBzdHJ1Y3QgaXB2Nl90eG9wdGlv bnMgKmlwdjZfdXBkYXRlX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLAogCQkJaWNzay0+aWNza19z eW5jX21zcyhzaywgaWNzay0+aWNza19wbXR1X2Nvb2tpZSk7CiAJCX0KIAl9Ci0Jb3B0ID0geGNo ZygmaW5ldDZfc2soc2spLT5vcHQsIG9wdCk7CisJb3B0ID0geGNoZygoX19mb3JjZSBzdHJ1Y3Qg aXB2Nl90eG9wdGlvbnMgKiopJmluZXQ2X3NrKHNrKS0+b3B0LAorCQkgICBvcHQpOwogCXNrX2Rz dF9yZXNldChzayk7CiAKIAlyZXR1cm4gb3B0OwpAQCAtMjMxLDkgKzIzMiwxMiBAQCBzdGF0aWMg aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9w dG5hbWUsCiAJCQkJc2stPnNrX3NvY2tldC0+b3BzID0gJmluZXRfZGdyYW1fb3BzOwogCQkJCXNr LT5za19mYW1pbHkgPSBQRl9JTkVUOwogCQkJfQotCQkJb3B0ID0geGNoZygmbnAtPm9wdCwgTlVM TCk7Ci0JCQlpZiAob3B0KQotCQkJCXNvY2tfa2ZyZWVfcyhzaywgb3B0LCBvcHQtPnRvdF9sZW4p OworCQkJb3B0ID0geGNoZygoX19mb3JjZSBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKiopJm5wLT5v cHQsCisJCQkJICAgTlVMTCk7CisJCQlpZiAob3B0KSB7CisJCQkJYXRvbWljX3N1YihvcHQtPnRv dF9sZW4sICZzay0+c2tfb21lbV9hbGxvYyk7CisJCQkJdHhvcHRfcHV0KG9wdCk7CisJCQl9CiAJ CQlwa3RvcHQgPSB4Y2hnKCZucC0+cGt0b3B0aW9ucywgTlVMTCk7CiAJCQlrZnJlZV9za2IocGt0 b3B0KTsKIApAQCAtNDAzLDcgKzQwNyw4IEBAIHN0YXRpYyBpbnQgZG9faXB2Nl9zZXRzb2Nrb3B0 KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAkJaWYgKG9wdG5hbWUg IT0gSVBWNl9SVEhEUiAmJiAhbnNfY2FwYWJsZShuZXQtPnVzZXJfbnMsIENBUF9ORVRfUkFXKSkK IAkJCWJyZWFrOwogCi0JCW9wdCA9IGlwdjZfcmVuZXdfb3B0aW9ucyhzaywgbnAtPm9wdCwgb3B0 bmFtZSwKKwkJb3B0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChucC0+b3B0LCBzb2NrX293 bmVkX2J5X3VzZXIoc2spKTsKKwkJb3B0ID0gaXB2Nl9yZW5ld19vcHRpb25zKHNrLCBvcHQsIG9w dG5hbWUsCiAJCQkJCSAoc3RydWN0IGlwdjZfb3B0X2hkciBfX3VzZXIgKilvcHR2YWwsCiAJCQkJ CSBvcHRsZW4pOwogCQlpZiAoSVNfRVJSKG9wdCkpIHsKQEAgLTQzMiw4ICs0MzcsMTAgQEAgc3Rh dGljIGludCBkb19pcHY2X3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGlu dCBvcHRuYW1lLAogCQlyZXR2ID0gMDsKIAkJb3B0ID0gaXB2Nl91cGRhdGVfb3B0aW9ucyhzaywg b3B0KTsKIHN0aWNreV9kb25lOgotCQlpZiAob3B0KQotCQkJc29ja19rZnJlZV9zKHNrLCBvcHQs IG9wdC0+dG90X2xlbik7CisJCWlmIChvcHQpIHsKKwkJCWF0b21pY19zdWIob3B0LT50b3RfbGVu LCAmc2stPnNrX29tZW1fYWxsb2MpOworCQkJdHhvcHRfcHV0KG9wdCk7CisJCX0KIAkJYnJlYWs7 CiAJfQogCkBAIC00ODYsNiArNDkzLDcgQEAgc3RpY2t5X2RvbmU6CiAJCQlicmVhazsKIAogCQlt ZW1zZXQob3B0LCAwLCBzaXplb2YoKm9wdCkpOworCQlhdG9taWNfc2V0KCZvcHQtPnJlZmNudCwg MSk7CiAJCW9wdC0+dG90X2xlbiA9IHNpemVvZigqb3B0KSArIG9wdGxlbjsKIAkJcmV0diA9IC1F RkFVTFQ7CiAJCWlmIChjb3B5X2Zyb21fdXNlcihvcHQrMSwgb3B0dmFsLCBvcHRsZW4pKQpAQCAt NTAyLDggKzUxMCwxMCBAQCB1cGRhdGU6CiAJCXJldHYgPSAwOwogCQlvcHQgPSBpcHY2X3VwZGF0 ZV9vcHRpb25zKHNrLCBvcHQpOwogZG9uZToKLQkJaWYgKG9wdCkKLQkJCXNvY2tfa2ZyZWVfcyhz aywgb3B0LCBvcHQtPnRvdF9sZW4pOworCQlpZiAob3B0KSB7CisJCQlhdG9taWNfc3ViKG9wdC0+ dG90X2xlbiwgJnNrLT5za19vbWVtX2FsbG9jKTsKKwkJCXR4b3B0X3B1dChvcHQpOworCQl9CiAJ CWJyZWFrOwogCX0KIAljYXNlIElQVjZfVU5JQ0FTVF9IT1BTOgpAQCAtMTExMCwxMCArMTEyMCwx MSBAQCBzdGF0aWMgaW50IGRvX2lwdjZfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBs ZXZlbCwgaW50IG9wdG5hbWUsCiAJY2FzZSBJUFY2X1JUSERSOgogCWNhc2UgSVBWNl9EU1RPUFRT OgogCXsKKwkJc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHQ7CiAKIAkJbG9ja19zb2NrKHNrKTsK LQkJbGVuID0gaXB2Nl9nZXRzb2Nrb3B0X3N0aWNreShzaywgbnAtPm9wdCwKLQkJCQkJICAgICBv cHRuYW1lLCBvcHR2YWwsIGxlbik7CisJCW9wdCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQo bnAtPm9wdCwgc29ja19vd25lZF9ieV91c2VyKHNrKSk7CisJCWxlbiA9IGlwdjZfZ2V0c29ja29w dF9zdGlja3koc2ssIG9wdCwgb3B0bmFtZSwgb3B0dmFsLCBsZW4pOwogCQlyZWxlYXNlX3NvY2so c2spOwogCQkvKiBjaGVjayBpZiBpcHY2X2dldHNvY2tvcHRfc3RpY2t5KCkgcmV0dXJucyBlcnIg Y29kZSAqLwogCQlpZiAobGVuIDwgMCkKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3Jhdy5jIGIvbmV0 L2lwdjYvcmF3LmMKaW5kZXggZmRiYWRhMTU2Li5mZTk3NzI5IDEwMDY0NAotLS0gYS9uZXQvaXB2 Ni9yYXcuYworKysgYi9uZXQvaXB2Ni9yYXcuYwpAQCAtNzMyLDYgKzczMiw3IEBAIHN0YXRpYyBp bnQgcmF3Nl9nZXRmcmFnKHZvaWQgKmZyb20sIGNoYXIgKnRvLCBpbnQgb2Zmc2V0LCBpbnQgbGVu LCBpbnQgb2RkLAogCiBzdGF0aWMgaW50IHJhd3Y2X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBz dHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pCiB7CisJc3RydWN0IGlwdjZfdHhvcHRpb25z ICpvcHRfdG9fZnJlZSA9IE5VTEw7CiAJc3RydWN0IGlwdjZfdHhvcHRpb25zIG9wdF9zcGFjZTsK IAlERUNMQVJFX1NPQ0tBRERSKHN0cnVjdCBzb2NrYWRkcl9pbjYgKiwgc2luNiwgbXNnLT5tc2df bmFtZSk7CiAJc3RydWN0IGluNl9hZGRyICpkYWRkciwgKmZpbmFsX3AsIGZpbmFsOwpAQCAtODM4 LDggKzgzOSwxMCBAQCBzdGF0aWMgaW50IHJhd3Y2X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBz dHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pCiAJCWlmICghKG9wdC0+b3B0X25mbGVufG9w dC0+b3B0X2ZsZW4pKQogCQkJb3B0ID0gTlVMTDsKIAl9Ci0JaWYgKCFvcHQpCi0JCW9wdCA9IG5w LT5vcHQ7CisJaWYgKCFvcHQpIHsKKwkJb3B0ID0gdHhvcHRfZ2V0KG5wKTsKKwkJb3B0X3RvX2Zy ZWUgPSBvcHQ7CisJCX0KIAlpZiAoZmxvd2xhYmVsKQogCQlvcHQgPSBmbDZfbWVyZ2Vfb3B0aW9u cygmb3B0X3NwYWNlLCBmbG93bGFiZWwsIG9wdCk7CiAJb3B0ID0gaXB2Nl9maXh1cF9vcHRpb25z KCZvcHRfc3BhY2UsIG9wdCk7CkBAIC05MDUsNiArOTA4LDcgQEAgZG9uZToKIAlkc3RfcmVsZWFz ZShkc3QpOwogb3V0OgogCWZsNl9zb2NrX3JlbGVhc2UoZmxvd2xhYmVsKTsKKwl0eG9wdF9wdXQo b3B0X3RvX2ZyZWUpOwogCXJldHVybiBlcnIgPCAwID8gZXJyIDogbGVuOwogZG9fY29uZmlybToK IAlkc3RfY29uZmlybShkc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvc3luY29va2llcy5jIGIv bmV0L2lwdjYvc3luY29va2llcy5jCmluZGV4IDA5MDlmNGUuLmYzMGJmZGMgMTAwNjQ0Ci0tLSBh L25ldC9pcHY2L3N5bmNvb2tpZXMuYworKysgYi9uZXQvaXB2Ni9zeW5jb29raWVzLmMKQEAgLTIy NSw3ICsyMjUsNyBAQCBzdHJ1Y3Qgc29jayAqY29va2llX3Y2X2NoZWNrKHN0cnVjdCBzb2NrICpz aywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJbWVtc2V0KCZmbDYsIDAsIHNpemVvZihmbDYpKTsK IAkJZmw2LmZsb3dpNl9wcm90byA9IElQUFJPVE9fVENQOwogCQlmbDYuZGFkZHIgPSBpcmVxLT5p cl92Nl9ybXRfYWRkcjsKLQkJZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG5wLT5vcHQs ICZmaW5hbCk7CisJCWZpbmFsX3AgPSBmbDZfdXBkYXRlX2RzdCgmZmw2LCByY3VfZGVyZWZlcmVu Y2UobnAtPm9wdCksICZmaW5hbCk7CiAJCWZsNi5zYWRkciA9IGlyZXEtPmlyX3Y2X2xvY19hZGRy OwogCQlmbDYuZmxvd2k2X29pZiA9IHNrLT5za19ib3VuZF9kZXZfaWY7CiAJCWZsNi5mbG93aTZf bWFyayA9IGlyZXEtPmlyX21hcms7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIv bmV0L2lwdjYvdGNwX2lwdjYuYwppbmRleCA5N2Q5MzE0Li45ZTliNzdiIDEwMDY0NAotLS0gYS9u ZXQvaXB2Ni90Y3BfaXB2Ni5jCisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKQEAgLTEyMCw2ICsx MjAsNyBAQCBzdGF0aWMgaW50IHRjcF92Nl9jb25uZWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0 IHNvY2thZGRyICp1YWRkciwKIAlzdHJ1Y3QgaXB2Nl9waW5mbyAqbnAgPSBpbmV0Nl9zayhzayk7 CiAJc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7CiAJc3RydWN0IGluNl9hZGRyICpz YWRkciA9IE5VTEwsICpmaW5hbF9wLCBmaW5hbDsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9w dDsKIAlzdHJ1Y3QgZmxvd2k2IGZsNjsKIAlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiAJaW50IGFk ZHJfdHlwZTsKQEAgLTIzNSw3ICsyMzYsOCBAQCBzdGF0aWMgaW50IHRjcF92Nl9jb25uZWN0KHN0 cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKIAlmbDYuZmw2X2Rwb3J0ID0g dXNpbi0+c2luNl9wb3J0OwogCWZsNi5mbDZfc3BvcnQgPSBpbmV0LT5pbmV0X3Nwb3J0OwogCi0J ZmluYWxfcCA9IGZsNl91cGRhdGVfZHN0KCZmbDYsIG5wLT5vcHQsICZmaW5hbCk7CisJb3B0ID0g cmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChucC0+b3B0LCBzb2NrX293bmVkX2J5X3VzZXIoc2sp KTsKKwlmaW5hbF9wID0gZmw2X3VwZGF0ZV9kc3QoJmZsNiwgb3B0LCAmZmluYWwpOwogCiAJc2Vj dXJpdHlfc2tfY2xhc3NpZnlfZmxvdyhzaywgZmxvd2k2X3RvX2Zsb3dpKCZmbDYpKTsKIApAQCAt MjYzLDkgKzI2NSw5IEBAIHN0YXRpYyBpbnQgdGNwX3Y2X2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNr LCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogCQl0Y3BfZmV0Y2hfdGltZXdhaXRfc3RhbXAoc2ss IGRzdCk7CiAKIAlpY3NrLT5pY3NrX2V4dF9oZHJfbGVuID0gMDsKLQlpZiAobnAtPm9wdCkKLQkJ aWNzay0+aWNza19leHRfaGRyX2xlbiA9IChucC0+b3B0LT5vcHRfZmxlbiArCi0JCQkJCSAgbnAt Pm9wdC0+b3B0X25mbGVuKTsKKwlpZiAob3B0KQorCQlpY3NrLT5pY3NrX2V4dF9oZHJfbGVuID0g b3B0LT5vcHRfZmxlbiArCisJCQkJCSBvcHQtPm9wdF9uZmxlbjsKIAogCXRwLT5yeF9vcHQubXNz X2NsYW1wID0gSVBWNl9NSU5fTVRVIC0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpIC0gc2l6ZW9mKHN0 cnVjdCBpcHY2aGRyKTsKIApAQCAtNDYxLDcgKzQ2Myw4IEBAIHN0YXRpYyBpbnQgdGNwX3Y2X3Nl bmRfc3luYWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGRzdF9lbnRyeSAqZHN0LAogCQkJZmw2 LT5mbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKGlyZXEtPnBrdG9wdHMpKTsKIAog CQlza2Jfc2V0X3F1ZXVlX21hcHBpbmcoc2tiLCBxdWV1ZV9tYXBwaW5nKTsKLQkJZXJyID0gaXA2 X3htaXQoc2ssIHNrYiwgZmw2LCBucC0+b3B0LCBucC0+dGNsYXNzKTsKKwkJZXJyID0gaXA2X3ht aXQoc2ssIHNrYiwgZmw2LCByY3VfZGVyZWZlcmVuY2UobnAtPm9wdCksCisJCQkgICAgICAgbnAt PnRjbGFzcyk7CiAJCWVyciA9IG5ldF94bWl0X2V2YWwoZXJyKTsKIAl9CiAKQEAgLTk5MSw2ICs5 OTQsNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKnRjcF92Nl9zeW5fcmVjdl9zb2NrKHN0cnVjdCBz b2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgaW5ldF9yZXF1ZXN0X3NvY2sg KmlyZXE7CiAJc3RydWN0IGlwdjZfcGluZm8gKm5ld25wLCAqbnAgPSBpbmV0Nl9zayhzayk7CiAJ c3RydWN0IHRjcDZfc29jayAqbmV3dGNwNnNrOworCXN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0 OwogCXN0cnVjdCBpbmV0X3NvY2sgKm5ld2luZXQ7CiAJc3RydWN0IHRjcF9zb2NrICpuZXd0cDsK IAlzdHJ1Y3Qgc29jayAqbmV3c2s7CkBAIC0xMTI2LDEzICsxMTMwLDE1IEBAIHN0YXRpYyBzdHJ1 Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tf YnVmZiAqc2tiLAogCSAgIGJ1dCB3ZSBtYWtlIG9uZSBtb3JlIG9uZSB0aGluZyB0aGVyZTogcmVh dHRhY2ggb3B0bWVtCiAJICAgdG8gbmV3c2suCiAJICovCi0JaWYgKG5wLT5vcHQpCi0JCW5ld25w LT5vcHQgPSBpcHY2X2R1cF9vcHRpb25zKG5ld3NrLCBucC0+b3B0KTsKLQorCW9wdCA9IHJjdV9k ZXJlZmVyZW5jZShucC0+b3B0KTsKKwlpZiAob3B0KSB7CisJCW9wdCA9IGlwdjZfZHVwX29wdGlv bnMobmV3c2ssIG9wdCk7CisJCVJDVV9JTklUX1BPSU5URVIobmV3bnAtPm9wdCwgb3B0KTsKKwl9 CiAJaW5ldF9jc2sobmV3c2spLT5pY3NrX2V4dF9oZHJfbGVuID0gMDsKLQlpZiAobmV3bnAtPm9w dCkKLQkJaW5ldF9jc2sobmV3c2spLT5pY3NrX2V4dF9oZHJfbGVuID0gKG5ld25wLT5vcHQtPm9w dF9uZmxlbiArCi0JCQkJCQkgICAgIG5ld25wLT5vcHQtPm9wdF9mbGVuKTsKKwlpZiAob3B0KQor CQlpbmV0X2NzayhuZXdzayktPmljc2tfZXh0X2hkcl9sZW4gPSBvcHQtPm9wdF9uZmxlbiArCisJ CQkJCQkgICAgb3B0LT5vcHRfZmxlbjsKIAogCXRjcF9jYV9vcGVucmVxX2NoaWxkKG5ld3NrLCBk c3QpOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni91ZHAuYyBiL25ldC9pcHY2L3VkcC5jCmluZGV4 IDBhYmE2NTQuLjgzNzlmYzIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3VkcC5jCisrKyBiL25ldC9p cHY2L3VkcC5jCkBAIC0xMTA3LDYgKzExMDcsNyBAQCBpbnQgdWRwdjZfc2VuZG1zZyhzdHJ1Y3Qg c29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAlERUNMQVJFX1NPQ0tB RERSKHN0cnVjdCBzb2NrYWRkcl9pbjYgKiwgc2luNiwgbXNnLT5tc2dfbmFtZSk7CiAJc3RydWN0 IGluNl9hZGRyICpkYWRkciwgKmZpbmFsX3AsIGZpbmFsOwogCXN0cnVjdCBpcHY2X3R4b3B0aW9u cyAqb3B0ID0gTlVMTDsKKwlzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdF90b19mcmVlID0gTlVM TDsKIAlzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxvd2xhYmVsID0gTlVMTDsKIAlzdHJ1Y3QgZmxv d2k2IGZsNjsKIAlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CkBAIC0xMjYwLDggKzEyNjEsMTAgQEAg ZG9fdWRwX3NlbmRtc2c6CiAJCQlvcHQgPSBOVUxMOwogCQljb25uZWN0ZWQgPSAwOwogCX0KLQlp ZiAoIW9wdCkKLQkJb3B0ID0gbnAtPm9wdDsKKwlpZiAoIW9wdCkgeworCQlvcHQgPSB0eG9wdF9n ZXQobnApOworCQlvcHRfdG9fZnJlZSA9IG9wdDsKKwl9CiAJaWYgKGZsb3dsYWJlbCkKIAkJb3B0 ID0gZmw2X21lcmdlX29wdGlvbnMoJm9wdF9zcGFjZSwgZmxvd2xhYmVsLCBvcHQpOwogCW9wdCA9 IGlwdjZfZml4dXBfb3B0aW9ucygmb3B0X3NwYWNlLCBvcHQpOwpAQCAtMTM3MCw2ICsxMzczLDcg QEAgcmVsZWFzZV9kc3Q6CiBvdXQ6CiAJZHN0X3JlbGVhc2UoZHN0KTsKIAlmbDZfc29ja19yZWxl YXNlKGZsb3dsYWJlbCk7CisJdHhvcHRfcHV0KG9wdF90b19mcmVlKTsKIAlpZiAoIWVycikKIAkJ cmV0dXJuIGxlbjsKIAkvKgpkaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9pcDYuYyBiL25ldC9s MnRwL2wydHBfaXA2LmMKaW5kZXggZDFkZWQzNy4uMGNlOWRhOSAxMDA2NDQKLS0tIGEvbmV0L2wy dHAvbDJ0cF9pcDYuYworKysgYi9uZXQvbDJ0cC9sMnRwX2lwNi5jCkBAIC00ODYsNiArNDg2LDcg QEAgc3RhdGljIGludCBsMnRwX2lwNl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1z Z2hkciAqbXNnLCBzaXplX3QgbGVuKQogCURFQ0xBUkVfU09DS0FERFIoc3RydWN0IHNvY2thZGRy X2wydHBpcDYgKiwgbHNhLCBtc2ctPm1zZ19uYW1lKTsKIAlzdHJ1Y3QgaW42X2FkZHIgKmRhZGRy LCAqZmluYWxfcCwgZmluYWw7CiAJc3RydWN0IGlwdjZfcGluZm8gKm5wID0gaW5ldDZfc2soc2sp OworCXN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0X3RvX2ZyZWUgPSBOVUxMOwogCXN0cnVjdCBp cHY2X3R4b3B0aW9ucyAqb3B0ID0gTlVMTDsKIAlzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxvd2xh YmVsID0gTlVMTDsKIAlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBOVUxMOwpAQCAtNTc1LDggKzU3 NiwxMCBAQCBzdGF0aWMgaW50IGwydHBfaXA2X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pCiAJCQlvcHQgPSBOVUxMOwogCX0KIAotCWlmIChv cHQgPT0gTlVMTCkKLQkJb3B0ID0gbnAtPm9wdDsKKwlpZiAoIW9wdCkgeworCQlvcHQgPSB0eG9w dF9nZXQobnApOworCQlvcHRfdG9fZnJlZSA9IG9wdDsKKwl9CiAJaWYgKGZsb3dsYWJlbCkKIAkJ b3B0ID0gZmw2X21lcmdlX29wdGlvbnMoJm9wdF9zcGFjZSwgZmxvd2xhYmVsLCBvcHQpOwogCW9w dCA9IGlwdjZfZml4dXBfb3B0aW9ucygmb3B0X3NwYWNlLCBvcHQpOwpAQCAtNjMxLDYgKzYzNCw3 IEBAIGRvbmU6CiAJZHN0X3JlbGVhc2UoZHN0KTsKIG91dDoKIAlmbDZfc29ja19yZWxlYXNlKGZs b3dsYWJlbCk7CisJdHhvcHRfcHV0KG9wdF90b19mcmVlKTsKIAogCXJldHVybiBlcnIgPCAwID8g ZXJyIDogbGVuOwogCi0tIAoyLjEuMAoKCkZyb20gNDJiNDk3M2VlZmNkY2ZjNjJiNDljNjFmNTBm OWYxZTgxYWU2YTYxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS29uc3RhbnRpbiBL aGxlYm5pa292IDxrb2N0OWlAZ21haWwuY29tPgpEYXRlOiBUdWUsIDEgRGVjIDIwMTUgMDE6MTQ6 NDggKzAzMDAKU3ViamVjdDogW1BBVENIIDQwLzQzXSBuZXQvbmVpZ2hib3VyOiBmaXggY3Jhc2gg YXQgZHVtcGluZyBkZXZpY2UtYWdub3N0aWMKIHByb3h5IGVudHJpZXMKClsgVXBzdHJlYW0gY29t bWl0IDZhZGM1ZmQ2YTE0MmM2ZTJjODA1NzRjMWRiMGM3YzE3ZGVkYWE0MmUgXQoKUHJveHkgZW50 cmllcyBjb3VsZCBoYXZlIG51bGwgcG9pbnRlciB0byBuZXQtZGV2aWNlLgoKU2lnbmVkLW9mZi1i eTogS29uc3RhbnRpbiBLaGxlYm5pa292IDxrb2N0OWlAZ21haWwuY29tPgpGaXhlczogODQ5MjBj MTQyMGUyICgibmV0OiBBbGxvdyBpcHY2IHByb3hpZXMgYW5kIGFycCBwcm94aWVzIGJlIHNob3du IHdpdGggaXByb3V0ZTIiKQpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRh dmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2NvcmUvbmVpZ2hib3VyLmMgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0 L2NvcmUvbmVpZ2hib3VyLmMgYi9uZXQvY29yZS9uZWlnaGJvdXIuYwppbmRleCAyYjUxNWJhLi5j MTY5YmJhIDEwMDY0NAotLS0gYS9uZXQvY29yZS9uZWlnaGJvdXIuYworKysgYi9uZXQvY29yZS9u ZWlnaGJvdXIuYwpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgc3RhdGljIGludCBwbmVpZ2hfZmlsbF9p bmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBwbmVpZ2hfZW50cnkgKnBuLAogCW5kbS0+ bmRtX3BhZDIgICAgPSAwOwogCW5kbS0+bmRtX2ZsYWdzCSA9IHBuLT5mbGFncyB8IE5URl9QUk9Y WTsKIAluZG0tPm5kbV90eXBlCSA9IFJUTl9VTklDQVNUOwotCW5kbS0+bmRtX2lmaW5kZXggPSBw bi0+ZGV2LT5pZmluZGV4OworCW5kbS0+bmRtX2lmaW5kZXggPSBwbi0+ZGV2ID8gcG4tPmRldi0+ aWZpbmRleCA6IDA7CiAJbmRtLT5uZG1fc3RhdGUJID0gTlVEX05PTkU7CiAKIAlpZiAobmxhX3B1 dChza2IsIE5EQV9EU1QsIHRibC0+a2V5X2xlbiwgcG4tPmtleSkpCkBAIC0yMjkwLDcgKzIyOTAs NyBAQCBzdGF0aWMgaW50IHBuZWlnaF9kdW1wX3RhYmxlKHN0cnVjdCBuZWlnaF90YWJsZSAqdGJs LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlpZiAoaCA+IHNfaCkKIAkJCXNfaWR4ID0gMDsKIAkJ Zm9yIChuID0gdGJsLT5waGFzaF9idWNrZXRzW2hdLCBpZHggPSAwOyBuOyBuID0gbi0+bmV4dCkg ewotCQkJaWYgKGRldl9uZXQobi0+ZGV2KSAhPSBuZXQpCisJCQlpZiAocG5laWdoX25ldChuKSAh PSBuZXQpCiAJCQkJY29udGludWU7CiAJCQlpZiAoaWR4IDwgc19pZHgpCiAJCQkJZ290byBuZXh0 OwotLSAKMi4xLjAKCgpGcm9tIGY3MzkxY2U5M2M4NDY2NjRmYjU0OGZmNDA1NGVkYzE2NWU3YTU0 NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRA Z29vZ2xlLmNvbT4KRGF0ZTogVHVlLCAxIERlYyAyMDE1IDA3OjIwOjA3IC0wODAwClN1YmplY3Q6 IFtQQVRDSCA0MS80M10gaXB2Njogc2N0cDogaW1wbGVtZW50IHNjdHBfdjZfZGVzdHJveV9zb2Nr KCkKClsgVXBzdHJlYW0gY29tbWl0IDYwMmRkNjJkZmJkYTNlNjNhMmQ2YTNjYmRlOTUzZWJlODJi ZjUwODcgXQoKRG1pdHJ5IFZ5dWtvdiByZXBvcnRlZCBhIG1lbW9yeSBsZWFrIHVzaW5nIElQVjYg U0NUUCBzb2NrZXRzLgoKV2UgbmVlZCB0byBjYWxsIGluZXQ2X2Rlc3Ryb3lfc29jaygpIHRvIHBy b3Blcmx5IHJlbGVhc2UKaW5ldDYgc3BlY2lmaWMgZmllbGRzLgoKUmVwb3J0ZWQtYnk6IERtaXRy eSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0 IDxlZHVtYXpldEBnb29nbGUuY29tPgpBY2tlZC1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxA aW9nZWFyYm94Lm5ldD4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZl bWxvZnQubmV0PgotLS0KIG5ldC9zY3RwL3NvY2tldC5jIHwgOSArKysrKysrKy0KIDEgZmlsZSBj aGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9uZXQv c2N0cC9zb2NrZXQuYyBiL25ldC9zY3RwL3NvY2tldC5jCmluZGV4IDE3YmVmMDEuLjNlYzg4YmUg MTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NvY2tldC5jCisrKyBiL25ldC9zY3RwL3NvY2tldC5jCkBA IC03Mzc1LDYgKzczNzUsMTMgQEAgc3RydWN0IHByb3RvIHNjdHBfcHJvdCA9IHsKIAogI2lmIElT X0VOQUJMRUQoQ09ORklHX0lQVjYpCiAKKyNpbmNsdWRlIDxuZXQvdHJhbnNwX3Y2Lmg+CitzdGF0 aWMgdm9pZCBzY3RwX3Y2X2Rlc3Ryb3lfc29jayhzdHJ1Y3Qgc29jayAqc2spCit7CisJc2N0cF9k ZXN0cm95X3NvY2soc2spOworCWluZXQ2X2Rlc3Ryb3lfc29jayhzayk7Cit9CisKIHN0cnVjdCBw cm90byBzY3RwdjZfcHJvdCA9IHsKIAkubmFtZQkJPSAiU0NUUHY2IiwKIAkub3duZXIJCT0gVEhJ U19NT0RVTEUsCkBAIC03Mzg0LDcgKzczOTEsNyBAQCBzdHJ1Y3QgcHJvdG8gc2N0cHY2X3Byb3Qg PSB7CiAJLmFjY2VwdAkJPSBzY3RwX2FjY2VwdCwKIAkuaW9jdGwJCT0gc2N0cF9pb2N0bCwKIAku aW5pdAkJPSBzY3RwX2luaXRfc29jaywKLQkuZGVzdHJveQk9IHNjdHBfZGVzdHJveV9zb2NrLAor CS5kZXN0cm95CT0gc2N0cF92Nl9kZXN0cm95X3NvY2ssCiAJLnNodXRkb3duCT0gc2N0cF9zaHV0 ZG93biwKIAkuc2V0c29ja29wdAk9IHNjdHBfc2V0c29ja29wdCwKIAkuZ2V0c29ja29wdAk9IHNj dHBfZ2V0c29ja29wdCwKLS0gCjIuMS4wCgoKRnJvbSBjMzkxY2M1MTBjM2NmNmI1YThkZDU3ZmJj MWRlMjZiNGIyOGJkN2UwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYW9sbyBBYmVu aSA8cGFiZW5pQHJlZGhhdC5jb20+CkRhdGU6IFR1ZSwgMSBEZWMgMjAxNSAxODozMzozNiArMDEw MApTdWJqZWN0OiBbUEFUQ0ggNDIvNDNdIG9wZW52c3dpdGNoOiBmaXggaGFuZ3VwIG9uIHZ4bGFu L2dyZS9nZW5ldmUgZGV2aWNlCiBkZWxldGlvbgoKWyBVcHN0cmVhbSBjb21taXQgMTMxNzUzMDMw MjRjOGY0Y2QwOWU1MTA3OWE4ZmNiYmU1NzIxMTFlYyBdCgpFYWNoIG9wZW52c3dpdGNoIHR1bm5l bCB2cG9ydCAodnhsYW4sZ3JlLGdlbmV2ZSkgaG9sZHMgYSByZWZlcmVuY2UKdG8gdGhlIHVuZGVy bHlpbmcgdHVubmVsIGRldmljZSwgYnV0IG5ldmVyIHJlbGVhc2VkIGl0IHdoZW4gc3VjaApkZXZp Y2UgaXMgZGVsZXRlZC4KRGVsZXRpbmcgdGhlIHVuZGVybHlpbmcgZGV2aWNlIHZpYSB0aGUgaXAg dG9vbCBjYXVzZSB0aGUga2VybmVsIHRvCmhhbmd1cCBpbiB0aGUgbmV0ZGV2X3dhaXRfYWxscmVm cygpIGxvb3AuClRoaXMgY29tbWl0IGVuc3VyZSB0aGF0IG9uIGRldmljZSB1bnJlZ2lzdHJhdGlv biBkcF9kZXRhY2hfcG9ydF9ub3RpZnkoKQppcyBjYWxsZWQgZm9yIGFsbCB2cG9ydHMgdGhhdCBo b2xkIHRoZSBkZXZpY2UgcmVmZXJlbmNlLCBwcm9wZXJseQpyZWxlYXNpbmcgaXQuCgpGaXhlczog NjE0NzMyZWFhMTJkICgib3BlbnZzd2l0Y2g6IFVzZSByZWd1bGFyIFZYTEFOIG5ldF9kZXZpY2Ug ZGV2aWNlIikKRml4ZXM6IGIyYWNkMWRjMzk0OSAoIm9wZW52c3dpdGNoOiBVc2UgcmVndWxhciBH UkUgbmV0X2RldmljZSBpbnN0ZWFkIG9mIHZwb3J0IikKRml4ZXM6IDZiMDAxZTY4MmU5MCAoIm9w ZW52c3dpdGNoOiBVc2UgR2VuZXZlIGRldmljZS4iKQpTaWduZWQtb2ZmLWJ5OiBQYW9sbyBBYmVu aSA8cGFiZW5pQHJlZGhhdC5jb20+CkFja2VkLWJ5OiBGbGF2aW8gTGVpdG5lciA8ZmJsQHN5c2Ns b3NlLm9yZz4KQWNrZWQtYnk6IFByYXZpbiBCIFNoZWxhciA8cHNoZWxhckBuaWNpcmEuY29tPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQog bmV0L29wZW52c3dpdGNoL2RwX25vdGlmeS5jICAgIHwgMiArLQogbmV0L29wZW52c3dpdGNoL3Zw b3J0LW5ldGRldi5jIHwgOCArKysrKystLQogMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2RwX25vdGlm eS5jIGIvbmV0L29wZW52c3dpdGNoL2RwX25vdGlmeS5jCmluZGV4IGE3YTgwYTYuLjY1M2QwNzMg MTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9kcF9ub3RpZnkuYworKysgYi9uZXQvb3BlbnZz d2l0Y2gvZHBfbm90aWZ5LmMKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBvdnNfZHBfbm90aWZ5X3dx KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCXN0cnVjdCBobGlzdF9ub2RlICpuOwogCiAJ CQlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZwb3J0LCBuLCAmZHAtPnBvcnRzW2ldLCBkcF9o YXNoX25vZGUpIHsKLQkJCQlpZiAodnBvcnQtPm9wcy0+dHlwZSAhPSBPVlNfVlBPUlRfVFlQRV9O RVRERVYpCisJCQkJaWYgKHZwb3J0LT5vcHMtPnR5cGUgPT0gT1ZTX1ZQT1JUX1RZUEVfSU5URVJO QUwpCiAJCQkJCWNvbnRpbnVlOwogCiAJCQkJaWYgKCEodnBvcnQtPmRldi0+cHJpdl9mbGFncyAm IElGRl9PVlNfREFUQVBBVEgpKQpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL3Zwb3J0LW5l dGRldi5jIGIvbmV0L29wZW52c3dpdGNoL3Zwb3J0LW5ldGRldi5jCmluZGV4IGY3ZThkY2MuLmFj MTRjNDggMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC92cG9ydC1uZXRkZXYuYworKysgYi9u ZXQvb3BlbnZzd2l0Y2gvdnBvcnQtbmV0ZGV2LmMKQEAgLTE4MCw5ICsxODAsMTMgQEAgdm9pZCBv dnNfbmV0ZGV2X3R1bm5lbF9kZXN0cm95KHN0cnVjdCB2cG9ydCAqdnBvcnQpCiAJaWYgKHZwb3J0 LT5kZXYtPnByaXZfZmxhZ3MgJiBJRkZfT1ZTX0RBVEFQQVRIKQogCQlvdnNfbmV0ZGV2X2RldGFj aF9kZXYodnBvcnQpOwogCi0JLyogRWFybHkgcmVsZWFzZSBzbyB3ZSBjYW4gdW5yZWdpc3RlciB0 aGUgZGV2aWNlICovCisJLyogV2UgY2FuIGJlIGludm9rZWQgYnkgYm90aCBleHBsaWNpdCB2cG9y dCBkZWxldGlvbiBhbmQKKwkgKiB1bmRlcmx5aW5nIG5ldGRldiBkZXJlZ2lzdHJhdGlvbjsgZGVs ZXRlIHRoZSBsaW5rIG9ubHkKKwkgKiBpZiBpdCdzIG5vdCBhbHJlYWR5IHNodXR0aW5nIGRvd24u CisJICovCisJaWYgKHZwb3J0LT5kZXYtPnJlZ19zdGF0ZSA9PSBORVRSRUdfUkVHSVNURVJFRCkK KwkJcnRubF9kZWxldGVfbGluayh2cG9ydC0+ZGV2KTsKIAlkZXZfcHV0KHZwb3J0LT5kZXYpOwot CXJ0bmxfZGVsZXRlX2xpbmsodnBvcnQtPmRldik7CiAJdnBvcnQtPmRldiA9IE5VTEw7CiAJcnRu bF91bmxvY2soKTsKIAotLSAKMi4xLjAKCgpGcm9tIGQ2YzM5Y2JkOTQ3OWZjY2U3OTBiMjM4MTA0 MmM5NDA1ZmMxNzAzODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVtYXpl dCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogVHVlLCAxIERlYyAyMDE1IDIwOjA4OjUxIC0w ODAwClN1YmplY3Q6IFtQQVRDSCA0My80M10gbmV0X3NjaGVkOiBmaXggcWRpc2NfdHJlZV9kZWNy ZWFzZV9xbGVuKCkgcmFjZXMKClsgVXBzdHJlYW0gY29tbWl0IDRlYWYzYjg0ZjI4ODFjOWMwMjhm MWQ1ZTc2YzUyYWI1NzVmZTNhNjYgXQoKcWRpc2NfdHJlZV9kZWNyZWFzZV9xbGVuKCkgc3VmZmVy cyBmcm9tIHR3byBwcm9ibGVtcyBvbiBtdWx0aXF1ZXVlCmRldmljZXMuCgpPbmUgcHJvYmxlbSBp cyB0aGF0IGl0IHVwZGF0ZXMgc2NoLT5xLnFsZW4gYW5kIHNjaC0+cXN0YXRzLmRyb3BzCm9uIHRo ZSBtcS9tcXByaW8gcm9vdCBxZGlzYywgd2hpbGUgaXQgc2hvdWxkIG5vdCA6IERhbmllbGUKcmVw b3J0ZWQgdW5kZXJmbG93cyBlcnJvcnMgOgpbICA2ODEuNzc0ODIxXSBQQVg6IHNjaC0+cS5xbGVu OiAwIG46IDEKWyAgNjgxLjc3NDgyNV0gUEFYOiBzaXplIG92ZXJmbG93IGRldGVjdGVkIGluIGZ1 bmN0aW9uIHFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbiBuZXQvc2NoZWQvc2NoX2FwaS5jOjc2OSBj aWN1cy42OTNfNDkgbWluLCBjb3VudDogNzIsIGRlY2w6IHFsZW47IG51bTogMDsgY29udGV4dDog c2tfYnVmZl9oZWFkOwpbICA2ODEuNzc0OTU0XSBDUFU6IDIgUElEOiAxOSBDb21tOiBrc29mdGly cWQvMiBUYWludGVkOiBHICAgICAgICAgICBPICAgIDQuMi42LjIwMTUxMTI4MjIzOS0xLWdyc2Vj ICMxClsgIDY4MS43NzQ5NTVdIEhhcmR3YXJlIG5hbWU6IEFTVVNUZUsgQ09NUFVURVIgSU5DLiBY MzAyTEovWDMwMkxKLCBCSU9TIFgzMDJMSi4yMDIgMDMvMDUvMjAxNQpbICA2ODEuNzc0OTU2XSAg ZmZmZmZmZmZhOWEwNDg2MyAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgZmZmZmZm ZmZhOTkwZmY3YwpbICA2ODEuNzc0OTU5XSAgZmZmZmM5MDAwMGQzYmMzOCBmZmZmZmZmZmE5NWQy ODEwIDAwMDAwMDAwMDAwMDAwMDcgZmZmZmZmZmZhOTkxMDAyYgpbICA2ODEuNzc0OTYwXSAgZmZm ZmM5MDAwMGQzYmM2OCBmZmZmZmZmZmE5MWE0NGY0IDAwMDAwMDAwMDAwMDAwMDEgMDAwMDAwMDAw MDAwMDAwMQpbICA2ODEuNzc0OTYyXSBDYWxsIFRyYWNlOgpbICA2ODEuNzc0OTY3XSAgWzxmZmZm ZmZmZmE5NWQyODEwPl0gZHVtcF9zdGFjaysweDRjLzB4N2YKWyAgNjgxLjc3NDk3MF0gIFs8ZmZm ZmZmZmZhOTFhNDRmND5dIHJlcG9ydF9zaXplX292ZXJmbG93KzB4MzQvMHg1MApbICA2ODEuNzc0 OTcyXSAgWzxmZmZmZmZmZmE5NGQxN2UyPl0gcWRpc2NfdHJlZV9kZWNyZWFzZV9xbGVuKzB4MTUy LzB4MTYwClsgIDY4MS43NzQ5NzZdICBbPGZmZmZmZmZmYzAyNjk0YjE+XSBmcV9jb2RlbF9kZXF1 ZXVlKzB4N2IxLzB4ODIwIFtzY2hfZnFfY29kZWxdClsgIDY4MS43NzQ5NzhdICBbPGZmZmZmZmZm YzAyNjgwYTA+XSA/IHFkaXNjX3BlZWtfZGVxdWV1ZWQrMHhhMC8weGEwIFtzY2hfZnFfY29kZWxd ClsgIDY4MS43NzQ5ODBdICBbPGZmZmZmZmZmYTk0Y2Q5MmQ+XSBfX3FkaXNjX3J1bisweDRkLzB4 MWQwClsgIDY4MS43NzQ5ODNdICBbPGZmZmZmZmZmYTk0OWIyYjI+XSBuZXRfdHhfYWN0aW9uKzB4 YzIvMHgxNjAKWyAgNjgxLjc3NDk4NV0gIFs8ZmZmZmZmZmZhOTA2NjRjMT5dIF9fZG9fc29mdGly cSsweGYxLzB4MjAwClsgIDY4MS43NzQ5ODddICBbPGZmZmZmZmZmYTkwNjY1ZWU+XSBydW5fa3Nv ZnRpcnFkKzB4MWUvMHgzMApbICA2ODEuNzc0OTg5XSAgWzxmZmZmZmZmZmE5MDg5NmIwPl0gc21w Ym9vdF90aHJlYWRfZm4rMHgxNTAvMHgyNjAKWyAgNjgxLjc3NDk5MV0gIFs8ZmZmZmZmZmZhOTA4 OTU2MD5dID8gc29ydF9yYW5nZSsweDQwLzB4NDAKWyAgNjgxLjc3NDk5Ml0gIFs8ZmZmZmZmZmZh OTA4NWZlND5dIGt0aHJlYWQrMHhlNC8weDEwMApbICA2ODEuNzc0OTk0XSAgWzxmZmZmZmZmZmE5 MDg1ZjAwPl0gPyBrdGhyZWFkX3dvcmtlcl9mbisweDE3MC8weDE3MApbICA2ODEuNzc0OTk1XSAg WzxmZmZmZmZmZmE5NWQ4ZDFlPl0gcmV0X2Zyb21fZm9yaysweDNlLzB4NzAKCm1xL21xcHJpbyBo YXZlIHRoZWlyIG93biB3YXlzIHRvIHJlcG9ydCBxbGVuL2Ryb3BzIGJ5IGZvbGRpbmcgc3RhdHMg b24KYWxsIHRoZWlyIHF1ZXVlcywgd2l0aCBhcHByb3ByaWF0ZSBsb2NraW5nLgoKQSBzZWNvbmQg cHJvYmxlbSBpcyB0aGF0IHFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbigpIGNhbGxzIHFkaXNjX2xv b2t1cCgpCndpdGhvdXQgcHJvcGVyIGxvY2tpbmcgOiBjb25jdXJyZW50IHFkaXNjIHVwZGF0ZXMg Y291bGQgY29ycnVwdCB0aGUgbGlzdAp0aGF0IHFkaXNjX21hdGNoX2Zyb21fcm9vdCgpIHBhcnNl cyB0byBmaW5kIGEgcWRpc2MgZ2l2ZW4gaXRzIGhhbmRsZS4KCkZpeCBmaXJzdCBwcm9ibGVtIGFk ZGluZyBhIFRDUV9GX05PUEFSRU5UIHFkaXNjIGZsYWcgdGhhdApxZGlzY190cmVlX2RlY3JlYXNl X3FsZW4oKSBjYW4gdXNlIHRvIGFib3J0IGl0cyB0cmVlIHRyYXZlcnNhbCwKYXMgc29vbiBhcyBp dCBtZWV0cyBhIG1xL21xcHJpbyBxZGlzYyBjaGlsZHJlbi4KClNlY29uZCBwcm9ibGVtIGNhbiBi ZSBmaXhlZCBieSBSQ1UgcHJvdGVjdGlvbi4KUWRpc2MgYXJlIGFscmVhZHkgZnJlZWQgYWZ0ZXIg UkNVIGdyYWNlIHBlcmlvZCwgc28gcWRpc2NfbGlzdF9hZGQoKSBhbmQKcWRpc2NfbGlzdF9kZWwo KSBzaW1wbHkgaGF2ZSB0byB1c2UgYXBwcm9wcmlhdGUgcmN1IGxpc3QgdmFyaWFudHMuCgpBIGZ1 dHVyZSBwYXRjaCB3aWxsIGFkZCBhIHBlciBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlIGxpc3QgYW5jaG9y LCBzbyB0aGF0CnFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbigpIGNhbiBoYXZlIG1vcmUgZWZmaWNp ZW50IGxvb2t1cHMuCgpSZXBvcnRlZC1ieTogRGFuaWVsZSBGdWNpbmkgPGRmdWNpbmlAZ21haWwu Y29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkNj OiBDb25nIFdhbmcgPGN3YW5nQHR3b3BlbnNvdXJjZS5jb20+CkNjOiBKYW1hbCBIYWRpIFNhbGlt IDxqaHNAbW9qYXRhdHUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVt QGRhdmVtbG9mdC5uZXQ+Ci0tLQogaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaCB8ICAzICsrKwog bmV0L3NjaGVkL3NjaF9hcGkuYyAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0t LQogbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgICB8ICAyICstCiBuZXQvc2NoZWQvc2NoX21xLmMg ICAgICAgIHwgIDQgKystLQogbmV0L3NjaGVkL3NjaF9tcXByaW8uYyAgICB8ICA0ICsrLS0KIDUg ZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaCBiL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmlj LmgKaW5kZXggNDQ0ZmFhOC4uZjFhZDhmOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvc2NoX2dl bmVyaWMuaAorKysgYi9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oCkBAIC02MSw2ICs2MSw5IEBA IHN0cnVjdCBRZGlzYyB7CiAJCQkJICAgICAgKi8KICNkZWZpbmUgVENRX0ZfV0FSTl9OT05XQwko MSA8PCAxNikKICNkZWZpbmUgVENRX0ZfQ1BVU1RBVFMJCTB4MjAgLyogcnVuIHVzaW5nIHBlcmNw dSBzdGF0aXN0aWNzICovCisjZGVmaW5lIFRDUV9GX05PUEFSRU5UCQkweDQwIC8qIHJvb3Qgb2Yg aXRzIGhpZXJhcmNoeSA6CisJCQkJICAgICAgKiBxZGlzY190cmVlX2RlY3JlYXNlX3FsZW4oKSBz aG91bGQgc3RvcC4KKwkJCQkgICAgICAqLwogCXUzMgkJCWxpbWl0OwogCWNvbnN0IHN0cnVjdCBR ZGlzY19vcHMJKm9wczsKIAlzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZQlfX3JjdSAqc3RhYjsKZGlm ZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfYXBpLmMgYi9uZXQvc2NoZWQvc2NoX2FwaS5jCmluZGV4 IGY0M2M4ZjMuLjdlYzY2N2QgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfYXBpLmMKKysrIGIv bmV0L3NjaGVkL3NjaF9hcGkuYwpAQCAtMjUzLDcgKzI1Myw4IEBAIGludCBxZGlzY19zZXRfZGVm YXVsdChjb25zdCBjaGFyICpuYW1lKQogfQogCiAvKiBXZSBrbm93IGhhbmRsZS4gRmluZCBxZGlz YyBhbW9uZyBhbGwgcWRpc2MncyBhdHRhY2hlZCB0byBkZXZpY2UKLSAgIChyb290IHFkaXNjLCBh bGwgaXRzIGNoaWxkcmVuLCBjaGlsZHJlbiBvZiBjaGlsZHJlbiBldGMuKQorICogKHJvb3QgcWRp c2MsIGFsbCBpdHMgY2hpbGRyZW4sIGNoaWxkcmVuIG9mIGNoaWxkcmVuIGV0Yy4pCisgKiBOb3Rl OiBjYWxsZXIgZWl0aGVyIHVzZXMgcnRubCBvciByY3VfcmVhZF9sb2NrKCkKICAqLwogCiBzdGF0 aWMgc3RydWN0IFFkaXNjICpxZGlzY19tYXRjaF9mcm9tX3Jvb3Qoc3RydWN0IFFkaXNjICpyb290 LCB1MzIgaGFuZGxlKQpAQCAtMjY0LDcgKzI2NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnFk aXNjX21hdGNoX2Zyb21fcm9vdChzdHJ1Y3QgUWRpc2MgKnJvb3QsIHUzMiBoYW5kbGUpCiAJICAg IHJvb3QtPmhhbmRsZSA9PSBoYW5kbGUpCiAJCXJldHVybiByb290OwogCi0JbGlzdF9mb3JfZWFj aF9lbnRyeShxLCAmcm9vdC0+bGlzdCwgbGlzdCkgeworCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1 KHEsICZyb290LT5saXN0LCBsaXN0KSB7CiAJCWlmIChxLT5oYW5kbGUgPT0gaGFuZGxlKQogCQkJ cmV0dXJuIHE7CiAJfQpAQCAtMjc3LDE1ICsyNzgsMTggQEAgdm9pZCBxZGlzY19saXN0X2FkZChz dHJ1Y3QgUWRpc2MgKnEpCiAJCXN0cnVjdCBRZGlzYyAqcm9vdCA9IHFkaXNjX2RldihxKS0+cWRp c2M7CiAKIAkJV0FSTl9PTl9PTkNFKHJvb3QgPT0gJm5vb3BfcWRpc2MpOwotCQlsaXN0X2FkZF90 YWlsKCZxLT5saXN0LCAmcm9vdC0+bGlzdCk7CisJCUFTU0VSVF9SVE5MKCk7CisJCWxpc3RfYWRk X3RhaWxfcmN1KCZxLT5saXN0LCAmcm9vdC0+bGlzdCk7CiAJfQogfQogRVhQT1JUX1NZTUJPTChx ZGlzY19saXN0X2FkZCk7CiAKIHZvaWQgcWRpc2NfbGlzdF9kZWwoc3RydWN0IFFkaXNjICpxKQog ewotCWlmICgocS0+cGFyZW50ICE9IFRDX0hfUk9PVCkgJiYgIShxLT5mbGFncyAmIFRDUV9GX0lO R1JFU1MpKQotCQlsaXN0X2RlbCgmcS0+bGlzdCk7CisJaWYgKChxLT5wYXJlbnQgIT0gVENfSF9S T09UKSAmJiAhKHEtPmZsYWdzICYgVENRX0ZfSU5HUkVTUykpIHsKKwkJQVNTRVJUX1JUTkwoKTsK KwkJbGlzdF9kZWxfcmN1KCZxLT5saXN0KTsKKwl9CiB9CiBFWFBPUlRfU1lNQk9MKHFkaXNjX2xp c3RfZGVsKTsKIApAQCAtNzUwLDE0ICs3NTQsMTggQEAgdm9pZCBxZGlzY190cmVlX2RlY3JlYXNl X3FsZW4oc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGludCBuKQogCWlmIChuID09IDApCiAJ CXJldHVybjsKIAlkcm9wcyA9IG1heF90KGludCwgbiwgMCk7CisJcmN1X3JlYWRfbG9jaygpOwog CXdoaWxlICgocGFyZW50aWQgPSBzY2gtPnBhcmVudCkpIHsKIAkJaWYgKFRDX0hfTUFKKHBhcmVu dGlkKSA9PSBUQ19IX01BSihUQ19IX0lOR1JFU1MpKQotCQkJcmV0dXJuOworCQkJYnJlYWs7CiAK KwkJaWYgKHNjaC0+ZmxhZ3MgJiBUQ1FfRl9OT1BBUkVOVCkKKwkJCWJyZWFrOworCQkvKiBUT0RP OiBwZXJmb3JtIHRoZSBzZWFyY2ggb24gYSBwZXIgdHhxIGJhc2lzICovCiAJCXNjaCA9IHFkaXNj X2xvb2t1cChxZGlzY19kZXYoc2NoKSwgVENfSF9NQUoocGFyZW50aWQpKTsKIAkJaWYgKHNjaCA9 PSBOVUxMKSB7Ci0JCQlXQVJOX09OKHBhcmVudGlkICE9IFRDX0hfUk9PVCk7Ci0JCQlyZXR1cm47 CisJCQlXQVJOX09OX09OQ0UocGFyZW50aWQgIT0gVENfSF9ST09UKTsKKwkJCWJyZWFrOwogCQl9 CiAJCWNvcHMgPSBzY2gtPm9wcy0+Y2xfb3BzOwogCQlpZiAoY29wcy0+cWxlbl9ub3RpZnkpIHsK QEAgLTc2OCw2ICs3NzYsNyBAQCB2b2lkIHFkaXNjX3RyZWVfZGVjcmVhc2VfcWxlbihzdHJ1Y3Qg UWRpc2MgKnNjaCwgdW5zaWduZWQgaW50IG4pCiAJCXNjaC0+cS5xbGVuIC09IG47CiAJCV9fcWRp c2NfcXN0YXRzX2Ryb3Aoc2NoLCBkcm9wcyk7CiAJfQorCXJjdV9yZWFkX3VubG9jaygpOwogfQog RVhQT1JUX1NZTUJPTChxZGlzY190cmVlX2RlY3JlYXNlX3FsZW4pOwogCkBAIC05NDEsNyArOTUw LDcgQEAgcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZf cXVldWUgKmRldl9xdWV1ZSwKIAkJfQogCQlsb2NrZGVwX3NldF9jbGFzcyhxZGlzY19sb2NrKHNj aCksICZxZGlzY190eF9sb2NrKTsKIAkJaWYgKCFuZXRpZl9pc19tdWx0aXF1ZXVlKGRldikpCi0J CQlzY2gtPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUU7CisJCQlzY2gtPmZsYWdzIHw9IFRDUV9G X09ORVRYUVVFVUUgfCBUQ1FfRl9OT1BBUkVOVDsKIAl9CiAKIAlzY2gtPmhhbmRsZSA9IGhhbmRs ZTsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jIGIvbmV0L3NjaGVkL3NjaF9n ZW5lcmljLmMKaW5kZXggY2I1ZDRhZC4uZTgyYTFhZCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3Nj aF9nZW5lcmljLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMKQEAgLTczNyw3ICs3Mzcs NyBAQCBzdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3RydWN0IG5ldF9kZXZp Y2UgKmRldiwKIAkJcmV0dXJuOwogCX0KIAlpZiAoIW5ldGlmX2lzX211bHRpcXVldWUoZGV2KSkK LQkJcWRpc2MtPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUU7CisJCXFkaXNjLT5mbGFncyB8PSBU Q1FfRl9PTkVUWFFVRVVFIHwgVENRX0ZfTk9QQVJFTlQ7CiAJZGV2X3F1ZXVlLT5xZGlzY19zbGVl cGluZyA9IHFkaXNjOwogfQogCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX21xLmMgYi9uZXQv c2NoZWQvc2NoX21xLmMKaW5kZXggZjNjYmFlYy4uM2U4MmYwNCAxMDA2NDQKLS0tIGEvbmV0L3Nj aGVkL3NjaF9tcS5jCisrKyBiL25ldC9zY2hlZC9zY2hfbXEuYwpAQCAtNjMsNyArNjMsNyBAQCBz dGF0aWMgaW50IG1xX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCkK IAkJaWYgKHFkaXNjID09IE5VTEwpCiAJCQlnb3RvIGVycjsKIAkJcHJpdi0+cWRpc2NzW250eF0g PSBxZGlzYzsKLQkJcWRpc2MtPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUU7CisJCXFkaXNjLT5m bGFncyB8PSBUQ1FfRl9PTkVUWFFVRVVFIHwgVENRX0ZfTk9QQVJFTlQ7CiAJfQogCiAJc2NoLT5m bGFncyB8PSBUQ1FfRl9NUVJPT1Q7CkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIGludCBtcV9n cmFmdChzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCwgc3RydWN0IFFkaXNjICpu ZXcsCiAKIAkqb2xkID0gZGV2X2dyYWZ0X3FkaXNjKGRldl9xdWV1ZSwgbmV3KTsKIAlpZiAobmV3 KQotCQluZXctPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUU7CisJCW5ldy0+ZmxhZ3MgfD0gVENR X0ZfT05FVFhRVUVVRSB8IFRDUV9GX05PUEFSRU5UOwogCWlmIChkZXYtPmZsYWdzICYgSUZGX1VQ KQogCQlkZXZfYWN0aXZhdGUoZGV2KTsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL25ldC9zY2hl ZC9zY2hfbXFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX21xcHJpby5jCmluZGV4IDM4MTFhNzQuLmFk NzBlY2YgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfbXFwcmlvLmMKKysrIGIvbmV0L3NjaGVk L3NjaF9tcXByaW8uYwpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBpbnQgbXFwcmlvX2luaXQo c3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCkKIAkJCWdvdG8gZXJyOwogCQl9 CiAJCXByaXYtPnFkaXNjc1tpXSA9IHFkaXNjOwotCQlxZGlzYy0+ZmxhZ3MgfD0gVENRX0ZfT05F VFhRVUVVRTsKKwkJcWRpc2MtPmZsYWdzIHw9IFRDUV9GX09ORVRYUVVFVUUgfCBUQ1FfRl9OT1BB UkVOVDsKIAl9CiAKIAkvKiBJZiB0aGUgbXFwcmlvIG9wdGlvbnMgaW5kaWNhdGUgdGhhdCBoYXJk d2FyZSBzaG91bGQgb3duCkBAIC0yMDksNyArMjA5LDcgQEAgc3RhdGljIGludCBtcXByaW9fZ3Jh ZnQoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgY2wsIHN0cnVjdCBRZGlzYyAqbmV3 LAogCSpvbGQgPSBkZXZfZ3JhZnRfcWRpc2MoZGV2X3F1ZXVlLCBuZXcpOwogCiAJaWYgKG5ldykK LQkJbmV3LT5mbGFncyB8PSBUQ1FfRl9PTkVUWFFVRVVFOworCQluZXctPmZsYWdzIHw9IFRDUV9G X09ORVRYUVVFVUUgfCBUQ1FfRl9OT1BBUkVOVDsKIAogCWlmIChkZXYtPmZsYWdzICYgSUZGX1VQ KQogCQlkZXZfYWN0aXZhdGUoZGV2KTsKLS0gCjIuMS4wCgo= ----Next_Part(Thu_Dec_10_14_37_58_2015_327)----