From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5561 invoked by alias); 9 Jul 2019 16:23:57 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 5543 invoked by uid 89); 9 Jul 2019 16:23:57 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.1 required=5.0 tests=BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,LIKELY_SPAM_BODY,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=nb, NB X-HELO: mail-wr1-f67.google.com Received: from mail-wr1-f67.google.com (HELO mail-wr1-f67.google.com) (209.85.221.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 09 Jul 2019 16:23:49 +0000 Received: by mail-wr1-f67.google.com with SMTP id n9so21753021wru.0 for ; Tue, 09 Jul 2019 09:23:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version; bh=OfqKoAS427yM21pLzJON+zwTaMBHab6ELD+O9sWLuBE=; b=s7NcYv05NSWY9LJvaO5QaS0PFrZDhWShB/wjcp6yTbf7e/lzY45zJOJ1KANcvSsmyW O1b0Ujzy2djSSthjepZqG0sbZSCzp3ii5zmnm0qA2c9sXjZ8XVGSfczm/3S63yKNrmMc fBCx1Pw5a6l3hCZpJCMOQYIV41c95pAOw4LRaAE1zov+8S7DMa7Wpj13+AivMKl7ZpQI ZjlOkhXMpei5UacZbElfaJRrgnSs/j4vA1wlQCAQZt7mKxYGHG2nZciz2lefwPlihhBH xjaP47o6YqKXFVf68IwxJBUh3JfBYqr4rvDjIXd1DCphsGrxQ0k/v38CwdMb3FFgARcc h7ew== Return-Path: Received: from engy ([198.182.37.203]) by smtp.gmail.com with ESMTPSA id f17sm3470153wmf.27.2019.07.09.09.23.44 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 09 Jul 2019 09:23:46 -0700 (PDT) Message-ID: <608c04149652bac5c058400bf2158daff32f7644.camel@gmail.com> Subject: Re: [PATCH 1/2] [ARC] Fix and refurbish the interrupts. From: claziss@gmail.com To: Jeff Law Cc: gcc-patches@gcc.gnu.org, Francois Bedard , Andrew Burgess Date: Tue, 09 Jul 2019 16:37:00 -0000 In-Reply-To: <31973904-ea6e-3fbc-5c40-51881fb4c82a@redhat.com> References: <20190628133926.29980-1-claziss@gmail.com> <93f23b40-7afa-c9eb-85b3-a0bff9f63409@redhat.com> <31973904-ea6e-3fbc-5c40-51881fb4c82a@redhat.com> Content-Type: multipart/mixed; boundary="=-NOH6CjlbqvnE1OBN8GsS" User-Agent: Evolution 3.32.3 (3.32.3-1.fc30) MIME-Version: 1.0 X-IsSubscribed: yes X-SW-Source: 2019-07/txt/msg00713.txt.bz2 --=-NOH6CjlbqvnE1OBN8GsS Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Content-length: 364 Hi Jeff, Please find attached the updated patch. What is new: - mailing list feedback is taken into account. - some comments are updated. - a new test is added. - the ARC AUX registers used by ZOL (hardware loop) and FPX (a custom floating point implementation) are saved before fp-register. - the millicode optimization is not used by ISR. Thank you, Claudiu --=-NOH6CjlbqvnE1OBN8GsS Content-Disposition: attachment; filename="0001-ARC-Fix-and-refurbish-the-interrupts.patch" Content-Type: text/x-patch; name="0001-ARC-Fix-and-refurbish-the-interrupts.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 Content-length: 84063 RnJvbSBkMjIzNjg2ODFiN2FhYjRiZWY0YjVjMzJhOWE0NzI4MDhmMmMxNmNk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGl1IFppc3N1 bGVzY3UgPGNsYXppc3NAZ21haWwuY29tPgpEYXRlOiBGcmksIDE3IE1heSAy MDE5IDE0OjQ4OjE3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW0FSQ10gRml4 IGFuZCByZWZ1cmJpc2ggdGhlIGludGVycnVwdHMuCgpXaGVuIGVudGVyaW5n IGFuIGludGVycnVwdCwgbm90IG9ubHkgdGhlIGNhbGwgc2F2ZSByZWdpc3Rl cnMgbmVlZHMgdG8KYmUgcGxhY2Ugb24gc3RhY2sgYnV0IGFsc28gdGhlIGNh bGwgY2xvYmJlcnMgb25lLiBNb3JlIG92ZXIsIHRoZQpBUkM3MDAgcmV0dXJu IGZyb20gaW50ZXJydXB0IGluc3RydWN0aW9uIG5lZWRzIHRvIGJlIHJ0aWUs IHRoZSBzYW1lCmxpa2UgQVJDdjIgQ1BVcy4gV2hpbGUgdGhlIEFSQzZ4eCBm YW1pbHkgdXNlcyBqLmYgW2lsaW5rWF0KaW5zdHJ1Y3Rpb24uIEFkZGl0aW9u YWxseSwgd2UgbmVlZCB0byBzYXZlIHRoZSBzdGF0ZSBvZiB0aGUgWk9MCm1h Y2hpbmVyeSwgbmFtZWx5IHRoZSBscF9jb3VudCwgbHBfZW5kIGFuZCBscF9z dGFydCByZWdpc3RlcnMuIEZvcgphcmNoaXRlY3R1cmVzIHdoaWNoIGFyZSB1 c2luZyBleHRlbnNpb24gcmVnaXN0ZXJzIChpLmUuLCBIUzQ4KSB3ZSBuZWVk CnRvIHNhdmUvcmVzdG9yZSB0aGVtIGFzIHdlbGwuCgpnY2MvCnh4eHgteHgt eHggIENsYXVkaXUgWmlzc3VsZXNjdSAgPGNsYXppc3NAc3lub3BzeXMuY29t PgoKCSogY29uZmlnL2FyYy9hcmMtcHJvdG9zLmggKGFyY19vdXRwdXRfZnVu Y3Rpb25fZXBpbG9ndWUpOiBEZWxldGUKCWRlY2xhcmF0aW9uLgoJKGFyY19j b21wdXRlX2ZyYW1lX3NpemUpOiBNaWxsaWNvZGUgaXMgZGlzYWJsZWQgd2hl biBjb21waWxpbmcKCUlTUi4KCShhcmNfcmV0dXJuX2FkZHJlc3NfcmVnaXN0 ZXIpOiBMaWtld2lzZS4KCShhcmNfY29tcHV0ZV9mdW5jdGlvbl90eXBlKTog TGlrZXdpc2UuCgkoYXJjX2NvbXB1dGVfZnJhbWVfc2l6ZSk6IExpa2V3aXNl LgoJKHNlY29uZGFyeV9yZWxvYWRfaW5mbyk6IExpa2V3aXNlLgoJKGFyY19n ZXRfdW5hbGlnbik6IExpa2V3aXNlLgoJKGFyY19jYW5fdXNlX3JldHVybl9p bnNuKTogRGVjbGFyZS4KCSogY29uZmlnL2FyYy9hcmMuYyAoQVVYX0xQX1NU QVJUKTogRGVmaW5lCgkoQVVYX0xQX0VORCk6IExpa2V3aXNlLgoJKGFyY19m cmFtZV9pbmZvKTogVXBkYXRlIGdtYXNrIG1lbWJlciB0byA2NC1iaXQgZGF0 dW0uCgkoR01BU0tfTEVOKTogVXBkYXRlLgoJKGFyY19jb21wdXRlX2Z1bmN0 aW9uX3R5cGUpOiBNYWtlIGl0IHN0YXRpYywgbW92ZSBpdCBmb3J3YXJkLgoJ KGFyY19tdXN0X3NhdmVfcmVnaXN0ZXIpOiBVcGRhdGUsIGNvbnNpZGVyIHRo ZSBleHRyYSByZWdzLgoJKGFyY19jb21wdXRlX21pbGxpY29kZV9zYXZlX3Jl c3RvcmVfcmVncyk6IFVwZGF0ZSB0byB1c2UgdGhlIDY0CgliaXQgZ21hc2su CgkoYXJjX2NvbXB1dGVfZnJhbWVfc2l6ZSk6IExpa2V3aXNlLgoJKGFyY19l bnRlcl9sZWF2ZV9wKTogTGlrZXdpc2UuCgkoYXJjX3NhdmVfY2FsbGVlX3Nh dmVzKTogTGlrZXdpc2UuCgkoYXJjX3Jlc3RvcmVfY2FsbGVlX3NhdmVzKTog TGlrZXdpc2UuCgkoYXJjX3NhdmVfY2FsbGVlX2VudGVyKTogTGlrZXdpc2Uu CgkoYXJjX3Jlc3RvcmVfY2FsbGVlX2xlYXZlKTogTGlrZXdpc2UuCgkoYXJj X3NhdmVfY2FsbGVlX21pbGxpKTogTGlrZXdpc2UuCgkoYXJjX3Jlc3RvcmVf Y2FsbGVlX21pbGxpKTogTGlrZXdpc2UuCgkoYXJjX2V4cGFuZF9wcm9sb2d1 ZSk6IEFkZCBuZXcgaW50ZXJydXB0IGhhbmRsaW5nLgoJKGFyY19yZXR1cm5f YWRkcmVzc19yZWdpc3Rlcik6IE1ha2UgaXQgc3RhdGljLCBtb3ZlIGl0IGZv cndhcmQuCgkoYXJjX2V4cGFuZF9lcGlsb2d1ZSk6IEFkZCBuZXcgaW50ZXJy dXB0IGhhbmRsaW5nLgoJKGFyY19nZXRfdW5hbGlnbik6IERlbGV0ZS4KCShh cmNfZXBpbG9ndWVfdXNlcyk6IE1ha2Ugc3VyZSB3ZSBkbyBub3QgcmVtb3Zl IHRoZSBleHRyYQoJc2F2ZWQvcmVzdG9yZWQgcmVnaXN0ZXJzIHdoZW4gaW50 ZXJydXB0LgoJKGFyY19jYW5fdXNlX3JldHVybl9pbnNuKTogTmV3IGZ1bmN0 aW9uLgoJKHB1c2hfcmVnKTogTGlrZXdpc2UuCgkocG9wX3JlZyk6IExpa2V3 aXNlLgoJKGFyY19zYXZlX2NhbGxlZV9zYXZlcyk6IEFkZCBaT0wgYW5kIEZQ WCBhdXggcmVnaXN0ZXJzIHNhdmluZwoJcHJvY2VkdXJlcy4KCShhcmNfcmVz dG9yZV9jYWxsZWVfc2F2ZXMpOiBMaWtld2lzZSwgYnV0IHJlc3RvcmluZy4K CSogY29uZmlnL2FyYy9hcmMubWQgKFZVTlNQRUNfQVJDX0FSQzYwMF9SVElF KTogRGVmaW5lLgoJKFIzM19SRUcpOiBMaWtld2lzZS4KCShSMzRfUkVHKTog TGlrZXdpc2UuCgkoUjM1X1JFRyk6IExpa2V3aXNlLgoJKFIzNl9SRUcpOiBM aWtld2lzZS4KCShSMzdfUkVHKTogTGlrZXdpc2UuCgkoUjM4X1JFRyk6IExp a2V3aXNlLgoJKFIzOV9SRUcpOiBMaWtld2lzZS4KCShSNDVfUkVHKTogTGlr ZXdpc2UuCgkoUjQ2X1JFRyk6IExpa2V3aXNlLgoJKFI0N19SRUcpOiBMaWtl d2lzZS4KCShSNDhfUkVHKTogTGlrZXdpc2UuCgkoUjQ5X1JFRyk6IExpa2V3 aXNlLgoJKFI1MF9SRUcpOiBMaWtld2lzZS4KCShSNTFfUkVHKTogTGlrZXdp c2UuCgkoUjUyX1JFRyk6IExpa2V3aXNlLgoJKFI1M19SRUcpOiBMaWtld2lz ZS4KCShSNTRfUkVHKTogTGlrZXdpc2UuCgkoUjU1X1JFRyk6IExpa2V3aXNl LgoJKFI1Nl9SRUcpOiBMaWtld2lzZS4KCShSNThfUkVHKTogTGlrZXdpc2Uu CgkodHlwZSk6IEFkZCBydGllIGF0dHJpYnV0ZS4KCShpbl9jYWxsX2RlbGF5 X3Nsb3QpOiBVc2UgUkVUVVJOX0FERFJfUkVHTlVNLgoJKG1vdnNpX2luc24p OiBBY2NlcHQgbW92ZXMgdG8gbHBfY291bnQuCgkocnRpZSk6IFVwZGF0ZSBw YXR0ZXJuLgoJKHNpbXBsZV9yZXR1cm4pOiBTaW1wbGlmeSBpdCwgZG9uJ3Qg dXNlIHRoaXMgcGF0dGVybiBhcyBhIHJldHVybgoJZnJvbSBhbiBpbnRlcnJ1 cHQuCgkoYXJjNjAwX3J0aWUpOiBOZXcgcGF0dGVybi4KCShwX3JldHVybl9p KTogQ2xlYW4gdXAuCgkocmV0dXJuKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9h cmMvYnVpbHRpbnMuZGVmIChydGllKTogT25seSBhdmFpbGFibGUgZm9yIG5v biBBUkM2eHgKCWZhbWlseSBDUFVzLgoJKiBjb25maWcvYXJjL3ByZWRpY2F0 ZXMubWQgKG1vdmVfc3JjX29wZXJhbmQpOiBDb25zaWRlciBscF9jb3VudAoJ YXMgYSByZWdpc3Rlci4KCmdjYy90ZXN0c3VpdGUKeHh4eC14eC14eCAgQ2xh dWRpdSBaaXNzdWxlc2N1ICA8Y2xhemlzc0BzeW5vcHN5cy5jb20+CgoJKiBn Y2MudGFyZ2V0L2FyYy9hcmMuZXhwIChjaGVja19lZmZlY3RpdmVfdGFyZ2V0 X2FjY3JlZ3MpOiBOZXcKCXByZWRpY2F0ZS4KCSogZ2NjLnRhcmdldC9hcmMv YnVpbHRpbl9zcGVjaWFsLmM6IFVwZGF0ZSB0ZXN0LwoJKiBnY2MudGFyZ2V0 L2FyYy9pbnRlcnJ1cHQtMS5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9h cmMvaW50ZXJydXB0LTEwLmM6IE5ldyB0ZXN0LgoJKiBnY2MudGFyZ2V0L2Fy Yy9pbnRlcnJ1cHQtMTEuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvYXJj L2ludGVycnVwdC0xMi5jOiBMaWtld2lzZS4KLS0tCiBnY2MvY29uZmlnL2Fy Yy9hcmMtcHJvdG9zLmggICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIGdj Yy9jb25maWcvYXJjL2FyYy5jICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDc0MSArKysrKysrKysrKy0tLS0tLS0KIGdjYy9jb25maWcvYXJjL2FyYy5t ZCAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzOSArKy0tCiBnY2MvY29u ZmlnL2FyYy9idWlsdGlucy5kZWYgICAgICAgICAgICAgICAgICAgfCAgIDIg Ky0KIGdjYy9jb25maWcvYXJjL3ByZWRpY2F0ZXMubWQgICAgICAgICAgICAg ICAgICB8ICAgMiArCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJjL2Fy Yy5leHAgICAgICAgICAgfCAgMTggKwogLi4uL2djYy50YXJnZXQvYXJjL2J1 aWx0aW5fc3BlY2lhbC5jICAgICAgICAgIHwgICAyICsKIGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hcmMvaW50ZXJydXB0LTEuYyAgICB8ICAgNCArLQog Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FyYy9pbnRlcnJ1cHQtMTAuYyAg IHwgIDM2ICsKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcmMvaW50ZXJy dXB0LTExLmMgICB8ICAxNiArCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YXJjL2ludGVycnVwdC0xMi5jICAgfCAgMTYgKwogMTEgZmlsZXMgY2hhbmdl ZCwgNjI4IGluc2VydGlvbnMoKyksIDM1NSBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJjL2lu dGVycnVwdC0xMC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FyYy9pbnRlcnJ1cHQtMTEuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcmMvaW50ZXJydXB0 LTEyLmMKCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FyYy9hcmMtcHJvdG9z LmggYi9nY2MvY29uZmlnL2FyYy9hcmMtcHJvdG9zLmgKaW5kZXggZjUwMWJj MzBlZTcuLjBjOWY0MjI4MjdkIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2Fy Yy9hcmMtcHJvdG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9hcmMvYXJjLXByb3Rv cy5oCkBAIC0yNSw3ICsyNSw2IEBAIGV4dGVybiBtYWNoaW5lX21vZGUgYXJj X3NlbGVjdF9jY19tb2RlIChlbnVtIHJ0eF9jb2RlLCBydHgsIHJ0eCk7CiBl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jb21wYXJlX3JlZyAocnR4LCBt YWNoaW5lX21vZGUpOwogCiAvKiBEZWNsYXJhdGlvbnMgZm9yIHZhcmlvdXMg Zm5zIHVzZWQgaW4gdGhlIC5tZCBmaWxlLiAgKi8KLWV4dGVybiB2b2lkIGFy Y19vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUgKEZJTEUgKiwgSE9TVF9XSURF X0lOVCwgaW50KTsKIGV4dGVybiBjb25zdCBjaGFyICpvdXRwdXRfc2hpZnQg KHJ0eCAqKTsKIGV4dGVybiBib29sIGNvbXBhY3Rfc2RhX21lbW9yeV9vcGVy YW5kIChydHgsIG1hY2hpbmVfbW9kZSwgYm9vbCk7CiBleHRlcm4gYm9vbCBh cmNfZG91YmxlX2xpbW1fcCAocnR4KTsKQEAgLTQyLDggKzQxLDYgQEAgZXh0 ZXJuIHZvaWQgYXJjX2V4cGFuZF9hdG9taWNfb3AgKGVudW0gcnR4X2NvZGUs IHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKIGV4dGVybiB2b2lkIGFyY19z cGxpdF9jb21wYXJlX2FuZF9zd2FwIChydHggKik7CiBleHRlcm4gdm9pZCBh cmNfZXhwYW5kX2NvbXBhcmVfYW5kX3N3YXAgKHJ0eCAqKTsKIGV4dGVybiBi b29sIGNvbXBhY3RfbWVtb3J5X29wZXJhbmRfcCAocnR4LCBtYWNoaW5lX21v ZGUsIGJvb2wsIGJvb2wpOwotZXh0ZXJuIGludCBhcmNfcmV0dXJuX2FkZHJl c3NfcmVnaXN0ZXIgKHVuc2lnbmVkIGludCk7Ci1leHRlcm4gdW5zaWduZWQg aW50IGFyY19jb21wdXRlX2Z1bmN0aW9uX3R5cGUgKHN0cnVjdCBmdW5jdGlv biAqKTsKIGV4dGVybiBib29sIGFyY19pc191bmNhY2hlZF9tZW1fcCAocnR4 KTsKIGV4dGVybiBib29sIGdlbl9vcGVyYW5kc19sZGRfc3RkIChydHggKm9w ZXJhbmRzLCBib29sIGxvYWQsIGJvb2wgY29tbXV0ZSk7CiBleHRlcm4gYm9v bCBhcmNfY2hlY2tfbXVsdGkgKHJ0eCwgYm9vbCk7CkBAIC01Miw5ICs0OSw5 IEBAIGV4dGVybiBib29sIGFyY19jaGVja19pb3JfY29uc3QgKEhPU1RfV0lE RV9JTlQgKTsKIGV4dGVybiB2b2lkIGFyY19zcGxpdF9pb3IgKHJ0eCAqKTsK IGV4dGVybiBib29sIGFyY19jaGVja19tb3ZfY29uc3QgKEhPU1RfV0lERV9J TlQgKTsKIGV4dGVybiBib29sIGFyY19zcGxpdF9tb3ZfY29uc3QgKHJ0eCAq KTsKK2V4dGVybiBib29sIGFyY19jYW5fdXNlX3JldHVybl9pbnNuICh2b2lk KTsKICNlbmRpZiAvKiBSVFhfQ09ERSAqLwogCi1leHRlcm4gdW5zaWduZWQg aW50IGFyY19jb21wdXRlX2ZyYW1lX3NpemUgKGludCk7CiBleHRlcm4gYm9v bCBhcmNfY2Nmc21fYnJhbmNoX2RlbGV0ZWRfcCAodm9pZCk7CiBleHRlcm4g dm9pZCBhcmNfY2Nmc21fcmVjb3JkX2JyYW5jaF9kZWxldGVkICh2b2lkKTsK IApAQCAtNzEsNyArNjgsNiBAQCBleHRlcm4gYm9vbCBhcmNfaXNfbG9uZ2Nh bGxfcCAocnR4KTsKIGV4dGVybiBib29sIGFyY19pc19zaG9ydGNhbGxfcCAo cnR4KTsKIGV4dGVybiBib29sIHZhbGlkX2JyY2Nfd2l0aF9kZWxheV9wIChy dHggKik7CiBleHRlcm4gYm9vbCBhcmNfY2Nmc21fY29uZF9leGVjX3AgKHZv aWQpOwotc3RydWN0IHNlY29uZGFyeV9yZWxvYWRfaW5mbzsKIGV4dGVybiBy dHggZGlzaV9oaWdocGFydCAocnR4KTsKIGV4dGVybiBpbnQgYXJjX2FkanVz dF9pbnNuX2xlbmd0aCAocnR4X2luc24gKiwgaW50LCBib29sKTsKIGV4dGVy biBpbnQgYXJjX2NvcmVyZWdfaGF6YXJkIChydHgsIHJ0eCk7CkBAIC04OSw3 ICs4NSw2IEBAIGV4dGVybiB2b2lkIGFyY19leHBhbmRfcHJvbG9ndWUgKHZv aWQpOwogZXh0ZXJuIHZvaWQgYXJjX2V4cGFuZF9lcGlsb2d1ZSAoaW50KTsK IGV4dGVybiB2b2lkIGFyY19pbml0X2V4cGFuZGVycyAodm9pZCk7CiBleHRl cm4gaW50IGFyY19jaGVja19taWxsaWNvZGUgKHJ0eCBvcCwgaW50IG9mZnNl dCwgaW50IGxvYWRfcCk7Ci1leHRlcm4gaW50IGFyY19nZXRfdW5hbGlnbiAo dm9pZCk7CiBleHRlcm4gdm9pZCBhcmNfY2xlYXJfdW5hbGlnbiAodm9pZCk7 CiBleHRlcm4gdm9pZCBhcmNfdG9nZ2xlX3VuYWxpZ24gKHZvaWQpOwogZXh0 ZXJuIHZvaWQgc3BsaXRfYWRkc2kgKHJ0eCAqKTsKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvYXJjL2FyYy5jIGIvZ2NjL2NvbmZpZy9hcmMvYXJjLmMKaW5k ZXggYzFmMzJlZDFmMGMuLmMzNTJhZWEyZjYwIDEwMDY0NAotLS0gYS9nY2Mv Y29uZmlnL2FyYy9hcmMuYworKysgYi9nY2MvY29uZmlnL2FyYy9hcmMuYwpA QCAtMjA2LDYgKzIwNiwxMyBAQCBzdGF0aWMgaW50IHJnZl9iYW5rZWRfcmVn aXN0ZXJfY291bnQ7CiAgICB0aGlzIHRvIGJlIG5vIGxlc3MgdGhhbiB0aGUg MS9wICAqLwogI2RlZmluZSBNQVhfSU5TTlNfU0tJUFBFRCAzCiAKKy8qIFpP TCBjb250cm9sIHJlZ2lzdGVycy4gICovCisjZGVmaW5lIEFVWF9MUF9TVEFS VCAweDAyCisjZGVmaW5lIEFVWF9MUF9FTkQgMHgwMworCisvKiBGUFggQVVY IHJlZ2lzdGVycy4gICovCisjZGVmaW5lIEFVWF9EUEZQX1NUQVJUIDB4MzAx CisKIC8qIEEgbm9wIGlzIG5lZWRlZCBiZXR3ZWVuIGEgNCBieXRlIGluc24g dGhhdCBzZXRzIHRoZSBjb25kaXRpb24gY29kZXMgYW5kCiAgICBhIGJyYW5j aCB0aGF0IHVzZXMgdGhlbSAodGhlIHNhbWUgaXNuJ3QgdHJ1ZSBmb3IgYW4g OCBieXRlIGluc24gdGhhdCBzZXRzCiAgICB0aGUgY29uZGl0aW9uIGNvZGVz KS4gIFNldCBieSBhcmNfY2Nmc21fYWR2YW5jZS4gIFVzZWQgYnkKQEAgLTI5 OCw2ICszMDUsMTI5IEBAIHN0YXRpYyBib29sIGFyY191c2VfYnlfcGllY2Vz X2luZnJhc3RydWN0dXJlX3AgKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQsCiAv KiBHbG9iYWxseSB2aXNpYmxlIGluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnRs eSBzZWxlY3RlZCBjcHUuICAqLwogY29uc3QgYXJjX2NwdV90ICphcmNfc2Vs ZWN0ZWRfY3B1OwogCisvKiBUcmFkaXRpb25hbGx5LCB3ZSBwdXNoIHNhdmVk IHJlZ2lzdGVycyBmaXJzdCBpbiB0aGUgcHJvbG9ndWUsCisgICB0aGVuIHdl IGFsbG9jYXRlIHRoZSByZXN0IG9mIHRoZSBmcmFtZSAtIGFuZCByZXZlcnNl IGluIHRoZSBlcGlsb2d1ZS4KKyAgIFRoaXMgaGFzIHN0aWxsIGl0cyBtZXJp dHMgZm9yIGVhc2Ugb2YgZGVidWdnaW5nLCBvciBzYXZpbmcgY29kZSBzaXpl CisgICBvciBldmVuIGV4ZWN1dGlvbiB0aW1lIGlmIHRoZSBzdGFjayBmcmFt ZSBpcyBzbyBsYXJnZSB0aGF0IHNvbWUgYWNjZXNzZXMKKyAgIGNhbid0IGJl IGVuY29kZWQgYW55bW9yZSB3aXRoIG9mZnNldHMgaW4gdGhlIGluc3RydWN0 aW9uIGNvZGUgd2hlbiB1c2luZworICAgYSBkaWZmZXJlbnQgc2NoZW1lLgor ICAgQWxzbywgaXQgd291bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGlm IHdlIGdvdCBpbnN0cnVjdGlvbnMgdG8gaGVscAorICAgd2l0aCByZWdpc3Rl ciBzYXZlL3Jlc3RvcmUuCisKKyAgIEhvd2V2ZXIsIG9mdGVuIHN0YWNrIGZy YW1lcyBhcmUgc21hbGwsIGFuZCB0aGUgcHVzaGluZyAvIHBvcHBpbmcgaGFz CisgICBzb21lIGNvc3RzOgorICAgLSB0aGUgc3RhY2sgbW9kaWZpY2F0aW9u IHByZXZlbnRzIGEgbG90IG9mIHNjaGVkdWxpbmcuCisgICAtIGZyYW1lIGFs bG9jYXRpb24gLyBkZWFsbG9jYXRpb24gbWF5IG5lZWQgZXh0cmEgaW5zdHJ1 Y3Rpb25zLgorICAgLSB3ZSBuZWVkIHRvIHBsYWNlIGEgbWVtb3J5IGJhcnJp ZXIgYWZ0ZXIgZnJhbWUgYWxsb2NhdGlvbiB0byBhdm9pZAorICAgICB0aGUg ZGVsYXkgc2xvdCBzY2hlZHVsZXIgdG8gcmVzY2hlZHVsZSBhIGZyYW1lIHJl bGF0ZWQgaW5mbyBhbmQKKyAgICAgbWVzc2luZyB1cCB3aXRoIGR3YXJmIHVu d2luZGluZy4gIFRoZSBiYXJyaWVyIGJlZm9yZSBkZWFsbG9jYXRpb24KKyAg ICAgaXMgZm9yIGZsdXNoaW5nIGFsbCBwZW5kaW5nIHNwIG9wZXJhdGlvbnMu CisKKyAgIFRodXMsIGZvciBzbWFsbCBmcmFtZXMsIHdlJ2QgbGlrZSB0byB1 c2UgYSBkaWZmZXJlbnQgc2NoZW1lOgorICAgLSBUaGUgZnJhbWUgaXMgYWxs b2NhdGVkIGluIGZ1bGwgd2l0aCB0aGUgZmlyc3QgcHJvbG9ndWUgaW5zdHJ1 Y3Rpb24sCisgICAgIGFuZCBkZWFsbG9jYXRlZCBpbiBmdWxsIHdpdGggdGhl IGxhc3QgZXBpbG9ndWUgaW5zdHJ1Y3Rpb24uCisgICAgIFRodXMsIHRoZSBp bnN0cnVjdGlvbnMgaW4tYmV0d2VlbiBjYW4gYmUgZnJlZWx5IHNjaGVkdWxl ZC4KKyAgIC0gSWYgdGhlIGZ1bmN0aW9uIGhhcyBubyBvdXRnb2luZyBhcmd1 bWVudHMgb24gdGhlIHN0YWNrLCB3ZSBjYW4gYWxsb2NhdGUKKyAgICAgb25l IHJlZ2lzdGVyIHNhdmUgc2xvdCBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjay4g IFRoaXMgcmVnaXN0ZXIgY2FuIHRoZW4KKyAgICAgYmUgc2F2ZWQgc2ltdWx0 YW5lb3VzbHkgd2l0aCBmcmFtZSBhbGxvY2F0aW9uLCBhbmQgcmVzdG9yZWQg d2l0aAorICAgICBmcmFtZSBkZWFsbG9jYXRpb24uCisgICAgIFRoaXMgcmVn aXN0ZXIgY2FuIGJlIHBpY2tlZCBkZXBlbmRpbmcgb24gc2NoZWR1bGluZyBj b25zaWRlcmF0aW9ucywKKyAgICAgYWx0aG91Z2ggc2FtZSB0aG91Z2ggc2hv dWxkIGdvIGludG8gaGF2aW5nIHNvbWUgc2V0IG9mIHJlZ2lzdGVycworICAg ICB0byBiZSBwb3RlbnRpYWxseSBsaW5nZXJpbmcgYWZ0ZXIgYSBjYWxsLCBh bmQgb3RoZXJzIHRvIGJlIGF2YWlsYWJsZQorICAgICBpbW1lZGlhdGVseSAt IGkuZS4gaW4gdGhlIGFic2VuY2Ugb2YgaW50ZXJwcm9jZWR1YWwgb3B0aW1p emF0aW9uLCB3ZQorICAgICBjYW4gdXNlIGFuIEFCSS1saWtlIGNvbnZlbnRp b24gZm9yIHJlZ2lzdGVyIGFsbG9jYXRpb24gdG8gcmVkdWNlCisgICAgIHN0 YWxscyBhZnRlciBmdW5jdGlvbiByZXR1cm4uICAqLworCisvKiBBUkNvbXBh Y3Qgc3RhY2sgZnJhbWVzIGxvb2sgbGlrZToKKworICAgICAgICAgICBCZWZv cmUgY2FsbCAgICAgICAgICAgICAgICAgICAgIEFmdGVyIGNhbGwKKyAgaGln aCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCisgIG1lbSAgIHwgIHJlZyBwYXJtIHNhdmUgYXJl YSAgIHwgICAgICAgfCByZWcgcGFybSBzYXZlIGFyZWEgICAgfAorICAgICAg ICB8ICBvbmx5IGNyZWF0ZWQgZm9yICAgICB8ICAgICAgIHwgb25seSBjcmVh dGVkIGZvciAgICAgIHwKKyAgICAgICAgfCAgdmFyaWFibGUgYXJnIGZucyAg ICAgfCAgICAgICB8IHZhcmlhYmxlIGFyZyBmbnMgICAgICB8CisgICAgQVAg ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKworICAgICAgICB8ICByZXR1cm4gYWRkciByZWdpc3Rl ciB8ICAgICAgIHwgcmV0dXJuIGFkZHIgcmVnaXN0ZXIgIHwKKyAgICAgICAg fCAgKGlmIHJlcXVpcmVkKSAgICAgICAgfCAgICAgICB8IChpZiByZXF1aXJl ZCkgICAgICAgICB8CisgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgIHwKKyAgICAgICAgfCAgcmVnIHNhdmUgYXJlYSAgICAgICAg fCAgICAgICB8IHJlZyBzYXZlIGFyZWEgICAgICAgICB8CisgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgfAorICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgfCAg ZnJhbWUgcG9pbnRlciAgICAgICAgfCAgICAgICB8IGZyYW1lIHBvaW50ZXIg ICAgICAgICB8CisgICAgICAgIHwgIChpZiByZXF1aXJlZCkgICAgICAgIHwg ICAgICAgfCAoaWYgcmVxdWlyZWQpICAgICAgICAgfAorICAgIEZQICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsKKyAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgIGxv Y2FsL3RlbXAgdmFyaWFibGVzIHwgICAgICAgfCBsb2NhbC90ZW1wIHZhcmlh YmxlcyAgfAorICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rCisgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICB8ICBhcmd1 bWVudHMgb24gc3RhY2sgICB8ICAgICAgIHwgYXJndW1lbnRzIG9uIHN0YWNr ICAgIHwKKyAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgU1AgICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgcmVnIHBhcm0gc2F2ZSBhcmVhICAgIHwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IG9ubHkgY3JlYXRlZCBmb3IgICAg ICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCB2YXJpYWJsZSBhcmcgZm5zICAgICAgfAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQVAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHJldHVybiBhZGRyIHJlZ2lzdGVyICB8CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAoaWYgcmVxdWlyZWQpICAgICAgICAg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBy ZWcgc2F2ZSBhcmVhICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBmcmFtZSBwb2ludGVyICAgICAgICAgfAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKGlm IHJlcXVpcmVkKSAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZQICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgbG9jYWwvdGVtcCB2YXJpYWJsZXMgIHwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGFyZ3VtZW50cyBvbiBzdGFjayAgICB8CisgIGxv dyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgfAorICBtZW0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU1AgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworTm90 ZXM6CisxKSBUaGUgInJlZyBwYXJtIHNhdmUgYXJlYSIgZG9lcyBub3QgZXhp c3QgZm9yIG5vbiB2YXJpYWJsZSBhcmd1bWVudCBmbnMuCisgICBUaGUgInJl ZyBwYXJtIHNhdmUgYXJlYSIgY2FuIGJlIGVsaW1pbmF0ZWQgY29tcGxldGVs eSBpZiB3ZSBjcmVhdGVkIG91cgorICAgb3duIHZhLWFyYy5oLCBidXQgdGhh dCBoYXMgdHJhZGVvZmZzIGFzIHdlbGwgKHNvIGl0J3Mgbm90IGRvbmUpLiAg Ki8KKworLyogU3RydWN0dXJlIHRvIGJlIGZpbGxlZCBpbiBieSBhcmNfY29t cHV0ZV9mcmFtZV9zaXplIHdpdGggcmVnaXN0ZXIKKyAgIHNhdmUgbWFza3Ms IGFuZCBvZmZzZXRzIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbi4gICovCitz dHJ1Y3QgR1RZICgoKSkgYXJjX2ZyYW1lX2luZm8KK3sKKyAgdW5zaWduZWQg aW50IHRvdGFsX3NpemU7CS8qICMgYnl0ZXMgdGhhdCB0aGUgZW50aXJlIGZy YW1lIHRha2VzIHVwLiAgKi8KKyAgdW5zaWduZWQgaW50IGV4dHJhX3NpemU7 CS8qICMgYnl0ZXMgb2YgZXh0cmEgc3R1ZmYuICAqLworICB1bnNpZ25lZCBp bnQgcHJldGVuZF9zaXplOwkvKiAjIGJ5dGVzIHdlIHB1c2ggYW5kIHByZXRl bmQgY2FsbGVyIGRpZC4gICovCisgIHVuc2lnbmVkIGludCBhcmdzX3NpemU7 CS8qICMgYnl0ZXMgdGhhdCBvdXRnb2luZyBhcmd1bWVudHMgdGFrZSB1cC4g ICovCisgIHVuc2lnbmVkIGludCByZWdfc2l6ZTsJLyogIyBieXRlcyBuZWVk ZWQgdG8gc3RvcmUgcmVncy4gICovCisgIHVuc2lnbmVkIGludCB2YXJfc2l6 ZTsJLyogIyBieXRlcyB0aGF0IHZhcmlhYmxlcyB0YWtlIHVwLiAgKi8KKyAg dWludDY0X3QgZ21hc2s7CQkvKiBNYXNrIG9mIHNhdmVkIGdwIHJlZ2lzdGVy cy4gICovCisgIGJvb2wgaW5pdGlhbGl6ZWQ7IC8qIEZBTFNFIGlmIGZyYW1l IHNpemUgYWxyZWFkeSBjYWxjdWxhdGVkLiAgKi8KKyAgc2hvcnQgbWlsbGlj b2RlX3N0YXJ0X3JlZzsKKyAgc2hvcnQgbWlsbGljb2RlX2VuZF9yZWc7Cisg IGJvb2wgc2F2ZV9yZXR1cm5fYWRkcjsKK307CisKKy8qIEdNQVNLIGJpdCBs ZW5ndGggLTEuICAqLworI2RlZmluZSBHTUFTS19MRU4gNjMKKworLyogRGVm aW5pbmcgZGF0YSBzdHJ1Y3R1cmVzIGZvciBwZXItZnVuY3Rpb24gaW5mb3Jt YXRpb24uICAqLworCit0eXBlZGVmIHN0cnVjdCBHVFkgKCgpKSBtYWNoaW5l X2Z1bmN0aW9uCit7CisgIHVuc2lnbmVkIGludCBmbl90eXBlOworICBzdHJ1 Y3QgYXJjX2ZyYW1lX2luZm8gZnJhbWVfaW5mbzsKKyAgLyogVG8ga2VlcCB0 cmFjayBvZiB1bmFsaWdubWVudCBjYXVzZWQgYnkgc2hvcnQgaW5zbnMuICAq LworICBpbnQgdW5hbGlnbjsKKyAgc3RydWN0IGFyY19jY2ZzbSBjY2ZzbV9j dXJyZW50OworICAvKiBNYXAgZnJvbSB1aWQgdG8gY2Nmc20gc3RhdGUgZHVy aW5nIGJyYW5jaCBzaG9ydGVuaW5nLiAgKi8KKyAgcnR4IGNjZnNtX2N1cnJl bnRfaW5zbjsKKyAgY2hhciBhcmNfcmVvcmdfc3RhcnRlZDsKKyAgY2hhciBw cmVzY2FuX2luaXRpYWxpemVkOworfSBtYWNoaW5lX2Z1bmN0aW9uOworCisK IC8qIEdpdmVuIGEgc3ltYm9sIFJUWCAoY29uc3QgKHN5bWIgPCsgY29uc3Rf aW50PiksIHJldHVybnMgaXRzCiAgICBhbGlnbm1lbnQuICAqLwogCkBAIC0y MDEzLDYgKzIxNDMsNTAgQEAgYXJjX2hhbmRsZV9mbmRlY2xfYXR0cmlidXRl ICh0cmVlICpub2RlLCB0cmVlIG5hbWUsIHRyZWUgYXJncyBBVFRSSUJVVEVf VU5VU0VELAogICByZXR1cm4gTlVMTF9UUkVFOwogfQogCisvKiBUeXBlIG9m IGZ1bmN0aW9uIERFQ0wuCisKKyAgIFRoZSByZXN1bHQgaXMgY2FjaGVkLiAg VG8gcmVzZXQgdGhlIGNhY2hlIGF0IHRoZSBlbmQgb2YgYSBmdW5jdGlvbiwK KyAgIGNhbGwgd2l0aCBERUNMID0gTlVMTF9UUkVFLiAgKi8KKworc3RhdGlj IHVuc2lnbmVkIGludAorYXJjX2NvbXB1dGVfZnVuY3Rpb25fdHlwZSAoc3Ry dWN0IGZ1bmN0aW9uICpmdW4pCit7CisgIHRyZWUgYXR0ciwgZGVjbCA9IGZ1 bi0+ZGVjbDsKKyAgdW5zaWduZWQgaW50IGZuX3R5cGUgPSBmdW4tPm1hY2hp bmUtPmZuX3R5cGU7CisKKyAgaWYgKGZuX3R5cGUgIT0gQVJDX0ZVTkNUSU9O X1VOS05PV04pCisgICAgcmV0dXJuIGZuX3R5cGU7CisKKyAgLyogQ2hlY2sg aWYgaXQgaXMgYSBuYWtlZCBmdW5jdGlvbi4gICovCisgIGlmIChsb29rdXBf YXR0cmlidXRlICgibmFrZWQiLCBERUNMX0FUVFJJQlVURVMgKGRlY2wpKSAh PSBOVUxMX1RSRUUpCisgICAgZm5fdHlwZSB8PSBBUkNfRlVOQ1RJT05fTkFL RUQ7CisgIGVsc2UKKyAgICBmbl90eXBlIHw9IEFSQ19GVU5DVElPTl9OT1JN QUw7CisKKyAgLyogTm93IHNlZSBpZiB0aGlzIGlzIGFuIGludGVycnVwdCBo YW5kbGVyLiAgKi8KKyAgYXR0ciA9IGxvb2t1cF9hdHRyaWJ1dGUgKCJpbnRl cnJ1cHQiLCBERUNMX0FUVFJJQlVURVMgKGRlY2wpKTsKKyAgaWYgKGF0dHIg IT0gTlVMTF9UUkVFKQorICAgIHsKKyAgICAgIHRyZWUgdmFsdWUsIGFyZ3Mg PSBUUkVFX1ZBTFVFIChhdHRyKTsKKworICAgICAgZ2NjX2Fzc2VydCAobGlz dF9sZW5ndGggKGFyZ3MpID09IDEpOworICAgICAgdmFsdWUgPSBUUkVFX1ZB TFVFIChhcmdzKTsKKyAgICAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAodmFs dWUpID09IFNUUklOR19DU1QpOworCisgICAgICBpZiAoIXN0cmNtcCAoVFJF RV9TVFJJTkdfUE9JTlRFUiAodmFsdWUpLCAiaWxpbmsxIikKKwkgIHx8ICFz dHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKHZhbHVlKSwgImlsaW5rIikp CisJZm5fdHlwZSB8PSBBUkNfRlVOQ1RJT05fSUxJTksxOworICAgICAgZWxz ZSBpZiAoIXN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAodmFsdWUpLCAi aWxpbmsyIikpCisJZm5fdHlwZSB8PSBBUkNfRlVOQ1RJT05fSUxJTksyOwor ICAgICAgZWxzZSBpZiAoIXN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAo dmFsdWUpLCAiZmlycSIpKQorCWZuX3R5cGUgfD0gQVJDX0ZVTkNUSU9OX0ZJ UlE7CisgICAgICBlbHNlCisJZ2NjX3VucmVhY2hhYmxlICgpOworICAgIH0K KworICByZXR1cm4gZnVuLT5tYWNoaW5lLT5mbl90eXBlID0gZm5fdHlwZTsK K30KKwogLyogSW1wbGVtZW50IGBUQVJHRVRfQUxMT0NBVEVfU1RBQ0tfU0xP VFNfRk9SX0FSR1MnICovCiAKIHN0YXRpYyBib29sCkBAIC0yNDE5LDE3NCAr MjU5Myw2IEBAIGZyYW1lX3N0YWNrX2FkZCAoSE9TVF9XSURFX0lOVCBvZmZz ZXQpCiAgIHJldHVybiBmcmFtZV9hZGQgKHN0YWNrX3BvaW50ZXJfcnR4LCBv ZmZzZXQpOwogfQogCi0vKiBUcmFkaXRpb25hbGx5LCB3ZSBwdXNoIHNhdmVk IHJlZ2lzdGVycyBmaXJzdCBpbiB0aGUgcHJvbG9ndWUsCi0gICB0aGVuIHdl IGFsbG9jYXRlIHRoZSByZXN0IG9mIHRoZSBmcmFtZSAtIGFuZCByZXZlcnNl IGluIHRoZSBlcGlsb2d1ZS4KLSAgIFRoaXMgaGFzIHN0aWxsIGl0cyBtZXJp dHMgZm9yIGVhc2Ugb2YgZGVidWdnaW5nLCBvciBzYXZpbmcgY29kZSBzaXpl Ci0gICBvciBldmVuIGV4ZWN1dGlvbiB0aW1lIGlmIHRoZSBzdGFjayBmcmFt ZSBpcyBzbyBsYXJnZSB0aGF0IHNvbWUgYWNjZXNzZXMKLSAgIGNhbid0IGJl IGVuY29kZWQgYW55bW9yZSB3aXRoIG9mZnNldHMgaW4gdGhlIGluc3RydWN0 aW9uIGNvZGUgd2hlbiB1c2luZwotICAgYSBkaWZmZXJlbnQgc2NoZW1lLgot ICAgQWxzbywgaXQgd291bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGlm IHdlIGdvdCBpbnN0cnVjdGlvbnMgdG8gaGVscAotICAgd2l0aCByZWdpc3Rl ciBzYXZlL3Jlc3RvcmUuCi0KLSAgIEhvd2V2ZXIsIG9mdGVuIHN0YWNrIGZy YW1lcyBhcmUgc21hbGwsIGFuZCB0aGUgcHVzaGluZyAvIHBvcHBpbmcgaGFz Ci0gICBzb21lIGNvc3RzOgotICAgLSB0aGUgc3RhY2sgbW9kaWZpY2F0aW9u IHByZXZlbnRzIGEgbG90IG9mIHNjaGVkdWxpbmcuCi0gICAtIGZyYW1lIGFs bG9jYXRpb24gLyBkZWFsbG9jYXRpb24gbmVlZHMgZXh0cmEgaW5zdHJ1Y3Rp b25zLgotICAgLSB1bmxlc3Mgd2Uga25vdyB0aGF0IHdlIGNvbXBpbGUgQVJD NzAwIHVzZXIgY29kZSwgd2UgbmVlZCB0byBwdXQKLSAgICAgYSBtZW1vcnkg YmFycmllciBhZnRlciBmcmFtZSBhbGxvY2F0aW9uIC8gYmVmb3JlIGRlYWxs b2NhdGlvbiB0bwotICAgICBwcmV2ZW50IGludGVycnVwdHMgY2xvYmJlcmlu ZyBvdXIgZGF0YSBpbiB0aGUgZnJhbWUuCi0gICAgIEluIHBhcnRpY3VsYXIs IHdlIGRvbid0IGhhdmUgYW55IHN1Y2ggZ3VhcmFudGVlcyBmb3IgbGlicmFy eSBmdW5jdGlvbnMsCi0gICAgIHdoaWNoIHRlbmQgdG8sIG9uIHRoZSBvdGhl ciBoYW5kLCB0byBoYXZlIHNtYWxsIGZyYW1lcy4KLQotICAgVGh1cywgZm9y IHNtYWxsIGZyYW1lcywgd2UnZCBsaWtlIHRvIHVzZSBhIGRpZmZlcmVudCBz Y2hlbWU6Ci0gICAtIFRoZSBmcmFtZSBpcyBhbGxvY2F0ZWQgaW4gZnVsbCB3 aXRoIHRoZSBmaXJzdCBwcm9sb2d1ZSBpbnN0cnVjdGlvbiwKLSAgICAgYW5k IGRlYWxsb2NhdGVkIGluIGZ1bGwgd2l0aCB0aGUgbGFzdCBlcGlsb2d1ZSBp bnN0cnVjdGlvbi4KLSAgICAgVGh1cywgdGhlIGluc3RydWN0aW9ucyBpbi1i ZXR3ZW4gY2FuIGJlIGZyZWVseSBzY2hlZHVsZWQuCi0gICAtIElmIHRoZSBm dW5jdGlvbiBoYXMgbm8gb3V0Z29pbmcgYXJndW1lbnRzIG9uIHRoZSBzdGFj aywgd2UgY2FuIGFsbG9jYXRlCi0gICAgIG9uZSByZWdpc3RlciBzYXZlIHNs b3QgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2suICBUaGlzIHJlZ2lzdGVyIGNh biB0aGVuCi0gICAgIGJlIHNhdmVkIHNpbXVsdGFub3VzbHkgd2l0aCBmcmFt ZSBhbGxvY2F0aW9uLCBhbmQgcmVzdG9yZWQgd2l0aAotICAgICBmcmFtZSBk ZWFsbG9jYXRpb24uCi0gICAgIFRoaXMgcmVnaXN0ZXIgY2FuIGJlIHBpY2tl ZCBkZXBlbmRpbmcgb24gc2NoZWR1bGluZyBjb25zaWRlcmF0aW9ucywKLSAg ICAgYWx0aG91Z2ggc2FtZSB0aG91Z2ggc2hvdWxkIGdvIGludG8gaGF2aW5n IHNvbWUgc2V0IG9mIHJlZ2lzdGVycwotICAgICB0byBiZSBwb3RlbnRpYWxs eSBsaW5nZXJpbmcgYWZ0ZXIgYSBjYWxsLCBhbmQgb3RoZXJzIHRvIGJlIGF2 YWlsYWJsZQotICAgICBpbW1lZGlhdGVseSAtIGkuZS4gaW4gdGhlIGFic2Vu Y2Ugb2YgaW50ZXJwcm9jZWR1YWwgb3B0aW1pemF0aW9uLCB3ZQotICAgICBj YW4gdXNlIGFuIEFCSS1saWtlIGNvbnZlbnRpb24gZm9yIHJlZ2lzdGVyIGFs bG9jYXRpb24gdG8gcmVkdWNlCi0gICAgIHN0YWxscyBhZnRlciBmdW5jdGlv biByZXR1cm4uICAqLwotLyogRnVuY3Rpb24gcHJvbG9ndWUvZXBpbG9ndWUg aGFuZGxlcnMuICAqLwotCi0vKiBBUkNvbXBhY3Qgc3RhY2sgZnJhbWVzIGxv b2sgbGlrZToKLQotICAgICAgICAgICBCZWZvcmUgY2FsbCAgICAgICAgICAg ICAgICAgICAgIEFmdGVyIGNhbGwKLSAgaGlnaCAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKyAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0g IG1lbSAgIHwgIHJlZyBwYXJtIHNhdmUgYXJlYSAgIHwgICAgICAgfCByZWcg cGFybSBzYXZlIGFyZWEgICAgfAotICAgICAgICB8ICBvbmx5IGNyZWF0ZWQg Zm9yICAgICB8ICAgICAgIHwgb25seSBjcmVhdGVkIGZvciAgICAgIHwKLSAg ICAgICAgfCAgdmFyaWFibGUgYXJnIGZucyAgICAgfCAgICAgICB8IHZhcmlh YmxlIGFyZyBmbnMgICAgICB8Ci0gICAgQVAgICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAg ICAgICB8ICByZXR1cm4gYWRkciByZWdpc3RlciB8ICAgICAgIHwgcmV0dXJu IGFkZHIgcmVnaXN0ZXIgIHwKLSAgICAgICAgfCAgKGlmIHJlcXVpcmVkKSAg ICAgICAgfCAgICAgICB8IChpZiByZXF1aXJlZCkgICAgICAgICB8Ci0gICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwotICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAg ICAgfCAgcmVnIHNhdmUgYXJlYSAgICAgICAgfCAgICAgICB8IHJlZyBzYXZl IGFyZWEgICAgICAgICB8Ci0gICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAg ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKLSAgICAgICAgfCAgZnJhbWUgcG9pbnRlciAgICAg ICAgfCAgICAgICB8IGZyYW1lIHBvaW50ZXIgICAgICAgICB8Ci0gICAgICAg IHwgIChpZiByZXF1aXJlZCkgICAgICAgIHwgICAgICAgfCAoaWYgcmVxdWly ZWQpICAgICAgICAgfAotICAgIEZQICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgICB8Ci0gICAgICAgIHwgIGxvY2FsL3RlbXAgdmFyaWFibGVz IHwgICAgICAgfCBsb2NhbC90ZW1wIHZhcmlhYmxlcyAgfAotICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgIHwKLSAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t KyAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgfAotICAgICAgICB8ICBhcmd1bWVudHMgb24gc3RhY2sgICB8 ICAgICAgIHwgYXJndW1lbnRzIG9uIHN0YWNrICAgIHwKLSAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICB8Ci0gICAgU1AgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsg ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVnIHBhcm0gc2F2ZSBh cmVhICAgIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IG9ubHkgY3JlYXRlZCBmb3IgICAgICB8Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB2YXJpYWJsZSBhcmcgZm5z ICAgICAgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QVAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJldHVybiBhZGRyIHJlZ2lz dGVyICB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAoaWYgcmVxdWlyZWQpICAgICAgICAgfAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCByZWcgc2F2ZSBhcmVhICAgICAg ICAgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBmcmFtZSBwb2ludGVyICAgICAgICAgfAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgKGlmIHJlcXVpcmVkKSAgICAgICAg IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZQICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg bG9jYWwvdGVtcCB2YXJpYWJsZXMgIHwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFy Z3VtZW50cyBvbiBzdGFjayAgICB8Ci0gIGxvdyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAot ICBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1AgICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotTm90ZXM6Ci0xKSBUaGUgInJlZyBw YXJtIHNhdmUgYXJlYSIgZG9lcyBub3QgZXhpc3QgZm9yIG5vbiB2YXJpYWJs ZSBhcmd1bWVudCBmbnMuCi0gICBUaGUgInJlZyBwYXJtIHNhdmUgYXJlYSIg Y2FuIGJlIGVsaW1pbmF0ZWQgY29tcGxldGVseSBpZiB3ZSBjcmVhdGVkIG91 cgotICAgb3duIHZhLWFyYy5oLCBidXQgdGhhdCBoYXMgdHJhZGVvZmZzIGFz IHdlbGwgKHNvIGl0J3Mgbm90IGRvbmUpLiAgKi8KLQotLyogU3RydWN0dXJl IHRvIGJlIGZpbGxlZCBpbiBieSBhcmNfY29tcHV0ZV9mcmFtZV9zaXplIHdp dGggcmVnaXN0ZXIKLSAgIHNhdmUgbWFza3MsIGFuZCBvZmZzZXRzIGZvciB0 aGUgY3VycmVudCBmdW5jdGlvbi4gICovCi1zdHJ1Y3QgR1RZICgoKSkgYXJj X2ZyYW1lX2luZm8KLXsKLSAgdW5zaWduZWQgaW50IHRvdGFsX3NpemU7CS8q ICMgYnl0ZXMgdGhhdCB0aGUgZW50aXJlIGZyYW1lIHRha2VzIHVwLiAgKi8K LSAgdW5zaWduZWQgaW50IGV4dHJhX3NpemU7CS8qICMgYnl0ZXMgb2YgZXh0 cmEgc3R1ZmYuICAqLwotICB1bnNpZ25lZCBpbnQgcHJldGVuZF9zaXplOwkv KiAjIGJ5dGVzIHdlIHB1c2ggYW5kIHByZXRlbmQgY2FsbGVyIGRpZC4gICov Ci0gIHVuc2lnbmVkIGludCBhcmdzX3NpemU7CS8qICMgYnl0ZXMgdGhhdCBv dXRnb2luZyBhcmd1bWVudHMgdGFrZSB1cC4gICovCi0gIHVuc2lnbmVkIGlu dCByZWdfc2l6ZTsJLyogIyBieXRlcyBuZWVkZWQgdG8gc3RvcmUgcmVncy4g ICovCi0gIHVuc2lnbmVkIGludCB2YXJfc2l6ZTsJLyogIyBieXRlcyB0aGF0 IHZhcmlhYmxlcyB0YWtlIHVwLiAgKi8KLSAgdW5zaWduZWQgaW50IGdtYXNr OwkJLyogTWFzayBvZiBzYXZlZCBncCByZWdpc3RlcnMuICAqLwotICBib29s IGluaXRpYWxpemVkOyAvKiBGQUxTRSBpZiBmcmFtZSBzaXplIGFscmVhZHkg Y2FsY3VsYXRlZC4gICovCi0gIHNob3J0IG1pbGxpY29kZV9zdGFydF9yZWc7 Ci0gIHNob3J0IG1pbGxpY29kZV9lbmRfcmVnOwotICBib29sIHNhdmVfcmV0 dXJuX2FkZHI7Ci19OwotCi0vKiBHTUFTSyBiaXQgbGVuZ3RoIC0xLiAgKi8K LSNkZWZpbmUgR01BU0tfTEVOIDMxCi0KLS8qIERlZmluaW5nIGRhdGEgc3Ry dWN0dXJlcyBmb3IgcGVyLWZ1bmN0aW9uIGluZm9ybWF0aW9uLiAgKi8KLQot dHlwZWRlZiBzdHJ1Y3QgR1RZICgoKSkgbWFjaGluZV9mdW5jdGlvbgotewot ICB1bnNpZ25lZCBpbnQgZm5fdHlwZTsKLSAgc3RydWN0IGFyY19mcmFtZV9p bmZvIGZyYW1lX2luZm87Ci0gIC8qIFRvIGtlZXAgdHJhY2sgb2YgdW5hbGln bm1lbnQgY2F1c2VkIGJ5IHNob3J0IGluc25zLiAgKi8KLSAgaW50IHVuYWxp Z247Ci0gIHN0cnVjdCBhcmNfY2Nmc20gY2Nmc21fY3VycmVudDsKLSAgLyog TWFwIGZyb20gdWlkIHRvIGNjZnNtIHN0YXRlIGR1cmluZyBicmFuY2ggc2hv cnRlbmluZy4gICovCi0gIHJ0eCBjY2ZzbV9jdXJyZW50X2luc247Ci0gIGNo YXIgYXJjX3Jlb3JnX3N0YXJ0ZWQ7Ci0gIGNoYXIgcHJlc2Nhbl9pbml0aWFs aXplZDsKLX0gbWFjaGluZV9mdW5jdGlvbjsKLQotLyogVHlwZSBvZiBmdW5j dGlvbiBERUNMLgotCi0gICBUaGUgcmVzdWx0IGlzIGNhY2hlZC4gIFRvIHJl c2V0IHRoZSBjYWNoZSBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24sCi0gICBj YWxsIHdpdGggREVDTCA9IE5VTExfVFJFRS4gICovCi0KLXVuc2lnbmVkIGlu dAotYXJjX2NvbXB1dGVfZnVuY3Rpb25fdHlwZSAoc3RydWN0IGZ1bmN0aW9u ICpmdW4pCi17Ci0gIHRyZWUgYXR0ciwgZGVjbCA9IGZ1bi0+ZGVjbDsKLSAg dW5zaWduZWQgaW50IGZuX3R5cGUgPSBmdW4tPm1hY2hpbmUtPmZuX3R5cGU7 Ci0KLSAgaWYgKGZuX3R5cGUgIT0gQVJDX0ZVTkNUSU9OX1VOS05PV04pCi0g ICAgcmV0dXJuIGZuX3R5cGU7Ci0KLSAgLyogQ2hlY2sgaWYgaXQgaXMgYSBu YWtlZCBmdW5jdGlvbi4gICovCi0gIGlmIChsb29rdXBfYXR0cmlidXRlICgi bmFrZWQiLCBERUNMX0FUVFJJQlVURVMgKGRlY2wpKSAhPSBOVUxMX1RSRUUp Ci0gICAgZm5fdHlwZSB8PSBBUkNfRlVOQ1RJT05fTkFLRUQ7Ci0gIGVsc2UK LSAgICBmbl90eXBlIHw9IEFSQ19GVU5DVElPTl9OT1JNQUw7Ci0KLSAgLyog Tm93IHNlZSBpZiB0aGlzIGlzIGFuIGludGVycnVwdCBoYW5kbGVyLiAgKi8K LSAgYXR0ciA9IGxvb2t1cF9hdHRyaWJ1dGUgKCJpbnRlcnJ1cHQiLCBERUNM X0FUVFJJQlVURVMgKGRlY2wpKTsKLSAgaWYgKGF0dHIgIT0gTlVMTF9UUkVF KQotICAgIHsKLSAgICAgIHRyZWUgdmFsdWUsIGFyZ3MgPSBUUkVFX1ZBTFVF IChhdHRyKTsKLQotICAgICAgZ2NjX2Fzc2VydCAobGlzdF9sZW5ndGggKGFy Z3MpID09IDEpOwotICAgICAgdmFsdWUgPSBUUkVFX1ZBTFVFIChhcmdzKTsK LSAgICAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAodmFsdWUpID09IFNUUklO R19DU1QpOwotCi0gICAgICBpZiAoIXN0cmNtcCAoVFJFRV9TVFJJTkdfUE9J TlRFUiAodmFsdWUpLCAiaWxpbmsxIikKLQkgIHx8ICFzdHJjbXAgKFRSRUVf U1RSSU5HX1BPSU5URVIgKHZhbHVlKSwgImlsaW5rIikpCi0JZm5fdHlwZSB8 PSBBUkNfRlVOQ1RJT05fSUxJTksxOwotICAgICAgZWxzZSBpZiAoIXN0cmNt cCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAodmFsdWUpLCAiaWxpbmsyIikpCi0J Zm5fdHlwZSB8PSBBUkNfRlVOQ1RJT05fSUxJTksyOwotICAgICAgZWxzZSBp ZiAoIXN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAodmFsdWUpLCAiZmly cSIpKQotCWZuX3R5cGUgfD0gQVJDX0ZVTkNUSU9OX0ZJUlE7Ci0gICAgICBl bHNlCi0JZ2NjX3VucmVhY2hhYmxlICgpOwotICAgIH0KLQotICByZXR1cm4g ZnVuLT5tYWNoaW5lLT5mbl90eXBlID0gZm5fdHlwZTsKLX0KLQogLyogSGVs cGVyIGZ1bmN0aW9uIHRvIHdyYXAgRlJBTUVfUE9JTlRFUl9ORUVERUQuICBX ZSBkbyB0aGlzIGFzCiAgICBGUkFNRV9QT0lOVEVSX05FRURFRCB3aWxsIG5v dCBiZSB0cnVlIHVudGlsIHRoZSBJUkEgKEludGVncmF0ZWQKICAgIFJlZ2lz dGVyIEFsbG9jYXRvcikgcGFzcywgd2hpbGUgd2Ugd2FudCB0byBnZXQgdGhl IGZyYW1lIHNpemUKQEAgLTI2MzYsMTQgKzI2NDIsMTIgQEAgYXJjX2ZyYW1l X3BvaW50ZXJfbmVlZGVkICh2b2lkKQogfQogCiAvKiBUZWxsIHByb2xvZ3Vl IGFuZCBlcGlsb2d1ZSBpZiByZWdpc3RlciBSRUdOTyBzaG91bGQgYmUgc2F2 ZWQgLwotICAgcmVzdG9yZWQuICBUaGUgcmV0dXJuIGFkZHJlc3MsIHN0YWNr IHBvaW50ZXIgYW5kIGZyYW1lIHBvaW50ZXIgYXJlCi0gICB0cmVhdGVkIHNl cGFyYXRlbHkuICBEb24ndCBjb25zaWRlciB0aGVtIGhlcmUuICBBZGRpdGlv biBmb3IgcGljOgotICAgVGhlIGdwIHJlZ2lzdGVyIG5lZWRzIHRvIGJlIHNh dmVkIGlmIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNoYW5nZXMKLSAgIGl0IHRv IGFjY2VzcyBnb3RvZmYgdmFyaWFibGVzLiAgRklYTUU6IFRoaXMgd2lsbCBu b3QgYmUgbmVlZGVkIGlmCi0gICB3ZSB1c2VkIHNvbWUgYXJiaXRyYXJ5IHJl Z2lzdGVyIGluc3RlYWQgb2YgcjI2LiAgKi8KKyAgIHJlc3RvcmVkLiAgVGhl IFNQRUNJQUxfUCBpcyB0cnVlIHdoZW4gdGhlIHJlZ2lzdGVyIG1heSBuZWVk IHNwZWNpYWwKKyAgIGxkL3N0IHNlcXVlbmNlLiAgVGhlIHJldHVybiBhZGRy ZXNzLCBhbmQgc3RhY2sgcG9pbnRlciBhcmUgdHJlYXRlZAorICAgc2VwYXJh dGVseS4gIERvbid0IGNvbnNpZGVyIHRoZW0gaGVyZS4gICovCiAKIHN0YXRp YyBib29sCi1hcmNfbXVzdF9zYXZlX3JlZ2lzdGVyIChpbnQgcmVnbm8sIHN0 cnVjdCBmdW5jdGlvbiAqZnVuYykKK2FyY19tdXN0X3NhdmVfcmVnaXN0ZXIg KGludCByZWdubywgc3RydWN0IGZ1bmN0aW9uICpmdW5jLCBib29sIHNwZWNp YWxfcCkKIHsKICAgdW5zaWduZWQgaW50IGZuX3R5cGUgPSBhcmNfY29tcHV0 ZV9mdW5jdGlvbl90eXBlIChmdW5jKTsKICAgYm9vbCBpcnFfYXV0b19zYXZl X3AgPSAoKGlycV9jdHJsX3NhdmVkLmlycV9zYXZlX2xhc3RfcmVnID49IHJl Z25vKQpAQCAtMjY3Myw4ICsyNjc3LDY5IEBAIGFyY19tdXN0X3NhdmVfcmVn aXN0ZXIgKGludCByZWdubywgc3RydWN0IGZ1bmN0aW9uICpmdW5jKQogCiAg IHN3aXRjaCAocmVnbm8pCiAgICAgeworICAgIGNhc2UgSUxJTksxX1JFRzoK ICAgICBjYXNlIFJFVFVSTl9BRERSX1JFR05VTToKICAgICBjYXNlIFNUQUNL X1BPSU5URVJfUkVHTlVNOgorICAgICAgLyogVGhlIHN0YWNrIHBvaW50ZXIg YW5kIHRoZSByZXR1cm4gYWRkcmVzcyBhcmUgaGFuZGxlZAorCSBzZXBhcmF0 ZWx5LiAgKi8KKyAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNhc2UgUjMw X1JFRzoKKyAgICAgIC8qIHIzMCBpcyBlaXRoZXIgdXNlZCBhcyBpbGluazIg YnkgQVJDdjEgb3IgYXMgYSBmcmVlIHJlZ2lzdGVyCisJIGJ5IEFSQ3YyLiAg Ki8KKyAgICAgIGlmICghVEFSR0VUX1YyKQorCXJldHVybiBmYWxzZTsKKyAg ICAgIGJyZWFrOworCisgICAgY2FzZSBSNDBfUkVHOgorICAgIGNhc2UgUjQx X1JFRzoKKyAgICBjYXNlIFI0Ml9SRUc6CisgICAgY2FzZSBSNDNfUkVHOgor ICAgIGNhc2UgUjQ0X1JFRzoKKyAgICAgIC8qIElmIHRob3NlIG9uZXMgYXJl IHVzZWQgYnkgdGhlIEZQWCBtYWNoaW5lcnksIHdlIGhhbmRsZSB0aGVtCisJ IHNlcGFyYXRlbHkuICAqLworICAgICAgaWYgKFRBUkdFVF9EUEZQICYmICFz cGVjaWFsX3ApCisJcmV0dXJuIGZhbHNlOworICAgICAgLyogRkFMTFRIUlUu ICAqLworCisgICAgY2FzZSBSMzJfUkVHOgorICAgIGNhc2UgUjMzX1JFRzoK KyAgICBjYXNlIFIzNF9SRUc6CisgICAgY2FzZSBSMzVfUkVHOgorICAgIGNh c2UgUjM2X1JFRzoKKyAgICBjYXNlIFIzN19SRUc6CisgICAgY2FzZSBSMzhf UkVHOgorICAgIGNhc2UgUjM5X1JFRzoKKyAgICBjYXNlIFI0NV9SRUc6Cisg ICAgY2FzZSBSNDZfUkVHOgorICAgIGNhc2UgUjQ3X1JFRzoKKyAgICBjYXNl IFI0OF9SRUc6CisgICAgY2FzZSBSNDlfUkVHOgorICAgIGNhc2UgUjUwX1JF RzoKKyAgICBjYXNlIFI1MV9SRUc6CisgICAgY2FzZSBSNTJfUkVHOgorICAg IGNhc2UgUjUzX1JFRzoKKyAgICBjYXNlIFI1NF9SRUc6CisgICAgY2FzZSBS NTVfUkVHOgorICAgIGNhc2UgUjU2X1JFRzoKKyAgICBjYXNlIFI1N19SRUc6 CisgICAgY2FzZSBSNThfUkVHOgorICAgIGNhc2UgUjU5X1JFRzoKKyAgICAg IC8qIFRoZSBFeHRlbnNpb24gUmVnaXN0ZXJzLiAgKi8KKyAgICAgIGlmIChB UkNfSU5URVJSVVBUX1AgKGZuX3R5cGUpCisJICAmJiAoZGZfcmVnc19ldmVy X2xpdmVfcCAoUkVUVVJOX0FERFJfUkVHTlVNKQorCSAgICAgIHx8IGRmX3Jl Z3NfZXZlcl9saXZlX3AgKHJlZ25vKSkKKwkgIC8qIE5vdCBhbGwgZXh0ZW5z aW9uIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlLCBjaG9vc2UgdGhlCisJICAg ICByZWFsIG9uZXMuICAqLworCSAgJiYgIWZpeGVkX3JlZ3NbcmVnbm9dKQor CXJldHVybiB0cnVlOworICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2Fz ZSA2MToKKyAgICBjYXNlIDYyOgorICAgIGNhc2UgNjM6CisgICAgICAvKiBG aXhlZC9jb250cm9sIHJlZ2lzdGVyLCBub3RoaW5nIHRvIGRvLiAgTFBfQ09V TlQgaXMKKwkgZGlmZmVyZW50LiAgKi8KICAgICAgIHJldHVybiBmYWxzZTsK IAogICAgIGNhc2UgSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTToKQEAgLTI2 ODIsMTggKzI3NDcsMjEgQEAgYXJjX211c3Rfc2F2ZV9yZWdpc3RlciAoaW50 IHJlZ25vLCBzdHJ1Y3QgZnVuY3Rpb24gKmZ1bmMpCiAJIHJlZ3VsYXIgcmVn LiAgKi8KICAgICAgIGlmIChhcmNfZnJhbWVfcG9pbnRlcl9uZWVkZWQgKCkp CiAJcmV0dXJuIGZhbHNlOworICAgICAgYnJlYWs7CiAKLSAgICAgIC8qIEZB TExUSFJVICovCiAgICAgZGVmYXVsdDoKLSAgICAgIGlmIChkZl9yZWdzX2V2 ZXJfbGl2ZV9wIChyZWdubykKLQkgICYmICghY2FsbF91c2VkX3JlZ3NbcmVn bm9dCi0JICAgICAgfHwgQVJDX0lOVEVSUlVQVF9QIChmbl90eXBlKSkKLQkg IC8qIERvIG5vdCBlbWl0IGNvZGUgZm9yIGF1dG8gc2F2ZWQgcmVncy4gICov Ci0JICAmJiAhaXJxX2F1dG9fc2F2ZV9wCi0JICAmJiAhZmlycV9hdXRvX3Nh dmVfcCkKLQlyZXR1cm4gdHJ1ZTsKKyAgICAgIGJyZWFrOwogICAgIH0KIAor ICBpZiAoKChkZl9yZWdzX2V2ZXJfbGl2ZV9wIChyZWdubykgJiYgIWNhbGxf dXNlZF9yZWdzW3JlZ25vXSkKKyAgICAgICAvKiBJbiBhbiBpbnRlcnJ1cHQg c2F2ZSBldmVyeXRoaW5nLiAgKi8KKyAgICAgICB8fCAoQVJDX0lOVEVSUlVQ VF9QIChmbl90eXBlKQorCSAgICYmIChkZl9yZWdzX2V2ZXJfbGl2ZV9wIChS RVRVUk5fQUREUl9SRUdOVU0pCisJICAgICAgIHx8IGRmX3JlZ3NfZXZlcl9s aXZlX3AgKHJlZ25vKSkpKQorICAgICAgLyogRG8gbm90IGVtaXQgY29kZSBm b3IgYXV0byBzYXZlZCByZWdzLiAgKi8KKyAgICAgICYmICFpcnFfYXV0b19z YXZlX3AKKyAgICAgICYmICFmaXJxX2F1dG9fc2F2ZV9wKQorICAgIHJldHVy biB0cnVlOwogICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTI3MTcsMTQgKzI3 ODUsMTQgQEAgYXJjX211c3Rfc2F2ZV9yZXR1cm5fYWRkciAoc3RydWN0IGZ1 bmN0aW9uICpmdW5jKQogICAgb2YgcmVnaXN0ZXJzIHRvIGJlIHNhdmVkIC8g cmVzdG9yZWQgd2l0aCBhIG1pbGxpY29kZSBjYWxsLiAgKi8KIAogc3RhdGlj IGludAotYXJjX2NvbXB1dGVfbWlsbGljb2RlX3NhdmVfcmVzdG9yZV9yZWdz ICh1bnNpZ25lZCBpbnQgZ21hc2ssCithcmNfY29tcHV0ZV9taWxsaWNvZGVf c2F2ZV9yZXN0b3JlX3JlZ3MgKHVpbnQ2NF90IGdtYXNrLAogCQkJCQkgc3Ry dWN0IGFyY19mcmFtZV9pbmZvICpmcmFtZSkKIHsKICAgaW50IHJlZ25vOwog CiAgIGludCBzdGFydF9yZWcgPSAxMywgZW5kX3JlZyA9IDI1OwogCi0gIGZv ciAocmVnbm8gPSBzdGFydF9yZWc7IHJlZ25vIDw9IGVuZF9yZWcgJiYgKGdt YXNrICYgKDFMIDw8IHJlZ25vKSk7KQorICBmb3IgKHJlZ25vID0gc3RhcnRf cmVnOyByZWdubyA8PSBlbmRfcmVnICYmIChnbWFzayAmICgxVUxMIDw8IHJl Z25vKSk7KQogICAgIHJlZ25vKys7CiAgIGVuZF9yZWcgPSByZWdubyAtIDE7 CiAgIC8qIFRoZXJlIGlzIG5vIHBvaW50IGluIHVzaW5nIG1pbGxpY29kZSB0 aHVua3MgaWYgd2UgZG9uJ3Qgc2F2ZS9yZXN0b3JlCkBAIC0yNzQ4LDcgKzI4 MTYsNyBAQCBhcmNfY29tcHV0ZV9mcmFtZV9zaXplICh2b2lkKQogICBpbnQg cmVnbm87CiAgIHVuc2lnbmVkIGludCB0b3RhbF9zaXplLCB2YXJfc2l6ZSwg YXJnc19zaXplLCBwcmV0ZW5kX3NpemUsIGV4dHJhX3NpemU7CiAgIHVuc2ln bmVkIGludCByZWdfc2l6ZTsKLSAgdW5zaWduZWQgaW50IGdtYXNrOworICB1 aW50NjRfdCBnbWFzazsKICAgc3RydWN0IGFyY19mcmFtZV9pbmZvICpmcmFt ZV9pbmZvOwogICBpbnQgc2l6ZTsKICAgdW5zaWduZWQgaW50IGV4dHJhX3Bs dXNfcmVnX3NpemU7CkBAIC0yNzc2LDEyICsyODQ0LDEzIEBAIGFyY19jb21w dXRlX2ZyYW1lX3NpemUgKHZvaWQpCiAgIHJlZ19zaXplID0gMDsKICAgZ21h c2sgPSAwOwogCi0gIGZvciAocmVnbm8gPSAwOyByZWdubyA8PSAzMTsgcmVn bm8rKykKKyAgLyogVGhlIGxhc3QgNCByZWdzIGFyZSBzcGVjaWFsLCBhdm9p ZCB0aGVtLiAgKi8KKyAgZm9yIChyZWdubyA9IDA7IHJlZ25vIDw9IChHTUFT S19MRU4gLSA0KTsgcmVnbm8rKykKICAgICB7Ci0gICAgICBpZiAoYXJjX211 c3Rfc2F2ZV9yZWdpc3RlciAocmVnbm8sIGNmdW4pKQorICAgICAgaWYgKGFy Y19tdXN0X3NhdmVfcmVnaXN0ZXIgKHJlZ25vLCBjZnVuLCBmYWxzZSkpCiAJ ewogCSAgcmVnX3NpemUgKz0gVU5JVFNfUEVSX1dPUkQ7Ci0JICBnbWFzayB8 PSAxTCA8PCByZWdubzsKKwkgIGdtYXNrIHw9IDFVTEwgPDwgcmVnbm87CiAJ fQogICAgIH0KIApAQCAtMjc5Niw3ICsyODY1LDcgQEAgYXJjX2NvbXB1dGVf ZnJhbWVfc2l6ZSAodm9pZCkKICAgICBmb3IgKHJlZ25vID0gMDsgRUhfUkVU VVJOX0RBVEFfUkVHTk8gKHJlZ25vKSAhPSBJTlZBTElEX1JFR05VTTsgcmVn bm8rKykKICAgICAgIHsKIAlyZWdfc2l6ZSArPSBVTklUU19QRVJfV09SRDsK LQlnbWFzayB8PSAxTCA8PCByZWdubzsKKwlnbWFzayB8PSAxVUxMIDw8IHJl Z25vOwogICAgICAgfQogCiAgIC8qIENoZWNrIGlmIHdlIG5lZWQgdG8gc2F2 ZSB0aGUgcmV0dXJuIGFkZHJlc3MuICAqLwpAQCAtMjgwNiwxMiArMjg3NSwy NSBAQCBhcmNfY29tcHV0ZV9mcmFtZV9zaXplICh2b2lkKQogCiAgIC8qIFNh dmluZyBibGluayByZWcgZm9yIG1pbGxpY29kZSB0aHVuayBjYWxscy4gICov CiAgIGlmIChUQVJHRVRfTUlMTElDT0RFX1RIVU5LX1NFVAotICAgICAgJiYg IWNydGwtPmNhbGxzX2VoX3JldHVybikKKyAgICAgICYmICFjcnRsLT5jYWxs c19laF9yZXR1cm4KKyAgICAgICYmICFBUkNfSU5URVJSVVBUX1AgKGFyY19j b21wdXRlX2Z1bmN0aW9uX3R5cGUgKGNmdW4pKSkKICAgICB7CiAgICAgICBp ZiAoYXJjX2NvbXB1dGVfbWlsbGljb2RlX3NhdmVfcmVzdG9yZV9yZWdzIChn bWFzaywgZnJhbWVfaW5mbykpCiAJZnJhbWVfaW5mby0+c2F2ZV9yZXR1cm5f YWRkciA9IHRydWU7CiAgICAgfQogCisgIC8qIFNhdmUgbHBfY291bnQsIGxw X3N0YXJ0IGFuZCBscF9lbmQuICAqLworICBpZiAoYXJjX2xwY3dpZHRoICE9 IDAgJiYgYXJjX211c3Rfc2F2ZV9yZWdpc3RlciAoTFBfQ09VTlQsIGNmdW4s IHRydWUpKQorICAgIHJlZ19zaXplICs9IFVOSVRTX1BFUl9XT1JEICogMzsK KworICAvKiBDaGVjayBmb3IgdGhlIHNwZWNpYWwgUjQwLVI0NCByZWdzIHVz ZWQgYnkgRlBYIGV4dGVuc2lvbi4gICovCisgIGlmIChhcmNfbXVzdF9zYXZl X3JlZ2lzdGVyIChUQVJHRVRfQklHX0VORElBTiA/IFI0MV9SRUcgOiBSNDBf UkVHLAorCQkJICAgICAgY2Z1biwgVEFSR0VUX0RQRlApKQorICAgIHJlZ19z aXplICs9IFVOSVRTX1BFUl9XT1JEICogMjsKKyAgaWYgKGFyY19tdXN0X3Nh dmVfcmVnaXN0ZXIgKFRBUkdFVF9CSUdfRU5ESUFOID8gUjQzX1JFRyA6IFI0 Ml9SRUcsCisJCQkgICAgICBjZnVuLCBUQVJHRVRfRFBGUCkpCisgICAgcmVn X3NpemUgKz0gVU5JVFNfUEVSX1dPUkQgKiAyOworCiAgIC8qIDQpIENhbGN1 bGF0ZSBleHRyYSBzaXplIG1hZGUgdXAgb2YgdGhlIGJsaW5rICsgZnAgc2l6 ZS4gICovCiAgIGV4dHJhX3NpemUgPSAwOwogICBpZiAoYXJjX211c3Rfc2F2 ZV9yZXR1cm5fYWRkciAoY2Z1bikpCkBAIC0yOTQ2LDYgKzMwMjgsMjIgQEAg ZnJhbWVfc2F2ZV9yZWcgKHJ0eCByZWcsIEhPU1RfV0lERV9JTlQgb2Zmc2V0 KQogICByZXR1cm4gR0VUX01PREVfU0laRSAoR0VUX01PREUgKHJlZykpIC0g b2Zmc2V0OwogfQogCisvKiBIZWxwZXIgdXNlZCB3aGVuIHNhdmluZyBBVVgg cmVncyBkdXJpbmcgSVNSLiAgKi8KKworc3RhdGljIGludAorcHVzaF9yZWcg KHJ0eCByZWcpCit7CisgIHJ0eCBzdGtzbG90ID0gZ2VuX3J0eF9NRU0gKEdF VF9NT0RFIChyZWcpLCBnZW5fcnR4X1BSRV9ERUMgKFBtb2RlLAorCQkJCQkJ ICAgc3RhY2tfcG9pbnRlcl9ydHgpKTsKKyAgcnR4IGluc24gPSBlbWl0X21v dmVfaW5zbiAoc3Rrc2xvdCwgcmVnKTsKKyAgUlRYX0ZSQU1FX1JFTEFURURf UCAoaW5zbikgPSAxOworICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19DRkFf QURKVVNUX0NGQSwKKwkJZ2VuX3J0eF9TRVQgKHN0YWNrX3BvaW50ZXJfcnR4 LAorCQkJICAgICBwbHVzX2NvbnN0YW50IChQbW9kZSwgc3RhY2tfcG9pbnRl cl9ydHgsCisJCQkJCSAgICAtR0VUX01PREVfU0laRSAoR0VUX01PREUgKHJl ZykpKSkpOworICByZXR1cm4gR0VUX01PREVfU0laRSAoR0VUX01PREUgKHJl ZykpOworfQorCiAvKiBIZWxwZXIgZm9yIGVwaWxvZ3VlOiBlbWl0IGZyYW1l IGxvYWQgd2l0aCBwb3N0X21vZGlmeSBvciBwb3N0X2luYwogICAgdG8gcmVz dG9yZSByZWdpc3RlciBSRUcgZnJvbSBzdGFjay4gIFRoZSBpbml0aWFsIG9m ZnNldCBpcyBwYXNzZWQKICAgIHZpYSBPRkZTRVQuICAqLwpAQCAtMjk4NCwx MiArMzA4MiwyOSBAQCBmcmFtZV9yZXN0b3JlX3JlZyAocnR4IHJlZywgSE9T VF9XSURFX0lOVCBvZmZzZXQpCiAgIHJldHVybiBHRVRfTU9ERV9TSVpFIChH RVRfTU9ERSAocmVnKSkgKyBvZmZzZXQ7CiB9CiAKKy8qIEhlbHBlciB1c2Vk IHdoZW4gcmVzdG9yaW5nIEFVWCByZWdzIGR1cmluZyBJU1IuICAqLworCitz dGF0aWMgaW50Citwb3BfcmVnIChydHggcmVnKQoreworICBydHggc3Rrc2xv dCA9IGdlbl9ydHhfTUVNIChHRVRfTU9ERSAocmVnKSwgZ2VuX3J0eF9QT1NU X0lOQyAoUG1vZGUsCisJCQkJCQkgICBzdGFja19wb2ludGVyX3J0eCkpOwor ICBydHggaW5zbiA9IGVtaXRfbW92ZV9pbnNuIChyZWcsIHN0a3Nsb3QpOwor ICBSVFhfRlJBTUVfUkVMQVRFRF9QIChpbnNuKSA9IDE7CisgIGFkZF9yZWdf bm90ZSAoaW5zbiwgUkVHX0NGQV9BREpVU1RfQ0ZBLAorCQlnZW5fcnR4X1NF VCAoc3RhY2tfcG9pbnRlcl9ydHgsCisJCQkgICAgIHBsdXNfY29uc3RhbnQg KFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwKKwkJCQkJICAgIEdFVF9NT0RF X1NJWkUgKEdFVF9NT0RFIChyZWcpKSkpKTsKKyAgcmV0dXJuIEdFVF9NT0RF X1NJWkUgKEdFVF9NT0RFIChyZWcpKTsKK30KKworCiAvKiBDaGVjayBpZiB3 ZSBoYXZlIGEgY29udGlub3VzIHJhbmdlIHRvIGJlIHNhdmUvcmVzdG9yZWQg d2l0aCB0aGUKICAgIGhlbHAgb2YgZW50ZXIvbGVhdmUgaW5zdHJ1Y3Rpb25z LiAgQSB2YWlsZCByZWdpc3RlciByYW5nZSBzdGFydHMKICAgIGZyb20gJHIx MyBhbmQgaXMgdXAgdG8gKGluY2x1ZGluZykgJHIyNi4gICovCiAKIHN0YXRp YyBib29sCi1hcmNfZW50ZXJfbGVhdmVfcCAodW5zaWduZWQgaW50IGdtYXNr KQorYXJjX2VudGVyX2xlYXZlX3AgKHVpbnQ2NF90IGdtYXNrKQogewogICBp bnQgcmVnbm87CiAgIHVuc2lnbmVkIGludCBybWFzayA9IDA7CkBAIC0yOTk4 LDggKzMxMTMsOCBAQCBhcmNfZW50ZXJfbGVhdmVfcCAodW5zaWduZWQgaW50 IGdtYXNrKQogICAgIHJldHVybiBmYWxzZTsKIAogICBmb3IgKHJlZ25vID0g RU5URVJfTEVBVkVfU1RBUlRfUkVHOwotICAgICAgIHJlZ25vIDw9IEVOVEVS X0xFQVZFX0VORF9SRUcgJiYgKGdtYXNrICYgKDFMIDw8IHJlZ25vKSk7IHJl Z25vKyspCi0gICAgcm1hc2sgfD0gMUwgPDwgcmVnbm87CisgICAgICAgcmVn bm8gPD0gRU5URVJfTEVBVkVfRU5EX1JFRyAmJiAoZ21hc2sgJiAoMVVMTCA8 PCByZWdubykpOyByZWdubysrKQorICAgIHJtYXNrIHw9IDFVTEwgPDwgcmVn bm87CiAKICAgaWYgKHJtYXNrIF4gZ21hc2spCiAgICAgcmV0dXJuIGZhbHNl OwpAQCAtMzAxMiwxMyArMzEyNywxNCBAQCBhcmNfZW50ZXJfbGVhdmVfcCAo dW5zaWduZWQgaW50IGdtYXNrKQogICAgaW5zdHJ1Y3Rpb25zLiAgKi8KIAog c3RhdGljIGludAotYXJjX3NhdmVfY2FsbGVlX3NhdmVzICh1bnNpZ25lZCBp bnQgZ21hc2ssCithcmNfc2F2ZV9jYWxsZWVfc2F2ZXMgKHVpbnQ2NF90IGdt YXNrLAogCQkgICAgICAgYm9vbCBzYXZlX2JsaW5rLAogCQkgICAgICAgYm9v bCBzYXZlX2ZwLAogCQkgICAgICAgSE9TVF9XSURFX0lOVCBvZmZzZXQpCiB7 CiAgIHJ0eCByZWc7CiAgIGludCBmcmFtZV9hbGxvY2F0ZWQgPSAwOworICBp bnQgaTsKIAogICAvKiBUaGUgaG9tZS1ncm93biBBQkkgc2F5cyBsaW5rIHJl Z2lzdGVyIGlzIHNhdmVkIGZpcnN0LiAgKi8KICAgaWYgKHNhdmVfYmxpbmsp CkBAIC0zMDMwLDE5ICszMTQ2LDE5IEBAIGFyY19zYXZlX2NhbGxlZV9zYXZl cyAodW5zaWduZWQgaW50IGdtYXNrLAogCiAgIC8qIE4uQi4gRlJBTUVfUE9J TlRFUl9NQVNLIGFuZCBSRVRVUk5fQUREUl9NQVNLIGFyZSBjbGVhcmVkIGlu IGdtYXNrLiAgKi8KICAgaWYgKGdtYXNrKQotICAgIGZvciAoaW50IGkgPSAz MTsgaSA+PSAwOyBpLS0pCisgICAgZm9yIChpID0gR01BU0tfTEVOOyBpID49 IDA7IGktLSkKICAgICAgIHsKIAltYWNoaW5lX21vZGUgc2F2ZV9tb2RlID0g U0ltb2RlOwogCiAJaWYgKFRBUkdFVF9MTDY0CiAJICAgICYmICgoaSAtIDEp ICUgMiA9PSAwKQotCSAgICAmJiAoKGdtYXNrICYgKDFMIDw8IGkpKSAhPSAw KQotCSAgICAmJiAoKGdtYXNrICYgKDFMIDw8IChpIC0gMSkpKSAhPSAwKSkK KwkgICAgJiYgKChnbWFzayAmICgxVUxMIDw8IGkpKSAhPSAwKQorCSAgICAm JiAoKGdtYXNrICYgKDFVTEwgPDwgKGkgLSAxKSkpICE9IDApKQogCSAgewog CSAgICBzYXZlX21vZGUgPSBESW1vZGU7CiAJICAgIC0taTsKIAkgIH0KLQll bHNlIGlmICgoZ21hc2sgJiAoMUwgPDwgaSkpID09IDApCisJZWxzZSBpZiAo KGdtYXNrICYgKDFVTEwgPDwgaSkpID09IDApCiAJICBjb250aW51ZTsKIAog CXJlZyA9IGdlbl9ydHhfUkVHIChzYXZlX21vZGUsIGkpOwpAQCAtMzA1MCw2 ICszMTY2LDQxIEBAIGFyY19zYXZlX2NhbGxlZV9zYXZlcyAodW5zaWduZWQg aW50IGdtYXNrLAogCW9mZnNldCA9IDA7CiAgICAgICB9CiAKKyAgLyogQ2hl Y2sgaWYgd2UgbmVlZCB0byBzYXZlIHRoZSBaT0wgbWFjaGluZXJ5LiAgKi8K KyAgaWYgKGFyY19scGN3aWR0aCAhPSAwICYmIGFyY19tdXN0X3NhdmVfcmVn aXN0ZXIgKExQX0NPVU5ULCBjZnVuLCB0cnVlKSkKKyAgICB7CisgICAgICBy dHggcmVnMCA9IGdlbl9ydHhfUkVHIChTSW1vZGUsIFIwX1JFRyk7CisgICAg ICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChyZWcwLAorCQkJICAgICAgZ2Vu X3J0eF9VTlNQRUNfVk9MQVRJTEUKKwkJCSAgICAgIChQbW9kZSwgZ2VuX3J0 dmVjICgxLCBHRU5fSU5UIChBVVhfTFBfU1RBUlQpKSwKKwkJCSAgICAgICBW VU5TUEVDX0FSQ19MUikpKTsKKyAgICAgIGZyYW1lX2FsbG9jYXRlZCArPSBw dXNoX3JlZyAocmVnMCk7CisgICAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VU IChyZWcwLAorCQkJICAgICAgZ2VuX3J0eF9VTlNQRUNfVk9MQVRJTEUKKwkJ CSAgICAgIChQbW9kZSwgZ2VuX3J0dmVjICgxLCBHRU5fSU5UIChBVVhfTFBf RU5EKSksCisJCQkgICAgICAgVlVOU1BFQ19BUkNfTFIpKSk7CisgICAgICBm cmFtZV9hbGxvY2F0ZWQgKz0gcHVzaF9yZWcgKHJlZzApOworICAgICAgZW1p dF9tb3ZlX2luc24gKHJlZzAsIGdlbl9ydHhfUkVHIChTSW1vZGUsIExQX0NP VU5UKSk7CisgICAgICBmcmFtZV9hbGxvY2F0ZWQgKz0gcHVzaF9yZWcgKHJl ZzApOworICAgIH0KKworICAvKiBTYXZlIEFVWCByZWdzIHVzZWQgYnkgRlBY IG1hY2hpbmVyeS4gICovCisgIGlmIChhcmNfbXVzdF9zYXZlX3JlZ2lzdGVy IChUQVJHRVRfQklHX0VORElBTiA/IFI0MV9SRUcgOiBSNDBfUkVHLAorCQkJ ICAgICAgY2Z1biwgVEFSR0VUX0RQRlApKQorICAgIHsKKyAgICAgIHJ0eCBy ZWcwID0gZ2VuX3J0eF9SRUcgKFNJbW9kZSwgUjBfUkVHKTsKKworICAgICAg Zm9yIChpID0gMDsgaSA8IDQ7IGkrKykKKwl7CisJICBlbWl0X2luc24gKGdl bl9ydHhfU0VUIChyZWcwLAorCQkJCSAgZ2VuX3J0eF9VTlNQRUNfVk9MQVRJ TEUKKwkJCQkgIChQbW9kZSwgZ2VuX3J0dmVjICgxLCBHRU5fSU5UIChBVVhf RFBGUF9TVEFSVAorCQkJCQkJCQkgKyBpKSksCisJCQkJICAgVlVOU1BFQ19B UkNfTFIpKSk7CisJICBmcmFtZV9hbGxvY2F0ZWQgKz0gcHVzaF9yZWcgKHJl ZzApOworCX0KKyAgICB9CisKICAgLyogU2F2ZSBmcmFtZSBwb2ludGVyIGlm IG5lZWRlZC4gIEZpcnN0IHNhdmUgdGhlIEZQIG9uIHN0YWNrLCBpZiBub3QK ICAgICAgYXV0b3NhdmVkLiAgVW5mb3J0dW5hdGVseSwgSSBjYW5ub3QgYWRk IGl0IHRvIGdtYXNrIGFuZCB1c2UgdGhlCiAgICAgIGFib3ZlIGxvb3AgdG8g c2F2ZSBmcCBiZWNhdXNlIG91ciBBQkkgc3RhdGVzIGZwIGdvZXMgYWZ0ZXJ0 IGFsbApAQCAtMzA3MSw3ICszMjIyLDcgQEAgYXJjX3NhdmVfY2FsbGVlX3Nh dmVzICh1bnNpZ25lZCBpbnQgZ21hc2ssCiAgICBpZiBpdCBpcyBmb3IgYW4g aW50ZXJydXB0IGhhbmRsZXIpIHVzaW5nIExEL0xERCBpbnN0cnVjdGlvbnMu ICAqLwogCiBzdGF0aWMgaW50Ci1hcmNfcmVzdG9yZV9jYWxsZWVfc2F2ZXMg KHVuc2lnbmVkIGludCBnbWFzaywKK2FyY19yZXN0b3JlX2NhbGxlZV9zYXZl cyAodWludDY0X3QgZ21hc2ssCiAJCQkgIGJvb2wgcmVzdG9yZV9ibGluaywK IAkJCSAgYm9vbCByZXN0b3JlX2ZwLAogCQkJICBIT1NUX1dJREVfSU5UIG9m ZnNldCwKQEAgLTMwODEsNiArMzIzMiw3IEBAIGFyY19yZXN0b3JlX2NhbGxl ZV9zYXZlcyAodW5zaWduZWQgaW50IGdtYXNrLAogICBpbnQgZnJhbWVfZGVh bGxvY2F0ZWQgPSAwOwogICBIT1NUX1dJREVfSU5UIG9mZnMgPSBjZnVuLT5t YWNoaW5lLT5mcmFtZV9pbmZvLnJlZ19zaXplOwogICBib29sIGVhcmx5X2Js aW5rX3Jlc3RvcmU7CisgIGludCBpOwogCiAgIC8qIEVtaXQgbW92IGZwLHNw LiAgKi8KICAgaWYgKGFyY19mcmFtZV9wb2ludGVyX25lZWRlZCAoKSAmJiBv ZmZzZXQpCkBAIC0zMDk3LDYgKzMyNDksNDMgQEAgYXJjX3Jlc3RvcmVfY2Fs bGVlX3NhdmVzICh1bnNpZ25lZCBpbnQgZ21hc2ssCiAgICAgICBmcmFtZV9k ZWFsbG9jYXRlZCArPSBmcmFtZV9yZXN0b3JlX3JlZyAoaGFyZF9mcmFtZV9w b2ludGVyX3J0eCwgMCk7CiAgICAgfQogCisgIC8qIFJlc3RvcmUgQVVYLXJl Z3MgdXNlZCBieSBGUFggbWFjaGluZXJ5LiAgKi8KKyAgaWYgKGFyY19tdXN0 X3NhdmVfcmVnaXN0ZXIgKFRBUkdFVF9CSUdfRU5ESUFOID8gUjQxX1JFRyA6 IFI0MF9SRUcsCisJCQkgICAgICBjZnVuLCBUQVJHRVRfRFBGUCkpCisgICAg eworICAgICAgcnR4IHJlZzAgPSBnZW5fcnR4X1JFRyAoU0ltb2RlLCBSMF9S RUcpOworCisgICAgICBnY2NfYXNzZXJ0IChvZmZzZXQgPT0gMCk7CisgICAg ICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorCXsKKwkgIGZyYW1lX2RlYWxs b2NhdGVkICs9IHBvcF9yZWcgKHJlZzApOworCSAgZW1pdF9pbnNuIChnZW5f cnR4X1VOU1BFQ19WT0xBVElMRQorCQkgICAgIChWT0lEbW9kZSwgZ2VuX3J0 dmVjICgyLCByZWcwLCBHRU5fSU5UIChBVVhfRFBGUF9TVEFSVAorCQkJCQkJ CSAgICAgKyBpKSksCisJCSAgICAgIFZVTlNQRUNfQVJDX1NSKSk7CisJfQor ICAgIH0KKworICAvKiBDaGVjayBpZiB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhl IFpPTCBtYWNoaW5lcnkuICAqLworICBpZiAoYXJjX2xwY3dpZHRoICE9MCAm JiBhcmNfbXVzdF9zYXZlX3JlZ2lzdGVyIChMUF9DT1VOVCwgY2Z1biwgdHJ1 ZSkpCisgICAgeworICAgICAgcnR4IHJlZzAgPSBnZW5fcnR4X1JFRyAoU0lt b2RlLCBSMF9SRUcpOworCisgICAgICBnY2NfYXNzZXJ0IChvZmZzZXQgPT0g MCk7CisgICAgICBmcmFtZV9kZWFsbG9jYXRlZCArPSBwb3BfcmVnIChyZWcw KTsKKyAgICAgIGVtaXRfbW92ZV9pbnNuIChnZW5fcnR4X1JFRyAoU0ltb2Rl LCBMUF9DT1VOVCksIHJlZzApOworCisgICAgICBmcmFtZV9kZWFsbG9jYXRl ZCArPSBwb3BfcmVnIChyZWcwKTsKKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3J0 eF9VTlNQRUNfVk9MQVRJTEUKKwkJIChWT0lEbW9kZSwgZ2VuX3J0dmVjICgy LCByZWcwLCBHRU5fSU5UIChBVVhfTFBfRU5EKSksCisJCSAgVlVOU1BFQ19B UkNfU1IpKTsKKworICAgICAgZnJhbWVfZGVhbGxvY2F0ZWQgKz0gcG9wX3Jl ZyAocmVnMCk7CisgICAgICBlbWl0X2luc24gKGdlbl9ydHhfVU5TUEVDX1ZP TEFUSUxFCisJCSAoVk9JRG1vZGUsIGdlbl9ydHZlYyAoMiwgcmVnMCwgR0VO X0lOVCAoQVVYX0xQX1NUQVJUKSksCisJCSAgVlVOU1BFQ19BUkNfU1IpKTsK KyAgICB9CisKICAgaWYgKG9mZnNldCkKICAgICB7CiAgICAgICAvKiBObyAk ZnAgaW52b2x2ZWQsIHdlIG5lZWQgdG8gZG8gYW4gYWRkIHRvIHNldCB0aGUg JHNwIHRvIHRoZQpAQCAtMzEwNyw3ICszMjk2LDggQEAgYXJjX3Jlc3RvcmVf Y2FsbGVlX3NhdmVzICh1bnNpZ25lZCBpbnQgZ21hc2ssCiAgICAgfQogCiAg IC8qIFdoZW4gd2UgZG8gbm90IG9wdGltaXplIGZvciBzaXplLCByZXN0b3Jl IGZpcnN0IGJsaW5rLiAgKi8KLSAgZWFybHlfYmxpbmtfcmVzdG9yZSA9IHJl c3RvcmVfYmxpbmsgJiYgIW9wdGltaXplX3NpemUgJiYgb2ZmczsKKyAgZWFy bHlfYmxpbmtfcmVzdG9yZSA9IHJlc3RvcmVfYmxpbmsgJiYgIW9wdGltaXpl X3NpemUgJiYgb2ZmcworICAgICYmICFBUkNfSU5URVJSVVBUX1AgKGFyY19j b21wdXRlX2Z1bmN0aW9uX3R5cGUgKGNmdW4pKTsKICAgaWYgKGVhcmx5X2Js aW5rX3Jlc3RvcmUpCiAgICAgewogICAgICAgcnR4IGFkZHIgPSBwbHVzX2Nv bnN0YW50IChQbW9kZSwgc3RhY2tfcG9pbnRlcl9ydHgsIG9mZnMpOwpAQCAt MzEyMCwxNiArMzMxMCwxNiBAQCBhcmNfcmVzdG9yZV9jYWxsZWVfc2F2ZXMg KHVuc2lnbmVkIGludCBnbWFzaywKIAogICAvKiBOLkIuIEZSQU1FX1BPSU5U RVJfTUFTSyBhbmQgUkVUVVJOX0FERFJfTUFTSyBhcmUgY2xlYXJlZCBpbiBn bWFzay4gICovCiAgIGlmIChnbWFzaykKLSAgICBmb3IgKGludCBpID0gMDsg aSA8PSBHTUFTS19MRU47IGkrKykKKyAgICBmb3IgKGkgPSAwOyBpIDw9IEdN QVNLX0xFTjsgaSsrKQogICAgICAgewogCW1hY2hpbmVfbW9kZSByZXN0b3Jl X21vZGUgPSBTSW1vZGU7CiAKIAlpZiAoVEFSR0VUX0xMNjQKIAkgICAgJiYg KChpICUgMikgPT0gMCkKLQkgICAgJiYgKChnbWFzayAmICgxTCA8PCBpKSkg IT0gMCkKLQkgICAgJiYgKChnbWFzayAmICgxTCA8PCAoaSArIDEpKSkgIT0g MCkpCisJICAgICYmICgoZ21hc2sgJiAoMVVMTCA8PCBpKSkgIT0gMCkKKwkg ICAgJiYgKChnbWFzayAmICgxVUxMIDw8IChpICsgMSkpKSAhPSAwKSkKIAkg IHJlc3RvcmVfbW9kZSA9IERJbW9kZTsKLQllbHNlIGlmICgoZ21hc2sgJiAo MUwgPDwgaSkpID09IDApCisJZWxzZSBpZiAoKGdtYXNrICYgKDFVTEwgPDwg aSkpID09IDApCiAJICBjb250aW51ZTsKIAogCXJlZyA9IGdlbl9ydHhfUkVH IChyZXN0b3JlX21vZGUsIGkpOwpAQCAtMzEzNywxMiArMzMyNywxMiBAQCBh cmNfcmVzdG9yZV9jYWxsZWVfc2F2ZXMgKHVuc2lnbmVkIGludCBnbWFzaywK IAlzd2l0Y2ggKHJlc3RvcmVfbW9kZSkKIAkgIHsKIAkgIGNhc2UgRV9ESW1v ZGU6Ci0JICAgIGlmICgoR01BU0tfTEVOIC0gX19idWlsdGluX2NseiAoZ21h c2spKSA9PSAoaSArIDEpCisJICAgIGlmICgoR01BU0tfTEVOIC0gX19idWls dGluX2NsemxsIChnbWFzaykpID09IChpICsgMSkKIAkJJiYgZWFybHlfYmxp bmtfcmVzdG9yZSkKIAkgICAgICBvZmZzID0gNDsKIAkgICAgYnJlYWs7CiAJ ICBjYXNlIEVfU0ltb2RlOgotCSAgICBpZiAoKEdNQVNLX0xFTiAtIF9fYnVp bHRpbl9jbHogKGdtYXNrKSkgPT0gaQorCSAgICBpZiAoKEdNQVNLX0xFTiAt IF9fYnVpbHRpbl9jbHpsbCAoZ21hc2spKSA9PSBpCiAJCSYmIGVhcmx5X2Js aW5rX3Jlc3RvcmUpCiAJICAgICAgb2ZmcyA9IDQ7CiAJICAgIGJyZWFrOwpA QCAtMzE3NSw3ICszMzY1LDcgQEAgYXJjX3Jlc3RvcmVfY2FsbGVlX3NhdmVz ICh1bnNpZ25lZCBpbnQgZ21hc2ssCiAgICByZWdpc3Rlci4gICovCiAKIHN0 YXRpYyBpbnQKLWFyY19zYXZlX2NhbGxlZV9lbnRlciAodW5zaWduZWQgaW50 IGdtYXNrLAorYXJjX3NhdmVfY2FsbGVlX2VudGVyICh1aW50NjRfdCBnbWFz aywKIAkJICAgICAgIGJvb2wgc2F2ZV9ibGluaywKIAkJICAgICAgIGJvb2wg c2F2ZV9mcCwKIAkJICAgICAgIEhPU1RfV0lERV9JTlQgb2Zmc2V0KQpAQCAt MzE4Niw3ICszMzc2LDcgQEAgYXJjX3NhdmVfY2FsbGVlX2VudGVyICh1bnNp Z25lZCBpbnQgZ21hc2ssCiAgIHJ0eCBpbnNuLCByZWcsIG1lbTsKICAgaW50 IGZyYW1lX2FsbG9jYXRlZCA9IDA7CiAKLSAgZm9yIChyZWdubyA9IHN0YXJ0 X3JlZzsgcmVnbm8gPD0gZW5kX3JlZyAmJiAoZ21hc2sgJiAoMUwgPDwgcmVn bm8pKTspCisgIGZvciAocmVnbm8gPSBzdGFydF9yZWc7IHJlZ25vIDw9IGVu ZF9yZWcgJiYgKGdtYXNrICYgKDFVTEwgPDwgcmVnbm8pKTspCiAgICAgcmVn bm8rKzsKIAogICBlbmRfcmVnID0gcmVnbm8gLSAxOwpAQCAtMzIzMSw3ICsz NDIxLDcgQEAgYXJjX3NhdmVfY2FsbGVlX2VudGVyICh1bnNpZ25lZCBpbnQg Z21hc2ssCiAJCQkJCQkgIG9mZikpOwogICAgICAgWFZFQ0VYUCAoaW5zbiwg MCwgaW5keCkgPSBnZW5fcnR4X1NFVCAobWVtLCByZWcpOwogICAgICAgUlRY X0ZSQU1FX1JFTEFURURfUCAoWFZFQ0VYUCAoaW5zbiwgMCwgaW5keCkpID0g MTsKLSAgICAgIGdtYXNrID0gZ21hc2sgJiB+KDFMIDw8IHJlZ25vKTsKKyAg ICAgIGdtYXNrID0gZ21hc2sgJiB+KDFVTEwgPDwgcmVnbm8pOwogICAgIH0K IAogICBpZiAoc2F2ZV9mcCkKQEAgLTMyNjYsNyArMzQ1Niw3IEBAIGFyY19z YXZlX2NhbGxlZV9lbnRlciAodW5zaWduZWQgaW50IGdtYXNrLAogICAgKFJF U1RPUkVfRlApLCBhbmQgY2FuIGF1dG9tYXRpYyByZXR1cm4gKFJFVFVSTl9Q KS4gICovCiAKIHN0YXRpYyBpbnQKLWFyY19yZXN0b3JlX2NhbGxlZV9sZWF2 ZSAodW5zaWduZWQgaW50IGdtYXNrLAorYXJjX3Jlc3RvcmVfY2FsbGVlX2xl YXZlICh1aW50NjRfdCBnbWFzaywKIAkJCSAgYm9vbCByZXN0b3JlX2JsaW5r LAogCQkJICBib29sIHJlc3RvcmVfZnAsCiAJCQkgIGJvb2wgcmV0dXJuX3As CkBAIC0zMjc4LDcgKzM0NjgsNyBAQCBhcmNfcmVzdG9yZV9jYWxsZWVfbGVh dmUgKHVuc2lnbmVkIGludCBnbWFzaywKICAgcnR4IGluc24sIHJlZywgbWVt OwogICBpbnQgZnJhbWVfYWxsb2NhdGVkID0gMDsKIAotICBmb3IgKHJlZ25v ID0gc3RhcnRfcmVnOyByZWdubyA8PSBlbmRfcmVnICYmIChnbWFzayAmICgx TCA8PCByZWdubykpOykKKyAgZm9yIChyZWdubyA9IHN0YXJ0X3JlZzsgcmVn bm8gPD0gZW5kX3JlZyAmJiAoZ21hc2sgJiAoMVVMTCA8PCByZWdubykpOykK ICAgICByZWdubysrOwogCiAgIGVuZF9yZWcgPSByZWdubyAtIDE7CkBAIC0z MzM5LDcgKzM1MjksNyBAQCBhcmNfcmVzdG9yZV9jYWxsZWVfbGVhdmUgKHVu c2lnbmVkIGludCBnbWFzaywKIAkJCQkJCSAgb2ZmKSk7CiAgICAgICBYVkVD RVhQIChpbnNuLCAwLCBpbmR4KSA9IGdlbl9ydHhfU0VUIChyZWcsIG1lbSk7 CiAgICAgICBSVFhfRlJBTUVfUkVMQVRFRF9QIChYVkVDRVhQIChpbnNuLCAw LCBpbmR4KSkgPSAxOwotICAgICAgZ21hc2sgPSBnbWFzayAmIH4oMUwgPDwg cmVnbm8pOworICAgICAgZ21hc2sgPSBnbWFzayAmIH4oMVVMTCA8PCByZWdu byk7CiAgICAgfQogCiAgIGlmIChyZXN0b3JlX2ZwKQpAQCAtMzQwMiw3ICsz NTkyLDcgQEAgYXJjX3Jlc3RvcmVfY2FsbGVlX2xlYXZlICh1bnNpZ25lZCBp bnQgZ21hc2ssCiAqLwogCiBzdGF0aWMgaW50Ci1hcmNfc2F2ZV9jYWxsZWVf bWlsbGkgKHVuc2lnbmVkIGludCBnbWFzaywKK2FyY19zYXZlX2NhbGxlZV9t aWxsaSAodWludDY0X3QgZ21hc2ssCiAJCSAgICAgICBib29sIHNhdmVfYmxp bmssCiAJCSAgICAgICBib29sIHNhdmVfZnAsCiAJCSAgICAgICBIT1NUX1dJ REVfSU5UIG9mZnNldCwKQEAgLTM0MTQsNyArMzYwNCw3IEBAIGFyY19zYXZl X2NhbGxlZV9taWxsaSAodW5zaWduZWQgaW50IGdtYXNrLAogICBydHggaW5z biwgcmVnLCBtZW07CiAgIGludCBmcmFtZV9hbGxvY2F0ZWQgPSAwOwogCi0g IGZvciAocmVnbm8gPSBzdGFydF9yZWc7IHJlZ25vIDw9IGVuZF9yZWcgJiYg KGdtYXNrICYgKDFMIDw8IHJlZ25vKSk7KQorICBmb3IgKHJlZ25vID0gc3Rh cnRfcmVnOyByZWdubyA8PSBlbmRfcmVnICYmIChnbWFzayAmICgxVUxMIDw8 IHJlZ25vKSk7KQogICAgIHJlZ25vKys7CiAKICAgZW5kX3JlZyA9IHJlZ25v IC0gMTsKQEAgLTM0NTcsNyArMzY0Nyw3IEBAIGFyY19zYXZlX2NhbGxlZV9t aWxsaSAodW5zaWduZWQgaW50IGdtYXNrLAogCQkJCQkJICBvZmYpKTsKICAg ICAgIFhWRUNFWFAgKGluc24sIDAsIGluZHgpID0gZ2VuX3J0eF9TRVQgKG1l bSwgcmVnKTsKICAgICAgIFJUWF9GUkFNRV9SRUxBVEVEX1AgKFhWRUNFWFAg KGluc24sIDAsIGluZHgpKSA9IDE7Ci0gICAgICBnbWFzayA9IGdtYXNrICYg figxTCA8PCByZWdubyk7CisgICAgICBnbWFzayA9IGdtYXNrICYgfigxVUxM IDw8IHJlZ25vKTsKICAgICB9CiAgIGluc24gPSBmcmFtZV9pbnNuIChpbnNu KTsKIApAQCAtMzQ4NSw5ICszNjc1LDkgQEAgYXJjX3NhdmVfY2FsbGVlX21p bGxpICh1bnNpZ25lZCBpbnQgZ21hc2ssCiAgICAgfQogCiAgIC8qIFNhdmUg cmVtYWluaW5nIHJlZ2lzdGVycyB1c2luZyBzdCBpbnN0cnVjdGlvbnMuICAq LwotICBmb3IgKHJlZ25vID0gMDsgcmVnbm8gPD0gMzE7IHJlZ25vKyspCisg IGZvciAocmVnbm8gPSAwOyByZWdubyA8PSBHTUFTS19MRU47IHJlZ25vKysp CiAgICAgewotICAgICAgaWYgKChnbWFzayAmICgxTCA8PCByZWdubykpID09 IDApCisgICAgICBpZiAoKGdtYXNrICYgKDFVTEwgPDwgcmVnbm8pKSA9PSAw KQogCWNvbnRpbnVlOwogCiAgICAgICByZWcgPSBnZW5fcnR4X1JFRyAoU0lt b2RlLCByZWdubyk7CkBAIC0zNTE2LDcgKzM3MDYsNyBAQCBhcmNfc2F2ZV9j YWxsZWVfbWlsbGkgKHVuc2lnbmVkIGludCBnbWFzaywKIC8qIExpa2UgdGhl IHByZXZpb3VzIGZ1bmN0aW9uIGJ1dCByZXN0b3JlLiAgKi8KIAogc3RhdGlj IGludAotYXJjX3Jlc3RvcmVfY2FsbGVlX21pbGxpICh1bnNpZ25lZCBpbnQg Z21hc2ssCithcmNfcmVzdG9yZV9jYWxsZWVfbWlsbGkgKHVpbnQ2NF90IGdt YXNrLAogCQkJICBib29sIHJlc3RvcmVfYmxpbmssCiAJCQkgIGJvb2wgcmVz dG9yZV9mcCwKIAkJCSAgYm9vbCByZXR1cm5fcCwKQEAgLTM1MjgsNyArMzcx OCw3IEBAIGFyY19yZXN0b3JlX2NhbGxlZV9taWxsaSAodW5zaWduZWQgaW50 IGdtYXNrLAogICBydHggaW5zbiwgcmVnLCBtZW07CiAgIGludCBmcmFtZV9h bGxvY2F0ZWQgPSAwOwogCi0gIGZvciAocmVnbm8gPSBzdGFydF9yZWc7IHJl Z25vIDw9IGVuZF9yZWcgJiYgKGdtYXNrICYgKDFMIDw8IHJlZ25vKSk7KQor ICBmb3IgKHJlZ25vID0gc3RhcnRfcmVnOyByZWdubyA8PSBlbmRfcmVnICYm IChnbWFzayAmICgxVUxMIDw8IHJlZ25vKSk7KQogICAgIHJlZ25vKys7CiAK ICAgZW5kX3JlZyA9IHJlZ25vIC0gMTsKQEAgLTM1ODgsMTMgKzM3NzgsMTMg QEAgYXJjX3Jlc3RvcmVfY2FsbGVlX21pbGxpICh1bnNpZ25lZCBpbnQgZ21h c2ssCiAJCQkJCQkgIG9mZikpOwogICAgICAgWFZFQ0VYUCAoaW5zbiwgMCwg aW5keCkgPSBnZW5fcnR4X1NFVCAocmVnLCBtZW0pOwogICAgICAgUlRYX0ZS QU1FX1JFTEFURURfUCAoWFZFQ0VYUCAoaW5zbiwgMCwgaW5keCkpID0gMTsK LSAgICAgIGdtYXNrID0gZ21hc2sgJiB+KDFMIDw8IHJlZ25vKTsKKyAgICAg IGdtYXNrID0gZ21hc2sgJiB+KDFVTEwgPDwgcmVnbm8pOwogICAgIH0KIAog ICAvKiBSZXN0b3JlIHJlbWFpbmluZyByZWdpc3RlcnMgdXNpbmcgTEQgaW5z dHJ1Y3Rpb25zLiAgKi8KLSAgZm9yIChyZWdubyA9IDA7IHJlZ25vIDw9IDMx OyByZWdubysrKQorICBmb3IgKHJlZ25vID0gMDsgcmVnbm8gPD0gR01BU0tf TEVOOyByZWdubysrKQogICAgIHsKLSAgICAgIGlmICgoZ21hc2sgJiAoMUwg PDwgcmVnbm8pKSA9PSAwKQorICAgICAgaWYgKChnbWFzayAmICgxVUxMIDw8 IHJlZ25vKSkgPT0gMCkKIAljb250aW51ZTsKIAogICAgICAgcmVnID0gZ2Vu X3J0eF9SRUcgKFNJbW9kZSwgcmVnbm8pOwpAQCAtMzY0NCw3ICszODM0LDcg QEAgdm9pZAogYXJjX2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKIHsKICAgaW50 IHNpemU7Ci0gIHVuc2lnbmVkIGludCBnbWFzayA9IGNmdW4tPm1hY2hpbmUt PmZyYW1lX2luZm8uZ21hc2s7CisgIHVpbnQ2NF90IGdtYXNrID0gY2Z1bi0+ bWFjaGluZS0+ZnJhbWVfaW5mby5nbWFzazsKICAgc3RydWN0IGFyY19mcmFt ZV9pbmZvICpmcmFtZSA9ICZjZnVuLT5tYWNoaW5lLT5mcmFtZV9pbmZvOwog ICB1bnNpZ25lZCBpbnQgZnJhbWVfc2l6ZV90b19hbGxvY2F0ZTsKICAgaW50 IGZpcnN0X29mZnNldCA9IDA7CkBAIC0zNzE3LDYgKzM5MDcsMzAgQEAgYXJj X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKICAgZW1pdF9pbnNuIChnZW5fYmxv Y2thZ2UgKCkpOwogfQogCisvKiBSZXR1cm4gdGhlIHJlZ2lzdGVyIG51bWJl ciBvZiB0aGUgcmVnaXN0ZXIgaG9sZGluZyB0aGUgcmV0dXJuIGFkZHJlc3MK KyAgIGZvciBhIGZ1bmN0aW9uIG9mIHR5cGUgVFlQRS4gICovCisKK3N0YXRp YyBpbnQKK2FyY19yZXR1cm5fYWRkcmVzc19yZWdpc3RlciAodW5zaWduZWQg aW50IGZuX3R5cGUpCit7CisgIGludCByZWdubyA9IDA7CisKKyAgaWYgKEFS Q19JTlRFUlJVUFRfUCAoZm5fdHlwZSkpCisgICAgeworICAgICAgaWYgKChm bl90eXBlICYgKEFSQ19GVU5DVElPTl9JTElOSzEgfCBBUkNfRlVOQ1RJT05f RklSUSkpICE9IDApCisJcmVnbm8gPSBJTElOSzFfUkVHOworICAgICAgZWxz ZSBpZiAoKGZuX3R5cGUgJiBBUkNfRlVOQ1RJT05fSUxJTksyKSAhPSAwKQor CXJlZ25vID0gSUxJTksyX1JFRzsKKyAgICAgIGVsc2UKKwlnY2NfdW5yZWFj aGFibGUgKCk7CisgICAgfQorICBlbHNlIGlmIChBUkNfTk9STUFMX1AgKGZu X3R5cGUpIHx8IEFSQ19OQUtFRF9QIChmbl90eXBlKSkKKyAgICByZWdubyA9 IFJFVFVSTl9BRERSX1JFR05VTTsKKworICBnY2NfYXNzZXJ0IChyZWdubyAh PSAwKTsKKyAgcmV0dXJuIHJlZ25vOworfQorCiAvKiBEbyBhbnkgbmVjZXNz YXJ5IGNsZWFudXAgYWZ0ZXIgYSBmdW5jdGlvbiB0byByZXN0b3JlIHN0YWNr LCBmcmFtZSwKICAgIGFuZCByZWdzLiAgKi8KIApAQCAtMzczMiwxMiArMzk0 NiwxMSBAQCBhcmNfZXhwYW5kX2VwaWxvZ3VlIChpbnQgc2liY2FsbF9wKQog ICBib29sIHJlc3RvcmVfZnAgPSBhcmNfZnJhbWVfcG9pbnRlcl9uZWVkZWQg KCkgJiYgIUFSQ19BVVRPRlBfSVJRX1AgKGZuX3R5cGUpOwogICBib29sIHJl c3RvcmVfYmxpbmsgPSBhcmNfbXVzdF9zYXZlX3JldHVybl9hZGRyIChjZnVu KQogICAgICYmICFBUkNfQVVUT0JMSU5LX0lSUV9QIChmbl90eXBlKTsKLSAg dW5zaWduZWQgaW50IGdtYXNrID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWVfaW5m by5nbWFzazsKKyAgdWludDY0X3QgZ21hc2sgPSBjZnVuLT5tYWNoaW5lLT5m cmFtZV9pbmZvLmdtYXNrOwogICBib29sIHJldHVybl9wID0gIXNpYmNhbGxf cCAmJiBmbl90eXBlID09IEFSQ19GVU5DVElPTl9OT1JNQUwKIAkJICAgJiYg IWNmdW4tPm1hY2hpbmUtPmZyYW1lX2luZm8ucHJldGVuZF9zaXplOwogICBz dHJ1Y3QgYXJjX2ZyYW1lX2luZm8gKmZyYW1lID0gJmNmdW4tPm1hY2hpbmUt PmZyYW1lX2luZm87CiAKLQogICAvKiBOYWtlZCBmdW5jdGlvbnMgZG9uJ3Qg aGF2ZSBlcGlsb2d1ZS4gICovCiAgIGlmIChBUkNfTkFLRURfUCAoZm5fdHlw ZSkpCiAgICAgcmV0dXJuOwpAQCAtMzgxMiw3ICs0MDI1LDE4IEBAIGFyY19l eHBhbmRfZXBpbG9ndWUgKGludCBzaWJjYWxsX3ApCiAJCQkgICAgICBFSF9S RVRVUk5fU1RBQ0tBREpfUlRYKSk7CiAKICAgLyogRW1pdCB0aGUgcmV0dXJu IGluc3RydWN0aW9uLiAgKi8KLSAgaWYgKHNpYmNhbGxfcCA9PSBGQUxTRSkK KyAgaWYgKEFSQ19JTlRFUlJVUFRfUCAoZm5fdHlwZSkpCisgICAgeworICAg ICAgcnR4IHJhID0gZ2VuX3J0eF9SRUcgKFBtb2RlLCBhcmNfcmV0dXJuX2Fk ZHJlc3NfcmVnaXN0ZXIgKGZuX3R5cGUpKTsKKworICAgICAgaWYgKFRBUkdF VF9WMikKKwllbWl0X2p1bXBfaW5zbiAoZ2VuX3J0aWUgKCkpOworICAgICAg ZWxzZSBpZiAoVEFSR0VUX0FSQzcwMCkKKwllbWl0X2p1bXBfaW5zbiAoZ2Vu X3J0aWUgKCkpOworICAgICAgZWxzZQorCWVtaXRfanVtcF9pbnNuIChnZW5f YXJjNjAwX3J0aWUgKHJhKSk7CisgICAgfQorICBlbHNlIGlmIChzaWJjYWxs X3AgPT0gRkFMU0UpCiAgICAgZW1pdF9qdW1wX2luc24gKGdlbl9zaW1wbGVf cmV0dXJuICgpKTsKIH0KIApAQCAtOTc1OSwxMiArOTk4Myw2IEBAIGFyY19j aGVja19taWxsaWNvZGUgKHJ0eCBvcCwgaW50IG9mZnNldCwgaW50IGxvYWRf cCkKIAogLyogQWNjZXNzb3IgZnVuY3Rpb25zIGZvciBjZnVuLT5tYWNoaW5l LT51bmFsaWduLiAgKi8KIAotaW50Ci1hcmNfZ2V0X3VuYWxpZ24gKHZvaWQp Ci17Ci0gIHJldHVybiBjZnVuLT5tYWNoaW5lLT51bmFsaWduOwotfQotCiB2 b2lkCiBhcmNfY2xlYXJfdW5hbGlnbiAodm9pZCkKIHsKQEAgLTEwMTk5LDI5 ICsxMDQxNyw2IEBAIGFyY19jYW5fZm9sbG93X2p1bXAgKGNvbnN0IHJ0eF9p bnNuICpmb2xsb3dlciwgY29uc3QgcnR4X2luc24gKmZvbGxvd2VlKQogICBy ZXR1cm4gdHJ1ZTsKIH0KIAotLyogUmV0dXJuIHRoZSByZWdpc3RlciBudW1i ZXIgb2YgdGhlIHJlZ2lzdGVyIGhvbGRpbmcgdGhlIHJldHVybiBhZGRyZXNz Ci0gICBmb3IgYSBmdW5jdGlvbiBvZiB0eXBlIFRZUEUuICAqLwotCi1pbnQK LWFyY19yZXR1cm5fYWRkcmVzc19yZWdpc3RlciAodW5zaWduZWQgaW50IGZu X3R5cGUpCi17Ci0gIGludCByZWdubyA9IDA7Ci0KLSAgaWYgKEFSQ19JTlRF UlJVUFRfUCAoZm5fdHlwZSkpCi0gICAgewotICAgICAgaWYgKChmbl90eXBl ICYgKEFSQ19GVU5DVElPTl9JTElOSzEgfCBBUkNfRlVOQ1RJT05fRklSUSkp ICE9IDApCi0JcmVnbm8gPSBJTElOSzFfUkVHOwotICAgICAgZWxzZSBpZiAo KGZuX3R5cGUgJiBBUkNfRlVOQ1RJT05fSUxJTksyKSAhPSAwKQotCXJlZ25v ID0gSUxJTksyX1JFRzsKLSAgICAgIGVsc2UKLQlnY2NfdW5yZWFjaGFibGUg KCk7Ci0gICAgfQotICBlbHNlIGlmIChBUkNfTk9STUFMX1AgKGZuX3R5cGUp IHx8IEFSQ19OQUtFRF9QIChmbl90eXBlKSkKLSAgICByZWdubyA9IFJFVFVS Tl9BRERSX1JFR05VTTsKLQotICBnY2NfYXNzZXJ0IChyZWdubyAhPSAwKTsK LSAgcmV0dXJuIHJlZ25vOwotfQogCiAvKiBJbXBsZW1lbnQgRVBJTE9HVUVf VVNFUy4KICAgIFJldHVybiB0cnVlIGlmIFJFR05PIHNob3VsZCBiZSBhZGRl ZCB0byB0aGUgZGVlbWVkIHVzZXMgb2YgdGhlIGVwaWxvZ3VlLgpAQCAtMTAy MzQsMjUgKzEwNDI5LDI1IEBAIGJvb2wKIGFyY19lcGlsb2d1ZV91c2VzIChp bnQgcmVnbm8pCiB7CiAgIHVuc2lnbmVkIGludCBmbl90eXBlOworICBmbl90 eXBlID0gYXJjX2NvbXB1dGVfZnVuY3Rpb25fdHlwZSAoY2Z1bik7CiAKICAg aWYgKHJlZ25vID09IGFyY190cF9yZWdubykKICAgICByZXR1cm4gdHJ1ZTsK IAotICBmbl90eXBlID0gYXJjX2NvbXB1dGVfZnVuY3Rpb25fdHlwZSAoY2Z1 bik7Ci0gIGlmIChyZWxvYWRfY29tcGxldGVkKQorICBpZiAocmVnbm8gPT0g UkVUVVJOX0FERFJfUkVHTlVNKQorICAgIHJldHVybiB0cnVlOworCisgIGlm IChyZWdubyA9PSBhcmNfcmV0dXJuX2FkZHJlc3NfcmVnaXN0ZXIgKGZuX3R5 cGUpKQorICAgIHJldHVybiB0cnVlOworCisgIGlmIChlcGlsb2d1ZV9jb21w bGV0ZWQgJiYgQVJDX0lOVEVSUlVQVF9QIChmbl90eXBlKSkKICAgICB7Ci0g ICAgICBpZiAoQVJDX0lOVEVSUlVQVF9QIChjZnVuLT5tYWNoaW5lLT5mbl90 eXBlKSkKLQl7Ci0JICBpZiAoIWZpeGVkX3JlZ3NbcmVnbm9dKQotCSAgICBy ZXR1cm4gdHJ1ZTsKLQkgIHJldHVybiAoKHJlZ25vID09IGFyY19yZXR1cm5f YWRkcmVzc19yZWdpc3RlciAoZm5fdHlwZSkpCi0JCSAgfHwgKHJlZ25vID09 IFJFVFVSTl9BRERSX1JFR05VTSkpOwotCX0KLSAgICAgIGVsc2UKLQlyZXR1 cm4gcmVnbm8gPT0gUkVUVVJOX0FERFJfUkVHTlVNOworICAgICAgLyogQW4g aW50ZXJydXB0IGZ1bmN0aW9uIHJlc3RvcmVzIG1vcmUgcmVnaXN0ZXJzLiAg Ki8KKyAgICAgIGlmIChkZl9yZWdzX2V2ZXJfbGl2ZV9wIChyZWdubykgfHwg Y2FsbF91c2VkX3JlZ3NbcmVnbm9dKQorCXJldHVybiB0cnVlOwogICAgIH0K LSAgZWxzZQotICAgIHJldHVybiByZWdubyA9PSBhcmNfcmV0dXJuX2FkZHJl c3NfcmVnaXN0ZXIgKGZuX3R5cGUpOworCisgIHJldHVybiBmYWxzZTsKIH0K IAogLyogSGVscGVyIGZvciBFSF9VU0VTIG1hY3JvLiAgKi8KQEAgLTExNTcw LDYgKzExNzY1LDE2IEBAIGFyY19jaGVja19tb3ZfY29uc3QgKEhPU1RfV0lE RV9JTlQgaXZhbCkKICAgcmV0dXJuIGZhbHNlOwogfQogCisvKiBSZXR1cm4g bm9uemVybyBpZiB0aGlzIGZ1bmN0aW9uIGlzIGtub3duIHRvIGhhdmUgYSBu dWxsIGVwaWxvZ3VlLgorICAgVGhpcyBhbGxvd3MgdGhlIG9wdGltaXplciB0 byBvbWl0IGp1bXBzIHRvIGp1bXBzIGlmIG5vIHN0YWNrCisgICB3YXMgY3Jl YXRlZC4gICovCisKK2Jvb2wKK2FyY19jYW5fdXNlX3JldHVybl9pbnNuICh2 b2lkKQoreworICByZXR1cm4gKHJlbG9hZF9jb21wbGV0ZWQgJiYgY2Z1bi0+ bWFjaGluZS0+ZnJhbWVfaW5mby50b3RhbF9zaXplID09IDAKKwkgICYmICFB UkNfSU5URVJSVVBUX1AgKGFyY19jb21wdXRlX2Z1bmN0aW9uX3R5cGUgKGNm dW4pKSk7Cit9CiAKICN1bmRlZiBUQVJHRVRfVVNFX0FOQ0hPUlNfRk9SX1NZ TUJPTF9QCiAjZGVmaW5lIFRBUkdFVF9VU0VfQU5DSE9SU19GT1JfU1lNQk9M X1AgYXJjX3VzZV9hbmNob3JzX2Zvcl9zeW1ib2xfcApkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9hcmMvYXJjLm1kIGIvZ2NjL2NvbmZpZy9hcmMvYXJjLm1k CmluZGV4IGM2YWYxNjk1OWEzLi5hMWVmOTI4MGVkNiAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9hcmMvYXJjLm1kCisrKyBiL2djYy9jb25maWcvYXJjL2Fy Yy5tZApAQCAtMTYzLDYgKzE2Myw3IEBACiAgIFZVTlNQRUNfQVJDX0xMCiAg IFZVTlNQRUNfQVJDX0JMT0NLQUdFCiAgIFZVTlNQRUNfQVJDX0VIX1JFVFVS TgorICBWVU5TUEVDX0FSQ19BUkM2MDBfUlRJRQogICBdKQogCiAoZGVmaW5l X2NvbnN0YW50cwpAQCAtMTg4LDE3ICsxODksMzcgQEAKICAgIChSMzBfUkVH IDMwKQogICAgKFJFVFVSTl9BRERSX1JFR05VTSAzMSkKICAgIChSMzJfUkVH IDMyKQorICAgKFIzM19SRUcgMzMpCisgICAoUjM0X1JFRyAzNCkKKyAgIChS MzVfUkVHIDM1KQorICAgKFIzNl9SRUcgMzYpCisgICAoUjM3X1JFRyAzNykK KyAgIChSMzhfUkVHIDM4KQorICAgKFIzOV9SRUcgMzkpCiAgICAoUjQwX1JF RyA0MCkKICAgIChSNDFfUkVHIDQxKQogICAgKFI0Ml9SRUcgNDIpCiAgICAo UjQzX1JFRyA0MykKICAgIChSNDRfUkVHIDQ0KQorICAgKFI0NV9SRUcgNDUp CisgICAoUjQ2X1JFRyA0NikKKyAgIChSNDdfUkVHIDQ3KQorICAgKFI0OF9S RUcgNDgpCisgICAoUjQ5X1JFRyA0OSkKKyAgIChSNTBfUkVHIDUwKQorICAg KFI1MV9SRUcgNTEpCisgICAoUjUyX1JFRyA1MikKKyAgIChSNTNfUkVHIDUz KQorICAgKFI1NF9SRUcgNTQpCisgICAoUjU1X1JFRyA1NSkKKyAgIChSNTZf UkVHIDU2KQogICAgKFI1N19SRUcgNTcpCisgICAoUjU4X1JFRyA1OCkKKyAg IChSNTlfUkVHIDU5KQorCiAgICAoTVVMNjRfT1VUX1JFRyA1OCkKICAgIChN VUwzMngxNl9SRUcgNTYpCiAgICAoQVJDVjJfQUNDIDU4KQotICAgKFI1OV9S RUcgNTkpCi0KICAgIChMUF9DT1VOVCA2MCkKICAgIChDQ19SRUcgNjEpCiAg ICAoUENMX1JFRyA2MykKQEAgLTIxNSw3ICsyMzYsNyBAQAogCiAoZGVmaW5l X2F0dHIgInR5cGUiCiAgICJtb3ZlLGxvYWQsc3RvcmUsY21vdmUsdW5hcnks YmluYXJ5LGNvbXBhcmUsc2hpZnQsdW5jb25kX2JyYW5jaCxqdW1wLGJyYW5j aCwKLSAgIGJyY2MsYnJjY19ub19kZWxheV9zbG90LGNhbGwsc2Z1bmMsY2Fs bF9ub19kZWxheV9zbG90LAorICAgYnJjYyxicmNjX25vX2RlbGF5X3Nsb3Qs Y2FsbCxzZnVuYyxjYWxsX25vX2RlbGF5X3Nsb3QscnRpZSwKICAgIG11bHRp LHVtdWx0aSwgdHdvX2N5Y2xlX2NvcmUsbHIsc3IsZGl2YXcsbG9vcF9zZXR1 cCxsb29wX2VuZCxyZXR1cm4sCiAgICBtaXNjLHNwZnAsZHBmcF9tdWx0LGRw ZnBfYWRkc3ViLG11bG1hY182MDAsY2NfYXJpdGgsCiAgICBzaW1kX3Zsb2Fk LCBzaW1kX3Zsb2FkMTI4LCBzaW1kX3ZzdG9yZSwgc2ltZF92bW92ZSwgc2lt ZF92bW92ZV9lbHNlX3plcm8sCkBAIC01MzIsOSArNTUzLDcgQEAKICAgKGNv bmQgWyhlcV9hdHRyICJpbl9kZWxheV9zbG90IiAiZmFsc2UiKQogCSAoY29u c3Rfc3RyaW5nICJubyIpCiAJIChtYXRjaF90ZXN0ICJyZWdub19jbG9iYmVy ZWRfcAotCQkJKGFyY19yZXR1cm5fYWRkcmVzc19yZWdpc3RlcgotCQkJICAo YXJjX2NvbXB1dGVfZnVuY3Rpb25fdHlwZSAoY2Z1bikpLAotCQkJIGluc24s IFNJbW9kZSwgMSkiKQorCQkJKFJFVFVSTl9BRERSX1JFR05VTSwgaW5zbiwg U0ltb2RlLCAxKSIpCiAJIChjb25zdF9zdHJpbmcgIm5vIildCiAJKGNvbnN0 X3N0cmluZyAieWVzIikpKQogCkBAIC03NjYsOSArNzg1LDkgQEAgYXJjaHM0 eCwgYXJjaHM0eGQiCiA7IGV4ZWN1dGlvbiBtdXN0IHJlZmxlY3QgdGhpcywg bGVzdCBvdXQtb2YtcmFuZ2UgYnJhbmNoZXMgYXJlIGNyZWF0ZWQuCiA7IHRo ZSBpc2NvbXBhY3QgYXR0cmlidXRlIGFsbG93cyB0aGUgZXBpbG9ndWUgZXhw YW5kZXIgdG8ga25vdyBmb3Igd2hpY2gKIDsgaW5zbnMgaXQgc2hvdWxkIGxl bmd0aGVuIHRoZSByZXR1cm4gaW5zbi4KLShkZWZpbmVfaW5zbl9hbmRfc3Bs aXQgIiptb3ZzaV9pbnNuIgkJOyAwICAxIDIgMyAgICA0ICA1ICA2ICAgNyAg IDggICA5ICAxMCAgMTEgIDEyICAxMyAgMTQgIDE1ICAxNiAgICAxNyAgICAg IDE4ICAxOSAgMjAgICAgMjEgICAyMiAyMyAgMjQgICAyNSAyNiAgMjcgIDI4 Ci0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgIm1vdmVfZGVzdF9vcGVy YW5kIiAiPXEsIHEscixxLCAgIGgscmwsIHIsICByLCAgciwgIHIsID9yLCAg ciwgIHEsICBoLCBybCwgIHEsICBTLCAgIFVzPCxSY3FSY2ssISp4LCAgciwh KlJzZCwhKlJjZCxyLFVjbSwgIFVzZCxtLCAgbSxWVXNjIikKLQkobWF0Y2hf b3BlcmFuZDpTSSAxICJtb3ZlX3NyY19vcGVyYW5kIiAgInJMLHJQLHEsUCxo Q20xLHJMLCBJLENsbyxDaGksQ2JpLENwYyxDbGIsQ2F4LENhbCxDYWwsVXRz LFJjcSxSY3FSY2ssICAgVXM+LFVzZCxVY20sICBVc2QsICBVY2QsbSwgIHIs ISpSemQscixDbTMsIEMzMiIpKV0KKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQg Iiptb3ZzaV9pbnNuIgkJOyAwICAxIDIgMyAgICA0ICAgNSA2ICAgNyAgIDgg ICA5ICAxMCAgMTEgIDEyICAxMyAgMTQgIDE1ICAxNiAgICAxNyAgICAgIDE4 ICAxOSAgMjAgICAgMjEgICAyMiAyMyAgMjQgICAyNSAyNiAgMjcgIDI4Cisg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgIm1vdmVfZGVzdF9vcGVyYW5k IiAiPXEsIHEscixxLCAgIGgsIHJsLHIsICByLCAgciwgIHIsID9yLCAgciwg IHEsICBoLCBybCwgIHEsICBTLCAgIFVzPCxSY3FSY2ssISp4LCAgciwhKlJz ZCwhKlJjZCxyLFVjbSwgIFVzZCxtLCAgbSxWVXNjIikKKwkobWF0Y2hfb3Bl cmFuZDpTSSAxICJtb3ZlX3NyY19vcGVyYW5kIiAgInJMLHJQLHEsUCxoQ20x LHJMbCxJLENsbyxDaGksQ2JpLENwYyxDbGIsQ2F4LENhbCxDYWwsVXRzLFJj cSxSY3FSY2ssICAgVXM+LFVzZCxVY20sICBVc2QsICBVY2QsbSwgIHIsISpS emQscixDbTMsIEMzMiIpKV0KICAgInJlZ2lzdGVyX29wZXJhbmQgKG9wZXJh bmRzWzBdLCBTSW1vZGUpCiAgICB8fCByZWdpc3Rlcl9vcGVyYW5kIChvcGVy YW5kc1sxXSwgU0ltb2RlKQogICAgfHwgKENPTlNUQU5UX1AgKG9wZXJhbmRz WzFdKQpAQCAtNzg0LDggKzgwMyw4IEBAIGFyY2hzNHgsIGFyY2hzNHhkIgog ICAgbW92JT9cXHQlMCwlMQk7NAogICAgbW92JT9cXHQlMCwlMQk7NQogICAg bW92JT9cXHQlMCwlMQk7NgotICAgbW92bC5jbFxcdCAlMCwlMQk7NwotICAg bW92aC5jbFxcdCAlMCwlTDE+PjE2IDs4CisgICBtb3ZsLmNsXFx0JTAsJTEJ OzcKKyAgIG1vdmguY2xcXHQlMCwlTDE+PjE2IDs4CiAgICAqIHJldHVybiBJ TlRWQUwgKG9wZXJhbmRzWzFdKSAmIDB4ZmZmZmZmID8gXCJtb3ZiaS5jbFxc dCUwLCUxID4+ICVwMSwlcDEsODs5XCIgOiBcIm1vdmJpLmNsXFx0JTAsJUwx ID4+IDI0LDI0LDg7OVwiOwogICAgYWRkXFx0JTAsJTEJCTsxMAogICAgYWRk XFx0JTAscGNsLCUxQHBjbCAgOzExCkBAIC03OTMsNyArODEyLDcgQEAgYXJj aHM0eCwgYXJjaHM0eGQiCiAgICBtb3YlP1xcdCUwLCVqMQk7MTMKICAgIG1v diU/XFx0JTAsJWoxCTsxNAogICAgbGQlP1xcdCUwLCUxCQk7MTUKLSAgIHN0 JT9cXHQgJTEsJTAJOzE2CisgICBzdCU/XFx0JTEsJTAJCTsxNgogICAgKiBy ZXR1cm4gYXJjX3Nob3J0X2xvbmcgKGluc24sIFwicHVzaCU/XFx0JTElJlwi LCBcInN0JVUwXFx0JTEsJTAlJlwiKTsKICAgICogcmV0dXJuIGFyY19zaG9y dF9sb25nIChpbnNuLCBcInBvcCU/XFx0JTAlJlwiLCAgXCJsZCVVMVxcdCUw LCUxJSZcIik7CiAgICBsZCU/XFx0JTAsJTEJCTsxOQpAQCAtNDU2OSwxMyAr NDU4OCwxMyBAQCBhcmNoczR4LCBhcmNoczR4ZCIKICAgKHNldF9hdHRyICJ0 eXBlIiAibWlzYyIpXSkKIAogKGRlZmluZV9pbnNuICJydGllIgotICBbKHVu c3BlY192b2xhdGlsZSBbKG1hdGNoX29wZXJhbmQ6U0kgMCAiaW1tZWRpYXRl X29wZXJhbmQiICJOIildCi0JCSAgIFZVTlNQRUNfQVJDX1JUSUUpXQotICAi IgorICBbKHJldHVybikKKyAgICh1bnNwZWNfdm9sYXRpbGUgWyhjb25zdF9p bnQgMCldIFZVTlNQRUNfQVJDX1JUSUUpXQorICAiIVRBUkdFVF9BUkM2MDBf RkFNSUxZIgogICAicnRpZSIKICAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiNCIp Ci0gIChzZXRfYXR0ciAidHlwZSIgIm1pc2MiKQotICAoc2V0X2F0dHIgImNv bmQiICJjbG9iIildKQorICAgKHNldF9hdHRyICJ0eXBlIiAicnRpZSIpCisg ICAoc2V0X2F0dHIgImNvbmQiICJjbG9iIildKQogCiAoZGVmaW5lX2luc24g InN5bmMiCiAgIFsodW5zcGVjX3ZvbGF0aWxlIFsobWF0Y2hfb3BlcmFuZDpT SSAwICJpbW1lZGlhdGVfb3BlcmFuZCIgIk4iKV0KQEAgLTQ3OTcsODggKzQ4 MTYsNTIgQEAgYXJjaHM0eCwgYXJjaHM0eGQiCiA7IGZvcmJpZCBpbnN0cnVj dGlvbnMgdGhhdCBjaGFuZ2UgYmxpbmsgaW4gdGhlIHJldHVybiAvIHNpYmNh bGwgZGVsYXkgc2xvdC4KIChkZWZpbmVfaW5zbiAic2ltcGxlX3JldHVybiIK ICAgWyhzaW1wbGVfcmV0dXJuKV0KLSAgInJlbG9hZF9jb21wbGV0ZWQiCi17 Ci0gIHJ0eCByZWcKLSAgICA9IGdlbl9ydHhfUkVHIChQbW9kZSwKLQkJICAg YXJjX3JldHVybl9hZGRyZXNzX3JlZ2lzdGVyIChhcmNfY29tcHV0ZV9mdW5j dGlvbl90eXBlCi0JCQkJCQkoY2Z1bikpKTsKKyAgIiIKKyAgImolISUqXFx0 W2JsaW5rXSIKKyAgWyhzZXRfYXR0ciAidHlwZSIgInJldHVybiIpCisgICAo c2V0X2F0dHIgImNvbmQiICJjYW51c2UiKQorICAgKHNldF9hdHRyICJpc2Nv bXBhY3QiICJtYXliZSIpCisgICAoc2V0X2F0dHIgImxlbmd0aCIgIioiKV0p CiAKLSAgaWYgKFRBUkdFVF9WMgotICAgICAgJiYgQVJDX0lOVEVSUlVQVF9Q IChhcmNfY29tcHV0ZV9mdW5jdGlvbl90eXBlIChjZnVuKSkpCi0gIHsKLSAg ICByZXR1cm4gXCJydGllXCI7Ci0gIH0KLSAgb3V0cHV0X2FzbV9pbnNuIChc ImolISUqIFslMF0lJlwiLCAmcmVnKTsKLSAgcmV0dXJuIFwiXCI7Ci19Ci0g IFsoc2V0IChhdHRyICJ0eXBlIikKLQkoY29uZCBbKGFuZCAobWF0Y2hfdGVz dCAiQVJDX0lOVEVSUlVQVF9QIChhcmNfY29tcHV0ZV9mdW5jdGlvbl90eXBl IChjZnVuKSkiKQotCQkgICAgKG1hdGNoX3Rlc3QgIlRBUkdFVF9WMiIpKQot CSAgICAgICAoY29uc3Rfc3RyaW5nICJicmNjX25vX2RlbGF5X3Nsb3QiKV0K LQkgICAgICAoY29uc3Rfc3RyaW5nICJyZXR1cm4iKSkpCi0gICA7IHByZWRp Y2FibGUgd29uJ3QgaGVscCBoZXJlIHNpbmNlIHRoZSBjYW5vbmljYWwgcnRs IGxvb2tzIGRpZmZlcmVudAotICAgOyBmb3IgYnJhbmNoZXMuCi0gICAoc2V0 IChhdHRyICJjb25kIikKLQkoY29uZCBbKGFuZCAoZXEgKHN5bWJvbF9yZWYg ImFyY19jb21wdXRlX2Z1bmN0aW9uX3R5cGUgKGNmdW4pIikKLQkJCShzeW1i b2xfcmVmICJBUkNfRlVOQ1RJT05fSUxJTksxIikpCi0JCSAgICAobWF0Y2hf dGVzdCAiVEFSR0VUX1YyIikpCi0JICAgICAgIChjb25zdF9zdHJpbmcgIm5v Y29uZCIpXQotCSAgICAgIChjb25zdF9zdHJpbmcgImNhbnVzZSIpKSkKLSAg KHNldCAoYXR0ciAiaXNjb21wYWN0IikKLQkoY29uZCBbKGVxIChzeW1ib2xf cmVmICJhcmNfY29tcHV0ZV9mdW5jdGlvbl90eXBlIChjZnVuKSIpCi0JCSAg IChzeW1ib2xfcmVmICJBUkNfRlVOQ1RJT05fTk9STUFMIikpCi0JICAgICAg IChjb25zdF9zdHJpbmcgIm1heWJlIildCi0JICAgICAgKGNvbnN0X3N0cmlu ZyAiZmFsc2UiKSkpCi0gICAoc2V0IChhdHRyICJsZW5ndGgiKQotCShjb25k IFsobmUgKHN5bWJvbF9yZWYgImFyY19jb21wdXRlX2Z1bmN0aW9uX3R5cGUg KGNmdW4pIikKLQkJICAgKHN5bWJvbF9yZWYgIkFSQ19GVU5DVElPTl9OT1JN QUwiKSkKLQkgICAgICAgKGNvbnN0X2ludCA0KV0KLQkgICAgICAoY29uc3Rf aW50IDIpKSldKQorKGRlZmluZV9pbnNuICJhcmM2MDBfcnRpZSIKKyAgWyhy ZXR1cm4pCisgICAodW5zcGVjX3ZvbGF0aWxlIFsobWF0Y2hfb3BlcmFuZCAw ICJwbW9kZV9yZWdpc3Rlcl9vcGVyYW5kIiAiIildCisJCSAgICBWVU5TUEVD X0FSQ19BUkM2MDBfUlRJRSldCisgICJUQVJHRVRfQVJDNjAwX0ZBTUlMWSIK KyAgImouZlxcdFslMF0iCisgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQiKQor ICAgKHNldF9hdHRyICJ0eXBlIiAicnRpZSIpCisgICAoc2V0X2F0dHIgImNv bmQiICJjbG9iIildKQogCiAoZGVmaW5lX2luc24gInBfcmV0dXJuX2kiCiAg IFsoc2V0IChwYykKIAkoaWZfdGhlbl9lbHNlIChtYXRjaF9vcGVyYXRvciAw ICJwcm9wZXJfY29tcGFyaXNvbl9vcGVyYXRvciIKIAkJCQkgICAgICBbKHJl ZyBDQ19SRUcpIChjb25zdF9pbnQgMCldKQogCQkgICAgICAoc2ltcGxlX3Jl dHVybikgKHBjKSkpXQotICAicmVsb2FkX2NvbXBsZXRlZAotICAgJiYgIShU QVJHRVRfVjIKLSAgICAgJiYgQVJDX0lOVEVSUlVQVF9QIChhcmNfY29tcHV0 ZV9mdW5jdGlvbl90eXBlIChjZnVuKSkpIgorICAicmVsb2FkX2NvbXBsZXRl ZCIKIHsKLSAgcnR4IHhvcFsyXTsKLSAgeG9wWzBdID0gb3BlcmFuZHNbMF07 Ci0gIHhvcFsxXQotICAgID0gZ2VuX3J0eF9SRUcgKFBtb2RlLAotCQkgICBh cmNfcmV0dXJuX2FkZHJlc3NfcmVnaXN0ZXIgKGFyY19jb21wdXRlX2Z1bmN0 aW9uX3R5cGUKLQkJCQkJCShjZnVuKSkpOwotCi0gIG91dHB1dF9hc21faW5z biAoXCJqJWQwJSElIyBbJTFdJSZcIiwgeG9wKTsKKyAgb3V0cHV0X2FzbV9p bnNuIChcImolZDAlISUjXFx0W2JsaW5rXVwiLCBvcGVyYW5kcyk7CiAgIC8q IHJlY29yZCB0aGUgY29uZGl0aW9uIGluIGNhc2UgdGhlcmUgaXMgYSBkZWxh eSBpbnNuLiAgKi8KLSAgYXJjX2NjZnNtX3JlY29yZF9jb25kaXRpb24gKHhv cFswXSwgZmFsc2UsIGluc24sIDApOworICBhcmNfY2Nmc21fcmVjb3JkX2Nv bmRpdGlvbiAob3BlcmFuZHNbMF0sIGZhbHNlLCBpbnNuLCAwKTsKICAgcmV0 dXJuIFwiXCI7CiB9CiAgIFsoc2V0X2F0dHIgInR5cGUiICJyZXR1cm4iKQog ICAgKHNldF9hdHRyICJjb25kIiAidXNlIikKLSAgIChzZXQgKGF0dHIgImlz Y29tcGFjdCIpCi0JKGNvbmQgWyhlcSAoc3ltYm9sX3JlZiAiYXJjX2NvbXB1 dGVfZnVuY3Rpb25fdHlwZSAoY2Z1bikiKQotCQkgICAoc3ltYm9sX3JlZiAi QVJDX0ZVTkNUSU9OX05PUk1BTCIpKQotCSAgICAgICAoY29uc3Rfc3RyaW5n ICJtYXliZSIpXQotCSAgICAgIChjb25zdF9zdHJpbmcgImZhbHNlIikpKQor ICAgKHNldF9hdHRyICJpc2NvbXBhY3QiICJtYXliZSIgKQogICAgKHNldCAo YXR0ciAibGVuZ3RoIikKLQkoY29uZCBbKG5lIChzeW1ib2xfcmVmICJhcmNf Y29tcHV0ZV9mdW5jdGlvbl90eXBlIChjZnVuKSIpCi0JCSAgIChzeW1ib2xf cmVmICJBUkNfRlVOQ1RJT05fTk9STUFMIikpCi0JICAgICAgIChjb25zdF9p bnQgNCkKLQkgICAgICAgKG5vdCAobWF0Y2hfb3BlcmFuZCAwICJlcXVhbGl0 eV9jb21wYXJpc29uX29wZXJhdG9yIiAiIikpCisJKGNvbmQgWyhub3QgKG1h dGNoX29wZXJhbmQgMCAiZXF1YWxpdHlfY29tcGFyaXNvbl9vcGVyYXRvciIg IiIpKQogCSAgICAgICAoY29uc3RfaW50IDQpCiAJICAgICAgIChlcV9hdHRy ICJkZWxheV9zbG90X2ZpbGxlZCIgInllcyIpCiAJICAgICAgIChjb25zdF9p bnQgNCldCiAJICAgICAgKGNvbnN0X2ludCAyKSkpXSkKIAotOzsgPz8/ICNp ZmRlZnMgaW4gZnVuY3Rpb24uYyByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiB0 aGlzIHBhdHRlcm4sIHdpdGggYQotOzsgbm9uLWNvbnN0YW50IHByZWRpY2F0 ZS4KKzs7IFJldHVybiBub256ZXJvIGlmIHRoaXMgZnVuY3Rpb24gaXMga25v d24gdG8gaGF2ZSBhIG51bGwgZXBpbG9ndWUuCis7OyBUaGlzIGFsbG93cyB0 aGUgb3B0aW1pemVyIHRvIG9taXQganVtcHMgdG8ganVtcHMgaWYgbm8gc3Rh Y2sKKzs7IHdhcyBjcmVhdGVkLgogKGRlZmluZV9leHBhbmQgInJldHVybiIK ICAgWyhyZXR1cm4pXQotICAib3B0aW1pemUgPCAwIikKKyAgImFyY19jYW5f dXNlX3JldHVybl9pbnNuICgpIgorICAiIikKIAogIDs7IENvbW1lbnQgaW4g ZmluYWwuYyAoaW5zbl9jdXJyZW50X3JlZmVyZW5jZV9hZGRyZXNzKSBzYXlz CiAgOzsgZm9yd2FyZCBicmFuY2ggYWRkcmVzc2VzIGFyZSBjYWxjdWxhdGVk IGZyb20gdGhlIG5leHQgaW5zbiBhZnRlciBicmFuY2gKZGlmZiAtLWdpdCBh L2djYy9jb25maWcvYXJjL2J1aWx0aW5zLmRlZiBiL2djYy9jb25maWcvYXJj L2J1aWx0aW5zLmRlZgppbmRleCAyYWI0M2Y2NGRlOC4uZjFjNTlkNWU3YmIg MTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYXJjL2J1aWx0aW5zLmRlZgorKysg Yi9nY2MvY29uZmlnL2FyYy9idWlsdGlucy5kZWYKQEAgLTMzLDcgKzMzLDcg QEAKIAogLyogU3BlY2lhbCBidWlsdGlucy4gICovCiBERUZfQlVJTFRJTiAo Tk9QLCAgICAgICAgMCwgdm9pZF9mdHlwZV92b2lkLCAgICAgICAgbm90aGlu ZywgICAgIDEpCi1ERUZfQlVJTFRJTiAoUlRJRSwgICAgICAgMCwgdm9pZF9m dHlwZV92b2lkLCAgICAgICAgcnRpZSwgICAgICAgIDEpCitERUZfQlVJTFRJ TiAoUlRJRSwgICAgICAgMCwgdm9pZF9mdHlwZV92b2lkLCAgICAgICAgcnRp ZSwgICAgICAgICFUQVJHRVRfQVJDNjAwX0ZBTUlMWSkKIERFRl9CVUlMVElO IChTWU5DLCAgICAgICAwLCB2b2lkX2Z0eXBlX3ZvaWQsICAgICAgICBzeW5j LCAgICAgICAgMSkKIERFRl9CVUlMVElOIChCUkssICAgICAgICAwLCB2b2lk X2Z0eXBlX3ZvaWQsICAgICAgICBicmssICAgICAgICAgMSkKIERFRl9CVUlM VElOIChTV0ksICAgICAgICAwLCB2b2lkX2Z0eXBlX3ZvaWQsICAgICAgICBz d2ksICAgICAgICAgMSkKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJjL3By ZWRpY2F0ZXMubWQgYi9nY2MvY29uZmlnL2FyYy9wcmVkaWNhdGVzLm1kCmlu ZGV4IDcyZmJmMmE4NTI4Li5lMDAxM2IzMmYwZiAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9hcmMvcHJlZGljYXRlcy5tZAorKysgYi9nY2MvY29uZmlnL2Fy Yy9wcmVkaWNhdGVzLm1kCkBAIC0yODUsNiArMjg1LDggQEAKIAlyZXR1cm4g R0VUX01PREUgKG9wKSA9PSBTRm1vZGU7CiAgICAgICByZXR1cm4gMDsKICAg ICBjYXNlIFJFRyA6CisgICAgICBpZiAoUkVHTk8gKG9wKSA9PSBMUF9DT1VO VCkKKwlyZXR1cm4gMTsKICAgICAgIHJldHVybiByZWdpc3Rlcl9vcGVyYW5k IChvcCwgbW9kZSk7CiAgICAgY2FzZSBTVUJSRUcgOgogICAgICAgLyogKHN1 YnJlZyAobWVtIC4uLikgLi4uKSBjYW4gb2NjdXIgaGVyZSBpZiB0aGUgaW5u ZXIgcGFydCB3YXMgb25jZSBhCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYXJjL2FyYy5leHAgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYXJjL2FyYy5leHAKaW5kZXggZTQzMmM5Mzc1OTYuLjgyMzBhZDVl YmE5IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJj L2FyYy5leHAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FyYy9h cmMuZXhwCkBAIC0xMDIsNiArMTAyLDI0IEBAIHByb2MgY2hlY2tfZWZmZWN0 aXZlX3RhcmdldF9jb2RlZGVuc2l0eSB7IH0gewogICAgIH1dCiB9CiAKKyNy ZXR1cm4gMSBpZiB3ZSB1c2UgQVJDdjIgQWNjdW11bGF0b3IgcmVnaXN0ZXJz Citwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfYWNjcmVncyB7IH0gewor ICAgIHJldHVybiBbY2hlY2tfbm9fY29tcGlsZXJfbWVzc2FnZXMgYWNjcmVn cyBhc3NlbWJseSB7CisJI2lmICFkZWZpbmVkKF9fQVJDX01QWV9ETVBZX18p IFwKKwkgICAgICYmICFkZWZpbmVkKF9fQVJDX01QWV9NQUNEX18pICYmICFk ZWZpbmVkKF9fQVJDX01QWV9RTUFDV19fKQorCSNlcnJvciBObyBhY2N1bXVs YXRvciBhdmFpbGFibGUgZm9yIHRoaXMgY29uZmlnCisJI2VuZGlmCisgICAg fV0KK30KKworcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0X2RwZnAgeyB9 IHsKKyAgICByZXR1cm4gW2NoZWNrX25vX2NvbXBpbGVyX21lc3NhZ2VzIGRw ZnAgYXNzZW1ibHkgeworCSNpZiAhZGVmaW5lZChfX0FSQ19GUFhfRFBfXykg JiYgIWRlZmluZWQoX19BUkNfRlBVX0FTU0lTVF9fKQorCSNlcnJvciBObyBG UFggYXZhaWxhYmxlIGZvciB0aGlzIGNvbmZpZworCSNlbmRpZgorICAgIH1d Cit9CisKICMgSWYgYSB0ZXN0Y2FzZSBkb2Vzbid0IGhhdmUgc3BlY2lhbCBv cHRpb25zLCB1c2UgdGhlc2UuCiBnbG9iYWwgREVGQVVMVF9DRkxBR1MKIGlm ICFbaW5mbyBleGlzdHMgREVGQVVMVF9DRkxBR1NdIHRoZW4gewpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FyYy9idWlsdGluX3Nw ZWNpYWwuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcmMvYnVpbHRp bl9zcGVjaWFsLmMKaW5kZXggNzU5MGIxNzQ5ODIuLjgyOTUyOGNlYjU1IDEw MDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJjL2J1aWx0 aW5fc3BlY2lhbC5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h cmMvYnVpbHRpbl9zcGVjaWFsLmMKQEAgLTIxLDcgKzIxLDkgQEAKIAogCiBO T1JFVCAobm9wKQorI2lmICFkZWZpbmVkIChfX0FSQzYwMF9fKSAmJiAhZGVm aW5lZCAoX19BUkM2MDFfXykKIE5PUkVUIChydGllKQorI2VuZGlmCiAKICNp ZmRlZiBfX0E3X18KICBOT1JFVCAoc3luYykKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcmMvaW50ZXJydXB0LTEuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcmMvaW50ZXJydXB0LTEuYwppbmRleCA4 YTIwMDJiZjFjMC4uNWE1MTM5YTI0NzAgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hcmMvaW50ZXJydXB0LTEuYworKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYXJjL2ludGVycnVwdC0xLmMKQEAgLTYs NSArNiw1IEBAIHZvaWQgX19hdHRyaWJ1dGVfXyAoKGludGVycnVwdCgiaWxp bmsxIikpKQogaGFuZGxlcjEgKHZvaWQpCiB7CiB9Ci0vKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImouKlxbaWxpbmsxXF0iIDEgeyB0 YXJnZXQgeyBhcmM3MDAgfHwgYXJjNnh4IH0gfSB9IH0gKi8KLS8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicnRpZSIgMSB7IHRhcmdl dCB7IGFyY2VtIHx8IGFyY2hzIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci10aW1lcyAiai4qXFtpbGluazFcXSIgMSB7IHRh cmdldCB7IGFyYzZ4eCB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgInJ0aWUiIDEgeyB0YXJnZXQgeyAhIHsgYXJj Nnh4IH0gfSB9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FyYy9pbnRlcnJ1cHQtMTAuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hcmMvaW50ZXJydXB0LTEwLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYwNWMxOWY1Nzk3Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FyYy9pbnRl cnJ1cHQtMTAuYwpAQCAtMCwwICsxLDM2IEBACisvKiB7IGRnLW9wdGlvbnMg Ii1PMiIgfSAqLworZXh0ZXJuIHZvaWQgd2lsbF90cmlnX2V4Y2VwdGlvbih2 b2lkKTsKKworI2lmIGRlZmluZWQgKF9fQVJDSFNfXykgfHwgZGVmaW5lZCAo X19BUkNFTV9fKQorX19hdHRyaWJ1dGVfXyAoKGludGVycnVwdCgiaWxpbmsi KSkpCisjZWxzZQorX19hdHRyaWJ1dGVfXyAoKGludGVycnVwdCgiaWxpbmsx IikpKQorI2VuZGlmCit2b2lkIGlzcl8wICh2b2lkKQoreworICB3aWxsX3Ry aWdfZXhjZXB0aW9uKCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiai4qXFtpbGluazFcXSIgMSB7IHRhcmdldCB7IGFy YzZ4eCB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgInJ0aWUiIDEgeyB0YXJnZXQgeyAhIHsgYXJjNnh4IH0gfSB9 IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJibGluayIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAiZnAiIDIgeyB0YXJnZXQgeyAhIHsgYXJjaHMgfSB9IH0g fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg InIzMCIgMiB7IHRhcmdldCB7IGFyY2hzIHx8IGFyY2VtIH0gfSB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicjI0IiAy IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJyMjIiIDIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgInIyMCIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAicjE4IiAyIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJyMTYiIDIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInIxNCIgMiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicjEy IiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJyMTAiIDIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgInI4IiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJyNiIgMiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicjQiIDIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInIyXFssXG5cXSIg MiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAibHBfY291bnQiIDIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInNyXFxzK3JcWzAtOVxdLCIgMiB7IHRhcmdldCB7 ICEgeyBkcGZwIH0gfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJsclxccytyXFswLTlcXSIgMiB7IHRhcmdldCB7 ICEgeyBkcGZwIH0gfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJzclxccytyXFswLTlcXSwiIDYgeyB0YXJnZXQg eyBkcGZwIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAibHJcXHMrclxbMC05XF0iIDYgeyB0YXJnZXQgeyBkcGZw IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAicjU4IiAyIHsgdGFyZ2V0IHsgYWNjcmVncyB9IH0gfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJjL2ludGVy cnVwdC0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FyYy9pbnRl cnJ1cHQtMTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uY2EzNDBlZTdjNzQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYXJjL2ludGVycnVwdC0xMS5jCkBAIC0wLDAg KzEsMTYgQEAKK2V4dGVybiBpbnQgYTsKKworI2lmIGRlZmluZWQgKF9fQVJD SFNfXykgfHwgZGVmaW5lZCAoX19BUkNFTV9fKQorX19hdHRyaWJ1dGVfXyAo KGludGVycnVwdCgiaWxpbmsiKSkpCisjZWxzZQorX19hdHRyaWJ1dGVfXyAo KGludGVycnVwdCgiaWxpbmsyIikpKQorI2VuZGlmCit2b2lkIGlzcl8xICh2 b2lkKQoreworICBhKys7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiai4qXFtpbGluazJcXSIgMSB7IHRhcmdldCB7IGFy YzZ4eCB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgInJ0aWUiIDEgeyB0YXJnZXQgeyAhIHsgYXJjNnh4IH0gfSB9 IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJwdXNoX3NcXHMrclxbMC05XF0iIDEgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInBvcF9zXFxzK3JcWzAtOVxdIiAx IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FyYy9pbnRlcnJ1cHQtMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hcmMvaW50ZXJydXB0LTEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmRhM2UyNmNmMGJiCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FyYy9pbnRlcnJ1cHQtMTIu YwpAQCAtMCwwICsxLDE2IEBACisvKiB7IGRnLW9wdGlvbnMgIi1PMCAtZyIg fSAqLworCit0eXBlZGVmIHZvaWQgKCppc3Jfcm91dGluZSkodm9pZCk7Citp c3Jfcm91dGluZSB3aWxsX3RyaWdfZXhjZXB0aW9uOworCisgI2lmIGRlZmlu ZWQgKF9fQVJDSFNfXykgfHwgZGVmaW5lZCAoX19BUkNFTV9fKQordm9pZCBf X2F0dHJpYnV0ZV9fICgoaW50ZXJydXB0KCJpbGluayIpKSkKKyNlbHNlCit2 b2lkIF9fYXR0cmlidXRlX18gKChpbnRlcnJ1cHQoImlsaW5rMSIpKSkKKyNl bmRpZgoraXNyX3RlbXBsYXRlKHZvaWQpCit7CisgIHdpbGxfdHJpZ19leGNl cHRpb24oKTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJcXFwuY2ZpX29mZnNldCAwIiAxIH0gfSAqLwotLSAKMi4yMS4w Cgo= --=-NOH6CjlbqvnE1OBN8GsS--