From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#36649: 27.0.50; pure space and pdumper Date: Fri, 5 Mar 2021 03:00:03 +0000 Message-ID: References: <87a6yo5fgy.fsf@gnus.org> <83d03kaz6f.fsf@gnu.org> <87h7svc87d.fsf@igel.home> <87sg5bt1bp.fsf@gmail.com> <4c1248b8-88cc-ca06-6bc8-9f0bb9a98c98@cs.ucla.edu> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000004c45c05bcc14a64" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21865"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Robert Pluim , Andreas Schwab , Stefan Kangas , 36649@debbugs.gnu.org, larsi@gnus.org, Andrea Corallo To: Paul Eggert Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Mar 05 04:01:12 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lI0iG-0005Zk-BA for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 05 Mar 2021 04:01:12 +0100 Original-Received: from localhost ([::1]:34422 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lI0iF-0002ew-Cp for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 04 Mar 2021 22:01:11 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:53300) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lI0i6-0002eg-MI for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 22:01:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:49172) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lI0i6-0002bj-C0 for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 22:01:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lI0i6-000805-9l for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 22:01:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 05 Mar 2021 03:01:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36649 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 36649-submit@debbugs.gnu.org id=B36649.161491324730725 (code B ref 36649); Fri, 05 Mar 2021 03:01:02 +0000 Original-Received: (at 36649) by debbugs.gnu.org; 5 Mar 2021 03:00:47 +0000 Original-Received: from localhost ([127.0.0.1]:60719 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI0hq-0007zV-Ve for submit@debbugs.gnu.org; Thu, 04 Mar 2021 22:00:46 -0500 Original-Received: from mail-ot1-f54.google.com ([209.85.210.54]:40377) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lI0hp-0007zJ-Om for 36649@debbugs.gnu.org; Thu, 04 Mar 2021 22:00:45 -0500 Original-Received: by mail-ot1-f54.google.com with SMTP id b8so435671oti.7 for <36649@debbugs.gnu.org>; Thu, 04 Mar 2021 19:00:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=lj5PwhF1tTF2pLFdd3Z9FoUmjJRsN2K2zvITdjChweg=; b=YmCY4ybC4Th90uBks4GGLDFjA4cZmJRev66Xur/R0VwRtT/KMmHK4Deishmq5YTs5Z 0Gni8ZpH/4nilcb8YTtQYIhJEitRoSBWoPhKmV1xO0E7jB6jADSNbTLk2e2pohACfYPD BErEMktr8gatL6MpK+EaHlAaQdE+hFlPI2lUVGKgSSJX8YMKRLLYQdMeE7uTLyEadWNf picc7AOsn3mIo7FuXmg6yYt0tY9OdqvP5A/SsNoBF5vyeqg7mTsM22aumEsTsNSx17e7 ULtU69i9sFb1tpFGdulQZ5A989xM0mJC2OvH4eJOUlsZnwA2DqAf7Wrwd7gtSBYvexfv brmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lj5PwhF1tTF2pLFdd3Z9FoUmjJRsN2K2zvITdjChweg=; b=NfysqhVrHbcl54NnW36J01gBejS84f2ppULkUh8rp4oBDiDdgDA9opS6LOh4pNB/uv meVGb3FNLTtQz6Log99shxmTSgREZbIvfDW8dBBPjF7PBHLDl+2Ghb9hzV9TcfD3VINi 7LnLpNaVzlI2UKQrMGjAV2cHfbksEeJ0ZegZPoZYHCuptb8xmpEOrN9c5HQSEjY69GWw CHDxXjUUKxAzZrreLUcfz6rBKRM4VOetY95IGK7nP6smVS8B1LV8xpYV1GtIW8Dt6pas qysxJmJ1+cPrz2Nuv6wDg/4huqX8YPZhGxvZviJc0kw6fktN3Xn4oXb4nHkkF8YKd0sB aB7A== X-Gm-Message-State: AOAM532g3STqDrn2mv32oaGqrYowiDlS7eLeVNKt349DVpljEFNj2sUZ ij7rayVKOETy2Y/QLODTAyp1P8gHt3CsQZb0Jqk= X-Google-Smtp-Source: ABdhPJw/AiADD+ejSWe9ppuxIESAFnd2ER9nVkbU4wBfQ5cDMy21u3cOzPIz5hVZAtjApzUKGfInaHd1MyDv8AQ79i8= X-Received: by 2002:a05:6830:1e51:: with SMTP id e17mr6196512otj.292.1614913240080; Thu, 04 Mar 2021 19:00:40 -0800 (PST) In-Reply-To: <4c1248b8-88cc-ca06-6bc8-9f0bb9a98c98@cs.ucla.edu> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:201491 Archived-At: --00000000000004c45c05bcc14a64 Content-Type: text/plain; charset="UTF-8" On Thu, Mar 4, 2021 at 9:52 PM Paul Eggert wrote: > On 3/4/21 6:56 AM, Robert Pluim wrote: > > Pip> - zero vector handling depends on Qnil being all zero in memory > > > > I think Emacs already assumes Qnil == 0, since there are places that > > use ! to check for Qnil rather than using NILP. > > The convention is to put a "verify (NIL_IS_ZERO);" near the rare bits of > code that assume Qnil is all-bits-zero. That would be nice, but I'm quite certain there are places in the code that rely on this identity without doing that... > This is to help out any > hypothetical future developer who wants to change Qnil to be some other > value. Currently there are only two such locations. (There is one other > location that uses NIL_IS_ZERO for an optimization.) When I did the NaN boxing thing, I remember seeing quite a few 0.0s popping up where I was expecting nil :-) Anyway, it's easy enough to remove the assumption. Here's the current patch. Pip --00000000000004c45c05bcc14a64 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Remove-pure-space-Bug-36649.patch" Content-Disposition: attachment; filename="0001-Remove-pure-space-Bug-36649.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_klvpm4md0 RnJvbSAzYTRlZWZjNDY0NmU1MjVhNzIwNTYxNzE2OTIzZWZlYTQ0ZTgxMDRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBXZWQs IDMgTWFyIDIwMjEgMTU6Mjc6MDIgKzAwMDAKU3ViamVjdDogW1BBVENIXSBSZW1vdmUgcHVyZSBz cGFjZSAoQnVnIzM2NjQ5KQoKKiBzcmMvbGlzcC5oIChzdHJ1Y3QgTGlzcF9TeW1ib2wpOiBSZW1v dmUgYHBpbm5lZCcgZmxhZy4KKGJ1aWxkX3B1cmVfY19zdHJpbmcsIHB1cmVfbGlzdG4pOiBSZW1v dmUuICBBbGwgY2FsbHMgcmVtb3ZlZC4KKiBzcmMvcHVyZXNpemUuaDogUmVtb3ZlIGZpbGUuCiog c3JjL2Zucy5jIChGbWFrZV9oYXNoX3RhYmxlKTogSWdub3JlIGA6cHVyZWNvcHknIGFyZ3VtZW50 LgoqIHNyYy9kb2MuYyAoc3RvcmVfZnVuY3Rpb25fZG9jc3RyaW5nKTogUmVtb3ZlIGNvbW1lbnQg YWJvdXQgcHVyZQpzcGFjZS4KKiBzcmMvZGF0YS5jIChwdXJlX3dyaXRlX2Vycm9yKTogUmVtb3Zl LiAgQWxsIGNhbGxzIHJlbW92ZWQuCiogc3JjL2NvbmZfcG9zdC5oIChTWVNURU1fUFVSRVNJWkVf RVhUUkEpOiBSZW1vdmUuCiogc3JjL2Zucy5jIChtYWtlX2hhc2hfdGFibGUpOiBEcm9wIGBwdXJl Y29weScgYXJndW1lbnQuICBBbGwKY2FsbGVycyBjaGFuZ2VkIHRvIHJlbW92ZSBhcmd1bWVudC4K KiBzcmMvYWxsb2MuYyAobWFrZV9wdXJlX3N0cmluZywgbWFrZV9wdXJlX2Nfc3RyaW5nLCBwdXJl X2NvbnMpCihwdXJlX2xpc3QpOiBSZW1vdmUuICBBbGwgY2FsbHMgcmVtb3ZlZC4KKGNoZWNrX3B1 cmVfc2l6ZSk6IFJlbW92ZS4gIEFsbCBjYWxscyByZW1vdmVkLgooY29uc19saXN0bik6IFNpbXBs aWZ5LgooRm1ha2VfYnl0ZV9jb2RlKTogUmVtb3ZlIGNvbW1lbnQgYWJvdXQgcHVyZSBzcGFjZS4K KHBvaW50ZXJfYWxpZ24pOiBNb3ZlIGRlZmluaXRpb24gdG8gYXZvaWQgd2FybmluZy4KKiBzcmMv TWFrZWZpbGUuaW46IFJlbW92ZSBjb21tZW50IGFib3V0IHB1cmUgc3BhY2UuCi0tLQogZG9jL2xp c3ByZWYvZWxpc3AudGV4aSAgICAgfCAgIDEgLQogZG9jL2xpc3ByZWYvaW50ZXJuYWxzLnRleGkg fCAgNzggLS0tLS0tCiBkb2MvbGlzcHJlZi9zeW1ib2xzLnRleGkgICB8ICAgMyArLQogc3JjL01h a2VmaWxlLmluICAgICAgICAgICAgfCAgIDIgLQogc3JjL2FsbG9jLmMgICAgICAgICAgICAgICAg fCA1NDkgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2J1ZmZlci5j ICAgICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9jYWxsaW50LmMgICAgICAgICAgICAgIHwgICA4 ICstCiBzcmMvY2F0ZWdvcnkuYyAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2NvZGluZy5jICAg ICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9jb25mX3Bvc3QuaCAgICAgICAgICAgIHwgIDMzIC0t LQogc3JjL2RhdGEuYyAgICAgICAgICAgICAgICAgfCAgMjkgKy0KIHNyYy9kYnVzYmluZC5jICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvZGVwcy5tayAgICAgICAgICAgICAgICB8ICAxMCArLQog c3JjL2RvYy5jICAgICAgICAgICAgICAgICAgfCAgIDMgLQogc3JjL2VtYWNzLW1vZHVsZS5jICAg ICAgICAgfCAgMjggKy0KIHNyYy9lbWFjcy5jICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMv ZXZhbC5jICAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2ZpbGVpby5jICAgICAgICAgICAg ICAgfCAgMjIgKy0KIHNyYy9mbnMuYyAgICAgICAgICAgICAgICAgIHwgIDMyICstLQogc3JjL2Zv bnRzZXQuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9mcmFtZS5jICAgICAgICAgICAgICAg IHwgICAyICstCiBzcmMvaW1hZ2UuYyAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2ludGVy dmFscy5jICAgICAgICAgICAgfCAgIDIgLQogc3JjL2pzb24uYyAgICAgICAgICAgICAgICAgfCAg IDQgKy0KIHNyYy9rZXlib2FyZC5jICAgICAgICAgICAgIHwgICA4ICstCiBzcmMva2V5bWFwLmMg ICAgICAgICAgICAgICB8ICAzNCArLS0KIHNyYy9saXNwLmggICAgICAgICAgICAgICAgIHwgIDQx ICstLQogc3JjL2xyZWFkLmMgICAgICAgICAgICAgICAgfCAgNTMgKystLQogc3JjL3BkdW1wZXIu YyAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9wcmludC5jICAgICAgICAgICAgICAgIHwgICA2 IC0KIHNyYy9wcm9jZXNzLmMgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvcHJvZmlsZXIuYyAg ICAgICAgICAgICB8ICAgMiArLQogc3JjL3B1cmVzaXplLmggICAgICAgICAgICAgfCAxMTUgLS0t LS0tLS0KIHNyYy9zZWFyY2guYyAgICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvc3ludGF4LmMg ICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL3czMmZucy5jICAgICAgICAgICAgICAgfCAgIDQg Ky0KIHNyYy94ZGlzcC5jICAgICAgICAgICAgICAgIHwgIDE4ICstCiBzcmMveGZhY2VzLmMgICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjL3hmbnMuYyAgICAgICAgICAgICAgICAgfCAgIDkgKy0K IHNyYy94dGVybS5jICAgICAgICAgICAgICAgIHwgICA0ICstCiA0MCBmaWxlcyBjaGFuZ2VkLCAy MDEgaW5zZXJ0aW9ucygrKSwgOTk1IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Yy9wdXJlc2l6ZS5oCgpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aSBiL2RvYy9s aXNwcmVmL2VsaXNwLnRleGkKaW5kZXggMTIyNTVkMTIyZjlmZS4uMjAxNDI5MjAyOGIyNiAxMDA2 NDQKLS0tIGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aQorKysgYi9kb2MvbGlzcHJlZi9lbGlzcC50 ZXhpCkBAIC0xNjAxLDcgKzE2MDEsNiBAQCBUb3AKIEdOVSBFbWFjcyBJbnRlcm5hbHMKIAogKiBC dWlsZGluZyBFbWFjczo6ICAgICAgICAgIEhvdyB0aGUgZHVtcGVkIEVtYWNzIGlzIG1hZGUuCi0q IFB1cmUgU3RvcmFnZTo6ICAgICAgICAgICAgS2x1ZGdlIHRvIG1ha2UgcHJlbG9hZGVkIExpc3Ag ZnVuY3Rpb25zIHNoYXJlYWJsZS4KICogR2FyYmFnZSBDb2xsZWN0aW9uOjogICAgICBSZWNsYWlt aW5nIHNwYWNlIGZvciBMaXNwIG9iamVjdHMgbm8gbG9uZ2VyIHVzZWQuCiAqIFN0YWNrLWFsbG9j YXRlZCBPYmplY3RzOjogVGVtcG9yYXJ5IGNvbnNlcyBhbmQgc3RyaW5ncyBvbiBDIHN0YWNrLgog KiBNZW1vcnkgVXNhZ2U6OiAgICAgICAgICAgIEluZm8gYWJvdXQgdG90YWwgc2l6ZSBvZiBMaXNw IG9iamVjdHMgbWFkZSBzbyBmYXIuCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9pbnRlcm5hbHMu dGV4aSBiL2RvYy9saXNwcmVmL2ludGVybmFscy50ZXhpCmluZGV4IDQxNTBhMmIyMWI4ZmIuLmI2 ODQ5MzM4ODdiODAgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL2ludGVybmFscy50ZXhpCisrKyBi L2RvYy9saXNwcmVmL2ludGVybmFscy50ZXhpCkBAIC0xMiw3ICsxMiw2IEBAIEdOVSBFbWFjcyBJ bnRlcm5hbHMKIAogQG1lbnUKICogQnVpbGRpbmcgRW1hY3M6OiAgICAgIEhvdyB0aGUgZHVtcGVk IEVtYWNzIGlzIG1hZGUuCi0qIFB1cmUgU3RvcmFnZTo6ICAgICAgICBLbHVkZ2UgdG8gbWFrZSBw cmVsb2FkZWQgTGlzcCBmdW5jdGlvbnMgc2hhcmVhYmxlLgogKiBHYXJiYWdlIENvbGxlY3Rpb246 OiAgUmVjbGFpbWluZyBzcGFjZSBmb3IgTGlzcCBvYmplY3RzIG5vIGxvbmdlciB1c2VkLgogKiBT dGFjay1hbGxvY2F0ZWQgT2JqZWN0czo6ICAgIFRlbXBvcmFyeSBjb25zZXMgYW5kIHN0cmluZ3Mg b24gQyBzdGFjay4KICogTWVtb3J5IFVzYWdlOjogICAgICAgIEluZm8gYWJvdXQgdG90YWwgc2l6 ZSBvZiBMaXNwIG9iamVjdHMgbWFkZSBzbyBmYXIuCkBAIC0yNDMsNzEgKzI0Miw2IEBAIEJ1aWxk aW5nIEVtYWNzCiB2YWx1ZSBpcyBuaWwuCiBAZW5kIGRlZnVuCiAKLUBub2RlIFB1cmUgU3RvcmFn ZQotQHNlY3Rpb24gUHVyZSBTdG9yYWdlCi1AY2luZGV4IHB1cmUgc3RvcmFnZQotCi0gIEVtYWNz IExpc3AgdXNlcyB0d28ga2luZHMgb2Ygc3RvcmFnZSBmb3IgdXNlci1jcmVhdGVkIExpc3Agb2Jq ZWN0czoKLUBkZm57bm9ybWFsIHN0b3JhZ2V9IGFuZCBAZGZue3B1cmUgc3RvcmFnZX0uICBOb3Jt YWwgc3RvcmFnZSBpcyB3aGVyZQotYWxsIHRoZSBuZXcgZGF0YSBjcmVhdGVkIGR1cmluZyBhbiBF bWFjcyBzZXNzaW9uIGFyZSBrZXB0Ci0oQHB4cmVme0dhcmJhZ2UgQ29sbGVjdGlvbn0pLiAgUHVy ZSBzdG9yYWdlIGlzIHVzZWQgZm9yIGNlcnRhaW4gZGF0YQotaW4gdGhlIHByZWxvYWRlZCBzdGFu ZGFyZCBMaXNwIGZpbGVzLS0tZGF0YSB0aGF0IHNob3VsZCBuZXZlciBjaGFuZ2UKLWR1cmluZyBh Y3R1YWwgdXNlIG9mIEVtYWNzLgotCi0gIFB1cmUgc3RvcmFnZSBpcyBhbGxvY2F0ZWQgb25seSB3 aGlsZSBAY29tbWFuZHt0ZW1hY3N9IGlzIGxvYWRpbmcgdGhlCi1zdGFuZGFyZCBwcmVsb2FkZWQg TGlzcCBsaWJyYXJpZXMuICBJbiB0aGUgZmlsZSBAZmlsZXtlbWFjc30sIGl0IGlzCi1tYXJrZWQg YXMgcmVhZC1vbmx5IChvbiBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IHBlcm1pdCB0aGlzKSwgc28g dGhhdAotdGhlIG1lbW9yeSBzcGFjZSBjYW4gYmUgc2hhcmVkIGJ5IGFsbCB0aGUgRW1hY3Mgam9i cyBydW5uaW5nIG9uIHRoZQotbWFjaGluZSBhdCBvbmNlLiAgUHVyZSBzdG9yYWdlIGlzIG5vdCBl eHBhbmRhYmxlOyBhIGZpeGVkIGFtb3VudCBpcwotYWxsb2NhdGVkIHdoZW4gRW1hY3MgaXMgY29t cGlsZWQsIGFuZCBpZiB0aGF0IGlzIG5vdCBzdWZmaWNpZW50IGZvcgotdGhlIHByZWxvYWRlZCBs aWJyYXJpZXMsIEBmaWxle3RlbWFjc30gYWxsb2NhdGVzIGR5bmFtaWMgbWVtb3J5IGZvcgotdGhl IHBhcnQgdGhhdCBkaWRuJ3QgZml0LiAgSWYgRW1hY3Mgd2lsbCBiZSBkdW1wZWQgdXNpbmcgdGhl Ci1AY29kZXtwZHVtcH0gbWV0aG9kIChAcHhyZWZ7QnVpbGRpbmcgRW1hY3N9KSwgdGhlIHB1cmUt c3BhY2Ugb3ZlcmZsb3cKLWlzIG9mIG5vIHNwZWNpYWwgaW1wb3J0YW5jZSAoaXQganVzdCBtZWFu cyBzb21lIG9mIHRoZSBwcmVsb2FkZWQgc3R1ZmYKLWNhbm5vdCBiZSBzaGFyZWQgd2l0aCBvdGhl ciBFbWFjcyBqb2JzKS4gIEhvd2V2ZXIsIGlmIEVtYWNzIHdpbGwgYmUKLWR1bXBlZCB1c2luZyB0 aGUgbm93IG9ic29sZXRlIEBjb2Rle3VuZXhlY30gbWV0aG9kLCB0aGUgcmVzdWx0aW5nCi1pbWFn ZSB3aWxsIHdvcmssIGJ1dCBnYXJiYWdlIGNvbGxlY3Rpb24gKEBweHJlZntHYXJiYWdlIENvbGxl Y3Rpb259KQotaXMgZGlzYWJsZWQgaW4gdGhpcyBzaXR1YXRpb24sIGNhdXNpbmcgYSBtZW1vcnkg bGVhay4gIFN1Y2ggYW4KLW92ZXJmbG93IG5vcm1hbGx5IHdvbid0IGhhcHBlbiB1bmxlc3MgeW91 IHRyeSB0byBwcmVsb2FkIGFkZGl0aW9uYWwKLWxpYnJhcmllcyBvciBhZGQgZmVhdHVyZXMgdG8g dGhlIHN0YW5kYXJkIG9uZXMuICBFbWFjcyB3aWxsIGRpc3BsYXkgYQotd2FybmluZyBhYm91dCB0 aGUgb3ZlcmZsb3cgd2hlbiBpdCBzdGFydHMsIGlmIGl0IHdhcyBkdW1wZWQgdXNpbmcKLUBjb2Rl e3VuZXhlY30uICBJZiB0aGlzIGhhcHBlbnMsIHlvdSBzaG91bGQgaW5jcmVhc2UgdGhlIGNvbXBp bGF0aW9uCi1wYXJhbWV0ZXIgQGNvZGV7U1lTVEVNX1BVUkVTSVpFX0VYVFJBfSBpbiB0aGUgZmls ZQotQGZpbGV7c3JjL3B1cmVzaXplLmh9IGFuZCByZWJ1aWxkIEVtYWNzLgotCi1AZGVmdW4gcHVy ZWNvcHkgb2JqZWN0Ci1UaGlzIGZ1bmN0aW9uIG1ha2VzIGEgY29weSBpbiBwdXJlIHN0b3JhZ2Ug b2YgQHZhcntvYmplY3R9LCBhbmQgcmV0dXJucwotaXQuICBJdCBjb3BpZXMgYSBzdHJpbmcgYnkg c2ltcGx5IG1ha2luZyBhIG5ldyBzdHJpbmcgd2l0aCB0aGUgc2FtZQotY2hhcmFjdGVycywgYnV0 IHdpdGhvdXQgdGV4dCBwcm9wZXJ0aWVzLCBpbiBwdXJlIHN0b3JhZ2UuICBJdAotcmVjdXJzaXZl bHkgY29waWVzIHRoZSBjb250ZW50cyBvZiB2ZWN0b3JzIGFuZCBjb25zIGNlbGxzLiAgSXQgZG9l cwotbm90IG1ha2UgY29waWVzIG9mIG90aGVyIG9iamVjdHMgc3VjaCBhcyBzeW1ib2xzLCBidXQg anVzdCByZXR1cm5zCi10aGVtIHVuY2hhbmdlZC4gIEl0IHNpZ25hbHMgYW4gZXJyb3IgaWYgYXNr ZWQgdG8gY29weSBtYXJrZXJzLgotCi1UaGlzIGZ1bmN0aW9uIGlzIGEgbm8tb3AgZXhjZXB0IHdo aWxlIEVtYWNzIGlzIGJlaW5nIGJ1aWx0IGFuZCBkdW1wZWQ7Ci1pdCBpcyB1c3VhbGx5IGNhbGxl ZCBvbmx5IGluIHByZWxvYWRlZCBMaXNwIGZpbGVzLgotQGVuZCBkZWZ1bgotCi1AZGVmdmFyIHB1 cmUtYnl0ZXMtdXNlZAotVGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgdGhlIG51bWJlciBv ZiBieXRlcyBvZiBwdXJlIHN0b3JhZ2UKLWFsbG9jYXRlZCBzbyBmYXIuICBUeXBpY2FsbHksIGlu IGEgZHVtcGVkIEVtYWNzLCB0aGlzIG51bWJlciBpcyB2ZXJ5Ci1jbG9zZSB0byB0aGUgdG90YWwg YW1vdW50IG9mIHB1cmUgc3RvcmFnZSBhdmFpbGFibGUtLS1pZiBpdCB3ZXJlIG5vdCwKLXdlIHdv dWxkIHByZWFsbG9jYXRlIGxlc3MuCi1AZW5kIGRlZnZhcgotCi1AZGVmdmFyIHB1cmlmeS1mbGFn Ci1UaGlzIHZhcmlhYmxlIGRldGVybWluZXMgd2hldGhlciBAY29kZXtkZWZ1bn0gc2hvdWxkIG1h a2UgYSBjb3B5IG9mIHRoZQotZnVuY3Rpb24gZGVmaW5pdGlvbiBpbiBwdXJlIHN0b3JhZ2UuICBJ ZiBpdCBpcyBub24tQGNvZGV7bmlsfSwgdGhlbiB0aGUKLWZ1bmN0aW9uIGRlZmluaXRpb24gaXMg Y29waWVkIGludG8gcHVyZSBzdG9yYWdlLgotCi1UaGlzIGZsYWcgaXMgQGNvZGV7dH0gd2hpbGUg bG9hZGluZyBhbGwgb2YgdGhlIGJhc2ljIGZ1bmN0aW9ucyBmb3IKLWJ1aWxkaW5nIEVtYWNzIGlu aXRpYWxseSAoYWxsb3dpbmcgdGhvc2UgZnVuY3Rpb25zIHRvIGJlIHNoYXJlYWJsZSBhbmQKLW5v bi1jb2xsZWN0aWJsZSkuICBEdW1waW5nIEVtYWNzIGFzIGFuIGV4ZWN1dGFibGUgYWx3YXlzIHdy aXRlcwotQGNvZGV7bmlsfSBpbiB0aGlzIHZhcmlhYmxlLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1 ZSBpdCBhY3R1YWxseSBoYXMKLWJlZm9yZSBhbmQgYWZ0ZXIgZHVtcGluZy4KLQotWW91IHNob3Vs ZCBub3QgY2hhbmdlIHRoaXMgZmxhZyBpbiBhIHJ1bm5pbmcgRW1hY3MuCi1AZW5kIGRlZnZhcgot CiBAbm9kZSBHYXJiYWdlIENvbGxlY3Rpb24KIEBzZWN0aW9uIEdhcmJhZ2UgQ29sbGVjdGlvbgog CkBAIC01MTQsMTIgKzQ0OCw2IEBAIEdhcmJhZ2UgQ29sbGVjdGlvbgogQGl0ZW0gZnJlZS1zaXpl CiBIZWFwIHNwYWNlIHdoaWNoIGlzIG5vdCBjdXJyZW50bHkgdXNlZCwgaW4gQHZhcnt1bml0LXNp emV9IHVuaXRzLgogQGVuZCB0YWJsZQotCi1JZiB0aGVyZSB3YXMgb3ZlcmZsb3cgaW4gcHVyZSBz cGFjZSAoQHB4cmVme1B1cmUgU3RvcmFnZX0pLCBhbmQgRW1hY3MKLXdhcyBkdW1wZWQgdXNpbmcg dGhlIChub3cgb2Jzb2xldGUpIEBjb2Rle3VuZXhlY30gbWV0aG9kCi0oQHB4cmVme0J1aWxkaW5n IEVtYWNzfSksIHRoZW4gQGNvZGV7Z2FyYmFnZS1jb2xsZWN0fSByZXR1cm5zCi1AY29kZXtuaWx9 LCBiZWNhdXNlIGEgcmVhbCBnYXJiYWdlIGNvbGxlY3Rpb24gY2Fubm90IGJlIGRvbmUgaW4gdGhh dAotY2FzZS4KIEBlbmQgZGVmZm4KIAogQGRlZm9wdCBnYXJiYWdlLWNvbGxlY3Rpb24tbWVzc2Fn ZXMKQEAgLTkzNCwxMiArODYyLDYgQEAgV3JpdGluZyBFbWFjcyBQcmltaXRpdmVzCiBhcmd1bWVu dHMgY291bGQgYmUgdmVyeSBsb25nLiAgVGhpcyBpbmNyZWFzZXMgRW1hY3MgcmVzcG9uc2l2ZW5l c3MgYW5kCiBpbXByb3ZlcyB1c2VyIGV4cGVyaWVuY2UuCiAKLSAgWW91IG11c3Qgbm90IHVzZSBD IGluaXRpYWxpemVycyBmb3Igc3RhdGljIG9yIGdsb2JhbCB2YXJpYWJsZXMgdW5sZXNzCi10aGUg dmFyaWFibGVzIGFyZSBuZXZlciB3cml0dGVuIG9uY2UgRW1hY3MgaXMgZHVtcGVkLiAgVGhlc2Ug dmFyaWFibGVzCi13aXRoIGluaXRpYWxpemVycyBhcmUgYWxsb2NhdGVkIGluIGFuIGFyZWEgb2Yg bWVtb3J5IHRoYXQgYmVjb21lcwotcmVhZC1vbmx5IChvbiBjZXJ0YWluIG9wZXJhdGluZyBzeXN0 ZW1zKSBhcyBhIHJlc3VsdCBvZiBkdW1waW5nIEVtYWNzLgotQHhyZWZ7UHVyZSBTdG9yYWdlfS4K LQogQGNpbmRleCBAY29kZXtkZWZzdWJyfSwgTGlzcCBzeW1ib2wgZm9yIGEgcHJpbWl0aXZlCiAg IERlZmluaW5nIHRoZSBDIGZ1bmN0aW9uIGlzIG5vdCBlbm91Z2ggdG8gbWFrZSBhIExpc3AgcHJp bWl0aXZlCiBhdmFpbGFibGU7IHlvdSBtdXN0IGFsc28gY3JlYXRlIHRoZSBMaXNwIHN5bWJvbCBm b3IgdGhlIHByaW1pdGl2ZSBhbmQKZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL3N5bWJvbHMudGV4 aSBiL2RvYy9saXNwcmVmL3N5bWJvbHMudGV4aQppbmRleCBlZDM2ZjUxMzlhODU2Li4xMTI0N2Nk NjEyMTI4IDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9zeW1ib2xzLnRleGkKKysrIGIvZG9jL2xp c3ByZWYvc3ltYm9scy50ZXhpCkBAIC01NjIsOCArNTYyLDcgQEAgU3RhbmRhcmQgUHJvcGVydGll cwogSWYgdGhlIHZhbHVlIGlzIG5vbi1AY29kZXtuaWx9LCB0aGUgbmFtZWQgZnVuY3Rpb24gaXMg Y29uc2lkZXJlZCB0byBiZQogcHVyZSAoQHB4cmVme1doYXQgSXMgYSBGdW5jdGlvbn0pLiAgQ2Fs bHMgd2l0aCBjb25zdGFudCBhcmd1bWVudHMgY2FuCiBiZSBldmFsdWF0ZWQgYXQgY29tcGlsZSB0 aW1lLiAgVGhpcyBtYXkgc2hpZnQgcnVuIHRpbWUgZXJyb3JzIHRvCi1jb21waWxlIHRpbWUuICBO b3QgdG8gYmUgY29uZnVzZWQgd2l0aCBwdXJlIHN0b3JhZ2UgKEBweHJlZntQdXJlCi1TdG9yYWdl fSkuCitjb21waWxlIHRpbWUuCiAKIEBpdGVtIHJpc2t5LWxvY2FsLXZhcmlhYmxlCiBJZiB0aGUg dmFsdWUgaXMgbm9uLUBjb2Rle25pbH0sIHRoZSBuYW1lZCB2YXJpYWJsZSBpcyBjb25zaWRlcmVk IHJpc2t5CmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuaW4gYi9zcmMvTWFrZWZpbGUuaW4KaW5k ZXggNDEwMGVkZjQ3MTJmZS4uMDMzMGIyZDM1NGIxOCAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxl LmluCisrKyBiL3NyYy9NYWtlZmlsZS5pbgpAQCAtNDA2LDggKzQwNiw2IEBAIC5jLm86CiAubS5v OgogCSQoQU1fVl9DQykkKENDKSAtYyAkKENQUEZMQUdTKSAkKEFMTF9PQkpDX0NGTEFHUykgJChQ Uk9GSUxJTkdfQ0ZMQUdTKSAkPAogCi0jIyBsYXN0ZmlsZSBtdXN0IGZvbGxvdyBhbGwgZmlsZXMg d2hvc2UgaW5pdGlhbGl6ZWQgZGF0YSBhcmVhcyBzaG91bGQKLSMjIGJlIGR1bXBlZCBhcyBwdXJl IGJ5IGR1bXAtZW1hY3MuCiBiYXNlX29iaiA9IGRpc3BuZXcubyBmcmFtZS5vIHNjcm9sbC5vIHhk aXNwLm8gbWVudS5vICQoWE1FTlVfT0JKKSB3aW5kb3cubyBcCiAJY2hhcnNldC5vIGNvZGluZy5v IGNhdGVnb3J5Lm8gY2NsLm8gY2hhcmFjdGVyLm8gY2hhcnRhYi5vIGJpZGkubyBcCiAJJChDTV9P QkopIHRlcm0ubyB0ZXJtaW5hbC5vIHhmYWNlcy5vICQoWE9CSikgJChHVEtfT0JKKSAkKERCVVNf T0JKKSBcCmRpZmYgLS1naXQgYS9zcmMvYWxsb2MuYyBiL3NyYy9hbGxvYy5jCmluZGV4IGU3MmZj NGM0MzMyZGUuLmJlZTcwMmU5MjE2OGMgMTAwNjQ0Ci0tLSBhL3NyYy9hbGxvYy5jCisrKyBiL3Ny Yy9hbGxvYy5jCkBAIC0zNCw3ICszNCw2IEBAIENvcHlyaWdodCAoQykgMTk4NS0xOTg2LCAxOTg4 LCAxOTkzLTE5OTUsIDE5OTctMjAyMSBGcmVlIFNvZnR3YXJlCiAjaW5jbHVkZSAiYmlnbnVtLmgi CiAjaW5jbHVkZSAiZGlzcGV4dGVybi5oIgogI2luY2x1ZGUgImludGVydmFscy5oIgotI2luY2x1 ZGUgInB1cmVzaXplLmgiCiAjaW5jbHVkZSAic2hlYXAuaCIKICNpbmNsdWRlICJzeXNzdGRpby5o IgogI2luY2x1ZGUgInN5c3RpbWUuaCIKQEAgLTMzMywzMyArMzMyLDYgQEAgI2RlZmluZSBISV9U SFJFU0hPTEQgKEVNQUNTX0lOVF9NQVggLyAyKQogCiAjZGVmaW5lIFNQQVJFX01FTU9SWSAoMSA8 PCAxNCkKIAotLyogSW5pdGlhbGl6ZSBpdCB0byBhIG5vbnplcm8gdmFsdWUgdG8gZm9yY2UgaXQg aW50byBkYXRhIHNwYWNlCi0gICAocmF0aGVyIHRoYW4gYnNzIHNwYWNlKS4gIFRoYXQgd2F5IHVu ZXhlYyB3aWxsIHJlbWFwIGl0IGludG8gdGV4dAotICAgc3BhY2UgKHB1cmUpLCBvbiBzb21lIHN5 c3RlbXMuICBXZSBoYXZlIG5vdCBpbXBsZW1lbnRlZCB0aGUKLSAgIHJlbWFwcGluZyBvbiBtb3Jl IHJlY2VudCBzeXN0ZW1zIGJlY2F1c2UgdGhpcyBpcyBsZXNzIGltcG9ydGFudAotICAgbm93YWRh eXMgdGhhbiBpbiB0aGUgZGF5cyBvZiBzbWFsbCBtZW1vcmllcyBhbmQgdGltZXNoYXJpbmcuICAq LwotCi1FTUFDU19JTlQgcHVyZVsoUFVSRVNJWkUgKyBzaXplb2YgKEVNQUNTX0lOVCkgLSAxKSAv IHNpemVvZiAoRU1BQ1NfSU5UKV0gPSB7MSx9OwotI2RlZmluZSBQVVJFQkVHIChjaGFyICopIHB1 cmUKLQotLyogUG9pbnRlciB0byB0aGUgcHVyZSBhcmVhLCBhbmQgaXRzIHNpemUuICAqLwotCi1z dGF0aWMgY2hhciAqcHVyZWJlZzsKLXN0YXRpYyBwdHJkaWZmX3QgcHVyZV9zaXplOwotCi0vKiBO dW1iZXIgb2YgYnl0ZXMgb2YgcHVyZSBzdG9yYWdlIHVzZWQgYmVmb3JlIHB1cmUgc3RvcmFnZSBv dmVyZmxvd2VkLgotICAgSWYgdGhpcyBpcyBub24temVybywgdGhpcyBpbXBsaWVzIHRoYXQgYW4g b3ZlcmZsb3cgb2NjdXJyZWQuICAqLwotCi1zdGF0aWMgcHRyZGlmZl90IHB1cmVfYnl0ZXNfdXNl ZF9iZWZvcmVfb3ZlcmZsb3c7Ci0KLS8qIEluZGV4IGluIHB1cmUgYXQgd2hpY2ggbmV4dCBwdXJl IExpc3Agb2JqZWN0IHdpbGwgYmUgYWxsb2NhdGVkLi4gICovCi0KLXN0YXRpYyBwdHJkaWZmX3Qg cHVyZV9ieXRlc191c2VkX2xpc3A7Ci0KLS8qIE51bWJlciBvZiBieXRlcyBhbGxvY2F0ZWQgZm9y IG5vbi1MaXNwIG9iamVjdHMgaW4gcHVyZSBzdG9yYWdlLiAgKi8KLQotc3RhdGljIHB0cmRpZmZf dCBwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3A7Ci0KIC8qIElmIHBvc2l0aXZlLCBnYXJiYWdlIGNv bGxlY3Rpb24gaXMgaW5oaWJpdGVkLiAgT3RoZXJ3aXNlLCB6ZXJvLiAgKi8KIAogc3RhdGljIGlu dHB0cl90IGdhcmJhZ2VfY29sbGVjdGlvbl9pbmhpYml0ZWQ7CkBAIC00MzQsNyArNDA2LDYgQEAg bm9fc2FuaXRpemVfbWVtY3B5ICh2b2lkICpkZXN0LCB2b2lkIGNvbnN0ICpzcmMsIHNpemVfdCBz aXplKQogc3RhdGljIHZvaWQgdW5jaGFpbl9maW5hbGl6ZXIgKHN0cnVjdCBMaXNwX0ZpbmFsaXpl ciAqKTsKIHN0YXRpYyB2b2lkIG1hcmtfdGVybWluYWxzICh2b2lkKTsKIHN0YXRpYyB2b2lkIGdj X3N3ZWVwICh2b2lkKTsKLXN0YXRpYyBMaXNwX09iamVjdCBtYWtlX3B1cmVfdmVjdG9yIChwdHJk aWZmX3QpOwogc3RhdGljIHZvaWQgbWFya19idWZmZXIgKHN0cnVjdCBidWZmZXIgKik7CiAKICNp ZiAhZGVmaW5lZCBSRUxfQUxMT0MgfHwgZGVmaW5lZCBTWVNURU1fTUFMTE9DIHx8IGRlZmluZWQg SFlCUklEX01BTExPQwpAQCAtNTc2LDE2ICs1NDcsNiBAQCAjZGVmaW5lIE1FTV9OSUwgJm1lbV96 CiAKIGludCBzdGF0aWNpZHg7CiAKLXN0YXRpYyB2b2lkICpwdXJlX2FsbG9jIChzaXplX3QsIGlu dCk7Ci0KLS8qIFJldHVybiBQVFIgcm91bmRlZCB1cCB0byB0aGUgbmV4dCBtdWx0aXBsZSBvZiBB TElHTk1FTlQuICAqLwotCi1zdGF0aWMgdm9pZCAqCi1wb2ludGVyX2FsaWduICh2b2lkICpwdHIs IGludCBhbGlnbm1lbnQpCi17Ci0gIHJldHVybiAodm9pZCAqKSBST1VORFVQICgodWludHB0cl90 KSBwdHIsIGFsaWdubWVudCk7Ci19Ci0KIC8qIEV4dHJhY3QgdGhlIHBvaW50ZXIgaGlkZGVuIHdp dGhpbiBPLiAgKi8KIAogc3RhdGljIEFUVFJJQlVURV9OT19TQU5JVElaRV9VTkRFRklORUQgdm9p ZCAqCkBAIC0xMDc1LDYgKzEwMzYsMTUgQEAgdmVyaWZ5IChQT1dFUl9PRl8yIChCTE9DS19BTElH TikpOwogIyBlbGlmICFkZWZpbmVkIEhZQlJJRF9NQUxMT0MgJiYgZGVmaW5lZCBIQVZFX1BPU0lY X01FTUFMSUdOCiAjICBkZWZpbmUgVVNFX0FMSUdORURfQUxMT0MgMQogIyAgZGVmaW5lIGFsaWdu ZWRfYWxsb2MgbXlfYWxpZ25lZF9hbGxvYyAvKiBBdm9pZCBjb2xsaXNpb24gd2l0aCBsaXNwLmgu ICAqLworCisvKiBSZXR1cm4gUFRSIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQgbXVsdGlwbGUgb2Yg QUxJR05NRU5ULiAgKi8KKworc3RhdGljIHZvaWQgKgorcG9pbnRlcl9hbGlnbiAodm9pZCAqcHRy LCBpbnQgYWxpZ25tZW50KQoreworICByZXR1cm4gKHZvaWQgKikgUk9VTkRVUCAoKHVpbnRwdHJf dCkgcHRyLCBhbGlnbm1lbnQpOworfQorCiBzdGF0aWMgdm9pZCAqCiBhbGlnbmVkX2FsbG9jIChz aXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKQEAgLTE2NzksOSArMTY0OSw5IEBAICNk ZWZpbmUgR0NfU1RSSU5HX0VYVFJBIEdDX1NUUklOR19PVkVSUlVOX0NPT0tJRV9TSVpFCiBzdGF0 aWMgdm9pZAogaW5pdF9zdHJpbmdzICh2b2lkKQogewotICBlbXB0eV91bmlieXRlX3N0cmluZyA9 IG1ha2VfcHVyZV9zdHJpbmcgKCIiLCAwLCAwLCAwKTsKKyAgZW1wdHlfdW5pYnl0ZV9zdHJpbmcg PSBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKCIiLCAwLCAwLCBmYWxzZSk7CiAgIHN0YXRpY3BybyAo JmVtcHR5X3VuaWJ5dGVfc3RyaW5nKTsKLSAgZW1wdHlfbXVsdGlieXRlX3N0cmluZyA9IG1ha2Vf cHVyZV9zdHJpbmcgKCIiLCAwLCAwLCAxKTsKKyAgZW1wdHlfbXVsdGlieXRlX3N0cmluZyA9IG1h a2Vfc3BlY2lmaWVkX3N0cmluZyAoIiIsIDAsIDAsIHRydWUpOwogICBzdGF0aWNwcm8gKCZlbXB0 eV9tdWx0aWJ5dGVfc3RyaW5nKTsKIH0KIApAQCAtMTY5OSw3ICsxNjY5LDcgQEAgc3RyaW5nX2J5 dGVzIChzdHJ1Y3QgTGlzcF9TdHJpbmcgKnMpCiAgIHB0cmRpZmZfdCBuYnl0ZXMgPQogICAgIChz LT51LnMuc2l6ZV9ieXRlIDwgMCA/IHMtPnUucy5zaXplICYgfkFSUkFZX01BUktfRkxBRyA6IHMt PnUucy5zaXplX2J5dGUpOwogCi0gIGlmICghUFVSRV9QIChzKSAmJiAhcGR1bXBlcl9vYmplY3Rf cCAocykgJiYgcy0+dS5zLmRhdGEKKyAgaWYgKCFwZHVtcGVyX29iamVjdF9wIChzKSAmJiBzLT51 LnMuZGF0YQogICAgICAgJiYgbmJ5dGVzICE9IFNEQVRBX05CWVRFUyAoU0RBVEFfT0ZfU1RSSU5H IChzKSkpCiAgICAgZW1hY3NfYWJvcnQgKCk7CiAgIHJldHVybiBuYnl0ZXM7CkBAIC0yNDE1LDcg KzIzODUsNyBAQCBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKGNvbnN0IGNoYXIgKmNvbnRlbnRzLAog ewogICBMaXNwX09iamVjdCB2YWw7CiAKLSAgaWYgKG5jaGFycyA8IDApCisgIGlmIChuY2hhcnMg PD0gMCkKICAgICB7CiAgICAgICBpZiAobXVsdGlieXRlKQogCW5jaGFycyA9IG11bHRpYnl0ZV9j aGFyc19pbl90ZXh0ICgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBjb250ZW50cywKQEAgLTI0Njks OCArMjQzOSw2IEBAIG1ha2VfY2xlYXJfbXVsdGlieXRlX3N0cmluZyAoRU1BQ1NfSU5UIG5jaGFy cywgRU1BQ1NfSU5UIG5ieXRlcywgYm9vbCBjbGVhcml0KQogCiAgIGlmIChuY2hhcnMgPCAwKQog ICAgIGVtYWNzX2Fib3J0ICgpOwotICBpZiAoIW5ieXRlcykKLSAgICByZXR1cm4gZW1wdHlfbXVs dGlieXRlX3N0cmluZzsKIAogICBzID0gYWxsb2NhdGVfc3RyaW5nICgpOwogICBzLT51LnMuaW50 ZXJ2YWxzID0gTlVMTDsKQEAgLTI3NTEsMTcgKzI3MTksMTYgQEAgbGlzdDUgKExpc3BfT2JqZWN0 IGFyZzEsIExpc3BfT2JqZWN0IGFyZzIsIExpc3BfT2JqZWN0IGFyZzMsIExpc3BfT2JqZWN0IGFy ZzQsCiB9CiAKIC8qIE1ha2UgYSBsaXN0IG9mIENPVU5UIExpc3BfT2JqZWN0cywgd2hlcmUgQVJH IGlzIHRoZSBmaXJzdCBvbmUuCi0gICBVc2UgQ09OUyB0byBjb25zdHJ1Y3QgdGhlIHBhaXJzLiAg QVAgaGFzIGFueSByZW1haW5pbmcgYXJncy4gICovCisgICBBUCBoYXMgYW55IHJlbWFpbmluZyBh cmdzLiAgKi8KIHN0YXRpYyBMaXNwX09iamVjdAotY29uc19saXN0biAocHRyZGlmZl90IGNvdW50 LCBMaXNwX09iamVjdCBhcmcsCi0JICAgIExpc3BfT2JqZWN0ICgqY29ucykgKExpc3BfT2JqZWN0 LCBMaXNwX09iamVjdCksIHZhX2xpc3QgYXApCitjb25zX2xpc3RuIChwdHJkaWZmX3QgY291bnQs IExpc3BfT2JqZWN0IGFyZywgdmFfbGlzdCBhcCkKIHsKICAgZWFzc3VtZSAoMCA8IGNvdW50KTsK LSAgTGlzcF9PYmplY3QgdmFsID0gY29ucyAoYXJnLCBRbmlsKTsKKyAgTGlzcF9PYmplY3QgdmFs ID0gRmNvbnMgKGFyZywgUW5pbCk7CiAgIExpc3BfT2JqZWN0IHRhaWwgPSB2YWw7CiAgIGZvciAo cHRyZGlmZl90IGkgPSAxOyBpIDwgY291bnQ7IGkrKykKICAgICB7Ci0gICAgICBMaXNwX09iamVj dCBlbGVtID0gY29ucyAodmFfYXJnIChhcCwgTGlzcF9PYmplY3QpLCBRbmlsKTsKKyAgICAgIExp c3BfT2JqZWN0IGVsZW0gPSBGY29ucyAodmFfYXJnIChhcCwgTGlzcF9PYmplY3QpLCBRbmlsKTsK ICAgICAgIFhTRVRDRFIgKHRhaWwsIGVsZW0pOwogICAgICAgdGFpbCA9IGVsZW07CiAgICAgfQpA QCAtMjc3NCwxOCArMjc0MSw3IEBAIGxpc3RuIChwdHJkaWZmX3QgY291bnQsIExpc3BfT2JqZWN0 IGFyZzEsIC4uLikKIHsKICAgdmFfbGlzdCBhcDsKICAgdmFfc3RhcnQgKGFwLCBhcmcxKTsKLSAg TGlzcF9PYmplY3QgdmFsID0gY29uc19saXN0biAoY291bnQsIGFyZzEsIEZjb25zLCBhcCk7Ci0g IHZhX2VuZCAoYXApOwotICByZXR1cm4gdmFsOwotfQotCi0vKiBNYWtlIGEgcHVyZSBsaXN0IG9m IENPVU5UIExpc3BfT2JqZWN0cywgd2hlcmUgQVJHMSBpcyB0aGUgZmlyc3Qgb25lLiAgKi8KLUxp c3BfT2JqZWN0Ci1wdXJlX2xpc3RuIChwdHJkaWZmX3QgY291bnQsIExpc3BfT2JqZWN0IGFyZzEs IC4uLikKLXsKLSAgdmFfbGlzdCBhcDsKLSAgdmFfc3RhcnQgKGFwLCBhcmcxKTsKLSAgTGlzcF9P YmplY3QgdmFsID0gY29uc19saXN0biAoY291bnQsIGFyZzEsIHB1cmVfY29ucywgYXApOworICBM aXNwX09iamVjdCB2YWwgPSBjb25zX2xpc3RuIChjb3VudCwgYXJnMSwgYXApOwogICB2YV9lbmQg KGFwKTsKICAgcmV0dXJuIHZhbDsKIH0KQEAgLTI5NTEsNyArMjkwNyw3IEBAIGxhcmdlX3ZlY3Rv cl92ZWMgKHN0cnVjdCBsYXJnZV92ZWN0b3IgKnApCiAKIHN0YXRpYyBzdHJ1Y3QgbGFyZ2VfdmVj dG9yICpsYXJnZV92ZWN0b3JzOwogCi0vKiBUaGUgb25seSB2ZWN0b3Igd2l0aCAwIHNsb3RzLCBh bGxvY2F0ZWQgZnJvbSBwdXJlIHNwYWNlLiAgKi8KKy8qIFRoZSBvbmx5IHZlY3RvciB3aXRoIDAg c2xvdHMuICAqLwogCiBMaXNwX09iamVjdCB6ZXJvX3ZlY3RvcjsKIApAQCAtMjk4NywxNSArMjk0 Myw2IEBAIGFsbG9jYXRlX3ZlY3Rvcl9ibG9jayAodm9pZCkKICAgcmV0dXJuIGJsb2NrOwogfQog Ci0vKiBDYWxsZWQgb25jZSB0byBpbml0aWFsaXplIHZlY3RvciBhbGxvY2F0aW9uLiAgKi8KLQot c3RhdGljIHZvaWQKLWluaXRfdmVjdG9ycyAodm9pZCkKLXsKLSAgemVyb192ZWN0b3IgPSBtYWtl X3B1cmVfdmVjdG9yICgwKTsKLSAgc3RhdGljcHJvICgmemVyb192ZWN0b3IpOwotfQotCiAvKiBB bGxvY2F0ZSB2ZWN0b3IgZnJvbSBhIHZlY3RvciBibG9jay4gICovCiAKIHN0YXRpYyBzdHJ1Y3Qg TGlzcF9WZWN0b3IgKgpAQCAtMzA4Niw2ICszMDMzLDggQEAgdmVjdG9ybGlrZV9uYnl0ZXMgKGNv bnN0IHVuaW9uIHZlY3Rvcmxpa2VfaGVhZGVyICpoZHIpCiAgICAgfQogICBlbHNlCiAgICAgbndv cmRzID0gc2l6ZTsKKyAgaWYgKG53b3JkcyA9PSAwKQorICAgIG53b3JkcyA9IDE7CiAgIHJldHVy biB2cm91bmR1cCAoaGVhZGVyX3NpemUgKyB3b3JkX3NpemUgKiBud29yZHMpOwogfQogCkBAIC0z MzQzLDYgKzMyOTIsMTggQEAgYWxsb2NhdGVfbmlsX3ZlY3RvciAocHRyZGlmZl90IGxlbikKIH0K IAogCisvKiBDYWxsZWQgb25jZSB0byBpbml0aWFsaXplIHZlY3RvciBhbGxvY2F0aW9uLiAgKi8K Kworc3RhdGljIHZvaWQKK2luaXRfdmVjdG9ycyAodm9pZCkKK3sKKyAgemVyb192ZWN0b3IgPQor ICAgIG1ha2VfbGlzcF9wdHIgKGFsbG9jYXRlX3ZlY3Rvcmxpa2UgKDEsIHRydWUpLCBMaXNwX1Zl Y3Rvcmxpa2UpOworICBYVkVDVE9SICh6ZXJvX3ZlY3RvciktPmhlYWRlci5zaXplID0gMDsKKyAg WFZFQ1RPUiAoemVyb192ZWN0b3IpLT5jb250ZW50c1swXSA9IFFuaWw7CisgIHN0YXRpY3BybyAo Jnplcm9fdmVjdG9yKTsKK30KKwogLyogQWxsb2NhdGUgb3RoZXIgdmVjdG9yLWxpa2Ugc3RydWN0 dXJlcy4gICovCiAKIHN0cnVjdCBMaXNwX1ZlY3RvciAqCkBAIC0zNTU1LDEzICszNTE2LDYgQEAg I2RlZmluZSBTWU1CT0xfQkxPQ0tfU0laRSBcCiAKIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sX2Jsb2Nr ICpzeW1ib2xfYmxvY2s7CiBzdGF0aWMgaW50IHN5bWJvbF9ibG9ja19pbmRleCA9IFNZTUJPTF9C TE9DS19TSVpFOwotLyogUG9pbnRlciB0byB0aGUgZmlyc3Qgc3ltYm9sX2Jsb2NrIHRoYXQgY29u dGFpbnMgcGlubmVkIHN5bWJvbHMuCi0gICBUZXN0cyBmb3IgMjQuNCBzaG93ZWQgdGhhdCBhdCBk dW1wLXRpbWUsIEVtYWNzIGNvbnRhaW5zIGFib3V0IDE1SyBzeW1ib2xzLAotICAgMTBLIG9mIHdo aWNoIGFyZSBwaW5uZWQgKGFuZCBhbGwgYnV0IDI1MCBvZiB0aGVtIGFyZSBpbnRlcm5lZCBpbiBv YmFycmF5KSwKLSAgIHdoZXJlYXMgYSAidHlwaWNhbCBzZXNzaW9uIiBoYXMgaW4gdGhlIG9yZGVy IG9mIDMwSyBzeW1ib2xzLgotICAgYHN5bWJvbF9ibG9ja19waW5uZWQnIGxldHMgbWFya19waW5u ZWRfc3ltYm9scyBzY2FuIG9ubHkgMTVLIHN5bWJvbHMgcmF0aGVyCi0gICB0aGFuIDMwSyB0byBm aW5kIHRoZSAxMEsgc3ltYm9scyB3ZSBuZWVkIHRvIG1hcmsuICAqLwotc3RhdGljIHN0cnVjdCBz eW1ib2xfYmxvY2sgKnN5bWJvbF9ibG9ja19waW5uZWQ7CiAKIC8qIExpc3Qgb2YgZnJlZSBzeW1i b2xzLiAgKi8KIApAQCAtMzU4Nyw3ICszNTQxLDYgQEAgaW5pdF9zeW1ib2wgKExpc3BfT2JqZWN0 IHZhbCwgTGlzcF9PYmplY3QgbmFtZSkKICAgcC0+dS5zLmludGVybmVkID0gU1lNQk9MX1VOSU5U RVJORUQ7CiAgIHAtPnUucy50cmFwcGVkX3dyaXRlID0gU1lNQk9MX1VOVFJBUFBFRF9XUklURTsK ICAgcC0+dS5zLmRlY2xhcmVkX3NwZWNpYWwgPSBmYWxzZTsKLSAgcC0+dS5zLnBpbm5lZCA9IGZh bHNlOwogfQogCiBERUZVTiAoIm1ha2Utc3ltYm9sIiwgRm1ha2Vfc3ltYm9sLCBTbWFrZV9zeW1i b2wsIDEsIDEsIDAsCkBAIC01MTUxLDggKzUxMDQsNiBAQCB2YWxpZF9saXNwX29iamVjdF9wIChM aXNwX09iamVjdCBvYmopCiAgICAgcmV0dXJuIDE7CiAKICAgdm9pZCAqcCA9IFhQTlRSIChvYmop OwotICBpZiAoUFVSRV9QIChwKSkKLSAgICByZXR1cm4gMTsKIAogICBpZiAoU1lNQk9MUCAob2Jq KSAmJiBjX3N5bWJvbF9wIChwKSkKICAgICByZXR1cm4gKChjaGFyICopIHAgLSAoY2hhciAqKSBs aXNwc3ltKSAlIHNpemVvZiBsaXNwc3ltWzBdID09IDA7CkBAIC01MjA4LDI5NiArNTE1OSw4IEBA IHZhbGlkX2xpc3Bfb2JqZWN0X3AgKExpc3BfT2JqZWN0IG9iaikKICAgcmV0dXJuIDA7CiB9CiAK LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgotCQkgICAgICAgUHVyZSBTdG9yYWdlIE1hbmFnZW1lbnQKLSAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLQotLyogQWxsb2NhdGUgcm9vbSBmb3IgU0laRSBieXRlcyBmcm9tIHB1cmUg TGlzcCBzdG9yYWdlIGFuZCByZXR1cm4gYQotICAgcG9pbnRlciB0byBpdC4gIFRZUEUgaXMgdGhl IExpc3AgdHlwZSBmb3Igd2hpY2ggdGhlIG1lbW9yeSBpcwotICAgYWxsb2NhdGVkLiAgVFlQRSA8 IDAgbWVhbnMgaXQncyBub3QgdXNlZCBmb3IgYSBMaXNwIG9iamVjdCwKLSAgIGFuZCB0aGF0IHRo ZSByZXN1bHQgc2hvdWxkIGhhdmUgYW4gYWxpZ25tZW50IG9mIC1UWVBFLgotCi0gICBUaGUgYnl0 ZXMgYXJlIGluaXRpYWxseSB6ZXJvLgotCi0gICBJZiBwdXJlIHNwYWNlIGlzIGV4aGF1c3RlZCwg YWxsb2NhdGUgc3BhY2UgZnJvbSB0aGUgaGVhcC4gIFRoaXMgaXMKLSAgIG1lcmVseSBhbiBleHBl ZGllbnQgdG8gbGV0IEVtYWNzIHdhcm4gdGhhdCBwdXJlIHNwYWNlIHdhcyBleGhhdXN0ZWQKLSAg IGFuZCB0aGF0IEVtYWNzIHNob3VsZCBiZSByZWJ1aWx0IHdpdGggYSBsYXJnZXIgcHVyZSBzcGFj ZS4gICovCi0KLXN0YXRpYyB2b2lkICoKLXB1cmVfYWxsb2MgKHNpemVfdCBzaXplLCBpbnQgdHlw ZSkKLXsKLSAgdm9pZCAqcmVzdWx0OwotCi0gYWdhaW46Ci0gIGlmICh0eXBlID49IDApCi0gICAg ewotICAgICAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIGEgTGlzcCBvYmplY3QgZnJvbSB0aGUgYmVn aW5uaW5nIG9mIHRoZSBmcmVlCi0JIHNwYWNlIHdpdGggdGFraW5nIGFjY291bnQgb2YgYWxpZ25t ZW50LiAgKi8KLSAgICAgIHJlc3VsdCA9IHBvaW50ZXJfYWxpZ24gKHB1cmViZWcgKyBwdXJlX2J5 dGVzX3VzZWRfbGlzcCwgTElTUF9BTElHTk1FTlQpOwotICAgICAgcHVyZV9ieXRlc191c2VkX2xp c3AgPSAoKGNoYXIgKilyZXN1bHQgLSAoY2hhciAqKXB1cmViZWcpICsgc2l6ZTsKLSAgICB9Ci0g IGVsc2UKLSAgICB7Ci0gICAgICAvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgYSBub24tTGlzcCBvYmpl Y3QgZnJvbSB0aGUgZW5kIG9mIHRoZSBmcmVlCi0JIHNwYWNlLiAgKi8KLSAgICAgIHB0cmRpZmZf dCB1bmFsaWduZWRfbm9uX2xpc3AgPSBwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3AgKyBzaXplOwot ICAgICAgY2hhciAqdW5hbGlnbmVkID0gcHVyZWJlZyArIHB1cmVfc2l6ZSAtIHVuYWxpZ25lZF9u b25fbGlzcDsKLSAgICAgIGludCBkZWNyID0gKGludHB0cl90KSB1bmFsaWduZWQgJiAoLTEgLSB0 eXBlKTsKLSAgICAgIHB1cmVfYnl0ZXNfdXNlZF9ub25fbGlzcCA9IHVuYWxpZ25lZF9ub25fbGlz cCArIGRlY3I7Ci0gICAgICByZXN1bHQgPSB1bmFsaWduZWQgLSBkZWNyOwotICAgIH0KLSAgcHVy ZV9ieXRlc191c2VkID0gcHVyZV9ieXRlc191c2VkX2xpc3AgKyBwdXJlX2J5dGVzX3VzZWRfbm9u X2xpc3A7Ci0KLSAgaWYgKHB1cmVfYnl0ZXNfdXNlZCA8PSBwdXJlX3NpemUpCi0gICAgcmV0dXJu IHJlc3VsdDsKLQotICAvKiBEb24ndCBhbGxvY2F0ZSBhIGxhcmdlIGFtb3VudCBoZXJlLAotICAg ICBiZWNhdXNlIGl0IG1pZ2h0IGdldCBtbWFwJ2QgYW5kIHRoZW4gaXRzIGFkZHJlc3MKLSAgICAg bWlnaHQgbm90IGJlIHVzYWJsZS4gICovCi0gIGludCBzbWFsbF9hbW91bnQgPSAxMDAwMDsKLSAg ZWFzc2VydCAoc2l6ZSA8PSBzbWFsbF9hbW91bnQgLSBMSVNQX0FMSUdOTUVOVCk7Ci0gIHB1cmVi ZWcgPSB4emFsbG9jIChzbWFsbF9hbW91bnQpOwotICBwdXJlX3NpemUgPSBzbWFsbF9hbW91bnQ7 Ci0gIHB1cmVfYnl0ZXNfdXNlZF9iZWZvcmVfb3ZlcmZsb3cgKz0gcHVyZV9ieXRlc191c2VkIC0g c2l6ZTsKLSAgcHVyZV9ieXRlc191c2VkID0gMDsKLSAgcHVyZV9ieXRlc191c2VkX2xpc3AgPSBw dXJlX2J5dGVzX3VzZWRfbm9uX2xpc3AgPSAwOwotCi0gIC8qIENhbid0IEdDIGlmIHB1cmUgc3Rv cmFnZSBvdmVyZmxvd2VkIGJlY2F1c2Ugd2UgY2FuJ3QgZGV0ZXJtaW5lCi0gICAgIGlmIHNvbWV0 aGluZyBpcyBhIHB1cmUgb2JqZWN0IG9yIG5vdC4gICovCi0gIGdhcmJhZ2VfY29sbGVjdGlvbl9p bmhpYml0ZWQrKzsKLSAgZ290byBhZ2FpbjsKLX0KLQotCi0jaWZkZWYgSEFWRV9VTkVYRUMKLQot LyogUHJpbnQgYSB3YXJuaW5nIGlmIFBVUkVTSVpFIGlzIHRvbyBzbWFsbC4gICovCi0KLXZvaWQK LWNoZWNrX3B1cmVfc2l6ZSAodm9pZCkKLXsKLSAgaWYgKHB1cmVfYnl0ZXNfdXNlZF9iZWZvcmVf b3ZlcmZsb3cpCi0gICAgbWVzc2FnZSAoKCJlbWFjczowOlB1cmUgTGlzcCBzdG9yYWdlIG92ZXJm bG93IChhcHByb3guICUicEkiZCIKLQkgICAgICAiIGJ5dGVzIG5lZWRlZCkiKSwKLQkgICAgIHB1 cmVfYnl0ZXNfdXNlZCArIHB1cmVfYnl0ZXNfdXNlZF9iZWZvcmVfb3ZlcmZsb3cpOwotfQotI2Vu ZGlmCi0KLQotLyogRmluZCB0aGUgYnl0ZSBzZXF1ZW5jZSB7REFUQVswXSwgLi4uLCBEQVRBW05C WVRFUy0xXSwgJ1wwJ30gZnJvbQotICAgdGhlIG5vbi1MaXNwIGRhdGEgcG9vbCBvZiB0aGUgcHVy ZSBzdG9yYWdlLCBhbmQgcmV0dXJuIGl0cyBzdGFydAotICAgYWRkcmVzcy4gIFJldHVybiBOVUxM IGlmIG5vdCBmb3VuZC4gICovCi0KLXN0YXRpYyBjaGFyICoKLWZpbmRfc3RyaW5nX2RhdGFfaW5f cHVyZSAoY29uc3QgY2hhciAqZGF0YSwgcHRyZGlmZl90IG5ieXRlcykKLXsKLSAgaW50IGk7Ci0g IHB0cmRpZmZfdCBza2lwLCBibV9za2lwWzI1Nl0sIGxhc3RfY2hhcl9za2lwLCBpbmZpbml0eSwg c3RhcnQsIHN0YXJ0X21heDsKLSAgY29uc3QgdW5zaWduZWQgY2hhciAqcDsKLSAgY2hhciAqbm9u X2xpc3BfYmVnOwotCi0gIGlmIChwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3AgPD0gbmJ5dGVzKQot ICAgIHJldHVybiBOVUxMOwotCi0gIC8qIFNldCB1cCB0aGUgQm95ZXItTW9vcmUgdGFibGUuICAq LwotICBza2lwID0gbmJ5dGVzICsgMTsKLSAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQotICAg IGJtX3NraXBbaV0gPSBza2lwOwotCi0gIHAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBkYXRh OwotICB3aGlsZSAoLS1za2lwID4gMCkKLSAgICBibV9za2lwWypwKytdID0gc2tpcDsKLQotICBs YXN0X2NoYXJfc2tpcCA9IGJtX3NraXBbJ1wwJ107Ci0KLSAgbm9uX2xpc3BfYmVnID0gcHVyZWJl ZyArIHB1cmVfc2l6ZSAtIHB1cmVfYnl0ZXNfdXNlZF9ub25fbGlzcDsKLSAgc3RhcnRfbWF4ID0g cHVyZV9ieXRlc191c2VkX25vbl9saXNwIC0gKG5ieXRlcyArIDEpOwotCi0gIC8qIFNlZSB0aGUg Y29tbWVudHMgaW4gdGhlIGZ1bmN0aW9uIGBib3llcl9tb29yZScgKHNlYXJjaC5jKSBmb3IgdGhl Ci0gICAgIHVzZSBvZiBgaW5maW5pdHknLiAgKi8KLSAgaW5maW5pdHkgPSBwdXJlX2J5dGVzX3Vz ZWRfbm9uX2xpc3AgKyAxOwotICBibV9za2lwWydcMCddID0gaW5maW5pdHk7Ci0KLSAgcCA9IChj b25zdCB1bnNpZ25lZCBjaGFyICopIG5vbl9saXNwX2JlZyArIG5ieXRlczsKLSAgc3RhcnQgPSAw OwotICBkbwotICAgIHsKLSAgICAgIC8qIENoZWNrIHRoZSBsYXN0IGNoYXJhY3RlciAoPT0gJ1ww JykuICAqLwotICAgICAgZG8KLQl7Ci0JICBzdGFydCArPSBibV9za2lwWyoocCArIHN0YXJ0KV07 Ci0JfQotICAgICAgd2hpbGUgKHN0YXJ0IDw9IHN0YXJ0X21heCk7Ci0KLSAgICAgIGlmIChzdGFy dCA8IGluZmluaXR5KQotCS8qIENvdWxkbid0IGZpbmQgdGhlIGxhc3QgY2hhcmFjdGVyLiAgKi8K LQlyZXR1cm4gTlVMTDsKLQotICAgICAgLyogTm8gbGVzcyB0aGFuIGBpbmZpbml0eScgbWVhbnMg d2UgY291bGQgZmluZCB0aGUgbGFzdAotCSBjaGFyYWN0ZXIgYXQgYHBbc3RhcnQgLSBpbmZpbml0 eV0nLiAgKi8KLSAgICAgIHN0YXJ0IC09IGluZmluaXR5OwotCi0gICAgICAvKiBDaGVjayB0aGUg cmVtYWluaW5nIGNoYXJhY3RlcnMuICAqLwotICAgICAgaWYgKG1lbWNtcCAoZGF0YSwgbm9uX2xp c3BfYmVnICsgc3RhcnQsIG5ieXRlcykgPT0gMCkKLQkvKiBGb3VuZC4gICovCi0JcmV0dXJuIG5v bl9saXNwX2JlZyArIHN0YXJ0OwotCi0gICAgICBzdGFydCArPSBsYXN0X2NoYXJfc2tpcDsKLSAg ICB9Ci0gIHdoaWxlIChzdGFydCA8PSBzdGFydF9tYXgpOwotCi0gIHJldHVybiBOVUxMOwotfQot Ci0KLS8qIFJldHVybiBhIHN0cmluZyBhbGxvY2F0ZWQgaW4gcHVyZSBzcGFjZS4gIERBVEEgaXMg YSBidWZmZXIgaG9sZGluZwotICAgTkNIQVJTIGNoYXJhY3RlcnMsIGFuZCBOQllURVMgYnl0ZXMg b2Ygc3RyaW5nIGRhdGEuICBNVUxUSUJZVEUKLSAgIG1lYW5zIG1ha2UgdGhlIHJlc3VsdCBzdHJp bmcgbXVsdGlieXRlLgotCi0gICBNdXN0IGdldCBhbiBlcnJvciBpZiBwdXJlIHN0b3JhZ2UgaXMg ZnVsbCwgc2luY2UgaWYgaXQgY2Fubm90IGhvbGQKLSAgIGEgbGFyZ2Ugc3RyaW5nIGl0IG1heSBi ZSBhYmxlIHRvIGhvbGQgY29uc2VzIHRoYXQgcG9pbnQgdG8gdGhhdAotICAgc3RyaW5nOyB0aGVu IHRoZSBzdHJpbmcgaXMgbm90IHByb3RlY3RlZCBmcm9tIGdjLiAgKi8KLQotTGlzcF9PYmplY3QK LW1ha2VfcHVyZV9zdHJpbmcgKGNvbnN0IGNoYXIgKmRhdGEsCi0JCSAgcHRyZGlmZl90IG5jaGFy cywgcHRyZGlmZl90IG5ieXRlcywgYm9vbCBtdWx0aWJ5dGUpCi17Ci0gIExpc3BfT2JqZWN0IHN0 cmluZzsKLSAgc3RydWN0IExpc3BfU3RyaW5nICpzID0gcHVyZV9hbGxvYyAoc2l6ZW9mICpzLCBM aXNwX1N0cmluZyk7Ci0gIHMtPnUucy5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgZmluZF9zdHJp bmdfZGF0YV9pbl9wdXJlIChkYXRhLCBuYnl0ZXMpOwotICBpZiAocy0+dS5zLmRhdGEgPT0gTlVM TCkKLSAgICB7Ci0gICAgICBzLT51LnMuZGF0YSA9IHB1cmVfYWxsb2MgKG5ieXRlcyArIDEsIC0x KTsKLSAgICAgIG1lbWNweSAocy0+dS5zLmRhdGEsIGRhdGEsIG5ieXRlcyk7Ci0gICAgICBzLT51 LnMuZGF0YVtuYnl0ZXNdID0gJ1wwJzsKLSAgICB9Ci0gIHMtPnUucy5zaXplID0gbmNoYXJzOwot ICBzLT51LnMuc2l6ZV9ieXRlID0gbXVsdGlieXRlID8gbmJ5dGVzIDogLTE7Ci0gIHMtPnUucy5p bnRlcnZhbHMgPSBOVUxMOwotICBYU0VUU1RSSU5HIChzdHJpbmcsIHMpOwotICByZXR1cm4gc3Ry aW5nOwotfQotCi0vKiBSZXR1cm4gYSBzdHJpbmcgYWxsb2NhdGVkIGluIHB1cmUgc3BhY2UuICBE byBub3QKLSAgIGFsbG9jYXRlIHRoZSBzdHJpbmcgZGF0YSwganVzdCBwb2ludCB0byBEQVRBLiAg Ki8KLQotTGlzcF9PYmplY3QKLW1ha2VfcHVyZV9jX3N0cmluZyAoY29uc3QgY2hhciAqZGF0YSwg cHRyZGlmZl90IG5jaGFycykKLXsKLSAgTGlzcF9PYmplY3Qgc3RyaW5nOwotICBzdHJ1Y3QgTGlz cF9TdHJpbmcgKnMgPSBwdXJlX2FsbG9jIChzaXplb2YgKnMsIExpc3BfU3RyaW5nKTsKLSAgcy0+ dS5zLnNpemUgPSBuY2hhcnM7Ci0gIHMtPnUucy5zaXplX2J5dGUgPSAtMjsKLSAgcy0+dS5zLmRh dGEgPSAodW5zaWduZWQgY2hhciAqKSBkYXRhOwotICBzLT51LnMuaW50ZXJ2YWxzID0gTlVMTDsK LSAgWFNFVFNUUklORyAoc3RyaW5nLCBzKTsKLSAgcmV0dXJuIHN0cmluZzsKLX0KLQotc3RhdGlj IExpc3BfT2JqZWN0IHB1cmVjb3B5IChMaXNwX09iamVjdCBvYmopOwotCi0vKiBSZXR1cm4gYSBj b25zIGFsbG9jYXRlZCBmcm9tIHB1cmUgc3BhY2UuICBHaXZlIGl0IHB1cmUgY29waWVzCi0gICBv ZiBDQVIgYXMgY2FyIGFuZCBDRFIgYXMgY2RyLiAgKi8KLQotTGlzcF9PYmplY3QKLXB1cmVfY29u cyAoTGlzcF9PYmplY3QgY2FyLCBMaXNwX09iamVjdCBjZHIpCi17Ci0gIExpc3BfT2JqZWN0IG5l dzsKLSAgc3RydWN0IExpc3BfQ29ucyAqcCA9IHB1cmVfYWxsb2MgKHNpemVvZiAqcCwgTGlzcF9D b25zKTsKLSAgWFNFVENPTlMgKG5ldywgcCk7Ci0gIFhTRVRDQVIgKG5ldywgcHVyZWNvcHkgKGNh cikpOwotICBYU0VUQ0RSIChuZXcsIHB1cmVjb3B5IChjZHIpKTsKLSAgcmV0dXJuIG5ldzsKLX0K LQotCi0vKiBWYWx1ZSBpcyBhIGZsb2F0IG9iamVjdCB3aXRoIHZhbHVlIE5VTSBhbGxvY2F0ZWQg ZnJvbSBwdXJlIHNwYWNlLiAgKi8KLQotc3RhdGljIExpc3BfT2JqZWN0Ci1tYWtlX3B1cmVfZmxv YXQgKGRvdWJsZSBudW0pCi17Ci0gIExpc3BfT2JqZWN0IG5ldzsKLSAgc3RydWN0IExpc3BfRmxv YXQgKnAgPSBwdXJlX2FsbG9jIChzaXplb2YgKnAsIExpc3BfRmxvYXQpOwotICBYU0VURkxPQVQg KG5ldywgcCk7Ci0gIFhGTE9BVF9JTklUIChuZXcsIG51bSk7Ci0gIHJldHVybiBuZXc7Ci19Ci0K LS8qIFZhbHVlIGlzIGEgYmlnbnVtIG9iamVjdCB3aXRoIHZhbHVlIFZBTFVFIGFsbG9jYXRlZCBm cm9tIHB1cmUKLSAgIHNwYWNlLiAgKi8KLQogc3RhdGljIExpc3BfT2JqZWN0Ci1tYWtlX3B1cmVf YmlnbnVtIChMaXNwX09iamVjdCB2YWx1ZSkKLXsKLSAgbXB6X3QgY29uc3QgKm4gPSB4YmlnbnVt X3ZhbCAodmFsdWUpOwotICBzaXplX3QgaSwgbmxpbWJzID0gbXB6X3NpemUgKCpuKTsKLSAgc2l6 ZV90IG5ieXRlcyA9IG5saW1icyAqIHNpemVvZiAobXBfbGltYl90KTsKLSAgbXBfbGltYl90ICpw dXJlX2xpbWJzOwotICBtcF9zaXplX3QgbmV3X3NpemU7Ci0KLSAgc3RydWN0IExpc3BfQmlnbnVt ICpiID0gcHVyZV9hbGxvYyAoc2l6ZW9mICpiLCBMaXNwX1ZlY3Rvcmxpa2UpOwotICBYU0VUUFZF Q1RZUEVTSVpFIChiLCBQVkVDX0JJR05VTSwgMCwgVkVDU0laRSAoc3RydWN0IExpc3BfQmlnbnVt KSk7Ci0KLSAgaW50IGxpbWJfYWxpZ25tZW50ID0gYWxpZ25vZiAobXBfbGltYl90KTsKLSAgcHVy ZV9saW1icyA9IHB1cmVfYWxsb2MgKG5ieXRlcywgLSBsaW1iX2FsaWdubWVudCk7Ci0gIGZvciAo aSA9IDA7IGkgPCBubGltYnM7ICsraSkKLSAgICBwdXJlX2xpbWJzW2ldID0gbXB6X2dldGxpbWJu ICgqbiwgaSk7Ci0KLSAgbmV3X3NpemUgPSBubGltYnM7Ci0gIGlmIChtcHpfc2duICgqbikgPCAw KQotICAgIG5ld19zaXplID0gLW5ld19zaXplOwotCi0gIG1wel9yb2luaXRfbiAoYi0+dmFsdWUs IHB1cmVfbGltYnMsIG5ld19zaXplKTsKLQotICByZXR1cm4gbWFrZV9saXNwX3B0ciAoYiwgTGlz cF9WZWN0b3JsaWtlKTsKLX0KLQotLyogUmV0dXJuIGEgdmVjdG9yIHdpdGggcm9vbSBmb3IgTEVO IExpc3BfT2JqZWN0cyBhbGxvY2F0ZWQgZnJvbQotICAgcHVyZSBzcGFjZS4gICovCi0KLXN0YXRp YyBMaXNwX09iamVjdAotbWFrZV9wdXJlX3ZlY3RvciAocHRyZGlmZl90IGxlbikKLXsKLSAgTGlz cF9PYmplY3QgbmV3OwotICBzaXplX3Qgc2l6ZSA9IGhlYWRlcl9zaXplICsgbGVuICogd29yZF9z aXplOwotICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnAgPSBwdXJlX2FsbG9jIChzaXplLCBMaXNwX1Zl Y3Rvcmxpa2UpOwotICBYU0VUVkVDVE9SIChuZXcsIHApOwotICBYVkVDVE9SIChuZXcpLT5oZWFk ZXIuc2l6ZSA9IGxlbjsKLSAgcmV0dXJuIG5ldzsKLX0KLQotLyogQ29weSBhbGwgY29udGVudHMg YW5kIHBhcmFtZXRlcnMgb2YgVEFCTEUgdG8gYSBuZXcgdGFibGUgYWxsb2NhdGVkCi0gICBmcm9t IHB1cmUgc3BhY2UsIHJldHVybiB0aGUgcHVyaWZpZWQgdGFibGUuICAqLwotc3RhdGljIHN0cnVj dCBMaXNwX0hhc2hfVGFibGUgKgotcHVyZWNvcHlfaGFzaF90YWJsZSAoc3RydWN0IExpc3BfSGFz aF9UYWJsZSAqdGFibGUpCi17Ci0gIGVhc3NlcnQgKE5JTFAgKHRhYmxlLT53ZWFrKSk7Ci0gIGVh c3NlcnQgKHRhYmxlLT5wdXJlY29weSk7Ci0KLSAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqcHVy ZSA9IHB1cmVfYWxsb2MgKHNpemVvZiAqcHVyZSwgTGlzcF9WZWN0b3JsaWtlKTsKLSAgc3RydWN0 IGhhc2hfdGFibGVfdGVzdCBwdXJlX3Rlc3QgPSB0YWJsZS0+dGVzdDsKLQotICAvKiBQdXJlY29w eSB0aGUgaGFzaCB0YWJsZSB0ZXN0LiAgKi8KLSAgcHVyZV90ZXN0Lm5hbWUgPSBwdXJlY29weSAo dGFibGUtPnRlc3QubmFtZSk7Ci0gIHB1cmVfdGVzdC51c2VyX2hhc2hfZnVuY3Rpb24gPSBwdXJl Y29weSAodGFibGUtPnRlc3QudXNlcl9oYXNoX2Z1bmN0aW9uKTsKLSAgcHVyZV90ZXN0LnVzZXJf Y21wX2Z1bmN0aW9uID0gcHVyZWNvcHkgKHRhYmxlLT50ZXN0LnVzZXJfY21wX2Z1bmN0aW9uKTsK LQotICBwdXJlLT5oZWFkZXIgPSB0YWJsZS0+aGVhZGVyOwotICBwdXJlLT53ZWFrID0gcHVyZWNv cHkgKFFuaWwpOwotICBwdXJlLT5oYXNoID0gcHVyZWNvcHkgKHRhYmxlLT5oYXNoKTsKLSAgcHVy ZS0+bmV4dCA9IHB1cmVjb3B5ICh0YWJsZS0+bmV4dCk7Ci0gIHB1cmUtPmluZGV4ID0gcHVyZWNv cHkgKHRhYmxlLT5pbmRleCk7Ci0gIHB1cmUtPmNvdW50ID0gdGFibGUtPmNvdW50OwotICBwdXJl LT5uZXh0X2ZyZWUgPSB0YWJsZS0+bmV4dF9mcmVlOwotICBwdXJlLT5wdXJlY29weSA9IHRhYmxl LT5wdXJlY29weTsKLSAgZWFzc2VydCAoIXB1cmUtPm11dGFibGUpOwotICBwdXJlLT5yZWhhc2hf dGhyZXNob2xkID0gdGFibGUtPnJlaGFzaF90aHJlc2hvbGQ7Ci0gIHB1cmUtPnJlaGFzaF9zaXpl ID0gdGFibGUtPnJlaGFzaF9zaXplOwotICBwdXJlLT5rZXlfYW5kX3ZhbHVlID0gcHVyZWNvcHkg KHRhYmxlLT5rZXlfYW5kX3ZhbHVlKTsKLSAgcHVyZS0+dGVzdCA9IHB1cmVfdGVzdDsKLQotICBy ZXR1cm4gcHVyZTsKLX0KK3B1cmVjb3B5IChMaXNwX09iamVjdCBvYmopOwogCiBERUZVTiAoInB1 cmVjb3B5IiwgRnB1cmVjb3B5LCBTcHVyZWNvcHksIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBN YWtlIGEgY29weSBvZiBvYmplY3QgT0JKIGluIHB1cmUgc3RvcmFnZS4KQEAgLTU1MTQsMTAwICs1 MTc3LDIzIEBAIERFRlVOICgicHVyZWNvcHkiLCBGcHVyZWNvcHksIFNwdXJlY29weSwgMSwgMSwg MCwKICAgICByZXR1cm4gcHVyZWNvcHkgKG9iaik7CiB9CiAKLS8qIFBpbm5lZCBvYmplY3RzIGFy ZSBtYXJrZWQgYmVmb3JlIGV2ZXJ5IEdDIGN5Y2xlLiAgKi8KLXN0YXRpYyBzdHJ1Y3QgcGlubmVk X29iamVjdAotewotICBMaXNwX09iamVjdCBvYmplY3Q7Ci0gIHN0cnVjdCBwaW5uZWRfb2JqZWN0 ICpuZXh0OwotfSAqcGlubmVkX29iamVjdHM7Ci0KIHN0YXRpYyBMaXNwX09iamVjdAogcHVyZWNv cHkgKExpc3BfT2JqZWN0IG9iaikKIHsKLSAgaWYgKEZJWE5VTVAgKG9iaikKLSAgICAgIHx8ICgh IFNZTUJPTFAgKG9iaikgJiYgUFVSRV9QIChYUE5UUiAob2JqKSkpCi0gICAgICB8fCBTVUJSUCAo b2JqKSkKKyAgaWYgKEZJWE5VTVAgKG9iaikgfHwgU1VCUlAgKG9iaikpCiAgICAgcmV0dXJuIG9i ajsgICAgLyogQWxyZWFkeSBwdXJlLiAgKi8KIAotICBpZiAoU1RSSU5HUCAob2JqKSAmJiBYU1RS SU5HIChvYmopLT51LnMuaW50ZXJ2YWxzKQotICAgIG1lc3NhZ2Vfd2l0aF9zdHJpbmcgKCJEcm9w cGluZyB0ZXh0LXByb3BlcnRpZXMgd2hpbGUgbWFraW5nIHN0cmluZyBgJXMnIHB1cmUiLAotCQkJ IG9iaiwgdHJ1ZSk7Ci0KICAgaWYgKEhBU0hfVEFCTEVfUCAoVnB1cmlmeV9mbGFnKSkgLyogSGFz aCBjb25zaW5nLiAgKi8KICAgICB7CiAgICAgICBMaXNwX09iamVjdCB0bXAgPSBGZ2V0aGFzaCAo b2JqLCBWcHVyaWZ5X2ZsYWcsIFFuaWwpOwogICAgICAgaWYgKCFOSUxQICh0bXApKQogCXJldHVy biB0bXA7CisgICAgICBGcHV0aGFzaCAob2JqLCBvYmosIFZwdXJpZnlfZmxhZyk7CiAgICAgfQog Ci0gIGlmIChDT05TUCAob2JqKSkKLSAgICBvYmogPSBwdXJlX2NvbnMgKFhDQVIgKG9iaiksIFhD RFIgKG9iaikpOwotICBlbHNlIGlmIChGTE9BVFAgKG9iaikpCi0gICAgb2JqID0gbWFrZV9wdXJl X2Zsb2F0IChYRkxPQVRfREFUQSAob2JqKSk7Ci0gIGVsc2UgaWYgKFNUUklOR1AgKG9iaikpCi0g ICAgb2JqID0gbWFrZV9wdXJlX3N0cmluZyAoU1NEQVRBIChvYmopLCBTQ0hBUlMgKG9iaiksCi0J CQkgICAgU0JZVEVTIChvYmopLAotCQkJICAgIFNUUklOR19NVUxUSUJZVEUgKG9iaikpOwotICBl bHNlIGlmIChIQVNIX1RBQkxFX1AgKG9iaikpCi0gICAgewotICAgICAgc3RydWN0IExpc3BfSGFz aF9UYWJsZSAqdGFibGUgPSBYSEFTSF9UQUJMRSAob2JqKTsKLSAgICAgIC8qIERvIG5vdCBwdXJp ZnkgaGFzaCB0YWJsZXMgd2hpY2ggaGF2ZW4ndCBiZWVuIGRlZmluZWQgd2l0aAotICAgICAgICAg OnB1cmVjb3B5IGFzIG5vbi1uaWwgb3IgYXJlIHdlYWsgLSB0aGV5IGFyZW4ndCBndWFyYW50ZWVk IHRvCi0gICAgICAgICBub3QgY2hhbmdlLiAgKi8KLSAgICAgIGlmICghTklMUCAodGFibGUtPndl YWspIHx8ICF0YWJsZS0+cHVyZWNvcHkpCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBJbnN0ZWFk LCBhZGQgdGhlIGhhc2ggdGFibGUgdG8gdGhlIGxpc3Qgb2YgcGlubmVkIG9iamVjdHMsCi0gICAg ICAgICAgICAgc28gdGhhdCBpdCB3aWxsIGJlIG1hcmtlZCBkdXJpbmcgR0MuICAqLwotICAgICAg ICAgIHN0cnVjdCBwaW5uZWRfb2JqZWN0ICpvID0geG1hbGxvYyAoc2l6ZW9mICpvKTsKLSAgICAg ICAgICBvLT5vYmplY3QgPSBvYmo7Ci0gICAgICAgICAgby0+bmV4dCA9IHBpbm5lZF9vYmplY3Rz OwotICAgICAgICAgIHBpbm5lZF9vYmplY3RzID0gbzsKLSAgICAgICAgICByZXR1cm4gb2JqOyAv KiBEb24ndCBoYXNoIGNvbnMgaXQuICAqLwotICAgICAgICB9Ci0KLSAgICAgIHN0cnVjdCBMaXNw X0hhc2hfVGFibGUgKmggPSBwdXJlY29weV9oYXNoX3RhYmxlICh0YWJsZSk7Ci0gICAgICBYU0VU X0hBU0hfVEFCTEUgKG9iaiwgaCk7Ci0gICAgfQotICBlbHNlIGlmIChDT01QSUxFRFAgKG9iaikg fHwgVkVDVE9SUCAob2JqKSB8fCBSRUNPUkRQIChvYmopKQotICAgIHsKLSAgICAgIHN0cnVjdCBM aXNwX1ZlY3RvciAqb2JqcCA9IFhWRUNUT1IgKG9iaik7Ci0gICAgICBwdHJkaWZmX3QgbmJ5dGVz ID0gdmVjdG9yX25ieXRlcyAob2JqcCk7Ci0gICAgICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnZlYyA9 IHB1cmVfYWxsb2MgKG5ieXRlcywgTGlzcF9WZWN0b3JsaWtlKTsKLSAgICAgIHJlZ2lzdGVyIHB0 cmRpZmZfdCBpOwotICAgICAgcHRyZGlmZl90IHNpemUgPSBBU0laRSAob2JqKTsKLSAgICAgIGlm IChzaXplICYgUFNFVURPVkVDVE9SX0ZMQUcpCi0Jc2l6ZSAmPSBQU0VVRE9WRUNUT1JfU0laRV9N QVNLOwotICAgICAgbWVtY3B5ICh2ZWMsIG9ianAsIG5ieXRlcyk7Ci0gICAgICBmb3IgKGkgPSAw OyBpIDwgc2l6ZTsgaSsrKQotCXZlYy0+Y29udGVudHNbaV0gPSBwdXJlY29weSAodmVjLT5jb250 ZW50c1tpXSk7Ci0gICAgICBYU0VUVkVDVE9SIChvYmosIHZlYyk7Ci0gICAgfQotICBlbHNlIGlm IChTWU1CT0xQIChvYmopKQotICAgIHsKLSAgICAgIGlmICghWFNZTUJPTCAob2JqKS0+dS5zLnBp bm5lZCAmJiAhY19zeW1ib2xfcCAoWFNZTUJPTCAob2JqKSkpCi0JeyAvKiBXZSBjYW4ndCBwdXJp ZnkgdGhlbSwgYnV0IHRoZXkgYXBwZWFyIGluIG1hbnkgcHVyZSBvYmplY3RzLgotCSAgICAgTWFy ayB0aGVtIGFzIGBwaW5uZWQnIHNvIHdlIGtub3cgdG8gbWFyayB0aGVtIGF0IGV2ZXJ5IEdDIGN5 Y2xlLiAgKi8KLQkgIFhTWU1CT0wgKG9iaiktPnUucy5waW5uZWQgPSB0cnVlOwotCSAgc3ltYm9s X2Jsb2NrX3Bpbm5lZCA9IHN5bWJvbF9ibG9jazsKLQl9Ci0gICAgICAvKiBEb24ndCBoYXNoLWNv bnMgaXQuICAqLwotICAgICAgcmV0dXJuIG9iajsKLSAgICB9Ci0gIGVsc2UgaWYgKEJJR05VTVAg KG9iaikpCi0gICAgb2JqID0gbWFrZV9wdXJlX2JpZ251bSAob2JqKTsKLSAgZWxzZQotICAgIHsK LSAgICAgIEFVVE9fU1RSSU5HIChmbXQsICJEb24ndCBrbm93IGhvdyB0byBwdXJpZnk6ICVTIik7 Ci0gICAgICBGc2lnbmFsIChRZXJyb3IsIGxpc3QxIChDQUxMTiAoRmZvcm1hdCwgZm10LCBvYmop KSk7Ci0gICAgfQotCi0gIGlmIChIQVNIX1RBQkxFX1AgKFZwdXJpZnlfZmxhZykpIC8qIEhhc2gg Y29uc2luZy4gICovCi0gICAgRnB1dGhhc2ggKG9iaiwgb2JqLCBWcHVyaWZ5X2ZsYWcpOwotCiAg IHJldHVybiBvYmo7CiB9CiAKLQogDAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkgIFByb3RlY3Rpb24g ZnJvbSBHQwpAQCAtNTc5OCwzMSArNTM4NCw2IEBAIGNvbXBhY3RfdW5kb19saXN0IChMaXNwX09i amVjdCBsaXN0KQogICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIHZvaWQKLW1hcmtfcGlubmVk X29iamVjdHMgKHZvaWQpCi17Ci0gIGZvciAoc3RydWN0IHBpbm5lZF9vYmplY3QgKnBvYmogPSBw aW5uZWRfb2JqZWN0czsgcG9iajsgcG9iaiA9IHBvYmotPm5leHQpCi0gICAgbWFya19vYmplY3Qg KHBvYmotPm9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1tYXJrX3Bpbm5lZF9zeW1ib2xzICh2 b2lkKQotewotICBzdHJ1Y3Qgc3ltYm9sX2Jsb2NrICpzYmxrOwotICBpbnQgbGltID0gKHN5bWJv bF9ibG9ja19waW5uZWQgPT0gc3ltYm9sX2Jsb2NrCi0JICAgICA/IHN5bWJvbF9ibG9ja19pbmRl eCA6IFNZTUJPTF9CTE9DS19TSVpFKTsKLQotICBmb3IgKHNibGsgPSBzeW1ib2xfYmxvY2tfcGlu bmVkOyBzYmxrOyBzYmxrID0gc2Jsay0+bmV4dCkKLSAgICB7Ci0gICAgICBzdHJ1Y3QgTGlzcF9T eW1ib2wgKnN5bSA9IHNibGstPnN5bWJvbHMsICplbmQgPSBzeW0gKyBsaW07Ci0gICAgICBmb3Ig KDsgc3ltIDwgZW5kOyArK3N5bSkKLQlpZiAoc3ltLT51LnMucGlubmVkKQotCSAgbWFya19vYmpl Y3QgKG1ha2VfbGlzcF9zeW1ib2wgKHN5bSkpOwotCi0gICAgICBsaW0gPSBTWU1CT0xfQkxPQ0tf U0laRTsKLSAgICB9Ci19Ci0KIHN0YXRpYyB2b2lkCiB2aXNpdF92ZWN0b3JsaWtlX3Jvb3QgKHN0 cnVjdCBnY19yb290X3Zpc2l0b3IgdmlzaXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IExpc3BfVmVjdG9yICpwdHIsCkBAIC02MDgzLDggKzU2NDQsNiBAQCBnYXJiYWdlX2NvbGxl Y3QgKHZvaWQpCiAgIHN0cnVjdCBnY19yb290X3Zpc2l0b3IgdmlzaXRvciA9IHsgLnZpc2l0ID0g bWFya19vYmplY3Rfcm9vdF92aXNpdG9yIH07CiAgIHZpc2l0X3N0YXRpY19nY19yb290cyAodmlz aXRvcik7CiAKLSAgbWFya19waW5uZWRfb2JqZWN0cyAoKTsKLSAgbWFya19waW5uZWRfc3ltYm9s cyAoKTsKICAgbWFya190ZXJtaW5hbHMgKCk7CiAgIG1hcmtfa2JvYXJkcyAoKTsKICAgbWFya190 aHJlYWRzICgpOwpAQCAtNjE5MywxMCArNTc1Miw2IEBAIERFRlVOICgiZ2FyYmFnZS1jb2xsZWN0 IiwgRmdhcmJhZ2VfY29sbGVjdCwgU2dhcmJhZ2VfY29sbGVjdCwgMCwgMCwgIiIsCiAgIGtlZXBz IGFyb3VuZCBmb3IgZnV0dXJlIGFsbG9jYXRpb25zIChtYXliZSBiZWNhdXNlIGl0IGRvZXMgbm90 IGtub3cgaG93CiAgIHRvIHJldHVybiB0aGVtIHRvIHRoZSBPUykuCiAKLUhvd2V2ZXIsIGlmIHRo ZXJlIHdhcyBvdmVyZmxvdyBpbiBwdXJlIHNwYWNlLCBhbmQgRW1hY3Mgd2FzIGR1bXBlZAotdXNp bmcgdGhlICd1bmV4ZWMnIG1ldGhvZCwgYGdhcmJhZ2UtY29sbGVjdCcgcmV0dXJucyBuaWwsIGJl Y2F1c2UKLXJlYWwgR0MgY2FuJ3QgYmUgZG9uZS4KLQogTm90ZSB0aGF0IGNhbGxpbmcgdGhpcyBm dW5jdGlvbiBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCBhYnNvbHV0ZWx5IGFsbAogdW5yZWFjaGFi bGUgb2JqZWN0cyB3aWxsIGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgRW1hY3MgdXNlcyBhCiBtYXJr LWFuZC1zd2VlcCBnYXJiYWdlIGNvbGxlY3RvciwgYnV0IGlzIGNvbnNlcnZhdGl2ZSB3aGVuIGl0 IGNvbWVzIHRvCkBAIC02NTY2LDggKzYxMjEsOCBAQCBtYXJrX29iamVjdHMgKExpc3BfT2JqZWN0 ICpvYmosIHB0cmRpZmZfdCBuKQogbWFya19vYmplY3QgKExpc3BfT2JqZWN0IGFyZykKIHsKICAg cmVnaXN0ZXIgTGlzcF9PYmplY3Qgb2JqOwotICB2b2lkICpwbzsKICNpZiBHQ19DSEVDS19NQVJL RURfT0JKRUNUUworICB2b2lkICpwbzsKICAgc3RydWN0IG1lbV9ub2RlICptID0gTlVMTDsKICNl bmRpZgogICBwdHJkaWZmX3QgY2RyX2NvdW50ID0gMDsKQEAgLTY1NzUsMTAgKzYxMzAsNiBAQCBt YXJrX29iamVjdCAoTGlzcF9PYmplY3QgYXJnKQogICBvYmogPSBhcmc7CiAgbG9vcDoKIAotICBw byA9IFhQTlRSIChvYmopOwotICBpZiAoUFVSRV9QIChwbykpCi0gICAgcmV0dXJuOwotCiAgIGxh c3RfbWFya2VkW2xhc3RfbWFya2VkX2luZGV4KytdID0gb2JqOwogICBsYXN0X21hcmtlZF9pbmRl eCAmPSBMQVNUX01BUktFRF9TSVpFIC0gMTsKIApAQCAtNjU4Nyw2ICs2MTM4LDggQEAgbWFya19v YmplY3QgKExpc3BfT2JqZWN0IGFyZykKICAgICAgYnkgfjgwJS4gICovCiAjaWYgR0NfQ0hFQ0tf TUFSS0VEX09CSkVDVFMKIAorICBwbyA9IFhQTlRSIChvYmopOworCiAgIC8qIENoZWNrIHRoYXQg dGhlIG9iamVjdCBwb2ludGVkIHRvIGJ5IFBPIGlzIGtub3duIHRvIGJlIGEgTGlzcAogICAgICBz dHJ1Y3R1cmUgYWxsb2NhdGVkIGZyb20gdGhlIGhlYXAuICAqLwogI2RlZmluZSBDSEVDS19BTExP Q0FURUQoKQkJCVwKQEAgLTY3NzEsMTEgKzYzMjQsMTAgQEAgI2RlZmluZSBDSEVDS19BTExPQ0FU RURfQU5EX0xJVkVfU1lNQk9MKCkJCSgodm9pZCkgMCkKIAkgICAgYnJlYWs7CiAJICBkZWZhdWx0 OiBlbWFjc19hYm9ydCAoKTsKIAkgIH0KLQlpZiAoIVBVUkVfUCAoWFNUUklORyAocHRyLT51LnMu bmFtZSkpKQotICAgICAgICAgIHNldF9zdHJpbmdfbWFya2VkIChYU1RSSU5HIChwdHItPnUucy5u YW1lKSk7CisJc2V0X3N0cmluZ19tYXJrZWQgKFhTVFJJTkcgKHB0ci0+dS5zLm5hbWUpKTsKICAg ICAgICAgbWFya19pbnRlcnZhbF90cmVlIChzdHJpbmdfaW50ZXJ2YWxzIChwdHItPnUucy5uYW1l KSk7CiAJLyogSW5uZXIgbG9vcCB0byBtYXJrIG5leHQgc3ltYm9sIGluIHRoaXMgYnVja2V0LCBp ZiBhbnkuICAqLwotCXBvID0gcHRyID0gcHRyLT51LnMubmV4dDsKKwlwdHIgPSBwdHItPnUucy5u ZXh0OwogCWlmIChwdHIpCiAJICBnb3RvIG5leHRzeW07CiAgICAgICB9CkBAIC02ODg2LDcgKzY0 MzgsNyBAQCBzdXJ2aXZlc19nY19wIChMaXNwX09iamVjdCBvYmopCiAgICAgICBlbWFjc19hYm9y dCAoKTsKICAgICB9CiAKLSAgcmV0dXJuIHN1cnZpdmVzX3AgfHwgUFVSRV9QIChYUE5UUiAob2Jq KSk7CisgIHJldHVybiBzdXJ2aXZlc19wOwogfQogCiAKQEAgLTc0NzQsOCArNzAyNiw2IEBAIGlu aXRfYWxsb2Nfb25jZSAodm9pZCkKIHN0YXRpYyB2b2lkCiBpbml0X2FsbG9jX29uY2VfZm9yX3Bk dW1wZXIgKHZvaWQpCiB7Ci0gIHB1cmViZWcgPSBQVVJFQkVHOwotICBwdXJlX3NpemUgPSBQVVJF U0laRTsKICAgbWVtX2luaXQgKCk7CiAKICNpZmRlZiBET1VHX0xFQV9NQUxMT0MKQEAgLTc1MTks NyArNzA2OSw3IEBAIHN5bXNfb2ZfYWxsb2MgKHZvaWQpCiAgIFZnY19jb25zX3BlcmNlbnRhZ2Ug PSBtYWtlX2Zsb2F0ICgwLjEpOwogCiAgIERFRlZBUl9JTlQgKCJwdXJlLWJ5dGVzLXVzZWQiLCBw dXJlX2J5dGVzX3VzZWQsCi0JICAgICAgZG9jOiAvKiBOdW1iZXIgb2YgYnl0ZXMgb2Ygc2hhcmVh YmxlIExpc3AgZGF0YSBhbGxvY2F0ZWQgc28gZmFyLiAgKi8pOworCSAgICAgIGRvYzogLyogTm8g bG9uZ2VyIHVzZWQuICAqLyk7CiAKICAgREVGVkFSX0lOVCAoImNvbnMtY2VsbHMtY29uc2VkIiwg Y29uc19jZWxsc19jb25zZWQsCiAJICAgICAgZG9jOiAvKiBOdW1iZXIgb2YgY29ucyBjZWxscyB0 aGF0IGhhdmUgYmVlbiBjb25zZWQgc28gZmFyLiAgKi8pOwpAQCAtNzU0NCwxMCArNzA5NCw3IEBA IHN5bXNfb2ZfYWxsb2MgKHZvaWQpCiAJICAgICAgZG9jOiAvKiBOdW1iZXIgb2Ygc3RyaW5ncyB0 aGF0IGhhdmUgYmVlbiBjb25zZWQgc28gZmFyLiAgKi8pOwogCiAgIERFRlZBUl9MSVNQICgicHVy aWZ5LWZsYWciLCBWcHVyaWZ5X2ZsYWcsCi0JICAgICAgIGRvYzogLyogTm9uLW5pbCBtZWFucyBs b2FkaW5nIExpc3AgY29kZSBpbiBvcmRlciB0byBkdW1wIGFuIGV4ZWN1dGFibGUuCi1UaGlzIG1l YW5zIHRoYXQgY2VydGFpbiBvYmplY3RzIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gc2hhcmVkIChw dXJlKSBzcGFjZS4KLUl0IGNhbiBhbHNvIGJlIHNldCB0byBhIGhhc2gtdGFibGUsIGluIHdoaWNo IGNhc2UgdGhpcyB0YWJsZSBpcyB1c2VkIHRvCi1kbyBoYXNoLWNvbnNpbmcgb2YgdGhlIG9iamVj dHMgYWxsb2NhdGVkIHRvIHB1cmUgc3BhY2UuICAqLyk7CisJICAgICAgIGRvYzogLyogTm8gbG9u Z2VyIHVzZWQuICAqLyk7CiAKICAgREVGVkFSX0JPT0wgKCJnYXJiYWdlLWNvbGxlY3Rpb24tbWVz c2FnZXMiLCBnYXJiYWdlX2NvbGxlY3Rpb25fbWVzc2FnZXMsCiAJICAgICAgIGRvYzogLyogTm9u LW5pbCBtZWFucyBkaXNwbGF5IG1lc3NhZ2VzIGF0IHN0YXJ0IGFuZCBlbmQgb2YgZ2FyYmFnZSBj b2xsZWN0aW9uLiAgKi8pOwpAQCAtNzU2MywxMCArNzExMCwxMCBAQCBzeW1zX29mX2FsbG9jICh2 b2lkKQogICAvKiBXZSBidWlsZCB0aGlzIGluIGFkdmFuY2UgYmVjYXVzZSBpZiB3ZSB3YWl0IHVu dGlsIHdlIG5lZWQgaXQsIHdlIG1pZ2h0CiAgICAgIG5vdCBiZSBhYmxlIHRvIGFsbG9jYXRlIHRo ZSBtZW1vcnkgdG8gaG9sZCBpdC4gICovCiAgIFZtZW1vcnlfc2lnbmFsX2RhdGEKLSAgICA9IHB1 cmVfbGlzdCAoUWVycm9yLAotCQkgYnVpbGRfcHVyZV9jX3N0cmluZyAoIk1lbW9yeSBleGhhdXN0 ZWQtLXVzZSIKLQkJCQkgICAgICAiIE0teCBzYXZlLXNvbWUtYnVmZmVycyB0aGVuIgotCQkJCSAg ICAgICIgZXhpdCBhbmQgcmVzdGFydCBFbWFjcyIpKTsKKyAgICA9IGxpc3QgKFFlcnJvciwKKwkg ICAgYnVpbGRfc3RyaW5nICgiTWVtb3J5IGV4aGF1c3RlZC0tdXNlIgorCQkJICAiIE0teCBzYXZl LXNvbWUtYnVmZmVycyB0aGVuIgorCQkJICAiIGV4aXQgYW5kIHJlc3RhcnQgRW1hY3MiKSk7CiAK ICAgREVGVkFSX0xJU1AgKCJtZW1vcnktZnVsbCIsIFZtZW1vcnlfZnVsbCwKIAkgICAgICAgZG9j OiAvKiBOb24tbmlsIG1lYW5zIEVtYWNzIGNhbm5vdCBnZXQgbXVjaCBtb3JlIExpc3AgbWVtb3J5 LiAgKi8pOwpkaWZmIC0tZ2l0IGEvc3JjL2J1ZmZlci5jIGIvc3JjL2J1ZmZlci5jCmluZGV4IDVi ZDliMzc3MDJmM2YuLjY5Y2IxYThlOTA0YTQgMTAwNjQ0Ci0tLSBhL3NyYy9idWZmZXIuYworKysg Yi9zcmMvYnVmZmVyLmMKQEAgLTUyNjYsOCArNTI2Niw4IEBAIGluaXRfYnVmZmVyX29uY2UgKHZv aWQpCiAgIHNldF9idWZmZXJfaW50ZXJ2YWxzICgmYnVmZmVyX2RlZmF1bHRzLCBOVUxMKTsKICAg c2V0X2J1ZmZlcl9pbnRlcnZhbHMgKCZidWZmZXJfbG9jYWxfc3ltYm9scywgTlVMTCk7CiAgIC8q IFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IGxldCdzIG1ha2UgdGhlbSBpbml0 aWFsaXplZC4gICovCi0gIGJzZXRfbmFtZSAoJmJ1ZmZlcl9kZWZhdWx0cywgYnVpbGRfcHVyZV9j X3N0cmluZyAoIiAqYnVmZmVyLWRlZmF1bHRzKiIpKTsKLSAgYnNldF9uYW1lICgmYnVmZmVyX2xv Y2FsX3N5bWJvbHMsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIgKmJ1ZmZlci1sb2NhbC1zeW1ib2xz KiIpKTsKKyAgYnNldF9uYW1lICgmYnVmZmVyX2RlZmF1bHRzLCBidWlsZF9zdHJpbmcgKCIgKmJ1 ZmZlci1kZWZhdWx0cyoiKSk7CisgIGJzZXRfbmFtZSAoJmJ1ZmZlcl9sb2NhbF9zeW1ib2xzLCBi dWlsZF9zdHJpbmcgKCIgKmJ1ZmZlci1sb2NhbC1zeW1ib2xzKiIpKTsKICAgQlVGRkVSX1BWRUNf SU5JVCAoJmJ1ZmZlcl9kZWZhdWx0cyk7CiAgIEJVRkZFUl9QVkVDX0lOSVQgKCZidWZmZXJfbG9j YWxfc3ltYm9scyk7CiAKQEAgLTUyNzUsNyArNTI3NSw3IEBAIGluaXRfYnVmZmVyX29uY2UgKHZv aWQpCiAgIC8qIE11c3QgZG8gdGhlc2UgYmVmb3JlIG1ha2luZyB0aGUgZmlyc3QgYnVmZmVyISAq LwogCiAgIC8qIHJlYWwgc2V0dXAgaXMgZG9uZSBpbiBiaW5kaW5ncy5lbCAqLwotICBic2V0X21v ZGVfbGluZV9mb3JtYXQgKCZidWZmZXJfZGVmYXVsdHMsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIl LSIpKTsKKyAgYnNldF9tb2RlX2xpbmVfZm9ybWF0ICgmYnVmZmVyX2RlZmF1bHRzLCBidWlsZF9z dHJpbmcgKCIlLSIpKTsKICAgYnNldF9oZWFkZXJfbGluZV9mb3JtYXQgKCZidWZmZXJfZGVmYXVs dHMsIFFuaWwpOwogICBic2V0X3RhYl9saW5lX2Zvcm1hdCAoJmJ1ZmZlcl9kZWZhdWx0cywgUW5p bCk7CiAgIGJzZXRfYWJicmV2X21vZGUgKCZidWZmZXJfZGVmYXVsdHMsIFFuaWwpOwpAQCAtNTM0 Miw3ICs1MzQyLDcgQEAgaW5pdF9idWZmZXJfb25jZSAodm9pZCkKICAgY3VycmVudF9idWZmZXIg PSAwOwogICBwZHVtcGVyX3JlbWVtYmVyX2x2X3B0cl9yYXcgKCZjdXJyZW50X2J1ZmZlciwgTGlz cF9WZWN0b3JsaWtlKTsKIAotICBRU0Z1bmRhbWVudGFsID0gYnVpbGRfcHVyZV9jX3N0cmluZyAo IkZ1bmRhbWVudGFsIik7CisgIFFTRnVuZGFtZW50YWwgPSBidWlsZF9zdHJpbmcgKCJGdW5kYW1l bnRhbCIpOwogCiAgIERFRlNZTSAoUWZ1bmRhbWVudGFsX21vZGUsICJmdW5kYW1lbnRhbC1tb2Rl Iik7CiAgIGJzZXRfbWFqb3JfbW9kZSAoJmJ1ZmZlcl9kZWZhdWx0cywgUWZ1bmRhbWVudGFsX21v ZGUpOwpAQCAtNTM1NiwxMCArNTM1NiwxMCBAQCBpbml0X2J1ZmZlcl9vbmNlICh2b2lkKQogCiAg IC8qIFN1cGVyLW1hZ2ljIGludmlzaWJsZSBidWZmZXIuICAqLwogICBWcHJpbjFfdG9fc3RyaW5n X2J1ZmZlciA9Ci0gICAgRmdldF9idWZmZXJfY3JlYXRlIChidWlsZF9wdXJlX2Nfc3RyaW5nICgi IHByaW4xIiksIFF0KTsKKyAgICBGZ2V0X2J1ZmZlcl9jcmVhdGUgKGJ1aWxkX3N0cmluZyAoIiBw cmluMSIpLCBRdCk7CiAgIFZidWZmZXJfYWxpc3QgPSBRbmlsOwogCi0gIEZzZXRfYnVmZmVyIChG Z2V0X2J1ZmZlcl9jcmVhdGUgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIqc2NyYXRjaCoiKSwgUW5p bCkpOworICBGc2V0X2J1ZmZlciAoRmdldF9idWZmZXJfY3JlYXRlIChidWlsZF9zdHJpbmcgKCIq c2NyYXRjaCoiKSwgUW5pbCkpOwogCiAgIGluaGliaXRfbW9kaWZpY2F0aW9uX2hvb2tzID0gMDsK IH0KQEAgLTU1MzQsOSArNTUzNCw5IEBAIHN5bXNfb2ZfYnVmZmVyICh2b2lkKQogCSAgICAgICBR b3ZlcndyaXRlX21vZGVfYmluYXJ5KSk7CiAKICAgRnB1dCAoUXByb3RlY3RlZF9maWVsZCwgUWVy cm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRcHJvdGVjdGVkX2ZpZWxkLCBRZXJyb3IpKTsK KwlsaXN0IChRcHJvdGVjdGVkX2ZpZWxkLCBRZXJyb3IpKTsKICAgRnB1dCAoUXByb3RlY3RlZF9m aWVsZCwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIkF0dGVtcHQgdG8g bW9kaWZ5IGEgcHJvdGVjdGVkIGZpZWxkIikpOworCWJ1aWxkX3N0cmluZyAoIkF0dGVtcHQgdG8g bW9kaWZ5IGEgcHJvdGVjdGVkIGZpZWxkIikpOwogCiAgIERFRlZBUl9QRVJfQlVGRkVSICgidGFi LWxpbmUtZm9ybWF0IiwKIAkJICAgICAmQlZBUiAoY3VycmVudF9idWZmZXIsIHRhYl9saW5lX2Zv cm1hdCksCmRpZmYgLS1naXQgYS9zcmMvY2FsbGludC5jIGIvc3JjL2NhbGxpbnQuYwppbmRleCAx ODYyNDYzNzg0M2YyLi44ZjhhNzcxMzEwNTU3IDEwMDY0NAotLS0gYS9zcmMvY2FsbGludC5jCisr KyBiL3NyYy9jYWxsaW50LmMKQEAgLTgyNCwxMCArODI0LDEwIEBAIHN5bXNfb2ZfY2FsbGludCAo dm9pZCkKICAgY2FsbGludF9tZXNzYWdlID0gUW5pbDsKICAgc3RhdGljcHJvICgmY2FsbGludF9t ZXNzYWdlKTsKIAotICBwcmVzZXJ2ZWRfZm5zID0gcHVyZV9saXN0IChpbnRlcm5fY19zdHJpbmcg KCJyZWdpb24tYmVnaW5uaW5nIiksCi0JCQkgICAgIGludGVybl9jX3N0cmluZyAoInJlZ2lvbi1l bmQiKSwKLQkJCSAgICAgaW50ZXJuX2Nfc3RyaW5nICgicG9pbnQiKSwKLQkJCSAgICAgaW50ZXJu X2Nfc3RyaW5nICgibWFyayIpKTsKKyAgcHJlc2VydmVkX2ZucyA9IGxpc3QgKGludGVybl9jX3N0 cmluZyAoInJlZ2lvbi1iZWdpbm5pbmciKSwKKwkJCWludGVybl9jX3N0cmluZyAoInJlZ2lvbi1l bmQiKSwKKwkJCWludGVybl9jX3N0cmluZyAoInBvaW50IiksCisJCQlpbnRlcm5fY19zdHJpbmcg KCJtYXJrIikpOwogICBzdGF0aWNwcm8gKCZwcmVzZXJ2ZWRfZm5zKTsKIAogICBERUZTWU0gKFFs aXN0LCAibGlzdCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2NhdGVnb3J5LmMgYi9zcmMvY2F0ZWdvcnku YwppbmRleCBlYzhmNjFmN2YwMDJmLi45MDdkYjE0NTU3NzhiIDEwMDY0NAotLS0gYS9zcmMvY2F0 ZWdvcnkuYworKysgYi9zcmMvY2F0ZWdvcnkuYwpAQCAtNTMsNyArNTMsNyBAQCBoYXNoX2dldF9j YXRlZ29yeV9zZXQgKExpc3BfT2JqZWN0IHRhYmxlLCBMaXNwX09iamVjdCBjYXRlZ29yeV9zZXQp CiAgICAgICAodGFibGUsIDEsCiAgICAgICAgbWFrZV9oYXNoX3RhYmxlIChoYXNodGVzdF9lcXVh bCwgREVGQVVMVF9IQVNIX1NJWkUsCiAJCQlERUZBVUxUX1JFSEFTSF9TSVpFLCBERUZBVUxUX1JF SEFTSF9USFJFU0hPTEQsCi0JCQlRbmlsLCBmYWxzZSkpOworCQkJUW5pbCkpOwogICBzdHJ1Y3Qg TGlzcF9IYXNoX1RhYmxlICpoID0gWEhBU0hfVEFCTEUgKFhDSEFSX1RBQkxFICh0YWJsZSktPmV4 dHJhc1sxXSk7CiAgIExpc3BfT2JqZWN0IGhhc2g7CiAgIHB0cmRpZmZfdCBpID0gaGFzaF9sb29r dXAgKGgsIGNhdGVnb3J5X3NldCwgJmhhc2gpOwpAQCAtMTIwLDggKzEyMCw2IEBAIERFRlVOICgi ZGVmaW5lLWNhdGVnb3J5IiwgRmRlZmluZV9jYXRlZ29yeSwgU2RlZmluZV9jYXRlZ29yeSwgMiwg MywgMCwKIAogICBpZiAoIU5JTFAgKENBVEVHT1JZX0RPQ1NUUklORyAodGFibGUsIFhGSVhOQVQg KGNhdGVnb3J5KSkpKQogICAgIGVycm9yICgiQ2F0ZWdvcnkgYCVjJyBpcyBhbHJlYWR5IGRlZmlu ZWQiLCAoaW50KSBYRklYTkFUIChjYXRlZ29yeSkpOwotICBpZiAoIU5JTFAgKFZwdXJpZnlfZmxh ZykpCi0gICAgZG9jc3RyaW5nID0gRnB1cmVjb3B5IChkb2NzdHJpbmcpOwogICBTRVRfQ0FURUdP UllfRE9DU1RSSU5HICh0YWJsZSwgWEZJWE5BVCAoY2F0ZWdvcnkpLCBkb2NzdHJpbmcpOwogCiAg IHJldHVybiBRbmlsOwpkaWZmIC0tZ2l0IGEvc3JjL2NvZGluZy5jIGIvc3JjL2NvZGluZy5jCmlu ZGV4IDczOWRkNmFkY2I1ZmMuLmJmN2Q0OTJmNTQ2YzcgMTAwNjQ0Ci0tLSBhL3NyYy9jb2Rpbmcu YworKysgYi9zcmMvY29kaW5nLmMKQEAgLTExNjUwLDcgKzExNjUwLDcgQEAgc3ltc19vZl9jb2Rp bmcgKHZvaWQpCiAgIFZjb2RlX2NvbnZlcnNpb25fcmV1c2VkX3dvcmtidWYgPSBRbmlsOwogCiAg IHN0YXRpY3BybyAoJlZjb2RlX2NvbnZlcnNpb25fd29ya2J1Zl9uYW1lKTsKLSAgVmNvZGVfY29u dmVyc2lvbl93b3JrYnVmX25hbWUgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiICpjb2RlLWNvbnZl cnNpb24td29yayoiKTsKKyAgVmNvZGVfY29udmVyc2lvbl93b3JrYnVmX25hbWUgPSBidWlsZF9z dHJpbmcgKCIgKmNvZGUtY29udmVyc2lvbi13b3JrKiIpOwogCiAgIHJldXNlZF93b3JrYnVmX2lu X3VzZSA9IGZhbHNlOwogICBQRFVNUEVSX1JFTUVNQkVSX1NDQUxBUiAocmV1c2VkX3dvcmtidWZf aW5fdXNlKTsKQEAgLTExNzE0LDkgKzExNzE0LDkgQEAgc3ltc19vZl9jb2RpbmcgKHZvaWQpCiAg IC8qIEVycm9yIHNpZ25hbGVkIHdoZW4gdGhlcmUncyBhIHByb2JsZW0gd2l0aCBkZXRlY3Rpbmcg YSBjb2Rpbmcgc3lzdGVtLiAgKi8KICAgREVGU1lNIChRY29kaW5nX3N5c3RlbV9lcnJvciwgImNv ZGluZy1zeXN0ZW0tZXJyb3IiKTsKICAgRnB1dCAoUWNvZGluZ19zeXN0ZW1fZXJyb3IsIFFlcnJv cl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUWNvZGluZ19zeXN0ZW1fZXJyb3IsIFFlcnJvcikp OworCWxpc3QgKFFjb2Rpbmdfc3lzdGVtX2Vycm9yLCBRZXJyb3IpKTsKICAgRnB1dCAoUWNvZGlu Z19zeXN0ZW1fZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJJ bnZhbGlkIGNvZGluZyBzeXN0ZW0iKSk7CisJYnVpbGRfc3RyaW5nICgiSW52YWxpZCBjb2Rpbmcg c3lzdGVtIikpOwogCiAgIERFRlNZTSAoUXRyYW5zbGF0aW9uX3RhYmxlLCAidHJhbnNsYXRpb24t dGFibGUiKTsKICAgRnB1dCAoUXRyYW5zbGF0aW9uX3RhYmxlLCBRY2hhcl90YWJsZV9leHRyYV9z bG90cywgbWFrZV9maXhudW0gKDIpKTsKQEAgLTExOTkxLDIyICsxMTk5MSwyMiBAQCBzeW1zX29m X2NvZGluZyAodm9pZCkKICAgREVGVkFSX0xJU1AgKCJlb2wtbW5lbW9uaWMtdW5peCIsIGVvbF9t bmVtb25pY191bml4LAogCSAgICAgICBkb2M6IC8qCiBTdHJpbmcgZGlzcGxheWVkIGluIG1vZGUg bGluZSBmb3IgVU5JWC1saWtlIChMRikgZW5kLW9mLWxpbmUgZm9ybWF0LiAgKi8pOwotICBlb2xf bW5lbW9uaWNfdW5peCA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCI6Iik7CisgIGVvbF9tbmVtb25p Y191bml4ID0gYnVpbGRfc3RyaW5nICgiOiIpOwogCiAgIERFRlZBUl9MSVNQICgiZW9sLW1uZW1v bmljLWRvcyIsIGVvbF9tbmVtb25pY19kb3MsCiAJICAgICAgIGRvYzogLyoKIFN0cmluZyBkaXNw bGF5ZWQgaW4gbW9kZSBsaW5lIGZvciBET1MtbGlrZSAoQ1JMRikgZW5kLW9mLWxpbmUgZm9ybWF0 LiAgKi8pOwotICBlb2xfbW5lbW9uaWNfZG9zID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIlxcIik7 CisgIGVvbF9tbmVtb25pY19kb3MgPSBidWlsZF9zdHJpbmcgKCJcXCIpOwogCiAgIERFRlZBUl9M SVNQICgiZW9sLW1uZW1vbmljLW1hYyIsIGVvbF9tbmVtb25pY19tYWMsCiAJICAgICAgIGRvYzog LyoKIFN0cmluZyBkaXNwbGF5ZWQgaW4gbW9kZSBsaW5lIGZvciBNQUMtbGlrZSAoQ1IpIGVuZC1v Zi1saW5lIGZvcm1hdC4gICovKTsKLSAgZW9sX21uZW1vbmljX21hYyA9IGJ1aWxkX3B1cmVfY19z dHJpbmcgKCIvIik7CisgIGVvbF9tbmVtb25pY19tYWMgPSBidWlsZF9zdHJpbmcgKCIvIik7CiAK ICAgREVGVkFSX0xJU1AgKCJlb2wtbW5lbW9uaWMtdW5kZWNpZGVkIiwgZW9sX21uZW1vbmljX3Vu ZGVjaWRlZCwKIAkgICAgICAgZG9jOiAvKgogU3RyaW5nIGRpc3BsYXllZCBpbiBtb2RlIGxpbmUg d2hlbiBlbmQtb2YtbGluZSBmb3JtYXQgaXMgbm90IHlldCBkZXRlcm1pbmVkLiAgKi8pOwotICBl b2xfbW5lbW9uaWNfdW5kZWNpZGVkID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIjoiKTsKKyAgZW9s X21uZW1vbmljX3VuZGVjaWRlZCA9IGJ1aWxkX3N0cmluZyAoIjoiKTsKIAogICBERUZWQVJfTElT UCAoImVuYWJsZS1jaGFyYWN0ZXItdHJhbnNsYXRpb24iLCBWZW5hYmxlX2NoYXJhY3Rlcl90cmFu c2xhdGlvbiwKIAkgICAgICAgZG9jOiAvKgpAQCAtMTIxNDYsNyArMTIxNDYsNyBAQCBzeXN0ZW0g KGUuZy4gYGlzby0yMDIyLTdiaXQnKS4KICAgICAgIGludGVybl9jX3N0cmluZyAoIjpmb3ItdW5p Ynl0ZSIpLAogICAgICAgYXJnc1tjb2RpbmdfYXJnX2Zvcl91bmlieXRlXSA9IFF0LAogICAgICAg aW50ZXJuX2Nfc3RyaW5nICgiOmRvY3N0cmluZyIpLAotICAgICAgKGJ1aWxkX3B1cmVfY19zdHJp bmcKKyAgICAgIChidWlsZF9zdHJpbmcKICAgICAgICAoIkRvIG5vIGNvbnZlcnNpb24uXG4iCiAJ IlxuIgogCSJXaGVuIHlvdSB2aXNpdCBhIGZpbGUgd2l0aCB0aGlzIGNvZGluZywgdGhlIGZpbGUg aXMgcmVhZCBpbnRvIGFcbiIKQEAgLTEyMTY2LDcgKzEyMTY2LDcgQEAgc3lzdGVtIChlLmcuIGBp c28tMjAyMi03Yml0JykuCiAgIHBsaXN0WzhdID0gaW50ZXJuX2Nfc3RyaW5nICgiOmNoYXJzZXQt bGlzdCIpOwogICBwbGlzdFs5XSA9IGFyZ3NbY29kaW5nX2FyZ19jaGFyc2V0X2xpc3RdID0gbGlz dDEgKFFhc2NpaSk7CiAgIHBsaXN0WzExXSA9IGFyZ3NbY29kaW5nX2FyZ19mb3JfdW5pYnl0ZV0g PSBRbmlsOwotICBwbGlzdFsxM10gPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiTm8gY29udmVyc2lv biBvbiBlbmNvZGluZywgIgorICBwbGlzdFsxM10gPSBidWlsZF9zdHJpbmcgKCJObyBjb252ZXJz aW9uIG9uIGVuY29kaW5nLCAiCiAJCQkJICAgImF1dG9tYXRpYyBjb252ZXJzaW9uIG9uIGRlY29k aW5nLiIpOwogICBwbGlzdFsxNV0gPSBhcmdzW2NvZGluZ19hcmdfZW9sX3R5cGVdID0gUW5pbDsK ICAgYXJnc1tjb2RpbmdfYXJnX3BsaXN0XSA9IENBTExNQU5ZIChGbGlzdCwgcGxpc3QpOwpkaWZm IC0tZ2l0IGEvc3JjL2NvbmZfcG9zdC5oIGIvc3JjL2NvbmZfcG9zdC5oCmluZGV4IDE3NmFiMjhi MjFhYjIuLmRhNTVhMWZiNTRhYmMgMTAwNjQ0Ci0tLSBhL3NyYy9jb25mX3Bvc3QuaAorKysgYi9z cmMvY29uZl9wb3N0LmgKQEAgLTE2Myw0MSArMTYzLDggQEAgI2RlZmluZSBlbWFjc19yYWlzZShz aWcpIG1zZG9zX2ZhdGFsX3NpZ25hbCAoc2lnKQogCiAvKiBEQVRBX1NUQVJUIGlzIG5lZWRlZCBi eSB2bS1saW1pdC5jIGFuZCB1bmV4Y29mZi5jLiAqLwogI2RlZmluZSBEQVRBX1NUQVJUICgmZXRl eHQgKyAxKQotCi0vKiBEZWZpbmUgb25lIG9mIHRoZXNlIGZvciBlYXNpZXIgY29uZGl0aW9uYWxz LiAgKi8KLSNpZmRlZiBIQVZFX1hfV0lORE9XUwotLyogV2UgbmVlZCBhIGxpdHRsZSBleHRyYSBz cGFjZSwgc2VlIC4uLy4uL2xpc3AvbG9hZHVwLmVsIGFuZCB0aGUKLSAgIGNvbW1lbnRhcnkgYmVs b3csIGluIHRoZSBub24tWCBicmFuY2guICBUaGUgMTQwS0IgbnVtYmVyIHdhcwotICAgbWVhc3Vy ZWQgb24gR05VL0xpbnV4IGFuZCBvbiBNUy1XaW5kb3dzLiAgKi8KLSNkZWZpbmUgU1lTVEVNX1BV UkVTSVpFX0VYVFJBICgtMTcwMDAwKzE0MDAwMCkKLSNlbHNlCi0vKiBXZSBuZWVkIGEgbGl0dGxl IGV4dHJhIHNwYWNlLCBzZWUgLi4vLi4vbGlzcC9sb2FkdXAuZWwuCi0gICBBcyBvZiAyMDA5MTAy NCwgRE9TLXNwZWNpZmljIGZpbGVzIHVzZSB1cCA2MktCIG9mIHB1cmUgc3BhY2UuICBCdXQKLSAg IG92ZXJhbGwsIHdlIGVuZCB1cCB3YXN0aW5nIDEzMEtCIG9mIHB1cmUgc3BhY2UsIGJlY2F1c2UK LSAgIEJBU0VfUFVSRVNJWkUgc3RhcnRzIGF0IDEuNDdNQiwgd2hpbGUgd2UgbmVlZCBvbmx5IDEu M01CIChpbmNsdWRpbmcKLSAgIG5vbi1ET1Mgc3BlY2lmaWMgZmlsZXMgYW5kIGxvYWQgaGlzdG9y eTsgdGhlIGxhdHRlciBpcyBhYm91dCA1NUssCi0gICBidXQgZGVwZW5kcyBvbiB0aGUgZGVwdGgg b2YgdGhlIHRvcC1sZXZlbCBFbWFjcyBkaXJlY3RvcnkgaW4gdGhlCi0gICBkaXJlY3RvcnkgdHJl ZSkuICBHaXZlbiB0aGUgdW5rbm93biBwb2xpY3kgb2YgZGlmZmVyZW50IERQTUkKLSAgIGhvc3Rz IHJlZ2FyZGluZyBsb2FkaW5nIG9mIHVudG91Y2hlZCBwYWdlcywgSSdtIG5vdCBnb2luZyB0byBy aXNrCi0gICBlbmxhcmdpbmcgRW1hY3MgZm9vdHByaW50IGJ5IGFub3RoZXIgMTAwKyBLQnl0ZXMu ICAqLwotI2RlZmluZSBTWVNURU1fUFVSRVNJWkVfRVhUUkEgKC0xNzAwMDArOTAwMDApCi0jZW5k aWYKICNlbmRpZiAgLyogTVNET1MgKi8KIAotLyogbWFjT1MgLyBHTlVzdGVwIG5lZWQgYSBiaXQg bW9yZSBwdXJlIG1lbW9yeS4gIE9mIHRoZSBleGlzdGluZyBrbm9icywKLSAgIFNZU1RFTV9QVVJF U0laRV9FWFRSQSBzZWVtcyBsaWtlIHRoZSBsZWFzdCBsaWtlbHkgdG8gY2F1c2UgcHJvYmxlbXMu ICAqLwotI2lmZGVmIEhBVkVfTlMKLSNpZiBkZWZpbmVkIE5TX0lNUExfR05VU1RFUAotIyAgZGVm aW5lIFNZU1RFTV9QVVJFU0laRV9FWFRSQSAzMDAwMAotI2VsaWYgZGVmaW5lZCBEQVJXSU5fT1MK LSMgIGRlZmluZSBTWVNURU1fUFVSRVNJWkVfRVhUUkEgMjAwMDAwCi0jZW5kaWYKLSNlbmRpZgot Ci0jaWZkZWYgQ1lHV0lOCi0jZGVmaW5lIFNZU1RFTV9QVVJFU0laRV9FWFRSQSA1MDAwMAotI2Vu ZGlmCi0KICNpZiBkZWZpbmVkIEhBVkVfTlRHVUkgJiYgIWRlZmluZWQgRGViUHJpbnQKICMgaWZk ZWYgRU1BQ1NERUJVRwogZXh0ZXJuIHZvaWQgX0RlYlByaW50IChjb25zdCBjaGFyICpmbXQsIC4u Lik7CmRpZmYgLS1naXQgYS9zcmMvZGF0YS5jIGIvc3JjL2RhdGEuYwppbmRleCAwZmE0OTFiMTdh MTE0Li4yYThjNzI0NmZhZTY1IDEwMDY0NAotLS0gYS9zcmMvZGF0YS5jCisrKyBiL3NyYy9kYXRh LmMKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgImxpc3AuaCIKICNpbmNsdWRlICJiaWdu dW0uaCIKLSNpbmNsdWRlICJwdXJlc2l6ZS5oIgogI2luY2x1ZGUgImNoYXJhY3Rlci5oIgogI2lu Y2x1ZGUgImJ1ZmZlci5oIgogI2luY2x1ZGUgImtleWJvYXJkLmgiCkBAIC0xNDksMTIgKzE0OCw2 IEBAIHdyb25nX3R5cGVfYXJndW1lbnQgKExpc3BfT2JqZWN0IHByZWRpY2F0ZSwgTGlzcF9PYmpl Y3QgdmFsdWUpCiAgIHhzaWduYWwyIChRd3JvbmdfdHlwZV9hcmd1bWVudCwgcHJlZGljYXRlLCB2 YWx1ZSk7CiB9CiAKLXZvaWQKLXB1cmVfd3JpdGVfZXJyb3IgKExpc3BfT2JqZWN0IG9iaikKLXsK LSAgeHNpZ25hbDIgKFFlcnJvciwgYnVpbGRfc3RyaW5nICgiQXR0ZW1wdCB0byBtb2RpZnkgcmVh ZC1vbmx5IG9iamVjdCIpLCBvYmopOwotfQotCiB2b2lkCiBhcmdzX291dF9vZl9yYW5nZSAoTGlz cF9PYmplY3QgYTEsIExpc3BfT2JqZWN0IGEyKQogewpAQCAtNjI1LDcgKzYxOCw2IEBAIERFRlVO ICgic2V0Y2FyIiwgRnNldGNhciwgU3NldGNhciwgMiwgMiwgMCwKICAgKHJlZ2lzdGVyIExpc3Bf T2JqZWN0IGNlbGwsIExpc3BfT2JqZWN0IG5ld2NhcikKIHsKICAgQ0hFQ0tfQ09OUyAoY2VsbCk7 Ci0gIENIRUNLX0lNUFVSRSAoY2VsbCwgWENPTlMgKGNlbGwpKTsKICAgWFNFVENBUiAoY2VsbCwg bmV3Y2FyKTsKICAgcmV0dXJuIG5ld2NhcjsKIH0KQEAgLTYzNSw3ICs2MjcsNiBAQCBERUZVTiAo InNldGNkciIsIEZzZXRjZHIsIFNzZXRjZHIsIDIsIDIsIDAsCiAgIChyZWdpc3RlciBMaXNwX09i amVjdCBjZWxsLCBMaXNwX09iamVjdCBuZXdjZHIpCiB7CiAgIENIRUNLX0NPTlMgKGNlbGwpOwot ICBDSEVDS19JTVBVUkUgKGNlbGwsIFhDT05TIChjZWxsKSk7CiAgIFhTRVRDRFIgKGNlbGwsIG5l d2Nkcik7CiAgIHJldHVybiBuZXdjZHI7CiB9CkBAIC03OTgsMTAgKzc4OSw2IEBAIERFRlVOICgi ZGVmYWxpYXMiLCBGZGVmYWxpYXMsIFNkZWZhbGlhcywgMiwgMywgMCwKICAgKHJlZ2lzdGVyIExp c3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3QgZGVmaW5pdGlvbiwgTGlzcF9PYmplY3QgZG9j c3RyaW5nKQogewogICBDSEVDS19TWU1CT0wgKHN5bWJvbCk7Ci0gIGlmICghTklMUCAoVnB1cmlm eV9mbGFnKQotICAgICAgLyogSWYgYGRlZmluaXRpb24nIGlzIGEga2V5bWFwLCBpbW11dGFibGUg KGFuZCBjb3B5aW5nKSBpcyB3cm9uZy4gICovCi0gICAgICAmJiAhS0VZTUFQUCAoZGVmaW5pdGlv bikpCi0gICAgZGVmaW5pdGlvbiA9IEZwdXJlY29weSAoZGVmaW5pdGlvbik7CiAKICAgewogICAg IGJvb2wgYXV0b2xvYWQgPSBBVVRPTE9BRFAgKGRlZmluaXRpb24pOwpAQCAtMjM3NSw3ICsyMzYy LDYgQEAgREVGVU4gKCJhc2V0IiwgRmFzZXQsIFNhc2V0LCAzLCAzLCAwLAogCiAgIGlmIChWRUNU T1JQIChhcnJheSkpCiAgICAgewotICAgICAgQ0hFQ0tfSU1QVVJFIChhcnJheSwgWFZFQ1RPUiAo YXJyYXkpKTsKICAgICAgIGlmIChpZHh2YWwgPCAwIHx8IGlkeHZhbCA+PSBBU0laRSAoYXJyYXkp KQogCWFyZ3Nfb3V0X29mX3JhbmdlIChhcnJheSwgaWR4KTsKICAgICAgIEFTRVQgKGFycmF5LCBp ZHh2YWwsIG5ld2VsdCk7CkBAIC0yMzk5LDcgKzIzODUsNiBAQCBERUZVTiAoImFzZXQiLCBGYXNl dCwgU2FzZXQsIDMsIDMsIDAsCiAgICAgfQogICBlbHNlIC8qIFNUUklOR1AgKi8KICAgICB7Ci0g ICAgICBDSEVDS19JTVBVUkUgKGFycmF5LCBYU1RSSU5HIChhcnJheSkpOwogICAgICAgaWYgKGlk eHZhbCA8IDAgfHwgaWR4dmFsID49IFNDSEFSUyAoYXJyYXkpKQogCWFyZ3Nfb3V0X29mX3Jhbmdl IChhcnJheSwgaWR4KTsKICAgICAgIENIRUNLX0NIQVJBQ1RFUiAobmV3ZWx0KTsKQEAgLTM4ODEs NyArMzg2Niw3IEBAIHN5bXNfb2ZfZGF0YSAodm9pZCkKIAogICBERUZTWU0gKFFjZHIsICJjZHIi KTsKIAotICBlcnJvcl90YWlsID0gcHVyZV9jb25zIChRZXJyb3IsIFFuaWwpOworICBlcnJvcl90 YWlsID0gRmNvbnMgKFFlcnJvciwgUW5pbCk7CiAKICAgLyogRVJST1IgaXMgdXNlZCBhcyBhIHNp Z25hbGVyIGZvciByYW5kb20gZXJyb3JzIGZvciB3aGljaCBub3RoaW5nIGVsc2UgaXMKICAgICAg cmlnaHQuICAqLwpAQCAtMzg4OSwxMSArMzg3NCwxMSBAQCBzeW1zX29mX2RhdGEgKHZvaWQpCiAg IEZwdXQgKFFlcnJvciwgUWVycm9yX2NvbmRpdGlvbnMsCiAJZXJyb3JfdGFpbCk7CiAgIEZwdXQg KFFlcnJvciwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoImVycm9yIikp OworCWJ1aWxkX3N0cmluZyAoImVycm9yIikpOwogCiAjZGVmaW5lIFBVVF9FUlJPUihzeW0sIHRh aWwsIG1zZykJCQlcCi0gIEZwdXQgKHN5bSwgUWVycm9yX2NvbmRpdGlvbnMsIHB1cmVfY29ucyAo c3ltLCB0YWlsKSk7IFwKLSAgRnB1dCAoc3ltLCBRZXJyb3JfbWVzc2FnZSwgYnVpbGRfcHVyZV9j X3N0cmluZyAobXNnKSkKKyAgRnB1dCAoc3ltLCBRZXJyb3JfY29uZGl0aW9ucywgRmNvbnMgKHN5 bSwgdGFpbCkpOyBcCisgIEZwdXQgKHN5bSwgUWVycm9yX21lc3NhZ2UsIGJ1aWxkX3N0cmluZyAo bXNnKSkKIAogICBQVVRfRVJST1IgKFFxdWl0LCBRbmlsLCAiUXVpdCIpOwogCkBAIC0zOTIxLDE0 ICszOTA2LDE0IEBAICNkZWZpbmUgUFVUX0VSUk9SKHN5bSwgdGFpbCwgbXNnKQkJCVwKICAgUFVU X0VSUk9SIChRbm9fY2F0Y2gsIGVycm9yX3RhaWwsICJObyBjYXRjaCBmb3IgdGFnIik7CiAgIFBV VF9FUlJPUiAoUWVuZF9vZl9maWxlLCBlcnJvcl90YWlsLCAiRW5kIG9mIGZpbGUgZHVyaW5nIHBh cnNpbmciKTsKIAotICBhcml0aF90YWlsID0gcHVyZV9jb25zIChRYXJpdGhfZXJyb3IsIGVycm9y X3RhaWwpOworICBhcml0aF90YWlsID0gRmNvbnMgKFFhcml0aF9lcnJvciwgZXJyb3JfdGFpbCk7 CiAgIEZwdXQgKFFhcml0aF9lcnJvciwgUWVycm9yX2NvbmRpdGlvbnMsIGFyaXRoX3RhaWwpOwot ICBGcHV0IChRYXJpdGhfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLCBidWlsZF9wdXJlX2Nfc3RyaW5n ICgiQXJpdGhtZXRpYyBlcnJvciIpKTsKKyAgRnB1dCAoUWFyaXRoX2Vycm9yLCBRZXJyb3JfbWVz c2FnZSwgYnVpbGRfc3RyaW5nICgiQXJpdGhtZXRpYyBlcnJvciIpKTsKIAogICBQVVRfRVJST1Ig KFFiZWdpbm5pbmdfb2ZfYnVmZmVyLCBlcnJvcl90YWlsLCAiQmVnaW5uaW5nIG9mIGJ1ZmZlciIp OwogICBQVVRfRVJST1IgKFFlbmRfb2ZfYnVmZmVyLCBlcnJvcl90YWlsLCAiRW5kIG9mIGJ1ZmZl ciIpOwogICBQVVRfRVJST1IgKFFidWZmZXJfcmVhZF9vbmx5LCBlcnJvcl90YWlsLCAiQnVmZmVy IGlzIHJlYWQtb25seSIpOwotICBQVVRfRVJST1IgKFF0ZXh0X3JlYWRfb25seSwgcHVyZV9jb25z IChRYnVmZmVyX3JlYWRfb25seSwgZXJyb3JfdGFpbCksCisgIFBVVF9FUlJPUiAoUXRleHRfcmVh ZF9vbmx5LCBGY29ucyAoUWJ1ZmZlcl9yZWFkX29ubHksIGVycm9yX3RhaWwpLAogCSAgICAgIlRl eHQgaXMgcmVhZC1vbmx5Iik7CiAgIFBVVF9FUlJPUiAoUWluaGliaXRlZF9pbnRlcmFjdGlvbiwg ZXJyb3JfdGFpbCwKIAkgICAgICJVc2VyIGludGVyYWN0aW9uIHdoaWxlIGluaGliaXRlZCIpOwpk aWZmIC0tZ2l0IGEvc3JjL2RidXNiaW5kLmMgYi9zcmMvZGJ1c2JpbmQuYwppbmRleCBjMDA1NDc0 ZDQ0MDlmLi4yMzgxNDJiOTU2MDZjIDEwMDY0NAotLS0gYS9zcmMvZGJ1c2JpbmQuYworKysgYi9z cmMvZGJ1c2JpbmQuYwpAQCAtMTg2OCw3ICsxODY4LDcgQEAgc3ltc19vZl9kYnVzYmluZCAodm9p ZCkKICAgRnB1dCAoUWRidXNfZXJyb3IsIFFlcnJvcl9jb25kaXRpb25zLAogCWxpc3QyIChRZGJ1 c19lcnJvciwgUWVycm9yKSk7CiAgIEZwdXQgKFFkYnVzX2Vycm9yLCBRZXJyb3JfbWVzc2FnZSwK LQlidWlsZF9wdXJlX2Nfc3RyaW5nICgiRC1CdXMgZXJyb3IiKSk7CisJYnVpbGRfc3RyaW5nICgi RC1CdXMgZXJyb3IiKSk7CiAKICAgLyogTGlzcCBzeW1ib2xzIG9mIHRoZSBzeXN0ZW0gYW5kIHNl c3Npb24gYnVzZXMuICAqLwogICBERUZTWU0gKFFDc3lzdGVtLCAiOnN5c3RlbSIpOwpAQCAtMTkx MSw3ICsxOTExLDcgQEAgc3ltc19vZl9kYnVzYmluZCAodm9pZCkKIAkgICAgICAgVmRidXNfY29t cGlsZWRfdmVyc2lvbiwKICAgICBkb2M6IC8qIFRoZSB2ZXJzaW9uIG9mIEQtQnVzIEVtYWNzIGlz IGNvbXBpbGVkIGFnYWluc3QuICAqLyk7CiAjaWZkZWYgREJVU19WRVJTSU9OX1NUUklORwotICBW ZGJ1c19jb21waWxlZF92ZXJzaW9uID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoREJVU19WRVJTSU9O X1NUUklORyk7CisgIFZkYnVzX2NvbXBpbGVkX3ZlcnNpb24gPSBidWlsZF9zdHJpbmcgKERCVVNf VkVSU0lPTl9TVFJJTkcpOwogI2Vsc2UKICAgVmRidXNfY29tcGlsZWRfdmVyc2lvbiA9IFFuaWw7 CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9kZXBzLm1rIGIvc3JjL2RlcHMubWsKaW5kZXggZWRh MmVkNjMzODI1Mi4uMzI5MmNmMjAxY2Y3NCAxMDA2NDQKLS0tIGEvc3JjL2RlcHMubWsKKysrIGIv c3JjL2RlcHMubWsKQEAgLTEzMiwxMCArMTMyLDEwIEBAIGluc2RlbC5vOgoga2V5Ym9hcmQubzog a2V5Ym9hcmQuYyB0ZXJtY2hhci5oIHRlcm1ob29rcy5oIHRlcm1vcHRzLmggYnVmZmVyLmggY2hh cmFjdGVyLmggXAogICAgY29tbWFuZHMuaCBmcmFtZS5oIHdpbmRvdy5oIG1hY3Jvcy5oIGRpc3B0 YWIuaCBrZXlib2FyZC5oIHN5c3NpZ25hbC5oIFwKICAgIHN5c3RpbWUuaCBzeW50YXguaCAkKElO VEVSVkFMU19IKSBibG9ja2lucHV0LmggYXRpbWVyLmggY29tcG9zaXRlLmggXAotICAgeHRlcm0u aCBwdXJlc2l6ZS5oIG1zZG9zLmgga2V5bWFwLmggdzMydGVybS5oIG5zdGVybS5oIG5zZ3VpLmgg Y29kaW5nLmggXAorICAgeHRlcm0uaCBtc2Rvcy5oIGtleW1hcC5oIHczMnRlcm0uaCBuc3Rlcm0u aCBuc2d1aS5oIGNvZGluZy5oIFwKICAgIHByb2Nlc3MuaCAuLi9saWIvdW5pc3RkLmggZ251dGxz LmggbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZpZ19oKQoga2V5bWFwLm86IGtleW1hcC5jIGJ1ZmZl ci5oIGNvbW1hbmRzLmgga2V5Ym9hcmQuaCB0ZXJtaG9va3MuaCBibG9ja2lucHV0LmggXAotICAg YXRpbWVyLmggc3lzdGltZS5oIHB1cmVzaXplLmggY2hhcmFjdGVyLmggY2hhcnNldC5oICQoSU5U RVJWQUxTX0gpIFwKKyAgIGF0aW1lci5oIHN5c3RpbWUuaCBjaGFyYWN0ZXIuaCBjaGFyc2V0Lmgg JChJTlRFUlZBTFNfSCkgXAogICAga2V5bWFwLmggd2luZG93LmggY29kaW5nLmggZnJhbWUuaCBs aXNwLmggZ2xvYmFscy5oICQoY29uZmlnX2gpCiBsYXN0ZmlsZS5vOiBsYXN0ZmlsZS5jICQoY29u ZmlnX2gpCiBtYWNyb3MubzogbWFjcm9zLmMgd2luZG93LmggYnVmZmVyLmggY29tbWFuZHMuaCBt YWNyb3MuaCBrZXlib2FyZC5oIG1zZG9zLmggXApAQCAtMjY3LDEyICsyNjcsMTIgQEAgeHNldHRp bmdzLm86CiAgICBhdGltZXIuaCB0ZXJtb3B0cy5oIGdsb2JhbHMuaAogCiAjIyBUaGUgZmlsZXMg b2YgTGlzcCBwcm9wZXIuCi1hbGxvYy5vOiBhbGxvYy5jIHByb2Nlc3MuaCBmcmFtZS5oIHdpbmRv dy5oIGJ1ZmZlci5oICBwdXJlc2l6ZS5oIHN5c3NpZ25hbC5oIFwKK2FsbG9jLm86IGFsbG9jLmMg cHJvY2Vzcy5oIGZyYW1lLmggd2luZG93LmggYnVmZmVyLmggc3lzc2lnbmFsLmggXAogICAga2V5 Ym9hcmQuaCBibG9ja2lucHV0LmggYXRpbWVyLmggc3lzdGltZS5oIGNoYXJhY3Rlci5oIGxpc3Au aCAkKGNvbmZpZ19oKSBcCiAgICAkKElOVEVSVkFMU19IKSB0ZXJtaG9va3MuaCBnbnV0bHMuaCBj b2RpbmcuaCAuLi9saWIvdW5pc3RkLmggZ2xvYmFscy5oCiBieXRlY29kZS5vOiBieXRlY29kZS5j IGJ1ZmZlci5oIHN5bnRheC5oIGNoYXJhY3Rlci5oIHdpbmRvdy5oIGRpc3BleHRlcm4uaCBcCiAg IGxpc3AuaCBnbG9iYWxzLmggJChjb25maWdfaCkgbXNkb3MuaAotZGF0YS5vOiBkYXRhLmMgYnVm ZmVyLmggcHVyZXNpemUuaCBjaGFyYWN0ZXIuaCBzeXNzaWduYWwuaCBrZXlib2FyZC5oIGZyYW1l LmggXAorZGF0YS5vOiBkYXRhLmMgYnVmZmVyLmggY2hhcmFjdGVyLmggc3lzc2lnbmFsLmgga2V5 Ym9hcmQuaCBmcmFtZS5oIFwKICAgIHRlcm1ob29rcy5oIHN5c3RpbWUuaCBjb2RpbmcuaCBjb21w b3NpdGUuaCBkaXNwZXh0ZXJuLmggZm9udC5oIGNjbC5oIFwKICAgIGxpc3AuaCBnbG9iYWxzLmgg JChjb25maWdfaCkgbXNkb3MuaAogZXZhbC5vOiBldmFsLmMgY29tbWFuZHMuaCBrZXlib2FyZC5o IGJsb2NraW5wdXQuaCBhdGltZXIuaCBzeXN0aW1lLmggZnJhbWUuaCBcCkBAIC0yOTUsNyArMjk1 LDcgQEAgbHJlYWQubzoKIGNvbXBvc2l0ZS5vOiBjb21wb3NpdGUuYyBjb21wb3NpdGUuaCBidWZm ZXIuaCBjaGFyYWN0ZXIuaCBjb2RpbmcuaCBmb250LmggXAogICAgY2NsLmggZnJhbWUuaCB0ZXJt aG9va3MuaCAkKElOVEVSVkFMU19IKSB3aW5kb3cuaCBcCiAgICBsaXNwLmggZ2xvYmFscy5oICQo Y29uZmlnX2gpCi1pbnRlcnZhbHMubzogaW50ZXJ2YWxzLmMgYnVmZmVyLmggJChJTlRFUlZBTFNf SCkga2V5Ym9hcmQuaCBwdXJlc2l6ZS5oIFwKK2ludGVydmFscy5vOiBpbnRlcnZhbHMuYyBidWZm ZXIuaCAkKElOVEVSVkFMU19IKSBrZXlib2FyZC5oIFwKICAgIGtleW1hcC5oIGxpc3AuaCBnbG9i YWxzLmggJChjb25maWdfaCkgc3lzdGltZS5oIGNvZGluZy5oCiB0ZXh0cHJvcC5vOiB0ZXh0cHJv cC5jIGJ1ZmZlci5oIHdpbmRvdy5oICQoSU5URVJWQUxTX0gpIFwKICAgIGxpc3AuaCBnbG9iYWxz LmggJChjb25maWdfaCkKZGlmZiAtLWdpdCBhL3NyYy9kb2MuYyBiL3NyYy9kb2MuYwppbmRleCAx MzA3YWE1ZWU5MjMzLi4yMTM2ZjkxNDI5N2RkIDEwMDY0NAotLS0gYS9zcmMvZG9jLmMKKysrIGIv c3JjL2RvYy5jCkBAIC00OTAsOCArNDkwLDYgQEAgc3RvcmVfZnVuY3Rpb25fZG9jc3RyaW5nIChM aXNwX09iamVjdCBvYmosIEVNQUNTX0lOVCBvZmZzZXQpCiAJewogCSAgdGVtID0gRmNkciAoRmNk ciAoZnVuKSk7CiAJICBpZiAoQ09OU1AgKHRlbSkgJiYgRklYTlVNUCAoWENBUiAodGVtKSkpCi0J ICAgIC8qIEZJWE1FOiBUaGlzIG1vZGlmaWVzIHR5cGljYWxseSBwdXJlIGhhc2gtY29ucydkIGRh dGEsIHNvIGl0cwotCSAgICAgICBjb3JyZWN0bmVzcyBpcyBxdWl0ZSBkZWxpY2F0ZS4gICovCiAJ ICAgIFhTRVRDQVIgKHRlbSwgbWFrZV9maXhudW0gKG9mZnNldCkpOwogCX0KICAgICB9CkBAIC01 NzUsNyArNTczLDYgQEAgREVGVU4gKCJTbmFyZi1kb2N1bWVudGF0aW9uIiwgRnNuYXJmX2RvY3Vt ZW50YXRpb24sIFNzbmFyZl9kb2N1bWVudGF0aW9uLAogICAgICAgaW50IGkgPSBBUlJBWUVMVFMg KGJ1aWxkb2JqKTsKICAgICAgIHdoaWxlICgwIDw9IC0taSkKIAlWYnVpbGRfZmlsZXMgPSBGY29u cyAoYnVpbGRfc3RyaW5nIChidWlsZG9ialtpXSksIFZidWlsZF9maWxlcyk7Ci0gICAgICBWYnVp bGRfZmlsZXMgPSBGcHVyZWNvcHkgKFZidWlsZF9maWxlcyk7CiAgICAgfQogCiAgIGZkID0gZW1h Y3Nfb3BlbiAobmFtZSwgT19SRE9OTFksIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2VtYWNzLW1vZHVs ZS5jIGIvc3JjL2VtYWNzLW1vZHVsZS5jCmluZGV4IGY4ZmI1NGMwNzI4MjMuLjg5NmFlNjU2ODVl ODQgMTAwNjQ0Ci0tLSBhL3NyYy9lbWFjcy1tb2R1bGUuYworKysgYi9zcmMvZW1hY3MtbW9kdWxl LmMKQEAgLTE2MDAsNDQgKzE2MDAsNDQgQEAgc3ltc19vZl9tb2R1bGUgKHZvaWQpCiAgIFZtb2R1 bGVfcmVmc19oYXNoCiAgICAgPSBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0X2VxLCBERUZBVUxU X0hBU0hfU0laRSwKIAkJICAgICAgIERFRkFVTFRfUkVIQVNIX1NJWkUsIERFRkFVTFRfUkVIQVNI X1RIUkVTSE9MRCwKLQkJICAgICAgIFFuaWwsIGZhbHNlKTsKKwkJICAgICAgIFFuaWwpOwogCiAg IERFRlNZTSAoUW1vZHVsZV9sb2FkX2ZhaWxlZCwgIm1vZHVsZS1sb2FkLWZhaWxlZCIpOwogICBG cHV0IChRbW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJyb3JfY29uZGl0aW9ucywKLQlwdXJlX2xpc3Qg KFFtb2R1bGVfbG9hZF9mYWlsZWQsIFFlcnJvcikpOworCWxpc3QgKFFtb2R1bGVfbG9hZF9mYWls ZWQsIFFlcnJvcikpOwogICBGcHV0IChRbW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJyb3JfbWVzc2Fn ZSwKLSAgICAgICAgYnVpbGRfcHVyZV9jX3N0cmluZyAoIk1vZHVsZSBsb2FkIGZhaWxlZCIpKTsK KyAgICAgICAgYnVpbGRfc3RyaW5nICgiTW9kdWxlIGxvYWQgZmFpbGVkIikpOwogCiAgIERFRlNZ TSAoUW1vZHVsZV9vcGVuX2ZhaWxlZCwgIm1vZHVsZS1vcGVuLWZhaWxlZCIpOwogICBGcHV0IChR bW9kdWxlX29wZW5fZmFpbGVkLCBRZXJyb3JfY29uZGl0aW9ucywKLQlwdXJlX2xpc3QgKFFtb2R1 bGVfb3Blbl9mYWlsZWQsIFFtb2R1bGVfbG9hZF9mYWlsZWQsIFFlcnJvcikpOworCWxpc3QgKFFt b2R1bGVfb3Blbl9mYWlsZWQsIFFtb2R1bGVfbG9hZF9mYWlsZWQsIFFlcnJvcikpOwogICBGcHV0 IChRbW9kdWxlX29wZW5fZmFpbGVkLCBRZXJyb3JfbWVzc2FnZSwKLSAgICAgICAgYnVpbGRfcHVy ZV9jX3N0cmluZyAoIk1vZHVsZSBjb3VsZCBub3QgYmUgb3BlbmVkIikpOworICAgICAgICBidWls ZF9zdHJpbmcgKCJNb2R1bGUgY291bGQgbm90IGJlIG9wZW5lZCIpKTsKIAogICBERUZTWU0gKFFt b2R1bGVfbm90X2dwbF9jb21wYXRpYmxlLCAibW9kdWxlLW5vdC1ncGwtY29tcGF0aWJsZSIpOwog ICBGcHV0IChRbW9kdWxlX25vdF9ncGxfY29tcGF0aWJsZSwgUWVycm9yX2NvbmRpdGlvbnMsCi0J cHVyZV9saXN0IChRbW9kdWxlX25vdF9ncGxfY29tcGF0aWJsZSwgUW1vZHVsZV9sb2FkX2ZhaWxl ZCwgUWVycm9yKSk7CisJbGlzdCAoUW1vZHVsZV9ub3RfZ3BsX2NvbXBhdGlibGUsIFFtb2R1bGVf bG9hZF9mYWlsZWQsIFFlcnJvcikpOwogICBGcHV0IChRbW9kdWxlX25vdF9ncGxfY29tcGF0aWJs ZSwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJNb2R1bGUg aXMgbm90IEdQTCBjb21wYXRpYmxlIikpOworICAgICAgICBidWlsZF9zdHJpbmcgKCJNb2R1bGUg aXMgbm90IEdQTCBjb21wYXRpYmxlIikpOwogCiAgIERFRlNZTSAoUW1pc3NpbmdfbW9kdWxlX2lu aXRfZnVuY3Rpb24sICJtaXNzaW5nLW1vZHVsZS1pbml0LWZ1bmN0aW9uIik7CiAgIEZwdXQgKFFt aXNzaW5nX21vZHVsZV9pbml0X2Z1bmN0aW9uLCBRZXJyb3JfY29uZGl0aW9ucywKLQlwdXJlX2xp c3QgKFFtaXNzaW5nX21vZHVsZV9pbml0X2Z1bmN0aW9uLCBRbW9kdWxlX2xvYWRfZmFpbGVkLAot CQkgICBRZXJyb3IpKTsKKwlsaXN0IChRbWlzc2luZ19tb2R1bGVfaW5pdF9mdW5jdGlvbiwgUW1v ZHVsZV9sb2FkX2ZhaWxlZCwKKwkgICAgICBRZXJyb3IpKTsKICAgRnB1dCAoUW1pc3NpbmdfbW9k dWxlX2luaXRfZnVuY3Rpb24sIFFlcnJvcl9tZXNzYWdlLAotICAgICAgICBidWlsZF9wdXJlX2Nf c3RyaW5nICgiTW9kdWxlIGRvZXMgbm90IGV4cG9ydCBhbiAiCisgICAgICAgIGJ1aWxkX3N0cmlu ZyAoIk1vZHVsZSBkb2VzIG5vdCBleHBvcnQgYW4gIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24iKSk7CiAKICAgREVGU1lNIChRbW9kdWxlX2lu aXRfZmFpbGVkLCAibW9kdWxlLWluaXQtZmFpbGVkIik7CiAgIEZwdXQgKFFtb2R1bGVfaW5pdF9m YWlsZWQsIFFlcnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUW1vZHVsZV9pbml0X2ZhaWxl ZCwgUW1vZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlzdCAoUW1vZHVsZV9pbml0X2Zh aWxlZCwgUW1vZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yKSk7CiAgIEZwdXQgKFFtb2R1bGVfaW5p dF9mYWlsZWQsIFFlcnJvcl9tZXNzYWdlLAotICAgICAgICBidWlsZF9wdXJlX2Nfc3RyaW5nICgi TW9kdWxlIGluaXRpYWxpemF0aW9uIGZhaWxlZCIpKTsKKyAgICAgICAgYnVpbGRfc3RyaW5nICgi TW9kdWxlIGluaXRpYWxpemF0aW9uIGZhaWxlZCIpKTsKIAogICBERUZTWU0gKFFpbnZhbGlkX2Fy aXR5LCAiaW52YWxpZC1hcml0eSIpOwotICBGcHV0IChRaW52YWxpZF9hcml0eSwgUWVycm9yX2Nv bmRpdGlvbnMsIHB1cmVfbGlzdCAoUWludmFsaWRfYXJpdHksIFFlcnJvcikpOworICBGcHV0IChR aW52YWxpZF9hcml0eSwgUWVycm9yX2NvbmRpdGlvbnMsIGxpc3QgKFFpbnZhbGlkX2FyaXR5LCBR ZXJyb3IpKTsKICAgRnB1dCAoUWludmFsaWRfYXJpdHksIFFlcnJvcl9tZXNzYWdlLAotICAgICAg ICBidWlsZF9wdXJlX2Nfc3RyaW5nICgiSW52YWxpZCBmdW5jdGlvbiBhcml0eSIpKTsKKyAgICAg ICAgYnVpbGRfc3RyaW5nICgiSW52YWxpZCBmdW5jdGlvbiBhcml0eSIpKTsKIAogICBERUZTWU0g KFFtb2R1bGVfZnVuY3Rpb25fcCwgIm1vZHVsZS1mdW5jdGlvbi1wIik7CiAgIERFRlNZTSAoUXVu aWNvZGVfc3RyaW5nX3AsICJ1bmljb2RlLXN0cmluZy1wIik7CmRpZmYgLS1naXQgYS9zcmMvZW1h Y3MuYyBiL3NyYy9lbWFjcy5jCmluZGV4IGZkMDg2NjdmM2ZkNGYuLjAzZWM2MzQ2NGRhZjUgMTAw NjQ0Ci0tLSBhL3NyYy9lbWFjcy5jCisrKyBiL3NyYy9lbWFjcy5jCkBAIC04OCw3ICs4OCw2IEBA ICNkZWZpbmUgTUFJTl9QUk9HUkFNCiAjaW5jbHVkZSAic3ludGF4LmgiCiAjaW5jbHVkZSAic3lz c2VsZWN0LmgiCiAjaW5jbHVkZSAic3lzdGltZS5oIgotI2luY2x1ZGUgInB1cmVzaXplLmgiCiAK ICNpbmNsdWRlICJnZXRwYWdlc2l6ZS5oIgogI2luY2x1ZGUgImdudXRscy5oIgpAQCAtMTU0NCw3 ICsxNTQzLDkgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICBpZiAoIWluaXRpYWxp emVkKQogICAgIHsKICAgICAgIGluaXRfYWxsb2Nfb25jZSAoKTsKKyNpZmRlZiBIQVZFX1BEVU1Q RVIKICAgICAgIGluaXRfcGR1bXBlcl9vbmNlICgpOworI2VuZGlmCiAgICAgICBpbml0X29iYXJy YXlfb25jZSAoKTsKICAgICAgIGluaXRfZXZhbF9vbmNlICgpOwogICAgICAgaW5pdF9jaGFyc2V0 X29uY2UgKCk7CkBAIC0yNTA4LDggKzI1MDksNiBAQCBERUZVTiAoImR1bXAtZW1hY3MiLCBGZHVt cF9lbWFjcywgU2R1bXBfZW1hY3MsIDIsIDIsIDAsCiAgIExpc3BfT2JqZWN0IHN5bWJvbDsKICAg cHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKIAotICBjaGVja19wdXJlX3NpemUg KCk7Ci0KICAgaWYgKCEgbm9uaW50ZXJhY3RpdmUpCiAgICAgZXJyb3IgKCJEdW1waW5nIEVtYWNz IHdvcmtzIG9ubHkgaW4gYmF0Y2ggbW9kZSIpOwogCmRpZmYgLS1naXQgYS9zcmMvZXZhbC5jIGIv c3JjL2V2YWwuYwppbmRleCBkZGFhOGVkZDgxNzA2Li5jMDcxN2Y4Y2YxMjRkIDEwMDY0NAotLS0g YS9zcmMvZXZhbC5jCisrKyBiL3NyYy9ldmFsLmMKQEAgLTc4NSw4ICs3ODUsNiBAQCBERUZVTiAo ImludGVybmFsLS1kZWZpbmUtdW5pbml0aWFsaXplZC12YXJpYWJsZSIsCiAgIFhTWU1CT0wgKHN5 bWJvbCktPnUucy5kZWNsYXJlZF9zcGVjaWFsID0gdHJ1ZTsKICAgaWYgKCFOSUxQIChkb2MpKQog ICAgIHsKLSAgICAgIGlmICghTklMUCAoVnB1cmlmeV9mbGFnKSkKLQlkb2MgPSBGcHVyZWNvcHkg KGRvYyk7CiAgICAgICBGcHV0IChzeW1ib2wsIFF2YXJpYWJsZV9kb2N1bWVudGF0aW9uLCBkb2Mp OwogICAgIH0KICAgTE9BREhJU1RfQVRUQUNIIChzeW1ib2wpOwpAQCAtOTAzLDggKzkwMSw2IEBA IERFRlVOICgiZGVmY29uc3QiLCBGZGVmY29uc3QsIFNkZWZjb25zdCwgMiwgVU5FVkFMTEVELCAw LAogCiAgIEZpbnRlcm5hbF9fZGVmaW5lX3VuaW5pdGlhbGl6ZWRfdmFyaWFibGUgKHN5bSwgZG9j c3RyaW5nKTsKICAgdGVtID0gZXZhbF9zdWIgKFhDQVIgKFhDRFIgKGFyZ3MpKSk7Ci0gIGlmICgh TklMUCAoVnB1cmlmeV9mbGFnKSkKLSAgICB0ZW0gPSBGcHVyZWNvcHkgKHRlbSk7CiAgIEZzZXRf ZGVmYXVsdCAoc3ltLCB0ZW0pOyAgICAgIC8qIEZJWE1FOiBzZXQtZGVmYXVsdC10b3BsZXZlbC12 YWx1ZT8gKi8KICAgRnB1dCAoc3ltLCBRcmlza3lfbG9jYWxfdmFyaWFibGUsIFF0KTsgLyogRklY TUU6IFdoeT8gICovCiAgIHJldHVybiBzeW07CkBAIC0yMTA3LDEyICsyMTAzLDYgQEAgREVGVU4g KCJhdXRvbG9hZCIsIEZhdXRvbG9hZCwgU2F1dG9sb2FkLCAyLCA1LCAwLAogICAgICAgJiYgIUFV VE9MT0FEUCAoWFNZTUJPTCAoZnVuY3Rpb24pLT51LnMuZnVuY3Rpb24pKQogICAgIHJldHVybiBR bmlsOwogCi0gIGlmICghTklMUCAoVnB1cmlmeV9mbGFnKSAmJiBFUSAoZG9jc3RyaW5nLCBtYWtl X2ZpeG51bSAoMCkpKQotICAgIC8qIGByZWFkMScgaW4gbHJlYWQuYyBoYXMgZm91bmQgdGhlIGRv Y3N0cmluZyBzdGFydGluZyB3aXRoICJcCi0gICAgICAgYW5kIGFzc3VtZWQgdGhlIGRvY3N0cmlu ZyB3aWxsIGJlIHByb3ZpZGVkIGJ5IFNuYXJmLWRvY3VtZW50YXRpb24sIHNvIGl0Ci0gICAgICAg cGFzc2VkIHVzIDAgaW5zdGVhZC4gIEJ1dCB0aGF0IGxlYWRzIHRvIGFjY2lkZW50YWwgc2hhcmlu ZyBpbiBwdXJlY29weSdzCi0gICAgICAgaGFzaC1jb25zaW5nLCBzbyB3ZSB1c2UgYSAoaG9wZWZ1 bGx5KSB1bmlxdWUgaW50ZWdlciBpbnN0ZWFkLiAgKi8KLSAgICBkb2NzdHJpbmcgPSBtYWtlX3Vm aXhudW0gKFhIQVNIIChmdW5jdGlvbikpOwogICByZXR1cm4gRmRlZmFsaWFzIChmdW5jdGlvbiwK IAkJICAgIGxpc3Q1IChRYXV0b2xvYWQsIGZpbGUsIGRvY3N0cmluZywgaW50ZXJhY3RpdmUsIHR5 cGUpLAogCQkgICAgUW5pbCk7CkBAIC00MzU0LDcgKzQzNDQsNyBAQCBzeW1zX29mX2V2YWwgKHZv aWQpCiAgICAgIGFsc28gdXNlIHNvbWV0aGluZyBsaWtlIEZjb25zIChRbmlsLCBRbmlsKSwgYnV0 IGpzb24uYyB0cmVhdHMgYW55CiAgICAgIGNvbnMgY2VsbCBhcyBlcnJvciBkYXRhLCBzbyB1c2Ug YW4gdW5pbnRlcm5lZCBzeW1ib2wgaW5zdGVhZC4gICovCiAgIFFjYXRjaF9hbGxfbWVtb3J5X2Z1 bGwKLSAgICA9IEZtYWtlX3N5bWJvbCAoYnVpbGRfcHVyZV9jX3N0cmluZyAoImNhdGNoLWFsbC1t ZW1vcnktZnVsbCIpKTsKKyAgICA9IEZtYWtlX3N5bWJvbCAoYnVpbGRfc3RyaW5nICgiY2F0Y2gt YWxsLW1lbW9yeS1mdWxsIikpOwogCiAgIGRlZnN1YnIgKCZTb3IpOwogICBkZWZzdWJyICgmU2Fu ZCk7CmRpZmYgLS1naXQgYS9zcmMvZmlsZWlvLmMgYi9zcmMvZmlsZWlvLmMKaW5kZXggNzQxZTI5 N2QyOWMyYy4uNWQ0Mzg4NjVlMjA5MiAxMDA2NDQKLS0tIGEvc3JjL2ZpbGVpby5jCisrKyBiL3Ny Yy9maWxlaW8uYwpAQCAtNjI5NCwzNCArNjI5NCwzNCBAQCBzeW1zX29mX2ZpbGVpbyAodm9pZCkK ICAgREVGU1lNIChRY2FyX2xlc3NfdGhhbl9jYXIsICJjYXItbGVzcy10aGFuLWNhciIpOwogCiAg IEZwdXQgKFFmaWxlX2Vycm9yLCBRZXJyb3JfY29uZGl0aW9ucywKLQlGcHVyZWNvcHkgKGxpc3Qy IChRZmlsZV9lcnJvciwgUWVycm9yKSkpOworCWxpc3QyIChRZmlsZV9lcnJvciwgUWVycm9yKSk7 CiAgIEZwdXQgKFFmaWxlX2Vycm9yLCBRZXJyb3JfbWVzc2FnZSwKLQlidWlsZF9wdXJlX2Nfc3Ry aW5nICgiRmlsZSBlcnJvciIpKTsKKwlidWlsZF9zdHJpbmcgKCJGaWxlIGVycm9yIikpOwogCiAg IEZwdXQgKFFmaWxlX2FscmVhZHlfZXhpc3RzLCBRZXJyb3JfY29uZGl0aW9ucywKLQlGcHVyZWNv cHkgKGxpc3QzIChRZmlsZV9hbHJlYWR5X2V4aXN0cywgUWZpbGVfZXJyb3IsIFFlcnJvcikpKTsK KwlsaXN0MyAoUWZpbGVfYWxyZWFkeV9leGlzdHMsIFFmaWxlX2Vycm9yLCBRZXJyb3IpKTsKICAg RnB1dCAoUWZpbGVfYWxyZWFkeV9leGlzdHMsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVf Y19zdHJpbmcgKCJGaWxlIGFscmVhZHkgZXhpc3RzIikpOworCWJ1aWxkX3N0cmluZyAoIkZpbGUg YWxyZWFkeSBleGlzdHMiKSk7CiAKICAgRnB1dCAoUWZpbGVfZGF0ZV9lcnJvciwgUWVycm9yX2Nv bmRpdGlvbnMsCi0JRnB1cmVjb3B5IChsaXN0MyAoUWZpbGVfZGF0ZV9lcnJvciwgUWZpbGVfZXJy b3IsIFFlcnJvcikpKTsKKwlsaXN0MyAoUWZpbGVfZGF0ZV9lcnJvciwgUWZpbGVfZXJyb3IsIFFl cnJvcikpOwogICBGcHV0IChRZmlsZV9kYXRlX2Vycm9yLCBRZXJyb3JfbWVzc2FnZSwKLQlidWls ZF9wdXJlX2Nfc3RyaW5nICgiQ2Fubm90IHNldCBmaWxlIGRhdGUiKSk7CisJYnVpbGRfc3RyaW5n ICgiQ2Fubm90IHNldCBmaWxlIGRhdGUiKSk7CiAKICAgRnB1dCAoUWZpbGVfbWlzc2luZywgUWVy cm9yX2NvbmRpdGlvbnMsCi0JRnB1cmVjb3B5IChsaXN0MyAoUWZpbGVfbWlzc2luZywgUWZpbGVf ZXJyb3IsIFFlcnJvcikpKTsKKwlsaXN0MyAoUWZpbGVfbWlzc2luZywgUWZpbGVfZXJyb3IsIFFl cnJvcikpOwogICBGcHV0IChRZmlsZV9taXNzaW5nLCBRZXJyb3JfbWVzc2FnZSwKLQlidWlsZF9w dXJlX2Nfc3RyaW5nICgiRmlsZSBpcyBtaXNzaW5nIikpOworCWJ1aWxkX3N0cmluZyAoIkZpbGUg aXMgbWlzc2luZyIpKTsKIAogICBGcHV0IChRZmlsZV9ub3RpZnlfZXJyb3IsIFFlcnJvcl9jb25k aXRpb25zLAotCUZwdXJlY29weSAobGlzdDMgKFFmaWxlX25vdGlmeV9lcnJvciwgUWZpbGVfZXJy b3IsIFFlcnJvcikpKTsKKwlsaXN0MyAoUWZpbGVfbm90aWZ5X2Vycm9yLCBRZmlsZV9lcnJvciwg UWVycm9yKSk7CiAgIEZwdXQgKFFmaWxlX25vdGlmeV9lcnJvciwgUWVycm9yX21lc3NhZ2UsCi0J YnVpbGRfcHVyZV9jX3N0cmluZyAoIkZpbGUgbm90aWZpY2F0aW9uIGVycm9yIikpOworCWJ1aWxk X3N0cmluZyAoIkZpbGUgbm90aWZpY2F0aW9uIGVycm9yIikpOwogCiAgIEZwdXQgKFFyZW1vdGVf ZmlsZV9lcnJvciwgUWVycm9yX2NvbmRpdGlvbnMsCiAJRnB1cmVjb3B5IChsaXN0MyAoUXJlbW90 ZV9maWxlX2Vycm9yLCBRZmlsZV9lcnJvciwgUWVycm9yKSkpOwogICBGcHV0IChRcmVtb3RlX2Zp bGVfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJSZW1vdGUg ZmlsZSBlcnJvciIpKTsKKwlidWlsZF9zdHJpbmcgKCJSZW1vdGUgZmlsZSBlcnJvciIpKTsKIAog ICBERUZWQVJfTElTUCAoImZpbGUtbmFtZS1oYW5kbGVyLWFsaXN0IiwgVmZpbGVfbmFtZV9oYW5k bGVyX2FsaXN0LAogCSAgICAgICBkb2M6IC8qIEFsaXN0IG9mIGVsZW1lbnRzIChSRUdFWFAgLiBI QU5ETEVSKSBmb3IgZmlsZSBuYW1lcyBoYW5kbGVkIHNwZWNpYWxseS4KZGlmZiAtLWdpdCBhL3Ny Yy9mbnMuYyBiL3NyYy9mbnMuYwppbmRleCA3OTE0YmQ0Nzc5MGE5Li5hMjJiNjMzZWM3Mzg2IDEw MDY0NAotLS0gYS9zcmMvZm5zLmMKKysrIGIvc3JjL2Zucy5jCkBAIC0zNiw3ICszNiw2IEBAIENv cHlyaWdodCAoQykgMTk4NS0xOTg3LCAxOTkzLTE5OTUsIDE5OTctMjAyMSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sCiAjaW5jbHVkZSAiYnVmZmVyLmgiCiAjaW5jbHVkZSAiaW50ZXJ2YWxzLmgi CiAjaW5jbHVkZSAid2luZG93LmgiCi0jaW5jbHVkZSAicHVyZXNpemUuaCIKICNpbmNsdWRlICJn bnV0bHMuaCIKIAogc3RhdGljIHZvaWQgc29ydF92ZWN0b3JfY29weSAoTGlzcF9PYmplY3QsIHB0 cmRpZmZfdCwKQEAgLTI2MDIsNyArMjYwMSw2IEBAIERFRlVOICgiZmlsbGFycmF5IiwgRmZpbGxh cnJheSwgU2ZpbGxhcnJheSwgMiwgMiwgMCwKICAgICAgIHNpemUgPSBTQ0hBUlMgKGFycmF5KTsK ICAgICAgIGlmIChzaXplICE9IDApCiAJewotCSAgQ0hFQ0tfSU1QVVJFIChhcnJheSwgWFNUUklO RyAoYXJyYXkpKTsKIAkgIHVuc2lnbmVkIGNoYXIgc3RyW01BWF9NVUxUSUJZVEVfTEVOR1RIXTsK IAkgIGludCBsZW47CiAJICBpZiAoU1RSSU5HX01VTFRJQllURSAoYXJyYXkpKQpAQCAtMjY0NCw3 ICsyNjQyLDYgQEAgREVGVU4gKCJjbGVhci1zdHJpbmciLCBGY2xlYXJfc3RyaW5nLCBTY2xlYXJf c3RyaW5nLAogICBwdHJkaWZmX3QgbGVuID0gU0JZVEVTIChzdHJpbmcpOwogICBpZiAobGVuICE9 IDAgfHwgU1RSSU5HX01VTFRJQllURSAoc3RyaW5nKSkKICAgICB7Ci0gICAgICBDSEVDS19JTVBV UkUgKHN0cmluZywgWFNUUklORyAoc3RyaW5nKSk7CiAgICAgICBtZW1zZXQgKFNEQVRBIChzdHJp bmcpLCAwLCBsZW4pOwogICAgICAgU1RSSU5HX1NFVF9DSEFSUyAoc3RyaW5nLCBsZW4pOwogICAg ICAgU1RSSU5HX1NFVF9VTklCWVRFIChzdHJpbmcpOwpAQCAtNDE3OSwxNiArNDE3NiwxMiBAQCBo YXNoX2luZGV4X3NpemUgKHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgsIHB0cmRpZmZfdCBzaXpl KQogICAgc2l6ZSBleGNlZWRzIFJFSEFTSF9USFJFU0hPTEQuCiAKICAgIFdFQUsgc3BlY2lmaWVz IHRoZSB3ZWFrbmVzcyBvZiB0aGUgdGFibGUuICBJZiBub24tbmlsLCBpdCBtdXN0IGJlCi0gICBv bmUgb2YgdGhlIHN5bWJvbHMgYGtleScsIGB2YWx1ZScsIGBrZXktb3ItdmFsdWUnLCBvciBga2V5 LWFuZC12YWx1ZScuCi0KLSAgIElmIFBVUkVDT1BZIGlzIG5vbi1uaWwsIHRoZSB0YWJsZSBjYW4g YmUgY29waWVkIHRvIHB1cmUgc3RvcmFnZSB2aWEKLSAgIGBwdXJlY29weScgd2hlbiBFbWFjcyBp cyBiZWluZyBkdW1wZWQuIFN1Y2ggdGFibGVzIGNhbiBubyBsb25nZXIgYmUKLSAgIGNoYW5nZWQg YWZ0ZXIgcHVyZWNvcHkuICAqLworICAgb25lIG9mIHRoZSBzeW1ib2xzIGBrZXknLCBgdmFsdWUn LCBga2V5LW9yLXZhbHVlJywgb3IgYGtleS1hbmQtdmFsdWUnLiAqLwogCiBMaXNwX09iamVjdAog bWFrZV9oYXNoX3RhYmxlIChzdHJ1Y3QgaGFzaF90YWJsZV90ZXN0IHRlc3QsIEVNQUNTX0lOVCBz aXplLAogCQkgZmxvYXQgcmVoYXNoX3NpemUsIGZsb2F0IHJlaGFzaF90aHJlc2hvbGQsCi0JCSBM aXNwX09iamVjdCB3ZWFrLCBib29sIHB1cmVjb3B5KQorCQkgTGlzcF9PYmplY3Qgd2VhaykKIHsK ICAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaDsKICAgTGlzcF9PYmplY3QgdGFibGU7CkBAIC00 MjE3LDcgKzQyMTAsNiBAQCBtYWtlX2hhc2hfdGFibGUgKHN0cnVjdCBoYXNoX3RhYmxlX3Rlc3Qg dGVzdCwgRU1BQ1NfSU5UIHNpemUsCiAgIGgtPm5leHQgPSBtYWtlX3ZlY3RvciAoc2l6ZSwgbWFr ZV9maXhudW0gKC0xKSk7CiAgIGgtPmluZGV4ID0gbWFrZV92ZWN0b3IgKGhhc2hfaW5kZXhfc2l6 ZSAoaCwgc2l6ZSksIG1ha2VfZml4bnVtICgtMSkpOwogICBoLT5uZXh0X3dlYWsgPSBOVUxMOwot ICBoLT5wdXJlY29weSA9IHB1cmVjb3B5OwogICBoLT5tdXRhYmxlID0gdHJ1ZTsKIAogICAvKiBT ZXQgdXAgdGhlIGZyZWUgbGlzdC4gICovCkBAIC00MzE4LDExICs0MzEwLDYgQEAgbWF5YmVfcmVz aXplX2hhc2hfdGFibGUgKHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgpCiAJICAgIHNldF9oYXNo X25leHRfc2xvdCAoaCwgaSwgSEFTSF9JTkRFWCAoaCwgc3RhcnRfb2ZfYnVja2V0KSk7CiAJICAg IHNldF9oYXNoX2luZGV4X3Nsb3QgKGgsIHN0YXJ0X29mX2J1Y2tldCwgaSk7CiAJICB9Ci0KLSNp ZmRlZiBFTkFCTEVfQ0hFQ0tJTkcKLSAgICAgIGlmIChIQVNIX1RBQkxFX1AgKFZwdXJpZnlfZmxh ZykgJiYgWEhBU0hfVEFCTEUgKFZwdXJpZnlfZmxhZykgPT0gaCkKLQltZXNzYWdlICgiR3Jvd2lu ZyBoYXNoIHRhYmxlIHRvOiAlInBEImQiLCBuZXh0X3NpemUpOwotI2VuZGlmCiAgICAgfQogfQog CkBAIC00Mzg1LDcgKzQzNzIsNiBAQCBjaGVja19tdXRhYmxlX2hhc2hfdGFibGUgKExpc3BfT2Jq ZWN0IG9iaiwgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCkKIHsKICAgaWYgKCFoLT5tdXRhYmxl KQogICAgIHNpZ25hbF9lcnJvciAoImhhc2ggdGFibGUgdGVzdCBtb2RpZmllcyB0YWJsZSIsIG9i aik7Ci0gIGVhc3NlcnQgKCFQVVJFX1AgKGgpKTsKIH0KIAogLyogUHV0IGFuIGVudHJ5IGludG8g aGFzaCB0YWJsZSBIIHRoYXQgYXNzb2NpYXRlcyBLRVkgd2l0aCBWQUxVRS4KQEAgLTQ4NzYsMTYg KzQ4NjIsMTAgQEAgREVGVU4gKCJtYWtlLWhhc2gtdGFibGUiLCBGbWFrZV9oYXNoX3RhYmxlLCBT bWFrZV9oYXNoX3RhYmxlLCAwLCBNQU5ZLCAwLAogV0VBSy4gIFdFQUsgdCBpcyBlcXVpdmFsZW50 IHRvIGBrZXktYW5kLXZhbHVlJy4gIERlZmF1bHQgdmFsdWUgb2YgV0VBSwogaXMgbmlsLgogCi06 cHVyZWNvcHkgUFVSRUNPUFkgLS0gSWYgUFVSRUNPUFkgaXMgbm9uLW5pbCwgdGhlIHRhYmxlIGNh biBiZSBjb3BpZWQKLXRvIHB1cmUgc3RvcmFnZSB3aGVuIEVtYWNzIGlzIGJlaW5nIGR1bXBlZCwg bWFraW5nIHRoZSBjb250ZW50cyBvZiB0aGUKLXRhYmxlIHJlYWQgb25seS4gQW55IGZ1cnRoZXIg Y2hhbmdlcyB0byBwdXJpZmllZCB0YWJsZXMgd2lsbCByZXN1bHQKLWluIGFuIGVycm9yLgotCiB1 c2FnZTogKG1ha2UtaGFzaC10YWJsZSAmcmVzdCBLRVlXT1JELUFSR1MpICAqLykKICAgKHB0cmRp ZmZfdCBuYXJncywgTGlzcF9PYmplY3QgKmFyZ3MpCiB7CiAgIExpc3BfT2JqZWN0IHRlc3QsIHdl YWs7Ci0gIGJvb2wgcHVyZWNvcHk7CiAgIHN0cnVjdCBoYXNoX3RhYmxlX3Rlc3QgdGVzdGRlc2M7 CiAgIHB0cmRpZmZfdCBpOwogICBVU0VfU0FGRV9BTExPQ0E7CkBAIC00OTE5LDkgKzQ4OTksOCBA QCBERUZVTiAoIm1ha2UtaGFzaC10YWJsZSIsIEZtYWtlX2hhc2hfdGFibGUsIFNtYWtlX2hhc2hf dGFibGUsIDAsIE1BTlksIDAsCiAgICAgICB0ZXN0ZGVzYy5jbXBmbiA9IGNtcGZuX3VzZXJfZGVm aW5lZDsKICAgICB9CiAKLSAgLyogU2VlIGlmIHRoZXJlJ3MgYSBgOnB1cmVjb3B5IFBVUkVDT1BZ JyBhcmd1bWVudC4gICovCi0gIGkgPSBnZXRfa2V5X2FyZyAoUUNwdXJlY29weSwgbmFyZ3MsIGFy Z3MsIHVzZWQpOwotICBwdXJlY29weSA9IGkgJiYgIU5JTFAgKGFyZ3NbaV0pOworICAvKiBJZ25v cmUgYSBgOnB1cmVjb3B5IFBVUkVDT1BZJyBhcmd1bWVudC4gICovCisgIGdldF9rZXlfYXJnIChR Q3B1cmVjb3B5LCBuYXJncywgYXJncywgdXNlZCk7CiAgIC8qIFNlZSBpZiB0aGVyZSdzIGEgYDpz aXplIFNJWkUnIGFyZ3VtZW50LiAgKi8KICAgaSA9IGdldF9rZXlfYXJnIChRQ3NpemUsIG5hcmdz LCBhcmdzLCB1c2VkKTsKICAgTGlzcF9PYmplY3Qgc2l6ZV9hcmcgPSBpID8gYXJnc1tpXSA6IFFu aWw7CkBAIC00OTcxLDggKzQ5NTAsNyBAQCBERUZVTiAoIm1ha2UtaGFzaC10YWJsZSIsIEZtYWtl X2hhc2hfdGFibGUsIFNtYWtlX2hhc2hfdGFibGUsIDAsIE1BTlksIDAsCiAgICAgICBzaWduYWxf ZXJyb3IgKCJJbnZhbGlkIGFyZ3VtZW50IGxpc3QiLCBhcmdzW2ldKTsKIAogICBTQUZFX0ZSRUUg KCk7Ci0gIHJldHVybiBtYWtlX2hhc2hfdGFibGUgKHRlc3RkZXNjLCBzaXplLCByZWhhc2hfc2l6 ZSwgcmVoYXNoX3RocmVzaG9sZCwgd2VhaywKLQkJCSAgcHVyZWNvcHkpOworICByZXR1cm4gbWFr ZV9oYXNoX3RhYmxlICh0ZXN0ZGVzYywgc2l6ZSwgcmVoYXNoX3NpemUsIHJlaGFzaF90aHJlc2hv bGQsIHdlYWspOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9mb250c2V0LmMgYi9zcmMvZm9udHNl dC5jCmluZGV4IDMzMmJlNmMzOWQxMWYuLjA0MjFjYTQ5YzczNjEgMTAwNjQ0Ci0tLSBhL3NyYy9m b250c2V0LmMKKysrIGIvc3JjL2ZvbnRzZXQuYwpAQCAtMjEyOSw3ICsyMTI5LDcgQEAgc3ltc19v Zl9mb250c2V0ICh2b2lkKQogICBzZXRfZm9udHNldF9pZCAoVmRlZmF1bHRfZm9udHNldCwgbWFr ZV9maXhudW0gKDApKTsKICAgc2V0X2ZvbnRzZXRfbmFtZQogICAgIChWZGVmYXVsdF9mb250c2V0 LAotICAgICBidWlsZF9wdXJlX2Nfc3RyaW5nICgiLSotKi0qLSotKi0qLSotKi0qLSotKi0qLWZv bnRzZXQtZGVmYXVsdCIpKTsKKyAgICAgYnVpbGRfc3RyaW5nICgiLSotKi0qLSotKi0qLSotKi0q LSotKi0qLWZvbnRzZXQtZGVmYXVsdCIpKTsKICAgQVNFVCAoVmZvbnRzZXRfdGFibGUsIDAsIFZk ZWZhdWx0X2ZvbnRzZXQpOwogICBuZXh0X2ZvbnRzZXRfaWQgPSAxOwogICBQRFVNUEVSX1JFTUVN QkVSX1NDQUxBUiAobmV4dF9mb250c2V0X2lkKTsKQEAgLTIxODcsNyArMjE4Nyw3IEBAIHN5bXNf b2ZfZm9udHNldCAodm9pZCkKIAkgICAgICAgZG9jOiAvKiBBbGlzdCBvZiBmb250c2V0IG5hbWVz IHZzIHRoZSBhbGlhc2VzLiAgKi8pOwogICBWZm9udHNldF9hbGlhc19hbGlzdAogICAgID0gbGlz dDEgKEZjb25zIChGT05UU0VUX05BTUUgKFZkZWZhdWx0X2ZvbnRzZXQpLAotCQkgICAgYnVpbGRf cHVyZV9jX3N0cmluZyAoImZvbnRzZXQtZGVmYXVsdCIpKSk7CisJCSAgICBidWlsZF9zdHJpbmcg KCJmb250c2V0LWRlZmF1bHQiKSkpOwogCiAgIERFRlZBUl9MSVNQICgidmVydGljYWwtY2VudGVy aW5nLWZvbnQtcmVnZXhwIiwKIAkgICAgICAgVnZlcnRpY2FsX2NlbnRlcmluZ19mb250X3JlZ2V4 cCwKZGlmZiAtLWdpdCBhL3NyYy9mcmFtZS5jIGIvc3JjL2ZyYW1lLmMKaW5kZXggYTYyMzQ3YzFm YjJhOS4uNjUyZDI2NjU0MzkwZCAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIvc3JjL2Zy YW1lLmMKQEAgLTExMDgsNyArMTEwOCw3IEBAIG1ha2VfaW5pdGlhbF9mcmFtZSAodm9pZCkKICAg VmZyYW1lX2xpc3QgPSBGY29ucyAoZnJhbWUsIFZmcmFtZV9saXN0KTsKIAogICB0dHlfZnJhbWVf Y291bnQgPSAxOwotICBmc2V0X25hbWUgKGYsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJGMSIpKTsK KyAgZnNldF9uYW1lIChmLCBidWlsZF9zdHJpbmcgKCJGMSIpKTsKIAogICBTRVRfRlJBTUVfVklT SUJMRSAoZiwgMSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbWFnZS5jIGIvc3JjL2ltYWdlLmMKaW5k ZXggODEzN2RiZWE4ZDdlYy4uYzczODU0OGQzODJhNyAxMDA2NDQKLS0tIGEvc3JjL2ltYWdlLmMK KysrIGIvc3JjL2ltYWdlLmMKQEAgLTQ4MDgsNyArNDgwOCw3IEBAIHhwbV9tYWtlX2NvbG9yX3Rh YmxlX2ggKHZvaWQgKCoqcHV0X2Z1bmMpIChMaXNwX09iamVjdCwgY29uc3QgY2hhciAqLCBpbnQs CiAgICpnZXRfZnVuYyA9IHhwbV9nZXRfY29sb3JfdGFibGVfaDsKICAgcmV0dXJuIG1ha2VfaGFz aF90YWJsZSAoaGFzaHRlc3RfZXF1YWwsIERFRkFVTFRfSEFTSF9TSVpFLAogCQkJICBERUZBVUxU X1JFSEFTSF9TSVpFLCBERUZBVUxUX1JFSEFTSF9USFJFU0hPTEQsCi0JCQkgIFFuaWwsIGZhbHNl KTsKKwkJCSAgUW5pbCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJ2 YWxzLmMgYi9zcmMvaW50ZXJ2YWxzLmMKaW5kZXggZjg4YTQxZjI1NDkxNy4uNWI2OWFmMjQ0OWE2 OCAxMDA2NDQKLS0tIGEvc3JjL2ludGVydmFscy5jCisrKyBiL3NyYy9pbnRlcnZhbHMuYwpAQCAt NDQsNyArNDQsNiBAQAogI2luY2x1ZGUgImxpc3AuaCIKICNpbmNsdWRlICJpbnRlcnZhbHMuaCIK ICNpbmNsdWRlICJidWZmZXIuaCIKLSNpbmNsdWRlICJwdXJlc2l6ZS5oIgogI2luY2x1ZGUgImtl eW1hcC5oIgogCiAvKiBUZXN0IGZvciBtZW1iZXJzaGlwLCBhbGxvd2luZyBmb3IgdCAoYWN0dWFs bHkgYW55IG5vbi1jb25zKSB0byBtZWFuIHRoZQpAQCAtMTAxLDcgKzEwMCw2IEBAIGNyZWF0ZV9y b290X2ludGVydmFsIChMaXNwX09iamVjdCBwYXJlbnQpCiAgICAgfQogICBlbHNlCiAgICAgewot ICAgICAgQ0hFQ0tfSU1QVVJFIChwYXJlbnQsIFhTVFJJTkcgKHBhcmVudCkpOwogICAgICAgbmV3 LT50b3RhbF9sZW5ndGggPSBTQ0hBUlMgKHBhcmVudCk7CiAgICAgICBlYXNzZXJ0IChUT1RBTF9M RU5HVEggKG5ldykgPj0gMCk7CiAgICAgICBzZXRfc3RyaW5nX2ludGVydmFscyAocGFyZW50LCBu ZXcpOwpkaWZmIC0tZ2l0IGEvc3JjL2pzb24uYyBiL3NyYy9qc29uLmMKaW5kZXggM2YxZDI3YWQ3 ZmI3Zi4uY2NiMDQwNWM0ZTA2OSAxMDA2NDQKLS0tIGEvc3JjL2pzb24uYworKysgYi9zcmMvanNv bi5jCkBAIC0xMTEwLDggKzExMTAsOCBAQCBkZWZpbmVfZXJyb3IgKExpc3BfT2JqZWN0IG5hbWUs IGNvbnN0IGNoYXIgKm1lc3NhZ2UsIExpc3BfT2JqZWN0IHBhcmVudCkKICAgZWFzc2VydCAoQ09O U1AgKHBhcmVudF9jb25kaXRpb25zKSk7CiAgIGVhc3NlcnQgKCFOSUxQIChGbWVtcSAocGFyZW50 LCBwYXJlbnRfY29uZGl0aW9ucykpKTsKICAgZWFzc2VydCAoTklMUCAoRm1lbXEgKG5hbWUsIHBh cmVudF9jb25kaXRpb25zKSkpOwotICBGcHV0IChuYW1lLCBRZXJyb3JfY29uZGl0aW9ucywgcHVy ZV9jb25zIChuYW1lLCBwYXJlbnRfY29uZGl0aW9ucykpOwotICBGcHV0IChuYW1lLCBRZXJyb3Jf bWVzc2FnZSwgYnVpbGRfcHVyZV9jX3N0cmluZyAobWVzc2FnZSkpOworICBGcHV0IChuYW1lLCBR ZXJyb3JfY29uZGl0aW9ucywgRmNvbnMgKG5hbWUsIHBhcmVudF9jb25kaXRpb25zKSk7CisgIEZw dXQgKG5hbWUsIFFlcnJvcl9tZXNzYWdlLCBidWlsZF9zdHJpbmcgKG1lc3NhZ2UpKTsKIH0KIAog dm9pZApkaWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMva2V5Ym9hcmQuYwppbmRleCA5 ZWU0YzRmNmQ2ODM5Li4xYzg2MmExNTc1OWFmIDEwMDY0NAotLS0gYS9zcmMva2V5Ym9hcmQuYwor KysgYi9zcmMva2V5Ym9hcmQuYwpAQCAtMTEwOSw4ICsxMTA5LDYgQEAgdG9wX2xldmVsXzEgKExp c3BfT2JqZWN0IGlnbm9yZSkKICAgLyogT24gZW50cnkgdG8gdGhlIG91dGVyIGxldmVsLCBydW4g dGhlIHN0YXJ0dXAgZmlsZS4gICovCiAgIGlmICghTklMUCAoVnRvcF9sZXZlbCkpCiAgICAgaW50 ZXJuYWxfY29uZGl0aW9uX2Nhc2UgKHRvcF9sZXZlbF8yLCBRZXJyb3IsIGNtZF9lcnJvcik7Ci0g IGVsc2UgaWYgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpKQotICAgIG1lc3NhZ2UxICgiQmFyZSBpbXB1 cmUgRW1hY3MgKHN0YW5kYXJkIExpc3AgY29kZSBub3QgbG9hZGVkKSIpOwogICBlbHNlCiAgICAg bWVzc2FnZTEgKCJCYXJlIEVtYWNzIChzdGFuZGFyZCBMaXNwIGNvZGUgbm90IGxvYWRlZCkiKTsK ICAgcmV0dXJuIFFuaWw7CkBAIC0xMTQ1OCwxNCArMTE0NTYsMTQgQEAgc3ltc19vZl9rZXlib2Fy ZCAodm9pZCkKICAgcGVuZGluZ19mdW5jYWxscyA9IFFuaWw7CiAgIHN0YXRpY3BybyAoJnBlbmRp bmdfZnVuY2FsbHMpOwogCi0gIFZsaXNweV9tb3VzZV9zdGVtID0gYnVpbGRfcHVyZV9jX3N0cmlu ZyAoIm1vdXNlIik7CisgIFZsaXNweV9tb3VzZV9zdGVtID0gYnVpbGRfc3RyaW5nICgibW91c2Ui KTsKICAgc3RhdGljcHJvICgmVmxpc3B5X21vdXNlX3N0ZW0pOwogCi0gIHJlZ3VsYXJfdG9wX2xl dmVsX21lc3NhZ2UgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiQmFjayB0byB0b3AgbGV2ZWwiKTsK KyAgcmVndWxhcl90b3BfbGV2ZWxfbWVzc2FnZSA9IGJ1aWxkX3N0cmluZyAoIkJhY2sgdG8gdG9w IGxldmVsIik7CiAgIHN0YXRpY3BybyAoJnJlZ3VsYXJfdG9wX2xldmVsX21lc3NhZ2UpOwogI2lm ZGVmIEhBVkVfU1RBQ0tfT1ZFUkZMT1dfSEFORExJTkcKICAgcmVjb3Zlcl90b3BfbGV2ZWxfbWVz c2FnZQotICAgID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIlJlLWVudGVyaW5nIHRvcCBsZXZlbCBh ZnRlciBDIHN0YWNrIG92ZXJmbG93Iik7CisgICAgPSBidWlsZF9zdHJpbmcgKCJSZS1lbnRlcmlu ZyB0b3AgbGV2ZWwgYWZ0ZXIgQyBzdGFjayBvdmVyZmxvdyIpOwogICBzdGF0aWNwcm8gKCZyZWNv dmVyX3RvcF9sZXZlbF9tZXNzYWdlKTsKICNlbmRpZgogICBERUZWQVJfTElTUCAoImludGVybmFs LS10b3AtbGV2ZWwtbWVzc2FnZSIsIFZpbnRlcm5hbF9fdG9wX2xldmVsX21lc3NhZ2UsCmRpZmYg LS1naXQgYS9zcmMva2V5bWFwLmMgYi9zcmMva2V5bWFwLmMKaW5kZXggNzgyOTMxZmFkZmY2YS4u ZGNhNGZjZTliMTNmOCAxMDA2NDQKLS0tIGEvc3JjL2tleW1hcC5jCisrKyBiL3NyYy9rZXltYXAu YwpAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgImtleWJvYXJkLmgiCiAjaW5jbHVkZSAidGVy bWhvb2tzLmgiCiAjaW5jbHVkZSAiYmxvY2tpbnB1dC5oIgotI2luY2x1ZGUgInB1cmVzaXplLmgi CiAjaW5jbHVkZSAiaW50ZXJ2YWxzLmgiCiAjaW5jbHVkZSAia2V5bWFwLmgiCiAjaW5jbHVkZSAi d2luZG93LmgiCkBAIC0xMTcsOCArMTE2LDYgQEAgREVGVU4gKCJtYWtlLXNwYXJzZS1rZXltYXAi LCBGbWFrZV9zcGFyc2Vfa2V5bWFwLCBTbWFrZV9zcGFyc2Vfa2V5bWFwLCAwLCAxLCAwLAogewog ICBpZiAoIU5JTFAgKHN0cmluZykpCiAgICAgewotICAgICAgaWYgKCFOSUxQIChWcHVyaWZ5X2Zs YWcpKQotCXN0cmluZyA9IEZwdXJlY29weSAoc3RyaW5nKTsKICAgICAgIHJldHVybiBsaXN0MiAo UWtleW1hcCwgc3RyaW5nKTsKICAgICB9CiAgIHJldHVybiBsaXN0MSAoUWtleW1hcCk7CkBAIC0y OTYsNyArMjkzLDYgQEAgREVGVU4gKCJzZXQta2V5bWFwLXBhcmVudCIsIEZzZXRfa2V5bWFwX3Bh cmVudCwgU3NldF9rZXltYXBfcGFyZW50LCAyLCAyLCAwLAogCSBJZiB3ZSBjYW1lIHRvIHRoZSBl bmQsIGFkZCB0aGUgcGFyZW50IGluIFBSRVYuICAqLwogICAgICAgaWYgKCFDT05TUCAobGlzdCkg fHwgS0VZTUFQUCAobGlzdCkpCiAJewotCSAgQ0hFQ0tfSU1QVVJFIChwcmV2LCBYQ09OUyAocHJl dikpOwogCSAgWFNFVENEUiAocHJldiwgcGFyZW50KTsKIAkgIHJldHVybiBwYXJlbnQ7CiAJfQpA QCAtNzM0LDcgKzczMCw3IEBAIHN0b3JlX2luX2tleW1hcCAoTGlzcF9PYmplY3Qga2V5bWFwLCBy ZWdpc3RlciBMaXNwX09iamVjdCBpZHgsIExpc3BfT2JqZWN0IGRlZikKIAogICAvKiBJZiB3ZSBh cmUgcHJlcGFyaW5nIHRvIGR1bXAsIGFuZCBERUYgaXMgYSBtZW51IGVsZW1lbnQKICAgICAgd2l0 aCBhIG1lbnUgaXRlbSBpbmRpY2F0b3IsIGNvcHkgaXQgdG8gZW5zdXJlIGl0IGlzIG5vdCBwdXJl LiAgKi8KLSAgaWYgKENPTlNQIChkZWYpICYmIFBVUkVfUCAoWENPTlMgKGRlZikpCisgIGlmIChD T05TUCAoZGVmKQogICAgICAgJiYgKEVRIChYQ0FSIChkZWYpLCBRbWVudV9pdGVtKSB8fCBTVFJJ TkdQIChYQ0FSIChkZWYpKSkpCiAgICAgZGVmID0gRmNvbnMgKFhDQVIgKGRlZiksIFhDRFIgKGRl ZikpOwogCkBAIC03NzgsNyArNzc0LDYgQEAgc3RvcmVfaW5fa2V5bWFwIChMaXNwX09iamVjdCBr ZXltYXAsIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGlkeCwgTGlzcF9PYmplY3QgZGVmKQogCSAgewog CSAgICBpZiAoRklYTkFUUCAoaWR4KSAmJiBYRklYTkFUIChpZHgpIDwgQVNJWkUgKGVsdCkpCiAJ ICAgICAgewotCQlDSEVDS19JTVBVUkUgKGVsdCwgWFZFQ1RPUiAoZWx0KSk7CiAJCUFTRVQgKGVs dCwgWEZJWE5BVCAoaWR4KSwgZGVmKTsKIAkJcmV0dXJuIGRlZjsKIAkgICAgICB9CkBAIC04MzEs NyArODI2LDYgQEAgc3RvcmVfaW5fa2V5bWFwIChMaXNwX09iamVjdCBrZXltYXAsIHJlZ2lzdGVy IExpc3BfT2JqZWN0IGlkeCwgTGlzcF9PYmplY3QgZGVmKQogCSAgICAgIH0KIAkgICAgZWxzZSBp ZiAoRVEgKGlkeCwgWENBUiAoZWx0KSkpCiAJICAgICAgewotCQlDSEVDS19JTVBVUkUgKGVsdCwg WENPTlMgKGVsdCkpOwogCQlYU0VUQ0RSIChlbHQsIGRlZik7CiAJCXJldHVybiBkZWY7CiAJICAg ICAgfQpAQCAtODc3LDcgKzg3MSw2IEBAIHN0b3JlX2luX2tleW1hcCAoTGlzcF9PYmplY3Qga2V5 bWFwLCByZWdpc3RlciBMaXNwX09iamVjdCBpZHgsIExpc3BfT2JqZWN0IGRlZikKIAl9CiAgICAg ICBlbHNlCiAJZWx0ID0gRmNvbnMgKGlkeCwgZGVmKTsKLSAgICAgIENIRUNLX0lNUFVSRSAoaW5z ZXJ0aW9uX3BvaW50LCBYQ09OUyAoaW5zZXJ0aW9uX3BvaW50KSk7CiAgICAgICBYU0VUQ0RSIChp bnNlcnRpb25fcG9pbnQsIEZjb25zIChlbHQsIFhDRFIgKGluc2VydGlvbl9wb2ludCkpKTsKICAg ICB9CiAgIH0KQEAgLTMxMjEsMTIgKzMxMTQsMTIgQEAgc3ltc19vZl9rZXltYXAgKHZvaWQpCiAg IGN1cnJlbnRfZ2xvYmFsX21hcCA9IFFuaWw7CiAgIHN0YXRpY3BybyAoJmN1cnJlbnRfZ2xvYmFs X21hcCk7CiAKLSAgZXhjbHVkZV9rZXlzID0gcHVyZV9saXN0Ci0gICAgKHB1cmVfY29ucyAoYnVp bGRfcHVyZV9jX3N0cmluZyAoIkRFTCIpLCBidWlsZF9wdXJlX2Nfc3RyaW5nICgiXFxkIikpLAot ICAgICBwdXJlX2NvbnMgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJUQUIiKSwgYnVpbGRfcHVyZV9j X3N0cmluZyAoIlxcdCIpKSwKLSAgICAgcHVyZV9jb25zIChidWlsZF9wdXJlX2Nfc3RyaW5nICgi UkVUIiksIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJcXHIiKSksCi0gICAgIHB1cmVfY29ucyAoYnVp bGRfcHVyZV9jX3N0cmluZyAoIkVTQyIpLCBidWlsZF9wdXJlX2Nfc3RyaW5nICgiXFxlIikpLAot ICAgICBwdXJlX2NvbnMgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJTUEMiKSwgYnVpbGRfcHVyZV9j X3N0cmluZyAoIiAiKSkpOworICBleGNsdWRlX2tleXMgPSBsaXN0CisgICAgKEZjb25zIChidWls ZF9zdHJpbmcgKCJERUwiKSwgYnVpbGRfc3RyaW5nICgiXFxkIikpLAorICAgICBGY29ucyAoYnVp bGRfc3RyaW5nICgiVEFCIiksIGJ1aWxkX3N0cmluZyAoIlxcdCIpKSwKKyAgICAgRmNvbnMgKGJ1 aWxkX3N0cmluZyAoIlJFVCIpLCBidWlsZF9zdHJpbmcgKCJcXHIiKSksCisgICAgIEZjb25zIChi dWlsZF9zdHJpbmcgKCJFU0MiKSwgYnVpbGRfc3RyaW5nICgiXFxlIikpLAorICAgICBGY29ucyAo YnVpbGRfc3RyaW5nICgiU1BDIiksIGJ1aWxkX3N0cmluZyAoIiAiKSkpOwogICBzdGF0aWNwcm8g KCZleGNsdWRlX2tleXMpOwogCiAgIERFRlZBUl9MSVNQICgibWluaWJ1ZmZlci1sb2NhbC1tYXAi LCBWbWluaWJ1ZmZlcl9sb2NhbF9tYXAsCkBAIC0zMTc2LDEzICszMTY5LDEyIEBAIHN5bXNfb2Zf a2V5bWFwICh2b2lkKQogICBERUZTWU0gKFFtb2RlX2xpbmUsICJtb2RlLWxpbmUiKTsKIAogICBz dGF0aWNwcm8gKCZWbW91c2VfZXZlbnRzKTsKLSAgVm1vdXNlX2V2ZW50cyA9IHB1cmVfbGlzdCAo UW1lbnVfYmFyLCBRdGFiX2JhciwgUXRvb2xfYmFyLAotCQkJICAgICBRdGFiX2xpbmUsIFFoZWFk ZXJfbGluZSwgUW1vZGVfbGluZSwKLQkJCSAgICAgaW50ZXJuX2Nfc3RyaW5nICgibW91c2UtMSIp LAotCQkJICAgICBpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS0yIiksCi0JCQkgICAgIGludGVybl9j X3N0cmluZyAoIm1vdXNlLTMiKSwKLQkJCSAgICAgaW50ZXJuX2Nfc3RyaW5nICgibW91c2UtNCIp LAotCQkJICAgICBpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS01IikpOworICBWbW91c2VfZXZlbnRz ID0gbGlzdCAoUW1lbnVfYmFyLCBRdG9vbF9iYXIsIFFoZWFkZXJfbGluZSwgUW1vZGVfbGluZSwK KwkJCWludGVybl9jX3N0cmluZyAoIm1vdXNlLTEiKSwKKwkJCWludGVybl9jX3N0cmluZyAoIm1v dXNlLTIiKSwKKwkJCWludGVybl9jX3N0cmluZyAoIm1vdXNlLTMiKSwKKwkJCWludGVybl9jX3N0 cmluZyAoIm1vdXNlLTQiKSwKKwkJCWludGVybl9jX3N0cmluZyAoIm1vdXNlLTUiKSk7CiAKICAg LyogS2V5bWFwIHVzZWQgZm9yIG1pbmlidWZmZXJzIHdoZW4gZG9pbmcgY29tcGxldGlvbi4gICov CiAgIC8qIEtleW1hcCB1c2VkIGZvciBtaW5pYnVmZmVycyB3aGVuIGRvaW5nIGNvbXBsZXRpb24g YW5kIHJlcXVpcmUgYSBtYXRjaC4gICovCmRpZmYgLS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xp c3AuaAppbmRleCBiOTVmMzg5Yjg5MDI0Li43NTgwMjcyZTVjN2YzIDEwMDY0NAotLS0gYS9zcmMv bGlzcC5oCisrKyBiL3NyYy9saXNwLmgKQEAgLTgyMyw5ICs4MjMsNiBAQCAjZGVmaW5lIFhVTlRB RyhhLCB0eXBlLCBjdHlwZSkgKChjdHlwZSAqKSBcCiAJIHNwZWNpYWwgKHdpdGggYGRlZnZhcicg ZXRjKSwgYW5kIHNob3VsZG4ndCBiZSBsZXhpY2FsbHkgYm91bmQuICAqLwogICAgICAgYm9vbF9i ZiBkZWNsYXJlZF9zcGVjaWFsIDogMTsKIAotICAgICAgLyogVHJ1ZSBpZiBwb2ludGVkIHRvIGZy b20gcHVyZXNwYWNlIGFuZCBoZW5jZSBjYW4ndCBiZSBHQydkLiAgKi8KLSAgICAgIGJvb2xfYmYg cGlubmVkIDogMTsKLQogICAgICAgLyogVGhlIHN5bWJvbCdzIG5hbWUsIGFzIGEgTGlzcCBzdHJp bmcuICAqLwogICAgICAgTGlzcF9PYmplY3QgbmFtZTsKIApAQCAtMTUzNCwyMCArMTUzMSwxNCBA QCAjZGVmaW5lIFNUUklOR19CWVRFU19CT1VORCAgXAogLyogTWFyayBTVFIgYXMgYSB1bmlieXRl IHN0cmluZy4gICovCiAjZGVmaW5lIFNUUklOR19TRVRfVU5JQllURShTVFIpCQkJCVwKICAgZG8g ewkJCQkJCQlcCi0gICAgaWYgKFhTVFJJTkcgKFNUUiktPnUucy5zaXplID09IDApCQkJXAotICAg ICAgKFNUUikgPSBlbXB0eV91bmlieXRlX3N0cmluZzsJCQlcCi0gICAgZWxzZQkJCQkJCVwKLSAg ICAgIFhTVFJJTkcgKFNUUiktPnUucy5zaXplX2J5dGUgPSAtMTsJCVwKKyAgICBYU1RSSU5HIChT VFIpLT51LnMuc2l6ZV9ieXRlID0gLTE7CQkJXAogICB9IHdoaWxlIChmYWxzZSkKIAogLyogTWFy ayBTVFIgYXMgYSBtdWx0aWJ5dGUgc3RyaW5nLiAgQXNzdXJlIHRoYXQgU1RSIGNvbnRhaW5zIG9u bHkKICAgIEFTQ0lJIGNoYXJhY3RlcnMgaW4gYWR2YW5jZS4gICovCi0jZGVmaW5lIFNUUklOR19T RVRfTVVMVElCWVRFKFNUUikJCQlcCi0gIGRvIHsJCQkJCQkJXAotICAgIGlmIChYU1RSSU5HIChT VFIpLT51LnMuc2l6ZSA9PSAwKQkJCVwKLSAgICAgIChTVFIpID0gZW1wdHlfbXVsdGlieXRlX3N0 cmluZzsJCQlcCi0gICAgZWxzZQkJCQkJCVwKLSAgICAgIFhTVFJJTkcgKFNUUiktPnUucy5zaXpl X2J5dGUgPSBYU1RSSU5HIChTVFIpLT51LnMuc2l6ZTsgXAorI2RlZmluZSBTVFJJTkdfU0VUX01V TFRJQllURShTVFIpCQkJCVwKKyAgZG8gewkJCQkJCQkJXAorICAgIFhTVFJJTkcgKFNUUiktPnUu cy5zaXplX2J5dGUgPSBYU1RSSU5HIChTVFIpLT51LnMuc2l6ZTsJXAogICB9IHdoaWxlIChmYWxz ZSkKIAogLyogQ29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGggTGlzcCBzdHJp bmdzLiAgKi8KQEAgLTIzMDEsMTIgKzIyOTIsOCBAQCAjZGVmaW5lIERFRlNZTShzeW0sIG5hbWUp IC8qIGVtcHR5ICovCiAgIC8qIEluZGV4IG9mIGZpcnN0IGZyZWUgZW50cnkgaW4gZnJlZSBsaXN0 LCBvciAtMSBpZiBub25lLiAgKi8KICAgcHRyZGlmZl90IG5leHRfZnJlZTsKIAotICAvKiBUcnVl IGlmIHRoZSB0YWJsZSBjYW4gYmUgcHVyZWNvcGllZC4gIFRoZSB0YWJsZSBjYW5ub3QgYmUKLSAg ICAgY2hhbmdlZCBhZnRlcndhcmRzLiAgKi8KLSAgYm9vbCBwdXJlY29weTsKLQogICAvKiBUcnVl IGlmIHRoZSB0YWJsZSBpcyBtdXRhYmxlLiAgT3JkaW5hcmlseSB0YWJsZXMgYXJlIG11dGFibGUs IGJ1dAotICAgICBwdXJlIHRhYmxlcyBhcmUgbm90LCBhbmQgd2hpbGUgYSB0YWJsZSBpcyBiZWlu ZyBtdXRhdGVkIGl0IGlzCisgICAgIHNvbWUgdGFibGVzIGFyZSBub3QsIGFuZCB3aGlsZSBhIHRh YmxlIGlzIGJlaW5nIG11dGF0ZWQgaXQgaXMKICAgICAgaW1tdXRhYmxlIGZvciByZWN1cnNpdmUg YXR0ZW1wdHMgdG8gbXV0YXRlIGl0LiAgKi8KICAgYm9vbCBtdXRhYmxlOwogCkBAIC0zNTk5LDcg KzM1ODYsNyBAQCAjZGVmaW5lIENPTlNfVE9fSU5URUdFUihjb25zLCB0eXBlLCB2YXIpCQkJCVwK IExpc3BfT2JqZWN0IGhhc2hmbl9lcXVhbCAoTGlzcF9PYmplY3QsIHN0cnVjdCBMaXNwX0hhc2hf VGFibGUgKik7CiBMaXNwX09iamVjdCBoYXNoZm5fdXNlcl9kZWZpbmVkIChMaXNwX09iamVjdCwg c3RydWN0IExpc3BfSGFzaF9UYWJsZSAqKTsKIExpc3BfT2JqZWN0IG1ha2VfaGFzaF90YWJsZSAo c3RydWN0IGhhc2hfdGFibGVfdGVzdCwgRU1BQ1NfSU5ULCBmbG9hdCwgZmxvYXQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0LCBib29sKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzcF9PYmplY3QpOwogcHRyZGlmZl90IGhhc2hfbG9va3VwIChzdHJ1 Y3QgTGlzcF9IYXNoX1RhYmxlICosIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCAqKTsKIHB0cmRp ZmZfdCBoYXNoX3B1dCAoc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqLCBMaXNwX09iamVjdCwgTGlz cF9PYmplY3QsCiAJCSAgICBMaXNwX09iamVjdCk7CkBAIC0zNzU1LDcgKzM3NDIsNiBAQCB2ZXJp ZnkgKEZMVF9SQURJWCA9PSAyIHx8IEZMVF9SQURJWCA9PSAxNik7CiAKIC8qIERlZmluZWQgaW4g YWxsb2MuYy4gICovCiBleHRlcm4gdm9pZCAqbXlfaGVhcF9zdGFydCAodm9pZCk7Ci1leHRlcm4g dm9pZCBjaGVja19wdXJlX3NpemUgKHZvaWQpOwogdW5zaWduZWQgY2hhciAqcmVzaXplX3N0cmlu Z19kYXRhIChMaXNwX09iamVjdCwgcHRyZGlmZl90LCBpbnQsIGludCk7CiBleHRlcm4gdm9pZCBt YWxsb2Nfd2FybmluZyAoY29uc3QgY2hhciAqKTsKIGV4dGVybiBBVk9JRCBtZW1vcnlfZnVsbCAo c2l6ZV90KTsKQEAgLTM4MTMsMTEgKzM3OTksOCBAQCBmbHVzaF9zdGFja19jYWxsX2Z1bmMgKHZv aWQgKCpmdW5jKSAodm9pZCAqYXJnKSwgdm9pZCAqYXJnKQogZXh0ZXJuIExpc3BfT2JqZWN0IGxp c3Q1IChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwK IAkJCSAgTGlzcF9PYmplY3QpOwogZXh0ZXJuIExpc3BfT2JqZWN0IGxpc3RuIChwdHJkaWZmX3Qs IExpc3BfT2JqZWN0LCAuLi4pOwotZXh0ZXJuIExpc3BfT2JqZWN0IHB1cmVfbGlzdG4gKHB0cmRp ZmZfdCwgTGlzcF9PYmplY3QsIC4uLik7CiAjZGVmaW5lIGxpc3QoLi4uKSBcCiAgIGxpc3RuIChB UlJBWUVMVFMgKCgoTGlzcF9PYmplY3QgW10pIHtfX1ZBX0FSR1NfX30pKSwgX19WQV9BUkdTX18p Ci0jZGVmaW5lIHB1cmVfbGlzdCguLi4pIFwKLSAgcHVyZV9saXN0biAoQVJSQVlFTFRTICgoKExp c3BfT2JqZWN0IFtdKSB7X19WQV9BUkdTX199KSksIF9fVkFfQVJHU19fKQogCiBlbnVtIGdjX3Jv b3RfdHlwZQogewpAQCAtMzg5MCwxNyArMzg3Myw2IEBAIGJ1aWxkX3VuaWJ5dGVfc3RyaW5nIChj b25zdCBjaGFyICpzdHIpCiBleHRlcm4gTGlzcF9PYmplY3QgbWFrZV9zdHJpbmdfZnJvbV9ieXRl cyAoY29uc3QgY2hhciAqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiBleHRlcm4gTGlzcF9PYmpl Y3QgbWFrZV9zcGVjaWZpZWRfc3RyaW5nIChjb25zdCBjaGFyICosCiAJCQkJCSAgcHRyZGlmZl90 LCBwdHJkaWZmX3QsIGJvb2wpOwotZXh0ZXJuIExpc3BfT2JqZWN0IG1ha2VfcHVyZV9zdHJpbmcg KGNvbnN0IGNoYXIgKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIGJvb2wpOwotZXh0ZXJuIExpc3Bf T2JqZWN0IG1ha2VfcHVyZV9jX3N0cmluZyAoY29uc3QgY2hhciAqLCBwdHJkaWZmX3QpOwotCi0v KiBNYWtlIGEgc3RyaW5nIGFsbG9jYXRlZCBpbiBwdXJlIHNwYWNlLCB1c2UgU1RSIGFzIHN0cmlu ZyBkYXRhLiAgKi8KLQotSU5MSU5FIExpc3BfT2JqZWN0Ci1idWlsZF9wdXJlX2Nfc3RyaW5nIChj b25zdCBjaGFyICpzdHIpCi17Ci0gIHJldHVybiBtYWtlX3B1cmVfY19zdHJpbmcgKHN0ciwgc3Ry bGVuIChzdHIpKTsKLX0KLQogLyogTWFrZSBhIHN0cmluZyBmcm9tIHRoZSBkYXRhIGF0IFNUUiwg dHJlYXRpbmcgaXQgYXMgbXVsdGlieXRlIGlmIHRoZQogICAgZGF0YSB3YXJyYW50cy4gICovCiAK QEAgLTM5MTAsNyArMzg4Miw2IEBAIGJ1aWxkX3N0cmluZyAoY29uc3QgY2hhciAqc3RyKQogICBy ZXR1cm4gbWFrZV9zdHJpbmcgKHN0ciwgc3RybGVuIChzdHIpKTsKIH0KIAotZXh0ZXJuIExpc3Bf T2JqZWN0IHB1cmVfY29ucyAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIGV4dGVybiBMaXNw X09iamVjdCBtYWtlX3ZlY3RvciAocHRyZGlmZl90LCBMaXNwX09iamVjdCk7CiBleHRlcm4gc3Ry dWN0IExpc3BfVmVjdG9yICphbGxvY2F0ZV9uaWxfdmVjdG9yIChwdHJkaWZmX3QpOwogCmRpZmYg LS1naXQgYS9zcmMvbHJlYWQuYyBiL3NyYy9scmVhZC5jCmluZGV4IGRlYTFiMjMyZmZmODMuLjAz M2U5YmE0MWFmMTYgMTAwNjQ0Ci0tLSBhL3NyYy9scmVhZC5jCisrKyBiL3NyYy9scmVhZC5jCkBA IC0yMDk4LDEzICsyMDk4LDEzIEBAIHJlYWRldmFsbG9vcCAoTGlzcF9PYmplY3QgcmVhZGNoYXJm dW4sCiAJcmVhZF9vYmplY3RzX21hcAogCSAgPSBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0X2Vx LCBERUZBVUxUX0hBU0hfU0laRSwKIAkJCSAgICAgREVGQVVMVF9SRUhBU0hfU0laRSwgREVGQVVM VF9SRUhBU0hfVEhSRVNIT0xELAotCQkJICAgICBRbmlsLCBmYWxzZSk7CisJCQkgICAgIFFuaWwp OwogICAgICAgaWYgKCEgSEFTSF9UQUJMRV9QIChyZWFkX29iamVjdHNfY29tcGxldGVkKQogCSAg fHwgWEhBU0hfVEFCTEUgKHJlYWRfb2JqZWN0c19jb21wbGV0ZWQpLT5jb3VudCkKIAlyZWFkX29i amVjdHNfY29tcGxldGVkCiAJICA9IG1ha2VfaGFzaF90YWJsZSAoaGFzaHRlc3RfZXEsIERFRkFV TFRfSEFTSF9TSVpFLAogCQkJICAgICBERUZBVUxUX1JFSEFTSF9TSVpFLCBERUZBVUxUX1JFSEFT SF9USFJFU0hPTEQsCi0JCQkgICAgIFFuaWwsIGZhbHNlKTsKKwkJCSAgICAgUW5pbCk7CiAgICAg ICBpZiAoIU5JTFAgKFZwdXJpZnlfZmxhZykgJiYgYyA9PSAnKCcpCiAJewogCSAgdmFsID0gcmVh ZF9saXN0ICgwLCByZWFkY2hhcmZ1bik7CkBAIC0yMzIxLDEyICsyMzIxLDEyIEBAIHJlYWRfaW50 ZXJuYWxfc3RhcnQgKExpc3BfT2JqZWN0IHN0cmVhbSwgTGlzcF9PYmplY3Qgc3RhcnQsIExpc3Bf T2JqZWN0IGVuZCkKICAgICAgIHx8IFhIQVNIX1RBQkxFIChyZWFkX29iamVjdHNfbWFwKS0+Y291 bnQpCiAgICAgcmVhZF9vYmplY3RzX21hcAogICAgICAgPSBtYWtlX2hhc2hfdGFibGUgKGhhc2h0 ZXN0X2VxLCBERUZBVUxUX0hBU0hfU0laRSwgREVGQVVMVF9SRUhBU0hfU0laRSwKLQkJCSBERUZB VUxUX1JFSEFTSF9USFJFU0hPTEQsIFFuaWwsIGZhbHNlKTsKKwkJCSBERUZBVUxUX1JFSEFTSF9U SFJFU0hPTEQsIFFuaWwpOwogICBpZiAoISBIQVNIX1RBQkxFX1AgKHJlYWRfb2JqZWN0c19jb21w bGV0ZWQpCiAgICAgICB8fCBYSEFTSF9UQUJMRSAocmVhZF9vYmplY3RzX2NvbXBsZXRlZCktPmNv dW50KQogICAgIHJlYWRfb2JqZWN0c19jb21wbGV0ZWQKICAgICAgID0gbWFrZV9oYXNoX3RhYmxl IChoYXNodGVzdF9lcSwgREVGQVVMVF9IQVNIX1NJWkUsIERFRkFVTFRfUkVIQVNIX1NJWkUsCi0J CQkgREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xELCBRbmlsLCBmYWxzZSk7CisJCQkgREVGQVVMVF9S RUhBU0hfVEhSRVNIT0xELCBRbmlsKTsKICAgaWYgKEVRIChWcmVhZF93aXRoX3N5bWJvbF9wb3Np dGlvbnMsIFF0KQogICAgICAgfHwgRVEgKFZyZWFkX3dpdGhfc3ltYm9sX3Bvc2l0aW9ucywgc3Ry ZWFtKSkKICAgICBWcmVhZF9zeW1ib2xfcG9zaXRpb25zX2xpc3QgPSBRbmlsOwpAQCAtMjg5Niwx MSArMjg5Niw2IEBAIHJlYWQxIChMaXNwX09iamVjdCByZWFkY2hhcmZ1biwgaW50ICpwY2gsIGJv b2wgZmlyc3RfaW5fbGlzdCkKIAkgICAgICBpZiAoIU5JTFAgKHBhcmFtc1twYXJhbV9jb3VudCAr IDFdKSkKIAkJcGFyYW1fY291bnQgKz0gMjsKIAotICAgICAgICAgICAgICBwYXJhbXNbcGFyYW1f Y291bnRdID0gUUNwdXJlY29weTsKLSAgICAgICAgICAgICAgcGFyYW1zW3BhcmFtX2NvdW50ICsg MV0gPSBGcGxpc3RfZ2V0ICh0bXAsIFFwdXJlY29weSk7Ci0gICAgICAgICAgICAgIGlmICghTklM UCAocGFyYW1zW3BhcmFtX2NvdW50ICsgMV0pKQotICAgICAgICAgICAgICAgIHBhcmFtX2NvdW50 ICs9IDI7Ci0KIAkgICAgICAvKiBUaGlzIGlzIHRoZSBoYXNoIHRhYmxlIGRhdGEuICAqLwogCSAg ICAgIGRhdGEgPSBGcGxpc3RfZ2V0ICh0bXAsIFFkYXRhKTsKIApAQCAtMzIxMCwxMyArMzIwNSwx MyBAQCByZWFkMSAoTGlzcF9PYmplY3QgcmVhZGNoYXJmdW4sIGludCAqcGNoLCBib29sIGZpcnN0 X2luX2xpc3QpCiAJICAgICAgLyogTm8gc3ltYm9sIGNoYXJhY3RlciBmb2xsb3dzLCB0aGlzIGlz IHRoZSBlbXB0eQogCQkgc3ltYm9sLiAgKi8KIAkgICAgICBVTlJFQUQgKGMpOwotCSAgICAgIHJl dHVybiBGbWFrZV9zeW1ib2wgKGVtcHR5X3VuaWJ5dGVfc3RyaW5nKTsKKwkgICAgICByZXR1cm4g Rm1ha2Vfc3ltYm9sIChidWlsZF9zdHJpbmcgKCIiKSk7CiAJICAgIH0KIAkgIGdvdG8gcmVhZF9z eW1ib2w7CiAJfQogICAgICAgLyogIyMgaXMgdGhlIGVtcHR5IHN5bWJvbC4gICovCiAgICAgICBp ZiAoYyA9PSAnIycpCi0JcmV0dXJuIEZpbnRlcm4gKGVtcHR5X3VuaWJ5dGVfc3RyaW5nLCBRbmls KTsKKwlyZXR1cm4gRmludGVybiAoYnVpbGRfc3RyaW5nICgiIiksIFFuaWwpOwogCiAgICAgICBp ZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCiAJewpAQCAtMzYxMiw5ICszNjA3LDggQEAgcmVhZDEg KExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLCBpbnQgKnBjaCwgYm9vbCBmaXJzdF9pbl9saXN0KQog CSAgaWYgKHVuaW50ZXJuZWRfc3ltYm9sKQogCSAgICB7CiAJICAgICAgTGlzcF9PYmplY3QgbmFt ZQotCQk9ICgoISBOSUxQIChWcHVyaWZ5X2ZsYWcpCi0JCSAgICA/IG1ha2VfcHVyZV9zdHJpbmcg OiBtYWtlX3NwZWNpZmllZF9zdHJpbmcpCi0JCSAgIChyZWFkX2J1ZmZlciwgbmNoYXJzLCBuYnl0 ZXMsIG11bHRpYnl0ZSkpOworCQk9IG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAocmVhZF9idWZmZXIs IG5jaGFycywgbmJ5dGVzLAorCQkJCQkgbXVsdGlieXRlKTsKIAkgICAgICByZXN1bHQgPSBGbWFr ZV9zeW1ib2wgKG5hbWUpOwogCSAgICB9CiAJICBlbHNlCkBAIC00MjA0LDEwICs0MTk4LDggQEAg aW50ZXJuX2Nfc3RyaW5nXzEgKGNvbnN0IGNoYXIgKnN0ciwgcHRyZGlmZl90IGxlbikKIAogICBp ZiAoIVNZTUJPTFAgKHRlbSkpCiAgICAgewotICAgICAgLyogQ3JlYXRpbmcgYSBub24tcHVyZSBz dHJpbmcgZnJvbSBhIHN0cmluZyBsaXRlcmFsIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCi0JIFdlIGNv dWxkIGp1c3QgdXNlIG1ha2Vfc3RyaW5nIGhlcmUgYW5kIGxpdmUgd2l0aCB0aGUgZXh0cmEgY29w eS4gICovCiAgICAgICBlYXNzZXJ0ICghTklMUCAoVnB1cmlmeV9mbGFnKSk7Ci0gICAgICB0ZW0g PSBpbnRlcm5fZHJpdmVyIChtYWtlX3B1cmVfY19zdHJpbmcgKHN0ciwgbGVuKSwgb2JhcnJheSwg dGVtKTsKKyAgICAgIHRlbSA9IGludGVybl9kcml2ZXIgKG1ha2Vfc3RyaW5nIChzdHIsIGxlbiks IG9iYXJyYXksIHRlbSk7CiAgICAgfQogICByZXR1cm4gdGVtOwogfQpAQCAtNDIxNiw3ICs0MjA4 LDcgQEAgaW50ZXJuX2Nfc3RyaW5nXzEgKGNvbnN0IGNoYXIgKnN0ciwgcHRyZGlmZl90IGxlbikK IGRlZmluZV9zeW1ib2wgKExpc3BfT2JqZWN0IHN5bSwgY2hhciBjb25zdCAqc3RyKQogewogICBw dHJkaWZmX3QgbGVuID0gc3RybGVuIChzdHIpOwotICBMaXNwX09iamVjdCBzdHJpbmcgPSBtYWtl X3B1cmVfY19zdHJpbmcgKHN0ciwgbGVuKTsKKyAgTGlzcF9PYmplY3Qgc3RyaW5nID0gbWFrZV9z dHJpbmcgKHN0ciwgbGVuKTsKICAgaW5pdF9zeW1ib2wgKHN5bSwgc3RyaW5nKTsKIAogICAvKiBR dW5ib3VuZCBpcyB1bmludGVybmVkLCBzbyB0aGF0IGl0J3Mgbm90IGNvbmZ1c2VkIHdpdGggYW55 IHN5bWJvbApAQCAtNDI0Myw4ICs0MjM1LDcgQEAgREVGVU4gKCJpbnRlcm4iLCBGaW50ZXJuLCBT aW50ZXJuLCAxLCAyLCAwLAogCiAgIHRlbSA9IG9ibG9va3VwIChvYmFycmF5LCBTU0RBVEEgKHN0 cmluZyksIFNDSEFSUyAoc3RyaW5nKSwgU0JZVEVTIChzdHJpbmcpKTsKICAgaWYgKCFTWU1CT0xQ ICh0ZW0pKQotICAgIHRlbSA9IGludGVybl9kcml2ZXIgKE5JTFAgKFZwdXJpZnlfZmxhZykgPyBz dHJpbmcgOiBGcHVyZWNvcHkgKHN0cmluZyksCi0JCQkgb2JhcnJheSwgdGVtKTsKKyAgICB0ZW0g PSBpbnRlcm5fZHJpdmVyIChzdHJpbmcsIG9iYXJyYXksIHRlbSk7CiAgIHJldHVybiB0ZW07CiB9 CiAKQEAgLTQ4OTMsMjMgKzQ4ODQsMjMgQEAgc3ltc19vZl9scmVhZCAodm9pZCkKIHRvIHRoZSBz cGVjaWZpZWQgZmlsZSBuYW1lIGlmIGEgc3VmZml4IGlzIGFsbG93ZWQgb3IgcmVxdWlyZWQuICAq Lyk7CiAjaWZkZWYgSEFWRV9NT0RVTEVTCiAjaWZkZWYgTU9EVUxFU19TRUNPTkRBUllfU1VGRklY Ci0gIFZsb2FkX3N1ZmZpeGVzID0gbGlzdDQgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIuZWxjIiks Ci0JCQkgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIuZWwiKSwKLQkJCSAgYnVpbGRfcHVyZV9jX3N0 cmluZyAoTU9EVUxFU19TVUZGSVgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9w dXJlX2Nfc3RyaW5nIChNT0RVTEVTX1NFQ09OREFSWV9TVUZGSVgpKTsKKyAgVmxvYWRfc3VmZml4 ZXMgPSBsaXN0NCAoYnVpbGRfc3RyaW5nICgiLmVsYyIpLAorCQkJICBidWlsZF9zdHJpbmcgKCIu ZWwiKSwKKwkJCSAgYnVpbGRfc3RyaW5nIChNT0RVTEVTX1NVRkZJWCksCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ1aWxkX3N0cmluZyAoTU9EVUxFU19TRUNPTkRBUllfU1VGRklYKSk7CiAj ZWxzZQotICBWbG9hZF9zdWZmaXhlcyA9IGxpc3QzIChidWlsZF9wdXJlX2Nfc3RyaW5nICgiLmVs YyIpLAotCQkJICBidWlsZF9wdXJlX2Nfc3RyaW5nICgiLmVsIiksCi0JCQkgIGJ1aWxkX3B1cmVf Y19zdHJpbmcgKE1PRFVMRVNfU1VGRklYKSk7CisgIFZsb2FkX3N1ZmZpeGVzID0gbGlzdDMgKGJ1 aWxkX3N0cmluZyAoIi5lbGMiKSwKKwkJCSAgYnVpbGRfc3RyaW5nICgiLmVsIiksCisJCQkgIGJ1 aWxkX3N0cmluZyAoTU9EVUxFU19TVUZGSVgpKTsKICNlbmRpZgogI2Vsc2UKLSAgVmxvYWRfc3Vm Zml4ZXMgPSBsaXN0MiAoYnVpbGRfcHVyZV9jX3N0cmluZyAoIi5lbGMiKSwKLQkJCSAgYnVpbGRf cHVyZV9jX3N0cmluZyAoIi5lbCIpKTsKKyAgVmxvYWRfc3VmZml4ZXMgPSBsaXN0MiAoYnVpbGRf c3RyaW5nICgiLmVsYyIpLAorCQkJICBidWlsZF9zdHJpbmcgKCIuZWwiKSk7CiAjZW5kaWYKICAg REVGVkFSX0xJU1AgKCJtb2R1bGUtZmlsZS1zdWZmaXgiLCBWbW9kdWxlX2ZpbGVfc3VmZml4LAog CSAgICAgICBkb2M6IC8qIFN1ZmZpeCBvZiBsb2FkYWJsZSBtb2R1bGUgZmlsZSwgb3IgbmlsIGlm IG1vZHVsZXMgYXJlIG5vdCBzdXBwb3J0ZWQuICAqLyk7CiAjaWZkZWYgSEFWRV9NT0RVTEVTCi0g IFZtb2R1bGVfZmlsZV9zdWZmaXggPSBidWlsZF9wdXJlX2Nfc3RyaW5nIChNT0RVTEVTX1NVRkZJ WCk7CisgIFZtb2R1bGVfZmlsZV9zdWZmaXggPSBidWlsZF9zdHJpbmcgKE1PRFVMRVNfU1VGRklY KTsKICNlbHNlCiAgIFZtb2R1bGVfZmlsZV9zdWZmaXggPSBRbmlsOwogI2VuZGlmCkBAIC01MDUy LDcgKzUwNDMsNyBAQCBzeW1zX29mX2xyZWFkICh2b2lkKQogV2hlbiB0aGUgcmVndWxhciBleHBy ZXNzaW9uIG1hdGNoZXMsIHRoZSBmaWxlIGlzIGNvbnNpZGVyZWQgdG8gYmUgc2FmZQogdG8gbG9h ZC4gICovKTsKICAgVmJ5dGVjb21wX3ZlcnNpb25fcmVnZXhwCi0gICAgPSBidWlsZF9wdXJlX2Nf c3RyaW5nICgiXjs7Oy5cXChpbiBFbWFjcyB2ZXJzaW9uXFx8Ynl0ZWNvbXAgdmVyc2lvbiBGU0Zc XCkiKTsKKyAgICA9IGJ1aWxkX3N0cmluZyAoIl47OzsuXFwoaW4gRW1hY3MgdmVyc2lvblxcfGJ5 dGVjb21wIHZlcnNpb24gRlNGXFwpIik7CiAKICAgREVGU1lNIChRbGV4aWNhbF9iaW5kaW5nLCAi bGV4aWNhbC1iaW5kaW5nIik7CiAgIERFRlZBUl9MSVNQICgibGV4aWNhbC1iaW5kaW5nIiwgVmxl eGljYWxfYmluZGluZywKZGlmZiAtLWdpdCBhL3NyYy9wZHVtcGVyLmMgYi9zcmMvcGR1bXBlci5j CmluZGV4IDMzNzc0MmZkYTRhZGUuLmRkMjQ4NmNkMWEwZTUgMTAwNjQ0Ci0tLSBhL3NyYy9wZHVt cGVyLmMKKysrIGIvc3JjL3BkdW1wZXIuYwpAQCAtMjQwMyw3ICsyNDAzLDcgQEAgZHVtcF9zeW1i b2wgKHN0cnVjdCBkdW1wX2NvbnRleHQgKmN0eCwKICAgICAgICAgICAgICBMaXNwX09iamVjdCBv YmplY3QsCiAgICAgICAgICAgICAgZHVtcF9vZmYgb2Zmc2V0KQogewotI2lmIENIRUNLX1NUUlVD VFMgJiYgIWRlZmluZWQgSEFTSF9MaXNwX1N5bWJvbF85OTlEQzI2REVDCisjaWYgQ0hFQ0tfU1RS VUNUUyAmJiAhZGVmaW5lZCBIQVNIX0xpc3BfU3ltYm9sX0REMkU2MDEzQjQKICMgZXJyb3IgIkxp c3BfU3ltYm9sIGNoYW5nZWQuIFNlZSBDSEVDS19TVFJVQ1RTIGNvbW1lbnQgaW4gY29uZmlnLmgu IgogI2VuZGlmCiAjaWYgQ0hFQ0tfU1RSVUNUUyAmJiAhZGVmaW5lZCAoSEFTSF9zeW1ib2xfcmVk aXJlY3RfQURCNEY1QjExMykKQEAgLTI0NDAsNyArMjQ0MCw2IEBAIGR1bXBfc3ltYm9sIChzdHJ1 Y3QgZHVtcF9jb250ZXh0ICpjdHgsCiAgIERVTVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1 LnMudHJhcHBlZF93cml0ZSk7CiAgIERVTVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1LnMu aW50ZXJuZWQpOwogICBEVU1QX0ZJRUxEX0NPUFkgKCZvdXQsIHN5bWJvbCwgdS5zLmRlY2xhcmVk X3NwZWNpYWwpOwotICBEVU1QX0ZJRUxEX0NPUFkgKCZvdXQsIHN5bWJvbCwgdS5zLnBpbm5lZCk7 CiAgIGR1bXBfZmllbGRfbHYgKGN0eCwgJm91dCwgc3ltYm9sLCAmc3ltYm9sLT51LnMubmFtZSwg V0VJR0hUX1NUUk9ORyk7CiAgIHN3aXRjaCAoc3ltYm9sLT51LnMucmVkaXJlY3QpCiAgICAgewpA QCAtMjY1Nyw3ICsyNjU2LDcgQEAgZHVtcF9oYXNoX3RhYmxlIChzdHJ1Y3QgZHVtcF9jb250ZXh0 ICpjdHgsCiAgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0IG9iamVjdCwKICAgICAgICAgICAg ICAgICAgZHVtcF9vZmYgb2Zmc2V0KQogewotI2lmIENIRUNLX1NUUlVDVFMgJiYgIWRlZmluZWQg SEFTSF9MaXNwX0hhc2hfVGFibGVfNkQ2M0VEQjYxOAorI2lmIENIRUNLX1NUUlVDVFMgJiYgIWRl ZmluZWQgSEFTSF9MaXNwX0hhc2hfVGFibGVfMjAzODIxQzdFRgogIyBlcnJvciAiTGlzcF9IYXNo X1RhYmxlIGNoYW5nZWQuIFNlZSBDSEVDS19TVFJVQ1RTIGNvbW1lbnQgaW4gY29uZmlnLmguIgog I2VuZGlmCiAgIGNvbnN0IHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmhhc2hfaW4gPSBYSEFTSF9U QUJMRSAob2JqZWN0KTsKQEAgLTI2NzMsNyArMjY3Miw2IEBAIGR1bXBfaGFzaF90YWJsZSAoc3Ry dWN0IGR1bXBfY29udGV4dCAqY3R4LAogICAgICB0aGVtIGFzIGNsb3NlIHRvIHRoZSBoYXNoIHRh YmxlIGFzIHBvc3NpYmxlLiAgKi8KICAgRFVNUF9GSUVMRF9DT1BZIChvdXQsIGhhc2gsIGNvdW50 KTsKICAgRFVNUF9GSUVMRF9DT1BZIChvdXQsIGhhc2gsIG5leHRfZnJlZSk7Ci0gIERVTVBfRklF TERfQ09QWSAob3V0LCBoYXNoLCBwdXJlY29weSk7CiAgIERVTVBfRklFTERfQ09QWSAob3V0LCBo YXNoLCBtdXRhYmxlKTsKICAgRFVNUF9GSUVMRF9DT1BZIChvdXQsIGhhc2gsIHJlaGFzaF90aHJl c2hvbGQpOwogICBEVU1QX0ZJRUxEX0NPUFkgKG91dCwgaGFzaCwgcmVoYXNoX3NpemUpOwpAQCAt NTQ2Nyw4ICs1NDY1LDYgQEAgREVGVU4gKCJwZHVtcGVyLXN0YXRzIiwgRnBkdW1wZXJfc3RhdHMs IFNwZHVtcGVyX3N0YXRzLCAwLCAwLCAwLAogCQlGY29ucyAoUWR1bXBfZmlsZV9uYW1lLCBkdW1w X2ZuKSk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX1BEVU1QRVIgKi8KLQogDAogc3RhdGljIHZvaWQK IHRoYXdfaGFzaF90YWJsZXMgKHZvaWQpCkBAIC01NDgzLDYgKzU0NzksNyBAQCBpbml0X3BkdW1w ZXJfb25jZSAodm9pZCkKIHsKICAgcGR1bXBlcl9kb19ub3dfYW5kX2FmdGVyX2xvYWQgKHRoYXdf aGFzaF90YWJsZXMpOwogfQorI2VuZGlmIC8qIEhBVkVfUERVTVBFUiAqLwogCiB2b2lkCiBzeW1z X29mX3BkdW1wZXIgKHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvcHJpbnQuYyBiL3NyYy9wcmludC5j CmluZGV4IDE0YWY5MTk1NDc1ZWYuLmRmMDA4Y2YzYjEyOTYgMTAwNjQ0Ci0tLSBhL3NyYy9wcmlu dC5jCisrKyBiL3NyYy9wcmludC5jCkBAIC0xNTgxLDEyICsxNTgxLDYgQEAgcHJpbnRfdmVjdG9y bGlrZSAoTGlzcF9PYmplY3Qgb2JqLCBMaXNwX09iamVjdCBwcmludGNoYXJmdW4sIGJvb2wgZXNj YXBlZmxhZywKIAlwcmludF9vYmplY3QgKEZoYXNoX3RhYmxlX3JlaGFzaF90aHJlc2hvbGQgKG9i aiksCiAJCSAgICAgIHByaW50Y2hhcmZ1biwgZXNjYXBlZmxhZyk7CiAKLQlpZiAoaC0+cHVyZWNv cHkpCi0JICB7Ci0JICAgIHByaW50X2Nfc3RyaW5nICgiIHB1cmVjb3B5ICIsIHByaW50Y2hhcmZ1 bik7Ci0JICAgIHByaW50X29iamVjdCAoaC0+cHVyZWNvcHkgPyBRdCA6IFFuaWwsIHByaW50Y2hh cmZ1biwgZXNjYXBlZmxhZyk7Ci0JICB9Ci0KIAlwcmludF9jX3N0cmluZyAoIiBkYXRhICIsIHBy aW50Y2hhcmZ1bik7CiAKIAkvKiBQcmludCB0aGUgZGF0YSBoZXJlIGFzIGEgcGxpc3QuICovCmRp ZmYgLS1naXQgYS9zcmMvcHJvY2Vzcy5jIGIvc3JjL3Byb2Nlc3MuYwppbmRleCBiOThiYzI5N2Ez ZjNmLi45MGExMTQxYWI2NTY0IDEwMDY0NAotLS0gYS9zcmMvcHJvY2Vzcy5jCisrKyBiL3NyYy9w cm9jZXNzLmMKQEAgLTg1NjYsNyArODU2Niw3IEBAIHN5bXNfb2ZfcHJvY2VzcyAodm9pZCkKICAg IGNvbnN0IHN0cnVjdCBzb2NrZXRfb3B0aW9ucyAqc29wdDsKIAogI2RlZmluZSBBRERfU1VCRkVB VFVSRShrZXksIHZhbCkgXAotICBzdWJmZWF0dXJlcyA9IHB1cmVfY29ucyAocHVyZV9jb25zIChr ZXksIHB1cmVfY29ucyAodmFsLCBRbmlsKSksIHN1YmZlYXR1cmVzKQorICBzdWJmZWF0dXJlcyA9 IEZjb25zIChGY29ucyAoa2V5LCBGY29ucyAodmFsLCBRbmlsKSksIHN1YmZlYXR1cmVzKQogCiAg ICBBRERfU1VCRkVBVFVSRSAoUUNub3dhaXQsIFF0KTsKICNpZmRlZiBEQVRBR1JBTV9TT0NLRVRT CkBAIC04NTg4LDcgKzg1ODgsNyBAQCAjZGVmaW5lIEFERF9TVUJGRUFUVVJFKGtleSwgdmFsKSBc CiAgICBBRERfU1VCRkVBVFVSRSAoUUNzZXJ2ZXIsIFF0KTsKIAogICAgZm9yIChzb3B0ID0gc29j a2V0X29wdGlvbnM7IHNvcHQtPm5hbWU7IHNvcHQrKykKLSAgICAgc3ViZmVhdHVyZXMgPSBwdXJl X2NvbnMgKGludGVybl9jX3N0cmluZyAoc29wdC0+bmFtZSksIHN1YmZlYXR1cmVzKTsKKyAgICAg c3ViZmVhdHVyZXMgPSBGY29ucyAoaW50ZXJuX2Nfc3RyaW5nIChzb3B0LT5uYW1lKSwgc3ViZmVh dHVyZXMpOwogCiAgICBGcHJvdmlkZSAoaW50ZXJuX2Nfc3RyaW5nICgibWFrZS1uZXR3b3JrLXBy b2Nlc3MiKSwgc3ViZmVhdHVyZXMpOwogIH0KZGlmZiAtLWdpdCBhL3NyYy9wcm9maWxlci5jIGIv c3JjL3Byb2ZpbGVyLmMKaW5kZXggMjFhZTI0NDdhYTRlZS4uNDRiZjU3ZWJhMjA3OCAxMDA2NDQK LS0tIGEvc3JjL3Byb2ZpbGVyLmMKKysrIGIvc3JjL3Byb2ZpbGVyLmMKQEAgLTYzLDcgKzYzLDcg QEAgbWFrZV9sb2cgKHZvaWQpCiAgIExpc3BfT2JqZWN0IGxvZyA9IG1ha2VfaGFzaF90YWJsZSAo aGFzaHRlc3RfcHJvZmlsZXIsIGhlYXBfc2l6ZSwKIAkJCQkgICAgIERFRkFVTFRfUkVIQVNIX1NJ WkUsCiAJCQkJICAgICBERUZBVUxUX1JFSEFTSF9USFJFU0hPTEQsCi0JCQkJICAgICBRbmlsLCBm YWxzZSk7CisJCQkJICAgICBRbmlsKTsKICAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCA9IFhI QVNIX1RBQkxFIChsb2cpOwogCiAgIC8qIFdoYXQgaXMgc3BlY2lhbCBhYm91dCBvdXIgaGFzaC10 YWJsZXMgaXMgdGhhdCB0aGUgdmFsdWVzIGFyZSBwcmUtZmlsbGVkCmRpZmYgLS1naXQgYS9zcmMv cHVyZXNpemUuaCBiL3NyYy9wdXJlc2l6ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA4MTFkMGI0ZDM2OTUyLi4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyYy9wdXJlc2l6ZS5oCisrKyAv ZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8qIEhvdyBtdWNoIHJlYWQtb25seSBMaXNwIHN0 b3JhZ2UgYSBkdW1wZWQgRW1hY3MgbmVlZHMuCi0gICBDb3B5cmlnaHQgKEMpIDE5OTMsIDIwMDEt MjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotVGhpcyBmaWxlIGlzIHBhcnQg b2YgR05VIEVtYWNzLgotCi1HTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLXRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdAoteW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi1HTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLWJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi1NRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi1HTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi1Zb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotYWxvbmcg d2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KLQotI2lmbmRlZiBFTUFDU19QVVJFU0laRV9ICi0jZGVmaW5lIEVNQUNTX1BVUkVT SVpFX0gKLQotI2luY2x1ZGUgImxpc3AuaCIKLQotSU5MSU5FX0hFQURFUl9CRUdJTgotCi0vKiBE ZWZpbmUgUFVSRVNJWkUsIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgcHVyZSBMaXNwIGNvZGUgdG8g bGVhdmUgc3BhY2UgZm9yLgotCi0gICBBdCBvbmUgcG9pbnQsIHRoaXMgd2FzIGRlZmluZWQgaW4g Y29uZmlnLmgsIG1lYW5pbmcgdGhhdCBjaGFuZ2luZwotICAgUFVSRVNJWkUgd291bGQgbWFrZSBN YWtlIHJlY29tcGlsZSBhbGwgb2YgRW1hY3MuICBCdXQgb25seSBhIGZldwotICAgZmlsZXMgYWN0 dWFsbHkgdXNlIFBVUkVTSVpFLCBzbyB3ZSBzcGxpdCBpdCBvdXQgdG8gaXRzIG93biAuaCBmaWxl LgotCi0gICBNYWtlIHN1cmUgdG8gaW5jbHVkZSB0aGlzIGZpbGUgYWZ0ZXIgY29uZmlnLmgsIHNp bmNlIHRoYXQgdGVsbHMgdXMKLSAgIHdoZXRoZXIgd2UgYXJlIHJ1bm5pbmcgWCB3aW5kb3dzLCB3 aGljaCB0ZWxscyB1cyBob3cgbXVjaCBwdXJlCi0gICBzdG9yYWdlIHRvIGFsbG9jYXRlLiAgKi8K LQotLyogRmlyc3QgZGVmaW5lIGEgbWVhc3VyZSBvZiB0aGUgYW1vdW50IG9mIGRhdGEgd2UgaGF2 ZS4gICovCi0KLS8qIEEgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZmlsZSBtYXkgc2V0IHRoaXMgdG8g cmVxdWVzdCBhIGNlcnRhaW4gZXh0cmEKLSAgIGFtb3VudCBvZiBzdG9yYWdlLiAgVGhpcyBpcyBh IGxvdCBtb3JlIHVwZGF0ZS1yb2J1c3QgdGhhdCBkZWZpbmluZwotICAgQkFTRV9QVVJFU0laRSBv ciBldmVuIFBVUkVTSVpFIGRpcmVjdGx5LiAgKi8KLSNpZm5kZWYgU1lTVEVNX1BVUkVTSVpFX0VY VFJBCi0jZGVmaW5lIFNZU1RFTV9QVVJFU0laRV9FWFRSQSAwCi0jZW5kaWYKLQotI2lmbmRlZiBT SVRFTE9BRF9QVVJFU0laRV9FWFRSQQotI2RlZmluZSBTSVRFTE9BRF9QVVJFU0laRV9FWFRSQSAw Ci0jZW5kaWYKLQotI2lmbmRlZiBCQVNFX1BVUkVTSVpFCi0jZGVmaW5lIEJBU0VfUFVSRVNJWkUg KDIwMDAwMDAgKyBTWVNURU1fUFVSRVNJWkVfRVhUUkEgKyBTSVRFTE9BRF9QVVJFU0laRV9FWFRS QSkKLSNlbmRpZgotCi0vKiBJbmNyZWFzZSBCQVNFX1BVUkVTSVpFIGJ5IGEgcmF0aW8gZGVwZW5k aW5nIG9uIHRoZSBtYWNoaW5lJ3Mgd29yZCBzaXplLiAgKi8KLSNpZm5kZWYgUFVSRVNJWkVfUkFU SU8KLSNpZiBFTUFDU19JTlRfTUFYID4+IDMxICE9IDAKLSNpZiBQVFJESUZGX01BWCA+PiAzMSAh PSAwCi0jZGVmaW5lIFBVUkVTSVpFX1JBVElPIDEwIC8gNgkvKiBEb24ndCBzdXJyb3VuZCB3aXRo IGAoKScuICAqLwotI2Vsc2UKLSNkZWZpbmUgUFVSRVNJWkVfUkFUSU8gOCAvIDYJLyogRG9uJ3Qg c3Vycm91bmQgd2l0aCBgKCknLiAgKi8KLSNlbmRpZgotI2Vsc2UKLSNkZWZpbmUgUFVSRVNJWkVf UkFUSU8gMQotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIEVOQUJMRV9DSEVDS0lORwotLyogRU5B QkxFX0NIRUNLSU5HIHNvbWVob3cgaW5jcmVhc2VzIHRoZSBwdXJlc3BhY2UgdXNlZCwgcHJvYmFi bHkgYmVjYXVzZQotICAgaXQgdGVuZHMgdG8gY2F1c2Ugc29tZSBtYWNybyBhcmd1bWVudHMgdG8g YmUgZXZhbHVhdGVkIHR3aWNlLiAgVGhpcyBpcwotICAgYSBidWcsIGJ1dCBpdCdzIGRpZmZpY3Vs dCB0byB0cmFjayBpdCBkb3duLiAgKi8KLSNkZWZpbmUgUFVSRVNJWkVfQ0hFQ0tJTkdfUkFUSU8g MTIgLyAxMAkvKiBEb24ndCBzdXJyb3VuZCB3aXRoIGAoKScuICAqLwotI2Vsc2UKLSNkZWZpbmUg UFVSRVNJWkVfQ0hFQ0tJTkdfUkFUSU8gMQotI2VuZGlmCi0KLS8qIFRoaXMgaXMgdGhlIGFjdHVh bCBzaXplIGluIGJ5dGVzIHRvIGFsbG9jYXRlLiAgKi8KLSNpZm5kZWYgUFVSRVNJWkUKLSNkZWZp bmUgUFVSRVNJWkUgIChCQVNFX1BVUkVTSVpFICogUFVSRVNJWkVfUkFUSU8gKiBQVVJFU0laRV9D SEVDS0lOR19SQVRJTykKLSNlbmRpZgotCi1leHRlcm4gQVZPSUQgcHVyZV93cml0ZV9lcnJvciAo TGlzcF9PYmplY3QpOwotCi1leHRlcm4gRU1BQ1NfSU5UIHB1cmVbXTsKLQotLyogVGhlIHB1cmVz aXplX2hfKiBtYWNyb3MgYXJlIHByaXZhdGUgdG8gdGhpcyBpbmNsdWRlIGZpbGUuICAqLwotCi0v KiBUcnVlIGlmIFBUUiBpcyBwdXJlLiAgKi8KLQotI2RlZmluZSBwdXJlc2l6ZV9oX1BVUkVfUChw dHIpIFwKLSAgKCh1aW50cHRyX3QpIChwdHIpIC0gKHVpbnRwdHJfdCkgcHVyZSA8PSBQVVJFU0la RSkKLQotSU5MSU5FIGJvb2wKLVBVUkVfUCAodm9pZCAqcHRyKQotewotICByZXR1cm4gcHVyZXNp emVfaF9QVVJFX1AgKHB0cik7Ci19Ci0KLS8qIFNpZ25hbCBhbiBlcnJvciBpZiBPQkogaXMgcHVy ZS4gIFBUUiBpcyBPQkogdW50YWdnZWQuICAqLwotCi0jZGVmaW5lIHB1cmVzaXplX2hfQ0hFQ0tf SU1QVVJFKG9iaiwgcHRyKSBcCi0gIChQVVJFX1AgKHB0cikgPyBwdXJlX3dyaXRlX2Vycm9yIChv YmopIDogKHZvaWQpIDApCi0KLUlOTElORSB2b2lkCi1DSEVDS19JTVBVUkUgKExpc3BfT2JqZWN0 IG9iaiwgdm9pZCAqcHRyKQotewotICBwdXJlc2l6ZV9oX0NIRUNLX0lNUFVSRSAob2JqLCBwdHIp OwotfQotCi0jaWYgREVGSU5FX0tFWV9PUFNfQVNfTUFDUk9TCi0jIGRlZmluZSBQVVJFX1AocHRy KSBwdXJlc2l6ZV9oX1BVUkVfUCAocHRyKQotIyBkZWZpbmUgQ0hFQ0tfSU1QVVJFKG9iaiwgcHRy KSBwdXJlc2l6ZV9oX0NIRUNLX0lNUFVSRSAob2JqLCBwdHIpCi0jZW5kaWYKLQotSU5MSU5FX0hF QURFUl9FTkQKLQotI2VuZGlmIC8qIEVNQUNTX1BVUkVTSVpFX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9zZWFyY2guYyBiL3NyYy9zZWFyY2guYwppbmRleCBjNzU3YmYzZDFmMjgxLi41YTIxNGRiMDA5 MmQyIDEwMDY0NAotLS0gYS9zcmMvc2VhcmNoLmMKKysrIGIvc3JjL3NlYXJjaC5jCkBAIC0zMzU0 LDE5ICszMzU0LDE5IEBAIHN5bXNfb2Zfc2VhcmNoICh2b2lkKQogICBERUZTWU0gKFFpbnZhbGlk X3JlZ2V4cCwgImludmFsaWQtcmVnZXhwIik7CiAKICAgRnB1dCAoUXNlYXJjaF9mYWlsZWQsIFFl cnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUXNlYXJjaF9mYWlsZWQsIFFlcnJvcikpOwor CWxpc3QgKFFzZWFyY2hfZmFpbGVkLCBRZXJyb3IpKTsKICAgRnB1dCAoUXNlYXJjaF9mYWlsZWQs IFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJTZWFyY2ggZmFpbGVkIikp OworCWJ1aWxkX3N0cmluZyAoIlNlYXJjaCBmYWlsZWQiKSk7CiAKICAgRnB1dCAoUXVzZXJfc2Vh cmNoX2ZhaWxlZCwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRdXNlcl9zZWFyY2hf ZmFpbGVkLCBRdXNlcl9lcnJvciwgUXNlYXJjaF9mYWlsZWQsIFFlcnJvcikpOworCWxpc3QgKFF1 c2VyX3NlYXJjaF9mYWlsZWQsIFF1c2VyX2Vycm9yLCBRc2VhcmNoX2ZhaWxlZCwgUWVycm9yKSk7 CiAgIEZwdXQgKFF1c2VyX3NlYXJjaF9mYWlsZWQsIFFlcnJvcl9tZXNzYWdlLAotICAgICAgICBi dWlsZF9wdXJlX2Nfc3RyaW5nICgiU2VhcmNoIGZhaWxlZCIpKTsKKyAgICAgICAgYnVpbGRfc3Ry aW5nICgiU2VhcmNoIGZhaWxlZCIpKTsKIAogICBGcHV0IChRaW52YWxpZF9yZWdleHAsIFFlcnJv cl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUWludmFsaWRfcmVnZXhwLCBRZXJyb3IpKTsKKwls aXN0IChRaW52YWxpZF9yZWdleHAsIFFlcnJvcikpOwogICBGcHV0IChRaW52YWxpZF9yZWdleHAs IFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJJbnZhbGlkIHJlZ2V4cCIp KTsKKwlidWlsZF9zdHJpbmcgKCJJbnZhbGlkIHJlZ2V4cCIpKTsKIAogICByZV9tYXRjaF9vYmpl Y3QgPSBRbmlsOwogICBzdGF0aWNwcm8gKCZyZV9tYXRjaF9vYmplY3QpOwpkaWZmIC0tZ2l0IGEv c3JjL3N5bnRheC5jIGIvc3JjL3N5bnRheC5jCmluZGV4IDlmYmY4ODUzNWYzZWMuLjk5M2Y5MWFm MTlhYzAgMTAwNjQ0Ci0tLSBhL3NyYy9zeW50YXguYworKysgYi9zcmMvc3ludGF4LmMKQEAgLTM3 MTksOSArMzcxOSw5IEBAIHN5bXNfb2Zfc3ludGF4ICh2b2lkKQogCiAgIERFRlNZTSAoUXNjYW5f ZXJyb3IsICJzY2FuLWVycm9yIik7CiAgIEZwdXQgKFFzY2FuX2Vycm9yLCBRZXJyb3JfY29uZGl0 aW9ucywKLQlwdXJlX2xpc3QgKFFzY2FuX2Vycm9yLCBRZXJyb3IpKTsKKwlsaXN0IChRc2Nhbl9l cnJvciwgUWVycm9yKSk7CiAgIEZwdXQgKFFzY2FuX2Vycm9yLCBRZXJyb3JfbWVzc2FnZSwKLQli dWlsZF9wdXJlX2Nfc3RyaW5nICgiU2NhbiBlcnJvciIpKTsKKwlidWlsZF9zdHJpbmcgKCJTY2Fu IGVycm9yIikpOwogCiAgIERFRlZBUl9CT09MICgicGFyc2Utc2V4cC1pZ25vcmUtY29tbWVudHMi LCBwYXJzZV9zZXhwX2lnbm9yZV9jb21tZW50cywKIAkgICAgICAgZG9jOiAvKiBOb24tbmlsIG1l YW5zIGBmb3J3YXJkLXNleHAnLCBldGMuLCBzaG91bGQgdHJlYXQgY29tbWVudHMgYXMgd2hpdGVz cGFjZS4gICovKTsKZGlmZiAtLWdpdCBhL3NyYy93MzJmbnMuYyBiL3NyYy93MzJmbnMuYwppbmRl eCA5ZGIzNjdiZmFmZTc1Li4zYjNhZDJmNTViOWFhIDEwMDY0NAotLS0gYS9zcmMvdzMyZm5zLmMK KysrIGIvc3JjL3czMmZucy5jCkBAIC0xMDM5MCw5ICsxMDM5MCw5IEBAIHN5bXNfb2ZfdzMyZm5z ICh2b2lkKQogICBERUZTWU0gKFFqc29uLCAianNvbiIpOwogCiAgIEZwdXQgKFF1bmRlZmluZWRf Y29sb3IsIFFlcnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUXVuZGVmaW5lZF9jb2xvciwg UWVycm9yKSk7CisJbGlzdCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yKSk7CiAgIEZwdXQgKFF1 bmRlZmluZWRfY29sb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJV bmRlZmluZWQgY29sb3IiKSk7CisJYnVpbGRfc3RyaW5nICgiVW5kZWZpbmVkIGNvbG9yIikpOwog CiAgIHN0YXRpY3BybyAoJnczMl9ncmFiYmVkX2tleXMpOwogICB3MzJfZ3JhYmJlZF9rZXlzID0g UW5pbDsKZGlmZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggY2MwYTY4 OWJhMzJlOS4uMzgwOTkzNTBkNjc2MSAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIvc3Jj L3hkaXNwLmMKQEAgLTM0ODYyLDcgKzM0ODYyLDcgQEAgc3ltc19vZl94ZGlzcCAodm9pZCkKICAg c3RhdGljcHJvICgmZWNob19hcmVhX2J1ZmZlclswXSk7CiAgIHN0YXRpY3BybyAoJmVjaG9fYXJl YV9idWZmZXJbMV0pOwogCi0gIFZtZXNzYWdlc19idWZmZXJfbmFtZSA9IGJ1aWxkX3B1cmVfY19z dHJpbmcgKCIqTWVzc2FnZXMqIik7CisgIFZtZXNzYWdlc19idWZmZXJfbmFtZSA9IGJ1aWxkX3N0 cmluZyAoIipNZXNzYWdlcyoiKTsKICAgc3RhdGljcHJvICgmVm1lc3NhZ2VzX2J1ZmZlcl9uYW1l KTsKIAogICBtb2RlX2xpbmVfcHJvcHRyYW5zX2FsaXN0ID0gUW5pbDsKQEAgLTM0OTU0LDcgKzM0 OTU0LDcgQEAgc3ltc19vZl94ZGlzcCAodm9pZCkKICAgREVGVkFSX0xJU1AgKCJvdmVybGF5LWFy cm93LXN0cmluZyIsIFZvdmVybGF5X2Fycm93X3N0cmluZywKICAgICBkb2M6IC8qIFN0cmluZyB0 byBkaXNwbGF5IGFzIGFuIGFycm93IGluIG5vbi13aW5kb3cgZnJhbWVzLgogU2VlIGFsc28gYG92 ZXJsYXktYXJyb3ctcG9zaXRpb24nLiAgKi8pOwotICBWb3ZlcmxheV9hcnJvd19zdHJpbmcgPSBi dWlsZF9wdXJlX2Nfc3RyaW5nICgiPT4iKTsKKyAgVm92ZXJsYXlfYXJyb3dfc3RyaW5nID0gYnVp bGRfc3RyaW5nICgiPT4iKTsKIAogICBERUZWQVJfTElTUCAoIm92ZXJsYXktYXJyb3ctdmFyaWFi bGUtbGlzdCIsIFZvdmVybGF5X2Fycm93X3ZhcmlhYmxlX2xpc3QsCiAgICAgZG9jOiAvKiBMaXN0 IG9mIHZhcmlhYmxlcyAoc3ltYm9scykgd2hpY2ggaG9sZCBtYXJrZXJzIGZvciBvdmVybGF5IGFy cm93cy4KQEAgLTM1MDc5LDE3ICszNTA3OSwxNyBAQCBzeW1zX29mX3hkaXNwICh2b2lkKQogVGhp cyB2YXJpYWJsZSBoYXMgdGhlIHNhbWUgc3RydWN0dXJlIGFzIGBtb2RlLWxpbmUtZm9ybWF0JyAo d2hpY2ggc2VlKSwKIGFuZCBpcyB1c2VkIG9ubHkgb24gZnJhbWVzIGZvciB3aGljaCBubyBleHBs aWNpdCBuYW1lIGhhcyBiZWVuIHNldAogXChzZWUgYG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJzJyku ICAqLyk7Ci0gIC8qIERvIG5vdCBuZXN0IGNhbGxzIHRvIHB1cmVfbGlzdC4gIFRoaXMgd29ya3Mg YXJvdW5kIGEgYnVnIGluCisgIC8qIERvIG5vdCBuZXN0IGNhbGxzIHRvIGxpc3QuICBUaGlzIHdv cmtzIGFyb3VuZCBhIGJ1ZyBpbgogICAgICBPcmFjbGUgRGV2ZWxvcGVyIFN0dWRpbyAxMi42LiAg Ki8KICAgTGlzcF9PYmplY3QgaWNvbl90aXRsZV9uYW1lX2Zvcm1hdAotICAgID0gcHVyZV9saXN0 IChlbXB0eV91bmlieXRlX3N0cmluZywKLQkJIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIlYiAtIEdO VSBFbWFjcyBhdCAiKSwKLQkJIGludGVybl9jX3N0cmluZyAoInN5c3RlbS1uYW1lIikpOworICAg ID0gbGlzdCAoZW1wdHlfdW5pYnl0ZV9zdHJpbmcsCisJICAgIGJ1aWxkX3N0cmluZyAoIiViIC0g R05VIEVtYWNzIGF0ICIpLAorCSAgICBpbnRlcm5fY19zdHJpbmcgKCJzeXN0ZW0tbmFtZSIpKTsK ICAgVmljb25fdGl0bGVfZm9ybWF0CiAgICAgPSBWZnJhbWVfdGl0bGVfZm9ybWF0Ci0gICAgPSBw dXJlX2xpc3QgKGludGVybl9jX3N0cmluZyAoIm11bHRpcGxlLWZyYW1lcyIpLAotCQkgYnVpbGRf cHVyZV9jX3N0cmluZyAoIiViIiksCi0JCSBpY29uX3RpdGxlX25hbWVfZm9ybWF0KTsKKyAgICA9 IGxpc3QgKGludGVybl9jX3N0cmluZyAoIm11bHRpcGxlLWZyYW1lcyIpLAorCSAgICBidWlsZF9z dHJpbmcgKCIlYiIpLAorCSAgICBpY29uX3RpdGxlX25hbWVfZm9ybWF0KTsKIAogICBERUZWQVJf TElTUCAoIm1lc3NhZ2UtbG9nLW1heCIsIFZtZXNzYWdlX2xvZ19tYXgsCiAgICAgZG9jOiAvKiBN YXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBrZWVwIGluIHRoZSBtZXNzYWdlIGxvZyBidWZmZXIu CmRpZmYgLS1naXQgYS9zcmMveGZhY2VzLmMgYi9zcmMveGZhY2VzLmMKaW5kZXggYWI0NDQwZjQ2 YWQwZC4uNmNiMDhiMDQ3NWNiYSAxMDA2NDQKLS0tIGEvc3JjL3hmYWNlcy5jCisrKyBiL3NyYy94 ZmFjZXMuYwpAQCAtNzA0NCw3ICs3MDQ0LDcgQEAgc3ltc19vZl94ZmFjZXMgKHZvaWQpCiBUaGlz IHN0aXBwbGUgcGF0dGVybiBpcyB1c2VkIG9uIG1vbm9jaHJvbWUgZGlzcGxheXMKIGluc3RlYWQg b2Ygc2hhZGVzIG9mIGdyYXkgZm9yIGEgZmFjZSBiYWNrZ3JvdW5kIGNvbG9yLgogU2VlIGBzZXQt ZmFjZS1zdGlwcGxlJyBmb3IgcG9zc2libGUgdmFsdWVzIGZvciB0aGlzIHZhcmlhYmxlLiAgKi8p OwotICBWZmFjZV9kZWZhdWx0X3N0aXBwbGUgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiZ3JheTMi KTsKKyAgVmZhY2VfZGVmYXVsdF9zdGlwcGxlID0gYnVpbGRfc3RyaW5nICgiZ3JheTMiKTsKIAog ICBERUZWQVJfTElTUCAoInR0eS1kZWZpbmVkLWNvbG9yLWFsaXN0IiwgVnR0eV9kZWZpbmVkX2Nv bG9yX2FsaXN0LAogICAgZG9jOiAvKiBBbiBhbGlzdCBvZiBkZWZpbmVkIHRlcm1pbmFsIGNvbG9y cyBhbmQgdGhlaXIgUkdCIHZhbHVlcy4KZGlmZiAtLWdpdCBhL3NyYy94Zm5zLmMgYi9zcmMveGZu cy5jCmluZGV4IGQ5MDY0NDgxOWI2ZjUuLmU5ZWFkMzVjY2NjYjUgMTAwNjQ0Ci0tLSBhL3NyYy94 Zm5zLmMKKysrIGIvc3JjL3hmbnMuYwpAQCAtNzg3OCw5ICs3ODc4LDkgQEAgc3ltc19vZl94Zm5z ICh2b2lkKQogI2VuZGlmCiAKICAgRnB1dCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yX2NvbmRp dGlvbnMsCi0JcHVyZV9saXN0IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3IpKTsKKwlsaXN0IChR dW5kZWZpbmVkX2NvbG9yLCBRZXJyb3IpKTsKICAgRnB1dCAoUXVuZGVmaW5lZF9jb2xvciwgUWVy cm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIlVuZGVmaW5lZCBjb2xvciIpKTsK KwlidWlsZF9zdHJpbmcgKCJVbmRlZmluZWQgY29sb3IiKSk7CiAKICAgREVGVkFSX0xJU1AgKCJ4 LXBvaW50ZXItc2hhcGUiLCBWeF9wb2ludGVyX3NoYXBlLAogICAgIGRvYzogLyogVGhlIHNoYXBl IG9mIHRoZSBwb2ludGVyIHdoZW4gb3ZlciB0ZXh0LgpAQCAtODA5MSw3ICs4MDkxLDcgQEAgc3lt c19vZl94Zm5zICh2b2lkKQogICAgIGNoYXIgZ3RrX3ZlcnNpb25bc2l6ZW9mICIuLiIgKyAzICog SU5UX1NUUkxFTl9CT1VORCAoaW50KV07CiAgICAgaW50IGxlbiA9IHNwcmludGYgKGd0a192ZXJz aW9uLCAiJWQuJWQuJWQiLAogCQkgICAgICAgR1RLX01BSk9SX1ZFUlNJT04sIEdUS19NSU5PUl9W RVJTSU9OLCBHVEtfTUlDUk9fVkVSU0lPTik7Ci0gICAgVmd0a192ZXJzaW9uX3N0cmluZyA9IG1h a2VfcHVyZV9zdHJpbmcgKGd0a192ZXJzaW9uLCBsZW4sIGxlbiwgZmFsc2UpOworICAgIFZndGtf dmVyc2lvbl9zdHJpbmcgPSBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKGd0a192ZXJzaW9uLCBsZW4s IGxlbiwgZmFsc2UpOwogICB9CiAjZW5kaWYgLyogVVNFX0dUSyAqLwogCkBAIC04MTA1LDcgKzgx MDUsOCBAQCBzeW1zX29mX3hmbnMgKHZvaWQpCiAgICAgaW50IGxlbiA9IHNwcmludGYgKGNhaXJv X3ZlcnNpb24sICIlZC4lZC4lZCIsCiAJCSAgICAgICBDQUlST19WRVJTSU9OX01BSk9SLCBDQUlS T19WRVJTSU9OX01JTk9SLAogICAgICAgICAgICAgICAgICAgICAgICBDQUlST19WRVJTSU9OX01J Q1JPKTsKLSAgICBWY2Fpcm9fdmVyc2lvbl9zdHJpbmcgPSBtYWtlX3B1cmVfc3RyaW5nIChjYWly b192ZXJzaW9uLCBsZW4sIGxlbiwgZmFsc2UpOworICAgIFZjYWlyb192ZXJzaW9uX3N0cmluZyA9 IG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAoY2Fpcm9fdmVyc2lvbiwgbGVuLCBsZW4sCisJCQkJCQkg ICBmYWxzZSk7CiAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMveHRlcm0uYyBiL3NyYy94 dGVybS5jCmluZGV4IDc0NGI4MGM2OGEwMDIuLjQzN2MwOGI1MjZmNjAgMTAwNjQ0Ci0tLSBhL3Ny Yy94dGVybS5jCisrKyBiL3NyYy94dGVybS5jCkBAIC0xMzY0OSw3ICsxMzY0OSw3IEBAIHN5bXNf b2ZfeHRlcm0gKHZvaWQpCiAgIERFRlNZTSAoUWxhdGluXzEsICJsYXRpbi0xIik7CiAKICNpZmRl ZiBVU0VfR1RLCi0gIHhnX2RlZmF1bHRfaWNvbl9maWxlID0gYnVpbGRfcHVyZV9jX3N0cmluZyAo Imljb25zL2hpY29sb3Ivc2NhbGFibGUvYXBwcy9lbWFjcy5zdmciKTsKKyAgeGdfZGVmYXVsdF9p Y29uX2ZpbGUgPSBidWlsZF9zdHJpbmcgKCJpY29ucy9oaWNvbG9yL3NjYWxhYmxlL2FwcHMvZW1h Y3Muc3ZnIik7CiAgIHN0YXRpY3BybyAoJnhnX2RlZmF1bHRfaWNvbl9maWxlKTsKIAogICBERUZT WU0gKFF4X2d0a19tYXBfc3RvY2ssICJ4LWd0ay1tYXAtc3RvY2siKTsKQEAgLTEzNzcwLDcgKzEz NzcwLDcgQEAgc3ltc19vZl94dGVybSAodm9pZCkKICAgVnhfa2V5c3ltX3RhYmxlID0gbWFrZV9o YXNoX3RhYmxlIChoYXNodGVzdF9lcWwsIDkwMCwKIAkJCQkgICAgIERFRkFVTFRfUkVIQVNIX1NJ WkUsCiAJCQkJICAgICBERUZBVUxUX1JFSEFTSF9USFJFU0hPTEQsCi0JCQkJICAgICBRbmlsLCBm YWxzZSk7CisJCQkJICAgICBRbmlsKTsKIAogICBERUZWQVJfQk9PTCAoIngtZnJhbWUtbm9ybWFs aXplLWJlZm9yZS1tYXhpbWl6ZSIsCiAJICAgICAgIHhfZnJhbWVfbm9ybWFsaXplX2JlZm9yZV9t YXhpbWl6ZSwKLS0gCjIuMzAuMQoK --00000000000004c45c05bcc14a64--