From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1099EC43387 for ; Fri, 11 Jan 2019 14:49:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A19582063F for ; Fri, 11 Jan 2019 14:49:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732288AbfAKOtj (ORCPT ); Fri, 11 Jan 2019 09:49:39 -0500 Received: from imap1.codethink.co.uk ([176.9.8.82]:34972 "EHLO imap1.codethink.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390588AbfAKOte (ORCPT ); Fri, 11 Jan 2019 09:49:34 -0500 Received: from office.codethink.co.uk ([148.252.241.226] helo=xylophone) by imap1.codethink.co.uk with esmtpsa (Exim 4.84_2 #1 (Debian)) id 1ghy7U-0002qK-Hq; Fri, 11 Jan 2019 14:49:12 +0000 Message-ID: <1547218151.3229.73.camel@codethink.co.uk> Subject: Security fixes for 4.4 - btrfs From: Ben Hutchings To: Greg Kroah-Hartman , Sasha Levin Cc: stable , linux-btrfs@vger.kernel.org Date: Fri, 11 Jan 2019 14:49:11 +0000 Organization: Codethink Ltd. Content-Type: multipart/mixed; boundary="=-MJ6eASRI8bzA0dIjhiBW" X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org --=-MJ6eASRI8bzA0dIjhiBW Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit I've backported fixes for several security issues involving filesystem validation in btrfs. All of these are already fixed in the later stable branches. I tested with the reproducers where available. I also checked for regressions with xfstests and didn't find any (but many tests fail with or without these changes). Ben. -- Ben Hutchings, Software Developer   Codethink Ltd https://www.codethink.co.uk/ Dale House, 35 Dale Street Manchester, M1 2HF, United Kingdom --=-MJ6eASRI8bzA0dIjhiBW Content-Type: application/mbox; name="security-4.4-btrfs.mbox" Content-Disposition: attachment; filename="security-4.4-btrfs.mbox" Content-Transfer-Encoding: base64 RnJvbSAwN2NjN2RiZGQwYzE0YmZiNTUwNzVkYjkzODQ2YzY5ODM2M2FlNTliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIE1haG9uZXkgPGplZmZtQHN1c2UuY29tPgpEYXRlOiBX ZWQsIDMgSnVuIDIwMTUgMTA6NTU6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDAxLzMxXSBidHJm czogY2xlYW51cCwgc3RvcCBjYXN0aW5nIGZvciBleHRlbnRfbWFwLT5sb29rdXAKIGV2ZXJ5d2hl cmUKCmNvbW1pdCA5NTYxN2Q2OTMyNmNlMzg2Yzk1ZTMzZGI3YWViODMyYjQ1ZWU5ZjhmIHVwc3Ry ZWFtLgoKT3ZlcmxvYWRpbmcgZXh0ZW50X21hcC0+YmRldiB0byBzdHJ1Y3QgbWFwX2xvb2t1cCAq IG1pZ2h0IGhhdmUgc3RhcnRlZCBvdXQKYXMgYSBtZWFucyB0byBhbiBlbmQsIGJ1dCBpdCdzIGEg cGF0dGVybiB0aGF0J3MgdXNlZCBhbGwgb3ZlciB0aGUgcGxhY2UKbm93LiBMZXQncyBnZXQgcmlk IG9mIHRoZSBjYXN0aW5nIGFuZCBqdXN0IGFkZCBhIHVuaW9uIGluc3RlYWQuCgpTaWduZWQtb2Zm LWJ5OiBKZWZmIE1haG9uZXkgPGplZmZtQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBT dGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJl bi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZzL2J0cmZzL2Rldi1yZXBsYWNlLmMg fCAgMiArLQogZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyB8ICAyICstCiBmcy9idHJmcy9leHRlbnRf bWFwLmMgIHwgIDIgKy0KIGZzL2J0cmZzL2V4dGVudF9tYXAuaCAgfCAxMCArKysrKysrKystCiBm cy9idHJmcy9zY3J1Yi5jICAgICAgIHwgIDIgKy0KIGZzL2J0cmZzL3ZvbHVtZXMuYyAgICAgfCAy NCArKysrKysrKysrKystLS0tLS0tLS0tLS0KIDYgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9u cygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZGV2LXJlcGxhY2Uu YyBiL2ZzL2J0cmZzL2Rldi1yZXBsYWNlLmMKaW5kZXggMTc2YTI3YmM2M2FhLi44MWU1YmM2MmU4 ZTMgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2Rldi1yZXBsYWNlLmMKKysrIGIvZnMvYnRyZnMvZGV2 LXJlcGxhY2UuYwpAQCAtNjIwLDcgKzYyMCw3IEBAIHN0YXRpYyB2b2lkIGJ0cmZzX2Rldl9yZXBs YWNlX3VwZGF0ZV9kZXZpY2VfaW5fbWFwcGluZ190cmVlKAogCQllbSA9IGxvb2t1cF9leHRlbnRf bWFwcGluZyhlbV90cmVlLCBzdGFydCwgKHU2NCktMSk7CiAJCWlmICghZW0pCiAJCQlicmVhazsK LQkJbWFwID0gKHN0cnVjdCBtYXBfbG9va3VwICopZW0tPmJkZXY7CisJCW1hcCA9IGVtLT5tYXBf bG9va3VwOwogCQlmb3IgKGkgPSAwOyBpIDwgbWFwLT5udW1fc3RyaXBlczsgaSsrKQogCQkJaWYg KHNyY2RldiA9PSBtYXAtPnN0cmlwZXNbaV0uZGV2KQogCQkJCW1hcC0+c3RyaXBlc1tpXS5kZXYg PSB0Z3RkZXY7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnQtdHJlZS5jIGIvZnMvYnRyZnMv ZXh0ZW50LXRyZWUuYwppbmRleCAxM2ZmMGZkYWUwM2UuLmFmYmZhN2MzNmZmNiAxMDA2NDQKLS0t IGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYworKysgYi9mcy9idHJmcy9leHRlbnQtdHJlZS5jCkBA IC0xMDM4OCw3ICsxMDM4OCw3IEBAIGJ0cmZzX3N0YXJ0X3RyYW5zX3JlbW92ZV9ibG9ja19ncm91 cChzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywKIAkgKiBtb3JlIGRldmljZSBpdGVtcyBh bmQgcmVtb3ZlIG9uZSBjaHVuayBpdGVtKSwgYnV0IHRoaXMgaXMgZG9uZSBhdAogCSAqIGJ0cmZz X3JlbW92ZV9jaHVuaygpIHRocm91Z2ggYSBjYWxsIHRvIGNoZWNrX3N5c3RlbV9jaHVuaygpLgog CSAqLwotCW1hcCA9IChzdHJ1Y3QgbWFwX2xvb2t1cCAqKWVtLT5iZGV2OworCW1hcCA9IGVtLT5t YXBfbG9va3VwOwogCW51bV9pdGVtcyA9IDMgKyBtYXAtPm51bV9zdHJpcGVzOwogCWZyZWVfZXh0 ZW50X21hcChlbSk7CiAKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2V4dGVudF9tYXAuYyBiL2ZzL2J0 cmZzL2V4dGVudF9tYXAuYwppbmRleCA2YTk4YmRkZDhmMzMuLjg0ZmI1NmQ1YzAxOCAxMDA2NDQK LS0tIGEvZnMvYnRyZnMvZXh0ZW50X21hcC5jCisrKyBiL2ZzL2J0cmZzL2V4dGVudF9tYXAuYwpA QCAtNzYsNyArNzYsNyBAQCB2b2lkIGZyZWVfZXh0ZW50X21hcChzdHJ1Y3QgZXh0ZW50X21hcCAq ZW0pCiAJCVdBUk5fT04oZXh0ZW50X21hcF9pbl90cmVlKGVtKSk7CiAJCVdBUk5fT04oIWxpc3Rf ZW1wdHkoJmVtLT5saXN0KSk7CiAJCWlmICh0ZXN0X2JpdChFWFRFTlRfRkxBR19GU19NQVBQSU5H LCAmZW0tPmZsYWdzKSkKLQkJCWtmcmVlKGVtLT5iZGV2KTsKKwkJCWtmcmVlKGVtLT5tYXBfbG9v a3VwKTsKIAkJa21lbV9jYWNoZV9mcmVlKGV4dGVudF9tYXBfY2FjaGUsIGVtKTsKIAl9CiB9CmRp ZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnRfbWFwLmggYi9mcy9idHJmcy9leHRlbnRfbWFwLmgK aW5kZXggYjI5OTFmZDg1ODNlLi5lYjhiOGZhZTAzNmIgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2V4 dGVudF9tYXAuaAorKysgYi9mcy9idHJmcy9leHRlbnRfbWFwLmgKQEAgLTMyLDcgKzMyLDE1IEBA IHN0cnVjdCBleHRlbnRfbWFwIHsKIAl1NjQgYmxvY2tfbGVuOwogCXU2NCBnZW5lcmF0aW9uOwog CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0Jc3RydWN0IGJsb2NrX2RldmljZSAqYmRldjsKKwl1bmlv biB7CisJCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXY7CisKKwkJLyoKKwkJICogdXNlZCBmb3Ig Y2h1bmsgbWFwcGluZ3MKKwkJICogZmxhZ3MgJiBFWFRFTlRfRkxBR19GU19NQVBQSU5HIG11c3Qg YmUgc2V0CisJCSAqLworCQlzdHJ1Y3QgbWFwX2xvb2t1cCAqbWFwX2xvb2t1cDsKKwl9OwogCWF0 b21pY190IHJlZnM7CiAJdW5zaWduZWQgaW50IGNvbXByZXNzX3R5cGU7CiAJc3RydWN0IGxpc3Rf aGVhZCBsaXN0OwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvc2NydWIuYyBiL2ZzL2J0cmZzL3NjcnVi LmMKaW5kZXggNmRjYTlmOTM3YmY2Li5jYzljY2M0MmY0NjkgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZz L3NjcnViLmMKKysrIGIvZnMvYnRyZnMvc2NydWIuYwpAQCAtMzQ2MCw3ICszNDYwLDcgQEAgc3Rh dGljIG5vaW5saW5lX2Zvcl9zdGFjayBpbnQgc2NydWJfY2h1bmsoc3RydWN0IHNjcnViX2N0eCAq c2N0eCwKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQltYXAgPSAoc3RydWN0IG1hcF9sb29rdXAgKill bS0+YmRldjsKKwltYXAgPSBlbS0+bWFwX2xvb2t1cDsKIAlpZiAoZW0tPnN0YXJ0ICE9IGNodW5r X29mZnNldCkKIAkJZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3ZvbHVtZXMuYyBi L2ZzL2J0cmZzL3ZvbHVtZXMuYwppbmRleCBiNGQ2M2E5ODQyZmEuLmY5ZGU1MDcyMDYxZCAxMDA2 NDQKLS0tIGEvZnMvYnRyZnMvdm9sdW1lcy5jCisrKyBiL2ZzL2J0cmZzL3ZvbHVtZXMuYwpAQCAt MTE4NCw3ICsxMTg0LDcgQEAgYWdhaW46CiAJCXN0cnVjdCBtYXBfbG9va3VwICptYXA7CiAJCWlu dCBpOwogCi0JCW1hcCA9IChzdHJ1Y3QgbWFwX2xvb2t1cCAqKWVtLT5iZGV2OworCQltYXAgPSBl bS0+bWFwX2xvb2t1cDsKIAkJZm9yIChpID0gMDsgaSA8IG1hcC0+bnVtX3N0cmlwZXM7IGkrKykg ewogCQkJdTY0IGVuZDsKIApAQCAtMjc1Nyw3ICsyNzU3LDcgQEAgaW50IGJ0cmZzX3JlbW92ZV9j aHVuayhzdHJ1Y3QgYnRyZnNfdHJhbnNfaGFuZGxlICp0cmFucywKIAkJCWZyZWVfZXh0ZW50X21h cChlbSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KLQltYXAgPSAoc3RydWN0IG1hcF9sb29rdXAg KillbS0+YmRldjsKKwltYXAgPSBlbS0+bWFwX2xvb2t1cDsKIAlsb2NrX2NodW5rcyhyb290LT5m c19pbmZvLT5jaHVua19yb290KTsKIAljaGVja19zeXN0ZW1fY2h1bmsodHJhbnMsIGV4dGVudF9y b290LCBtYXAtPnR5cGUpOwogCXVubG9ja19jaHVua3Mocm9vdC0+ZnNfaW5mby0+Y2h1bmtfcm9v dCk7CkBAIC00NzMxLDcgKzQ3MzEsNyBAQCBzdGF0aWMgaW50IF9fYnRyZnNfYWxsb2NfY2h1bmso c3RydWN0IGJ0cmZzX3RyYW5zX2hhbmRsZSAqdHJhbnMsCiAJCWdvdG8gZXJyb3I7CiAJfQogCXNl dF9iaXQoRVhURU5UX0ZMQUdfRlNfTUFQUElORywgJmVtLT5mbGFncyk7Ci0JZW0tPmJkZXYgPSAo c3RydWN0IGJsb2NrX2RldmljZSAqKW1hcDsKKwllbS0+bWFwX2xvb2t1cCA9IG1hcDsKIAllbS0+ c3RhcnQgPSBzdGFydDsKIAllbS0+bGVuID0gbnVtX2J5dGVzOwogCWVtLT5ibG9ja19zdGFydCA9 IDA7CkBAIC00ODI2LDcgKzQ4MjYsNyBAQCBpbnQgYnRyZnNfZmluaXNoX2NodW5rX2FsbG9jKHN0 cnVjdCBidHJmc190cmFuc19oYW5kbGUgKnRyYW5zLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAK LQltYXAgPSAoc3RydWN0IG1hcF9sb29rdXAgKillbS0+YmRldjsKKwltYXAgPSBlbS0+bWFwX2xv b2t1cDsKIAlpdGVtX3NpemUgPSBidHJmc19jaHVua19pdGVtX3NpemUobWFwLT5udW1fc3RyaXBl cyk7CiAJc3RyaXBlX3NpemUgPSBlbS0+b3JpZ19ibG9ja19sZW47CiAKQEAgLTQ5NjgsNyArNDk2 OCw3IEBAIGludCBidHJmc19jaHVua19yZWFkb25seShzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwg dTY0IGNodW5rX29mZnNldCkKIAlpZiAoIWVtKQogCQlyZXR1cm4gMTsKIAotCW1hcCA9IChzdHJ1 Y3QgbWFwX2xvb2t1cCAqKWVtLT5iZGV2OworCW1hcCA9IGVtLT5tYXBfbG9va3VwOwogCWZvciAo aSA9IDA7IGkgPCBtYXAtPm51bV9zdHJpcGVzOyBpKyspIHsKIAkJaWYgKG1hcC0+c3RyaXBlc1tp XS5kZXYtPm1pc3NpbmcpIHsKIAkJCW1pc3NfbmRldnMrKzsKQEAgLTUwNDgsNyArNTA0OCw3IEBA IGludCBidHJmc19udW1fY29waWVzKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCB1NjQg bG9naWNhbCwgdTY0IGxlbikKIAkJcmV0dXJuIDE7CiAJfQogCi0JbWFwID0gKHN0cnVjdCBtYXBf bG9va3VwICopZW0tPmJkZXY7CisJbWFwID0gZW0tPm1hcF9sb29rdXA7CiAJaWYgKG1hcC0+dHlw ZSAmIChCVFJGU19CTE9DS19HUk9VUF9EVVAgfCBCVFJGU19CTE9DS19HUk9VUF9SQUlEMSkpCiAJ CXJldCA9IG1hcC0+bnVtX3N0cmlwZXM7CiAJZWxzZSBpZiAobWFwLT50eXBlICYgQlRSRlNfQkxP Q0tfR1JPVVBfUkFJRDEwKQpAQCAtNTA5MSw3ICs1MDkxLDcgQEAgdW5zaWduZWQgbG9uZyBidHJm c19mdWxsX3N0cmlwZV9sZW4oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJQlVHX09OKCFlbSk7 CiAKIAlCVUdfT04oZW0tPnN0YXJ0ID4gbG9naWNhbCB8fCBlbS0+c3RhcnQgKyBlbS0+bGVuIDwg bG9naWNhbCk7Ci0JbWFwID0gKHN0cnVjdCBtYXBfbG9va3VwICopZW0tPmJkZXY7CisJbWFwID0g ZW0tPm1hcF9sb29rdXA7CiAJaWYgKG1hcC0+dHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1JBSUQ1 Nl9NQVNLKQogCQlsZW4gPSBtYXAtPnN0cmlwZV9sZW4gKiBucl9kYXRhX3N0cmlwZXMobWFwKTsK IAlmcmVlX2V4dGVudF9tYXAoZW0pOwpAQCAtNTExMiw3ICs1MTEyLDcgQEAgaW50IGJ0cmZzX2lz X3Bhcml0eV9taXJyb3Ioc3RydWN0IGJ0cmZzX21hcHBpbmdfdHJlZSAqbWFwX3RyZWUsCiAJQlVH X09OKCFlbSk7CiAKIAlCVUdfT04oZW0tPnN0YXJ0ID4gbG9naWNhbCB8fCBlbS0+c3RhcnQgKyBl bS0+bGVuIDwgbG9naWNhbCk7Ci0JbWFwID0gKHN0cnVjdCBtYXBfbG9va3VwICopZW0tPmJkZXY7 CisJbWFwID0gZW0tPm1hcF9sb29rdXA7CiAJaWYgKG1hcC0+dHlwZSAmIEJUUkZTX0JMT0NLX0dS T1VQX1JBSUQ1Nl9NQVNLKQogCQlyZXQgPSAxOwogCWZyZWVfZXh0ZW50X21hcChlbSk7CkBAIC01 MjcxLDcgKzUyNzEsNyBAQCBzdGF0aWMgaW50IF9fYnRyZnNfbWFwX2Jsb2NrKHN0cnVjdCBidHJm c19mc19pbmZvICpmc19pbmZvLCBpbnQgcncsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCW1h cCA9IChzdHJ1Y3QgbWFwX2xvb2t1cCAqKWVtLT5iZGV2OworCW1hcCA9IGVtLT5tYXBfbG9va3Vw OwogCW9mZnNldCA9IGxvZ2ljYWwgLSBlbS0+c3RhcnQ7CiAKIAlzdHJpcGVfbGVuID0gbWFwLT5z dHJpcGVfbGVuOwpAQCAtNTgxMyw3ICs1ODEzLDcgQEAgaW50IGJ0cmZzX3JtYXBfYmxvY2soc3Ry dWN0IGJ0cmZzX21hcHBpbmdfdHJlZSAqbWFwX3RyZWUsCiAJCWZyZWVfZXh0ZW50X21hcChlbSk7 CiAJCXJldHVybiAtRUlPOwogCX0KLQltYXAgPSAoc3RydWN0IG1hcF9sb29rdXAgKillbS0+YmRl djsKKwltYXAgPSBlbS0+bWFwX2xvb2t1cDsKIAogCWxlbmd0aCA9IGVtLT5sZW47CiAJcm1hcF9s ZW4gPSBtYXAtPnN0cmlwZV9sZW47CkBAIC02MjQ5LDcgKzYyNDksNyBAQCBzdGF0aWMgaW50IHJl YWRfb25lX2NodW5rKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgYnRyZnNfa2V5ICpr ZXksCiAJfQogCiAJc2V0X2JpdChFWFRFTlRfRkxBR19GU19NQVBQSU5HLCAmZW0tPmZsYWdzKTsK LQllbS0+YmRldiA9IChzdHJ1Y3QgYmxvY2tfZGV2aWNlICopbWFwOworCWVtLT5tYXBfbG9va3Vw ID0gbWFwOwogCWVtLT5zdGFydCA9IGxvZ2ljYWw7CiAJZW0tPmxlbiA9IGxlbmd0aDsKIAllbS0+ b3JpZ19zdGFydCA9IDA7CkBAIC02OTQ4LDcgKzY5NDgsNyBAQCB2b2lkIGJ0cmZzX3VwZGF0ZV9j b21taXRfZGV2aWNlX2J5dGVzX3VzZWQoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJLyogSW4g b3JkZXIgdG8ga2ljayB0aGUgZGV2aWNlIHJlcGxhY2UgZmluaXNoIHByb2Nlc3MgKi8KIAlsb2Nr X2NodW5rcyhyb290KTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVtLCAmdHJhbnNhY3Rpb24tPnBl bmRpbmdfY2h1bmtzLCBsaXN0KSB7Ci0JCW1hcCA9IChzdHJ1Y3QgbWFwX2xvb2t1cCAqKWVtLT5i ZGV2OworCQltYXAgPSBlbS0+bWFwX2xvb2t1cDsKIAogCQlmb3IgKGkgPSAwOyBpIDwgbWFwLT5u dW1fc3RyaXBlczsgaSsrKSB7CiAJCQlkZXYgPSBtYXAtPnN0cmlwZXNbaV0uZGV2OwotLSAKQmVu IEh1dGNoaW5ncywgU29mdHdhcmUgRGV2ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENv ZGV0aGluayBMdGQKaHR0cHM6Ly93d3cuY29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAg RGFsZSBIb3VzZSwgMzUgRGFsZSBTdHJlZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1hbmNoZXN0ZXIsIE0xIDJIRiwgVW5pdGVkIEtpbmdkb20KCgpGcm9tIDVjZGRiYWE3 MzhmNTY1OTg3ZDYyYzUwYWUxMGIzYmVkN2M5MmE5MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IFF1IFdlbnJ1byA8cXV3ZW5ydW9AY24uZnVqaXRzdS5jb20+CkRhdGU6IFR1ZSwgMTUg RGVjIDIwMTUgMDk6MTQ6MzcgKzA4MDAKU3ViamVjdDogW1BBVENIIDAyLzMxXSBidHJmczogRW5o YW5jZSBjaHVuayB2YWxpZGF0aW9uIGNoZWNrCgpjb21taXQgZjA0Yjc3MmJmYzE3ZjUwMjcwMzc5 NGY0ZDEwMGQxMjE1NWMxYTFhOSB1cHN0cmVhbS4KCkVuaGFuY2UgY2h1bmsgdmFsaWRhdGlvbjoK MSkgTnVtX3N0cmlwZXMKICAgV2UgYWxyZWFkeSBoYXZlIHN1Y2ggY2hlY2sgYnV0IGl0J3Mgb25s eSBpbiBzdXBlciBibG9jayBzeXMgY2h1bmsKICAgYXJyYXkuCiAgIE5vdyBjaGVjayBhbGwgb24t ZGlzayBjaHVua3MuCgoyKSBDaHVuayBsb2dpY2FsCiAgIEl0IHNob3VsZCBiZSBhbGlnbmVkIHRv IHNlY3RvciBzaXplLgogICBUaGlzIGJlaGF2aW9yIHNob3VsZCBiZSAqRE9VQkxFIENIRUNLRUQq IGZvciA2NEsgc2VjdG9yIHNpemUgbGlrZQogICBQUEM2NCBvciBBQXJjaDY0LgogICBNYXliZSB3 ZSBjYW4gZm91bmQgc29tZSBoaWRkZW4gYnVncy4KCjMpIENodW5rIGxlbmd0aAogICBTYW1lIGFz IGNodW5rIGxvZ2ljYWwsIHNob3VsZCBiZSBhbGlnbmVkIHRvIHNlY3RvciBzaXplLgoKNCkgU3Ry aXBlIGxlbmd0aAogICBJdCBzaG91bGQgYmUgcG93ZXIgb2YgMi4KCjUpIENodW5rIHR5cGUKICAg QW55IGJpdCBvdXQgb2YgVFlQRV9NQVMgfCBQUk9GSUxFX01BU0sgaXMgaW52YWxpZC4KCldpdGgg YWxsIHRoZXNlIG11Y2ggcmVzdHJpY3QgcnVsZXMsIHNldmVyYWwgZnV6emVkIGltYWdlIHJlcG9y dGVkIGluCm1haWwgbGlzdCBzaG91bGQgbm8gbG9uZ2VyIGNhdXNlIGtlcm5lbCBwYW5pYy4KClJl cG9ydGVkLWJ5OiBWZWdhcmQgTm9zc3VtIDx2ZWdhcmQubm9zc3VtQG9yYWNsZS5jb20+ClNpZ25l ZC1vZmYtYnk6IFF1IFdlbnJ1byA8cXV3ZW5ydW9AY24uZnVqaXRzdS5jb20+ClNpZ25lZC1vZmYt Ynk6IENocmlzIE1hc29uIDxjbG1AZmIuY29tPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdz IDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy92b2x1bWVzLmMg fCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAz MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvdm9s dW1lcy5jIGIvZnMvYnRyZnMvdm9sdW1lcy5jCmluZGV4IGY5ZGU1MDcyMDYxZC4uYjgxMDgxYjA4 MmY2IDEwMDY0NAotLS0gYS9mcy9idHJmcy92b2x1bWVzLmMKKysrIGIvZnMvYnRyZnMvdm9sdW1l cy5jCkBAIC02MjE3LDYgKzYyMTcsNyBAQCBzdGF0aWMgaW50IHJlYWRfb25lX2NodW5rKHN0cnVj dCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgYnRyZnNfa2V5ICprZXksCiAJc3RydWN0IGV4dGVu dF9tYXAgKmVtOwogCXU2NCBsb2dpY2FsOwogCXU2NCBsZW5ndGg7CisJdTY0IHN0cmlwZV9sZW47 CiAJdTY0IGRldmlkOwogCXU4IHV1aWRbQlRSRlNfVVVJRF9TSVpFXTsKIAlpbnQgbnVtX3N0cmlw ZXM7CkBAIC02MjI1LDYgKzYyMjYsMzcgQEAgc3RhdGljIGludCByZWFkX29uZV9jaHVuayhzdHJ1 Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGJ0cmZzX2tleSAqa2V5LAogCiAJbG9naWNhbCA9 IGtleS0+b2Zmc2V0OwogCWxlbmd0aCA9IGJ0cmZzX2NodW5rX2xlbmd0aChsZWFmLCBjaHVuayk7 CisJc3RyaXBlX2xlbiA9IGJ0cmZzX2NodW5rX3N0cmlwZV9sZW4obGVhZiwgY2h1bmspOworCW51 bV9zdHJpcGVzID0gYnRyZnNfY2h1bmtfbnVtX3N0cmlwZXMobGVhZiwgY2h1bmspOworCS8qIFZh bGlkYXRpb24gY2hlY2sgKi8KKwlpZiAoIW51bV9zdHJpcGVzKSB7CisJCWJ0cmZzX2Vycihyb290 LT5mc19pbmZvLCAiaW52YWxpZCBjaHVuayBudW1fc3RyaXBlczogJXUiLAorCQkJICBudW1fc3Ry aXBlcyk7CisJCXJldHVybiAtRUlPOworCX0KKwlpZiAoIUlTX0FMSUdORUQobG9naWNhbCwgcm9v dC0+c2VjdG9yc2l6ZSkpIHsKKwkJYnRyZnNfZXJyKHJvb3QtPmZzX2luZm8sCisJCQkgICJpbnZh bGlkIGNodW5rIGxvZ2ljYWwgJWxsdSIsIGxvZ2ljYWwpOworCQlyZXR1cm4gLUVJTzsKKwl9CisJ aWYgKCFsZW5ndGggfHwgIUlTX0FMSUdORUQobGVuZ3RoLCByb290LT5zZWN0b3JzaXplKSkgewor CQlidHJmc19lcnIocm9vdC0+ZnNfaW5mbywKKwkJCSJpbnZhbGlkIGNodW5rIGxlbmd0aCAlbGx1 IiwgbGVuZ3RoKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCWlmICghaXNfcG93ZXJfb2ZfMihzdHJp cGVfbGVuKSkgeworCQlidHJmc19lcnIocm9vdC0+ZnNfaW5mbywgImludmFsaWQgY2h1bmsgc3Ry aXBlIGxlbmd0aDogJWxsdSIsCisJCQkgIHN0cmlwZV9sZW4pOworCQlyZXR1cm4gLUVJTzsKKwl9 CisJaWYgKH4oQlRSRlNfQkxPQ0tfR1JPVVBfVFlQRV9NQVNLIHwgQlRSRlNfQkxPQ0tfR1JPVVBf UFJPRklMRV9NQVNLKSAmCisJICAgIGJ0cmZzX2NodW5rX3R5cGUobGVhZiwgY2h1bmspKSB7CisJ CWJ0cmZzX2Vycihyb290LT5mc19pbmZvLCAidW5yZWNvZ25pemVkIGNodW5rIHR5cGU6ICVsbHUi LAorCQkJICB+KEJUUkZTX0JMT0NLX0dST1VQX1RZUEVfTUFTSyB8CisJCQkgICAgQlRSRlNfQkxP Q0tfR1JPVVBfUFJPRklMRV9NQVNLKSAmCisJCQkgIGJ0cmZzX2NodW5rX3R5cGUobGVhZiwgY2h1 bmspKTsKKwkJcmV0dXJuIC1FSU87CisJfQogCiAJcmVhZF9sb2NrKCZtYXBfdHJlZS0+bWFwX3Ry ZWUubG9jayk7CiAJZW0gPSBsb29rdXBfZXh0ZW50X21hcHBpbmcoJm1hcF90cmVlLT5tYXBfdHJl ZSwgbG9naWNhbCwgMSk7CkBAIC02MjQxLDcgKzYyNzMsNiBAQCBzdGF0aWMgaW50IHJlYWRfb25l X2NodW5rKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgYnRyZnNfa2V5ICprZXksCiAJ ZW0gPSBhbGxvY19leHRlbnRfbWFwKCk7CiAJaWYgKCFlbSkKIAkJcmV0dXJuIC1FTk9NRU07Ci0J bnVtX3N0cmlwZXMgPSBidHJmc19jaHVua19udW1fc3RyaXBlcyhsZWFmLCBjaHVuayk7CiAJbWFw ID0ga21hbGxvYyhtYXBfbG9va3VwX3NpemUobnVtX3N0cmlwZXMpLCBHRlBfTk9GUyk7CiAJaWYg KCFtYXApIHsKIAkJZnJlZV9leHRlbnRfbWFwKGVtKTsKLS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3 YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAgICAgICBDb2RldGhpbmsgTHRkCmh0dHBz Oi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAgICAgICAgIERhbGUgSG91c2UsIDM1IERh bGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5jaGVzdGVy LCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSBlZWI5MDMyNjRjNWFjZTQ0MzNiNTY1N2U4 OTc4YmQxYjBiOWI5MzAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgQm8gPGJv LmxpLmxpdUBvcmFjbGUuY29tPgpEYXRlOiBGcmksIDMgSnVuIDIwMTYgMTI6MDU6MTUgLTA3MDAK U3ViamVjdDogW1BBVENIIDAzLzMxXSBCdHJmczogYWRkIHZhbGlkYWR0aW9uIGNoZWNrcyBmb3Ig Y2h1bmsgbG9hZGluZwoKY29tbWl0IGUwNmNkM2RkN2NlYTUwZTg3NjYzYTg4YWNkZmRiN2FjMWM1 M2E1Y2EgdXBzdHJlYW0uCgpUbyBwcmV2ZW50IGZ1enplZCBmaWxlc3lzdGVtIGltYWdlcyBmcm9t IHBhbmljIHRoZSB3aG9sZSBzeXN0ZW0sCndlIG5lZWQgdmFyaW91cyB2YWxpZGF0aW9uIGNoZWNr cyB0byByZWZ1c2UgdG8gbW91bnQgc3VjaCBhbiBpbWFnZQppZiBidHJmcyBmaW5kcyBhbnkgaW52 YWxpZCB2YWx1ZSBkdXJpbmcgbG9hZGluZyBjaHVua3MsIGluY2x1ZGluZwpib3RoIHN5c19hcnJh eSBhbmQgcmVndWxhciBjaHVua3MuCgpOb3RlIHRoYXQgdGhlc2UgY2hlY2tzIG1heSBub3QgYmUg c3VmZmljaWVudCB0byBjb3ZlciBhbGwgY29ybmVyIGNhc2VzLApmZWVsIGZyZWUgdG8gYWRkIG1v cmUgY2hlY2tzLgoKUmVwb3J0ZWQtYnk6IFZlZ2FyZCBOb3NzdW0gPHZlZ2FyZC5ub3NzdW1Ab3Jh Y2xlLmNvbT4KUmVwb3J0ZWQtYnk6IFF1ZW50aW4gQ2FzYXNub3ZhcyA8cXVlbnRpbi5jYXNhc25v dmFzQG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5j b20+ClNpZ25lZC1vZmYtYnk6IExpdSBCbyA8Ym8ubGkubGl1QG9yYWNsZS5jb20+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogQmVu IEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZnMvYnRyZnMv dm9sdW1lcy5jIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvdm9sdW1lcy5jIGIvZnMvYnRyZnMvdm9sdW1l cy5jCmluZGV4IGI4MTA4MWIwODJmNi4uNzUyMTE2MzBhODY0IDEwMDY0NAotLS0gYS9mcy9idHJm cy92b2x1bWVzLmMKKysrIGIvZnMvYnRyZnMvdm9sdW1lcy5jCkBAIC02MjA4LDI3ICs2MjA4LDIz IEBAIHN0cnVjdCBidHJmc19kZXZpY2UgKmJ0cmZzX2FsbG9jX2RldmljZShzdHJ1Y3QgYnRyZnNf ZnNfaW5mbyAqZnNfaW5mbywKIAlyZXR1cm4gZGV2OwogfQogCi1zdGF0aWMgaW50IHJlYWRfb25l X2NodW5rKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgYnRyZnNfa2V5ICprZXksCi0J CQkgIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmLAotCQkJICBzdHJ1Y3QgYnRyZnNfY2h1bmsg KmNodW5rKQorLyogUmV0dXJuIC1FSU8gaWYgYW55IGVycm9yLCBvdGhlcndpc2UgcmV0dXJuIDAu ICovCitzdGF0aWMgaW50IGJ0cmZzX2NoZWNrX2NodW5rX3ZhbGlkKHN0cnVjdCBidHJmc19yb290 ICpyb290LAorCQkJCSAgIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmLAorCQkJCSAgIHN0cnVj dCBidHJmc19jaHVuayAqY2h1bmssIHU2NCBsb2dpY2FsKQogewotCXN0cnVjdCBidHJmc19tYXBw aW5nX3RyZWUgKm1hcF90cmVlID0gJnJvb3QtPmZzX2luZm8tPm1hcHBpbmdfdHJlZTsKLQlzdHJ1 Y3QgbWFwX2xvb2t1cCAqbWFwOwotCXN0cnVjdCBleHRlbnRfbWFwICplbTsKLQl1NjQgbG9naWNh bDsKIAl1NjQgbGVuZ3RoOwogCXU2NCBzdHJpcGVfbGVuOwotCXU2NCBkZXZpZDsKLQl1OCB1dWlk W0JUUkZTX1VVSURfU0laRV07Ci0JaW50IG51bV9zdHJpcGVzOwotCWludCByZXQ7Ci0JaW50IGk7 CisJdTE2IG51bV9zdHJpcGVzOworCXUxNiBzdWJfc3RyaXBlczsKKwl1NjQgdHlwZTsKIAotCWxv Z2ljYWwgPSBrZXktPm9mZnNldDsKIAlsZW5ndGggPSBidHJmc19jaHVua19sZW5ndGgobGVhZiwg Y2h1bmspOwogCXN0cmlwZV9sZW4gPSBidHJmc19jaHVua19zdHJpcGVfbGVuKGxlYWYsIGNodW5r KTsKIAludW1fc3RyaXBlcyA9IGJ0cmZzX2NodW5rX251bV9zdHJpcGVzKGxlYWYsIGNodW5rKTsK LQkvKiBWYWxpZGF0aW9uIGNoZWNrICovCisJc3ViX3N0cmlwZXMgPSBidHJmc19jaHVua19zdWJf c3RyaXBlcyhsZWFmLCBjaHVuayk7CisJdHlwZSA9IGJ0cmZzX2NodW5rX3R5cGUobGVhZiwgY2h1 bmspOworCiAJaWYgKCFudW1fc3RyaXBlcykgewogCQlidHJmc19lcnIocm9vdC0+ZnNfaW5mbywg ImludmFsaWQgY2h1bmsgbnVtX3N0cmlwZXM6ICV1IiwKIAkJCSAgbnVtX3N0cmlwZXMpOwpAQCAt NjIzOSw2ICs2MjM1LDExIEBAIHN0YXRpYyBpbnQgcmVhZF9vbmVfY2h1bmsoc3RydWN0IGJ0cmZz X3Jvb3QgKnJvb3QsIHN0cnVjdCBidHJmc19rZXkgKmtleSwKIAkJCSAgImludmFsaWQgY2h1bmsg bG9naWNhbCAlbGx1IiwgbG9naWNhbCk7CiAJCXJldHVybiAtRUlPOwogCX0KKwlpZiAoYnRyZnNf Y2h1bmtfc2VjdG9yX3NpemUobGVhZiwgY2h1bmspICE9IHJvb3QtPnNlY3RvcnNpemUpIHsKKwkJ YnRyZnNfZXJyKHJvb3QtPmZzX2luZm8sICJpbnZhbGlkIGNodW5rIHNlY3RvcnNpemUgJXUiLAor CQkJICBidHJmc19jaHVua19zZWN0b3Jfc2l6ZShsZWFmLCBjaHVuaykpOworCQlyZXR1cm4gLUVJ TzsKKwl9CiAJaWYgKCFsZW5ndGggfHwgIUlTX0FMSUdORUQobGVuZ3RoLCByb290LT5zZWN0b3Jz aXplKSkgewogCQlidHJmc19lcnIocm9vdC0+ZnNfaW5mbywKIAkJCSJpbnZhbGlkIGNodW5rIGxl bmd0aCAlbGx1IiwgbGVuZ3RoKTsKQEAgLTYyNTAsMTMgKzYyNTEsNTQgQEAgc3RhdGljIGludCBy ZWFkX29uZV9jaHVuayhzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGJ0cmZzX2tleSAq a2V5LAogCQlyZXR1cm4gLUVJTzsKIAl9CiAJaWYgKH4oQlRSRlNfQkxPQ0tfR1JPVVBfVFlQRV9N QVNLIHwgQlRSRlNfQkxPQ0tfR1JPVVBfUFJPRklMRV9NQVNLKSAmCi0JICAgIGJ0cmZzX2NodW5r X3R5cGUobGVhZiwgY2h1bmspKSB7CisJICAgIHR5cGUpIHsKIAkJYnRyZnNfZXJyKHJvb3QtPmZz X2luZm8sICJ1bnJlY29nbml6ZWQgY2h1bmsgdHlwZTogJWxsdSIsCiAJCQkgIH4oQlRSRlNfQkxP Q0tfR1JPVVBfVFlQRV9NQVNLIHwKIAkJCSAgICBCVFJGU19CTE9DS19HUk9VUF9QUk9GSUxFX01B U0spICYKIAkJCSAgYnRyZnNfY2h1bmtfdHlwZShsZWFmLCBjaHVuaykpOwogCQlyZXR1cm4gLUVJ TzsKIAl9CisJaWYgKCh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfUkFJRDEwICYmIHN1Yl9zdHJp cGVzICE9IDIpIHx8CisJICAgICh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfUkFJRDEgJiYgbnVt X3N0cmlwZXMgPCAxKSB8fAorCSAgICAodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1JBSUQ1ICYm IG51bV9zdHJpcGVzIDwgMikgfHwKKwkgICAgKHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9SQUlE NiAmJiBudW1fc3RyaXBlcyA8IDMpIHx8CisJICAgICh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBf RFVQICYmIG51bV9zdHJpcGVzID4gMikgfHwKKwkgICAgKCh0eXBlICYgQlRSRlNfQkxPQ0tfR1JP VVBfUFJPRklMRV9NQVNLKSA9PSAwICYmCisJICAgICBudW1fc3RyaXBlcyAhPSAxKSkgeworCQli dHJmc19lcnIocm9vdC0+ZnNfaW5mbywKKwkJCSJpbnZhbGlkIG51bV9zdHJpcGVzOnN1Yl9zdHJp cGVzICV1OiV1IGZvciBwcm9maWxlICVsbHUiLAorCQkJbnVtX3N0cmlwZXMsIHN1Yl9zdHJpcGVz LAorCQkJdHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1BST0ZJTEVfTUFTSyk7CisJCXJldHVybiAt RUlPOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJlYWRfb25lX2NodW5rKHN0 cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgYnRyZnNfa2V5ICprZXksCisJCQkgIHN0cnVj dCBleHRlbnRfYnVmZmVyICpsZWFmLAorCQkJICBzdHJ1Y3QgYnRyZnNfY2h1bmsgKmNodW5rKQor eworCXN0cnVjdCBidHJmc19tYXBwaW5nX3RyZWUgKm1hcF90cmVlID0gJnJvb3QtPmZzX2luZm8t Pm1hcHBpbmdfdHJlZTsKKwlzdHJ1Y3QgbWFwX2xvb2t1cCAqbWFwOworCXN0cnVjdCBleHRlbnRf bWFwICplbTsKKwl1NjQgbG9naWNhbDsKKwl1NjQgbGVuZ3RoOworCXU2NCBzdHJpcGVfbGVuOwor CXU2NCBkZXZpZDsKKwl1OCB1dWlkW0JUUkZTX1VVSURfU0laRV07CisJaW50IG51bV9zdHJpcGVz OworCWludCByZXQ7CisJaW50IGk7CisKKwlsb2dpY2FsID0ga2V5LT5vZmZzZXQ7CisJbGVuZ3Ro ID0gYnRyZnNfY2h1bmtfbGVuZ3RoKGxlYWYsIGNodW5rKTsKKwlzdHJpcGVfbGVuID0gYnRyZnNf Y2h1bmtfc3RyaXBlX2xlbihsZWFmLCBjaHVuayk7CisJbnVtX3N0cmlwZXMgPSBidHJmc19jaHVu a19udW1fc3RyaXBlcyhsZWFmLCBjaHVuayk7CisKKwlyZXQgPSBidHJmc19jaGVja19jaHVua192 YWxpZChyb290LCBsZWFmLCBjaHVuaywgbG9naWNhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKIAogCXJlYWRfbG9jaygmbWFwX3RyZWUtPm1hcF90cmVlLmxvY2spOwogCWVtID0gbG9va3Vw X2V4dGVudF9tYXBwaW5nKCZtYXBfdHJlZS0+bWFwX3RyZWUsIGxvZ2ljYWwsIDEpOwpAQCAtNjUw NCw2ICs2NTQ2LDcgQEAgaW50IGJ0cmZzX3JlYWRfc3lzX2FycmF5KHN0cnVjdCBidHJmc19yb290 ICpyb290KQogCXUzMiBhcnJheV9zaXplOwogCXUzMiBsZW4gPSAwOwogCXUzMiBjdXJfb2Zmc2V0 OworCXU2NCB0eXBlOwogCXN0cnVjdCBidHJmc19rZXkga2V5OwogCiAJQVNTRVJUKEJUUkZTX1NV UEVSX0lORk9fU0laRSA8PSByb290LT5ub2Rlc2l6ZSk7CkBAIC02NTcwLDYgKzY2MTMsMTUgQEAg aW50IGJ0cmZzX3JlYWRfc3lzX2FycmF5KHN0cnVjdCBidHJmc19yb290ICpyb290KQogCQkJCWJy ZWFrOwogCQkJfQogCisJCQl0eXBlID0gYnRyZnNfY2h1bmtfdHlwZShzYiwgY2h1bmspOworCQkJ aWYgKCh0eXBlICYgQlRSRlNfQkxPQ0tfR1JPVVBfU1lTVEVNKSA9PSAwKSB7CisJCQkJYnRyZnNf ZXJyKHJvb3QtPmZzX2luZm8sCisJCQkgICAgImludmFsaWQgY2h1bmsgdHlwZSAlbGx1IGluIHN5 c19hcnJheSBhdCBvZmZzZXQgJXUiLAorCQkJCQl0eXBlLCBjdXJfb2Zmc2V0KTsKKwkJCQlyZXQg PSAtRUlPOworCQkJCWJyZWFrOworCQkJfQorCiAJCQlsZW4gPSBidHJmc19jaHVua19pdGVtX3Np emUobnVtX3N0cmlwZXMpOwogCQkJaWYgKGN1cl9vZmZzZXQgKyBsZW4gPiBhcnJheV9zaXplKQog CQkJCWdvdG8gb3V0X3Nob3J0X3JlYWQ7Ci0tIApCZW4gSHV0Y2hpbmdzLCBTb2Z0d2FyZSBEZXZl bG9wZXIgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZXRoaW5rIEx0ZApodHRwczovL3d3dy5j b2RldGhpbmsuY28udWsvICAgICAgICAgICAgICAgICBEYWxlIEhvdXNlLCAzNSBEYWxlIFN0cmVl dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuY2hlc3RlciwgTTEgMkhG LCBVbml0ZWQgS2luZ2RvbQoKCkZyb20gYjhlZGZhNGE4ZmM2Yzc3MmJkYTEzODg2MGJkZjhiZmMx MGJjMjI3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTGl1IEJvIDxiby5saS5saXVA b3JhY2xlLmNvbT4KRGF0ZTogV2VkLCAyMiBKdW4gMjAxNiAxODozMToyNyAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggMDQvMzFdIEJ0cmZzOiBjaGVjayBpbmNvbnNpc3RlbmNlIGJldHdlZW4gY2h1bmsg YW5kIGJsb2NrCiBncm91cAoKY29tbWl0IDZmYjM3Yjc1NmFjY2U2ZDZlMDQ1Zjc5YzM3NjQyMDYw MzNmNjE3YjQgdXBzdHJlYW0uCgpXaXRoIGJ0cmZzLWNvcnJ1cHQtYmxvY2ssIG9uZSBjYW4gZHJv cCBvbmUgY2h1bmsgaXRlbSBhbmQgbW91bnRpbmcKd2lsbCBlbmQgdXAgd2l0aCBhIHBhbmljIGlu IGJ0cmZzX2Z1bGxfc3RyaXBlX2xlbigpLgoKVGhpcyBkb2Vzbid0IG5vdCByZW1vdmUgdGhlIEJV R19PTiwgYnV0IGluc3RlYWQgY2hlY2tzIGl0IGEgYml0CmVhcmxpZXIgd2hlbiB3ZSBmaW5kIHRo ZSBibG9jayBncm91cCBpdGVtLgoKU2lnbmVkLW9mZi1ieTogTGl1IEJvIDxiby5saS5saXVAb3Jh Y2xlLmNvbT4KUmV2aWV3ZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2ln bmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5 OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9i dHJmcy9leHRlbnQtdHJlZS5jIHwgMTcgKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMv ZXh0ZW50LXRyZWUuYyBiL2ZzL2J0cmZzL2V4dGVudC10cmVlLmMKaW5kZXggYWZiZmE3YzM2ZmY2 Li4yYjdjYmE0ZmM4ZjEgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2V4dGVudC10cmVlLmMKKysrIGIv ZnMvYnRyZnMvZXh0ZW50LXRyZWUuYwpAQCAtOTUwMiw3ICs5NTAyLDIyIEBAIHN0YXRpYyBpbnQg ZmluZF9maXJzdF9ibG9ja19ncm91cChzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwKIAogCQlpZiAo Zm91bmRfa2V5Lm9iamVjdGlkID49IGtleS0+b2JqZWN0aWQgJiYKIAkJICAgIGZvdW5kX2tleS50 eXBlID09IEJUUkZTX0JMT0NLX0dST1VQX0lURU1fS0VZKSB7Ci0JCQlyZXQgPSAwOworCQkJc3Ry dWN0IGV4dGVudF9tYXBfdHJlZSAqZW1fdHJlZTsKKwkJCXN0cnVjdCBleHRlbnRfbWFwICplbTsK KworCQkJZW1fdHJlZSA9ICZyb290LT5mc19pbmZvLT5tYXBwaW5nX3RyZWUubWFwX3RyZWU7CisJ CQlyZWFkX2xvY2soJmVtX3RyZWUtPmxvY2spOworCQkJZW0gPSBsb29rdXBfZXh0ZW50X21hcHBp bmcoZW1fdHJlZSwgZm91bmRfa2V5Lm9iamVjdGlkLAorCQkJCQkJICAgZm91bmRfa2V5Lm9mZnNl dCk7CisJCQlyZWFkX3VubG9jaygmZW1fdHJlZS0+bG9jayk7CisJCQlpZiAoIWVtKSB7CisJCQkJ YnRyZnNfZXJyKHJvb3QtPmZzX2luZm8sCisJCQkibG9naWNhbCAlbGx1IGxlbiAlbGx1IGZvdW5k IGJnIGJ1dCBubyByZWxhdGVkIGNodW5rIiwKKwkJCQkJICBmb3VuZF9rZXkub2JqZWN0aWQsIGZv dW5kX2tleS5vZmZzZXQpOworCQkJCXJldCA9IC1FTk9FTlQ7CisJCQl9IGVsc2UgeworCQkJCXJl dCA9IDA7CisJCQl9CiAJCQlnb3RvIG91dDsKIAkJfQogCQlwYXRoLT5zbG90c1swXSsrOwotLSAK QmVuIEh1dGNoaW5ncywgU29mdHdhcmUgRGV2ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAg IENvZGV0aGluayBMdGQKaHR0cHM6Ly93d3cuY29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAg ICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBTdHJlZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE1hbmNoZXN0ZXIsIE0xIDJIRiwgVW5pdGVkIEtpbmdkb20KCgpGcm9tIDM4MmI2 YzY5NTlmOGEzYTQwMDM2YjY0Yzg3MTU4Y2MyYzhlNDc5YmEgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IEpvc2VmIEJhY2lrIDxqYmFjaWtAZmIuY29tPgpEYXRlOiBUaHUsIDE4IEF1ZyAy MDE2IDE1OjMwOjA2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNS8zMV0gQnRyZnM6IGZpeCBlbSBs ZWFrIGluIGZpbmRfZmlyc3RfYmxvY2tfZ3JvdXAKCmNvbW1pdCAxODdlZTU4YzYyYzFkMGQyMzhk M2RjNDgzNTg2OWQzM2UxODY5OTA2IHVwc3RyZWFtLgoKV2UgbmVlZCB0byBjYWxsIGZyZWVfZXh0 ZW50X21hcCgpIG9uIHRoZSBlbSB3ZSBsb29rIHVwLgoKU2lnbmVkLW9mZi1ieTogSm9zZWYgQmFj aWsgPGpiYWNpa0BmYi5jb20+ClJldmlld2VkLWJ5OiBPbWFyIFNhbmRvdmFsIDxvc2FuZG92QGZi LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBNYXNvbiA8Y2xtQGZiLmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuIEh1 dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZnMvYnRyZnMvZXh0 ZW50LXRyZWUuYyB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0t Z2l0IGEvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyBiL2ZzL2J0cmZzL2V4dGVudC10cmVlLmMKaW5k ZXggMmI3Y2JhNGZjOGYxLi5hYmZkMjMyMDg3M2QgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2V4dGVu dC10cmVlLmMKKysrIGIvZnMvYnRyZnMvZXh0ZW50LXRyZWUuYwpAQCAtOTUxOCw2ICs5NTE4LDcg QEAgc3RhdGljIGludCBmaW5kX2ZpcnN0X2Jsb2NrX2dyb3VwKHN0cnVjdCBidHJmc19yb290ICpy b290LAogCQkJfSBlbHNlIHsKIAkJCQlyZXQgPSAwOwogCQkJfQorCQkJZnJlZV9leHRlbnRfbWFw KGVtKTsKIAkJCWdvdG8gb3V0OwogCQl9CiAJCXBhdGgtPnNsb3RzWzBdKys7Ci0tIApCZW4gSHV0 Y2hpbmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZXRo aW5rIEx0ZApodHRwczovL3d3dy5jb2RldGhpbmsuY28udWsvICAgICAgICAgICAgICAgICBEYWxl IEhvdXNlLCAzNSBEYWxlIFN0cmVldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTWFuY2hlc3RlciwgTTEgMkhGLCBVbml0ZWQgS2luZ2RvbQoKCkZyb20gMGY0ZWMyYTZlZjBm ZTJkZTM0YzU4OWM0YzNkMTZmMmE3NWI3NzZjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogTGl1IEJvIDxiby5saS5saXVAb3JhY2xlLmNvbT4KRGF0ZTogVHVlLCAyMyBBdWcgMjAxNiAx NToyMjo1OCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMDYvMzFdIEJ0cmZzOiBkZXRlY3QgY29ycnVw dGlvbiB3aGVuIG5vbi1yb290IGxlYWYgaGFzIHplcm8KIGl0ZW0KCmNvbW1pdCAxYmE5OGQwODZm ZTNhMTRkNmEzMWYyZjY2ZGJhYjcwYzQ1ZDAwZjYzIHVwc3RyZWFtLgoKUmlnaHQgbm93IHdlIHRy ZWF0IGxlYWYgd2hpY2ggaGFzIHplcm8gaXRlbSBhcyBhIHZhbGlkIG9uZQpiZWNhdXNlIHdlIGNv dWxkIGhhdmUgYW4gZW1wdHkgdHJlZSwgdGhhdCBpcywgYSByb290IHRoYXQgaXMKYWxzbyBhIGxl YWYgd2l0aG91dCBhbnkgaXRlbSwgaG93ZXZlciwgaW4gdGhlIHNhbWUgY2FzZSBidXQKd2hlbiB0 aGUgbGVhZiBpcyBub3QgYSByb290LCB3ZSBjYW4gZW5kIHVwIHdpdGggaGl0dGluZyB0aGUKQlVH X09OKDEpIGluIGJ0cmZzX2V4dGVuZF9pdGVtKCkgY2FsbGVkIGJ5CnNldHVwX2lubGluZV9leHRl bnRfYmFja3JlZigpLgoKVGhpcyBtYWtlcyB1cyBjaGVjayB0aGUgc2l0dWF0aW9uIGFzIGEgY29y cnVwdGlvbiBpZiBsZWFmIGlzCm5vdCBpdHMgb3duIHJvb3QuCgpTaWduZWQtb2ZmLWJ5OiBMaXUg Qm8gPGJvLmxpLmxpdUBvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3RlcmJhIDxkc3Rl cmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5j b20+ClNpZ25lZC1vZmYtYnk6IENocmlzIE1hc29uIDxjbG1AZmIuY29tPgpTaWduZWQtb2ZmLWJ5 OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9i dHJmcy9kaXNrLWlvLmMgfCAyMyArKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5n ZWQsIDIyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9mcy9idHJm cy9kaXNrLWlvLmMgYi9mcy9idHJmcy9kaXNrLWlvLmMKaW5kZXggMWYyMWM2YzMzMjI4Li4yMDky Mzg4OWRlNjkgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2Rpc2staW8uYworKysgYi9mcy9idHJmcy9k aXNrLWlvLmMKQEAgLTUzNSw4ICs1MzUsMjkgQEAgc3RhdGljIG5vaW5saW5lIGludCBjaGVja19s ZWFmKHN0cnVjdCBidHJmc19yb290ICpyb290LAogCXUzMiBucml0ZW1zID0gYnRyZnNfaGVhZGVy X25yaXRlbXMobGVhZik7CiAJaW50IHNsb3Q7CiAKLQlpZiAobnJpdGVtcyA9PSAwKQorCWlmIChu cml0ZW1zID09IDApIHsKKwkJc3RydWN0IGJ0cmZzX3Jvb3QgKmNoZWNrX3Jvb3Q7CisKKwkJa2V5 Lm9iamVjdGlkID0gYnRyZnNfaGVhZGVyX293bmVyKGxlYWYpOworCQlrZXkudHlwZSA9IEJUUkZT X1JPT1RfSVRFTV9LRVk7CisJCWtleS5vZmZzZXQgPSAodTY0KS0xOworCisJCWNoZWNrX3Jvb3Qg PSBidHJmc19nZXRfZnNfcm9vdChyb290LT5mc19pbmZvLCAma2V5LCBmYWxzZSk7CisJCS8qCisJ CSAqIFRoZSBvbmx5IHJlYXNvbiB3ZSBhbHNvIGNoZWNrIE5VTEwgaGVyZSBpcyB0aGF0IGR1cmlu ZworCQkgKiBvcGVuX2N0cmVlKCkgc29tZSByb290cyBoYXMgbm90IHlldCBiZWVuIHNldCB1cC4K KwkJICovCisJCWlmICghSVNfRVJSX09SX05VTEwoY2hlY2tfcm9vdCkpIHsKKwkJCS8qIGlmIGxl YWYgaXMgdGhlIHJvb3QsIHRoZW4gaXQncyBmaW5lICovCisJCQlpZiAobGVhZi0+c3RhcnQgIT0K KwkJCSAgICBidHJmc19yb290X2J5dGVucigmY2hlY2tfcm9vdC0+cm9vdF9pdGVtKSkgeworCQkJ CUNPUlJVUFQoIm5vbi1yb290IGxlYWYncyBucml0ZW1zIGlzIDAiLAorCQkJCQlsZWFmLCByb290 LCAwKTsKKwkJCQlyZXR1cm4gLUVJTzsKKwkJCX0KKwkJfQogCQlyZXR1cm4gMDsKKwl9CiAKIAkv KiBDaGVjayB0aGUgMCBpdGVtICovCiAJaWYgKGJ0cmZzX2l0ZW1fb2Zmc2V0X25yKGxlYWYsIDAp ICsgYnRyZnNfaXRlbV9zaXplX25yKGxlYWYsIDApICE9Ci0tIApCZW4gSHV0Y2hpbmdzLCBTb2Z0 d2FyZSBEZXZlbG9wZXIgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZXRoaW5rIEx0ZApodHRw czovL3d3dy5jb2RldGhpbmsuY28udWsvICAgICAgICAgICAgICAgICBEYWxlIEhvdXNlLCAzNSBE YWxlIFN0cmVldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuY2hlc3Rl ciwgTTEgMkhGLCBVbml0ZWQgS2luZ2RvbQoKCkZyb20gNTdkYjNiZWFjMzEzYmQyMTIwZGRmNTll MjJkNWY2YTdhOGM3NDAwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTGl1IEJvIDxi by5saS5saXVAb3JhY2xlLmNvbT4KRGF0ZTogVHVlLCAyMyBBdWcgMjAxNiAxNzozNzo0NSAtMDcw MApTdWJqZWN0OiBbUEFUQ0ggMDcvMzFdIEJ0cmZzOiBjaGVjayBidHJlZSBub2RlJ3MgbnJpdGVt cwoKY29tbWl0IDA1M2FiNzBmMDYwNDIyNGM3ODkzYjQzZjlkOWQ1ZWZhMjgzNTgwZDYgdXBzdHJl YW0uCgpXaGVuIGJ0cmVlIG5vZGUgKGxldmVsID0gMSkgaGFzIG5yaXRlbXMgd2hpY2ggZXF1YWxz IHRvIHplcm8sCndlIGNhbiBlbmQgdXAgd2l0aCBwYW5pYyBkdWUgdG8gaW5zZXJ0X3B0cigpJ3MK CkJVR19PTihzbG90ID4gbnJpdGVtcyk7Cgp3aGVyZSBzbG90IGlzIDEgYW5kIG5yaXRlbXMgaXMg MCwgYXMgY29weV9mb3Jfc3BsaXQoKSBjYWxscwppbnNlcnRfcHRyKC4uLCBwYXRoLT5zbG90c1sx XSArIDEsIC4uLik7CgpBIGludmFsaWQgdmFsdWUgcmVzdWx0cyBpbiB0aGUgd2hvbGUgbWVzcywg dGhpcyBhZGRzIHRoZSBjaGVjawpmb3IgYnRyZWUncyBub2RlIG5yaXRlbXMgc28gdGhhdCB3ZSBz dG9wIHJlYWRpbmcgYmxvY2sgd2hlbgp3aGVuIHNvbWV0aGluZyBpcyB3cm9uZy4KClNpZ25lZC1v ZmYtYnk6IExpdSBCbyA8Ym8ubGkubGl1QG9yYWNsZS5jb20+ClJldmlld2VkLWJ5OiBEYXZpZCBT dGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0 ZXJiYUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogQ2hyaXMgTWFzb24gPGNsbUBmYi5jb20+ClNp Z25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVr PgotLS0KIGZzL2J0cmZzL2Rpc2staW8uYyB8IDE2ICsrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZGlzay1pby5j IGIvZnMvYnRyZnMvZGlzay1pby5jCmluZGV4IDIwOTIzODg5ZGU2OS4uNTViNGY1ZTAyNTUwIDEw MDY0NAotLS0gYS9mcy9idHJmcy9kaXNrLWlvLmMKKysrIGIvZnMvYnRyZnMvZGlzay1pby5jCkBA IC02MDksNiArNjA5LDE5IEBAIHN0YXRpYyBub2lubGluZSBpbnQgY2hlY2tfbGVhZihzdHJ1Y3Qg YnRyZnNfcm9vdCAqcm9vdCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBjaGVja19ub2Rl KHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqbm9kZSkKK3sK Kwl1bnNpZ25lZCBsb25nIG5yID0gYnRyZnNfaGVhZGVyX25yaXRlbXMobm9kZSk7CisKKwlpZiAo bnIgPT0gMCB8fCBuciA+IEJUUkZTX05PREVQVFJTX1BFUl9CTE9DSyhyb290KSkgeworCQlidHJm c19jcml0KHJvb3QtPmZzX2luZm8sCisJCQkgICAiY29ycnVwdCBub2RlOiBibG9jayAlbGx1IHJv b3QgJWxsdSBucml0ZW1zICVsdSIsCisJCQkgICBub2RlLT5zdGFydCwgcm9vdC0+b2JqZWN0aWQs IG5yKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGJ0 cmVlX3JlYWRwYWdlX2VuZF9pb19ob29rKHN0cnVjdCBidHJmc19pb19iaW8gKmlvX2JpbywKIAkJ CQkgICAgICB1NjQgcGh5X29mZnNldCwgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJCQkJICAgICAgdTY0 IHN0YXJ0LCB1NjQgZW5kLCBpbnQgbWlycm9yKQpAQCAtNjgwLDYgKzY5Myw5IEBAIHN0YXRpYyBp bnQgYnRyZWVfcmVhZHBhZ2VfZW5kX2lvX2hvb2soc3RydWN0IGJ0cmZzX2lvX2JpbyAqaW9fYmlv LAogCQlyZXQgPSAtRUlPOwogCX0KIAorCWlmIChmb3VuZF9sZXZlbCA+IDAgJiYgY2hlY2tfbm9k ZShyb290LCBlYikpCisJCXJldCA9IC1FSU87CisKIAlpZiAoIXJldCkKIAkJc2V0X2V4dGVudF9i dWZmZXJfdXB0b2RhdGUoZWIpOwogZXJyOgotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUgRGV2 ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93d3cu Y29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBTdHJl ZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0xIDJI RiwgVW5pdGVkIEtpbmdkb20KCgpGcm9tIDM1YjIwMTBmODY1YzZjMzE1MjFmMmIxMjAwOTBiOTU3 YTAzMDdiMDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IExpdSBCbyA8Ym8ubGkubGl1 QG9yYWNsZS5jb20+CkRhdGU6IEZyaSwgMiBTZXAgMjAxNiAxMjozNTozNCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggMDgvMzFdIEJ0cmZzOiBmaXggQlVHX09OIGluIGJ0cmZzX21hcmtfYnVmZmVyX2Rp cnR5Cgpjb21taXQgZWY4NWIyNWU5ODJiNWJiYTE1MzBiOTM2ZTI4M2VmMTI5ZjAyYWI5ZCB1cHN0 cmVhbS4KClRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggQ09ORklHX0JUUkZTX0ZTX0NIRUNLX0lO VEVHUklUWT15LgoKQ29tbWl0IDFiYTk4ZDAgKCJCdHJmczogZGV0ZWN0IGNvcnJ1cHRpb24gd2hl biBub24tcm9vdCBsZWFmIGhhcyB6ZXJvIGl0ZW0iKQphc3N1bWVzIHRoYXQgYSBsZWFmIGlzIGl0 cyByb290IHdoZW4gbGVhZi0+Ynl0ZW5yID09IGJ0cmZzX3Jvb3RfYnl0ZW5yKHJvb3QpLApob3dl dmVyLCB3ZSBzaG91bGQgbm90IHVzZSBidHJmc19yb290X2J5dGVucihyb290KSBzaW5jZSBpdCdz IG1haW5seSBnb3QKdXBkYXRlZCBkdXJpbmcgY29tbWl0dGluZyB0cmFuc2FjdGlvbi4gIFNvIHRo ZSBjaGVjayBjYW4gZmFpbCB3aGVuIGRvaW5nCkNPVyBvbiB0aGlzIGxlYWYgd2hpbGUgaXQgaXMg YSByb290LgoKVGhpcyBjaGFuZ2VzIHRvIHVzZSAiaWYgKGxlYWYgPT0gYnRyZnNfcm9vdF9ub2Rl KHJvb3QpKSIgaW5zdGVhZCwganVzdCBsaWtlCmhvdyB3ZSBjaGVjayB3aGV0aGVyIGxlYWYgaXMg YSByb290IGluIF9fYnRyZnNfY293X2Jsb2NrKCkuCgpGaXhlczogMWJhOThkMDg2ZmUzIChCdHJm czogZGV0ZWN0IGNvcnJ1cHRpb24gd2hlbiBub24tcm9vdCBsZWFmIGhhcyB6ZXJvIGl0ZW0pClJl cG9ydGVkLWJ5OiBKZWZmIE1haG9uZXkgPGplZmZtQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBM aXUgQm8gPGJvLmxpLmxpdUBvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogRmlsaXBlIE1hbmFuYSA8 ZmRtYW5hbmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3Jl Z2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJl bi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZzL2J0cmZzL2Rpc2staW8uYyB8IDEw ICsrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZGlzay1pby5jIGIvZnMvYnRyZnMvZGlzay1pby5j CmluZGV4IDU1YjRmNWUwMjU1MC4uNTgwNWI0ZjQ3MDJlIDEwMDY0NAotLS0gYS9mcy9idHJmcy9k aXNrLWlvLmMKKysrIGIvZnMvYnRyZnMvZGlzay1pby5jCkBAIC01NDgsMTMgKzU0OCwxNyBAQCBz dGF0aWMgbm9pbmxpbmUgaW50IGNoZWNrX2xlYWYoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJ CSAqIG9wZW5fY3RyZWUoKSBzb21lIHJvb3RzIGhhcyBub3QgeWV0IGJlZW4gc2V0IHVwLgogCQkg Ki8KIAkJaWYgKCFJU19FUlJfT1JfTlVMTChjaGVja19yb290KSkgeworCQkJc3RydWN0IGV4dGVu dF9idWZmZXIgKmViOworCisJCQllYiA9IGJ0cmZzX3Jvb3Rfbm9kZShjaGVja19yb290KTsKIAkJ CS8qIGlmIGxlYWYgaXMgdGhlIHJvb3QsIHRoZW4gaXQncyBmaW5lICovCi0JCQlpZiAobGVhZi0+ c3RhcnQgIT0KLQkJCSAgICBidHJmc19yb290X2J5dGVucigmY2hlY2tfcm9vdC0+cm9vdF9pdGVt KSkgeworCQkJaWYgKGxlYWYgIT0gZWIpIHsKIAkJCQlDT1JSVVBUKCJub24tcm9vdCBsZWFmJ3Mg bnJpdGVtcyBpcyAwIiwKLQkJCQkJbGVhZiwgcm9vdCwgMCk7CisJCQkJCWxlYWYsIGNoZWNrX3Jv b3QsIDApOworCQkJCWZyZWVfZXh0ZW50X2J1ZmZlcihlYik7CiAJCQkJcmV0dXJuIC1FSU87CiAJ CQl9CisJCQlmcmVlX2V4dGVudF9idWZmZXIoZWIpOwogCQl9CiAJCXJldHVybiAwOwogCX0KLS0g CkJlbiBIdXRjaGluZ3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAgICAg ICBDb2RldGhpbmsgTHRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAgICAg ICAgIERhbGUgSG91c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNYW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSA0ZDE4 YjZiMGI3N2I0NmZkZDFkNDUyZWM1ZjFlMjRkOTNmMjE4YTk5IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBMaXUgQm8gPGJvLmxpLmxpdUBvcmFjbGUuY29tPgpEYXRlOiBXZWQsIDE0IFNl cCAyMDE2IDE3OjIyOjU3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwOS8zMV0gQnRyZnM6IG1lbXNl dCB0byBhdm9pZCBzdGFsZSBjb250ZW50IGluIGJ0cmVlIG5vZGUKIGJsb2NrCgpjb21taXQgM2Vi NTQ4ZWUzYTgwNDJkOTVhZDgxYmUyNTRlNjdhNTIyMmMyNGUwMyB1cHN0cmVhbS4KCkR1cmluZyB1 cGRhdGluZyBidHJlZSwgd2UgY291bGQgcHVzaCBpdGVtcyBiZXR3ZWVuIHNpYmxpbmcKbm9kZXMv bGVhdmVzLCBmb3IgbGVhdmVzIGRhdGEgc2VjdGlvbnMgc3RhcnRzIHJldmVyc2VseSBmcm9tCnRo ZSBlbmQgb2YgdGhlIGJsb2NrIHdoaWxlIGZvciBub2RlcyB3ZSBvbmx5IGhhdmUga2V5IHBhaXJz CndoaWNoIGFyZSBzdG9yZWQgb25lIGJ5IG9uZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgYmxvY2su CgpTbyB3ZSBjb3VsZCBkbyB0cnkgdG8gcHVzaCBrZXkgcGFpcnMgZnJvbSBvbmUgbm9kZSB0byB0 aGUgbmV4dApub2RlIHJpZ2h0IGluIHRoZSB0cmVlLCBhbmQgYWZ0ZXIgdGhhdCwgd2UgdXBkYXRl IHRoZSBub2RlJ3MKbnJpdGVtcyB0byByZWZsZWN0IHRoZSBjb3JyZWN0IGVuZCB3aGlsZSBsZWF2 aW5nIHRoZSBzdGFsZQpjb250ZW50IGluIHRoZSBub2RlLiAgT25lIG1heSBpbnRlbnRpb25hbGx5 IGNvcnJ1cHQgdGhlIGZzCmltYWdlIGFuZCBhY2Nlc3MgdGhlIHN0YWxlIGNvbnRlbnQgYnkgYnVt cGluZyB0aGUgbnJpdGVtcyBhbmQKY2F1c2VzIHZhcmlvdXMgY3Jhc2hlcy4KClRoaXMgdGFrZXMg dGhlIGluLW1lbW9yeSBAbnJpdGVtcyBhcyB0aGUgY29ycmVjdCBvbmUgYW5kCmdldHMgdG8gbWVt c2V0IHRoZSB1bnVzZWQgcGFydCBvZiBhIGJ0cmVlIG5vZGUuCgpTaWduZWQtb2ZmLWJ5OiBMaXUg Qm8gPGJvLmxpLmxpdUBvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3RlcmJhIDxkc3Rl cmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5j b20+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5r LmNvLnVrPgotLS0KIGZzL2J0cmZzL2V4dGVudF9pby5jIHwgMTEgKysrKysrKysrKysKIDEgZmls ZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50 X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8uYwppbmRleCA4OGJlZTY3MDNjYzAuLmY4YjJmZTk5 NDRhNyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMKKysrIGIvZnMvYnRyZnMvZXh0 ZW50X2lvLmMKQEAgLTM4NTgsNiArMzg1OCwxNyBAQCBzdGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNr IGludCB3cml0ZV9vbmVfZWIoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAogCWlmIChidHJmc19o ZWFkZXJfb3duZXIoZWIpID09IEJUUkZTX1RSRUVfTE9HX09CSkVDVElEKQogCQliaW9fZmxhZ3Mg PSBFWFRFTlRfQklPX1RSRUVfTE9HOwogCisJLyogc2V0IGJ0cmVlIG5vZGUgYmV5b25kIG5yaXRl bXMgd2l0aCAwIHRvIGF2b2lkIHN0YWxlIGNvbnRlbnQgKi8KKwlpZiAoYnRyZnNfaGVhZGVyX2xl dmVsKGViKSA+IDApIHsKKwkJdTMyIG5yaXRlbXM7CisJCXVuc2lnbmVkIGxvbmcgZW5kOworCisJ CW5yaXRlbXMgPSBidHJmc19oZWFkZXJfbnJpdGVtcyhlYik7CisJCWVuZCA9IGJ0cmZzX25vZGVf a2V5X3B0cl9vZmZzZXQobnJpdGVtcyk7CisKKwkJbWVtc2V0X2V4dGVudF9idWZmZXIoZWIsIDAs IGVuZCwgZWItPmxlbiAtIGVuZCk7CisJfQorCiAJZm9yIChpID0gMDsgaSA8IG51bV9wYWdlczsg aSsrKSB7CiAJCXN0cnVjdCBwYWdlICpwID0gZWItPnBhZ2VzW2ldOwogCi0tIApCZW4gSHV0Y2hp bmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZXRoaW5r IEx0ZApodHRwczovL3d3dy5jb2RldGhpbmsuY28udWsvICAgICAgICAgICAgICAgICBEYWxlIEhv dXNlLCAzNSBEYWxlIFN0cmVldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TWFuY2hlc3RlciwgTTEgMkhGLCBVbml0ZWQgS2luZ2RvbQoKCkZyb20gOTRjNzkyMDE5NmQ0ZWYy N2ZiZWNlM2ExN2ZmMWNkMTJjMzE3MzZmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog TGl1IEJvIDxiby5saS5saXVAb3JhY2xlLmNvbT4KRGF0ZTogV2VkLCAxNCBTZXAgMjAxNiAxNzoy MzoyNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMzFdIEJ0cmZzOiBpbXByb3ZlIGNoZWNrX25v ZGUgdG8gYXZvaWQgcmVhZGluZyBjb3JydXB0ZWQKIG5vZGVzCgpjb21taXQgNmI3MjJjMTc0N2Q1 MzNhYzZkNGRmMTEwZGM4MjMzZGI0NjkxOGI2NSB1cHN0cmVhbS4KCldlIG5lZWQgdG8gY2hlY2sg aXRlbXMgaW4gYSBub2RlIHRvIG1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHJlYWRpbmcKYSB2YWxpZCBv bmUsIG90aGVyd2lzZSB3ZSBjb3VsZCBnZXQgdmFyaW91cyBjcmFzaGVzIHdoaWxlIHByb2Nlc3Np bmcKZGVsYXllZF9yZWZzLgoKU2lnbmVkLW9mZi1ieTogTGl1IEJvIDxiby5saS5saXVAb3JhY2xl LmNvbT4KUmV2aWV3ZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2lnbmVk LW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBC ZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJm cy9kaXNrLWlvLmMgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMSBmaWxl IGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZnMvYnRyZnMvZGlzay1pby5jIGIvZnMvYnRyZnMvZGlzay1pby5jCmluZGV4IDU4MDViNGY0NzAy ZS4uNzNlNGU1ZjU2NjkyIDEwMDY0NAotLS0gYS9mcy9idHJmcy9kaXNrLWlvLmMKKysrIGIvZnMv YnRyZnMvZGlzay1pby5jCkBAIC01MjMsOSArNTIzLDEwIEBAIHN0YXRpYyBpbnQgY2hlY2tfdHJl ZV9ibG9ja19mc2lkKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLAogfQogCiAjZGVmaW5l IENPUlJVUFQocmVhc29uLCBlYiwgcm9vdCwgc2xvdCkJCQkJXAotCWJ0cmZzX2NyaXQocm9vdC0+ ZnNfaW5mbywgImNvcnJ1cHQgbGVhZiwgJXM6IGJsb2NrPSVsbHUsIglcCi0JCSAgICJyb290PSVs bHUsIHNsb3Q9JWQiLCByZWFzb24sCQkJXAotCSAgICAgICBidHJmc19oZWFkZXJfYnl0ZW5yKGVi KSwJcm9vdC0+b2JqZWN0aWQsIHNsb3QpCisJYnRyZnNfY3JpdChyb290LT5mc19pbmZvLCAiY29y cnVwdCAlcywgJXM6IGJsb2NrPSVsbHUsIglcCisJCSAgICIgcm9vdD0lbGx1LCBzbG90PSVkIiwJ CQlcCisJCSAgIGJ0cmZzX2hlYWRlcl9sZXZlbChlYikgPT0gMCA/ICJsZWFmIiA6ICJub2RlIixc CisJCSAgIHJlYXNvbiwgYnRyZnNfaGVhZGVyX2J5dGVucihlYiksIHJvb3QtPm9iamVjdGlkLCBz bG90KQogCiBzdGF0aWMgbm9pbmxpbmUgaW50IGNoZWNrX2xlYWYoc3RydWN0IGJ0cmZzX3Jvb3Qg KnJvb3QsCiAJCQkgICAgICAgc3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYpCkBAIC02MTYsNiAr NjE3LDEwIEBAIHN0YXRpYyBub2lubGluZSBpbnQgY2hlY2tfbGVhZihzdHJ1Y3QgYnRyZnNfcm9v dCAqcm9vdCwKIHN0YXRpYyBpbnQgY2hlY2tfbm9kZShzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwg c3RydWN0IGV4dGVudF9idWZmZXIgKm5vZGUpCiB7CiAJdW5zaWduZWQgbG9uZyBuciA9IGJ0cmZz X2hlYWRlcl9ucml0ZW1zKG5vZGUpOworCXN0cnVjdCBidHJmc19rZXkga2V5LCBuZXh0X2tleTsK KwlpbnQgc2xvdDsKKwl1NjQgYnl0ZW5yOworCWludCByZXQgPSAwOwogCiAJaWYgKG5yID09IDAg fHwgbnIgPiBCVFJGU19OT0RFUFRSU19QRVJfQkxPQ0socm9vdCkpIHsKIAkJYnRyZnNfY3JpdChy b290LT5mc19pbmZvLApAQCAtNjIzLDcgKzYyOCwyNiBAQCBzdGF0aWMgaW50IGNoZWNrX25vZGUo c3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBleHRlbnRfYnVmZmVyICpub2RlKQogCQkJ ICAgbm9kZS0+c3RhcnQsIHJvb3QtPm9iamVjdGlkLCBucik7CiAJCXJldHVybiAtRUlPOwogCX0K LQlyZXR1cm4gMDsKKworCWZvciAoc2xvdCA9IDA7IHNsb3QgPCBuciAtIDE7IHNsb3QrKykgewor CQlieXRlbnIgPSBidHJmc19ub2RlX2Jsb2NrcHRyKG5vZGUsIHNsb3QpOworCQlidHJmc19ub2Rl X2tleV90b19jcHUobm9kZSwgJmtleSwgc2xvdCk7CisJCWJ0cmZzX25vZGVfa2V5X3RvX2NwdShu b2RlLCAmbmV4dF9rZXksIHNsb3QgKyAxKTsKKworCQlpZiAoIWJ5dGVucikgeworCQkJQ09SUlVQ VCgiaW52YWxpZCBpdGVtIHNsb3QiLCBub2RlLCByb290LCBzbG90KTsKKwkJCXJldCA9IC1FSU87 CisJCQlnb3RvIG91dDsKKwkJfQorCisJCWlmIChidHJmc19jb21wX2NwdV9rZXlzKCZrZXksICZu ZXh0X2tleSkgPj0gMCkgeworCQkJQ09SUlVQVCgiYmFkIGtleSBvcmRlciIsIG5vZGUsIHJvb3Qs IHNsb3QpOworCQkJcmV0ID0gLUVJTzsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorb3V0OgorCXJl dHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgYnRyZWVfcmVhZHBhZ2VfZW5kX2lvX2hvb2soc3Ry dWN0IGJ0cmZzX2lvX2JpbyAqaW9fYmlvLAotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUgRGV2 ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93d3cu Y29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBTdHJl ZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0xIDJI RiwgVW5pdGVkIEtpbmdkb20KCgpGcm9tIDE5NmYxYjcwZTYzMGZjYTAzY2E1YjM2ZjYwODUxODFj MTYyNDA5OWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IExpdSBCbyA8Ym8ubGkubGl1 QG9yYWNsZS5jb20+CkRhdGU6IFdlZCwgMTQgU2VwIDIwMTYgMTk6MTk6MDUgLTA3MDAKU3ViamVj dDogW1BBVENIIDExLzMxXSBCdHJmczoga2lsbCBCVUdfT04gaW4gcnVuX2RlbGF5ZWRfdHJlZV9y ZWYKCmNvbW1pdCAwMjc5NDIyMmM0MTMyYWMwMDNlNzI4MWZiNzFmNGVjMTY0NWZmYzg3IHVwc3Ry ZWFtLgoKSW4gYSBjb3JydXB0ZWQgYnRyZnMgaW1hZ2UsIHdlIGNhbiBjb21lIGFjcm9zcyB0aGlz IEJVR19PTiBhbmQKZ2V0IGFuIHVucmVwb25zaXZlIHN5c3RlbSwgYnV0IGlmIHdlIHJldHVybiBl cnJvcnMgaW5zdGVhZCwKaXRzIGNhbGxlciBjYW4gaGFuZGxlIGV2ZXJ5dGhpbmcgZ3JhY2VmdWxs eSBieSBhYm9ydGluZyB0aGUgY3VycmVudAp0cmFuc2FjdGlvbi4KClNpZ25lZC1vZmYtYnk6IExp dSBCbyA8Ym8ubGkubGl1QG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8 ZHN0ZXJiYUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNo aW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyB8IDggKysr KysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnQtdHJlZS5jIGIvZnMvYnRyZnMvZXh0ZW50LXRyZWUu YwppbmRleCBhYmZkMjMyMDg3M2QuLjE0NTQ5Mzg3YjUxOCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMv ZXh0ZW50LXRyZWUuYworKysgYi9mcy9idHJmcy9leHRlbnQtdHJlZS5jCkBAIC0yMzQyLDcgKzIz NDIsMTMgQEAgc3RhdGljIGludCBydW5fZGVsYXllZF90cmVlX3JlZihzdHJ1Y3QgYnRyZnNfdHJh bnNfaGFuZGxlICp0cmFucywKIAkJaW5zLnR5cGUgPSBCVFJGU19FWFRFTlRfSVRFTV9LRVk7CiAJ fQogCi0JQlVHX09OKG5vZGUtPnJlZl9tb2QgIT0gMSk7CisJaWYgKG5vZGUtPnJlZl9tb2QgIT0g MSkgeworCQlidHJmc19lcnIocm9vdC0+ZnNfaW5mbywKKwkiYnRyZWUgYmxvY2soJWxsdSkgaGFz ICVkIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gMTogYWN0aW9uICVkIHJlZl9yb290ICVsbHUgcGFy ZW50ICVsbHUiLAorCQkJICBub2RlLT5ieXRlbnIsIG5vZGUtPnJlZl9tb2QsIG5vZGUtPmFjdGlv biwgcmVmX3Jvb3QsCisJCQkgIHBhcmVudCk7CisJCXJldHVybiAtRUlPOworCX0KIAlpZiAobm9k ZS0+YWN0aW9uID09IEJUUkZTX0FERF9ERUxBWUVEX1JFRiAmJiBpbnNlcnRfcmVzZXJ2ZWQpIHsK IAkJQlVHX09OKCFleHRlbnRfb3AgfHwgIWV4dGVudF9vcC0+dXBkYXRlX2ZsYWdzKTsKIAkJcmV0 ID0gYWxsb2NfcmVzZXJ2ZWRfdHJlZV9ibG9jayh0cmFucywgcm9vdCwKLS0gCkJlbiBIdXRjaGlu Z3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAgICAgICBDb2RldGhpbmsg THRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAgICAgICAgIERhbGUgSG91 c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN YW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSA2ZDRmMTNmNjk1MGE4OWZh OWRiMWNhNjQwZTBhZWJkYzZjMDY5NGRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBM aXUgQm8gPGJvLmxpLmxpdUBvcmFjbGUuY29tPgpEYXRlOiBGcmksIDIzIFNlcCAyMDE2IDEzOjQ0 OjQ0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxMi8zMV0gQnRyZnM6IG1lbXNldCB0byBhdm9pZCBz dGFsZSBjb250ZW50IGluIGJ0cmVlIGxlYWYKCmNvbW1pdCA4NTFjZDE3M2YwNjA0NTgxNjUyODE3 NjAwMWNmODI5NDgyODIwMjljIHVwc3RyZWFtLgoKVGhpcyBpcyBhbiBhZGRpdGlvbmFsIHBhdGNo IHRvCiJCdHJmczogbWVtc2V0IHRvIGF2b2lkIHN0YWxlIGNvbnRlbnQgaW4gYnRyZWUgbm9kZSBi bG9jayIuCgpUaGlzIHVzZXMgbWVtc2V0IHRvIGluaXRpYWxpemUgdGhlIHVudXNlZCBzcGFjZSBp biBhIGxlYWYgdG8gYXZvaWQKcG90ZW50aWFsIHN0YWxlIGNvbnRlbnQsIHdoaWNoIG1heSBiZSBp bmN1cnJlZCBieSBwdXNoaW5nIGl0ZW1zCmJldHdlZW4gc2libGluZyBsZWF2ZXMuCgpTaWduZWQt b2ZmLWJ5OiBMaXUgQm8gPGJvLmxpLmxpdUBvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQg U3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRz dGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGlu Z3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZzL2J0cmZzL2N0cmVlLmMgICAgIHwgMTQgLS0tLS0t LS0tLS0tLS0KIGZzL2J0cmZzL2N0cmVlLmggICAgIHwgMTUgKysrKysrKysrKysrKysrCiBmcy9i dHJmcy9leHRlbnRfaW8uYyB8IDE4ICsrKysrKysrKysrKystLS0tLQogMyBmaWxlcyBjaGFuZ2Vk LCAyOCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9idHJm cy9jdHJlZS5jIGIvZnMvYnRyZnMvY3RyZWUuYwppbmRleCAzOGVlMDg2NzU0NjguLjhmNGJhYTNj Yjk5MiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvY3RyZWUuYworKysgYi9mcy9idHJmcy9jdHJlZS5j CkBAIC0xNzI2LDIwICsxNzI2LDYgQEAgaW50IGJ0cmZzX3JlYWxsb2Nfbm9kZShzdHJ1Y3QgYnRy ZnNfdHJhbnNfaGFuZGxlICp0cmFucywKIAlyZXR1cm4gZXJyOwogfQogCi0vKgotICogVGhlIGxl YWYgZGF0YSBncm93cyBmcm9tIGVuZC10by1mcm9udCBpbiB0aGUgbm9kZS4KLSAqIHRoaXMgcmV0 dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgc3RhcnQgb2YgdGhlIGxhc3QgaXRlbSwKLSAqIHdoaWNo IGlzIHRoZSBzdG9wIG9mIHRoZSBsZWFmIGRhdGEgc3RhY2sKLSAqLwotc3RhdGljIGlubGluZSB1 bnNpZ25lZCBpbnQgbGVhZl9kYXRhX2VuZChzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwKLQkJCQkJ IHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmKQotewotCXUzMiBuciA9IGJ0cmZzX2hlYWRlcl9u cml0ZW1zKGxlYWYpOwotCWlmIChuciA9PSAwKQotCQlyZXR1cm4gQlRSRlNfTEVBRl9EQVRBX1NJ WkUocm9vdCk7Ci0JcmV0dXJuIGJ0cmZzX2l0ZW1fb2Zmc2V0X25yKGxlYWYsIG5yIC0gMSk7Ci19 Ci0KIAogLyoKICAqIHNlYXJjaCBmb3Iga2V5IGluIHRoZSBleHRlbnRfYnVmZmVyLiAgVGhlIGl0 ZW1zIHN0YXJ0IGF0IG9mZnNldCBwLApkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvY3RyZWUuaCBiL2Zz L2J0cmZzL2N0cmVlLmgKaW5kZXggZTg0NzU3M2M2ZGIwLi5mYzZiYTE1NDdkNzUgMTAwNjQ0Ci0t LSBhL2ZzL2J0cmZzL2N0cmVlLmgKKysrIGIvZnMvYnRyZnMvY3RyZWUuaApAQCAtMzE1OCw2ICsz MTU4LDIxIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBidHJmc19sZWFmX2RhdGEoc3Ry dWN0IGV4dGVudF9idWZmZXIgKmwpCiAJcmV0dXJuIG9mZnNldG9mKHN0cnVjdCBidHJmc19sZWFm LCBpdGVtcyk7CiB9CiAKKy8qCisgKiBUaGUgbGVhZiBkYXRhIGdyb3dzIGZyb20gZW5kLXRvLWZy b250IGluIHRoZSBub2RlLgorICogdGhpcyByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoZSBzdGFy dCBvZiB0aGUgbGFzdCBpdGVtLAorICogd2hpY2ggaXMgdGhlIHN0b3Agb2YgdGhlIGxlYWYgZGF0 YSBzdGFjaworICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBsZWFmX2RhdGFfZW5kKHN0 cnVjdCBidHJmc19yb290ICpyb290LAorCQkJCQkgc3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYp Cit7CisJdTMyIG5yID0gYnRyZnNfaGVhZGVyX25yaXRlbXMobGVhZik7CisKKwlpZiAobnIgPT0g MCkKKwkJcmV0dXJuIEJUUkZTX0xFQUZfREFUQV9TSVpFKHJvb3QpOworCXJldHVybiBidHJmc19p dGVtX29mZnNldF9ucihsZWFmLCBuciAtIDEpOworfQorCiAvKiBzdHJ1Y3QgYnRyZnNfZmlsZV9l eHRlbnRfaXRlbSAqLwogQlRSRlNfU0VUR0VUX0ZVTkNTKGZpbGVfZXh0ZW50X3R5cGUsIHN0cnVj dCBidHJmc19maWxlX2V4dGVudF9pdGVtLCB0eXBlLCA4KTsKIEJUUkZTX1NFVEdFVF9TVEFDS19G VU5DUyhzdGFja19maWxlX2V4dGVudF9kaXNrX2J5dGVuciwKZGlmZiAtLWdpdCBhL2ZzL2J0cmZz L2V4dGVudF9pby5jIGIvZnMvYnRyZnMvZXh0ZW50X2lvLmMKaW5kZXggZjhiMmZlOTk0NGE3Li5h MmZmZjlhMGZlOTEgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2V4dGVudF9pby5jCisrKyBiL2ZzL2J0 cmZzL2V4dGVudF9pby5jCkBAIC0zODQ3LDggKzM4NDcsMTAgQEAgc3RhdGljIG5vaW5saW5lX2Zv cl9zdGFjayBpbnQgd3JpdGVfb25lX2ViKHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwKIAlzdHJ1 Y3QgYmxvY2tfZGV2aWNlICpiZGV2ID0gZnNfaW5mby0+ZnNfZGV2aWNlcy0+bGF0ZXN0X2JkZXY7 CiAJc3RydWN0IGV4dGVudF9pb190cmVlICp0cmVlID0gJkJUUkZTX0koZnNfaW5mby0+YnRyZWVf aW5vZGUpLT5pb190cmVlOwogCXU2NCBvZmZzZXQgPSBlYi0+c3RhcnQ7CisJdTMyIG5yaXRlbXM7 CiAJdW5zaWduZWQgbG9uZyBpLCBudW1fcGFnZXM7CiAJdW5zaWduZWQgbG9uZyBiaW9fZmxhZ3Mg PSAwOworCXVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKIAlpbnQgcncgPSAoZXBkLT5zeW5jX2lv ID8gV1JJVEVfU1lOQyA6IFdSSVRFKSB8IFJFUV9NRVRBOwogCWludCByZXQgPSAwOwogCkBAIC0z ODU4LDE1ICszODYwLDIxIEBAIHN0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sgaW50IHdyaXRlX29u ZV9lYihzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCiAJaWYgKGJ0cmZzX2hlYWRlcl9vd25lcihl YikgPT0gQlRSRlNfVFJFRV9MT0dfT0JKRUNUSUQpCiAJCWJpb19mbGFncyA9IEVYVEVOVF9CSU9f VFJFRV9MT0c7CiAKLQkvKiBzZXQgYnRyZWUgbm9kZSBiZXlvbmQgbnJpdGVtcyB3aXRoIDAgdG8g YXZvaWQgc3RhbGUgY29udGVudCAqLworCS8qIHNldCBidHJlZSBibG9ja3MgYmV5b25kIG5yaXRl bXMgd2l0aCAwIHRvIGF2b2lkIHN0YWxlIGNvbnRlbnQuICovCisJbnJpdGVtcyA9IGJ0cmZzX2hl YWRlcl9ucml0ZW1zKGViKTsKIAlpZiAoYnRyZnNfaGVhZGVyX2xldmVsKGViKSA+IDApIHsKLQkJ dTMyIG5yaXRlbXM7Ci0JCXVuc2lnbmVkIGxvbmcgZW5kOwotCi0JCW5yaXRlbXMgPSBidHJmc19o ZWFkZXJfbnJpdGVtcyhlYik7CiAJCWVuZCA9IGJ0cmZzX25vZGVfa2V5X3B0cl9vZmZzZXQobnJp dGVtcyk7CiAKIAkJbWVtc2V0X2V4dGVudF9idWZmZXIoZWIsIDAsIGVuZCwgZWItPmxlbiAtIGVu ZCk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogbGVhZjoKKwkJICogaGVhZGVyIDAgMSAyIC4uIE4g Li4uIGRhdGFfTiAuLiBkYXRhXzIgZGF0YV8xIGRhdGFfMAorCQkgKi8KKwkJc3RhcnQgPSBidHJm c19pdGVtX25yX29mZnNldChucml0ZW1zKTsKKwkJZW5kID0gYnRyZnNfbGVhZl9kYXRhKGViKSAr CisJCSAgICAgIGxlYWZfZGF0YV9lbmQoZnNfaW5mby0+dHJlZV9yb290LCBlYik7CisJCW1lbXNl dF9leHRlbnRfYnVmZmVyKGViLCAwLCBzdGFydCwgZW5kIC0gc3RhcnQpOwogCX0KIAogCWZvciAo aSA9IDA7IGkgPCBudW1fcGFnZXM7IGkrKykgewotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUg RGV2ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93 d3cuY29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBT dHJlZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0x IDJIRiwgVW5pdGVkIEtpbmdkb20KCgpGcm9tIDIzZDIyNzRjYzc2YWI4NTg3YjI1NjEzNWZkM2Ez ZTVkODNjNmQzZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEZpbGlwZSBNYW5hbmEg PGZkbWFuYW5hQHN1c2UuY29tPgpEYXRlOiBXZWQsIDIzIE5vdiAyMDE2IDE2OjIxOjE4ICswMDAw ClN1YmplY3Q6IFtQQVRDSCAxMy8zMV0gQnRyZnM6IGZpeCBlbXB0aW5lc3MgY2hlY2sgZm9yIGRp cnRpZWQgZXh0ZW50IGJ1ZmZlcnMKIGF0IGNoZWNrX2xlYWYoKQoKY29tbWl0IGYxNzdkNzM5NDli Zjc1ODU0MmNhMTVhMWMxOTQ1YmQyZTgwMmNjNjUgdXBzdHJlYW0uCgpXZSBjYW4gbm90IHNpbXBs eSB1c2UgdGhlIG93bmVyIGZpZWxkIGZyb20gYW4gZXh0ZW50IGJ1ZmZlcidzIGhlYWRlciB0bwpn ZXQgdGhlIGlkIG9mIHRoZSByZXNwZWN0aXZlIHRyZWUgd2hlbiB0aGUgZXh0ZW50IGJ1ZmZlciBp cyBmcm9tIGEKcmVsb2NhdGlvbiB0cmVlLiBXaGVuIHdlIGNyZWF0ZSB0aGUgcm9vdCBmb3IgYSBy ZWxvY2F0aW9uIHRyZWUgd2UgbGVhdmUKKG9uIHB1cnBvc2UpIHRoZSBvd25lciBmaWVsZCB3aXRo IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBzdWJ2b2x1bWUncyB0cmVlCnJvb3QgKHdlIGRvIHRoaXMg YXQgY3RyZWUuYzpidHJmc19jb3B5X3Jvb3QoKSkuIFNvIHdlIG11c3QgaWdub3JlIGV4dGVudApi dWZmZXJzIGZyb20gcmVsb2NhdGlvbiB0cmVlcywgd2hpY2ggaGF2ZSB0aGUgQlRSRlNfSEVBREVS X0ZMQUdfUkVMT0MKZmxhZyBzZXQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdpbGwgYWx3YXlzIGNv bnNpZGVyIHRoZSBleHRlbnQgYnVmZmVyCmFzIG5vdCBiZWluZyB0aGUgcm9vdCBvZiB0aGUgdHJl ZSAodGhlIHJvb3Qgb2Ygb3JpZ2luYWwgc3Vidm9sdW1lIHRyZWUKaXMgYWx3YXlzIGRpZmZlcmVu dCBmcm9tIHRoZSByb290IG9mIHRoZSByZXNwZWN0aXZlIHJlbG9jYXRpb24gdHJlZSkuCgpUaGlz IGxlYWQgdG8gYXNzZXJ0aW9uIGZhaWx1cmVzIHdoZW4gcnVubmluZyB3aXRoIHRoZSBpbnRlZ3Jp dHkgY2hlY2tlcgplbmFibGVkIChDT05GSUdfQlRSRlNfRlNfQ0hFQ0tfSU5URUdSSVRZPXkpIHN1 Y2ggYXMgdGhlIGZvbGxvd2luZzoKClsgIDY0My4zOTM0MDldIEJUUkZTIGNyaXRpY2FsIChkZXZp Y2Ugc2RnKTogY29ycnVwdCBsZWFmLCBub24tcm9vdCBsZWFmJ3MgbnJpdGVtcyBpcyAwOiBibG9j az0zODUwNjQ5Niwgcm9vdD0yNjAsIHNsb3Q9MApbICA2NDMuMzk3NjA5XSBCVFJGUyBpbmZvIChk ZXZpY2Ugc2RnKTogbGVhZiAzODUwNjQ5NiB0b3RhbCBwdHJzIDAgZnJlZSBzcGFjZSAzOTk1Clsg IDY0My40MDcwNzVdIGFzc2VydGlvbiBmYWlsZWQ6IDAsIGZpbGU6IGZzL2J0cmZzL2Rpc2staW8u YywgbGluZTogNDA3OApbICA2NDMuNDA4NDI1XSAtLS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0t LS0tLS0tLS0KWyAgNjQzLjQwOTExMl0ga2VybmVsIEJVRyBhdCBmcy9idHJmcy9jdHJlZS5oOjM0 MTkhClsgIDY0My40MDk3NzNdIGludmFsaWQgb3Bjb2RlOiAwMDAwIFsjMV0gUFJFRU1QVCBTTVAK WyAgNjQzLjQxMDQ0N10gTW9kdWxlcyBsaW5rZWQgaW46IGRtX2ZsYWtleSBkbV9tb2QgY3JjMzJj X2dlbmVyaWMgYnRyZnMgeG9yIHJhaWQ2X3BxIHBwZGV2IHBzbW91c2UgYWNwaV9jcHVmcmVxIHBh cnBvcnRfcGMgZXZkZXYgcGFycG9ydCB0cG1fdGlzIHRwbV90aXNfY29yZSBwY3Nwa3Igc2VyaW9f cmF3IGkyY19waWl4NCBzZyB0cG0gaTJjX2NvcmUgYnV0dG9uIHByb2Nlc3NvciBsb29wIGF1dG9m czQgZXh0NCBjcmMxNiBqYmQyIG1iY2FjaGUgc3JfbW9kIGNkcm9tIHNkX21vZCBhdGFfZ2VuZXJp YyB2aXJ0aW9fc2NzaSBhdGFfcGlpeCBsaWJhdGEgdmlydGlvX3BjaSB2aXJ0aW9fcmluZyBzY3Np X21vZCB2aXJ0aW8gZTEwMDAgZmxvcHB5ClsgIDY0My40MTQzNTZdIENQVTogMTEgUElEOiAzMjcy NiBDb21tOiBidHJmcyBOb3QgdGFpbnRlZCA0LjguMC1yYzgtYnRyZnMtbmV4dC0zNSsgIzEKWyAg NjQzLjQxNDM1Nl0gSGFyZHdhcmUgbmFtZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJ WCwgMTk5NiksIEJJT1MgcmVsLTEuOS4xLTAtZ2IzZWYzOWYtcHJlYnVpbHQucWVtdS1wcm9qZWN0 Lm9yZyAwNC8wMS8yMDE0ClsgIDY0My40MTQzNTZdIHRhc2s6IGZmZmY4ODAxNDVlOTViMDAgdGFz ay5zdGFjazogZmZmZjg4MDE0ODI2YzAwMApbICA2NDMuNDE0MzU2XSBSSVA6IDAwMTA6WzxmZmZm ZmZmZmEwMzUyNzU5Pl0gIFs8ZmZmZmZmZmZhMDM1Mjc1OT5dIGFzc2ZhaWwuY29uc3Rwcm9wLjQx KzB4MWMvMHgxZSBbYnRyZnNdClsgIDY0My40MTQzNTZdIFJTUDogMDAxODpmZmZmODgwMTQ4MjZm YTI4ICBFRkxBR1M6IDAwMDEwMjkyClsgIDY0My40MTQzNTZdIFJBWDogMDAwMDAwMDAwMDAwMDAz OSBSQlg6IGZmZmY4ODAxNGUyZDdjMzggUkNYOiAwMDAwMDAwMDAwMDAwMDAxClsgIDY0My40MTQz NTZdIFJEWDogZmZmZjg4MDIzZjRkMmY1OCBSU0k6IGZmZmZmZmZmODE4MDZjNjMgUkRJOiAwMDAw MDAwMGZmZmZmZmZmClsgIDY0My40MTQzNTZdIFJCUDogZmZmZjg4MDE0ODI2ZmEyOCBSMDg6IDAw MDAwMDAwMDAwMDAwMDEgUjA5OiAwMDAwMDAwMDAwMDAwMDAwClsgIDY0My40MTQzNTZdIFIxMDog ZmZmZjg4MDE0ODI2ZjkxOCBSMTE6IGZmZmZmZmZmODJmM2M1ZWQgUjEyOiBmZmZmODgwMTcyOTEw MDAwClsgIDY0My40MTQzNTZdIFIxMzogZmZmZjg4MDIzMzk5MjIzMCBSMTQ6IGZmZmY4ODAxYTY4 YTMzMTAgUjE1OiBmZmZmZmZmZmZmZmZmZmY4ClsgIDY0My40MTQzNTZdIEZTOiAgMDAwMDdmOWNh MzA1ZThjMCgwMDAwKSBHUzpmZmZmODgwMjNmNGMwMDAwKDAwMDApIGtubEdTOjAwMDAwMDAwMDAw MDAwMDAKWyAgNjQzLjQxNDM1Nl0gQ1M6ICAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAw MDAwMDA4MDA1MDAzMwpbICA2NDMuNDE0MzU2XSBDUjI6IDAwMDA3ZjljYTMwNzEwMDAgQ1IzOiAw MDAwMDAwMTVkMDFiMDAwIENSNDogMDAwMDAwMDAwMDAwMDZlMApbICA2NDMuNDE0MzU2XSBTdGFj azoKWyAgNjQzLjQxNDM1Nl0gIGZmZmY4ODAxNDgyNmZhNTAgZmZmZmZmZmZhMDJkNjU1YSAwMDAw MDAwMDAwMDAwMDBhIGZmZmY4ODAxNGUyZDdjMzgKWyAgNjQzLjQxNDM1Nl0gIDAwMDAwMDAwMDAw MDAwMDAgZmZmZjg4MDE0ODI2ZmFhOCBmZmZmZmZmZmEwMmI3MmYzIGZmZmY4ODAxNDgyNmZhYjgK WyAgNjQzLjQxNDM1Nl0gIDAwZmZmZmZmYTAzMjI4ZTQgMDAwMDAwMDAwMDAwMDAwMCAwMDAwMDAw MDAwMDAwMDAwIGZmZmY4ODAxYmJkNGUwMDAKWyAgNjQzLjQxNDM1Nl0gQ2FsbCBUcmFjZToKWyAg NjQzLjQxNDM1Nl0gIFs8ZmZmZmZmZmZhMDJkNjU1YT5dIGJ0cmZzX21hcmtfYnVmZmVyX2RpcnR5 KzB4ZGYvMHhlNSBbYnRyZnNdClsgIDY0My40MTQzNTZdICBbPGZmZmZmZmZmYTAyYjcyZjM+XSBi dHJmc19jb3B5X3Jvb3QrMHgxOGEvMHgxZDEgW2J0cmZzXQpbICA2NDMuNDE0MzU2XSAgWzxmZmZm ZmZmZmEwMzIyOTIxPl0gY3JlYXRlX3JlbG9jX3Jvb3QrMHg3Mi8weDFiYSBbYnRyZnNdClsgIDY0 My40MTQzNTZdICBbPGZmZmZmZmZmYTAzMjY3YzI+XSBidHJmc19pbml0X3JlbG9jX3Jvb3QrMHg3 Yi8weGE3IFtidHJmc10KWyAgNjQzLjQxNDM1Nl0gIFs8ZmZmZmZmZmZhMDJkOWU0ND5dIHJlY29y ZF9yb290X2luX3RyYW5zKzB4ZGYvMHhlZCBbYnRyZnNdClsgIDY0My40MTQzNTZdICBbPGZmZmZm ZmZmYTAyZGIwNGU+XSBidHJmc19yZWNvcmRfcm9vdF9pbl90cmFucysweDUwLzB4NmEgW2J0cmZz XQpbICA2NDMuNDE0MzU2XSAgWzxmZmZmZmZmZmEwMzBhZDJiPl0gY3JlYXRlX3N1YnZvbCsweDQ3 Mi8weDc3MyBbYnRyZnNdClsgIDY0My40MTQzNTZdICBbPGZmZmZmZmZmYTAzMGI0MDY+XSBidHJm c19ta3N1YnZvbCsweDNkYS8weDQ2MyBbYnRyZnNdClsgIDY0My40MTQzNTZdICBbPGZmZmZmZmZm YTAzMGI0MDY+XSA/IGJ0cmZzX21rc3Vidm9sKzB4M2RhLzB4NDYzIFtidHJmc10KWyAgNjQzLjQx NDM1Nl0gIFs8ZmZmZmZmZmY4MTA3ODFhYz5dID8gcHJlZW1wdF9jb3VudF9hZGQrMHg2NS8weDY4 ClsgIDY0My40MTQzNTZdICBbPGZmZmZmZmZmODExYTZlOTc+XSA/IF9fbW50X3dhbnRfd3JpdGUr MHg2Mi8weDc3ClsgIDY0My40MTQzNTZdICBbPGZmZmZmZmZmYTAzMGI1NWQ+XSBidHJmc19pb2N0 bF9zbmFwX2NyZWF0ZV90cmFuc2lkKzB4Y2UvMHgxODcgW2J0cmZzXQpbICA2NDMuNDE0MzU2XSAg WzxmZmZmZmZmZmEwMzBiNjdkPl0gYnRyZnNfaW9jdGxfc25hcF9jcmVhdGUrMHg2Ny8weDgxIFti dHJmc10KWyAgNjQzLjQxNDM1Nl0gIFs8ZmZmZmZmZmZhMDMwZWNmZD5dIGJ0cmZzX2lvY3RsKzB4 NTA4LzB4MjBkZCBbYnRyZnNdClsgIDY0My40MTQzNTZdICBbPGZmZmZmZmZmODEyOTNlMzk+XSA/ IF9fdGhpc19jcHVfcHJlZW1wdF9jaGVjaysweDEzLzB4MTUKWyAgNjQzLjQxNDM1Nl0gIFs8ZmZm ZmZmZmY4MTE1NWVjYT5dID8gaGFuZGxlX21tX2ZhdWx0KzB4OTc2LzB4OWFiClsgIDY0My40MTQz NTZdICBbPGZmZmZmZmZmODEwOTEzMDA+XSA/IGFyY2hfbG9jYWxfaXJxX3NhdmUrMHg5LzB4Ywpb ICA2NDMuNDE0MzU2XSAgWzxmZmZmZmZmZjgxMTlhMmIwPl0gdmZzX2lvY3RsKzB4MTgvMHgzNApb ICA2NDMuNDE0MzU2XSAgWzxmZmZmZmZmZjgxMTlhOGU4Pl0gZG9fdmZzX2lvY3RsKzB4NTgxLzB4 NjAwClsgIDY0My40MTQzNTZdICBbPGZmZmZmZmZmODE0Yjk1NTI+XSA/IGVudHJ5X1NZU0NBTExf NjRfZmFzdHBhdGgrMHg1LzB4YTgKWyAgNjQzLjQxNDM1Nl0gIFs8ZmZmZmZmZmY4MTA5M2ZlOT5d ID8gdHJhY2VfaGFyZGlycXNfb25fY2FsbGVyKzB4MTdiLzB4MTk3ClsgIDY0My40MTQzNTZdICBb PGZmZmZmZmZmODExOWE5YmU+XSBTeVNfaW9jdGwrMHg1Ny8weDc5ClsgIDY0My40MTQzNTZdICBb PGZmZmZmZmZmODE0Yjk1NjU+XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4MTgvMHhhOApb ICA2NDMuNDE0MzU2XSAgWzxmZmZmZmZmZjgxMDkxYjA4Pl0gPyB0cmFjZV9oYXJkaXJxc19vZmZf Y2FsbGVyKzB4M2YvMHhhYQpbICA2NDMuNDE0MzU2XSBDb2RlOiA4OSA4MyA4OCAwMCAwMCAwMCAz MSBjMCA1YiA0MSA1YyA0MSA1ZCA1ZCBjMyA1NSA4OSBmMSA0OCBjNyBjMiA5OCBiYyAzNSBhMCA0 OCA4OSBmZSA0OCBjNyBjNyAwNSBiZSAzNSBhMCA0OCA4OSBlNSBlOCAxMyA0NiBkZCBlMCA8MGY+ IDBiIDU1IDg5IGYxIDQ4IGM3IGMyIDlmIGQzIDM1IGEwIDQ4IDg5IGZlIDQ4IGM3IGM3IDdhIGQ1 IDM1ClsgIDY0My40MTQzNTZdIFJJUCAgWzxmZmZmZmZmZmEwMzUyNzU5Pl0gYXNzZmFpbC5jb25z dHByb3AuNDErMHgxYy8weDFlIFtidHJmc10KWyAgNjQzLjQxNDM1Nl0gIFJTUCA8ZmZmZjg4MDE0 ODI2ZmEyOD4KWyAgNjQzLjQ2ODI2N10gLS0tWyBlbmQgdHJhY2UgNmExYjNmYjFhOWQ3ZDZlMyBd LS0tCgpUaGlzIGNhbiBiZSBlYXNpbHkgcmVwcm9kdWNlZCBieSBydW5uaW5nIHhmc3Rlc3RzIHdp dGggdGhlIGludGVncml0eQpjaGVja2VyIGVuYWJsZWQuCgpGaXhlczogMWJhOThkMDg2ZmUzIChC dHJmczogZGV0ZWN0IGNvcnJ1cHRpb24gd2hlbiBub24tcm9vdCBsZWFmIGhhcyB6ZXJvIGl0ZW0p ClNpZ25lZC1vZmYtYnk6IEZpbGlwZSBNYW5hbmEgPGZkbWFuYW5hQHN1c2UuY29tPgpSZXZpZXdl ZC1ieTogTGl1IEJvIDxiby5saS5saXVAb3JhY2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuIEh1 dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZnMvYnRyZnMvZGlz ay1pby5jIHwgMTMgKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9mcy9idHJmcy9kaXNrLWlvLmMgYi9mcy9i dHJmcy9kaXNrLWlvLmMKaW5kZXggNzNlNGU1ZjU2NjkyLi5mYzcwYmU2NmVlNzkgMTAwNjQ0Ci0t LSBhL2ZzL2J0cmZzL2Rpc2staW8uYworKysgYi9mcy9idHJmcy9kaXNrLWlvLmMKQEAgLTUzNiw3 ICs1MzYsMTUgQEAgc3RhdGljIG5vaW5saW5lIGludCBjaGVja19sZWFmKHN0cnVjdCBidHJmc19y b290ICpyb290LAogCXUzMiBucml0ZW1zID0gYnRyZnNfaGVhZGVyX25yaXRlbXMobGVhZik7CiAJ aW50IHNsb3Q7CiAKLQlpZiAobnJpdGVtcyA9PSAwKSB7CisJLyoKKwkgKiBFeHRlbnQgYnVmZmVy cyBmcm9tIGEgcmVsb2NhdGlvbiB0cmVlIGhhdmUgYSBvd25lciBmaWVsZCB0aGF0CisJICogY29y cmVzcG9uZHMgdG8gdGhlIHN1YnZvbHVtZSB0cmVlIHRoZXkgYXJlIGJhc2VkIG9uLiBTbyBqdXN0 IGZyb20gYW4KKwkgKiBleHRlbnQgYnVmZmVyIGFsb25lIHdlIGNhbiBub3QgZmluZCBvdXQgd2hh dCBpcyB0aGUgaWQgb2YgdGhlCisJICogY29ycmVzcG9uZGluZyBzdWJ2b2x1bWUgdHJlZSwgc28g d2UgY2FuIG5vdCBmaWd1cmUgb3V0IGlmIHRoZSBleHRlbnQKKwkgKiBidWZmZXIgY29ycmVzcG9u ZHMgdG8gdGhlIHJvb3Qgb2YgdGhlIHJlbG9jYXRpb24gdHJlZSBvciBub3QuIFNvIHNraXAKKwkg KiB0aGlzIGNoZWNrIGZvciByZWxvY2F0aW9uIHRyZWVzLgorCSAqLworCWlmIChucml0ZW1zID09 IDAgJiYgIWJ0cmZzX2hlYWRlcl9mbGFnKGxlYWYsIEJUUkZTX0hFQURFUl9GTEFHX1JFTE9DKSkg ewogCQlzdHJ1Y3QgYnRyZnNfcm9vdCAqY2hlY2tfcm9vdDsKIAogCQlrZXkub2JqZWN0aWQgPSBi dHJmc19oZWFkZXJfb3duZXIobGVhZik7CkBAIC01NjQsNiArNTcyLDkgQEAgc3RhdGljIG5vaW5s aW5lIGludCBjaGVja19sZWFmKHN0cnVjdCBidHJmc19yb290ICpyb290LAogCQlyZXR1cm4gMDsK IAl9CiAKKwlpZiAobnJpdGVtcyA9PSAwKQorCQlyZXR1cm4gMDsKKwogCS8qIENoZWNrIHRoZSAw IGl0ZW0gKi8KIAlpZiAoYnRyZnNfaXRlbV9vZmZzZXRfbnIobGVhZiwgMCkgKyBidHJmc19pdGVt X3NpemVfbnIobGVhZiwgMCkgIT0KIAkgICAgQlRSRlNfTEVBRl9EQVRBX1NJWkUocm9vdCkpIHsK LS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAg ICAgICBDb2RldGhpbmsgTHRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAg ICAgICAgIERhbGUgSG91c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNYW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSA3 NTcxNDVjMzRiMmVlY2I4ZjYxZGFmMmRmOTg1M2NhYTg3ZTRiMDNlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBKZWZmIE1haG9uZXkgPGplZmZtQHN1c2UuY29tPgpEYXRlOiBXZWQsIDI4 IEp1biAyMDE3IDIxOjU2OjUzIC0wNjAwClN1YmplY3Q6IFtQQVRDSCAxNC8zMV0gYnRyZnM6IHN0 cnVjdC1mdW5jcywgY29uc3RpZnkgcmVhZGVycwoKY29tbWl0IDFjYmIxZjQ1NGU1MzIxZTQ3ZmMx ZTZiMjMzMDY2YzdjY2M5NzlkMTUgdXBzdHJlYW0uCgpXZSBoYXZlIHJlYWRlciBoZWxwZXJzIGZv ciBtb3N0IG9mIHRoZSBvbi1kaXNrIHN0cnVjdHVyZXMgdGhhdCB1c2UKYW4gZXh0ZW50X2J1ZmZl ciBhbmQgcG9pbnRlciBhcyBvZmZzZXQgaW50byB0aGUgYnVmZmVyIHRoYXQgYXJlCnJlYWQtb25s eS4gIFdlIHNob3VsZCBtYXJrIHRoZW0gYXMgY29uc3QgYW5kLCBpbiB0dXJuLCBhbGxvdyBjb25z dW1lcnMKb2YgdGhlc2UgaW50ZXJmYWNlcyB0byBtYXJrIHRoZSBidWZmZXJzIGNvbnN0IGFzIHdl bGwuCgpObyBpbXBhY3Qgb24gY29kZSwgYnV0IHNlcnZlcyBhcyBkb2N1bWVudGF0aW9uIHRoYXQg YSBidWZmZXIgaXMgaW50ZW5kZWQKbm90IHRvIGJlIG1vZGlmaWVkLgoKU2lnbmVkLW9mZi1ieTog SmVmZiBNYWhvbmV5IDxqZWZmbUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJh IDxkc3RlcmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0 Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy9jdHJlZS5oICAgICAgICB8IDEy OCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGZzL2J0 cmZzL2V4dGVudF9pby5jICAgIHwgIDI0ICsrKysrLS0tLQogZnMvYnRyZnMvZXh0ZW50X2lvLmgg ICAgfCAgMTkgKysrKy0tLQogZnMvYnRyZnMvc3RydWN0LWZ1bmNzLmMgfCAgIDkgKystLQogNCBm aWxlcyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspLCA4OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9mcy9idHJmcy9jdHJlZS5oIGIvZnMvYnRyZnMvY3RyZWUuaAppbmRleCBmYzZiYTE1NDdk NzUuLmRiYWQ5YzlmOGQ3OCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvY3RyZWUuaAorKysgYi9mcy9i dHJmcy9jdHJlZS5oCkBAIC0yMjgzLDcgKzIyODMsNyBAQCBkbyB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICNkZWZp bmUgQlRSRlNfSU5PREVfUk9PVF9JVEVNX0lOSVQJKDEgPDwgMzEpCiAKIHN0cnVjdCBidHJmc19t YXBfdG9rZW4gewotCXN0cnVjdCBleHRlbnRfYnVmZmVyICplYjsKKwljb25zdCBzdHJ1Y3QgZXh0 ZW50X2J1ZmZlciAqZWI7CiAJY2hhciAqa2FkZHI7CiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiB9 OwpAQCAtMjMxNCwxOCArMjMxNCwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfaW5pdF9t YXBfdG9rZW4gKHN0cnVjdCBidHJmc19tYXBfdG9rZW4gKnRva2VuKQogCQkJICAgc2l6ZW9mKCgo dHlwZSAqKTApLT5tZW1iZXIpKSkKIAogI2RlZmluZSBERUNMQVJFX0JUUkZTX1NFVEdFVF9CSVRT KGJpdHMpCQkJCQlcCi11IyNiaXRzIGJ0cmZzX2dldF90b2tlbl8jI2JpdHMoc3RydWN0IGV4dGVu dF9idWZmZXIgKmViLCB2b2lkICpwdHIsCVwKLQkJCSAgICAgICB1bnNpZ25lZCBsb25nIG9mZiwJ CQlcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnRyZnNfbWFwX3Rva2Vu ICp0b2tlbik7CQlcCi12b2lkIGJ0cmZzX3NldF90b2tlbl8jI2JpdHMoc3RydWN0IGV4dGVudF9i dWZmZXIgKmViLCB2b2lkICpwdHIsCVwKK3UjI2JpdHMgYnRyZnNfZ2V0X3Rva2VuXyMjYml0cyhj b25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCQlcCisJCQkgICAgICAgY29uc3Qgdm9pZCAq cHRyLCB1bnNpZ25lZCBsb25nIG9mZiwJXAorCQkJICAgICAgIHN0cnVjdCBidHJmc19tYXBfdG9r ZW4gKnRva2VuKTsJCVwKK3ZvaWQgYnRyZnNfc2V0X3Rva2VuXyMjYml0cyhzdHJ1Y3QgZXh0ZW50 X2J1ZmZlciAqZWIsIGNvbnN0IHZvaWQgKnB0ciwJXAogCQkJICAgIHVuc2lnbmVkIGxvbmcgb2Zm LCB1IyNiaXRzIHZhbCwJCVwKIAkJCSAgICBzdHJ1Y3QgYnRyZnNfbWFwX3Rva2VuICp0b2tlbik7 CQlcCi1zdGF0aWMgaW5saW5lIHUjI2JpdHMgYnRyZnNfZ2V0XyMjYml0cyhzdHJ1Y3QgZXh0ZW50 X2J1ZmZlciAqZWIsIHZvaWQgKnB0ciwgXAorc3RhdGljIGlubGluZSB1IyNiaXRzIGJ0cmZzX2dl dF8jI2JpdHMoY29uc3Qgc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAlcCisJCQkJICAgICAgIGNv bnN0IHZvaWQgKnB0ciwJCQlcCiAJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgb2ZmKQkJXAogewkJ CQkJCQkJCVwKIAlyZXR1cm4gYnRyZnNfZ2V0X3Rva2VuXyMjYml0cyhlYiwgcHRyLCBvZmYsIE5V TEwpOwkJXAogfQkJCQkJCQkJCVwKLXN0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19zZXRfIyNiaXRz KHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwgdm9pZCAqcHRyLCBcCitzdGF0aWMgaW5saW5lIHZv aWQgYnRyZnNfc2V0XyMjYml0cyhzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIHZvaWQgKnB0cixc CiAJCQkJICAgIHVuc2lnbmVkIGxvbmcgb2ZmLCB1IyNiaXRzIHZhbCkJXAogewkJCQkJCQkJCVwK ICAgICAgICBidHJmc19zZXRfdG9rZW5fIyNiaXRzKGViLCBwdHIsIG9mZiwgdmFsLCBOVUxMKTsJ CQlcCkBAIC0yMzM3LDcgKzIzMzgsOCBAQCBERUNMQVJFX0JUUkZTX1NFVEdFVF9CSVRTKDMyKQog REVDTEFSRV9CVFJGU19TRVRHRVRfQklUUyg2NCkKIAogI2RlZmluZSBCVFJGU19TRVRHRVRfRlVO Q1MobmFtZSwgdHlwZSwgbWVtYmVyLCBiaXRzKQkJCVwKLXN0YXRpYyBpbmxpbmUgdSMjYml0cyBi dHJmc18jI25hbWUoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLCB0eXBlICpzKQlcCitzdGF0aWMg aW5saW5lIHUjI2JpdHMgYnRyZnNfIyNuYW1lKGNvbnN0IHN0cnVjdCBleHRlbnRfYnVmZmVyICpl YiwJXAorCQkJCSAgIGNvbnN0IHR5cGUgKnMpCQkJXAogewkJCQkJCQkJCVwKIAlCVUlMRF9CVUdf T04oc2l6ZW9mKHUjI2JpdHMpICE9IHNpemVvZigoKHR5cGUgKikwKSktPm1lbWJlcik7CVwKIAly ZXR1cm4gYnRyZnNfZ2V0XyMjYml0cyhlYiwgcywgb2Zmc2V0b2YodHlwZSwgbWVtYmVyKSk7CQlc CkBAIC0yMzQ4LDcgKzIzNTAsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfc2V0XyMjbmFt ZShzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIHR5cGUgKnMsCVwKIAlCVUlMRF9CVUdfT04oc2l6 ZW9mKHUjI2JpdHMpICE9IHNpemVvZigoKHR5cGUgKikwKSktPm1lbWJlcik7CVwKIAlidHJmc19z ZXRfIyNiaXRzKGViLCBzLCBvZmZzZXRvZih0eXBlLCBtZW1iZXIpLCB2YWwpOwkJXAogfQkJCQkJ CQkJCVwKLXN0YXRpYyBpbmxpbmUgdSMjYml0cyBidHJmc190b2tlbl8jI25hbWUoc3RydWN0IGV4 dGVudF9idWZmZXIgKmViLCB0eXBlICpzLCBcCitzdGF0aWMgaW5saW5lIHUjI2JpdHMgYnRyZnNf dG9rZW5fIyNuYW1lKGNvbnN0IHN0cnVjdCBleHRlbnRfYnVmZmVyICplYixcCisJCQkJCSBjb25z dCB0eXBlICpzLAkJCVwKIAkJCQkJIHN0cnVjdCBidHJmc19tYXBfdG9rZW4gKnRva2VuKQlcCiB7 CQkJCQkJCQkJXAogCUJVSUxEX0JVR19PTihzaXplb2YodSMjYml0cykgIT0gc2l6ZW9mKCgodHlw ZSAqKTApKS0+bWVtYmVyKTsJXApAQCAtMjM2Myw5ICsyMzY2LDkgQEAgc3RhdGljIGlubGluZSB2 b2lkIGJ0cmZzX3NldF90b2tlbl8jI25hbWUoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAlcCiB9 CiAKICNkZWZpbmUgQlRSRlNfU0VUR0VUX0hFQURFUl9GVU5DUyhuYW1lLCB0eXBlLCBtZW1iZXIs IGJpdHMpCQlcCi1zdGF0aWMgaW5saW5lIHUjI2JpdHMgYnRyZnNfIyNuYW1lKHN0cnVjdCBleHRl bnRfYnVmZmVyICplYikJCVwKK3N0YXRpYyBpbmxpbmUgdSMjYml0cyBidHJmc18jI25hbWUoY29u c3Qgc3RydWN0IGV4dGVudF9idWZmZXIgKmViKQlcCiB7CQkJCQkJCQkJXAotCXR5cGUgKnAgPSBw YWdlX2FkZHJlc3MoZWItPnBhZ2VzWzBdKTsJCQkJXAorCWNvbnN0IHR5cGUgKnAgPSBwYWdlX2Fk ZHJlc3MoZWItPnBhZ2VzWzBdKTsJCQlcCiAJdSMjYml0cyByZXMgPSBsZSMjYml0cyMjX3RvX2Nw dShwLT5tZW1iZXIpOwkJCVwKIAlyZXR1cm4gcmVzOwkJCQkJCQlcCiB9CQkJCQkJCQkJXApAQCAt MjM3Nyw3ICsyMzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX3NldF8jI25hbWUoc3Ry dWN0IGV4dGVudF9idWZmZXIgKmViLAkJXAogfQogCiAjZGVmaW5lIEJUUkZTX1NFVEdFVF9TVEFD S19GVU5DUyhuYW1lLCB0eXBlLCBtZW1iZXIsIGJpdHMpCQlcCi1zdGF0aWMgaW5saW5lIHUjI2Jp dHMgYnRyZnNfIyNuYW1lKHR5cGUgKnMpCQkJCVwKK3N0YXRpYyBpbmxpbmUgdSMjYml0cyBidHJm c18jI25hbWUoY29uc3QgdHlwZSAqcykJCQlcCiB7CQkJCQkJCQkJXAogCXJldHVybiBsZSMjYml0 cyMjX3RvX2NwdShzLT5tZW1iZXIpOwkJCQlcCiB9CQkJCQkJCQkJXApAQCAtMjY3OCw3ICsyNjgx LDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGJ0cmZzX25vZGVfa2V5X3B0cl9vZmZz ZXQoaW50IG5yKQogCQlzaXplb2Yoc3RydWN0IGJ0cmZzX2tleV9wdHIpICogbnI7CiB9CiAKLXZv aWQgYnRyZnNfbm9kZV9rZXkoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAordm9pZCBidHJmc19u b2RlX2tleShjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCiAJCSAgICBzdHJ1Y3QgYnRy ZnNfZGlza19rZXkgKmRpc2tfa2V5LCBpbnQgbnIpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgYnRy ZnNfc2V0X25vZGVfa2V5KHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwKQEAgLTI3MDcsMjggKzI3 MTAsMjggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgYnRyZnNfaXRlbSAqYnRyZnNfaXRlbV9ucihp bnQgbnIpCiAJcmV0dXJuIChzdHJ1Y3QgYnRyZnNfaXRlbSAqKWJ0cmZzX2l0ZW1fbnJfb2Zmc2V0 KG5yKTsKIH0KIAotc3RhdGljIGlubGluZSB1MzIgYnRyZnNfaXRlbV9lbmQoc3RydWN0IGV4dGVu dF9idWZmZXIgKmViLAorc3RhdGljIGlubGluZSB1MzIgYnRyZnNfaXRlbV9lbmQoY29uc3Qgc3Ry dWN0IGV4dGVudF9idWZmZXIgKmViLAogCQkJCSBzdHJ1Y3QgYnRyZnNfaXRlbSAqaXRlbSkKIHsK IAlyZXR1cm4gYnRyZnNfaXRlbV9vZmZzZXQoZWIsIGl0ZW0pICsgYnRyZnNfaXRlbV9zaXplKGVi LCBpdGVtKTsKIH0KIAotc3RhdGljIGlubGluZSB1MzIgYnRyZnNfaXRlbV9lbmRfbnIoc3RydWN0 IGV4dGVudF9idWZmZXIgKmViLCBpbnQgbnIpCitzdGF0aWMgaW5saW5lIHUzMiBidHJmc19pdGVt X2VuZF9ucihjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIGludCBucikKIHsKIAlyZXR1 cm4gYnRyZnNfaXRlbV9lbmQoZWIsIGJ0cmZzX2l0ZW1fbnIobnIpKTsKIH0KIAotc3RhdGljIGlu bGluZSB1MzIgYnRyZnNfaXRlbV9vZmZzZXRfbnIoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLCBp bnQgbnIpCitzdGF0aWMgaW5saW5lIHUzMiBidHJmc19pdGVtX29mZnNldF9ucihjb25zdCBzdHJ1 Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIGludCBucikKIHsKIAlyZXR1cm4gYnRyZnNfaXRlbV9vZmZz ZXQoZWIsIGJ0cmZzX2l0ZW1fbnIobnIpKTsKIH0KIAotc3RhdGljIGlubGluZSB1MzIgYnRyZnNf aXRlbV9zaXplX25yKHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwgaW50IG5yKQorc3RhdGljIGlu bGluZSB1MzIgYnRyZnNfaXRlbV9zaXplX25yKGNvbnN0IHN0cnVjdCBleHRlbnRfYnVmZmVyICpl YiwgaW50IG5yKQogewogCXJldHVybiBidHJmc19pdGVtX3NpemUoZWIsIGJ0cmZzX2l0ZW1fbnIo bnIpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2l0ZW1fa2V5KHN0cnVjdCBleHRl bnRfYnVmZmVyICplYiwKK3N0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19pdGVtX2tleShjb25zdCBz dHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCiAJCQkgICBzdHJ1Y3QgYnRyZnNfZGlza19rZXkgKmRp c2tfa2V5LCBpbnQgbnIpCiB7CiAJc3RydWN0IGJ0cmZzX2l0ZW0gKml0ZW0gPSBidHJmc19pdGVt X25yKG5yKTsKQEAgLTI3NjQsOCArMjc2Nyw4IEBAIEJUUkZTX1NFVEdFVF9TVEFDS19GVU5DUyhz dGFja19kaXJfbmFtZV9sZW4sIHN0cnVjdCBidHJmc19kaXJfaXRlbSwKIEJUUkZTX1NFVEdFVF9T VEFDS19GVU5DUyhzdGFja19kaXJfdHJhbnNpZCwgc3RydWN0IGJ0cmZzX2Rpcl9pdGVtLAogCQkJ IHRyYW5zaWQsIDY0KTsKIAotc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2Rpcl9pdGVtX2tleShz dHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCi0JCQkJICAgICAgc3RydWN0IGJ0cmZzX2Rpcl9pdGVt ICppdGVtLAorc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2Rpcl9pdGVtX2tleShjb25zdCBzdHJ1 Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCisJCQkJICAgICAgY29uc3Qgc3RydWN0IGJ0cmZzX2Rpcl9p dGVtICppdGVtLAogCQkJCSAgICAgIHN0cnVjdCBidHJmc19kaXNrX2tleSAqa2V5KQogewogCXJl YWRfZWJfbWVtYmVyKGViLCBpdGVtLCBzdHJ1Y3QgYnRyZnNfZGlyX2l0ZW0sIGxvY2F0aW9uLCBr ZXkpOwpAQCAtMjc3Myw3ICsyNzc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2Rpcl9p dGVtX2tleShzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBi dHJmc19zZXRfZGlyX2l0ZW1fa2V5KHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwKIAkJCQkJICBz dHJ1Y3QgYnRyZnNfZGlyX2l0ZW0gKml0ZW0sCi0JCQkJCSAgc3RydWN0IGJ0cmZzX2Rpc2tfa2V5 ICprZXkpCisJCQkJCSAgY29uc3Qgc3RydWN0IGJ0cmZzX2Rpc2tfa2V5ICprZXkpCiB7CiAJd3Jp dGVfZWJfbWVtYmVyKGViLCBpdGVtLCBzdHJ1Y3QgYnRyZnNfZGlyX2l0ZW0sIGxvY2F0aW9uLCBr ZXkpOwogfQpAQCAtMjc4NSw4ICsyNzg4LDggQEAgQlRSRlNfU0VUR0VUX0ZVTkNTKGZyZWVfc3Bh Y2VfYml0bWFwcywgc3RydWN0IGJ0cmZzX2ZyZWVfc3BhY2VfaGVhZGVyLAogQlRSRlNfU0VUR0VU X0ZVTkNTKGZyZWVfc3BhY2VfZ2VuZXJhdGlvbiwgc3RydWN0IGJ0cmZzX2ZyZWVfc3BhY2VfaGVh ZGVyLAogCQkgICBnZW5lcmF0aW9uLCA2NCk7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19m cmVlX3NwYWNlX2tleShzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCi0JCQkJCXN0cnVjdCBidHJm c19mcmVlX3NwYWNlX2hlYWRlciAqaCwKK3N0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19mcmVlX3Nw YWNlX2tleShjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCisJCQkJCWNvbnN0IHN0cnVj dCBidHJmc19mcmVlX3NwYWNlX2hlYWRlciAqaCwKIAkJCQkJc3RydWN0IGJ0cmZzX2Rpc2tfa2V5 ICprZXkpCiB7CiAJcmVhZF9lYl9tZW1iZXIoZWIsIGgsIHN0cnVjdCBidHJmc19mcmVlX3NwYWNl X2hlYWRlciwgbG9jYXRpb24sIGtleSk7CkBAIC0yNzk0LDcgKzI3OTcsNyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgYnRyZnNfZnJlZV9zcGFjZV9rZXkoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAog CiBzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfc2V0X2ZyZWVfc3BhY2Vfa2V5KHN0cnVjdCBleHRl bnRfYnVmZmVyICplYiwKIAkJCQkJICAgIHN0cnVjdCBidHJmc19mcmVlX3NwYWNlX2hlYWRlciAq aCwKLQkJCQkJICAgIHN0cnVjdCBidHJmc19kaXNrX2tleSAqa2V5KQorCQkJCQkgICAgY29uc3Qg c3RydWN0IGJ0cmZzX2Rpc2tfa2V5ICprZXkpCiB7CiAJd3JpdGVfZWJfbWVtYmVyKGViLCBoLCBz dHJ1Y3QgYnRyZnNfZnJlZV9zcGFjZV9oZWFkZXIsIGxvY2F0aW9uLCBrZXkpOwogfQpAQCAtMjgy MSwyNSArMjgyNCwyNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfY3B1X2tleV90b19kaXNr KHN0cnVjdCBidHJmc19kaXNrX2tleSAqZGlzaywKIAlkaXNrLT5vYmplY3RpZCA9IGNwdV90b19s ZTY0KGNwdS0+b2JqZWN0aWQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfbm9kZV9r ZXlfdG9fY3B1KHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwKLQkJCQkgIHN0cnVjdCBidHJmc19r ZXkgKmtleSwgaW50IG5yKQorc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX25vZGVfa2V5X3RvX2Nw dShjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCisJCQkJCSBzdHJ1Y3QgYnRyZnNfa2V5 ICprZXksIGludCBucikKIHsKIAlzdHJ1Y3QgYnRyZnNfZGlza19rZXkgZGlza19rZXk7CiAJYnRy ZnNfbm9kZV9rZXkoZWIsICZkaXNrX2tleSwgbnIpOwogCWJ0cmZzX2Rpc2tfa2V5X3RvX2NwdShr ZXksICZkaXNrX2tleSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19pdGVtX2tleV90 b19jcHUoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAotCQkJCSAgc3RydWN0IGJ0cmZzX2tleSAq a2V5LCBpbnQgbnIpCitzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfaXRlbV9rZXlfdG9fY3B1KGNv bnN0IHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwKKwkJCQkJIHN0cnVjdCBidHJmc19rZXkgKmtl eSwgaW50IG5yKQogewogCXN0cnVjdCBidHJmc19kaXNrX2tleSBkaXNrX2tleTsKIAlidHJmc19p dGVtX2tleShlYiwgJmRpc2tfa2V5LCBucik7CiAJYnRyZnNfZGlza19rZXlfdG9fY3B1KGtleSwg JmRpc2tfa2V5KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2Rpcl9pdGVtX2tleV90 b19jcHUoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAotCQkJCSAgICAgIHN0cnVjdCBidHJmc19k aXJfaXRlbSAqaXRlbSwKLQkJCQkgICAgICBzdHJ1Y3QgYnRyZnNfa2V5ICprZXkpCitzdGF0aWMg aW5saW5lIHZvaWQgYnRyZnNfZGlyX2l0ZW1fa2V5X3RvX2NwdShjb25zdCBzdHJ1Y3QgZXh0ZW50 X2J1ZmZlciAqZWIsCisJCQkJCSAgICAgY29uc3Qgc3RydWN0IGJ0cmZzX2Rpcl9pdGVtICppdGVt LAorCQkJCQkgICAgIHN0cnVjdCBidHJmc19rZXkgKmtleSkKIHsKIAlzdHJ1Y3QgYnRyZnNfZGlz a19rZXkgZGlza19rZXk7CiAJYnRyZnNfZGlyX2l0ZW1fa2V5KGViLCBpdGVtLCAmZGlza19rZXkp OwpAQCAtMjg3Miw3ICsyODc1LDcgQEAgQlRSRlNfU0VUR0VUX1NUQUNLX0ZVTkNTKHN0YWNrX2hl YWRlcl9ucml0ZW1zLCBzdHJ1Y3QgYnRyZnNfaGVhZGVyLAogCQkJIG5yaXRlbXMsIDMyKTsKIEJU UkZTX1NFVEdFVF9TVEFDS19GVU5DUyhzdGFja19oZWFkZXJfYnl0ZW5yLCBzdHJ1Y3QgYnRyZnNf aGVhZGVyLCBieXRlbnIsIDY0KTsKIAotc3RhdGljIGlubGluZSBpbnQgYnRyZnNfaGVhZGVyX2Zs YWcoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLCB1NjQgZmxhZykKK3N0YXRpYyBpbmxpbmUgaW50 IGJ0cmZzX2hlYWRlcl9mbGFnKGNvbnN0IHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwgdTY0IGZs YWcpCiB7CiAJcmV0dXJuIChidHJmc19oZWFkZXJfZmxhZ3MoZWIpICYgZmxhZykgPT0gZmxhZzsK IH0KQEAgLTI4OTEsNyArMjg5NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGJ0cmZzX2NsZWFyX2hl YWRlcl9mbGFnKHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwgdTY0IGZsYWcpCiAJcmV0dXJuIChm bGFncyAmIGZsYWcpID09IGZsYWc7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGJ0cmZzX2hlYWRl cl9iYWNrcmVmX3JldihzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIpCitzdGF0aWMgaW5saW5lIGlu dCBidHJmc19oZWFkZXJfYmFja3JlZl9yZXYoY29uc3Qgc3RydWN0IGV4dGVudF9idWZmZXIgKmVi KQogewogCXU2NCBmbGFncyA9IGJ0cmZzX2hlYWRlcl9mbGFncyhlYik7CiAJcmV0dXJuIGZsYWdz ID4+IEJUUkZTX0JBQ0tSRUZfUkVWX1NISUZUOwpAQCAtMjkxMSwxMiArMjkxNCwxMiBAQCBzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgYnRyZnNfaGVhZGVyX2ZzaWQodm9pZCkKIAlyZXR1cm4g b2Zmc2V0b2Yoc3RydWN0IGJ0cmZzX2hlYWRlciwgZnNpZCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg dW5zaWduZWQgbG9uZyBidHJmc19oZWFkZXJfY2h1bmtfdHJlZV91dWlkKHN0cnVjdCBleHRlbnRf YnVmZmVyICplYikKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBidHJmc19oZWFkZXJfY2h1 bmtfdHJlZV91dWlkKGNvbnN0IHN0cnVjdCBleHRlbnRfYnVmZmVyICplYikKIHsKIAlyZXR1cm4g b2Zmc2V0b2Yoc3RydWN0IGJ0cmZzX2hlYWRlciwgY2h1bmtfdHJlZV91dWlkKTsKIH0KIAotc3Rh dGljIGlubGluZSBpbnQgYnRyZnNfaXNfbGVhZihzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIpCitz dGF0aWMgaW5saW5lIGludCBidHJmc19pc19sZWFmKGNvbnN0IHN0cnVjdCBleHRlbnRfYnVmZmVy ICplYikKIHsKIAlyZXR1cm4gYnRyZnNfaGVhZGVyX2xldmVsKGViKSA9PSAwOwogfQpAQCAtMjk1 MCwxMiArMjk1MywxMiBAQCBCVFJGU19TRVRHRVRfU1RBQ0tfRlVOQ1Mocm9vdF9zdHJhbnNpZCwg c3RydWN0IGJ0cmZzX3Jvb3RfaXRlbSwKIEJUUkZTX1NFVEdFVF9TVEFDS19GVU5DUyhyb290X3J0 cmFuc2lkLCBzdHJ1Y3QgYnRyZnNfcm9vdF9pdGVtLAogCQkJIHJ0cmFuc2lkLCA2NCk7CiAKLXN0 YXRpYyBpbmxpbmUgYm9vbCBidHJmc19yb290X3JlYWRvbmx5KHN0cnVjdCBidHJmc19yb290ICpy b290KQorc3RhdGljIGlubGluZSBib29sIGJ0cmZzX3Jvb3RfcmVhZG9ubHkoY29uc3Qgc3RydWN0 IGJ0cmZzX3Jvb3QgKnJvb3QpCiB7CiAJcmV0dXJuIChyb290LT5yb290X2l0ZW0uZmxhZ3MgJiBj cHVfdG9fbGU2NChCVFJGU19ST09UX1NVQlZPTF9SRE9OTFkpKSAhPSAwOwogfQogCi1zdGF0aWMg aW5saW5lIGJvb2wgYnRyZnNfcm9vdF9kZWFkKHN0cnVjdCBidHJmc19yb290ICpyb290KQorc3Rh dGljIGlubGluZSBib29sIGJ0cmZzX3Jvb3RfZGVhZChjb25zdCBzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCkKIHsKIAlyZXR1cm4gKHJvb3QtPnJvb3RfaXRlbS5mbGFncyAmIGNwdV90b19sZTY0KEJU UkZTX1JPT1RfU1VCVk9MX0RFQUQpKSAhPSAwOwogfQpAQCAtMzAxMiw1MSArMzAxNSw1MSBAQCBC VFJGU19TRVRHRVRfU1RBQ0tfRlVOQ1MoYmFja3VwX251bV9kZXZpY2VzLCBzdHJ1Y3QgYnRyZnNf cm9vdF9iYWNrdXAsCiAvKiBzdHJ1Y3QgYnRyZnNfYmFsYW5jZV9pdGVtICovCiBCVFJGU19TRVRH RVRfRlVOQ1MoYmFsYW5jZV9mbGFncywgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSwgZmxhZ3Ms IDY0KTsKIAotc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2JhbGFuY2VfZGF0YShzdHJ1Y3QgZXh0 ZW50X2J1ZmZlciAqZWIsCi0JCQkJICAgICAgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSAqYmks CitzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfYmFsYW5jZV9kYXRhKGNvbnN0IHN0cnVjdCBleHRl bnRfYnVmZmVyICplYiwKKwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgYnRyZnNfYmFsYW5jZV9pdGVt ICpiaSwKIAkJCQkgICAgICBzdHJ1Y3QgYnRyZnNfZGlza19iYWxhbmNlX2FyZ3MgKmJhKQogewog CXJlYWRfZWJfbWVtYmVyKGViLCBiaSwgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSwgZGF0YSwg YmEpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfc2V0X2JhbGFuY2VfZGF0YShzdHJ1 Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCi0JCQkJCSAgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSAq YmksCi0JCQkJCSAgc3RydWN0IGJ0cmZzX2Rpc2tfYmFsYW5jZV9hcmdzICpiYSkKKwkJCQkgIHN0 cnVjdCBidHJmc19iYWxhbmNlX2l0ZW0gKmJpLAorCQkJCSAgY29uc3Qgc3RydWN0IGJ0cmZzX2Rp c2tfYmFsYW5jZV9hcmdzICpiYSkKIHsKIAl3cml0ZV9lYl9tZW1iZXIoZWIsIGJpLCBzdHJ1Y3Qg YnRyZnNfYmFsYW5jZV9pdGVtLCBkYXRhLCBiYSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBi dHJmc19iYWxhbmNlX21ldGEoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAotCQkJCSAgICAgIHN0 cnVjdCBidHJmc19iYWxhbmNlX2l0ZW0gKmJpLAorc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX2Jh bGFuY2VfbWV0YShjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCisJCQkJICAgICAgY29u c3Qgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSAqYmksCiAJCQkJICAgICAgc3RydWN0IGJ0cmZz X2Rpc2tfYmFsYW5jZV9hcmdzICpiYSkKIHsKIAlyZWFkX2ViX21lbWJlcihlYiwgYmksIHN0cnVj dCBidHJmc19iYWxhbmNlX2l0ZW0sIG1ldGEsIGJhKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lk IGJ0cmZzX3NldF9iYWxhbmNlX21ldGEoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAotCQkJCQkg IHN0cnVjdCBidHJmc19iYWxhbmNlX2l0ZW0gKmJpLAotCQkJCQkgIHN0cnVjdCBidHJmc19kaXNr X2JhbGFuY2VfYXJncyAqYmEpCisJCQkJICBzdHJ1Y3QgYnRyZnNfYmFsYW5jZV9pdGVtICpiaSwK KwkJCQkgIGNvbnN0IHN0cnVjdCBidHJmc19kaXNrX2JhbGFuY2VfYXJncyAqYmEpCiB7CiAJd3Jp dGVfZWJfbWVtYmVyKGViLCBiaSwgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSwgbWV0YSwgYmEp OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfYmFsYW5jZV9zeXMoc3RydWN0IGV4dGVu dF9idWZmZXIgKmViLAotCQkJCSAgICAgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSAqYmksCitz dGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfYmFsYW5jZV9zeXMoY29uc3Qgc3RydWN0IGV4dGVudF9i dWZmZXIgKmViLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSAqYmks CiAJCQkJICAgICBzdHJ1Y3QgYnRyZnNfZGlza19iYWxhbmNlX2FyZ3MgKmJhKQogewogCXJlYWRf ZWJfbWVtYmVyKGViLCBiaSwgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSwgc3lzLCBiYSk7CiB9 CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19zZXRfYmFsYW5jZV9zeXMoc3RydWN0IGV4dGVu dF9idWZmZXIgKmViLAotCQkJCQkgc3RydWN0IGJ0cmZzX2JhbGFuY2VfaXRlbSAqYmksCi0JCQkJ CSBzdHJ1Y3QgYnRyZnNfZGlza19iYWxhbmNlX2FyZ3MgKmJhKQorCQkJCSBzdHJ1Y3QgYnRyZnNf YmFsYW5jZV9pdGVtICpiaSwKKwkJCQkgY29uc3Qgc3RydWN0IGJ0cmZzX2Rpc2tfYmFsYW5jZV9h cmdzICpiYSkKIHsKIAl3cml0ZV9lYl9tZW1iZXIoZWIsIGJpLCBzdHJ1Y3QgYnRyZnNfYmFsYW5j ZV9pdGVtLCBzeXMsIGJhKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCiBidHJmc19kaXNrX2Jh bGFuY2VfYXJnc190b19jcHUoc3RydWN0IGJ0cmZzX2JhbGFuY2VfYXJncyAqY3B1LAotCQkJICAg ICAgIHN0cnVjdCBidHJmc19kaXNrX2JhbGFuY2VfYXJncyAqZGlzaykKKwkJCSAgICAgICBjb25z dCBzdHJ1Y3QgYnRyZnNfZGlza19iYWxhbmNlX2FyZ3MgKmRpc2spCiB7CiAJbWVtc2V0KGNwdSwg MCwgc2l6ZW9mKCpjcHUpKTsKIApAQCAtMzA3Niw3ICszMDc5LDcgQEAgYnRyZnNfZGlza19iYWxh bmNlX2FyZ3NfdG9fY3B1KHN0cnVjdCBidHJmc19iYWxhbmNlX2FyZ3MgKmNwdSwKIAogc3RhdGlj IGlubGluZSB2b2lkCiBidHJmc19jcHVfYmFsYW5jZV9hcmdzX3RvX2Rpc2soc3RydWN0IGJ0cmZz X2Rpc2tfYmFsYW5jZV9hcmdzICpkaXNrLAotCQkJICAgICAgIHN0cnVjdCBidHJmc19iYWxhbmNl X2FyZ3MgKmNwdSkKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYnRyZnNfYmFsYW5jZV9hcmdzICpj cHUpCiB7CiAJbWVtc2V0KGRpc2ssIDAsIHNpemVvZigqZGlzaykpOwogCkBAIC0zMTQ0LDcgKzMx NDcsNyBAQCBCVFJGU19TRVRHRVRfU1RBQ0tfRlVOQ1Moc3VwZXJfbWFnaWMsIHN0cnVjdCBidHJm c19zdXBlcl9ibG9jaywgbWFnaWMsIDY0KTsKIEJUUkZTX1NFVEdFVF9TVEFDS19GVU5DUyhzdXBl cl91dWlkX3RyZWVfZ2VuZXJhdGlvbiwgc3RydWN0IGJ0cmZzX3N1cGVyX2Jsb2NrLAogCQkJIHV1 aWRfdHJlZV9nZW5lcmF0aW9uLCA2NCk7CiAKLXN0YXRpYyBpbmxpbmUgaW50IGJ0cmZzX3N1cGVy X2NzdW1fc2l6ZShzdHJ1Y3QgYnRyZnNfc3VwZXJfYmxvY2sgKnMpCitzdGF0aWMgaW5saW5lIGlu dCBidHJmc19zdXBlcl9jc3VtX3NpemUoY29uc3Qgc3RydWN0IGJ0cmZzX3N1cGVyX2Jsb2NrICpz KQogewogCXUxNiB0ID0gYnRyZnNfc3VwZXJfY3N1bV90eXBlKHMpOwogCS8qCkBAIC0zMTYzLDgg KzMxNjYsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgYnRyZnNfbGVhZl9kYXRhKHN0 cnVjdCBleHRlbnRfYnVmZmVyICpsKQogICogdGhpcyByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRo ZSBzdGFydCBvZiB0aGUgbGFzdCBpdGVtLAogICogd2hpY2ggaXMgdGhlIHN0b3Agb2YgdGhlIGxl YWYgZGF0YSBzdGFjawogICovCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBsZWFmX2RhdGFf ZW5kKHN0cnVjdCBidHJmc19yb290ICpyb290LAotCQkJCQkgc3RydWN0IGV4dGVudF9idWZmZXIg KmxlYWYpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBsZWFmX2RhdGFfZW5kKGNvbnN0IHN0 cnVjdCBidHJmc19yb290ICpyb290LAorCQkJCQkgY29uc3Qgc3RydWN0IGV4dGVudF9idWZmZXIg KmxlYWYpCiB7CiAJdTMyIG5yID0gYnRyZnNfaGVhZGVyX25yaXRlbXMobGVhZik7CiAKQEAgLTMx ODksNyArMzE5Miw3IEBAIEJUUkZTX1NFVEdFVF9TVEFDS19GVU5DUyhzdGFja19maWxlX2V4dGVu dF9jb21wcmVzc2lvbiwKIAkJCSBzdHJ1Y3QgYnRyZnNfZmlsZV9leHRlbnRfaXRlbSwgY29tcHJl c3Npb24sIDgpOwogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKLWJ0cmZzX2ZpbGVfZXh0 ZW50X2lubGluZV9zdGFydChzdHJ1Y3QgYnRyZnNfZmlsZV9leHRlbnRfaXRlbSAqZSkKK2J0cmZz X2ZpbGVfZXh0ZW50X2lubGluZV9zdGFydChjb25zdCBzdHJ1Y3QgYnRyZnNfZmlsZV9leHRlbnRf aXRlbSAqZSkKIHsKIAlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpZSArIEJUUkZTX0ZJTEVfRVhURU5U X0lOTElORV9EQVRBX1NUQVJUOwogfQpAQCAtMzIyMyw4ICszMjI2LDkgQEAgQlRSRlNfU0VUR0VU X0ZVTkNTKGZpbGVfZXh0ZW50X290aGVyX2VuY29kaW5nLCBzdHJ1Y3QgYnRyZnNfZmlsZV9leHRl bnRfaXRlbSwKICAqIHNpemUgb2YgYW55IGV4dGVudCBoZWFkZXJzLiAgSWYgYSBmaWxlIGlzIGNv bXByZXNzZWQgb24gZGlzaywgdGhpcyBpcwogICogdGhlIGNvbXByZXNzZWQgc2l6ZQogICovCi1z dGF0aWMgaW5saW5lIHUzMiBidHJmc19maWxlX2V4dGVudF9pbmxpbmVfaXRlbV9sZW4oc3RydWN0 IGV4dGVudF9idWZmZXIgKmViLAotCQkJCQkJICAgIHN0cnVjdCBidHJmc19pdGVtICplKQorc3Rh dGljIGlubGluZSB1MzIgYnRyZnNfZmlsZV9leHRlbnRfaW5saW5lX2l0ZW1fbGVuKAorCQkJCQkJ Y29uc3Qgc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAorCQkJCQkJc3RydWN0IGJ0cmZzX2l0ZW0g KmUpCiB7CiAJcmV0dXJuIGJ0cmZzX2l0ZW1fc2l6ZShlYiwgZSkgLSBCVFJGU19GSUxFX0VYVEVO VF9JTkxJTkVfREFUQV9TVEFSVDsKIH0KQEAgLTMyMzIsOSArMzIzNiw5IEBAIHN0YXRpYyBpbmxp bmUgdTMyIGJ0cmZzX2ZpbGVfZXh0ZW50X2lubGluZV9pdGVtX2xlbihzdHJ1Y3QgZXh0ZW50X2J1 ZmZlciAqZWIsCiAvKiB0aGlzIHJldHVybnMgdGhlIG51bWJlciBvZiBmaWxlIGJ5dGVzIHJlcHJl c2VudGVkIGJ5IHRoZSBpbmxpbmUgaXRlbS4KICAqIElmIGFuIGl0ZW0gaXMgY29tcHJlc3NlZCwg dGhpcyBpcyB0aGUgdW5jb21wcmVzc2VkIHNpemUKICAqLwotc3RhdGljIGlubGluZSB1MzIgYnRy ZnNfZmlsZV9leHRlbnRfaW5saW5lX2xlbihzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCi0JCQkJ CSAgICAgICBpbnQgc2xvdCwKLQkJCQkJICAgICAgIHN0cnVjdCBidHJmc19maWxlX2V4dGVudF9p dGVtICpmaSkKK3N0YXRpYyBpbmxpbmUgdTMyIGJ0cmZzX2ZpbGVfZXh0ZW50X2lubGluZV9sZW4o Y29uc3Qgc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAorCQkJCQlpbnQgc2xvdCwKKwkJCQkJY29u c3Qgc3RydWN0IGJ0cmZzX2ZpbGVfZXh0ZW50X2l0ZW0gKmZpKQogewogCXN0cnVjdCBidHJmc19t YXBfdG9rZW4gdG9rZW47CiAKQEAgLTMyNTYsOCArMzI2MCw4IEBAIHN0YXRpYyBpbmxpbmUgdTMy IGJ0cmZzX2ZpbGVfZXh0ZW50X2lubGluZV9sZW4oc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAog CiAKIC8qIGJ0cmZzX2Rldl9zdGF0c19pdGVtICovCi1zdGF0aWMgaW5saW5lIHU2NCBidHJmc19k ZXZfc3RhdHNfdmFsdWUoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAotCQkJCQlzdHJ1Y3QgYnRy ZnNfZGV2X3N0YXRzX2l0ZW0gKnB0ciwKK3N0YXRpYyBpbmxpbmUgdTY0IGJ0cmZzX2Rldl9zdGF0 c192YWx1ZShjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsCisJCQkJCWNvbnN0IHN0cnVj dCBidHJmc19kZXZfc3RhdHNfaXRlbSAqcHRyLAogCQkJCQlpbnQgaW5kZXgpCiB7CiAJdTY0IHZh bDsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2V4dGVudF9pby5jIGIvZnMvYnRyZnMvZXh0ZW50X2lv LmMKaW5kZXggYTJmZmY5YTBmZTkxLi40MmU3ZjZhOGY5MWQgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZz L2V4dGVudF9pby5jCisrKyBiL2ZzL2J0cmZzL2V4dGVudF9pby5jCkBAIC01MzgxLDkgKzUzODEs OCBAQCB1bmxvY2tfZXhpdDoKIAlyZXR1cm4gcmV0OwogfQogCi12b2lkIHJlYWRfZXh0ZW50X2J1 ZmZlcihzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIHZvaWQgKmRzdHYsCi0JCQl1bnNpZ25lZCBs b25nIHN0YXJ0LAotCQkJdW5zaWduZWQgbG9uZyBsZW4pCit2b2lkIHJlYWRfZXh0ZW50X2J1ZmZl cihjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIHZvaWQgKmRzdHYsCisJCQl1bnNpZ25l ZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGxlbikKIHsKIAlzaXplX3QgY3VyOwogCXNpemVf dCBvZmZzZXQ7CkBAIC01NDEyLDkgKzU0MTEsOSBAQCB2b2lkIHJlYWRfZXh0ZW50X2J1ZmZlcihz dHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIHZvaWQgKmRzdHYsCiAJfQogfQogCi1pbnQgcmVhZF9l eHRlbnRfYnVmZmVyX3RvX3VzZXIoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLCB2b2lkIF9fdXNl ciAqZHN0diwKLQkJCXVuc2lnbmVkIGxvbmcgc3RhcnQsCi0JCQl1bnNpZ25lZCBsb25nIGxlbikK K2ludCByZWFkX2V4dGVudF9idWZmZXJfdG9fdXNlcihjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZl ciAqZWIsCisJCQkgICAgICAgdm9pZCBfX3VzZXIgKmRzdHYsCisJCQkgICAgICAgdW5zaWduZWQg bG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4pCiB7CiAJc2l6ZV90IGN1cjsKIAlzaXplX3Qg b2Zmc2V0OwpAQCAtNTQ0OSwxMCArNTQ0OCwxMCBAQCBpbnQgcmVhZF9leHRlbnRfYnVmZmVyX3Rv X3VzZXIoc3RydWN0IGV4dGVudF9idWZmZXIgKmViLCB2b2lkIF9fdXNlciAqZHN0diwKIAlyZXR1 cm4gcmV0OwogfQogCi1pbnQgbWFwX3ByaXZhdGVfZXh0ZW50X2J1ZmZlcihzdHJ1Y3QgZXh0ZW50 X2J1ZmZlciAqZWIsIHVuc2lnbmVkIGxvbmcgc3RhcnQsCi0JCQkgICAgICAgdW5zaWduZWQgbG9u ZyBtaW5fbGVuLCBjaGFyICoqbWFwLAotCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgKm1hcF9zdGFy dCwKLQkJCSAgICAgICB1bnNpZ25lZCBsb25nICptYXBfbGVuKQoraW50IG1hcF9wcml2YXRlX2V4 dGVudF9idWZmZXIoY29uc3Qgc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAorCQkJICAgICAgdW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBtaW5fbGVuLAorCQkJICAgICAgY2hhciAq Km1hcCwgdW5zaWduZWQgbG9uZyAqbWFwX3N0YXJ0LAorCQkJICAgICAgdW5zaWduZWQgbG9uZyAq bWFwX2xlbikKIHsKIAlzaXplX3Qgb2Zmc2V0ID0gc3RhcnQgJiAoUEFHRV9DQUNIRV9TSVpFIC0g MSk7CiAJY2hhciAqa2FkZHI7CkBAIC01NDg3LDkgKzU0ODYsOCBAQCBpbnQgbWFwX3ByaXZhdGVf ZXh0ZW50X2J1ZmZlcihzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIHVuc2lnbmVkIGxvbmcgc3Rh cnQsCiAJcmV0dXJuIDA7CiB9CiAKLWludCBtZW1jbXBfZXh0ZW50X2J1ZmZlcihzdHJ1Y3QgZXh0 ZW50X2J1ZmZlciAqZWIsIGNvbnN0IHZvaWQgKnB0cnYsCi0JCQkgIHVuc2lnbmVkIGxvbmcgc3Rh cnQsCi0JCQkgIHVuc2lnbmVkIGxvbmcgbGVuKQoraW50IG1lbWNtcF9leHRlbnRfYnVmZmVyKGNv bnN0IHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwgY29uc3Qgdm9pZCAqcHRydiwKKwkJCSB1bnNp Z25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGxlbikKIHsKIAlzaXplX3QgY3VyOwogCXNp emVfdCBvZmZzZXQ7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnRfaW8uaCBiL2ZzL2J0cmZz L2V4dGVudF9pby5oCmluZGV4IGY0YzFhZTExODU1Zi4uNzUxNDM1OTY3NzI0IDEwMDY0NAotLS0g YS9mcy9idHJmcy9leHRlbnRfaW8uaAorKysgYi9mcy9idHJmcy9leHRlbnRfaW8uaApAQCAtMzA4 LDE0ICszMDgsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGV4dGVudF9idWZmZXJfZ2V0KHN0cnVj dCBleHRlbnRfYnVmZmVyICplYikKIAlhdG9taWNfaW5jKCZlYi0+cmVmcyk7CiB9CiAKLWludCBt ZW1jbXBfZXh0ZW50X2J1ZmZlcihzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIsIGNvbnN0IHZvaWQg KnB0cnYsCi0JCQkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCi0JCQkgIHVuc2lnbmVkIGxvbmcgbGVu KTsKLXZvaWQgcmVhZF9leHRlbnRfYnVmZmVyKHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwgdm9p ZCAqZHN0LAoraW50IG1lbWNtcF9leHRlbnRfYnVmZmVyKGNvbnN0IHN0cnVjdCBleHRlbnRfYnVm ZmVyICplYiwgY29uc3Qgdm9pZCAqcHRydiwKKwkJCSB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNp Z25lZCBsb25nIGxlbik7Cit2b2lkIHJlYWRfZXh0ZW50X2J1ZmZlcihjb25zdCBzdHJ1Y3QgZXh0 ZW50X2J1ZmZlciAqZWIsIHZvaWQgKmRzdCwKIAkJCXVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJCQl1 bnNpZ25lZCBsb25nIGxlbik7Ci1pbnQgcmVhZF9leHRlbnRfYnVmZmVyX3RvX3VzZXIoc3RydWN0 IGV4dGVudF9idWZmZXIgKmViLCB2b2lkIF9fdXNlciAqZHN0LAotCQkJICAgICAgIHVuc2lnbmVk IGxvbmcgc3RhcnQsCitpbnQgcmVhZF9leHRlbnRfYnVmZmVyX3RvX3VzZXIoY29uc3Qgc3RydWN0 IGV4dGVudF9idWZmZXIgKmViLAorCQkJICAgICAgIHZvaWQgX191c2VyICpkc3QsIHVuc2lnbmVk IGxvbmcgc3RhcnQsCiAJCQkgICAgICAgdW5zaWduZWQgbG9uZyBsZW4pOwogdm9pZCB3cml0ZV9l eHRlbnRfYnVmZmVyKHN0cnVjdCBleHRlbnRfYnVmZmVyICplYiwgY29uc3Qgdm9pZCAqc3JjLAog CQkJIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbGVuKTsKQEAgLTMzNCwxMCAr MzMzLDEwIEBAIGludCBzZXRfZXh0ZW50X2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgZXh0ZW50X2J1 ZmZlciAqZWIpOwogaW50IGNsZWFyX2V4dGVudF9idWZmZXJfdXB0b2RhdGUoc3RydWN0IGV4dGVu dF9idWZmZXIgKmViKTsKIGludCBleHRlbnRfYnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBleHRlbnRf YnVmZmVyICplYik7CiBpbnQgZXh0ZW50X2J1ZmZlcl91bmRlcl9pbyhzdHJ1Y3QgZXh0ZW50X2J1 ZmZlciAqZWIpOwotaW50IG1hcF9wcml2YXRlX2V4dGVudF9idWZmZXIoc3RydWN0IGV4dGVudF9i dWZmZXIgKmViLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKLQkJICAgICAgdW5zaWduZWQgbG9uZyBt aW5fbGVuLCBjaGFyICoqbWFwLAotCQkgICAgICB1bnNpZ25lZCBsb25nICptYXBfc3RhcnQsCi0J CSAgICAgIHVuc2lnbmVkIGxvbmcgKm1hcF9sZW4pOworaW50IG1hcF9wcml2YXRlX2V4dGVudF9i dWZmZXIoY29uc3Qgc3RydWN0IGV4dGVudF9idWZmZXIgKmViLAorCQkJICAgICAgdW5zaWduZWQg bG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgbWluX2xlbiwKKwkJCSAgICAgIGNoYXIgKiptYXAs IHVuc2lnbmVkIGxvbmcgKm1hcF9zdGFydCwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgKm1hcF9s ZW4pOwogaW50IGV4dGVudF9yYW5nZV9jbGVhcl9kaXJ0eV9mb3JfaW8oc3RydWN0IGlub2RlICpp bm9kZSwgdTY0IHN0YXJ0LCB1NjQgZW5kKTsKIGludCBleHRlbnRfcmFuZ2VfcmVkaXJ0eV9mb3Jf aW8oc3RydWN0IGlub2RlICppbm9kZSwgdTY0IHN0YXJ0LCB1NjQgZW5kKTsKIGludCBleHRlbnRf Y2xlYXJfdW5sb2NrX2RlbGFsbG9jKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBzdGFydCwgdTY0 IGVuZCwKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3N0cnVjdC1mdW5jcy5jIGIvZnMvYnRyZnMvc3Ry dWN0LWZ1bmNzLmMKaW5kZXggYjk3NjU5N2IwNzIxLi42M2ZmZDIxM2IwYjcgMTAwNjQ0Ci0tLSBh L2ZzL2J0cmZzL3N0cnVjdC1mdW5jcy5jCisrKyBiL2ZzL2J0cmZzL3N0cnVjdC1mdW5jcy5jCkBA IC01MCw4ICs1MCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdW5hbGlnbmVkX2xlOCh1OCB2 YWwsIHZvaWQgKnApCiAgKi8KIAogI2RlZmluZSBERUZJTkVfQlRSRlNfU0VUR0VUX0JJVFMoYml0 cykJCQkJCVwKLXUjI2JpdHMgYnRyZnNfZ2V0X3Rva2VuXyMjYml0cyhzdHJ1Y3QgZXh0ZW50X2J1 ZmZlciAqZWIsIHZvaWQgKnB0ciwJXAotCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgb2ZmLAkJCVwK K3UjI2JpdHMgYnRyZnNfZ2V0X3Rva2VuXyMjYml0cyhjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZl ciAqZWIsCQlcCisJCQkgICAgICAgY29uc3Qgdm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIG9mZiwJ XAogCQkJICAgICAgIHN0cnVjdCBidHJmc19tYXBfdG9rZW4gKnRva2VuKQkJXAogewkJCQkJCQkJ CVwKIAl1bnNpZ25lZCBsb25nIHBhcnRfb2Zmc2V0ID0gKHVuc2lnbmVkIGxvbmcpcHRyOwkJCVwK QEAgLTkwLDcgKzkwLDggQEAgdSMjYml0cyBidHJmc19nZXRfdG9rZW5fIyNiaXRzKHN0cnVjdCBl eHRlbnRfYnVmZmVyICplYiwgdm9pZCAqcHRyLAlcCiAJcmV0dXJuIHJlczsJCQkJCQkJXAogfQkJ CQkJCQkJCVwKIHZvaWQgYnRyZnNfc2V0X3Rva2VuXyMjYml0cyhzdHJ1Y3QgZXh0ZW50X2J1ZmZl ciAqZWIsCQkJXAotCQkJICAgIHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBvZmYsIHUjI2JpdHMg dmFsLAlcCisJCQkgICAgY29uc3Qgdm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIG9mZiwJCVwKKwkJ CSAgICB1IyNiaXRzIHZhbCwJCQkJXAogCQkJICAgIHN0cnVjdCBidHJmc19tYXBfdG9rZW4gKnRv a2VuKQkJXAogewkJCQkJCQkJCVwKIAl1bnNpZ25lZCBsb25nIHBhcnRfb2Zmc2V0ID0gKHVuc2ln bmVkIGxvbmcpcHRyOwkJCVwKQEAgLTEzMyw3ICsxMzQsNyBAQCBERUZJTkVfQlRSRlNfU0VUR0VU X0JJVFMoMTYpCiBERUZJTkVfQlRSRlNfU0VUR0VUX0JJVFMoMzIpCiBERUZJTkVfQlRSRlNfU0VU R0VUX0JJVFMoNjQpCiAKLXZvaWQgYnRyZnNfbm9kZV9rZXkoc3RydWN0IGV4dGVudF9idWZmZXIg KmViLAordm9pZCBidHJmc19ub2RlX2tleShjb25zdCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWIs CiAJCSAgICBzdHJ1Y3QgYnRyZnNfZGlza19rZXkgKmRpc2tfa2V5LCBpbnQgbnIpCiB7CiAJdW5z aWduZWQgbG9uZyBwdHIgPSBidHJmc19ub2RlX2tleV9wdHJfb2Zmc2V0KG5yKTsKLS0gCkJlbiBI dXRjaGluZ3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAgICAgICBDb2Rl dGhpbmsgTHRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAgICAgICAgIERh bGUgSG91c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNYW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSBmYjBmZjhiNjRh MmRlOWU4ZDBhMGQ5YTY4ZmM1NWY0YjBlMGFjNzZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBRdSBXZW5ydW8gPHF1d2VucnVvLmJ0cmZzQGdteC5jb20+CkRhdGU6IFdlZCwgMjMgQXVn IDIwMTcgMTY6NTc6NTYgKzA5MDAKU3ViamVjdDogW1BBVENIIDE1LzMxXSBidHJmczogUmVmYWN0 b3IgY2hlY2tfbGVhZiBmdW5jdGlvbiBmb3IgbGF0ZXIgZXhwYW5zaW9uCgpjb21taXQgYzMyNjdi YmFhOWNhZTA5YjYyOTYwZWFmZTMzYWQxOTE5NjgwMzI4NSB1cHN0cmVhbS4KCkN1cnJlbnQgY2hl Y2tfbGVhZigpIGZ1bmN0aW9uIGRvZXMgYSBnb29kIGpvYiBjaGVja2luZyBrZXkgb3JkZXIgYW5k Cml0ZW0gb2Zmc2V0L3NpemUuCgpIb3dldmVyIGl0IG9ubHkgY2hlY2tzIGZyb20gc2xvdCAwIHRv IHRoZSBsYXN0IGJ1dCBvbmUgc2xvdCwgdGhpcyBpcwpnb29kIGJ1dCBtYWtlcyBsYXRlciBleHBh bnNpb24gaGFyZC4KClNvIHRoaXMgcmVmYWN0b3JpbmcgaXRlcmF0ZXMgZnJvbSBzbG90IDAgdG8g dGhlIGxhc3Qgc2xvdC4KRm9yIGtleSBjb21wYXJpc29uLCBpdCB1c2VzIGEga2V5IHdpdGggYWxs IDAgYXMgaW5pdGlhbCBrZXksIHNvIGFsbAp2YWxpZCBrZXlzIHNob3VsZCBiZSBsYXJnZXIgdGhh biB0aGF0LgoKQW5kIGZvciBpdGVtIHNpemUvb2Zmc2V0IGNoZWNrcywgaXQgY29tcGFyZXMgY3Vy cmVudCBpdGVtIGVuZCB3aXRoCnByZXZpb3VzIGl0ZW0gb2Zmc2V0LgpGb3Igc2xvdCAwLCB1c2Ug bGVhZiBlbmQgYXMgYSBzcGVjaWFsIGNhc2UuCgpUaGlzIG1ha2VzIGxhdGVyIGl0ZW0va2V5IG9m ZnNldCBjaGVja3MgYW5kIGl0ZW0gc2l6ZSBjaGVja3MgZWFzaWVyIHRvCmJlIGltcGxlbWVudGVk LgoKQWxzbywgbWFrZXMgY2hlY2tfbGVhZigpIHRvIHJldHVybiAtRVVDTEVBTiBvdGhlciB0aGFu IC1FSU8gdG8gaW5kaWNhdGUKZXJyb3IuCgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8gPHF1d2Vu cnVvLmJ0cmZzQGdteC5jb20+ClJldmlld2VkLWJ5OiBOaWtvbGF5IEJvcmlzb3YgPG5ib3Jpc292 QHN1c2UuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+Cltid2g6IEJhY2tw b3J0ZWQgdG8gNC40OgogLSBCVFJGU19MRUFGX0RBVEFfU0laRSgpIHRha2VzIGEgcm9vdCByYXRo ZXIgdGhhbiBhbiBmc19pbmZvCiAtIEFkanVzdCBjb250ZXh0XQpTaWduZWQtb2ZmLWJ5OiBCZW4g SHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy9k aXNrLWlvLmMgfCA1MCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2Rpc2staW8uYyBiL2ZzL2J0cmZzL2Rpc2staW8uYwpp bmRleCBmYzcwYmU2NmVlNzkuLmQ1MTM2NTBkMWI3NyAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvZGlz ay1pby5jCisrKyBiL2ZzL2J0cmZzL2Rpc2staW8uYwpAQCAtNTMxLDggKzUzMSw5IEBAIHN0YXRp YyBpbnQgY2hlY2tfdHJlZV9ibG9ja19mc2lkKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZv LAogc3RhdGljIG5vaW5saW5lIGludCBjaGVja19sZWFmKHN0cnVjdCBidHJmc19yb290ICpyb290 LAogCQkJICAgICAgIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmKQogeworCS8qIE5vIHZhbGlk IGtleSB0eXBlIGlzIDAsIHNvIGFsbCBrZXkgc2hvdWxkIGJlIGxhcmdlciB0aGFuIHRoaXMga2V5 ICovCisJc3RydWN0IGJ0cmZzX2tleSBwcmV2X2tleSA9IHswLCAwLCAwfTsKIAlzdHJ1Y3QgYnRy ZnNfa2V5IGtleTsKLQlzdHJ1Y3QgYnRyZnNfa2V5IGxlYWZfa2V5OwogCXUzMiBucml0ZW1zID0g YnRyZnNfaGVhZGVyX25yaXRlbXMobGVhZik7CiAJaW50IHNsb3Q7CiAKQEAgLTU2NSw3ICs1NjYs NyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGNoZWNrX2xlYWYoc3RydWN0IGJ0cmZzX3Jvb3QgKnJv b3QsCiAJCQkJQ09SUlVQVCgibm9uLXJvb3QgbGVhZidzIG5yaXRlbXMgaXMgMCIsCiAJCQkJCWxl YWYsIGNoZWNrX3Jvb3QsIDApOwogCQkJCWZyZWVfZXh0ZW50X2J1ZmZlcihlYik7Ci0JCQkJcmV0 dXJuIC1FSU87CisJCQkJcmV0dXJuIC1FVUNMRUFOOwogCQkJfQogCQkJZnJlZV9leHRlbnRfYnVm ZmVyKGViKTsKIAkJfQpAQCAtNTc1LDI4ICs1NzYsMjMgQEAgc3RhdGljIG5vaW5saW5lIGludCBj aGVja19sZWFmKHN0cnVjdCBidHJmc19yb290ICpyb290LAogCWlmIChucml0ZW1zID09IDApCiAJ CXJldHVybiAwOwogCi0JLyogQ2hlY2sgdGhlIDAgaXRlbSAqLwotCWlmIChidHJmc19pdGVtX29m ZnNldF9ucihsZWFmLCAwKSArIGJ0cmZzX2l0ZW1fc2l6ZV9ucihsZWFmLCAwKSAhPQotCSAgICBC VFJGU19MRUFGX0RBVEFfU0laRShyb290KSkgewotCQlDT1JSVVBUKCJpbnZhbGlkIGl0ZW0gb2Zm c2V0IHNpemUgcGFpciIsIGxlYWYsIHJvb3QsIDApOwotCQlyZXR1cm4gLUVJTzsKLQl9Ci0KIAkv KgotCSAqIENoZWNrIHRvIG1ha2Ugc3VyZSBlYWNoIGl0ZW1zIGtleXMgYXJlIGluIHRoZSBjb3Jy ZWN0IG9yZGVyIGFuZCB0aGVpcgotCSAqIG9mZnNldHMgbWFrZSBzZW5zZS4gIFdlIG9ubHkgaGF2 ZSB0byBsb29wIHRocm91Z2ggbnJpdGVtcy0xIGJlY2F1c2UKLQkgKiB3ZSBjaGVjayB0aGUgY3Vy cmVudCBzbG90IGFnYWluc3QgdGhlIG5leHQgc2xvdCwgd2hpY2ggdmVyaWZpZXMgdGhlCi0JICog bmV4dCBzbG90J3Mgb2Zmc2V0K3NpemUgbWFrZXMgc2Vuc2UgYW5kIHRoYXQgdGhlIGN1cnJlbnQn cyBzbG90Ci0JICogb2Zmc2V0IGlzIGNvcnJlY3QuCisJICogQ2hlY2sgdGhlIGZvbGxvd2luZyB0 aGluZ3MgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYSBnb29kIGxlYWYsIGFuZAorCSAqIGxlYWYgdXNl cnMgd29uJ3QgbmVlZCB0byBib3RoZXIgd2l0aCBzaW1pbGFyIHNhbml0eSBjaGVja3M6CisJICoK KwkgKiAxKSBrZXkgb3JkZXIKKwkgKiAyKSBpdGVtIG9mZnNldCBhbmQgc2l6ZQorCSAqICAgIE5v IG92ZXJsYXAsIG5vIGhvbGUsIGFsbCBpbnNpZGUgdGhlIGxlYWYuCiAJICovCi0JZm9yIChzbG90 ID0gMDsgc2xvdCA8IG5yaXRlbXMgLSAxOyBzbG90KyspIHsKLQkJYnRyZnNfaXRlbV9rZXlfdG9f Y3B1KGxlYWYsICZsZWFmX2tleSwgc2xvdCk7Ci0JCWJ0cmZzX2l0ZW1fa2V5X3RvX2NwdShsZWFm LCAma2V5LCBzbG90ICsgMSk7CisJZm9yIChzbG90ID0gMDsgc2xvdCA8IG5yaXRlbXM7IHNsb3Qr KykgeworCQl1MzIgaXRlbV9lbmRfZXhwZWN0ZWQ7CisKKwkJYnRyZnNfaXRlbV9rZXlfdG9fY3B1 KGxlYWYsICZrZXksIHNsb3QpOwogCiAJCS8qIE1ha2Ugc3VyZSB0aGUga2V5cyBhcmUgaW4gdGhl IHJpZ2h0IG9yZGVyICovCi0JCWlmIChidHJmc19jb21wX2NwdV9rZXlzKCZsZWFmX2tleSwgJmtl eSkgPj0gMCkgeworCQlpZiAoYnRyZnNfY29tcF9jcHVfa2V5cygmcHJldl9rZXksICZrZXkpID49 IDApIHsKIAkJCUNPUlJVUFQoImJhZCBrZXkgb3JkZXIiLCBsZWFmLCByb290LCBzbG90KTsKLQkJ CXJldHVybiAtRUlPOworCQkJcmV0dXJuIC1FVUNMRUFOOwogCQl9CiAKIAkJLyoKQEAgLTYwNCwx MCArNjAwLDE0IEBAIHN0YXRpYyBub2lubGluZSBpbnQgY2hlY2tfbGVhZihzdHJ1Y3QgYnRyZnNf cm9vdCAqcm9vdCwKIAkJICogaXRlbSBkYXRhIHN0YXJ0cyBhdCB0aGUgZW5kIG9mIHRoZSBsZWFm IGFuZCBncm93cyB0b3dhcmRzIHRoZQogCQkgKiBmcm9udC4KIAkJICovCi0JCWlmIChidHJmc19p dGVtX29mZnNldF9ucihsZWFmLCBzbG90KSAhPQotCQkJYnRyZnNfaXRlbV9lbmRfbnIobGVhZiwg c2xvdCArIDEpKSB7CisJCWlmIChzbG90ID09IDApCisJCQlpdGVtX2VuZF9leHBlY3RlZCA9IEJU UkZTX0xFQUZfREFUQV9TSVpFKHJvb3QpOworCQllbHNlCisJCQlpdGVtX2VuZF9leHBlY3RlZCA9 IGJ0cmZzX2l0ZW1fb2Zmc2V0X25yKGxlYWYsCisJCQkJCQkJCSBzbG90IC0gMSk7CisJCWlmIChi dHJmc19pdGVtX2VuZF9ucihsZWFmLCBzbG90KSAhPSBpdGVtX2VuZF9leHBlY3RlZCkgewogCQkJ Q09SUlVQVCgic2xvdCBvZmZzZXQgYmFkIiwgbGVhZiwgcm9vdCwgc2xvdCk7Ci0JCQlyZXR1cm4g LUVJTzsKKwkJCXJldHVybiAtRVVDTEVBTjsKIAkJfQogCiAJCS8qCkBAIC02MTgsOCArNjE4LDEy IEBAIHN0YXRpYyBub2lubGluZSBpbnQgY2hlY2tfbGVhZihzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9v dCwKIAkJaWYgKGJ0cmZzX2l0ZW1fZW5kX25yKGxlYWYsIHNsb3QpID4KIAkJICAgIEJUUkZTX0xF QUZfREFUQV9TSVpFKHJvb3QpKSB7CiAJCQlDT1JSVVBUKCJzbG90IGVuZCBvdXRzaWRlIG9mIGxl YWYiLCBsZWFmLCByb290LCBzbG90KTsKLQkJCXJldHVybiAtRUlPOworCQkJcmV0dXJuIC1FVUNM RUFOOwogCQl9CisKKwkJcHJldl9rZXkub2JqZWN0aWQgPSBrZXkub2JqZWN0aWQ7CisJCXByZXZf a2V5LnR5cGUgPSBrZXkudHlwZTsKKwkJcHJldl9rZXkub2Zmc2V0ID0ga2V5Lm9mZnNldDsKIAl9 CiAKIAlyZXR1cm4gMDsKLS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAg ICAgICAgICAgICAgICAgICAgICBDb2RldGhpbmsgTHRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5j by51ay8gICAgICAgICAgICAgICAgIERhbGUgSG91c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBL aW5nZG9tCgoKRnJvbSAwOTg3ZmRlMDFhOGYxNTI1NjNhNGFjNjg2NjAyNjc0ZmZkYWFiMjE2IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBRdSBXZW5ydW8gPHF1d2VucnVvLmJ0cmZzQGdt eC5jb20+CkRhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTY6NTc6NTcgKzA5MDAKU3ViamVjdDogW1BB VENIIDE2LzMxXSBidHJmczogQ2hlY2sgaWYgaXRlbSBwb2ludGVyIG92ZXJsYXBzIHdpdGggdGhl IGl0ZW0KIGl0c2VsZgoKY29tbWl0IDdmNDNkNGFmZmIyYTI1NGQ0MjFhYjIwYjBjZjY1YWMyNTY5 OTA5ZmIgdXBzdHJlYW0uCgpGdW5jdGlvbiBjaGVja19sZWFmKCkgY2hlY2tzIGlmIGFueSBpdGVt IHBvaW50ZXIgcG9pbnRzIG91dHNpZGUgb2YgdGhlCmxlYWYsIGJ1dCBpdCBkb2Vzbid0IGNoZWNr IGlmIHRoZSBwb2ludGVyIG92ZXJsYXBzIHdpdGggdGhlIGl0ZW0gaXRzZWxmLgoKTm9ybWFsbHkg b25seSB0aGUgbGFzdCBpdGVtIG1heSBiZSB0aGUgdmljdGltLCBidXQgYWRkaW5nIHN1Y2ggY2hl Y2sgaXMKbmV2ZXIgYSBiYWQgaWRlYSBhbnl3YXkuCgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8g PHF1d2VucnVvLmJ0cmZzQGdteC5jb20+ClJldmlld2VkLWJ5OiBOaWtvbGF5IEJvcmlzb3YgPG5i b3Jpc292QHN1c2UuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2Uu Y29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25l ZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgot LS0KIGZzL2J0cmZzL2Rpc2staW8uYyB8IDcgKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDcgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2Rpc2staW8uYyBiL2ZzL2J0cmZzL2Rp c2staW8uYwppbmRleCBkNTEzNjUwZDFiNzcuLmQyNzI1YTg3OThmZSAxMDA2NDQKLS0tIGEvZnMv YnRyZnMvZGlzay1pby5jCisrKyBiL2ZzL2J0cmZzL2Rpc2staW8uYwpAQCAtNjIxLDYgKzYyMSwx MyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGNoZWNrX2xlYWYoc3RydWN0IGJ0cmZzX3Jvb3QgKnJv b3QsCiAJCQlyZXR1cm4gLUVVQ0xFQU47CiAJCX0KIAorCQkvKiBBbHNvIGNoZWNrIGlmIHRoZSBp dGVtIHBvaW50ZXIgb3ZlcmxhcHMgd2l0aCBidHJmcyBpdGVtLiAqLworCQlpZiAoYnRyZnNfaXRl bV9ucl9vZmZzZXQoc2xvdCkgKyBzaXplb2Yoc3RydWN0IGJ0cmZzX2l0ZW0pID4KKwkJICAgIGJ0 cmZzX2l0ZW1fcHRyX29mZnNldChsZWFmLCBzbG90KSkgeworCQkJQ09SUlVQVCgic2xvdCBvdmVy bGFwIHdpdGggaXRzIGRhdGEiLCBsZWFmLCByb290LCBzbG90KTsKKwkJCXJldHVybiAtRVVDTEVB TjsKKwkJfQorCiAJCXByZXZfa2V5Lm9iamVjdGlkID0ga2V5Lm9iamVjdGlkOwogCQlwcmV2X2tl eS50eXBlID0ga2V5LnR5cGU7CiAJCXByZXZfa2V5Lm9mZnNldCA9IGtleS5vZmZzZXQ7Ci0tIApC ZW4gSHV0Y2hpbmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIgICAgICAgICAgICAgICAgICAgICAgICAg Q29kZXRoaW5rIEx0ZApodHRwczovL3d3dy5jb2RldGhpbmsuY28udWsvICAgICAgICAgICAgICAg ICBEYWxlIEhvdXNlLCAzNSBEYWxlIFN0cmVldAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTWFuY2hlc3RlciwgTTEgMkhGLCBVbml0ZWQgS2luZ2RvbQoKCkZyb20gNTY2Y2U3 MTdkMmIzOWQ3ODZlZTY5NGZkNTlkNzkxNTk4OWJlYzE5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogUXUgV2VucnVvIDxxdXdlbnJ1by5idHJmc0BnbXguY29tPgpEYXRlOiBXZWQsIDIz IEF1ZyAyMDE3IDE2OjU3OjU4ICswOTAwClN1YmplY3Q6IFtQQVRDSCAxNy8zMV0gYnRyZnM6IEFk ZCBzYW5pdHkgY2hlY2sgZm9yIEVYVEVOVF9EQVRBIHdoZW4gcmVhZGluZwogb3V0IGxlYWYKCmNv bW1pdCA0MGMzYzQwOTQ3MzI0ZDlmNDBiZjQ3ODMwYzkyYzU5YTliYmFkZjRhIHVwc3RyZWFtLgoK QWRkIGV4dHJhIGNoZWNrcyBmb3IgaXRlbSB3aXRoIEVYVEVOVF9EQVRBIHR5cGUuICBUaGlzIGNo ZWNrcyB0aGUKZm9sbG93aW5nIHRoaW5nOgoKMCkgS2V5IG9mZnNldAogICBBbGwga2V5IG9mZnNl dHMgbXVzdCBiZSBhbGlnbmVkIHRvIHNlY3RvcnNpemUuCiAgIElubGluZSBleHRlbnQgbXVzdCBo YXZlIDAgZm9yIGtleSBvZmZzZXQuCgoxKSBJdGVtIHNpemUKICAgVW5jb21wcmVzc2VkIGlubGlu ZSBmaWxlIGV4dGVudCBzaXplIG11c3QgbWF0Y2ggaXRlbSBzaXplLgogICAoQ29tcHJlc3NlZCBp bmxpbmUgZmlsZSBleHRlbnQgaGFzIG5vIGluZm9ybWF0aW9uIGFib3V0IGl0cyBvbi1kaXNrIHNp emUuKQogICBSZWd1bGFyL3ByZWFsbG9jYXRlZCBmaWxlIGV4dGVudCBzaXplIG11c3QgYmUgYSBm aXhlZCB2YWx1ZS4KCjIpIEV2ZXJ5IG1lbWJlciBvZiByZWd1bGFyIGZpbGUgZXh0ZW50IGl0ZW0K ICAgSW5jbHVkaW5nIGFsaWdubWVudCBmb3IgYnl0ZW5yIGFuZCBvZmZzZXQsIHBvc3NpYmxlIHZh bHVlIGZvcgogICBjb21wcmVzc2lvbi9lbmNyeXB0aW9uL3R5cGUuCgozKSBUeXBlL2NvbXByZXNz aW9uL2VuY29kZSBtdXN0IGJlIG9uZSBvZiB0aGUgdmFsaWQgdmFsdWVzLgoKVGhpcyBzaG91bGQg YmUgdGhlIG1vc3QgY29tcHJlaGVuc2l2ZSBhbmQgc3RyaWN0IGNoZWNrIGluIHRoZSBjb250ZXh0 Cm9mIGJ0cmZzX2l0ZW0gZm9yIEVYVEVOVF9EQVRBLgoKU2lnbmVkLW9mZi1ieTogUXUgV2VucnVv IDxxdXdlbnJ1by5idHJmc0BnbXguY29tPgpSZXZpZXdlZC1ieTogTmlrb2xheSBCb3Jpc292IDxu Ym9yaXNvdkBzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNl LmNvbT4KWyBzd2l0Y2ggdG8gQlRSRlNfRklMRV9FWFRFTlRfVFlQRVMsIHNpbWlsYXIgdG8gd2hh dAogIEJUUkZTX0NPTVBSRVNTX1RZUEVTIGRvZXMgXQpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVy YmEgPGRzdGVyYmFAc3VzZS5jb20+Cltid2g6IEJhY2twb3J0ZWQgdG8gNC40OgogLSBVc2Ugcm9v dC0+c2VjdG9yc2l6ZSBpbnN0ZWFkIG9mIHJvb3QtPmZzX2luZm8tPnNlY3RvcnNpemUKIC0gQWRq dXN0IGZpbGVuYW1lXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdz QGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy9jdHJlZS5oICAgfCAgIDEgKwogZnMvYnRy ZnMvZGlzay1pby5jIHwgMTAzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspCgpkaWZm IC0tZ2l0IGEvZnMvYnRyZnMvY3RyZWUuaCBiL2ZzL2J0cmZzL2N0cmVlLmgKaW5kZXggZGJhZDlj OWY4ZDc4Li4zYTE2MmRkYmU4YjcgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2N0cmVlLmgKKysrIGIv ZnMvYnRyZnMvY3RyZWUuaApAQCAtODk3LDYgKzg5Nyw3IEBAIHN0cnVjdCBidHJmc19iYWxhbmNl X2l0ZW0gewogI2RlZmluZSBCVFJGU19GSUxFX0VYVEVOVF9JTkxJTkUgMAogI2RlZmluZSBCVFJG U19GSUxFX0VYVEVOVF9SRUcgMQogI2RlZmluZSBCVFJGU19GSUxFX0VYVEVOVF9QUkVBTExPQyAy CisjZGVmaW5lIEJUUkZTX0ZJTEVfRVhURU5UX1RZUEVTCTIKIAogc3RydWN0IGJ0cmZzX2ZpbGVf ZXh0ZW50X2l0ZW0gewogCS8qCmRpZmYgLS1naXQgYS9mcy9idHJmcy9kaXNrLWlvLmMgYi9mcy9i dHJmcy9kaXNrLWlvLmMKaW5kZXggZDI3MjVhODc5OGZlLi44MGViY2ZkZjYwNTEgMTAwNjQ0Ci0t LSBhL2ZzL2J0cmZzL2Rpc2staW8uYworKysgYi9mcy9idHJmcy9kaXNrLWlvLmMKQEAgLTUyOCw2 ICs1MjgsMTAwIEBAIHN0YXRpYyBpbnQgY2hlY2tfdHJlZV9ibG9ja19mc2lkKHN0cnVjdCBidHJm c19mc19pbmZvICpmc19pbmZvLAogCQkgICBidHJmc19oZWFkZXJfbGV2ZWwoZWIpID09IDAgPyAi bGVhZiIgOiAibm9kZSIsXAogCQkgICByZWFzb24sIGJ0cmZzX2hlYWRlcl9ieXRlbnIoZWIpLCBy b290LT5vYmplY3RpZCwgc2xvdCkKIAorc3RhdGljIGludCBjaGVja19leHRlbnRfZGF0YV9pdGVt KHN0cnVjdCBidHJmc19yb290ICpyb290LAorCQkJCSAgc3RydWN0IGV4dGVudF9idWZmZXIgKmxl YWYsCisJCQkJICBzdHJ1Y3QgYnRyZnNfa2V5ICprZXksIGludCBzbG90KQoreworCXN0cnVjdCBi dHJmc19maWxlX2V4dGVudF9pdGVtICpmaTsKKwl1MzIgc2VjdG9yc2l6ZSA9IHJvb3QtPnNlY3Rv cnNpemU7CisJdTMyIGl0ZW1fc2l6ZSA9IGJ0cmZzX2l0ZW1fc2l6ZV9ucihsZWFmLCBzbG90KTsK KworCWlmICghSVNfQUxJR05FRChrZXktPm9mZnNldCwgc2VjdG9yc2l6ZSkpIHsKKwkJQ09SUlVQ VCgidW5hbGlnbmVkIGtleSBvZmZzZXQgZm9yIGZpbGUgZXh0ZW50IiwKKwkJCWxlYWYsIHJvb3Qs IHNsb3QpOworCQlyZXR1cm4gLUVVQ0xFQU47CisJfQorCisJZmkgPSBidHJmc19pdGVtX3B0cihs ZWFmLCBzbG90LCBzdHJ1Y3QgYnRyZnNfZmlsZV9leHRlbnRfaXRlbSk7CisKKwlpZiAoYnRyZnNf ZmlsZV9leHRlbnRfdHlwZShsZWFmLCBmaSkgPiBCVFJGU19GSUxFX0VYVEVOVF9UWVBFUykgewor CQlDT1JSVVBUKCJpbnZhbGlkIGZpbGUgZXh0ZW50IHR5cGUiLCBsZWFmLCByb290LCBzbG90KTsK KwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKworCS8qCisJICogU3VwcG9ydCBmb3IgbmV3IGNvbXBy ZXNzaW9uL2VuY3JwdGlvbiBtdXN0IGludHJvZHVjZSBpbmNvbXBhdCBmbGFnLAorCSAqIGFuZCBt dXN0IGJlIGNhdWdodCBpbiBvcGVuX2N0cmVlKCkuCisJICovCisJaWYgKGJ0cmZzX2ZpbGVfZXh0 ZW50X2NvbXByZXNzaW9uKGxlYWYsIGZpKSA+IEJUUkZTX0NPTVBSRVNTX1RZUEVTKSB7CisJCUNP UlJVUFQoImludmFsaWQgZmlsZSBleHRlbnQgY29tcHJlc3Npb24iLCBsZWFmLCByb290LCBzbG90 KTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKwlpZiAoYnRyZnNfZmlsZV9leHRlbnRfZW5jcnlw dGlvbihsZWFmLCBmaSkpIHsKKwkJQ09SUlVQVCgiaW52YWxpZCBmaWxlIGV4dGVudCBlbmNyeXB0 aW9uIiwgbGVhZiwgcm9vdCwgc2xvdCk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisJaWYgKGJ0 cmZzX2ZpbGVfZXh0ZW50X3R5cGUobGVhZiwgZmkpID09IEJUUkZTX0ZJTEVfRVhURU5UX0lOTElO RSkgeworCQkvKiBJbmxpbmUgZXh0ZW50IG11c3QgaGF2ZSAwIGFzIGtleSBvZmZzZXQgKi8KKwkJ aWYgKGtleS0+b2Zmc2V0KSB7CisJCQlDT1JSVVBUKCJpbmxpbmUgZXh0ZW50IGhhcyBub24temVy byBrZXkgb2Zmc2V0IiwKKwkJCQlsZWFmLCByb290LCBzbG90KTsKKwkJCXJldHVybiAtRVVDTEVB TjsKKwkJfQorCisJCS8qIENvbXByZXNzZWQgaW5saW5lIGV4dGVudCBoYXMgbm8gb24tZGlzayBz aXplLCBza2lwIGl0ICovCisJCWlmIChidHJmc19maWxlX2V4dGVudF9jb21wcmVzc2lvbihsZWFm LCBmaSkgIT0KKwkJICAgIEJUUkZTX0NPTVBSRVNTX05PTkUpCisJCQlyZXR1cm4gMDsKKworCQkv KiBVbmNvbXByZXNzZWQgaW5saW5lIGV4dGVudCBzaXplIG11c3QgbWF0Y2ggaXRlbSBzaXplICov CisJCWlmIChpdGVtX3NpemUgIT0gQlRSRlNfRklMRV9FWFRFTlRfSU5MSU5FX0RBVEFfU1RBUlQg KworCQkgICAgYnRyZnNfZmlsZV9leHRlbnRfcmFtX2J5dGVzKGxlYWYsIGZpKSkgeworCQkJQ09S UlVQVCgicGxhaW50ZXh0IGlubGluZSBleHRlbnQgaGFzIGludmFsaWQgc2l6ZSIsCisJCQkJbGVh Ziwgcm9vdCwgc2xvdCk7CisJCQlyZXR1cm4gLUVVQ0xFQU47CisJCX0KKwkJcmV0dXJuIDA7CisJ fQorCisJLyogUmVndWxhciBvciBwcmVhbGxvY2F0ZWQgZXh0ZW50IGhhcyBmaXhlZCBpdGVtIHNp emUgKi8KKwlpZiAoaXRlbV9zaXplICE9IHNpemVvZigqZmkpKSB7CisJCUNPUlJVUFQoCisJCSJy ZWdsdWFyIG9yIHByZWFsbG9jYXRlZCBleHRlbnQgZGF0YSBpdGVtIHNpemUgaXMgaW52YWxpZCIs CisJCQlsZWFmLCByb290LCBzbG90KTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKwlpZiAoIUlT X0FMSUdORUQoYnRyZnNfZmlsZV9leHRlbnRfcmFtX2J5dGVzKGxlYWYsIGZpKSwgc2VjdG9yc2l6 ZSkgfHwKKwkgICAgIUlTX0FMSUdORUQoYnRyZnNfZmlsZV9leHRlbnRfZGlza19ieXRlbnIobGVh ZiwgZmkpLCBzZWN0b3JzaXplKSB8fAorCSAgICAhSVNfQUxJR05FRChidHJmc19maWxlX2V4dGVu dF9kaXNrX251bV9ieXRlcyhsZWFmLCBmaSksIHNlY3RvcnNpemUpIHx8CisJICAgICFJU19BTElH TkVEKGJ0cmZzX2ZpbGVfZXh0ZW50X29mZnNldChsZWFmLCBmaSksIHNlY3RvcnNpemUpIHx8CisJ ICAgICFJU19BTElHTkVEKGJ0cmZzX2ZpbGVfZXh0ZW50X251bV9ieXRlcyhsZWFmLCBmaSksIHNl Y3RvcnNpemUpKSB7CisJCUNPUlJVUFQoCisJCSJyZWd1bGFyIG9yIHByZWFsbG9jYXRlZCBleHRl bnQgZGF0YSBpdGVtIGhhcyB1bmFsaWduZWQgdmFsdWUiLAorCQkJbGVhZiwgcm9vdCwgc2xvdCk7 CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIENvbW1v biBwb2ludCB0byBzd2l0Y2ggdGhlIGl0ZW0tc3BlY2lmaWMgdmFsaWRhdGlvbi4KKyAqLworc3Rh dGljIGludCBjaGVja19sZWFmX2l0ZW0oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCisJCQkgICBz dHJ1Y3QgZXh0ZW50X2J1ZmZlciAqbGVhZiwKKwkJCSAgIHN0cnVjdCBidHJmc19rZXkgKmtleSwg aW50IHNsb3QpCit7CisJaW50IHJldCA9IDA7CisKKwlzd2l0Y2ggKGtleS0+dHlwZSkgeworCWNh c2UgQlRSRlNfRVhURU5UX0RBVEFfS0VZOgorCQlyZXQgPSBjaGVja19leHRlbnRfZGF0YV9pdGVt KHJvb3QsIGxlYWYsIGtleSwgc2xvdCk7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gcmV0OworfQor CiBzdGF0aWMgbm9pbmxpbmUgaW50IGNoZWNrX2xlYWYoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3Qs CiAJCQkgICAgICAgc3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYpCiB7CkBAIC01ODMsOSArNjc3 LDEzIEBAIHN0YXRpYyBub2lubGluZSBpbnQgY2hlY2tfbGVhZihzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCwKIAkgKiAxKSBrZXkgb3JkZXIKIAkgKiAyKSBpdGVtIG9mZnNldCBhbmQgc2l6ZQogCSAq ICAgIE5vIG92ZXJsYXAsIG5vIGhvbGUsIGFsbCBpbnNpZGUgdGhlIGxlYWYuCisJICogMykgaXRl bSBjb250ZW50CisJICogICAgSWYgcG9zc2libGUsIGRvIGNvbXByZWhlbnNpdmUgc2FuaXR5IGNo ZWNrLgorCSAqICAgIE5PVEU6IEFsbCBjaGVja3MgbXVzdCBvbmx5IHJlbHkgb24gdGhlIGl0ZW0g ZGF0YSBpdHNlbGYuCiAJICovCiAJZm9yIChzbG90ID0gMDsgc2xvdCA8IG5yaXRlbXM7IHNsb3Qr KykgewogCQl1MzIgaXRlbV9lbmRfZXhwZWN0ZWQ7CisJCWludCByZXQ7CiAKIAkJYnRyZnNfaXRl bV9rZXlfdG9fY3B1KGxlYWYsICZrZXksIHNsb3QpOwogCkBAIC02MjgsNiArNzI2LDExIEBAIHN0 YXRpYyBub2lubGluZSBpbnQgY2hlY2tfbGVhZihzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwKIAkJ CXJldHVybiAtRVVDTEVBTjsKIAkJfQogCisJCS8qIENoZWNrIGlmIHRoZSBpdGVtIHNpemUgYW5k IGNvbnRlbnQgbWVldCBvdGhlciBjcml0ZXJpYSAqLworCQlyZXQgPSBjaGVja19sZWFmX2l0ZW0o cm9vdCwgbGVhZiwgJmtleSwgc2xvdCk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsK KwogCQlwcmV2X2tleS5vYmplY3RpZCA9IGtleS5vYmplY3RpZDsKIAkJcHJldl9rZXkudHlwZSA9 IGtleS50eXBlOwogCQlwcmV2X2tleS5vZmZzZXQgPSBrZXkub2Zmc2V0OwotLSAKQmVuIEh1dGNo aW5ncywgU29mdHdhcmUgRGV2ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGlu ayBMdGQKaHR0cHM6Ly93d3cuY29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBI b3VzZSwgMzUgRGFsZSBTdHJlZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1hbmNoZXN0ZXIsIE0xIDJIRiwgVW5pdGVkIEtpbmdkb20KCgpGcm9tIGE4NjQ4NzYzNWM5ZDk3 NDlmODkwNjFhZjg2M2RlNjBlNTZmODZkMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IFF1IFdlbnJ1byA8cXV3ZW5ydW8uYnRyZnNAZ214LmNvbT4KRGF0ZTogV2VkLCAyMyBBdWcgMjAx NyAxNjo1Nzo1OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggMTgvMzFdIGJ0cmZzOiBBZGQgY2hlY2tl ciBmb3IgRVhURU5UX0NTVU0KCmNvbW1pdCA0Yjg2NWNhYjk2ZmUyYTMwZWQ1MTJjZjY2N2IzNTRi ZDI5MWIzYjBhIHVwc3RyZWFtLgoKRVhURU5UX0NTVU0gY2hlY2tlciBpcyBhIHJlbGF0aXZlbHkg ZWFzeSBvbmUsIG9ubHkgbmVlZHMgdG8gY2hlY2s6CgoxKSBPYmplY3RpZAogICBGaXhlZCB0byBC VFJGU19FWFRFTlRfQ1NVTV9PQkpFQ1RJRAoKMikgS2V5IG9mZnNldCBhbGlnbm1lbnQKICAgTXVz dCBiZSBhbGlnbmVkIHRvIHNlY3RvcnNpemUKCjMpIEl0ZW0gc2l6ZSBhbGlnbmVkbWVudAogICBN dXN0IGJlIGFsaWduZWQgdG8gY3N1bSBzaXplCgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8gPHF1 d2VucnVvLmJ0cmZzQGdteC5jb20+ClJldmlld2VkLWJ5OiBOaWtvbGF5IEJvcmlzb3YgPG5ib3Jp c292QHN1c2UuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29t PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+Cltid2g6IEJh Y2twb3J0ZWQgdG8gNC40OiBVc2Ugcm9vdC0+c2VjdG9yc2l6ZSBpbnN0ZWFkIG9mCiByb290LT5m c19pbmZvLT5zZWN0b3JzaXplXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0 Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy9kaXNrLWlvLmMgfCAyNCArKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvZnMvYnRyZnMvZGlzay1pby5jIGIvZnMvYnRyZnMvZGlzay1pby5jCmluZGV4 IDgwZWJjZmRmNjA1MS4uZTFhYzRiOGRlMjUxIDEwMDY0NAotLS0gYS9mcy9idHJmcy9kaXNrLWlv LmMKKysrIGIvZnMvYnRyZnMvZGlzay1pby5jCkBAIC02MDUsNiArNjA1LDI3IEBAIHN0YXRpYyBp bnQgY2hlY2tfZXh0ZW50X2RhdGFfaXRlbShzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIGludCBjaGVja19jc3VtX2l0ZW0oc3RydWN0IGJ0cmZzX3Jvb3Qg KnJvb3QsIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmLAorCQkJICAgc3RydWN0IGJ0cmZzX2tl eSAqa2V5LCBpbnQgc2xvdCkKK3sKKwl1MzIgc2VjdG9yc2l6ZSA9IHJvb3QtPnNlY3RvcnNpemU7 CisJdTMyIGNzdW1zaXplID0gYnRyZnNfc3VwZXJfY3N1bV9zaXplKHJvb3QtPmZzX2luZm8tPnN1 cGVyX2NvcHkpOworCisJaWYgKGtleS0+b2JqZWN0aWQgIT0gQlRSRlNfRVhURU5UX0NTVU1fT0JK RUNUSUQpIHsKKwkJQ09SUlVQVCgiaW52YWxpZCBvYmplY3RpZCBmb3IgY3N1bSBpdGVtIiwgbGVh Ziwgcm9vdCwgc2xvdCk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisJaWYgKCFJU19BTElHTkVE KGtleS0+b2Zmc2V0LCBzZWN0b3JzaXplKSkgeworCQlDT1JSVVBUKCJ1bmFsaWduZWQga2V5IG9m ZnNldCBmb3IgY3N1bSBpdGVtIiwgbGVhZiwgcm9vdCwgc2xvdCk7CisJCXJldHVybiAtRVVDTEVB TjsKKwl9CisJaWYgKCFJU19BTElHTkVEKGJ0cmZzX2l0ZW1fc2l6ZV9ucihsZWFmLCBzbG90KSwg Y3N1bXNpemUpKSB7CisJCUNPUlJVUFQoInVuYWxpZ25lZCBjc3VtIGl0ZW0gc2l6ZSIsIGxlYWYs IHJvb3QsIHNsb3QpOworCQlyZXR1cm4gLUVVQ0xFQU47CisJfQorCXJldHVybiAwOworfQorCiAv KgogICogQ29tbW9uIHBvaW50IHRvIHN3aXRjaCB0aGUgaXRlbS1zcGVjaWZpYyB2YWxpZGF0aW9u LgogICovCkBAIC02MTgsNiArNjM5LDkgQEAgc3RhdGljIGludCBjaGVja19sZWFmX2l0ZW0oc3Ry dWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJY2FzZSBCVFJGU19FWFRFTlRfREFUQV9LRVk6CiAJCXJl dCA9IGNoZWNrX2V4dGVudF9kYXRhX2l0ZW0ocm9vdCwgbGVhZiwga2V5LCBzbG90KTsKIAkJYnJl YWs7CisJY2FzZSBCVFJGU19FWFRFTlRfQ1NVTV9LRVk6CisJCXJldCA9IGNoZWNrX2NzdW1faXRl bShyb290LCBsZWFmLCBrZXksIHNsb3QpOworCQlicmVhazsKIAl9CiAJcmV0dXJuIHJldDsKIH0K LS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAg ICAgICBDb2RldGhpbmsgTHRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAg ICAgICAgIERhbGUgSG91c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNYW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSBj MGNlNTExZjY4YTE1MjEwYThhNGVhODQ1MGU2NTk2YTYyZDkwMWQ1IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBRdSBXZW5ydW8gPHF1d2VucnVvLmJ0cmZzQGdteC5jb20+CkRhdGU6IE1v biwgOSBPY3QgMjAxNyAwMTo1MTowMiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMTkvMzFdIGJ0cmZz OiBNb3ZlIGxlYWYgYW5kIG5vZGUgdmFsaWRhdGlvbiBjaGVja2VyIHRvCiB0cmVlLWNoZWNrZXIu YwoKY29tbWl0IDU1N2VhNWRkMDAzZDM3MTUzNmY2YjRlOGY3YzgyMDlhMmI2ZmQ0ZTMgdXBzdHJl YW0uCgpJdCdzIG5vIGRvdWJ0IHRoZSBjb21wcmVoZW5zaXZlIHRyZWUgYmxvY2sgY2hlY2tlciB3 aWxsIGJlY29tZSBsYXJnZXIsCnNvIG1vdmluZyB0aGVtIGludG8gdGhlaXIgb3duIGZpbGVzIGlz IHF1aXRlIHJlYXNvbmFibGUuCgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8gPHF1d2VucnVvLmJ0 cmZzQGdteC5jb20+Clsgd29yZGluZyBhZGp1c3RtZW50cyBdClNpZ25lZC1vZmYtYnk6IERhdmlk IFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KW2J3aDogQmFja3BvcnRlZCB0byA0LjQ6CiAtIFRo ZSBtb3ZlZCBjb2RlIGlzIHNsaWdodGx5IGRpZmZlcmVudAogLSBBZGp1c3QgY29udGV4dF0KU2ln bmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+ Ci0tLQogZnMvYnRyZnMvTWFrZWZpbGUgICAgICAgfCAgIDIgKy0KIGZzL2J0cmZzL2Rpc2staW8u YyAgICAgIHwgMjg0ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBmcy9idHJmcy90cmVlLWNoZWNrZXIuYyB8IDMwOSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGZzL2J0cmZzL3RyZWUtY2hlY2tlci5oIHwgIDI2ICsr KysKIDQgZmlsZXMgY2hhbmdlZCwgMzQwIGluc2VydGlvbnMoKyksIDI4MSBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBmcy9idHJmcy90cmVlLWNoZWNrZXIuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGZzL2J0cmZzL3RyZWUtY2hlY2tlci5oCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvTWFr ZWZpbGUgYi9mcy9idHJmcy9NYWtlZmlsZQppbmRleCA2ZDFkMGI5M2IxYWEuLmM3OTJkZjgyNmUx MiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvTWFrZWZpbGUKKysrIGIvZnMvYnRyZnMvTWFrZWZpbGUK QEAgLTksNyArOSw3IEBAIGJ0cmZzLXkgKz0gc3VwZXIubyBjdHJlZS5vIGV4dGVudC10cmVlLm8g cHJpbnQtdHJlZS5vIHJvb3QtdHJlZS5vIGRpci1pdGVtLm8gXAogCSAgIGV4cG9ydC5vIHRyZWUt bG9nLm8gZnJlZS1zcGFjZS1jYWNoZS5vIHpsaWIubyBsem8ubyBcCiAJICAgY29tcHJlc3Npb24u byBkZWxheWVkLXJlZi5vIHJlbG9jYXRpb24ubyBkZWxheWVkLWlub2RlLm8gc2NydWIubyBcCiAJ ICAgcmVhZGEubyBiYWNrcmVmLm8gdWxpc3QubyBxZ3JvdXAubyBzZW5kLm8gZGV2LXJlcGxhY2Uu byByYWlkNTYubyBcCi0JICAgdXVpZC10cmVlLm8gcHJvcHMubyBoYXNoLm8KKwkgICB1dWlkLXRy ZWUubyBwcm9wcy5vIGhhc2gubyB0cmVlLWNoZWNrZXIubwogCiBidHJmcy0kKENPTkZJR19CVFJG U19GU19QT1NJWF9BQ0wpICs9IGFjbC5vCiBidHJmcy0kKENPTkZJR19CVFJGU19GU19DSEVDS19J TlRFR1JJVFkpICs9IGNoZWNrLWludGVncml0eS5vCmRpZmYgLS1naXQgYS9mcy9idHJmcy9kaXNr LWlvLmMgYi9mcy9idHJmcy9kaXNrLWlvLmMKaW5kZXggZTFhYzRiOGRlMjUxLi4yYTkzOTMwZWMx MDMgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2Rpc2staW8uYworKysgYi9mcy9idHJmcy9kaXNrLWlv LmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJyYWlkNTYuaCIKICNpbmNsdWRlICJzeXNm cy5oIgogI2luY2x1ZGUgInFncm91cC5oIgorI2luY2x1ZGUgInRyZWUtY2hlY2tlci5oIgogCiAj aWZkZWYgQ09ORklHX1g4NgogI2luY2x1ZGUgPGFzbS9jcHVmZWF0dXJlLmg+CkBAIC01MjIsMjgz ICs1MjMsNiBAQCBzdGF0aWMgaW50IGNoZWNrX3RyZWVfYmxvY2tfZnNpZChzdHJ1Y3QgYnRyZnNf ZnNfaW5mbyAqZnNfaW5mbywKIAlyZXR1cm4gcmV0OwogfQogCi0jZGVmaW5lIENPUlJVUFQocmVh c29uLCBlYiwgcm9vdCwgc2xvdCkJCQkJXAotCWJ0cmZzX2NyaXQocm9vdC0+ZnNfaW5mbywgImNv cnJ1cHQgJXMsICVzOiBibG9jaz0lbGx1LCIJXAotCQkgICAiIHJvb3Q9JWxsdSwgc2xvdD0lZCIs CQkJXAotCQkgICBidHJmc19oZWFkZXJfbGV2ZWwoZWIpID09IDAgPyAibGVhZiIgOiAibm9kZSIs XAotCQkgICByZWFzb24sIGJ0cmZzX2hlYWRlcl9ieXRlbnIoZWIpLCByb290LT5vYmplY3RpZCwg c2xvdCkKLQotc3RhdGljIGludCBjaGVja19leHRlbnRfZGF0YV9pdGVtKHN0cnVjdCBidHJmc19y b290ICpyb290LAotCQkJCSAgc3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYsCi0JCQkJICBzdHJ1 Y3QgYnRyZnNfa2V5ICprZXksIGludCBzbG90KQotewotCXN0cnVjdCBidHJmc19maWxlX2V4dGVu dF9pdGVtICpmaTsKLQl1MzIgc2VjdG9yc2l6ZSA9IHJvb3QtPnNlY3RvcnNpemU7Ci0JdTMyIGl0 ZW1fc2l6ZSA9IGJ0cmZzX2l0ZW1fc2l6ZV9ucihsZWFmLCBzbG90KTsKLQotCWlmICghSVNfQUxJ R05FRChrZXktPm9mZnNldCwgc2VjdG9yc2l6ZSkpIHsKLQkJQ09SUlVQVCgidW5hbGlnbmVkIGtl eSBvZmZzZXQgZm9yIGZpbGUgZXh0ZW50IiwKLQkJCWxlYWYsIHJvb3QsIHNsb3QpOwotCQlyZXR1 cm4gLUVVQ0xFQU47Ci0JfQotCi0JZmkgPSBidHJmc19pdGVtX3B0cihsZWFmLCBzbG90LCBzdHJ1 Y3QgYnRyZnNfZmlsZV9leHRlbnRfaXRlbSk7Ci0KLQlpZiAoYnRyZnNfZmlsZV9leHRlbnRfdHlw ZShsZWFmLCBmaSkgPiBCVFJGU19GSUxFX0VYVEVOVF9UWVBFUykgewotCQlDT1JSVVBUKCJpbnZh bGlkIGZpbGUgZXh0ZW50IHR5cGUiLCBsZWFmLCByb290LCBzbG90KTsKLQkJcmV0dXJuIC1FVUNM RUFOOwotCX0KLQotCS8qCi0JICogU3VwcG9ydCBmb3IgbmV3IGNvbXByZXNzaW9uL2VuY3JwdGlv biBtdXN0IGludHJvZHVjZSBpbmNvbXBhdCBmbGFnLAotCSAqIGFuZCBtdXN0IGJlIGNhdWdodCBp biBvcGVuX2N0cmVlKCkuCi0JICovCi0JaWYgKGJ0cmZzX2ZpbGVfZXh0ZW50X2NvbXByZXNzaW9u KGxlYWYsIGZpKSA+IEJUUkZTX0NPTVBSRVNTX1RZUEVTKSB7Ci0JCUNPUlJVUFQoImludmFsaWQg ZmlsZSBleHRlbnQgY29tcHJlc3Npb24iLCBsZWFmLCByb290LCBzbG90KTsKLQkJcmV0dXJuIC1F VUNMRUFOOwotCX0KLQlpZiAoYnRyZnNfZmlsZV9leHRlbnRfZW5jcnlwdGlvbihsZWFmLCBmaSkp IHsKLQkJQ09SUlVQVCgiaW52YWxpZCBmaWxlIGV4dGVudCBlbmNyeXB0aW9uIiwgbGVhZiwgcm9v dCwgc2xvdCk7Ci0JCXJldHVybiAtRVVDTEVBTjsKLQl9Ci0JaWYgKGJ0cmZzX2ZpbGVfZXh0ZW50 X3R5cGUobGVhZiwgZmkpID09IEJUUkZTX0ZJTEVfRVhURU5UX0lOTElORSkgewotCQkvKiBJbmxp bmUgZXh0ZW50IG11c3QgaGF2ZSAwIGFzIGtleSBvZmZzZXQgKi8KLQkJaWYgKGtleS0+b2Zmc2V0 KSB7Ci0JCQlDT1JSVVBUKCJpbmxpbmUgZXh0ZW50IGhhcyBub24temVybyBrZXkgb2Zmc2V0IiwK LQkJCQlsZWFmLCByb290LCBzbG90KTsKLQkJCXJldHVybiAtRVVDTEVBTjsKLQkJfQotCi0JCS8q IENvbXByZXNzZWQgaW5saW5lIGV4dGVudCBoYXMgbm8gb24tZGlzayBzaXplLCBza2lwIGl0ICov Ci0JCWlmIChidHJmc19maWxlX2V4dGVudF9jb21wcmVzc2lvbihsZWFmLCBmaSkgIT0KLQkJICAg IEJUUkZTX0NPTVBSRVNTX05PTkUpCi0JCQlyZXR1cm4gMDsKLQotCQkvKiBVbmNvbXByZXNzZWQg aW5saW5lIGV4dGVudCBzaXplIG11c3QgbWF0Y2ggaXRlbSBzaXplICovCi0JCWlmIChpdGVtX3Np emUgIT0gQlRSRlNfRklMRV9FWFRFTlRfSU5MSU5FX0RBVEFfU1RBUlQgKwotCQkgICAgYnRyZnNf ZmlsZV9leHRlbnRfcmFtX2J5dGVzKGxlYWYsIGZpKSkgewotCQkJQ09SUlVQVCgicGxhaW50ZXh0 IGlubGluZSBleHRlbnQgaGFzIGludmFsaWQgc2l6ZSIsCi0JCQkJbGVhZiwgcm9vdCwgc2xvdCk7 Ci0JCQlyZXR1cm4gLUVVQ0xFQU47Ci0JCX0KLQkJcmV0dXJuIDA7Ci0JfQotCi0JLyogUmVndWxh ciBvciBwcmVhbGxvY2F0ZWQgZXh0ZW50IGhhcyBmaXhlZCBpdGVtIHNpemUgKi8KLQlpZiAoaXRl bV9zaXplICE9IHNpemVvZigqZmkpKSB7Ci0JCUNPUlJVUFQoCi0JCSJyZWdsdWFyIG9yIHByZWFs bG9jYXRlZCBleHRlbnQgZGF0YSBpdGVtIHNpemUgaXMgaW52YWxpZCIsCi0JCQlsZWFmLCByb290 LCBzbG90KTsKLQkJcmV0dXJuIC1FVUNMRUFOOwotCX0KLQlpZiAoIUlTX0FMSUdORUQoYnRyZnNf ZmlsZV9leHRlbnRfcmFtX2J5dGVzKGxlYWYsIGZpKSwgc2VjdG9yc2l6ZSkgfHwKLQkgICAgIUlT X0FMSUdORUQoYnRyZnNfZmlsZV9leHRlbnRfZGlza19ieXRlbnIobGVhZiwgZmkpLCBzZWN0b3Jz aXplKSB8fAotCSAgICAhSVNfQUxJR05FRChidHJmc19maWxlX2V4dGVudF9kaXNrX251bV9ieXRl cyhsZWFmLCBmaSksIHNlY3RvcnNpemUpIHx8Ci0JICAgICFJU19BTElHTkVEKGJ0cmZzX2ZpbGVf ZXh0ZW50X29mZnNldChsZWFmLCBmaSksIHNlY3RvcnNpemUpIHx8Ci0JICAgICFJU19BTElHTkVE KGJ0cmZzX2ZpbGVfZXh0ZW50X251bV9ieXRlcyhsZWFmLCBmaSksIHNlY3RvcnNpemUpKSB7Ci0J CUNPUlJVUFQoCi0JCSJyZWd1bGFyIG9yIHByZWFsbG9jYXRlZCBleHRlbnQgZGF0YSBpdGVtIGhh cyB1bmFsaWduZWQgdmFsdWUiLAotCQkJbGVhZiwgcm9vdCwgc2xvdCk7Ci0JCXJldHVybiAtRVVD TEVBTjsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBjaGVja19jc3VtX2l0ZW0o c3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmLAotCQkJ ICAgc3RydWN0IGJ0cmZzX2tleSAqa2V5LCBpbnQgc2xvdCkKLXsKLQl1MzIgc2VjdG9yc2l6ZSA9 IHJvb3QtPnNlY3RvcnNpemU7Ci0JdTMyIGNzdW1zaXplID0gYnRyZnNfc3VwZXJfY3N1bV9zaXpl KHJvb3QtPmZzX2luZm8tPnN1cGVyX2NvcHkpOwotCi0JaWYgKGtleS0+b2JqZWN0aWQgIT0gQlRS RlNfRVhURU5UX0NTVU1fT0JKRUNUSUQpIHsKLQkJQ09SUlVQVCgiaW52YWxpZCBvYmplY3RpZCBm b3IgY3N1bSBpdGVtIiwgbGVhZiwgcm9vdCwgc2xvdCk7Ci0JCXJldHVybiAtRVVDTEVBTjsKLQl9 Ci0JaWYgKCFJU19BTElHTkVEKGtleS0+b2Zmc2V0LCBzZWN0b3JzaXplKSkgewotCQlDT1JSVVBU KCJ1bmFsaWduZWQga2V5IG9mZnNldCBmb3IgY3N1bSBpdGVtIiwgbGVhZiwgcm9vdCwgc2xvdCk7 Ci0JCXJldHVybiAtRVVDTEVBTjsKLQl9Ci0JaWYgKCFJU19BTElHTkVEKGJ0cmZzX2l0ZW1fc2l6 ZV9ucihsZWFmLCBzbG90KSwgY3N1bXNpemUpKSB7Ci0JCUNPUlJVUFQoInVuYWxpZ25lZCBjc3Vt IGl0ZW0gc2l6ZSIsIGxlYWYsIHJvb3QsIHNsb3QpOwotCQlyZXR1cm4gLUVVQ0xFQU47Ci0JfQot CXJldHVybiAwOwotfQotCi0vKgotICogQ29tbW9uIHBvaW50IHRvIHN3aXRjaCB0aGUgaXRlbS1z cGVjaWZpYyB2YWxpZGF0aW9uLgotICovCi1zdGF0aWMgaW50IGNoZWNrX2xlYWZfaXRlbShzdHJ1 Y3QgYnRyZnNfcm9vdCAqcm9vdCwKLQkJCSAgIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmLAot CQkJICAgc3RydWN0IGJ0cmZzX2tleSAqa2V5LCBpbnQgc2xvdCkKLXsKLQlpbnQgcmV0ID0gMDsK LQotCXN3aXRjaCAoa2V5LT50eXBlKSB7Ci0JY2FzZSBCVFJGU19FWFRFTlRfREFUQV9LRVk6Ci0J CXJldCA9IGNoZWNrX2V4dGVudF9kYXRhX2l0ZW0ocm9vdCwgbGVhZiwga2V5LCBzbG90KTsKLQkJ YnJlYWs7Ci0JY2FzZSBCVFJGU19FWFRFTlRfQ1NVTV9LRVk6Ci0JCXJldCA9IGNoZWNrX2NzdW1f aXRlbShyb290LCBsZWFmLCBrZXksIHNsb3QpOwotCQlicmVhazsKLQl9Ci0JcmV0dXJuIHJldDsK LX0KLQotc3RhdGljIG5vaW5saW5lIGludCBjaGVja19sZWFmKHN0cnVjdCBidHJmc19yb290ICpy b290LAotCQkJICAgICAgIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmKQotewotCS8qIE5vIHZh bGlkIGtleSB0eXBlIGlzIDAsIHNvIGFsbCBrZXkgc2hvdWxkIGJlIGxhcmdlciB0aGFuIHRoaXMg a2V5ICovCi0Jc3RydWN0IGJ0cmZzX2tleSBwcmV2X2tleSA9IHswLCAwLCAwfTsKLQlzdHJ1Y3Qg YnRyZnNfa2V5IGtleTsKLQl1MzIgbnJpdGVtcyA9IGJ0cmZzX2hlYWRlcl9ucml0ZW1zKGxlYWYp OwotCWludCBzbG90OwotCi0JLyoKLQkgKiBFeHRlbnQgYnVmZmVycyBmcm9tIGEgcmVsb2NhdGlv biB0cmVlIGhhdmUgYSBvd25lciBmaWVsZCB0aGF0Ci0JICogY29ycmVzcG9uZHMgdG8gdGhlIHN1 YnZvbHVtZSB0cmVlIHRoZXkgYXJlIGJhc2VkIG9uLiBTbyBqdXN0IGZyb20gYW4KLQkgKiBleHRl bnQgYnVmZmVyIGFsb25lIHdlIGNhbiBub3QgZmluZCBvdXQgd2hhdCBpcyB0aGUgaWQgb2YgdGhl Ci0JICogY29ycmVzcG9uZGluZyBzdWJ2b2x1bWUgdHJlZSwgc28gd2UgY2FuIG5vdCBmaWd1cmUg b3V0IGlmIHRoZSBleHRlbnQKLQkgKiBidWZmZXIgY29ycmVzcG9uZHMgdG8gdGhlIHJvb3Qgb2Yg dGhlIHJlbG9jYXRpb24gdHJlZSBvciBub3QuIFNvIHNraXAKLQkgKiB0aGlzIGNoZWNrIGZvciBy ZWxvY2F0aW9uIHRyZWVzLgotCSAqLwotCWlmIChucml0ZW1zID09IDAgJiYgIWJ0cmZzX2hlYWRl cl9mbGFnKGxlYWYsIEJUUkZTX0hFQURFUl9GTEFHX1JFTE9DKSkgewotCQlzdHJ1Y3QgYnRyZnNf cm9vdCAqY2hlY2tfcm9vdDsKLQotCQlrZXkub2JqZWN0aWQgPSBidHJmc19oZWFkZXJfb3duZXIo bGVhZik7Ci0JCWtleS50eXBlID0gQlRSRlNfUk9PVF9JVEVNX0tFWTsKLQkJa2V5Lm9mZnNldCA9 ICh1NjQpLTE7Ci0KLQkJY2hlY2tfcm9vdCA9IGJ0cmZzX2dldF9mc19yb290KHJvb3QtPmZzX2lu Zm8sICZrZXksIGZhbHNlKTsKLQkJLyoKLQkJICogVGhlIG9ubHkgcmVhc29uIHdlIGFsc28gY2hl Y2sgTlVMTCBoZXJlIGlzIHRoYXQgZHVyaW5nCi0JCSAqIG9wZW5fY3RyZWUoKSBzb21lIHJvb3Rz IGhhcyBub3QgeWV0IGJlZW4gc2V0IHVwLgotCQkgKi8KLQkJaWYgKCFJU19FUlJfT1JfTlVMTChj aGVja19yb290KSkgewotCQkJc3RydWN0IGV4dGVudF9idWZmZXIgKmViOwotCi0JCQllYiA9IGJ0 cmZzX3Jvb3Rfbm9kZShjaGVja19yb290KTsKLQkJCS8qIGlmIGxlYWYgaXMgdGhlIHJvb3QsIHRo ZW4gaXQncyBmaW5lICovCi0JCQlpZiAobGVhZiAhPSBlYikgewotCQkJCUNPUlJVUFQoIm5vbi1y b290IGxlYWYncyBucml0ZW1zIGlzIDAiLAotCQkJCQlsZWFmLCBjaGVja19yb290LCAwKTsKLQkJ CQlmcmVlX2V4dGVudF9idWZmZXIoZWIpOwotCQkJCXJldHVybiAtRVVDTEVBTjsKLQkJCX0KLQkJ CWZyZWVfZXh0ZW50X2J1ZmZlcihlYik7Ci0JCX0KLQkJcmV0dXJuIDA7Ci0JfQotCi0JaWYgKG5y aXRlbXMgPT0gMCkKLQkJcmV0dXJuIDA7Ci0KLQkvKgotCSAqIENoZWNrIHRoZSBmb2xsb3dpbmcg dGhpbmdzIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGEgZ29vZCBsZWFmLCBhbmQKLQkgKiBsZWFmIHVz ZXJzIHdvbid0IG5lZWQgdG8gYm90aGVyIHdpdGggc2ltaWxhciBzYW5pdHkgY2hlY2tzOgotCSAq Ci0JICogMSkga2V5IG9yZGVyCi0JICogMikgaXRlbSBvZmZzZXQgYW5kIHNpemUKLQkgKiAgICBO byBvdmVybGFwLCBubyBob2xlLCBhbGwgaW5zaWRlIHRoZSBsZWFmLgotCSAqIDMpIGl0ZW0gY29u dGVudAotCSAqICAgIElmIHBvc3NpYmxlLCBkbyBjb21wcmVoZW5zaXZlIHNhbml0eSBjaGVjay4K LQkgKiAgICBOT1RFOiBBbGwgY2hlY2tzIG11c3Qgb25seSByZWx5IG9uIHRoZSBpdGVtIGRhdGEg aXRzZWxmLgotCSAqLwotCWZvciAoc2xvdCA9IDA7IHNsb3QgPCBucml0ZW1zOyBzbG90KyspIHsK LQkJdTMyIGl0ZW1fZW5kX2V4cGVjdGVkOwotCQlpbnQgcmV0OwotCi0JCWJ0cmZzX2l0ZW1fa2V5 X3RvX2NwdShsZWFmLCAma2V5LCBzbG90KTsKLQotCQkvKiBNYWtlIHN1cmUgdGhlIGtleXMgYXJl IGluIHRoZSByaWdodCBvcmRlciAqLwotCQlpZiAoYnRyZnNfY29tcF9jcHVfa2V5cygmcHJldl9r ZXksICZrZXkpID49IDApIHsKLQkJCUNPUlJVUFQoImJhZCBrZXkgb3JkZXIiLCBsZWFmLCByb290 LCBzbG90KTsKLQkJCXJldHVybiAtRVVDTEVBTjsKLQkJfQotCi0JCS8qCi0JCSAqIE1ha2Ugc3Vy ZSB0aGUgb2Zmc2V0IGFuZCBlbmRzIGFyZSByaWdodCwgcmVtZW1iZXIgdGhhdCB0aGUKLQkJICog aXRlbSBkYXRhIHN0YXJ0cyBhdCB0aGUgZW5kIG9mIHRoZSBsZWFmIGFuZCBncm93cyB0b3dhcmRz IHRoZQotCQkgKiBmcm9udC4KLQkJICovCi0JCWlmIChzbG90ID09IDApCi0JCQlpdGVtX2VuZF9l eHBlY3RlZCA9IEJUUkZTX0xFQUZfREFUQV9TSVpFKHJvb3QpOwotCQllbHNlCi0JCQlpdGVtX2Vu ZF9leHBlY3RlZCA9IGJ0cmZzX2l0ZW1fb2Zmc2V0X25yKGxlYWYsCi0JCQkJCQkJCSBzbG90IC0g MSk7Ci0JCWlmIChidHJmc19pdGVtX2VuZF9ucihsZWFmLCBzbG90KSAhPSBpdGVtX2VuZF9leHBl Y3RlZCkgewotCQkJQ09SUlVQVCgic2xvdCBvZmZzZXQgYmFkIiwgbGVhZiwgcm9vdCwgc2xvdCk7 Ci0JCQlyZXR1cm4gLUVVQ0xFQU47Ci0JCX0KLQotCQkvKgotCQkgKiBDaGVjayB0byBtYWtlIHN1 cmUgdGhhdCB3ZSBkb24ndCBwb2ludCBvdXRzaWRlIG9mIHRoZSBsZWFmLAotCQkgKiBqdXN0IGlu Y2FzZSBhbGwgdGhlIGl0ZW1zIGFyZSBjb25zaXN0ZW50IHRvIGVhY2hvdGhlciwgYnV0Ci0JCSAq IGFsbCBwb2ludCBvdXRzaWRlIG9mIHRoZSBsZWFmLgotCQkgKi8KLQkJaWYgKGJ0cmZzX2l0ZW1f ZW5kX25yKGxlYWYsIHNsb3QpID4KLQkJICAgIEJUUkZTX0xFQUZfREFUQV9TSVpFKHJvb3QpKSB7 Ci0JCQlDT1JSVVBUKCJzbG90IGVuZCBvdXRzaWRlIG9mIGxlYWYiLCBsZWFmLCByb290LCBzbG90 KTsKLQkJCXJldHVybiAtRVVDTEVBTjsKLQkJfQotCi0JCS8qIEFsc28gY2hlY2sgaWYgdGhlIGl0 ZW0gcG9pbnRlciBvdmVybGFwcyB3aXRoIGJ0cmZzIGl0ZW0uICovCi0JCWlmIChidHJmc19pdGVt X25yX29mZnNldChzbG90KSArIHNpemVvZihzdHJ1Y3QgYnRyZnNfaXRlbSkgPgotCQkgICAgYnRy ZnNfaXRlbV9wdHJfb2Zmc2V0KGxlYWYsIHNsb3QpKSB7Ci0JCQlDT1JSVVBUKCJzbG90IG92ZXJs YXAgd2l0aCBpdHMgZGF0YSIsIGxlYWYsIHJvb3QsIHNsb3QpOwotCQkJcmV0dXJuIC1FVUNMRUFO OwotCQl9Ci0KLQkJLyogQ2hlY2sgaWYgdGhlIGl0ZW0gc2l6ZSBhbmQgY29udGVudCBtZWV0IG90 aGVyIGNyaXRlcmlhICovCi0JCXJldCA9IGNoZWNrX2xlYWZfaXRlbShyb290LCBsZWFmLCAma2V5 LCBzbG90KTsKLQkJaWYgKHJldCA8IDApCi0JCQlyZXR1cm4gcmV0OwotCi0JCXByZXZfa2V5Lm9i amVjdGlkID0ga2V5Lm9iamVjdGlkOwotCQlwcmV2X2tleS50eXBlID0ga2V5LnR5cGU7Ci0JCXBy ZXZfa2V5Lm9mZnNldCA9IGtleS5vZmZzZXQ7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRp YyBpbnQgY2hlY2tfbm9kZShzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGV4dGVudF9i dWZmZXIgKm5vZGUpCi17Ci0JdW5zaWduZWQgbG9uZyBuciA9IGJ0cmZzX2hlYWRlcl9ucml0ZW1z KG5vZGUpOwotCXN0cnVjdCBidHJmc19rZXkga2V5LCBuZXh0X2tleTsKLQlpbnQgc2xvdDsKLQl1 NjQgYnl0ZW5yOwotCWludCByZXQgPSAwOwotCi0JaWYgKG5yID09IDAgfHwgbnIgPiBCVFJGU19O T0RFUFRSU19QRVJfQkxPQ0socm9vdCkpIHsKLQkJYnRyZnNfY3JpdChyb290LT5mc19pbmZvLAot CQkJICAgImNvcnJ1cHQgbm9kZTogYmxvY2sgJWxsdSByb290ICVsbHUgbnJpdGVtcyAlbHUiLAot CQkJICAgbm9kZS0+c3RhcnQsIHJvb3QtPm9iamVjdGlkLCBucik7Ci0JCXJldHVybiAtRUlPOwot CX0KLQotCWZvciAoc2xvdCA9IDA7IHNsb3QgPCBuciAtIDE7IHNsb3QrKykgewotCQlieXRlbnIg PSBidHJmc19ub2RlX2Jsb2NrcHRyKG5vZGUsIHNsb3QpOwotCQlidHJmc19ub2RlX2tleV90b19j cHUobm9kZSwgJmtleSwgc2xvdCk7Ci0JCWJ0cmZzX25vZGVfa2V5X3RvX2NwdShub2RlLCAmbmV4 dF9rZXksIHNsb3QgKyAxKTsKLQotCQlpZiAoIWJ5dGVucikgewotCQkJQ09SUlVQVCgiaW52YWxp ZCBpdGVtIHNsb3QiLCBub2RlLCByb290LCBzbG90KTsKLQkJCXJldCA9IC1FSU87Ci0JCQlnb3Rv IG91dDsKLQkJfQotCi0JCWlmIChidHJmc19jb21wX2NwdV9rZXlzKCZrZXksICZuZXh0X2tleSkg Pj0gMCkgewotCQkJQ09SUlVQVCgiYmFkIGtleSBvcmRlciIsIG5vZGUsIHJvb3QsIHNsb3QpOwot CQkJcmV0ID0gLUVJTzsKLQkJCWdvdG8gb3V0OwotCQl9Ci0JfQotb3V0OgotCXJldHVybiByZXQ7 Ci19Ci0KIHN0YXRpYyBpbnQgYnRyZWVfcmVhZHBhZ2VfZW5kX2lvX2hvb2soc3RydWN0IGJ0cmZz X2lvX2JpbyAqaW9fYmlvLAogCQkJCSAgICAgIHU2NCBwaHlfb2Zmc2V0LCBzdHJ1Y3QgcGFnZSAq cGFnZSwKIAkJCQkgICAgICB1NjQgc3RhcnQsIHU2NCBlbmQsIGludCBtaXJyb3IpCkBAIC04NjUs MTIgKzU4OSwxMiBAQCBzdGF0aWMgaW50IGJ0cmVlX3JlYWRwYWdlX2VuZF9pb19ob29rKHN0cnVj dCBidHJmc19pb19iaW8gKmlvX2JpbywKIAkgKiB0aGF0IHdlIGRvbid0IHRyeSBhbmQgcmVhZCB0 aGUgb3RoZXIgY29waWVzIG9mIHRoaXMgYmxvY2ssIGp1c3QKIAkgKiByZXR1cm4gLUVJTy4KIAkg Ki8KLQlpZiAoZm91bmRfbGV2ZWwgPT0gMCAmJiBjaGVja19sZWFmKHJvb3QsIGViKSkgeworCWlm IChmb3VuZF9sZXZlbCA9PSAwICYmIGJ0cmZzX2NoZWNrX2xlYWYocm9vdCwgZWIpKSB7CiAJCXNl dF9iaXQoRVhURU5UX0JVRkZFUl9DT1JSVVBULCAmZWItPmJmbGFncyk7CiAJCXJldCA9IC1FSU87 CiAJfQogCi0JaWYgKGZvdW5kX2xldmVsID4gMCAmJiBjaGVja19ub2RlKHJvb3QsIGViKSkKKwlp ZiAoZm91bmRfbGV2ZWwgPiAwICYmIGJ0cmZzX2NoZWNrX25vZGUocm9vdCwgZWIpKQogCQlyZXQg PSAtRUlPOwogCiAJaWYgKCFyZXQpCkBAIC00MTcyLDcgKzM4OTYsNyBAQCB2b2lkIGJ0cmZzX21h cmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBleHRlbnRfYnVmZmVyICpidWYpCiAJCQkJICAgICBidWYt PmxlbiwKIAkJCQkgICAgIHJvb3QtPmZzX2luZm8tPmRpcnR5X21ldGFkYXRhX2JhdGNoKTsKICNp ZmRlZiBDT05GSUdfQlRSRlNfRlNfQ0hFQ0tfSU5URUdSSVRZCi0JaWYgKGJ0cmZzX2hlYWRlcl9s ZXZlbChidWYpID09IDAgJiYgY2hlY2tfbGVhZihyb290LCBidWYpKSB7CisJaWYgKGJ0cmZzX2hl YWRlcl9sZXZlbChidWYpID09IDAgJiYgYnRyZnNfY2hlY2tfbGVhZihyb290LCBidWYpKSB7CiAJ CWJ0cmZzX3ByaW50X2xlYWYocm9vdCwgYnVmKTsKIAkJQVNTRVJUKDApOwogCX0KZGlmZiAtLWdp dCBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kZmJhOWY2Yjc5YTIKLS0tIC9k ZXYvbnVsbAorKysgYi9mcy9idHJmcy90cmVlLWNoZWNrZXIuYwpAQCAtMCwwICsxLDMwOSBAQAor LyoKKyAqIENvcHlyaWdodCAoQykgUXUgV2VucnVvIDIwMTcuICBBbGwgcmlnaHRzIHJlc2VydmVk LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2MiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor ICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KKyAqLworCisvKgorICogVGhlIG1vZHVs ZSBpcyB1c2VkIHRvIGNhdGNoIHVuZXhwZWN0ZWQvY29ycnVwdGVkIHRyZWUgYmxvY2sgZGF0YS4K KyAqIFN1Y2ggYmVoYXZpb3IgY2FuIGJlIGNhdXNlZCBlaXRoZXIgYnkgYSBmdXp6ZWQgaW1hZ2Ug b3IgYnVncy4KKyAqCisgKiBUaGUgb2JqZWN0aXZlIGlzIHRvIGRvIGxlYWYvbm9kZSB2YWxpZGF0 aW9uIGNoZWNrcyB3aGVuIHRyZWUgYmxvY2sgaXMgcmVhZAorICogZnJvbSBkaXNrLCBhbmQgY2hl Y2sgKmV2ZXJ5KiBwb3NzaWJsZSBtZW1iZXIsIHNvIG90aGVyIGNvZGUgd29uJ3QKKyAqIG5lZWQg dG8gY2hlY2tpbmcgdGhlbSBhZ2Fpbi4KKyAqCisgKiBEdWUgdG8gdGhlIHBvdGVudGlhbCBhbmQg dW53YW50ZWQgZGFtYWdlLCBldmVyeSBjaGVja2VyIG5lZWRzIHRvIGJlCisgKiBjYXJlZnVsbHkg cmV2aWV3ZWQgb3RoZXJ3aXNlIHNvIGl0IGRvZXMgbm90IHByZXZlbnQgbW91bnQgb2YgdmFsaWQg aW1hZ2VzLgorICovCisKKyNpbmNsdWRlICJjdHJlZS5oIgorI2luY2x1ZGUgInRyZWUtY2hlY2tl ci5oIgorI2luY2x1ZGUgImRpc2staW8uaCIKKyNpbmNsdWRlICJjb21wcmVzc2lvbi5oIgorCisj ZGVmaW5lIENPUlJVUFQocmVhc29uLCBlYiwgcm9vdCwgc2xvdCkJCQkJCVwKKwlidHJmc19jcml0 KHJvb3QtPmZzX2luZm8sCQkJCQlcCisJCSAgICJjb3JydXB0ICVzLCAlczogYmxvY2s9JWxsdSwg cm9vdD0lbGx1LCBzbG90PSVkIiwJXAorCQkgICBidHJmc19oZWFkZXJfbGV2ZWwoZWIpID09IDAg PyAibGVhZiIgOiAibm9kZSIsCVwKKwkJICAgcmVhc29uLCBidHJmc19oZWFkZXJfYnl0ZW5yKGVi KSwgcm9vdC0+b2JqZWN0aWQsIHNsb3QpCisKK3N0YXRpYyBpbnQgY2hlY2tfZXh0ZW50X2RhdGFf aXRlbShzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwKKwkJCQkgIHN0cnVjdCBleHRlbnRfYnVmZmVy ICpsZWFmLAorCQkJCSAgc3RydWN0IGJ0cmZzX2tleSAqa2V5LCBpbnQgc2xvdCkKK3sKKwlzdHJ1 Y3QgYnRyZnNfZmlsZV9leHRlbnRfaXRlbSAqZmk7CisJdTMyIHNlY3RvcnNpemUgPSByb290LT5z ZWN0b3JzaXplOworCXUzMiBpdGVtX3NpemUgPSBidHJmc19pdGVtX3NpemVfbnIobGVhZiwgc2xv dCk7CisKKwlpZiAoIUlTX0FMSUdORUQoa2V5LT5vZmZzZXQsIHNlY3RvcnNpemUpKSB7CisJCUNP UlJVUFQoInVuYWxpZ25lZCBrZXkgb2Zmc2V0IGZvciBmaWxlIGV4dGVudCIsCisJCQlsZWFmLCBy b290LCBzbG90KTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKworCWZpID0gYnRyZnNfaXRlbV9w dHIobGVhZiwgc2xvdCwgc3RydWN0IGJ0cmZzX2ZpbGVfZXh0ZW50X2l0ZW0pOworCisJaWYgKGJ0 cmZzX2ZpbGVfZXh0ZW50X3R5cGUobGVhZiwgZmkpID4gQlRSRlNfRklMRV9FWFRFTlRfVFlQRVMp IHsKKwkJQ09SUlVQVCgiaW52YWxpZCBmaWxlIGV4dGVudCB0eXBlIiwgbGVhZiwgcm9vdCwgc2xv dCk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisKKwkvKgorCSAqIFN1cHBvcnQgZm9yIG5ldyBj b21wcmVzc2lvbi9lbmNycHRpb24gbXVzdCBpbnRyb2R1Y2UgaW5jb21wYXQgZmxhZywKKwkgKiBh bmQgbXVzdCBiZSBjYXVnaHQgaW4gb3Blbl9jdHJlZSgpLgorCSAqLworCWlmIChidHJmc19maWxl X2V4dGVudF9jb21wcmVzc2lvbihsZWFmLCBmaSkgPiBCVFJGU19DT01QUkVTU19UWVBFUykgewor CQlDT1JSVVBUKCJpbnZhbGlkIGZpbGUgZXh0ZW50IGNvbXByZXNzaW9uIiwgbGVhZiwgcm9vdCwg c2xvdCk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisJaWYgKGJ0cmZzX2ZpbGVfZXh0ZW50X2Vu Y3J5cHRpb24obGVhZiwgZmkpKSB7CisJCUNPUlJVUFQoImludmFsaWQgZmlsZSBleHRlbnQgZW5j cnlwdGlvbiIsIGxlYWYsIHJvb3QsIHNsb3QpOworCQlyZXR1cm4gLUVVQ0xFQU47CisJfQorCWlm IChidHJmc19maWxlX2V4dGVudF90eXBlKGxlYWYsIGZpKSA9PSBCVFJGU19GSUxFX0VYVEVOVF9J TkxJTkUpIHsKKwkJLyogSW5saW5lIGV4dGVudCBtdXN0IGhhdmUgMCBhcyBrZXkgb2Zmc2V0ICov CisJCWlmIChrZXktPm9mZnNldCkgeworCQkJQ09SUlVQVCgiaW5saW5lIGV4dGVudCBoYXMgbm9u LXplcm8ga2V5IG9mZnNldCIsCisJCQkJbGVhZiwgcm9vdCwgc2xvdCk7CisJCQlyZXR1cm4gLUVV Q0xFQU47CisJCX0KKworCQkvKiBDb21wcmVzc2VkIGlubGluZSBleHRlbnQgaGFzIG5vIG9uLWRp c2sgc2l6ZSwgc2tpcCBpdCAqLworCQlpZiAoYnRyZnNfZmlsZV9leHRlbnRfY29tcHJlc3Npb24o bGVhZiwgZmkpICE9CisJCSAgICBCVFJGU19DT01QUkVTU19OT05FKQorCQkJcmV0dXJuIDA7CisK KwkJLyogVW5jb21wcmVzc2VkIGlubGluZSBleHRlbnQgc2l6ZSBtdXN0IG1hdGNoIGl0ZW0gc2l6 ZSAqLworCQlpZiAoaXRlbV9zaXplICE9IEJUUkZTX0ZJTEVfRVhURU5UX0lOTElORV9EQVRBX1NU QVJUICsKKwkJICAgIGJ0cmZzX2ZpbGVfZXh0ZW50X3JhbV9ieXRlcyhsZWFmLCBmaSkpIHsKKwkJ CUNPUlJVUFQoInBsYWludGV4dCBpbmxpbmUgZXh0ZW50IGhhcyBpbnZhbGlkIHNpemUiLAorCQkJ CWxlYWYsIHJvb3QsIHNsb3QpOworCQkJcmV0dXJuIC1FVUNMRUFOOworCQl9CisJCXJldHVybiAw OworCX0KKworCS8qIFJlZ3VsYXIgb3IgcHJlYWxsb2NhdGVkIGV4dGVudCBoYXMgZml4ZWQgaXRl bSBzaXplICovCisJaWYgKGl0ZW1fc2l6ZSAhPSBzaXplb2YoKmZpKSkgeworCQlDT1JSVVBUKAor CQkicmVnbHVhciBvciBwcmVhbGxvY2F0ZWQgZXh0ZW50IGRhdGEgaXRlbSBzaXplIGlzIGludmFs aWQiLAorCQkJbGVhZiwgcm9vdCwgc2xvdCk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisJaWYg KCFJU19BTElHTkVEKGJ0cmZzX2ZpbGVfZXh0ZW50X3JhbV9ieXRlcyhsZWFmLCBmaSksIHNlY3Rv cnNpemUpIHx8CisJICAgICFJU19BTElHTkVEKGJ0cmZzX2ZpbGVfZXh0ZW50X2Rpc2tfYnl0ZW5y KGxlYWYsIGZpKSwgc2VjdG9yc2l6ZSkgfHwKKwkgICAgIUlTX0FMSUdORUQoYnRyZnNfZmlsZV9l eHRlbnRfZGlza19udW1fYnl0ZXMobGVhZiwgZmkpLCBzZWN0b3JzaXplKSB8fAorCSAgICAhSVNf QUxJR05FRChidHJmc19maWxlX2V4dGVudF9vZmZzZXQobGVhZiwgZmkpLCBzZWN0b3JzaXplKSB8 fAorCSAgICAhSVNfQUxJR05FRChidHJmc19maWxlX2V4dGVudF9udW1fYnl0ZXMobGVhZiwgZmkp LCBzZWN0b3JzaXplKSkgeworCQlDT1JSVVBUKAorCQkicmVndWxhciBvciBwcmVhbGxvY2F0ZWQg ZXh0ZW50IGRhdGEgaXRlbSBoYXMgdW5hbGlnbmVkIHZhbHVlIiwKKwkJCWxlYWYsIHJvb3QsIHNs b3QpOworCQlyZXR1cm4gLUVVQ0xFQU47CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgY2hlY2tfY3N1bV9pdGVtKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgZXh0ZW50 X2J1ZmZlciAqbGVhZiwKKwkJCSAgIHN0cnVjdCBidHJmc19rZXkgKmtleSwgaW50IHNsb3QpCit7 CisJdTMyIHNlY3RvcnNpemUgPSByb290LT5zZWN0b3JzaXplOworCXUzMiBjc3Vtc2l6ZSA9IGJ0 cmZzX3N1cGVyX2NzdW1fc2l6ZShyb290LT5mc19pbmZvLT5zdXBlcl9jb3B5KTsKKworCWlmIChr ZXktPm9iamVjdGlkICE9IEJUUkZTX0VYVEVOVF9DU1VNX09CSkVDVElEKSB7CisJCUNPUlJVUFQo ImludmFsaWQgb2JqZWN0aWQgZm9yIGNzdW0gaXRlbSIsIGxlYWYsIHJvb3QsIHNsb3QpOworCQly ZXR1cm4gLUVVQ0xFQU47CisJfQorCWlmICghSVNfQUxJR05FRChrZXktPm9mZnNldCwgc2VjdG9y c2l6ZSkpIHsKKwkJQ09SUlVQVCgidW5hbGlnbmVkIGtleSBvZmZzZXQgZm9yIGNzdW0gaXRlbSIs IGxlYWYsIHJvb3QsIHNsb3QpOworCQlyZXR1cm4gLUVVQ0xFQU47CisJfQorCWlmICghSVNfQUxJ R05FRChidHJmc19pdGVtX3NpemVfbnIobGVhZiwgc2xvdCksIGNzdW1zaXplKSkgeworCQlDT1JS VVBUKCJ1bmFsaWduZWQgY3N1bSBpdGVtIHNpemUiLCBsZWFmLCByb290LCBzbG90KTsKKwkJcmV0 dXJuIC1FVUNMRUFOOworCX0KKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIENvbW1vbiBwb2ludCB0 byBzd2l0Y2ggdGhlIGl0ZW0tc3BlY2lmaWMgdmFsaWRhdGlvbi4KKyAqLworc3RhdGljIGludCBj aGVja19sZWFmX2l0ZW0oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCisJCQkgICBzdHJ1Y3QgZXh0 ZW50X2J1ZmZlciAqbGVhZiwKKwkJCSAgIHN0cnVjdCBidHJmc19rZXkgKmtleSwgaW50IHNsb3Qp Cit7CisJaW50IHJldCA9IDA7CisKKwlzd2l0Y2ggKGtleS0+dHlwZSkgeworCWNhc2UgQlRSRlNf RVhURU5UX0RBVEFfS0VZOgorCQlyZXQgPSBjaGVja19leHRlbnRfZGF0YV9pdGVtKHJvb3QsIGxl YWYsIGtleSwgc2xvdCk7CisJCWJyZWFrOworCWNhc2UgQlRSRlNfRVhURU5UX0NTVU1fS0VZOgor CQlyZXQgPSBjaGVja19jc3VtX2l0ZW0ocm9vdCwgbGVhZiwga2V5LCBzbG90KTsKKwkJYnJlYWs7 CisJfQorCXJldHVybiByZXQ7Cit9CisKK2ludCBidHJmc19jaGVja19sZWFmKHN0cnVjdCBidHJm c19yb290ICpyb290LCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqbGVhZikKK3sKKwlzdHJ1Y3QgYnRy ZnNfZnNfaW5mbyAqZnNfaW5mbyA9IHJvb3QtPmZzX2luZm87CisJLyogTm8gdmFsaWQga2V5IHR5 cGUgaXMgMCwgc28gYWxsIGtleSBzaG91bGQgYmUgbGFyZ2VyIHRoYW4gdGhpcyBrZXkgKi8KKwlz dHJ1Y3QgYnRyZnNfa2V5IHByZXZfa2V5ID0gezAsIDAsIDB9OworCXN0cnVjdCBidHJmc19rZXkg a2V5OworCXUzMiBucml0ZW1zID0gYnRyZnNfaGVhZGVyX25yaXRlbXMobGVhZik7CisJaW50IHNs b3Q7CisKKwkvKgorCSAqIEV4dGVudCBidWZmZXJzIGZyb20gYSByZWxvY2F0aW9uIHRyZWUgaGF2 ZSBhIG93bmVyIGZpZWxkIHRoYXQKKwkgKiBjb3JyZXNwb25kcyB0byB0aGUgc3Vidm9sdW1lIHRy ZWUgdGhleSBhcmUgYmFzZWQgb24uIFNvIGp1c3QgZnJvbSBhbgorCSAqIGV4dGVudCBidWZmZXIg YWxvbmUgd2UgY2FuIG5vdCBmaW5kIG91dCB3aGF0IGlzIHRoZSBpZCBvZiB0aGUKKwkgKiBjb3Jy ZXNwb25kaW5nIHN1YnZvbHVtZSB0cmVlLCBzbyB3ZSBjYW4gbm90IGZpZ3VyZSBvdXQgaWYgdGhl IGV4dGVudAorCSAqIGJ1ZmZlciBjb3JyZXNwb25kcyB0byB0aGUgcm9vdCBvZiB0aGUgcmVsb2Nh dGlvbiB0cmVlIG9yIG5vdC4gU28KKwkgKiBza2lwIHRoaXMgY2hlY2sgZm9yIHJlbG9jYXRpb24g dHJlZXMuCisJICovCisJaWYgKG5yaXRlbXMgPT0gMCAmJiAhYnRyZnNfaGVhZGVyX2ZsYWcobGVh ZiwgQlRSRlNfSEVBREVSX0ZMQUdfUkVMT0MpKSB7CisJCXN0cnVjdCBidHJmc19yb290ICpjaGVj a19yb290OworCisJCWtleS5vYmplY3RpZCA9IGJ0cmZzX2hlYWRlcl9vd25lcihsZWFmKTsKKwkJ a2V5LnR5cGUgPSBCVFJGU19ST09UX0lURU1fS0VZOworCQlrZXkub2Zmc2V0ID0gKHU2NCktMTsK KworCQljaGVja19yb290ID0gYnRyZnNfZ2V0X2ZzX3Jvb3QoZnNfaW5mbywgJmtleSwgZmFsc2Up OworCQkvKgorCQkgKiBUaGUgb25seSByZWFzb24gd2UgYWxzbyBjaGVjayBOVUxMIGhlcmUgaXMg dGhhdCBkdXJpbmcKKwkJICogb3Blbl9jdHJlZSgpIHNvbWUgcm9vdHMgaGFzIG5vdCB5ZXQgYmVl biBzZXQgdXAuCisJCSAqLworCQlpZiAoIUlTX0VSUl9PUl9OVUxMKGNoZWNrX3Jvb3QpKSB7CisJ CQlzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqZWI7CisKKwkJCWViID0gYnRyZnNfcm9vdF9ub2RlKGNo ZWNrX3Jvb3QpOworCQkJLyogaWYgbGVhZiBpcyB0aGUgcm9vdCwgdGhlbiBpdCdzIGZpbmUgKi8K KwkJCWlmIChsZWFmICE9IGViKSB7CisJCQkJQ09SUlVQVCgibm9uLXJvb3QgbGVhZidzIG5yaXRl bXMgaXMgMCIsCisJCQkJCWxlYWYsIGNoZWNrX3Jvb3QsIDApOworCQkJCWZyZWVfZXh0ZW50X2J1 ZmZlcihlYik7CisJCQkJcmV0dXJuIC1FVUNMRUFOOworCQkJfQorCQkJZnJlZV9leHRlbnRfYnVm ZmVyKGViKTsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAobnJpdGVtcyA9PSAwKQorCQly ZXR1cm4gMDsKKworCS8qCisJICogQ2hlY2sgdGhlIGZvbGxvd2luZyB0aGluZ3MgdG8gbWFrZSBz dXJlIHRoaXMgaXMgYSBnb29kIGxlYWYsIGFuZAorCSAqIGxlYWYgdXNlcnMgd29uJ3QgbmVlZCB0 byBib3RoZXIgd2l0aCBzaW1pbGFyIHNhbml0eSBjaGVja3M6CisJICoKKwkgKiAxKSBrZXkgb3Jk ZXJpbmcKKwkgKiAyKSBpdGVtIG9mZnNldCBhbmQgc2l6ZQorCSAqICAgIE5vIG92ZXJsYXAsIG5v IGhvbGUsIGFsbCBpbnNpZGUgdGhlIGxlYWYuCisJICogMykgaXRlbSBjb250ZW50CisJICogICAg SWYgcG9zc2libGUsIGRvIGNvbXByZWhlbnNpdmUgc2FuaXR5IGNoZWNrLgorCSAqICAgIE5PVEU6 IEFsbCBjaGVja3MgbXVzdCBvbmx5IHJlbHkgb24gdGhlIGl0ZW0gZGF0YSBpdHNlbGYuCisJICov CisJZm9yIChzbG90ID0gMDsgc2xvdCA8IG5yaXRlbXM7IHNsb3QrKykgeworCQl1MzIgaXRlbV9l bmRfZXhwZWN0ZWQ7CisJCWludCByZXQ7CisKKwkJYnRyZnNfaXRlbV9rZXlfdG9fY3B1KGxlYWYs ICZrZXksIHNsb3QpOworCisJCS8qIE1ha2Ugc3VyZSB0aGUga2V5cyBhcmUgaW4gdGhlIHJpZ2h0 IG9yZGVyICovCisJCWlmIChidHJmc19jb21wX2NwdV9rZXlzKCZwcmV2X2tleSwgJmtleSkgPj0g MCkgeworCQkJQ09SUlVQVCgiYmFkIGtleSBvcmRlciIsIGxlYWYsIHJvb3QsIHNsb3QpOworCQkJ cmV0dXJuIC1FVUNMRUFOOworCQl9CisKKwkJLyoKKwkJICogTWFrZSBzdXJlIHRoZSBvZmZzZXQg YW5kIGVuZHMgYXJlIHJpZ2h0LCByZW1lbWJlciB0aGF0IHRoZQorCQkgKiBpdGVtIGRhdGEgc3Rh cnRzIGF0IHRoZSBlbmQgb2YgdGhlIGxlYWYgYW5kIGdyb3dzIHRvd2FyZHMgdGhlCisJCSAqIGZy b250LgorCQkgKi8KKwkJaWYgKHNsb3QgPT0gMCkKKwkJCWl0ZW1fZW5kX2V4cGVjdGVkID0gQlRS RlNfTEVBRl9EQVRBX1NJWkUocm9vdCk7CisJCWVsc2UKKwkJCWl0ZW1fZW5kX2V4cGVjdGVkID0g YnRyZnNfaXRlbV9vZmZzZXRfbnIobGVhZiwKKwkJCQkJCQkJIHNsb3QgLSAxKTsKKwkJaWYgKGJ0 cmZzX2l0ZW1fZW5kX25yKGxlYWYsIHNsb3QpICE9IGl0ZW1fZW5kX2V4cGVjdGVkKSB7CisJCQlD T1JSVVBUKCJzbG90IG9mZnNldCBiYWQiLCBsZWFmLCByb290LCBzbG90KTsKKwkJCXJldHVybiAt RVVDTEVBTjsKKwkJfQorCisJCS8qCisJCSAqIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRv bid0IHBvaW50IG91dHNpZGUgb2YgdGhlIGxlYWYsCisJCSAqIGp1c3QgaW4gY2FzZSBhbGwgdGhl IGl0ZW1zIGFyZSBjb25zaXN0ZW50IHRvIGVhY2ggb3RoZXIsIGJ1dAorCQkgKiBhbGwgcG9pbnQg b3V0c2lkZSBvZiB0aGUgbGVhZi4KKwkJICovCisJCWlmIChidHJmc19pdGVtX2VuZF9ucihsZWFm LCBzbG90KSA+CisJCSAgICBCVFJGU19MRUFGX0RBVEFfU0laRShyb290KSkgeworCQkJQ09SUlVQ VCgic2xvdCBlbmQgb3V0c2lkZSBvZiBsZWFmIiwgbGVhZiwgcm9vdCwgc2xvdCk7CisJCQlyZXR1 cm4gLUVVQ0xFQU47CisJCX0KKworCQkvKiBBbHNvIGNoZWNrIGlmIHRoZSBpdGVtIHBvaW50ZXIg b3ZlcmxhcHMgd2l0aCBidHJmcyBpdGVtLiAqLworCQlpZiAoYnRyZnNfaXRlbV9ucl9vZmZzZXQo c2xvdCkgKyBzaXplb2Yoc3RydWN0IGJ0cmZzX2l0ZW0pID4KKwkJICAgIGJ0cmZzX2l0ZW1fcHRy X29mZnNldChsZWFmLCBzbG90KSkgeworCQkJQ09SUlVQVCgic2xvdCBvdmVybGFwIHdpdGggaXRz IGRhdGEiLCBsZWFmLCByb290LCBzbG90KTsKKwkJCXJldHVybiAtRVVDTEVBTjsKKwkJfQorCisJ CS8qIENoZWNrIGlmIHRoZSBpdGVtIHNpemUgYW5kIGNvbnRlbnQgbWVldCBvdGhlciBjcml0ZXJp YSAqLworCQlyZXQgPSBjaGVja19sZWFmX2l0ZW0ocm9vdCwgbGVhZiwgJmtleSwgc2xvdCk7CisJ CWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKworCQlwcmV2X2tleS5vYmplY3RpZCA9IGtl eS5vYmplY3RpZDsKKwkJcHJldl9rZXkudHlwZSA9IGtleS50eXBlOworCQlwcmV2X2tleS5vZmZz ZXQgPSBrZXkub2Zmc2V0OworCX0KKworCXJldHVybiAwOworfQorCitpbnQgYnRyZnNfY2hlY2tf bm9kZShzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGV4dGVudF9idWZmZXIgKm5vZGUp Cit7CisJdW5zaWduZWQgbG9uZyBuciA9IGJ0cmZzX2hlYWRlcl9ucml0ZW1zKG5vZGUpOworCXN0 cnVjdCBidHJmc19rZXkga2V5LCBuZXh0X2tleTsKKwlpbnQgc2xvdDsKKwl1NjQgYnl0ZW5yOwor CWludCByZXQgPSAwOworCisJaWYgKG5yID09IDAgfHwgbnIgPiBCVFJGU19OT0RFUFRSU19QRVJf QkxPQ0socm9vdCkpIHsKKwkJYnRyZnNfY3JpdChyb290LT5mc19pbmZvLAorCQkJICAgImNvcnJ1 cHQgbm9kZTogYmxvY2sgJWxsdSByb290ICVsbHUgbnJpdGVtcyAlbHUiLAorCQkJICAgbm9kZS0+ c3RhcnQsIHJvb3QtPm9iamVjdGlkLCBucik7CisJCXJldHVybiAtRUlPOworCX0KKworCWZvciAo c2xvdCA9IDA7IHNsb3QgPCBuciAtIDE7IHNsb3QrKykgeworCQlieXRlbnIgPSBidHJmc19ub2Rl X2Jsb2NrcHRyKG5vZGUsIHNsb3QpOworCQlidHJmc19ub2RlX2tleV90b19jcHUobm9kZSwgJmtl eSwgc2xvdCk7CisJCWJ0cmZzX25vZGVfa2V5X3RvX2NwdShub2RlLCAmbmV4dF9rZXksIHNsb3Qg KyAxKTsKKworCQlpZiAoIWJ5dGVucikgeworCQkJQ09SUlVQVCgiaW52YWxpZCBpdGVtIHNsb3Qi LCBub2RlLCByb290LCBzbG90KTsKKwkJCXJldCA9IC1FSU87CisJCQlnb3RvIG91dDsKKwkJfQor CisJCWlmIChidHJmc19jb21wX2NwdV9rZXlzKCZrZXksICZuZXh0X2tleSkgPj0gMCkgeworCQkJ Q09SUlVQVCgiYmFkIGtleSBvcmRlciIsIG5vZGUsIHJvb3QsIHNsb3QpOworCQkJcmV0ID0gLUVJ TzsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorb3V0OgorCXJldHVybiByZXQ7Cit9CmRpZmYgLS1n aXQgYS9mcy9idHJmcy90cmVlLWNoZWNrZXIuaCBiL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTZjNDg2ZTk1ZDcwCi0tLSAv ZGV2L251bGwKKysrIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmgKQEAgLTAsMCArMSwyNiBAQAor LyoKKyAqIENvcHlyaWdodCAoQykgUXUgV2VucnVvIDIwMTcuICBBbGwgcmlnaHRzIHJlc2VydmVk LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSB2MiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor ICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KKyAqLworCisjaWZuZGVmIF9fQlRSRlNf VFJFRV9DSEVDS0VSX18KKyNkZWZpbmUgX19CVFJGU19UUkVFX0NIRUNLRVJfXworCisjaW5jbHVk ZSAiY3RyZWUuaCIKKyNpbmNsdWRlICJleHRlbnRfaW8uaCIKKworaW50IGJ0cmZzX2NoZWNrX2xl YWYoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmKTsK K2ludCBidHJmc19jaGVja19ub2RlKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgZXh0 ZW50X2J1ZmZlciAqbm9kZSk7CisKKyNlbmRpZgotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUg RGV2ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93 d3cuY29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBT dHJlZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0x IDJIRiwgVW5pdGVkIEtpbmdkb20KCgpGcm9tIGRmMGYxOTRmMjkxMTg5MWM3N2MxOGFmOTA1NzI4 YTBiY2E5NTI1MjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFF1IFdlbnJ1byA8cXV3 ZW5ydW8uYnRyZnNAZ214LmNvbT4KRGF0ZTogTW9uLCA5IE9jdCAyMDE3IDAxOjUxOjAzICswMDAw ClN1YmplY3Q6IFtQQVRDSCAyMC8zMV0gYnRyZnM6IHRyZWUtY2hlY2tlcjogRW5oYW5jZSBidHJm c19jaGVja19ub2RlIG91dHB1dAoKY29tbWl0IGJiYTRmMjk4OTZjOTg2YzRjZWMxN2JjMGYxOWYy Y2U2NDRmY2VhZTEgdXBzdHJlYW0uCgpVc2UgaW5saW5lIGZ1bmN0aW9uIHRvIHJlcGxhY2UgbWFj cm8gc2luY2Ugd2UgZG9uJ3QgbmVlZApzdHJpbmdpZmljYXRpb24uCihNYWNybyBzdGlsbCBleGlz dHMgdW50aWwgYWxsIGNhbGxlcnMgZ2V0IHVwZGF0ZWQpCgpBbmQgYWRkIG1vcmUgaW5mbyBhYm91 dCB0aGUgZXJyb3IsIGFuZCByZXBsYWNlIEVJTyB3aXRoIEVVQ0xFQU4uCgpGb3IgbnJfaXRlbXMg ZXJyb3IsIHJlcG9ydCBpZiBpdCdzIHRvbyBsYXJnZSBvciB0b28gc21hbGwsIGFuZCBvdXRwdXQK dGhlIHZhbGlkIHZhbHVlIHJhbmdlLgoKRm9yIG5vZGUgYmxvY2sgcG9pbnRlciwgYWRkZWQgYSBu ZXcgYWxpZ25tZW50IGNoZWNrZXIuCgpGb3Iga2V5IG9yZGVyLCBhbHNvIG91dHB1dCB0aGUgbmV4 dCBrZXkgdG8gbWFrZSB0aGUgcHJvYmxlbSBtb3JlCm9idmlvdXMuCgpTaWduZWQtb2ZmLWJ5OiBR dSBXZW5ydW8gPHF1d2VucnVvLmJ0cmZzQGdteC5jb20+Clsgd29yZGluZyBhZGp1c3RtZW50cywg dW5pbmRlbnRlZCBsb25nIHN0cmluZ3MgXQpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRz dGVyYmFAc3VzZS5jb20+Cltid2g6IEJhY2twb3J0ZWQgdG8gNC40OgogLSBVc2Ugcm9vdC0+c2Vj dG9yc2l6ZSBpbnN0ZWFkIG9mIHJvb3QtPmZzX2luZm8tPnNlY3RvcnNpemUKIC0gQlRSRlNfTk9E RVBUUlNfUEVSX0JMT0NLKCkgdGFrZXMgYSByb290IGluc3RlYWQgb2YgYW4gZnNfaW5mbywgYW5k IHlpZWxkcwogICBhIHZhbHVlIG9mIHR5cGUgc2l6ZV90IGluc3RlYWQgb2YgdW5zaWduZWQgaW50 XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5j by51az4KLS0tCiBmcy9idHJmcy90cmVlLWNoZWNrZXIuYyB8IDY4ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2MSBpbnNl cnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3RyZWUtY2hl Y2tlci5jIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKaW5kZXggZGZiYTlmNmI3OWEyLi5jM2Y5 NzExOTRiZDEgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCisrKyBiL2ZzL2J0 cmZzL3RyZWUtY2hlY2tlci5jCkBAIC0zNyw2ICszNyw0NiBAQAogCQkgICBidHJmc19oZWFkZXJf bGV2ZWwoZWIpID09IDAgPyAibGVhZiIgOiAibm9kZSIsCVwKIAkJICAgcmVhc29uLCBidHJmc19o ZWFkZXJfYnl0ZW5yKGViKSwgcm9vdC0+b2JqZWN0aWQsIHNsb3QpCiAKKy8qCisgKiBFcnJvciBt ZXNzYWdlIHNob3VsZCBmb2xsb3cgdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisgKiBjb3JydXB0IDx0 eXBlPjogPGlkZW50aWZpZXI+LCA8cmVhc29uPlssIDxiYWRfdmFsdWU+XQorICoKKyAqIEB0eXBl OglsZWFmIG9yIG5vZGUKKyAqIEBpZGVudGlmaWVyOgl0aGUgbmVjZXNzYXJ5IGluZm8gdG8gbG9j YXRlIHRoZSBsZWFmL25vZGUuCisgKiAJCUl0J3MgcmVjb21tZW5lZCB0byBkZWNvZGUga2V5Lm9i amVjaXRkL29mZnNldCBpZiBpdCdzCisgKiAJCW1lYW5pbmdmdWwuCisgKiBAcmVhc29uOglkZXNj cmliZSB0aGUgZXJyb3IKKyAqIEBiYWRfdmFsdWU6CW9wdGlvbmFsLCBpdCdzIHJlY29tbWVuZWQg dG8gb3V0cHV0IGJhZCB2YWx1ZSBhbmQgaXRzCisgKgkJZXhwZWN0ZWQgdmFsdWUgKHJhbmdlKS4K KyAqCisgKiBTaW5jZSBjb21tYSBpcyB1c2VkIHRvIHNlcGFyYXRlIHRoZSBjb21wb25lbnRzLCBv bmx5IHNwYWNlIGlzIGFsbG93ZWQKKyAqIGluc2lkZSBlYWNoIGNvbXBvbmVudC4KKyAqLworCisv KgorICogQXBwZW5kIGdlbmVyaWMgImNvcnJ1cHQgbGVhZi9ub2RlIHJvb3Q9JWxsdSBibG9jaz0l bGx1IHNsb3Q9JWQ6ICIgdG8gQGZtdC4KKyAqIEFsbG93cyBjYWxsZXJzIHRvIGN1c3RvbWl6ZSB0 aGUgb3V0cHV0LgorICovCitfX3ByaW50Zig0LCA1KQorc3RhdGljIHZvaWQgZ2VuZXJpY19lcnIo Y29uc3Qgc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCisJCQljb25zdCBzdHJ1Y3QgZXh0ZW50X2J1 ZmZlciAqZWIsIGludCBzbG90LAorCQkJY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJc3RydWN0 IHZhX2Zvcm1hdCB2YWY7CisJdmFfbGlzdCBhcmdzOworCisJdmFfc3RhcnQoYXJncywgZm10KTsK KworCXZhZi5mbXQgPSBmbXQ7CisJdmFmLnZhID0gJmFyZ3M7CisKKwlidHJmc19jcml0KHJvb3Qt PmZzX2luZm8sCisJCSJjb3JydXB0ICVzOiByb290PSVsbHUgYmxvY2s9JWxsdSBzbG90PSVkLCAl cFYiLAorCQlidHJmc19oZWFkZXJfbGV2ZWwoZWIpID09IDAgPyAibGVhZiIgOiAibm9kZSIsCisJ CXJvb3QtPm9iamVjdGlkLCBidHJmc19oZWFkZXJfYnl0ZW5yKGViKSwgc2xvdCwgJnZhZik7CisJ dmFfZW5kKGFyZ3MpOworfQorCiBzdGF0aWMgaW50IGNoZWNrX2V4dGVudF9kYXRhX2l0ZW0oc3Ry dWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJCQkJICBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqbGVhZiwK IAkJCQkgIHN0cnVjdCBidHJmc19rZXkgKmtleSwgaW50IHNsb3QpCkBAIC0yODIsOSArMzIyLDEx IEBAIGludCBidHJmc19jaGVja19ub2RlKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3Qg ZXh0ZW50X2J1ZmZlciAqbm9kZSkKIAogCWlmIChuciA9PSAwIHx8IG5yID4gQlRSRlNfTk9ERVBU UlNfUEVSX0JMT0NLKHJvb3QpKSB7CiAJCWJ0cmZzX2NyaXQocm9vdC0+ZnNfaW5mbywKLQkJCSAg ICJjb3JydXB0IG5vZGU6IGJsb2NrICVsbHUgcm9vdCAlbGx1IG5yaXRlbXMgJWx1IiwKLQkJCSAg IG5vZGUtPnN0YXJ0LCByb290LT5vYmplY3RpZCwgbnIpOwotCQlyZXR1cm4gLUVJTzsKKyJjb3Jy dXB0IG5vZGU6IHJvb3Q9JWxsdSBibG9jaz0lbGx1LCBucml0ZW1zIHRvbyAlcywgaGF2ZSAlbHUg ZXhwZWN0IHJhbmdlIFsxLCV6dV0iLAorCQkJICAgcm9vdC0+b2JqZWN0aWQsIG5vZGUtPnN0YXJ0 LAorCQkJICAgbnIgPT0gMCA/ICJzbWFsbCIgOiAibGFyZ2UiLCBuciwKKwkJCSAgIEJUUkZTX05P REVQVFJTX1BFUl9CTE9DSyhyb290KSk7CisJCXJldHVybiAtRVVDTEVBTjsKIAl9CiAKIAlmb3Ig KHNsb3QgPSAwOyBzbG90IDwgbnIgLSAxOyBzbG90KyspIHsKQEAgLTI5MywxNCArMzM1LDI2IEBA IGludCBidHJmc19jaGVja19ub2RlKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgZXh0 ZW50X2J1ZmZlciAqbm9kZSkKIAkJYnRyZnNfbm9kZV9rZXlfdG9fY3B1KG5vZGUsICZuZXh0X2tl eSwgc2xvdCArIDEpOwogCiAJCWlmICghYnl0ZW5yKSB7Ci0JCQlDT1JSVVBUKCJpbnZhbGlkIGl0 ZW0gc2xvdCIsIG5vZGUsIHJvb3QsIHNsb3QpOwotCQkJcmV0ID0gLUVJTzsKKwkJCWdlbmVyaWNf ZXJyKHJvb3QsIG5vZGUsIHNsb3QsCisJCQkJImludmFsaWQgTlVMTCBub2RlIHBvaW50ZXIiKTsK KwkJCXJldCA9IC1FVUNMRUFOOworCQkJZ290byBvdXQ7CisJCX0KKwkJaWYgKCFJU19BTElHTkVE KGJ5dGVuciwgcm9vdC0+c2VjdG9yc2l6ZSkpIHsKKwkJCWdlbmVyaWNfZXJyKHJvb3QsIG5vZGUs IHNsb3QsCisJCQkidW5hbGlnbmVkIHBvaW50ZXIsIGhhdmUgJWxsdSBzaG91bGQgYmUgYWxpZ25l ZCB0byAldSIsCisJCQkJYnl0ZW5yLCByb290LT5zZWN0b3JzaXplKTsKKwkJCXJldCA9IC1FVUNM RUFOOwogCQkJZ290byBvdXQ7CiAJCX0KIAogCQlpZiAoYnRyZnNfY29tcF9jcHVfa2V5cygma2V5 LCAmbmV4dF9rZXkpID49IDApIHsKLQkJCUNPUlJVUFQoImJhZCBrZXkgb3JkZXIiLCBub2RlLCBy b290LCBzbG90KTsKLQkJCXJldCA9IC1FSU87CisJCQlnZW5lcmljX2Vycihyb290LCBub2RlLCBz bG90LAorCSJiYWQga2V5IG9yZGVyLCBjdXJyZW50ICglbGx1ICV1ICVsbHUpIG5leHQgKCVsbHUg JXUgJWxsdSkiLAorCQkJCWtleS5vYmplY3RpZCwga2V5LnR5cGUsIGtleS5vZmZzZXQsCisJCQkJ bmV4dF9rZXkub2JqZWN0aWQsIG5leHRfa2V5LnR5cGUsCisJCQkJbmV4dF9rZXkub2Zmc2V0KTsK KwkJCXJldCA9IC1FVUNMRUFOOwogCQkJZ290byBvdXQ7CiAJCX0KIAl9Ci0tIApCZW4gSHV0Y2hp bmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZXRoaW5r IEx0ZApodHRwczovL3d3dy5jb2RldGhpbmsuY28udWsvICAgICAgICAgICAgICAgICBEYWxlIEhv dXNlLCAzNSBEYWxlIFN0cmVldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TWFuY2hlc3RlciwgTTEgMkhGLCBVbml0ZWQgS2luZ2RvbQoKCkZyb20gZTNjOGJlOWU5ZDc0NzQ4 ODVjZmUzY2EyNzE0ODc2N2MwM2Q4ZGU5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog UXUgV2VucnVvIDx3cXVAc3VzZS5jb20+CkRhdGU6IFdlZCwgOCBOb3YgMjAxNyAwODo1NDoyNCAr MDgwMApTdWJqZWN0OiBbUEFUQ0ggMjEvMzFdIGJ0cmZzOiB0cmVlLWNoZWNrZXI6IEZpeCBmYWxz ZSBwYW5pYyBmb3Igc2FuaXR5IHRlc3QKCmNvbW1pdCA2OWZjNmNiYmFjNTQyYzM0OWIzZDM1MGQx MGY2ZTM5NGMyNTNjODFkIHVwc3RyZWFtLgoKW0JVR10KSWYgd2UgcnVuIGJ0cmZzIHdpdGggQ09O RklHX0JUUkZTX0ZTX1JVTl9TQU5JVFlfVEVTVFM9eSwgaXQgd2lsbAppbnN0YW50bHkgY2F1c2Ug a2VybmVsIHBhbmljIGxpa2U6CgotLS0tLS0KLi4uCmFzc2VydGlvbiBmYWlsZWQ6IDAsIGZpbGU6 IGZzL2J0cmZzL2Rpc2staW8uYywgbGluZTogMzg1MwouLi4KQ2FsbCBUcmFjZToKIGJ0cmZzX21h cmtfYnVmZmVyX2RpcnR5KzB4MTg3LzB4MWYwIFtidHJmc10KIHNldHVwX2l0ZW1zX2Zvcl9pbnNl cnQrMHgzODUvMHg2NTAgW2J0cmZzXQogX19idHJmc19kcm9wX2V4dGVudHMrMHgxMjlhLzB4MTg3 MCBbYnRyZnNdCi4uLgotLS0tLQoKW0NhdXNlXQpCdHJmcyB3aWxsIGNhbGwgYnRyZnNfY2hlY2tf bGVhZigpIGluIGJ0cmZzX21hcmtfYnVmZmVyX2RpcnR5KCkgdG8gY2hlY2sKaWYgdGhlIGxlYWYg aXMgdmFsaWQgd2l0aCBDT05GSUdfQlRSRlNfRlNfUlVOX1NBTklUWV9URVNUUz15LgoKSG93ZXZl ciBxdWl0ZSBzb21lIGJ0cmZzX21hcmtfYnVmZmVyX2RpcnR5KCkgY2FsbGVycygqKSBkb24ndCBy ZWFsbHkKaW5pdGlhbGl6ZSBpdHMgaXRlbSBkYXRhIGJ1dCBvbmx5IGluaXRpYWxpemUgaXRzIGl0 ZW0gcG9pbnRlcnMsIGxlYXZpbmcKaXRlbSBkYXRhIHVuaW5pdGlhbGl6ZWQuCgpUaGlzIG1ha2Vz IHRyZWUtY2hlY2tlciBjYXRjaCB1bmluaXRpYWxpemVkIGRhdGEgYXMgZXJyb3IsIGNhdXNpbmcK c3VjaCBwYW5pYy4KCio6IFRoZXNlIGNhbGxlcnMgaW5jbHVkZSBidXQgbm90IGxpbWl0ZWQgdG8K c2V0dXBfaXRlbXNfZm9yX2luc2VydCgpCmJ0cmZzX3NwbGl0X2l0ZW0oKQpidHJmc19leHBhbmRf aXRlbSgpCgpbRml4XQpBZGQgYSBuZXcgcGFyYW1ldGVyIEBjaGVja19pdGVtX2RhdGEgdG8gYnRy ZnNfY2hlY2tfbGVhZigpLgpXaXRoIEBjaGVja19pdGVtX2RhdGEgc2V0IHRvIGZhbHNlLCBpdGVt IGRhdGEgY2hlY2sgd2lsbCBiZSBza2lwcGVkIGFuZApmYWxsYmFjayB0byBvbGQgYnRyZnNfY2hl Y2tfbGVhZigpIGJlaGF2aW9yLgoKU28gd2UgY2FuIHN0aWxsIGdldCBlYXJseSB3YXJuaW5nIGlm IHdlIHNjcmV3IHVwIGl0ZW0gcG9pbnRlcnMsIGFuZAphdm9pZCBmYWxzZSBwYW5pYy4KCkNjOiBG aWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBnbWFpbC5jb20+ClJlcG9ydGVkLWJ5OiBMYWtzaG1pcGF0 aGkuRyA8bGFrc2htaXBhdGhpLmdAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8g PHdxdUBzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6IExpdSBCbyA8Ym8ubGkubGl1QG9yYWNsZS5jb20+ ClJldmlld2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYt Ynk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KW2J3aDogQmFja3BvcnRlZCB0byA0 LjQ6IGFkanVzdCBjb250ZXh0XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0 Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy9kaXNrLWlvLmMgICAgICB8IDEw ICsrKysrKysrLS0KIGZzL2J0cmZzL3RyZWUtY2hlY2tlci5jIHwgMjcgKysrKysrKysrKysrKysr KysrKysrKy0tLS0tCiBmcy9idHJmcy90cmVlLWNoZWNrZXIuaCB8IDE0ICsrKysrKysrKysrKyst CiAzIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZnMvYnRyZnMvZGlzay1pby5jIGIvZnMvYnRyZnMvZGlzay1pby5jCmluZGV4IDJh OTM5MzBlYzEwMy4uZjgwYTBhZjY4NzM2IDEwMDY0NAotLS0gYS9mcy9idHJmcy9kaXNrLWlvLmMK KysrIGIvZnMvYnRyZnMvZGlzay1pby5jCkBAIC01ODksNyArNTg5LDcgQEAgc3RhdGljIGludCBi dHJlZV9yZWFkcGFnZV9lbmRfaW9faG9vayhzdHJ1Y3QgYnRyZnNfaW9fYmlvICppb19iaW8sCiAJ ICogdGhhdCB3ZSBkb24ndCB0cnkgYW5kIHJlYWQgdGhlIG90aGVyIGNvcGllcyBvZiB0aGlzIGJs b2NrLCBqdXN0CiAJICogcmV0dXJuIC1FSU8uCiAJICovCi0JaWYgKGZvdW5kX2xldmVsID09IDAg JiYgYnRyZnNfY2hlY2tfbGVhZihyb290LCBlYikpIHsKKwlpZiAoZm91bmRfbGV2ZWwgPT0gMCAm JiBidHJmc19jaGVja19sZWFmX2Z1bGwocm9vdCwgZWIpKSB7CiAJCXNldF9iaXQoRVhURU5UX0JV RkZFUl9DT1JSVVBULCAmZWItPmJmbGFncyk7CiAJCXJldCA9IC1FSU87CiAJfQpAQCAtMzg5Niw3 ICszODk2LDEzIEBAIHZvaWQgYnRyZnNfbWFya19idWZmZXJfZGlydHkoc3RydWN0IGV4dGVudF9i dWZmZXIgKmJ1ZikKIAkJCQkgICAgIGJ1Zi0+bGVuLAogCQkJCSAgICAgcm9vdC0+ZnNfaW5mby0+ ZGlydHlfbWV0YWRhdGFfYmF0Y2gpOwogI2lmZGVmIENPTkZJR19CVFJGU19GU19DSEVDS19JTlRF R1JJVFkKLQlpZiAoYnRyZnNfaGVhZGVyX2xldmVsKGJ1ZikgPT0gMCAmJiBidHJmc19jaGVja19s ZWFmKHJvb3QsIGJ1ZikpIHsKKwkvKgorCSAqIFNpbmNlIGJ0cmZzX21hcmtfYnVmZmVyX2RpcnR5 KCkgY2FuIGJlIGNhbGxlZCB3aXRoIGl0ZW0gcG9pbnRlciBzZXQKKwkgKiBidXQgaXRlbSBkYXRh IG5vdCB1cGRhdGVkLgorCSAqIFNvIGhlcmUgd2Ugc2hvdWxkIG9ubHkgY2hlY2sgaXRlbSBwb2lu dGVycywgbm90IGl0ZW0gZGF0YS4KKwkgKi8KKwlpZiAoYnRyZnNfaGVhZGVyX2xldmVsKGJ1Zikg PT0gMCAmJgorCSAgICBidHJmc19jaGVja19sZWFmX3JlbGF4ZWQocm9vdCwgYnVmKSkgewogCQli dHJmc19wcmludF9sZWFmKHJvb3QsIGJ1Zik7CiAJCUFTU0VSVCgwKTsKIAl9CmRpZmYgLS1naXQg YS9mcy9idHJmcy90cmVlLWNoZWNrZXIuYyBiL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCmluZGV4 IGMzZjk3MTE5NGJkMS4uN2JkMmFiNDdmNDIyIDEwMDY0NAotLS0gYS9mcy9idHJmcy90cmVlLWNo ZWNrZXIuYworKysgYi9mcy9idHJmcy90cmVlLWNoZWNrZXIuYwpAQCAtMTk1LDcgKzE5NSw4IEBA IHN0YXRpYyBpbnQgY2hlY2tfbGVhZl9pdGVtKHN0cnVjdCBidHJmc19yb290ICpyb290LAogCXJl dHVybiByZXQ7CiB9CiAKLWludCBidHJmc19jaGVja19sZWFmKHN0cnVjdCBidHJmc19yb290ICpy b290LCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqbGVhZikKK3N0YXRpYyBpbnQgY2hlY2tfbGVhZihz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYsCisJCSAg ICAgIGJvb2wgY2hlY2tfaXRlbV9kYXRhKQogewogCXN0cnVjdCBidHJmc19mc19pbmZvICpmc19p bmZvID0gcm9vdC0+ZnNfaW5mbzsKIAkvKiBObyB2YWxpZCBrZXkgdHlwZSBpcyAwLCBzbyBhbGwg a2V5IHNob3VsZCBiZSBsYXJnZXIgdGhhbiB0aGlzIGtleSAqLwpAQCAtMjk5LDEwICszMDAsMTUg QEAgaW50IGJ0cmZzX2NoZWNrX2xlYWYoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBl eHRlbnRfYnVmZmVyICpsZWFmKQogCQkJcmV0dXJuIC1FVUNMRUFOOwogCQl9CiAKLQkJLyogQ2hl Y2sgaWYgdGhlIGl0ZW0gc2l6ZSBhbmQgY29udGVudCBtZWV0IG90aGVyIGNyaXRlcmlhICovCi0J CXJldCA9IGNoZWNrX2xlYWZfaXRlbShyb290LCBsZWFmLCAma2V5LCBzbG90KTsKLQkJaWYgKHJl dCA8IDApCi0JCQlyZXR1cm4gcmV0OworCQlpZiAoY2hlY2tfaXRlbV9kYXRhKSB7CisJCQkvKgor CQkJICogQ2hlY2sgaWYgdGhlIGl0ZW0gc2l6ZSBhbmQgY29udGVudCBtZWV0IG90aGVyCisJCQkg KiBjcml0ZXJpYQorCQkJICovCisJCQlyZXQgPSBjaGVja19sZWFmX2l0ZW0ocm9vdCwgbGVhZiwg JmtleSwgc2xvdCk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlyZXR1cm4gcmV0OworCQl9CiAKIAkJ cHJldl9rZXkub2JqZWN0aWQgPSBrZXkub2JqZWN0aWQ7CiAJCXByZXZfa2V5LnR5cGUgPSBrZXku dHlwZTsKQEAgLTMxMiw2ICszMTgsMTcgQEAgaW50IGJ0cmZzX2NoZWNrX2xlYWYoc3RydWN0IGJ0 cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmKQogCXJldHVybiAwOwog fQogCitpbnQgYnRyZnNfY2hlY2tfbGVhZl9mdWxsKHN0cnVjdCBidHJmc19yb290ICpyb290LCBz dHJ1Y3QgZXh0ZW50X2J1ZmZlciAqbGVhZikKK3sKKwlyZXR1cm4gY2hlY2tfbGVhZihyb290LCBs ZWFmLCB0cnVlKTsKK30KKworaW50IGJ0cmZzX2NoZWNrX2xlYWZfcmVsYXhlZChzdHJ1Y3QgYnRy ZnNfcm9vdCAqcm9vdCwKKwkJCSAgICAgc3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYpCit7CisJ cmV0dXJuIGNoZWNrX2xlYWYocm9vdCwgbGVhZiwgZmFsc2UpOworfQorCiBpbnQgYnRyZnNfY2hl Y2tfbm9kZShzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGV4dGVudF9idWZmZXIgKm5v ZGUpCiB7CiAJdW5zaWduZWQgbG9uZyBuciA9IGJ0cmZzX2hlYWRlcl9ucml0ZW1zKG5vZGUpOwpk aWZmIC0tZ2l0IGEvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmggYi9mcy9idHJmcy90cmVlLWNoZWNr ZXIuaAppbmRleCA5NmM0ODZlOTVkNzAuLjNkNTNlOGQ2ZmRhMCAxMDA2NDQKLS0tIGEvZnMvYnRy ZnMvdHJlZS1jaGVja2VyLmgKKysrIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmgKQEAgLTIwLDcg KzIwLDE5IEBACiAjaW5jbHVkZSAiY3RyZWUuaCIKICNpbmNsdWRlICJleHRlbnRfaW8uaCIKIAot aW50IGJ0cmZzX2NoZWNrX2xlYWYoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBleHRl bnRfYnVmZmVyICpsZWFmKTsKKy8qCisgKiBDb21wcmVoZW5zaXZlIGxlYWYgY2hlY2tlci4KKyAq IFdpbGwgY2hlY2sgbm90IG9ubHkgdGhlIGl0ZW0gcG9pbnRlcnMsIGJ1dCBhbHNvIGV2ZXJ5IHBv c3NpYmxlIG1lbWJlcgorICogaW4gaXRlbSBkYXRhLgorICovCitpbnQgYnRyZnNfY2hlY2tfbGVh Zl9mdWxsKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqbGVh Zik7CisKKy8qCisgKiBMZXNzIHN0cmljdCBsZWFmIGNoZWNrZXIuCisgKiBXaWxsIG9ubHkgY2hl Y2sgaXRlbSBwb2ludGVycywgbm90IHJlYWRpbmcgaXRlbSBkYXRhLgorICovCitpbnQgYnRyZnNf Y2hlY2tfbGVhZl9yZWxheGVkKHN0cnVjdCBidHJmc19yb290ICpyb290LAorCQkJICAgICBzdHJ1 Y3QgZXh0ZW50X2J1ZmZlciAqbGVhZik7CiBpbnQgYnRyZnNfY2hlY2tfbm9kZShzdHJ1Y3QgYnRy ZnNfcm9vdCAqcm9vdCwgc3RydWN0IGV4dGVudF9idWZmZXIgKm5vZGUpOwogCiAjZW5kaWYKLS0g CkJlbiBIdXRjaGluZ3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAgICAg ICBDb2RldGhpbmsgTHRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAgICAg ICAgIERhbGUgSG91c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNYW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSAxZjhj NzYwMDlkMTczYjc1M2I3MmEwMjZjMGNlMDY5ZGYzMDA0OWQwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KRGF0ZTogV2VkLCA4IE5vdiAyMDE3 IDA4OjU0OjI1ICswODAwClN1YmplY3Q6IFtQQVRDSCAyMi8zMV0gYnRyZnM6IHRyZWUtY2hlY2tl cjogQWRkIGNoZWNrZXIgZm9yIGRpciBpdGVtCgpjb21taXQgYWQ3YjAzNjhmMzNjZmZlNjdmZWNk MzAyMDI4OTE1OTI2ZTUwZWY3ZSB1cHN0cmVhbS4KCkFkZCBjaGVja2VyIGZvciBkaXIgaXRlbSwg Zm9yIGtleSB0eXBlcyBESVJfSVRFTSwgRElSX0lOREVYIGFuZApYQVRUUl9JVEVNLgoKVGhpcyBj aGVja2VyIGRvZXMgY29tcHJlaGVuc2l2ZSBjaGVja3MgZm9yOgoKMSkgZGlyX2l0ZW0gaGVhZGVy IGFuZCBpdHMgZGF0YSBzaXplCiAgIEFnYWluc3QgaXRlbSBib3VuZGFyeSBhbmQgbWF4aW11bSBu YW1lL3hhdHRyIGxlbmd0aC4KICAgVGhpcyBwYXJ0IGlzIG1vc3RseSB0aGUgc2FtZSBhcyBvbGQg dmVyaWZ5X2Rpcl9pdGVtKCkuCgoyKSBkaXJfdHlwZQogICBBZ2FpbnN0IG1heGltdW0gZmlsZSB0 eXBlcywgYW5kIGFnYWluc3Qga2V5IHR5cGUuCiAgIFNpbmNlIFhBVFRSIGtleSBzaG91bGQgb25s eSBoYXZlIEZUX1hBVFRSIGRpciBpdGVtLCBhbmQgbm9ybWFsIGRpcgogICBpdGVtIHR5cGUgc2hv dWxkIG5vdCBoYXZlIFhBVFRSIGtleS4KCiAgIFRoZSBjaGVjayBiZXR3ZWVuIGtleS0+dHlwZSBh bmQgZGlyX3R5cGUgaXMgbmV3bHkgaW50cm9kdWNlZCBieSB0aGlzCiAgIHBhdGNoLgoKMykgbmFt ZSBoYXNoCiAgIEZvciBYQVRUUiBhbmQgRElSX0lURU0ga2V5LCBrZXktPm9mZnNldCBpcyBuYW1l IGhhc2ggKGNyYzMyYykuCiAgIENoZWNrIHRoZSBoYXNoIG9mIHRoZSBuYW1lIGFnYWluc3QgdGhl IGtleSB0byBlbnN1cmUgaXQncyBjb3JyZWN0LgoKICAgVGhlIG5hbWUgaGFzaCBjaGVjayBpcyBv bmx5IGZvdW5kIGluIGJ0cmZzLXByb2dzIGJlZm9yZSB0aGlzIHBhdGNoLgoKU2lnbmVkLW9mZi1i eTogUXUgV2VucnVvIDx3cXVAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBOaWtvbGF5IEJvcmlzb3Yg PG5ib3Jpc292QHN1c2UuY29tPgpSZXZpZXdlZC1ieTogU3UgWXVlIDxzdXkuZm5zdEBjbi5mdWpp dHN1LmNvbT4KUmV2aWV3ZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2ln bmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpbYndoOiBCYWNrcG9y dGVkIHRvIDQuNDogQlRSRlNfTUFYX1hBVFRSX1NJWkUoKSB0YWtlcyBhIHJvb3QgaW5zdGVhZCBv ZiBhbgogZnNfaW5mbywgYW5kIHlpZWxkcyBhIHZhbHVlIG9mIHR5cGUgc2l6ZV90IGluc3RlYWQg b2YgdW5zaWduZWQgaW50XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hp bmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy90cmVlLWNoZWNrZXIuYyB8IDE0MSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCAxNDEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3RyZWUtY2hl Y2tlci5jIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKaW5kZXggN2JkMmFiNDdmNDIyLi4wNzE1 YjM5YWZhNWQgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCisrKyBiL2ZzL2J0 cmZzL3RyZWUtY2hlY2tlci5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAidHJlZS1jaGVj a2VyLmgiCiAjaW5jbHVkZSAiZGlzay1pby5oIgogI2luY2x1ZGUgImNvbXByZXNzaW9uLmgiCisj aW5jbHVkZSAiaGFzaC5oIgogCiAjZGVmaW5lIENPUlJVUFQocmVhc29uLCBlYiwgcm9vdCwgc2xv dCkJCQkJCVwKIAlidHJmc19jcml0KHJvb3QtPmZzX2luZm8sCQkJCQlcCkBAIC0xNzYsNiArMTc3 LDE0MSBAQCBzdGF0aWMgaW50IGNoZWNrX2NzdW1faXRlbShzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9v dCwgc3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYsCiB9CiAKIC8qCisgKiBDdXN0b21pemVkIHJl cG9ydGVkIGZvciBkaXJfaXRlbSwgb25seSBpbXBvcnRhbnQgbmV3IGluZm8gaXMga2V5LT5vYmpl Y3RpZCwKKyAqIHdoaWNoIHJlcHJlc2VudHMgaW5vZGUgbnVtYmVyCisgKi8KK19fcHJpbnRmKDQs IDUpCitzdGF0aWMgdm9pZCBkaXJfaXRlbV9lcnIoY29uc3Qgc3RydWN0IGJ0cmZzX3Jvb3QgKnJv b3QsCisJCQkgY29uc3Qgc3RydWN0IGV4dGVudF9idWZmZXIgKmViLCBpbnQgc2xvdCwKKwkJCSBj b25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlzdHJ1Y3QgYnRyZnNfa2V5IGtleTsKKwlzdHJ1Y3Qg dmFfZm9ybWF0IHZhZjsKKwl2YV9saXN0IGFyZ3M7CisKKwlidHJmc19pdGVtX2tleV90b19jcHUo ZWIsICZrZXksIHNsb3QpOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisKKwl2YWYuZm10ID0gZm10 OworCXZhZi52YSA9ICZhcmdzOworCisJYnRyZnNfY3JpdChyb290LT5mc19pbmZvLAorCSJjb3Jy dXB0ICVzOiByb290PSVsbHUgYmxvY2s9JWxsdSBzbG90PSVkIGlubz0lbGx1LCAlcFYiLAorCQli dHJmc19oZWFkZXJfbGV2ZWwoZWIpID09IDAgPyAibGVhZiIgOiAibm9kZSIsIHJvb3QtPm9iamVj dGlkLAorCQlidHJmc19oZWFkZXJfYnl0ZW5yKGViKSwgc2xvdCwga2V5Lm9iamVjdGlkLCAmdmFm KTsKKwl2YV9lbmQoYXJncyk7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tfZGlyX2l0ZW0oc3RydWN0 IGJ0cmZzX3Jvb3QgKnJvb3QsCisJCQkgIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmLAorCQkJ ICBzdHJ1Y3QgYnRyZnNfa2V5ICprZXksIGludCBzbG90KQoreworCXN0cnVjdCBidHJmc19kaXJf aXRlbSAqZGk7CisJdTMyIGl0ZW1fc2l6ZSA9IGJ0cmZzX2l0ZW1fc2l6ZV9ucihsZWFmLCBzbG90 KTsKKwl1MzIgY3VyID0gMDsKKworCWRpID0gYnRyZnNfaXRlbV9wdHIobGVhZiwgc2xvdCwgc3Ry dWN0IGJ0cmZzX2Rpcl9pdGVtKTsKKwl3aGlsZSAoY3VyIDwgaXRlbV9zaXplKSB7CisJCWNoYXIg bmFtZWJ1ZlttYXgoQlRSRlNfTkFNRV9MRU4sIFhBVFRSX05BTUVfTUFYKV07CisJCXUzMiBuYW1l X2xlbjsKKwkJdTMyIGRhdGFfbGVuOworCQl1MzIgbWF4X25hbWVfbGVuOworCQl1MzIgdG90YWxf c2l6ZTsKKwkJdTMyIG5hbWVfaGFzaDsKKwkJdTggZGlyX3R5cGU7CisKKwkJLyogaGVhZGVyIGl0 c2VsZiBzaG91bGQgbm90IGNyb3NzIGl0ZW0gYm91bmRhcnkgKi8KKwkJaWYgKGN1ciArIHNpemVv ZigqZGkpID4gaXRlbV9zaXplKSB7CisJCQlkaXJfaXRlbV9lcnIocm9vdCwgbGVhZiwgc2xvdCwK KwkJImRpciBpdGVtIGhlYWRlciBjcm9zc2VzIGl0ZW0gYm91bmRhcnksIGhhdmUgJWx1IGJvdW5k YXJ5ICV1IiwKKwkJCQljdXIgKyBzaXplb2YoKmRpKSwgaXRlbV9zaXplKTsKKwkJCXJldHVybiAt RVVDTEVBTjsKKwkJfQorCisJCS8qIGRpciB0eXBlIGNoZWNrICovCisJCWRpcl90eXBlID0gYnRy ZnNfZGlyX3R5cGUobGVhZiwgZGkpOworCQlpZiAoZGlyX3R5cGUgPj0gQlRSRlNfRlRfTUFYKSB7 CisJCQlkaXJfaXRlbV9lcnIocm9vdCwgbGVhZiwgc2xvdCwKKwkJCSJpbnZhbGlkIGRpciBpdGVt IHR5cGUsIGhhdmUgJXUgZXhwZWN0IFswLCAldSkiLAorCQkJCWRpcl90eXBlLCBCVFJGU19GVF9N QVgpOworCQkJcmV0dXJuIC1FVUNMRUFOOworCQl9CisKKwkJaWYgKGtleS0+dHlwZSA9PSBCVFJG U19YQVRUUl9JVEVNX0tFWSAmJgorCQkgICAgZGlyX3R5cGUgIT0gQlRSRlNfRlRfWEFUVFIpIHsK KwkJCWRpcl9pdGVtX2Vycihyb290LCBsZWFmLCBzbG90LAorCQkiaW52YWxpZCBkaXIgaXRlbSB0 eXBlIGZvciBYQVRUUiBrZXksIGhhdmUgJXUgZXhwZWN0ICV1IiwKKwkJCQlkaXJfdHlwZSwgQlRS RlNfRlRfWEFUVFIpOworCQkJcmV0dXJuIC1FVUNMRUFOOworCQl9CisJCWlmIChkaXJfdHlwZSA9 PSBCVFJGU19GVF9YQVRUUiAmJgorCQkgICAga2V5LT50eXBlICE9IEJUUkZTX1hBVFRSX0lURU1f S0VZKSB7CisJCQlkaXJfaXRlbV9lcnIocm9vdCwgbGVhZiwgc2xvdCwKKwkJCSJ4YXR0ciBkaXIg dHlwZSBmb3VuZCBmb3Igbm9uLVhBVFRSIGtleSIpOworCQkJcmV0dXJuIC1FVUNMRUFOOworCQl9 CisJCWlmIChkaXJfdHlwZSA9PSBCVFJGU19GVF9YQVRUUikKKwkJCW1heF9uYW1lX2xlbiA9IFhB VFRSX05BTUVfTUFYOworCQllbHNlCisJCQltYXhfbmFtZV9sZW4gPSBCVFJGU19OQU1FX0xFTjsK KworCQkvKiBOYW1lL2RhdGEgbGVuZ3RoIGNoZWNrICovCisJCW5hbWVfbGVuID0gYnRyZnNfZGly X25hbWVfbGVuKGxlYWYsIGRpKTsKKwkJZGF0YV9sZW4gPSBidHJmc19kaXJfZGF0YV9sZW4obGVh ZiwgZGkpOworCQlpZiAobmFtZV9sZW4gPiBtYXhfbmFtZV9sZW4pIHsKKwkJCWRpcl9pdGVtX2Vy cihyb290LCBsZWFmLCBzbG90LAorCQkJImRpciBpdGVtIG5hbWUgbGVuIHRvbyBsb25nLCBoYXZl ICV1IG1heCAldSIsCisJCQkJbmFtZV9sZW4sIG1heF9uYW1lX2xlbik7CisJCQlyZXR1cm4gLUVV Q0xFQU47CisJCX0KKwkJaWYgKG5hbWVfbGVuICsgZGF0YV9sZW4gPiBCVFJGU19NQVhfWEFUVFJf U0laRShyb290KSkgeworCQkJZGlyX2l0ZW1fZXJyKHJvb3QsIGxlYWYsIHNsb3QsCisJCQkiZGly IGl0ZW0gbmFtZSBhbmQgZGF0YSBsZW4gdG9vIGxvbmcsIGhhdmUgJXUgbWF4ICV6dSIsCisJCQkJ bmFtZV9sZW4gKyBkYXRhX2xlbiwKKwkJCQlCVFJGU19NQVhfWEFUVFJfU0laRShyb290KSk7CisJ CQlyZXR1cm4gLUVVQ0xFQU47CisJCX0KKworCQlpZiAoZGF0YV9sZW4gJiYgZGlyX3R5cGUgIT0g QlRSRlNfRlRfWEFUVFIpIHsKKwkJCWRpcl9pdGVtX2Vycihyb290LCBsZWFmLCBzbG90LAorCQkJ ImRpciBpdGVtIHdpdGggaW52YWxpZCBkYXRhIGxlbiwgaGF2ZSAldSBleHBlY3QgMCIsCisJCQkJ ZGF0YV9sZW4pOworCQkJcmV0dXJuIC1FVUNMRUFOOworCQl9CisKKwkJdG90YWxfc2l6ZSA9IHNp emVvZigqZGkpICsgbmFtZV9sZW4gKyBkYXRhX2xlbjsKKworCQkvKiBoZWFkZXIgYW5kIG5hbWUv ZGF0YSBzaG91bGQgbm90IGNyb3NzIGl0ZW0gYm91bmRhcnkgKi8KKwkJaWYgKGN1ciArIHRvdGFs X3NpemUgPiBpdGVtX3NpemUpIHsKKwkJCWRpcl9pdGVtX2Vycihyb290LCBsZWFmLCBzbG90LAor CQkiZGlyIGl0ZW0gZGF0YSBjcm9zc2VzIGl0ZW0gYm91bmRhcnksIGhhdmUgJXUgYm91bmRhcnkg JXUiLAorCQkJCWN1ciArIHRvdGFsX3NpemUsIGl0ZW1fc2l6ZSk7CisJCQlyZXR1cm4gLUVVQ0xF QU47CisJCX0KKworCQkvKgorCQkgKiBTcGVjaWFsIGNoZWNrIGZvciBYQVRUUi9ESVJfSVRFTSwg YXMga2V5LT5vZmZzZXQgaXMgbmFtZQorCQkgKiBoYXNoLCBzaG91bGQgbWF0Y2ggaXRzIG5hbWUK KwkJICovCisJCWlmIChrZXktPnR5cGUgPT0gQlRSRlNfRElSX0lURU1fS0VZIHx8CisJCSAgICBr ZXktPnR5cGUgPT0gQlRSRlNfWEFUVFJfSVRFTV9LRVkpIHsKKwkJCXJlYWRfZXh0ZW50X2J1ZmZl cihsZWFmLCBuYW1lYnVmLAorCQkJCQkodW5zaWduZWQgbG9uZykoZGkgKyAxKSwgbmFtZV9sZW4p OworCQkJbmFtZV9oYXNoID0gYnRyZnNfbmFtZV9oYXNoKG5hbWVidWYsIG5hbWVfbGVuKTsKKwkJ CWlmIChrZXktPm9mZnNldCAhPSBuYW1lX2hhc2gpIHsKKwkJCQlkaXJfaXRlbV9lcnIocm9vdCwg bGVhZiwgc2xvdCwKKwkJIm5hbWUgaGFzaCBtaXNtYXRjaCB3aXRoIGtleSwgaGF2ZSAweCUwMTZ4 IGV4cGVjdCAweCUwMTZsbHgiLAorCQkJCQluYW1lX2hhc2gsIGtleS0+b2Zmc2V0KTsKKwkJCQly ZXR1cm4gLUVVQ0xFQU47CisJCQl9CisJCX0KKwkJY3VyICs9IHRvdGFsX3NpemU7CisJCWRpID0g KHN0cnVjdCBidHJmc19kaXJfaXRlbSAqKSgodm9pZCAqKWRpICsgdG90YWxfc2l6ZSk7CisJfQor CXJldHVybiAwOworfQorCisvKgogICogQ29tbW9uIHBvaW50IHRvIHN3aXRjaCB0aGUgaXRlbS1z cGVjaWZpYyB2YWxpZGF0aW9uLgogICovCiBzdGF0aWMgaW50IGNoZWNrX2xlYWZfaXRlbShzdHJ1 Y3QgYnRyZnNfcm9vdCAqcm9vdCwKQEAgLTE5MSw2ICszMjcsMTEgQEAgc3RhdGljIGludCBjaGVj a19sZWFmX2l0ZW0oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJY2FzZSBCVFJGU19FWFRFTlRf Q1NVTV9LRVk6CiAJCXJldCA9IGNoZWNrX2NzdW1faXRlbShyb290LCBsZWFmLCBrZXksIHNsb3Qp OwogCQlicmVhazsKKwljYXNlIEJUUkZTX0RJUl9JVEVNX0tFWToKKwljYXNlIEJUUkZTX0RJUl9J TkRFWF9LRVk6CisJY2FzZSBCVFJGU19YQVRUUl9JVEVNX0tFWToKKwkJcmV0ID0gY2hlY2tfZGly X2l0ZW0ocm9vdCwgbGVhZiwga2V5LCBzbG90KTsKKwkJYnJlYWs7CiAJfQogCXJldHVybiByZXQ7 CiB9Ci0tIApCZW4gSHV0Y2hpbmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIgICAgICAgICAgICAgICAg ICAgICAgICAgQ29kZXRoaW5rIEx0ZApodHRwczovL3d3dy5jb2RldGhpbmsuY28udWsvICAgICAg ICAgICAgICAgICBEYWxlIEhvdXNlLCAzNSBEYWxlIFN0cmVldAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTWFuY2hlc3RlciwgTTEgMkhGLCBVbml0ZWQgS2luZ2RvbQoKCkZy b20gN2YwNzRiNWZhNTAzMzViMzljN2U1ZmUxOTZlMjU2MDI1YWQzYTU5NyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogQXJuZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KRGF0ZTogV2Vk LCA2IERlYyAyMDE3IDE1OjE4OjE0ICswMTAwClN1YmplY3Q6IFtQQVRDSCAyMy8zMV0gYnRyZnM6 IHRyZWUtY2hlY2tlcjogdXNlICV6dSBmb3JtYXQgc3RyaW5nIGZvciBzaXplX3QKCmNvbW1pdCA3 Y2ZhZDY1Mjk3YmZlMGFhMjk5NmNkNzJkMjFjODk4YWE4NDQzNmQ5IHVwc3RyZWFtLgoKVGhlIHJl dHVybiB2YWx1ZSBvZiBzaXplb2YoKSBpcyBvZiB0eXBlIHNpemVfdCwgc28gd2UgbXVzdCBwcmlu dCBpdAp1c2luZyB0aGUgJXogZm9ybWF0IG1vZGlmaWVyIHJhdGhlciB0aGFuICVsIHRvIGF2b2lk IHRoaXMgd2FybmluZwpvbiBzb21lIGFyY2hpdGVjdHVyZXM6Cgpmcy9idHJmcy90cmVlLWNoZWNr ZXIuYzogSW4gZnVuY3Rpb24gJ2NoZWNrX2Rpcl9pdGVtJzoKZnMvYnRyZnMvdHJlZS1jaGVja2Vy LmM6MjczOjUwOiBlcnJvcjogZm9ybWF0ICclbHUnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAn bG9uZyB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgNSBoYXMgdHlwZSAndTMyJyB7YWthICd1 bnNpZ25lZCBpbnQnfSBbLVdlcnJvcj1mb3JtYXQ9XQoKRml4ZXM6IDAwNTg4N2YyZTNlMCAoImJ0 cmZzOiB0cmVlLWNoZWNrZXI6IEFkZCBjaGVja2VyIGZvciBkaXIgaXRlbSIpClNpZ25lZC1vZmYt Ynk6IEFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+ClJldmlld2VkLWJ5OiBEYXZpZCBTdGVy YmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJi YUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bj b2RldGhpbmsuY28udWs+Ci0tLQogZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9m cy9idHJmcy90cmVlLWNoZWNrZXIuYyBiL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCmluZGV4IDA3 MTViMzlhZmE1ZC4uNzE5OTdhZjM1ZjNlIDEwMDY0NAotLS0gYS9mcy9idHJmcy90cmVlLWNoZWNr ZXIuYworKysgYi9mcy9idHJmcy90cmVlLWNoZWNrZXIuYwpAQCAtMjIzLDcgKzIyMyw3IEBAIHN0 YXRpYyBpbnQgY2hlY2tfZGlyX2l0ZW0oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJCS8qIGhl YWRlciBpdHNlbGYgc2hvdWxkIG5vdCBjcm9zcyBpdGVtIGJvdW5kYXJ5ICovCiAJCWlmIChjdXIg KyBzaXplb2YoKmRpKSA+IGl0ZW1fc2l6ZSkgewogCQkJZGlyX2l0ZW1fZXJyKHJvb3QsIGxlYWYs IHNsb3QsCi0JCSJkaXIgaXRlbSBoZWFkZXIgY3Jvc3NlcyBpdGVtIGJvdW5kYXJ5LCBoYXZlICVs dSBib3VuZGFyeSAldSIsCisJCSJkaXIgaXRlbSBoZWFkZXIgY3Jvc3NlcyBpdGVtIGJvdW5kYXJ5 LCBoYXZlICV6dSBib3VuZGFyeSAldSIsCiAJCQkJY3VyICsgc2l6ZW9mKCpkaSksIGl0ZW1fc2l6 ZSk7CiAJCQlyZXR1cm4gLUVVQ0xFQU47CiAJCX0KLS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3YXJl IERldmVsb3BlciAgICAgICAgICAgICAgICAgICAgICAgICBDb2RldGhpbmsgTHRkCmh0dHBzOi8v d3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAgICAgICAgIERhbGUgSG91c2UsIDM1IERhbGUg U3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5jaGVzdGVyLCBN MSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSAzNDlmZWY0ZDA1Y2U2ZjJhYzQzMTY2YWI1MWE5 OGMwMWM3MGM1NDY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBTdGVyYmEg PGRzdGVyYmFAc3VzZS5jb20+CkRhdGU6IFdlZCwgMTAgSmFuIDIwMTggMTU6MTM6MDcgKzAxMDAK U3ViamVjdDogW1BBVENIIDI0LzMxXSBidHJmczogdHJlZS1jaGVjazogcmVkdWNlIHN0YWNrIGNv bnN1bXB0aW9uIGluCiBjaGVja19kaXJfaXRlbQoKY29tbWl0IGUyNjgzZmM5ZDIxOTQzMGY1Yjc4 ODg5YjUwY2RlN2Y0MGVmZWJhN2IgdXBzdHJlYW0uCgpJJ3ZlIG5vdGljZWQgdGhhdCB0aGUgdXBk YXRlZCBpdGVtIGNoZWNrZXIgc3RhY2sgY29uc3VtcHRpb24gaW5jcmVhc2VkCmRyYW1hdGljYWxs eSBpbiA1NDJmNTM4NWUyMGNmOTc0NDcgKCJidHJmczogdHJlZS1jaGVja2VyOiBBZGQgY2hlY2tl cgpmb3IgZGlyIGl0ZW0iKQoKdHJlZS1jaGVja2VyLmM6Y2hlY2tfbGVhZiAgICAgICAgICAgICAg ICAgICAgKzU1MiAoMTc2IC0+IDcyOCkKClRoZSBhcnJheSBpcyAyNTUgYnl0ZXMgbG9uZywgZHlu YW1pYyBhbGxvY2F0aW9uIHdvdWxkIHNsb3cgZG93biB0aGUKc2FuaXR5IGNoZWNrcyBzbyBpdCdz IG1vcmUgcmVhc29uYWJsZSB0byBrZWVwIGl0IG9uLXN0YWNrLiBNb3ZpbmcgdGhlCnZhcmlhYmxl IHRvIHRoZSBzY29wZSBvZiB1c2UgcmVkdWNlcyB0aGUgc3RhY2sgdXNhZ2UgYWdhaW4KCnRyZWUt Y2hlY2tlci5jOmNoZWNrX2xlYWYgICAgICAgICAgICAgICAgICAgIC0yNjQgKDcyOCAtPiA0NjQp CgpSZXZpZXdlZC1ieTogSm9zZWYgQmFjaWsgPGpiYWNpa0BmYi5jb20+ClJldmlld2VkLWJ5OiBR dSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3Rl cmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdz QGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy90cmVlLWNoZWNrZXIuYyB8IDMgKystCiAx IGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMgYi9mcy9idHJmcy90cmVlLWNoZWNrZXIuYwppbmRl eCA3MTk5N2FmMzVmM2UuLjdkNGU0ZmU2OTc2MiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdHJlZS1j aGVja2VyLmMKKysrIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKQEAgLTIxMiw3ICsyMTIsNiBA QCBzdGF0aWMgaW50IGNoZWNrX2Rpcl9pdGVtKHN0cnVjdCBidHJmc19yb290ICpyb290LAogCiAJ ZGkgPSBidHJmc19pdGVtX3B0cihsZWFmLCBzbG90LCBzdHJ1Y3QgYnRyZnNfZGlyX2l0ZW0pOwog CXdoaWxlIChjdXIgPCBpdGVtX3NpemUpIHsKLQkJY2hhciBuYW1lYnVmW21heChCVFJGU19OQU1F X0xFTiwgWEFUVFJfTkFNRV9NQVgpXTsKIAkJdTMyIG5hbWVfbGVuOwogCQl1MzIgZGF0YV9sZW47 CiAJCXUzMiBtYXhfbmFtZV9sZW47CkBAIC0yOTUsNiArMjk0LDggQEAgc3RhdGljIGludCBjaGVj a19kaXJfaXRlbShzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwKIAkJICovCiAJCWlmIChrZXktPnR5 cGUgPT0gQlRSRlNfRElSX0lURU1fS0VZIHx8CiAJCSAgICBrZXktPnR5cGUgPT0gQlRSRlNfWEFU VFJfSVRFTV9LRVkpIHsKKwkJCWNoYXIgbmFtZWJ1ZlttYXgoQlRSRlNfTkFNRV9MRU4sIFhBVFRS X05BTUVfTUFYKV07CisKIAkJCXJlYWRfZXh0ZW50X2J1ZmZlcihsZWFmLCBuYW1lYnVmLAogCQkJ CQkodW5zaWduZWQgbG9uZykoZGkgKyAxKSwgbmFtZV9sZW4pOwogCQkJbmFtZV9oYXNoID0gYnRy ZnNfbmFtZV9oYXNoKG5hbWVidWYsIG5hbWVfbGVuKTsKLS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3 YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAgICAgICBDb2RldGhpbmsgTHRkCmh0dHBz Oi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAgICAgICAgIERhbGUgSG91c2UsIDM1IERh bGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5jaGVzdGVy LCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSBkYjQzZmY0NDA4ZmNkYjQwNGU1NTkzYmNi ODQwMjhhMWMxNzYwZTczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBRdSBXZW5ydW8g PHdxdUBzdXNlLmNvbT4KRGF0ZTogVHVlLCAzIEp1bCAyMDE4IDE3OjEwOjA1ICswODAwClN1Ympl Y3Q6IFtQQVRDSCAyNS8zMV0gYnRyZnM6IHRyZWUtY2hlY2tlcjogVmVyaWZ5IGJsb2NrX2dyb3Vw X2l0ZW0KCmNvbW1pdCBmY2U0NjZlYWI3YWM2YmFhOWQyZGNkODhhYmNmOTQ1YmUzZDRhMDg5IHVw c3RyZWFtLgoKQSBjcmFmdGVkIGltYWdlIHdpdGggaW52YWxpZCBibG9jayBncm91cCBpdGVtcyBj b3VsZCBtYWtlIGZyZWUgc3BhY2UgY2FjaGUKY29kZSB0byBjYXVzZSBwYW5pYy4KCldlIGNvdWxk IGRldGVjdCBzdWNoIGludmFsaWQgYmxvY2sgZ3JvdXAgaXRlbSBieSBjaGVja2luZzoKMSkgSXRl bSBzaXplCiAgIEtub3duIGZpeGVkIHZhbHVlLgoyKSBCbG9jayBncm91cCBzaXplIChrZXkub2Zm c2V0KQogICBXZSBoYXZlIGFuIHVwcGVyIGxpbWl0IG9uIGJsb2NrIGdyb3VwIGl0ZW0gKDEwRykK MykgQ2h1bmsgb2JqZWN0aWQKICAgS25vd24gZml4ZWQgdmFsdWUuCjQpIFR5cGUKICAgT25seSA0 IHZhbGlkIHR5cGUgdmFsdWVzLCBEQVRBLCBNRVRBREFUQSwgU1lTVEVNIGFuZCBEQVRBfE1FVEFE QVRBLgogICBObyBtb3JlIHRoYW4gMSBiaXQgc2V0IGZvciBwcm9maWxlIHR5cGUuCjUpIFVzZWQg c3BhY2UKICAgTm8gbW9yZSB0aGFuIHRoZSBibG9jayBncm91cCBzaXplLgoKVGhpcyBzaG91bGQg YWxsb3cgYnRyZnMgdG8gZGV0ZWN0IGFuZCByZWZ1c2UgdG8gbW91bnQgdGhlIGNyYWZ0ZWQgaW1h Z2UuCgpMaW5rOiBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcuY2dpP2lkPTE5 OTg0OQpSZXBvcnRlZC1ieTogWHUgV2VuIDx3ZW4ueHVAZ2F0ZWNoLmVkdT4KU2lnbmVkLW9mZi1i eTogUXUgV2VucnVvIDx3cXVAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBHdSBKaW54aWFuZyA8Z3Vq eEBjbi5mdWppdHN1LmNvbT4KUmV2aWV3ZWQtYnk6IE5pa29sYXkgQm9yaXNvdiA8bmJvcmlzb3ZA c3VzZS5jb20+ClRlc3RlZC1ieTogR3UgSmlueGlhbmcgPGd1anhAY24uZnVqaXRzdS5jb20+ClJl dmlld2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KW2J3aDogQmFja3BvcnRlZCB0byA0LjQ6 CiAtIEluIGNoZWNrX2xlYWZfaXRlbSgpLCBwYXNzIHJvb3QtPmZzX2luZm8gdG8gY2hlY2tfYmxv Y2tfZ3JvdXBfaXRlbSgpCiAtIEluY2x1ZGUgPGxpbnV4L3NpemVzLmg+IChpbiBjdHJlZS5oLCB0 byBtYXRjaCB1cHN0cmVhbSkKIC0gQWRqdXN0IGNvbnRleHRdClNpZ25lZC1vZmYtYnk6IEJlbiBI dXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZzL2J0cmZzL2N0 cmVlLmggICAgICAgIHwgICAxICsKIGZzL2J0cmZzL3RyZWUtY2hlY2tlci5jIHwgMTAwICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZnMvYnRyZnMvdm9s dW1lcy5jICAgICAgfCAgIDIgKy0KIGZzL2J0cmZzL3ZvbHVtZXMuaCAgICAgIHwgICAyICsKIDQg ZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9mcy9idHJmcy9jdHJlZS5oIGIvZnMvYnRyZnMvY3RyZWUuaAppbmRleCAzYTE2MmRkYmU4 YjcuLjRhOTFkMzExOWU1OSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvY3RyZWUuaAorKysgYi9mcy9i dHJmcy9jdHJlZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8bGludXgvYnRyZnMuaD4K ICNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KICNpbmNsdWRlIDxsaW51eC9zZWN1cml0eS5o PgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CiAjaW5jbHVkZSAiZXh0ZW50X2lvLmgiCiAjaW5j bHVkZSAiZXh0ZW50X21hcC5oIgogI2luY2x1ZGUgImFzeW5jLXRocmVhZC5oIgpkaWZmIC0tZ2l0 IGEvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMgYi9mcy9idHJmcy90cmVlLWNoZWNrZXIuYwppbmRl eCA3ZDRlNGZlNjk3NjIuLmNkNzA2NGUwYzNjNSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdHJlZS1j aGVja2VyLmMKKysrIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKQEAgLTMxLDYgKzMxLDcgQEAK ICNpbmNsdWRlICJkaXNrLWlvLmgiCiAjaW5jbHVkZSAiY29tcHJlc3Npb24uaCIKICNpbmNsdWRl ICJoYXNoLmgiCisjaW5jbHVkZSAidm9sdW1lcy5oIgogCiAjZGVmaW5lIENPUlJVUFQocmVhc29u LCBlYiwgcm9vdCwgc2xvdCkJCQkJCVwKIAlidHJmc19jcml0KHJvb3QtPmZzX2luZm8sCQkJCQlc CkBAIC0zMTIsNiArMzEzLDEwMiBAQCBzdGF0aWMgaW50IGNoZWNrX2Rpcl9pdGVtKHN0cnVjdCBi dHJmc19yb290ICpyb290LAogCXJldHVybiAwOwogfQogCitfX3ByaW50Zig0LCA1KQorX19jb2xk CitzdGF0aWMgdm9pZCBibG9ja19ncm91cF9lcnIoY29uc3Qgc3RydWN0IGJ0cmZzX2ZzX2luZm8g KmZzX2luZm8sCisJCQkgICAgY29uc3Qgc3RydWN0IGV4dGVudF9idWZmZXIgKmViLCBpbnQgc2xv dCwKKwkJCSAgICBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlzdHJ1Y3QgYnRyZnNfa2V5IGtl eTsKKwlzdHJ1Y3QgdmFfZm9ybWF0IHZhZjsKKwl2YV9saXN0IGFyZ3M7CisKKwlidHJmc19pdGVt X2tleV90b19jcHUoZWIsICZrZXksIHNsb3QpOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisKKwl2 YWYuZm10ID0gZm10OworCXZhZi52YSA9ICZhcmdzOworCisJYnRyZnNfY3JpdChmc19pbmZvLAor CSJjb3JydXB0ICVzOiByb290PSVsbHUgYmxvY2s9JWxsdSBzbG90PSVkIGJnX3N0YXJ0PSVsbHUg YmdfbGVuPSVsbHUsICVwViIsCisJCWJ0cmZzX2hlYWRlcl9sZXZlbChlYikgPT0gMCA/ICJsZWFm IiA6ICJub2RlIiwKKwkJYnRyZnNfaGVhZGVyX293bmVyKGViKSwgYnRyZnNfaGVhZGVyX2J5dGVu cihlYiksIHNsb3QsCisJCWtleS5vYmplY3RpZCwga2V5Lm9mZnNldCwgJnZhZik7CisJdmFfZW5k KGFyZ3MpOworfQorCitzdGF0aWMgaW50IGNoZWNrX2Jsb2NrX2dyb3VwX2l0ZW0oc3RydWN0IGJ0 cmZzX2ZzX2luZm8gKmZzX2luZm8sCisJCQkJICBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqbGVhZiwK KwkJCQkgIHN0cnVjdCBidHJmc19rZXkgKmtleSwgaW50IHNsb3QpCit7CisJc3RydWN0IGJ0cmZz X2Jsb2NrX2dyb3VwX2l0ZW0gYmdpOworCXUzMiBpdGVtX3NpemUgPSBidHJmc19pdGVtX3NpemVf bnIobGVhZiwgc2xvdCk7CisJdTY0IGZsYWdzOworCXU2NCB0eXBlOworCisJLyoKKwkgKiBIZXJl IHdlIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IGFsaWdubWVudCBzaW5jZSBleHRlbnQgYWxsb2Nh dG9yIGNhbgorCSAqIGhhbmRsZSBpdC4gIFdlIGNhcmUgbW9yZSBhYm91dCB0aGUgc2l6ZSwgYXMg aWYgb25lIGJsb2NrIGdyb3VwIGlzCisJICogbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplLCBpdCdz IG11c3QgYmUgc29tZSBvYnZpb3VzIGNvcnJ1cHRpb24uCisJICovCisJaWYgKGtleS0+b2Zmc2V0 ID4gQlRSRlNfTUFYX0RBVEFfQ0hVTktfU0laRSB8fCBrZXktPm9mZnNldCA9PSAwKSB7CisJCWJs b2NrX2dyb3VwX2Vycihmc19pbmZvLCBsZWFmLCBzbG90LAorCQkJImludmFsaWQgYmxvY2sgZ3Jv dXAgc2l6ZSwgaGF2ZSAlbGx1IGV4cGVjdCAoMCwgJWxsdV0iLAorCQkJCWtleS0+b2Zmc2V0LCBC VFJGU19NQVhfREFUQV9DSFVOS19TSVpFKTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKworCWlm IChpdGVtX3NpemUgIT0gc2l6ZW9mKGJnaSkpIHsKKwkJYmxvY2tfZ3JvdXBfZXJyKGZzX2luZm8s IGxlYWYsIHNsb3QsCisJCQkiaW52YWxpZCBpdGVtIHNpemUsIGhhdmUgJXUgZXhwZWN0ICV6dSIs CisJCQkJaXRlbV9zaXplLCBzaXplb2YoYmdpKSk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9CisK KwlyZWFkX2V4dGVudF9idWZmZXIobGVhZiwgJmJnaSwgYnRyZnNfaXRlbV9wdHJfb2Zmc2V0KGxl YWYsIHNsb3QpLAorCQkJICAgc2l6ZW9mKGJnaSkpOworCWlmIChidHJmc19ibG9ja19ncm91cF9j aHVua19vYmplY3RpZCgmYmdpKSAhPQorCSAgICBCVFJGU19GSVJTVF9DSFVOS19UUkVFX09CSkVD VElEKSB7CisJCWJsb2NrX2dyb3VwX2Vycihmc19pbmZvLCBsZWFmLCBzbG90LAorCQkiaW52YWxp ZCBibG9jayBncm91cCBjaHVuayBvYmplY3RpZCwgaGF2ZSAlbGx1IGV4cGVjdCAlbGx1IiwKKwkJ CQlidHJmc19ibG9ja19ncm91cF9jaHVua19vYmplY3RpZCgmYmdpKSwKKwkJCQlCVFJGU19GSVJT VF9DSFVOS19UUkVFX09CSkVDVElEKTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKworCWlmIChi dHJmc19ibG9ja19ncm91cF91c2VkKCZiZ2kpID4ga2V5LT5vZmZzZXQpIHsKKwkJYmxvY2tfZ3Jv dXBfZXJyKGZzX2luZm8sIGxlYWYsIHNsb3QsCisJCQkiaW52YWxpZCBibG9jayBncm91cCB1c2Vk LCBoYXZlICVsbHUgZXhwZWN0IFswLCAlbGx1KSIsCisJCQkJYnRyZnNfYmxvY2tfZ3JvdXBfdXNl ZCgmYmdpKSwga2V5LT5vZmZzZXQpOworCQlyZXR1cm4gLUVVQ0xFQU47CisJfQorCisJZmxhZ3Mg PSBidHJmc19ibG9ja19ncm91cF9mbGFncygmYmdpKTsKKwlpZiAoaHdlaWdodDY0KGZsYWdzICYg QlRSRlNfQkxPQ0tfR1JPVVBfUFJPRklMRV9NQVNLKSA+IDEpIHsKKwkJYmxvY2tfZ3JvdXBfZXJy KGZzX2luZm8sIGxlYWYsIHNsb3QsCisiaW52YWxpZCBwcm9maWxlIGZsYWdzLCBoYXZlIDB4JWxs eCAoJWx1IGJpdHMgc2V0KSBleHBlY3Qgbm8gbW9yZSB0aGFuIDEgYml0IHNldCIsCisJCQlmbGFn cyAmIEJUUkZTX0JMT0NLX0dST1VQX1BST0ZJTEVfTUFTSywKKwkJCWh3ZWlnaHQ2NChmbGFncyAm IEJUUkZTX0JMT0NLX0dST1VQX1BST0ZJTEVfTUFTSykpOworCQlyZXR1cm4gLUVVQ0xFQU47CisJ fQorCisJdHlwZSA9IGZsYWdzICYgQlRSRlNfQkxPQ0tfR1JPVVBfVFlQRV9NQVNLOworCWlmICh0 eXBlICE9IEJUUkZTX0JMT0NLX0dST1VQX0RBVEEgJiYKKwkgICAgdHlwZSAhPSBCVFJGU19CTE9D S19HUk9VUF9NRVRBREFUQSAmJgorCSAgICB0eXBlICE9IEJUUkZTX0JMT0NLX0dST1VQX1NZU1RF TSAmJgorCSAgICB0eXBlICE9IChCVFJGU19CTE9DS19HUk9VUF9NRVRBREFUQSB8CisJCQkgICBC VFJGU19CTE9DS19HUk9VUF9EQVRBKSkgeworCQlibG9ja19ncm91cF9lcnIoZnNfaW5mbywgbGVh Ziwgc2xvdCwKKyJpbnZhbGlkIHR5cGUsIGhhdmUgMHglbGx4ICglbHUgYml0cyBzZXQpIGV4cGVj dCBlaXRoZXIgMHglbGx4LCAweCVsbHgsIDB4JWxsdSBvciAweCVsbHgiLAorCQkJdHlwZSwgaHdl aWdodDY0KHR5cGUpLAorCQkJQlRSRlNfQkxPQ0tfR1JPVVBfREFUQSwgQlRSRlNfQkxPQ0tfR1JP VVBfTUVUQURBVEEsCisJCQlCVFJGU19CTE9DS19HUk9VUF9TWVNURU0sCisJCQlCVFJGU19CTE9D S19HUk9VUF9NRVRBREFUQSB8IEJUUkZTX0JMT0NLX0dST1VQX0RBVEEpOworCQlyZXR1cm4gLUVV Q0xFQU47CisJfQorCXJldHVybiAwOworfQorCiAvKgogICogQ29tbW9uIHBvaW50IHRvIHN3aXRj aCB0aGUgaXRlbS1zcGVjaWZpYyB2YWxpZGF0aW9uLgogICovCkBAIC0zMzMsNiArNDMwLDkgQEAg c3RhdGljIGludCBjaGVja19sZWFmX2l0ZW0oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJY2Fz ZSBCVFJGU19YQVRUUl9JVEVNX0tFWToKIAkJcmV0ID0gY2hlY2tfZGlyX2l0ZW0ocm9vdCwgbGVh Ziwga2V5LCBzbG90KTsKIAkJYnJlYWs7CisJY2FzZSBCVFJGU19CTE9DS19HUk9VUF9JVEVNX0tF WToKKwkJcmV0ID0gY2hlY2tfYmxvY2tfZ3JvdXBfaXRlbShyb290LT5mc19pbmZvLCBsZWFmLCBr ZXksIHNsb3QpOworCQlicmVhazsKIAl9CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2Zz L2J0cmZzL3ZvbHVtZXMuYyBiL2ZzL2J0cmZzL3ZvbHVtZXMuYwppbmRleCA3NTIxMTYzMGE4NjQu LmRhOTRkMmZjMTQxOSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdm9sdW1lcy5jCisrKyBiL2ZzL2J0 cmZzL3ZvbHVtZXMuYwpAQCAtNDU0MCw3ICs0NTQwLDcgQEAgc3RhdGljIGludCBfX2J0cmZzX2Fs bG9jX2NodW5rKHN0cnVjdCBidHJmc190cmFuc19oYW5kbGUgKnRyYW5zLAogCiAJaWYgKHR5cGUg JiBCVFJGU19CTE9DS19HUk9VUF9EQVRBKSB7CiAJCW1heF9zdHJpcGVfc2l6ZSA9IDEwMjQgKiAx MDI0ICogMTAyNDsKLQkJbWF4X2NodW5rX3NpemUgPSAxMCAqIG1heF9zdHJpcGVfc2l6ZTsKKwkJ bWF4X2NodW5rX3NpemUgPSBCVFJGU19NQVhfREFUQV9DSFVOS19TSVpFOwogCQlpZiAoIWRldnNf bWF4KQogCQkJZGV2c19tYXggPSBCVFJGU19NQVhfREVWUyhpbmZvLT5jaHVua19yb290KTsKIAl9 IGVsc2UgaWYgKHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9NRVRBREFUQSkgewpkaWZmIC0tZ2l0 IGEvZnMvYnRyZnMvdm9sdW1lcy5oIGIvZnMvYnRyZnMvdm9sdW1lcy5oCmluZGV4IGQ1Yzg0ZjZi MTM1My4uM2M2NTFkZjQyMGJlIDEwMDY0NAotLS0gYS9mcy9idHJmcy92b2x1bWVzLmgKKysrIGIv ZnMvYnRyZnMvdm9sdW1lcy5oCkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSA8bGludXgvYnRy ZnMuaD4KICNpbmNsdWRlICJhc3luYy10aHJlYWQuaCIKIAorI2RlZmluZSBCVFJGU19NQVhfREFU QV9DSFVOS19TSVpFCSgxMFVMTCAqIFNaXzFHKQorCiBleHRlcm4gc3RydWN0IG11dGV4IHV1aWRf bXV0ZXg7CiAKICNkZWZpbmUgQlRSRlNfU1RSSVBFX0xFTgkoNjQgKiAxMDI0KQotLSAKQmVuIEh1 dGNoaW5ncywgU29mdHdhcmUgRGV2ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0 aGluayBMdGQKaHR0cHM6Ly93d3cuY29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFs ZSBIb3VzZSwgMzUgRGFsZSBTdHJlZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1hbmNoZXN0ZXIsIE0xIDJIRiwgVW5pdGVkIEtpbmdkb20KCgpGcm9tIGExOTNiYzgwNDY4 MTE5NzhiOWI0NDhhYzQzN2FhYzdhOTAxMTA4ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IFF1IFdlbnJ1byA8d3F1QHN1c2UuY29tPgpEYXRlOiBUdWUsIDMgSnVsIDIwMTggMTc6MTA6 MDYgKzA4MDAKU3ViamVjdDogW1BBVENIIDI2LzMxXSBidHJmczogdHJlZS1jaGVja2VyOiBEZXRl Y3QgaW52YWxpZCBhbmQgZW1wdHkgZXNzZW50aWFsCiB0cmVlcwoKY29tbWl0IGJhNDgwZGQ0ZGI5 ZjE3OTg1NDFlYjJkMWM0MjNmYzk1ZmVlZThkMzYgdXBzdHJlYW0uCgpBIGNyYWZ0ZWQgaW1hZ2Ug aGFzIGVtcHR5IHJvb3QgdHJlZSBibG9jaywgd2hpY2ggd2lsbCBsYXRlciBjYXVzZSBOVUxMCnBv aW50ZXIgZGVyZWZlcmVuY2UuCgpUaGUgZm9sbG93aW5nIHRyZWVzIHNob3VsZCBuZXZlciBiZSBl bXB0eToKMSkgVHJlZSByb290CiAgIE11c3QgY29udGFpbiBhdCBsZWFzdCByb290IGl0ZW1zIGZv ciBleHRlbnQgdHJlZSwgZGV2aWNlIHRyZWUgYW5kIGZzCiAgIHRyZWUKCjIpIENodW5rIHRyZWUK ICAgT3Igd2UgY2FuJ3QgZXZlbiBib290c3RyYXAgYXMgaXQgY29udGFpbnMgdGhlIG1hcHBpbmcu CgozKSBGcyB0cmVlCiAgIEF0IGxlYXN0IGlub2RlIGl0ZW0gZm9yIHRvcCBsZXZlbCBpbm9kZSAo LikuCgo0KSBEZXZpY2UgdHJlZQogICBEZXYgZXh0ZW50cyBmb3IgY2h1bmtzCgo1KSBFeHRlbnQg dHJlZQogICBNdXN0IGhhdmUgY29ycmVzcG9uZGluZyBleHRlbnQgZm9yIGVhY2ggY2h1bmsuCgpJ ZiBhbnkgb2YgdGhlbSBpcyBlbXB0eSwgd2UgYXJlIHN1cmUgdGhlIGZzIGlzIGNvcnJ1cHRlZCBh bmQgbm8gbmVlZCB0bwptb3VudCBpdC4KCkxpbms6IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk5ODQ3ClJlcG9ydGVkLWJ5OiBYdSBXZW4gPHdlbi54dUBnYXRl Y2guZWR1PgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KVGVzdGVkLWJ5 OiBHdSBKaW54aWFuZyA8Z3VqeEBjbi5mdWppdHN1LmNvbT4KUmV2aWV3ZWQtYnk6IERhdmlkIFN0 ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3Rl cmJhQHN1c2UuY29tPgpbYndoOiBCYWNrcG9ydGVkIHRvIDQuNDogUGFzcyByb290IGluc3RlYWQg b2YgZnNfaW5mbyB0byBnZW5lcmljX2VycigpXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdz IDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy90cmVlLWNoZWNr ZXIuYyB8IDE1ICsrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9mcy9idHJmcy90cmVlLWNoZWNrZXIuYyBi L2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCmluZGV4IGNkNzA2NGUwYzNjNS4uZjI2NjU5YWE1ZmQ1 IDEwMDY0NAotLS0gYS9mcy9idHJmcy90cmVlLWNoZWNrZXIuYworKysgYi9mcy9idHJmcy90cmVl LWNoZWNrZXIuYwpAQCAtNDU2LDkgKzQ1NiwyMiBAQCBzdGF0aWMgaW50IGNoZWNrX2xlYWYoc3Ry dWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBleHRlbnRfYnVmZmVyICpsZWFmLAogCSAqIHNr aXAgdGhpcyBjaGVjayBmb3IgcmVsb2NhdGlvbiB0cmVlcy4KIAkgKi8KIAlpZiAobnJpdGVtcyA9 PSAwICYmICFidHJmc19oZWFkZXJfZmxhZyhsZWFmLCBCVFJGU19IRUFERVJfRkxBR19SRUxPQykp IHsKKwkJdTY0IG93bmVyID0gYnRyZnNfaGVhZGVyX293bmVyKGxlYWYpOwogCQlzdHJ1Y3QgYnRy ZnNfcm9vdCAqY2hlY2tfcm9vdDsKIAotCQlrZXkub2JqZWN0aWQgPSBidHJmc19oZWFkZXJfb3du ZXIobGVhZik7CisJCS8qIFRoZXNlIHRyZWVzIG11c3QgbmV2ZXIgYmUgZW1wdHkgKi8KKwkJaWYg KG93bmVyID09IEJUUkZTX1JPT1RfVFJFRV9PQkpFQ1RJRCB8fAorCQkgICAgb3duZXIgPT0gQlRS RlNfQ0hVTktfVFJFRV9PQkpFQ1RJRCB8fAorCQkgICAgb3duZXIgPT0gQlRSRlNfRVhURU5UX1RS RUVfT0JKRUNUSUQgfHwKKwkJICAgIG93bmVyID09IEJUUkZTX0RFVl9UUkVFX09CSkVDVElEIHx8 CisJCSAgICBvd25lciA9PSBCVFJGU19GU19UUkVFX09CSkVDVElEIHx8CisJCSAgICBvd25lciA9 PSBCVFJGU19EQVRBX1JFTE9DX1RSRUVfT0JKRUNUSUQpIHsKKwkJCWdlbmVyaWNfZXJyKHJvb3Qs IGxlYWYsIDAsCisJCQkiaW52YWxpZCByb290LCByb290ICVsbHUgbXVzdCBuZXZlciBiZSBlbXB0 eSIsCisJCQkJICAgIG93bmVyKTsKKwkJCXJldHVybiAtRVVDTEVBTjsKKwkJfQorCQlrZXkub2Jq ZWN0aWQgPSBvd25lcjsKIAkJa2V5LnR5cGUgPSBCVFJGU19ST09UX0lURU1fS0VZOwogCQlrZXku b2Zmc2V0ID0gKHU2NCktMTsKIAotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUgRGV2ZWxvcGVy ICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93d3cuY29kZXRo aW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBTdHJlZXQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0xIDJIRiwgVW5p dGVkIEtpbmdkb20KCgpGcm9tIGJhYTI5ZDZlNjUwZTFiMGQxMWJmMGM5MjhhNjdkOGM4MjRjZWFm OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEd1IEppbnhpYW5nIDxndWp4QGNuLmZ1 aml0c3UuY29tPgpEYXRlOiBXZWQsIDQgSnVsIDIwMTggMTg6MTY6MzkgKzA4MDAKU3ViamVjdDog W1BBVENIIDI3LzMxXSBidHJmczogdmFsaWRhdGUgdHlwZSB3aGVuIHJlYWRpbmcgYSBjaHVuawoK Y29tbWl0IDMxNTQwOWIwMDk4ZmIyNjUxZDg2NTUzZjA0MzZiNzA1MDJiMjliYjIgdXBzdHJlYW0u CgpSZXBvcnRlZCBpbiBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcuY2dpP2lk PTE5OTgzOSwgd2l0aCBhbgppbWFnZSB0aGF0IGhhcyBhbiBpbnZhbGlkIGNodW5rIHR5cGUgYnV0 IGRvZXMgbm90IHJldHVybiBhbiBlcnJvci4KCkFkZCBjaHVuayB0eXBlIGNoZWNrIGluIGJ0cmZz X2NoZWNrX2NodW5rX3ZhbGlkLCB0byBkZXRlY3QgdGhlIHdyb25nCnR5cGUgY29tYmluYXRpb25z LgoKTGluazogaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk4 MzkKUmVwb3J0ZWQtYnk6IFh1IFdlbiA8d2VuLnh1QGdhdGVjaC5lZHU+ClJldmlld2VkLWJ5OiBR dSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogR3UgSmlueGlhbmcgPGd1anhA Y24uZnVqaXRzdS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNl LmNvbT4KW2J3aDogQmFja3BvcnRlZCB0byA0LjQ6IFVzZSByb290LT5mc19pbmZvIGluc3RlYWQg b2YgZnNfaW5mb10KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bj b2RldGhpbmsuY28udWs+Ci0tLQogZnMvYnRyZnMvdm9sdW1lcy5jIHwgMjggKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9mcy9idHJmcy92b2x1bWVzLmMgYi9mcy9idHJmcy92b2x1bWVzLmMKaW5kZXggZGE5 NGQyZmMxNDE5Li41ZThmZThmMzk0MmQgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3ZvbHVtZXMuYwor KysgYi9mcy9idHJmcy92b2x1bWVzLmMKQEAgLTYyMTgsNiArNjIxOCw4IEBAIHN0YXRpYyBpbnQg YnRyZnNfY2hlY2tfY2h1bmtfdmFsaWQoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJdTE2IG51 bV9zdHJpcGVzOwogCXUxNiBzdWJfc3RyaXBlczsKIAl1NjQgdHlwZTsKKwl1NjQgZmVhdHVyZXM7 CisJYm9vbCBtaXhlZCA9IGZhbHNlOwogCiAJbGVuZ3RoID0gYnRyZnNfY2h1bmtfbGVuZ3RoKGxl YWYsIGNodW5rKTsKIAlzdHJpcGVfbGVuID0gYnRyZnNfY2h1bmtfc3RyaXBlX2xlbihsZWFmLCBj aHVuayk7CkBAIC02MjU4LDYgKzYyNjAsMzIgQEAgc3RhdGljIGludCBidHJmc19jaGVja19jaHVu a192YWxpZChzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwKIAkJCSAgYnRyZnNfY2h1bmtfdHlwZShs ZWFmLCBjaHVuaykpOwogCQlyZXR1cm4gLUVJTzsKIAl9CisKKwlpZiAoKHR5cGUgJiBCVFJGU19C TE9DS19HUk9VUF9UWVBFX01BU0spID09IDApIHsKKwkJYnRyZnNfZXJyKHJvb3QtPmZzX2luZm8s ICJtaXNzaW5nIGNodW5rIHR5cGUgZmxhZzogMHglbGx4IiwgdHlwZSk7CisJCXJldHVybiAtRUlP OworCX0KKworCWlmICgodHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1NZU1RFTSkgJiYKKwkgICAg KHR5cGUgJiAoQlRSRlNfQkxPQ0tfR1JPVVBfTUVUQURBVEEgfCBCVFJGU19CTE9DS19HUk9VUF9E QVRBKSkpIHsKKwkJYnRyZnNfZXJyKHJvb3QtPmZzX2luZm8sCisJCQkic3lzdGVtIGNodW5rIHdp dGggZGF0YSBvciBtZXRhZGF0YSB0eXBlOiAweCVsbHgiLCB0eXBlKTsKKwkJcmV0dXJuIC1FSU87 CisJfQorCisJZmVhdHVyZXMgPSBidHJmc19zdXBlcl9pbmNvbXBhdF9mbGFncyhyb290LT5mc19p bmZvLT5zdXBlcl9jb3B5KTsKKwlpZiAoZmVhdHVyZXMgJiBCVFJGU19GRUFUVVJFX0lOQ09NUEFU X01JWEVEX0dST1VQUykKKwkJbWl4ZWQgPSB0cnVlOworCisJaWYgKCFtaXhlZCkgeworCQlpZiAo KHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9NRVRBREFUQSkgJiYKKwkJICAgICh0eXBlICYgQlRS RlNfQkxPQ0tfR1JPVVBfREFUQSkpIHsKKwkJCWJ0cmZzX2Vycihyb290LT5mc19pbmZvLAorCQkJ Im1peGVkIGNodW5rIHR5cGUgaW4gbm9uLW1peGVkIG1vZGU6IDB4JWxseCIsIHR5cGUpOworCQkJ cmV0dXJuIC1FSU87CisJCX0KKwl9CisKIAlpZiAoKHR5cGUgJiBCVFJGU19CTE9DS19HUk9VUF9S QUlEMTAgJiYgc3ViX3N0cmlwZXMgIT0gMikgfHwKIAkgICAgKHR5cGUgJiBCVFJGU19CTE9DS19H Uk9VUF9SQUlEMSAmJiBudW1fc3RyaXBlcyA8IDEpIHx8CiAJICAgICh0eXBlICYgQlRSRlNfQkxP Q0tfR1JPVVBfUkFJRDUgJiYgbnVtX3N0cmlwZXMgPCAyKSB8fAotLSAKQmVuIEh1dGNoaW5ncywg U29mdHdhcmUgRGV2ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQK aHR0cHM6Ly93d3cuY29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwg MzUgRGFsZSBTdHJlZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNo ZXN0ZXIsIE0xIDJIRiwgVW5pdGVkIEtpbmdkb20KCgpGcm9tIDI0ZWVlYjAzMDllMzk0M2U1MDE4 OTY4MjU0MWMyZDM5MGE0Yzc1MTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFF1IFdl bnJ1byA8d3F1QHN1c2UuY29tPgpEYXRlOiBXZWQsIDEgQXVnIDIwMTggMTA6Mzc6MTYgKzA4MDAK U3ViamVjdDogW1BBVENIIDI4LzMxXSBidHJmczogQ2hlY2sgdGhhdCBlYWNoIGJsb2NrIGdyb3Vw IGhhcyBjb3JyZXNwb25kaW5nCiBjaHVuayBhdCBtb3VudCB0aW1lCgpjb21taXQgNTE0YzdkY2E4 NWEwYmY0MGJlOTg0ZGFiMGI0Nzc0MDNhNmRiOTAxZiB1cHN0cmVhbS4KCkEgY3JhZnRlZCBidHJm cyBpbWFnZSB3aXRoIGluY29ycmVjdCBjaHVuazwtPmJsb2NrIGdyb3VwIG1hcHBpbmcgd2lsbAp0 cmlnZ2VyIGEgbG90IG9mIHVuZXhwZWN0ZWQgdGhpbmdzIGFzIHRoZSBtYXBwaW5nIGlzIGVzc2Vu dGlhbC4KCkFsdGhvdWdoIHRoZSBwcm9ibGVtIGNhbiBiZSBjYXVnaHQgYnkgYmxvY2sgZ3JvdXAg aXRlbSBjaGVja2VyCmFkZGVkIGluICJidHJmczogdHJlZS1jaGVja2VyOiBWZXJpZnkgYmxvY2tf Z3JvdXBfaXRlbSIsIGl0J3Mgc3RpbGwgbm90CnN1ZmZpY2llbnQuICBBIHN1ZmZpY2llbnRseSB2 YWxpZCBibG9jayBncm91cCBpdGVtIGNhbiBwYXNzIHRoZSBjaGVjawphZGRlZCBieSB0aGUgbWVu dGlvbmVkIHBhdGNoIGJ1dCBjb3VsZCBmYWlsIHRvIG1hdGNoIHRoZSBleGlzdGluZyBjaHVuay4K ClRoaXMgcGF0Y2ggd2lsbCBhZGQgZXh0cmEgYmxvY2sgZ3JvdXAgLT4gY2h1bmsgbWFwcGluZyBj aGVjaywgdG8gZW5zdXJlCndlIGhhdmUgYSBjb21wbGV0ZWx5IG1hdGNoaW5nIChzdGFydCwgbGVu LCBmbGFncykgY2h1bmsgZm9yIGVhY2ggYmxvY2sKZ3JvdXAgYXQgbW91bnQgdGltZS4KCkhlcmUg d2UgcmV1c2UgdGhlIG9yaWdpbmFsIGhlbHBlciBmaW5kX2ZpcnN0X2Jsb2NrX2dyb3VwKCksIHdo aWNoIGlzCmFscmVhZHkgZG9pbmcgdGhlIGJhc2ljIGJnIC0+IGNodW5rIGNoZWNrcywgYWRkaW5n IGZ1cnRoZXIgY2hlY2tzIG9mIHRoZQpzdGFydC9sZW4gYW5kIHR5cGUgZmxhZ3MuCgpMaW5rOiBo dHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTgzNwpSZXBvcnRl ZC1ieTogWHUgV2VuIDx3ZW4ueHVAZ2F0ZWNoLmVkdT4KU2lnbmVkLW9mZi1ieTogUXUgV2VucnVv IDx3cXVAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBTdSBZdWUgPHN1eS5mbnN0QGNuLmZ1aml0c3Uu Y29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpTaWduZWQt b2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+Cltid2g6IEJhY2twb3J0ZWQg dG8gNC40OiBVc2Ugcm9vdC0+ZnNfaW5mbyBpbnN0ZWFkIG9mIGZzX2luZm9dClNpZ25lZC1vZmYt Ynk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZz L2J0cmZzL2V4dGVudC10cmVlLmMgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysrKystCiAx IGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL2ZzL2J0cmZzL2V4dGVudC10cmVlLmMgYi9mcy9idHJmcy9leHRlbnQtdHJlZS5jCmluZGV4 IDE0NTQ5Mzg3YjUxOC4uZjBmOTUzODFhZTgwIDEwMDY0NAotLS0gYS9mcy9idHJmcy9leHRlbnQt dHJlZS5jCisrKyBiL2ZzL2J0cmZzL2V4dGVudC10cmVlLmMKQEAgLTk0ODcsNiArOTQ4Nyw4IEBA IHN0YXRpYyBpbnQgZmluZF9maXJzdF9ibG9ja19ncm91cChzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9v dCwKIAlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3QgYnRyZnNfa2V5IGZvdW5kX2tleTsKIAlzdHJ1Y3Qg ZXh0ZW50X2J1ZmZlciAqbGVhZjsKKwlzdHJ1Y3QgYnRyZnNfYmxvY2tfZ3JvdXBfaXRlbSBiZzsK Kwl1NjQgZmxhZ3M7CiAJaW50IHNsb3Q7CiAKIAlyZXQgPSBidHJmc19zZWFyY2hfc2xvdChOVUxM LCByb290LCBrZXksIHBhdGgsIDAsIDApOwpAQCAtOTUyMSw4ICs5NTIzLDMyIEBAIHN0YXRpYyBp bnQgZmluZF9maXJzdF9ibG9ja19ncm91cChzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwKIAkJCSJs b2dpY2FsICVsbHUgbGVuICVsbHUgZm91bmQgYmcgYnV0IG5vIHJlbGF0ZWQgY2h1bmsiLAogCQkJ CQkgIGZvdW5kX2tleS5vYmplY3RpZCwgZm91bmRfa2V5Lm9mZnNldCk7CiAJCQkJcmV0ID0gLUVO T0VOVDsKKwkJCX0gZWxzZSBpZiAoZW0tPnN0YXJ0ICE9IGZvdW5kX2tleS5vYmplY3RpZCB8fAor CQkJCSAgIGVtLT5sZW4gIT0gZm91bmRfa2V5Lm9mZnNldCkgeworCQkJCWJ0cmZzX2Vycihyb290 LT5mc19pbmZvLAorCQkiYmxvY2sgZ3JvdXAgJWxsdSBsZW4gJWxsdSBtaXNtYXRjaCB3aXRoIGNo dW5rICVsbHUgbGVuICVsbHUiLAorCQkJCQkgIGZvdW5kX2tleS5vYmplY3RpZCwgZm91bmRfa2V5 Lm9mZnNldCwKKwkJCQkJICBlbS0+c3RhcnQsIGVtLT5sZW4pOworCQkJCXJldCA9IC1FVUNMRUFO OwogCQkJfSBlbHNlIHsKLQkJCQlyZXQgPSAwOworCQkJCXJlYWRfZXh0ZW50X2J1ZmZlcihsZWFm LCAmYmcsCisJCQkJCWJ0cmZzX2l0ZW1fcHRyX29mZnNldChsZWFmLCBzbG90KSwKKwkJCQkJc2l6 ZW9mKGJnKSk7CisJCQkJZmxhZ3MgPSBidHJmc19ibG9ja19ncm91cF9mbGFncygmYmcpICYKKwkJ CQkJQlRSRlNfQkxPQ0tfR1JPVVBfVFlQRV9NQVNLOworCisJCQkJaWYgKGZsYWdzICE9IChlbS0+ bWFwX2xvb2t1cC0+dHlwZSAmCisJCQkJCSAgICAgIEJUUkZTX0JMT0NLX0dST1VQX1RZUEVfTUFT SykpIHsKKwkJCQkJYnRyZnNfZXJyKHJvb3QtPmZzX2luZm8sCisiYmxvY2sgZ3JvdXAgJWxsdSBs ZW4gJWxsdSB0eXBlIGZsYWdzIDB4JWxseCBtaXNtYXRjaCB3aXRoIGNodW5rIHR5cGUgZmxhZ3Mg MHglbGx4IiwKKwkJCQkJCWZvdW5kX2tleS5vYmplY3RpZCwKKwkJCQkJCWZvdW5kX2tleS5vZmZz ZXQsIGZsYWdzLAorCQkJCQkJKEJUUkZTX0JMT0NLX0dST1VQX1RZUEVfTUFTSyAmCisJCQkJCQkg ZW0tPm1hcF9sb29rdXAtPnR5cGUpKTsKKwkJCQkJcmV0ID0gLUVVQ0xFQU47CisJCQkJfSBlbHNl IHsKKwkJCQkJcmV0ID0gMDsKKwkJCQl9CiAJCQl9CiAJCQlmcmVlX2V4dGVudF9tYXAoZW0pOwog CQkJZ290byBvdXQ7Ci0tIApCZW4gSHV0Y2hpbmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIgICAgICAg ICAgICAgICAgICAgICAgICAgQ29kZXRoaW5rIEx0ZApodHRwczovL3d3dy5jb2RldGhpbmsuY28u dWsvICAgICAgICAgICAgICAgICBEYWxlIEhvdXNlLCAzNSBEYWxlIFN0cmVldAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuY2hlc3RlciwgTTEgMkhGLCBVbml0ZWQgS2lu Z2RvbQoKCkZyb20gZDY3MmMyYTZjMDlmODAwNzFhYWU0MzcxMDE4NzMyOTYxMDljYmIzYSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUXUgV2VucnVvIDx3cXVAc3VzZS5jb20+CkRhdGU6 IFdlZCwgMSBBdWcgMjAxOCAxMDozNzoxNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMjkvMzFdIGJ0 cmZzOiBWZXJpZnkgdGhhdCBldmVyeSBjaHVuayBoYXMgY29ycmVzcG9uZGluZyBibG9jawogZ3Jv dXAgYXQgbW91bnQgdGltZQoKY29tbWl0IDdlZjQ5NTE1ZmE2NzI3Y2I0YjZmMmY1YjBmZmJjNWZj MjBhOWY4YzYgdXBzdHJlYW0uCgpJZiBhIGNyYWZ0ZWQgaW1hZ2UgaGFzIG1pc3NpbmcgYmxvY2sg Z3JvdXAgaXRlbXMsIGl0IGNvdWxkIGNhdXNlCnVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIGJyZWFr cyB0aGUgYXNzdW1wdGlvbiBvZiAxOjEgY2h1bms8LT5ibG9jayBncm91cAptYXBwaW5nLgoKQWx0 aG91Z2ggd2UgaGF2ZSB0aGUgYmxvY2sgZ3JvdXAgLT4gY2h1bmsgbWFwcGluZyBjaGVjaywgd2Ug c3RpbGwgbmVlZApjaHVuayAtPiBibG9jayBncm91cCBtYXBwaW5nIGNoZWNrLgoKVGhpcyBwYXRj aCB3aWxsIGRvIGV4dHJhIGNoZWNrIHRvIGVuc3VyZSBlYWNoIGNodW5rIGhhcyBpdHMKY29ycmVz cG9uZGluZyBibG9jayBncm91cC4KCkxpbms6IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9MTk5ODQ3ClJlcG9ydGVkLWJ5OiBYdSBXZW4gPHdlbi54dUBnYXRlY2gu ZWR1PgpTaWduZWQtb2ZmLWJ5OiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6 IEd1IEppbnhpYW5nIDxndWp4QGNuLmZ1aml0c3UuY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgU3Rl cmJhIDxkc3RlcmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVy YmFAc3VzZS5jb20+Cltid2g6IEJhY2twb3J0ZWQgdG8gNC40OiBhZGp1c3QgY29udGV4dF0KU2ln bmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+ Ci0tLQogZnMvYnRyZnMvZXh0ZW50LXRyZWUuYyB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNTcgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2V4dGVudC10cmVlLmMg Yi9mcy9idHJmcy9leHRlbnQtdHJlZS5jCmluZGV4IGYwZjk1MzgxYWU4MC4uOTc4YmJmZWQ1YTJj IDEwMDY0NAotLS0gYS9mcy9idHJmcy9leHRlbnQtdHJlZS5jCisrKyBiL2ZzL2J0cmZzL2V4dGVu dC10cmVlLmMKQEAgLTk3NjUsNiArOTc2NSw2MiBAQCBidHJmc19jcmVhdGVfYmxvY2tfZ3JvdXBf Y2FjaGUoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHU2NCBzdGFydCwgdTY0IHNpemUpCiAJcmV0 dXJuIGNhY2hlOwogfQogCisKKy8qCisgKiBJdGVyYXRlIGFsbCBjaHVua3MgYW5kIHZlcmlmeSB0 aGF0IGVhY2ggb2YgdGhlbSBoYXMgdGhlIGNvcnJlc3BvbmRpbmcgYmxvY2sKKyAqIGdyb3VwCisg Ki8KK3N0YXRpYyBpbnQgY2hlY2tfY2h1bmtfYmxvY2tfZ3JvdXBfbWFwcGluZ3Moc3RydWN0IGJ0 cmZzX2ZzX2luZm8gKmZzX2luZm8pCit7CisJc3RydWN0IGJ0cmZzX21hcHBpbmdfdHJlZSAqbWFw X3RyZWUgPSAmZnNfaW5mby0+bWFwcGluZ190cmVlOworCXN0cnVjdCBleHRlbnRfbWFwICplbTsK KwlzdHJ1Y3QgYnRyZnNfYmxvY2tfZ3JvdXBfY2FjaGUgKmJnOworCXU2NCBzdGFydCA9IDA7CisJ aW50IHJldCA9IDA7CisKKwl3aGlsZSAoMSkgeworCQlyZWFkX2xvY2soJm1hcF90cmVlLT5tYXBf dHJlZS5sb2NrKTsKKwkJLyoKKwkJICogbG9va3VwX2V4dGVudF9tYXBwaW5nIHdpbGwgcmV0dXJu IHRoZSBmaXJzdCBleHRlbnQgbWFwCisJCSAqIGludGVyc2VjdGluZyB0aGUgcmFuZ2UsIHNvIHNl dHRpbmcgQGxlbiB0byAxIGlzIGVub3VnaCB0bworCQkgKiBnZXQgdGhlIGZpcnN0IGNodW5rLgor CQkgKi8KKwkJZW0gPSBsb29rdXBfZXh0ZW50X21hcHBpbmcoJm1hcF90cmVlLT5tYXBfdHJlZSwg c3RhcnQsIDEpOworCQlyZWFkX3VubG9jaygmbWFwX3RyZWUtPm1hcF90cmVlLmxvY2spOworCQlp ZiAoIWVtKQorCQkJYnJlYWs7CisKKwkJYmcgPSBidHJmc19sb29rdXBfYmxvY2tfZ3JvdXAoZnNf aW5mbywgZW0tPnN0YXJ0KTsKKwkJaWYgKCFiZykgeworCQkJYnRyZnNfZXJyKGZzX2luZm8sCisJ ImNodW5rIHN0YXJ0PSVsbHUgbGVuPSVsbHUgZG9lc24ndCBoYXZlIGNvcnJlc3BvbmRpbmcgYmxv Y2sgZ3JvdXAiLAorCQkJCSAgICAgZW0tPnN0YXJ0LCBlbS0+bGVuKTsKKwkJCXJldCA9IC1FVUNM RUFOOworCQkJZnJlZV9leHRlbnRfbWFwKGVtKTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChiZy0+ a2V5Lm9iamVjdGlkICE9IGVtLT5zdGFydCB8fAorCQkgICAgYmctPmtleS5vZmZzZXQgIT0gZW0t PmxlbiB8fAorCQkgICAgKGJnLT5mbGFncyAmIEJUUkZTX0JMT0NLX0dST1VQX1RZUEVfTUFTSykg IT0KKwkJICAgIChlbS0+bWFwX2xvb2t1cC0+dHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1RZUEVf TUFTSykpIHsKKwkJCWJ0cmZzX2Vycihmc19pbmZvLAorImNodW5rIHN0YXJ0PSVsbHUgbGVuPSVs bHUgZmxhZ3M9MHglbGx4IGRvZXNuJ3QgbWF0Y2ggYmxvY2sgZ3JvdXAgc3RhcnQ9JWxsdSBsZW49 JWxsdSBmbGFncz0weCVsbHgiLAorCQkJCWVtLT5zdGFydCwgZW0tPmxlbiwKKwkJCQllbS0+bWFw X2xvb2t1cC0+dHlwZSAmIEJUUkZTX0JMT0NLX0dST1VQX1RZUEVfTUFTSywKKwkJCQliZy0+a2V5 Lm9iamVjdGlkLCBiZy0+a2V5Lm9mZnNldCwKKwkJCQliZy0+ZmxhZ3MgJiBCVFJGU19CTE9DS19H Uk9VUF9UWVBFX01BU0spOworCQkJcmV0ID0gLUVVQ0xFQU47CisJCQlmcmVlX2V4dGVudF9tYXAo ZW0pOworCQkJYnRyZnNfcHV0X2Jsb2NrX2dyb3VwKGJnKTsKKwkJCWJyZWFrOworCQl9CisJCXN0 YXJ0ID0gZW0tPnN0YXJ0ICsgZW0tPmxlbjsKKwkJZnJlZV9leHRlbnRfbWFwKGVtKTsKKwkJYnRy ZnNfcHV0X2Jsb2NrX2dyb3VwKGJnKTsKKwl9CisJcmV0dXJuIHJldDsKK30KKwogaW50IGJ0cmZz X3JlYWRfYmxvY2tfZ3JvdXBzKHN0cnVjdCBidHJmc19yb290ICpyb290KQogewogCXN0cnVjdCBi dHJmc19wYXRoICpwYXRoOwpAQCAtOTk1MSw3ICsxMDAwNyw3IEBAIGludCBidHJmc19yZWFkX2Js b2NrX2dyb3VwcyhzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCkKIAl9CiAKIAlpbml0X2dsb2JhbF9i bG9ja19yc3YoaW5mbyk7Ci0JcmV0ID0gMDsKKwlyZXQgPSBjaGVja19jaHVua19ibG9ja19ncm91 cF9tYXBwaW5ncyhpbmZvKTsKIGVycm9yOgogCWJ0cmZzX2ZyZWVfcGF0aChwYXRoKTsKIAlyZXR1 cm4gcmV0OwotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUgRGV2ZWxvcGVyICAgICAgICAgICAg ICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93d3cuY29kZXRoaW5rLmNvLnVrLyAg ICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBTdHJlZXQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0xIDJIRiwgVW5pdGVkIEtpbmdkb20K CgpGcm9tIGUxMDY5YzY2Y2YyMmJmODZmYWIzOWMwYmZlNzZhZGUyYzcyMGIxNDQgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IFF1IFdlbnJ1byA8d3F1QHN1c2UuY29tPgpEYXRlOiBGcmks IDI4IFNlcCAyMDE4IDA3OjU5OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCAzMC8zMV0gYnRyZnM6 IHRyZWUtY2hlY2tlcjogQ2hlY2sgbGV2ZWwgZm9yIGxlYXZlcyBhbmQgbm9kZXMKCmNvbW1pdCBm NTU2ZmFhNDZlYjRlOTZkMGQwNzcyZTc0ZWNmNjY3ODFlMTMyZjcyIHVwc3RyZWFtLgoKQWx0aG91 Z2ggd2UgaGF2ZSB0cmVlIGxldmVsIGNoZWNrIGF0IHRyZWUgcmVhZCBydW50aW1lLCBpdCdzIGNv bXBsZXRlbHkKYmFzZWQgb24gaXRzIHBhcmVudCBsZXZlbC4KV2Ugc3RpbGwgbmVlZCB0byBkbyBh Y2N1cmF0ZSBsZXZlbCBjaGVjayB0byBhdm9pZCBpbnZhbGlkIHRyZWUgYmxvY2tzCnNuZWFrIGlu dG8ga2VybmVsIHNwYWNlLgoKVGhlIGNoZWNrIGl0c2VsZiBpcyBzaW1wbGUsIGZvciBsZWFmIGl0 cyBsZXZlbCBzaG91bGQgYWx3YXlzIGJlIDAuCkZvciBub2RlcyBpdHMgbGV2ZWwgc2hvdWxkIGJl IGluIHJhbmdlIFsxLCBCVFJGU19NQVhfTEVWRUwgLSAxXS4KClNpZ25lZC1vZmYtYnk6IFF1IFdl bnJ1byA8d3F1QHN1c2UuY29tPgpSZXZpZXdlZC1ieTogU3UgWXVlIDxzdXkuZm5zdEBjbi5mdWpp dHN1LmNvbT4KUmV2aWV3ZWQtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KU2ln bmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpbYndoOiBCYWNrcG9y dGVkIHRvIDQuNDoKIC0gUGFzcyByb290IGluc3RlYWQgb2YgZnNfaW5mbyB0byBnZW5lcmljX2Vy cigpCiAtIEFkanVzdCBjb250ZXh0XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4u aHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBmcy9idHJmcy90cmVlLWNoZWNrZXIuYyB8 IDE0ICsrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jIGIvZnMvYnRyZnMvdHJlZS1jaGVja2Vy LmMKaW5kZXggZjI2NjU5YWE1ZmQ1Li4wMzkzNjE2NGE4ZWIgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZz L3RyZWUtY2hlY2tlci5jCisrKyBiL2ZzL2J0cmZzL3RyZWUtY2hlY2tlci5jCkBAIC00NDcsNiAr NDQ3LDEzIEBAIHN0YXRpYyBpbnQgY2hlY2tfbGVhZihzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwg c3RydWN0IGV4dGVudF9idWZmZXIgKmxlYWYsCiAJdTMyIG5yaXRlbXMgPSBidHJmc19oZWFkZXJf bnJpdGVtcyhsZWFmKTsKIAlpbnQgc2xvdDsKIAorCWlmIChidHJmc19oZWFkZXJfbGV2ZWwobGVh ZikgIT0gMCkgeworCQlnZW5lcmljX2Vycihyb290LCBsZWFmLCAwLAorCQkJImludmFsaWQgbGV2 ZWwgZm9yIGxlYWYsIGhhdmUgJWQgZXhwZWN0IDAiLAorCQkJYnRyZnNfaGVhZGVyX2xldmVsKGxl YWYpKTsKKwkJcmV0dXJuIC1FVUNMRUFOOworCX0KKwogCS8qCiAJICogRXh0ZW50IGJ1ZmZlcnMg ZnJvbSBhIHJlbG9jYXRpb24gdHJlZSBoYXZlIGEgb3duZXIgZmllbGQgdGhhdAogCSAqIGNvcnJl c3BvbmRzIHRvIHRoZSBzdWJ2b2x1bWUgdHJlZSB0aGV5IGFyZSBiYXNlZCBvbi4gU28ganVzdCBm cm9tIGFuCkBAIC01ODksOSArNTk2LDE2IEBAIGludCBidHJmc19jaGVja19ub2RlKHN0cnVjdCBi dHJmc19yb290ICpyb290LCBzdHJ1Y3QgZXh0ZW50X2J1ZmZlciAqbm9kZSkKIAl1bnNpZ25lZCBs b25nIG5yID0gYnRyZnNfaGVhZGVyX25yaXRlbXMobm9kZSk7CiAJc3RydWN0IGJ0cmZzX2tleSBr ZXksIG5leHRfa2V5OwogCWludCBzbG90OworCWludCBsZXZlbCA9IGJ0cmZzX2hlYWRlcl9sZXZl bChub2RlKTsKIAl1NjQgYnl0ZW5yOwogCWludCByZXQgPSAwOwogCisJaWYgKGxldmVsIDw9IDAg fHwgbGV2ZWwgPj0gQlRSRlNfTUFYX0xFVkVMKSB7CisJCWdlbmVyaWNfZXJyKHJvb3QsIG5vZGUs IDAsCisJCQkiaW52YWxpZCBsZXZlbCBmb3Igbm9kZSwgaGF2ZSAlZCBleHBlY3QgWzEsICVkXSIs CisJCQlsZXZlbCwgQlRSRlNfTUFYX0xFVkVMIC0gMSk7CisJCXJldHVybiAtRVVDTEVBTjsKKwl9 CiAJaWYgKG5yID09IDAgfHwgbnIgPiBCVFJGU19OT0RFUFRSU19QRVJfQkxPQ0socm9vdCkpIHsK IAkJYnRyZnNfY3JpdChyb290LT5mc19pbmZvLAogImNvcnJ1cHQgbm9kZTogcm9vdD0lbGx1IGJs b2NrPSVsbHUsIG5yaXRlbXMgdG9vICVzLCBoYXZlICVsdSBleHBlY3QgcmFuZ2UgWzEsJXp1XSIs Ci0tIApCZW4gSHV0Y2hpbmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIgICAgICAgICAgICAgICAgICAg ICAgICAgQ29kZXRoaW5rIEx0ZApodHRwczovL3d3dy5jb2RldGhpbmsuY28udWsvICAgICAgICAg ICAgICAgICBEYWxlIEhvdXNlLCAzNSBEYWxlIFN0cmVldAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTWFuY2hlc3RlciwgTTEgMkhGLCBVbml0ZWQgS2luZ2RvbQoKCkZyb20g NTYyMzlkOTQzYTU5MDRkMTQxNzk4OWM5ZDNlNDUxNjRiYWUzMmYzNyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogU2hhb2t1biBaaGFuZyA8emhhbmdzaGFva3VuQGhpc2lsaWNvbi5jb20+ CkRhdGU6IE1vbiwgNSBOb3YgMjAxOCAxODo0OTowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMzEv MzFdIGJ0cmZzOiB0cmVlLWNoZWNrZXI6IEZpeCBtaXNsZWFkaW5nIGdyb3VwIHN5c3RlbQogaW5m b3JtYXRpb24KCmNvbW1pdCA3NjEzMzNmMmY1MGNjYzg4N2FhOTk1N2FlODI5MzAwMjYyYzBkMTVi IHVwc3RyZWFtLgoKYmxvY2tfZ3JvdXBfZXJyIHNob3dzIHRoZSBncm91cCBzeXN0ZW0gYXMgYSBk ZWNpbWFsIHZhbHVlIHdpdGggYSAnMHgnCnByZWZpeCwgd2hpY2ggaXMgc29tZXdoYXQgbWlzbGVh ZGluZy4KCkZpeCBpdCB0byBwcmludCBoZXhhZGVjaW1hbCwgYXMgd2FzIGludGVuZGVkLgoKRml4 ZXM6IGZjZTQ2NmVhYjdhYzYgKCJidHJmczogdHJlZS1jaGVja2VyOiBWZXJpZnkgYmxvY2tfZ3Jv dXBfaXRlbSIpClJldmlld2VkLWJ5OiBOaWtvbGF5IEJvcmlzb3YgPG5ib3Jpc292QHN1c2UuY29t PgpSZXZpZXdlZC1ieTogUXUgV2VucnVvIDx3cXVAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IFNo YW9rdW4gWmhhbmcgPHpoYW5nc2hhb2t1bkBoaXNpbGljb24uY29tPgpSZXZpZXdlZC1ieTogRGF2 aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTdGVyYmEg PGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRj aGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZzL2J0cmZzL3RyZWUtY2hlY2tlci5jIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMgYi9mcy9idHJmcy90cmVlLWNoZWNrZXIuYwpp bmRleCAwMzkzNjE2NGE4ZWIuLjViOThmM2M3NmNlNCAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdHJl ZS1jaGVja2VyLmMKKysrIGIvZnMvYnRyZnMvdHJlZS1jaGVja2VyLmMKQEAgLTM5OSw3ICszOTks NyBAQCBzdGF0aWMgaW50IGNoZWNrX2Jsb2NrX2dyb3VwX2l0ZW0oc3RydWN0IGJ0cmZzX2ZzX2lu Zm8gKmZzX2luZm8sCiAJICAgIHR5cGUgIT0gKEJUUkZTX0JMT0NLX0dST1VQX01FVEFEQVRBIHwK IAkJCSAgIEJUUkZTX0JMT0NLX0dST1VQX0RBVEEpKSB7CiAJCWJsb2NrX2dyb3VwX2Vycihmc19p bmZvLCBsZWFmLCBzbG90LAotImludmFsaWQgdHlwZSwgaGF2ZSAweCVsbHggKCVsdSBiaXRzIHNl dCkgZXhwZWN0IGVpdGhlciAweCVsbHgsIDB4JWxseCwgMHglbGx1IG9yIDB4JWxseCIsCisiaW52 YWxpZCB0eXBlLCBoYXZlIDB4JWxseCAoJWx1IGJpdHMgc2V0KSBleHBlY3QgZWl0aGVyIDB4JWxs eCwgMHglbGx4LCAweCVsbHggb3IgMHglbGx4IiwKIAkJCXR5cGUsIGh3ZWlnaHQ2NCh0eXBlKSwK IAkJCUJUUkZTX0JMT0NLX0dST1VQX0RBVEEsIEJUUkZTX0JMT0NLX0dST1VQX01FVEFEQVRBLAog CQkJQlRSRlNfQkxPQ0tfR1JPVVBfU1lTVEVNLAotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUg RGV2ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93 d3cuY29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBT dHJlZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0x IDJIRiwgVW5pdGVkIEtpbmdkb20KCn== --=-MJ6eASRI8bzA0dIjhiBW--