From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: [PATCH XEN v7 04/29] tools: Refactor /dev/xen/evtchn wrappers into libxenevtchn. Date: Wed, 16 Dec 2015 12:31:11 +0000 Message-ID: <1450269096-27598-5-git-send-email-ian.campbell@citrix.com> References: <1450269007.4053.48.camel@citrix.com> <1450269096-27598-1-git-send-email-ian.campbell@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1450269096-27598-1-git-send-email-ian.campbell@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: ian.jackson@eu.citrix.com, wei.liu2@citrix.com, xen-devel@lists.xen.org Cc: Ian Campbell List-Id: xen-devel@lists.xenproject.org bGlieGVuZXZ0Y2huIHdpbGwgcHJvdmlkZSBhIHN0YWJsZSBBUEkgYW5kIEFCSSBmb3IgYWNjZXNz aW5nIHRoZQpldnRjaG4gZGV2aWNlLgoKVGhlIGZ1bmN0aW9ucyBhcmUgbW92ZWQgaW50byB0aGUg eGVuZXZ0Y2huIG5hbWVzcGFjZSB0byBtYWtlIGEgY2xlYW4KYnJlYWsgZnJvbSBsaWJ4YyBhbmQg YXZvaWQgYW1iaWd1aXR5IHJlZ2FyZGluZyB3aGljaCBpbnRlcmZhY2VzIGFyZQpzdGFibGUuCgpB bGwgaW4tdHJlZSB1c2VycyBhcmUgdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBuYW1lcy4KClVwb24g cmVxdWVzdCAodmlhICNkZWZpbmUgWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQSSkgbGlieGVuY3Ry bCB3aWxsCnByb3ZpZGUgYSBjb21wYXQgQVBJIGZvciB0aGUgb2xkIG5hbWVzLiBUaGlzIGlzIHVz ZWQgYnkgcWVtdS14ZW4gZm9yCnRoZSB0aW1lIGJlaW5nLiBxZW11LXhlbi10cmFkaXRpb25hbCBp cyB1cGRhdGVkIGluIGxvY2tzdGVwLgoKVGhpcyBsZWF2ZXMgYSBmZXcgZXZlbnQgY2hhbm5lbCBy ZWxhdGVkIGZ1bmN0aW9ucyB3aGljaCBnbyB2aWEgcHJpdmNtZAooRVZUQ0hOT1ApIHJhdGhlciB0 aGFuIGlvY3RscyBvbiB0aGUgL2Rldi94ZW4vZXZ0Y2huIGRldmljZSBpbgpsaWJ4ZW5jdHJsLiBT cGVjaWZpY2FsbHk6CgogLSB4Y19ldnRjaG5fYWxsb2NfdW5ib3VuZAogLSB4Y19ldnRjaG5fcmVz ZXQKIC0geGNfZXZ0Y2huX3N0YXR1cwoKTm90ZSB0aGF0IHhjX2V2dGNobl9hbGxvY191bmJvdW5k J3MgZnVuY3Rpb25hbGl0eSBpcyBhbHNvIHByb3ZpZGVkIGJ5CnhlbmV2dGNobl9iaW5kX3VuYm91 bmRfcG9ydCgpIChuw6llIHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCkgYW5kIGlzCnByb2Jh Ymx5IHJlZHVuZGFudC4KClRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgYXBwZWFyIHRvIGJlIG5lZWRl ZCBieSBxZW11LWRtLCBxZW11LXB2Cihwcm92aXNpb24gb2YgZGV2aWNlIG1vZGVsIHRvIEhWTSBn dWVzdHMgYW5kIFBWIGJhY2tlbmRzIHJlc3BlY3RpdmVseSkKb3IgYnkgbGlidmNoYW4gc3VnZ2Vz dGluZyB0aGV5IGFyZSBub3QgbmVlZGVkIGJ5IG5vbi10b29sc3RhY2sgdXNlcyBvZgpldmVudCBj aGFubmVscy4gUUVNVSBkb2VzIHVzZSB0aGVzZSBpbiBody94ZW5wdi94ZW5fZG9tYWluYnVpbGQu YyBidXQKdGhhdCBpcyBhICJ0b29sc3RhY2sgdXNlIi4KClRoZSBuZXcgbGlicmFyeSB1c2VzIGEg dmVyc2lvbiBzY3JpcHQgdG8gZW5zdXJlIHRoYXQgb25seSBleHBlY3RlZApzeW1ib2xzIGFyZSBl eHBvcnRlZCBhbmQgdG8gdmVyc2lvbiB0aGVtIHN1Y2ggdGhhdCBBQkkgZ3VhcmFudGVlcyBjYW4K YmUga2VwdCBpbiB0aGUgZnV0dXJlLgoKU2lnbmVkLW9mZi1ieTogSWFuIENhbXBiZWxsIDxpYW4u Y2FtcGJlbGxAY2l0cml4LmNvbT4KQWNrZWQtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5j b20+CkFja2VkLWJ5OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KLS0t CgpNdXN0IGJlIGFwcGxpZWQgd2l0aDoKCiAtICJxZW11LXhlbi10cmFkaXRpb25hbDogVXNlIGxp YnhlbmV2dGNobiIgYW5kIGEgY29ycmVzcG9uZGluZwogICBRRU1VX1RBRyB1cGRhdGUgZm9sZGVk IGhlcmUuCiAtICJtaW5pLW9zOiBJbmNsdWRlIGxpYnhlbmV2dGNobiB3aXRoIGxpYnhjIiIgYW5k IGEgY29ycmVzcG9uZGluZwogICBidW1wIHRvIE1JTklPU19VUFNUUkVBTV9SRVZJU0lPTiBmb2xk ZWQgaW4gaGVyZS4KCnYyOiBVcGRhdGUgZG9jIGF0IHNhbWUgdGltZQogICAgUmVtb3ZlZCBzb21l IHN0cmF5IGNvbXBhdCB0aGluZwp2MzogTW92ZWQgdG8gdG9vbHMvbGlicy9ldnRjaG4KdjQ6IHR5 cGVkZWYgdGhlIHhlbmV2dGNobl9oYW5kbGUgaW4geGVuZ3Vlc3QuaCBpbnN0ZWFkIG9mICNpbmNs dWRlLCB0bwogICAgYXZvaWQgbGVha2luZyB0aGUgbGlieGVuZXZ0Y2huIG5hbWVzcGFjZSBpbnRv IGNhbGxlcnMgd2hvIG1heSBub3QKICAgIHdhbnQgaXQuIChBbmQgYWxzbyB0byBhdm9pZCBhZGRp bmcgbG90cyBvZiAtSSB0byBwbGFjZXMgbGlrZQogICAgc3R1YmRvbSBidWlsZHMpCnY1OiBIYW5k bGUgTlVMTCBwYXNzZWQgdG8gX2Nsb3NlKCkKdjY6IFByb3Blcmx5IHBvcnQgeGVuLWFjY2VzcyB0 byBuZXcgQVBJIChpbnN0ZWFkIG9mIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwpCnY3OiBBZGRlZCBt ay1oZWFkZXJzLSQoWEVOX1RBUkdFVF9BUkNIKSBidWlsZCBkZXBlbmRlbmN5IGluc3RlYWQgb2YK ICAgIG9wZW4gY29kaW5nIHRoZSByZWN1cnNpb24uCi0tLQogLmdpdGlnbm9yZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHN0dWJkb20vTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAxNyArLQogdG9vbHMvTWFrZWZpbGUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiB0b29scy9SdWxlcy5tayAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIHRvb2xzL2NvbnNvbGUvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiB0b29scy9jb25zb2xlL2RhZW1vbi9pby5jICAg ICAgICAgICAgICAgICAgICAgfCAgNDMgKystLQogdG9vbHMvbGlicy9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHRvb2xzL2xpYnMvZXZ0Y2huL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICB8ICA2NSArKysrKysrCiB0b29scy9saWJzL2V2dGNobi9jb3JlLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgNzIgKysrKysrKwogdG9vbHMvbGlicy9ldnRjaG4vZnJl ZWJzZC5jICAgICAgICAgICAgICAgICAgIHwgMTM4ICsrKysrKysrKysrKysKIHRvb2xzL2xpYnMv ZXZ0Y2huL2luY2x1ZGUveGVuZXZ0Y2huLmggICAgICAgICB8IDE1MCArKysrKysrKysrKysrKwog dG9vbHMvbGlicy9ldnRjaG4vbGlieGVuZXZ0Y2huLm1hcCAgICAgICAgICAgIHwgIDE0ICsrCiB0 b29scy9saWJzL2V2dGNobi9saW51eC5jICAgICAgICAgICAgICAgICAgICAgfCAxMzYgKysrKysr KysrKysrKwogdG9vbHMvbGlicy9ldnRjaG4vbWluaW9zLmMgICAgICAgICAgICAgICAgICAgIHwg MjY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiB0b29scy9saWJzL2V2dGNobi9uZXRic2Qu YyAgICAgICAgICAgICAgICAgICAgfCAxNDcgKysrKysrKysrKysrKysKIHRvb2xzL2xpYnMvZXZ0 Y2huL3ByaXZhdGUuaCAgICAgICAgICAgICAgICAgICB8ICAyNSArKysKIHRvb2xzL2xpYnMvZXZ0 Y2huL3NvbGFyaXMuYyAgICAgICAgICAgICAgICAgICB8IDEzNSArKysrKysrKysrKysrCiB0b29s cy9saWJzL3Rvb2xsb2cvaW5jbHVkZS94ZW50b29sbG9nLmggICAgICAgfCAgMTAgKwogdG9vbHMv bGlicy90b29sbG9nL3h0bF9jb3JlLmMgICAgICAgICAgICAgICAgIHwgIDEwICsKIHRvb2xzL2xp YnMvdG9vbGxvZy94dGxfbG9nZ2VyX3N0ZGlvLmMgICAgICAgICB8ICAxMCArCiB0b29scy9saWJ2 Y2hhbi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHRvb2xzL2xpYnZj aGFuL2luaXQuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArLQogdG9vbHMvbGlidmNo YW4vaW8uYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiB0b29scy9saWJ2Y2hh bi9saWJ4ZW52Y2hhbi5oICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHRvb2xzL2xpYnhjL01h a2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogdG9vbHMvbGlieGMvaW5j bHVkZS94ZW5jdHJsLmggICAgICAgICAgICAgICAgIHwgIDk5ICstLS0tLS0tLS0KIHRvb2xzL2xp YnhjL2luY2x1ZGUveGVuY3RybF9jb21wYXQuaCAgICAgICAgICB8ICA0OCArKysrKwogdG9vbHMv bGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oICAgICAgICAgICAgICAgIHwgIDE0ICstCiB0b29scy9s aWJ4Yy94Y19ldnRjaG5fY29tcGF0LmMgICAgICAgICAgICAgICAgfCAgNzUgKysrKysrKwogdG9v bHMvbGlieGMveGNfZnJlZWJzZF9vc2RlcC5jICAgICAgICAgICAgICAgIHwgMTAxIC0tLS0tLS0t LS0KIHRvb2xzL2xpYnhjL3hjX2xpbnV4X29zZGVwLmMgICAgICAgICAgICAgICAgICB8ICA5NSAt LS0tLS0tLS0KIHRvb2xzL2xpYnhjL3hjX21pbmlvcy5jICAgICAgICAgICAgICAgICAgICAgICB8 IDIyMSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHRvb2xzL2xpYnhjL3hjX25ldGJzZC5jICAgICAg ICAgICAgICAgICAgICAgICB8IDEwOSAtLS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNfcHJpdmF0 ZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDQwIC0tLS0KIHRvb2xzL2xpYnhjL3hjX3ByaXZh dGUuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgNyAtCiB0b29scy9saWJ4Yy94Y19zb2xhcmlz LmMgICAgICAgICAgICAgICAgICAgICAgfCAgOTcgLS0tLS0tLS0tLQogdG9vbHMvbGlieGMveGNf c3VzcGVuZC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICstCiB0b29scy9saWJ4bC9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHRvb2xzL2xpYnhsL2xpYnhs LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogdG9vbHMvbGlieGwvbGlieGxf ZG9tX3N1c3BlbmQuYyAgICAgICAgICAgICAgIHwgICA0ICstCiB0b29scy9saWJ4bC9saWJ4bF9l dmVudC5jICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIHRvb2xzL2xpYnhsL2xpYnhsX2lu dGVybmFsLmggICAgICAgICAgICAgICAgICB8ICAgNSArLQogdG9vbHMvbWlzYy9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiB0b29scy9taXNjL3hlbi1ocHRvb2wu YyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIHRvb2xzL21pc2MveGVuLWxvd21lbWQu YyAgICAgICAgICAgICAgICAgICAgICB8ICAxNSArLQogdG9vbHMvb2NhbWwvbGlicy9ldmVudGNo bi9NYWtlZmlsZSAgICAgICAgICAgIHwgICA0ICstCiB0b29scy9vY2FtbC9saWJzL2V2ZW50Y2hu L3hlbmV2ZW50Y2huX3N0dWJzLmMgfCAgMjAgKy0KIHRvb2xzL3B5dGhvbi9zZXR1cC5weSAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNyArLQogdG9vbHMvdGVzdHMveGVuLWFjY2Vzcy9NYWtl ZmlsZSAgICAgICAgICAgICAgIHwgICAzICstCiB0b29scy90ZXN0cy94ZW4tYWNjZXNzL3hlbi1h Y2Nlc3MuYyAgICAgICAgICAgfCAgMjEgKy0KIHRvb2xzL3hjdXRpbHMvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNCArLQogdG9vbHMveGVubW9uL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsKIHRvb2xzL3hlbm1vbi94ZW5iYWtlZC5jICAgICAgICAg ICAgICAgICAgICAgICB8ICAxMyArLQogdG9vbHMveGVucGFnaW5nL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgIHwgICA0ICstCiB0b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmMgICAgICAg ICAgICAgICAgICAgfCAgMTggKy0KIHRvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuaCAgICAgICAg ICAgICAgICAgICB8ICAgMyArLQogdG9vbHMveGVuc3RvcmUvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICAgIHwgICA1ICstCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jICAgICAg ICAgICAgICAgfCAgIDYgKy0KIHRvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYyAgICAg ICAgICAgICB8ICAyNSArLS0KIHRvb2xzL3hlbnRyYWNlL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICAgICB8ICAgNSArLQogdG9vbHMveGVudHJhY2UveGVudHJhY2UuYyAgICAgICAgICAgICAg ICAgICAgIHwgIDEzICstCiA2MSBmaWxlcyBjaGFuZ2VkLCAxNTMwIGluc2VydGlvbnMoKyksIDky NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9NYWtl ZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMvZXZ0Y2huL2NvcmUuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMvZXZ0Y2huL2ZyZWVic2QuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHRvb2xzL2xpYnMvZXZ0Y2huL2luY2x1ZGUveGVuZXZ0Y2huLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCB0b29scy9saWJzL2V2dGNobi9saWJ4ZW5ldnRjaG4ubWFwCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdG9vbHMvbGlicy9ldnRjaG4vbGludXguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xp YnMvZXZ0Y2huL21pbmlvcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlicy9ldnRjaG4v bmV0YnNkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9wcml2YXRlLmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2V2dGNobi9zb2xhcmlzLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmxfY29tcGF0LmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy9saWJ4Yy94Y19ldnRjaG5fY29tcGF0LmMKCmRpZmYgLS1naXQgYS8u Z2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCBhMmM4NWUxLi5iZjM4MmU1IDEwMDY0NAotLS0g YS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTU5LDYgKzU5LDcgQEAgc3R1YmRvbS9p bmNsdWRlCiBzdHViZG9tL2lvZW11CiBzdHViZG9tL3hlbnN0b3JlCiBzdHViZG9tL2xpYnhlbnRv b2xsb2ctKgorc3R1YmRvbS9saWJ4ZW5ldnRjaG4tKgogc3R1YmRvbS9saWJ4Yy0qCiBzdHViZG9t L2x3aXAtKgogc3R1YmRvbS9taW5pLW9zLSoKZGlmZiAtLWdpdCBhL3N0dWJkb20vTWFrZWZpbGUg Yi9zdHViZG9tL01ha2VmaWxlCmluZGV4IDljNzcyMDUuLjcwMmQ2NmIgMTAwNjQ0Ci0tLSBhL3N0 dWJkb20vTWFrZWZpbGUKKysrIGIvc3R1YmRvbS9NYWtlZmlsZQpAQCAtMzE5LDYgKzMxOSwxMiBA QCBtay1oZWFkZXJzLSQoWEVOX1RBUkdFVF9BUkNIKTogJChJT0VNVV9MSU5LRkFSTV9UQVJHRVQp CiAJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGlicy90b29sbG9nL2luY2x1ZGUvKi5oIC4g JiYgXAogCSAgbG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZy8qLmMgLiAmJiBc CiAJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMvbGlicy90b29sbG9nL01ha2VmaWxlIC4gKQor CW1rZGlyIC1wIGxpYnMtJChYRU5fVEFSR0VUX0FSQ0gpL2V2dGNobi9pbmNsdWRlCisJWyAtaCBs aWJzLSQoWEVOX1RBUkdFVF9BUkNIKS9ldnRjaG4vTWFrZWZpbGUgXSB8fCAoIGNkIGxpYnMtJChY RU5fVEFSR0VUX0FSQ0gpL2V2dGNobiAmJiBcCisJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMv bGlicy9ldnRjaG4vKi5oIC4gJiYgXAorCSAgbG4gLXNmICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMv ZXZ0Y2huL2luY2x1ZGUvKi5oIGluY2x1ZGUvICYmIFwKKwkgIGxuIC1zZiAkKFhFTl9ST09UKS90 b29scy9saWJzL2V2dGNobi8qLmMgLiAmJiBcCisJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMv bGlicy9ldnRjaG4vTWFrZWZpbGUgLiApCiAJbWtkaXIgLXAgbGlieGMtJChYRU5fVEFSR0VUX0FS Q0gpCiAJWyAtaCBsaWJ4Yy0kKFhFTl9UQVJHRVRfQVJDSCkvTWFrZWZpbGUgXSB8fCAoIGNkIGxp YnhjLSQoWEVOX1RBUkdFVF9BUkNIKSAmJiBcCiAJICBsbiAtc2YgJChYRU5fUk9PVCkvdG9vbHMv bGlieGMvKi5oIC4gJiYgXApAQCAtMzUxLDEyICszNTcsMjEgQEAgbGlicy0kKFhFTl9UQVJHRVRf QVJDSCkvdG9vbGxvZy9saWJ4ZW50b29sbG9nLmE6IG1rLWhlYWRlcnMtJChYRU5fVEFSR0VUX0FS Q0gpICQKIAlDUFBGTEFHUz0iJChUQVJHRVRfQ1BQRkxBR1MpIiBDRkxBR1M9IiQoVEFSR0VUX0NG TEFHUykiICQoTUFLRSkgREVTVERJUj0gLUMgbGlicy0kKFhFTl9UQVJHRVRfQVJDSCkvdG9vbGxv ZwogCiAjIyMjIyMjCisjIGxpYnhlbmV2dGNobgorIyMjIyMjIworCisuUEhPTlk6IGxpYnhlbmV2 dGNobgorbGlieGVuZXZ0Y2huOiBsaWJzLSQoWEVOX1RBUkdFVF9BUkNIKS9ldnRjaG4vbGlieGVu ZXZ0Y2huLmEKK2xpYnMtJChYRU5fVEFSR0VUX0FSQ0gpL2V2dGNobi9saWJ4ZW5ldnRjaG4uYTog bWstaGVhZGVycy0kKFhFTl9UQVJHRVRfQVJDSCkgJChORVdMSUJfU1RBTVBGSUxFKQorCUNQUEZM QUdTPSIkKFRBUkdFVF9DUFBGTEFHUykiIENGTEFHUz0iJChUQVJHRVRfQ0ZMQUdTKSIgJChNQUtF KSBERVNURElSPSAtQyBsaWJzLSQoWEVOX1RBUkdFVF9BUkNIKS9ldnRjaG4KKworIyMjIyMjIwog IyBsaWJ4YwogIyMjIyMjIwogCiAuUEhPTlk6IGxpYnhjCiBsaWJ4YzogbGlieGMtJChYRU5fVEFS R0VUX0FSQ0gpL2xpYnhlbmN0cmwuYSBsaWJ4Yy0kKFhFTl9UQVJHRVRfQVJDSCkvbGlieGVuZ3Vl c3QuYQotbGlieGMtJChYRU5fVEFSR0VUX0FSQ0gpL2xpYnhlbmN0cmwuYTogbWstaGVhZGVycy0k KFhFTl9UQVJHRVRfQVJDSCkgbGlieGVudG9vbGxvZyBjcm9zcy16bGliCitsaWJ4Yy0kKFhFTl9U QVJHRVRfQVJDSCkvbGlieGVuY3RybC5hOiBtay1oZWFkZXJzLSQoWEVOX1RBUkdFVF9BUkNIKSBs aWJ4ZW50b29sbG9nIGxpYnhlbmV2dGNobiBjcm9zcy16bGliCiAJQ1BQRkxBR1M9IiQoVEFSR0VU X0NQUEZMQUdTKSIgQ0ZMQUdTPSIkKFRBUkdFVF9DRkxBR1MpIiAkKE1BS0UpIERFU1RESVI9IENP TkZJR19MSUJYQ19NSU5JT1M9eSAtQyBsaWJ4Yy0kKFhFTl9UQVJHRVRfQVJDSCkKIAogIGxpYnhj LSQoWEVOX1RBUkdFVF9BUkNIKS9saWJ4ZW5ndWVzdC5hOiBsaWJ4Yy0kKFhFTl9UQVJHRVRfQVJD SCkvbGlieGVuY3RybC5hCmRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZSBiL3Rvb2xzL01ha2Vm aWxlCmluZGV4IDlmNzRhYzcuLjk5ZTAxNmEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL01ha2VmaWxlCisr KyBiL3Rvb2xzL01ha2VmaWxlCkBAIC0yNDgsOCArMjQ4LDEwIEBAIHN1YmRpci1hbGwtcWVtdS14 ZW4tZGlyOiBxZW11LXhlbi1kaXItZmluZAogCQktLWxpYmRpcj0kKExJQkVYRUNfTElCKSBcCiAJ CS0taW5jbHVkZWRpcj0kKExJQkVYRUNfSU5DKSBcCiAJCS0tc291cmNlLXBhdGg9JCRzb3VyY2Ug XAotCQktLWV4dHJhLWNmbGFncz0iLUkkKFhFTl9ST09UKS90b29scy9pbmNsdWRlIFwKKwkJLS1l eHRyYS1jZmxhZ3M9Ii1EWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQST0xIFwKKwkJLUkkKFhFTl9S T09UKS90b29scy9pbmNsdWRlIFwKIAkJLUkkKFhFTl9ST09UKS90b29scy9saWJzL3Rvb2xsb2cv aW5jbHVkZSBcCisJCS1JJChYRU5fUk9PVCkvdG9vbHMvbGlicy9ldnRjaG4vaW5jbHVkZSBcCiAJ CS1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMvaW5jbHVkZSBcCiAJCS1JJChYRU5fUk9PVCkvdG9v bHMveGVuc3RvcmUvaW5jbHVkZSBcCiAJCS1JJChYRU5fUk9PVCkvdG9vbHMveGVuc3RvcmUvY29t cGF0L2luY2x1ZGUgXApAQCAtMjU3LDYgKzI1OSw3IEBAIHN1YmRpci1hbGwtcWVtdS14ZW4tZGly OiBxZW11LXhlbi1kaXItZmluZAogCQktLWV4dHJhLWxkZmxhZ3M9Ii1MJChYRU5fUk9PVCkvdG9v bHMvbGlieGMgXAogCQktTCQoWEVOX1JPT1QpL3Rvb2xzL3hlbnN0b3JlIFwKIAkJLVdsLC1ycGF0 aC1saW5rPSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZyBcCisJCS1XbCwtcnBhdGgtbGlu az0kKFhFTl9ST09UKS90b29scy9saWJzL2V2dGNobiBcCiAJCSQoUUVNVV9VUFNUUkVBTV9SUEFU SCkiIFwKIAkJLS1iaW5kaXI9JChMSUJFWEVDX0JJTikgXAogCQktLWRhdGFkaXI9JChTSEFSRURJ UikvcWVtdS14ZW4gXApkaWZmIC0tZ2l0IGEvdG9vbHMvUnVsZXMubWsgYi90b29scy9SdWxlcy5t awppbmRleCA3NTE2ZGRkLi43NWQwMmM0IDEwMDY0NAotLS0gYS90b29scy9SdWxlcy5taworKysg Yi90b29scy9SdWxlcy5tawpAQCAtMTEsNiArMTEsNyBAQCBJTlNUQUxMID0gJChYRU5fUk9PVCkv dG9vbHMvY3Jvc3MtaW5zdGFsbAogCiBYRU5fSU5DTFVERSAgICAgICAgPSAkKFhFTl9ST09UKS90 b29scy9pbmNsdWRlCiBYRU5fTElCWEVOVE9PTExPRyAgPSAkKFhFTl9ST09UKS90b29scy9saWJz L3Rvb2xsb2cKK1hFTl9MSUJYRU5FVlRDSE4gICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvZXZ0 Y2huCiBYRU5fTElCWEMgICAgICAgICAgPSAkKFhFTl9ST09UKS90b29scy9saWJ4YwogWEVOX1hF TkxJR0hUICAgICAgID0gJChYRU5fUk9PVCkvdG9vbHMvbGlieGwKIFhFTl9YRU5TVE9SRSAgICAg ICA9ICQoWEVOX1JPT1QpL3Rvb2xzL3hlbnN0b3JlCkBAIC04MiwxMyArODMsMTggQEAgU0hERVBT X2xpYnhlbnRvb2xsb2cgPQogTERMSUJTX2xpYnhlbnRvb2xsb2cgPSAkKFhFTl9MSUJYRU5UT09M TE9HKS9saWJ4ZW50b29sbG9nJChsaWJleHRlbnNpb24pCiBTSExJQl9saWJ4ZW50b29sbG9nICA9 IC1XbCwtcnBhdGgtbGluaz0kKFhFTl9MSUJYRU5UT09MTE9HKQogCitDRkxBR1NfbGlieGVuZXZ0 Y2huID0gLUkkKFhFTl9MSUJYRU5FVlRDSE4pL2luY2x1ZGUgJChDRkxBR1NfeGVuaW5jbHVkZSkK K1NIREVQU19saWJ4ZW5ldnRjaG4gPQorTERMSUJTX2xpYnhlbmV2dGNobiA9ICQoWEVOX0xJQlhF TkVWVENITikvbGlieGVuZXZ0Y2huJChsaWJleHRlbnNpb24pCitTSExJQl9saWJ4ZW5ldnRjaG4g ID0gLVdsLC1ycGF0aC1saW5rPSQoWEVOX0xJQlhFTkVWVENITikKKwogQ0ZMQUdTX2xpYnhlbmN0 cmwgPSAtSSQoWEVOX0xJQlhDKS9pbmNsdWRlICQoQ0ZMQUdTX2xpYnhlbnRvb2xsb2cpICQoQ0ZM QUdTX3hlbmluY2x1ZGUpCi1TSERFUFNfbGlieGVuY3RybCA9ICQoU0hMSUJfbGlieGVudG9vbGxv ZykgCitTSERFUFNfbGlieGVuY3RybCA9ICQoU0hMSUJfbGlieGVudG9vbGxvZykgJChTSExJQl9s aWJ4ZW5ldnRjaG4pCiBMRExJQlNfbGlieGVuY3RybCA9ICQoU0hERVBTX2xpYnhlbmN0cmwpICQo WEVOX0xJQlhDKS9saWJ4ZW5jdHJsJChsaWJleHRlbnNpb24pCiBTSExJQl9saWJ4ZW5jdHJsICA9 ICQoU0hERVBTX2xpYnhlbmN0cmwpIC1XbCwtcnBhdGgtbGluaz0kKFhFTl9MSUJYQykKIAotQ0ZM QUdTX2xpYnhlbmd1ZXN0ID0gLUkkKFhFTl9MSUJYQykvaW5jbHVkZSAkKENGTEFHU194ZW5pbmNs dWRlKQotU0hERVBTX2xpYnhlbmd1ZXN0ID0KK0NGTEFHU19saWJ4ZW5ndWVzdCA9IC1JJChYRU5f TElCWEMpL2luY2x1ZGUgJChDRkxBR1NfbGlieGVuZXZ0Y2huKSAkKENGTEFHU194ZW5pbmNsdWRl KQorU0hERVBTX2xpYnhlbmd1ZXN0ID0gJChTSExJQl9saWJ4ZW5ldnRjaG4pCiBMRExJQlNfbGli eGVuZ3Vlc3QgPSAkKFNIREVQU19saWJ4ZW5ndWVzdCkgJChYRU5fTElCWEMpL2xpYnhlbmd1ZXN0 JChsaWJleHRlbnNpb24pCiBTSExJQl9saWJ4ZW5ndWVzdCAgPSAkKFNIREVQU19saWJ4ZW5ndWVz dCkgLVdsLC1ycGF0aC1saW5rPSQoWEVOX0xJQlhDKQogCkBAIC0xMDMsNyArMTA5LDcgQEAgTERM SUJTX2xpYnhlbnN0YXQgID0gJChTSERFUFNfbGlieGVuc3RhdCkgJChYRU5fTElCWEVOU1RBVCkv bGlieGVuc3RhdCQobGliZXh0ZW4KIFNITElCX2xpYnhlbnN0YXQgICA9ICQoU0hERVBTX2xpYnhl bnN0YXQpIC1XbCwtcnBhdGgtbGluaz0kKFhFTl9MSUJYRU5TVEFUKQogCiBDRkxBR1NfbGlieGVu dmNoYW4gPSAtSSQoWEVOX0xJQlZDSEFOKQotU0hERVBTX2xpYnhlbnZjaGFuID0gJChTSExJQl9s aWJ4ZW5jdHJsKSAkKFNITElCX2xpYnhlbnN0b3JlKQorU0hERVBTX2xpYnhlbnZjaGFuID0gJChT SExJQl9saWJ4ZW5jdHJsKSAkKFNITElCX2xpYnhlbnN0b3JlKSAkKFNITElCX2xpYnhlbmV2dGNo bikKIExETElCU19saWJ4ZW52Y2hhbiA9ICQoU0hERVBTX2xpYnhlbnZjaGFuKSAkKFhFTl9MSUJW Q0hBTikvbGlieGVudmNoYW4kKGxpYmV4dGVuc2lvbikKIFNITElCX2xpYnhlbnZjaGFuICA9ICQo U0hERVBTX2xpYnhlbnZjaGFuKSAtV2wsLXJwYXRoLWxpbms9JChYRU5fTElCVkNIQU4pCiAKZGlm ZiAtLWdpdCBhL3Rvb2xzL2NvbnNvbGUvTWFrZWZpbGUgYi90b29scy9jb25zb2xlL01ha2VmaWxl CmluZGV4IDc3ZThmMjkuLjRiM2E0OTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2NvbnNvbGUvTWFrZWZp bGUKKysrIGIvdG9vbHMvY29uc29sZS9NYWtlZmlsZQpAQCAtMyw4ICszLDEwIEBAIGluY2x1ZGUg JChYRU5fUk9PVCkvdG9vbHMvUnVsZXMubWsKIAogQ0ZMQUdTICArPSAtV2Vycm9yCiAKK0NGTEFH UyAgKz0gJChDRkxBR1NfbGlieGVuZXZ0Y2huKQogQ0ZMQUdTICArPSAkKENGTEFHU19saWJ4ZW5j dHJsKQogQ0ZMQUdTICArPSAkKENGTEFHU19saWJ4ZW5zdG9yZSkKK0xETElCUyArPSAkKExETElC U19saWJ4ZW5ldnRjaG4pCiBMRExJQlMgKz0gJChMRExJQlNfbGlieGVuY3RybCkKIExETElCUyAr PSAkKExETElCU19saWJ4ZW5zdG9yZSkKIExETElCUyArPSAkKFNPQ0tFVF9MSUJTKQpkaWZmIC0t Z2l0IGEvdG9vbHMvY29uc29sZS9kYWVtb24vaW8uYyBiL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lv LmMKaW5kZXggY2FmYzdiNy4uMmYyZTljNSAxMDA2NDQKLS0tIGEvdG9vbHMvY29uc29sZS9kYWVt b24vaW8uYworKysgYi90b29scy9jb25zb2xlL2RhZW1vbi9pby5jCkBAIC0yMSw2ICsyMSw3IEBA CiAKICNpbmNsdWRlICJ1dGlscy5oIgogI2luY2x1ZGUgImlvLmgiCisjaW5jbHVkZSA8eGVuZXZ0 Y2huLmg+CiAjaW5jbHVkZSA8eGVuc3RvcmUuaD4KICNpbmNsdWRlIDx4ZW4vaW8vY29uc29sZS5o PgogI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgpAQCAtMTAxLDcgKzEwMiw3IEBAIHN0cnVj dCBkb21haW4gewogCWludCByaW5nX3JlZjsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IGxvY2Fs X3BvcnQ7CiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCByZW1vdGVfcG9ydDsKLQl4Y19ldnRjaG4g KnhjZV9oYW5kbGU7CisJeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZTsKIAlpbnQgeGNlX3Bv bGxmZF9pZHg7CiAJc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRlcmZhY2U7CiAJaW50IGV2 ZW50X2NvdW50OwpAQCAtMTg1LDcgKzE4Niw3IEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcl9hcHBlbmQo c3RydWN0IGRvbWFpbiAqZG9tKQogCiAJeGVuX21iKCk7CiAJaW50Zi0+b3V0X2NvbnMgPSBjb25z OwotCXhjX2V2dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBkb20tPmxvY2FsX3BvcnQpOwor CXhlbmV2dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBkb20tPmxvY2FsX3BvcnQpOwogCiAJ LyogR2V0IHRoZSBkYXRhIHRvIHRoZSBsb2dmaWxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlIGJlY2F1 c2UgaWYKIAkgKiBubyBvbmUgaXMgbGlzdGVuaW5nIG9uIHRoZSBjb25zb2xlIHB0eSB0aGVuIGl0 IHdpbGwgZmlsbCB1cApAQCAtNTg0LDIyICs1ODUsMjIgQEAgc3RhdGljIGludCBkb21haW5fY3Jl YXRlX3Jpbmcoc3RydWN0IGRvbWFpbiAqZG9tKQogCWRvbS0+bG9jYWxfcG9ydCA9IC0xOwogCWRv bS0+cmVtb3RlX3BvcnQgPSAtMTsKIAlpZiAoZG9tLT54Y2VfaGFuZGxlICE9IE5VTEwpCi0JCXhj X2V2dGNobl9jbG9zZShkb20tPnhjZV9oYW5kbGUpOworCQl4ZW5ldnRjaG5fY2xvc2UoZG9tLT54 Y2VfaGFuZGxlKTsKIAogCS8qIE9wZW5pbmcgZXZ0Y2huIGluZGVwZW5kZW50bHkgZm9yIGVhY2gg Y29uc29sZSBpcyBhIGJpdAogCSAqIHdhc3RlZnVsLCBidXQgdGhhdCdzIGhvdyB0aGUgY29kZSBp cyBzdHJ1Y3R1cmVkLi4uICovCi0JZG9tLT54Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29wZW4oTlVM TCwgMCk7CisJZG9tLT54Y2VfaGFuZGxlID0geGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CiAJaWYg KGRvbS0+eGNlX2hhbmRsZSA9PSBOVUxMKSB7CiAJCWVyciA9IGVycm5vOwogCQlnb3RvIG91dDsK IAl9CiAgCi0JcmMgPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihkb20tPnhjZV9oYW5kbGUs CisJcmMgPSB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihkb20tPnhjZV9oYW5kbGUsCiAJCWRv bS0+ZG9taWQsIHJlbW90ZV9wb3J0KTsKIAogCWlmIChyYyA9PSAtMSkgewogCQllcnIgPSBlcnJu bzsKLQkJeGNfZXZ0Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7CisJCXhlbmV2dGNobl9jbG9z ZShkb20tPnhjZV9oYW5kbGUpOwogCQlkb20tPnhjZV9oYW5kbGUgPSBOVUxMOwogCQlnb3RvIG91 dDsKIAl9CkBAIC02MDksNyArNjEwLDcgQEAgc3RhdGljIGludCBkb21haW5fY3JlYXRlX3Jpbmco c3RydWN0IGRvbWFpbiAqZG9tKQogCWlmIChkb20tPm1hc3Rlcl9mZCA9PSAtMSkgewogCQlpZiAo IWRvbWFpbl9jcmVhdGVfdHR5KGRvbSkpIHsKIAkJCWVyciA9IGVycm5vOwotCQkJeGNfZXZ0Y2hu X2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7CisJCQl4ZW5ldnRjaG5fY2xvc2UoZG9tLT54Y2VfaGFu ZGxlKTsKIAkJCWRvbS0+eGNlX2hhbmRsZSA9IE5VTEw7CiAJCQlkb20tPmxvY2FsX3BvcnQgPSAt MTsKIAkJCWRvbS0+cmVtb3RlX3BvcnQgPSAtMTsKQEAgLTc0OSw3ICs3NTAsNyBAQCBzdGF0aWMg dm9pZCBzaHV0ZG93bl9kb21haW4oc3RydWN0IGRvbWFpbiAqZCkKIAl3YXRjaF9kb21haW4oZCwg ZmFsc2UpOwogCWRvbWFpbl91bm1hcF9pbnRlcmZhY2UoZCk7CiAJaWYgKGQtPnhjZV9oYW5kbGUg IT0gTlVMTCkKLQkJeGNfZXZ0Y2huX2Nsb3NlKGQtPnhjZV9oYW5kbGUpOworCQl4ZW5ldnRjaG5f Y2xvc2UoZC0+eGNlX2hhbmRsZSk7CiAJZC0+eGNlX2hhbmRsZSA9IE5VTEw7CiB9CiAKQEAgLTgz OSw3ICs4NDAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfdHR5X3JlYWQoc3RydWN0IGRvbWFpbiAq ZG9tKQogCQl9CiAJCXhlbl93bWIoKTsKIAkJaW50Zi0+aW5fcHJvZCA9IHByb2Q7Ci0JCXhjX2V2 dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBkb20tPmxvY2FsX3BvcnQpOworCQl4ZW5ldnRj aG5fbm90aWZ5KGRvbS0+eGNlX2hhbmRsZSwgZG9tLT5sb2NhbF9wb3J0KTsKIAl9IGVsc2Ugewog CQlkb21haW5fY2xvc2VfdHR5KGRvbSk7CiAJCXNodXRkb3duX2RvbWFpbihkb20pOwpAQCAtODcx LDcgKzg3Miw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9yaW5nX3JlYWQoc3RydWN0IGRvbWFpbiAq ZG9tKQogCWlmIChkb20tPmlzX2RlYWQpCiAJCXJldHVybjsKIAotCWlmICgocG9ydCA9IHhjX2V2 dGNobl9wZW5kaW5nKGRvbS0+eGNlX2hhbmRsZSkpID09IC0xKQorCWlmICgocG9ydCA9IHhlbmV2 dGNobl9wZW5kaW5nKGRvbS0+eGNlX2hhbmRsZSkpID09IC0xKQogCQlyZXR1cm47CiAKIAlkb20t PmV2ZW50X2NvdW50Kys7CkBAIC04NzksNyArODgwLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX3Jp bmdfcmVhZChzdHJ1Y3QgZG9tYWluICpkb20pCiAJYnVmZmVyX2FwcGVuZChkb20pOwogCiAJaWYg KGRvbS0+ZXZlbnRfY291bnQgPCBSQVRFX0xJTUlUX0FMTE9XQU5DRSkKLQkJKHZvaWQpeGNfZXZ0 Y2huX3VubWFzayhkb20tPnhjZV9oYW5kbGUsIHBvcnQpOworCQkodm9pZCl4ZW5ldnRjaG5fdW5t YXNrKGRvbS0+eGNlX2hhbmRsZSwgcG9ydCk7CiB9CiAKIHN0YXRpYyB2b2lkIGhhbmRsZV94cyh2 b2lkKQpAQCAtOTA2LDcgKzkwNyw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV94cyh2b2lkKQogCWZy ZWUodmVjKTsKIH0KIAotc3RhdGljIHZvaWQgaGFuZGxlX2h2X2xvZ3MoeGNfZXZ0Y2huICp4Y2Vf aGFuZGxlLCBib29sIGZvcmNlKQorc3RhdGljIHZvaWQgaGFuZGxlX2h2X2xvZ3MoeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlX2hhbmRsZSwgYm9vbCBmb3JjZSkKIHsKIAlzdGF0aWMgY2hhciBidWZmZXJb MTAyNCoxNl07CiAJY2hhciAqYnVmcHRyID0gYnVmZmVyOwpAQCAtOTE0LDcgKzkxNSw3IEBAIHN0 YXRpYyB2b2lkIGhhbmRsZV9odl9sb2dzKHhjX2V2dGNobiAqeGNlX2hhbmRsZSwgYm9vbCBmb3Jj ZSkKIAlzdGF0aWMgdWludDMyX3QgaW5kZXggPSAwOwogCWV2dGNobl9wb3J0X29yX2Vycm9yX3Qg cG9ydCA9IC0xOwogCi0JaWYgKCFmb3JjZSAmJiAoKHBvcnQgPSB4Y19ldnRjaG5fcGVuZGluZyh4 Y2VfaGFuZGxlKSkgPT0gLTEpKQorCWlmICghZm9yY2UgJiYgKChwb3J0ID0geGVuZXZ0Y2huX3Bl bmRpbmcoeGNlX2hhbmRsZSkpID09IC0xKSkKIAkJcmV0dXJuOwogCiAJZG8KQEAgLTkzOCw3ICs5 MzksNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfaHZfbG9ncyh4Y19ldnRjaG4gKnhjZV9oYW5kbGUs IGJvb2wgZm9yY2UpCiAJfSB3aGlsZSAoc2l6ZSA9PSBzaXplb2YoYnVmZmVyKSk7CiAKIAlpZiAo cG9ydCAhPSAtMSkKLQkJKHZvaWQpeGNfZXZ0Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBwb3J0KTsK KwkJKHZvaWQpeGVuZXZ0Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBwb3J0KTsKIH0KIAogc3RhdGlj IHZvaWQgaGFuZGxlX2xvZ19yZWxvYWQodm9pZCkKQEAgLTEwMDYsMTAgKzEwMDcsMTAgQEAgdm9p ZCBoYW5kbGVfaW8odm9pZCkKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IGxvZ19odl9ldnRjaG4g PSAtMTsKIAlpbnQgeGNlX3BvbGxmZF9pZHggPSAtMTsKIAlpbnQgeHNfcG9sbGZkX2lkeCA9IC0x OwotCXhjX2V2dGNobiAqeGNlX2hhbmRsZSA9IE5VTEw7CisJeGVuZXZ0Y2huX2hhbmRsZSAqeGNl X2hhbmRsZSA9IE5VTEw7CiAKIAlpZiAobG9nX2h2KSB7Ci0JCXhjZV9oYW5kbGUgPSB4Y19ldnRj aG5fb3BlbihOVUxMLCAwKTsKKwkJeGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDAp OwogCQlpZiAoeGNlX2hhbmRsZSA9PSBOVUxMKSB7CiAJCQlkb2xvZyhMT0dfRVJSLCAiRmFpbGVk IHRvIG9wZW4geGNlIGhhbmRsZTogJWQgKCVzKSIsCiAJCQkgICAgICBlcnJubywgc3RyZXJyb3Io ZXJybm8pKTsKQEAgLTEwMTgsNyArMTAxOSw3IEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJCWxv Z19odl9mZCA9IGNyZWF0ZV9odl9sb2coKTsKIAkJaWYgKGxvZ19odl9mZCA9PSAtMSkKIAkJCWdv dG8gb3V0OwotCQlsb2dfaHZfZXZ0Y2huID0geGNfZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxl LCBWSVJRX0NPTl9SSU5HKTsKKwkJbG9nX2h2X2V2dGNobiA9IHhlbmV2dGNobl9iaW5kX3ZpcnEo eGNlX2hhbmRsZSwgVklSUV9DT05fUklORyk7CiAJCWlmIChsb2dfaHZfZXZ0Y2huID09IC0xKSB7 CiAJCQlkb2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRvIGJpbmQgdG8gVklSUV9DT05fUklORzogIgog CQkJICAgICAgIiVkICglcykiLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKQEAgLTEwNDcsNyAr MTA0OCw3IEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJCXhzX3BvbGxmZF9pZHggPSBzZXRfZmRz KHhzX2ZpbGVubyh4cyksIFBPTExJTnxQT0xMUFJJKTsKIAogCQlpZiAobG9nX2h2KQotCQkJeGNl X3BvbGxmZF9pZHggPSBzZXRfZmRzKHhjX2V2dGNobl9mZCh4Y2VfaGFuZGxlKSwKKwkJCXhjZV9w b2xsZmRfaWR4ID0gc2V0X2Zkcyh4ZW5ldnRjaG5fZmQoeGNlX2hhbmRsZSksCiAJCQkJCQkgUE9M TElOfFBPTExQUkkpOwogCiAJCWlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRz KSA8IDApCkBAIC0xMDY2LDcgKzEwNjcsNyBAQCB2b2lkIGhhbmRsZV9pbyh2b2lkKQogCQkJaWYg KChub3crNSkgPiBkLT5uZXh0X3BlcmlvZCkgewogCQkJCWQtPm5leHRfcGVyaW9kID0gbm93ICsg UkFURV9MSU1JVF9QRVJJT0Q7CiAJCQkJaWYgKGQtPmV2ZW50X2NvdW50ID49IFJBVEVfTElNSVRf QUxMT1dBTkNFKSB7Ci0JCQkJCSh2b2lkKXhjX2V2dGNobl91bm1hc2soZC0+eGNlX2hhbmRsZSwg ZC0+bG9jYWxfcG9ydCk7CisJCQkJCSh2b2lkKXhlbmV2dGNobl91bm1hc2soZC0+eGNlX2hhbmRs ZSwgZC0+bG9jYWxfcG9ydCk7CiAJCQkJfQogCQkJCWQtPmV2ZW50X2NvdW50ID0gMDsKIAkJCX0K QEAgLTEwODIsNyArMTA4Myw3IEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJCQkJaWYgKGRpc2Nh cmRfb3ZlcmZsb3dlZF9kYXRhIHx8CiAJCQkJICAgICFkLT5idWZmZXIubWF4X2NhcGFjaXR5IHx8 CiAJCQkJICAgIGQtPmJ1ZmZlci5zaXplIDwgZC0+YnVmZmVyLm1heF9jYXBhY2l0eSkgewotCQkJ CQlpbnQgZXZ0Y2huX2ZkID0geGNfZXZ0Y2huX2ZkKGQtPnhjZV9oYW5kbGUpOworCQkJCQlpbnQg ZXZ0Y2huX2ZkID0geGVuZXZ0Y2huX2ZkKGQtPnhjZV9oYW5kbGUpOwogCQkJCQlkLT54Y2VfcG9s bGZkX2lkeCA9IHNldF9mZHMoZXZ0Y2huX2ZkLAogCQkJCQkJCQkgICAgUE9MTElOfFBPTExQUkkp OwogCQkJCX0KQEAgLTEyMDIsNyArMTIwMyw3IEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJCWxv Z19odl9mZCA9IC0xOwogCX0KIAlpZiAoeGNlX2hhbmRsZSAhPSBOVUxMKSB7Ci0JCXhjX2V2dGNo bl9jbG9zZSh4Y2VfaGFuZGxlKTsKKwkJeGVuZXZ0Y2huX2Nsb3NlKHhjZV9oYW5kbGUpOwogCQl4 Y2VfaGFuZGxlID0gTlVMTDsKIAl9CiAJaWYgKHhjZ19oYW5kbGUgIT0gTlVMTCkgewpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlicy9NYWtlZmlsZSBiL3Rvb2xzL2xpYnMvTWFrZWZpbGUKaW5kZXggNzNi ZTUwMC4uMGUzZjUyMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy9NYWtlZmlsZQorKysgYi90b29s cy9saWJzL01ha2VmaWxlCkBAIC0zLDUgKzMsNiBAQCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xz L1J1bGVzLm1rCiAKIFNVQkRJUlMteSA6PQogU1VCRElSUy15ICs9IHRvb2xsb2cKK1NVQkRJUlMt eSArPSBldnRjaG4KIAogYWxsIGNsZWFuIGluc3RhbGwgZGlzdGNsZWFuOiAlOiBzdWJkaXJzLSUK ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZXZ0Y2huL01ha2VmaWxlIGIvdG9vbHMvbGlicy9ldnRj aG4vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlZDZkYwot LS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL01ha2VmaWxlCkBAIC0wLDAgKzEs NjUgQEAKK1hFTl9ST09UID0gJChDVVJESVIpLy4uLy4uLy4uCitpbmNsdWRlICQoWEVOX1JPT1Qp L3Rvb2xzL1J1bGVzLm1rCisKK01BSk9SICAgID0gMQorTUlOT1IgICAgPSAwCitTSExJQl9MREZM QUdTICs9IC1XbCwtLXZlcnNpb24tc2NyaXB0PWxpYnhlbmV2dGNobi5tYXAKKworQ0ZMQUdTICAg Kz0gLVdlcnJvciAtV21pc3NpbmctcHJvdG90eXBlcworQ0ZMQUdTICAgKz0gLUkuL2luY2x1ZGUg JChDRkxBR1NfeGVuaW5jbHVkZSkKK0NGTEFHUyAgICs9ICQoQ0ZMQUdTX2xpYnhlbnRvb2xsb2cp CisKK1NSQ1MteSAgICAgICAgICAgICAgICAgKz0gY29yZS5jCitTUkNTLSQoQ09ORklHX0xpbnV4 KSAgICs9IGxpbnV4LmMKK1NSQ1MtJChDT05GSUdfRnJlZUJTRCkgKz0gZnJlZWJzZC5jCitTUkNT LSQoQ09ORklHX1N1bk9TKSAgICs9IHNvbGFyaXMuYworU1JDUy0kKENPTkZJR19OZXRCU0QpICAr PSBuZXRic2QuYworU1JDUy0kKENPTkZJR19NaW5pT1MpICArPSBtaW5pb3MuYworCitMSUJfT0JK UyA6PSAkKHBhdHN1YnN0ICUuYywlLm8sJChTUkNTLXkpKQorUElDX09CSlMgOj0gJChwYXRzdWJz dCAlLmMsJS5vcGljLCQoU1JDUy15KSkKKworTElCIDo9IGxpYnhlbmV2dGNobi5hCitpZm5lcSAo JChub3NoYXJlZGxpYnMpLHkpCitMSUIgKz0gbGlieGVuZXZ0Y2huLnNvCitlbmRpZgorCisuUEhP Tlk6IGFsbAorYWxsOiBidWlsZAorCisuUEhPTlk6IGJ1aWxkCitidWlsZDoKKwkkKE1BS0UpIGxp YnMKKworLlBIT05ZOiBsaWJzCitsaWJzOiAkKExJQikKKworCitsaWJ4ZW5ldnRjaG4uYTogJChM SUJfT0JKUykKKwkkKEFSKSByYyAkQCAkXgorCitsaWJ4ZW5ldnRjaG4uc286IGxpYnhlbmV2dGNo bi5zby4kKE1BSk9SKQorCSQoU1lNTElOS19TSExJQikgJDwgJEAKK2xpYnhlbmV2dGNobi5zby4k KE1BSk9SKTogbGlieGVuZXZ0Y2huLnNvLiQoTUFKT1IpLiQoTUlOT1IpCisJJChTWU1MSU5LX1NI TElCKSAkPCAkQAorCitsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikuJChNSU5PUik6ICQoUElDX09C SlMpIGxpYnhlbmV2dGNobi5tYXAKKwkkKENDKSAkKExERkxBR1MpIC1XbCwkKFNPTkFNRV9MREZM QUcpIC1XbCxsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikgJChTSExJQl9MREZMQUdTKSAtbyAkQCAk KFBJQ19PQkpTKSAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKEFQUEVORF9MREZMQUdTKQorCisu UEhPTlk6IGluc3RhbGwKK2luc3RhbGw6IGJ1aWxkCisJJChJTlNUQUxMX0RJUikgJChERVNURElS KSQobGliZGlyKQorCSQoSU5TVEFMTF9ESVIpICQoREVTVERJUikkKGluY2x1ZGVkaXIpCisJJChJ TlNUQUxMX1NITElCKSBsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikuJChNSU5PUikgJChERVNURElS KSQobGliZGlyKQorCSQoSU5TVEFMTF9EQVRBKSBsaWJ4ZW5ldnRjaG4uYSAkKERFU1RESVIpJChs aWJkaXIpCisJJChTWU1MSU5LX1NITElCKSBsaWJ4ZW5ldnRjaG4uc28uJChNQUpPUikuJChNSU5P UikgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW5ldnRjaG4uc28uJChNQUpPUikKKwkkKFNZTUxJ TktfU0hMSUIpIGxpYnhlbmV2dGNobi5zby4kKE1BSk9SKSAkKERFU1RESVIpJChsaWJkaXIpL2xp YnhlbmV2dGNobi5zbworCSQoSU5TVEFMTF9EQVRBKSBpbmNsdWRlL3hlbmV2dGNobi5oICQoREVT VERJUikkKGluY2x1ZGVkaXIpCisKKy5QSE9OWTogVEFHUworVEFHUzoKKwlldGFncyAtdCAqLmMg Ki5oCisKKy5QSE9OWTogY2xlYW4KK2NsZWFuOgorCXJtIC1yZiAqLnJwbSAkKExJQikgKn4gJChE RVBTKSAkKExJQl9PQkpTKSAkKFBJQ19PQkpTKQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRj aG4vY29yZS5jIGIvdG9vbHMvbGlicy9ldnRjaG4vY29yZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmMzMWUwOGMKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL2V2 dGNobi9jb3JlLmMKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUg PHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSAicHJpdmF0ZS5oIgor Cit4ZW5ldnRjaG5faGFuZGxlICp4ZW5ldnRjaG5fb3Blbih4ZW50b29sbG9nX2xvZ2dlciAqbG9n Z2VyLCB1bnNpZ25lZCBvcGVuX2ZsYWdzKQoreworICAgIHhlbmV2dGNobl9oYW5kbGUgKnhjZSA9 IG1hbGxvYyhzaXplb2YoKnhjZSkpOworICAgIGludCByYzsKKworICAgIGlmICgheGNlKSByZXR1 cm4gTlVMTDsKKworICAgIHhjZS0+ZmQgPSAtMTsKKyAgICB4Y2UtPmxvZ2dlciA9IGxvZ2dlcjsK KyAgICB4Y2UtPmxvZ2dlcl90b2ZyZWUgID0gTlVMTDsKKworICAgIGlmICgheGNlLT5sb2dnZXIp IHsKKyAgICAgICAgeGNlLT5sb2dnZXIgPSB4Y2UtPmxvZ2dlcl90b2ZyZWUgPQorICAgICAgICAg ICAgKHhlbnRvb2xsb2dfbG9nZ2VyKikKKyAgICAgICAgICAgIHh0bF9jcmVhdGVsb2dnZXJfc3Rk aW9zdHJlYW0oc3RkZXJyLCBYVExfUFJPR1JFU1MsIDApOworICAgICAgICBpZiAoIXhjZS0+bG9n Z2VyKSBnb3RvIGVycjsKKyAgICB9CisKKyAgICByYyA9IG9zZGVwX2V2dGNobl9vcGVuKHhjZSk7 CisgICAgaWYgKCByYyAgPCAwICkgZ290byBlcnI7CisKKyAgICByZXR1cm4geGNlOworCitlcnI6 CisgICAgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjZSk7CisgICAgeHRsX2xvZ2dlcl9kZXN0cm95KHhj ZS0+bG9nZ2VyX3RvZnJlZSk7CisgICAgZnJlZSh4Y2UpOworICAgIHJldHVybiBOVUxMOworfQor CitpbnQgeGVuZXZ0Y2huX2Nsb3NlKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpbnQg cmM7CisKKyAgICBpZiAoICF4Y2UgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJjID0gb3Nk ZXBfZXZ0Y2huX2Nsb3NlKHhjZSk7CisgICAgeHRsX2xvZ2dlcl9kZXN0cm95KHhjZS0+bG9nZ2Vy X3RvZnJlZSk7CisgICAgZnJlZSh4Y2UpOworICAgIHJldHVybiByYzsKK30KKworLyoKKyAqIExv Y2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMt YmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5p bAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJzL2V2dGNobi9mcmVlYnNkLmMg Yi90b29scy9saWJzL2V2dGNobi9mcmVlYnNkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNjM2ZjA1MgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2Zy ZWVic2QuYwpAQCAtMCwwICsxLDEzOCBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisg KiBDb3B5cmlnaHQgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy dmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAqCisgKiBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoK KyAqIFNwbGl0IG9mZiBmcm9tIHhjX2ZyZWVic2Rfb3NkZXAuYworICovCisKKyNpbmNsdWRlIDxm Y250bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisK KyNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNobi5oPgorCisjaW5jbHVkZSAicHJpdmF0ZS5oIgorCisj ZGVmaW5lIEVWVENITl9ERVYgICAgICAiL2Rldi94ZW4vZXZ0Y2huIgorCitpbnQgb3NkZXBfZXZ0 Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IG9wZW4oRVZU Q0hOX0RFViwgT19SRFdSKTsKKyAgICBpZiAoIGZkID09IC0xICkKKyAgICAgICAgcmV0dXJuIC0x OworICAgIHhjZS0+ZmQgPSBmZDsKKyAgICByZXR1cm4gMDsKK30KKworaW50IG9zZGVwX2V2dGNo bl9jbG9zZSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaWYgKCB4Y2UtPmZkID09IC0x ICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2xvc2UoeGNlLT5mZCk7Cit9CisK K2ludCB4ZW5ldnRjaG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIHJldHVybiB4 Y2UtPmZkOworfQorCitpbnQgeGVuZXZ0Y2huX25vdGlmeSh4ZW5ldnRjaG5faGFuZGxlICp4Y2Us IGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVj dCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5vdGlmeTsKKworICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsK KworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Cit9 CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhl bmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkKQoreworICAgIGludCByZXQsIGZkID0geGNl LT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0IGJpbmQ7CisK KyAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKKworICAgIHJldCA9IGlvY3RsKGZkLCBJ T0NUTF9FVlRDSE5fQklORF9VTkJPVU5EX1BPUlQsICZiaW5kKTsKKyAgICByZXR1cm4gKCByZXQg PT0gMCApID8gYmluZC5wb3J0IDogcmV0OworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4 ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21p ZCwgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKK3sKKyAgICBpbnQgcmV0LCBmZCA9IHhjZS0+ ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX2ludGVyZG9tYWluIGJpbmQ7CisKKyAg ICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKKyAgICBiaW5kLnJlbW90ZV9wb3J0ID0gcmVt b3RlX3BvcnQ7CisKKyAgICByZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJE T01BSU4sICZiaW5kKTsKKyAgICByZXR1cm4gKCByZXQgPT0gMCApID8gYmluZC5wb3J0IDogcmV0 OworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX3ZpcnEoeGVuZXZ0 Y2huX2hhbmRsZSAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKK3sKKyAgICBpbnQgcmV0LCBmZCA9 IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX3ZpcnEgYmluZDsKKworICAg IGJpbmQudmlycSA9IHZpcnE7CisKKyAgICByZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJ TkRfVklSUSwgJmJpbmQpOworICAgIHJldHVybiAoIHJldCA9PSAwICkgPyBiaW5kLnBvcnQgOiBy ZXQ7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5iaW5kKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0 Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlv Y3RsX2V2dGNobl91bmJpbmQgdW5iaW5kOworCisgICAgdW5iaW5kLnBvcnQgPSBwb3J0OworCisg ICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fVU5CSU5ELCAmdW5iaW5kKTsKK30KKwor ZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fcGVuZGluZyh4ZW5ldnRjaG5faGFuZGxl ICp4Y2UpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBldnRjaG5fcG9ydF90IHBvcnQ7 CisKKyAgICBpZiAoIHJlYWQoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9IHNpemVvZihwb3J0 KSApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBwb3J0OworfQorCitpbnQgeGVu ZXZ0Y2huX3VubWFzayh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkK K3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworCisgICAgaWYgKCB3cml0ZShmZCwgJnBvcnQsIHNp emVvZihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJl dHVybiAwOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1m aWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAor ICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnMvZXZ0Y2huL2luY2x1ZGUveGVuZXZ0Y2huLmggYi90b29scy9saWJzL2V2dGNobi9pbmNs dWRlL3hlbmV2dGNobi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzODBm YTMKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL2V2dGNobi9pbmNsdWRlL3hlbmV2dGNo bi5oCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiBTcGxpdCBvZmYgZnJvbToK KyAqIHhlbmN0cmwuaAorICoKKyAqIEEgbGlicmFyeSBmb3IgbG93LWxldmVsIGFjY2VzcyB0byB0 aGUgWGVuIGNvbnRyb2wgaW50ZXJmYWNlcy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAw NCwgSyBBIEZyYXNlci4KKyAqLworCisjaWZuZGVmIFhFTkVWVENITl9ICisjZGVmaW5lIFhFTkVW VENITl9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPHhlbi9ldmVudF9jaGFu bmVsLmg+CisKKy8qIEEgcG9ydCBpZGVudGlmaWVyIGlzIGd1YXJhbnRlZWQgdG8gZml0IGluIDMx IGJpdHMuICovCit0eXBlZGVmIGludCBldnRjaG5fcG9ydF9vcl9lcnJvcl90OworCit0eXBlZGVm IHN0cnVjdCB4ZW5ldnRjaG5faGFuZGxlIHhlbmV2dGNobl9oYW5kbGU7CisKKy8qIENhbGxlcnMg d2hvIGRvbid0IGNhcmUgZG9uJ3QgbmVlZCB0byAjaW5jbHVkZSA8eGVudG9vbGxvZy5oPiAqLwor dHlwZWRlZiBzdHJ1Y3QgeGVudG9vbGxvZ19sb2dnZXIgeGVudG9vbGxvZ19sb2dnZXI7CisKKy8q CisgKiBFVkVOVCBDSEFOTkVMIEZVTkNUSU9OUworICoKKyAqIE5vbmUgb2YgdGhlc2UgZG8gYW55 IGxvZ2dpbmcuCisgKi8KKworLyoKKyAqIFJldHVybiBhIGhhbmRsZSB0byB0aGUgZXZlbnQgY2hh bm5lbCBkcml2ZXIsIG9yIE5VTEwgb24gZmFpbHVyZSwgaW4KKyAqIHdoaWNoIGNhc2UgZXJybm8g d2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KKyAqCisgKiBOb3RlOgorICogQWZ0ZXIgZm9yayBh IGNoaWxkIHByb2Nlc3MgbXVzdCBub3QgdXNlIGFueSBvcGVuZWQgeGMgZXZ0Y2huCisgKiBoYW5k bGUgaW5oZXJpdGVkIGZyb20gdGhlaXIgcGFyZW50LiBUaGV5IG11c3Qgb3BlbiBhIG5ldyBoYW5k bGUgaWYKKyAqIHRoZXkgd2FudCB0byBpbnRlcmFjdCB3aXRoIHhjLgorICoKKyAqIEJlZm9yZSBY ZW4gcHJlLTQuMSB0aGlzIGZ1bmN0aW9uIHdvdWxkIHNvbWV0aW1lcyByZXBvcnQgZXJyb3JzIHdp dGggcGVycm9yLgorICovCisvKiBDdXJyZW50bHkgbm8gZmxhZ3MgYXJlIGRlZmluZWQgKi8KK3hl bmV2dGNobl9oYW5kbGUgKnhlbmV2dGNobl9vcGVuKHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIs IHVuc2lnbmVkIG9wZW5fZmxhZ3MpOworCisvKgorICogQ2xvc2UgYSBoYW5kbGUgcHJldmlvdXNs eSBhbGxvY2F0ZWQgd2l0aCB4ZW5ldnRjaG5fb3BlbigpLgorICovCitpbnQgeGVuZXZ0Y2huX2Ns b3NlKHhlbmV2dGNobl9oYW5kbGUgKnhjZSk7CisKKy8qCisgKiBSZXR1cm4gYW4gZmQgdGhhdCBj YW4gYmUgc2VsZWN0KCllZCBvbi4KKyAqCisgKiBOb3RlIHRoYXQgZHVlIHRvIGJ1Z3MsIHNldHRp bmcgdGhpcyBmZCB0byBub24gYmxvY2tpbmcgbWF5IG5vdAorICogd29yazogeW91IHdvdWxkIGhv cGUgdGhhdCBpdCB3b3VsZCByZXN1bHQgaW4geGVuZXZ0Y2huX3BlbmRpbmcKKyAqIGZhaWxpbmcg d2l0aCBFV09VTERCTE9DSyBpZiB0aGVyZSBhcmUgbm8gZXZlbnRzIHNpZ25hbGVkLCBidXQgaW4K KyAqIGZhY3QgaXQgbWF5IGJsb2NrLiAgKEJ1ZyBpcyBwcmVzZW50IGluIGF0IGxlYXN0IExpbnV4 IDMuMTIsIGFuZAorICogcGVyaGFwcyBvbiBvdGhlciBwbGF0Zm9ybXMgb3IgbGF0ZXIgdmVyc2lv bi4pCisgKgorICogVG8gYmUgc2FmZSwgeW91IG11c3QgdXNlIHBvbGwoKSBvciBzZWxlY3QoKSBi ZWZvcmUgZWFjaCBjYWxsIHRvCisgKiB4ZW5ldnRjaG5fcGVuZGluZy4gIElmIHlvdSBoYXZlIG11 bHRpcGxlIHRocmVhZHMgKG9yIHByb2Nlc3NlcykKKyAqIHNoYXJpbmcgYSBzaW5nbGUgeGNlIGhh bmRsZSB0aGlzIHdpbGwgbm90IHdvcmssIGFuZCB0aGVyZSBpcyBubworICogc3RyYWlnaHRmb3J3 YXJkIHdvcmthcm91bmQuICBQbGVhc2UgZGVzaWduIHlvdXIgcHJvZ3JhbSBzb21lIG90aGVyCisg KiB3YXkuCisgKi8KK2ludCB4ZW5ldnRjaG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKTsKKwor LyoKKyAqIE5vdGlmeSB0aGUgZ2l2ZW4gZXZlbnQgY2hhbm5lbC4gUmV0dXJucyAtMSBvbiBmYWls dXJlLCBpbiB3aGljaCBjYXNlCisgKiBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5Lgor ICovCitpbnQgeGVuZXZ0Y2huX25vdGlmeSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9w b3J0X3QgcG9ydCk7CisKKy8qCisgKiBSZXR1cm5zIGEgbmV3IGV2ZW50IHBvcnQgYXdhaXRpbmcg aW50ZXJkb21haW4gY29ubmVjdGlvbiBmcm9tIHRoZSBnaXZlbgorICogZG9tYWluIElELCBvciAt MSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRl bHkuCisgKi8KK2V2dGNobl9wb3J0X29yX2Vycm9yX3QKK3hlbmV2dGNobl9iaW5kX3VuYm91bmRf cG9ydCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCk7CisKKy8qCisgKiBSZXR1cm5z IGEgbmV3IGV2ZW50IHBvcnQgYm91bmQgdG8gdGhlIHJlbW90ZSBwb3J0IGZvciB0aGUgZ2l2ZW4g ZG9tYWluIElELAorICogb3IgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBlcnJubyB3aWxs IGJlIHNldCBhcHByb3ByaWF0ZWx5LgorICovCitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4ZW5l dnRjaG5fYmluZF9pbnRlcmRvbWFpbih4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpOwor CisvKgorICogQmluZCBhbiBldmVudCBjaGFubmVsIHRvIHRoZSBnaXZlbiBWSVJRLiBSZXR1cm5z IHRoZSBldmVudCBjaGFubmVsIGJvdW5kIHRvCisgKiB0aGUgVklSUSwgb3IgLTEgb24gZmFpbHVy ZSwgaW4gd2hpY2ggY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgorICovCitl dnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4ZW5ldnRjaG5fYmluZF92aXJxKHhlbmV2dGNobl9oYW5k bGUgKnhjZSwgdW5zaWduZWQgaW50IHZpcnEpOworCisvKgorICogVW5iaW5kIHRoZSBnaXZlbiBl dmVudCBjaGFubmVsLiBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UgZXJybm8K KyAqIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKi8KK2ludCB4ZW5ldnRjaG5fdW5iaW5k KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKKworLyoKKyAqIFJl dHVybiB0aGUgbmV4dCBldmVudCBjaGFubmVsIHRvIGJlY29tZSBwZW5kaW5nLCBvciAtMSBvbiBm YWlsdXJlLCBpbiB3aGljaAorICogY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5 LgorICoKKyAqIEF0IHRoZSBoeXBlcnZpc29yIGxldmVsIHRoZSBldmVudCBjaGFubmVsIHdpbGwg aGF2ZSBiZWVuIG1hc2tlZCwKKyAqIGFuZCB0aGVuIGNsZWFyZWQsIGJ5IHRoZSB1bmRlcmx5aW5n IG1hY2hpbmVyeSAoZXZ0Y2huIGtlcm5lbAorICogZHJpdmVyLCBvciBlcXVpdmFsZW50KS4gIFNv IGlmIHRoZSBldmVudCBjaGFubmVsIGlzIHNpZ25hbGVkIGFnYWluCisgKiBhZnRlciBpdCBpcyBy ZXR1cm5lZCBoZXJlLCBpdCB3aWxsIGJlIHF1ZXVlZCB1cCwgYW5kIGRlbGl2ZXJlZAorICogYWdh aW4gYWZ0ZXIgeW91IHVubWFzayBpdC4gIChTZWUgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIFhl bgorICogcHVibGljIGhlYWRlciBldmVudF9jaGFubmVsLmguKQorICoKKyAqIE9uIHJlY2Vpdmlu ZyB0aGUgbm90aWZpY2F0aW9uIGZyb20geGVuZXZ0Y2huX3BlbmRpbmcsIHlvdSBzaG91bGQKKyAq IG5vcm1hbGx5OiBjaGVjayAoYnkgb3RoZXIgbWVhbnMpIHdoYXQgd29yayBuZWVkcyBkb2luZzsg ZG8gdGhlCisgKiBuZWNlc3Nhcnkgd29yayAoaWYgYW55KTsgdW5tYXNrIHRoZSBldmVudCBjaGFu bmVsIHdpdGgKKyAqIHhlbmV2dGNobl91bm1hc2sgKGlmIHlvdSB3YW50IHRvIHJlY2VpdmUgYW55 IGZ1cnRoZXIKKyAqIG5vdGlmaWNhdGlvbnMpLgorICovCitldnRjaG5fcG9ydF9vcl9lcnJvcl90 Cit4ZW5ldnRjaG5fcGVuZGluZyh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpOworCisvKgorICogVW5t YXNrIHRoZSBnaXZlbiBldmVudCBjaGFubmVsLiBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdo aWNoIGNhc2UgZXJybm8KKyAqIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCisgKi8KK2ludCB4 ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0 KTsKKworI2VuZGlmCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0 CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9v bHMvbGlicy9ldnRjaG4vbGlieGVuZXZ0Y2huLm1hcCBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2xpYnhl bmV2dGNobi5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzNzk0MAot LS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2xpYnhlbmV2dGNobi5tYXAKQEAg LTAsMCArMSwxNCBAQAorVkVSU18xLjAgeworCWdsb2JhbDoKKwkJeGVuZXZ0Y2huX2ZkOworCQl4 ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQ7CisJCXhlbmV2dGNobl91bmJpbmQ7CisJCXhlbmV2 dGNobl91bm1hc2s7CisJCXhlbmV2dGNobl9ub3RpZnk7CisJCXhlbmV2dGNobl9iaW5kX2ludGVy ZG9tYWluOworCQl4ZW5ldnRjaG5fYmluZF92aXJxOworCQl4ZW5ldnRjaG5fb3BlbjsKKwkJeGVu ZXZ0Y2huX2Nsb3NlOworCQl4ZW5ldnRjaG5fcGVuZGluZzsKKwlsb2NhbDogKjsgLyogRG8gbm90 IGV4cG9zZSBhbnl0aGluZyBieSBkZWZhdWx0ICovCit9OwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGli cy9ldnRjaG4vbGludXguYyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL2xpbnV4LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmZDZlOQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xz L2xpYnMvZXZ0Y2huL2xpbnV4LmMKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBUaGlzIGxpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli cmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAq IFNwbGl0IG91dCBmcm9tIHhjX2xpbnVzX29zZGVwLmM6CisgKgorICogQ29weXJpZ2h0IDIwMDYg U3VuIE1pY3Jvc3lzdGVtcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqLworCisjaW5j bHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgor I2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKyNpbmNsdWRl IDx4ZW4vc3lzL2V2dGNobi5oPgorCisjaW5jbHVkZSAicHJpdmF0ZS5oIgorCitpbnQgb3NkZXBf ZXZ0Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IG9wZW4o Ii9kZXYveGVuL2V2dGNobiIsIE9fUkRXUik7CisgICAgaWYgKCBmZCA9PSAtMSApCisgICAgICAg IHJldHVybiAtMTsKKyAgICB4Y2UtPmZkID0gZmQ7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBv c2RlcF9ldnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGlmICggeGNl LT5mZCA9PSAtMSApCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNsb3NlKHhjZS0+ ZmQpOworfQorCitpbnQgeGVuZXZ0Y2huX2ZkKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAg ICByZXR1cm4geGNlLT5mZDsKK30KKworaW50IHhlbmV2dGNobl9ub3RpZnkoeGVuZXZ0Y2huX2hh bmRsZSAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsK KyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX25vdGlmeSBub3RpZnk7CisKKyAgICBub3RpZnkucG9y dCA9IHBvcnQ7CisKKyAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZu b3RpZnkpOworfQorCitldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhlbmV2dGNobl9iaW5kX3VuYm91 bmRfcG9ydCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZG9taWQpCit7CisgICAgaW50IGZkID0geGNl LT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0IGJpbmQ7CisK KyAgICBiaW5kLnJlbW90ZV9kb21haW4gPSBkb21pZDsKKworICAgIHJldHVybiBpb2N0bChmZCwg SU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAmYmluZCk7Cit9CisKK2V2dGNobl9wb3J0 X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGVuZXZ0Y2huX2hhbmRsZSAq eGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGV2dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsK KyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKKworICAgIGJp bmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOworICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVf cG9ydDsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01B SU4sICZiaW5kKTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF92 aXJxKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmlycSkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZk OworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7CisKKyAgICBiaW5kLnZp cnEgPSB2aXJxOworCisgICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJR LCAmYmluZCk7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5iaW5kKHhlbmV2dGNobl9oYW5kbGUgKnhj ZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3Ry dWN0IGlvY3RsX2V2dGNobl91bmJpbmQgdW5iaW5kOworCisgICAgdW5iaW5kLnBvcnQgPSBwb3J0 OworCisgICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fVU5CSU5ELCAmdW5iaW5kKTsK K30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fcGVuZGluZyh4ZW5ldnRjaG5f aGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBldnRjaG5fcG9ydF90 IHBvcnQ7CisKKyAgICBpZiAoIHJlYWQoZmQsICZwb3J0LCBzaXplb2YocG9ydCkpICE9IHNpemVv Zihwb3J0KSApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiBwb3J0OworfQorCitp bnQgeGVuZXZ0Y2huX3VubWFzayh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3Qg cG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworCisgICAgaWYgKCB3cml0ZShmZCwgJnBv cnQsIHNpemVvZihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkKKyAgICAgICAgcmV0dXJuIC0xOwor ICAgIHJldHVybiAwOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQwor ICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0 aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnMvZXZ0Y2huL21pbmlvcy5jIGIvdG9vbHMvbGlicy9ldnRjaG4vbWluaW9zLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI5MTNhMgotLS0gL2Rldi9udWxs CisrKyBiL3Rvb2xzL2xpYnMvZXZ0Y2huL21pbmlvcy5jCkBAIC0wLDAgKzEsMjY5IEBACisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKgorICogQ29weXJpZ2h0IDIwMDctMjAwOCBTYW11ZWwgVGhp YmF1bHQgPHNhbXVlbC50aGliYXVsdEBldS5jaXRyaXguY29tPi4KKyAqIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICoKKyAqIFRoaXMg bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp cyBsaWJyYXJ5OyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisg KgorICogU3BsaXQgb2ZmIGZyb20geGNfbWluaW9zLmMKKyAqLworCisjaW5jbHVkZSAieGVuLWV4 dGVybmFsL2JzZC1zeXMtcXVldWUuaCIKKyNpbmNsdWRlIDxtaW5pLW9zL3R5cGVzLmg+CisjaW5j bHVkZSA8bWluaS1vcy9vcy5oPgorI2luY2x1ZGUgPG1pbmktb3MvbGliLmg+CisjaW5jbHVkZSA8 bWluaS1vcy9ldmVudHMuaD4KKyNpbmNsdWRlIDxtaW5pLW9zL3dhaXQuaD4KKworI2luY2x1ZGUg PHN5cy9zb2NrZXQuaD4KKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGVycm5vLmg+ CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGlu dC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisKKyNpbmNs dWRlICJwcml2YXRlLmgiCisKK2V4dGVybiB2b2lkIG1pbmlvc19ldnRjaG5fY2xvc2VfZmQoaW50 IGZkKTsKKworZXh0ZXJuIHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgZXZlbnRfcXVldWU7CisKKy8v dm9pZCBtaW5pb3NfZXZ0Y2huX2Nsb3NlX2ZkKGludCBmZCk7CisKKy8qIFhYWCBOb3RlOiBUaGlz IGlzIG5vdCB0aHJlYWRzYWZlICovCitzdGF0aWMgc3RydWN0IGV2dGNobl9wb3J0X2luZm8qIHBv cnRfYWxsb2MoaW50IGZkKSB7CisgICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5m bzsKKyAgICBwb3J0X2luZm8gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBldnRjaG5fcG9ydF9pbmZv KSk7CisgICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAg ICBwb3J0X2luZm8tPnBlbmRpbmcgPSAwOworICAgIHBvcnRfaW5mby0+cG9ydCA9IC0xOworICAg IHBvcnRfaW5mby0+Ym91bmQgPSAwOworCisgICAgTElTVF9JTlNFUlRfSEVBRCgmZmlsZXNbZmRd LmV2dGNobi5wb3J0cywgcG9ydF9pbmZvLCBsaXN0KTsKKyAgICByZXR1cm4gcG9ydF9pbmZvOwor fQorCitzdGF0aWMgdm9pZCBwb3J0X2RlYWxsb2Moc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBv cnRfaW5mbykgeworICAgIGlmIChwb3J0X2luZm8tPmJvdW5kKQorICAgICAgICB1bmJpbmRfZXZ0 Y2huKHBvcnRfaW5mby0+cG9ydCk7CisgICAgTElTVF9SRU1PVkUocG9ydF9pbmZvLCBsaXN0KTsK KyAgICBmcmVlKHBvcnRfaW5mbyk7Cit9CisKK2ludCBvc2RlcF9ldnRjaG5fb3Blbih4ZW5ldnRj aG5faGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZkID0gYWxsb2NfZmQoRlRZUEVfRVZUQ0hOKTsK KyAgICBpZiAoIGZkID09IC0xICkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIExJU1RfSU5JVCgm ZmlsZXNbZmRdLmV2dGNobi5wb3J0cyk7CisgICAgeGNlLT5mZCA9IGZkOworICAgIHByaW50Zigi ZXZ0Y2huX29wZW4oKSAtPiAlZFxuIiwgZmQpOworICAgIHJldHVybiAwOworfQorCitpbnQgb3Nk ZXBfZXZ0Y2huX2Nsb3NlKHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpZiAoIHhjZS0+ ZmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjbG9zZSh4Y2UtPmZk KTsKK30KKwordm9pZCBtaW5pb3NfZXZ0Y2huX2Nsb3NlX2ZkKGludCBmZCkKK3sKKyAgICBzdHJ1 Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvLCAqdG1wOworICAgIExJU1RfRk9SRUFDSF9T QUZFKHBvcnRfaW5mbywgJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMsIGxpc3QsIHRtcCkKKyAgICAg ICAgcG9ydF9kZWFsbG9jKHBvcnRfaW5mbyk7CisKKyAgICBmaWxlc1tmZF0udHlwZSA9IEZUWVBF X05PTkU7Cit9CisKK2ludCB4ZW5ldnRjaG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQorewor ICAgIHJldHVybiB4Y2UtPmZkOworfQorCitpbnQgeGVuZXZ0Y2huX25vdGlmeSh4ZW5ldnRjaG5f aGFuZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgcmV0OworCisgICAg cmV0ID0gbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHBvcnQpOworCisgICAgaWYgKHJldCA8IDAp IHsKKwllcnJubyA9IC1yZXQ7CisJcmV0ID0gLTE7CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyB2b2lkIGV2dGNobl9oYW5kbGVyKGV2dGNobl9wb3J0X3QgcG9ydCwgc3RydWN0 IHB0X3JlZ3MgKnJlZ3MsIHZvaWQgKmRhdGEpCit7CisgICAgaW50IGZkID0gKGludCkoaW50cHRy X3QpZGF0YTsKKyAgICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAgIGFz c2VydChmaWxlc1tmZF0udHlwZSA9PSBGVFlQRV9FVlRDSE4pOworICAgIG1hc2tfZXZ0Y2huKHBv cnQpOworICAgIExJU1RfRk9SRUFDSChwb3J0X2luZm8sICZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRz LCBsaXN0KSB7CisgICAgICAgIGlmIChwb3J0X2luZm8tPnBvcnQgPT0gcG9ydCkKKyAgICAgICAg ICAgIGdvdG8gZm91bmQ7CisgICAgfQorICAgIHByaW50aygiVW5rbm93biBwb3J0IGZvciBoYW5k bGUgJWRcbiIsIGZkKTsKKyAgICByZXR1cm47CisKKyBmb3VuZDoKKyAgICBwb3J0X2luZm8tPnBl bmRpbmcgPSAxOworICAgIGZpbGVzW2ZkXS5yZWFkID0gMTsKKyAgICB3YWtlX3VwKCZldmVudF9x dWV1ZSk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdW5ib3Vu ZF9wb3J0KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkKQoreworICAgIGludCBmZCA9 IHhjZS0+ZmQ7CisgICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKKyAgICBp bnQgcmV0OworICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKKworICAgIGFzc2VydChnZXRfY3VycmVu dCgpID09IG1haW5fdGhyZWFkKTsKKyAgICBwb3J0X2luZm8gPSBwb3J0X2FsbG9jKGZkKTsKKyAg ICBpZiAocG9ydF9pbmZvID09IE5VTEwpCisJcmV0dXJuIC0xOworCisgICAgcHJpbnRmKCJ4ZW5l dnRjaG5fYmluZF91bmJvdW5kX3BvcnQoJWQpIiwgZG9taWQpOworICAgIHJldCA9IGV2dGNobl9h bGxvY191bmJvdW5kKGRvbWlkLCBldnRjaG5faGFuZGxlciwgKHZvaWQqKShpbnRwdHJfdClmZCwg JnBvcnQpOworICAgIHByaW50ZigiID0gJWRcbiIsIHJldCk7CisKKyAgICBpZiAocmV0IDwgMCkg eworCXBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOworCWVycm5vID0gLXJldDsKKwlyZXR1cm4gLTE7 CisgICAgfQorICAgIHBvcnRfaW5mby0+Ym91bmQgPSAxOworICAgIHBvcnRfaW5mby0+cG9ydCA9 IHBvcnQ7CisgICAgdW5tYXNrX2V2dGNobihwb3J0KTsKKyAgICByZXR1cm4gcG9ydDsKK30KKwor ZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4ZW5ldnRj aG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9ydCkKK3sKKyAgICBp bnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87 CisgICAgZXZ0Y2huX3BvcnRfdCBsb2NhbF9wb3J0OworICAgIGludCByZXQ7CisKKyAgICBhc3Nl cnQoZ2V0X2N1cnJlbnQoKSA9PSBtYWluX3RocmVhZCk7CisgICAgcG9ydF9pbmZvID0gcG9ydF9h bGxvYyhmZCk7CisgICAgaWYgKHBvcnRfaW5mbyA9PSBOVUxMKQorCXJldHVybiAtMTsKKworICAg IHByaW50ZigieGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oJWQsICUiUFJJZDMyIikiLCBkb21p ZCwgcmVtb3RlX3BvcnQpOworICAgIHJldCA9IGV2dGNobl9iaW5kX2ludGVyZG9tYWluKGRvbWlk LCByZW1vdGVfcG9ydCwgZXZ0Y2huX2hhbmRsZXIsICh2b2lkKikoaW50cHRyX3QpZmQsICZsb2Nh bF9wb3J0KTsKKyAgICBwcmludGYoIiA9ICVkXG4iLCByZXQpOworCisgICAgaWYgKHJldCA8IDAp IHsKKwlwb3J0X2RlYWxsb2MocG9ydF9pbmZvKTsKKwllcnJubyA9IC1yZXQ7CisJcmV0dXJuIC0x OworICAgIH0KKyAgICBwb3J0X2luZm8tPmJvdW5kID0gMTsKKyAgICBwb3J0X2luZm8tPnBvcnQg PSBsb2NhbF9wb3J0OworICAgIHVubWFza19ldnRjaG4obG9jYWxfcG9ydCk7CisgICAgcmV0dXJu IGxvY2FsX3BvcnQ7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5iaW5kKHhlbmV2dGNobl9oYW5kbGUg KnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAg c3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBvcnRfaW5mbzsKKworICAgIExJU1RfRk9SRUFDSChw b3J0X2luZm8sICZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRzLCBsaXN0KSB7CisgICAgICAgIGlmIChw b3J0X2luZm8tPnBvcnQgPT0gcG9ydCkgeworICAgICAgICAgICAgcG9ydF9kZWFsbG9jKHBvcnRf aW5mbyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBwcmlu dGYoIldhcm5pbmc6IGNvdWxkbid0IGZpbmQgcG9ydCAlIlBSSWQzMiIgZm9yIHhjIGhhbmRsZSAl eFxuIiwgcG9ydCwgZmQpOworICAgIGVycm5vID0gRUlOVkFMOworICAgIHJldHVybiAtMTsKK30K KworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF92aXJxKHhlbmV2dGNobl9o YW5kbGUgKnhjZSwgdW5zaWduZWQgaW50IHZpcnEpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsK KyAgICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAgIGV2dGNobl9wb3J0 X3QgcG9ydDsKKworICAgIGFzc2VydChnZXRfY3VycmVudCgpID09IG1haW5fdGhyZWFkKTsKKyAg ICBwb3J0X2luZm8gPSBwb3J0X2FsbG9jKGZkKTsKKyAgICBpZiAocG9ydF9pbmZvID09IE5VTEwp CisJcmV0dXJuIC0xOworCisgICAgcHJpbnRmKCJ4ZW5ldnRjaG5fYmluZF92aXJxKCVkKSIsIHZp cnEpOworICAgIHBvcnQgPSBiaW5kX3ZpcnEodmlycSwgZXZ0Y2huX2hhbmRsZXIsICh2b2lkKiko aW50cHRyX3QpZmQpOworCisgICAgaWYgKHBvcnQgPCAwKSB7CisJcG9ydF9kZWFsbG9jKHBvcnRf aW5mbyk7CisJZXJybm8gPSAtcG9ydDsKKwlyZXR1cm4gLTE7CisgICAgfQorICAgIHBvcnRfaW5m by0+Ym91bmQgPSAxOworICAgIHBvcnRfaW5mby0+cG9ydCA9IHBvcnQ7CisgICAgdW5tYXNrX2V2 dGNobihwb3J0KTsKKyAgICByZXR1cm4gcG9ydDsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3Jf dCB4ZW5ldnRjaG5fcGVuZGluZyh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZk ID0geGNlLT5mZDsKKyAgICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOworICAg IHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgZXZ0Y2huX3BvcnRfdCByZXQgPSAtMTsKKworICAg IGxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKyAgICBmaWxlc1tmZF0ucmVhZCA9IDA7CisKKyAgICBM SVNUX0ZPUkVBQ0gocG9ydF9pbmZvLCAmZmlsZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCkgewor ICAgICAgICBpZiAocG9ydF9pbmZvLT5wb3J0ICE9IC0xICYmIHBvcnRfaW5mby0+cGVuZGluZykg eworICAgICAgICAgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICAgICAgICAgIHJldCA9IHBv cnRfaW5mby0+cG9ydDsKKyAgICAgICAgICAgICAgICBwb3J0X2luZm8tPnBlbmRpbmcgPSAwOwor ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmaWxlc1tmZF0ucmVhZCA9IDE7 CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9 CisgICAgbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworICAgIHJldHVybiByZXQ7Cit9CisKK2lu dCB4ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2huX3BvcnRfdCBw b3J0KQoreworICAgIHVubWFza19ldnRjaG4ocG9ydCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8q CisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9ldnRjaG4vbmV0 YnNkLmMgYi90b29scy9saWJzL2V2dGNobi9uZXRic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5jNDEyM2ZlCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9ldnRj aG4vbmV0YnNkLmMKQEAgLTAsMCArMSwxNDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq CisgKiBDb3B5cmlnaHQgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuICBBbGwgcmlnaHRzIHJl c2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAqCisgKiBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJy YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRo aXMgbGlicmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor ICoKKyAqIFNwbGl0IG91dCBmcm9tIHhjX25ldGJzZC5jCisgKi8KKworI2luY2x1ZGUgPGZjbnRs Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2lu Y2x1ZGUgPHhlbi9zeXMvZXZ0Y2huLmg+CisKKyNpbmNsdWRlICJwcml2YXRlLmgiCisKKyNkZWZp bmUgRVZUQ0hOX0RFVl9OQU1FICAiL2Rldi94ZW5ldnQiCisKK2ludCBvc2RlcF9ldnRjaG5fb3Bl bih4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaW50IGZkID0gb3BlbihFVlRDSE5fREVW X05BTUUsIE9fTk9OQkxPQ0t8T19SRFdSKTsKKyAgICBpZiAoIGZkID09IC0xICkKKyAgICAgICAg cmV0dXJuIC0xOworICAgIHhjZS0+ZmQgPSBmZDsKKyAgICByZXR1cm4gMDsKK30KKworaW50IG9z ZGVwX2V2dGNobl9jbG9zZSh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgaWYgKCB4Y2Ut PmZkID09IC0xICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2xvc2UoeGNlLT5m ZCk7Cit9CisKK2ludCB4ZW5ldnRjaG5fZmQoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAg IHJldHVybiB4Y2UtPmZkOworfQorCitpbnQgeGVuZXZ0Y2huX25vdGlmeSh4ZW5ldnRjaG5faGFu ZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOwor ICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5vdGlmeTsKKworICAgIG5vdGlmeS5wb3J0 ID0gcG9ydDsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX05PVElGWSwgJm5v dGlmeSk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdW5ib3Vu ZF9wb3J0KHhlbmV2dGNobl9oYW5kbGUgKiB4Y2UsIGludCBkb21pZCkKK3sKKyAgICBpbnQgZmQg PSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmlu ZDsKKyAgICBpbnQgcmV0OworCisgICAgYmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7CisKKyAg ICByZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVU5CT1VORF9QT1JULCAmYmluZCk7 CisgICAgaWYgKHJldCA9PSAwKQorCXJldHVybiBiaW5kLnBvcnQ7CisgICAgZWxzZQorCXJldHVy biAtMTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF9pbnRlcmRv bWFpbih4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCByZW1vdGVfcG9y dCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmlu ZF9pbnRlcmRvbWFpbiBiaW5kOworICAgIGludCByZXQ7CisKKyAgICBiaW5kLnJlbW90ZV9kb21h aW4gPSBkb21pZDsKKyAgICBiaW5kLnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7CisKKyAgICBy ZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5kKTsKKyAg ICBpZiAocmV0ID09IDApCisJcmV0dXJuIGJpbmQucG9ydDsKKyAgICBlbHNlCisJcmV0dXJuIC0x OworfQorCitpbnQgeGVuZXZ0Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGV2dGNo bl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOworICAgIHN0cnVjdCBpb2N0 bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKKworICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKKworICAg IHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Cit9CisKK2V2 dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX2JpbmRfdmlycSh4ZW5ldnRjaG5faGFuZGxl ICp4Y2UsIHVuc2lnbmVkIGludCB2aXJxKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAg c3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX3ZpcnEgYmluZDsKKyAgICBpbnQgZXJyOworCisgICAg YmluZC52aXJxID0gdmlycTsKKworICAgIGVyciA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklO RF9WSVJRLCAmYmluZCk7CisgICAgaWYgKGVycikKKwlyZXR1cm4gLTE7CisgICAgZWxzZQorCXJl dHVybiBiaW5kLnBvcnQ7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX3Bl bmRpbmcoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7Cisg ICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworCisgICAgaWYgKCByZWFkX2V4YWN0KGZkLCAoY2hhciAq KSZwb3J0LCBzaXplb2YocG9ydCkpID09IC0xICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAg cmV0dXJuIHBvcnQ7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNobl9oYW5kbGUg KnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAg cmV0dXJuIHdyaXRlX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpOworfQor CisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAi QlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRh YnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZXZ0Y2hu L3ByaXZhdGUuaCBiL3Rvb2xzL2xpYnMvZXZ0Y2huL3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5mY2QwZTk2Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGli cy9ldnRjaG4vcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMjUgQEAKKyNpZm5kZWYgWEVORVZUQ0hOX1BS SVZBVEVfSAorI2RlZmluZSBYRU5FVlRDSE5fUFJJVkFURV9ICisKKyNpbmNsdWRlIDx4ZW50b29s bG9nLmg+CisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CisKK3N0cnVjdCB4ZW5ldnRjaG5faGFuZGxl IHsKKyAgICB4ZW50b29sbG9nX2xvZ2dlciAqbG9nZ2VyLCAqbG9nZ2VyX3RvZnJlZTsKKyAgICBp bnQgZmQ7Cit9OworCitpbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNl KTsKK2ludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKTsKKworI2Vu ZGlmCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5 bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRl bnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9l dnRjaG4vc29sYXJpcy5jIGIvdG9vbHMvbGlicy9ldnRjaG4vc29sYXJpcy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNGNlZmIKLS0tIC9kZXYvbnVsbAorKysgYi90b29s cy9saWJzL2V2dGNobi9zb2xhcmlzLmMKQEAgLTAsMCArMSwxMzUgQEAKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuICBB bGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4K KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgor ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorICoKKyAqIFNwbGl0IG91dCBmcm9tIHhjX3NvbGFyaXMuYworICovCisKKyNp bmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8c3lzL2lv Y3RsLmg+CisKKyNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNobi5oPgorCisjaW5jbHVkZSAicHJpdmF0 ZS5oIgorCitpbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlKQorewor ICAgIGludCBmZDsKKworICAgIGlmICggKGZkID0gb3BlbigiL2Rldi94ZW4vZXZ0Y2huIiwgT19S RFdSKSkgPT0gLTEgKQorICAgIHsKKyAgICAgICAgUEVSUk9SKCJDb3VsZCBub3Qgb3BlbiBldmVu dCBjaGFubmVsIGludGVyZmFjZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAg eGNlLT5mZCA9IGZkOworICAgIHJldHVybiAwOworfQorCitpbnQgb3NkZXBfZXZ0Y2huX2Nsb3Nl KHhlbmV2dGNobl9oYW5kbGUgKnhjZSkKK3sKKyAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQorICAg ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKK30KKworaW50IHhl bmV2dGNobl9mZCh4ZW5ldnRjaG5faGFuZGxlICp4Y2UpCit7CisgICAgcmV0dXJuIHhjZS0+ZmQ7 Cit9CisKK2ludCB4ZW5ldnRjaG5fbm90aWZ5KHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0Y2hu X3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgc3RydWN0IGlvY3Rs X2V2dGNobl9ub3RpZnkgbm90aWZ5OworCisgICAgbm90aWZ5LnBvcnQgPSBwb3J0OworCisgICAg cmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fTk9USUZZLCAmbm90aWZ5KTsKK30KKworZXZ0 Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlLCBpbnQgZG9taWQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBz dHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0IGJpbmQ7CisKKyAgICBiaW5kLnJl bW90ZV9kb21haW4gPSBkb21pZDsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hO X0JJTkRfVU5CT1VORF9QT1JULCAmYmluZCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3Qg eGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLCBpbnQgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2 dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCit7CisgICAgaW50IGZkID0geGNlLT5mZDsKKyAgICBz dHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKKworICAgIGJpbmQucmVt b3RlX2RvbWFpbiA9IGRvbWlkOworICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsK KworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZi aW5kKTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4ZW5ldnRjaG5fYmluZF92aXJxKHhl bmV2dGNobl9oYW5kbGUgKnhjZSwgdW5zaWduZWQgaW50IHZpcnEpCit7CisgICAgaW50IGZkID0g eGNlLT5mZDsKKyAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfdmlycSBiaW5kOworCisgICAg YmluZC52aXJxID0gdmlycTsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJ TkRfVklSUSwgJmJpbmQpOworfQorCitpbnQgeGVuZXZ0Y2huX3VuYmluZCh4ZW5ldnRjaG5faGFu ZGxlICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBpbnQgZmQgPSB4Y2UtPmZkOwor ICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKKworICAgIHVuYmluZC5wb3J0 ID0gcG9ydDsKKworICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVu YmluZCk7Cit9CisKK2V2dGNobl9wb3J0X29yX2Vycm9yX3QgeGVuZXZ0Y2huX3BlbmRpbmcoeGVu ZXZ0Y2huX2hhbmRsZSAqeGNlKQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgZXZ0Y2hu X3BvcnRfdCBwb3J0OworCisgICAgaWYgKCByZWFkX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBz aXplb2YocG9ydCkpID09IC0xICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIHBv cnQ7Cit9CisKK2ludCB4ZW5ldnRjaG5fdW5tYXNrKHhlbmV2dGNobl9oYW5kbGUgKnhjZSwgZXZ0 Y2huX3BvcnRfdCBwb3J0KQoreworICAgIGludCBmZCA9IHhjZS0+ZmQ7CisgICAgcmV0dXJuIHdy aXRlX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpOworfQorCisvKgorICog TG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICog Yy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTog bmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvdG9vbGxvZy9pbmNsdWRl L3hlbnRvb2xsb2cuaCBiL3Rvb2xzL2xpYnMvdG9vbGxvZy9pbmNsdWRlL3hlbnRvb2xsb2cuaApp bmRleCA4NTNlOWM3Li43NmYxN2ZlIDEwMDY0NAotLS0gYS90b29scy9saWJzL3Rvb2xsb2cvaW5j bHVkZS94ZW50b29sbG9nLmgKKysrIGIvdG9vbHMvbGlicy90b29sbG9nL2luY2x1ZGUveGVudG9v bGxvZy5oCkBAIC0xMzQsMyArMTM0LDEzIEBAIGNvbnN0IGNoYXIgKnh0bF9sZXZlbF90b19zdHJp bmcoeGVudG9vbGxvZ19sZXZlbCk7IC8qIG5ldmVyIGZhaWxzICovCiAKIAogI2VuZGlmIC8qIFhF TlRPT0xMT0dfSCAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICog Yy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDog NAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnMvdG9vbGxvZy94dGxfY29yZS5jIGIvdG9vbHMvbGlicy90b29sbG9nL3h0bF9jb3Jl LmMKaW5kZXggYzQ3MjRhMC4uMDk5ZDJmMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy90b29sbG9n L3h0bF9jb3JlLmMKKysrIGIvdG9vbHMvbGlicy90b29sbG9nL3h0bF9jb3JlLmMKQEAgLTgxLDMg KzgxLDEzIEBAIHZvaWQgeHRsX2xvZ2dlcl9kZXN0cm95KHN0cnVjdCB4ZW50b29sbG9nX2xvZ2dl ciAqbG9nZ2VyKSB7CiAgICAgaWYgKCFsb2dnZXIpIHJldHVybjsKICAgICBsb2dnZXItPmRlc3Ry b3kobG9nZ2VyKTsKIH0KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAq IGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6 IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90 b29scy9saWJzL3Rvb2xsb2cveHRsX2xvZ2dlcl9zdGRpby5jIGIvdG9vbHMvbGlicy90b29sbG9n L3h0bF9sb2dnZXJfc3RkaW8uYwppbmRleCAwY2Q5MjA2Li5mOWM1YmQ4IDEwMDY0NAotLS0gYS90 b29scy9saWJzL3Rvb2xsb2cveHRsX2xvZ2dlcl9zdGRpby5jCisrKyBiL3Rvb2xzL2xpYnMvdG9v bGxvZy94dGxfbG9nZ2VyX3N0ZGlvLmMKQEAgLTE5MCwzICsxOTAsMTMgQEAgeGVudG9vbGxvZ19s b2dnZXJfc3RkaW9zdHJlYW0gKnh0bF9jcmVhdGVsb2dnZXJfc3RkaW9zdHJlYW0KIAogICAgIHJl dHVybiBYVExfTkVXX0xPR0dFUihzdGRpb3N0cmVhbSwgbmV3bG9nZ2VyKTsKIH0KKworLyoKKyAq IExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAq IGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6 IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJ2Y2hhbi9NYWtlZmlsZSBi L3Rvb2xzL2xpYnZjaGFuL01ha2VmaWxlCmluZGV4IDNjNTBmZTYuLjg0MTI4YTMgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnZjaGFuL01ha2VmaWxlCisrKyBiL3Rvb2xzL2xpYnZjaGFuL01ha2VmaWxl CkBAIC0xMCw5ICsxMCw5IEBAIE5PREVfT0JKUyA9IG5vZGUubwogTk9ERTJfT0JKUyA9IG5vZGUt c2VsZWN0Lm8KIAogTElCVkNIQU5fUElDX09CSlMgPSAkKHBhdHN1YnN0ICUubywlLm9waWMsJChM SUJWQ0hBTl9PQkpTKSkKLUxJQlZDSEFOX0xJQlMgPSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChM RExJQlNfbGlieGVuY3RybCkKLSQoTElCVkNIQU5fT0JKUykgJChMSUJWQ0hBTl9QSUNfT0JKUyk6 IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5zdG9yZSkgJChDRkxBR1NfbGlieGVuY3RybCkKLSQo Tk9ERV9PQkpTKSAkKE5PREUyX09CSlMpOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkK K0xJQlZDSEFOX0xJQlMgPSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChMRExJQlNfbGlieGVuY3Ry bCkgJChMRExJQlNfbGlieGVuZXZ0Y2huKQorJChMSUJWQ0hBTl9PQkpTKSAkKExJQlZDSEFOX1BJ Q19PQkpTKTogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKSAkKENGTEFHU19saWJ4ZW5j dHJsKSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiskKE5PREVfT0JKUykgJChOT0RFMl9PQkpTKTog Q0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIAog TUFKT1IgPSAxLjAKIE1JTk9SID0gMApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlidmNoYW4vaW5pdC5j IGIvdG9vbHMvbGlidmNoYW4vaW5pdC5jCmluZGV4IDc3YmU0ZTcuLjY2Y2IxMDMgMTAwNjQ0Ci0t LSBhL3Rvb2xzL2xpYnZjaGFuL2luaXQuYworKysgYi90b29scy9saWJ2Y2hhbi9pbml0LmMKQEAg LTIxNiwyNSArMjE2LDI1IEBAIHN0YXRpYyBpbnQgaW5pdF9ldnRfc3J2KHN0cnVjdCBsaWJ4ZW52 Y2hhbiAqY3RybCwgaW50IGRvbWFpbiwgeGVudG9vbGxvZ19sb2dnZXIKIHsKIAlldnRjaG5fcG9y dF9vcl9lcnJvcl90IHBvcnQ7CiAKLQljdHJsLT5ldmVudCA9IHhjX2V2dGNobl9vcGVuKGxvZ2dl ciwgMCk7CisJY3RybC0+ZXZlbnQgPSB4ZW5ldnRjaG5fb3Blbihsb2dnZXIsIDApOwogCWlmICgh Y3RybC0+ZXZlbnQpCiAJCXJldHVybiAtMTsKIAotCXBvcnQgPSB4Y19ldnRjaG5fYmluZF91bmJv dW5kX3BvcnQoY3RybC0+ZXZlbnQsIGRvbWFpbik7CisJcG9ydCA9IHhlbmV2dGNobl9iaW5kX3Vu Ym91bmRfcG9ydChjdHJsLT5ldmVudCwgZG9tYWluKTsKIAlpZiAocG9ydCA8IDApCiAJCWdvdG8g ZmFpbDsKIAljdHJsLT5ldmVudF9wb3J0ID0gcG9ydDsKIAotCWlmICh4Y19ldnRjaG5fdW5tYXNr KGN0cmwtPmV2ZW50LCBjdHJsLT5ldmVudF9wb3J0KSkKKwlpZiAoeGVuZXZ0Y2huX3VubWFzayhj dHJsLT5ldmVudCwgY3RybC0+ZXZlbnRfcG9ydCkpCiAJCWdvdG8gZmFpbDsKIAogCXJldHVybiAw OwogCiBmYWlsOgogCWlmIChwb3J0ID49IDApCi0JCXhjX2V2dGNobl91bmJpbmQoY3RybC0+ZXZl bnQsIHBvcnQpOworCQl4ZW5ldnRjaG5fdW5iaW5kKGN0cmwtPmV2ZW50LCBwb3J0KTsKIAotCXhj X2V2dGNobl9jbG9zZShjdHJsLT5ldmVudCk7CisJeGVuZXZ0Y2huX2Nsb3NlKGN0cmwtPmV2ZW50 KTsKIAljdHJsLT5ldmVudCA9IE5VTEw7CiAKIAlyZXR1cm4gLTE7CkBAIC0zNDYsMjYgKzM0Niwy NiBAQCBzdGF0aWMgaW50IGluaXRfZXZ0X2NsaShzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwsIGlu dCBkb21haW4sIHhlbnRvb2xsb2dfbG9nZ2VyCiB7CiAJZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCBw b3J0OwogCi0JY3RybC0+ZXZlbnQgPSB4Y19ldnRjaG5fb3Blbihsb2dnZXIsIDApOworCWN0cmwt PmV2ZW50ID0geGVuZXZ0Y2huX29wZW4obG9nZ2VyLCAwKTsKIAlpZiAoIWN0cmwtPmV2ZW50KQog CQlyZXR1cm4gLTE7CiAKLQlwb3J0ID0geGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oY3RybC0+ ZXZlbnQsCisJcG9ydCA9IHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKGN0cmwtPmV2ZW50LAog CQlkb21haW4sIGN0cmwtPmV2ZW50X3BvcnQpOwogCWlmIChwb3J0IDwgMCkKIAkJZ290byBmYWls OwogCWN0cmwtPmV2ZW50X3BvcnQgPSBwb3J0OwogCi0JaWYgKHhjX2V2dGNobl91bm1hc2soY3Ry bC0+ZXZlbnQsIGN0cmwtPmV2ZW50X3BvcnQpKQorCWlmICh4ZW5ldnRjaG5fdW5tYXNrKGN0cmwt PmV2ZW50LCBjdHJsLT5ldmVudF9wb3J0KSkKIAkJZ290byBmYWlsOwogCiAJcmV0dXJuIDA7CiAK IGZhaWw6CiAJaWYgKHBvcnQgPj0gMCkKLQkJeGNfZXZ0Y2huX3VuYmluZChjdHJsLT5ldmVudCwg cG9ydCk7CisJCXhlbmV2dGNobl91bmJpbmQoY3RybC0+ZXZlbnQsIHBvcnQpOwogCi0JeGNfZXZ0 Y2huX2Nsb3NlKGN0cmwtPmV2ZW50KTsKKwl4ZW5ldnRjaG5fY2xvc2UoY3RybC0+ZXZlbnQpOwog CWN0cmwtPmV2ZW50ID0gTlVMTDsKIAogCXJldHVybiAtMTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnZjaGFuL2lvLmMgYi90b29scy9saWJ2Y2hhbi9pby5jCmluZGV4IDhhOTYyOWIuLjQ0NjE0OTAg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnZjaGFuL2lvLmMKKysrIGIvdG9vbHMvbGlidmNoYW4vaW8u YwpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNlbmRfbm90aWZ5KHN0cnVj dCBsaWJ4ZW52Y2hhbiAqY3RybCwgdWludDhfdCBiaXQpCiAJbm90aWZ5ID0gY3RybC0+aXNfc2Vy dmVyID8gJmN0cmwtPnJpbmctPnNydl9ub3RpZnkgOiAmY3RybC0+cmluZy0+Y2xpX25vdGlmeTsK IAlwcmV2ID0gX19zeW5jX2ZldGNoX2FuZF9hbmQobm90aWZ5LCB+Yml0KTsKIAlpZiAocHJldiAm IGJpdCkKLQkJcmV0dXJuIHhjX2V2dGNobl9ub3RpZnkoY3RybC0+ZXZlbnQsIGN0cmwtPmV2ZW50 X3BvcnQpOworCQlyZXR1cm4geGVuZXZ0Y2huX25vdGlmeShjdHJsLT5ldmVudCwgY3RybC0+ZXZl bnRfcG9ydCk7CiAJZWxzZQogCQlyZXR1cm4gMDsKIH0KQEAgLTE5NCwxMCArMTk0LDEwIEBAIGlu dCBsaWJ4ZW52Y2hhbl9idWZmZXJfc3BhY2Uoc3RydWN0IGxpYnhlbnZjaGFuICpjdHJsKQogCiBp bnQgbGlieGVudmNoYW5fd2FpdChzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwpCiB7Ci0JaW50IHJl dCA9IHhjX2V2dGNobl9wZW5kaW5nKGN0cmwtPmV2ZW50KTsKKwlpbnQgcmV0ID0geGVuZXZ0Y2hu X3BlbmRpbmcoY3RybC0+ZXZlbnQpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gLTE7Ci0JeGNf ZXZ0Y2huX3VubWFzayhjdHJsLT5ldmVudCwgcmV0KTsKKwl4ZW5ldnRjaG5fdW5tYXNrKGN0cmwt PmV2ZW50LCByZXQpOwogCXJldHVybiAwOwogfQogCkBAIC0zNTAsNyArMzUwLDcgQEAgaW50IGxp YnhlbnZjaGFuX2lzX29wZW4oc3RydWN0IGxpYnhlbnZjaGFuKiBjdHJsKQogCiBpbnQgbGlieGVu dmNoYW5fZmRfZm9yX3NlbGVjdChzdHJ1Y3QgbGlieGVudmNoYW4gKmN0cmwpCiB7Ci0JcmV0dXJu IHhjX2V2dGNobl9mZChjdHJsLT5ldmVudCk7CisJcmV0dXJuIHhlbmV2dGNobl9mZChjdHJsLT5l dmVudCk7CiB9CiAKIHZvaWQgbGlieGVudmNoYW5fY2xvc2Uoc3RydWN0IGxpYnhlbnZjaGFuICpj dHJsKQpAQCAtMzcyLDggKzM3Miw4IEBAIHZvaWQgbGlieGVudmNoYW5fY2xvc2Uoc3RydWN0IGxp YnhlbnZjaGFuICpjdHJsKQogCX0KIAlpZiAoY3RybC0+ZXZlbnQpIHsKIAkJaWYgKGN0cmwtPnJp bmcpCi0JCQl4Y19ldnRjaG5fbm90aWZ5KGN0cmwtPmV2ZW50LCBjdHJsLT5ldmVudF9wb3J0KTsK LQkJeGNfZXZ0Y2huX2Nsb3NlKGN0cmwtPmV2ZW50KTsKKwkJCXhlbmV2dGNobl9ub3RpZnkoY3Ry bC0+ZXZlbnQsIGN0cmwtPmV2ZW50X3BvcnQpOworCQl4ZW5ldnRjaG5fY2xvc2UoY3RybC0+ZXZl bnQpOwogCX0KIAlpZiAoY3RybC0+aXNfc2VydmVyKSB7CiAJCWlmIChjdHJsLT5nbnRzaHIpCmRp ZmYgLS1naXQgYS90b29scy9saWJ2Y2hhbi9saWJ4ZW52Y2hhbi5oIGIvdG9vbHMvbGlidmNoYW4v bGlieGVudmNoYW4uaAppbmRleCAwOTQ0YTBlLi4xNTQ0Mzc4IDEwMDY0NAotLS0gYS90b29scy9s aWJ2Y2hhbi9saWJ4ZW52Y2hhbi5oCisrKyBiL3Rvb2xzL2xpYnZjaGFuL2xpYnhlbnZjaGFuLmgK QEAgLTQ0LDYgKzQ0LDcgQEAKIAogI2luY2x1ZGUgPHhlbi9pby9saWJ4ZW52Y2hhbi5oPgogI2lu Y2x1ZGUgPHhlbi9zeXMvZXZ0Y2huLmg+CisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5jbHVk ZSA8eGVuY3RybC5oPgogCiBzdHJ1Y3QgbGlieGVudmNoYW5fcmluZyB7CkBAIC03MSw3ICs3Miw3 IEBAIHN0cnVjdCBsaWJ4ZW52Y2hhbiB7CiAJLyogUG9pbnRlciB0byBzaGFyZWQgcmluZyBwYWdl ICovCiAJc3RydWN0IHZjaGFuX2ludGVyZmFjZSAqcmluZzsKIAkvKiBldmVudCBjaGFubmVsIGlu dGVyZmFjZSAqLwotCXhjX2V2dGNobiAqZXZlbnQ7CisJeGVuZXZ0Y2huX2hhbmRsZSAqZXZlbnQ7 CiAJdWludDMyX3QgZXZlbnRfcG9ydDsKIAkvKiBpbmZvcm1hdGl2ZSBmbGFnczogYXJlIHdlIGFj dGluZyBhcyBzZXJ2ZXI/ICovCiAJaW50IGlzX3NlcnZlcjoxOwpkaWZmIC0tZ2l0IGEvdG9vbHMv bGlieGMvTWFrZWZpbGUgYi90b29scy9saWJ4Yy9NYWtlZmlsZQppbmRleCA5NDA3MDhmLi5iOGZj NmE1IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9NYWtlZmlsZQorKysgYi90b29scy9saWJ4Yy9N YWtlZmlsZQpAQCAtNDgsNiArNDgsNyBAQCBDVFJMX1NSQ1MtJChDT05GSUdfU3VuT1MpICs9IHhj X3NvbGFyaXMuYwogQ1RSTF9TUkNTLSQoQ09ORklHX05ldEJTRCkgKz0geGNfbmV0YnNkLmMKIENU UkxfU1JDUy0kKENPTkZJR19OZXRCU0RSdW1wKSArPSB4Y19uZXRic2QuYwogQ1RSTF9TUkNTLSQo Q09ORklHX01pbmlPUykgKz0geGNfbWluaW9zLmMKK0NUUkxfU1JDUy15ICAgICAgICs9IHhjX2V2 dGNobl9jb21wYXQuYwogCiBHVUVTVF9TUkNTLXkgOj0KIEdVRVNUX1NSQ1MteSArPSB4Z19wcml2 YXRlLmMgeGNfc3VzcGVuZC5jCkBAIC0xMTEsNiArMTEyLDcgQEAgQ0ZMQUdTLSQoQ09ORklHX0xp bnV4KSArPSAtRF9HTlVfU09VUkNFCiAKIENGTEFHUwkrPSAkKFBUSFJFQURfQ0ZMQUdTKQogQ0ZM QUdTCSs9ICQoQ0ZMQUdTX2xpYnhlbnRvb2xsb2cpCitDRkxBR1MJKz0gJChDRkxBR1NfbGlieGVu ZXZ0Y2huKQogCiBDVFJMX0xJQl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCUubywkKENUUkxfU1JD Uy15KSkKIENUUkxfUElDX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJS5vcGljLCQoQ1RSTF9TUkNT LXkpKQpAQCAtMTY0LDcgKzE2Niw3IEBAIGluc3RhbGw6IGJ1aWxkCiAJJChJTlNUQUxMX0RBVEEp IGxpYnhlbmN0cmwuYSAkKERFU1RESVIpJChsaWJkaXIpCiAJJChTWU1MSU5LX1NITElCKSBsaWJ4 ZW5jdHJsLnNvLiQoTUFKT1IpLiQoTUlOT1IpICQoREVTVERJUikkKGxpYmRpcikvbGlieGVuY3Ry bC5zby4kKE1BSk9SKQogCSQoU1lNTElOS19TSExJQikgbGlieGVuY3RybC5zby4kKE1BSk9SKSAk KERFU1RESVIpJChsaWJkaXIpL2xpYnhlbmN0cmwuc28KLQkkKElOU1RBTExfREFUQSkgaW5jbHVk ZS94ZW5jdHJsLmggaW5jbHVkZS94ZW5jdHJsb3NkZXAuaCAkKERFU1RESVIpJChpbmNsdWRlZGly KQorCSQoSU5TVEFMTF9EQVRBKSBpbmNsdWRlL3hlbmN0cmwuaCBpbmNsdWRlL3hlbmN0cmxfY29t cGF0LmggaW5jbHVkZS94ZW5jdHJsb3NkZXAuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKQogCSQo SU5TVEFMTF9TSExJQikgbGlieGVuZ3Vlc3Quc28uJChNQUpPUikuJChNSU5PUikgJChERVNURElS KSQobGliZGlyKQogCSQoSU5TVEFMTF9EQVRBKSBsaWJ4ZW5ndWVzdC5hICQoREVTVERJUikkKGxp YmRpcikKIAkkKFNZTUxJTktfU0hMSUIpIGxpYnhlbmd1ZXN0LnNvLiQoTUFKT1IpLiQoTUlOT1Ip ICQoREVTVERJUikkKGxpYmRpcikvbGlieGVuZ3Vlc3Quc28uJChNQUpPUikKQEAgLTIwNyw3ICsy MDksNyBAQCBsaWJ4ZW5jdHJsLnNvLiQoTUFKT1IpOiBsaWJ4ZW5jdHJsLnNvLiQoTUFKT1IpLiQo TUlOT1IpCiAJJChTWU1MSU5LX1NITElCKSAkPCAkQAogCiBsaWJ4ZW5jdHJsLnNvLiQoTUFKT1Ip LiQoTUlOT1IpOiAkKENUUkxfUElDX09CSlMpCi0JJChDQykgJChMREZMQUdTKSAkKFBUSFJFQURf TERGTEFHUykgLVdsLCQoU09OQU1FX0xERkxBRykgLVdsLGxpYnhlbmN0cmwuc28uJChNQUpPUikg JChTSExJQl9MREZMQUdTKSAtbyAkQCAkXiAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKERMT1BF Tl9MSUJTKSAkKFBUSFJFQURfTElCUykgJChBUFBFTkRfTERGTEFHUykKKwkkKENDKSAkKExERkxB R1MpICQoUFRIUkVBRF9MREZMQUdTKSAtV2wsJChTT05BTUVfTERGTEFHKSAtV2wsbGlieGVuY3Ry bC5zby4kKE1BSk9SKSAkKFNITElCX0xERkxBR1MpIC1vICRAICReICQoTERMSUJTX2xpYnhlbnRv b2xsb2cpICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChETE9QRU5fTElCUykgJChQVEhSRUFEX0xJ QlMpICQoQVBQRU5EX0xERkxBR1MpCiAKICMgbGlieGVuZ3Vlc3QKIApAQCAtMjMwLDcgKzIzMiw3 IEBAIHhjX2RvbV9iemltYWdlbG9hZGVyLm9waWM6IENGTEFHUyArPSAkKGNhbGwgemxpYi1vcHRp b25zLEQpCiAKIGxpYnhlbmd1ZXN0LnNvLiQoTUFKT1IpLiQoTUlOT1IpOiBDT01QUkVTU0lPTl9M SUJTID0gJChjYWxsIHpsaWItb3B0aW9ucyxsKQogbGlieGVuZ3Vlc3Quc28uJChNQUpPUikuJChN SU5PUik6ICQoR1VFU1RfUElDX09CSlMpIGxpYnhlbmN0cmwuc28KLQkkKENDKSAkKExERkxBR1Mp IC1XbCwkKFNPTkFNRV9MREZMQUcpIC1XbCxsaWJ4ZW5ndWVzdC5zby4kKE1BSk9SKSAkKFNITElC X0xERkxBR1MpIC1vICRAICQoR1VFU1RfUElDX09CSlMpICQoQ09NUFJFU1NJT05fTElCUykgLWx6 ICQoTERMSUJTX2xpYnhlbmN0cmwpICQoUFRIUkVBRF9MSUJTKSAkKEFQUEVORF9MREZMQUdTKQor CSQoQ0MpICQoTERGTEFHUykgLVdsLCQoU09OQU1FX0xERkxBRykgLVdsLGxpYnhlbmd1ZXN0LnNv LiQoTUFKT1IpICQoU0hMSUJfTERGTEFHUykgLW8gJEAgJChHVUVTVF9QSUNfT0JKUykgJChDT01Q UkVTU0lPTl9MSUJTKSAtbHogJChMRExJQlNfbGlieGVuZXZ0Y2huKSAkKExETElCU19saWJ4ZW5j dHJsKSAkKFBUSFJFQURfTElCUykgJChBUFBFTkRfTERGTEFHUykKIAogeGVuY3RybF9vc2RlcF9F Tk9TWVMuc286ICQoT1NERVBfUElDX09CSlMpIGxpYnhlbmN0cmwuc28KIAkkKENDKSAkKExERkxB R1MpICQoU0hMSUJfTERGTEFHUykgLW8gJEAgJChPU0RFUF9QSUNfT0JKUykgJChMRExJQlNfbGli eGVuY3RybCkgJChBUFBFTkRfTERGTEFHUykKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1 ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggODgxZGNk NS4uOGYzMWM0ZCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKKysr IGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTExNyw3ICsxMTcsNiBAQAogICov CiAKIHR5cGVkZWYgc3RydWN0IHhjX2ludGVyZmFjZV9jb3JlIHhjX2ludGVyZmFjZTsKLXR5cGVk ZWYgc3RydWN0IHhlbmV2dGNobl9oYW5kbGUgeGNfZXZ0Y2huOwogdHlwZWRlZiBzdHJ1Y3QgeGNf aW50ZXJmYWNlX2NvcmUgeGNfZ250dGFiOwogdHlwZWRlZiBzdHJ1Y3QgeGNfaW50ZXJmYWNlX2Nv cmUgeGNfZ250c2hyOwogCkBAIC0xMDg1LDcgKzEwODQsNiBAQCBpbnQgeGNfY3B1cG9vbF9tb3Zl ZG9tYWluKHhjX2ludGVyZmFjZSAqeGNoLAogICovCiB4Y19jcHVtYXBfdCB4Y19jcHVwb29sX2Zy ZWVpbmZvKHhjX2ludGVyZmFjZSAqeGNoKTsKIAotCiAvKgogICogRVZFTlQgQ0hBTk5FTCBGVU5D VElPTlMKICAqCkBAIC0xMTIwLDEwMSArMTExOCw3IEBAIGludCB4Y19ldnRjaG5fcmVzZXQoeGNf aW50ZXJmYWNlICp4Y2gsCiB0eXBlZGVmIHN0cnVjdCBldnRjaG5fc3RhdHVzIHhjX2V2dGNobl9z dGF0dXNfdDsKIGludCB4Y19ldnRjaG5fc3RhdHVzKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRj aG5fc3RhdHVzX3QgKnN0YXR1cyk7CiAKLS8qCi0gKiBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGV2 ZW50IGNoYW5uZWwgZHJpdmVyLCBvciBOVUxMIG9uIGZhaWx1cmUsIGluCi0gKiB3aGljaCBjYXNl IGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCi0gKgotICogTm90ZToKLSAqIEFmdGVy IGZvcmsgYSBjaGlsZCBwcm9jZXNzIG11c3Qgbm90IHVzZSBhbnkgb3BlbmVkIHhjIGV2dGNobgot ICogaGFuZGxlIGluaGVyaXRlZCBmcm9tIHRoZWlyIHBhcmVudC4gVGhleSBtdXN0IG9wZW4gYSBu ZXcgaGFuZGxlIGlmCi0gKiB0aGV5IHdhbnQgdG8gaW50ZXJhY3Qgd2l0aCB4Yy4KLSAqCi0gKiBC ZWZvcmUgWGVuIHByZS00LjEgdGhpcyBmdW5jdGlvbiB3b3VsZCBzb21ldGltZXMgcmVwb3J0IGVy cm9ycyB3aXRoIHBlcnJvci4KLSAqLwoteGNfZXZ0Y2huICp4Y19ldnRjaG5fb3Blbih4ZW50b29s bG9nX2xvZ2dlciAqbG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBvcGVuX2ZsYWdzKTsKIAotLyoKLSAqIENsb3NlIGEgaGFuZGxlIHByZXZpb3VzbHkgYWxsb2Nh dGVkIHdpdGggeGNfZXZ0Y2huX29wZW4oKS4KLSAqLwotaW50IHhjX2V2dGNobl9jbG9zZSh4Y19l dnRjaG4gKnhjZSk7Ci0KLS8qCi0gKiBSZXR1cm4gYW4gZmQgdGhhdCBjYW4gYmUgc2VsZWN0KCll ZCBvbi4KLSAqCi0gKiBOb3RlIHRoYXQgZHVlIHRvIGJ1Z3MsIHNldHRpbmcgdGhpcyBmZCB0byBu b24gYmxvY2tpbmcgbWF5IG5vdAotICogd29yazogeW91IHdvdWxkIGhvcGUgdGhhdCBpdCB3b3Vs ZCByZXN1bHQgaW4geGNfZXZ0Y2huX3BlbmRpbmcKLSAqIGZhaWxpbmcgd2l0aCBFV09VTERCTE9D SyBpZiB0aGVyZSBhcmUgbm8gZXZlbnRzIHNpZ25hbGVkLCBidXQgaW4KLSAqIGZhY3QgaXQgbWF5 IGJsb2NrLiAgKEJ1ZyBpcyBwcmVzZW50IGluIGF0IGxlYXN0IExpbnV4IDMuMTIsIGFuZAotICog cGVyaGFwcyBvbiBvdGhlciBwbGF0Zm9ybXMgb3IgbGF0ZXIgdmVyc2lvbi4pCi0gKgotICogVG8g YmUgc2FmZSwgeW91IG11c3QgdXNlIHBvbGwoKSBvciBzZWxlY3QoKSBiZWZvcmUgZWFjaCBjYWxs IHRvCi0gKiB4Y19ldnRjaG5fcGVuZGluZy4gIElmIHlvdSBoYXZlIG11bHRpcGxlIHRocmVhZHMg KG9yIHByb2Nlc3NlcykKLSAqIHNoYXJpbmcgYSBzaW5nbGUgeGNlIGhhbmRsZSB0aGlzIHdpbGwg bm90IHdvcmssIGFuZCB0aGVyZSBpcyBubwotICogc3RyYWlnaHRmb3J3YXJkIHdvcmthcm91bmQu ICBQbGVhc2UgZGVzaWduIHlvdXIgcHJvZ3JhbSBzb21lIG90aGVyCi0gKiB3YXkuCi0gKi8KLWlu dCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpOwotCi0vKgotICogTm90aWZ5IHRoZSBnaXZl biBldmVudCBjaGFubmVsLiBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIGluIHdoaWNoIGNhc2UKLSAq IGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJpYXRlbHkuCi0gKi8KLWludCB4Y19ldnRjaG5fbm90 aWZ5KHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOwotCi0vKgotICogUmV0dXJu cyBhIG5ldyBldmVudCBwb3J0IGF3YWl0aW5nIGludGVyZG9tYWluIGNvbm5lY3Rpb24gZnJvbSB0 aGUgZ2l2ZW4KLSAqIGRvbWFpbiBJRCwgb3IgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2FzZSBl cnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgotICovCi1ldnRjaG5fcG9ydF9vcl9lcnJv cl90Ci14Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21p ZCk7Ci0KLS8qCi0gKiBSZXR1cm5zIGEgbmV3IGV2ZW50IHBvcnQgYm91bmQgdG8gdGhlIHJlbW90 ZSBwb3J0IGZvciB0aGUgZ2l2ZW4gZG9tYWluIElELAotICogb3IgLTEgb24gZmFpbHVyZSwgaW4g d2hpY2ggY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgotICovCi1ldnRjaG5f cG9ydF9vcl9lcnJvcl90Ci14Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y19ldnRjaG4gKnhj ZSwgaW50IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRfdCBy ZW1vdGVfcG9ydCk7Ci0KLS8qCi0gKiBCaW5kIGFuIGV2ZW50IGNoYW5uZWwgdG8gdGhlIGdpdmVu IFZJUlEuIFJldHVybnMgdGhlIGV2ZW50IGNoYW5uZWwgYm91bmQgdG8KLSAqIHRoZSBWSVJRLCBv ciAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNlIGVycm5vIHdpbGwgYmUgc2V0IGFwcHJvcHJp YXRlbHkuCi0gKi8KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QKLXhjX2V2dGNobl9iaW5kX3ZpcnEo eGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGludCB2aXJxKTsKLQotLyoKLSAqIFVuYmluZCB0aGUg Z2l2ZW4gZXZlbnQgY2hhbm5lbC4gUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBpbiB3aGljaCBjYXNl IGVycm5vCi0gKiB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5LgotICovCi1pbnQgeGNfZXZ0Y2hu X3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKLQotLyoKLSAqIFJl dHVybiB0aGUgbmV4dCBldmVudCBjaGFubmVsIHRvIGJlY29tZSBwZW5kaW5nLCBvciAtMSBvbiBm YWlsdXJlLCBpbiB3aGljaAotICogY2FzZSBlcnJubyB3aWxsIGJlIHNldCBhcHByb3ByaWF0ZWx5 LgotICoKLSAqIEF0IHRoZSBoeXBlcnZpc29yIGxldmVsIHRoZSBldmVudCBjaGFubmVsIHdpbGwg aGF2ZSBiZWVuIG1hc2tlZCwKLSAqIGFuZCB0aGVuIGNsZWFyZWQsIGJ5IHRoZSB1bmRlcmx5aW5n IG1hY2hpbmVyeSAoZXZ0Y2huIGtlcm5lbAotICogZHJpdmVyLCBvciBlcXVpdmFsZW50KS4gIFNv IGlmIHRoZSBldmVudCBjaGFubmVsIGlzIHNpZ25hbGVkIGFnYWluCi0gKiBhZnRlciBpdCBpcyBy ZXR1cm5lZCBoZXJlLCBpdCB3aWxsIGJlIHF1ZXVlZCB1cCwgYW5kIGRlbGl2ZXJlZAotICogYWdh aW4gYWZ0ZXIgeW91IHVubWFzayBpdC4gIChTZWUgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIFhl bgotICogcHVibGljIGhlYWRlciBldmVudF9jaGFubmVsLmguKQotICoKLSAqIE9uIHJlY2Vpdmlu ZyB0aGUgbm90aWZpY2F0aW9uIGZyb20geGNfZXZ0Y2huX3BlbmRpbmcsIHlvdSBzaG91bGQKLSAq IG5vcm1hbGx5OiBjaGVjayAoYnkgb3RoZXIgbWVhbnMpIHdoYXQgd29yayBuZWVkcyBkb2luZzsg ZG8gdGhlCi0gKiBuZWNlc3Nhcnkgd29yayAoaWYgYW55KTsgdW5tYXNrIHRoZSBldmVudCBjaGFu bmVsIHdpdGgKLSAqIHhjX2V2dGNobl91bm1hc2sgKGlmIHlvdSB3YW50IHRvIHJlY2VpdmUgYW55 IGZ1cnRoZXIKLSAqIG5vdGlmaWNhdGlvbnMpLgotICovCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90 Ci14Y19ldnRjaG5fcGVuZGluZyh4Y19ldnRjaG4gKnhjZSk7Ci0KLS8qCi0gKiBVbm1hc2sgdGhl IGdpdmVuIGV2ZW50IGNoYW5uZWwuIFJldHVybnMgLTEgb24gZmFpbHVyZSwgaW4gd2hpY2ggY2Fz ZSBlcnJubwotICogd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseS4KLSAqLwotaW50IHhjX2V2dGNo bl91bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7CiAKIGludCB4Y19w aHlzZGV2X3BjaV9hY2Nlc3NfbW9kaWZ5KHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZG9taWQsCkBAIC0yODUxLDYgKzI3NTUsOSBA QCBpbnQgeGNfcHNyX2NhdF9nZXRfbDNfaW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3Qg c29ja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqY2RwX2VuYWJsZWQpOwog I2VuZGlmCiAKKy8qIENvbXBhdCBzaGltcyAqLworI2luY2x1ZGUgInhlbmN0cmxfY29tcGF0Lmgi CisKICNlbmRpZiAvKiBYRU5DVFJMX0ggKi8KIAogLyoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhj L2luY2x1ZGUveGVuY3RybF9jb21wYXQuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybF9j b21wYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGRhZWIyCi0tLSAv ZGV2L251bGwKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsX2NvbXBhdC5oCkBAIC0w LDAgKzEsNDggQEAKKy8qCisgKiBDb21wYXQgc2hpbXMgZm9yIHVzZSBvZiAzcmQgcGFydHkgY29u c3VtZXJzIG9mIGxpYnhlbmN0cmwKKyAqIGZ1bmN0aW9uYWxpdHkgd2hpY2ggaGFzIGJlZW4gc3Bs aXQgaW50byBzZXBhcmF0ZSBsaWJyYXJpZXMuCisgKgorICogTmV3IGNvZGUgc2hvdWxkIHVzZSB0 aGUgc2VwYXJhdGUgbGlicmFyaWVzLgorICoKKyAqIEVhY2ggaW50ZXJmYWNlIG11c3QgYmUgb3B0 ZWQtaW50byBzZXBhcmF0ZWx5IGJ5IGRlZmluaW5nOgorICoKKyAqIFhDX1dBTlRfQ09NUEFUX0VW VENITl9BUEkKKyAqICAtIEZ1bmN0aW9ucyByZWxhdGluZyB0byAvZGV2L3hlbi9ldnRjaG4KKyAq LworI2lmbmRlZiBYRU5DVFJMX0NPTVBBVF9ICisjZGVmaW5lIFhFTkNUUkxfQ09NUEFUX0gKKwor I2lmZGVmIFhDX1dBTlRfQ09NUEFUX0VWVENITl9BUEkKKwordHlwZWRlZiBzdHJ1Y3QgeGVuZXZ0 Y2huX2hhbmRsZSB4Y19ldnRjaG47CisKK3hjX2V2dGNobiAqeGNfZXZ0Y2huX29wZW4oeGVudG9v bGxvZ19sb2dnZXIgKmxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgb3Blbl9mbGFncyk7CitpbnQgeGNfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlKTsKK2lu dCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpOworaW50IHhjX2V2dGNobl9ub3RpZnkoeGNf ZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCk7CitldnRjaG5fcG9ydF9vcl9lcnJvcl90 Cit4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoeGNfZXZ0Y2huICp4Y2UsIGludCBkb21pZCk7 CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y19l dnRjaG4gKnhjZSwgaW50IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2hu X3BvcnRfdCByZW1vdGVfcG9ydCk7CitldnRjaG5fcG9ydF9vcl9lcnJvcl90Cit4Y19ldnRjaG5f YmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSk7CitpbnQgeGNfZXZ0 Y2huX3VuYmluZCh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBwb3J0KTsKK2V2dGNobl9w b3J0X29yX2Vycm9yX3QKK3hjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKTsKK2ludCB4 Y19ldnRjaG5fdW5tYXNrKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpOworCisj ZW5kaWYgLyogWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQSSAqLworCisjZW5kaWYKKworLyoKKyAq IExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAq IGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6 IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1 ZXN0LmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmgKaW5kZXggOGY5MThiMS4uMDUw YTUzNyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oCisrKyBiL3Rv b2xzL2xpYnhjL2luY2x1ZGUveGVuZ3Vlc3QuaApAQCAtMzQsNiArMzQsMTIgQEAKICNkZWZpbmUg WDg2XzY0X0JfU0laRSAgIDY0IAogI2RlZmluZSBYODZfMzJfQl9TSVpFICAgMzIKIAorLyoKKyAq IFVzZXIgbm90IHVzaW5nIHhjX3N1c3BlbmRfKiAvIHhjX2F3YWl0X3N1c3BlbnQgbWF5IG5vdCB3 YW50IHRvCisgKiBpbmNsdWRlIHRoZSBmdWxsIGxpYnhlbmV2dGNobiBBUEkgaGVyZS4KKyAqLwor dHlwZWRlZiBzdHJ1Y3QgeGVuZXZ0Y2huX2hhbmRsZSB4ZW5ldnRjaG5faGFuZGxlOworCiAvKiBj YWxsYmFja3MgcHJvdmlkZWQgYnkgeGNfZG9tYWluX3NhdmUgKi8KIHN0cnVjdCBzYXZlX2NhbGxi YWNrcyB7CiAgICAgLyogQ2FsbGVkIGFmdGVyIGV4cGlyYXRpb24gb2YgY2hlY2twb2ludCBpbnRl cnZhbCwKQEAgLTE2MSwxOCArMTY3LDE4IEBAIHN0cnVjdCB4Y19odm1fZmlybXdhcmVfbW9kdWxl IHsKICAqIFNldHMgKmxvY2tmZCB0byAtMS4KICAqIEhhcyBkZWFsbG9jYXRlZCBldmVyeXRoaW5n IGV2ZW4gb24gZXJyb3IuCiAgKi8KLWludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlKHhjX2lu dGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLCBpbnQgc3VzcGVuZF9ldnRj aG4sIGludCAqbG9ja2ZkKTsKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlKHhjX2ludGVy ZmFjZSAqeGNoLCB4ZW5ldnRjaG5faGFuZGxlICp4Y2UsIGludCBkb21pZCwgaW50IHN1c3BlbmRf ZXZ0Y2huLCBpbnQgKmxvY2tmZCk7CiAKIC8qKgogICogVGhpcyBmdW5jdGlvbiBlYXRzIHRoZSBp bml0aWFsIG5vdGlmaWNhdGlvbi4KICAqIHhjZSBtdXN0IG5vdCBiZSB1c2VkIGZvciBhbnl0aGlu ZyBlbHNlCiAgKiBTZWUgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lIHJlIGxvY2tmZC4KICAq LwotaW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfZXhjbHVzaXZlKHhjX2ludGVyZmFjZSAqeGNo LCB4Y19ldnRjaG4gKnhjZSwKK2ludCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X2V4Y2x1c2l2ZSh4 Y19pbnRlcmZhY2UgKnhjaCwgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBkb21pZCwgaW50IHBvcnQsIGludCAqbG9ja2ZkKTsK IAogLyogeGNlIG11c3Qgbm90IGJlIHVzZWQgZm9yIGFueXRoaW5nIGVsc2UgKi8KLWludCB4Y19h d2FpdF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IHN1c3Bl bmRfZXZ0Y2huKTsKK2ludCB4Y19hd2FpdF9zdXNwZW5kKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5l dnRjaG5faGFuZGxlICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobik7CiAKIC8qKgogICogVGhlIHBv cnQgd2lsbCBiZSBzaWduYWxlZCBpbW1lZGlhdGVseSBhZnRlciB0aGlzIGNhbGwKQEAgLTE4MSw3 ICsxODcsNyBAQCBpbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0 Y2huICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobik7CiAgKiBhbmQgZmVkIHRvIHhjX3N1c3BlbmRf ZXZ0Y2huX3JlbGVhc2UuICAoT24gZXJyb3IgKmxvY2tmZCBpcwogICogdW5kZWZpbmVkIGFuZCB4 Y19zdXNwZW5kX2V2dGNobl9yZWxlYXNlIGlzIG5vdCBhbGxvd2VkLikKICAqLwotaW50IHhjX3N1 c3BlbmRfZXZ0Y2huX2luaXRfc2FuZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2Us CitpbnQgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5lKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5l dnRjaG5faGFuZGxlICp4Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBk b21pZCwgaW50IHBvcnQsIGludCAqbG9ja2ZkKTsKIAogaW50IHhjX21hcmtfcGFnZV9vbmxpbmUo eGNfaW50ZXJmYWNlICp4Y2gsIHVuc2lnbmVkIGxvbmcgc3RhcnQsCmRpZmYgLS1naXQgYS90b29s cy9saWJ4Yy94Y19ldnRjaG5fY29tcGF0LmMgYi90b29scy9saWJ4Yy94Y19ldnRjaG5fY29tcGF0 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQzZTRiYQotLS0gL2Rldi9u dWxsCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2V2dGNobl9jb21wYXQuYwpAQCAtMCwwICsxLDc1IEBA CisvKgorICogQ29tcGF0IHNoaW1zIGZvciB1c2Ugb2YgM3JkIHBhcnR5IGNvbnN1bWVycyBvZiBs aWJ4ZW5jdHJsIHhjX2V2dGNobgorICogZnVuY3Rpb25hbGl0eSB3aGljaCBoYXMgYmVlbiBzcGxp dCBpbnRvIHNlcGFyYXRlIGxpYnJhcmllcy4KKyAqLworCisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+ CisKKyNkZWZpbmUgWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQSQorI2luY2x1ZGUgInhlbmN0cmwu aCIKKworeGNfZXZ0Y2huICp4Y19ldnRjaG5fb3Blbih4ZW50b29sbG9nX2xvZ2dlciAqbG9nZ2Vy LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGVuX2ZsYWdzKQoreworICAg IHJldHVybiB4ZW5ldnRjaG5fb3Blbihsb2dnZXIsIG9wZW5fZmxhZ3MpOworfQorCitpbnQgeGNf ZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlKQoreworICAgIHJldHVybiB4ZW5ldnRjaG5fY2xv c2UoeGNlKTsKK30KKworaW50IHhjX2V2dGNobl9mZCh4Y19ldnRjaG4gKnhjZSkKK3sKKyAgICBy ZXR1cm4geGVuZXZ0Y2huX2ZkKHhjZSk7Cit9CisKK2ludCB4Y19ldnRjaG5fbm90aWZ5KHhjX2V2 dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCit7CisgICAgcmV0dXJuIHhlbmV2dGNobl9u b3RpZnkoeGNlLCBwb3J0KTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoreGNfZXZ0Y2hu X2JpbmRfdW5ib3VuZF9wb3J0KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQpCit7CisgICAgcmV0 dXJuIHhlbmV2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4Y2UsIGRvbWlkKTsKK30KKworZXZ0Y2hu X3BvcnRfb3JfZXJyb3JfdAoreGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4oeGNfZXZ0Y2huICp4 Y2UsIGludCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3Qg cmVtb3RlX3BvcnQpCit7CisgICAgcmV0dXJuIHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHhj ZSwgZG9taWQsIHJlbW90ZV9wb3J0KTsKK30KKworZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdAoreGNf ZXZ0Y2huX2JpbmRfdmlycSh4Y19ldnRjaG4gKnhjZSwgdW5zaWduZWQgaW50IHZpcnEpCit7Cisg ICAgcmV0dXJuIHhlbmV2dGNobl9iaW5kX3ZpcnEoeGNlLCB2aXJxKTsKK30KKworaW50IHhjX2V2 dGNobl91bmJpbmQoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICBy ZXR1cm4geGVuZXZ0Y2huX3VuYmluZCh4Y2UsIHBvcnQpOworfQorCitldnRjaG5fcG9ydF9vcl9l cnJvcl90Cit4Y19ldnRjaG5fcGVuZGluZyh4Y19ldnRjaG4gKnhjZSkKK3sKKyAgICByZXR1cm4g eGVuZXZ0Y2huX3BlbmRpbmcoeGNlKTsKK30KKworaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0 Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKK3sKKyAgICByZXR1cm4geGVuZXZ0Y2huX3Vu bWFzayh4Y2UsIHBvcnQpOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTog QworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13 aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhjL3hjX2ZyZWVic2Rfb3NkZXAuYyBiL3Rvb2xzL2xpYnhjL3hjX2ZyZWVi c2Rfb3NkZXAuYwppbmRleCA0MzIzZTE2Li4zMzk5OTdjIDEwMDY0NAotLS0gYS90b29scy9saWJ4 Yy94Y19mcmVlYnNkX29zZGVwLmMKKysrIGIvdG9vbHMvbGlieGMveGNfZnJlZWJzZF9vc2RlcC5j CkBAIC0zMSwxMyArMzEsMTEgQEAKICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KIAogI2luY2x1ZGUg PHhlbi9tZW1vcnkuaD4KLSNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNobi5oPgogCiAjaW5jbHVkZSAi eGVuY3RybC5oIgogI2luY2x1ZGUgInhlbmN0cmxvc2RlcC5oIgogCiAjZGVmaW5lIFBSSVZDTURf REVWICAgICAiL2Rldi94ZW4vcHJpdmNtZCIKLSNkZWZpbmUgRVZUQ0hOX0RFViAgICAgICIvZGV2 L3hlbi9ldnRjaG4iCiAKICNkZWZpbmUgUEVSUk9SKF9tLCBfYS4uLikgeGNfb3NkZXBfbG9nKHhj aCxYVExfRVJST1IsWENfSU5URVJOQUxfRVJST1IsX20gXAogICAgICAgICAgICAgICAgICAgIiAo JWQgPSAlcykiLCAjIyBfYSAsIGVycm5vLCB4Y19zdHJlcnJvcih4Y2gsIGVycm5vKSkKQEAgLTI1 MSwxMDUgKzI0OSw2IEBAIHN0YXRpYyBzdHJ1Y3QgeGNfb3NkZXBfb3BzIGZyZWVic2RfcHJpdmNt ZF9vcHMgPSB7CiAgICAgfSwKIH07CiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZ0 Y2huIGRldmljZSBpbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1pbnQgb3Nk ZXBfZXZ0Y2huX29wZW4oeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0gb3BlbihFVlRD SE5fREVWLCBPX1JEV1IpOwotICAgIGlmICggZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7 Ci0gICAgeGNlLT5mZCA9IGZkOwotICAgIHJldHVybiAwOwotfQotCi1pbnQgb3NkZXBfZXZ0Y2hu X2Nsb3NlKHhjX2V2dGNobiAqeGNlKQotewotICAgIGlmICggeGNlLT5mZCA9PSAtMSApCi0gICAg ICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNsb3NlKHhjZS0+ZmQpOwotfQotCi1pbnQgeGNf ZXZ0Y2huX2ZkKHhjX2V2dGNobiAqeGNlKQotewotICAgIHJldHVybiB4Y2UtPmZkOwotfQotCi0v Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdnRjaG4gaW50ZXJmYWNlIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotaW50IHhjX2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4 Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0 cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5vdGlmeTsKLQotICAgIG5vdGlmeS5wb3J0ID0gcG9y dDsKLQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7 Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0 KHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQpCi17Ci0gICAgaW50IHJldCwgZmQgPSB4Y2UtPmZk OwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQgYmluZDsKLQotICAg IGJpbmQucmVtb3RlX2RvbWFpbiA9IGRvbWlkOwotCi0gICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RM X0VWVENITl9CSU5EX1VOQk9VTkRfUE9SVCwgJmJpbmQpOwotICAgIHJldHVybiAoIHJldCA9PSAw ICkgPyBiaW5kLnBvcnQgOiByZXQ7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QKLXhjX2V2 dGNobl9iaW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQsIGV2dGNobl9w b3J0X3QgcmVtb3RlX3BvcnQpCi17Ci0gICAgaW50IHJldCwgZmQgPSB4Y2UtPmZkOwotICAgIHN0 cnVjdCBpb2N0bF9ldnRjaG5fYmluZF9pbnRlcmRvbWFpbiBiaW5kOwotCi0gICAgYmluZC5yZW1v dGVfZG9tYWluID0gZG9taWQ7Ci0gICAgYmluZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0Owot Ci0gICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmlu ZCk7Ci0gICAgcmV0dXJuICggcmV0ID09IDAgKSA/IGJpbmQucG9ydCA6IHJldDsKLX0KLQotZXZ0 Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2dGNobiAqeGNlLCB1 bnNpZ25lZCBpbnQgdmlycSkKLXsKLSAgICBpbnQgcmV0LCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3Ry dWN0IGlvY3RsX2V2dGNobl9iaW5kX3ZpcnEgYmluZDsKLQotICAgIGJpbmQudmlycSA9IHZpcnE7 Ci0KLSAgICByZXQgPSBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfVklSUSwgJmJpbmQpOwot ICAgIHJldHVybiAoIHJldCA9PSAwICkgPyBiaW5kLnBvcnQgOiByZXQ7Ci19Ci0KLWludCB4Y19l dnRjaG5fdW5iaW5kKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAg aW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX3VuYmluZCB1bmJpbmQ7 Ci0KLSAgICB1bmJpbmQucG9ydCA9IHBvcnQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RM X0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhj X2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7 Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgaWYgKCByZWFkKGZkLCAmcG9ydCwgc2l6 ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBy ZXR1cm4gcG9ydDsKLX0KLQotaW50IHhjX2V2dGNobl91bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2 dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotCi0gICAgaWYgKCB3 cml0ZShmZCwgJnBvcnQsIHNpemVvZihwb3J0KSkgIT0gc2l6ZW9mKHBvcnQpICkKLSAgICAgICAg cmV0dXJuIC0xOwotICAgIHJldHVybiAwOwotfQotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gRnJlZUJTRCBpbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwog c3RhdGljIHN0cnVjdCB4Y19vc2RlcF9vcHMgKgogZnJlZWJzZF9vc2RlcF9pbml0KHhjX2ludGVy ZmFjZSAqeGNoLCBlbnVtIHhjX29zZGVwX3R5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhjL3hjX2xpbnV4X29zZGVwLmMgYi90b29scy9saWJ4Yy94Y19saW51eF9vc2RlcC5jCmluZGV4 IDkwNTQ0ZmIuLjY1Mjk5ZDAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX2xpbnV4X29zZGVw LmMKKysrIGIvdG9vbHMvbGlieGMveGNfbGludXhfb3NkZXAuYwpAQCAtMzEsNyArMzEsNiBAQAog I2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogCiAjaW5jbHVkZSA8eGVuL21lbW9yeS5oPgotI2luY2x1 ZGUgPHhlbi9zeXMvZXZ0Y2huLmg+CiAjaW5jbHVkZSA8eGVuL3N5cy9nbnRkZXYuaD4KICNpbmNs dWRlIDx4ZW4vc3lzL2dudGFsbG9jLmg+CiAKQEAgLTQ2MSwxMDAgKzQ2MCw2IEBAIHN0YXRpYyBz dHJ1Y3QgeGNfb3NkZXBfb3BzIGxpbnV4X3ByaXZjbWRfb3BzID0gewogCiAjZGVmaW5lIERFVlhF TiAiL2Rldi94ZW4vIgogCi1pbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGNfZXZ0Y2huICp4Y2UpCi17 Ci0gICAgaW50IGZkID0gb3BlbihERVZYRU4gImV2dGNobiIsIE9fUkRXUik7Ci0gICAgaWYgKCBm ZCA9PSAtMSApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcmV0 dXJuIDA7Ci19Ci0KLWludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpCi17Ci0g ICAgaWYgKCB4Y2UtPmZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g Y2xvc2UoeGNlLT5mZCk7Ci19Ci0KLWludCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpCi17 Ci0gICAgcmV0dXJuIHhjZS0+ZmQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fbm90aWZ5KHhjX2V2dGNo biAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAg ICBzdHJ1Y3QgaW9jdGxfZXZ0Y2huX25vdGlmeSBub3RpZnk7Ci0KLSAgICBub3RpZnkucG9ydCA9 IHBvcnQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZub3Rp ZnkpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX3VuYm91bmRf cG9ydCh4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7 Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCBiaW5kOwotCi0gICAg YmluZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RM X0VWVENITl9CSU5EX1VOQk9VTkRfUE9SVCwgJmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9l cnJvcl90IHhjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQgZG9t aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2 dGNobl9wb3J0X3QgcmVtb3RlX3BvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBz dHJ1Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKLQotICAgIGJpbmQucmVt b3RlX2RvbWFpbiA9IGRvbWlkOwotICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsK LQotICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZi aW5kKTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF92aXJxKHhj X2V2dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZk OwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7Ci0KLSAgICBiaW5kLnZp cnEgPSB2aXJxOwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJR LCAmYmluZCk7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5iaW5kKHhjX2V2dGNobiAqeGNlLCBldnRj aG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9j dGxfZXZ0Y2huX3VuYmluZCB1bmJpbmQ7Ci0KLSAgICB1bmJpbmQucG9ydCA9IHBvcnQ7Ci0KLSAg ICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOwotfQotCi1l dnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKQot ewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAg aWYgKCByZWFkKGZkLCAmcG9ydCwgc2l6ZW9mKHBvcnQpKSAhPSBzaXplb2YocG9ydCkgKQotICAg ICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gcG9ydDsKLX0KLQotaW50IHhjX2V2dGNobl91 bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQg PSB4Y2UtPmZkOwotCi0gICAgaWYgKCB3cml0ZShmZCwgJnBvcnQsIHNpemVvZihwb3J0KSkgIT0g c2l6ZW9mKHBvcnQpICkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiAwOwotfQotCiBz dGF0aWMgeGNfb3NkZXBfaGFuZGxlIGxpbnV4X2dudHRhYl9vcGVuKHhjX2dudHRhYiAqeGNnKQog ewogICAgIGludCBmZCA9IG9wZW4oREVWWEVOICJnbnRkZXYiLCBPX1JEV1IpOwpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlieGMveGNfbWluaW9zLmMgYi90b29scy9saWJ4Yy94Y19taW5pb3MuYwppbmRl eCA0YWNlMWI1Li5kYjdiMzQ0IDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19taW5pb3MuYwor KysgYi90b29scy9saWJ4Yy94Y19taW5pb3MuYwpAQCAtMTksMTQgKzE5LDExIEBACiAgKi8KIAog I3VuZGVmIE5ERUJVRwotI2luY2x1ZGUgInhlbi1leHRlcm5hbC9ic2Qtc3lzLXF1ZXVlLmgiCiAj aW5jbHVkZSA8bWluaS1vcy90eXBlcy5oPgogI2luY2x1ZGUgPG1pbmktb3Mvb3MuaD4KICNpbmNs dWRlIDxtaW5pLW9zL21tLmg+CiAjaW5jbHVkZSA8bWluaS1vcy9saWIuaD4KICNpbmNsdWRlIDxt aW5pLW9zL2dudG1hcC5oPgotI2luY2x1ZGUgPG1pbmktb3MvZXZlbnRzLmg+Ci0jaW5jbHVkZSA8 bWluaS1vcy93YWl0Lmg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KIAogI2luY2x1ZGUgPHhlbi9t ZW1vcnkuaD4KQEAgLTQxLDEzICszOCw5IEBACiAjaW5jbHVkZSAieGNfcHJpdmF0ZS5oIgogCiB2 b2lkIG1pbmlvc19pbnRlcmZhY2VfY2xvc2VfZmQoaW50IGZkKTsKLXZvaWQgbWluaW9zX2V2dGNo bl9jbG9zZV9mZChpbnQgZmQpOwogdm9pZCBtaW5pb3NfZ250dGFiX2Nsb3NlX2ZkKGludCBmZCk7 CiAKIGV4dGVybiB2b2lkIG1pbmlvc19pbnRlcmZhY2VfY2xvc2VfZmQoaW50IGZkKTsKLWV4dGVy biB2b2lkIG1pbmlvc19ldnRjaG5fY2xvc2VfZmQoaW50IGZkKTsKLQotZXh0ZXJuIHN0cnVjdCB3 YWl0X3F1ZXVlX2hlYWQgZXZlbnRfcXVldWU7CiAKIHN0YXRpYyB4Y19vc2RlcF9oYW5kbGUgbWlu aW9zX3ByaXZjbWRfb3Blbih4Y19pbnRlcmZhY2UgKnhjaCkKIHsKQEAgLTE5NywyMjAgKzE5MCw2 IEBAIHN0YXRpYyBzdHJ1Y3QgeGNfb3NkZXBfb3BzIG1pbmlvc19wcml2Y21kX29wcyA9IHsKICAg ICB9LAogfTsKIAotCi0vKiBYWFggTm90ZTogVGhpcyBpcyBub3QgdGhyZWFkc2FmZSAqLwotc3Rh dGljIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvKiBwb3J0X2FsbG9jKGludCBmZCkgewotICAgIHN0 cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87Ci0gICAgcG9ydF9pbmZvID0gbWFsbG9j KHNpemVvZihzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbykpOwotICAgIGlmIChwb3J0X2luZm8gPT0g TlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcG9ydF9pbmZvLT5wZW5kaW5nID0gMDsK LSAgICBwb3J0X2luZm8tPnBvcnQgPSAtMTsKLSAgICBwb3J0X2luZm8tPmJvdW5kID0gMDsKLQot ICAgIExJU1RfSU5TRVJUX0hFQUQoJmZpbGVzW2ZkXS5ldnRjaG4ucG9ydHMsIHBvcnRfaW5mbywg bGlzdCk7Ci0gICAgcmV0dXJuIHBvcnRfaW5mbzsKLX0KLQotc3RhdGljIHZvaWQgcG9ydF9kZWFs bG9jKHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm8pIHsKLSAgICBpZiAocG9ydF9p bmZvLT5ib3VuZCkKLSAgICAgICAgdW5iaW5kX2V2dGNobihwb3J0X2luZm8tPnBvcnQpOwotICAg IExJU1RfUkVNT1ZFKHBvcnRfaW5mbywgbGlzdCk7Ci0gICAgZnJlZShwb3J0X2luZm8pOwotfQot Ci1pbnQgb3NkZXBfZXZ0Y2huX29wZW4oeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkID0g YWxsb2NfZmQoRlRZUEVfRVZUQ0hOKTsKLSAgICBpZiAoIGZkID09IC0xICkKLSAgICAgICAgcmV0 dXJuIC0xOwotICAgIExJU1RfSU5JVCgmZmlsZXNbZmRdLmV2dGNobi5wb3J0cyk7Ci0gICAgeGNl LT5mZCA9IGZkOwotICAgIHByaW50ZigiZXZ0Y2huX29wZW4oKSAtPiAlZFxuIiwgZmQpOwotICAg IHJldHVybiAwOwotfQotCi1pbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlLCB4 Y19vc2RlcF9oYW5kbGUgaCkKLXsKLSAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQotICAgICAgICBy ZXR1cm4gMDsKLQotICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKLX0KLQotdm9pZCBtaW5pb3Nf ZXZ0Y2huX2Nsb3NlX2ZkKGludCBmZCkKLXsKLSAgICBzdHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAq cG9ydF9pbmZvLCAqdG1wOwotICAgIExJU1RfRk9SRUFDSF9TQUZFKHBvcnRfaW5mbywgJmZpbGVz W2ZkXS5ldnRjaG4ucG9ydHMsIGxpc3QsIHRtcCkKLSAgICAgICAgcG9ydF9kZWFsbG9jKHBvcnRf aW5mbyk7Ci0KLSAgICBmaWxlc1tmZF0udHlwZSA9IEZUWVBFX05PTkU7Ci19Ci0KLWludCB4Y19l dnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgcmV0dXJuIHhjZS0+ZmQ7Ci19Ci0KLWlu dCB4Y19ldnRjaG5fbm90aWZ5KHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17 Ci0gICAgaW50IHJldDsKLQotICAgIHJldCA9IG5vdGlmeV9yZW1vdGVfdmlhX2V2dGNobihwb3J0 KTsKLQotICAgIGlmIChyZXQgPCAwKSB7Ci0JZXJybm8gPSAtcmV0OwotCXJldCA9IC0xOwotICAg IH0KLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZCBldnRjaG5faGFuZGxlcihldnRj aG5fcG9ydF90IHBvcnQsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCB2b2lkICpkYXRhKQotewotICAg IGludCBmZCA9IChpbnQpKGludHB0cl90KWRhdGE7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2lu Zm8gKnBvcnRfaW5mbzsKLSAgICBhc3NlcnQoZmlsZXNbZmRdLnR5cGUgPT0gRlRZUEVfRVZUQ0hO KTsKLSAgICBtYXNrX2V2dGNobihwb3J0KTsKLSAgICBMSVNUX0ZPUkVBQ0gocG9ydF9pbmZvLCAm ZmlsZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCkgewotICAgICAgICBpZiAocG9ydF9pbmZvLT5w b3J0ID09IHBvcnQpCi0gICAgICAgICAgICBnb3RvIGZvdW5kOwotICAgIH0KLSAgICBwcmludGso IlVua25vd24gcG9ydCBmb3IgaGFuZGxlICVkXG4iLCBmZCk7Ci0gICAgcmV0dXJuOwotCi0gZm91 bmQ6Ci0gICAgcG9ydF9pbmZvLT5wZW5kaW5nID0gMTsKLSAgICBmaWxlc1tmZF0ucmVhZCA9IDE7 Ci0gICAgd2FrZV91cCgmZXZlbnRfcXVldWUpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90 IHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCh4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkKQot ewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBv cnRfaW5mbzsKLSAgICBpbnQgcmV0OwotICAgIGV2dGNobl9wb3J0X3QgcG9ydDsKLQotICAgIGFz c2VydChnZXRfY3VycmVudCgpID09IG1haW5fdGhyZWFkKTsKLSAgICBwb3J0X2luZm8gPSBwb3J0 X2FsbG9jKGZkKTsKLSAgICBpZiAocG9ydF9pbmZvID09IE5VTEwpCi0JcmV0dXJuIC0xOwotCi0g ICAgcHJpbnRmKCJ4Y19ldnRjaG5fYmluZF91bmJvdW5kX3BvcnQoJWQpIiwgZG9taWQpOwotICAg IHJldCA9IGV2dGNobl9hbGxvY191bmJvdW5kKGRvbWlkLCBldnRjaG5faGFuZGxlciwgKHZvaWQq KShpbnRwdHJfdClmZCwgJnBvcnQpOwotICAgIHByaW50ZigiID0gJWRcbiIsIHJldCk7Ci0KLSAg ICBpZiAocmV0IDwgMCkgewotCXBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOwotCWVycm5vID0gLXJl dDsKLQlyZXR1cm4gLTE7Ci0gICAgfQotICAgIHBvcnRfaW5mby0+Ym91bmQgPSAxOwotICAgIHBv cnRfaW5mby0+cG9ydCA9IHBvcnQ7Ci0gICAgdW5tYXNrX2V2dGNobihwb3J0KTsKLSAgICByZXR1 cm4gcG9ydDsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF9pbnRl cmRvbWFpbih4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnRjaG5fcG9ydF90IHJlbW90ZV9wb3J0KQot ewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGV2dGNobl9wb3J0X2luZm8gKnBv cnRfaW5mbzsKLSAgICBldnRjaG5fcG9ydF90IGxvY2FsX3BvcnQ7Ci0gICAgaW50IHJldDsKLQot ICAgIGFzc2VydChnZXRfY3VycmVudCgpID09IG1haW5fdGhyZWFkKTsKLSAgICBwb3J0X2luZm8g PSBwb3J0X2FsbG9jKGZkKTsKLSAgICBpZiAocG9ydF9pbmZvID09IE5VTEwpCi0JcmV0dXJuIC0x OwotCi0gICAgcHJpbnRmKCJ4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbiglZCwgJSJQUklkMzIi KSIsIGRvbWlkLCByZW1vdGVfcG9ydCk7Ci0gICAgcmV0ID0gZXZ0Y2huX2JpbmRfaW50ZXJkb21h aW4oZG9taWQsIHJlbW90ZV9wb3J0LCBldnRjaG5faGFuZGxlciwgKHZvaWQqKShpbnRwdHJfdClm ZCwgJmxvY2FsX3BvcnQpOwotICAgIHByaW50ZigiID0gJWRcbiIsIHJldCk7Ci0KLSAgICBpZiAo cmV0IDwgMCkgewotCXBvcnRfZGVhbGxvYyhwb3J0X2luZm8pOwotCWVycm5vID0gLXJldDsKLQly ZXR1cm4gLTE7Ci0gICAgfQotICAgIHBvcnRfaW5mby0+Ym91bmQgPSAxOwotICAgIHBvcnRfaW5m by0+cG9ydCA9IGxvY2FsX3BvcnQ7Ci0gICAgdW5tYXNrX2V2dGNobihsb2NhbF9wb3J0KTsKLSAg ICByZXR1cm4gbG9jYWxfcG9ydDsKLX0KLQotaW50IHhjX2V2dGNobl91bmJpbmQoeGNfZXZ0Y2hu ICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAg IHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87Ci0KLSAgICBMSVNUX0ZPUkVBQ0go cG9ydF9pbmZvLCAmZmlsZXNbZmRdLmV2dGNobi5wb3J0cywgbGlzdCkgewotICAgICAgICBpZiAo cG9ydF9pbmZvLT5wb3J0ID09IHBvcnQpIHsKLSAgICAgICAgICAgIHBvcnRfZGVhbGxvYyhwb3J0 X2luZm8pOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcHJp bnRmKCJXYXJuaW5nOiBjb3VsZG4ndCBmaW5kIHBvcnQgJSJQUklkMzIiIGZvciB4YyBoYW5kbGUg JXhcbiIsIHBvcnQsIGZkKTsKLSAgICBlcnJubyA9IEVJTlZBTDsKLSAgICByZXR1cm4gLTE7Ci19 Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdmlycSh4Y19ldnRjaG4g KnhjZSwgdW5zaWduZWQgaW50IHZpcnEpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBz dHJ1Y3QgZXZ0Y2huX3BvcnRfaW5mbyAqcG9ydF9pbmZvOwotICAgIGV2dGNobl9wb3J0X3QgcG9y dDsKLQotICAgIGFzc2VydChnZXRfY3VycmVudCgpID09IG1haW5fdGhyZWFkKTsKLSAgICBwb3J0 X2luZm8gPSBwb3J0X2FsbG9jKGZkKTsKLSAgICBpZiAocG9ydF9pbmZvID09IE5VTEwpCi0JcmV0 dXJuIC0xOwotCi0gICAgcHJpbnRmKCJ4Y19ldnRjaG5fYmluZF92aXJxKCVkKSIsIHZpcnEpOwot ICAgIHBvcnQgPSBiaW5kX3ZpcnEodmlycSwgZXZ0Y2huX2hhbmRsZXIsICh2b2lkKikoaW50cHRy X3QpZmQpOwotCi0gICAgaWYgKHBvcnQgPCAwKSB7Ci0JcG9ydF9kZWFsbG9jKHBvcnRfaW5mbyk7 Ci0JZXJybm8gPSAtcG9ydDsKLQlyZXR1cm4gLTE7Ci0gICAgfQotICAgIHBvcnRfaW5mby0+Ym91 bmQgPSAxOwotICAgIHBvcnRfaW5mby0+cG9ydCA9IHBvcnQ7Ci0gICAgdW5tYXNrX2V2dGNobihw b3J0KTsKLSAgICByZXR1cm4gcG9ydDsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19l dnRjaG5fcGVuZGluZyh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwot ICAgIHN0cnVjdCBldnRjaG5fcG9ydF9pbmZvICpwb3J0X2luZm87Ci0gICAgdW5zaWduZWQgbG9u ZyBmbGFnczsKLSAgICBldnRjaG5fcG9ydF90IHJldCA9IC0xOwotCi0gICAgbG9jYWxfaXJxX3Nh dmUoZmxhZ3MpOwotICAgIGZpbGVzW2ZkXS5yZWFkID0gMDsKLQotICAgIExJU1RfRk9SRUFDSChw b3J0X2luZm8sICZmaWxlc1tmZF0uZXZ0Y2huLnBvcnRzLCBsaXN0KSB7Ci0gICAgICAgIGlmIChw b3J0X2luZm8tPnBvcnQgIT0gLTEgJiYgcG9ydF9pbmZvLT5wZW5kaW5nKSB7Ci0gICAgICAgICAg ICBpZiAocmV0ID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgcmV0ID0gcG9ydF9pbmZvLT5wb3J0 OwotICAgICAgICAgICAgICAgIHBvcnRfaW5mby0+cGVuZGluZyA9IDA7Ci0gICAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgICAgIGZpbGVzW2ZkXS5yZWFkID0gMTsKLSAgICAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBsb2NhbF9p cnFfcmVzdG9yZShmbGFncyk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotaW50IHhjX2V2dGNobl91 bm1hc2soeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAgICB1bm1hc2tf ZXZ0Y2huKHBvcnQpOwotICAgIHJldHVybiAwOwotfQotCiAvKiBPcHRpb25hbGx5IGZsdXNoIGZp bGUgdG8gZGlzayBhbmQgZGlzY2FyZCBwYWdlIGNhY2hlICovCiB2b2lkIGRpc2NhcmRfZmlsZV9j YWNoZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGZkLCBpbnQgZmx1c2gpCiB7CmRpZmYgLS1naXQg YS90b29scy9saWJ4Yy94Y19uZXRic2QuYyBiL3Rvb2xzL2xpYnhjL3hjX25ldGJzZC5jCmluZGV4 IGIxYjgyOGYuLmZlNGYwYTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX25ldGJzZC5jCisr KyBiL3Rvb2xzL2xpYnhjL3hjX25ldGJzZC5jCkBAIC0xOSw3ICsxOSw2IEBACiAKICNpbmNsdWRl ICJ4Y19wcml2YXRlLmgiCiAKLSNpbmNsdWRlIDx4ZW4vc3lzL2V2dGNobi5oPgogI2luY2x1ZGUg PHVuaXN0ZC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8bWFsbG9jLmg+CkBAIC0y MjMsMTE0ICsyMjIsNiBAQCBzdGF0aWMgc3RydWN0IHhjX29zZGVwX29wcyBuZXRic2RfcHJpdmNt ZF9vcHMgPSB7CiAgICAgfSwKIH07CiAKLSNkZWZpbmUgRVZUQ0hOX0RFVl9OQU1FICAiL2Rldi94 ZW5ldnQiCi0KLWludCBvc2RlcF9ldnRjaG5fb3Blbih4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBp bnQgZmQgPSBvcGVuKEVWVENITl9ERVZfTkFNRSwgT19OT05CTE9DS3xPX1JEV1IpOwotICAgIGlm ICggZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgeGNlLT5mZCA9IGZkOwotICAg IHJldHVybiAwOwotfQotCi1pbnQgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAqeGNlLCB4 Y19vc2RlcF9oYW5kbGUgaCkKLXsKLSAgICBpZiAoIHhjZS0+ZmQgPT0gLTEgKQotICAgICAgICBy ZXR1cm4gMDsKLQotICAgIHJldHVybiBjbG9zZSh4Y2UtPmZkKTsKLX0KLQotaW50IHhjX2V2dGNo bl9mZCh4Y19ldnRjaG4gKnhjZSkKLXsKLSAgICByZXR1cm4geGNlLT5mZDsKLX0KLQotaW50IHhj X2V2dGNobl9ub3RpZnkoeGNfZXZ0Y2huICp4Y2UsIGV2dGNobl9wb3J0X3QgcG9ydCkKLXsKLSAg ICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fbm90aWZ5IG5vdGlm eTsKLQotICAgIG5vdGlmeS5wb3J0ID0gcG9ydDsKLQotICAgIHJldHVybiBpb2N0bChmZCwgSU9D VExfRVZUQ0hOX05PVElGWSwgJm5vdGlmeSk7Ci19Ci0KLWV2dGNobl9wb3J0X29yX2Vycm9yX3Qg eGNfZXZ0Y2huX2JpbmRfdW5ib3VuZF9wb3J0KHhjX2V2dGNobiAqIHhjZSwgaW50IGRvbWlkKQot ewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX3Vu Ym91bmRfcG9ydCBiaW5kOwotICAgIGludCByZXQ7Ci0KLSAgICBiaW5kLnJlbW90ZV9kb21haW4g PSBkb21pZDsKLQotICAgIHJldCA9IGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9VTkJPVU5E X1BPUlQsICZiaW5kKTsKLSAgICBpZiAocmV0ID09IDApCi0JcmV0dXJuIGJpbmQucG9ydDsKLSAg ICBlbHNlCi0JcmV0dXJuIC0xOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNo bl9iaW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNobl9wb3J0X3QgcmVt b3RlX3BvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxfZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKLSAgICBpbnQgcmV0OwotCi0gICAgYmluZC5yZW1v dGVfZG9tYWluID0gZG9taWQ7Ci0gICAgYmluZC5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0Owot Ci0gICAgcmV0ID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX0lOVEVSRE9NQUlOLCAmYmlu ZCk7Ci0gICAgaWYgKHJldCA9PSAwKQotCXJldHVybiBiaW5kLnBvcnQ7Ci0gICAgZWxzZQotCXJl dHVybiAtMTsKLX0KLQotaW50IHhjX2V2dGNobl91bmJpbmQoeGNfZXZ0Y2huICp4Y2UsIGV2dGNo bl9wb3J0X3QgcG9ydCkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIHN0cnVjdCBpb2N0 bF9ldnRjaG5fdW5iaW5kIHVuYmluZDsKLQotICAgIHVuYmluZC5wb3J0ID0gcG9ydDsKLQotICAg IHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX1VOQklORCwgJnVuYmluZCk7Ci19Ci0KLWV2 dGNobl9wb3J0X29yX2Vycm9yX3QgeGNfZXZ0Y2huX2JpbmRfdmlycSh4Y19ldnRjaG4gKnhjZSwg dW5zaWduZWQgaW50IHZpcnEpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3Qg aW9jdGxfZXZ0Y2huX2JpbmRfdmlycSBiaW5kOwotICAgIGludCBlcnI7Ci0KLSAgICBiaW5kLnZp cnEgPSB2aXJxOwotCi0gICAgZXJyID0gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9CSU5EX1ZJUlEs ICZiaW5kKTsKLSAgICBpZiAoZXJyKQotCXJldHVybiAtMTsKLSAgICBlbHNlCi0JcmV0dXJuIGJp bmQucG9ydDsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fcGVuZGluZyh4 Y19ldnRjaG4gKnhjZSkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwotICAgIGV2dGNobl9wb3J0 X3QgcG9ydDsKLQotICAgIGlmICggcmVhZF9leGFjdChmZCwgKGNoYXIgKikmcG9ydCwgc2l6ZW9m KHBvcnQpKSA9PSAtMSApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBwb3J0Owot fQotCi1pbnQgeGNfZXZ0Y2huX3VubWFzayh4Y19ldnRjaG4gKnhjZSwgZXZ0Y2huX3BvcnRfdCBw b3J0KQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgcmV0dXJuIHdyaXRlX2V4YWN0KGZk LCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpOwotfQotCiAvKiBPcHRpb25hbGx5IGZsdXNo IGZpbGUgdG8gZGlzayBhbmQgZGlzY2FyZCBwYWdlIGNhY2hlICovCiB2b2lkIGRpc2NhcmRfZmls ZV9jYWNoZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGZkLCBpbnQgZmx1c2gpIAogewpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5jIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5j CmluZGV4IGNiNzlmMjIuLjU2ZDU0YjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZh dGUuYworKysgYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmMKQEAgLTI1MSw0NiArMjUxLDYgQEAg aW50IGRvX3hlbl9oeXBlcmNhbGwoeGNfaW50ZXJmYWNlICp4Y2gsIHByaXZjbWRfaHlwZXJjYWxs X3QgKmh5cGVyY2FsbCkKICAgICByZXR1cm4geGNoLT5vcHMtPnUucHJpdmNtZC5oeXBlcmNhbGwo eGNoLCB4Y2gtPm9wc19oYW5kbGUsIGh5cGVyY2FsbCk7CiB9CiAKLXhjX2V2dGNobiAqeGNfZXZ0 Y2huX29wZW4oeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlciwgdW5zaWduZWQgb3Blbl9mbGFncykK LXsKLSAgICB4Y19ldnRjaG4gKnhjZSA9IG1hbGxvYyhzaXplb2YoKnhjZSkpOwotICAgIGludCBy YzsKLQotICAgIGlmICgheGNlKSByZXR1cm4gTlVMTDsKLQotICAgIHhjZS0+ZmQgPSAtMTsKLSAg ICB4Y2UtPmxvZ2dlciA9IGxvZ2dlcjsKLSAgICB4Y2UtPmxvZ2dlcl90b2ZyZWUgID0gTlVMTDsK LQotICAgIGlmICgheGNlLT5sb2dnZXIpIHsKLSAgICAgICAgeGNlLT5sb2dnZXIgPSB4Y2UtPmxv Z2dlcl90b2ZyZWUgPQotICAgICAgICAgICAgKHhlbnRvb2xsb2dfbG9nZ2VyKikKLSAgICAgICAg ICAgIHh0bF9jcmVhdGVsb2dnZXJfc3RkaW9zdHJlYW0oc3RkZXJyLCBYVExfUFJPR1JFU1MsIDAp OwotICAgICAgICBpZiAoIXhjZS0+bG9nZ2VyKSBnb3RvIGVycjsKLSAgICB9Ci0KLSAgICByYyA9 IG9zZGVwX2V2dGNobl9vcGVuKHhjZSk7Ci0gICAgaWYgKCByYyAgPCAwICkgZ290byBlcnI7Ci0K LSAgICByZXR1cm4geGNlOwotCi1lcnI6Ci0gICAgb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjZSk7Ci0g ICAgeHRsX2xvZ2dlcl9kZXN0cm95KHhjZS0+bG9nZ2VyX3RvZnJlZSk7Ci0gICAgZnJlZSh4Y2Up OwotICAgIHJldHVybiBOVUxMOwotfQotCi1pbnQgeGNfZXZ0Y2huX2Nsb3NlKHhjX2V2dGNobiAq eGNlKQotewotICAgIGludCByYzsKLQotICAgIHJjID0gb3NkZXBfZXZ0Y2huX2Nsb3NlKHhjZSk7 Ci0gICAgeHRsX2xvZ2dlcl9kZXN0cm95KHhjZS0+bG9nZ2VyX3RvZnJlZSk7Ci0gICAgZnJlZSh4 Y2UpOwotICAgIHJldHVybiByYzsKLX0KLQogeGNfZ250dGFiICp4Y19nbnR0YWJfb3Blbih4ZW50 b29sbG9nX2xvZ2dlciAqbG9nZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBvcGVuX2ZsYWdzKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5o IGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCmluZGV4IGY0ZDE1NWEuLmEzMmFjY2IgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaAorKysgYi90b29scy9saWJ4Yy94Y19wcml2 YXRlLmgKQEAgLTEyMywxMyArMTIzLDYgQEAgc3RydWN0IHhjX2ludGVyZmFjZV9jb3JlIHsKICAg ICB4Y19vc2RlcF9oYW5kbGUgIG9wc19oYW5kbGU7IC8qIG9wYXF1ZSBkYXRhIGZvciB4Y19vc2Rl cF9vcHMgKi8KIH07CiAKLXN0cnVjdCB4ZW5ldnRjaG5faGFuZGxlIHsKLSAgICB4ZW50b29sbG9n X2xvZ2dlciAqbG9nZ2VyLCAqbG9nZ2VyX3RvZnJlZTsKLSAgICBpbnQgZmQ7Ci19OwotaW50IG9z ZGVwX2V2dGNobl9vcGVuKHhjX2V2dGNobiAqeGNlKTsKLWludCBvc2RlcF9ldnRjaG5fY2xvc2Uo eGNfZXZ0Y2huICp4Y2UpOwotCiB2b2lkIHhjX3JlcG9ydF9lcnJvcih4Y19pbnRlcmZhY2UgKnhj aCwgaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18oKGZv cm1hdChwcmludGYsMyw0KSkpOwogdm9pZCB4Y19yZXBvcnR2KHhjX2ludGVyZmFjZSAqeGNoLCB4 ZW50b29sbG9nX2xvZ2dlciAqbGcsIHhlbnRvb2xsb2dfbGV2ZWwsCmRpZmYgLS1naXQgYS90b29s cy9saWJ4Yy94Y19zb2xhcmlzLmMgYi90b29scy9saWJ4Yy94Y19zb2xhcmlzLmMKaW5kZXggMDg4 MjI4YS4uZWQ3OTg3YyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfc29sYXJpcy5jCisrKyBi L3Rvb2xzL2xpYnhjL3hjX3NvbGFyaXMuYwpAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgInhj X3ByaXZhdGUuaCIKIAogI2luY2x1ZGUgPHhlbi9tZW1vcnkuaD4KLSNpbmNsdWRlIDx4ZW4vc3lz L2V2dGNobi5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5j bHVkZSA8bWFsbG9jLmg+CkBAIC0xOTQsMTAyICsxOTMsNiBAQCBzdGF0aWMgc3RydWN0IHhjX29z ZGVwX29wcyBzb2xhcmlzX3ByaXZjbWRfb3BzID0gewogICAgIH0sCiB9OwogCi1pbnQgb3NkZXBf ZXZ0Y2huX29wZW4oeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAgaW50IGZkOwotCi0gICAgaWYgKCAo ZmQgPSBvcGVuKCIvZGV2L3hlbi9ldnRjaG4iLCBPX1JEV1IpKSA9PSAtMSApCi0gICAgewotICAg ICAgICBQRVJST1IoIkNvdWxkIG5vdCBvcGVuIGV2ZW50IGNoYW5uZWwgaW50ZXJmYWNlIik7Ci0g ICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICB4Y2UtPmZkID0gZmQ7Ci0gICAgcmV0dXJu IDA7Ci19Ci0KLWludCBvc2RlcF9ldnRjaG5fY2xvc2UoeGNfZXZ0Y2huICp4Y2UpCi17Ci0gICAg aWYgKCB4Y2UtPmZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gY2xv c2UoeGNlLT5mZCk7Ci19Ci0KLWludCB4Y19ldnRjaG5fZmQoeGNfZXZ0Y2huICp4Y2UpCi17Ci0g ICAgcmV0dXJuIHhjZS0+ZmQ7Ci19Ci0KLWludCB4Y19ldnRjaG5fbm90aWZ5KHhjX2V2dGNobiAq eGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBz dHJ1Y3QgaW9jdGxfZXZ0Y2huX25vdGlmeSBub3RpZnk7Ci0KLSAgICBub3RpZnkucG9ydCA9IHBv cnQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9OT1RJRlksICZub3RpZnkp OwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9iaW5kX3VuYm91bmRfcG9y dCh4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkKQotewotICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0g ICAgc3RydWN0IGlvY3RsX2V2dGNobl9iaW5kX3VuYm91bmRfcG9ydCBiaW5kOwotCi0gICAgYmlu ZC5yZW1vdGVfZG9tYWluID0gZG9taWQ7Ci0KLSAgICByZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VW VENITl9CSU5EX1VOQk9VTkRfUE9SVCwgJmJpbmQpOwotfQotCi1ldnRjaG5fcG9ydF9vcl9lcnJv cl90IHhjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjX2V2dGNobiAqeGNlLCBpbnQgZG9taWQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dGNo bl9wb3J0X3QgcmVtb3RlX3BvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1 Y3QgaW9jdGxfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4gYmluZDsKLQotICAgIGJpbmQucmVtb3Rl X2RvbWFpbiA9IGRvbWlkOwotICAgIGJpbmQucmVtb3RlX3BvcnQgPSByZW1vdGVfcG9ydDsKLQot ICAgIHJldHVybiBpb2N0bChmZCwgSU9DVExfRVZUQ0hOX0JJTkRfSU5URVJET01BSU4sICZiaW5k KTsKLX0KLQotZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCB4Y19ldnRjaG5fYmluZF92aXJxKHhjX2V2 dGNobiAqeGNlLCB1bnNpZ25lZCBpbnQgdmlycSkKLXsKLSAgICBpbnQgZmQgPSB4Y2UtPmZkOwot ICAgIHN0cnVjdCBpb2N0bF9ldnRjaG5fYmluZF92aXJxIGJpbmQ7Ci0KLSAgICBiaW5kLnZpcnEg PSB2aXJxOwotCi0gICAgcmV0dXJuIGlvY3RsKGZkLCBJT0NUTF9FVlRDSE5fQklORF9WSVJRLCAm YmluZCk7Ci19Ci0KLWludCB4Y19ldnRjaG5fdW5iaW5kKHhjX2V2dGNobiAqeGNlLCBldnRjaG5f cG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZkID0geGNlLT5mZDsKLSAgICBzdHJ1Y3QgaW9jdGxf ZXZ0Y2huX3VuYmluZCB1bmJpbmQ7Ci0KLSAgICB1bmJpbmQucG9ydCA9IHBvcnQ7Ci0KLSAgICBy ZXR1cm4gaW9jdGwoZmQsIElPQ1RMX0VWVENITl9VTkJJTkQsICZ1bmJpbmQpOwotfQotCi1ldnRj aG5fcG9ydF9vcl9lcnJvcl90IHhjX2V2dGNobl9wZW5kaW5nKHhjX2V2dGNobiAqeGNlKQotewot ICAgIGludCBmZCA9IHhjZS0+ZmQ7Ci0gICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwotCi0gICAgaWYg KCByZWFkX2V4YWN0KGZkLCAoY2hhciAqKSZwb3J0LCBzaXplb2YocG9ydCkpID09IC0xICkKLSAg ICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIHBvcnQ7Ci19Ci0KLWludCB4Y19ldnRjaG5f dW5tYXNrKHhjX2V2dGNobiAqeGNlLCBldnRjaG5fcG9ydF90IHBvcnQpCi17Ci0gICAgaW50IGZk ID0geGNlLT5mZDsKLSAgICByZXR1cm4gd3JpdGVfZXhhY3QoZmQsIChjaGFyICopJnBvcnQsIHNp emVvZihwb3J0KSk7Ci19Ci0KIC8qIE9wdGlvbmFsbHkgZmx1c2ggZmlsZSB0byBkaXNrIGFuZCBk aXNjYXJkIHBhZ2UgY2FjaGUgKi8KIHZvaWQgZGlzY2FyZF9maWxlX2NhY2hlKHhjX2ludGVyZmFj ZSAqeGNoLCBpbnQgZmQsIGludCBmbHVzaCkgCiB7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94 Y19zdXNwZW5kLmMgYi90b29scy9saWJ4Yy94Y19zdXNwZW5kLmMKaW5kZXggYmJhMzZlNy4uODM2 MWM3YiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfc3VzcGVuZC5jCisrKyBiL3Rvb2xzL2xp YnhjL3hjX3N1c3BlbmQuYwpAQCAtMTYsNiArMTYsOCBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgog I2luY2x1ZGUgPGZjbnRsLmg+CiAKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KKwogI2luY2x1ZGUg InhjX3ByaXZhdGUuaCIKICNpbmNsdWRlICJ4ZW5ndWVzdC5oIgogCkBAIC0xMjQsMTIgKzEyNiwx MiBAQCBzdGF0aWMgaW50IHVubG9ja19zdXNwZW5kX2V2ZW50KHhjX2ludGVyZmFjZSAqeGNoLCBp bnQgZG9taWQsIGludCAqbG9ja2ZkKQogICAgIHJldHVybiAtMTsKIH0KIAotaW50IHhjX2F3YWl0 X3N1c3BlbmQoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCBpbnQgc3VzcGVuZF9l dnRjaG4pCitpbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2UgKnhjaCwgeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlLCBpbnQgc3VzcGVuZF9ldnRjaG4pCiB7CiAgICAgaW50IHJjOwogCiAgICAg ZG8gewotICAgICAgICByYyA9IHhjX2V2dGNobl9wZW5kaW5nKHhjZSk7CisgICAgICAgIHJjID0g eGVuZXZ0Y2huX3BlbmRpbmcoeGNlKTsKICAgICAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICAg ICAgRVJST1IoImVycm9yIHBvbGxpbmcgc3VzcGVuZCBub3RpZmljYXRpb24gY2hhbm5lbDogJWQi LCByYyk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xMzcsNyArMTM5LDcgQEAgaW50IHhj X2F3YWl0X3N1c3BlbmQoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCBpbnQgc3Vz cGVuZF9ldnRjaG4pCiAgICAgfSB3aGlsZSAocmMgIT0gc3VzcGVuZF9ldnRjaG4pOwogCiAgICAg LyogaGFybWxlc3MgZm9yIG9uZS1vZmYgc3VzcGVuZCAqLwotICAgIGlmICh4Y19ldnRjaG5fdW5t YXNrKHhjZSwgc3VzcGVuZF9ldnRjaG4pIDwgMCkKKyAgICBpZiAoeGVuZXZ0Y2huX3VubWFzayh4 Y2UsIHN1c3BlbmRfZXZ0Y2huKSA8IDApCiAgICAgICAgIEVSUk9SKCJmYWlsZWQgdG8gdW5tYXNr IHN1c3BlbmQgbm90aWZpY2F0aW9uIGNoYW5uZWw6ICVkIiwgcmMpOwogCiAgICAgcmV0dXJuIDA7 CkBAIC0xNDUsMTYgKzE0NywxNiBAQCBpbnQgeGNfYXdhaXRfc3VzcGVuZCh4Y19pbnRlcmZhY2Ug KnhjaCwgeGNfZXZ0Y2huICp4Y2UsIGludCBzdXNwZW5kX2V2dGNobikKIAogLyogSW50ZXJuYWwg Y2FsbGVycyBhcmUgYWxsb3dlZCB0byBjYWxsIHRoaXMgd2l0aCBzdXNwZW5kX2V2dGNobjwwCiAg KiBidXQgKmxvY2tmZD4wLiAqLwotaW50IHhjX3N1c3BlbmRfZXZ0Y2huX3JlbGVhc2UoeGNfaW50 ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLAoraW50IHhjX3N1c3BlbmRfZXZ0Y2huX3JlbGVh c2UoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUgKnhjZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBkb21pZCwgaW50IHN1c3BlbmRfZXZ0Y2huLCBpbnQgKmxv Y2tmZCkKIHsKICAgICBpZiAoc3VzcGVuZF9ldnRjaG4gPj0gMCkKLSAgICAgICAgeGNfZXZ0Y2hu X3VuYmluZCh4Y2UsIHN1c3BlbmRfZXZ0Y2huKTsKKyAgICAgICAgeGVuZXZ0Y2huX3VuYmluZCh4 Y2UsIHN1c3BlbmRfZXZ0Y2huKTsKIAogICAgIHJldHVybiB1bmxvY2tfc3VzcGVuZF9ldmVudCh4 Y2gsIGRvbWlkLCBsb2NrZmQpOwogfQogCi1pbnQgeGNfc3VzcGVuZF9ldnRjaG5faW5pdF9zYW5l KHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwKK2ludCB4Y19zdXNwZW5kX2V2dGNo bl9pbml0X3NhbmUoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2dGNobl9oYW5kbGUgKnhjZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRvbWlkLCBpbnQgcG9ydCwgaW50ICps b2NrZmQpCiB7CiAgICAgaW50IHJjLCBzdXNwZW5kX2V2dGNobiA9IC0xOwpAQCAtMTY0LDcgKzE2 Niw3IEBAIGludCB4Y19zdXNwZW5kX2V2dGNobl9pbml0X3NhbmUoeGNfaW50ZXJmYWNlICp4Y2gs IHhjX2V2dGNobiAqeGNlLAogICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgfQogCi0gICAgc3Vz cGVuZF9ldnRjaG4gPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y2UsIGRvbWlkLCBwb3J0 KTsKKyAgICBzdXNwZW5kX2V2dGNobiA9IHhlbmV2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjZSwg ZG9taWQsIHBvcnQpOwogICAgIGlmIChzdXNwZW5kX2V2dGNobiA8IDApIHsKICAgICAgICAgRVJS T1IoImZhaWxlZCB0byBiaW5kIHN1c3BlbmQgZXZlbnQgY2hhbm5lbDogJWQiLCBzdXNwZW5kX2V2 dGNobik7CiAgICAgICAgIGdvdG8gY2xlYW51cDsKQEAgLTE4NCw3ICsxODYsNyBAQCBjbGVhbnVw OgogICAgIHJldHVybiAtMTsKIH0KIAotaW50IHhjX3N1c3BlbmRfZXZ0Y2huX2luaXRfZXhjbHVz aXZlKHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwKK2ludCB4Y19zdXNwZW5kX2V2 dGNobl9pbml0X2V4Y2x1c2l2ZSh4Y19pbnRlcmZhY2UgKnhjaCwgeGVuZXZ0Y2huX2hhbmRsZSAq eGNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb21pZCwgaW50 IHBvcnQsIGludCAqbG9ja2ZkKQogewogICAgIGludCBzdXNwZW5kX2V2dGNobjsKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhsL01ha2VmaWxlIGIvdG9vbHMvbGlieGwvTWFrZWZpbGUKaW5kZXggMmFi YWUwYy4uMTBiMTc0MSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvTWFrZWZpbGUKKysrIGIvdG9v bHMvbGlieGwvTWFrZWZpbGUKQEAgLTIwLDEyICsyMCwxMyBAQCBMSUJVVUlEX0xJQlMgKz0gLWx1 dWlkCiBlbmRpZgogCiBMSUJYTF9MSUJTID0KLUxJQlhMX0xJQlMgPSAkKExETElCU19saWJ4ZW50 b29sbG9nKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJ QlNfbGlieGVuc3RvcmUpICQoTERMSUJTX2xpYmJsa3RhcGN0bCkgJChQVFlGVU5DU19MSUJTKSAk KExJQlVVSURfTElCUykKK0xJQlhMX0xJQlMgPSAkKExETElCU19saWJ4ZW50b29sbG9nKSAkKExE TElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1 ZXN0KSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChMRExJQlNfbGliYmxrdGFwY3RsKSAkKFBUWUZV TkNTX0xJQlMpICQoTElCVVVJRF9MSUJTKQogaWZlcSAoJChDT05GSUdfUkVNVVNfTkVUQlVGKSx5 KQogTElCWExfTElCUyArPSAkKExJQk5MM19MSUJTKQogZW5kaWYKIAogQ0ZMQUdTX0xJQlhMICs9 ICQoQ0ZMQUdTX2xpYnhlbnRvb2xsb2cpCitDRkxBR1NfTElCWEwgKz0gJChDRkxBR1NfbGlieGVu ZXZ0Y2huKQogQ0ZMQUdTX0xJQlhMICs9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCiBDRkxBR1NfTElC WEwgKz0gJChDRkxBR1NfbGlieGVuZ3Vlc3QpCiBDRkxBR1NfTElCWEwgKz0gJChDRkxBR1NfbGli eGVuc3RvcmUpCkBAIC0xNTksNyArMTYwLDcgQEAgJChYRU5fSU5JVF9ET00wX09CSlMpOiBDRkxB R1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkKICQoWEVOX0lOSVRfRE9NMF9PQkpTKTogQ0ZMQUdT ICs9ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKQogCiBTQVZFX0hFTFBFUl9PQkpTID0gbGlieGxfc2F2 ZV9oZWxwZXIubyBfbGlieGxfc2F2ZV9tc2dzX2hlbHBlci5vCi0kKFNBVkVfSEVMUEVSX09CSlMp OiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkKKyQoU0FWRV9IRUxQRVJfT0JKUyk6IENG TEFHUyArPSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiAKIFBL R19DT05GSUcgPSB4ZW5saWdodC5wYyB4bHV0aWwucGMKIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGwvbGlieGwuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmMKaW5kZXggYmQzYWFjOC4uOWYzMTUzYiAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGwuYworKysgYi90b29scy9saWJ4bC9saWJ4bC5j CkBAIC0xODYsNyArMTg2LDcgQEAgaW50IGxpYnhsX2N0eF9mcmVlKGxpYnhsX2N0eCAqY3R4KQog ICAgIGlmIChjdHgtPnhjaCkgeGNfaW50ZXJmYWNlX2Nsb3NlKGN0eC0+eGNoKTsKICAgICBsaWJ4 bF92ZXJzaW9uX2luZm9fZGlzcG9zZSgmY3R4LT52ZXJzaW9uX2luZm8pOwogICAgIGlmIChjdHgt PnhzaCkgeHNfZGFlbW9uX2Nsb3NlKGN0eC0+eHNoKTsKLSAgICBpZiAoY3R4LT54Y2UpIHhjX2V2 dGNobl9jbG9zZShjdHgtPnhjZSk7CisgICAgaWYgKGN0eC0+eGNlKSB4ZW5ldnRjaG5fY2xvc2Uo Y3R4LT54Y2UpOwogCiAgICAgbGlieGxfX3BvbGxlcl9wdXQoY3R4LCBjdHgtPnBvbGxlcl9hcHAp OwogICAgIGN0eC0+cG9sbGVyX2FwcCA9IE5VTEw7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9s aWJ4bF9kb21fc3VzcGVuZC5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3BlbmQuYwppbmRl eCA0Y2MwMWFkLi5hMmU4ZDg2IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kb21fc3Vz cGVuZC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5kLmMKQEAgLTEwNyw5ICsx MDcsOSBAQCBzdGF0aWMgdm9pZCBkb21haW5fc3VzcGVuZF9jYWxsYmFja19jb21tb24obGlieGxf X2VnYyAqZWdjLAogICAgIGlmICgoaHZtX3Nfc3RhdGUgPT0gMCkgJiYgKGRzcy0+Z3Vlc3RfZXZ0 Y2huLnBvcnQgPj0gMCkpIHsKICAgICAgICAgTE9HKERFQlVHLCAiaXNzdWluZyAlcyBzdXNwZW5k IHJlcXVlc3QgdmlhIGV2ZW50IGNoYW5uZWwiLAogICAgICAgICAgICAgZHNzLT5odm0gPyAiUFZI Vk0iIDogIlBWIik7Ci0gICAgICAgIHJldCA9IHhjX2V2dGNobl9ub3RpZnkoQ1RYLT54Y2UsIGRz cy0+Z3Vlc3RfZXZ0Y2huLnBvcnQpOworICAgICAgICByZXQgPSB4ZW5ldnRjaG5fbm90aWZ5KENU WC0+eGNlLCBkc3MtPmd1ZXN0X2V2dGNobi5wb3J0KTsKICAgICAgICAgaWYgKHJldCA8IDApIHsK LSAgICAgICAgICAgIExPRyhFUlJPUiwgInhjX2V2dGNobl9ub3RpZnkgZmFpbGVkIHJldD0lZCIs IHJldCk7CisgICAgICAgICAgICBMT0coRVJST1IsICJ4ZW5ldnRjaG5fbm90aWZ5IGZhaWxlZCBy ZXQ9JWQiLCByZXQpOwogICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwogICAgICAgICAgICAg Z290byBlcnI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2V2ZW50 LmMgYi90b29scy9saWJ4bC9saWJ4bF9ldmVudC5jCmluZGV4IDEzOWU0OWEuLjg1NDgzNjUgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2V2ZW50LmMKKysrIGIvdG9vbHMvbGlieGwvbGli eGxfZXZlbnQuYwpAQCAtNzM5LDcgKzczOSw3IEBAIHN0YXRpYyB2b2lkIGV2dGNobl9mZF9jYWxs YmFjayhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9mZCAqZXYsCiAgICAgICAgIC8qIE9LLCB0 aGF0J3MgdGhhdCB3b3JrYXJvdW5kIGRvbmUuICBXZSBjYW4gYWN0dWFsbHkgY2hlY2sgZm9yCiAg ICAgICAgICAqIHdvcmsgZm9yIHVzIHRvIGRvOiAqLwogCi0gICAgICAgIHBvcnQgPSB4Y19ldnRj aG5fcGVuZGluZyhDVFgtPnhjZSk7CisgICAgICAgIHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyhD VFgtPnhjZSk7CiAgICAgICAgIGlmIChwb3J0IDwgMCkgewogICAgICAgICAgICAgaWYgKGVycm5v ID09IEVBR0FJTikKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTc2NSwyMCArNzY1LDIwIEBA IHN0YXRpYyB2b2lkIGV2dGNobl9mZF9jYWxsYmFjayhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19l dl9mZCAqZXYsCiB9CiAKIGludCBsaWJ4bF9fY3R4X2V2dGNobl9pbml0KGxpYnhsX19nYyAqZ2Mp IHsKLSAgICB4Y19ldnRjaG4gKnhjZTsKKyAgICB4ZW5ldnRjaG5faGFuZGxlICp4Y2U7CiAgICAg aW50IHJjLCBmZDsKIAogICAgIGlmIChDVFgtPnhjZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg ICB4Y2UgPSB4Y19ldnRjaG5fb3BlbihDVFgtPmxnLCAwKTsKKyAgICB4Y2UgPSB4ZW5ldnRjaG5f b3BlbihDVFgtPmxnLCAwKTsKICAgICBpZiAoIXhjZSkgewogICAgICAgICBMT0dFKEVSUk9SLCJj YW5ub3Qgb3BlbiBsaWJ4YyBldnRjaG4gaGFuZGxlIik7CiAgICAgICAgIHJjID0gRVJST1JfRkFJ TDsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgZmQgPSB4Y19ldnRjaG5fZmQoeGNl KTsKKyAgICBmZCA9IHhlbmV2dGNobl9mZCh4Y2UpOwogICAgIGFzc2VydChmZCA+PSAwKTsKIAog ICAgIHJjID0gbGlieGxfZmRfc2V0X25vbmJsb2NrKENUWCwgZmQsIDEpOwpAQCAtNzg4LDcgKzc4 OCw3IEBAIGludCBsaWJ4bF9fY3R4X2V2dGNobl9pbml0KGxpYnhsX19nYyAqZ2MpIHsKICAgICBy ZXR1cm4gMDsKIAogIG91dDoKLSAgICB4Y19ldnRjaG5fY2xvc2UoeGNlKTsKKyAgICB4ZW5ldnRj aG5fY2xvc2UoeGNlKTsKICAgICByZXR1cm4gcmM7CiB9CiAKQEAgLTgxMCwxNCArODEwLDE0IEBA IGludCBsaWJ4bF9fZXZfZXZ0Y2huX3dhaXQobGlieGxfX2djICpnYywgbGlieGxfX2V2X2V2dGNo biAqZXZldikKIAogICAgIGlmICghbGlieGxfX2V2X2ZkX2lzcmVnaXN0ZXJlZCgmQ1RYLT5ldnRj aG5fZWZkKSkgewogICAgICAgICByYyA9IGxpYnhsX19ldl9mZF9yZWdpc3RlcihnYywgJkNUWC0+ ZXZ0Y2huX2VmZCwgZXZ0Y2huX2ZkX2NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB4Y19ldnRjaG5fZmQoQ1RYLT54Y2UpLCBQT0xMSU4pOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB4ZW5ldnRjaG5fZmQoQ1RYLT54Y2UpLCBQT0xMSU4pOwog ICAgICAgICBpZiAocmMpIGdvdG8gb3V0OwogICAgIH0KIAogICAgIGlmIChldmV2LT53YWl0aW5n KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHIgPSB4Y19ldnRjaG5fdW5tYXNrKENUWC0+eGNl LCBldmV2LT5wb3J0KTsKKyAgICByID0geGVuZXZ0Y2huX3VubWFzayhDVFgtPnhjZSwgZXZldi0+ cG9ydCk7CiAgICAgaWYgKHIpIHsKICAgICAgICAgTE9HRShFUlJPUiwiY2Fubm90IHVubWFzayBl dmVudCBjaGFubmVsICVkIixldmV2LT5wb3J0KTsKICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCBiL3Rvb2xzL2xpYnhsL2xp YnhsX2ludGVybmFsLmgKaW5kZXggZDJiZGEwYS4uZmEwMWRkNyAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGwvbGlieGxfaW50ZXJuYWwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5o CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KICNpbmNsdWRlIDxzeXMv aW9jdGwuaD4KIAorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgogI2luY2x1ZGUgPHhlbnN0b3JlLmg+ CiAjaW5jbHVkZSA8eGVuY3RybC5oPgogI2luY2x1ZGUgPHhlbmd1ZXN0Lmg+CkBAIC00NDEsNyAr NDQyLDcgQEAgc3RydWN0IGxpYnhsX19jdHggewogICAgIHVpbnQzMl90IHdhdGNoX2NvdW50ZXI7 IC8qIGhlbHBzIGRpc2FtYmlndWF0ZSBzbG90IHJldXNlICovCiAgICAgbGlieGxfX2V2X2ZkIHdh dGNoX2VmZDsKIAotICAgIHhjX2V2dGNobiAqeGNlOyAvKiB3YWl0aW5nIG11c3QgYmUgZG9uZSBv bmx5IHdpdGggbGlieGxfX2V2X2V2dGNobiogKi8KKyAgICB4ZW5ldnRjaG5faGFuZGxlICp4Y2U7 IC8qIHdhaXRpbmcgbXVzdCBiZSBkb25lIG9ubHkgd2l0aCBsaWJ4bF9fZXZfZXZ0Y2huKiAqLwog ICAgIExJQlhMX0xJU1RfSEVBRCgsIGxpYnhsX19ldl9ldnRjaG4pIGV2dGNobnNfd2FpdGluZzsK ICAgICBsaWJ4bF9fZXZfZmQgZXZ0Y2huX2VmZDsKIApAQCAtOTE2LDcgKzkxNyw3IEBAIHN0YXRp YyBpbmxpbmUgaW50IGxpYnhsX19ldl94c3dhdGNoX2lzcmVnaXN0ZXJlZChjb25zdCBsaWJ4bF9f ZXZfeHN3YXRjaCAqeHcpCiAgKiBXaGVuIHRoZSBldmVudCBpcyBzaWduYWxlZCB0aGVuIHRoZSBj YWxsYmFjayB3aWxsIGJlIG1hZGUsIG9uY2UuCiAgKiBUaGVuIHlvdSBtdXN0IGNhbGwgbGlieGxf X2V2X2V2dGNobl93YWl0IGFnYWluLCBpZiBkZXNpcmVkLgogICoKLSAqIFlvdSBtdXN0IE5PVCBj YWxsIHhjX2V2dGNobl91bm1hc2suICB3YWl0IHdpbGwgZG8gdGhhdCBmb3IgeW91LgorICogWW91 IG11c3QgTk9UIGNhbGwgeGVuZXZ0Y2huX3VubWFzay4gIHdhaXQgd2lsbCBkbyB0aGF0IGZvciB5 b3UuCiAgKgogICogQ2FsbGluZyBsaWJ4bF9fZXZfZXZ0Y2huX2NhbmNlbCB3aWxsIGFycmFuZ2Ug Zm9yIGxpYnhsIHRvIGRpc3JlZ2FyZAogICogZnV0dXJlIG9jY3VycmVuY2VzIG9mIGV2ZW50LiAg Qm90aCBsaWJ4bF9fZXZfZXZ0Y2huX3dhaXQgYW5kCmRpZmYgLS1naXQgYS90b29scy9taXNjL01h a2VmaWxlIGIvdG9vbHMvbWlzYy9NYWtlZmlsZQppbmRleCBjNDQ5MGYzLi5jZjZhNDc1IDEwMDY0 NAotLS0gYS90b29scy9taXNjL01ha2VmaWxlCisrKyBiL3Rvb2xzL21pc2MvTWFrZWZpbGUKQEAg LTQsNiArNCw3IEBAIGluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvUnVsZXMubWsKIENGTEFHUyAr PSAtV2Vycm9yCiAjIEluY2x1ZGUgY29uZmlndXJlIG91dHB1dCAoY29uZmlnLmgpCiBDRkxBR1Mg Kz0gLWluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvY29uZmlnLmgKK0NGTEFHUyArPSAkKENGTEFH U19saWJ4ZW5ldnRjaG4pCiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuY3RybCkKIENGTEFHUyAr PSAkKENGTEFHU194ZW5pbmNsdWRlKQogQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbnN0b3JlKQpA QCAtODgsMTggKzg5LDE4IEBAIHhlbmxvY2twcm9mOiB4ZW5sb2NrcHJvZi5vCiAjIHhlbi1ocHRv b2wgaW5jb3JyZWN0bHkgdXNlcyBsaWJ4YyBpbnRlcm5hbHMKIHhlbi1ocHRvb2wubzogQ0ZMQUdT ICs9IC1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMKIHhlbi1ocHRvb2w6IHhlbi1ocHRvb2wubwot CSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNf bGlieGVuZ3Vlc3QpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKEFQUEVORF9MREZMQUdTKQorCSQo Q0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJQlNfbGlieGVuZXZ0Y2huKSAkKExETElCU19s aWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJQlNfbGlieGVuc3RvcmUpICQo QVBQRU5EX0xERkxBR1MpCiAKICMgeGVuLW1mbmR1bXAgaW5jb3JyZWN0bHkgdXNlcyBsaWJ4YyBp bnRlcm5hbHMKIHhlbi1tZm5kdW1wLm86IENGTEFHUyArPSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xp YnhjCiB4ZW4tbWZuZHVtcDogeGVuLW1mbmR1bXAubwotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAg JDwgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuZ3Vlc3QpICQoQVBQRU5EX0xE RkxBR1MpCisJJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19saWJ4ZW5ldnRjaG4p ICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1ZXN0KSAkKEFQUEVORF9MREZM QUdTKQogCiB4ZW53YXRjaGRvZ2Q6IHhlbndhdGNoZG9nZC5vCiAJJChDQykgJChMREZMQUdTKSAt byAkQCAkPCAkKExETElCU19saWJ4ZW5jdHJsKSAkKEFQUEVORF9MREZMQUdTKQogCiB4ZW4tbG93 bWVtZDogeGVuLWxvd21lbWQubwotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJQlNf bGlieGVuY3RybCkgJChMRExJQlNfbGlieGVuc3RvcmUpICQoQVBQRU5EX0xERkxBR1MpCisJJChD QykgJChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xp YnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbnN0b3JlKSAkKEFQUEVORF9MREZMQUdTKQogCiBndHJh Y2V2aWV3OiBndHJhY2V2aWV3Lm8KIAkkKENDKSAkKExERkxBR1MpIC1vICRAICQ8ICQoQ1VSU0VT X0xJQlMpICQoVElORk9fTElCUykgJChBUFBFTkRfTERGTEFHUykKZGlmZiAtLWdpdCBhL3Rvb2xz L21pc2MveGVuLWhwdG9vbC5jIGIvdG9vbHMvbWlzYy94ZW4taHB0b29sLmMKaW5kZXggYzc1NjFh OS4uZWJjYzllOCAxMDA2NDQKLS0tIGEvdG9vbHMvbWlzYy94ZW4taHB0b29sLmMKKysrIGIvdG9v bHMvbWlzYy94ZW4taHB0b29sLmMKQEAgLTEsMyArMSw0IEBACisjaW5jbHVkZSA8eGVuZXZ0Y2hu Lmg+CiAjaW5jbHVkZSA8eGVuY3RybC5oPgogI2luY2x1ZGUgPHhjX3ByaXZhdGUuaD4KICNpbmNs dWRlIDx4Y19jb3JlLmg+CkBAIC05OCw3ICs5OSw3IEBAIHN0YXRpYyBpbnQgaHBfbWVtX3F1ZXJ5 X2Z1bmMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0 aWMgaW50IHN1c3BlbmRfZ3Vlc3QoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCBp bnQgZG9taWQsCitzdGF0aWMgaW50IHN1c3BlbmRfZ3Vlc3QoeGNfaW50ZXJmYWNlICp4Y2gsIHhl bmV2dGNobl9oYW5kbGUgKnhjZSwgaW50IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAg IGludCAqZXZ0Y2huLCBpbnQgKmxvY2tmZCkKIHsKICAgICBpbnQgcG9ydCwgcmMsIHN1c3BlbmRf ZXZ0Y2huID0gLTE7CkBAIC0xMjMsNyArMTI0LDcgQEAgc3RhdGljIGludCBzdXNwZW5kX2d1ZXN0 KHhjX2ludGVyZmFjZSAqeGNoLCB4Y19ldnRjaG4gKnhjZSwgaW50IGRvbWlkLAogICAgIH0KICAg ICAqZXZ0Y2huID0gc3VzcGVuZF9ldnRjaG47CiAKLSAgICByYyA9IHhjX2V2dGNobl9ub3RpZnko eGNlLCBzdXNwZW5kX2V2dGNobik7CisgICAgcmMgPSB4ZW5ldnRjaG5fbm90aWZ5KHhjZSwgc3Vz cGVuZF9ldnRjaG4pOwogICAgIGlmIChyYyA8IDApCiAgICAgewogICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIkZhaWxlZCB0byBub3RpZnkgc3VzcGVuZCBjaGFubmVsOiBlcnJubyAlZFxuIiwgcmMp OwpAQCAtMTk4LDggKzE5OSw4IEBAIHN0YXRpYyBpbnQgaHBfbWVtX29mZmxpbmVfZnVuYyhpbnQg YXJnYywgY2hhciAqYXJndltdKQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cyAmIFBH X09GRkxJTkVfT1dORUQpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBp bnQgcmVzdWx0LCBzdXNwZW5kX2V2dGNobiA9IC0xLCBzdXNwZW5kX2xvY2tmZCA9IC0xOwotICAg ICAgICAgICAgICAgICAgICB4Y19ldnRjaG4gKnhjZTsKLSAgICAgICAgICAgICAgICAgICAgeGNl ID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHhlbmV2dGNo bl9oYW5kbGUgKnhjZTsKKyAgICAgICAgICAgICAgICAgICAgeGNlID0geGVuZXZ0Y2huX29wZW4o TlVMTCwgMCk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKHhjZSA9PSBOVUxMKQogICAgICAg ICAgICAgICAgICAgICB7CkBAIC0yMTQsNyArMjE1LDcgQEAgc3RhdGljIGludCBocF9tZW1fb2Zm bGluZV9mdW5jKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHN1c3Bl bmQgZ3Vlc3QgJWQgZm9yIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIG1mbiAl bHhcbiIsIGRvbWlkLCBtZm4pOwotICAgICAgICAgICAgICAgICAgICAgICAgeGNfZXZ0Y2huX2Ns b3NlKHhjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB4ZW5ldnRjaG5fY2xvc2UoeGNlKTsK ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICAg fQogCkBAIC0yMzgsNyArMjM5LDcgQEAgc3RhdGljIGludCBocF9tZW1fb2ZmbGluZV9mdW5jKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgICAgICAgICAgICAgIHhjX2RvbWFpbl9yZXN1 bWUoeGNoLCBkb21pZCwgMSk7CiAgICAgICAgICAgICAgICAgICAgIHhjX3N1c3BlbmRfZXZ0Y2hu X3JlbGVhc2UoeGNoLCB4Y2UsIGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN1c3BlbmRfZXZ0Y2huLCAmc3VzcGVuZF9sb2NrZmQpOwotICAgICAg ICAgICAgICAgICAgICB4Y19ldnRjaG5fY2xvc2UoeGNlKTsKKyAgICAgICAgICAgICAgICAgICAg eGVuZXZ0Y2huX2Nsb3NlKHhjZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvdG9vbHMvbWlzYy94ZW4tbG93bWVt ZC5jIGIvdG9vbHMvbWlzYy94ZW4tbG93bWVtZC5jCmluZGV4IDgyZmZkNzUuLjMyMDA0MDQgMTAw NjQ0Ci0tLSBhL3Rvb2xzL21pc2MveGVuLWxvd21lbWQuYworKysgYi90b29scy9taXNjL3hlbi1s b3dtZW1kLmMKQEAgLTQsMjIgKzQsMjMgQEAKICAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNp bmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNsdWRlIDx4ZW5jdHJsLmg+CiAjaW5jbHVkZSA8eGVu c3RvcmUuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogc3Rh dGljIGV2dGNobl9wb3J0X3QgdmlycV9wb3J0ICAgICAgPSAtMTsKLXN0YXRpYyB4Y19ldnRjaG4g KnhjZV9oYW5kbGUgICAgICAgID0gTlVMTDsKK3N0YXRpYyB4ZW5ldnRjaG5faGFuZGxlICp4Y2Vf aGFuZGxlID0gTlVMTDsKIHN0YXRpYyB4Y19pbnRlcmZhY2UgKnhjaCAgICAgICAgICAgID0gTlVM TDsKIHN0YXRpYyBzdHJ1Y3QgeHNfaGFuZGxlICp4c19oYW5kbGUgID0gTlVMTDsKIAogdm9pZCBj bGVhbnVwKHZvaWQpCiB7CiAgICAgaWYgKHZpcnFfcG9ydCA+IC0xKQotICAgICAgICB4Y19ldnRj aG5fdW5iaW5kKHhjZV9oYW5kbGUsIHZpcnFfcG9ydCk7CisgICAgICAgIHhlbmV2dGNobl91bmJp bmQoeGNlX2hhbmRsZSwgdmlycV9wb3J0KTsKICAgICBpZiAoeGNlX2hhbmRsZSkKLSAgICAgICAg eGNfZXZ0Y2huX2Nsb3NlKHhjZV9oYW5kbGUpOworICAgICAgICB4ZW5ldnRjaG5fY2xvc2UoeGNl X2hhbmRsZSk7CiAgICAgaWYgKHhjaCkKICAgICAgICAgeGNfaW50ZXJmYWNlX2Nsb3NlKHhjaCk7 CiAgICAgaWYgKHhzX2hhbmRsZSkKQEAgLTk0LDcgKzk1LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0JeGNlX2hhbmRsZSA9 IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworCXhjZV9oYW5kbGUgPSB4ZW5ldnRjaG5fb3BlbihO VUxMLCAwKTsKIAlpZiAoeGNlX2hhbmRsZSA9PSBOVUxMKQogICAgIHsKICAgICAgICAgcGVycm9y KCJGYWlsZWQgdG8gb3BlbiBldnRjaG4gZGV2aWNlIik7CkBAIC0xMDgsNyArMTA5LDcgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgcmV0dXJuIDM7CiAgICAgfQog Ci0JaWYgKChyYyA9IHhjX2V2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9FTk9NRU0p KSA9PSAtMSkKKwlpZiAoKHJjID0geGVuZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJR X0VOT01FTSkpID09IC0xKQogICAgIHsKICAgICAgICAgcGVycm9yKCJGYWlsZWQgdG8gYmluZCB0 byBkb21haW4gZXhjZXB0aW9uIHZpcnEgcG9ydCIpOwogICAgICAgICByZXR1cm4gNDsKQEAgLTEy MCw3ICsxMjEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIHsKICAg ICAgICAgZXZ0Y2huX3BvcnRfdCBwb3J0OwogCi0gICAgICAgIGlmICgocG9ydCA9IHhjX2V2dGNo bl9wZW5kaW5nKHhjZV9oYW5kbGUpKSA9PSAtMSkKKyAgICAgICAgaWYgKChwb3J0ID0geGVuZXZ0 Y2huX3BlbmRpbmcoeGNlX2hhbmRsZSkpID09IC0xKQogICAgICAgICB7CiAgICAgICAgICAgICBw ZXJyb3IoIkZhaWxlZCB0byBsaXN0ZW4gZm9yIHBlbmRpbmcgZXZlbnQgY2hhbm5lbCIpOwogICAg ICAgICAgICAgcmV0dXJuIDU7CkBAIC0xMzQsNyArMTM1LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgICAgIHJldHVybiA2OwogICAgICAgICB9CiAKLSAgICAg ICAgaWYgKHhjX2V2dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCkgPT0gLTEpCisgICAgICAg IGlmICh4ZW5ldnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpID09IC0xKQogICAgICAgICB7 CiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byB1bm1hc2sgcG9ydCIpOwogICAgICAgICAg ICAgcmV0dXJuIDc7CmRpZmYgLS1naXQgYS90b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL01ha2Vm aWxlIGIvdG9vbHMvb2NhbWwvbGlicy9ldmVudGNobi9NYWtlZmlsZQppbmRleCAyZDhkNjE4Li4x NTRlZmQ0IDEwMDY0NAotLS0gYS90b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL01ha2VmaWxlCisr KyBiL3Rvb2xzL29jYW1sL2xpYnMvZXZlbnRjaG4vTWFrZWZpbGUKQEAgLTIsMTMgKzIsMTMgQEAg VE9QTEVWRUw9JChDVVJESVIpLy4uLy4uCiBYRU5fUk9PVD0kKFRPUExFVkVMKS8uLi8uLgogaW5j bHVkZSAkKFRPUExFVkVMKS9jb21tb24ubWFrZQogCi1DRkxBR1MgKz0gJChDRkxBR1NfbGlieGVu Y3RybCkgJChDRkxBR1NfeGVuaW5jbHVkZSkKK0NGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ldnRj aG4pICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCiAKIE9CSlMgPSB4ZW5ldmVudGNobgogSU5URiA9ICQo Zm9yZWFjaCBvYmosICQoT0JKUyksJChvYmopLmNtaSkKIExJQlMgPSB4ZW5ldmVudGNobi5jbWEg eGVuZXZlbnRjaG4uY214YQogCi1MSUJTX3hlbmV2ZW50Y2huID0gJChMRExJQlNfbGlieGVuY3Ry bCkKK0xJQlNfeGVuZXZlbnRjaG4gPSAkKExETElCU19saWJ4ZW5ldnRjaG4pCiAKIGFsbDogJChJ TlRGKSAkKExJQlMpICQoUFJPR1JBTVMpCiAKZGlmZiAtLWdpdCBhL3Rvb2xzL29jYW1sL2xpYnMv ZXZlbnRjaG4veGVuZXZlbnRjaG5fc3R1YnMuYyBiL3Rvb2xzL29jYW1sL2xpYnMvZXZlbnRjaG4v eGVuZXZlbnRjaG5fc3R1YnMuYwppbmRleCA1OTM5ZTdjLi5jMmQ0NzM3IDEwMDY0NAotLS0gYS90 b29scy9vY2FtbC9saWJzL2V2ZW50Y2huL3hlbmV2ZW50Y2huX3N0dWJzLmMKKysrIGIvdG9vbHMv b2NhbWwvbGlicy9ldmVudGNobi94ZW5ldmVudGNobl9zdHVicy5jCkBAIC0yNCw3ICsyNCw3IEBA CiAjaW5jbHVkZSA8eGVuL3N5c2N0bC5oPgogI2luY2x1ZGUgPHhlbi94ZW4uaD4KICNpbmNsdWRl IDx4ZW4vc3lzL2V2dGNobi5oPgotI2luY2x1ZGUgPHhlbmN0cmwuaD4KKyNpbmNsdWRlIDx4ZW5l dnRjaG4uaD4KIAogI2RlZmluZSBDQU1MX05BTUVfU1BBQ0UKICNpbmNsdWRlIDxjYW1sL21sdmFs dWVzLmg+CkBAIC0zNCwxNCArMzQsMTQgQEAKICNpbmNsdWRlIDxjYW1sL2NhbGxiYWNrLmg+CiAj aW5jbHVkZSA8Y2FtbC9mYWlsLmg+CiAKLSNkZWZpbmUgX0goX19oKSAoKHhjX2V2dGNobiAqKShf X2gpKQorI2RlZmluZSBfSChfX2gpICgoeGVuZXZ0Y2huX2hhbmRsZSAqKShfX2gpKQogCiBDQU1M cHJpbSB2YWx1ZSBzdHViX2V2ZW50Y2huX2luaXQodm9pZCkKIHsKIAlDQU1McGFyYW0wKCk7CiAJ Q0FNTGxvY2FsMShyZXN1bHQpOwogCi0JeGNfZXZ0Y2huICp4Y2UgPSB4Y19ldnRjaG5fb3BlbihO VUxMLCBYQ19PUEVORkxBR19OT05fUkVFTlRSQU5UKTsKKwl4ZW5ldnRjaG5faGFuZGxlICp4Y2Ug PSB4ZW5ldnRjaG5fb3BlbihOVUxMLCAwKTsKIAlpZiAoeGNlID09IE5VTEwpCiAJCWNhbWxfZmFp bHdpdGgoIm9wZW4gZmFpbGVkIik7CiAKQEAgLTU1LDcgKzU1LDcgQEAgQ0FNTHByaW0gdmFsdWUg c3R1Yl9ldmVudGNobl9mZCh2YWx1ZSB4Y2UpCiAJQ0FNTGxvY2FsMShyZXN1bHQpOwogCWludCBm ZDsKIAotCWZkID0geGNfZXZ0Y2huX2ZkKF9IKHhjZSkpOworCWZkID0geGVuZXZ0Y2huX2ZkKF9I KHhjZSkpOwogCWlmIChmZCA9PSAtMSkKIAkJY2FtbF9mYWlsd2l0aCgiZXZ0Y2huIGZkIGZhaWxl ZCIpOwogCkBAIC02OSw3ICs2OSw3IEBAIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRjaG5fbm90 aWZ5KHZhbHVlIHhjZSwgdmFsdWUgcG9ydCkKIAlDQU1McGFyYW0yKHhjZSwgcG9ydCk7CiAJaW50 IHJjOwogCi0JcmMgPSB4Y19ldnRjaG5fbm90aWZ5KF9IKHhjZSksIEludF92YWwocG9ydCkpOwor CXJjID0geGVuZXZ0Y2huX25vdGlmeShfSCh4Y2UpLCBJbnRfdmFsKHBvcnQpKTsKIAlpZiAocmMg PT0gLTEpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNobiBub3RpZnkgZmFpbGVkIik7CiAKQEAgLTgz LDcgKzgzLDcgQEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl9ldmVudGNobl9iaW5kX2ludGVyZG9tYWlu KHZhbHVlIHhjZSwgdmFsdWUgZG9taWQsCiAJQ0FNTGxvY2FsMShwb3J0KTsKIAlldnRjaG5fcG9y dF9vcl9lcnJvcl90IHJjOwogCi0JcmMgPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbihfSCh4 Y2UpLCBJbnRfdmFsKGRvbWlkKSwgSW50X3ZhbChyZW1vdGVfcG9ydCkpOworCXJjID0geGVuZXZ0 Y2huX2JpbmRfaW50ZXJkb21haW4oX0goeGNlKSwgSW50X3ZhbChkb21pZCksIEludF92YWwocmVt b3RlX3BvcnQpKTsKIAlpZiAocmMgPT0gLTEpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNobiBiaW5k X2ludGVyZG9tYWluIGZhaWxlZCIpOwogCXBvcnQgPSBWYWxfaW50KHJjKTsKQEAgLTk3LDcgKzk3 LDcgQEAgQ0FNTHByaW0gdmFsdWUgc3R1Yl9ldmVudGNobl9iaW5kX2RvbV9leGNfdmlycSh2YWx1 ZSB4Y2UpCiAJQ0FNTGxvY2FsMShwb3J0KTsKIAlldnRjaG5fcG9ydF9vcl9lcnJvcl90IHJjOwog Ci0JcmMgPSB4Y19ldnRjaG5fYmluZF92aXJxKF9IKHhjZSksIFZJUlFfRE9NX0VYQyk7CisJcmMg PSB4ZW5ldnRjaG5fYmluZF92aXJxKF9IKHhjZSksIFZJUlFfRE9NX0VYQyk7CiAJaWYgKHJjID09 IC0xKQogCQljYW1sX2ZhaWx3aXRoKCJldnRjaG4gYmluZF9kb21fZXhjX3ZpcnEgZmFpbGVkIik7 CiAJcG9ydCA9IFZhbF9pbnQocmMpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENBTUxwcmltIHZhbHVl IHN0dWJfZXZlbnRjaG5fdW5iaW5kKHZhbHVlIHhjZSwgdmFsdWUgcG9ydCkKIAlDQU1McGFyYW0y KHhjZSwgcG9ydCk7CiAJaW50IHJjOwogCi0JcmMgPSB4Y19ldnRjaG5fdW5iaW5kKF9IKHhjZSks IEludF92YWwocG9ydCkpOworCXJjID0geGVuZXZ0Y2huX3VuYmluZChfSCh4Y2UpLCBJbnRfdmFs KHBvcnQpKTsKIAlpZiAocmMgPT0gLTEpCiAJCWNhbWxfZmFpbHdpdGgoImV2dGNobiB1bmJpbmQg ZmFpbGVkIik7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBDQU1McHJpbSB2YWx1ZSBzdHViX2V2ZW50 Y2huX3BlbmRpbmcodmFsdWUgeGNlKQogCUNBTUxsb2NhbDEocmVzdWx0KTsKIAlldnRjaG5fcG9y dF9vcl9lcnJvcl90IHBvcnQ7CiAKLQlwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoX0goeGNlKSk7 CisJcG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKF9IKHhjZSkpOwogCWlmIChwb3J0ID09IC0xKQog CQljYW1sX2ZhaWx3aXRoKCJldnRjaG4gcGVuZGluZyBmYWlsZWQiKTsKIAlyZXN1bHQgPSBWYWxf aW50KHBvcnQpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIENBTUxwcmltIHZhbHVlIHN0dWJfZXZlbnRj aG5fdW5tYXNrKHZhbHVlIHhjZSwgdmFsdWUgX3BvcnQpCiAJZXZ0Y2huX3BvcnRfdCBwb3J0Owog CiAJcG9ydCA9IEludF92YWwoX3BvcnQpOwotCWlmICh4Y19ldnRjaG5fdW5tYXNrKF9IKHhjZSks IHBvcnQpKQorCWlmICh4ZW5ldnRjaG5fdW5tYXNrKF9IKHhjZSksIHBvcnQpKQogCQljYW1sX2Zh aWx3aXRoKCJldnRjaG4gdW5tYXNrIGZhaWxlZCIpOwogCUNBTUxyZXR1cm4oVmFsX3VuaXQpOwog fQpkaWZmIC0tZ2l0IGEvdG9vbHMvcHl0aG9uL3NldHVwLnB5IGIvdG9vbHMvcHl0aG9uL3NldHVw LnB5CmluZGV4IDk3NzFjYzQuLmNlMzE3YjQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3B5dGhvbi9zZXR1 cC5weQorKysgYi90b29scy9weXRob24vc2V0dXAucHkKQEAgLTgsMTMgKzgsMTggQEAgZXh0cmFf Y29tcGlsZV9hcmdzICA9IFsgIi1mbm8tc3RyaWN0LWFsaWFzaW5nIiwgIi1XZXJyb3IiIF0KIAog UEFUSF9YRU4gICAgICA9IFhFTl9ST09UICsgIi90b29scy9pbmNsdWRlIgogUEFUSF9MSUJYRU5U T09MTE9HID0gWEVOX1JPT1QgKyAiL3Rvb2xzL2xpYnMvdG9vbGxvZyIKK1BBVEhfTElCWEVORVZU Q0hOID0gWEVOX1JPT1QgKyAiL3Rvb2xzL2xpYnMvZXZ0Y2huIgogUEFUSF9MSUJYQyAgICA9IFhF Tl9ST09UICsgIi90b29scy9saWJ4YyIKIFBBVEhfTElCWEwgICAgPSBYRU5fUk9PVCArICIvdG9v bHMvbGlieGwiCiBQQVRIX1hFTlNUT1JFID0gWEVOX1JPT1QgKyAiL3Rvb2xzL3hlbnN0b3JlIgog CiB4YyA9IEV4dGVuc2lvbigieGMiLAogICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdz ID0gZXh0cmFfY29tcGlsZV9hcmdzLAotICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzICAgICAg ID0gWyBQQVRIX1hFTiwgUEFUSF9MSUJYRU5UT09MTE9HICsgIi9pbmNsdWRlIiwgUEFUSF9MSUJY QyArICIvaW5jbHVkZSIsICJ4ZW4vbG93bGV2ZWwveGMiIF0sCisgICAgICAgICAgICAgICBpbmNs dWRlX2RpcnMgICAgICAgPSBbIFBBVEhfWEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQQVRIX0xJQlhFTlRPT0xMT0cgKyAiL2luY2x1ZGUiLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRIX0xJQlhFTkVWVENITiArICIvaW5jbHVkZSIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVEhfTElCWEMgKyAiL2lu Y2x1ZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieGVuL2xvd2xl dmVsL3hjIiBdLAogICAgICAgICAgICAgICAgbGlicmFyeV9kaXJzICAgICAgID0gWyBQQVRIX0xJ QlhDIF0sCiAgICAgICAgICAgICAgICBsaWJyYXJpZXMgICAgICAgICAgPSBbICJ4ZW5jdHJsIiwg Inhlbmd1ZXN0IiBdLAogICAgICAgICAgICAgICAgZGVwZW5kcyAgICAgICAgICAgID0gWyBQQVRI X0xJQlhDICsgIi9saWJ4ZW5jdHJsLnNvIiwgUEFUSF9MSUJYQyArICIvbGlieGVuZ3Vlc3Quc28i LCAgIi1XbCwtcnBhdGgtbGluaz0iK1BBVEhfTElCWEVOVE9PTExPRyBdLApkaWZmIC0tZ2l0IGEv dG9vbHMvdGVzdHMveGVuLWFjY2Vzcy9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3RzL3hlbi1hY2Nlc3Mv TWFrZWZpbGUKaW5kZXggZjgxMDU0My4uOTdjZmFlNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdHMv eGVuLWFjY2Vzcy9NYWtlZmlsZQorKysgYi90b29scy90ZXN0cy94ZW4tYWNjZXNzL01ha2VmaWxl CkBAIC01LDYgKzUsNyBAQCBDRkxBR1MgKz0gLVdlcnJvcgogCiBDRkxBR1MgKz0gJChDRkxBR1Nf bGlieGVuY3RybCkKIENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ndWVzdCkKK0NGTEFHUyArPSAk KENGTEFHU19saWJ4ZW5ldnRjaG4pCiBDRkxBR1MgKz0gJChDRkxBR1NfeGVuaW5jbHVkZSkKIAog VEFSR0VUUy15IDo9CkBAIC0yNSw2ICsyNiw2IEBAIGNsZWFuOgogZGlzdGNsZWFuOiBjbGVhbgog CiB4ZW4tYWNjZXNzOiB4ZW4tYWNjZXNzLm8gTWFrZWZpbGUKLQkkKENDKSAtbyAkQCAkPCAkKExE RkxBR1MpICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJTX2xpYnhlbmd1ZXN0KQorCSQoQ0Mp IC1vICRAICQ8ICQoTERGTEFHUykgJChMRExJQlNfbGlieGVuY3RybCkgJChMRExJQlNfbGlieGVu Z3Vlc3QpICQoTERMSUJTX2xpYnhlbmV2dGNobikKIAogLWluY2x1ZGUgJChERVBTKQpkaWZmIC0t Z2l0IGEvdG9vbHMvdGVzdHMveGVuLWFjY2Vzcy94ZW4tYWNjZXNzLmMgYi90b29scy90ZXN0cy94 ZW4tYWNjZXNzL3hlbi1hY2Nlc3MuYwppbmRleCBhNTJjYTZlLi43OTkzOTQ3IDEwMDY0NAotLS0g YS90b29scy90ZXN0cy94ZW4tYWNjZXNzL3hlbi1hY2Nlc3MuYworKysgYi90b29scy90ZXN0cy94 ZW4tYWNjZXNzL3hlbi1hY2Nlc3MuYwpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHN5cy9w b2xsLmg+CiAKICNpbmNsdWRlIDx4ZW5jdHJsLmg+CisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAj aW5jbHVkZSA8eGVuL3ZtX2V2ZW50Lmg+CiAKICNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmlu ZWQoX19hYXJjaDY0X18pCkBAIC01NCw3ICs1NSw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHZtX2V2 ZW50IHsKICAgICBkb21pZF90IGRvbWFpbl9pZDsKLSAgICB4Y19ldnRjaG4gKnhjZV9oYW5kbGU7 CisgICAgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZTsKICAgICBpbnQgcG9ydDsKICAgICB2 bV9ldmVudF9iYWNrX3JpbmdfdCBiYWNrX3Jpbmc7CiAgICAgdWludDMyX3QgZXZ0Y2huX3BvcnQ7 CkBAIC03Nyw5ICs3OCw5IEBAIHN0YXRpYyB2b2lkIGNsb3NlX2hhbmRsZXIoaW50IHNpZykKICAg ICBpbnRlcnJ1cHRlZCA9IHNpZzsKIH0KIAotaW50IHhjX3dhaXRfZm9yX2V2ZW50X29yX3RpbWVv dXQoeGNfaW50ZXJmYWNlICp4Y2gsIHhjX2V2dGNobiAqeGNlLCB1bnNpZ25lZCBsb25nIG1zKQor aW50IHhjX3dhaXRfZm9yX2V2ZW50X29yX3RpbWVvdXQoeGNfaW50ZXJmYWNlICp4Y2gsIHhlbmV2 dGNobl9oYW5kbGUgKnhjZSwgdW5zaWduZWQgbG9uZyBtcykKIHsKLSAgICBzdHJ1Y3QgcG9sbGZk IGZkID0geyAuZmQgPSB4Y19ldnRjaG5fZmQoeGNlKSwgLmV2ZW50cyA9IFBPTExJTiB8IFBPTExF UlIgfTsKKyAgICBzdHJ1Y3QgcG9sbGZkIGZkID0geyAuZmQgPSB4ZW5ldnRjaG5fZmQoeGNlKSwg LmV2ZW50cyA9IFBPTExJTiB8IFBPTExFUlIgfTsKICAgICBpbnQgcG9ydDsKICAgICBpbnQgcmM7 CiAKQEAgLTk1LDE0ICs5NiwxNCBAQCBpbnQgeGNfd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91dCh4 Y19pbnRlcmZhY2UgKnhjaCwgeGNfZXZ0Y2huICp4Y2UsIHVuc2lnbmVkIGxvbgogCiAgICAgaWYg KCByYyA9PSAxICkKICAgICB7Ci0gICAgICAgIHBvcnQgPSB4Y19ldnRjaG5fcGVuZGluZyh4Y2Up OworICAgICAgICBwb3J0ID0geGVuZXZ0Y2huX3BlbmRpbmcoeGNlKTsKICAgICAgICAgaWYgKCBw b3J0ID09IC0xICkKICAgICAgICAgewogICAgICAgICAgICAgRVJST1IoIkZhaWxlZCB0byByZWFk IHBvcnQgZnJvbSBldmVudCBjaGFubmVsIik7CiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAg ICAgfQogCi0gICAgICAgIHJjID0geGNfZXZ0Y2huX3VubWFzayh4Y2UsIHBvcnQpOworICAgICAg ICByYyA9IHhlbmV2dGNobl91bm1hc2soeGNlLCBwb3J0KTsKICAgICAgICAgaWYgKCByYyAhPSAw ICkKICAgICAgICAgewogICAgICAgICAgICAgRVJST1IoIkZhaWxlZCB0byB1bm1hc2sgZXZlbnQg Y2hhbm5lbCBwb3J0Iik7CkBAIC0xNDMsNyArMTQ0LDcgQEAgaW50IHhlbmFjY2Vzc190ZWFyZG93 bih4Y19pbnRlcmZhY2UgKnhjaCwgeGVuYWNjZXNzX3QgKnhlbmFjY2VzcykKICAgICAvKiBVbmJp bmQgVklSUSAqLwogICAgIGlmICggZXZ0Y2huX2JpbmQgKQogICAgIHsKLSAgICAgICAgcmMgPSB4 Y19ldnRjaG5fdW5iaW5kKHhlbmFjY2Vzcy0+dm1fZXZlbnQueGNlX2hhbmRsZSwKKyAgICAgICAg cmMgPSB4ZW5ldnRjaG5fdW5iaW5kKHhlbmFjY2Vzcy0+dm1fZXZlbnQueGNlX2hhbmRsZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbmFjY2Vzcy0+dm1fZXZlbnQucG9ydCk7CiAg ICAgICAgIGlmICggcmMgIT0gMCApCiAgICAgICAgIHsKQEAgLTE1NSw3ICsxNTYsNyBAQCBpbnQg eGVuYWNjZXNzX3RlYXJkb3duKHhjX2ludGVyZmFjZSAqeGNoLCB4ZW5hY2Nlc3NfdCAqeGVuYWNj ZXNzKQogICAgIC8qIENsb3NlIGV2ZW50IGNoYW5uZWwgKi8KICAgICBpZiAoIGV2dGNobl9vcGVu ICkKICAgICB7Ci0gICAgICAgIHJjID0geGNfZXZ0Y2huX2Nsb3NlKHhlbmFjY2Vzcy0+dm1fZXZl bnQueGNlX2hhbmRsZSk7CisgICAgICAgIHJjID0geGVuZXZ0Y2huX2Nsb3NlKHhlbmFjY2Vzcy0+ dm1fZXZlbnQueGNlX2hhbmRsZSk7CiAgICAgICAgIGlmICggcmMgIT0gMCApCiAgICAgICAgIHsK ICAgICAgICAgICAgIEVSUk9SKCJFcnJvciBjbG9zaW5nIGV2ZW50IGNoYW5uZWwiKTsKQEAgLTIy Myw3ICsyMjQsNyBAQCB4ZW5hY2Nlc3NfdCAqeGVuYWNjZXNzX2luaXQoeGNfaW50ZXJmYWNlICoq eGNoX3IsIGRvbWlkX3QgZG9tYWluX2lkKQogICAgIG1lbV9hY2Nlc3NfZW5hYmxlID0gMTsKIAog ICAgIC8qIE9wZW4gZXZlbnQgY2hhbm5lbCAqLwotICAgIHhlbmFjY2Vzcy0+dm1fZXZlbnQueGNl X2hhbmRsZSA9IHhjX2V2dGNobl9vcGVuKE5VTEwsIDApOworICAgIHhlbmFjY2Vzcy0+dm1fZXZl bnQueGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwogICAgIGlmICggeGVuYWNj ZXNzLT52bV9ldmVudC54Y2VfaGFuZGxlID09IE5VTEwgKQogICAgIHsKICAgICAgICAgRVJST1Io IkZhaWxlZCB0byBvcGVuIGV2ZW50IGNoYW5uZWwiKTsKQEAgLTIzMiw3ICsyMzMsNyBAQCB4ZW5h Y2Nlc3NfdCAqeGVuYWNjZXNzX2luaXQoeGNfaW50ZXJmYWNlICoqeGNoX3IsIGRvbWlkX3QgZG9t YWluX2lkKQogICAgIGV2dGNobl9vcGVuID0gMTsKIAogICAgIC8qIEJpbmQgZXZlbnQgbm90aWZp Y2F0aW9uICovCi0gICAgcmMgPSB4Y19ldnRjaG5fYmluZF9pbnRlcmRvbWFpbih4ZW5hY2Nlc3Mt PnZtX2V2ZW50LnhjZV9oYW5kbGUsCisgICAgcmMgPSB4ZW5ldnRjaG5fYmluZF9pbnRlcmRvbWFp bih4ZW5hY2Nlc3MtPnZtX2V2ZW50LnhjZV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB4ZW5hY2Nlc3MtPnZtX2V2ZW50LmRvbWFpbl9pZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhlbmFjY2Vzcy0+dm1fZXZlbnQuZXZ0Y2huX3BvcnQp OwogICAgIGlmICggcmMgPCAwICkKQEAgLTY3OCw3ICs2NzksNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogICAgICAgICB9CiAKICAgICAgICAgLyogVGVsbCBYZW4gcGFnZSBp cyByZWFkeSAqLwotICAgICAgICByYyA9IHhjX2V2dGNobl9ub3RpZnkoeGVuYWNjZXNzLT52bV9l dmVudC54Y2VfaGFuZGxlLAorICAgICAgICByYyA9IHhlbmV2dGNobl9ub3RpZnkoeGVuYWNjZXNz LT52bV9ldmVudC54Y2VfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVu YWNjZXNzLT52bV9ldmVudC5wb3J0KTsKIAogICAgICAgICBpZiAoIHJjICE9IDAgKQpkaWZmIC0t Z2l0IGEvdG9vbHMveGN1dGlscy9NYWtlZmlsZSBiL3Rvb2xzL3hjdXRpbHMvTWFrZWZpbGUKaW5k ZXggZmZmNTE5ZC4uMmQxZjExMiAxMDA2NDQKLS0tIGEvdG9vbHMveGN1dGlscy9NYWtlZmlsZQor KysgYi90b29scy94Y3V0aWxzL01ha2VmaWxlCkBAIC0xNiw4ICsxNiw4IEBAIFBST0dSQU1TID0g cmVhZG5vdGVzIGxzZXZ0Y2huCiBDRkxBR1MgKz0gLVdlcnJvcgogCiAjIGluY29ycmVjdGx5IHVz ZXMgbGlieGMgaW50ZXJuYWxzCi1DRkxBR1NfcmVhZG5vdGVzLm8gIDo9ICQoQ0ZMQUdTX2xpYnhl bmN0cmwpICQoQ0ZMQUdTX2xpYnhlbmd1ZXN0KSAtSSQoWEVOX1JPT1QpL3Rvb2xzL2xpYnhjCi1D RkxBR1NfbHNldnRjaG4ubyAgIDo9ICQoQ0ZMQUdTX2xpYnhlbmN0cmwpCitDRkxBR1NfcmVhZG5v dGVzLm8gIDo9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikgJChDRkxBR1NfbGlieGVuY3RybCkgJChD RkxBR1NfbGlieGVuZ3Vlc3QpIC1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMKK0NGTEFHU19sc2V2 dGNobi5vICAgOj0gJChDRkxBR1NfbGlieGVuZXZ0Y2huKSAkKENGTEFHU19saWJ4ZW5jdHJsKQog CiAuUEhPTlk6IGFsbAogYWxsOiBidWlsZApkaWZmIC0tZ2l0IGEvdG9vbHMveGVubW9uL01ha2Vm aWxlIGIvdG9vbHMveGVubW9uL01ha2VmaWxlCmluZGV4IDIwZWExMDAuLjk4MDU2ZjIgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL3hlbm1vbi9NYWtlZmlsZQorKysgYi90b29scy94ZW5tb24vTWFrZWZpbGUK QEAgLTE0LDggKzE0LDEwIEBAIFhFTl9ST09UPSQoQ1VSRElSKS8uLi8uLgogaW5jbHVkZSAkKFhF Tl9ST09UKS90b29scy9SdWxlcy5tawogCiBDRkxBR1MgICs9IC1XZXJyb3IKK0NGTEFHUyAgKz0g JChDRkxBR1NfbGlieGVuZXZ0Y2huKQogQ0ZMQUdTICArPSAkKENGTEFHU19saWJ4ZW5jdHJsKQog TERMSUJTICArPSAkKExETElCU19saWJ4ZW5jdHJsKQorTERMSUJTICArPSAkKExETElCU19saWJ4 ZW5ldnRjaG4pCiAKIFNDUklQVFMgPSB4ZW5tb24ucHkKIApkaWZmIC0tZ2l0IGEvdG9vbHMveGVu bW9uL3hlbmJha2VkLmMgYi90b29scy94ZW5tb24veGVuYmFrZWQuYwppbmRleCAxZGRiMjliLi5l NDYwMmVmIDEwMDY0NAotLS0gYS90b29scy94ZW5tb24veGVuYmFrZWQuYworKysgYi90b29scy94 ZW5tb24veGVuYmFrZWQuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgog I2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8eGVuZXZ0 Y2huLmg+CiAjaW5jbHVkZSA8eGVuY3RybC5oPgogI2luY2x1ZGUgPHhlbi94ZW4uaD4KICNpbmNs dWRlIDxzdHJpbmcuaD4KQEAgLTI2Nyw3ICsyNjgsNyBAQCBzdGF0aWMgdm9pZCBsb2dfZXZlbnQo aW50IGV2ZW50X2lkKQogfQogCiBpbnQgdmlycV9wb3J0OwoteGNfZXZ0Y2huICp4Y2VfaGFuZGxl ID0gTlVMTDsKK3hlbmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGUgPSBOVUxMOwogCiAvKiBSZXR1 cm5zIHRoZSBldmVudCBjaGFubmVsIGhhbmRsZS4gKi8KIC8qIFN0b2xlbiBmcm9tIHhlbnN0b3Jl IGNvZGUgKi8KQEAgLTI3OSwxMiArMjgwLDEyIEBAIHN0YXRpYyBpbnQgZXZlbnRjaG5faW5pdCh2 b2lkKQogICAgIGlmICgwKQogICAgICAgICByZXR1cm4gLTE7CiAgIAotICAgIHhjZV9oYW5kbGUg PSB4Y19ldnRjaG5fb3BlbihOVUxMLCAwKTsKKyAgICB4Y2VfaGFuZGxlID0geGVuZXZ0Y2huX29w ZW4oTlVMTCwgMCk7CiAKICAgICBpZiAoeGNlX2hhbmRsZSA9PSBOVUxMKQogICAgICAgICBwZXJy b3IoIkZhaWxlZCB0byBvcGVuIGV2dGNobiBkZXZpY2UiKTsKICAgCi0gICAgaWYgKChyYyA9IHhj X2V2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9UQlVGKSkgPT0gLTEpCisgICAgaWYg KChyYyA9IHhlbmV2dGNobl9iaW5kX3ZpcnEoeGNlX2hhbmRsZSwgVklSUV9UQlVGKSkgPT0gLTEp CiAgICAgICAgIHBlcnJvcigiRmFpbGVkIHRvIGJpbmQgdG8gZG9tYWluIGV4Y2VwdGlvbiB2aXJx IHBvcnQiKTsKICAgICB2aXJxX3BvcnQgPSByYzsKICAgCkBAIC0zMDQsNyArMzA1LDcgQEAgc3Rh dGljIHZvaWQgd2FpdF9mb3JfZXZlbnQodm9pZCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot ICAgIGV2dGNobl9mZCA9IHhjX2V2dGNobl9mZCh4Y2VfaGFuZGxlKTsKKyAgICBldnRjaG5fZmQg PSB4ZW5ldnRjaG5fZmQoeGNlX2hhbmRsZSk7CiAKICAgICBGRF9aRVJPKCZpbnNldCk7CiAgICAg RkRfU0VUKGV2dGNobl9mZCwgJmluc2V0KTsKQEAgLTMxNCwxMyArMzE1LDEzIEBAIHN0YXRpYyB2 b2lkIHdhaXRfZm9yX2V2ZW50KHZvaWQpCiAgICAgcmV0ID0gc2VsZWN0KGV2dGNobl9mZCsxLCAm aW5zZXQsIE5VTEwsIE5VTEwsICZ0dik7CiAgIAogICAgIGlmICggKHJldCA9PSAxKSAmJiBGRF9J U1NFVChldnRjaG5fZmQsICZpbnNldCkpIHsKLSAgICAgICAgaWYgKChwb3J0ID0geGNfZXZ0Y2hu X3BlbmRpbmcoeGNlX2hhbmRsZSkpID09IC0xKQorICAgICAgICBpZiAoKHBvcnQgPSB4ZW5ldnRj aG5fcGVuZGluZyh4Y2VfaGFuZGxlKSkgPT0gLTEpCiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxl ZCB0byByZWFkIGZyb20gZXZlbnQgZmQiKTsKICAgICAKICAgICAgICAgLy8gICAgaWYgKHBvcnQg PT0gdmlycV9wb3J0KQogICAgICAgICAvLyAgICAgIHByaW50ZigiZ290IHRoZSBldmVudCBJIHdh cyBsb29raW5nIGZvclxyXG4iKTsKIAotICAgICAgICBpZiAoeGNfZXZ0Y2huX3VubWFzayh4Y2Vf aGFuZGxlLCBwb3J0KSA9PSAtMSkKKyAgICAgICAgaWYgKHhlbmV2dGNobl91bm1hc2soeGNlX2hh bmRsZSwgcG9ydCkgPT0gLTEpCiAgICAgICAgICAgICBwZXJyb3IoIkZhaWxlZCB0byB3cml0ZSB0 byBldmVudCBmZCIpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnBhZ2luZy9NYWtl ZmlsZSBiL3Rvb2xzL3hlbnBhZ2luZy9NYWtlZmlsZQppbmRleCBlNjNkODk0Li5kNDkxODY3IDEw MDY0NAotLS0gYS90b29scy94ZW5wYWdpbmcvTWFrZWZpbGUKKysrIGIvdG9vbHMveGVucGFnaW5n L01ha2VmaWxlCkBAIC0yLDggKzIsOCBAQCBYRU5fUk9PVD0kKENVUkRJUikvLi4vLi4KIGluY2x1 ZGUgJChYRU5fUk9PVCkvdG9vbHMvUnVsZXMubWsKIAogIyB4ZW5wYWdpbmcuYyBhbmQgZmlsZV9v cHMuYyBpbmNvcnJlY3RseSB1c2UgbGlieGMgaW50ZXJuYWxzCi1DRkxBR1MgKz0gJChDRkxBR1Nf bGlieGVuY3RybCkgJChDRkxBR1NfbGlieGVuc3RvcmUpICQoUFRIUkVBRF9DRkxBR1MpIC1JJChY RU5fUk9PVCkvdG9vbHMvbGlieGMKLUxETElCUyArPSAkKExETElCU19saWJ4ZW50b29sbG9nKSAk KExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5zdG9yZSkgJChQVEhSRUFEX0xJQlMp CitDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVudG9vbGxvZykgJChDRkxBR1NfbGlieGVuZXZ0Y2hu KSAkKENGTEFHU19saWJ4ZW5jdHJsKSAkKENGTEFHU19saWJ4ZW5zdG9yZSkgJChQVEhSRUFEX0NG TEFHUykgLUkkKFhFTl9ST09UKS90b29scy9saWJ4YworTERMSUJTICs9ICQoTERMSUJTX2xpYnhl bnRvb2xsb2cpICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNfbGlieGVuY3RybCkgJChM RExJQlNfbGlieGVuc3RvcmUpICQoUFRIUkVBRF9MSUJTKQogTERGTEFHUyArPSAkKFBUSFJFQURf TERGTEFHUykKIAogUE9MSUNZICAgID0gZGVmYXVsdApkaWZmIC0tZ2l0IGEvdG9vbHMveGVucGFn aW5nL3hlbnBhZ2luZy5jIGIvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5jCmluZGV4IGI1ZmZl ZTYuLmRmOTljNmEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuYworKysg Yi90b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmMKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIHZv aWQgeGVucGFnaW5nX21lbV9wYWdpbmdfZmx1c2hfaW9lbXVfY2FjaGUoc3RydWN0IHhlbnBhZ2lu ZyAqcGFnaW5nKQogc3RhdGljIGludCB4ZW5wYWdpbmdfd2FpdF9mb3JfZXZlbnRfb3JfdGltZW91 dChzdHJ1Y3QgeGVucGFnaW5nICpwYWdpbmcpCiB7CiAgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBw YWdpbmctPnhjX2hhbmRsZTsKLSAgICB4Y19ldnRjaG4gKnhjZSA9IHBhZ2luZy0+dm1fZXZlbnQu eGNlX2hhbmRsZTsKKyAgICB4ZW5ldnRjaG5faGFuZGxlICp4Y2UgPSBwYWdpbmctPnZtX2V2ZW50 LnhjZV9oYW5kbGU7CiAgICAgY2hhciAqKnZlYywgKnZhbDsKICAgICB1bnNpZ25lZCBpbnQgbnVt OwogICAgIHN0cnVjdCBwb2xsZmQgZmRbMl07CkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbnQg eGVucGFnaW5nX3dhaXRfZm9yX2V2ZW50X29yX3RpbWVvdXQoc3RydWN0IHhlbnBhZ2luZyAqcGFn aW5nKQogICAgIGludCB0aW1lb3V0OwogCiAgICAgLyogV2FpdCBmb3IgZXZlbnQgY2hhbm5lbCBh bmQgeGVuc3RvcmUgKi8KLSAgICBmZFswXS5mZCA9IHhjX2V2dGNobl9mZCh4Y2UpOworICAgIGZk WzBdLmZkID0geGVuZXZ0Y2huX2ZkKHhjZSk7CiAgICAgZmRbMF0uZXZlbnRzID0gUE9MTElOIHwg UE9MTEVSUjsKICAgICBmZFsxXS5mZCA9IHhzX2ZpbGVubyhwYWdpbmctPnhzX2hhbmRsZSk7CiAg ICAgZmRbMV0uZXZlbnRzID0gUE9MTElOIHwgUE9MTEVSUjsKQEAgLTE0Niw3ICsxNDYsNyBAQCBz dGF0aWMgaW50IHhlbnBhZ2luZ193YWl0X2Zvcl9ldmVudF9vcl90aW1lb3V0KHN0cnVjdCB4ZW5w YWdpbmcgKnBhZ2luZykKICAgICBpZiAoIHJjICYmIGZkWzBdLnJldmVudHMgJiBQT0xMSU4gKQog ICAgIHsKICAgICAgICAgRFBSSU5URigiR290IGV2ZW50IGZyb20gZXZ0Y2huXG4iKTsKLSAgICAg ICAgcG9ydCA9IHhjX2V2dGNobl9wZW5kaW5nKHhjZSk7CisgICAgICAgIHBvcnQgPSB4ZW5ldnRj aG5fcGVuZGluZyh4Y2UpOwogICAgICAgICBpZiAoIHBvcnQgPT0gLTEgKQogICAgICAgICB7CiAg ICAgICAgICAgICBQRVJST1IoIkZhaWxlZCB0byByZWFkIHBvcnQgZnJvbSBldmVudCBjaGFubmVs Iik7CkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIGludCB4ZW5wYWdpbmdfd2FpdF9mb3JfZXZl bnRfb3JfdGltZW91dChzdHJ1Y3QgeGVucGFnaW5nICpwYWdpbmcpCiAgICAgICAgICAgICBnb3Rv IGVycjsKICAgICAgICAgfQogCi0gICAgICAgIHJjID0geGNfZXZ0Y2huX3VubWFzayh4Y2UsIHBv cnQpOworICAgICAgICByYyA9IHhlbmV2dGNobl91bm1hc2soeGNlLCBwb3J0KTsKICAgICAgICAg aWYgKCByYyA8IDAgKQogICAgICAgICB7CiAgICAgICAgICAgICBQRVJST1IoIkZhaWxlZCB0byB1 bm1hc2sgZXZlbnQgY2hhbm5lbCBwb3J0Iik7CkBAIC0zOTMsNyArMzkzLDcgQEAgc3RhdGljIHN0 cnVjdCB4ZW5wYWdpbmcgKnhlbnBhZ2luZ19pbml0KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAg ICAgfQogCiAgICAgLyogT3BlbiBldmVudCBjaGFubmVsICovCi0gICAgcGFnaW5nLT52bV9ldmVu dC54Y2VfaGFuZGxlID0geGNfZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisgICAgcGFnaW5nLT52bV9l dmVudC54Y2VfaGFuZGxlID0geGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CiAgICAgaWYgKCBwYWdp bmctPnZtX2V2ZW50LnhjZV9oYW5kbGUgPT0gTlVMTCApCiAgICAgewogICAgICAgICBQRVJST1Io IkZhaWxlZCB0byBvcGVuIGV2ZW50IGNoYW5uZWwiKTsKQEAgLTQwMSw3ICs0MDEsNyBAQCBzdGF0 aWMgc3RydWN0IHhlbnBhZ2luZyAqeGVucGFnaW5nX2luaXQoaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKICAgICB9CiAKICAgICAvKiBCaW5kIGV2ZW50IG5vdGlmaWNhdGlvbiAqLwotICAgIHJjID0g eGNfZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4ocGFnaW5nLT52bV9ldmVudC54Y2VfaGFuZGxlLAor ICAgIHJjID0geGVuZXZ0Y2huX2JpbmRfaW50ZXJkb21haW4ocGFnaW5nLT52bV9ldmVudC54Y2Vf aGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nLT52bV9l dmVudC5kb21haW5faWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdp bmctPnZtX2V2ZW50LmV2dGNobl9wb3J0KTsKICAgICBpZiAoIHJjIDwgMCApCkBAIC01MzEsNyAr NTMxLDcgQEAgc3RhdGljIHZvaWQgeGVucGFnaW5nX3RlYXJkb3duKHN0cnVjdCB4ZW5wYWdpbmcg KnBhZ2luZykKICAgICB9CiAKICAgICAvKiBVbmJpbmQgVklSUSAqLwotICAgIHJjID0geGNfZXZ0 Y2huX3VuYmluZChwYWdpbmctPnZtX2V2ZW50LnhjZV9oYW5kbGUsIHBhZ2luZy0+dm1fZXZlbnQu cG9ydCk7CisgICAgcmMgPSB4ZW5ldnRjaG5fdW5iaW5kKHBhZ2luZy0+dm1fZXZlbnQueGNlX2hh bmRsZSwgcGFnaW5nLT52bV9ldmVudC5wb3J0KTsKICAgICBpZiAoIHJjICE9IDAgKQogICAgIHsK ICAgICAgICAgUEVSUk9SKCJFcnJvciB1bmJpbmRpbmcgZXZlbnQgcG9ydCIpOwpAQCAtNTM5LDcg KzUzOSw3IEBAIHN0YXRpYyB2b2lkIHhlbnBhZ2luZ190ZWFyZG93bihzdHJ1Y3QgeGVucGFnaW5n ICpwYWdpbmcpCiAgICAgcGFnaW5nLT52bV9ldmVudC5wb3J0ID0gLTE7CiAKICAgICAvKiBDbG9z ZSBldmVudCBjaGFubmVsICovCi0gICAgcmMgPSB4Y19ldnRjaG5fY2xvc2UocGFnaW5nLT52bV9l dmVudC54Y2VfaGFuZGxlKTsKKyAgICByYyA9IHhlbmV2dGNobl9jbG9zZShwYWdpbmctPnZtX2V2 ZW50LnhjZV9oYW5kbGUpOwogICAgIGlmICggcmMgIT0gMCApCiAgICAgewogICAgICAgICBQRVJS T1IoIkVycm9yIGNsb3NpbmcgZXZlbnQgY2hhbm5lbCIpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHN0 YXRpYyBpbnQgeGVucGFnaW5nX3Jlc3VtZV9wYWdlKHN0cnVjdCB4ZW5wYWdpbmcgKnBhZ2luZywg dm1fZXZlbnRfcmVzcG9uc2VfdCAqCiAgICAgfQogCiAgICAgLyogVGVsbCBYZW4gcGFnZSBpcyBy ZWFkeSAqLwotICAgIHJldHVybiB4Y19ldnRjaG5fbm90aWZ5KHBhZ2luZy0+dm1fZXZlbnQueGNl X2hhbmRsZSwgcGFnaW5nLT52bV9ldmVudC5wb3J0KTsKKyAgICByZXR1cm4geGVuZXZ0Y2huX25v dGlmeShwYWdpbmctPnZtX2V2ZW50LnhjZV9oYW5kbGUsIHBhZ2luZy0+dm1fZXZlbnQucG9ydCk7 CiB9CiAKIHN0YXRpYyBpbnQgeGVucGFnaW5nX3BvcHVsYXRlX3BhZ2Uoc3RydWN0IHhlbnBhZ2lu ZyAqcGFnaW5nLCB1bnNpZ25lZCBsb25nIGdmbiwgaW50IGkpCmRpZmYgLS1naXQgYS90b29scy94 ZW5wYWdpbmcveGVucGFnaW5nLmggYi90b29scy94ZW5wYWdpbmcveGVucGFnaW5nLmgKaW5kZXgg YzZhYjc3Yy4uZDBmOGQyMCAxMDA2NDQKLS0tIGEvdG9vbHMveGVucGFnaW5nL3hlbnBhZ2luZy5o CisrKyBiL3Rvb2xzL3hlbnBhZ2luZy94ZW5wYWdpbmcuaApAQCAtMjQsNiArMjQsNyBAQAogI2Rl ZmluZSBfX1hFTl9QQUdJTkcyX0hfXwogCiAKKyNpbmNsdWRlIDx4ZW5ldnRjaG4uaD4KICNpbmNs dWRlIDx4Y19wcml2YXRlLmg+CiAjaW5jbHVkZSA8eGVuL2V2ZW50X2NoYW5uZWwuaD4KICNpbmNs dWRlIDx4ZW4vdm1fZXZlbnQuaD4KQEAgLTMyLDcgKzMzLDcgQEAKIAogc3RydWN0IHZtX2V2ZW50 IHsKICAgICBkb21pZF90IGRvbWFpbl9pZDsKLSAgICB4Y19ldnRjaG4gKnhjZV9oYW5kbGU7Cisg ICAgeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZTsKICAgICBpbnQgcG9ydDsKICAgICB2bV9l dmVudF9iYWNrX3JpbmdfdCBiYWNrX3Jpbmc7CiAgICAgdWludDMyX3QgZXZ0Y2huX3BvcnQ7CmRp ZmYgLS1naXQgYS90b29scy94ZW5zdG9yZS9NYWtlZmlsZSBiL3Rvb2xzL3hlbnN0b3JlL01ha2Vm aWxlCmluZGV4IDFiNGE0OTQuLmMxNjEwNDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL01h a2VmaWxlCisrKyBiL3Rvb2xzL3hlbnN0b3JlL01ha2VmaWxlCkBAIC05LDYgKzksNyBAQCBDRkxB R1MgKz0gLUkuCiAjIEluY2x1ZGUgY29uZmlndXJlIG91dHB1dCAoY29uZmlnLmgpCiBDRkxBR1Mg Kz0gLWluY2x1ZGUgJChYRU5fUk9PVCkvdG9vbHMvY29uZmlnLmgKIENGTEFHUyArPSAtSS4vaW5j bHVkZQorQ0ZMQUdTICs9ICQoQ0ZMQUdTX2xpYnhlbmV2dGNobikKIENGTEFHUyArPSAkKENGTEFH U19saWJ4ZW5jdHJsKQogQ0ZMQUdTICs9IC1EWEVOX0xJQl9TVE9SRUQ9IlwiJChYRU5fTElCX1NU T1JFRClcIiIKIApAQCAtNzUsMTAgKzc2LDEwIEBAIGVuZGlmCiBpbml0LXhlbnN0b3JlLWRvbWFp bi5vOiBDRkxBR1MgKz0gJChDRkxBR1NfbGlieGVuZ3Vlc3QpCiAKIGluaXQteGVuc3RvcmUtZG9t YWluOiBpbml0LXhlbnN0b3JlLWRvbWFpbi5vICQoTElCWEVOU1RPUkUpCi0JJChDQykgJF4gJChM REZMQUdTKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVzdCkgJChMRExJ QlNfbGlieGVuc3RvcmUpIC1vICRAICQoQVBQRU5EX0xERkxBR1MpCisJJChDQykgJF4gJChMREZM QUdTKSAkKExETElCU19saWJ4ZW5ldnRjaG4pICQoTERMSUJTX2xpYnhlbmN0cmwpICQoTERMSUJT X2xpYnhlbmd1ZXN0KSAkKExETElCU19saWJ4ZW5zdG9yZSkgLW8gJEAgJChBUFBFTkRfTERGTEFH UykKIAogeGVuc3RvcmVkOiAkKFhFTlNUT1JFRF9PQkpTKQotCSQoQ0MpICReICQoTERGTEFHUykg JChMRExJQlNfbGlieGVuY3RybCkgJChTT0NLRVRfTElCUykgLW8gJEAgJChBUFBFTkRfTERGTEFH UykKKwkkKENDKSAkXiAkKExERkxBR1MpICQoTERMSUJTX2xpYnhlbmV2dGNobikgJChMRExJQlNf bGlieGVuY3RybCkgJChTT0NLRVRfTElCUykgLW8gJEAgJChBUFBFTkRfTERGTEFHUykKIAogeGVu c3RvcmVkLmE6ICQoWEVOU1RPUkVEX09CSlMpCiAJJChBUikgY3IgJEAgJF4KZGlmZiAtLWdpdCBh L3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9jb3JlLmMgYi90b29scy94ZW5zdG9yZS94ZW5zdG9y ZWRfY29yZS5jCmluZGV4IDNjMDMwN2UuLmY2MmMxOTIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0 b3JlL3hlbnN0b3JlZF9jb3JlLmMKKysrIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUu YwpAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPHNldGpt cC5oPgogCisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CisKICNpbmNsdWRlICJ1dGlscy5oIgogI2lu Y2x1ZGUgImxpc3QuaCIKICNpbmNsdWRlICJ0YWxsb2MuaCIKQEAgLTYzLDcgKzY1LDcgQEAKICNp bmNsdWRlIDxzeXN0ZW1kL3NkLWRhZW1vbi5oPgogI2VuZGlmCiAKLWV4dGVybiB4Y19ldnRjaG4g KnhjZV9oYW5kbGU7IC8qIGluIHhlbnN0b3JlZF9kb21haW4uYyAqLworZXh0ZXJuIHhlbmV2dGNo bl9oYW5kbGUgKnhjZV9oYW5kbGU7IC8qIGluIHhlbnN0b3JlZF9kb21haW4uYyAqLwogc3RhdGlj IGludCB4Y2VfcG9sbGZkX2lkeCA9IC0xOwogc3RhdGljIHN0cnVjdCBwb2xsZmQgKmZkczsKIHN0 YXRpYyB1bnNpZ25lZCBpbnQgY3VycmVudF9hcnJheV9zaXplOwpAQCAtMzcyLDcgKzM3NCw3IEBA IHN0YXRpYyB2b2lkIGluaXRpYWxpemVfZmRzKGludCBzb2NrLCBpbnQgKnBfc29ja19wb2xsZmRf aWR4LAogCQkJc2V0X2ZkKHJlb3Blbl9sb2dfcGlwZVswXSwgUE9MTElOfFBPTExQUkkpOwogCiAJ aWYgKHhjZV9oYW5kbGUgIT0gTlVMTCkKLQkJeGNlX3BvbGxmZF9pZHggPSBzZXRfZmQoeGNfZXZ0 Y2huX2ZkKHhjZV9oYW5kbGUpLAorCQl4Y2VfcG9sbGZkX2lkeCA9IHNldF9mZCh4ZW5ldnRjaG5f ZmQoeGNlX2hhbmRsZSksCiAJCQkJCVBPTExJTnxQT0xMUFJJKTsKIAogCWxpc3RfZm9yX2VhY2hf ZW50cnkoY29ubiwgJmNvbm5lY3Rpb25zLCBsaXN0KSB7CmRpZmYgLS1naXQgYS90b29scy94ZW5z dG9yZS94ZW5zdG9yZWRfZG9tYWluLmMgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWlu LmMKaW5kZXggZGNkNjU4MS4uNmNlZWMyOSAxMDA2NDQKLS0tIGEvdG9vbHMveGVuc3RvcmUveGVu c3RvcmVkX2RvbWFpbi5jCisrKyBiL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYwpA QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgInhlbnN0b3JlZF90cmFuc2FjdGlvbi5oIgogI2lu Y2x1ZGUgInhlbnN0b3JlZF93YXRjaC5oIgogCisjaW5jbHVkZSA8eGVuZXZ0Y2huLmg+CiAjaW5j bHVkZSA8eGVuY3RybC5oPgogI2luY2x1ZGUgPHhlbi9ncmFudF90YWJsZS5oPgogCkBAIC0zNiw3 ICszNyw3IEBAIHN0YXRpYyB4Y19pbnRlcmZhY2UgKip4Y19oYW5kbGU7CiB4Y19nbnR0YWIgKip4 Y2dfaGFuZGxlOwogc3RhdGljIGV2dGNobl9wb3J0X3QgdmlycV9wb3J0OwogCi14Y19ldnRjaG4g KnhjZV9oYW5kbGUgPSBOVUxMOworeGVuZXZ0Y2huX2hhbmRsZSAqeGNlX2hhbmRsZSA9IE5VTEw7 CiAKIHN0cnVjdCBkb21haW4KIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBzdGF0aWMgaW50IHdyaXRl Y2huKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLAogCXhlbl9tYigpOwogCWludGYtPnJzcF9wcm9k ICs9IGxlbjsKIAotCXhjX2V2dGNobl9ub3RpZnkoeGNlX2hhbmRsZSwgY29ubi0+ZG9tYWluLT5w b3J0KTsKKwl4ZW5ldnRjaG5fbm90aWZ5KHhjZV9oYW5kbGUsIGNvbm4tPmRvbWFpbi0+cG9ydCk7 CiAKIAlyZXR1cm4gbGVuOwogfQpAQCAtMTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBpbnQgcmVhZGNo bihzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikK IAl4ZW5fbWIoKTsKIAlpbnRmLT5yZXFfY29ucyArPSBsZW47CiAKLQl4Y19ldnRjaG5fbm90aWZ5 KHhjZV9oYW5kbGUsIGNvbm4tPmRvbWFpbi0+cG9ydCk7CisJeGVuZXZ0Y2huX25vdGlmeSh4Y2Vf aGFuZGxlLCBjb25uLT5kb21haW4tPnBvcnQpOwogCiAJcmV0dXJuIGxlbjsKIH0KQEAgLTE5MCw3 ICsxOTEsNyBAQCBzdGF0aWMgaW50IGRlc3Ryb3lfZG9tYWluKHZvaWQgKl9kb21haW4pCiAJbGlz dF9kZWwoJmRvbWFpbi0+bGlzdCk7CiAKIAlpZiAoZG9tYWluLT5wb3J0KSB7Ci0JCWlmICh4Y19l dnRjaG5fdW5iaW5kKHhjZV9oYW5kbGUsIGRvbWFpbi0+cG9ydCkgPT0gLTEpCisJCWlmICh4ZW5l dnRjaG5fdW5iaW5kKHhjZV9oYW5kbGUsIGRvbWFpbi0+cG9ydCkgPT0gLTEpCiAJCQllcHJpbnRm KCI+IFVuYmluZGluZyBwb3J0ICVpIGZhaWxlZCFcbiIsIGRvbWFpbi0+cG9ydCk7CiAJfQogCkBA IC0yMzksMTMgKzI0MCwxMyBAQCB2b2lkIGhhbmRsZV9ldmVudCh2b2lkKQogewogCWV2dGNobl9w b3J0X3QgcG9ydDsKIAotCWlmICgocG9ydCA9IHhjX2V2dGNobl9wZW5kaW5nKHhjZV9oYW5kbGUp KSA9PSAtMSkKKwlpZiAoKHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyh4Y2VfaGFuZGxlKSkgPT0g LTEpCiAJCWJhcmZfcGVycm9yKCJGYWlsZWQgdG8gcmVhZCBmcm9tIGV2ZW50IGZkIik7CiAKIAlp ZiAocG9ydCA9PSB2aXJxX3BvcnQpCiAJCWRvbWFpbl9jbGVhbnVwKCk7CiAKLQlpZiAoeGNfZXZ0 Y2huX3VubWFzayh4Y2VfaGFuZGxlLCBwb3J0KSA9PSAtMSkKKwlpZiAoeGVuZXZ0Y2huX3VubWFz ayh4Y2VfaGFuZGxlLCBwb3J0KSA9PSAtMSkKIAkJYmFyZl9wZXJyb3IoIkZhaWxlZCB0byB3cml0 ZSB0byBldmVudCBmZCIpOwogfQogCkBAIC0yODcsNyArMjg4LDcgQEAgc3RhdGljIHN0cnVjdCBk b21haW4gKm5ld19kb21haW4odm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IGRvbWlkLAogCXRh bGxvY19zZXRfZGVzdHJ1Y3Rvcihkb21haW4sIGRlc3Ryb3lfZG9tYWluKTsKIAogCS8qIFRlbGwg a2VybmVsIHdlJ3JlIGludGVyZXN0ZWQgaW4gdGhpcyBldmVudC4gKi8KLQlyYyA9IHhjX2V2dGNo bl9iaW5kX2ludGVyZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlkLCBwb3J0KTsKKwlyYyA9IHhlbmV2 dGNobl9iaW5kX2ludGVyZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlkLCBwb3J0KTsKIAlpZiAocmMg PT0gLTEpCiAJICAgIHJldHVybiBOVUxMOwogCWRvbWFpbi0+cG9ydCA9IHJjOwpAQCAtMzkyLDgg KzM5Myw4IEBAIHZvaWQgZG9faW50cm9kdWNlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1 Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiAJfSBlbHNlIGlmICgoZG9tYWluLT5tZm4gPT0gbWZuKSAm JiAoZG9tYWluLT5jb25uICE9IGNvbm4pKSB7CiAJCS8qIFVzZSBYU19JTlRST0RVQ0UgZm9yIHJl Y3JlYXRpbmcgdGhlIHhlbmJ1cyBldmVudC1jaGFubmVsLiAqLwogCQlpZiAoZG9tYWluLT5wb3J0 KQotCQkJeGNfZXZ0Y2huX3VuYmluZCh4Y2VfaGFuZGxlLCBkb21haW4tPnBvcnQpOwotCQlyYyA9 IHhjX2V2dGNobl9iaW5kX2ludGVyZG9tYWluKHhjZV9oYW5kbGUsIGRvbWlkLCBwb3J0KTsKKwkJ CXhlbmV2dGNobl91bmJpbmQoeGNlX2hhbmRsZSwgZG9tYWluLT5wb3J0KTsKKwkJcmMgPSB4ZW5l dnRjaG5fYmluZF9pbnRlcmRvbWFpbih4Y2VfaGFuZGxlLCBkb21pZCwgcG9ydCk7CiAJCWRvbWFp bi0+cG9ydCA9IChyYyA9PSAtMSkgPyAwIDogcmM7CiAJCWRvbWFpbi0+cmVtb3RlX3BvcnQgPSBw b3J0OwogCX0gZWxzZSB7CkBAIC02MTQsNyArNjE1LDcgQEAgc3RhdGljIGludCBkb20wX2luaXQo dm9pZCkKIAogCXRhbGxvY19zdGVhbChkb20wLT5jb25uLCBkb20wKTsgCiAKLQl4Y19ldnRjaG5f bm90aWZ5KHhjZV9oYW5kbGUsIGRvbTAtPnBvcnQpOyAKKwl4ZW5ldnRjaG5fbm90aWZ5KHhjZV9o YW5kbGUsIGRvbTAtPnBvcnQpOyAKIAogCXJldHVybiAwOyAKIH0KQEAgLTY0Myw3ICs2NDQsNyBA QCB2b2lkIGRvbWFpbl9pbml0KHZvaWQpCiAJZWxzZQogCQl0YWxsb2Nfc2V0X2Rlc3RydWN0b3Io eGNnX2hhbmRsZSwgY2xvc2VfeGNnX2hhbmRsZSk7CiAKLQl4Y2VfaGFuZGxlID0geGNfZXZ0Y2hu X29wZW4oTlVMTCwgMCk7CisJeGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOwog CiAJaWYgKHhjZV9oYW5kbGUgPT0gTlVMTCkKIAkJYmFyZl9wZXJyb3IoIkZhaWxlZCB0byBvcGVu IGV2dGNobiBkZXZpY2UiKTsKQEAgLTY1MSw3ICs2NTIsNyBAQCB2b2lkIGRvbWFpbl9pbml0KHZv aWQpCiAJaWYgKGRvbTBfaW5pdCgpICE9IDApIAogCQliYXJmX3BlcnJvcigiRmFpbGVkIHRvIGlu aXRpYWxpemUgZG9tMCBzdGF0ZSIpOyAKIAotCWlmICgocmMgPSB4Y19ldnRjaG5fYmluZF92aXJx KHhjZV9oYW5kbGUsIFZJUlFfRE9NX0VYQykpID09IC0xKQorCWlmICgocmMgPSB4ZW5ldnRjaG5f YmluZF92aXJxKHhjZV9oYW5kbGUsIFZJUlFfRE9NX0VYQykpID09IC0xKQogCQliYXJmX3BlcnJv cigiRmFpbGVkIHRvIGJpbmQgdG8gZG9tYWluIGV4Y2VwdGlvbiB2aXJxIHBvcnQiKTsKIAl2aXJx X3BvcnQgPSByYzsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnRyYWNlL01ha2VmaWxlIGIvdG9v bHMveGVudHJhY2UvTWFrZWZpbGUKaW5kZXggNmMxM2NkMS4uMDE1N2JlMiAxMDA2NDQKLS0tIGEv dG9vbHMveGVudHJhY2UvTWFrZWZpbGUKKysrIGIvdG9vbHMveGVudHJhY2UvTWFrZWZpbGUKQEAg LTMsOCArMywxMSBAQCBpbmNsdWRlICQoWEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiAKIENGTEFH UyArPSAtV2Vycm9yCiAKK0NGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5ldnRjaG4pCiBDRkxBR1Mg Kz0gJChDRkxBR1NfbGlieGVuY3RybCkKLUxETElCUyArPSAkKExETElCU19saWJ4ZW5jdHJsKSAk KEFSR1BfTERGTEFHUykKK0xETElCUyArPSAkKExETElCU19saWJ4ZW5ldnRjaG4pCitMRExJQlMg Kz0gJChMRExJQlNfbGlieGVuY3RybCkKK0xETElCUyArPSAkKEFSR1BfTERGTEFHUykKIAogQklO LSQoQ09ORklHX1g4NikgPSB4ZW5hbHl6ZQogQklOICAgICAgPSAkKEJJTi15KQpkaWZmIC0tZ2l0 IGEvdG9vbHMveGVudHJhY2UveGVudHJhY2UuYyBiL3Rvb2xzL3hlbnRyYWNlL3hlbnRyYWNlLmMK aW5kZXggNGVlMTQ1OC4uYzk3MGQ0MiAxMDA2NDQKLS0tIGEvdG9vbHMveGVudHJhY2UveGVudHJh Y2UuYworKysgYi90b29scy94ZW50cmFjZS94ZW50cmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAj aW5jbHVkZSA8eGVuL3hlbi5oPgogI2luY2x1ZGUgPHhlbi90cmFjZS5oPgogCisjaW5jbHVkZSA8 eGVuZXZ0Y2huLmg+CiAjaW5jbHVkZSA8eGVuY3RybC5oPgogCiAjZGVmaW5lIFBFUlJPUihfbSwg X2EuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNzQsNyAr NzUsNyBAQCBzZXR0aW5nc190IG9wdHM7CiBpbnQgaW50ZXJydXB0ZWQgPSAwOyAvKiBnZXRzIHNl dCBpZiB3ZSBnZXQgYSBTSUdIVVAgKi8KIAogc3RhdGljIHhjX2ludGVyZmFjZSAqeGNfaGFuZGxl Owotc3RhdGljIHhjX2V2dGNobiAqeGNlX2hhbmRsZSA9IE5VTEw7CitzdGF0aWMgeGVuZXZ0Y2hu X2hhbmRsZSAqeGNlX2hhbmRsZSA9IE5VTEw7CiBzdGF0aWMgaW50IHZpcnFfcG9ydCA9IC0xOwog c3RhdGljIGludCBvdXRmZCA9IDE7CiAKQEAgLTYwMiwxMyArNjAzLDEzIEBAIHN0YXRpYyB2b2lk IGV2ZW50X2luaXQodm9pZCkKIHsKICAgICBpbnQgcmM7CiAKLSAgICB4Y2VfaGFuZGxlID0geGNf ZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisgICAgeGNlX2hhbmRsZSA9IHhlbmV2dGNobl9vcGVuKE5V TEwsIDApOwogICAgIGlmICh4Y2VfaGFuZGxlID09IE5VTEwpIHsKICAgICAgICAgcGVycm9yKCJl dmVudCBjaGFubmVsIG9wZW4iKTsKICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgIH0K IAotICAgIHJjID0geGNfZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX1RCVUYpOwor ICAgIHJjID0geGVuZXZ0Y2huX2JpbmRfdmlycSh4Y2VfaGFuZGxlLCBWSVJRX1RCVUYpOwogICAg IGlmIChyYyA9PSAtMSkgewogICAgICAgICBQRVJST1IoImZhaWxlZCB0byBiaW5kIHRvIFZJUlEg cG9ydCIpOwogICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CkBAIC02MjMsNyArNjI0LDcgQEAg c3RhdGljIHZvaWQgZXZlbnRfaW5pdCh2b2lkKQogc3RhdGljIHZvaWQgd2FpdF9mb3JfZXZlbnRf b3JfdGltZW91dCh1bnNpZ25lZCBsb25nIG1pbGxpc2Vjb25kcykKIHsKICAgICBpbnQgcmM7Ci0g ICAgc3RydWN0IHBvbGxmZCBmZCA9IHsgLmZkID0geGNfZXZ0Y2huX2ZkKHhjZV9oYW5kbGUpLAor ICAgIHN0cnVjdCBwb2xsZmQgZmQgPSB7IC5mZCA9IHhlbmV2dGNobl9mZCh4Y2VfaGFuZGxlKSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAuZXZlbnRzID0gUE9MTElOIHwgUE9MTEVSUiB9Owog ICAgIGludCBwb3J0OwogCkBAIC02MzYsNyArNjM3LDcgQEAgc3RhdGljIHZvaWQgd2FpdF9mb3Jf ZXZlbnRfb3JfdGltZW91dCh1bnNpZ25lZCBsb25nIG1pbGxpc2Vjb25kcykKICAgICB9CiAKICAg ICBpZiAocmMgPT0gMSkgewotICAgICAgICBwb3J0ID0geGNfZXZ0Y2huX3BlbmRpbmcoeGNlX2hh bmRsZSk7CisgICAgICAgIHBvcnQgPSB4ZW5ldnRjaG5fcGVuZGluZyh4Y2VfaGFuZGxlKTsKICAg ICAgICAgaWYgKHBvcnQgPT0gLTEpIHsKICAgICAgICAgICAgIFBFUlJPUigiZmFpbGVkIHRvIHJl YWQgcG9ydCBmcm9tIGV2dGNobiIpOwogICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwpA QCAtNjQ3LDcgKzY0OCw3IEBAIHN0YXRpYyB2b2lkIHdhaXRfZm9yX2V2ZW50X29yX3RpbWVvdXQo dW5zaWduZWQgbG9uZyBtaWxsaXNlY29uZHMpCiAgICAgICAgICAgICAgICAgICAgIHBvcnQsIHZp cnFfcG9ydCk7CiAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgIH0KLSAg ICAgICAgcmMgPSB4Y19ldnRjaG5fdW5tYXNrKHhjZV9oYW5kbGUsIHBvcnQpOworICAgICAgICBy YyA9IHhlbmV2dGNobl91bm1hc2soeGNlX2hhbmRsZSwgcG9ydCk7CiAgICAgICAgIGlmIChyYyA9 PSAtMSkgewogICAgICAgICAgICAgUEVSUk9SKCJmYWlsZWQgdG8gd3JpdGUgcG9ydCB0byBldnRj aG4iKTsKICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLS0gCjIuMS40CgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK