From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:51055) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iXFUb-0002pw-AI for guix-patches@gnu.org; Tue, 19 Nov 2019 21:13:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iXFUS-0005oC-D5 for guix-patches@gnu.org; Tue, 19 Nov 2019 21:13:17 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:39977) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iXFUS-0005nT-3i for guix-patches@gnu.org; Tue, 19 Nov 2019 21:13:08 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iXFUR-0000fM-Qd for guix-patches@gnu.org; Tue, 19 Nov 2019 21:13:07 -0500 Subject: [bug#38286] [PATCH] gnu: Add netcat-openbsd. Resent-Message-ID: Received: from eggs.gnu.org ([2001:470:142:3::10]:50304) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iXFTV-0002di-1b for guix-patches@gnu.org; Tue, 19 Nov 2019 21:12:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iXFTK-0004Ak-Ct for guix-patches@gnu.org; Tue, 19 Nov 2019 21:12:07 -0500 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:33271) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iXFTI-000430-Ss for guix-patches@gnu.org; Tue, 19 Nov 2019 21:11:58 -0500 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 6A21221F14 for ; Tue, 19 Nov 2019 21:11:52 -0500 (EST) Mime-Version: 1.0 Message-Id: <3dfac477-b081-49f4-86b3-2c142bb39f6b@www.fastmail.com> Date: Wed, 20 Nov 2019 02:10:34 +0000 From: "Alex Griffin" Content-Type: multipart/mixed; boundary=4945f1da6b394e109e14ee0fceeada6e List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 38286@debbugs.gnu.org --4945f1da6b394e109e14ee0fceeada6e Content-Type: text/plain This patch adds the OpenBSD rewrite of netcat, as ported to GNU/Linux by Debian. -- Alex Griffin --4945f1da6b394e109e14ee0fceeada6e Content-Disposition: attachment;filename="0001-gnu-Add-netcat-openbsd.patch" Content-Type: text/x-patch; name="0001-gnu-Add-netcat-openbsd.patch" Content-Transfer-Encoding: BASE64 RnJvbSBlNDZlNzhiZmUxMjkyMzk4OWU3MjYyZWVjMjExNmRiYTdlMDAyOTliIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4IEdyaWZmaW4gPGFAYWpncmYuY29tPgpEYXRl OiBUdWUsIDE5IE5vdiAyMDE5IDE5OjU5OjMyIC0wNjAwClN1YmplY3Q6IFtQQVRDSF0gZ251 OiBBZGQgbmV0Y2F0LW9wZW5ic2QuCgoqIGdudS9wYWNrYWdlcy9hZG1pbi5zY20gKG5ldGNh dC1vcGVuYnNkKTogTmV3IHZhcmlhYmxlLgoqIGdudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNh dC1vcGVuYnNkLWJyb2FkY2FzdC1zdXBwb3J0LnBhdGNoLApnbnUvcGFja2FnZXMvcGF0Y2hl cy9uZXRjYXQtb3BlbmJzZC1idWlsZC13aXRob3V0LVRMUy1zdXBwb3J0LnBhdGNoLApnbnUv cGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1jb25uZWN0LXRpbWVvdXQucGF0Y2gs CmdudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLWRjY3Atc3VwcG9ydC5wYXRj aCwKZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtZGVzdGluYXRpb24tcG9y dC1saXN0LnBhdGNoLApnbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1nZXQt c2V2LWJ5LW5hbWUucGF0Y2gsCmdudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNk LW1pc2MtZmFpbHVyZXMtYW5kLWZlYXR1cmVzLnBhdGNoLApnbnUvcGFja2FnZXMvcGF0Y2hl cy9uZXRjYXQtb3BlbmJzZC1wb3J0LXRvLWxpbnV4LXdpdGgtbGlic2QucGF0Y2gsCmdudS9w YWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLXF1aXQtdGltZXIucGF0Y2gsCmdudS9w YWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLXNlbmQtY3JsZi5wYXRjaCwKZ251L3Bh Y2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2Qtc2VyaWFsaXplZC1oYW5kbGluZy1tdWx0 aXBsZS1jbGllbnRzLnBhdGNoLApnbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJz ZC1zZXQtVENQLU1ENVNJRy1jb3JyZWN0bHktZm9yLWNsaWVudC1jb25uZWN0aW9ucy5wYXRj aCwKZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtdWRwLXNjYW4tdGltZW91 dC5wYXRjaCwKZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtdXNlLWZsYWdz LXRvLXNwZWNpZnktbGlzdGVuLWFkZHJlc3MucGF0Y2g6Ck5ldyBmaWxlcy4KKiBnbnUvbG9j YWwubWsgKGRpc3RfcGF0Y2hfREFUQSk6IEFkZCB0aGVtLgotLS0KIGdudS9sb2NhbC5tayAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNSArCiBnbnUvcGFja2FnZXMv YWRtaW4uc2NtICAgICAgICAgICAgICAgICAgICAgICAgfCAgNzIgKysKIC4uLi9uZXRjYXQt b3BlbmJzZC1icm9hZGNhc3Qtc3VwcG9ydC5wYXRjaCAgICB8ICA4OSArKwogLi4uYXQtb3Bl bmJzZC1idWlsZC13aXRob3V0LVRMUy1zdXBwb3J0LnBhdGNoIHwgODcyICsrKysrKysrKysr KysrKysrKwogLi4uL25ldGNhdC1vcGVuYnNkLWNvbm5lY3QtdGltZW91dC5wYXRjaCAgICAg IHwgMTI2ICsrKwogLi4uL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtZGNjcC1zdXBwb3J0LnBh dGNoIHwgMjM1ICsrKysrCiAuLi5uZXRjYXQtb3BlbmJzZC1kZXN0aW5hdGlvbi1wb3J0LWxp c3QucGF0Y2ggfCAxOTEgKysrKwogLi4uL25ldGNhdC1vcGVuYnNkLWdldC1zZXYtYnktbmFt ZS5wYXRjaCAgICAgIHwgIDI4ICsKIC4uLnQtb3BlbmJzZC1taXNjLWZhaWx1cmVzLWFuZC1m ZWF0dXJlcy5wYXRjaCB8IDE0NSArKysKIC4uLmNhdC1vcGVuYnNkLXBvcnQtdG8tbGludXgt d2l0aC1saWJzZC5wYXRjaCB8IDQ4MyArKysrKysrKysrCiAuLi4vcGF0Y2hlcy9uZXRjYXQt b3BlbmJzZC1xdWl0LXRpbWVyLnBhdGNoICAgfCAxNDMgKysrCiAuLi4vcGF0Y2hlcy9uZXRj YXQtb3BlbmJzZC1zZW5kLWNybGYucGF0Y2ggICAgfCAxOTIgKysrKwogLi4uc2VyaWFsaXpl ZC1oYW5kbGluZy1tdWx0aXBsZS1jbGllbnRzLnBhdGNoIHwgIDQ5ICsKIC4uLlNJRy1jb3Jy ZWN0bHktZm9yLWNsaWVudC1jb25uZWN0aW9ucy5wYXRjaCB8IDEwMSArKwogLi4uL25ldGNh dC1vcGVuYnNkLXVkcC1zY2FuLXRpbWVvdXQucGF0Y2ggICAgIHwgIDU2ICsrCiAuLi4tdXNl LWZsYWdzLXRvLXNwZWNpZnktbGlzdGVuLWFkZHJlc3MucGF0Y2ggfCAxMDYgKysrCiAxNiBm aWxlcyBjaGFuZ2VkLCAyOTAzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn bnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1icm9hZGNhc3Qtc3VwcG9ydC5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1v cGVuYnNkLWJ1aWxkLXdpdGhvdXQtVExTLXN1cHBvcnQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1jb25uZWN0LXRpbWVv dXQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRj YXQtb3BlbmJzZC1kY2NwLXN1cHBvcnQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUv cGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1kZXN0aW5hdGlvbi1wb3J0LWxpc3Qu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQt b3BlbmJzZC1nZXQtc2V2LWJ5LW5hbWUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUv cGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1taXNjLWZhaWx1cmVzLWFuZC1mZWF0 dXJlcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL25l dGNhdC1vcGVuYnNkLXBvcnQtdG8tbGludXgtd2l0aC1saWJzZC5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLXF1aXQtdGlt ZXIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRj YXQtb3BlbmJzZC1zZW5kLWNybGYucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFj a2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1zZXJpYWxpemVkLWhhbmRsaW5nLW11bHRp cGxlLWNsaWVudHMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0 Y2hlcy9uZXRjYXQtb3BlbmJzZC1zZXQtVENQLU1ENVNJRy1jb3JyZWN0bHktZm9yLWNsaWVu dC1jb25uZWN0aW9ucy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9w YXRjaGVzL25ldGNhdC1vcGVuYnNkLXVkcC1zY2FuLXRpbWVvdXQucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC11c2UtZmxh Z3MtdG8tc3BlY2lmeS1saXN0ZW4tYWRkcmVzcy5wYXRjaAoKZGlmZiAtLWdpdCBhL2dudS9s b2NhbC5tayBiL2dudS9sb2NhbC5tawppbmRleCAwYmMyM2I5MmVlLi4wOGMyODBmZmU0IDEw MDY0NAotLS0gYS9nbnUvbG9jYWwubWsKKysrIGIvZ251L2xvY2FsLm1rCkBAIC0yMyw2ICsy Myw3IEBACiAjIENvcHlyaWdodCDCqSAyMDE5IEd1aWxsYXVtZSBMZSBWYWlsbGFudCA8Z2x2 QHBvc3Rlby5uZXQ+CiAjIENvcHlyaWdodCDCqSAyMDE5IEpvaG4gU29vIDxqc29vMUBhc3Uu ZWR1PgogIyBDb3B5cmlnaHQgwqkgMjAxOSBKb25hdGhhbiBCcmllbG1haWVyIDxqb25hdGhh bi5icmllbG1haWVyQHdlYi5kZT4KKyMgQ29weXJpZ2h0IMKpIDIwMTYsIDIwMTcsIDIwMTkg QWxleCBHcmlmZmluIDxhQGFqZ3JmLmNvbT4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R05VIEd1aXguCiAjCkBAIC0xMTU0LDYgKzExNTUsMjAgQEAgZGlzdF9wYXRjaF9EQVRBID0J CQkJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL211cGVuNjRwbHVzLXZpZGVvLXo2NC1n bGV3LWNvcnJlY3QtcGF0aC5wYXRjaCAgICBcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL211 dHQtc3RvcmUtcmVmZXJlbmNlcy5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9t NC1nbnVsaWItbGliaW8ucGF0Y2gJCQlcCisgICVEJS9wYWNrYWdlcy9wYXRjaGVzL25ldGNh dC1vcGVuYnNkLWJyb2FkY2FzdC1zdXBwb3J0LnBhdGNoICAgXAorICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1idWlsZC13aXRob3V0LVRMUy1zdXBwb3J0LnBhdGNo IFwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtY29ubmVjdC10aW1l b3V0LnBhdGNoICAgICBcCisgICVEJS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNk LWRjY3Atc3VwcG9ydC5wYXRjaCAgICAgICAgXAorICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9u ZXRjYXQtb3BlbmJzZC1kZXN0aW5hdGlvbi1wb3J0LWxpc3QucGF0Y2ggXAorICAlRCUvcGFj a2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1nZXQtc2V2LWJ5LW5hbWUucGF0Y2ggICAg IFwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtbWlzYy1mYWlsdXJl cy1hbmQtZmVhdHVyZXMucGF0Y2ggXAorICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQt b3BlbmJzZC1wb3J0LXRvLWxpbnV4LXdpdGgtbGlic2QucGF0Y2ggXAorICAlRCUvcGFja2Fn ZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1xdWl0LXRpbWVyLnBhdGNoICAgICAgICAgIFwK KyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2Qtc2VuZC1jcmxmLnBhdGNo ICAgICAgICAgICBcCisgICVEJS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLXNl cmlhbGl6ZWQtaGFuZGxpbmctbXVsdGlwbGUtY2xpZW50cy5wYXRjaCBcCisgICVEJS9wYWNr YWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLXNldC1UQ1AtTUQ1U0lHLWNvcnJlY3RseS1m b3ItY2xpZW50LWNvbm5lY3Rpb25zLnBhdGNoIFwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMv bmV0Y2F0LW9wZW5ic2QtdWRwLXNjYW4tdGltZW91dC5wYXRjaCAgICBcCisgICVEJS9wYWNr YWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLXVzZS1mbGFncy10by1zcGVjaWZ5LWxpc3Rl bi1hZGRyZXNzLnBhdGNoIFwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2RmLWRhdGUt dGltZS5wYXRjaAkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2RmLXRzdF9oX3Bh ci5wYXRjaAkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbmV0cGJtLUNWRS0yMDE3LTI1 ODYucGF0Y2gJCVwKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9hZG1pbi5zY20gYi9nbnUv cGFja2FnZXMvYWRtaW4uc2NtCmluZGV4IGM0NzIzYzVhOWQuLjI3YzQ4ZjI2ODggMTAwNjQ0 Ci0tLSBhL2dudS9wYWNrYWdlcy9hZG1pbi5zY20KKysrIGIvZ251L3BhY2thZ2VzL2FkbWlu LnNjbQpAQCAtMjcsNiArMjcsNyBAQAogOzs7IENvcHlyaWdodCDCqSAyMDE5IEJqw7ZybiBI w7ZmbGluZyA8YmpvZXJuLmhvZWZsaW5nQGJqb2VybmhvZWZsaW5nLmRlPgogOzs7IENvcHly aWdodCDCqSAyMDE5IEpha29iIEwuIEtyZXV6ZSA8emVyb2RheXNmb3JkYXlzQHNkZi5sb25l c3Rhci5vcmc+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMTkgSGFydG11dCBHb2ViZWwgPGguZ29l YmVsQGNyYXp5LWNvbXBpbGVycy5jb20+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMTkgQWxleCBH cmlmZmluIDxhQGFqZ3JmLmNvbT4KIDs7OwogOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdO VSBHdWl4LgogOzs7CkBAIC02Nyw2ICs2OCw3IEBACiAgICM6dXNlLW1vZHVsZSAoZ251IHBh Y2thZ2VzIGZpbGUpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIG5jdXJzZXMpCiAg ICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHJlYWRsaW5lKQorICAjOnVzZS1tb2R1bGUg KGdudSBwYWNrYWdlcyBsaWJic2QpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGxp bnV4KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBsdWEpCiAgICM6dXNlLW1vZHVs ZSAoZ251IHBhY2thZ2VzIGd1aWxlKQpAQCAtNjIwLDYgKzYyMiw3NiBAQCBhbmQgZXhwbG9y YXRpb24gdG9vbCwgc2luY2UgaXQgY2FuIGNyZWF0ZSBhbG1vc3QgYW55IGtpbmQgb2YgY29u bmVjdGlvbiB5b3UKIHdvdWxkIG5lZWQgYW5kIGhhcyBzZXZlcmFsIGludGVyZXN0aW5nIGJ1 aWx0LWluIGNhcGFiaWxpdGllcy4iKQogICAgIChsaWNlbnNlIGxpY2Vuc2U6Z3BsMispKSkK IAorKGRlZmluZS1wdWJsaWMgbmV0Y2F0LW9wZW5ic2QKKyAgKHBhY2thZ2UKKyAgICAobmFt ZSAibmV0Y2F0LW9wZW5ic2QiKQorICAgICh2ZXJzaW9uICIxLjIwMyIpCisgICAgKHNvdXJj ZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgdXJsLWZldGNoKQorICAgICAgICAg ICAgICAodXJpIChzdHJpbmctYXBwZW5kICJodHRwczovL2RlYi5kZWJpYW4ub3JnL2RlYmlh bi9wb29sL21haW4vbi8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5l dGNhdC1vcGVuYnNkL25ldGNhdC1vcGVuYnNkXyIgdmVyc2lvbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIub3JpZy50YXIuZ3oiKSkKKyAgICAgICAgICAgICAgKHNo YTI1NgorICAgICAgICAgICAgICAgKGJhc2UzMgorICAgICAgICAgICAgICAgICIwZ3FhZmx6 cGczZnd4ZHJrazc1d2pzcTcyczc2Z2NhajM5d2hoODg3aW5sODJuZ2tqOWRoIikpCisgICAg ICAgICAgICAgIChwYXRjaGVzIChzZWFyY2gtcGF0Y2hlcworICAgICAgICAgICAgICAgICAg ICAgICAgIm5ldGNhdC1vcGVuYnNkLXBvcnQtdG8tbGludXgtd2l0aC1saWJzZC5wYXRjaCIK KyAgICAgICAgICAgICAgICAgICAgICAgICJuZXRjYXQtb3BlbmJzZC1idWlsZC13aXRob3V0 LVRMUy1zdXBwb3J0LnBhdGNoIgorICAgICAgICAgICAgICAgICAgICAgICAgIm5ldGNhdC1v cGVuYnNkLWNvbm5lY3QtdGltZW91dC5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgICAg ICJuZXRjYXQtb3BlbmJzZC1nZXQtc2V2LWJ5LW5hbWUucGF0Y2giCisgICAgICAgICAgICAg ICAgICAgICAgICAibmV0Y2F0LW9wZW5ic2Qtc2VuZC1jcmxmLnBhdGNoIgorICAgICAgICAg ICAgICAgICAgICAgICAgIm5ldGNhdC1vcGVuYnNkLXF1aXQtdGltZXIucGF0Y2giCisgICAg ICAgICAgICAgICAgICAgICAgICAibmV0Y2F0LW9wZW5ic2QtdWRwLXNjYW4tdGltZW91dC5w YXRjaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJuZXRjYXQtb3BlbmJzZC1kY2NwLXN1 cHBvcnQucGF0Y2giCisgICAgICAgICAgICAgICAgICAgICAgICAibmV0Y2F0LW9wZW5ic2Qt YnJvYWRjYXN0LXN1cHBvcnQucGF0Y2giCisgICAgICAgICAgICAgICAgICAgICAgICAibmV0 Y2F0LW9wZW5ic2Qtc2VyaWFsaXplZC1oYW5kbGluZy1tdWx0aXBsZS1jbGllbnRzLnBhdGNo IgorICAgICAgICAgICAgICAgICAgICAgICAgIm5ldGNhdC1vcGVuYnNkLXNldC1UQ1AtTUQ1 U0lHLWNvcnJlY3RseS1mb3ItY2xpZW50LWNvbm5lY3Rpb25zLnBhdGNoIgorICAgICAgICAg ICAgICAgICAgICAgICAgIm5ldGNhdC1vcGVuYnNkLWRlc3RpbmF0aW9uLXBvcnQtbGlzdC5w YXRjaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJuZXRjYXQtb3BlbmJzZC11c2UtZmxh Z3MtdG8tc3BlY2lmeS1saXN0ZW4tYWRkcmVzcy5wYXRjaCIKKyAgICAgICAgICAgICAgICAg ICAgICAgICJuZXRjYXQtb3BlbmJzZC1taXNjLWZhaWx1cmVzLWFuZC1mZWF0dXJlcy5wYXRj aCIpKSkpCisgICAgKGJ1aWxkLXN5c3RlbSBnbnUtYnVpbGQtc3lzdGVtKQorICAgIChhcmd1 bWVudHMKKyAgICAgYCgjOnRlc3RzPyAjZiA7IG5vIHRlc3Qgc3VpdGUKKyAgICAgICAjOm1h a2UtZmxhZ3MKKyAgICAgICAobGlzdCAiQ0M9Z2NjIgorICAgICAgICAgICAgIChzdHJpbmct YXBwZW5kICJQUkVGSVg9IiAoYXNzb2MtcmVmICVvdXRwdXRzICJvdXQiKSkKKyAgICAgICAg ICAgICAoc3RyaW5nLWFwcGVuZCAiQ0ZMQUdTPS1JIiAoYXNzb2MtcmVmICVidWlsZC1pbnB1 dHMgImxpYmJzZCIpICIvaW5jbHVkZSIpCisgICAgICAgICAgICAgIkxERkxBR1M9LWxic2Qi KQorICAgICAgICM6cGhhc2VzCisgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBo YXNlcworICAgICAgICAgKGRlbGV0ZSAnY29uZmlndXJlKQorICAgICAgICAgKHJlcGxhY2Ug J2luc3RhbGwKKyAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG91dHB1dHMgIzphbGxvdy1v dGhlci1rZXlzKQorICAgICAgICAgICAgIChsZXQqICgob3V0IChhc3NvYy1yZWYgb3V0cHV0 cyAib3V0IikpCisgICAgICAgICAgICAgICAgICAgIChiaW4gKHN0cmluZy1hcHBlbmQgb3V0 ICIvYmluIikpCisgICAgICAgICAgICAgICAgICAgIChkb2MgKHN0cmluZy1hcHBlbmQgb3V0 ICIvc2hhcmUvZG9jL25ldGNhdC1vcGVuYnNkLSIgLHZlcnNpb24pKQorICAgICAgICAgICAg ICAgICAgICAobWFuIChzdHJpbmctYXBwZW5kIG91dCAiL3NoYXJlL21hbi9tYW4xIikpKQor ICAgICAgICAgICAgICAgKGluc3RhbGwtZmlsZSAibmMiIGJpbikKKyAgICAgICAgICAgICAg IChpbnN0YWxsLWZpbGUgIm5jLjEiIG1hbikKKyAgICAgICAgICAgICAgIChta2Rpci1wIGRv YykKKyAgICAgICAgICAgICAgIDs7IEV4dHJhY3QgbGljZW5zZSBpbmZvcm1hdGlvbiBmcm9t IG5ldGNhdC5jCisgICAgICAgICAgICAgICAoaW52b2tlICJzZWQiICItbiIKKyAgICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIjMsMjcgcy9eIFxcKiBcXD8vL3ciCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvYyAiL0xJQ0VOU0UiKQor ICAgICAgICAgICAgICAgICAgICAgICAibmV0Y2F0LmMiKSkpKSkpKQorICAgIChpbnB1dHMg YCgoImxpYmJzZCIgLGxpYmJzZCkpKQorICAgIChuYXRpdmUtaW5wdXRzIGAoKCJzZWQiICxz ZWQpCisgICAgICAgICAgICAgICAgICAgICAoInBrZy1jb25maWciICxwa2ctY29uZmlnKSkp CisgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3NpZC9uZXRj YXQtb3BlbmJzZCIpCisgICAgKHN5bm9wc2lzICJUQ1AvSVAgc3dpc3MgYXJteSBrbmlmZSIp CisgICAgKGRlc2NyaXB0aW9uCisgICAgICJBIHNpbXBsZSBVbml4IHV0aWxpdHkgd2hpY2gg cmVhZHMgYW5kIHdyaXRlcyBkYXRhIGFjcm9zcyBuZXR3b3JrCitjb25uZWN0aW9ucyB1c2lu ZyBUQ1Agb3IgVURQIHByb3RvY29sLiAgSXQgaXMgZGVzaWduZWQgdG8gYmUgYSByZWxpYWJs ZQorXCJiYWNrLWVuZFwiIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCBkaXJlY3RseSBvciBlYXNp bHkgZHJpdmVuIGJ5IG90aGVyIHByb2dyYW1zCithbmQgc2NyaXB0cy4gIEF0IHRoZSBzYW1l IHRpbWUgaXQgaXMgYSBmZWF0dXJlLXJpY2ggbmV0d29yayBkZWJ1Z2dpbmcgYW5kCitleHBs b3JhdGlvbiB0b29sLCBzaW5jZSBpdCBjYW4gY3JlYXRlIGFsbW9zdCBhbnkga2luZCBvZiBj b25uZWN0aW9uIHlvdSB3b3VsZAorbmVlZCBhbmQgaGFzIHNldmVyYWwgaW50ZXJlc3Rpbmcg YnVpbHQtaW4gY2FwYWJpbGl0aWVzLgorCitUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIE9w ZW5CU0QgcmV3cml0ZSBvZiBuZXRjYXQsIGluY2x1ZGluZyBzdXBwb3J0IGZvcgorSVB2Niwg cHJveGllcywgYW5kIFVuaXggc29ja2V0cy4iKQorICAgIChsaWNlbnNlIChsaXN0IGxpY2Vu c2U6YnNkLTMKKyAgICAgICAgICAgICAgICAgICBsaWNlbnNlOmJzZC0yKSkpKSAgOyBhdG9t aWNpby4qLCBzb2Nrcy5jCisKIChkZWZpbmUtcHVibGljIHNpcGNhbGMKICAgKHBhY2thZ2UK ICAgICAobmFtZSAic2lwY2FsYyIpCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hl cy9uZXRjYXQtb3BlbmJzZC1icm9hZGNhc3Qtc3VwcG9ydC5wYXRjaCBiL2dudS9wYWNrYWdl cy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLWJyb2FkY2FzdC1zdXBwb3J0LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjZmZTdiZmMwZjQKLS0tIC9kZXYv bnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1icm9hZGNh c3Qtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDg5IEBACitGcm9tOiBBcm9uIFh1IDxhcm9u QGRlYmlhbi5vcmc+CitEYXRlOiBNb24sIDEzIEZlYiAyMDEyIDE5OjA2OjUyICswODAwCitT dWJqZWN0OiBicm9hZGNhc3Qgc3VwcG9ydAorCistLS0KKyBuYy4xICAgICB8ICAgIDQgKysr LQorIG5ldGNhdC5jIHwgICAyMiArKysrKysrKysrKysrKysrKysrKy0tCisgMiBmaWxlcyBj aGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCistLS0gYS9uYy4x CisrKysgYi9uYy4xCitAQCAtMzMsNyArMzMsNyBAQAorIC5OZCBhcmJpdHJhcnkgVENQIGFu ZCBVRFAgY29ubmVjdGlvbnMgYW5kIGxpc3RlbnMKKyAuU2ggU1lOT1BTSVMKKyAuTm0gbmMK Ky0uT3AgRmwgNDZDRGRGaGtsTm5yU3RVdXZaegorKy5PcCBGbCA0NmJDRGRGaGtsTm5yU3RV dXZaegorIC5PcCBGbCBJIEFyIGxlbmd0aAorIC5PcCBGbCBpIEFyIGludGVydmFsCisgLk9w IEZsIE0gQXIgdHRsCitAQCAtOTMsNiArOTMsOCBAQCBUaGUgb3B0aW9ucyBhcmUgYXMgZm9s bG93czoKKyBVc2UgSVB2NCBhZGRyZXNzZXMgb25seS4KKyAuSXQgRmwgNgorIFVzZSBJUHY2 IGFkZHJlc3NlcyBvbmx5LgorKy5JdCBGbCBiCisrQWxsb3cgYnJvYWRjYXN0LgorIC5JdCBG bCBDCisgU2VuZCBDUkxGIGFzIGxpbmUtZW5kaW5nLiAgRWFjaCBsaW5lIGZlZWQgKExGKSBj aGFyYWN0ZXIgZnJvbSB0aGUgaW5wdXQKKyBkYXRhIGlzIHRyYW5zbGF0ZWQgaW50byBDUitM RiBiZWZvcmUgYmVpbmcgd3JpdHRlbiB0byB0aGUgc29ja2V0LiAgTGluZQorLS0tIGEvbmV0 Y2F0LmMKKysrKyBiL25ldGNhdC5jCitAQCAtMTMyLDYgKzEzMiw3IEBACisgI2RlZmluZSBV RFBfU0NBTl9USU1FT1VUIDMJCQkvKiBTZWNvbmRzICovCisgCisgLyogQ29tbWFuZCBMaW5l IE9wdGlvbnMgKi8KKytpbnQJYmZsYWc7CQkJCQkvKiBBbGxvdyBCcm9hZGNhc3QgKi8KKyBp bnQJZGZsYWc7CQkJCQkvKiBkZXRhY2hlZCwgbm8gc3RkaW4gKi8KKyBpbnQJRmZsYWc7CQkJ CQkvKiBmZHBhc3Mgc29jayB0byBzdGRvdXQgKi8KKyB1bnNpZ25lZCBpbnQgaWZsYWc7CQkJ CS8qIEludGVydmFsIEZsYWcgKi8KK0BAIC0yNjMsOSArMjY0LDkgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQorIAorIAl3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3Ys CisgIyBpZiBkZWZpbmVkKFRMUykKKy0JICAgICI0NkM6Y0RkZTpGSDpoSTppOks6a2xNOm06 Tm5POm86UDpwOnE6UjpyU3M6VDp0VXVWOnZXOnc6WDp4Olo6eiIpKQorKwkgICAgIjQ2YkM6 Y0RkZTpGSDpoSTppOks6a2xNOm06Tm5POm86UDpwOnE6UjpyU3M6VDp0VXVWOnZXOnc6WDp4 Olo6eiIpKQorICMgZWxzZQorLQkgICAgIjQ2Q0RkRmhJOmk6a2xNOm06Tm5POlA6cDpxOnJT czpUOnRVdVY6dlc6dzpYOng6WnoiKSkKKysJICAgICI0NmJDRGRGaEk6aTprbE06bTpObk86 UDpwOnE6clNzOlQ6dFV1Vjp2Vzp3Olg6eDpaeiIpKQorICMgZW5kaWYKKyAJICAgICE9IC0x KSB7CisgCQlzd2l0Y2ggKGNoKSB7CitAQCAtMjc1LDYgKzI3NiwxMyBAQCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCisgCQljYXNlICc2JzoKKyAJCQlmYW1pbHkgPSBBRl9JTkVU NjsKKyAJCQlicmVhazsKKysJCWNhc2UgJ2InOgorKyMgaWYgZGVmaW5lZChTT19CUk9BRENB U1QpCisrCQkJYmZsYWcgPSAxOworKyMgZWxzZQorKwkJCWVycngoMSwgIm5vIGJyb2FkY2Fz dCBmcmFtZSBzdXBwb3J0IGF2YWlsYWJsZSIpOworKyMgZW5kaWYKKysJCQlicmVhazsKKyAJ CWNhc2UgJ1UnOgorIAkJCWZhbWlseSA9IEFGX1VOSVg7CisgCQkJYnJlYWs7CitAQCAtMTg1 Miw2ICsxODYwLDE1IEBAIHNldF9jb21tb25fc29ja29wdHMoaW50IHMsIGludCBhZikKKyB7 CisgCWludCB4ID0gMTsKKyAKKysjIGlmIGRlZmluZWQoU09fQlJPQURDQVNUKQorKwlpZiAo YmZsYWcpIHsKKysJCS8qIGFsbG93IGRhdGFncmFtIHNvY2tldHMgdG8gc2VuZCBwYWNrZXRz IHRvIGEgYnJvYWRjYXN0IGFkZHJlc3MKKysJCSAqICh0aGlzIG9wdGlvbiBoYXMgbm8gZWZm ZWN0IG9uIHN0cmVhbS1vcmllbnRlZCBzb2NrZXRzKSAqLworKwkJaWYgKHNldHNvY2tvcHQo cywgU09MX1NPQ0tFVCwgU09fQlJPQURDQVNULAorKwkJCSZ4LCBzaXplb2YoeCkpID09IC0x KQorKwkJCWVycigxLCBOVUxMKTsKKysJfQorKyMgZW5kaWYKKyAjIGlmIGRlZmluZWQoVENQ X01ENVNJRykKKyAJaWYgKFNmbGFnKSB7CisgCQlpZiAoc2V0c29ja29wdChzLCBJUFBST1RP X1RDUCwgVENQX01ENVNJRywKK0BAIC0yMTI3LDYgKzIxNDQsNyBAQCBoZWxwKHZvaWQpCisg CWZwcmludGYoc3RkZXJyLCAiXHRDb21tYW5kIFN1bW1hcnk6XG5cCisgCVx0LTQJCVVzZSBJ UHY0XG5cCisgCVx0LTYJCVVzZSBJUHY2XG5cCisrCVx0LWIJCUFsbG93IGJyb2FkY2FzdFxu XAorIAlcdC1DCQlTZW5kIENSTEYgYXMgbGluZS1lbmRpbmdcblwKKyAJXHQtRAkJRW5hYmxl IHRoZSBkZWJ1ZyBzb2NrZXQgb3B0aW9uXG5cCisgCVx0LWQJCURldGFjaCBmcm9tIHN0ZGlu XG5cCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1i dWlsZC13aXRob3V0LVRMUy1zdXBwb3J0LnBhdGNoIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMv bmV0Y2F0LW9wZW5ic2QtYnVpbGQtd2l0aG91dC1UTFMtc3VwcG9ydC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kNzc4MzM4OTlmCi0tLSAvZGV2L251 bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtYnVpbGQtd2l0 aG91dC1UTFMtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDg3MiBAQAorRnJvbTogR3VpbGhl bSBNb3VsaW4gPGd1aWxoZW1AZGViaWFuLm9yZz4KK0RhdGU6IEZyaSwgMDkgSnVuIDIwMTcg MTM6MjE6MjMgKzAyMDAKK1N1YmplY3Q6IGJ1aWxkIHdpdGhvdXQgVExTIHN1cHBvcnQKKwor dGxzLmggaXNuJ3QgYXZhaWxhYmxlIGluIGxpYnNkLWRldiwgYW5kIFRMUyBzdXBwb3J0cyBh ZGRzIG9wdGlvbnMgKC1DLCAtWikKK3RoYXQgYXJlIGFscmVhZHkgdXNlZCBieSBvdXIgRGVi aWFuLXNwZWNpZmljIHBhdGNoZXMuCisKKy0tLQorIE1ha2VmaWxlIHwgICAgMiAKKyBuYy4x ICAgICB8ICAxMTQgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBuZXRjYXQuYyB8ICAxNzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNTMgaW5z ZXJ0aW9ucygrKSwgMTM1IGRlbGV0aW9ucygtKQorCistLS0gYS9NYWtlZmlsZQorKysrIGIv TWFrZWZpbGUKK0BAIC0yLDggKzIsNiBAQAorIAorIFBST0c9CW5jCisgU1JDUz0JbmV0Y2F0 LmMgYXRvbWljaW8uYyBzb2Nrcy5jCistTERBREQrPSAtbHRscyAtbHNzbCAtbGNyeXB0bwor LURQQUREKz0gICR7TElCVExTfSAke0xJQlNTTH0gJHtMSUJDUllQVE99CisgCisgTElCUz0g IGBwa2ctY29uZmlnIC0tbGlicyBsaWJic2RgIC1scmVzb2x2CisgT0JKUz0gICQoU1JDUzou Yz0ubykKKy0tLSBhL25jLjEKKysrKyBiL25jLjEKK0BAIC0zMywyMCArMzMsMTQgQEAKKyAu TmQgYXJiaXRyYXJ5IFRDUCBhbmQgVURQIGNvbm5lY3Rpb25zIGFuZCBsaXN0ZW5zCisgLlNo IFNZTk9QU0lTCisgLk5tIG5jCistLk9wIEZsIDQ2Y0RkRmhrbE5uclN0VXV2egorLS5PcCBG bCBDIEFyIGNlcnRmaWxlCistLk9wIEZsIGUgQXIgbmFtZQorLS5PcCBGbCBIIEFyIGhhc2gK KysuT3AgRmwgNDZEZEZoa2xObnJTdFV1dnoKKyAuT3AgRmwgSSBBciBsZW5ndGgKKyAuT3Ag RmwgaSBBciBpbnRlcnZhbAorLS5PcCBGbCBLIEFyIGtleWZpbGUKKyAuT3AgRmwgTSBBciB0 dGwKKyAuT3AgRmwgbSBBciBtaW50dGwKKyAuT3AgRmwgTyBBciBsZW5ndGgKKy0uT3AgRmwg byBBciBzdGFwbGVmaWxlCisgLk9wIEZsIFAgQXIgcHJveHlfdXNlcm5hbWUKKyAuT3AgRmwg cCBBciBzb3VyY2VfcG9ydAorLS5PcCBGbCBSIEFyIENBZmlsZQorIC5PcCBGbCBzIEFyIHNv dXJjZQorIC5PcCBGbCBUIEFyIGtleXdvcmQKKyAuT3AgRmwgViBBciBydGFibGUKK0BAIC01 NCw3ICs0OCw2IEBACisgLk9wIEZsIHcgQXIgdGltZW91dAorIC5PcCBGbCBYIEFyIHByb3h5 X3Byb3RvY29sCisgLk9wIEZsIHggQXIgcHJveHlfYWRkcmVzcyBOcyBPcCA6IE5zIEFyIHBv cnQKKy0uT3AgRmwgWiBBciBwZWVyY2VydGZpbGUKKyAuT3AgQXIgZGVzdGluYXRpb24KKyAu T3AgQXIgcG9ydAorIC5TaCBERVNDUklQVElPTgorQEAgLTk5LDI4ICs5MiwxMCBAQCBUaGUg b3B0aW9ucyBhcmUgYXMgZm9sbG93czoKKyBVc2UgSVB2NCBhZGRyZXNzZXMgb25seS4KKyAu SXQgRmwgNgorIFVzZSBJUHY2IGFkZHJlc3NlcyBvbmx5LgorLS5JdCBGbCBDIEFyIGNlcnRm aWxlCistTG9hZCB0aGUgcHVibGljIGtleSBwYXJ0IG9mIHRoZSBUTFMgcGVlciBjZXJ0aWZp Y2F0ZSBmcm9tCistLkFyIGNlcnRmaWxlICwKKy1pbiBQRU0gZm9ybWF0LgorLVJlcXVpcmVz CistLkZsIGMgLgorLS5JdCBGbCBjCistVXNlIFRMUyB0byBjb25uZWN0IG9yIGxpc3Rlbi4K Ky1DYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIGFueSBvZiB0aGUgb3B0aW9ucworLS5G bCBGdVUgLgorIC5JdCBGbCBECisgRW5hYmxlIGRlYnVnZ2luZyBvbiB0aGUgc29ja2V0Lgor IC5JdCBGbCBkCisgRG8gbm90IGF0dGVtcHQgdG8gcmVhZCBmcm9tIHN0ZGluLgorLS5JdCBG bCBlIEFyIG5hbWUKKy1Pbmx5IGFjY2VwdCB0aGUgVExTIHBlZXIgY2VydGlmaWNhdGUgaWYg aXQgY29udGFpbnMgdGhlCistLkFyIG5hbWUgLgorLVJlcXVpcmVzCistLkZsIGMgLgorLUlm IG5vdCBzcGVjaWZpZWQsCistLkFyIGRlc3RpbmF0aW9uCistaXMgdXNlZC4KKyAuSXQgRmwg RgorIFBhc3MgdGhlIGZpcnN0IGNvbm5lY3RlZCBzb2NrZXQgdXNpbmcKKyAuWHIgc2VuZG1z ZyAyCitAQCAtMTM3LDE4ICsxMTIsNyBAQCB1c2luZyB0aGUKKyAuQ20gUHJveHlVc2VGZHBh c3MKKyBvcHRpb24pLgorIENhbm5vdCBiZSB1c2VkIHdpdGgKKy0uRmwgYworLW9yCisgLkZs IFUgLgorLS5JdCBGbCBIIEFyIGhhc2gKKy1Pbmx5IGFjY2VwdCB0aGUgVExTIHBlZXIgY2Vy dGlmaWNhdGUgaWYgaXRzIGhhc2ggcmV0dXJuZWQgZnJvbQorLS5YciB0bHNfcGVlcl9jZXJ0 X2hhc2ggMworLW1hdGNoZXMKKy0uQXIgaGFzaCAuCistUmVxdWlyZXMKKy0uRmwgYworLWFu ZCBjYW5ub3QgYmUgdXNlZCB3aXRoCistLkZsIFQgQ20gbm92ZXJpZnkgLgorIC5JdCBGbCBo CisgUHJpbnQgb3V0IHRoZQorIC5ObQorQEAgLTE2MCwxMiArMTI0LDYgQEAgU2xlZXAgZm9y CisgLkFyIGludGVydmFsCisgc2Vjb25kcyBiZXR3ZWVuIGxpbmVzIG9mIHRleHQgc2VudCBh bmQgcmVjZWl2ZWQuCisgQWxzbyBjYXVzZXMgYSBkZWxheSB0aW1lIGJldHdlZW4gY29ubmVj dGlvbnMgdG8gbXVsdGlwbGUgcG9ydHMuCistLkl0IEZsIEsgQXIga2V5ZmlsZQorLUxvYWQg dGhlIFRMUyBwcml2YXRlIGtleSBmcm9tCistLkFyIGtleWZpbGUgLAorLWluIFBFTSBmb3Jt YXQuCistUmVxdWlyZXMKKy0uRmwgYyAuCisgLkl0IEZsIGsKKyBXaGVuIGEgY29ubmVjdGlv biBpcyBjb21wbGV0ZWQsIGxpc3RlbiBmb3IgYW5vdGhlciBvbmUuCisgUmVxdWlyZXMKK0BA IC0xOTYsMTUgKzE1NCw2IEBAIERvIG5vdCBkbyBhbnkgRE5TIG9yIHNlcnZpY2UgbG9va3Vw cyBvbgorIGhvc3RuYW1lcyBvciBwb3J0cy4KKyAuSXQgRmwgTyBBciBsZW5ndGgKKyBTcGVj aWZ5IHRoZSBzaXplIG9mIHRoZSBUQ1Agc2VuZCBidWZmZXIuCistLkl0IEZsIG8gQXIgc3Rh cGxlZmlsZQorLUR1cmluZyB0aGUgVExTIGhhbmRzaGFrZSwgbG9hZCBkYXRhIHRvIGJlIHN0 YXBsZWQgZnJvbQorLS5BciBzdGFwbGVmaWxlICwKKy13aGljaCBpcyBleHBlY3RlZCB0byBj b250YWluIGFuIE9DU1AgcmVzcG9uc2UgZnJvbSBhbiBPQ1NQIHNlcnZlciBpbgorLURFUiBm b3JtYXQuCistUmVxdWlyZXMKKy0uRmwgYworLWFuZAorLS5GbCBDIC4KKyAuSXQgRmwgUCBB ciBwcm94eV91c2VybmFtZQorIFNwZWNpZmllcyBhIHVzZXJuYW1lIHRvIHByZXNlbnQgdG8g YSBwcm94eSBzZXJ2ZXIgdGhhdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi4KKyBJZiBubyB1 c2VybmFtZSBpcyBzcGVjaWZpZWQgdGhlbiBhdXRoZW50aWNhdGlvbiB3aWxsIG5vdCBiZSBh dHRlbXB0ZWQuCitAQCAtMjEzLDEzICsxNjIsNiBAQCBQcm94eSBhdXRoZW50aWNhdGlvbiBp cyBvbmx5IHN1cHBvcnRlZCBmCisgU3BlY2lmeSB0aGUgc291cmNlIHBvcnQKKyAuTm0KKyBz aG91bGQgdXNlLCBzdWJqZWN0IHRvIHByaXZpbGVnZSByZXN0cmljdGlvbnMgYW5kIGF2YWls YWJpbGl0eS4KKy0uSXQgRmwgUiBBciBDQWZpbGUKKy1Mb2FkIHRoZSByb290IENBIGJ1bmRs ZSBmb3IgVExTIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBmcm9tCistLkFyIENBZmlsZSAs CistaW4gUEVNIGZvcm1hdCwgaW5zdGVhZCBvZgorLS5QYSAvZXRjL3NzbC9jZXJ0LnBlbSAu CistUmVxdWlyZXMKKy0uRmwgYyAuCisgLkl0IEZsIHIKKyBDaG9vc2Ugc291cmNlIGFuZC9v ciBkZXN0aW5hdGlvbiBwb3J0cyByYW5kb21seQorIGluc3RlYWQgb2Ygc2VxdWVudGlhbGx5 IHdpdGhpbiBhIHJhbmdlIG9yIGluIHRoZSBvcmRlciB0aGF0IHRoZSBzeXN0ZW0KK0BAIC0y MzksMzUgKzE4MSw3IEBAIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgKKyBvcgorIC5G bCB4IC4KKyAuSXQgRmwgVCBBciBrZXl3b3JkCistQ2hhbmdlIHRoZSBJUHY0IFRPUy9JUHY2 IHRyYWZmaWMgY2xhc3MgdmFsdWUgb3IgdGhlIFRMUyBvcHRpb25zLgorLS5QcAorLUZvciBU TFMgb3B0aW9ucywKKy0uQXIga2V5d29yZAorLW1heSBiZSBvbmUgb2Y6CistLkNtIG5vdmVy aWZ5ICwKKy13aGljaCBkaXNhYmxlcyBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb247CistLkNt IG5vbmFtZSAsCistd2hpY2ggZGlzYWJsZXMgY2VydGlmaWNhdGUgbmFtZSBjaGVja2luZzsK Ky0uQ20gY2xpZW50Y2VydCAsCistd2hpY2ggcmVxdWlyZXMgYSBjbGllbnQgY2VydGlmaWNh dGUgb24gaW5jb21pbmcgY29ubmVjdGlvbnM7IG9yCistLkNtIG11c3RzdGFwbGUgLAorLXdo aWNoIHJlcXVpcmVzIHRoZSBwZWVyIHRvIHByb3ZpZGUgYSB2YWxpZCBzdGFwbGVkIE9DU1Ag cmVzcG9uc2UKKy13aXRoIHRoZSBoYW5kc2hha2UuCistVGhlIGZvbGxvd2luZyBUTFMgb3B0 aW9ucyBzcGVjaWZ5IGEgdmFsdWUgaW4gdGhlIGZvcm0gb2YgYQorLS5BciBrZXkgTnMgPSBO cyBBciB2YWx1ZQorLXBhaXI6CistLkNtIGNpcGhlcnMgLAorLXdoaWNoIGFsbG93cyB0aGUg c3VwcG9ydGVkIFRMUyBjaXBoZXJzIHRvIGJlIHNwZWNpZmllZCAoc2VlCistLlhyIHRsc19j b25maWdfc2V0X2NpcGhlcnMgMworLWZvciBmdXJ0aGVyIGRldGFpbHMpOworLS5DbSBwcm90 b2NvbHMgLAorLXdoaWNoIGFsbG93cyB0aGUgc3VwcG9ydGVkIFRMUyBwcm90b2NvbHMgdG8g YmUgc3BlY2lmaWVkIChzZWUKKy0uWHIgdGxzX2NvbmZpZ19wYXJzZV9wcm90b2NvbHMgMwor LWZvciBmdXJ0aGVyIGRldGFpbHMpLgorLVNwZWNpZnlpbmcgVExTIG9wdGlvbnMgcmVxdWly ZXMKKy0uRmwgYyAuCistLlBwCistRm9yIHRoZSBJUHY0IFRPUy9JUHY2IHRyYWZmaWMgY2xh c3MgdmFsdWUsCisrQ2hhbmdlIHRoZSBJUHY0IFRPUy9JUHY2IHRyYWZmaWMgY2xhc3MgdmFs dWUuCisgLkFyIGtleXdvcmQKKyBtYXkgYmUgb25lIG9mCisgLkNtIGNyaXRpY2FsICwKK0BA IC0yOTEsMTMgKzIwNSwxMyBAQCB0byBzY3JpcHQgdGVsbmV0IHNlc3Npb25zLgorIFVzZQor IC5VeCBOcyAtZG9tYWluCisgc29ja2V0cy4KKy1DYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3 aXRoIGFueSBvZiB0aGUgb3B0aW9ucworLS5GbCBjRnggLgorK0Nhbm5vdCBiZSB1c2VkIHRv Z2V0aGVyIHdpdGgKKysuRmwgRgorK29yCisrLkZsIHggLgorIC5JdCBGbCB1CisgVXNlIFVE UCBpbnN0ZWFkIG9mIFRDUC4KKyBDYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoCistLkZs IGMKKy1vcgorIC5GbCB4IC4KKyBGb3IKKyAuVXggTnMgLWRvbWFpbgorQEAgLTM2MCwxMiAr Mjc0LDYgQEAgQW4gSVB2NiBhZGRyZXNzIGNhbiBiZSBzcGVjaWZpZWQgdW5hbWJpZworIGlu IHNxdWFyZSBicmFja2V0cy4KKyBBIHByb3h5IGNhbm5vdCBiZSB1c2VkIHdpdGggYW55IG9m IHRoZSBvcHRpb25zCisgLkZsIGxzdVUgLgorLS5JdCBGbCBaIEFyIHBlZXJjZXJ0ZmlsZQor LVNhdmUgdGhlIHBlZXIgY2VydGlmaWNhdGVzIHRvCistLkFyIHBlZXJjZXJ0ZmlsZSAsCist aW4gUEVNIGZvcm1hdC4KKy1SZXF1aXJlcworLS5GbCBjIC4KKyAuSXQgRmwgegorIE9ubHkg c2NhbiBmb3IgbGlzdGVuaW5nIGRhZW1vbnMsIHdpdGhvdXQgc2VuZGluZyBhbnkgZGF0YSB0 byB0aGVtLgorIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgKK0BAIC01MTksMTYgKzQy Nyw2IEBAIHRoZSBzb3VyY2UgcG9ydCwgd2l0aCBhIHRpbWVvdXQgb2YgNSBzZWMKKyAuUHAK KyAuRGwgJCBuYyAtcCAzMTMzNyAtdyA1IGhvc3QuZXhhbXBsZS5jb20gNDIKKyAuUHAKKy1P cGVuIGEgVENQIGNvbm5lY3Rpb24gdG8gcG9ydCA0NDMgb2Ygd3d3LmV4YW1wbGUuY29tLCBh bmQgbmVnb3RpYXRlIFRMUyB3aXRoCistYW55IHN1cHBvcnRlZCBUTFMgcHJvdG9jb2wgdmVy c2lvbiBhbmQgImNvbXBhdCIgY2lwaGVyczoKKy0uUHAKKy0uRGwgJCBuYyAtY3YgLVQgcHJv dG9jb2xzPWFsbCAtVCBjaXBoZXJzPWNvbXBhdCB3d3cuZXhhbXBsZS5jb20gNDQzCistLlBw CistT3BlbiBhIFRDUCBjb25uZWN0aW9uIHRvIHBvcnQgNDQzIG9mIHd3dy5nb29nbGUuY2Es IGFuZCBuZWdvdGlhdGUgVExTLgorLUNoZWNrIGZvciBhIGRpZmZlcmVudCBuYW1lIGluIHRo ZSBjZXJ0aWZpY2F0ZSBmb3IgdmFsaWRhdGlvbjoKKy0uUHAKKy0uRGwgJCBuYyAtY3YgLWUg YWRzZi5hdS5kb3VibGVjbGljay5uZXQgd3d3Lmdvb2dsZS5jYSA0NDMKKy0uUHAKKyBPcGVu IGEgVURQIGNvbm5lY3Rpb24gdG8gcG9ydCA1MyBvZiBob3N0LmV4YW1wbGUuY29tOgorIC5Q cAorIC5EbCAkIG5jIC11IGhvc3QuZXhhbXBsZS5jb20gNTMKKy0tLSBhL25ldGNhdC5jCisr KysgYi9uZXRjYXQuYworQEAgLTk5LDcgKzk5LDkgQEAKKyAjaW5jbHVkZSA8c3RkbGliLmg+ CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx0aW1lLmg+CistI2luY2x1ZGUg PHRscy5oPgorKyNpZmRlZiBUTFMKKysjIGluY2x1ZGUgPHRscy5oPgorKyNlbmRpZgorICNp bmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8YnNkL3N0ZGxpYi5oPgorICNpbmNsdWRl IDxic2Qvc3RyaW5nLmg+CitAQCAtMTE1LDEwICsxMTcsMTIgQEAKKyAjZGVmaW5lIFBPTExf U1RET1VUCTMKKyAjZGVmaW5lIEJVRlNJWkUJCTE2Mzg0CisgCistI2RlZmluZSBUTFNfTk9W RVJJRlkJKDEgPDwgMSkKKy0jZGVmaW5lIFRMU19OT05BTUUJKDEgPDwgMikKKy0jZGVmaW5l IFRMU19DQ0VSVAkoMSA8PCAzKQorLSNkZWZpbmUgVExTX01VU1RTVEFQTEUJKDEgPDwgNCkK KysjaWZkZWYgVExTCisrIyBkZWZpbmUgVExTX05PVkVSSUZZCSgxIDw8IDEpCisrIyBkZWZp bmUgVExTX05PTkFNRQkoMSA8PCAyKQorKyMgZGVmaW5lIFRMU19DQ0VSVAkoMSA8PCAzKQor KyMgZGVmaW5lIFRMU19NVVNUU1RBUExFCSgxIDw8IDQpCisrI2VuZGlmCisgCisgLyogQ29t bWFuZCBMaW5lIE9wdGlvbnMgKi8KKyBpbnQJZGZsYWc7CQkJCQkvKiBkZXRhY2hlZCwgbm8g c3RkaW4gKi8KK0BAIC0xNDQsNiArMTQ4LDcgQEAgaW50CVNmbGFnOwkJCQkJLyogVENQIE1E NSBzaWduYXR1cmUgb3B0aQorIGludAlUZmxhZyA9IC0xOwkJCQkvKiBJUCBUeXBlIG9mIFNl cnZpY2UgKi8KKyBpbnQJcnRhYmxlaWQgPSAtMTsKKyAKKysjIGlmIGRlZmluZWQoVExTKQor IGludAl1c2V0bHM7CQkJCQkvKiB1c2UgVExTICovCisgY29uc3QgY2hhciAgICAqQ2ZsYWc7 CQkJCS8qIFB1YmxpYyBjZXJ0IGZpbGUgKi8KKyBjb25zdCBjaGFyICAgICpLZmxhZzsJCQkJ LyogUHJpdmF0ZSBrZXkgZmlsZSAqLworQEAgLTE1Niw2ICsxNjEsNyBAQCBjaGFyCSp0bHNf ZXhwZWN0aGFzaDsJCQkvKiByZXF1aXJlZCBoYXNoCisgY2hhcgkqdGxzX2NpcGhlcnM7CQkJ CS8qIFRMUyBjaXBoZXJzICovCisgY2hhcgkqdGxzX3Byb3RvY29sczsJCQkJLyogVExTIHBy b3RvY29scyAqLworIEZJTEUJKlpmbGFnOwkJCQkJLyogZmlsZSB0byBzYXZlIHBlZXIgY2Vy dCAqLworKyMgZW5kaWYKKyAKKyBpbnQgcmVjdmNvdW50LCByZWN2bGltaXQ7CisgaW50IHRp bWVvdXQgPSAtMTsKK0BAIC0xNzAsMTAgKzE3NiwxNiBAQCBpbnQJc3RydG9wb3J0KGNoYXIg KnBvcnRzdHIsIGludCB1ZHApOworIHZvaWQJYnVpbGRfcG9ydHMoY2hhciAqKTsKKyB2b2lk CWhlbHAodm9pZCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKKyBpbnQJbG9jYWxfbGlz dGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYWRkcmluZm8pOworKyMg aWYgZGVmaW5lZChUTFMpCisgdm9pZAlyZWFkd3JpdGUoaW50LCBzdHJ1Y3QgdGxzICopOwor KyMgZWxzZQorK3ZvaWQJcmVhZHdyaXRlKGludCk7CisrIyBlbmRpZgorIHZvaWQJZmRwYXNz KGludCBuZmQpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CisgaW50CXJlbW90ZV9jb25u ZWN0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYWRkcmluZm8pOworKyMg aWYgZGVmaW5lZChUTFMpCisgaW50CXRpbWVvdXRfdGxzKGludCwgc3RydWN0IHRscyAqLCBp bnQgKCopKHN0cnVjdCB0bHMgKikpOworKyMgZW5kaWYKKyBpbnQJdGltZW91dF9jb25uZWN0 KGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCk7CisgaW50CXNvY2tz X2Nvbm5lY3QoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0cnVjdCBhZGRyaW5mbywK KyAJICAgIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYWRkcmluZm8sIGlu dCwgY29uc3QgY2hhciAqKTsKK0BAIC0xODMsMTUgKzE5NSwyNCBAQCBpbnQJdW5peF9jb25u ZWN0KGNoYXIgKik7CisgaW50CXVuaXhfbGlzdGVuKGNoYXIgKik7Cisgdm9pZAlzZXRfY29t bW9uX3NvY2tvcHRzKGludCwgaW50KTsKKyBpbnQJcHJvY2Vzc190b3Nfb3B0KGNoYXIgKiwg aW50ICopOworKyMgaWYgZGVmaW5lZChUTFMpCisgaW50CXByb2Nlc3NfdGxzX29wdChjaGFy ICosIGludCAqKTsKKyB2b2lkCXNhdmVfcGVlcl9jZXJ0KHN0cnVjdCB0bHMgKl90bHNfY3R4 LCBGSUxFICpfZnApOworKyMgZW5kaWYKKyB2b2lkCXJlcG9ydF9zb2NrKGNvbnN0IGNoYXIg KiwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCwgY2hhciAqKTsKKysjIGlm IGRlZmluZWQoVExTKQorIHZvaWQJcmVwb3J0X3RscyhzdHJ1Y3QgdGxzICp0bHNfY3R4LCBj aGFyICogaG9zdCk7CisrIyBlbmRpZgorIHZvaWQJdXNhZ2UoaW50KTsKKysjIGlmIGRlZmlu ZWQoVExTKQorIHNzaXplX3QgZHJhaW5idWYoaW50LCB1bnNpZ25lZCBjaGFyICosIHNpemVf dCAqLCBzdHJ1Y3QgdGxzICopOworIHNzaXplX3QgZmlsbGJ1ZihpbnQsIHVuc2lnbmVkIGNo YXIgKiwgc2l6ZV90ICosIHN0cnVjdCB0bHMgKik7Cisgdm9pZAl0bHNfc2V0dXBfY2xpZW50 KHN0cnVjdCB0bHMgKiwgaW50LCBjaGFyICopOworIHN0cnVjdCB0bHMgKnRsc19zZXR1cF9z ZXJ2ZXIoc3RydWN0IHRscyAqLCBpbnQsIGNoYXIgKik7CisrIyBlbHNlCisrc3NpemVfdCBk cmFpbmJ1ZihpbnQsIHVuc2lnbmVkIGNoYXIgKiwgc2l6ZV90ICopOworK3NzaXplX3QgZmls bGJ1ZihpbnQsIHVuc2lnbmVkIGNoYXIgKiwgc2l6ZV90ICopOworKyMgZW5kaWYKKyAKKyBp bnQKKyBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtMjA2LDggKzIyNywxMCBA QCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCWNvbnN0IGNoYXIgKmVycnN0cjsK KyAJc3RydWN0IGFkZHJpbmZvIHByb3h5aGludHM7CisgCWNoYXIgdW5peF9kZ190bXBfc29j a2V0X2J1ZltVTklYX0RHX1RNUF9TT0NLRVRfU0laRV07CisrIyBpZiBkZWZpbmVkKFRMUykK KyAJc3RydWN0IHRsc19jb25maWcgKnRsc19jZmcgPSBOVUxMOworIAlzdHJ1Y3QgdGxzICp0 bHNfY3R4ID0gTlVMTDsKKysjIGVuZGlmCisgCXVpbnQzMl90IHByb3RvY29sczsKKyAKKyAJ cmV0ID0gMTsKK0BAIC0yMTUsMTIgKzIzOCwxOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCisgCWhvc3QgPSBOVUxMOworIAl1cG9ydCA9IE5VTEw7CisgCXN2ID0gTlVMTDsK KysjIGlmIGRlZmluZWQoVExTKQorIAlSZmxhZyA9IHRsc19kZWZhdWx0X2NhX2NlcnRfZmls ZSgpOworKyMgZW5kaWYKKyAKKyAJc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOworIAorIAl3 aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsCisrIyBpZiBkZWZpbmVkKFRMUykKKyAJ ICAgICI0NkM6Y0RkZTpGSDpoSTppOks6a2xNOm06Tm5POm86UDpwOlI6clNzOlQ6dFV1Vjp2 Vzp3Olg6eDpaOnoiKSkKKysjIGVsc2UKKysJICAgICI0NkRkRmhJOmk6a2xNOm06Tm5POlA6 cDpyU3M6VDp0VXVWOnZXOnc6WDp4OnoiKSkKKysjIGVuZGlmCisgCSAgICAhPSAtMSkgewor IAkJc3dpdGNoIChjaCkgeworIAkJY2FzZSAnNCc6CitAQCAtMjQyLDI0ICsyNzEsMzAgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCWVsc2UKKyAJCQkJZXJyeCgxLCAi dW5zdXBwb3J0ZWQgcHJveHkgcHJvdG9jb2wiKTsKKyAJCQlicmVhazsKKysjIGlmIGRlZmlu ZWQoVExTKQorIAkJY2FzZSAnQyc6CisgCQkJQ2ZsYWcgPSBvcHRhcmc7CisgCQkJYnJlYWs7 CisgCQljYXNlICdjJzoKKyAJCQl1c2V0bHMgPSAxOworIAkJCWJyZWFrOworKyMgZW5kaWYK KyAJCWNhc2UgJ2QnOgorIAkJCWRmbGFnID0gMTsKKyAJCQlicmVhazsKKysjIGlmIGRlZmlu ZWQoVExTKQorIAkJY2FzZSAnZSc6CisgCQkJdGxzX2V4cGVjdG5hbWUgPSBvcHRhcmc7Cisg CQkJYnJlYWs7CisrIyBlbmRpZgorIAkJY2FzZSAnRic6CisgCQkJRmZsYWcgPSAxOworIAkJ CWJyZWFrOworKyMgaWYgZGVmaW5lZChUTFMpCisgCQljYXNlICdIJzoKKyAJCQl0bHNfZXhw ZWN0aGFzaCA9IG9wdGFyZzsKKyAJCQlicmVhazsKKysjIGVuZGlmCisgCQljYXNlICdoJzoK KyAJCQloZWxwKCk7CisgCQkJYnJlYWs7CitAQCAtMjY4LDkgKzMwMywxMSBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJaWYgKGVycnN0cikKKyAJCQkJZXJyeCgxLCAi aW50ZXJ2YWwgJXM6ICVzIiwgZXJyc3RyLCBvcHRhcmcpOworIAkJCWJyZWFrOworKyMgaWYg ZGVmaW5lZChUTFMpCisgCQljYXNlICdLJzoKKyAJCQlLZmxhZyA9IG9wdGFyZzsKKyAJCQli cmVhazsKKysjIGVuZGlmCisgCQljYXNlICdrJzoKKyAJCQlrZmxhZyA9IDE7CisgCQkJYnJl YWs7CitAQCAtMjk5LDEwICszMzYsMTIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQorIAkJY2FzZSAncCc6CisgCQkJcGZsYWcgPSBvcHRhcmc7CisgCQkJYnJlYWs7CisrIyBp ZiBkZWZpbmVkKFRMUykKKyAJCWNhc2UgJ1InOgorIAkJCXRsc19jYWNoYW5nZWQgPSAxOwor IAkJCVJmbGFnID0gb3B0YXJnOworIAkJCWJyZWFrOworKyMgZW5kaWYKKyAJCWNhc2UgJ3In OgorIAkJCXJmbGFnID0gMTsKKyAJCQlicmVhazsKK0BAIC0zNDQsMTIgKzM4MywxNCBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJaWYgKChwcm94eSA9IHN0cmR1cChv cHRhcmcpKSA9PSBOVUxMKQorIAkJCQllcnIoMSwgTlVMTCk7CisgCQkJYnJlYWs7CisrIyBp ZiBkZWZpbmVkKFRMUykKKyAJCWNhc2UgJ1onOgorIAkJCWlmIChzdHJjbXAob3B0YXJnLCAi LSIpID09IDApCisgCQkJCVpmbGFnID0gc3RkZXJyOworIAkJCWVsc2UgaWYgKChaZmxhZyA9 IGZvcGVuKG9wdGFyZywgInciKSkgPT0gTlVMTCkKKyAJCQkJZXJyKDEsICJjYW4ndCBvcGVu ICVzIiwgb3B0YXJnKTsKKyAJCQlicmVhazsKKysjIGVuZGlmCisgCQljYXNlICd6JzoKKyAJ CQl6ZmxhZyA9IDE7CisgCQkJYnJlYWs7CitAQCAtMzY4LDkgKzQwOSwxMSBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJCWVycngoMSwgIlRDUCBzZW5kIHdpbmRvdyAl czogJXMiLAorIAkJCQkgICAgZXJyc3RyLCBvcHRhcmcpOworIAkJCWJyZWFrOworKyMgaWYg ZGVmaW5lZChUTFMpCisgCQljYXNlICdvJzoKKyAJCQlvZmxhZyA9IG9wdGFyZzsKKyAJCQli cmVhazsKKysjIGVuZGlmCisgCQljYXNlICdTJzoKKyAjIGlmIGRlZmluZWQoVENQX01ENVNJ RykKKyAJCQlTZmxhZyA9IDE7CitAQCAtMzgxLDggKzQyNCwxMCBAQCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCisgCQljYXNlICdUJzoKKyAJCQllcnJzdHIgPSBOVUxMOworIAkJ CWVycm5vID0gMDsKKysjIGlmIGRlZmluZWQoVExTKQorIAkJCWlmIChwcm9jZXNzX3Rsc19v cHQob3B0YXJnLCAmVExTb3B0KSkKKyAJCQkJYnJlYWs7CisrIyBlbmRpZgorIAkJCWlmIChw cm9jZXNzX3Rvc19vcHQob3B0YXJnLCAmVGZsYWcpKQorIAkJCQlicmVhazsKKyAJCQlpZiAo c3RybGVuKG9wdGFyZykgPiAxICYmIG9wdGFyZ1swXSA9PSAnMCcgJiYKK0BAIC0zOTIsNyAr NDM3LDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQkJVGZsYWcgPSAo aW50KXN0cnRvbnVtKG9wdGFyZywgMCwgMjU1LAorIAkJCQkgICAgJmVycnN0cik7CisgCQkJ aWYgKFRmbGFnIDwgMCB8fCBUZmxhZyA+IDI1NSB8fCBlcnJzdHIgfHwgZXJybm8pCisrIyBp ZiBkZWZpbmVkKFRMUykKKyAJCQkJZXJyeCgxLCAiaWxsZWdhbCB0b3MvdGxzIHZhbHVlICVz Iiwgb3B0YXJnKTsKKysjIGVsc2UKKysJCQkJZXJyeCgxLCAiaWxsZWdhbCB0b3MgdmFsdWUg JXMiLCBvcHRhcmcpOworKyMgZW5kaWYKKyAJCQlicmVhazsKKyAJCWRlZmF1bHQ6CisgCQkJ dXNhZ2UoMSk7CitAQCAtNDI5LDYgKzQ3OCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKKyAJfSBlbHNlCisgCQl1c2FnZSgxKTsKKyAKKysjIGlmIGRlZmluZWQoVExTKQor IAlpZiAodXNldGxzKSB7CisgCQlpZiAoQ2ZsYWcgJiYgdW52ZWlsKENmbGFnLCAiciIpID09 IC0xKQorIAkJCWVycigxLCAidW52ZWlsIik7CitAQCAtNDUxLDE1ICs1MDEsMTkgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCQllcnIoMSwgInVudmVpbCIpOworIAkJ fQorIAl9CisrIyBlbmRpZgorIAorIAlpZiAoIWxmbGFnICYmIGtmbGFnKQorIAkJZXJyeCgx LCAibXVzdCB1c2UgLWwgd2l0aCAtayIpOworKyMgaWYgZGVmaW5lZChUTFMpCisgCWlmICh1 ZmxhZyAmJiB1c2V0bHMpCisgCQllcnJ4KDEsICJjYW5ub3QgdXNlIC1jIGFuZCAtdSIpOwor IAlpZiAoKGZhbWlseSA9PSBBRl9VTklYKSAmJiB1c2V0bHMpCisgCQllcnJ4KDEsICJjYW5u b3QgdXNlIC1jIGFuZCAtVSIpOworKyMgZW5kaWYKKyAJaWYgKChmYW1pbHkgPT0gQUZfVU5J WCkgJiYgRmZsYWcpCisgCQllcnJ4KDEsICJjYW5ub3QgdXNlIC1GIGFuZCAtVSIpOworKyMg aWYgZGVmaW5lZChUTFMpCisgCWlmIChGZmxhZyAmJiB1c2V0bHMpCisgCQllcnJ4KDEsICJj YW5ub3QgdXNlIC1jIGFuZCAtRiIpOworIAlpZiAoVExTb3B0ICYmICF1c2V0bHMpCitAQCAt NDc4LDYgKzUzMiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCWVycngo MSwgInlvdSBtdXN0IHNwZWNpZnkgLWMgdG8gdXNlIC1IIik7CisgCWlmICh0bHNfZXhwZWN0 bmFtZSAmJiAhdXNldGxzKQorIAkJZXJyeCgxLCAieW91IG11c3Qgc3BlY2lmeSAtYyB0byB1 c2UgLWUiKTsKKysjIGVuZGlmCisgCisgCS8qIEdldCBuYW1lIG9mIHRlbXBvcmFyeSBzb2Nr ZXQgZm9yIHVuaXggZGF0YWdyYW0gY2xpZW50ICovCisgCWlmICgoZmFtaWx5ID09IEFGX1VO SVgpICYmIHVmbGFnICYmICFsZmxhZykgeworQEAgLTU0NCw2ICs1OTksNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJcHJveHloaW50cy5haV9mbGFncyB8PSBBSV9O VU1FUklDSE9TVDsKKyAJfQorIAorKyMgaWYgZGVmaW5lZChUTFMpCisgCWlmICh1c2V0bHMp IHsKKyAJCWlmICgodGxzX2NmZyA9IHRsc19jb25maWdfbmV3KCkpID09IE5VTEwpCisgCQkJ ZXJyeCgxLCAidW5hYmxlIHRvIGFsbG9jYXRlIFRMUyBjb25maWciKTsKK0BAIC01NzksNyAr NjM1LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCQllcnIoMSwgInBs ZWRnZSIpOworIAkJfSBlbHNlIGlmIChwbGVkZ2UoInN0ZGlvIGluZXQgZG5zIiwgTlVMTCkg PT0gLTEpCisgCQkJZXJyKDEsICJwbGVkZ2UiKTsKKy0JfQorKyAJfQorKyMgZW5kaWYKKyAJ aWYgKGxmbGFnKSB7CisgCQlyZXQgPSAwOworIAorQEAgLTU5MCw2ICs2NDcsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJCXMgPSB1bml4X2xpc3Rlbihob3N0KTsK KyAJCX0KKyAKKysjIGlmIGRlZmluZWQoVExTKQorIAkJaWYgKHVzZXRscykgeworIAkJCXRs c19jb25maWdfdmVyaWZ5X2NsaWVudF9vcHRpb25hbCh0bHNfY2ZnKTsKKyAJCQlpZiAoKHRs c19jdHggPSB0bHNfc2VydmVyKCkpID09IE5VTEwpCitAQCAtNTk4LDYgKzY1Niw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQkJZXJyeCgxLCAidGxzIGNvbmZpZ3Vy YXRpb24gZmFpbGVkICglcykiLAorIAkJCQkgICAgdGxzX2Vycm9yKHRsc19jdHgpKTsKKyAJ CX0KKysjIGVuZGlmCisgCQkvKiBBbGxvdyBvbmx5IG9uZSBjb25uZWN0aW9uIGF0IGEgdGlt ZSwgYnV0IHN0YXkgYWxpdmUuICovCisgCQlmb3IgKDs7KSB7CisgCQkJaWYgKGZhbWlseSAh PSBBRl9VTklYKSB7CitAQCAtNjEzLDcgKzY3MiwxMSBAQCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCisgCQkJCSAqIGxldCBpdCByZWNlaXZlIGRhdGFncmFtcyBmcm9tIG11bHRp cGxlCisgCQkJCSAqIHNvY2tldCBwYWlycy4KKyAJCQkJICovCisrIyBpZiBkZWZpbmVkKFRM UykKKyAJCQkJcmVhZHdyaXRlKHMsIE5VTEwpOworKyMgZWxzZQorKwkJCQlyZWFkd3JpdGUo cyk7CisrIyBlbmRpZgorIAkJCX0gZWxzZSBpZiAodWZsYWcgJiYgIWtmbGFnKSB7CisgCQkJ CS8qCisgCQkJCSAqIEZvciBVRFAgYW5kIG5vdCAtaywgd2Ugd2lsbCB1c2UgcmVjdmZyb20o KQorQEAgLTYzOCw5ICs3MDEsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQor IAkJCQkJcmVwb3J0X3NvY2soIkNvbm5lY3Rpb24gcmVjZWl2ZWQiLAorIAkJCQkJICAgIChz dHJ1Y3Qgc29ja2FkZHIgKikmeiwgbGVuLCBOVUxMKTsKKyAKKysjIGlmIGRlZmluZWQoVExT KQorIAkJCQlyZWFkd3JpdGUocywgTlVMTCk7CisgCQkJfSBlbHNlIHsKKyAJCQkJc3RydWN0 IHRscyAqdGxzX2NjdHggPSBOVUxMOworKyMgZWxzZQorKwkJCQlyZWFkd3JpdGUocyk7Cisr IAkJCX0gZWxzZSB7CisrIyBlbmRpZgorIAkJCQlpbnQgY29ubmZkOworIAorIAkJCQlsZW4g PSBzaXplb2YoY2xpYWRkcik7CitAQCAtNjU0LDYgKzcyMiw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKKyAJCQkJCXJlcG9ydF9zb2NrKCJDb25uZWN0aW9uIHJlY2VpdmVk IiwKKyAJCQkJCSAgICAoc3RydWN0IHNvY2thZGRyICopJmNsaWFkZHIsIGxlbiwKKyAJCQkJ CSAgICBmYW1pbHkgPT0gQUZfVU5JWCA/IGhvc3QgOiBOVUxMKTsKKysjIGlmIGRlZmluZWQo VExTKQorIAkJCQlpZiAoKHVzZXRscykgJiYKKyAJCQkJICAgICh0bHNfY2N0eCA9IHRsc19z ZXR1cF9zZXJ2ZXIodGxzX2N0eCwgY29ubmZkLCBob3N0KSkpCisgCQkJCQlyZWFkd3JpdGUo Y29ubmZkLCB0bHNfY2N0eCk7CitAQCAtNjYzLDYgKzczMiwxMCBAQCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCisgCQkJCQl0aW1lb3V0X3RscyhzLCB0bHNfY2N0eCwgdGxzX2Ns b3NlKTsKKyAJCQkJY2xvc2UoY29ubmZkKTsKKyAJCQkJdGxzX2ZyZWUodGxzX2NjdHgpOwor KyMgZWxzZQorKwkJCQlyZWFkd3JpdGUoY29ubmZkKTsKKysgCQkJCWNsb3NlKGNvbm5mZCk7 CisrIyBlbmRpZgorIAkJCX0KKyAJCQlpZiAoZmFtaWx5ID09IEFGX1VOSVggJiYgdWZsYWcp IHsKKyAJCQkJaWYgKGNvbm5lY3QocywgTlVMTCwgMCkgPCAwKQorQEAgLTY3Nyw3ICs3NTAs MTEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAorIAkJaWYgKChzID0gdW5p eF9jb25uZWN0KGhvc3QpKSA+IDApIHsKKyAJCQlpZiAoIXpmbGFnKQorKyMgaWYgZGVmaW5l ZChUTFMpCisgCQkJCXJlYWR3cml0ZShzLCBOVUxMKTsKKysjIGVsc2UKKysJCQkJcmVhZHdy aXRlKHMpOworKyMgZW5kaWYKKyAJCQljbG9zZShzKTsKKyAJCX0gZWxzZSB7CisgCQkJd2Fy bigiJXMiLCBob3N0KTsKK0BAIC02OTgsNiArNzc1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQorIAkJZm9yIChzID0gLTEsIGkgPSAwOyBwb3J0bGlzdFtpXSAhPSBOVUxM OyBpKyspIHsKKyAJCQlpZiAocyAhPSAtMSkKKyAJCQkJY2xvc2Uocyk7CisrIyBpZiBkZWZp bmVkKFRMUykKKyAJCQl0bHNfZnJlZSh0bHNfY3R4KTsKKyAJCQl0bHNfY3R4ID0gTlVMTDsK KyAKK0BAIC03MDgsNiArNzg2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQor IAkJCQkJZXJyeCgxLCAidGxzIGNvbmZpZ3VyYXRpb24gZmFpbGVkICglcykiLAorIAkJCQkJ ICAgIHRsc19lcnJvcih0bHNfY3R4KSk7CisgCQkJfQorKyMgZW5kaWYKKyAJCQlpZiAoeGZs YWcpCisgCQkJCXMgPSBzb2Nrc19jb25uZWN0KGhvc3QsIHBvcnRsaXN0W2ldLCBoaW50cywK KyAJCQkJICAgIHByb3h5LCBwcm94eXBvcnQsIHByb3h5aGludHMsIHNvY2tzdiwKK0BAIC03 NDUsNiArODI0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCX0KKyAJ CQlpZiAoRmZsYWcpCisgCQkJCWZkcGFzcyhzKTsKKysjIGlmIGRlZmluZWQoVExTKQorIAkJ CWVsc2UgeworIAkJCQlpZiAodXNldGxzKQorIAkJCQkJdGxzX3NldHVwX2NsaWVudCh0bHNf Y3R4LCBzLCBob3N0KTsKK0BAIC03NTMsMTMgKzgzMywxOSBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCisgCQkJCWlmICh0bHNfY3R4KQorIAkJCQkJdGltZW91dF90bHMocywg dGxzX2N0eCwgdGxzX2Nsb3NlKTsKKyAJCQl9CisrIyBlbHNlCisrCQkJZWxzZSBpZiAoIXpm bGFnKQorKwkJCQlyZWFkd3JpdGUocyk7CisrIyBlbmRpZgorIAkJfQorIAl9CisgCisgCWlm IChzICE9IC0xKQorIAkJY2xvc2Uocyk7CisrIyBpZiBkZWZpbmVkKFRMUykKKyAJdGxzX2Zy ZWUodGxzX2N0eCk7CisgCXRsc19jb25maWdfZnJlZSh0bHNfY2ZnKTsKKysjIGVuZGlmCisg CisgCXJldHVybiByZXQ7CisgfQorQEAgLTgwMSw2ICs4ODcsNyBAQCB1bml4X2JpbmQoY2hh ciAqcGF0aCwgaW50IGZsYWdzKQorIAlyZXR1cm4gczsKKyB9CisgCisrIyBpZiBkZWZpbmVk KFRMUykKKyBpbnQKKyB0aW1lb3V0X3RscyhpbnQgcywgc3RydWN0IHRscyAqdGxzX2N0eCwg aW50ICgqZnVuYykoc3RydWN0IHRscyAqKSkKKyB7CitAQCAtODg3LDYgKzk3NCw3IEBAIHRs c19zZXR1cF9zZXJ2ZXIoc3RydWN0IHRscyAqdGxzX2N0eCwgaW4KKyAJfQorIAlyZXR1cm4g TlVMTDsKKyB9CisrIyBlbmRpZgorIAorIC8qCisgICogdW5peF9jb25uZWN0KCkKK0BAIC0x MTEyLDcgKzEyMDAsMTEgQEAgbG9jYWxfbGlzdGVuKGNvbnN0IGNoYXIgKmhvc3QsIGNvbnN0 IGNoYQorICAqIExvb3AgdGhhdCBwb2xscyBvbiB0aGUgbmV0d29yayBmaWxlIGRlc2NyaXB0 b3IgYW5kIHN0ZGluLgorICAqLworIHZvaWQKKysjIGlmIGRlZmluZWQoVExTKQorIHJlYWR3 cml0ZShpbnQgbmV0X2ZkLCBzdHJ1Y3QgdGxzICp0bHNfY3R4KQorKyMgZWxzZQorK3JlYWR3 cml0ZShpbnQgbmV0X2ZkKQorKyMgZW5kaWYKKyB7CisgCXN0cnVjdCBwb2xsZmQgcGZkWzRd OworIAlpbnQgc3RkaW5fZmQgPSBTVERJTl9GSUxFTk87CitAQCAtMTIxMiwxMiArMTMwNCwx NyBAQCByZWFkd3JpdGUoaW50IG5ldF9mZCwgc3RydWN0IHRscyAqdGxzX2N0CisgCQkvKiB0 cnkgdG8gcmVhZCBmcm9tIHN0ZGluICovCisgCQlpZiAocGZkW1BPTExfU1RESU5dLnJldmVu dHMgJiBQT0xMSU4gJiYgc3RkaW5idWZwb3MgPCBCVUZTSVpFKSB7CisgCQkJcmV0ID0gZmls bGJ1ZihwZmRbUE9MTF9TVERJTl0uZmQsIHN0ZGluYnVmLAorKyMgaWYgZGVmaW5lZChUTFMp CisgCQkJICAgICZzdGRpbmJ1ZnBvcywgTlVMTCk7CisgCQkJaWYgKHJldCA9PSBUTFNfV0FO VF9QT0xMSU4pCisgCQkJCXBmZFtQT0xMX1NURElOXS5ldmVudHMgPSBQT0xMSU47CisgCQkJ ZWxzZSBpZiAocmV0ID09IFRMU19XQU5UX1BPTExPVVQpCisgCQkJCXBmZFtQT0xMX1NURElO XS5ldmVudHMgPSBQT0xMT1VUOworLQkJCWVsc2UgaWYgKHJldCA9PSAwIHx8IHJldCA9PSAt MSkKKysJCQllbHNlCisrIyBlbHNlCisrCQkJICAgICZzdGRpbmJ1ZnBvcyk7CisrIyBlbmRp ZgorKwkJCWlmIChyZXQgPT0gMCB8fCByZXQgPT0gLTEpCisgCQkJCXBmZFtQT0xMX1NURElO XS5mZCA9IC0xOworIAkJCS8qIHJlYWQgc29tZXRoaW5nIC0gcG9sbCBuZXQgb3V0ICovCisg CQkJaWYgKHN0ZGluYnVmcG9zID4gMCkKK0BAIC0xMjI5LDEyICsxMzI2LDE3IEBAIHJlYWR3 cml0ZShpbnQgbmV0X2ZkLCBzdHJ1Y3QgdGxzICp0bHNfY3QKKyAJCS8qIHRyeSB0byB3cml0 ZSB0byBuZXR3b3JrICovCisgCQlpZiAocGZkW1BPTExfTkVUT1VUXS5yZXZlbnRzICYgUE9M TE9VVCAmJiBzdGRpbmJ1ZnBvcyA+IDApIHsKKyAJCQlyZXQgPSBkcmFpbmJ1ZihwZmRbUE9M TF9ORVRPVVRdLmZkLCBzdGRpbmJ1ZiwKKysjIGlmIGRlZmluZWQoVExTKQorIAkJCSAgICAm c3RkaW5idWZwb3MsIHRsc19jdHgpOworIAkJCWlmIChyZXQgPT0gVExTX1dBTlRfUE9MTElO KQorIAkJCQlwZmRbUE9MTF9ORVRPVVRdLmV2ZW50cyA9IFBPTExJTjsKKyAJCQllbHNlIGlm IChyZXQgPT0gVExTX1dBTlRfUE9MTE9VVCkKKyAJCQkJcGZkW1BPTExfTkVUT1VUXS5ldmVu dHMgPSBQT0xMT1VUOworLQkJCWVsc2UgaWYgKHJldCA9PSAtMSkKKysJCQllbHNlCisrIyBl bHNlCisrCQkJICAgICZzdGRpbmJ1ZnBvcyk7CisrIyBlbmRpZgorKwkJCWlmIChyZXQgPT0g LTEpCisgCQkJCXBmZFtQT0xMX05FVE9VVF0uZmQgPSAtMTsKKyAJCQkvKiBidWZmZXIgZW1w dHkgLSByZW1vdmUgc2VsZiBmcm9tIHBvbGxpbmcgKi8KKyAJCQlpZiAoc3RkaW5idWZwb3Mg PT0gMCkKK0BAIC0xMjQ2LDEyICsxMzQ4LDE3IEBAIHJlYWR3cml0ZShpbnQgbmV0X2ZkLCBz dHJ1Y3QgdGxzICp0bHNfY3QKKyAJCS8qIHRyeSB0byByZWFkIGZyb20gbmV0d29yayAqLwor IAkJaWYgKHBmZFtQT0xMX05FVElOXS5yZXZlbnRzICYgUE9MTElOICYmIG5ldGluYnVmcG9z IDwgQlVGU0laRSkgeworIAkJCXJldCA9IGZpbGxidWYocGZkW1BPTExfTkVUSU5dLmZkLCBu ZXRpbmJ1ZiwKKysjIGlmIGRlZmluZWQoVExTKQorIAkJCSAgICAmbmV0aW5idWZwb3MsIHRs c19jdHgpOworIAkJCWlmIChyZXQgPT0gVExTX1dBTlRfUE9MTElOKQorIAkJCQlwZmRbUE9M TF9ORVRJTl0uZXZlbnRzID0gUE9MTElOOworIAkJCWVsc2UgaWYgKHJldCA9PSBUTFNfV0FO VF9QT0xMT1VUKQorIAkJCQlwZmRbUE9MTF9ORVRJTl0uZXZlbnRzID0gUE9MTE9VVDsKKy0J CQllbHNlIGlmIChyZXQgPT0gLTEpCisrCQkJZWxzZQorKyMgZWxzZQorKwkJCSAgICAmbmV0 aW5idWZwb3MpOworKyMgZW5kaWYKKysJCQlpZiAocmV0ID09IC0xKQorIAkJCQlwZmRbUE9M TF9ORVRJTl0uZmQgPSAtMTsKKyAJCQkvKiBlb2Ygb24gbmV0IGluIC0gcmVtb3ZlIGZyb20g cGZkICovCisgCQkJaWYgKHJldCA9PSAwKSB7CitAQCAtMTI3OCwxMiArMTM4NSwxNyBAQCBy ZWFkd3JpdGUoaW50IG5ldF9mZCwgc3RydWN0IHRscyAqdGxzX2N0CisgCQkvKiB0cnkgdG8g d3JpdGUgdG8gc3Rkb3V0ICovCisgCQlpZiAocGZkW1BPTExfU1RET1VUXS5yZXZlbnRzICYg UE9MTE9VVCAmJiBuZXRpbmJ1ZnBvcyA+IDApIHsKKyAJCQlyZXQgPSBkcmFpbmJ1ZihwZmRb UE9MTF9TVERPVVRdLmZkLCBuZXRpbmJ1ZiwKKysjIGlmIGRlZmluZWQoVExTKQorIAkJCSAg ICAmbmV0aW5idWZwb3MsIE5VTEwpOworIAkJCWlmIChyZXQgPT0gVExTX1dBTlRfUE9MTElO KQorIAkJCQlwZmRbUE9MTF9TVERPVVRdLmV2ZW50cyA9IFBPTExJTjsKKyAJCQllbHNlIGlm IChyZXQgPT0gVExTX1dBTlRfUE9MTE9VVCkKKyAJCQkJcGZkW1BPTExfU1RET1VUXS5ldmVu dHMgPSBQT0xMT1VUOworLQkJCWVsc2UgaWYgKHJldCA9PSAtMSkKKysJCQllbHNlCisrIyBl bHNlCisrCQkJICAgICZuZXRpbmJ1ZnBvcyk7CisrIyBlbmRpZgorKwkJCWlmIChyZXQgPT0g LTEpCisgCQkJCXBmZFtQT0xMX1NURE9VVF0uZmQgPSAtMTsKKyAJCQkvKiBidWZmZXIgZW1w dHkgLSByZW1vdmUgc2VsZiBmcm9tIHBvbGxpbmcgKi8KKyAJCQlpZiAobmV0aW5idWZwb3Mg PT0gMCkKK0BAIC0xMzA3LDIxICsxNDE5LDMxIEBAIHJlYWR3cml0ZShpbnQgbmV0X2ZkLCBz dHJ1Y3QgdGxzICp0bHNfY3QKKyB9CisgCisgc3NpemVfdAorKyMgaWYgZGVmaW5lZChUTFMp CisgZHJhaW5idWYoaW50IGZkLCB1bnNpZ25lZCBjaGFyICpidWYsIHNpemVfdCAqYnVmcG9z LCBzdHJ1Y3QgdGxzICp0bHMpCisrIyBlbHNlCisrZHJhaW5idWYoaW50IGZkLCB1bnNpZ25l ZCBjaGFyICpidWYsIHNpemVfdCAqYnVmcG9zKQorKyMgZW5kaWYKKyB7CisgCXNzaXplX3Qg bjsKKyAJc3NpemVfdCBhZGp1c3Q7CisgCisrIyBpZiBkZWZpbmVkKFRMUykKKyAJaWYgKHRs cykgeworIAkJbiA9IHRsc193cml0ZSh0bHMsIGJ1ZiwgKmJ1ZnBvcyk7CisgCQlpZiAobiA9 PSAtMSkKKyAJCQllcnJ4KDEsICJ0bHMgd3JpdGUgZmFpbGVkICglcykiLCB0bHNfZXJyb3Io dGxzKSk7CisgCX0gZWxzZSB7CisrIyBlbmRpZgorIAkJbiA9IHdyaXRlKGZkLCBidWYsICpi dWZwb3MpOworIAkJLyogZG9uJ3QgdHJlYXQgRUFHQUlOLCBFSU5UUiBhcyBlcnJvciAqLwor IAkJaWYgKG4gPT0gLTEgJiYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikp CisrIyBpZiBkZWZpbmVkKFRMUykKKyAJCQluID0gVExTX1dBTlRfUE9MTE9VVDsKKyAJfQor KyMgZWxzZQorKwkJCW4gPSAtMjsKKysjIGVuZGlmCisgCWlmIChuIDw9IDApCisgCQlyZXR1 cm4gbjsKKyAJLyogYWRqdXN0IGJ1ZmZlciAqLworQEAgLTEzMzMsMjEgKzE0NTUsMzEgQEAg ZHJhaW5idWYoaW50IGZkLCB1bnNpZ25lZCBjaGFyICpidWYsIHNpegorIH0KKyAKKyBzc2l6 ZV90CisrIyBpZiBkZWZpbmVkKFRMUykKKyBmaWxsYnVmKGludCBmZCwgdW5zaWduZWQgY2hh ciAqYnVmLCBzaXplX3QgKmJ1ZnBvcywgc3RydWN0IHRscyAqdGxzKQorKyMgZWxzZQorK2Zp bGxidWYoaW50IGZkLCB1bnNpZ25lZCBjaGFyICpidWYsIHNpemVfdCAqYnVmcG9zKQorKyMg ZW5kaWYKKyB7CisgCXNpemVfdCBudW0gPSBCVUZTSVpFIC0gKmJ1ZnBvczsKKyAJc3NpemVf dCBuOworIAorKyMgaWYgZGVmaW5lZChUTFMpCisgCWlmICh0bHMpIHsKKyAJCW4gPSB0bHNf cmVhZCh0bHMsIGJ1ZiArICpidWZwb3MsIG51bSk7CisgCQlpZiAobiA9PSAtMSkKKyAJCQll cnJ4KDEsICJ0bHMgcmVhZCBmYWlsZWQgKCVzKSIsIHRsc19lcnJvcih0bHMpKTsKKyAJfSBl bHNlIHsKKysjIGVuZGlmCisgCQluID0gcmVhZChmZCwgYnVmICsgKmJ1ZnBvcywgbnVtKTsK KyAJCS8qIGRvbid0IHRyZWF0IEVBR0FJTiwgRUlOVFIgYXMgZXJyb3IgKi8KKyAJCWlmIChu ID09IC0xICYmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIpKQorKyMgaWYg ZGVmaW5lZChUTFMpCisgCQkJbiA9IFRMU19XQU5UX1BPTExJTjsKKyAJfQorKyMgZWxzZQor KwkJCW4gPSAtMjsKKysjIGVuZGlmCisgCWlmIChuIDw9IDApCisgCQlyZXR1cm4gbjsKKyAJ KmJ1ZnBvcyArPSBuOworQEAgLTE2NjUsNiArMTc5Nyw3IEBAIHByb2Nlc3NfdG9zX29wdChj aGFyICpzLCBpbnQgKnZhbCkKKyAJcmV0dXJuIDA7CisgfQorIAorKyMgaWYgZGVmaW5lZChU TFMpCisgaW50CisgcHJvY2Vzc190bHNfb3B0KGNoYXIgKnMsIGludCAqZmxhZ3MpCisgewor QEAgLTE3NzgsNiArMTkxMSw3IEBAIHJlcG9ydF90bHMoc3RydWN0IHRscyAqIHRsc19jdHgs IGNoYXIgKgorIAorIAl9CisgfQorKyMgZW5kaWYKKyAKKyB2b2lkCisgcmVwb3J0X3NvY2so Y29uc3QgY2hhciAqbXNnLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBzb2NrbGVuX3Qg c2FsZW4sCitAQCAtMTgxNiwxNyArMTk1MCwxMiBAQCBoZWxwKHZvaWQpCisgCWZwcmludGYo c3RkZXJyLCAiXHRDb21tYW5kIFN1bW1hcnk6XG5cCisgCVx0LTQJCVVzZSBJUHY0XG5cCisg CVx0LTYJCVVzZSBJUHY2XG5cCistCVx0LUMgY2VydGZpbGUJUHVibGljIGtleSBmaWxlXG5c CistCVx0LWMJCVVzZSBUTFNcblwKKyAJXHQtRAkJRW5hYmxlIHRoZSBkZWJ1ZyBzb2NrZXQg b3B0aW9uXG5cCisgCVx0LWQJCURldGFjaCBmcm9tIHN0ZGluXG5cCistCVx0LWUgbmFtZVx0 CVJlcXVpcmVkIG5hbWUgaW4gcGVlciBjZXJ0aWZpY2F0ZVxuXAorIAlcdC1GCQlQYXNzIHNv Y2tldCBmZFxuXAorLQlcdC1IIGhhc2hcdAlIYXNoIHN0cmluZyBvZiBwZWVyIGNlcnRpZmlj YXRlXG5cCisgCVx0LWgJCVRoaXMgaGVscCB0ZXh0XG5cCisgCVx0LUkgbGVuZ3RoCVRDUCBy ZWNlaXZlIGJ1ZmZlciBsZW5ndGhcblwKKyAJXHQtaSBpbnRlcnZhbAlEZWxheSBpbnRlcnZh bCBmb3IgbGluZXMgc2VudCwgcG9ydHMgc2Nhbm5lZFxuXAorLQlcdC1LIGtleWZpbGUJUHJp dmF0ZSBrZXkgZmlsZVxuXAorIAlcdC1rCQlLZWVwIGluYm91bmQgc29ja2V0cyBvcGVuIGZv ciBtdWx0aXBsZSBjb25uZWN0c1xuXAorIAlcdC1sCQlMaXN0ZW4gbW9kZSwgZm9yIGluYm91 bmQgY29ubmVjdHNcblwKKyAJXHQtTSB0dGwJCU91dGdvaW5nIFRUTCAvIEhvcCBMaW1pdFxu XAorQEAgLTE4MzQsMTQgKzE5NjMsMTIgQEAgaGVscCh2b2lkKQorIAlcdC1OCQlTaHV0ZG93 biB0aGUgbmV0d29yayBzb2NrZXQgYWZ0ZXIgRU9GIG9uIHN0ZGluXG5cCisgCVx0LW4JCVN1 cHByZXNzIG5hbWUvcG9ydCByZXNvbHV0aW9uc1xuXAorIAlcdC1PIGxlbmd0aAlUQ1Agc2Vu ZCBidWZmZXIgbGVuZ3RoXG5cCistCVx0LW8gc3RhcGxlZmlsZQlTdGFwbGUgZmlsZVxuXAor IAlcdC1QIHByb3h5dXNlclx0VXNlcm5hbWUgZm9yIHByb3h5IGF1dGhlbnRpY2F0aW9uXG5c CisgCVx0LXAgcG9ydFx0CVNwZWNpZnkgbG9jYWwgcG9ydCBmb3IgcmVtb3RlIGNvbm5lY3Rz XG5cCistCVx0LVIgQ0FmaWxlCUNBIGJ1bmRsZVxuXAorIAlcdC1yCQlSYW5kb21pemUgcmVt b3RlIHBvcnRzXG5cCisgCVx0LVMJCUVuYWJsZSB0aGUgVENQIE1ENSBzaWduYXR1cmUgb3B0 aW9uXG5cCisgCVx0LXMgc291cmNlCUxvY2FsIHNvdXJjZSBhZGRyZXNzXG5cCistCVx0LVQg a2V5d29yZAlUT1MgdmFsdWUgb3IgVExTIG9wdGlvbnNcblwKKysJXHQtVCBrZXl3b3JkCVRP UyB2YWx1ZVxuXAorIAlcdC10CQlBbnN3ZXIgVEVMTkVUIG5lZ290aWF0aW9uXG5cCisgCVx0 LVUJCVVzZSBVTklYIGRvbWFpbiBzb2NrZXRcblwKKyAJXHQtdQkJVURQIG1vZGVcblwKK0BA IC0xODUxLDcgKzE5NzgsNiBAQCBoZWxwKHZvaWQpCisgCVx0LXcgdGltZW91dAlUaW1lb3V0 IGZvciBjb25uZWN0cyBhbmQgZmluYWwgbmV0IHJlYWRzXG5cCisgCVx0LVggcHJvdG8JUHJv eHkgcHJvdG9jb2w6IFwiNFwiLCBcIjVcIiAoU09DS1MpIG9yIFwiY29ubmVjdFwiXG5cCisg CVx0LXggYWRkcls6cG9ydF1cdFNwZWNpZnkgcHJveHkgYWRkcmVzcyBhbmQgcG9ydFxuXAor LQlcdC1aCQlQZWVyIGNlcnRpZmljYXRlIGZpbGVcblwKKyAJXHQtegkJWmVyby1JL08gbW9k ZSBbdXNlZCBmb3Igc2Nhbm5pbmddXG5cCisgCVBvcnQgbnVtYmVycyBjYW4gYmUgaW5kaXZp ZHVhbCBvciByYW5nZXM6IGxvLWhpIFtpbmNsdXNpdmVdXG4iKTsKKyAJZXhpdCgwKTsKK0BA IC0xODYxLDE1ICsxOTg3LDExIEBAIHZvaWQKKyB1c2FnZShpbnQgcmV0KQorIHsKKyAJZnBy aW50ZihzdGRlcnIsCistCSAgICAidXNhZ2U6IG5jIFstNDZjRGRGaGtsTm5yU3RVdXZ6XSBb LUMgY2VydGZpbGVdIFstZSBuYW1lXSAiCistCSAgICAiWy1IIGhhc2hdIFstSSBsZW5ndGhd XG4iCistCSAgICAiXHQgIFstaSBpbnRlcnZhbF0gWy1LIGtleWZpbGVdIFstTSB0dGxdIFst bSBtaW50dGxdIFstTyBsZW5ndGhdXG4iCistCSAgICAiXHQgIFstbyBzdGFwbGVmaWxlXSBb LVAgcHJveHlfdXNlcm5hbWVdIFstcCBzb3VyY2VfcG9ydF0gIgorLQkgICAgIlstUiBDQWZp bGVdXG4iCisrCSAgICAidXNhZ2U6IG5jIFstNDZEZEZoa2xObnJTdFV1dnpdIFstSSBsZW5n dGhdIFstaSBpbnRlcnZhbF0gWy1NIHR0bF1cbiIKKysJICAgICJcdCAgWy1tIG1pbnR0bF0g Wy1PIGxlbmd0aF0gWy1QIHByb3h5X3VzZXJuYW1lXSBbLXAgc291cmNlX3BvcnRdXG4iCisg CSAgICAiXHQgIFstcyBzb3VyY2VdIFstVCBrZXl3b3JkXSBbLVYgcnRhYmxlXSBbLVcgcmVj dmxpbWl0XSAiCisgCSAgICAiWy13IHRpbWVvdXRdXG4iCisgCSAgICAiXHQgIFstWCBwcm94 eV9wcm90b2NvbF0gWy14IHByb3h5X2FkZHJlc3NbOnBvcnRdXSAiCistCSAgICAiWy1aIHBl ZXJjZXJ0ZmlsZV1cbiIKKyAJICAgICJcdCAgW2Rlc3RpbmF0aW9uXSBbcG9ydF1cbiIpOwor IAlpZiAocmV0KQorIAkJZXhpdCgxKTsKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRj aGVzL25ldGNhdC1vcGVuYnNkLWNvbm5lY3QtdGltZW91dC5wYXRjaCBiL2dudS9wYWNrYWdl cy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLWNvbm5lY3QtdGltZW91dC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hZTYyOGM0NDk1Ci0tLSAvZGV2L251 bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtY29ubmVjdC10 aW1lb3V0LnBhdGNoCkBAIC0wLDAgKzEsMTI2IEBACitGcm9tOiBBcm9uIFh1IDxhcm9uQGRl Ymlhbi5vcmc+CitEYXRlOiBNb24sIDEzIEZlYiAyMDEyIDE0OjQzOjU2ICswODAwCitTdWJq ZWN0OiBjb25uZWN0IHRpbWVvdXQKKworLS0tCisgbmV0Y2F0LmMgfCAgIDc4ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LQorIDEgZmlsZSBjaGFuZ2VkLCA3NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQor CistLS0gYS9uZXRjYXQuYworKysrIGIvbmV0Y2F0LmMKK0BAIC05MCw2ICs5MCw3IEBACisg I2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxlcnJu by5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5j bHVkZSA8bmV0ZGIuaD4KKyAjaW5jbHVkZSA8cG9sbC5oPgorQEAgLTEyNCw2ICsxMjUsMTAg QEAKKyAjIGRlZmluZSBUTFNfTVVTVFNUQVBMRQkoMSA8PCA0KQorICNlbmRpZgorIAorKyNk ZWZpbmUgQ09OTkVDVElPTl9TVUNDRVNTIDAKKysjZGVmaW5lIENPTk5FQ1RJT05fRkFJTEVE IDEKKysjZGVmaW5lIENPTk5FQ1RJT05fVElNRU9VVCAyCisrCisgLyogQ29tbWFuZCBMaW5l IE9wdGlvbnMgKi8KKyBpbnQJZGZsYWc7CQkJCQkvKiBkZXRhY2hlZCwgbm8gc3RkaW4gKi8K KyBpbnQJRmZsYWc7CQkJCQkvKiBmZHBhc3Mgc29jayB0byBzdGRvdXQgKi8KK0BAIC0yMTQs NiArMjE5LDkgQEAgc3NpemVfdCBkcmFpbmJ1ZihpbnQsIHVuc2lnbmVkIGNoYXIgKiwgcwor IHNzaXplX3QgZmlsbGJ1ZihpbnQsIHVuc2lnbmVkIGNoYXIgKiwgc2l6ZV90ICopOworICMg ZW5kaWYKKyAKKytzdGF0aWMgaW50IGNvbm5lY3Rfd2l0aF90aW1lb3V0KGludCBmZCwgY29u c3Qgc3RydWN0IHNvY2thZGRyICpzYSwKKysgICAgICAgIHNvY2tsZW5fdCBzYWxlbiwgaW50 IGN0aW1lb3V0KTsKKysKKyBpbnQKKyBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisg eworQEAgLTEwNzgsMTEgKzEwODYsMTQgQEAgcmVtb3RlX2Nvbm5lY3QoY29uc3QgY2hhciAq aG9zdCwgY29uc3QgYworIAorIAkJc2V0X2NvbW1vbl9zb2Nrb3B0cyhzLCByZXMtPmFpX2Zh bWlseSk7CisgCistCQlpZiAodGltZW91dF9jb25uZWN0KHMsIHJlcy0+YWlfYWRkciwgcmVz LT5haV9hZGRybGVuKSA9PSAwKQorKwkJaWYgKChlcnJvciA9IGNvbm5lY3Rfd2l0aF90aW1l b3V0KHMsIHJlcy0+YWlfYWRkciwgcmVzLT5haV9hZGRybGVuLCB0aW1lb3V0KSkgPT0gQ09O TkVDVElPTl9TVUNDRVNTKQorIAkJCWJyZWFrOworLQkJaWYgKHZmbGFnKQorKwkJaWYgKHZm bGFnICYmIGVycm9yID09IENPTk5FQ1RJT05fRkFJTEVEKQorIAkJCXdhcm4oImNvbm5lY3Qg dG8gJXMgcG9ydCAlcyAoJXMpIGZhaWxlZCIsIGhvc3QsIHBvcnQsCisgCQkJICAgIHVmbGFn ID8gInVkcCIgOiAidGNwIik7CisrICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZmbGFnICYm IGVycm9yID09IENPTk5FQ1RJT05fVElNRU9VVCkKKysgICAgICAgICAgICAgICAgICAgIHdh cm4oImNvbm5lY3QgdG8gJXMgcG9ydCAlcyAoJXMpIHRpbWVkIG91dCIsIGhvc3QsIHBvcnQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVmbGFnID8gInVkcCIgOiAidGNwIik7 CisgCisgCQlzYXZlX2Vycm5vID0gZXJybm87CisgCQljbG9zZShzKTsKK0BAIC0xMTIzLDYg KzExMzQsNjkgQEAgdGltZW91dF9jb25uZWN0KGludCBzLCBjb25zdCBzdHJ1Y3Qgc29jawor IAlyZXR1cm4gcmV0OworIH0KKyAKKytzdGF0aWMgaW50IGNvbm5lY3Rfd2l0aF90aW1lb3V0 KGludCBmZCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICpzYSwKKysJCSAgICAgICAgICAgICAg ICBzb2NrbGVuX3Qgc2FsZW4sIGludCBjdGltZW91dCkKKyt7CisrCWludCBlcnI7CisrCXN0 cnVjdCB0aW1ldmFsIHR2LCAqdHZwID0gTlVMTDsKKysJZmRfc2V0IGNvbm5lY3RfZmRzZXQ7 CisrCXNvY2tsZW5fdCBsZW47CisrCWludCBvcmlnX2ZsYWdzOworKworKwlvcmlnX2ZsYWdz ID0gZmNudGwoZmQsIEZfR0VURkwsIDApOworKwlpZiAoZmNudGwoZmQsIEZfU0VURkwsIG9y aWdfZmxhZ3MgfCBPX05PTkJMT0NLKSA8IDAgKSB7CisrCQl3YXJuKCJjYW4ndCBzZXQgT19O T05CTE9DSyAtIHRpbWVvdXQgbm90IGF2YWlsYWJsZSIpOworKwkJaWYgKGNvbm5lY3QoZmQs IHNhLCBzYWxlbikgPT0gMCkKKysJCQlyZXR1cm4gQ09OTkVDVElPTl9TVUNDRVNTOworKwkJ ZWxzZQorKwkJCXJldHVybiBDT05ORUNUSU9OX0ZBSUxFRDsKKysJfQorKworKwkvKiBzZXQg Y29ubmVjdCB0aW1lb3V0ICovCisrCWlmIChjdGltZW91dCA+IDApIHsKKysJCXR2LnR2X3Nl YyA9ICh0aW1lX3QpY3RpbWVvdXQvMTAwMDsKKysJCXR2LnR2X3VzZWMgPSAwOworKwkJdHZw ID0gJnR2OworKwl9CisrCisrCS8qIGF0dGVtcHQgdGhlIGNvbm5lY3Rpb24gKi8KKysJZXJy ID0gY29ubmVjdChmZCwgc2EsIHNhbGVuKTsKKysJaWYgKGVyciAhPSAwICYmIGVycm5vID09 IEVJTlBST0dSRVNTKSB7CisrCQkvKiBjb25uZWN0aW9uIGlzIHByb2NlZWRpbmcKKysJCSAq IGl0IGlzIGNvbXBsZXRlIChvciBmYWlsZWQpIHdoZW4gc2VsZWN0IHJldHVybnMgKi8KKysK KysJCS8qIGluaXRpYWxpemUgY29ubmVjdF9mZHNldCAqLworKwkJRkRfWkVSTygmY29ubmVj dF9mZHNldCk7CisrCQlGRF9TRVQoZmQsICZjb25uZWN0X2Zkc2V0KTsKKysKKysJCS8qIGNh bGwgc2VsZWN0ICovCisrCQlkbyB7CisrCQkJZXJyID0gc2VsZWN0KGZkICsgMSwgTlVMTCwg JmNvbm5lY3RfZmRzZXQsCisrCQkJCSAgICAgTlVMTCwgdHZwKTsKKysJCX0gd2hpbGUgKGVy ciA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOworKworKwkJLyogc2VsZWN0IGVycm9yICovCisr CQlpZiAoZXJyIDwgMCkKKysJCQllcnJ4KDEsInNlbGVjdCBlcnJvcjogJXMiLCBzdHJlcnJv cihlcnJubykpOworKwkJLyogd2UgaGF2ZSByZWFjaGVkIGEgdGltZW91dCAqLworKwkJaWYg KGVyciA9PSAwKQorKwkJCXJldHVybiBDT05ORUNUSU9OX1RJTUVPVVQ7CisrCQkvKiBzZWxl Y3QgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBidXQgd2UgbXVzdCB0ZXN0IHNvY2tldAorKwkJ ICogZXJyb3IgZm9yIHJlc3VsdCAqLworKwkJbGVuID0gc2l6ZW9mKGVycik7CisrCQlpZiAo Z2V0c29ja29wdChmZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsICZlcnIsICZsZW4pIDwgMCkK KysJCQllcnJ4KDEsICJnZXRzb2Nrb3B0IGVycm9yOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7 CisrCQkvKiBzZXR1cCBlcnJubyBhY2NvcmRpbmcgdG8gdGhlIHJlc3VsdCByZXR1cm5lZCBi eQorKwkJICogZ2V0c29ja29wdCAqLworKwkJaWYgKGVyciAhPSAwKQorKwkJCWVycm5vID0g ZXJyOworKwl9CisrCisrCS8qIHJldHVybiBhYm9ydGVkIGlmIGFuIGVycm9yIG9jY3VyZWQs IGFuZCB2YWxpZCBvdGhlcndpc2UgKi8KKysJZmNudGwoZmQsIEZfU0VURkwsIG9yaWdfZmxh Z3MpOworKwlyZXR1cm4gKGVyciAhPSAwKT8gQ09OTkVDVElPTl9GQUlMRUQgOiBDT05ORUNU SU9OX1NVQ0NFU1M7CisrfQorKworIC8qCisgICogbG9jYWxfbGlzdGVuKCkKKyAgKiBSZXR1 cm5zIGEgc29ja2V0IGxpc3RlbmluZyBvbiBhIGxvY2FsIHBvcnQsIGJpbmRzIHRvIHNwZWNp ZmllZCBzb3VyY2UKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1v cGVuYnNkLWRjY3Atc3VwcG9ydC5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNh dC1vcGVuYnNkLWRjY3Atc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi45YWFmZTNiMDgwCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2th Z2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtZGNjcC1zdXBwb3J0LnBhdGNoCkBAIC0wLDAg KzEsMjM1IEBACitGcm9tOiBBcm9uIFh1IDxhcm9uQGRlYmlhbi5vcmc+CitEYXRlOiBNb24s IDEzIEZlYiAyMDEyIDE1OjU2OjUxICswODAwCitTdWJqZWN0OiBkY2NwIHN1cHBvcnQKKwor LS0tCisgbmMuMSAgICAgfCAgICA0ICsrCisgbmV0Y2F0LmMgfCAgIDg5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQor IDIgZmlsZXMgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisK Ky0tLSBhL25jLjEKKysrKyBiL25jLjEKK0BAIC0zMyw3ICszMyw3IEBACisgLk5kIGFyYml0 cmFyeSBUQ1AgYW5kIFVEUCBjb25uZWN0aW9ucyBhbmQgbGlzdGVucworIC5TaCBTWU5PUFNJ UworIC5ObSBuYworLS5PcCBGbCA0NkNEZEZoa2xObnJTdFV1dnoKKysuT3AgRmwgNDZDRGRG aGtsTm5yU3RVdXZaegorIC5PcCBGbCBJIEFyIGxlbmd0aAorIC5PcCBGbCBpIEFyIGludGVy dmFsCisgLk9wIEZsIE0gQXIgdHRsCitAQCAtMjg5LDYgKzI4OSw4IEBAIEFuIElQdjYgYWRk cmVzcyBjYW4gYmUgc3BlY2lmaWVkIHVuYW1iaWcKKyBpbiBzcXVhcmUgYnJhY2tldHMuCisg QSBwcm94eSBjYW5ub3QgYmUgdXNlZCB3aXRoIGFueSBvZiB0aGUgb3B0aW9ucworIC5GbCBs c3VVIC4KKysuSXQgRmwgWgorK0RDQ1AgbW9kZS4KKyAuSXQgRmwgegorIE9ubHkgc2NhbiBm b3IgbGlzdGVuaW5nIGRhZW1vbnMsIHdpdGhvdXQgc2VuZGluZyBhbnkgZGF0YSB0byB0aGVt LgorIENhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgKKy0tLSBhL25ldGNhdC5jCisrKysg Yi9uZXRjYXQuYworQEAgLTE0Niw2ICsxNDYsNyBAQCBpbnQJcmZsYWc7CQkJCQkvKiBSYW5k b20gcG9ydHMgZmxhZyAqLworIGNoYXIgICAqc2ZsYWc7CQkJCQkvKiBTb3VyY2UgQWRkcmVz cyAqLworIGludAl0ZmxhZzsJCQkJCS8qIFRlbG5ldCBFbXVsYXRpb24gKi8KKyBpbnQJdWZs YWc7CQkJCQkvKiBVRFAgLSBEZWZhdWx0IHRvIFRDUCAqLworK2ludAlkY2NwZmxhZzsJCQkJ LyogRENDUCAtIERlZmF1bHQgdG8gVENQICovCisgaW50CXZmbGFnOwkJCQkJLyogVmVyYm9z aXR5ICovCisgaW50CXhmbGFnOwkJCQkJLyogU29ja3MgcHJveHkgKi8KKyBpbnQJemZsYWc7 CQkJCQkvKiBQb3J0IFNjYW4gRmxhZyAqLworQEAgLTIyNCw2ICsyMjUsNyBAQCBzc2l6ZV90 IGRyYWluYnVmKGludCwgdW5zaWduZWQgY2hhciAqLCBzCisgc3NpemVfdCBmaWxsYnVmKGlu dCwgdW5zaWduZWQgY2hhciAqLCBzaXplX3QgKik7CisgIyBlbmRpZgorIAorK2NoYXIgKnBy b3RvX25hbWUoaW50IHVmbGFnLCBpbnQgZGNjcGZsYWcpOworIHN0YXRpYyBpbnQgY29ubmVj dF93aXRoX3RpbWVvdXQoaW50IGZkLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLAorICAg ICAgICAgc29ja2xlbl90IHNhbGVuLCBpbnQgY3RpbWVvdXQpOworIAorQEAgLTI2Myw3ICsy NjUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgIyBpZiBkZWZpbmVkKFRM UykKKyAJICAgICI0NkM6Y0RkZTpGSDpoSTppOks6a2xNOm06Tm5POm86UDpwOnE6UjpyU3M6 VDp0VXVWOnZXOnc6WDp4Olo6eiIpKQorICMgZWxzZQorLQkgICAgIjQ2Q0RkRmhJOmk6a2xN Om06Tm5POlA6cDpxOnJTczpUOnRVdVY6dlc6dzpYOng6eiIpKQorKwkgICAgIjQ2Q0RkRmhJ Omk6a2xNOm06Tm5POlA6cDpxOnJTczpUOnRVdVY6dlc6dzpYOng6WnoiKSkKKyAjIGVuZGlm CisgCSAgICAhPSAtMSkgeworIAkJc3dpdGNoIChjaCkgeworQEAgLTM4MCw2ICszODIsMTMg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJY2FzZSAndSc6CisgCQkJdWZs YWcgPSAxOworIAkJCWJyZWFrOworKwkJY2FzZSAnWic6CisrIyBpZiBkZWZpbmVkKElQUFJP VE9fRENDUCkgJiYgZGVmaW5lZChTT0NLX0RDQ1ApCisrCQkJZGNjcGZsYWcgPSAxOworKyMg ZWxzZQorKwkJCWVycngoMSwgIm5vIERDQ1Agc3VwcG9ydCBhdmFpbGFibGUiKTsKKysjIGVu ZGlmCisrCQkJYnJlYWs7CisgCQljYXNlICdWJzoKKyAjIGlmIGRlZmluZWQoUlRfVEFCTEVJ RF9NQVgpCisgCQkJcnRhYmxlaWQgPSAoaW50KXN0cnRvbnVtKG9wdGFyZywgMCwKK0BAIC00 ODQsNiArNDkzLDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAKKyAJLyog Q3J1ZnQgdG8gbWFrZSBzdXJlIG9wdGlvbnMgYXJlIGNsZWFuLCBhbmQgdXNlZCBwcm9wZXJs eS4gKi8KKyAJaWYgKGFyZ3ZbMF0gJiYgIWFyZ3ZbMV0gJiYgZmFtaWx5ID09IEFGX1VOSVgp IHsKKysjIGlmIGRlZmluZWQoSVBQUk9UT19EQ0NQKSAmJiBkZWZpbmVkKFNPQ0tfRENDUCkK KysJCWlmIChkY2NwZmxhZykKKysJCQllcnJ4KDEsICJjYW5ub3QgdXNlIC1aIGFuZCAtVSIp OworKyMgZW5kaWYKKyAJCWhvc3QgPSBhcmd2WzBdOworIAkJdXBvcnQgPSBOVUxMOworIAl9 IGVsc2UgaWYgKCFhcmd2WzBdICYmIGxmbGFnKSB7CitAQCAtNTc3LDggKzU5MCwyMCBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCWlmIChmYW1pbHkgIT0gQUZfVU5JWCkg eworIAkJbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKHN0cnVjdCBhZGRyaW5mbykpOworIAkJ aGludHMuYWlfZmFtaWx5ID0gZmFtaWx5OworLQkJaGludHMuYWlfc29ja3R5cGUgPSB1Zmxh ZyA/IFNPQ0tfREdSQU0gOiBTT0NLX1NUUkVBTTsKKy0JCWhpbnRzLmFpX3Byb3RvY29sID0g dWZsYWcgPyBJUFBST1RPX1VEUCA6IElQUFJPVE9fVENQOworKwkJaWYgKHVmbGFnKSB7Cisr CQkgICAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOworKwkJICAgIGhpbnRzLmFp X3Byb3RvY29sID0gSVBQUk9UT19VRFA7CisrCQl9CisrIyBpZiBkZWZpbmVkKElQUFJPVE9f RENDUCkgJiYgZGVmaW5lZChTT0NLX0RDQ1ApCisrCQllbHNlIGlmIChkY2NwZmxhZykgewor KwkJICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19EQ0NQOworKwkJICAgIGhpbnRzLmFp X3Byb3RvY29sID0gSVBQUk9UT19EQ0NQOworKwkJfQorKyMgZW5kaWYKKysJCWVsc2Ugewor KwkJICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisrCQkgICAgaGludHMu YWlfcHJvdG9jb2wgPSBJUFBST1RPX1RDUDsKKysJCX0KKyAJCWlmIChuZmxhZykKKyAJCQlo aW50cy5haV9mbGFncyB8PSBBSV9OVU1FUklDSE9TVDsKKyAJfQorQEAgLTU4Niw3ICs2MTEs MTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAlpZiAoeGZsYWcpIHsKKyAJ CWlmICh1ZmxhZykKKyAJCQllcnJ4KDEsICJubyBwcm94eSBzdXBwb3J0IGZvciBVRFAgbW9k ZSIpOworLQorKyMgaWYgZGVmaW5lZChJUFBST1RPX0RDQ1ApICYmIGRlZmluZWQoU09DS19E Q0NQKQorKwkJaWYgKGRjY3BmbGFnKQorKwkJCWVycngoMSwgIm5vIHByb3h5IHN1cHBvcnQg Zm9yIERDQ1AgbW9kZSIpOworKyMgZW5kaWYKKyAJCWlmIChsZmxhZykKKyAJCQllcnJ4KDEs ICJubyBwcm94eSBzdXBwb3J0IGZvciBsaXN0ZW4iKTsKKyAKK0BAIC04MzMsMTkgKzg2MSwy MCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJCQl9CisgCQkJCX0KKyAK KysJCQkJY2hhciAqcHJvdG8gPSBwcm90b19uYW1lKHVmbGFnLCBkY2NwZmxhZyk7CisgCQkJ CS8qIERvbid0IGxvb2sgdXAgcG9ydCBpZiAtbi4gKi8KKyAJCQkJaWYgKG5mbGFnKQorIAkJ CQkJc3YgPSBOVUxMOworIAkJCQllbHNlIHsKKyAJCQkJCXN2ID0gZ2V0c2VydmJ5cG9ydCgK KyAJCQkJCSAgICBudG9ocyhhdG9pKHBvcnRsaXN0W2ldKSksCistCQkJCQkgICAgdWZsYWcg PyAidWRwIiA6ICJ0Y3AiKTsKKysJCQkJCSAgICBwcm90byk7CisgCQkJCX0KKyAKKyAJCQkJ ZnByaW50ZihzdGRlcnIsCisgCQkJCSAgICAiQ29ubmVjdGlvbiB0byAlcyAlcyBwb3J0IFsl cy8lc10gIgorIAkJCQkgICAgInN1Y2NlZWRlZCFcbiIsIGhvc3QsIHBvcnRsaXN0W2ldLAor LQkJCQkgICAgdWZsYWcgPyAidWRwIiA6ICJ0Y3AiLAorKwkJCQkgICAgcHJvdG8sCisgCQkJ CSAgICBzdiA/IHN2LT5zX25hbWUgOiAiKiIpOworIAkJCX0KKyAJCQlpZiAoRmZsYWcpCitA QCAtMTA2MCw2ICsxMDg5LDI0IEBAIHVuaXhfbGlzdGVuKGNoYXIgKnBhdGgpCisgCXJldHVy biBzOworIH0KKyAKKytjaGFyICpwcm90b19uYW1lKGludCB1ZmxhZywgaW50IGRjY3BmbGFn KSB7CisrCisrICAgIGNoYXIgKnByb3RvID0gTlVMTDsKKysgICAgaWYgKHVmbGFnKSB7Cisr CXByb3RvID0gInVkcCI7CisrICAgIH0KKysjIGlmIGRlZmluZWQoSVBQUk9UT19EQ0NQKSAm JiBkZWZpbmVkKFNPQ0tfRENDUCkKKysgICAgZWxzZSBpZiAoZGNjcGZsYWcpIHsKKysJcHJv dG8gPSAiZGNjcCI7CisrICAgIH0KKysjIGVuZGlmCisrICAgIGVsc2UgeworKwlwcm90byA9 ICJ0Y3AiOworKyAgICB9CisrCisrICAgIHJldHVybiBwcm90bzsKKyt9CisrCisgLyoKKyAg KiByZW1vdGVfY29ubmVjdCgpCisgICogUmV0dXJucyBhIHNvY2tldCBjb25uZWN0ZWQgdG8g YSByZW1vdGUgaG9zdC4gUHJvcGVybHkgYmluZHMgdG8gYSBsb2NhbAorQEAgLTEwOTAsOCAr MTEzNywyMSBAQCByZW1vdGVfY29ubmVjdChjb25zdCBjaGFyICpob3N0LCBjb25zdCBjCisg IyBlbmRpZgorIAkJCW1lbXNldCgmYWhpbnRzLCAwLCBzaXplb2Yoc3RydWN0IGFkZHJpbmZv KSk7CisgCQkJYWhpbnRzLmFpX2ZhbWlseSA9IHJlcy0+YWlfZmFtaWx5OworLQkJCWFoaW50 cy5haV9zb2NrdHlwZSA9IHVmbGFnID8gU09DS19ER1JBTSA6IFNPQ0tfU1RSRUFNOworLQkJ CWFoaW50cy5haV9wcm90b2NvbCA9IHVmbGFnID8gSVBQUk9UT19VRFAgOiBJUFBST1RPX1RD UDsKKysJCQlpZiAodWZsYWcpIHsKKysJCQkgICAgYWhpbnRzLmFpX3NvY2t0eXBlID0gU09D S19ER1JBTTsKKysJCQkgICAgYWhpbnRzLmFpX3Byb3RvY29sID0gSVBQUk9UT19VRFA7Cisr CisrCQkJfQorKyMgaWYgZGVmaW5lZChJUFBST1RPX0RDQ1ApICYmIGRlZmluZWQoU09DS19E Q0NQKQorKwkJCWVsc2UgaWYgKGRjY3BmbGFnKSB7CisrCQkJICAgIGhpbnRzLmFpX3NvY2t0 eXBlID0gU09DS19EQ0NQOworKwkJCSAgICBoaW50cy5haV9wcm90b2NvbCA9IElQUFJPVE9f RENDUDsKKysJCQl9CisrIyBlbmRpZgorKwkJCWVsc2UgeworKwkJICAgIAkgICAgYWhpbnRz LmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisrCQkJICAgIGFoaW50cy5haV9wcm90b2Nv bCA9IElQUFJPVE9fVENQOworKwkJCX0KKyAJCQlhaGludHMuYWlfZmxhZ3MgPSBBSV9QQVNT SVZFOworIAkJCWlmICgoZXJyb3IgPSBnZXRhZGRyaW5mbyhzZmxhZywgcGZsYWcsICZhaGlu dHMsICZhcmVzKSkpCisgCQkJCWVycngoMSwgImdldGFkZHJpbmZvOiAlcyIsIGdhaV9zdHJl cnJvcihlcnJvcikpOworQEAgLTExMDMsMTUgKzExNjMsMTYgQEAgcmVtb3RlX2Nvbm5lY3Qo Y29uc3QgY2hhciAqaG9zdCwgY29uc3QgYworIAkJfQorIAorIAkJc2V0X2NvbW1vbl9zb2Nr b3B0cyhzLCByZXMtPmFpX2ZhbWlseSk7CisrCQljaGFyICpwcm90byA9IHByb3RvX25hbWUo dWZsYWcsIGRjY3BmbGFnKTsKKyAKKyAJCWlmICgoZXJyb3IgPSBjb25uZWN0X3dpdGhfdGlt ZW91dChzLCByZXMtPmFpX2FkZHIsIHJlcy0+YWlfYWRkcmxlbiwgdGltZW91dCkpID09IENP Tk5FQ1RJT05fU1VDQ0VTUykKKyAJCQlicmVhazsKKyAJCWlmICh2ZmxhZyAmJiBlcnJvciA9 PSBDT05ORUNUSU9OX0ZBSUxFRCkKKyAJCQl3YXJuKCJjb25uZWN0IHRvICVzIHBvcnQgJXMg KCVzKSBmYWlsZWQiLCBob3N0LCBwb3J0LAorLQkJCSAgICB1ZmxhZyA/ICJ1ZHAiIDogInRj cCIpOworLSAgICAgICAgICAgICAgICBlbHNlIGlmICh2ZmxhZyAmJiBlcnJvciA9PSBDT05O RUNUSU9OX1RJTUVPVVQpCisrCQkJICAgICBwcm90byk7CisrCQllbHNlIGlmICh2ZmxhZyAm JiBlcnJvciA9PSBDT05ORUNUSU9OX1RJTUVPVVQpCisgICAgICAgICAgICAgICAgICAgICB3 YXJuKCJjb25uZWN0IHRvICVzIHBvcnQgJXMgKCVzKSB0aW1lZCBvdXQiLCBob3N0LCBwb3J0 LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZmxhZyA/ICJ1ZHAiIDogInRjcCIp OworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90byk7CisgCisgCQlzYXZlX2Vy cm5vID0gZXJybm87CisgCQljbG9zZShzKTsKK0BAIC0xNzE1LDcgKzE3NzYsOCBAQCBidWls ZF9wb3J0cyhjaGFyICpwKQorIAlpbnQgaGksIGxvLCBjcDsKKyAJaW50IHggPSAwOworIAor LQlzdiA9IGdldHNlcnZieW5hbWUocCwgdWZsYWcgPyAidWRwIiA6ICJ0Y3AiKTsKKysJY2hh ciAqcHJvdG8gPSBwcm90b19uYW1lKHVmbGFnLCBkY2NwZmxhZyk7CisrCXN2ID0gZ2V0c2Vy dmJ5bmFtZShwLCBwcm90byk7CisgCWlmIChzdikgeworIAkJaWYgKGFzcHJpbnRmKCZwb3J0 bGlzdFswXSwgIiVkIiwgbnRvaHMoc3YtPnNfcG9ydCkpIDwgMCkKKyAJCQllcnIoMSwgImFz cHJpbnRmIik7CitAQCAtMjA5NSw2ICsyMTU3LDcgQEAgaGVscCh2b2lkKQorIAlcdC13IHRp bWVvdXQJVGltZW91dCBmb3IgY29ubmVjdHMgYW5kIGZpbmFsIG5ldCByZWFkc1xuXAorIAlc dC1YIHByb3RvCVByb3h5IHByb3RvY29sOiBcIjRcIiwgXCI1XCIgKFNPQ0tTKSBvciBcImNv bm5lY3RcIlxuXAorIAlcdC14IGFkZHJbOnBvcnRdXHRTcGVjaWZ5IHByb3h5IGFkZHJlc3Mg YW5kIHBvcnRcblwKKysJXHQtWgkJRENDUCBtb2RlXG5cCisgCVx0LXoJCVplcm8tSS9PIG1v ZGUgW3VzZWQgZm9yIHNjYW5uaW5nXVxuXAorIAlQb3J0IG51bWJlcnMgY2FuIGJlIGluZGl2 aWR1YWwgb3IgcmFuZ2VzOiBsby1oaSBbaW5jbHVzaXZlXVxuIik7CisgCWV4aXQoMCk7CitA QCAtMjEwNCw3ICsyMTY3LDcgQEAgdm9pZAorIHVzYWdlKGludCByZXQpCisgeworIAlmcHJp bnRmKHN0ZGVyciwKKy0JICAgICJ1c2FnZTogbmMgWy00NkNEZEZoa2xObnJTdFV1dnpdIFst SSBsZW5ndGhdIFstaSBpbnRlcnZhbF0gWy1NIHR0bF1cbiIKKysJICAgICJ1c2FnZTogbmMg Wy00NkNEZEZoa2xObnJTdFV1dlp6XSBbLUkgbGVuZ3RoXSBbLWkgaW50ZXJ2YWxdIFstTSB0 dGxdXG4iCisgCSAgICAiXHQgIFstbSBtaW50dGxdIFstTyBsZW5ndGhdIFstUCBwcm94eV91 c2VybmFtZV0gWy1wIHNvdXJjZV9wb3J0XVxuIgorIAkgICAgIlx0ICBbLXEgc2Vjb25kc10g Wy1zIHNvdXJjZV0gWy1UIGtleXdvcmRdIFstViBydGFibGVdIFstVyByZWN2bGltaXRdICIK KyAJICAgICJbLXcgdGltZW91dF1cbiIKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRj aGVzL25ldGNhdC1vcGVuYnNkLWRlc3RpbmF0aW9uLXBvcnQtbGlzdC5wYXRjaCBiL2dudS9w YWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLWRlc3RpbmF0aW9uLXBvcnQtbGlzdC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mOTYwZjhjMjE3 Ci0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5i c2QtZGVzdGluYXRpb24tcG9ydC1saXN0LnBhdGNoCkBAIC0wLDAgKzEsMTkxIEBACitGcm9t OiBHdWlsaGVtIE1vdWxpbiA8Z3VpbGhlbUBkZWJpYW4ub3JnPgorRGF0ZTogTW9uLCAyMiBP Y3QgMjAxOCAwNDoxNTo1MiArMDIwMAorU3ViamVjdDogZGVzdGluYXRpb24gcG9ydCBsaXN0 CisKKy0tLQorIG5jLjEgICAgIHwgICAyNiArKysrKysrKysrKysrKysrLS0tCisgbmV0Y2F0 LmMgfCAgIDg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygr KSwgNDQgZGVsZXRpb25zKC0pCisKKy0tLSBhL25jLjEKKysrKyBiL25jLjEKK0BAIC00MTQs MTUgKzQxNCwzNSBAQCBUaGUKKyBmbGFnIGNhbiBiZSB1c2VkIHRvIHRlbGwKKyAuTm0KKyB0 byByZXBvcnQgb3BlbiBwb3J0cywKKy1yYXRoZXIgdGhhbiBpbml0aWF0ZSBhIGNvbm5lY3Rp b24uCisrcmF0aGVyIHRoYW4gaW5pdGlhdGUgYSBjb25uZWN0aW9uLiBVc3VhbGx5IGl0J3Mg dXNlZnVsIHRvIHR1cm4gb24gdmVyYm9zZQorK291dHB1dCB0byBzdGRlcnIgYnkgdXNlIHRo aXMgb3B0aW9uIGluIGNvbmp1bmN0aW9uIHdpdGgKKysuRmwgdgorK29wdGlvbi4KKysuUHAK KyBGb3IgZXhhbXBsZToKKyAuQmQgLWxpdGVyYWwgLW9mZnNldCBpbmRlbnQKKy0kIG5jIC16 IGhvc3QuZXhhbXBsZS5jb20gMjAtMzAKKyskIG5jIFwtenYgaG9zdC5leGFtcGxlLmNvbSAy MC0zMAorIENvbm5lY3Rpb24gdG8gaG9zdC5leGFtcGxlLmNvbSAyMiBwb3J0IFt0Y3Avc3No XSBzdWNjZWVkZWQhCisgQ29ubmVjdGlvbiB0byBob3N0LmV4YW1wbGUuY29tIDI1IHBvcnQg W3RjcC9zbXRwXSBzdWNjZWVkZWQhCisgLkVkCisgLlBwCistVGhlIHBvcnQgcmFuZ2Ugd2Fz IHNwZWNpZmllZCB0byBsaW1pdCB0aGUgc2VhcmNoIHRvIHBvcnRzIDIwIFwtIDMwLgorK1Ro ZSBwb3J0IHJhbmdlIHdhcyBzcGVjaWZpZWQgdG8gbGltaXQgdGhlIHNlYXJjaCB0byBwb3J0 cyAyMCBcLSAzMCwgYW5kIGlzCisrc2Nhbm5lZCBieSBpbmNyZWFzaW5nIG9yZGVyICh1bmxl c3MgdGhlCisrLkZsIHIKKytmbGFnIGlzIHNldCkuCisrLlBwCisrWW91IGNhbiBhbHNvIHNw ZWNpZnkgYSBsaXN0IG9mIHBvcnRzIHRvIHNjYW4sIGZvciBleGFtcGxlOgorKy5CZCAtbGl0 ZXJhbCAtb2Zmc2V0IGluZGVudAorKyQgbmMgXC16diBob3N0LmV4YW1wbGUuY29tIGh0dHAg MjAgMjItMjMKKytuYzogY29ubmVjdCB0byBob3N0LmV4YW1wbGUuY29tIDgwICh0Y3ApIGZh aWxlZDogQ29ubmVjdGlvbiByZWZ1c2VkCisrbmM6IGNvbm5lY3QgdG8gaG9zdC5leGFtcGxl LmNvbSAyMCAodGNwKSBmYWlsZWQ6IENvbm5lY3Rpb24gcmVmdXNlZAorK0Nvbm5lY3Rpb24g dG8gaG9zdC5leGFtcGxlLmNvbSBwb3J0IFt0Y3Avc3NoXSBzdWNjZWVkZWQhCisrbmM6IGNv bm5lY3QgdG8gaG9zdC5leGFtcGxlLmNvbSAyMyAodGNwKSBmYWlsZWQ6IENvbm5lY3Rpb24g cmVmdXNlZAorKy5FZAorKy5QcAorK1RoZSBwb3J0cyBhcmUgc2Nhbm5lZCBieSB0aGUgb3Jk ZXIgeW91IGdpdmVuICh1bmxlc3MgdGhlCisrLkZsIHIKKytmbGFnIGlzIHNldCkuCisgLlBw CisgQWx0ZXJuYXRpdmVseSwgaXQgbWlnaHQgYmUgdXNlZnVsIHRvIGtub3cgd2hpY2ggc2Vy dmVyIHNvZnR3YXJlCisgaXMgcnVubmluZywgYW5kIHdoaWNoIHZlcnNpb25zLgorLS0tIGEv bmV0Y2F0LmMKKysrKyBiL25ldGNhdC5jCitAQCAtMTkxLDcgKzE5MSw3IEBAIGludCBtaW50 dGwgPSAtMTsKKyAKKyB2b2lkCWF0ZWxuZXQoaW50LCB1bnNpZ25lZCBjaGFyICosIHVuc2ln bmVkIGludCk7CisgaW50CXN0cnRvcG9ydChjaGFyICpwb3J0c3RyLCBpbnQgdWRwKTsKKy12 b2lkCWJ1aWxkX3BvcnRzKGNoYXIgKik7Cisrdm9pZAlidWlsZF9wb3J0cyhjaGFyICoqKTsK KyB2b2lkCWhlbHAodm9pZCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKKyBpbnQJbG9j YWxfbGlzdGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYWRkcmluZm8p OworICMgaWYgZGVmaW5lZChUTFMpCitAQCAtMjQyLDcgKzI0Miw3IEBAIGludAorIG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyB7CisgCWludCBjaCwgcyA9IC0xLCByZXQsIHNv Y2tzdjsKKy0JY2hhciAqaG9zdCwgKnVwb3J0OworKwljaGFyICpob3N0LCAqKnVwb3J0Owor IAlzdHJ1Y3QgYWRkcmluZm8gaGludHM7CisgCXN0cnVjdCBzZXJ2ZW50ICpzdjsKKyAJc29j a2xlbl90IGxlbjsKK0BAIC01MjYsMTEgKzUyNiwxMSBAQCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCisgCX0gZWxzZSBpZiAoYXJndlswXSAmJiAhYXJndlsxXSkgeworIAkJaWYg KCFsZmxhZykKKyAJCQl1c2FnZSgxKTsKKy0JCXVwb3J0ID0gYXJndlswXTsKKysJCXVwb3J0 ID0gJmFyZ3ZbMF07CisgCQlob3N0ID0gTlVMTDsKKyAJfSBlbHNlIGlmIChhcmd2WzBdICYm IGFyZ3ZbMV0pIHsKKyAJCWhvc3QgPSBhcmd2WzBdOworLQkJdXBvcnQgPSBhcmd2WzFdOwor KwkJdXBvcnQgPSAmYXJndlsxXTsKKyAJfSBlbHNlCisgCQl1c2FnZSgxKTsKKyAKK0BAIC03 MTcsNyArNzE3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCWVsc2UK KyAJCQkJcyA9IHVuaXhfbGlzdGVuKGhvc3QpOworIAkJfSBlbHNlCistCQkJcyA9IGxvY2Fs X2xpc3Rlbihob3N0LCB1cG9ydCwgaGludHMpOworKwkJCXMgPSBsb2NhbF9saXN0ZW4oaG9z dCwgKnVwb3J0LCBoaW50cyk7CisgCQlpZiAocyA8IDApCisgCQkJZXJyKDEsIE5VTEwpOwor IAorQEAgLTE3ODUsNTcgKzE3ODUsNjEgQEAgc3RydG9wb3J0KGNoYXIgKnBvcnRzdHIsIGlu dCB1ZHApCisgICogdGhhdCB3ZSBzaG91bGQgdHJ5IHRvIGNvbm5lY3QgdG8uCisgICovCisg dm9pZAorLWJ1aWxkX3BvcnRzKGNoYXIgKnApCisrYnVpbGRfcG9ydHMoY2hhciAqKnApCisg eworIAlzdHJ1Y3Qgc2VydmVudCAqc3Y7CisgCWNoYXIgKm47CisgCWludCBoaSwgbG8sIGNw OworIAlpbnQgeCA9IDA7CisrCWludCBpOworIAorIAljaGFyICpwcm90byA9IHByb3RvX25h bWUodWZsYWcsIGRjY3BmbGFnKTsKKy0Jc3YgPSBnZXRzZXJ2YnluYW1lKHAsIHByb3RvKTsK Ky0JaWYgKHN2KSB7CistCQlpZiAoYXNwcmludGYoJnBvcnRsaXN0WzBdLCAiJWQiLCBudG9o cyhzdi0+c19wb3J0KSkgPCAwKQorLQkJCWVycigxLCAiYXNwcmludGYiKTsKKy0JfSBlbHNl IGlmIChpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSpwKSAmJiAobiA9IHN0cmNocihwLCAnLScp KSAhPSBOVUxMKSB7CistCQkqbiA9ICdcMCc7CistCQluKys7CistCistCQkvKiBNYWtlIHN1 cmUgdGhlIHBvcnRzIGFyZSBpbiBvcmRlcjogbG93ZXN0LT5oaWdoZXN0LiAqLworLQkJaGkg PSBzdHJ0b3BvcnQobiwgdWZsYWcpOworLQkJbG8gPSBzdHJ0b3BvcnQocCwgdWZsYWcpOwor LQkJaWYgKGxvID4gaGkpIHsKKy0JCQljcCA9IGhpOworLQkJCWhpID0gbG87CistCQkJbG8g PSBjcDsKKy0JCX0KKy0KKy0JCS8qCistCQkgKiBJbml0aWFsaXplIHBvcnRsaXN0IHdpdGgg YSByYW5kb20gcGVybXV0YXRpb24uICBCYXNlZCBvbgorLQkJICogS251dGgsIGFzIGluIGlw X3JhbmRvbWlkKCkgaW4gc3lzL25ldGluZXQvaXBfaWQuYy4KKy0JCSAqLworLQkJaWYgKHJm bGFnKSB7CistCQkJZm9yICh4ID0gMDsgeCA8PSBoaSAtIGxvOyB4KyspIHsKKy0JCQkJY3Ag PSBhcmM0cmFuZG9tX3VuaWZvcm0oeCArIDEpOworLQkJCQlwb3J0bGlzdFt4XSA9IHBvcnRs aXN0W2NwXTsKKy0JCQkJaWYgKGFzcHJpbnRmKCZwb3J0bGlzdFtjcF0sICIlZCIsIHggKyBs bykgPCAwKQorLQkJCQkJZXJyKDEsICJhc3ByaW50ZiIpOworKwlmb3IgKGkgPSAwOyBwW2ld ICE9IE5VTEw7IGkrKykgeworKwkJc3YgPSBnZXRzZXJ2YnluYW1lKHBbaV0sIHByb3RvKTsK KysJCWlmIChzdikgeworKwkJCWlmIChhc3ByaW50ZigmcG9ydGxpc3RbeF0sICIlZCIsIG50 b2hzKHN2LT5zX3BvcnQpKSA8IDApCisrCQkJCWVycigxLCAiYXNwcmludGYiKTsKKysJCQl4 Kys7CisrCQl9IGVsc2UgaWYgKGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpKnBbaV0pICYmIChu ID0gc3RyY2hyKHBbaV0sICctJykpICE9IE5VTEwpIHsKKysJCQkqbiA9ICdcMCc7CisrCQkJ bisrOworKworKwkJCS8qIE1ha2Ugc3VyZSB0aGUgcG9ydHMgYXJlIGluIG9yZGVyOiBsb3dl c3QtPmhpZ2hlc3QuICovCisrCQkJaGkgPSBzdHJ0b3BvcnQobiwgdWZsYWcpOworKwkJCWxv ID0gc3RydG9wb3J0KHBbaV0sIHVmbGFnKTsKKysJCQlpZiAobG8gPiBoaSkgeworKwkJCQlj cCA9IGhpOworKwkJCQloaSA9IGxvOworKwkJCQlsbyA9IGNwOworIAkJCX0KKy0JCX0gZWxz ZSB7IC8qIExvYWQgcG9ydHMgc2VxdWVudGlhbGx5LiAqLworKworKwkJCS8qIExvYWQgcG9y dHMgc2VxdWVudGlhbGx5LiAqLworIAkJCWZvciAoY3AgPSBsbzsgY3AgPD0gaGk7IGNwKysp IHsKKyAJCQkJaWYgKGFzcHJpbnRmKCZwb3J0bGlzdFt4XSwgIiVkIiwgY3ApIDwgMCkKKyAJ CQkJCWVycigxLCAiYXNwcmludGYiKTsKKyAJCQkJeCsrOworIAkJCX0KKysJCX0gZWxzZSB7 CisrCQkJaGkgPSBzdHJ0b3BvcnQocFtpXSwgdWZsYWcpOworKwkJCWlmIChhc3ByaW50Zigm cG9ydGxpc3RbeF0sICIlZCIsIGhpKSA8IDApCisrCQkJCWVycigxLCAiYXNwcmludGYiKTsK KysJCQl4Kys7CisgCQl9CistCX0gZWxzZSB7CistCQljaGFyICp0bXA7CisrCX0KKyAKKy0J CWhpID0gc3RydG9wb3J0KHAsIHVmbGFnKTsKKy0JCWlmIChhc3ByaW50ZigmdG1wLCAiJWQi LCBoaSkgIT0gLTEpCistCQkJcG9ydGxpc3RbMF0gPSB0bXA7CistCQllbHNlCistCQkJZXJy KDEsIE5VTEwpOworKwkvKgorKwkgKiBJbml0aWFsaXplIHBvcnRsaXN0IHdpdGggYSByYW5k b20gcGVybXV0YXRpb24gdXNpbmcKKysJICogRmlzaGVy4oCTWWF0ZXMgc2h1ZmZsZS4KKysJ ICovCisrCWlmIChyZmxhZykgeworKwkJZm9yIChpID0geC0xOyBpID4gMDsgaS0tKSB7Cisr CQkJY3AgPSBhcmM0cmFuZG9tX3VuaWZvcm0oaSsxKTsKKysJCQlpZiAoY3AgIT0gaSkgewor KwkJCQluID0gcG9ydGxpc3RbaV07CisrCQkJCXBvcnRsaXN0W2ldID0gcG9ydGxpc3RbY3Bd OworKwkJCQlwb3J0bGlzdFtjcF0gPSBuOworKwkJCX0KKysJCX0KKyAJfQorIH0KKyAKZGlm ZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLWdldC1zZXYt YnktbmFtZS5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLWdl dC1zZXYtYnktbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi41Mzg2OGJiM2NlCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNo ZXMvbmV0Y2F0LW9wZW5ic2QtZ2V0LXNldi1ieS1uYW1lLnBhdGNoCkBAIC0wLDAgKzEsMjgg QEAKK0Zyb206IEFyb24gWHUgPGFyb25AZGViaWFuLm9yZz4KK0RhdGU6IE1vbiwgMTMgRmVi IDIwMTIgMTQ6NDU6MDggKzA4MDAKK1N1YmplY3Q6IGdldCBzZXYgYnkgbmFtZQorCistLS0K KyBuZXRjYXQuYyB8ICAgIDcgKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKKworLS0tIGEvbmV0Y2F0LmMKKysrKyBiL25ldGNhdC5j CitAQCAtMTY3OSwxMSArMTY3OSwxNiBAQCBzdHJ0b3BvcnQoY2hhciAqcG9ydHN0ciwgaW50 IHVkcCkKKyB2b2lkCisgYnVpbGRfcG9ydHMoY2hhciAqcCkKKyB7CisrCXN0cnVjdCBzZXJ2 ZW50ICpzdjsKKyAJY2hhciAqbjsKKyAJaW50IGhpLCBsbywgY3A7CisgCWludCB4ID0gMDsK KyAKKy0JaWYgKGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpKnApICYmIChuID0gc3RyY2hyKHAs ICctJykpICE9IE5VTEwpIHsKKysJc3YgPSBnZXRzZXJ2YnluYW1lKHAsIHVmbGFnID8gInVk cCIgOiAidGNwIik7CisrCWlmIChzdikgeworKwkJaWYgKGFzcHJpbnRmKCZwb3J0bGlzdFsw XSwgIiVkIiwgbnRvaHMoc3YtPnNfcG9ydCkpIDwgMCkKKysJCQllcnIoMSwgImFzcHJpbnRm Iik7CisrCX0gZWxzZSBpZiAoaXNkaWdpdCgodW5zaWduZWQgY2hhcikqcCkgJiYgKG4gPSBz dHJjaHIocCwgJy0nKSkgIT0gTlVMTCkgeworIAkJKm4gPSAnXDAnOworIAkJbisrOworIApk aWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtbWlzYy1m YWlsdXJlcy1hbmQtZmVhdHVyZXMucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRj YXQtb3BlbmJzZC1taXNjLWZhaWx1cmVzLWFuZC1mZWF0dXJlcy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iZTc3MWIwMTc3Ci0tLSAvZGV2L251bGwK KysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtbWlzYy1mYWlsdXJl cy1hbmQtZmVhdHVyZXMucGF0Y2gKQEAgLTAsMCArMSwxNDUgQEAKK0Zyb206IEFyb24gWHUg PGFyb25AZGViaWFuLm9yZz4KK0RhdGU6IE1vbiwgMTMgRmViIDIwMTIgMTk6MDY6NTIgKzA4 MDAKK1N1YmplY3Q6IG1pc2MgZmFpbHVyZXMgYW5kIGZlYXR1cmVzCisKKy0tLQorIE1ha2Vm aWxlIHwgICAgMyArKy0KKyBuYy4xICAgICB8ICAgNTEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgbmV0Y2F0LmMgfCAgIDE0ICsrKysr KysrKysrKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0 aW9ucygtKQorCistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0zLDcgKzMs OCBAQAorIFBST0c9CW5jCisgU1JDUz0JbmV0Y2F0LmMgYXRvbWljaW8uYyBzb2Nrcy5jCisg CistTElCUz0gIGBwa2ctY29uZmlnIC0tbGlicyBsaWJic2RgIC1scmVzb2x2CisrUEtHX0NP TkZJRyA/PSBwa2ctY29uZmlnCisrTElCUz0gIGAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJi c2RgIC1scmVzb2x2CisgT0JKUz0gICQoU1JDUzouYz0ubykKKyBDRkxBR1M9ICAtZyAtTzIK KyBMREZMQUdTPSAgLVdsLC0tbm8tYWRkLW5lZWRlZAorLS0tIGEvbmMuMQorKysrIGIvbmMu MQorQEAgLTM2NSw2ICszNjUsNTQgQEAgYW5kIHdoaWNoIHNpZGUgaXMgYmVpbmcgdXNlZCBh cyBhCisgVGhlIGNvbm5lY3Rpb24gbWF5IGJlIHRlcm1pbmF0ZWQgdXNpbmcgYW4KKyAuRHYg RU9GCisgLlBxIFNxIF5EIC4KKysuUHAKKytUaGVyZSBpcyBubworKy5GbCBjCisrb3IKKysu RmwgZQorK29wdGlvbiBpbiB0aGlzIG5ldGNhdCwgYnV0IHlvdSBzdGlsbCBjYW4gZXhlY3V0 ZSBhIGNvbW1hbmQgYWZ0ZXIgY29ubmVjdGlvbgorK2JlaW5nIGVzdGFibGlzaGVkIGJ5IHJl ZGlyZWN0aW5nIGZpbGUgZGVzY3JpcHRvcnMuIEJlIGNhdXRpb3VzIGhlcmUgYmVjYXVzZQor K29wZW5pbmcgYSBwb3J0IGFuZCBsZXQgYW55b25lIGNvbm5lY3RlZCBleGVjdXRlIGFyYml0 cmFyeSBjb21tYW5kIG9uIHlvdXIKKytzaXRlIGlzIERBTkdFUk9VUy4gSWYgeW91IHJlYWxs eSBuZWVkIHRvIGRvIHRoaXMsIGhlcmUgaXMgYW4gZXhhbXBsZToKKysuUHAKKytPbgorKy5T cSBzZXJ2ZXIKKytzaWRlOgorKy5QcAorKy5EbCAkIHJtIC1mIC90bXAvZjsgbWtmaWZvIC90 bXAvZgorKy5EbCAkIGNhdCAvdG1wL2YgfCAvYmluL3NoIC1pIDI+JjEgfCBuYyAtbCAxMjcu MC4wLjEgMTIzNCA+IC90bXAvZgorKy5QcAorK09uCisrLlNxIGNsaWVudAorK3NpZGU6Cisr LlBwCisrLkRsICQgbmMgaG9zdC5leGFtcGxlLmNvbSAxMjM0CisrLkRsICQgKHNoZWxsIHBy b21wdCBmcm9tIGhvc3QuZXhhbXBsZS5jb20pCisrLlBwCisrQnkgZG9pbmcgdGhpcywgeW91 IGNyZWF0ZSBhIGZpZm8gYXQgL3RtcC9mIGFuZCBtYWtlIG5jIGxpc3RlbiBhdCBwb3J0IDEy MzQKKytvZiBhZGRyZXNzIDEyNy4wLjAuMSBvbgorKy5TcSBzZXJ2ZXIKKytzaWRlLCB3aGVu IGEKKysuU3EgY2xpZW50CisrZXN0YWJsaXNoZXMgYSBjb25uZWN0aW9uIHN1Y2Nlc3NmdWxs eSB0byB0aGF0IHBvcnQsIC9iaW4vc2ggZ2V0cyBleGVjdXRlZAorK29uCisrLlNxIHNlcnZl cgorK3NpZGUgYW5kIHRoZSBzaGVsbCBwcm9tcHQgaXMgZ2l2ZW4gdG8KKysuU3EgY2xpZW50 Cisrc2lkZS4KKysuUHAKKytXaGVuIGNvbm5lY3Rpb24gaXMgdGVybWluYXRlZCwKKysuTm0K KytxdWl0cyBhcyB3ZWxsLiBVc2UKKysuRmwgaworK2lmIHlvdSB3YW50IGl0IGtlZXAgbGlz dGVuaW5nLCBidXQgaWYgdGhlIGNvbW1hbmQgcXVpdHMgdGhpcyBvcHRpb24gd29uJ3QKKyty ZXN0YXJ0IGl0IG9yIGtlZXAKKysuTm0KKytydW5uaW5nLiBBbHNvIGRvbid0IGZvcmdldCB0 byByZW1vdmUgdGhlIGZpbGUgZGVzY3JpcHRvciBvbmNlIHlvdSBkb24ndCBuZWVkCisraXQg YW55bW9yZToKKysuUHAKKysuRGwgJCBybSAtZiAvdG1wL2YKKysuUHAKKyAuU2ggREFUQSBU UkFOU0ZFUgorIFRoZSBleGFtcGxlIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIGNhbiBiZSBl eHBhbmRlZCB0byBidWlsZCBhCisgYmFzaWMgZGF0YSB0cmFuc2ZlciBtb2RlbC4KK0BAIC01 MTcsNiArNTY1LDkgQEAgT3JpZ2luYWwgaW1wbGVtZW50YXRpb24gYnkKKyAuYnIKKyBSZXdy aXR0ZW4gd2l0aCBJUHY2IHN1cHBvcnQgYnkKKyAuQW4gRXJpYyBKYWNrc29uIEFxIE10IGVy aWNqQG1vbmtleS5vcmcgLgorKy5icgorK01vZGlmaWVkIGZvciBEZWJpYW4gcG9ydCBieSBB cm9uIFh1CisrLkFxIGFyb25AZGViaWFuLm9yZyAuCisgLlNoIENBVkVBVFMKKyBVRFAgcG9y dCBzY2FucyB1c2luZyB0aGUKKyAuRmwgdXoKKy0tLSBhL25ldGNhdC5jCisrKysgYi9uZXRj YXQuYworQEAgLTk4LDYgKzk4LDcgQEAKKyAjaW5jbHVkZSA8bmV0ZGIuaD4KKyAjaW5jbHVk ZSA8cG9sbC5oPgorICNpbmNsdWRlIDxzaWduYWwuaD4KKysjaW5jbHVkZSA8c3RkZGVmLmg+ CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRl IDxzdGRsaWIuaD4KK0BAIC0yNDYsNyArMjQ3LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKKyAJc3RydWN0IGFkZHJpbmZvIGhpbnRzOworIAlzdHJ1Y3Qgc2VydmVudCAq c3Y7CisgCXNvY2tsZW5fdCBsZW47CistCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGNsaWFk ZHI7CisrCXVuaW9uIHsKKysJCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHN0b3JhZ2U7Cisr CQlzdHJ1Y3Qgc29ja2FkZHJfdW4gZm9ydW5peDsKKysJfSBjbGlhZGRyOworIAljaGFyICpw cm94eSA9IE5VTEwsICpwcm94eXBvcnQgPSBOVUxMOworIAljb25zdCBjaGFyICplcnJzdHI7 CisgCXN0cnVjdCBhZGRyaW5mbyBwcm94eWhpbnRzOworQEAgLTk0NSw2ICs5NDksOCBAQCB1 bml4X2JpbmQoY2hhciAqcGF0aCwgaW50IGZsYWdzKQorIAkgICAgMCkpIDwgMCkKKyAJCXJl dHVybiAtMTsKKyAKKysJdW5saW5rKHBhdGgpOworKworIAltZW1zZXQoJnNfdW4sIDAsIHNp emVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKTsKKyAJc191bi5zdW5fZmFtaWx5ID0gQUZfVU5J WDsKKyAKK0BAIC0xMDcwLDggKzEwNzYsMTAgQEAgdW5peF9jb25uZWN0KGNoYXIgKnBhdGgp CisgCQlpZiAoKHMgPSB1bml4X2JpbmQodW5peF9kZ190bXBfc29ja2V0LCBTT0NLX0NMT0VY RUMpKSA8IDApCisgCQkJcmV0dXJuIC0xOworIAl9IGVsc2UgeworLQkJaWYgKChzID0gc29j a2V0KEFGX1VOSVgsIFNPQ0tfU1RSRUFNIHwgU09DS19DTE9FWEVDLCAwKSkgPCAwKQorKwkJ aWYgKChzID0gc29ja2V0KEFGX1VOSVgsIFNPQ0tfU1RSRUFNIHwgU09DS19DTE9FWEVDLCAw KSkgPCAwKSB7CisrCQkJZXJyeCgxLCAiY3JlYXRlIHVuaXggc29ja2V0IGZhaWxlZCIpOwor IAkJCXJldHVybiAtMTsKKysJCX0KKyAJfQorIAorIAltZW1zZXQoJnNfdW4sIDAsIHNpemVv ZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKTsKK0BAIC0xMDgxLDEwICsxMDg5LDEyIEBAIHVuaXhf Y29ubmVjdChjaGFyICpwYXRoKQorIAkgICAgc2l6ZW9mKHNfdW4uc3VuX3BhdGgpKSB7Cisg CQljbG9zZShzKTsKKyAJCWVycm5vID0gRU5BTUVUT09MT05HOworKwkJd2FybigidW5peCBj b25uZWN0IGFiYW5kb25lZCIpOworIAkJcmV0dXJuIC0xOworIAl9CisgCWlmIChjb25uZWN0 KHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc191biwgc2l6ZW9mKHNfdW4pKSA8IDApIHsKKyAJ CXNhdmVfZXJybm8gPSBlcnJubzsKKysJCXdhcm4oInVuaXggY29ubmVjdCBmYWlsZWQiKTsK KyAJCWNsb3NlKHMpOworIAkJZXJybm8gPSBzYXZlX2Vycm5vOworIAkJcmV0dXJuIC0xOwpk aWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtcG9ydC10 by1saW51eC13aXRoLWxpYnNkLnBhdGNoIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0 LW9wZW5ic2QtcG9ydC10by1saW51eC13aXRoLWxpYnNkLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI0ZTViZjc2N2MKLS0tIC9kZXYvbnVsbAorKysg Yi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1wb3J0LXRvLWxpbnV4LXdp dGgtbGlic2QucGF0Y2gKQEAgLTAsMCArMSw0ODMgQEAKK0Zyb206IEFyb24gWHUgPGFyb25A ZGViaWFuLm9yZz4KK0RhdGU6IE1vbiwgMTMgRmViIDIwMTIgMTU6NTk6MzEgKzA4MDAKK1N1 YmplY3Q6IHBvcnQgdG8gbGludXggd2l0aCBsaWJzZAorCistLS0KKyBNYWtlZmlsZSB8ICAg MTUgKysrKysrLQorIG5jLjEgICAgIHwgICAgMyAtCisgbmV0Y2F0LmMgfCAgMTMxICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLQorIHNvY2tzLmMgIHwgICA0NiArKysrKysrKysrKy0tLS0tLS0tLS0tCisgNCBmaWxl cyBjaGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCisKKy0tLSBh L01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTUsNCArNSwxNyBAQCBTUkNTPQluZXRj YXQuYyBhdG9taWNpby5jIHNvY2tzLmMKKyBMREFERCs9IC1sdGxzIC1sc3NsIC1sY3J5cHRv CisgRFBBREQrPSAgJHtMSUJUTFN9ICR7TElCU1NMfSAke0xJQkNSWVBUT30KKyAKKy0uaW5j bHVkZSA8YnNkLnByb2cubWs+CisrTElCUz0gIGBwa2ctY29uZmlnIC0tbGlicyBsaWJic2Rg IC1scmVzb2x2CisrT0JKUz0gICQoU1JDUzouYz0ubykKKytDRkxBR1M9ICAtZyAtTzIKKytM REZMQUdTPSAgLVdsLC0tbm8tYWRkLW5lZWRlZAorKworK2FsbDogbmMKKytuYzogJChPQkpT KQorKwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKE9CSlMpICQoTElCUykgLW8gbmMK KysKKyskKE9CSlMpOiAlLm86ICUuYworKwkkKENDKSAkKENGTEFHUykgLWMgJDwgLW8gJEAK KysKKytjbGVhbjoKKysJcm0gLWYgJChPQkpTKSBuYworLS0tIGEvbmMuMQorKysrIGIvbmMu MQorQEAgLTIxMyw4ICsyMTMsNiBAQCBQcm94eSBhdXRoZW50aWNhdGlvbiBpcyBvbmx5IHN1 cHBvcnRlZCBmCisgU3BlY2lmeSB0aGUgc291cmNlIHBvcnQKKyAuTm0KKyBzaG91bGQgdXNl LCBzdWJqZWN0IHRvIHByaXZpbGVnZSByZXN0cmljdGlvbnMgYW5kIGF2YWlsYWJpbGl0eS4K Ky1DYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoCistLkZsIGwgLgorIC5JdCBGbCBSIEFy IENBZmlsZQorIExvYWQgdGhlIHJvb3QgQ0EgYnVuZGxlIGZvciBUTFMgY2VydGlmaWNhdGUg dmVyaWZpY2F0aW9uIGZyb20KKyAuQXIgQ0FmaWxlICwKK0BAIC0yNzQsNiArMjcyLDcgQEAg Rm9yIHRoZSBJUHY0IFRPUy9JUHY2IHRyYWZmaWMgY2xhc3MgdmFsdQorIG1heSBiZSBvbmUg b2YKKyAuQ20gY3JpdGljYWwgLAorIC5DbSBpbmV0Y29udHJvbCAsCisrLkNtIGxvd2Nvc3Qg LAorIC5DbSBsb3dkZWxheSAsCisgLkNtIG5ldGNvbnRyb2wgLAorIC5DbSB0aHJvdWdocHV0 ICwKKy0tLSBhL25ldGNhdC5jCisrKysgYi9uZXRjYXQuYworQEAgLTMyLDYgKzMyLDggQEAK KyAgKiAqSG9iYml0KiA8aG9iYml0QGF2aWFuLm9yZz4uCisgICovCisgCisrI2RlZmluZSBf R05VX1NPVVJDRQorKworICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lz L3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvdWlvLmg+CitAQCAtNDEsNiArNDMsNDkgQEAK KyAjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgor ICNpbmNsdWRlIDxhcnBhL3RlbG5ldC5oPgorKyNpZmRlZiBfX2xpbnV4X18KKysjIGluY2x1 ZGUgPGxpbnV4L2luNi5oPgorKyNlbmRpZgorKworKyNpZm5kZWYgSVBUT1NfTE9XREVMQVkK KysjIGRlZmluZSBJUFRPU19MT1dERUxBWSAweDEwCisrIyBkZWZpbmUgSVBUT1NfVEhST1VH SFBVVCAweDA4CisrIyBkZWZpbmUgSVBUT1NfUkVMSUFCSUxJVFkgMHgwNAorKyMgZGVmaW5l IElQVE9TX0xPV0NPU1QgMHgwMgorKyMgZGVmaW5lIElQVE9TX01JTkNPU1QgSVBUT1NfTE9X Q09TVAorKyNlbmRpZiAvKiBJUFRPU19MT1dERUxBWSAqLworKworKyMgaWZuZGVmIElQVE9T X0RTQ1BfQUYxMQorKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUYxMQkJMHgyOAorKyMgZGVmaW5l CUlQVE9TX0RTQ1BfQUYxMgkJMHgzMAorKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUYxMwkJMHgz OAorKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUYyMQkJMHg0OAorKyMgZGVmaW5lCUlQVE9TX0RT Q1BfQUYyMgkJMHg1MAorKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUYyMwkJMHg1OAorKyMgZGVm aW5lCUlQVE9TX0RTQ1BfQUYzMQkJMHg2OAorKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUYzMgkJ MHg3MAorKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUYzMwkJMHg3OAorKyMgZGVmaW5lCUlQVE9T X0RTQ1BfQUY0MQkJMHg4OAorKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQUY0MgkJMHg5MAorKyMg ZGVmaW5lCUlQVE9TX0RTQ1BfQUY0MwkJMHg5OAorKyMgZGVmaW5lCUlQVE9TX0RTQ1BfRUYJ CTB4YjgKKysjZW5kaWYgLyogSVBUT1NfRFNDUF9BRjExICovCisrCisrI2lmbmRlZiBJUFRP U19EU0NQX0NTMAorKyMgZGVmaW5lCUlQVE9TX0RTQ1BfQ1MwCQkweDAwCisrIyBkZWZpbmUJ SVBUT1NfRFNDUF9DUzEJCTB4MjAKKysjIGRlZmluZQlJUFRPU19EU0NQX0NTMgkJMHg0MAor KyMgZGVmaW5lCUlQVE9TX0RTQ1BfQ1MzCQkweDYwCisrIyBkZWZpbmUJSVBUT1NfRFNDUF9D UzQJCTB4ODAKKysjIGRlZmluZQlJUFRPU19EU0NQX0NTNQkJMHhhMAorKyMgZGVmaW5lCUlQ VE9TX0RTQ1BfQ1M2CQkweGMwCisrIyBkZWZpbmUJSVBUT1NfRFNDUF9DUzcJCTB4ZTAKKysj ZW5kaWYgLyogSVBUT1NfRFNDUF9DUzAgKi8KKysKKysjaWZuZGVmIElQVE9TX0RTQ1BfRUYK KysjIGRlZmluZQlJUFRPU19EU0NQX0VGCQkweGI4CisrI2VuZGlmIC8qIElQVE9TX0RTQ1Bf RUYgKi8KKysKKyAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8ZXJyLmg+CitA QCAtNTYsNiArMTAxLDggQEAKKyAjaW5jbHVkZSA8dGltZS5oPgorICNpbmNsdWRlIDx0bHMu aD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPGJzZC9zdGRsaWIuaD4KKysj aW5jbHVkZSA8YnNkL3N0cmluZy5oPgorIAorICNpbmNsdWRlICJhdG9taWNpby5oIgorIAor QEAgLTI2OSwxMCArMzE2LDE0IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJ CQl1ZmxhZyA9IDE7CisgCQkJYnJlYWs7CisgCQljYXNlICdWJzoKKysjIGlmIGRlZmluZWQo UlRfVEFCTEVJRF9NQVgpCisgCQkJcnRhYmxlaWQgPSAoaW50KXN0cnRvbnVtKG9wdGFyZywg MCwKKyAJCQkgICAgUlRfVEFCTEVJRF9NQVgsICZlcnJzdHIpOworIAkJCWlmIChlcnJzdHIp CisgCQkJCWVycngoMSwgInJ0YWJsZSAlczogJXMiLCBlcnJzdHIsIG9wdGFyZyk7CisrIyBl bHNlCisrCQkJZXJyeCgxLCAibm8gYWx0ZXJuYXRlIHJvdXRpbmcgdGFibGUgc3VwcG9ydCBh dmFpbGFibGUiKTsKKysjIGVuZGlmCisgCQkJYnJlYWs7CisgCQljYXNlICd2JzoKKyAJCQl2 ZmxhZyA9IDE7CitAQCAtMzIxLDcgKzM3MiwxMSBAQCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCisgCQkJb2ZsYWcgPSBvcHRhcmc7CisgCQkJYnJlYWs7CisgCQljYXNlICdTJzoK KysjIGlmIGRlZmluZWQoVENQX01ENVNJRykKKyAJCQlTZmxhZyA9IDE7CisrIyBlbHNlCisr CQkJZXJyeCgxLCAibm8gVENQIE1ENSBzaWduYXR1cmUgc3VwcG9ydCBhdmFpbGFibGUiKTsK KysjIGVuZGlmCisgCQkJYnJlYWs7CisgCQljYXNlICdUJzoKKyAJCQllcnJzdHIgPSBOVUxM OworQEAgLTM0NiwxNCArNDAxLDIzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK KyAJYXJnYyAtPSBvcHRpbmQ7CisgCWFyZ3YgKz0gb3B0aW5kOworIAorKyMgaWYgZGVmaW5l ZChSVF9UQUJMRUlEX01BWCkKKyAJaWYgKHJ0YWJsZWlkID49IDApCisgCQlpZiAoc2V0cnRh YmxlKHJ0YWJsZWlkKSA9PSAtMSkKKyAJCQllcnIoMSwgInNldHJ0YWJsZSIpOworKyMgZW5k aWYKKyAKKyAJLyogQ3J1ZnQgdG8gbWFrZSBzdXJlIG9wdGlvbnMgYXJlIGNsZWFuLCBhbmQg dXNlZCBwcm9wZXJseS4gKi8KKyAJaWYgKGFyZ3ZbMF0gJiYgIWFyZ3ZbMV0gJiYgZmFtaWx5 ID09IEFGX1VOSVgpIHsKKyAJCWhvc3QgPSBhcmd2WzBdOworIAkJdXBvcnQgPSBOVUxMOwor Kwl9IGVsc2UgaWYgKCFhcmd2WzBdICYmIGxmbGFnKSB7CisrCQlpZiAoc2ZsYWcpCisrCQkJ ZXJyeCgxLCAiY2Fubm90IHVzZSAtcyBhbmQgLWwiKTsKKysJCWlmIChwZmxhZykKKysJCQll cnJ4KDEsICJjYW5ub3QgdXNlIC1wIGFuZCAtbCIpOworKwkJaWYgKHpmbGFnKQorKwkJCWVy cngoMSwgImNhbm5vdCB1c2UgLXogYW5kIC1sIik7CisgCX0gZWxzZSBpZiAoYXJndlswXSAm JiAhYXJndlsxXSkgeworIAkJaWYgKCFsZmxhZykKKyAJCQl1c2FnZSgxKTsKK0BAIC0zODgs MzMgKzQ1Miw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCX0KKyAJfQor IAorLQlpZiAoZmFtaWx5ID09IEFGX1VOSVgpIHsKKy0JCWlmIChwbGVkZ2UoInN0ZGlvIHJw YXRoIHdwYXRoIGNwYXRoIHRtcHBhdGggdW5peCIsIE5VTEwpID09IC0xKQorLQkJCWVycigx LCAicGxlZGdlIik7CistCX0gZWxzZSBpZiAoRmZsYWcgJiYgUGZsYWcpIHsKKy0JCWlmIChw bGVkZ2UoInN0ZGlvIGluZXQgZG5zIHNlbmRmZCB0dHkiLCBOVUxMKSA9PSAtMSkKKy0JCQll cnIoMSwgInBsZWRnZSIpOworLQl9IGVsc2UgaWYgKEZmbGFnKSB7CistCQlpZiAocGxlZGdl KCJzdGRpbyBpbmV0IGRucyBzZW5kZmQiLCBOVUxMKSA9PSAtMSkKKy0JCQllcnIoMSwgInBs ZWRnZSIpOworLQl9IGVsc2UgaWYgKFBmbGFnICYmIHVzZXRscykgeworLQkJaWYgKHBsZWRn ZSgic3RkaW8gcnBhdGggaW5ldCBkbnMgdHR5IiwgTlVMTCkgPT0gLTEpCistCQkJZXJyKDEs ICJwbGVkZ2UiKTsKKy0JfSBlbHNlIGlmIChQZmxhZykgeworLQkJaWYgKHBsZWRnZSgic3Rk aW8gaW5ldCBkbnMgdHR5IiwgTlVMTCkgPT0gLTEpCistCQkJZXJyKDEsICJwbGVkZ2UiKTsK Ky0JfSBlbHNlIGlmICh1c2V0bHMpIHsKKy0JCWlmIChwbGVkZ2UoInN0ZGlvIHJwYXRoIGlu ZXQgZG5zIiwgTlVMTCkgPT0gLTEpCistCQkJZXJyKDEsICJwbGVkZ2UiKTsKKy0JfSBlbHNl IGlmIChwbGVkZ2UoInN0ZGlvIGluZXQgZG5zIiwgTlVMTCkgPT0gLTEpCistCQllcnIoMSwg InBsZWRnZSIpOworLQorLQlpZiAobGZsYWcgJiYgc2ZsYWcpCistCQllcnJ4KDEsICJjYW5u b3QgdXNlIC1zIGFuZCAtbCIpOworLQlpZiAobGZsYWcgJiYgcGZsYWcpCistCQllcnJ4KDEs ICJjYW5ub3QgdXNlIC1wIGFuZCAtbCIpOworLQlpZiAobGZsYWcgJiYgemZsYWcpCistCQll cnJ4KDEsICJjYW5ub3QgdXNlIC16IGFuZCAtbCIpOworIAlpZiAoIWxmbGFnICYmIGtmbGFn KQorIAkJZXJyeCgxLCAibXVzdCB1c2UgLWwgd2l0aCAtayIpOworIAlpZiAodWZsYWcgJiYg dXNldGxzKQorQEAgLTQ0OSw4ICs0ODYsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCisgCQl9IGVsc2UgeworIAkJCXN0cmxjcHkodW5peF9kZ190bXBfc29ja2V0X2J1Ziwg Ii90bXAvbmMuWFhYWFhYWFhYWCIsCisgCQkJICAgIFVOSVhfREdfVE1QX1NPQ0tFVF9TSVpF KTsKKy0JCQlpZiAobWt0ZW1wKHVuaXhfZGdfdG1wX3NvY2tldF9idWYpID09IE5VTEwpCist CQkJCWVycigxLCAibWt0ZW1wIik7CisrCQkJaWYgKG1rc3RlbXAodW5peF9kZ190bXBfc29j a2V0X2J1ZikgPT0gLTEpCisrCQkJCWVycigxLCAibWtzdGVtcCIpOworIAkJCXVuaXhfZGdf dG1wX3NvY2tldCA9IHVuaXhfZGdfdG1wX3NvY2tldF9idWY7CisgCQl9CisgCX0KK0BAIC05 MzMsOCArOTcwLDEwIEBAIHJlbW90ZV9jb25uZWN0KGNvbnN0IGNoYXIgKmhvc3QsIGNvbnN0 IGMKKyAJCWlmIChzZmxhZyB8fCBwZmxhZykgeworIAkJCXN0cnVjdCBhZGRyaW5mbyBhaGlu dHMsICphcmVzOworIAorKyMgaWYgZGVmaW5lZCAoU09fQklOREFOWSkKKyAJCQkvKiB0cnkg U09fQklOREFOWSwgYnV0IGRvbid0IGluc2lzdCAqLworIAkJCXNldHNvY2tvcHQocywgU09M X1NPQ0tFVCwgU09fQklOREFOWSwgJm9uLCBzaXplb2Yob24pKTsKKysjIGVuZGlmCisgCQkJ bWVtc2V0KCZhaGludHMsIDAsIHNpemVvZihzdHJ1Y3QgYWRkcmluZm8pKTsKKyAJCQlhaGlu dHMuYWlfZmFtaWx5ID0gcmVzLT5haV9mYW1pbHk7CisgCQkJYWhpbnRzLmFpX3NvY2t0eXBl ID0gdWZsYWcgPyBTT0NLX0RHUkFNIDogU09DS19TVFJFQU07CitAQCAtMTAyNiw5ICsxMDY1 LDE1IEBAIGxvY2FsX2xpc3Rlbihjb25zdCBjaGFyICpob3N0LCBjb25zdCBjaGEKKyAJCSAg ICByZXMtPmFpX3Byb3RvY29sKSkgPCAwKQorIAkJCWNvbnRpbnVlOworIAorKwkJcmV0ID0g c2V0c29ja29wdChzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsICZ4LCBzaXplb2YoeCkp OworKwkJaWYgKHJldCA9PSAtMSkKKysJCQllcnIoMSwgTlVMTCk7CisrCisrIyBpZiBkZWZp bmVkKFNPX1JFVVNFUE9SVCkKKyAJCXJldCA9IHNldHNvY2tvcHQocywgU09MX1NPQ0tFVCwg U09fUkVVU0VQT1JULCAmeCwgc2l6ZW9mKHgpKTsKKyAJCWlmIChyZXQgPT0gLTEpCisgCQkJ ZXJyKDEsIE5VTEwpOworKyMgZW5kaWYKKyAKKyAJCXNldF9jb21tb25fc29ja29wdHMocywg cmVzLT5haV9mYW1pbHkpOworIAorQEAgLTE0OTgsMTEgKzE1NDMsMTMgQEAgc2V0X2NvbW1v bl9zb2Nrb3B0cyhpbnQgcywgaW50IGFmKQorIHsKKyAJaW50IHggPSAxOworIAorKyMgaWYg ZGVmaW5lZChUQ1BfTUQ1U0lHKQorIAlpZiAoU2ZsYWcpIHsKKyAJCWlmIChzZXRzb2Nrb3B0 KHMsIElQUFJPVE9fVENQLCBUQ1BfTUQ1U0lHLAorIAkJCSZ4LCBzaXplb2YoeCkpID09IC0x KQorIAkJCWVycigxLCBOVUxMKTsKKyAJfQorKyMgZW5kaWYKKyAJaWYgKERmbGFnKSB7Cisg CQlpZiAoc2V0c29ja29wdChzLCBTT0xfU09DS0VULCBTT19ERUJVRywKKyAJCQkmeCwgc2l6 ZW9mKHgpKSA9PSAtMSkKK0BAIC0xNTEzLDkgKzE1NjAsMTQgQEAgc2V0X2NvbW1vbl9zb2Nr b3B0cyhpbnQgcywgaW50IGFmKQorIAkJICAgIElQX1RPUywgJlRmbGFnLCBzaXplb2YoVGZs YWcpKSA9PSAtMSkKKyAJCQllcnIoMSwgInNldCBJUCBUb1MiKTsKKyAKKysjaWYgZGVmaW5l ZChJUFY2X1RDTEFTUykKKyAJCWVsc2UgaWYgKGFmID09IEFGX0lORVQ2ICYmIHNldHNvY2tv cHQocywgSVBQUk9UT19JUFY2LAorIAkJICAgIElQVjZfVENMQVNTLCAmVGZsYWcsIHNpemVv ZihUZmxhZykpID09IC0xKQorIAkJCWVycigxLCAic2V0IElQdjYgdHJhZmZpYyBjbGFzcyIp OworKyNlbHNlCisrCQllbHNlIGlmIChhZiA9PSBBRl9JTkVUNikKKysJCQllcnJ4KDEsICJj YW4ndCBzZXQgSVB2NiB0cmFmZmljIGNsYXNzICh1bmF2YWlsYWJsZSkiKTsKKysjZW5kaWYK KyAJfQorIAlpZiAoSWZsYWcpIHsKKyAJCWlmIChzZXRzb2Nrb3B0KHMsIFNPTF9TT0NLRVQs IFNPX1JDVkJVRiwKK0BAIC0xNTMzLDE5ICsxNTg1LDM0IEBAIHNldF9jb21tb25fc29ja29w dHMoaW50IHMsIGludCBhZikKKyAJCSAgICBJUF9UVEwsICZ0dGwsIHNpemVvZih0dGwpKSkK KyAJCQllcnIoMSwgInNldCBJUCBUVEwiKTsKKyAKKysjaWYgZGVmaW5lZChJUFY2X1VOSUNB U1RfSE9QUykKKyAJCWVsc2UgaWYgKGFmID09IEFGX0lORVQ2ICYmIHNldHNvY2tvcHQocywg SVBQUk9UT19JUFY2LAorIAkJICAgIElQVjZfVU5JQ0FTVF9IT1BTLCAmdHRsLCBzaXplb2Yo dHRsKSkpCisgCQkJZXJyKDEsICJzZXQgSVB2NiB1bmljYXN0IGhvcHMiKTsKKysjZWxzZQor KwkJZWxzZSBpZiAoYWYgPT0gQUZfSU5FVDYpCisrCQkJZXJyeCgxLCAiY2FuJ3Qgc2V0IElQ djYgdW5pY2FzdCBob3BzICh1bmF2YWlsYWJsZSkiKTsKKysjZW5kaWYKKyAJfQorIAorIAlp ZiAobWludHRsICE9IC0xKSB7CisrI2lmIGRlZmluZWQoSVBfTUlOVFRMKQorIAkJaWYgKGFm ID09IEFGX0lORVQgJiYgc2V0c29ja29wdChzLCBJUFBST1RPX0lQLAorIAkJICAgIElQX01J TlRUTCwgJm1pbnR0bCwgc2l6ZW9mKG1pbnR0bCkpKQorIAkJCWVycigxLCAic2V0IElQIG1p biBUVEwiKTsKKysjZWxzZQorKwkJaWYgKGFmID09IEFGX0lORVQpCisrCQkJZXJyeCgxLCAi Y2FuJ3Qgc2V0IElQIG1pbiBUVEwgKHVuYXZhaWxhYmxlKSIpOworKyNlbmRpZgorIAorKyNp ZiBkZWZpbmVkKElQVjZfTUlOSE9QQ09VTlQpCisgCQllbHNlIGlmIChhZiA9PSBBRl9JTkVU NiAmJiBzZXRzb2Nrb3B0KHMsIElQUFJPVE9fSVBWNiwKKyAJCSAgICBJUFY2X01JTkhPUENP VU5ULCAmbWludHRsLCBzaXplb2YobWludHRsKSkpCisgCQkJZXJyKDEsICJzZXQgSVB2NiBt aW4gaG9wIGNvdW50Iik7CisrI2Vsc2UKKysJCWVsc2UgaWYgKGFmID09IEFGX0lORVQ2KQor KwkJCWVycngoMSwgImNhbid0IHNldCBJUHY2IG1pbiBob3AgY291bnQgKHVuYXZhaWxhYmxl KSIpOworKyNlbmRpZgorIAl9CisgfQorIAorQEAgLTE1ODAsNiArMTY0Nyw3IEBAIHByb2Nl c3NfdG9zX29wdChjaGFyICpzLCBpbnQgKnZhbCkKKyAJCXsgImNzNyIsCQlJUFRPU19EU0NQ X0NTNyB9LAorIAkJeyAiZWYiLAkJCUlQVE9TX0RTQ1BfRUYgfSwKKyAJCXsgImluZXRjb250 cm9sIiwJSVBUT1NfUFJFQ19JTlRFUk5FVENPTlRST0wgfSwKKysJCXsgImxvd2Nvc3QiLAkJ SVBUT1NfTE9XQ09TVCB9LAorIAkJeyAibG93ZGVsYXkiLAkJSVBUT1NfTE9XREVMQVkgfSwK KyAJCXsgIm5ldGNvbnRyb2wiLAkJSVBUT1NfUFJFQ19ORVRDT05UUk9MIH0sCisgCQl7ICJy ZWxpYWJpbGl0eSIsCUlQVE9TX1JFTElBQklMSVRZIH0sCitAQCAtMTc0MSw2ICsxODA5LDkg QEAgcmVwb3J0X3NvY2soY29uc3QgY2hhciAqbXNnLCBjb25zdCBzdHJ1YworIHZvaWQKKyBo ZWxwKHZvaWQpCisgeworKyMgaWYgZGVmaW5lZChERUJJQU5fVkVSU0lPTikKKysgICAgICAg IGZwcmludGYoc3RkZXJyLCAiT3BlbkJTRCBuZXRjYXQgKERlYmlhbiBwYXRjaGxldmVsICIg REVCSUFOX1ZFUlNJT04gIilcbiIpOworKyMgZW5kaWYKKyAJdXNhZ2UoMCk7CisgCWZwcmlu dGYoc3RkZXJyLCAiXHRDb21tYW5kIFN1bW1hcnk6XG5cCisgCVx0LTQJCVVzZSBJUHY0XG5c CitAQCAtMTc4Myw3ICsxODU0LDcgQEAgaGVscCh2b2lkKQorIAlcdC1aCQlQZWVyIGNlcnRp ZmljYXRlIGZpbGVcblwKKyAJXHQtegkJWmVyby1JL08gbW9kZSBbdXNlZCBmb3Igc2Nhbm5p bmddXG5cCisgCVBvcnQgbnVtYmVycyBjYW4gYmUgaW5kaXZpZHVhbCBvciByYW5nZXM6IGxv LWhpIFtpbmNsdXNpdmVdXG4iKTsKKy0JZXhpdCgxKTsKKysJZXhpdCgwKTsKKyB9CisgCisg dm9pZAorLS0tIGEvc29ja3MuYworKysrIGIvc29ja3MuYworQEAgLTM4LDcgKzM4LDcgQEAK KyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRl IDxyZXNvbHYuaD4KKy0jaW5jbHVkZSA8cmVhZHBhc3NwaHJhc2UuaD4KKysjaW5jbHVkZSA8 YnNkL3JlYWRwYXNzcGhyYXNlLmg+CisgI2luY2x1ZGUgImF0b21pY2lvLmgiCisgCisgI2Rl ZmluZSBTT0NLU19QT1JUCSIxMDgwIgorQEAgLTIxNywxMSArMjE3LDExIEBAIHNvY2tzX2Nv bm5lY3QoY29uc3QgY2hhciAqaG9zdCwgY29uc3QgY2gKKyAJCWJ1ZlsyXSA9IFNPQ0tTX05P QVVUSDsKKyAJCWNudCA9IGF0b21pY2lvKHZ3cml0ZSwgcHJveHlmZCwgYnVmLCAzKTsKKyAJ CWlmIChjbnQgIT0gMykKKy0JCQllcnIoMSwgIndyaXRlIGZhaWxlZCAoJXp1LzMpIiwgY250 KTsKKysJCQllcnIoMSwgIndyaXRlIGZhaWxlZCAoJXp1LzMpIiwgKHNpemVfdCljbnQpOwor IAorIAkJY250ID0gYXRvbWljaW8ocmVhZCwgcHJveHlmZCwgYnVmLCAyKTsKKyAJCWlmIChj bnQgIT0gMikKKy0JCQllcnIoMSwgInJlYWQgZmFpbGVkICglenUvMykiLCBjbnQpOworKwkJ CWVycigxLCAicmVhZCBmYWlsZWQgKCV6dS8zKSIsIChzaXplX3QpY250KTsKKyAKKyAJCWlm IChidWZbMV0gPT0gU09DS1NfTk9NRVRIT0QpCisgCQkJZXJyeCgxLCAiYXV0aGVudGljYXRp b24gbWV0aG9kIG5lZ290aWF0aW9uIGZhaWxlZCIpOworQEAgLTI3MCwxMSArMjcwLDExIEBA IHNvY2tzX2Nvbm5lY3QoY29uc3QgY2hhciAqaG9zdCwgY29uc3QgY2gKKyAKKyAJCWNudCA9 IGF0b21pY2lvKHZ3cml0ZSwgcHJveHlmZCwgYnVmLCB3bGVuKTsKKyAJCWlmIChjbnQgIT0g d2xlbikKKy0JCQllcnIoMSwgIndyaXRlIGZhaWxlZCAoJXp1LyV6dSkiLCBjbnQsIHdsZW4p OworKwkJCWVycigxLCAid3JpdGUgZmFpbGVkICglenUvJXp1KSIsIChzaXplX3QpY250LCAo c2l6ZV90KXdsZW4pOworIAorIAkJY250ID0gYXRvbWljaW8ocmVhZCwgcHJveHlmZCwgYnVm LCA0KTsKKyAJCWlmIChjbnQgIT0gNCkKKy0JCQllcnIoMSwgInJlYWQgZmFpbGVkICglenUv NCkiLCBjbnQpOworKwkJCWVycigxLCAicmVhZCBmYWlsZWQgKCV6dS80KSIsIChzaXplX3Qp Y250KTsKKyAJCWlmIChidWZbMV0gIT0gMCkgeworIAkJCWVycngoMSwgImNvbm5lY3Rpb24g ZmFpbGVkLCBTT0NLU3Y1IGVycm9yOiAlcyIsCisgCQkJICAgIHNvY2tzNV9zdHJlcnJvcihi dWZbMV0pKTsKK0BAIC0yODMsMTIgKzI4MywxMiBAQCBzb2Nrc19jb25uZWN0KGNvbnN0IGNo YXIgKmhvc3QsIGNvbnN0IGNoCisgCQljYXNlIFNPQ0tTX0lQVjQ6CisgCQkJY250ID0gYXRv bWljaW8ocmVhZCwgcHJveHlmZCwgYnVmICsgNCwgNik7CisgCQkJaWYgKGNudCAhPSA2KQor LQkJCQllcnIoMSwgInJlYWQgZmFpbGVkICglenUvNikiLCBjbnQpOworKwkJCQllcnIoMSwg InJlYWQgZmFpbGVkICglenUvNikiLCAoc2l6ZV90KWNudCk7CisgCQkJYnJlYWs7CisgCQlj YXNlIFNPQ0tTX0lQVjY6CisgCQkJY250ID0gYXRvbWljaW8ocmVhZCwgcHJveHlmZCwgYnVm ICsgNCwgMTgpOworIAkJCWlmIChjbnQgIT0gMTgpCistCQkJCWVycigxLCAicmVhZCBmYWls ZWQgKCV6dS8xOCkiLCBjbnQpOworKwkJCQllcnIoMSwgInJlYWQgZmFpbGVkICglenUvMTgp IiwgKHNpemVfdCljbnQpOworIAkJCWJyZWFrOworIAkJZGVmYXVsdDoKKyAJCQllcnJ4KDEs ICJjb25uZWN0aW9uIGZhaWxlZCwgdW5zdXBwb3J0ZWQgYWRkcmVzcyB0eXBlIik7CitAQCAt MzA4LDExICszMDgsMTEgQEAgc29ja3NfY29ubmVjdChjb25zdCBjaGFyICpob3N0LCBjb25z dCBjaAorIAorIAkJY250ID0gYXRvbWljaW8odndyaXRlLCBwcm94eWZkLCBidWYsIHdsZW4p OworIAkJaWYgKGNudCAhPSB3bGVuKQorLQkJCWVycigxLCAid3JpdGUgZmFpbGVkICglenUv JXp1KSIsIGNudCwgd2xlbik7CisrCQkJZXJyKDEsICJ3cml0ZSBmYWlsZWQgKCV6dS8lenUp IiwgKHNpemVfdCljbnQsIChzaXplX3Qpd2xlbik7CisgCisgCQljbnQgPSBhdG9taWNpbyhy ZWFkLCBwcm94eWZkLCBidWYsIDgpOworIAkJaWYgKGNudCAhPSA4KQorLQkJCWVycigxLCAi cmVhZCBmYWlsZWQgKCV6dS84KSIsIGNudCk7CisrCQkJZXJyKDEsICJyZWFkIGZhaWxlZCAo JXp1LzgpIiwgKHNpemVfdCljbnQpOworIAkJaWYgKGJ1ZlsxXSAhPSA5MCkgeworIAkJCWVy cngoMSwgImNvbm5lY3Rpb24gZmFpbGVkLCBTT0NLU3Y0IGVycm9yOiAlcyIsCisgCQkJICAg IHNvY2tzNF9zdHJlcnJvcihidWZbMV0pKTsKK0BAIC0zMjYsMjEgKzMyNiwyMSBAQCBzb2Nr c19jb25uZWN0KGNvbnN0IGNoYXIgKmhvc3QsIGNvbnN0IGNoCisgCisgCQkvKiBUcnkgdG8g YmUgc2FuZSBhYm91dCBudW1lcmljIElQdjYgYWRkcmVzc2VzICovCisgCQlpZiAoc3RyY2hy KGhvc3QsICc6JykgIT0gTlVMTCkgeworLQkJCXIgPSBzbnByaW50ZihidWYsIHNpemVvZihi dWYpLAorKwkJCXIgPSBzbnByaW50ZigoY2hhciopYnVmLCBzaXplb2YoYnVmKSwKKyAJCQkg ICAgIkNPTk5FQ1QgWyVzXTolZCBIVFRQLzEuMFxyXG4iLAorIAkJCSAgICBob3N0LCBudG9o cyhzZXJ2ZXJwb3J0KSk7CisgCQl9IGVsc2UgeworLQkJCXIgPSBzbnByaW50ZihidWYsIHNp emVvZihidWYpLAorKwkJCXIgPSBzbnByaW50ZigoY2hhciopYnVmLCBzaXplb2YoYnVmKSwK KyAJCQkgICAgIkNPTk5FQ1QgJXM6JWQgSFRUUC8xLjBcclxuIiwKKyAJCQkgICAgaG9zdCwg bnRvaHMoc2VydmVycG9ydCkpOworIAkJfQorIAkJaWYgKHIgPT0gLTEgfHwgKHNpemVfdCly ID49IHNpemVvZihidWYpKQorIAkJCWVycngoMSwgImhvc3RuYW1lIHRvbyBsb25nIik7Cist CQlyID0gc3RybGVuKGJ1Zik7CisrCQlyID0gc3RybGVuKChjaGFyKilidWYpOworIAorIAkJ Y250ID0gYXRvbWljaW8odndyaXRlLCBwcm94eWZkLCBidWYsIHIpOworIAkJaWYgKGNudCAh PSByKQorLQkJCWVycigxLCAid3JpdGUgZmFpbGVkICglenUvJWQpIiwgY250LCByKTsKKysJ CQllcnIoMSwgIndyaXRlIGZhaWxlZCAoJXp1LyVkKSIsIChzaXplX3QpY250LCAoaW50KXIp OworIAorIAkJaWYgKGF1dGhyZXRyeSA+IDEpIHsKKyAJCQljaGFyIHByb3h5cGFzc1syNTZd OworQEAgLTM0OCwyMCArMzQ4LDIwIEBAIHNvY2tzX2Nvbm5lY3QoY29uc3QgY2hhciAqaG9z dCwgY29uc3QgY2gKKyAKKyAJCQlnZXRwcm94eXBhc3MocHJveHl1c2VyLCBwcm94eWhvc3Qs CisgCQkJICAgIHByb3h5cGFzcywgc2l6ZW9mIHByb3h5cGFzcyk7CistCQkJciA9IHNucHJp bnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlczolcyIsCisrCQkJciA9IHNucHJpbnRmKChjaGFy KilidWYsIHNpemVvZihidWYpLCAiJXM6JXMiLAorIAkJCSAgICBwcm94eXVzZXIsIHByb3h5 cGFzcyk7CisgCQkJZXhwbGljaXRfYnplcm8ocHJveHlwYXNzLCBzaXplb2YgcHJveHlwYXNz KTsKKyAJCQlpZiAociA9PSAtMSB8fCAoc2l6ZV90KXIgPj0gc2l6ZW9mKGJ1ZikgfHwKKy0J CQkgICAgYjY0X250b3AoYnVmLCBzdHJsZW4oYnVmKSwgcmVzcCwKKysJCQkgICAgYjY0X250 b3AoYnVmLCBzdHJsZW4oKGNoYXIqKWJ1ZiksIHJlc3AsCisgCQkJICAgIHNpemVvZihyZXNw KSkgPT0gLTEpCisgCQkJCWVycngoMSwgIlByb3h5IHVzZXJuYW1lL3Bhc3N3b3JkIHRvbyBs b25nIik7CistCQkJciA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJQcm94eS1BdXRo b3JpemF0aW9uOiAiCisrCQkJciA9IHNucHJpbnRmKChjaGFyKilidWYsIHNpemVvZihidWYp LCAiUHJveHktQXV0aG9yaXphdGlvbjogIgorIAkJCSAgICAiQmFzaWMgJXNcclxuIiwgcmVz cCk7CisgCQkJaWYgKHIgPT0gLTEgfHwgKHNpemVfdClyID49IHNpemVvZihidWYpKQorIAkJ CQllcnJ4KDEsICJQcm94eSBhdXRoIHJlc3BvbnNlIHRvbyBsb25nIik7CistCQkJciA9IHN0 cmxlbihidWYpOworKwkJCXIgPSBzdHJsZW4oKGNoYXIqKWJ1Zik7CisgCQkJaWYgKChjbnQg PSBhdG9taWNpbyh2d3JpdGUsIHByb3h5ZmQsIGJ1ZiwgcikpICE9IHIpCistCQkJCWVycigx LCAid3JpdGUgZmFpbGVkICglenUvJWQpIiwgY250LCByKTsKKysJCQkJZXJyKDEsICJ3cml0 ZSBmYWlsZWQgKCV6dS8lZCkiLCAoc2l6ZV90KWNudCwgcik7CisgCQkJZXhwbGljaXRfYnpl cm8ocHJveHlwYXNzLCBzaXplb2YgcHJveHlwYXNzKTsKKyAJCQlleHBsaWNpdF9iemVybyhi dWYsIHNpemVvZiBidWYpOworIAkJfQorQEAgLTM3MSwyMiArMzcxLDIyIEBAIHNvY2tzX2Nv bm5lY3QoY29uc3QgY2hhciAqaG9zdCwgY29uc3QgY2gKKyAJCQllcnIoMSwgIndyaXRlIGZh aWxlZCAoJXp1LzIpIiwgY250KTsKKyAKKyAJCS8qIFJlYWQgc3RhdHVzIHJlcGx5ICovCist CQlwcm94eV9yZWFkX2xpbmUocHJveHlmZCwgYnVmLCBzaXplb2YoYnVmKSk7CisrCQlwcm94 eV9yZWFkX2xpbmUocHJveHlmZCwgKGNoYXIqKWJ1Ziwgc2l6ZW9mKGJ1ZikpOworIAkJaWYg KHByb3h5dXNlciAhPSBOVUxMICYmCistCQkgICAgc3RybmNtcChidWYsICJIVFRQLzEuMCA0 MDcgIiwgMTIpID09IDApIHsKKysJCSAgICBzdHJuY21wKChjaGFyKilidWYsICJIVFRQLzEu MCA0MDcgIiwgMTIpID09IDApIHsKKyAJCQlpZiAoYXV0aHJldHJ5ID4gMSkgeworIAkJCQlm cHJpbnRmKHN0ZGVyciwgIlByb3h5IGF1dGhlbnRpY2F0aW9uICIKKyAJCQkJICAgICJmYWls ZWRcbiIpOworIAkJCX0KKyAJCQljbG9zZShwcm94eWZkKTsKKyAJCQlnb3RvIGFnYWluOwor LQkJfSBlbHNlIGlmIChzdHJuY21wKGJ1ZiwgIkhUVFAvMS4wIDIwMCAiLCAxMikgIT0gMCAm JgorLQkJICAgIHN0cm5jbXAoYnVmLCAiSFRUUC8xLjEgMjAwICIsIDEyKSAhPSAwKQorKwkJ fSBlbHNlIGlmIChzdHJuY21wKChjaGFyKilidWYsICJIVFRQLzEuMCAyMDAgIiwgMTIpICE9 IDAgJiYKKysJCSAgICBzdHJuY21wKChjaGFyKilidWYsICJIVFRQLzEuMSAyMDAgIiwgMTIp ICE9IDApCisgCQkJZXJyeCgxLCAiUHJveHkgZXJyb3I6IFwiJXNcIiIsIGJ1Zik7CisgCisg CQkvKiBIZWFkZXJzIGNvbnRpbnVlIHVudGlsIHdlIGhpdCBhbiBlbXB0eSBsaW5lICovCisg CQlmb3IgKHIgPSAwOyByIDwgSFRUUF9NQVhIRFJTOyByKyspIHsKKy0JCQlwcm94eV9yZWFk X2xpbmUocHJveHlmZCwgYnVmLCBzaXplb2YoYnVmKSk7CisrCQkJcHJveHlfcmVhZF9saW5l KHByb3h5ZmQsIChjaGFyKilidWYsIHNpemVvZihidWYpKTsKKyAJCQlpZiAoKmJ1ZiA9PSAn XDAnKQorIAkJCQlicmVhazsKKyAJCX0KZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRj aGVzL25ldGNhdC1vcGVuYnNkLXF1aXQtdGltZXIucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0 Y2hlcy9uZXRjYXQtb3BlbmJzZC1xdWl0LXRpbWVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjUzOTg1YjQyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9n bnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1xdWl0LXRpbWVyLnBhdGNoCkBA IC0wLDAgKzEsMTQzIEBACitGcm9tOiBBcm9uIFh1IDxhcm9uQGRlYmlhbi5vcmc+CitEYXRl OiBNb24sIDEzIEZlYiAyMDEyIDE1OjE2OjA0ICswODAwCitTdWJqZWN0OiBxdWl0IHRpbWVy CisKKy0tLQorIG5jLjEgICAgIHwgICAxMCArKysrKysrKysrCisgbmV0Y2F0LmMgfCAgIDUw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisg MiBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCist LS0gYS9uYy4xCisrKysgYi9uYy4xCitAQCAtNDEsNiArNDEsNyBAQAorIC5PcCBGbCBPIEFy IGxlbmd0aAorIC5PcCBGbCBQIEFyIHByb3h5X3VzZXJuYW1lCisgLk9wIEZsIHAgQXIgc291 cmNlX3BvcnQKKysuT3AgRmwgcSBBciBzZWNvbmRzCisgLk9wIEZsIHMgQXIgc291cmNlCisg Lk9wIEZsIFQgQXIga2V5d29yZAorIC5PcCBGbCBWIEFyIHJ0YWJsZQorQEAgLTE2Nyw2ICsx NjgsMTUgQEAgUHJveHkgYXV0aGVudGljYXRpb24gaXMgb25seSBzdXBwb3J0ZWQgZgorIFNw ZWNpZnkgdGhlIHNvdXJjZSBwb3J0CisgLk5tCisgc2hvdWxkIHVzZSwgc3ViamVjdCB0byBw cml2aWxlZ2UgcmVzdHJpY3Rpb25zIGFuZCBhdmFpbGFiaWxpdHkuCisrLkl0IEZsIHEgQXIg c2Vjb25kcworK2FmdGVyIEVPRiBvbiBzdGRpbiwgd2FpdCB0aGUgc3BlY2lmaWVkIG51bWJl ciBvZgorKy5BciBzZWNvbmRzCisrYW5kIHRoZW4gcXVpdC4gSWYKKysuQXIgc2Vjb25kcwor K2lzIG5lZ2F0aXZlLCB3YWl0IGZvcmV2ZXIgKGRlZmF1bHQpLiAgU3BlY2lmeWluZyBhIG5v bi1uZWdhdGl2ZQorKy5BciBzZWNvbmRzCisraW1wbGllcworKy5GbCBOIC4KKyAuSXQgRmwg cgorIENob29zZSBzb3VyY2UgYW5kL29yIGRlc3RpbmF0aW9uIHBvcnRzIHJhbmRvbWx5Cisg aW5zdGVhZCBvZiBzZXF1ZW50aWFsbHkgd2l0aGluIGEgcmFuZ2Ugb3IgaW4gdGhlIG9yZGVy IHRoYXQgdGhlIHN5c3RlbQorLS0tIGEvbmV0Y2F0LmMKKysrKyBiL25ldGNhdC5jCitAQCAt MTM5LDYgKzEzOSw3IEBAIGludAlOZmxhZzsJCQkJCS8qIHNodXRkb3duKCkgbmV0d29yayBz b2MKKyBpbnQJbmZsYWc7CQkJCQkvKiBEb24ndCBkbyBuYW1lIGxvb2sgdXAgKi8KKyBjaGFy ICAgKlBmbGFnOwkJCQkJLyogUHJveHkgdXNlcm5hbWUgKi8KKyBjaGFyICAgKnBmbGFnOwkJ CQkJLyogTG9jYWxwb3J0IGZsYWcgKi8KKytpbnQgICAgcWZsYWcgPSAtMTsJCQkJLyogUXVp dCBhZnRlciBzb21lIHNlY3MgKi8KKyBpbnQJcmZsYWc7CQkJCQkvKiBSYW5kb20gcG9ydHMg ZmxhZyAqLworIGNoYXIgICAqc2ZsYWc7CQkJCQkvKiBTb3VyY2UgQWRkcmVzcyAqLworIGlu dAl0ZmxhZzsJCQkJCS8qIFRlbG5ldCBFbXVsYXRpb24gKi8KK0BAIC0yMjQsNiArMjI1LDgg QEAgc3NpemVfdCBmaWxsYnVmKGludCwgdW5zaWduZWQgY2hhciAqLCBzaQorIHN0YXRpYyBp bnQgY29ubmVjdF93aXRoX3RpbWVvdXQoaW50IGZkLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIg KnNhLAorICAgICAgICAgc29ja2xlbl90IHNhbGVuLCBpbnQgY3RpbWVvdXQpOworIAorK3N0 YXRpYyB2b2lkIHF1aXQoKTsKKysKKyBpbnQKKyBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCisgeworQEAgLTI1Niw5ICsyNTksOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCisgCisgCXdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwKKyAjIGlmIGRlZmlu ZWQoVExTKQorLQkgICAgIjQ2QzpjRGRlOkZIOmhJOmk6SzprbE06bTpObk86bzpQOnA6Ujpy U3M6VDp0VXVWOnZXOnc6WDp4Olo6eiIpKQorKwkgICAgIjQ2QzpjRGRlOkZIOmhJOmk6Szpr bE06bTpObk86bzpQOnA6cTpSOnJTczpUOnRVdVY6dlc6dzpYOng6Wjp6IikpCisgIyBlbHNl CistCSAgICAiNDZDRGRGaEk6aTprbE06bTpObk86UDpwOnJTczpUOnRVdVY6dlc6dzpYOng6 eiIpKQorKwkgICAgIjQ2Q0RkRmhJOmk6a2xNOm06Tm5POlA6cDpxOnJTczpUOnRVdVY6dlc6 dzpYOng6eiIpKQorICMgZW5kaWYKKyAJICAgICE9IC0xKSB7CisgCQlzd2l0Y2ggKGNoKSB7 CitAQCAtMzUwLDYgKzM1MywxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisg CQljYXNlICdwJzoKKyAJCQlwZmxhZyA9IG9wdGFyZzsKKyAJCQlicmVhazsKKysJCWNhc2Ug J3EnOgorKwkJCXFmbGFnID0gc3RydG9udW0ob3B0YXJnLCBJTlRfTUlOLCBJTlRfTUFYLCAm ZXJyc3RyKTsKKysJCQlpZiAoZXJyc3RyKQorKwkJCQllcnJ4KDEsICJxdWl0IHRpbWVyICVz OiAlcyIsIGVycnN0ciwgb3B0YXJnKTsKKysJCQlpZiAocWZsYWcgPj0gMCkKKysJCQkJTmZs YWcgPSAxOworKwkJCWJyZWFrOworICMgaWYgZGVmaW5lZChUTFMpCisgCQljYXNlICdSJzoK KyAJCQl0bHNfY2FjaGFuZ2VkID0gMTsKK0BAIC0xMzE5LDE1ICsxMzI5LDI3IEBAIHJlYWR3 cml0ZShpbnQgbmV0X2ZkKQorIAl3aGlsZSAoMSkgeworIAkJLyogYm90aCBpbnB1dHMgYXJl IGdvbmUsIGJ1ZmZlcnMgYXJlIGVtcHR5LCB3ZSBhcmUgZG9uZSAqLworIAkJaWYgKHBmZFtQ T0xMX1NURElOXS5mZCA9PSAtMSAmJiBwZmRbUE9MTF9ORVRJTl0uZmQgPT0gLTEgJiYKKy0J CSAgICBzdGRpbmJ1ZnBvcyA9PSAwICYmIG5ldGluYnVmcG9zID09IDApCistCQkJcmV0dXJu OworKwkJICAgIHN0ZGluYnVmcG9zID09IDAgJiYgbmV0aW5idWZwb3MgPT0gMCkgeworKwkJ CWlmIChxZmxhZyA8PSAwKQorKwkJCQlyZXR1cm47CisrCQkJZ290byBkZWxheV9leGl0Owor KwkJfQorIAkJLyogYm90aCBvdXRwdXRzIGFyZSBnb25lLCB3ZSBjYW4ndCBjb250aW51ZSAq LworLQkJaWYgKHBmZFtQT0xMX05FVE9VVF0uZmQgPT0gLTEgJiYgcGZkW1BPTExfU1RET1VU XS5mZCA9PSAtMSkKKy0JCQlyZXR1cm47CisrCQlpZiAocGZkW1BPTExfTkVUT1VUXS5mZCA9 PSAtMSAmJiBwZmRbUE9MTF9TVERPVVRdLmZkID09IC0xKSB7CisrCQkJaWYgKHFmbGFnIDw9 IDApCisrCQkJCXJldHVybjsKKysJCQlnb3RvIGRlbGF5X2V4aXQ7CisrCQl9CisgCQkvKiBs aXN0ZW4gYW5kIG5ldCBpbiBnb25lLCBxdWV1ZXMgZW1wdHksIGRvbmUgKi8KKyAJCWlmIChs ZmxhZyAmJiBwZmRbUE9MTF9ORVRJTl0uZmQgPT0gLTEgJiYKKy0JCSAgICBzdGRpbmJ1ZnBv cyA9PSAwICYmIG5ldGluYnVmcG9zID09IDApCistCQkJcmV0dXJuOworKwkJICAgIHN0ZGlu YnVmcG9zID09IDAgJiYgbmV0aW5idWZwb3MgPT0gMCkgeworKwkJCWlmIChxZmxhZyA8PSAw KQorKwkJCQlyZXR1cm47CisrZGVsYXlfZXhpdDoKKysJCQljbG9zZShuZXRfZmQpOworKwkJ CXNpZ25hbChTSUdBTFJNLCBxdWl0KTsKKysJCQlhbGFybShxZmxhZyk7CisrCQl9CisgCisg CQkvKiBwb2xsICovCisgCQludW1fZmRzID0gcG9sbChwZmQsIDQsIHRpbWVvdXQpOworQEAg LTIwNTIsNiArMjA3NCw3IEBAIGhlbHAodm9pZCkKKyAJXHQtTyBsZW5ndGgJVENQIHNlbmQg YnVmZmVyIGxlbmd0aFxuXAorIAlcdC1QIHByb3h5dXNlclx0VXNlcm5hbWUgZm9yIHByb3h5 IGF1dGhlbnRpY2F0aW9uXG5cCisgCVx0LXAgcG9ydFx0CVNwZWNpZnkgbG9jYWwgcG9ydCBm b3IgcmVtb3RlIGNvbm5lY3RzXG5cCisrCVx0LXEgc2Vjc1x0CXF1aXQgYWZ0ZXIgRU9GIG9u IHN0ZGluIGFuZCBkZWxheSBvZiBzZWNzXG5cCisgCVx0LXIJCVJhbmRvbWl6ZSByZW1vdGUg cG9ydHNcblwKKyAJXHQtUwkJRW5hYmxlIHRoZSBUQ1AgTUQ1IHNpZ25hdHVyZSBvcHRpb25c blwKKyAJXHQtcyBzb3VyY2UJTG9jYWwgc291cmNlIGFkZHJlc3NcblwKK0BAIC0yMDc2LDEw ICsyMDk5LDE5IEBAIHVzYWdlKGludCByZXQpCisgCWZwcmludGYoc3RkZXJyLAorIAkgICAg InVzYWdlOiBuYyBbLTQ2Q0RkRmhrbE5uclN0VXV2el0gWy1JIGxlbmd0aF0gWy1pIGludGVy dmFsXSBbLU0gdHRsXVxuIgorIAkgICAgIlx0ICBbLW0gbWludHRsXSBbLU8gbGVuZ3RoXSBb LVAgcHJveHlfdXNlcm5hbWVdIFstcCBzb3VyY2VfcG9ydF1cbiIKKy0JICAgICJcdCAgWy1z IHNvdXJjZV0gWy1UIGtleXdvcmRdIFstViBydGFibGVdIFstVyByZWN2bGltaXRdICIKKysJ ICAgICJcdCAgWy1xIHNlY29uZHNdIFstcyBzb3VyY2VdIFstVCBrZXl3b3JkXSBbLVYgcnRh YmxlXSBbLVcgcmVjdmxpbWl0XSAiCisgCSAgICAiWy13IHRpbWVvdXRdXG4iCisgCSAgICAi XHQgIFstWCBwcm94eV9wcm90b2NvbF0gWy14IHByb3h5X2FkZHJlc3NbOnBvcnRdXSAiCisg CSAgICAiXHQgIFtkZXN0aW5hdGlvbl0gW3BvcnRdXG4iKTsKKyAJaWYgKHJldCkKKyAJCWV4 aXQoMSk7CisgfQorKworKy8qCisrICogcXVpdCgpCisrICogaGFuZGxlciBmb3IgYSAiLXEi IHRpbWVvdXQgKGV4aXQgMCBpbnN0ZWFkIG9mIDEpCisrICovCisrc3RhdGljIHZvaWQgcXVp dCgpCisreworKwlleGl0KDApOworK30KZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRj aGVzL25ldGNhdC1vcGVuYnNkLXNlbmQtY3JsZi5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRj aGVzL25ldGNhdC1vcGVuYnNkLXNlbmQtY3JsZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5lZDM4MWYzZmEyCi0tLSAvZGV2L251bGwKKysrIGIvZ251 L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2Qtc2VuZC1jcmxmLnBhdGNoCkBAIC0w LDAgKzEsMTkyIEBACitGcm9tOiBBcm9uIFh1IDxhcm9uQGRlYmlhbi5vcmc+CitEYXRlOiBN b24sIDEzIEZlYiAyMDEyIDE0OjU3OjQ1ICswODAwCitTdWJqZWN0OiBzZW5kIGNybGYKKwor LS0tCisgbmMuMSAgICAgfCAgICA5ICsrKysrLS0KKyBuZXRjYXQuYyB8ICAgNzQgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMo LSkKKworLS0tIGEvbmMuMQorKysrIGIvbmMuMQorQEAgLTMzLDcgKzMzLDcgQEAKKyAuTmQg YXJiaXRyYXJ5IFRDUCBhbmQgVURQIGNvbm5lY3Rpb25zIGFuZCBsaXN0ZW5zCisgLlNoIFNZ Tk9QU0lTCisgLk5tIG5jCistLk9wIEZsIDQ2RGRGaGtsTm5yU3RVdXZ6CisrLk9wIEZsIDQ2 Q0RkRmhrbE5uclN0VXV2egorIC5PcCBGbCBJIEFyIGxlbmd0aAorIC5PcCBGbCBpIEFyIGlu dGVydmFsCisgLk9wIEZsIE0gQXIgdHRsCitAQCAtOTIsNiArOTIsMTEgQEAgVGhlIG9wdGlv bnMgYXJlIGFzIGZvbGxvd3M6CisgVXNlIElQdjQgYWRkcmVzc2VzIG9ubHkuCisgLkl0IEZs IDYKKyBVc2UgSVB2NiBhZGRyZXNzZXMgb25seS4KKysuSXQgRmwgQworK1NlbmQgQ1JMRiBh cyBsaW5lLWVuZGluZy4gIEVhY2ggbGluZSBmZWVkIChMRikgY2hhcmFjdGVyIGZyb20gdGhl IGlucHV0CisrZGF0YSBpcyB0cmFuc2xhdGVkIGludG8gQ1IrTEYgYmVmb3JlIGJlaW5nIHdy aXR0ZW4gdG8gdGhlIHNvY2tldC4gIExpbmUKKytmZWVkIGNoYXJhY3RlcnMgdGhhdCBhcmUg YWxyZWFkeSBwcmVjZWRlZCB3aXRoIGEgY2FycmlhZ2UgcmV0dXJuIChDUikKKythcmUgbm90 IHRyYW5zbGF0ZWQuICBSZWNlaXZlZCBkYXRhIGlzIG5vdCBhZmZlY3RlZC4KKyAuSXQgRmwg RAorIEVuYWJsZSBkZWJ1Z2dpbmcgb24gdGhlIHNvY2tldC4KKyAuSXQgRmwgZAorQEAgLTM3 Nyw3ICszODIsNyBAQCBNb3JlIGNvbXBsaWNhdGVkIGV4YW1wbGVzIGNhbiBiZSBidWlsdCB1 Cisgb2YgcmVxdWVzdHMgcmVxdWlyZWQgYnkgdGhlIHNlcnZlci4KKyBBcyBhbm90aGVyIGV4 YW1wbGUsIGFuIGVtYWlsIG1heSBiZSBzdWJtaXR0ZWQgdG8gYW4gU01UUCBzZXJ2ZXIgdXNp bmc6CisgLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50CistJCBuYyBsb2NhbGhvc3QgMjUg XCooTHRcKihMdCBFT0YKKyskIG5jIFtcLUNdIGxvY2FsaG9zdCAyNSBcKihMdFwqKEx0IEVP RgorIEhFTE8gaG9zdC5leGFtcGxlLmNvbQorIE1BSUwgRlJPTTpcKihMdHVzZXJAaG9zdC5l eGFtcGxlLmNvbVwqKEd0CisgUkNQVCBUTzpcKihMdHVzZXIyQGhvc3QuZXhhbXBsZS5jb21c KihHdAorLS0tIGEvbmV0Y2F0LmMKKysrKyBiL25ldGNhdC5jCitAQCAtMTY2LDYgKzE2Niw4 IEBAIGNoYXIJKnRsc19leHBlY3RoYXNoOwkJCS8qIHJlcXVpcmVkIGhhc2gKKyBjaGFyCSp0 bHNfY2lwaGVyczsJCQkJLyogVExTIGNpcGhlcnMgKi8KKyBjaGFyCSp0bHNfcHJvdG9jb2xz OwkJCQkvKiBUTFMgcHJvdG9jb2xzICovCisgRklMRQkqWmZsYWc7CQkJCQkvKiBmaWxlIHRv IHNhdmUgcGVlciBjZXJ0ICovCisrIyBlbHNlCisraW50CUNmbGFnID0gMDsJCQkvKiBDUkxG IGxpbmUtZW5kaW5nICovCisgIyBlbmRpZgorIAorIGludCByZWN2Y291bnQsIHJlY3ZsaW1p dDsKK0BAIC0yMTUsNyArMjE3LDcgQEAgc3NpemVfdCBmaWxsYnVmKGludCwgdW5zaWduZWQg Y2hhciAqLCBzaQorIHZvaWQJdGxzX3NldHVwX2NsaWVudChzdHJ1Y3QgdGxzICosIGludCwg Y2hhciAqKTsKKyBzdHJ1Y3QgdGxzICp0bHNfc2V0dXBfc2VydmVyKHN0cnVjdCB0bHMgKiwg aW50LCBjaGFyICopOworICMgZWxzZQorLXNzaXplX3QgZHJhaW5idWYoaW50LCB1bnNpZ25l ZCBjaGFyICosIHNpemVfdCAqKTsKKytzc2l6ZV90IGRyYWluYnVmKGludCwgdW5zaWduZWQg Y2hhciAqLCBzaXplX3QgKiwgaW50KTsKKyBzc2l6ZV90IGZpbGxidWYoaW50LCB1bnNpZ25l ZCBjaGFyICosIHNpemVfdCAqKTsKKyAjIGVuZGlmCisgCitAQCAtMjU2LDcgKzI1OCw3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAjIGlmIGRlZmluZWQoVExTKQorIAkg ICAgIjQ2QzpjRGRlOkZIOmhJOmk6SzprbE06bTpObk86bzpQOnA6UjpyU3M6VDp0VXVWOnZX Onc6WDp4Olo6eiIpKQorICMgZWxzZQorLQkgICAgIjQ2RGRGaEk6aTprbE06bTpObk86UDpw OnJTczpUOnRVdVY6dlc6dzpYOng6eiIpKQorKwkgICAgIjQ2Q0RkRmhJOmk6a2xNOm06Tm5P OlA6cDpyU3M6VDp0VXVWOnZXOnc6WDp4OnoiKSkKKyAjIGVuZGlmCisgCSAgICAhPSAtMSkg eworIAkJc3dpdGNoIChjaCkgeworQEAgLTI4Niw2ICsyODgsMTAgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQorIAkJY2FzZSAnYyc6CisgCQkJdXNldGxzID0gMTsKKyAJCQli cmVhazsKKysjIGVsc2UKKysJCWNhc2UgJ0MnOgorKwkJCUNmbGFnID0gMTsKKysJCQlicmVh azsKKyAjIGVuZGlmCisgCQljYXNlICdkJzoKKyAJCQlkZmxhZyA9IDE7CitAQCAtMTMyMywx MiArMTMyOSw2IEBAIHJlYWR3cml0ZShpbnQgbmV0X2ZkKQorIAkJICAgIHN0ZGluYnVmcG9z ID09IDAgJiYgbmV0aW5idWZwb3MgPT0gMCkKKyAJCQlyZXR1cm47CisgCistCQkvKiBoZWxw IHNheXMgLWkgaXMgZm9yICJ3YWl0IGJldHdlZW4gbGluZXMgc2VudCIuIFdlIHJlYWQgYW5k CistCQkgKiB3cml0ZSBhcmJpdHJhcnkgYW1vdW50cyBvZiBkYXRhLCBhbmQgd2UgZG9uJ3Qg d2FudCB0byBzdGFydAorLQkJICogc2Nhbm5pbmcgZm9yIG5ld2xpbmVzLCBzbyB0aGlzIGlz IGFzIGdvb2QgYXMgaXQgZ2V0cyAqLworLQkJaWYgKGlmbGFnKQorLQkJCXNsZWVwKGlmbGFn KTsKKy0KKyAJCS8qIHBvbGwgKi8KKyAJCW51bV9mZHMgPSBwb2xsKHBmZCwgNCwgdGltZW91 dCk7CisgCitAQCAtMTQwOCw3ICsxNDA4LDcgQEAgcmVhZHdyaXRlKGludCBuZXRfZmQpCisg CQkJCXBmZFtQT0xMX05FVE9VVF0uZXZlbnRzID0gUE9MTE9VVDsKKyAJCQllbHNlCisgIyBl bHNlCistCQkJICAgICZzdGRpbmJ1ZnBvcyk7CisrCQkJICAgICZzdGRpbmJ1ZnBvcywgKGlm bGFnIHx8IENmbGFnKSA/IDEgOiAwKTsKKyAjIGVuZGlmCisgCQkJaWYgKHJldCA9PSAtMSkK KyAJCQkJcGZkW1BPTExfTkVUT1VUXS5mZCA9IC0xOworQEAgLTE0NjcsNyArMTQ2Nyw3IEBA IHJlYWR3cml0ZShpbnQgbmV0X2ZkKQorIAkJCQlwZmRbUE9MTF9TVERPVVRdLmV2ZW50cyA9 IFBPTExPVVQ7CisgCQkJZWxzZQorICMgZWxzZQorLQkJCSAgICAmbmV0aW5idWZwb3MpOwor KwkJCSAgICAmbmV0aW5idWZwb3MsIDApOworICMgZW5kaWYKKyAJCQlpZiAocmV0ID09IC0x KQorIAkJCQlwZmRbUE9MTF9TVERPVVRdLmZkID0gLTE7CitAQCAtMTQ5MywzMyArMTQ5Myw0 MCBAQCByZWFkd3JpdGUoaW50IG5ldF9mZCkKKyB9CisgCisgc3NpemVfdAorLSMgaWYgZGVm aW5lZChUTFMpCistZHJhaW5idWYoaW50IGZkLCB1bnNpZ25lZCBjaGFyICpidWYsIHNpemVf dCAqYnVmcG9zLCBzdHJ1Y3QgdGxzICp0bHMpCistIyBlbHNlCistZHJhaW5idWYoaW50IGZk LCB1bnNpZ25lZCBjaGFyICpidWYsIHNpemVfdCAqYnVmcG9zKQorLSMgZW5kaWYKKytkcmFp bmJ1ZihpbnQgZmQsIHVuc2lnbmVkIGNoYXIgKmJ1Ziwgc2l6ZV90ICpidWZwb3MsIGludCBv bmVsaW5lKQorIHsKKy0Jc3NpemVfdCBuOworKwlzc2l6ZV90IG4sIHI7CisgCXNzaXplX3Qg YWRqdXN0OworKwl1bnNpZ25lZCBjaGFyICpsZiA9IE5VTEw7CisgCistIyBpZiBkZWZpbmVk KFRMUykKKy0JaWYgKHRscykgeworLQkJbiA9IHRsc193cml0ZSh0bHMsIGJ1ZiwgKmJ1ZnBv cyk7CistCQlpZiAobiA9PSAtMSkKKy0JCQllcnJ4KDEsICJ0bHMgd3JpdGUgZmFpbGVkICgl cykiLCB0bHNfZXJyb3IodGxzKSk7CistCX0gZWxzZSB7CistIyBlbmRpZgorLQkJbiA9IHdy aXRlKGZkLCBidWYsICpidWZwb3MpOworLQkJLyogZG9uJ3QgdHJlYXQgRUFHQUlOLCBFSU5U UiBhcyBlcnJvciAqLworLQkJaWYgKG4gPT0gLTEgJiYgKGVycm5vID09IEVBR0FJTiB8fCBl cnJubyA9PSBFSU5UUikpCistIyBpZiBkZWZpbmVkKFRMUykKKy0JCQluID0gVExTX1dBTlRf UE9MTE9VVDsKKy0JfQorLSMgZWxzZQorLQkJCW4gPSAtMjsKKy0jIGVuZGlmCisrCWlmIChv bmVsaW5lKQorKwkJbGYgPSBtZW1jaHIoYnVmLCAnXG4nLCAqYnVmcG9zKTsKKysJaWYgKGxm ID09IE5VTEwpIHsKKysJCW4gPSAqYnVmcG9zOworKwkJb25lbGluZSA9IDA7CisrCX0KKysJ ZWxzZSBpZiAoQ2ZsYWcgJiYgKGxmID09IGJ1ZiB8fCBidWZbbGYgLSBidWYgLSAxXSAhPSAn XHInKSkgeworKwkJbiA9IGxmIC0gYnVmOworKwkJb25lbGluZSA9IDI7CisrCX0KKysJZWxz ZQorKwkJbiA9IGxmIC0gYnVmICsgMTsKKysJaWYgKG4gPiAwKQorKwkJbiA9IHdyaXRlKGZk LCBidWYsIG4pOworKworKwkvKiBkb24ndCB0cmVhdCBFQUdBSU4sIEVJTlRSIGFzIGVycm9y ICovCisrCWlmIChuID09IC0xICYmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlO VFIpKQorKwkJbiA9IC0yOworKwlpZiAob25lbGluZSA9PSAyICYmIG4gPj0gMCkKKysJCW4r KzsKKyAJaWYgKG4gPD0gMCkKKyAJCXJldHVybiBuOworKworKwlpZiAob25lbGluZSA9PSAy ICYmIChyID0gYXRvbWljaW8odndyaXRlLCBmZCwgIlxyXG4iLCAyKSkgIT0gMikKKysJCWVy cigxLCAid3JpdGUgZmFpbGVkICglenUvMikiLCByKTsKKysJaWYgKG9uZWxpbmUgPiAwICYm IGlmbGFnKQorKwkJc2xlZXAoaWZsYWcpOworKworIAkvKiBhZGp1c3QgYnVmZmVyICovCisg CWFkanVzdCA9ICpidWZwb3MgLSBuOworIAlpZiAoYWRqdXN0ID4gMCkKK0BAIC0yMDI5LDYg KzIwMzYsNyBAQCBoZWxwKHZvaWQpCisgCWZwcmludGYoc3RkZXJyLCAiXHRDb21tYW5kIFN1 bW1hcnk6XG5cCisgCVx0LTQJCVVzZSBJUHY0XG5cCisgCVx0LTYJCVVzZSBJUHY2XG5cCisr CVx0LUMJCVNlbmQgQ1JMRiBhcyBsaW5lLWVuZGluZ1xuXAorIAlcdC1ECQlFbmFibGUgdGhl IGRlYnVnIHNvY2tldCBvcHRpb25cblwKKyAJXHQtZAkJRGV0YWNoIGZyb20gc3RkaW5cblwK KyAJXHQtRgkJUGFzcyBzb2NrZXQgZmRcblwKK0BAIC0yMDY2LDcgKzIwNzQsNyBAQCB2b2lk CisgdXNhZ2UoaW50IHJldCkKKyB7CisgCWZwcmludGYoc3RkZXJyLAorLQkgICAgInVzYWdl OiBuYyBbLTQ2RGRGaGtsTm5yU3RVdXZ6XSBbLUkgbGVuZ3RoXSBbLWkgaW50ZXJ2YWxdIFst TSB0dGxdXG4iCisrCSAgICAidXNhZ2U6IG5jIFstNDZDRGRGaGtsTm5yU3RVdXZ6XSBbLUkg bGVuZ3RoXSBbLWkgaW50ZXJ2YWxdIFstTSB0dGxdXG4iCisgCSAgICAiXHQgIFstbSBtaW50 dGxdIFstTyBsZW5ndGhdIFstUCBwcm94eV91c2VybmFtZV0gWy1wIHNvdXJjZV9wb3J0XVxu IgorIAkgICAgIlx0ICBbLXMgc291cmNlXSBbLVQga2V5d29yZF0gWy1WIHJ0YWJsZV0gWy1X IHJlY3ZsaW1pdF0gIgorIAkgICAgIlstdyB0aW1lb3V0XVxuIgpkaWZmIC0tZ2l0IGEvZ251 L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2Qtc2VyaWFsaXplZC1oYW5kbGluZy1t dWx0aXBsZS1jbGllbnRzLnBhdGNoIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9w ZW5ic2Qtc2VyaWFsaXplZC1oYW5kbGluZy1tdWx0aXBsZS1jbGllbnRzLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjM0NDQwODM2ZTIKLS0tIC9kZXYv bnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRjYXQtb3BlbmJzZC1zZXJpYWxp emVkLWhhbmRsaW5nLW11bHRpcGxlLWNsaWVudHMucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAor RnJvbTogQXJvbiBYdSA8YXJvbkBkZWJpYW4ub3JnPgorRGF0ZTogVHVlLCAxNCBGZWIgMjAx MiAyMzowMjowMCArMDgwMAorU3ViamVjdDogc2VyaWFsaXplZCBoYW5kbGluZyBtdWx0aXBs ZSBjbGllbnRzCisKKy0tLQorIG5ldGNhdC5jIHwgICAxNyArKysrKysrKy0tLS0tLS0tLQor IDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKKy0t LSBhL25ldGNhdC5jCisrKysgYi9uZXRjYXQuYworQEAgLTcwNyw3ICs3MDcsMTAgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCQlzID0gdW5peF9iaW5kKGhvc3QsIDAp OworIAkJCWVsc2UKKyAJCQkJcyA9IHVuaXhfbGlzdGVuKGhvc3QpOworLQkJfQorKwkJfSBl bHNlCisrCQkJcyA9IGxvY2FsX2xpc3Rlbihob3N0LCB1cG9ydCwgaGludHMpOworKwkJaWYg KHMgPCAwKQorKwkJCWVycigxLCBOVUxMKTsKKyAKKyAjIGlmIGRlZmluZWQoVExTKQorIAkJ aWYgKHVzZXRscykgeworQEAgLTcyMSwxMyArNzI0LDYgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQorICMgZW5kaWYKKyAJCS8qIEFsbG93IG9ubHkgb25lIGNvbm5lY3Rpb24g YXQgYSB0aW1lLCBidXQgc3RheSBhbGl2ZS4gKi8KKyAJCWZvciAoOzspIHsKKy0JCQlpZiAo ZmFtaWx5ICE9IEFGX1VOSVgpIHsKKy0JCQkJaWYgKHMgIT0gLTEpCistCQkJCQljbG9zZShz KTsKKy0JCQkJcyA9IGxvY2FsX2xpc3Rlbihob3N0LCB1cG9ydCwgaGludHMpOworLQkJCX0K Ky0JCQlpZiAocyA8IDApCistCQkJCWVycigxLCBOVUxMKTsKKyAJCQlpZiAodWZsYWcgJiYg a2ZsYWcpIHsKKyAJCQkJLyoKKyAJCQkJICogRm9yIFVEUCBhbmQgLWssIGRvbid0IGNvbm5l Y3QgdGhlIHNvY2tldCwKK0BAIC04MDQsOCArODAwLDExIEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKKyAJCQkJCWVycigxLCAiY29ubmVjdCIpOworIAkJCX0KKyAKKy0JCQlp ZiAoIWtmbGFnKQorKwkJCWlmICgha2ZsYWcpIHsKKysJCQkJaWYgKHMgIT0gLTEpCisrCQkJ CQljbG9zZShzKTsKKyAJCQkJYnJlYWs7CisrCQkJfQorIAkJfQorIAl9IGVsc2UgaWYgKGZh bWlseSA9PSBBRl9VTklYKSB7CisgCQlyZXQgPSAwOwpkaWZmIC0tZ2l0IGEvZ251L3BhY2th Z2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2Qtc2V0LVRDUC1NRDVTSUctY29ycmVjdGx5LWZv ci1jbGllbnQtY29ubmVjdGlvbnMucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRj YXQtb3BlbmJzZC1zZXQtVENQLU1ENVNJRy1jb3JyZWN0bHktZm9yLWNsaWVudC1jb25uZWN0 aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iMmU4 YzcyZWUzCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0 LW9wZW5ic2Qtc2V0LVRDUC1NRDVTSUctY29ycmVjdGx5LWZvci1jbGllbnQtY29ubmVjdGlv bnMucGF0Y2gKQEAgLTAsMCArMSwxMDEgQEAKK0Zyb206IFRob21hcyBIYWJldHMgPGhhYmV0 c0Bnb29nbGUuY29tPgorRGF0ZTogU2F0LCAxOCBGZWIgMjAxNyAyMTowNzoyMiArMDAwMAor U3ViamVjdDogU2V0IFRDUCBNRDVTSUcgY29ycmVjdGx5IGZvciBjbGllbnQgY29ubmVjdGlv bnMKKworLS0tCisgbmV0Y2F0LmMgfCAgIDMxICsrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMo LSkKKworLS0tIGEvbmV0Y2F0LmMKKysrKyBiL25ldGNhdC5jCitAQCAtNDYsNiArNDYsOSBA QAorICNpZmRlZiBfX2xpbnV4X18KKyAjIGluY2x1ZGUgPGxpbnV4L2luNi5oPgorICNlbmRp ZgorKyNpZiBkZWZpbmVkKFRDUF9NRDVTSUcpICYmIGRlZmluZWQoVENQX01ENVNJR19NQVhL RVlMRU4pCisrIyBpbmNsdWRlIDxic2QvcmVhZHBhc3NwaHJhc2UuaD4KKysjZW5kaWYKKyAK KyAjaWZuZGVmIElQVE9TX0xPV0RFTEFZCisgIyBkZWZpbmUgSVBUT1NfTE9XREVMQVkgMHgx MAorQEAgLTE3NSw2ICsxNzgsOSBAQCBGSUxFCSpaZmxhZzsJCQkJCS8qIGZpbGUgdG8gc2F2 ZSBwZWVyIGNlCisgaW50CUNmbGFnID0gMDsJCQkvKiBDUkxGIGxpbmUtZW5kaW5nICovCisg IyBlbmRpZgorIAorKyMgaWYgZGVmaW5lZChUQ1BfTUQ1U0lHKSAmJiBkZWZpbmVkKFRDUF9N RDVTSUdfTUFYS0VZTEVOKQorK2NoYXIgU2ZsYWdfcGFzc3dvcmRbVENQX01ENVNJR19NQVhL RVlMRU5dOworKyMgZW5kaWYKKyBpbnQgcmVjdmNvdW50LCByZWN2bGltaXQ7CisgaW50IHRp bWVvdXQgPSAtMTsKKyBpbnQgZmFtaWx5ID0gQUZfVU5TUEVDOworQEAgLTIwNSw3ICsyMTEs NyBAQCBpbnQJdWRwdGVzdChpbnQpOworIGludAl1bml4X2JpbmQoY2hhciAqLCBpbnQpOwor IGludAl1bml4X2Nvbm5lY3QoY2hhciAqKTsKKyBpbnQJdW5peF9saXN0ZW4oY2hhciAqKTsK Ky12b2lkCXNldF9jb21tb25fc29ja29wdHMoaW50LCBpbnQpOworK3ZvaWQJc2V0X2NvbW1v bl9zb2Nrb3B0cyhpbnQsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKTsKKyBpbnQJcHJvY2Vz c190b3Nfb3B0KGNoYXIgKiwgaW50ICopOworICMgaWYgZGVmaW5lZChUTFMpCisgaW50CXBy b2Nlc3NfdGxzX29wdChjaGFyICosIGludCAqKTsKK0BAIC00NTgsNyArNDY0LDEwIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQlicmVhazsKKyAjIGVuZGlmCisgCQlj YXNlICdTJzoKKy0jIGlmIGRlZmluZWQoVENQX01ENVNJRykKKysjIGlmIGRlZmluZWQoVENQ X01ENVNJRykgJiYgZGVmaW5lZChUQ1BfTUQ1U0lHX01BWEtFWUxFTikKKysJCQlpZiAocmVh ZHBhc3NwaHJhc2UoIlRDUCBNRDVTSUcgcGFzc3dvcmQ6ICIsCisrCQkJICAgICAgICAgICAg ICAgICAgIFNmbGFnX3Bhc3N3b3JkLCBUQ1BfTUQ1U0lHX01BWEtFWUxFTiwgUlBQX1JFUVVJ UkVfVFRZKSA9PSBOVUxMKQorKwkJCQllcnJ4KDEsICJVbmFibGUgdG8gcmVhZCBUQ1AgTUQ1 U0lHIHBhc3N3b3JkIik7CisgCQkJU2ZsYWcgPSAxOworICMgZWxzZQorIAkJCWVycngoMSwg Im5vIFRDUCBNRDUgc2lnbmF0dXJlIHN1cHBvcnQgYXZhaWxhYmxlIik7CitAQCAtMTE2OSw3 ICsxMTc4LDcgQEAgcmVtb3RlX2Nvbm5lY3QoY29uc3QgY2hhciAqaG9zdCwgY29uc3QgYwor IAkJCWZyZWVhZGRyaW5mbyhhcmVzKTsKKyAJCX0KKyAKKy0JCXNldF9jb21tb25fc29ja29w dHMocywgcmVzLT5haV9mYW1pbHkpOworKwkJc2V0X2NvbW1vbl9zb2Nrb3B0cyhzLCByZXMt PmFpX2FkZHIpOworIAkJY2hhciAqcHJvdG8gPSBwcm90b19uYW1lKHVmbGFnLCBkY2NwZmxh Zyk7CisgCisgCQlpZiAoKGVycm9yID0gY29ubmVjdF93aXRoX3RpbWVvdXQocywgcmVzLT5h aV9hZGRyLCByZXMtPmFpX2FkZHJsZW4sIHRpbWVvdXQpKSA9PSBDT05ORUNUSU9OX1NVQ0NF U1MpCitAQCAtMTMyMyw3ICsxMzMyLDcgQEAgbG9jYWxfbGlzdGVuKGNvbnN0IGNoYXIgKmhv c3QsIGNvbnN0IGNoYQorIAkJCWVycigxLCBOVUxMKTsKKyAjIGVuZGlmCisgCistCQlzZXRf Y29tbW9uX3NvY2tvcHRzKHMsIHJlcy0+YWlfZmFtaWx5KTsKKysJCXNldF9jb21tb25fc29j a29wdHMocywgcmVzLT5haV9hZGRyKTsKKyAKKyAJCWlmIChiaW5kKHMsIChzdHJ1Y3Qgc29j a2FkZHIgKilyZXMtPmFpX2FkZHIsCisgCQkgICAgcmVzLT5haV9hZGRybGVuKSA9PSAwKQor QEAgLTE4NTUsOSArMTg2NCwxMCBAQCB1ZHB0ZXN0KGludCBzKQorIH0KKyAKKyB2b2lkCist c2V0X2NvbW1vbl9zb2Nrb3B0cyhpbnQgcywgaW50IGFmKQorK3NldF9jb21tb25fc29ja29w dHMoaW50IHMsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciogc2EpCisgeworIAlpbnQgeCA9IDE7 CisrCWludCBhZiA9IHNhLT5zYV9mYW1pbHk7CisgCisgIyBpZiBkZWZpbmVkKFNPX0JST0FE Q0FTVCkKKyAJaWYgKGJmbGFnKSB7CitAQCAtMTg2OCwxMCArMTg3OCwxNyBAQCBzZXRfY29t bW9uX3NvY2tvcHRzKGludCBzLCBpbnQgYWYpCisgCQkJZXJyKDEsIE5VTEwpOworIAl9Cisg IyBlbmRpZgorLSMgaWYgZGVmaW5lZChUQ1BfTUQ1U0lHKQorKyMgaWYgZGVmaW5lZChUQ1Bf TUQ1U0lHKSAmJiBkZWZpbmVkKFRDUF9NRDVTSUdfTUFYS0VZTEVOKQorIAlpZiAoU2ZsYWcp IHsKKysJCXN0cnVjdCB0Y3BfbWQ1c2lnIHNpZzsKKysJCW1lbXNldCgmc2lnLCAwLCBzaXpl b2Yoc2lnKSk7CisrCQltZW1jcHkoJnNpZy50Y3BtX2FkZHIsIHNhLCBzaXplb2Yoc3RydWN0 IHNvY2thZGRyX3N0b3JhZ2UpKTsKKysJCXNpZy50Y3BtX2tleWxlbiA9IFRDUF9NRDVTSUdf TUFYS0VZTEVOIDwgc3RybGVuKFNmbGFnX3Bhc3N3b3JkKQorKwkJCT8gVENQX01ENVNJR19N QVhLRVlMRU4KKysJCQk6IHN0cmxlbihTZmxhZ19wYXNzd29yZCk7CisrCQlzdHJsY3B5KHNp Zy50Y3BtX2tleSwgU2ZsYWdfcGFzc3dvcmQsIHNpZy50Y3BtX2tleWxlbik7CisgCQlpZiAo c2V0c29ja29wdChzLCBJUFBST1RPX1RDUCwgVENQX01ENVNJRywKKy0JCQkmeCwgc2l6ZW9m KHgpKSA9PSAtMSkKKysJCQkmc2lnLCBzaXplb2Yoc2lnKSkgPT0gLTEpCisgCQkJZXJyKDEs IE5VTEwpOworIAl9CisgIyBlbmRpZgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNo ZXMvbmV0Y2F0LW9wZW5ic2QtdWRwLXNjYW4tdGltZW91dC5wYXRjaCBiL2dudS9wYWNrYWdl cy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLXVkcC1zY2FuLXRpbWVvdXQucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzhmODY4N2ZkOAotLS0gL2Rldi9u dWxsCisrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL25ldGNhdC1vcGVuYnNkLXVkcC1zY2Fu LXRpbWVvdXQucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbTogQXJvbiBYdSA8YXJvbkBk ZWJpYW4ub3JnPgorRGF0ZTogTW9uLCAxMyBGZWIgMjAxMiAxNToyOTozNyArMDgwMAorU3Vi amVjdDogdWRwIHNjYW4gdGltZW91dAorCistLS0KKyBuZXRjYXQuYyB8ICAgMjMgKysrKysr KysrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwg OCBkZWxldGlvbnMoLSkKKworLS0tIGEvbmV0Y2F0LmMKKysrKyBiL25ldGNhdC5jCitAQCAt MTI5LDYgKzEyOSw4IEBACisgI2RlZmluZSBDT05ORUNUSU9OX0ZBSUxFRCAxCisgI2RlZmlu ZSBDT05ORUNUSU9OX1RJTUVPVVQgMgorIAorKyNkZWZpbmUgVURQX1NDQU5fVElNRU9VVCAz CQkJLyogU2Vjb25kcyAqLworKworIC8qIENvbW1hbmQgTGluZSBPcHRpb25zICovCisgaW50 CWRmbGFnOwkJCQkJLyogZGV0YWNoZWQsIG5vIHN0ZGluICovCisgaW50CUZmbGFnOwkJCQkJ LyogZmRwYXNzIHNvY2sgdG8gc3Rkb3V0ICovCitAQCAtODIyLDcgKzgyNCw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQkJY29udGludWU7CisgCisgCQkJcmV0ID0g MDsKKy0JCQlpZiAodmZsYWcgfHwgemZsYWcpIHsKKysJCQlpZiAodmZsYWcpIHsKKyAJCQkJ LyogRm9yIFVEUCwgbWFrZSBzdXJlIHdlIGFyZSBjb25uZWN0ZWQuICovCisgCQkJCWlmICh1 ZmxhZykgeworIAkJCQkJaWYgKHVkcHRlc3QocykgPT0gLTEpIHsKK0BAIC0xNzY3LDE1ICsx NzY5LDIwIEBAIGJ1aWxkX3BvcnRzKGNoYXIgKnApCisgaW50CisgdWRwdGVzdChpbnQgcykK KyB7CistCWludCBpLCByZXQ7CisrCWludCBpLCB0OworIAorLQlmb3IgKGkgPSAwOyBpIDw9 IDM7IGkrKykgeworLQkJaWYgKHdyaXRlKHMsICJYIiwgMSkgPT0gMSkKKy0JCQlyZXQgPSAx OworLQkJZWxzZQorLQkJCXJldCA9IC0xOworKwlpZiAoKHdyaXRlKHMsICJYIiwgMSkgIT0g MSkgfHwKKysJICAgICgod3JpdGUocywgIlgiLCAxKSAhPSAxKSAmJiAoZXJybm8gPT0gRUNP Tk5SRUZVU0VEKSkpCisrCQlyZXR1cm4gLTE7CisrCisrCS8qIEdpdmUgdGhlIHJlbW90ZSBo b3N0IHNvbWUgdGltZSB0byByZXBseS4gKi8KKysJZm9yIChpID0gMCwgdCA9ICh0aW1lb3V0 ID09IC0xKSA/IFVEUF9TQ0FOX1RJTUVPVVQgOiAodGltZW91dCAvIDEwMDApOworKwkgICAg IGkgPCB0OyBpKyspIHsKKysJCXNsZWVwKDEpOworKwkJaWYgKCh3cml0ZShzLCAiWCIsIDEp ICE9IDEpICYmIChlcnJubyA9PSBFQ09OTlJFRlVTRUQpKQorKwkJCXJldHVybiAtMTsKKyAJ fQorLQlyZXR1cm4gcmV0OworKwlyZXR1cm4gMTsKKyB9CisgCisgdm9pZApkaWZmIC0tZ2l0 IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtdXNlLWZsYWdzLXRvLXNw ZWNpZnktbGlzdGVuLWFkZHJlc3MucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9uZXRj YXQtb3BlbmJzZC11c2UtZmxhZ3MtdG8tc3BlY2lmeS1saXN0ZW4tYWRkcmVzcy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMzAxZjRjNTgwCi0tLSAv ZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbmV0Y2F0LW9wZW5ic2QtdXNl LWZsYWdzLXRvLXNwZWNpZnktbGlzdGVuLWFkZHJlc3MucGF0Y2gKQEAgLTAsMCArMSwxMDYg QEAKK0Zyb206IEd1aWxoZW0gTW91bGluIDxndWlsaGVtQGRlYmlhbi5vcmc+CitEYXRlOiBN b24sIDIyIE9jdCAyMDE4IDA0OjUwOjU0ICswMjAwCitTdWJqZWN0OiB1c2UgLXMvLXAgZmxh Z3MgdG8gc3BlY2lmeSBsaXN0ZW4gYWRkcmVzcworCistLS0KKyBuYy4xICAgICB8ICAgMTgg KysrKysrKysrKysrKystLS0tCisgbmV0Y2F0LmMgfCAgIDQ5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQz IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQorCistLS0gYS9uYy4xCisrKysgYi9u Yy4xCitAQCAtMTQzLDggKzE0MywyMCBAQCBtdWx0aXBsZSBob3N0cy4KKyAuSXQgRmwgbAor IExpc3RlbiBmb3IgYW4gaW5jb21pbmcgY29ubmVjdGlvbiByYXRoZXIgdGhhbiBpbml0aWF0 aW5nIGEKKyBjb25uZWN0aW9uIHRvIGEgcmVtb3RlIGhvc3QuCistQ2Fubm90IGJlIHVzZWQg dG9nZXRoZXIgd2l0aCBhbnkgb2YgdGhlIG9wdGlvbnMKKy0uRmwgcHN4eiAuCisrVGhlCisr LkFyIGRlc3RpbmF0aW9uCisrYW5kCisrLkFyIHBvcnQKKyt0byBsaXN0ZW4gb24gY2FuIGJl IHNwZWNpZmllZCBlaXRoZXIgYXMgbm9uLW9wdGlvbmFsIGFyZ3VtZW50cywgb3Igd2l0aAor K29wdGlvbnMKKysuRmwgcworK2FuZAorKy5GbCBwCisrcmVzcGVjdGl2ZWx5LgorK0Nhbm5v dCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgKKysuRmwgeAorK29yCisrLkZsIHogLgorIEFkZGl0 aW9uYWxseSwgYW55IHRpbWVvdXRzIHNwZWNpZmllZCB3aXRoIHRoZQorIC5GbCB3Cisgb3B0 aW9uIGFyZSBpZ25vcmVkLgorQEAgLTE5NCw4ICsyMDYsNiBAQCBGb3IKKyBkYXRhZ3JhbSBz b2NrZXRzLCBzcGVjaWZpZXMgdGhlIGxvY2FsIHRlbXBvcmFyeSBzb2NrZXQgZmlsZQorIHRv IGNyZWF0ZSBhbmQgdXNlIHNvIHRoYXQgZGF0YWdyYW1zIGNhbiBiZSByZWNlaXZlZC4KKyBD YW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoCistLkZsIGwKKy1vcgorIC5GbCB4IC4KKyAu SXQgRmwgVCBBciBrZXl3b3JkCisgQ2hhbmdlIHRoZSBJUHY0IFRPUy9JUHY2IHRyYWZmaWMg Y2xhc3MgdmFsdWUuCistLS0gYS9uZXRjYXQuYworKysrIGIvbmV0Y2F0LmMKK0BAIC01MDks MzEgKzUwOSw0MCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgIyBlbmRpZgor IAorIAkvKiBDcnVmdCB0byBtYWtlIHN1cmUgb3B0aW9ucyBhcmUgY2xlYW4sIGFuZCB1c2Vk IHByb3Blcmx5LiAqLworLQlpZiAoYXJndlswXSAmJiAhYXJndlsxXSAmJiBmYW1pbHkgPT0g QUZfVU5JWCkgeworLSMgaWYgZGVmaW5lZChJUFBST1RPX0RDQ1ApICYmIGRlZmluZWQoU09D S19EQ0NQKQorLQkJaWYgKGRjY3BmbGFnKQorLQkJCWVycngoMSwgImNhbm5vdCB1c2UgLVog YW5kIC1VIik7CistIyBlbmRpZgorLQkJaG9zdCA9IGFyZ3ZbMF07CistCQl1cG9ydCA9IE5V TEw7CistCX0gZWxzZSBpZiAoIWFyZ3ZbMF0gJiYgbGZsYWcpIHsKKy0JCWlmIChzZmxhZykK Ky0JCQllcnJ4KDEsICJjYW5ub3QgdXNlIC1zIGFuZCAtbCIpOworLQkJaWYgKHBmbGFnKQor LQkJCWVycngoMSwgImNhbm5vdCB1c2UgLXAgYW5kIC1sIik7CistCQlpZiAoemZsYWcpCist CQkJZXJyeCgxLCAiY2Fubm90IHVzZSAteiBhbmQgLWwiKTsKKy0JfSBlbHNlIGlmIChhcmd2 WzBdICYmICFhcmd2WzFdKSB7CistCQlpZiAoIWxmbGFnKQorLQkJCXVzYWdlKDEpOworLQkJ dXBvcnQgPSAmYXJndlswXTsKKy0JCWhvc3QgPSBOVUxMOworLQl9IGVsc2UgaWYgKGFyZ3Zb MF0gJiYgYXJndlsxXSkgeworKwlpZiAoYXJnYyA9PSAwICYmIGxmbGFnKSB7CisrCQl1cG9y dCA9ICZwZmxhZzsKKysJCWhvc3QgPSBzZmxhZzsKKysJfSBlbHNlIGlmIChhcmdjID09IDEg JiYgIXBmbGFnICYmICFzZmxhZykgeworKwkJaWYgKGZhbWlseSA9PSBBRl9VTklYKSB7Cisr CQkJaG9zdCA9IGFyZ3ZbMF07CisrCQkJdXBvcnQgPSBOVUxMOworKwkJfSBlbHNlIGlmIChs ZmxhZykgeworKwkJCWhvc3QgID0gTlVMTDsKKysJCQl1cG9ydCA9IGFyZ3Y7CisrCQl9Cisr CX0gZWxzZSBpZiAoYXJnYyA+PSAyKSB7CisrCQlpZiAobGZsYWcgJiYgKHBmbGFnIHx8IHNm bGFnIHx8IGFyZ2MgPiAyKSkKKysJCQl1c2FnZSgxKTsgLyogY29uZmxpY3QgKi8KKyAJCWhv c3QgPSBhcmd2WzBdOworIAkJdXBvcnQgPSAmYXJndlsxXTsKKyAJfSBlbHNlCisgCQl1c2Fn ZSgxKTsKKyAKKysJaWYgKGZhbWlseSA9PSBBRl9VTklYKSB7CisrIyBpZiBkZWZpbmVkKElQ UFJPVE9fRENDUCkgJiYgZGVmaW5lZChTT0NLX0RDQ1ApCisrCQlpZiAoZGNjcGZsYWcpCisr CQkJZXJyeCgxLCAiY2Fubm90IHVzZSAtWiBhbmQgLVUiKTsKKysjIGVuZGlmCisrCQlpZiAo dXBvcnQgJiYgKnVwb3J0KQorKwkJCWVycngoMSwgImNhbm5vdCB1c2UgcG9ydCB3aXRoIC1V Iik7CisrCQlpZiAoIWhvc3QpCisrCQkJZXJyeCgxLCAibWlzc2luZyBzb2NrZXQgcGF0aG5h bWUiKTsKKysJfSBlbHNlIGlmICghdXBvcnQgfHwgISp1cG9ydCkKKysJCWVycngoMSwgIm1p c3NpbmcgcG9ydCBudW1iZXIiKTsKKysKKysJaWYgKGxmbGFnICYmIHpmbGFnKQorKwkJZXJy eCgxLCAiY2Fubm90IHVzZSAteiBhbmQgLWwiKTsKKysKKyAjIGlmIGRlZmluZWQoVExTKQor IAlpZiAodXNldGxzKSB7CisgCQlpZiAoQ2ZsYWcgJiYgdW52ZWlsKENmbGFnLCAiciIpID09 IC0xKQotLSAKMi4yNC4wCgo= --4945f1da6b394e109e14ee0fceeada6e--