From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30695 invoked by alias); 30 Aug 2011 09:42:48 -0000 Received: (qmail 30681 invoked by uid 22791); 30 Aug 2011 09:42:48 -0000 X-SWARE-Spam-Status: No, hits=-1.6 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-yi0-f47.google.com (HELO mail-yi0-f47.google.com) (209.85.218.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 30 Aug 2011 09:42:34 +0000 Received: by yia28 with SMTP id 28so4281661yia.20 for ; Tue, 30 Aug 2011 02:42:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.236.190.193 with SMTP id e41mr31335221yhn.118.1314697353155; Tue, 30 Aug 2011 02:42:33 -0700 (PDT) Received: by 10.236.44.74 with HTTP; Tue, 30 Aug 2011 02:42:32 -0700 (PDT) In-Reply-To: References: <20110824085437.GO2687@tyan-ft48-01.lab.bos.redhat.com> <20110825105344.GQ2687@tyan-ft48-01.lab.bos.redhat.com> Date: Tue, 30 Aug 2011 12:05:00 -0000 Message-ID: Subject: Re: [PATCH, i386, testsuite] FMA intrinsics From: Ilya Tocar To: "H.J. Lu" Cc: Jakub Jelinek , Uros Bizjak , gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary=20cf303f63f6b8d5c804abb5d456 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-08/txt/msg02431.txt.bz2 --20cf303f63f6b8d5c804abb5d456 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1302 Fixed. 2011/8/26 H.J. Lu : > On Fri, Aug 26, 2011 at 8:47 AM, H.J. Lu wrote: >> On Fri, Aug 26, 2011 at 8:06 AM, Ilya Tocar wr= ote: >>> Done. >>> >>> >>> >>> Also fixed =A0changelog: >>> >>> =A02011-08-26 =A0Ilya Tocar =A0 >>> >>> =A0 =A0 =A0 =A0 =A0 =A0 * config/i386/fmaintrin.h: New. >>> =A0 =A0 =A0 =A0 =A0 =A0 * config.gcc: Add fmaintrin.h. >>> =A0 =A0 =A0 =A0 =A0 =A0 * config/i386/i386.c >>> =A0 =A0 =A0 =A0 =A0 =A0(enum ix86_builtins) : N= ew. >>> =A0 =A0 =A0 =A0 =A0 =A0 : Likewise. >>> =A0 =A0 =A0 =A0 =A0 =A0 * config/i386/sse.md (fmai_vmfmadd_): New. >>> =A0 =A0 =A0 =A0 =A0 =A0 (*fmai_fmadd_): Likewise. >>> =A0 =A0 =A0 =A0 =A0 =A0 (*fmai_fmsub_): Likewise. >>> =A0 =A0 =A0 =A0 =A0 =A0 (*fmai_fnmadd_): Likewise. >>> =A0 =A0 =A0 =A0 =A0 =A0 (*fmai_fnmsub_): Likewise. >>> =A0 =A0 =A0 =A0 =A0 =A0 * config/i386/immintrin.h: Add fmaintrin.h. >>> >> >> >> -- +++ b/gcc/config/i386/fmaintrin.h >> @@ -0,0 +1,229 @@ >> +/* Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation,= Inc. >> + >> >> It should be just 2011. >> > > Also lines in fmaintrin.h are too long. =A0I prefer 72 columns. > > > -- > H.J. > --20cf303f63f6b8d5c804abb5d456 Content-Type: application/octet-stream; name=patch Content-Disposition: attachment; filename=patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_gryoskr90 Content-length: 69833 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MK aW5kZXggZWMxM2Q5My4uMzg3OWEyYSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy5nY2MKKysrIGIvZ2NjL2NvbmZpZy5nY2MKQEAgLTM1Miw3ICszNTIsNyBA QCBpWzM0NTY3XTg2LSotKikKIAkJICAgICAgIG5tbWludHJpbi5oIGJtbWlu dHJpbi5oIGZtYTRpbnRyaW4uaCB3bW1pbnRyaW4uaAogCQkgICAgICAgaW1t aW50cmluLmggeDg2aW50cmluLmggYXZ4aW50cmluLmggeG9waW50cmluLmgK IAkJICAgICAgIGlhMzJpbnRyaW4uaCBjcm9zcy1zdGRhcmcuaCBsd3BpbnRy aW4uaCBwb3BjbnRpbnRyaW4uaAotCQkgICAgICAgbHpjbnRpbnRyaW4uaCBi bWlpbnRyaW4uaCB0Ym1pbnRyaW4uaCIKKwkJICAgICAgIGx6Y250aW50cmlu LmggYm1paW50cmluLmggdGJtaW50cmluLmggZm1haW50cmluLmgiCiAJOzsK IHg4Nl82NC0qLSopCiAJY3B1X3R5cGU9aTM4NgpAQCAtMzY0LDcgKzM2NCw3 IEBAIHg4Nl82NC0qLSopCiAJCSAgICAgICBubW1pbnRyaW4uaCBibW1pbnRy aW4uaCBmbWE0aW50cmluLmggd21taW50cmluLmgKIAkJICAgICAgIGltbWlu dHJpbi5oIHg4NmludHJpbi5oIGF2eGludHJpbi5oIHhvcGludHJpbi5oCiAJ CSAgICAgICBpYTMyaW50cmluLmggY3Jvc3Mtc3RkYXJnLmggbHdwaW50cmlu LmggcG9wY250aW50cmluLmgKLQkJICAgICAgIGx6Y250aW50cmluLmggYm1p aW50cmluLmggdGJtaW50cmluLmgiCisJCSAgICAgICBsemNudGludHJpbi5o IGJtaWludHJpbi5oIHRibWludHJpbi5oIGZtYWludHJpbi5oIgogCW5lZWRf NjRiaXRfaHdpbnQ9eWVzCiAJOzsKIGlhNjQtKi0qKQpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9pMzg2L2ZtYWludHJpbi5oIGIvZ2NjL2NvbmZpZy9pMzg2 L2ZtYWludHJpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjllYzlkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvY29uZmlnL2kz ODYvZm1haW50cmluLmgKQEAgLTAsMCArMSwyOTcgQEAKKy8qIENvcHlyaWdo dCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwor ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorCisgICBHQ0MgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChh dCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBH Q0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorCisgICBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNp b24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Np b25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNl cHRpb24sIHZlcnNpb24KKyAgIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFuZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJy YXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNl ZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNw ZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKworI2lmbmRlZiBfSU1NSU5UUklOX0hfSU5D TFVERUQKKyMgZXJyb3IgIk5ldmVyIHVzZSA8Zm1haW50cmluLmg+IGRpcmVj dGx5OyBpbmNsdWRlIDxpbW1pbnRyaW4uaD4gaW5zdGVhZC4iCisjZW5kaWYK KworI2lmbmRlZiBfRk1BSU5UUklOX0hfSU5DTFVERUQKKyNkZWZpbmUgX0ZN QUlOVFJJTl9IX0lOQ0xVREVECisKKyNpZm5kZWYgX19GTUFfXworIyBlcnJv ciAiRk1BIGluc3RydWN0aW9uIHNldCBub3QgZW5hYmxlZCIKKyNlbHNlCisK K2V4dGVybiBfX2lubGluZSBfX20xMjhkCitfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9f KSkKK19tbV9mbWFkZF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBf X20xMjhkIF9fQykKK3sKKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9p YTMyX3ZmbWFkZHBkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjJk ZilfX0MpOworfQorCitleHRlcm4gX19pbmxpbmUgX19tMjU2ZAorX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCitfbW0yNTZfZm1hZGRfcGQgKF9fbTI1NmQgX19B LCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCit7CisgIHJldHVybiAoX19t MjU2ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDI1NiAoKF9fdjRkZilfX0Es IChfX3Y0ZGYpX19CLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChfX3Y0ZGYpX19DKTsKK30KKworZXh0ZXJuIF9f aW5saW5lIF9fbTEyOAorX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18s IF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1fZm1h ZGRfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCit7 CisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgo X192NHNmKV9fQSwgKF9fdjRzZilfX0IsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQyk7Cit9CisKK2V4 dGVybiBfX2lubGluZSBfX20yNTYKK19fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQor X21tMjU2X2ZtYWRkX3BzIChfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20y NTYgX19DKQoreworICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92 Zm1hZGRwczI1NiAoKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhz ZilfX0MpOworfQorCitleHRlcm4gX19pbmxpbmUgX19tMTI4ZAorX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCitfbW1fZm1hZGRfc2QgKF9fbTEyOGQgX19BLCBf X20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCit7CisgIHJldHVybiAoX19tMTI4 ZCkgX19idWlsdGluX2lhMzJfdmZtYWRkc2QzICgoX192MmRmKV9fQSwgKF9f djJkZilfX0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoX192MmRmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lubGlu ZSBfX20xMjgKK19fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fs d2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21tX2ZtYWRkX3Nz IChfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQoreworICBy ZXR1cm4gKF9fbTEyOCkgX19idWlsdGluX2lhMzJfdmZtYWRkc3MzICgoX192 NHNmKV9fQSwgKF9fdjRzZilfX0IsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChfX3Y0c2YpX19DKTsKK30KKworZXh0 ZXJuIF9faW5saW5lIF9fbTEyOGQKK19fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQor X21tX2Ztc3ViX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEy OGQgX19DKQoreworICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJf dmZtYWRkcGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9fQiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjJkZilf X0MpOworfQorCitleHRlcm4gX19pbmxpbmUgX19tMjU2ZAorX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCitfbW0yNTZfZm1zdWJfcGQgKF9fbTI1NmQgX19BLCBf X20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCit7CisgIHJldHVybiAoX19tMjU2 ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDI1NiAoKF9fdjRkZilfX0EsIChf X3Y0ZGYpX19CLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0oX192NGRmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lu bGluZSBfX20xMjgKK19fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21tX2Ztc3Vi X3BzIChfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQorewor ICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRwcyAoKF9f djRzZilfX0EsIChfX3Y0c2YpX19CLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpX19DKTsKK30KKworZXh0 ZXJuIF9faW5saW5lIF9fbTI1NgorX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitf bW0yNTZfZm1zdWJfcHMgKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1 NiBfX0MpCit7CisgIHJldHVybiAoX19tMjU2KV9fYnVpbHRpbl9pYTMyX3Zm bWFkZHBzMjU2ICgoX192OHNmKV9fQSwgKF9fdjhzZilfX0IsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjhz ZilfX0MpOworfQorCitleHRlcm4gX19pbmxpbmUgX19tMTI4ZAorX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCitfbW1fZm1zdWJfc2QgKF9fbTEyOGQgX19BLCBf X20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCit7CisgIHJldHVybiAoX19tMTI4 ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDMgKChfX3YyZGYpX19BLCAoX192 MmRmKV9fQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLShfX3YyZGYpX19DKTsKK30KKworZXh0ZXJuIF9faW5saW5l IF9fbTEyOAorX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3 YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1fZm1zdWJfc3Mg KF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCit7CisgIHJl dHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzMyAoKF9fdjRz ZilfX0EsIChfX3Y0c2YpX19CLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0oX192NHNmKV9fQyk7Cit9CisKK2V4dGVy biBfX2lubGluZSBfX20xMjhkCitfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19t bV9mbm1hZGRfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4 ZCBfX0MpCit7CisgIHJldHVybiAoX19tMTI4ZClfX2J1aWx0aW5faWEzMl92 Zm1hZGRwZCAoLShfX3YyZGYpX19BLCAoX192MmRmKV9fQiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192MmRmKV9f Qyk7Cit9CisKK2V4dGVybiBfX2lubGluZSBfX20yNTZkCitfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0 aWZpY2lhbF9fKSkKK19tbTI1Nl9mbm1hZGRfcGQgKF9fbTI1NmQgX19BLCBf X20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCit7CisgIHJldHVybiAoX19tMjU2 ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRwZDI1NiAoLShfX3Y0ZGYpX19BLCAo X192NGRmKV9fQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoX192NGRmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lu bGluZSBfX20xMjgKK19fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBf X2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21tX2ZubWFk ZF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKK3sK KyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkcHMgKC0o X192NHNmKV9fQSwgKF9fdjRzZilfX0IsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoX192NHNmKV9fQyk7Cit9CisKK2V4 dGVybiBfX2lubGluZSBfX20yNTYKK19fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQor X21tMjU2X2ZubWFkZF9wcyAoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19t MjU2IF9fQykKK3sKKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJf dmZtYWRkcHMyNTYgKC0oX192OHNmKV9fQSwgKF9fdjhzZilfX0IsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192 OHNmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lubGluZSBfX20xMjhkCitfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKK19tbV9mbm1hZGRfc2QgKF9fbTEyOGQgX19B LCBfX20xMjhkIF9fQiwgX19tMTI4ZCBfX0MpCit7CisgIHJldHVybiAoX19t MTI4ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDMgKC0oX192MmRmKV9fQSwg KF9fdjJkZilfX0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChfX3YyZGYpX19DKTsKK30KKworZXh0ZXJuIF9faW5s aW5lIF9fbTEyOAorX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1fZm5tYWRk X3NzIChfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQorewor ICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzczMgKC0o X192NHNmKV9fQSwgKF9fdjRzZilfX0IsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX0MpOworfQorCitl eHRlcm4gX19pbmxpbmUgX19tMTI4ZAorX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp CitfbW1fZm5tc3ViX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9f bTEyOGQgX19DKQoreworICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lh MzJfdmZtYWRkcGQgKC0oX192MmRmKV9fQSwgKF9fdjJkZilfX0IsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Yy ZGYpX19DKTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9fbTI1NmQKK19fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywg X19hcnRpZmljaWFsX18pKQorX21tMjU2X2ZubXN1Yl9wZCAoX19tMjU2ZCBf X0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9fQykKK3sKKyAgcmV0dXJuIChf X20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2ICgtKF9fdjRkZilf X0EsIChfX3Y0ZGYpX19CLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0oX192NGRmKV9fQyk7Cit9CisKK2V4dGVy biBfX2lubGluZSBfX20xMjgKK19fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21t X2ZubXN1Yl9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9f QykKK3sKKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRk cHMgKC0oX192NHNmKV9fQSwgKF9fdjRzZilfX0IsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKF9fdjRzZilfX0MpOwor fQorCitleHRlcm4gX19pbmxpbmUgX19tMjU2CitfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKK19tbTI1Nl9mbm1zdWJfcHMgKF9fbTI1NiBfX0EsIF9fbTI1NiBf X0IsIF9fbTI1NiBfX0MpCit7CisgIHJldHVybiAoX19tMjU2KV9fYnVpbHRp bl9pYTMyX3ZmbWFkZHBzMjU2ICgtKF9fdjhzZilfX0EsIChfX3Y4c2YpX19C LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLShfX3Y4c2YpX19DKTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9fbTEy OGQKK19fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19p bmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21tX2ZubXN1Yl9zZCAoX19t MTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKK3sKKyAgcmV0 dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkMyAoLShfX3Yy ZGYpX19BLCAoX192MmRmKV9fQiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpX19DKTsKK30KKworZXh0 ZXJuIF9faW5saW5lIF9fbTEyOAorX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitf bW1fZm5tc3ViX3NzIChfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjgg X19DKQoreworICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1h ZGRzczMgKC0oX192NHNmKV9fQSwgKF9fdjRzZilfX0IsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpX19D KTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQKK19fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQorX21tX2ZtYWRkc3ViX3BkIChfX20xMjhkIF9fQSwgX19t MTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICByZXR1cm4gKF9fbTEyOGQp X19idWlsdGluX2lhMzJfdmZtYWRkc3VicGQgKChfX3YyZGYpX19BLCAoX192 MmRmKV9fQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoX192MmRmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lubGlu ZSBfX20yNTZkCitfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbTI1Nl9mbWFk ZHN1Yl9wZCAoX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9f QykKK3sKKyAgcmV0dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmbWFk ZHN1YnBkMjU2ICgoX192NGRmKV9fQSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX192NGRmKV9fQiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoX192NGRmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lubGluZSBfX20xMjgK K19fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQorX21tX2ZtYWRkc3ViX3BzIChfX20x MjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQoreworICByZXR1cm4g KF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwcyAoKF9fdjRzZilf X0EsIChfX3Y0c2YpX19CLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKF9fdjRzZilfX0MpOworfQorCitleHRlcm4g X19pbmxpbmUgX19tMjU2CitfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbTI1 Nl9mbWFkZHN1Yl9wcyAoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2 IF9fQykKK3sKKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdmZt YWRkc3VicHMyNTYgKChfX3Y4c2YpX19BLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdjhzZilfX0IsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoX192OHNmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lubGluZSBfX20xMjhk CitfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbV9mbXN1YmFkZF9wZCAoX19t MTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKK3sKKyAgcmV0 dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBkICgoX192 MmRmKV9fQSwgKF9fdjJkZilfX0IsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLShfX3YyZGYpX19DKTsKK30KKwor ZXh0ZXJuIF9faW5saW5lIF9fbTI1NmQKK19fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQorX21tMjU2X2Ztc3ViYWRkX3BkIChfX20yNTZkIF9fQSwgX19tMjU2ZCBf X0IsIF9fbTI1NmQgX19DKQoreworICByZXR1cm4gKF9fbTI1NmQpX19idWls dGluX2lhMzJfdmZtYWRkc3VicGQyNTYgKChfX3Y0ZGYpX19BLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChf X3Y0ZGYpX19CLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0oX192NGRmKV9fQyk7Cit9CisKK2V4dGVybiBf X2lubGluZSBfX20xMjgKK19fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f LCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21tX2Zt c3ViYWRkX3BzIChfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19D KQoreworICByZXR1cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRz dWJwcyAoKF9fdjRzZilfX0EsIChfX3Y0c2YpX19CLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLShfX3Y0c2YpX19D KTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9fbTI1NgorX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCitfbW0yNTZfZm1zdWJhZGRfcHMgKF9fbTI1NiBfX0EsIF9f bTI1NiBfX0IsIF9fbTI1NiBfX0MpCit7CisgIHJldHVybiAoX19tMjU2KV9f YnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBzMjU2ICgoX192OHNmKV9fQSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChfX3Y4c2YpX19CLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLShfX3Y4c2YpX19DKTsKK30KKworI2VuZGlm CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYu YyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKaW5kZXggZmU2Y2NiZS4uNTkz MzNjOSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYworKysg Yi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCkBAIC0yMzg4OCw3ICsyMzg4OCw3 IEBAIGVudW0gaXg4Nl9idWlsdGlucwogICBJWDg2X0JVSUxUSU5fVkVDX1BF Uk1fVjRERiwKICAgSVg4Nl9CVUlMVElOX1ZFQ19QRVJNX1Y4U0YsCiAKLSAg LyogRk1BNCBhbmQgWE9QIGluc3RydWN0aW9ucy4gICovCisgIC8qIEZNQTQg aW5zdHJ1Y3Rpb25zLiAgKi8KICAgSVg4Nl9CVUlMVElOX1ZGTUFERFNTLAog ICBJWDg2X0JVSUxUSU5fVkZNQUREU0QsCiAgIElYODZfQlVJTFRJTl9WRk1B RERQUywKQEAgLTIzOTAwLDYgKzIzOTAwLDExIEBAIGVudW0gaXg4Nl9idWls dGlucwogICBJWDg2X0JVSUxUSU5fVkZNQUREU1VCUFMyNTYsCiAgIElYODZf QlVJTFRJTl9WRk1BRERTVUJQRDI1NiwKIAorICAvKiBGTUEzIGluc3RydWN0 aW9ucy4gICovCisgIElYODZfQlVJTFRJTl9WRk1BRERTUzMsCisgIElYODZf QlVJTFRJTl9WRk1BRERTRDMsCisKKyAgLyogWE9QIGluc3RydWN0aW9ucy4g ICovCiAgIElYODZfQlVJTFRJTl9WUENNT1YsCiAgIElYODZfQlVJTFRJTl9W UENNT1ZfVjJESSwKICAgSVg4Nl9CVUlMVElOX1ZQQ01PVl9WNFNJLApAQCAt MjUxMDAsNiArMjUxMDUsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBidWls dGluX2Rlc2NyaXB0aW9uIGJkZXNjX211bHRpX2FyZ1tdID0KICAgICAiX19i dWlsdGluX2lhMzJfdmZtYWRkc2QiLCBJWDg2X0JVSUxUSU5fVkZNQUREU0Qs CiAgICAgVU5LTk9XTiwgKGludClNVUxUSV9BUkdfM19ERiB9LAogCisgIHsg T1BUSU9OX01BU0tfSVNBX0ZNQSwgQ09ERV9GT1JfZm1haV92bWZtYWRkX3Y0 c2YsCisgICAgIl9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNzMyIsIElYODZfQlVJ TFRJTl9WRk1BRERTUzMsCisgICAgVU5LTk9XTiwgKGludClNVUxUSV9BUkdf M19TRiB9LAorICB7IE9QVElPTl9NQVNLX0lTQV9GTUEsIENPREVfRk9SX2Zt YWlfdm1mbWFkZF92MmRmLAorICAgICJfX2J1aWx0aW5faWEzMl92Zm1hZGRz ZDMiLCBJWDg2X0JVSUxUSU5fVkZNQUREU0QzLAorICAgIFVOS05PV04sIChp bnQpTVVMVElfQVJHXzNfREYgfSwKKwogICB7IE9QVElPTl9NQVNLX0lTQV9G TUEgfCBPUFRJT05fTUFTS19JU0FfRk1BNCwgQ09ERV9GT1JfZm1hNGlfZm1h ZGRfdjRzZiwKICAgICAiX19idWlsdGluX2lhMzJfdmZtYWRkcHMiLCBJWDg2 X0JVSUxUSU5fVkZNQUREUFMsCiAgICAgVU5LTk9XTiwgKGludClNVUxUSV9B UkdfM19TRiB9LApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2ltbWlu dHJpbi5oIGIvZ2NjL2NvbmZpZy9pMzg2L2ltbWludHJpbi5oCmluZGV4IDEx YTFhNGUuLjA3MzUyMmUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4Ni9p bW1pbnRyaW4uaAorKysgYi9nY2MvY29uZmlnL2kzODYvaW1taW50cmluLmgK QEAgLTU2LDYgKzU2LDEwIEBACiAjaW5jbHVkZSA8YXZ4aW50cmluLmg+CiAj ZW5kaWYKIAorI2lmZGVmIF9fRk1BX18KKyNpbmNsdWRlIDxmbWFpbnRyaW4u aD4KKyNlbmRpZgorCiAjaWZkZWYgX19SRFJORF9fCiBleHRlcm4gX19pbmxp bmUgaW50CiBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvaTM4Ni9zc2UubWQgYi9nY2MvY29uZmlnL2kzODYvc3NlLm1k CmluZGV4IGU5ZjZjM2QuLjBiNDU1YTUgMTAwNjQ0Ci0tLSBhL2djYy9jb25m aWcvaTM4Ni9zc2UubWQKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3NzZS5tZApA QCAtMTU5Myw2ICsxNTkzLDg5IEBACiAgIG9wZXJhbmRzWzRdID0gQ09OU1Qw X1JUWCAoPE1PREU+bW9kZSk7CiB9KQogCisoZGVmaW5lX2V4cGFuZCAiZm1h aV92bWZtYWRkXzxtb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkZf MTI4IDAgInJlZ2lzdGVyX29wZXJhbmQiKQorCSh2ZWNfbWVyZ2U6VkZfMTI4 CisJICAoZm1hOlZGXzEyOAorCSAgICAobWF0Y2hfb3BlcmFuZDpWRl8xMjgg MSAibm9uaW1tZWRpYXRlX29wZXJhbmQiKQorCSAgICAobWF0Y2hfb3BlcmFu ZDpWRl8xMjggMiAibm9uaW1tZWRpYXRlX29wZXJhbmQiKQorCSAgICAobWF0 Y2hfb3BlcmFuZDpWRl8xMjggMyAibm9uaW1tZWRpYXRlX29wZXJhbmQiKSkK KwkgIChtYXRjaF9kdXAgMCkKKwkgIChjb25zdF9pbnQgMSkpKV0KKyAgIlRB UkdFVF9GTUEiKQorCisoZGVmaW5lX2luc24gIipmbWFpX2ZtYWRkXzxtb2Rl PiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkZfMTI4IDAgInJlZ2lzdGVy X29wZXJhbmQiICI9eCx4LHgiKQorICAgICAgICAodmVjX21lcmdlOlZGXzEy OAorCSAgKGZtYTpWRl8xMjgKKwkgICAgKG1hdGNoX29wZXJhbmQ6VkZfMTI4 IDEgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiJTAsIDAseCIpCisJICAgICht YXRjaF9vcGVyYW5kOlZGXzEyOCAyICJub25pbW1lZGlhdGVfb3BlcmFuZCIg InhtLCB4LHhtIikKKwkgICAgKG1hdGNoX29wZXJhbmQ6VkZfMTI4IDMgIm5v bmltbWVkaWF0ZV9vcGVyYW5kIiAiIHgseG0sMCIpKQorCSAgKG1hdGNoX2R1 cCAwKQorCSAgKGNvbnN0X2ludCAxKSkpXQorICAiVEFSR0VUX0ZNQSIKKyAg IkAKKyAgIHZmbWFkZDEzMjxzc2VzY2FsYXJtb2Rlc3VmZml4Plx0eyUyLCAl MywgJTB8JTAsICUzLCAlMn0KKyAgIHZmbWFkZDIxMzxzc2VzY2FsYXJtb2Rl c3VmZml4Plx0eyUzLCAlMiwgJTB8JTAsICUyLCAlM30KKyAgIHZmbWFkZDIz MTxzc2VzY2FsYXJtb2Rlc3VmZml4Plx0eyUyLCAlMSwgJTB8JTAsICUxLCAl Mn0iCisgIFsoc2V0X2F0dHIgInR5cGUiICJzc2VtdWxhZGQiKQorICAgKHNl dF9hdHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIipm bWFpX2Ztc3ViXzxtb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkZf MTI4IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9eCx4LHgiKQorICAgICAgICAo dmVjX21lcmdlOlZGXzEyOAorCSAgKGZtYTpWRl8xMjgKKwkgICAgKG1hdGNo X29wZXJhbmQ6VkZfMTI4ICAgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICIl MCwgMCx4IikKKwkgICAgKG1hdGNoX29wZXJhbmQ6VkZfMTI4ICAgMiAibm9u aW1tZWRpYXRlX29wZXJhbmQiICJ4bSwgeCx4bSIpCisJICAgIChuZWc6VkZf MTI4CisJICAgICAgKG1hdGNoX29wZXJhbmQ6VkZfMTI4IDMgIm5vbmltbWVk aWF0ZV9vcGVyYW5kIiAiIHgseG0sMCIpKSkKKwkgIChtYXRjaF9kdXAgMCkK KwkgIChjb25zdF9pbnQgMSkpKV0KKyAgIlRBUkdFVF9GTUEiCisgICJACisg ICB2Zm1zdWIxMzI8c3Nlc2NhbGFybW9kZXN1ZmZpeD5cdHslMiwgJTMsICUw fCUwLCAlMywgJTJ9CisgICB2Zm1zdWIyMTM8c3Nlc2NhbGFybW9kZXN1ZmZp eD5cdHslMywgJTIsICUwfCUwLCAlMiwgJTN9CisgICB2Zm1zdWIyMzE8c3Nl c2NhbGFybW9kZXN1ZmZpeD5cdHslMiwgJTEsICUwfCUwLCAlMSwgJTJ9Igor ICBbKHNldF9hdHRyICJ0eXBlIiAic3NlbXVsYWRkIikKKyAgIChzZXRfYXR0 ciAibW9kZSIgIjxNT0RFPiIpXSkKKworKGRlZmluZV9pbnNuICIqZm1haV9m bm1hZGRfPG1vZGU+IgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRl8xMjgg MCAicmVnaXN0ZXJfb3BlcmFuZCIgIj14LHgseCIpCisgICAgICAgICh2ZWNf bWVyZ2U6VkZfMTI4CisJICAoZm1hOlZGXzEyOAorCSAgICAobmVnOlZGXzEy OAorCSAgICAgIChtYXRjaF9vcGVyYW5kOlZGXzEyOCAxICJub25pbW1lZGlh dGVfb3BlcmFuZCIgIiUwLCAwLHgiKSkKKwkgICAgKG1hdGNoX29wZXJhbmQ6 VkZfMTI4ICAgMiAibm9uaW1tZWRpYXRlX29wZXJhbmQiICJ4bSwgeCx4bSIp CisJICAgIChtYXRjaF9vcGVyYW5kOlZGXzEyOCAgIDMgIm5vbmltbWVkaWF0 ZV9vcGVyYW5kIiAiIHgseG0sMCIpKQorCSAgKG1hdGNoX2R1cCAwKQorCSAg KGNvbnN0X2ludCAxKSkpXQorICAiVEFSR0VUX0ZNQSIKKyAgIkAKKyAgIHZm bm1hZGQxMzI8c3Nlc2NhbGFybW9kZXN1ZmZpeD5cdHslMiwgJTMsICUwfCUw LCAlMywgJTJ9CisgICB2Zm5tYWRkMjEzPHNzZXNjYWxhcm1vZGVzdWZmaXg+ XHR7JTMsICUyLCAlMHwlMCwgJTIsICUzfQorICAgdmZubWFkZDIzMTxzc2Vz Y2FsYXJtb2Rlc3VmZml4Plx0eyUyLCAlMSwgJTB8JTAsICUxLCAlMn0iCisg IFsoc2V0X2F0dHIgInR5cGUiICJzc2VtdWxhZGQiKQorICAgKHNldF9hdHRy ICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIipmbWFpX2Zu bXN1Yl88bW9kZT4iCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZGXzEyOCAw ICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXgseCx4IikKKyAgICAgICAgKHZlY19t ZXJnZTpWRl8xMjgKKwkgIChmbWE6VkZfMTI4CisJICAgIChuZWc6VkZfMTI4 CisJICAgICAgKG1hdGNoX29wZXJhbmQ6VkZfMTI4IDEgIm5vbmltbWVkaWF0 ZV9vcGVyYW5kIiAiJTAsIDAseCIpKQorCSAgICAobWF0Y2hfb3BlcmFuZDpW Rl8xMjggICAyICJub25pbW1lZGlhdGVfb3BlcmFuZCIgInhtLCB4LHhtIikK KwkgICAgKG5lZzpWRl8xMjgKKwkgICAgICAobWF0Y2hfb3BlcmFuZDpWRl8x MjggMyAibm9uaW1tZWRpYXRlX29wZXJhbmQiICIgeCx4bSwwIikpKQorCSAg KG1hdGNoX2R1cCAwKQorCSAgKGNvbnN0X2ludCAxKSkpXQorICAiVEFSR0VU X0ZNQSIKKyAgIkAKKyAgIHZmbm1zdWIxMzI8c3Nlc2NhbGFybW9kZXN1ZmZp eD5cdHslMiwgJTMsICUwfCUwLCAlMywgJTJ9CisgICB2Zm5tc3ViMjEzPHNz ZXNjYWxhcm1vZGVzdWZmaXg+XHR7JTMsICUyLCAlMHwlMCwgJTIsICUzfQor ICAgdmZubXN1YjIzMTxzc2VzY2FsYXJtb2Rlc3VmZml4Plx0eyUyLCAlMSwg JTB8JTAsICUxLCAlMn0iCisgIFsoc2V0X2F0dHIgInR5cGUiICJzc2VtdWxh ZGQiKQorICAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQorCiAoZGVm aW5lX2luc24gIipmbWE0aV92bWZtYWRkXzxtb2RlPiIKICAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VkZfMTI4IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9eCx4 IikKIAkodmVjX21lcmdlOlZGXzEyOApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvb3RoZXIvaTM4Ni0yLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9vdGhlci9pMzg2LTIuQwppbmRleCBlZDE4M2M3Li4yM2FjYjcxIDEw MDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9pMzg2LTIu QworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9pMzg2LTIuQwpA QCAtMSw5ICsxLDEwIEBACiAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQg aT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAi LU8gLXBlZGFudGljLWVycm9ycyAtbWFyY2g9azggLW1zc2U0YSAtbTNkbm93 IC1tYXZ4IC1tZm1hNCAtbXhvcCAtbWFlcyAtbXBjbG11bCAtbXBvcGNudCAt bWFibSAtbWx6Y250IC1tYm1pIC1tdGJtIC1tbHdwIC1tZnNnc2Jhc2UgLW1y ZHJuZCAtbWYxNmMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLXBlZGFu dGljLWVycm9ycyAtbWFyY2g9azggLW1zc2U0YSAtbTNkbm93IC1tYXZ4IC1t Zm1hNCAtbXhvcCAtbWFlcyAtbXBjbG11bCAtbXBvcGNudCAtbWFibSAtbWx6 Y250IC1tYm1pIC1tdGJtIC1tbHdwIC1tZnNnc2Jhc2UgLW1yZHJuZCAtbWYx NmMgLW1mbWEiIH0gKi8KIAogLyogVGVzdCB0aGF0IHsseCxlLHAsdCxzLHcs YSxiLGl9bW1pbnRyaW4uaCwgbW0zZG5vdy5oLCBmbWE0aW50cmluLmgsCiAg ICB4b3BpbnRyaW4uaCwgYWJtaW50cmluLmgsIGJtaWludHJpbi5oLCB0Ym1p bnRyaW4uaCwgbHdwaW50cmluLmgsCi0gICBwb3BjbnRpbnRyaW4uaCBhbmQg bW1fbWFsbG9jLmguaCBhcmUgdXNhYmxlIHdpdGggLU8gLXBlZGFudGljLWVy cm9ycy4gICovCisgICBwb3BjbnRpbnRyaW4uaCwgZm1haW50cmluLmggYW5k IG1tX21hbGxvYy5oLmggYXJlIHVzYWJsZSB3aXRoIAorICAgLU8gLXBlZGFu dGljLWVycm9ycy4gICovCiAKICNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KIApk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvb3RoZXIvaTM4Ni0z LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9pMzg2LTMuQwppbmRl eCA2MjZmOTcyLi4wZWZkNTU1IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRl L2crKy5kZy9vdGhlci9pMzg2LTMuQworKysgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9vdGhlci9pMzg2LTMuQwpAQCAtMSw5ICsxLDkgQEAKIC8qIHsgZGct ZG8gY29tcGlsZSB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAq LwotLyogeyBkZy1vcHRpb25zICItTyAtZmtlZXAtaW5saW5lLWZ1bmN0aW9u cyAtbWFyY2g9azggLW1zc2U0YSAtbTNkbm93IC1tYXZ4IC1tZm1hNCAtbXhv cCAtbWFlcyAtbXBjbG11bCAtbXBvcGNudCAtbWFibSAtbWx6Y250IC1tYm1p IC1tdGJtIC1tbHdwIC1tZnNnc2Jhc2UgLW1yZHJuZCAtbWYxNmMiIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8gLWZrZWVwLWlubGluZS1mdW5jdGlvbnMg LW1hcmNoPWs4IC1tc3NlNGEgLW0zZG5vdyAtbWF2eCAtbWZtYTQgLW14b3Ag LW1hZXMgLW1wY2xtdWwgLW1wb3BjbnQgLW1hYm0gLW1semNudCAtbWJtaSAt bXRibSAtbWx3cCAtbWZzZ3NiYXNlIC1tcmRybmQgLW1mMTZjIC1tZm1hIiB9 ICovCiAKIC8qIFRlc3QgdGhhdCB7LHgsZSxwLHQscyx3LGEsYixpfW1taW50 cmluLmgsIG1tM2Rub3cuaCwgZm1hNGludHJpbi5oLAogICAgeG9waW50cmlu LmgsIGFibWludHJpbi5oLCBibWlpbnRyaW4uaCwgdGJtaW50cmluLmgsIGx3 cGludHJpbi5oLAotICAgcG9wY250aW50cmluLmggYW5kIG1tX21hbGxvYy5o IGFyZSB1c2FibGUgd2l0aAorICAgcG9wY250aW50cmluLmgsIGZtYWludHJp bi5oIGFuZCBtbV9tYWxsb2MuaCBhcmUgdXNhYmxlIHdpdGgKICAgIC1PIC1m a2VlcC1pbmxpbmUtZnVuY3Rpb25zLiAgKi8KIAogI2luY2x1ZGUgPHg4Nmlu dHJpbi5oPgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvZm1hLTI1Ni1mbWFkZFhYLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9mbWEtMjU2LWZtYWRkWFguYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi43ZTczNDAyCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLTI1Ni1mbWFk ZFhYLmMKQEAgLTAsMCArMSw2MSBAQAorLyogeyBkZy1kbyBydW4gfSAqLwor LyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgZm1hIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8yIC1tZm1hIiB9ICovCisKKyNpbmNsdWRlICJm bWEtY2hlY2suaCIKKworI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2luY2x1 ZGUgIm0yNTYtY2hlY2suaCIKKwordm9pZAorY2hlY2tfbW0yNTZfZm1hZGRf cGQgKF9fbTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCit7 CisgIHVuaW9uMjU2ZCBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7CisgIGIu eCA9IF9fQjsKKyAgYy54ID0gX19DOworICBkb3VibGUgZFs0XTsKKyAgaW50 IGk7CisgIGUueCA9IF9tbTI1Nl9mbWFkZF9wZCAoX19BLCBfX0IsIF9fQyk7 CisgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisgICAgeworICAgICAgZFtp XSA9IGEuYVtpXSAqIGIuYVtpXSArIGMuYVtpXTsKKyAgICB9CisgIGlmIChj aGVja191bmlvbjI1NmQgKGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCit2 b2lkCitjaGVja19tbTI1Nl9mbWFkZF9wcyAoX19tMjU2IF9fQSwgX19tMjU2 IF9fQiwgX19tMjU2IF9fQykKK3sKKyAgdW5pb24yNTYgYSwgYiwgYywgZTsK KyAgYS54ID0gX19BOworICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAg ZmxvYXQgZFs4XTsKKyAgaW50IGk7CisgIGUueCA9IF9tbTI1Nl9mbWFkZF9w cyAoX19BLCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKysp CisgICAgeworICAgICAgZFtpXSA9IGEuYVtpXSAqIGIuYVtpXSArIGMuYVtp XTsKKyAgICB9CisgIGlmIChjaGVja191bmlvbjI1NiAoZSwgZCkpCisgICAg YWJvcnQgKCk7Cit9CisKK3N0YXRpYyB2b2lkCitmbWFfdGVzdCAodm9pZCkK K3sKKyAgdW5pb24yNTYgY1szXTsKKyAgdW5pb24yNTZkIGRbM107CisgIGlu dCBpLCBqOworICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQorICAgIHsKKyAg ICAgIGZvciAoaiA9IDA7IGogPCA4OyBqKyspCisJY1tpXS5hW2pdID0gaSAq IGogKyAzLjU7CisgICAgICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKQorCWRb aV0uYVtqXSA9IGkgKiBqICsgMy41OworICAgIH0KKyAgY2hlY2tfbW0yNTZf Zm1hZGRfcGQgKGRbMF0ueCwgZFsxXS54LCBkWzJdLngpOworICBjaGVja19t bTI1Nl9mbWFkZF9wcyAoY1swXS54LCBjWzFdLngsIGNbMl0ueCk7Cit9CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEt MjU2LWZtYWRkc3ViWFguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2ZtYS0yNTYtZm1hZGRzdWJYWC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjRiNjFhZDUKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtMjU2LWZtYWRkc3Vi WFguYwpAQCAtMCwwICsxLDYxIEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisv KiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBmbWEgfSAqLworLyog eyBkZy1vcHRpb25zICItTzIgLW1mbWEiIH0gKi8KKworI2luY2x1ZGUgImZt YS1jaGVjay5oIgorCisjaW5jbHVkZSA8eDg2aW50cmluLmg+CisjaW5jbHVk ZSAibTI1Ni1jaGVjay5oIgorCit2b2lkCitjaGVja19tbTI1Nl9mbWFkZHN1 Yl9wcyAoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9fQykKK3sK KyAgdW5pb24yNTYgYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLngg PSBfX0I7CisgIGMueCA9IF9fQzsKKyAgZmxvYXQgZFs4XTsKKyAgaW50IGk7 CisgIGUueCA9IF9tbTI1Nl9mbWFkZHN1Yl9wcyAoX19BLCBfX0IsIF9fQyk7 CisgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisgICAgeworICAgICAgZFtp XSA9IGEuYVtpXSAqIGIuYVtpXSArIChpICUgMiA9PSAxID8gYy5hW2ldIDog LWMuYVtpXSk7CisgICAgfQorICBpZiAoY2hlY2tfdW5pb24yNTYgKGUsIGQp KQorICAgIGFib3J0ICgpOworfQorCit2b2lkCitjaGVja19tbTI1Nl9mbWFk ZHN1Yl9wZCAoX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9f QykKK3sKKyAgdW5pb24yNTZkIGEsIGIsIGMsIGU7CisgIGEueCA9IF9fQTsK KyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGRvdWJsZSBkWzRdOwor ICBpbnQgaTsKKyAgZS54ID0gX21tMjU2X2ZtYWRkc3ViX3BkIChfX0EsIF9f QiwgX19DKTsKKyAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKKyAgICB7Cisg ICAgICBkW2ldID0gYS5hW2ldICogYi5hW2ldICsgKGkgJSAyID09IDEgPyBj LmFbaV0gOiAtYy5hW2ldKTsKKyAgICB9CisgIGlmIChjaGVja191bmlvbjI1 NmQgKGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCitzdGF0aWMgdm9pZAor Zm1hX3Rlc3QgKHZvaWQpCit7CisgIHVuaW9uMjU2IGNbM107CisgIHVuaW9u MjU2ZCBkWzNdOworICBpbnQgaSwgajsKKyAgZm9yIChpID0gMDsgaSA8IDM7 IGkrKykKKyAgICB7CisgICAgICBmb3IgKGogPSAwOyBqIDwgODsgaisrKQor CWNbaV0uYVtqXSA9IGkgKiBqICsgMy41OworICAgICAgZm9yIChqID0gMDsg aiA8IDQ7IGorKykKKwlkW2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICB9 CisgIGNoZWNrX21tMjU2X2ZtYWRkc3ViX3BkIChkWzBdLngsIGRbMV0ueCwg ZFsyXS54KTsKKyAgY2hlY2tfbW0yNTZfZm1hZGRzdWJfcHMgKGNbMF0ueCwg Y1sxXS54LCBjWzJdLngpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvZm1hLTI1Ni1mbXN1YlhYLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtMjU2LWZtc3ViWFguYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTJhZWMwCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv Zm1hLTI1Ni1mbXN1YlhYLmMKQEAgLTAsMCArMSw2MiBAQAorLyogeyBkZy1k byBydW4gfSAqLworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQg Zm1hIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZm1hIiB9ICovCisK KyNpbmNsdWRlICJmbWEtY2hlY2suaCIKKworI2luY2x1ZGUgPHg4NmludHJp bi5oPgorI2luY2x1ZGUgIm0yNTYtY2hlY2suaCIKKworCit2b2lkCitjaGVj a19tbTI1Nl9mbXN1Yl9wZCAoX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBf X20yNTZkIF9fQykKK3sKKyAgdW5pb24yNTZkIGEsIGIsIGMsIGU7CisgIGEu eCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGRvdWJs ZSBkWzRdOworICBpbnQgaTsKKyAgZS54ID0gX21tMjU2X2Ztc3ViX3BkIChf X0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKKyAg ICB7CisgICAgICBkW2ldID0gYS5hW2ldICogYi5hW2ldIC0gYy5hW2ldOwor ICAgIH0KKyAgaWYgKGNoZWNrX3VuaW9uMjU2ZCAoZSwgZCkpCisgICAgYWJv cnQgKCk7Cit9CisKK3ZvaWQKK2NoZWNrX21tMjU2X2Ztc3ViX3BzIChfX20y NTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQoreworICB1bmlvbjI1 NiBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAg Yy54ID0gX19DOworICBmbG9hdCBkWzhdOworICBpbnQgaTsKKyAgZS54ID0g X21tMjU2X2Ztc3ViX3BzIChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0g MDsgaSA8IDg7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gYS5hW2ldICog Yi5hW2ldIC0gYy5hW2ldOworICAgIH0KKyAgaWYgKGNoZWNrX3VuaW9uMjU2 IChlLCBkKSkKKyAgICBhYm9ydCAoKTsKK30KKworc3RhdGljIHZvaWQKK2Zt YV90ZXN0ICh2b2lkKQoreworICB1bmlvbjI1NiBjWzNdOworICB1bmlvbjI1 NmQgZFszXTsKKyAgaW50IGksIGo7CisgIGZvciAoaSA9IDA7IGkgPCAzOyBp KyspCisgICAgeworICAgICAgZm9yIChqID0gMDsgaiA8IDg7IGorKykKKwlj W2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICAgIGZvciAoaiA9IDA7IGog PCA0OyBqKyspCisJZFtpXS5hW2pdID0gaSAqIGogKyAzLjU7CisgICAgfQor ICBjaGVja19tbTI1Nl9mbXN1Yl9wZCAoZFswXS54LCBkWzFdLngsIGRbMl0u eCk7CisgIGNoZWNrX21tMjU2X2Ztc3ViX3BzIChjWzBdLngsIGNbMV0ueCwg Y1syXS54KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2ZtYS0yNTYtZm1zdWJhZGRYWC5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvZm1hLTI1Ni1mbXN1YmFkZFhYLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRhNDFjNAotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Zt YS0yNTYtZm1zdWJhZGRYWC5jCkBAIC0wLDAgKzEsNjEgQEAKKy8qIHsgZGct ZG8gcnVuIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0 IGZtYSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZtYSIgfSAqLwor CisjaW5jbHVkZSAiZm1hLWNoZWNrLmgiCisKKyNpbmNsdWRlIDx4ODZpbnRy aW4uaD4KKyNpbmNsdWRlICJtMjU2LWNoZWNrLmgiCisKK3ZvaWQKK2NoZWNr X21tMjU2X2Ztc3ViYWRkX3BzIChfX20yNTYgX19BLCBfX20yNTYgX19CLCBf X20yNTYgX19DKQoreworICB1bmlvbjI1NiBhLCBiLCBjLCBlOworICBhLngg PSBfX0E7CisgIGIueCA9IF9fQjsKKyAgYy54ID0gX19DOworICBmbG9hdCBk WzhdOworICBpbnQgaTsKKyAgZS54ID0gX21tMjU2X2Ztc3ViYWRkX3BzIChf X0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykKKyAg ICB7CisgICAgICBkW2ldID0gYS5hW2ldICogYi5hW2ldICsgKGkgJSAyID09 IDEgPyAtYy5hW2ldIDogYy5hW2ldKTsKKyAgICB9CisgIGlmIChjaGVja191 bmlvbjI1NiAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3ZvaWQKK2No ZWNrX21tMjU2X2Ztc3ViYWRkX3BkIChfX20yNTZkIF9fQSwgX19tMjU2ZCBf X0IsIF9fbTI1NmQgX19DKQoreworICB1bmlvbjI1NmQgYSwgYiwgYywgZTsK KyAgYS54ID0gX19BOworICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAg ZG91YmxlIGRbNF07CisgIGludCBpOworICBlLnggPSBfbW0yNTZfZm1zdWJh ZGRfcGQgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkgPSAwOyBpIDwgNDsg aSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV0gKiBiLmFbaV0gKyAo aSAlIDIgPT0gMSA/IC1jLmFbaV0gOiBjLmFbaV0pOworICAgIH0KKyAgaWYg KGNoZWNrX3VuaW9uMjU2ZCAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisK K3N0YXRpYyB2b2lkCitmbWFfdGVzdCAodm9pZCkKK3sKKyAgdW5pb24yNTYg Y1szXTsKKyAgdW5pb24yNTZkIGRbM107CisgIGludCBpLCBqOworICBmb3Ig KGkgPSAwOyBpIDwgMzsgaSsrKQorICAgIHsKKyAgICAgIGZvciAoaiA9IDA7 IGogPCA4OyBqKyspCisJY1tpXS5hW2pdID0gaSAqIGogKyAzLjU7CisgICAg ICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKQorCWRbaV0uYVtqXSA9IGkgKiBq ICsgMy41OworICAgIH0KKyAgY2hlY2tfbW0yNTZfZm1zdWJhZGRfcGQgKGRb MF0ueCwgZFsxXS54LCBkWzJdLngpOworICBjaGVja19tbTI1Nl9mbXN1YmFk ZF9wcyAoY1swXS54LCBjWzFdLngsIGNbMl0ueCk7Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtMjU2LWZubWFk ZFhYLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtMjU2 LWZubWFkZFhYLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYzBkZmE2OQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2ZtYS0yNTYtZm5tYWRkWFguYwpAQCAtMCwwICsx LDYxIEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLXJlcXVpcmUt ZWZmZWN0aXZlLXRhcmdldCBmbWEgfSAqLworLyogeyBkZy1vcHRpb25zICIt TzIgLW1mbWEiIH0gKi8KKworI2luY2x1ZGUgImZtYS1jaGVjay5oIgorCisj aW5jbHVkZSA8eDg2aW50cmluLmg+CisjaW5jbHVkZSAibTI1Ni1jaGVjay5o IgorCit2b2lkCitjaGVja19tbTI1Nl9mbm1hZGRfcGQgKF9fbTI1NmQgX19B LCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCit7CisgIHVuaW9uMjU2ZCBh LCBiLCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAgYy54 ID0gX19DOworICBkb3VibGUgZFs0XTsKKyAgaW50IGk7CisgIGUueCA9IF9t bTI1Nl9mbm1hZGRfcGQgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkgPSAw OyBpIDwgNDsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSAtYS5hW2ldICog Yi5hW2ldICsgYy5hW2ldOworICAgIH0KKyAgaWYgKGNoZWNrX3VuaW9uMjU2 ZCAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3ZvaWQKK2NoZWNrX21t MjU2X2ZubWFkZF9wcyAoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2 IF9fQykKK3sKKyAgdW5pb24yNTYgYSwgYiwgYywgZTsKKyAgYS54ID0gX19B OworICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAgZmxvYXQgZFs4XTsK KyAgaW50IGk7CisgIGUueCA9IF9tbTI1Nl9mbm1hZGRfcHMgKF9fQSwgX19C LCBfX0MpOworICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorICAgIHsKKyAg ICAgIGRbaV0gPSAtYS5hW2ldICogYi5hW2ldICsgYy5hW2ldOworICAgIH0K KyAgaWYgKGNoZWNrX3VuaW9uMjU2IChlLCBkKSkKKyAgICBhYm9ydCAoKTsK K30KKworc3RhdGljIHZvaWQKK2ZtYV90ZXN0ICh2b2lkKQoreworICB1bmlv bjI1NiBjWzNdOworICB1bmlvbjI1NmQgZFszXTsKKyAgaW50IGksIGo7Cisg IGZvciAoaSA9IDA7IGkgPCAzOyBpKyspCisgICAgeworICAgICAgZm9yIChq ID0gMDsgaiA8IDg7IGorKykKKwljW2ldLmFbal0gPSBpICogaiArIDMuNTsK KyAgICAgIGZvciAoaiA9IDA7IGogPCA0OyBqKyspCisJZFtpXS5hW2pdID0g aSAqIGogKyAzLjU7CisgICAgfQorICBjaGVja19tbTI1Nl9mbm1hZGRfcGQg KGRbMF0ueCwgZFsxXS54LCBkWzJdLngpOworICBjaGVja19tbTI1Nl9mbm1h ZGRfcHMgKGNbMF0ueCwgY1sxXS54LCBjWzJdLngpOworfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLTI1Ni1mbm1z dWJYWC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLTI1 Ni1mbm1zdWJYWC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmFjNDcwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9mbWEtMjU2LWZubXN1YlhYLmMKQEAgLTAsMCAr MSw2MiBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1yZXF1aXJl LWVmZmVjdGl2ZS10YXJnZXQgZm1hIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8yIC1tZm1hIiB9ICovCisKKyNpbmNsdWRlICJmbWEtY2hlY2suaCIKKwor I2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2luY2x1ZGUgIm0yNTYtY2hlY2su aCIKKworCit2b2lkCitjaGVja19tbTI1Nl9mbm1zdWJfcGQgKF9fbTI1NmQg X19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCit7CisgIHVuaW9uMjU2 ZCBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAg Yy54ID0gX19DOworICBkb3VibGUgZFs0XTsKKyAgaW50IGk7CisgIGUueCA9 IF9tbTI1Nl9mbm1zdWJfcGQgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkg PSAwOyBpIDwgNDsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSAtYS5hW2ld ICogYi5hW2ldIC0gYy5hW2ldOworICAgIH0KKyAgaWYgKGNoZWNrX3VuaW9u MjU2ZCAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3ZvaWQKK2NoZWNr X21tMjU2X2ZubXN1Yl9wcyAoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19t MjU2IF9fQykKK3sKKyAgdW5pb24yNTYgYSwgYiwgYywgZTsKKyAgYS54ID0g X19BOworICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAgZmxvYXQgZFs4 XTsKKyAgaW50IGk7CisgIGUueCA9IF9tbTI1Nl9mbm1zdWJfcHMgKF9fQSwg X19CLCBfX0MpOworICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorICAgIHsK KyAgICAgIGRbaV0gPSAtYS5hW2ldICogYi5hW2ldIC0gYy5hW2ldOworICAg IH0KKyAgaWYgKGNoZWNrX3VuaW9uMjU2IChlLCBkKSkKKyAgICBhYm9ydCAo KTsKK30KKworc3RhdGljIHZvaWQKK2ZtYV90ZXN0ICh2b2lkKQoreworICB1 bmlvbjI1NiBjWzNdOworICB1bmlvbjI1NmQgZFszXTsKKyAgaW50IGksIGo7 CisgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspCisgICAgeworICAgICAgZm9y IChqID0gMDsgaiA8IDg7IGorKykKKwljW2ldLmFbal0gPSBpICogaiArIDMu NTsKKyAgICAgIGZvciAoaiA9IDA7IGogPCA0OyBqKyspCisJZFtpXS5hW2pd ID0gaSAqIGogKyAzLjU7CisgICAgfQorICBjaGVja19tbTI1Nl9mbm1zdWJf cGQgKGRbMF0ueCwgZFsxXS54LCBkWzJdLngpOworICBjaGVja19tbTI1Nl9m bm1zdWJfcHMgKGNbMF0ueCwgY1sxXS54LCBjWzJdLngpOworfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLWNoZWNr LmggYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtY2hlY2su aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTZjNGEw Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvZm1hLWNoZWNrLmgKQEAgLTAsMCArMSwyNSBAQAorI2luY2x1ZGUg PHN0ZGxpYi5oPgorCisjaW5jbHVkZSAiY3B1aWQuaCIKKworc3RhdGljIHZv aWQgZm1hX3Rlc3QgKHZvaWQpOworCitzdGF0aWMgdm9pZCBfX2F0dHJpYnV0 ZV9fICgobm9pbmxpbmUpKSBkb190ZXN0ICh2b2lkKQoreworICBmbWFfdGVz dCAoKTsKK30KKworaW50CittYWluICgpCit7CisgIHVuc2lnbmVkIGludCBl YXgsIGVieCwgZWN4LCBlZHg7CisKKyAgaWYgKCFfX2dldF9jcHVpZCAoMSwg JmVheCwgJmVieCwgJmVjeCwgJmVkeCkpCisgICAgcmV0dXJuIDA7CisKKyAg LyogUnVuIEZNQSB0ZXN0IG9ubHkgaWYgaG9zdCBoYXMgRk1BIHN1cHBvcnQu ICAqLworICBpZiAoZWN4ICYgYml0X0ZNQSkKKyAgICBkb190ZXN0ICgpOwor CisgIGV4aXQgKDApOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvZm1hLWNvbXBpbGUuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2ZtYS1jb21waWxlLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ1ZGFhNQotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYS1jb21waWxl LmMKQEAgLTAsMCArMSwyMjEgQEAKKy8qIFRlc3QgdGhhdCB0aGUgY29tcGls ZXIgcHJvcGVybHkgZ2VuZXJhdGVzIGZsb2F0aW5nIHBvaW50IG11bHRpcGx5 CisgICBhbmQgYWRkIGluc3RydWN0aW9ucyBGTUEgc3lzdGVtcy4gICovCisK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P MiAtbWZtYSIgfSAqLworCisjaW5jbHVkZSA8eDg2aW50cmluLmg+CisKK19f bTEyOGQKK2NoZWNrX21tX2ZtYWRkX3BkIChfX20xMjhkIGEsIF9fbTEyOGQg YiwgX19tMTI4ZCBjKQoreworICByZXR1cm4gX21tX2ZtYWRkX3BkIChhLCBi LCBjKTsKK30KKworX19tMjU2ZAorY2hlY2tfbW0yNTZfZm1hZGRfcGQgKF9f bTI1NmQgYSwgX19tMjU2ZCBiLCBfX20yNTZkIGMpCit7CisgIHJldHVybiBf bW0yNTZfZm1hZGRfcGQgKGEsIGIsIGMpOworfQorCitfX20xMjgKK2NoZWNr X21tX2ZtYWRkX3BzIChfX20xMjggYSwgX19tMTI4IGIsIF9fbTEyOCBjKQor eworICByZXR1cm4gX21tX2ZtYWRkX3BzIChhLCBiLCBjKTsKK30KKworX19t MjU2CitjaGVja19tbTI1Nl9mbWFkZF9wcyAoX19tMjU2IGEsIF9fbTI1NiBi LCBfX20yNTYgYykKK3sKKyAgcmV0dXJuIF9tbTI1Nl9mbWFkZF9wcyAoYSwg YiwgYyk7Cit9CisKK19fbTEyOGQKK2NoZWNrX21tX2ZtYWRkX3NkIChfX20x MjhkIGEsIF9fbTEyOGQgYiwgX19tMTI4ZCBjKQoreworICByZXR1cm4gX21t X2ZtYWRkX3NkIChhLCBiLCBjKTsKK30KKworX19tMTI4CitjaGVja19tbV9m bWFkZF9zcyAoX19tMTI4IGEsIF9fbTEyOCBiLCBfX20xMjggYykKK3sKKyAg cmV0dXJuIF9tbV9mbWFkZF9zcyAoYSwgYiwgYyk7Cit9CisKK19fbTEyOGQK K2NoZWNrX21tX2Ztc3ViX3BkIChfX20xMjhkIGEsIF9fbTEyOGQgYiwgX19t MTI4ZCBjKQoreworICByZXR1cm4gX21tX2Ztc3ViX3BkIChhLCBiLCBjKTsK K30KKworX19tMjU2ZAorY2hlY2tfbW0yNTZfZm1zdWJfcGQgKF9fbTI1NmQg YSwgX19tMjU2ZCBiLCBfX20yNTZkIGMpCit7CisgIHJldHVybiBfbW0yNTZf Zm1zdWJfcGQgKGEsIGIsIGMpOworfQorCitfX20xMjgKK2NoZWNrX21tX2Zt c3ViX3BzIChfX20xMjggYSwgX19tMTI4IGIsIF9fbTEyOCBjKQoreworICBy ZXR1cm4gX21tX2Ztc3ViX3BzIChhLCBiLCBjKTsKK30KKworX19tMjU2Citj aGVja19tbTI1Nl9mbXN1Yl9wcyAoX19tMjU2IGEsIF9fbTI1NiBiLCBfX20y NTYgYykKK3sKKyAgcmV0dXJuIF9tbTI1Nl9mbXN1Yl9wcyAoYSwgYiwgYyk7 Cit9CisKK19fbTEyOGQKK2NoZWNrX21tX2Ztc3ViX3NkIChfX20xMjhkIGEs IF9fbTEyOGQgYiwgX19tMTI4ZCBjKQoreworICByZXR1cm4gX21tX2Ztc3Vi X3NkIChhLCBiLCBjKTsKK30KKworX19tMTI4CitjaGVja19tbV9mbXN1Yl9z cyAoX19tMTI4IGEsIF9fbTEyOCBiLCBfX20xMjggYykKK3sKKyAgcmV0dXJu IF9tbV9mbXN1Yl9zcyAoYSwgYiwgYyk7Cit9CisKK19fbTEyOGQKK2NoZWNr X21tX2ZubWFkZF9wZCAoX19tMTI4ZCBhLCBfX20xMjhkIGIsIF9fbTEyOGQg YykKK3sKKyAgcmV0dXJuIF9tbV9mbm1hZGRfcGQgKGEsIGIsIGMpOworfQor CitfX20yNTZkCitjaGVja19tbTI1Nl9mbm1hZGRfcGQgKF9fbTI1NmQgYSwg X19tMjU2ZCBiLCBfX20yNTZkIGMpCit7CisgIHJldHVybiBfbW0yNTZfZm5t YWRkX3BkIChhLCBiLCBjKTsKK30KKworX19tMTI4CitjaGVja19tbV9mbm1h ZGRfcHMgKF9fbTEyOCBhLCBfX20xMjggYiwgX19tMTI4IGMpCit7CisgIHJl dHVybiBfbW1fZm5tYWRkX3BzIChhLCBiLCBjKTsKK30KKworX19tMjU2Citj aGVja19tbTI1Nl9mbm1hZGRfcHMgKF9fbTI1NiBhLCBfX20yNTYgYiwgX19t MjU2IGMpCit7CisgIHJldHVybiBfbW0yNTZfZm5tYWRkX3BzIChhLCBiLCBj KTsKK30KKworX19tMTI4ZAorY2hlY2tfbW1fZm5tYWRkX3NkIChfX20xMjhk IGEsIF9fbTEyOGQgYiwgX19tMTI4ZCBjKQoreworICByZXR1cm4gX21tX2Zu bWFkZF9zZCAoYSwgYiwgYyk7Cit9CisKK19fbTEyOAorY2hlY2tfbW1fZm5t YWRkX3NzIChfX20xMjggYSwgX19tMTI4IGIsIF9fbTEyOCBjKQoreworICBy ZXR1cm4gX21tX2ZubWFkZF9zcyAoYSwgYiwgYyk7Cit9CisKK19fbTEyOGQK K2NoZWNrX21tX2ZubXN1Yl9wZCAoX19tMTI4ZCBhLCBfX20xMjhkIGIsIF9f bTEyOGQgYykKK3sKKyAgcmV0dXJuIF9tbV9mbm1zdWJfcGQgKGEsIGIsIGMp OworfQorCitfX20yNTZkCitjaGVja19tbTI1Nl9mbm1zdWJfcGQgKF9fbTI1 NmQgYSwgX19tMjU2ZCBiLCBfX20yNTZkIGMpCit7CisgIHJldHVybiBfbW0y NTZfZm5tc3ViX3BkIChhLCBiLCBjKTsKK30KKworX19tMTI4CitjaGVja19t bV9mbm1zdWJfcHMgKF9fbTEyOCBhLCBfX20xMjggYiwgX19tMTI4IGMpCit7 CisgIHJldHVybiBfbW1fZm5tc3ViX3BzIChhLCBiLCBjKTsKK30KKworX19t MjU2CitjaGVja19tbTI1Nl9mbm1zdWJfcHMgKF9fbTI1NiBhLCBfX20yNTYg YiwgX19tMjU2IGMpCit7CisgIHJldHVybiBfbW0yNTZfZm5tc3ViX3BzIChh LCBiLCBjKTsKK30KKworX19tMTI4ZAorY2hlY2tfbW1fZm5tc3ViX3NkIChf X20xMjhkIGEsIF9fbTEyOGQgYiwgX19tMTI4ZCBjKQoreworICByZXR1cm4g X21tX2ZubXN1Yl9zZCAoYSwgYiwgYyk7Cit9CisKK19fbTEyOAorY2hlY2tf bW1fZm5tc3ViX3NzIChfX20xMjggYSwgX19tMTI4IGIsIF9fbTEyOCBjKQor eworICByZXR1cm4gX21tX2ZubXN1Yl9zcyAoYSwgYiwgYyk7Cit9CisKK19f bTEyOGQKK2NoZWNrX21tX2ZtYWRkc3ViX3BkIChfX20xMjhkIGEsIF9fbTEy OGQgYiwgX19tMTI4ZCBjKQoreworICByZXR1cm4gX21tX2ZtYWRkc3ViX3Bk IChhLCBiLCBjKTsKK30KKworX19tMjU2ZAorY2hlY2tfbW0yNTZfZm1hZGRz dWJfcGQgKF9fbTI1NmQgYSwgX19tMjU2ZCBiLCBfX20yNTZkIGMpCit7Cisg IHJldHVybiBfbW0yNTZfZm1hZGRzdWJfcGQgKGEsIGIsIGMpOworfQorCitf X20xMjgKK2NoZWNrX21tX2ZtYWRkc3ViX3BzIChfX20xMjggYSwgX19tMTI4 IGIsIF9fbTEyOCBjKQoreworICByZXR1cm4gX21tX2ZtYWRkc3ViX3BzIChh LCBiLCBjKTsKK30KKworX19tMjU2CitjaGVja19tbTI1Nl9mbWFkZHN1Yl9w cyAoX19tMjU2IGEsIF9fbTI1NiBiLCBfX20yNTYgYykKK3sKKyAgcmV0dXJu IF9tbTI1Nl9mbWFkZHN1Yl9wcyAoYSwgYiwgYyk7Cit9CisKK19fbTEyOGQK K2NoZWNrX21tX2Ztc3ViYWRkX3BkIChfX20xMjhkIGEsIF9fbTEyOGQgYiwg X19tMTI4ZCBjKQoreworICByZXR1cm4gX21tX2Ztc3ViYWRkX3BkIChhLCBi LCBjKTsKK30KKworX19tMjU2ZAorY2hlY2tfbW0yNTZfZm1zdWJhZGRfcGQg KF9fbTI1NmQgYSwgX19tMjU2ZCBiLCBfX20yNTZkIGMpCit7CisgIHJldHVy biBfbW0yNTZfZm1zdWJhZGRfcGQgKGEsIGIsIGMpOworfQorCitfX20xMjgK K2NoZWNrX21tX2Ztc3ViYWRkX3BzIChfX20xMjggYSwgX19tMTI4IGIsIF9f bTEyOCBjKQoreworICByZXR1cm4gX21tX2Ztc3ViYWRkX3BzIChhLCBiLCBj KTsKK30KKworX19tMjU2CitjaGVja19tbTI1Nl9mbXN1YmFkZF9wcyAoX19t MjU2IGEsIF9fbTI1NiBiLCBfX20yNTYgYykKK3sKKyAgcmV0dXJuIF9tbTI1 Nl9mbXN1YmFkZF9wcyAoYSwgYiwgYyk7Cit9CisKKworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2Zm1hZGRbXnNdLi5wcyIgMiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi dmZtc3ViW15zXS4ucHMiIDIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgInZmbm1hZGQuLi5wcyIgMiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidmZubXN1Yi4u LnBzIiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJ2Zm1hZGRzdWIuLi5wcyIgMiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidmZtc3ViYWRkLi4ucHMiIDIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg InZmbWFkZFtec10uLnBkIiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJ2Zm1zdWJbXnNdLi5wZCIgMiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidmZubWFk ZC4uLnBkIiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJ2Zm5tc3ViLi4ucGQiIDIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZmbWFkZHN1Yi4uLnBkIiAy IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJ2Zm1zdWJhZGQuLi5wZCIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAidmZtYWRkW15zXS4uc3MiIDEgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZmbXN1 Yltec10uLnNzIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzICJ2Zm5tYWRkLi4uc3MiIDEgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZmbm1zdWIuLi5zcyIg MSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAidmZtYWRkW15zXS4uc2QiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMgInZmbXN1Yltec10uLnNkIiAxIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2Zm5t YWRkLi4uc2QiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgInZmbm1zdWIuLi5zZCIgMSB9IH0gKi8KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYS1mbWFkZFhY LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtZm1hZGRY WC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZWY5 ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9mbWEtZm1hZGRYWC5jCkBAIC0wLDAgKzEsMTAyIEBACisvKiB7 IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRh cmdldCBmbWEgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1mbWEiIH0g Ki8KKworI2luY2x1ZGUgImZtYS1jaGVjay5oIgorCisjaW5jbHVkZSA8eDg2 aW50cmluLmg+CisjaW5jbHVkZSAibTI1Ni1jaGVjay5oIgorCit2b2lkCitj aGVja19tbV9mbWFkZF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBf X20xMjhkIF9fQykKK3sKKyAgdW5pb24xMjhkIGEsIGIsIGMsIGU7CisgIGEu eCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGRvdWJs ZSBkWzJdOworICBpbnQgaTsKKyAgZS54ID0gX21tX2ZtYWRkX3BkIChfX0Es IF9fQiwgX19DKTsKKyAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKyAgICB7 CisgICAgICBkW2ldID0gYS5hW2ldICogYi5hW2ldICsgYy5hW2ldOworICAg IH0KKworICBpZiAoY2hlY2tfdW5pb24xMjhkIChlLCBkKSkKKyAgICBhYm9y dCAoKTsKK30KKwordm9pZAorY2hlY2tfbW1fZm1hZGRfcHMgKF9fbTEyOCBf X0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCit7CisgIHVuaW9uMTI4IGEs IGIsIGMsIGU7CisgIGEueCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLngg PSBfX0M7CisgIGZsb2F0IGRbNF07CisgIGludCBpOworICBlLnggPSBfbW1f Zm1hZGRfcHMgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkgPSAwOyBpIDwg NDsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV0gKiBiLmFbaV0g KyBjLmFbaV07CisgICAgfQorICBpZiAoY2hlY2tfdW5pb24xMjggKGUsIGQp KQorICAgIGFib3J0ICgpOworfQorCit2b2lkCitjaGVja19tbV9mbWFkZF9z ZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKK3sK KyAgdW5pb24xMjhkIGEsIGIsIGMsIGU7CisgIGEueCA9IF9fQTsKKyAgYi54 ID0gX19COworICBjLnggPSBfX0M7CisgIGRvdWJsZSBkWzJdOworICBpbnQg aTsKKyAgZS54ID0gX21tX2ZtYWRkX3NkIChfX0EsIF9fQiwgX19DKTsKKyAg Zm9yIChpID0gMTsgaSA8IDI7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0g YS5hW2ldOworICAgIH0KKyAgZFswXSA9IGEuYVswXSAqIGIuYVswXSArIGMu YVswXTsKKyAgaWYgKGNoZWNrX3VuaW9uMTI4ZCAoZSwgZCkpCisgICAgYWJv cnQgKCk7Cit9CisKK3ZvaWQKK2NoZWNrX21tX2ZtYWRkX3NzIChfX20xMjgg X19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQoreworICB1bmlvbjEyOCBh LCBiLCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAgYy54 ID0gX19DOworICBmbG9hdCBkWzRdOworICBpbnQgaTsKKyAgZS54ID0gX21t X2ZtYWRkX3NzIChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMTsgaSA8 IDQ7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gYS5hW2ldOworICAgIH0K KyAgZFswXSA9IGEuYVswXSAqIGIuYVswXSArIGMuYVswXTsKKyAgaWYgKGNo ZWNrX3VuaW9uMTI4IChlLCBkKSkKKyAgICBhYm9ydCAoKTsKK30KKworc3Rh dGljIHZvaWQKK2ZtYV90ZXN0ICh2b2lkKQoreworICB1bmlvbjEyOCBhWzNd OworICB1bmlvbjEyOGQgYlszXTsKKyAgaW50IGksIGo7CisgIGZvciAoaSA9 IDA7IGkgPCAzOyBpKyspCisgICAgeworICAgICAgZm9yIChqID0gMDsgaiA8 IDQ7IGorKykKKwlhW2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICAgIGZv ciAoaiA9IDA7IGogPCAyOyBqKyspCisJYltpXS5hW2pdID0gaSAqIGogKyAz LjU7CisgICAgfQorICBjaGVja19tbV9mbWFkZF9wZCAoYlswXS54LCBiWzFd LngsIGJbMl0ueCk7CisgIGNoZWNrX21tX2ZtYWRkX3NkIChiWzBdLngsIGJb MV0ueCwgYlsyXS54KTsKKyAgY2hlY2tfbW1fZm1hZGRfcHMgKGFbMF0ueCwg YVsxXS54LCBhWzJdLngpOworICBjaGVja19tbV9mbWFkZF9zcyAoYVswXS54 LCBhWzFdLngsIGFbMl0ueCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtZm1hZGRzdWJYWC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLWZtYWRkc3ViWFguYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWM4MTYzCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv Zm1hLWZtYWRkc3ViWFguYwpAQCAtMCwwICsxLDYxIEBACisvKiB7IGRnLWRv IHJ1biB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBm bWEgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1mbWEiIH0gKi8KKwor I2luY2x1ZGUgImZtYS1jaGVjay5oIgorCisjaW5jbHVkZSA8eDg2aW50cmlu Lmg+CisjaW5jbHVkZSAibTI1Ni1jaGVjay5oIgorCit2b2lkCitjaGVja19t bV9mbWFkZHN1Yl9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4 IF9fQykKK3sKKyAgdW5pb24xMjggYSwgYiwgYywgZTsKKyAgYS54ID0gX19B OworICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAgZmxvYXQgZFs0XTsK KyAgaW50IGk7CisgIGUueCA9IF9tbV9mbWFkZHN1Yl9wcyAoX19BLCBfX0Is IF9fQyk7CisgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisgICAgeworICAg ICAgZFtpXSA9IGEuYVtpXSAqIGIuYVtpXSArIChpICUgMiA9PSAxID8gYy5h W2ldIDogLWMuYVtpXSk7CisgICAgfQorICBpZiAoY2hlY2tfdW5pb24xMjgg KGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCit2b2lkCitjaGVja19tbV9m bWFkZHN1Yl9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhk IF9fQykKK3sKKyAgdW5pb24xMjhkIGEsIGIsIGMsIGU7CisgIGEueCA9IF9f QTsKKyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGRvdWJsZSBkWzJd OworICBpbnQgaTsKKyAgZS54ID0gX21tX2ZtYWRkc3ViX3BkIChfX0EsIF9f QiwgX19DKTsKKyAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKyAgICB7Cisg ICAgICBkW2ldID0gYS5hW2ldICogYi5hW2ldICsgKGkgJSAyID09IDEgPyBj LmFbaV0gOiAtYy5hW2ldKTsKKyAgICB9CisgIGlmIChjaGVja191bmlvbjEy OGQgKGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCitzdGF0aWMgdm9pZAor Zm1hX3Rlc3QgKHZvaWQpCit7CisgIHVuaW9uMTI4IGFbM107CisgIHVuaW9u MTI4ZCBiWzNdOworICBpbnQgaSwgajsKKyAgZm9yIChpID0gMDsgaSA8IDM7 IGkrKykKKyAgICB7CisgICAgICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKQor CWFbaV0uYVtqXSA9IGkgKiBqICsgMy41OworICAgICAgZm9yIChqID0gMDsg aiA8IDI7IGorKykKKwliW2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICB9 CisgIGNoZWNrX21tX2ZtYWRkc3ViX3BkIChiWzBdLngsIGJbMV0ueCwgYlsy XS54KTsKKyAgY2hlY2tfbW1fZm1hZGRzdWJfcHMgKGFbMF0ueCwgYVsxXS54 LCBhWzJdLngpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvZm1hLWZtc3ViWFguYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2ZtYS1mbXN1YlhYLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uM2Q5MmQ0YgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYS1mbXN1YlhYLmMK QEAgLTAsMCArMSwxMDEgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsg ZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGZtYSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PMiAtbWZtYSIgfSAqLworCisjaW5jbHVkZSAiZm1hLWNo ZWNrLmgiCisKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNpbmNsdWRlICJt MjU2LWNoZWNrLmgiCisKK3ZvaWQKK2NoZWNrX21tX2Ztc3ViX3BkIChfX20x MjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICB1bmlv bjEyOGQgYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBfX0I7 CisgIGMueCA9IF9fQzsKKyAgZG91YmxlIGRbMl07CisgIGludCBpOworICBl LnggPSBfbW1fZm1zdWJfcGQgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkg PSAwOyBpIDwgMjsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV0g KiBiLmFbaV0gLSBjLmFbaV07CisgICAgfQorICBpZiAoY2hlY2tfdW5pb24x MjhkIChlLCBkKSkKKyAgICBhYm9ydCAoKTsKK30KKwordm9pZAorY2hlY2tf bW1fZm1zdWJfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBf X0MpCit7CisgIHVuaW9uMTI4IGEsIGIsIGMsIGU7CisgIGEueCA9IF9fQTsK KyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGZsb2F0IGRbNF07Cisg IGludCBpOworICBlLnggPSBfbW1fZm1zdWJfcHMgKF9fQSwgX19CLCBfX0Mp OworICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorICAgIHsKKyAgICAgIGRb aV0gPSBhLmFbaV0gKiBiLmFbaV0gLSBjLmFbaV07CisgICAgfQorICBpZiAo Y2hlY2tfdW5pb24xMjggKGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCit2 b2lkCitjaGVja19tbV9mbXN1Yl9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQg X19CLCBfX20xMjhkIF9fQykKK3sKKyAgdW5pb24xMjhkIGEsIGIsIGMsIGU7 CisgIGEueCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLnggPSBfX0M7Cisg IGRvdWJsZSBkWzJdOworICBpbnQgaTsKKyAgZS54ID0gX21tX2Ztc3ViX3Nk IChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMTsgaSA8IDI7IGkrKykK KyAgICB7CisgICAgICBkW2ldID0gYS5hW2ldOworICAgIH0KKyAgZFswXSA9 IGEuYVswXSAqIGIuYVswXSAtIGMuYVswXTsKKyAgaWYgKGNoZWNrX3VuaW9u MTI4ZCAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3ZvaWQKK2NoZWNr X21tX2Ztc3ViX3NzIChfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjgg X19DKQoreworICB1bmlvbjEyOCBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7 CisgIGIueCA9IF9fQjsKKyAgYy54ID0gX19DOworICBmbG9hdCBkWzRdOwor ICBpbnQgaTsKKyAgZS54ID0gX21tX2Ztc3ViX3NzIChfX0EsIF9fQiwgX19D KTsKKyAgZm9yIChpID0gMTsgaSA8IDQ7IGkrKykKKyAgICB7CisgICAgICBk W2ldID0gYS5hW2ldOworICAgIH0KKyAgZFswXSA9IGEuYVswXSAqIGIuYVsw XSAtIGMuYVswXTsKKyAgaWYgKGNoZWNrX3VuaW9uMTI4IChlLCBkKSkKKyAg ICBhYm9ydCAoKTsKK30KKworc3RhdGljIHZvaWQKK2ZtYV90ZXN0ICh2b2lk KQoreworICB1bmlvbjEyOCBhWzNdOworICB1bmlvbjEyOGQgYlszXTsKKyAg aW50IGksIGo7CisgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspCisgICAgewor ICAgICAgZm9yIChqID0gMDsgaiA8IDQ7IGorKykKKwlhW2ldLmFbal0gPSBp ICogaiArIDMuNTsKKyAgICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKyspCisJ YltpXS5hW2pdID0gaSAqIGogKyAzLjU7CisgICAgfQorICBjaGVja19tbV9m bXN1Yl9wZCAoYlswXS54LCBiWzFdLngsIGJbMl0ueCk7CisgIGNoZWNrX21t X2Ztc3ViX3NkIChiWzBdLngsIGJbMV0ueCwgYlsyXS54KTsKKyAgY2hlY2tf bW1fZm1zdWJfcHMgKGFbMF0ueCwgYVsxXS54LCBhWzJdLngpOworICBjaGVj a19tbV9mbXN1Yl9zcyAoYVswXS54LCBhWzFdLngsIGFbMl0ueCk7Cit9CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEt Zm1zdWJhZGRYWC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv Zm1hLWZtc3ViYWRkWFguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5iMDNmODc1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLWZtc3ViYWRkWFguYwpAQCAtMCww ICsxLDYxIEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLXJlcXVp cmUtZWZmZWN0aXZlLXRhcmdldCBmbWEgfSAqLworLyogeyBkZy1vcHRpb25z ICItTzIgLW1mbWEiIH0gKi8KKworI2luY2x1ZGUgImZtYS1jaGVjay5oIgor CisjaW5jbHVkZSA8eDg2aW50cmluLmg+CisjaW5jbHVkZSAibTI1Ni1jaGVj ay5oIgorCit2b2lkCitjaGVja19tbV9mbXN1YmFkZF9wcyAoX19tMTI4IF9f QSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKK3sKKyAgdW5pb24xMjggYSwg YiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBfX0I7CisgIGMueCA9 IF9fQzsKKyAgZmxvYXQgZFs0XTsKKyAgaW50IGk7CisgIGUueCA9IF9tbV9m bXN1YmFkZF9wcyAoX19BLCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDA7IGkg PCA0OyBpKyspCisgICAgeworICAgICAgZFtpXSA9IGEuYVtpXSAqIGIuYVtp XSArIChpICUgMiA9PSAxID8gLWMuYVtpXSA6IGMuYVtpXSk7CisgICAgfQor ICBpZiAoY2hlY2tfdW5pb24xMjggKGUsIGQpKQorICAgIGFib3J0ICgpOwor fQorCit2b2lkCitjaGVja19tbV9mbXN1YmFkZF9wZCAoX19tMTI4ZCBfX0Es IF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKK3sKKyAgdW5pb24xMjhkIGEs IGIsIGMsIGU7CisgIGEueCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLngg PSBfX0M7CisgIGRvdWJsZSBkWzJdOworICBpbnQgaTsKKyAgZS54ID0gX21t X2Ztc3ViYWRkX3BkIChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMDsg aSA8IDI7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gYS5hW2ldICogYi5h W2ldICsgKGkgJSAyID09IDEgPyAtYy5hW2ldIDogYy5hW2ldKTsKKyAgICB9 CisgIGlmIChjaGVja191bmlvbjEyOGQgKGUsIGQpKQorICAgIGFib3J0ICgp OworfQorCitzdGF0aWMgdm9pZAorZm1hX3Rlc3QgKHZvaWQpCit7CisgIHVu aW9uMTI4IGFbM107CisgIHVuaW9uMTI4ZCBiWzNdOworICBpbnQgaSwgajsK KyAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykKKyAgICB7CisgICAgICBmb3Ig KGogPSAwOyBqIDwgNDsgaisrKQorCWFbaV0uYVtqXSA9IGkgKiBqICsgMy41 OworICAgICAgZm9yIChqID0gMDsgaiA8IDI7IGorKykKKwliW2ldLmFbal0g PSBpICogaiArIDMuNTsKKyAgICB9CisgIGNoZWNrX21tX2Ztc3ViYWRkX3Bk IChiWzBdLngsIGJbMV0ueCwgYlsyXS54KTsKKyAgY2hlY2tfbW1fZm1zdWJh ZGRfcHMgKGFbMF0ueCwgYVsxXS54LCBhWzJdLngpOworfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLWZubWFkZFhY LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtZm5tYWRk WFguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjNh NmM1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvZm1hLWZubWFkZFhYLmMKQEAgLTAsMCArMSwxMDEgQEAKKy8q IHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IGZtYSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZtYSIg fSAqLworCisjaW5jbHVkZSAiZm1hLWNoZWNrLmgiCisKKyNpbmNsdWRlIDx4 ODZpbnRyaW4uaD4KKyNpbmNsdWRlICJtMjU2LWNoZWNrLmgiCisKK3ZvaWQK K2NoZWNrX21tX2ZubWFkZF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwg X19tMTI4IF9fQykKK3sKKyAgdW5pb24xMjggYSwgYiwgYywgZTsKKyAgYS54 ID0gX19BOworICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAgZmxvYXQg ZFs0XTsKKyAgaW50IGk7CisgIGUueCA9IF9tbV9mbm1hZGRfcHMgKF9fQSwg X19CLCBfX0MpOworICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorICAgIHsK KyAgICAgIGRbaV0gPSAtYS5hW2ldICogYi5hW2ldICsgYy5hW2ldOworICAg IH0KKyAgaWYgKGNoZWNrX3VuaW9uMTI4IChlLCBkKSkKKyAgICBhYm9ydCAo KTsKK30KKwordm9pZAorY2hlY2tfbW1fZm5tYWRkX3BkIChfX20xMjhkIF9f QSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICB1bmlvbjEyOGQg YSwgYiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBfX0I7CisgIGMu eCA9IF9fQzsKKyAgZG91YmxlIGRbMl07CisgIGludCBpOworICBlLnggPSBf bW1fZm5tYWRkX3BkIChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMDsg aSA8IDI7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gLWEuYVtpXSAqIGIu YVtpXSArIGMuYVtpXTsKKyAgICB9CisgIGlmIChjaGVja191bmlvbjEyOGQg KGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCit2b2lkCitjaGVja19tbV9m bm1hZGRfc2QgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBf X0MpCit7CisgIHVuaW9uMTI4ZCBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7 CisgIGIueCA9IF9fQjsKKyAgYy54ID0gX19DOworICBkb3VibGUgZFsyXTsK KyAgaW50IGk7CisgIGUueCA9IF9tbV9mbm1hZGRfc2QgKF9fQSwgX19CLCBf X0MpOworICBmb3IgKGkgPSAxOyBpIDwgMjsgaSsrKQorICAgIHsKKyAgICAg IGRbaV0gPSBhLmFbaV07CisgICAgfQorICBkWzBdID0gLWEuYVswXSAqIGIu YVswXSArIGMuYVswXTsKKyAgaWYgKGNoZWNrX3VuaW9uMTI4ZCAoZSwgZCkp CisgICAgYWJvcnQgKCk7Cit9CisKK3ZvaWQKK2NoZWNrX21tX2ZubWFkZF9z cyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKK3sKKyAg dW5pb24xMjggYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBf X0I7CisgIGMueCA9IF9fQzsKKyAgZmxvYXQgZFs0XTsKKyAgaW50IGk7Cisg IGUueCA9IF9tbV9mbm1hZGRfc3MgKF9fQSwgX19CLCBfX0MpOworICBmb3Ig KGkgPSAxOyBpIDwgNDsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFb aV07CisgICAgfQorICBkWzBdID0gLWEuYVswXSAqIGIuYVswXSArIGMuYVsw XTsKKyAgaWYgKGNoZWNrX3VuaW9uMTI4IChlLCBkKSkKKyAgICBhYm9ydCAo KTsKK30KKworc3RhdGljIHZvaWQKK2ZtYV90ZXN0ICh2b2lkKQoreworICB1 bmlvbjEyOCBhWzNdOworICB1bmlvbjEyOGQgYlszXTsKKyAgaW50IGksIGo7 CisgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspCisgICAgeworICAgICAgZm9y IChqID0gMDsgaiA8IDQ7IGorKykKKwlhW2ldLmFbal0gPSBpICogaiArIDMu NTsKKyAgICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKyspCisJYltpXS5hW2pd ID0gaSAqIGogKyAzLjU7CisgICAgfQorICBjaGVja19tbV9mbm1hZGRfcGQg KGJbMF0ueCwgYlsxXS54LCBiWzJdLngpOworICBjaGVja19tbV9mbm1hZGRf c2QgKGJbMF0ueCwgYlsxXS54LCBiWzJdLngpOworICBjaGVja19tbV9mbm1h ZGRfcHMgKGFbMF0ueCwgYVsxXS54LCBhWzJdLngpOworICBjaGVja19tbV9m bm1hZGRfc3MgKGFbMF0ueCwgYVsxXS54LCBhWzJdLngpOworfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLWZubXN1 YlhYLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtZm5t c3ViWFguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k MTdjN2YyCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvZm1hLWZubXN1YlhYLmMKQEAgLTAsMCArMSwxMDEgQEAK Ky8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3Rp dmUtdGFyZ2V0IGZtYSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZt YSIgfSAqLworCisjaW5jbHVkZSAiZm1hLWNoZWNrLmgiCisKKyNpbmNsdWRl IDx4ODZpbnRyaW4uaD4KKyNpbmNsdWRlICJtMjU2LWNoZWNrLmgiCisKK3Zv aWQKK2NoZWNrX21tX2ZubXN1Yl9zZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQg X19CLCBfX20xMjhkIF9fQykKK3sKKyAgdW5pb24xMjhkIGEsIGIsIGMsIGU7 CisgIGEueCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLnggPSBfX0M7Cisg IGRvdWJsZSBkWzJdOworICBpbnQgaTsKKyAgZS54ID0gX21tX2ZubXN1Yl9z ZCAoX19BLCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDE7IGkgPCAyOyBpKysp CisgICAgeworICAgICAgZFtpXSA9IGEuYVtpXTsKKyAgICB9CisgIGRbMF0g PSAtYS5hWzBdICogYi5hWzBdIC0gYy5hWzBdOworICBpZiAoY2hlY2tfdW5p b24xMjhkIChlLCBkKSkKKyAgICBhYm9ydCAoKTsKK30KKwordm9pZAorY2hl Y2tfbW1fZm5tc3ViX3NzIChfX20xMjggX19BLCBfX20xMjggX19CLCBfX20x MjggX19DKQoreworICB1bmlvbjEyOCBhLCBiLCBjLCBlOworICBhLnggPSBf X0E7CisgIGIueCA9IF9fQjsKKyAgYy54ID0gX19DOworICBmbG9hdCBkWzRd OworICBpbnQgaTsKKyAgZS54ID0gX21tX2ZubXN1Yl9zcyAoX19BLCBfX0Is IF9fQyk7CisgIGZvciAoaSA9IDE7IGkgPCA0OyBpKyspCisgICAgeworICAg ICAgZFtpXSA9IGEuYVtpXTsKKyAgICB9CisgIGRbMF0gPSAtYS5hWzBdICog Yi5hWzBdIC0gYy5hWzBdOworICBpZiAoY2hlY2tfdW5pb24xMjggKGUsIGQp KQorICAgIGFib3J0ICgpOworfQorCit2b2lkCitjaGVja19tbV9mbm1zdWJf cHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCit7Cisg IHVuaW9uMTI4IGEsIGIsIGMsIGU7CisgIGEueCA9IF9fQTsKKyAgYi54ID0g X19COworICBjLnggPSBfX0M7CisgIGZsb2F0IGRbNF07CisgIGludCBpOwor ICBlLnggPSBfbW1fZm5tc3ViX3BzIChfX0EsIF9fQiwgX19DKTsKKyAgZm9y IChpID0gMDsgaSA8IDQ7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gLWEu YVtpXSAqIGIuYVtpXSAtIGMuYVtpXTsKKyAgICB9CisgIGlmIChjaGVja191 bmlvbjEyOCAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3ZvaWQKK2No ZWNrX21tX2ZubXN1Yl9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBf X20xMjhkIF9fQykKK3sKKyAgdW5pb24xMjhkIGEsIGIsIGMsIGU7CisgIGEu eCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGRvdWJs ZSBkWzJdOworICBpbnQgaTsKKyAgZS54ID0gX21tX2ZubXN1Yl9wZCAoX19B LCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspCisgICAg eworICAgICAgZFtpXSA9IC1hLmFbaV0gKiBiLmFbaV0gLSBjLmFbaV07Cisg ICAgfQorICBpZiAoY2hlY2tfdW5pb24xMjhkIChlLCBkKSkKKyAgICBhYm9y dCAoKTsKK30KKworc3RhdGljIHZvaWQKK2ZtYV90ZXN0ICh2b2lkKQorewor ICB1bmlvbjEyOCBhWzNdOworICB1bmlvbjEyOGQgYlszXTsKKyAgaW50IGks IGo7CisgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspCisgICAgeworICAgICAg Zm9yIChqID0gMDsgaiA8IDQ7IGorKykKKwlhW2ldLmFbal0gPSBpICogaiAr IDMuNTsKKyAgICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKyspCisJYltpXS5h W2pdID0gaSAqIGogKyAzLjU7CisgICAgfQorICBjaGVja19tbV9mbm1zdWJf cGQgKGJbMF0ueCwgYlsxXS54LCBiWzJdLngpOworICBjaGVja19tbV9mbm1z dWJfc2QgKGJbMF0ueCwgYlsxXS54LCBiWzJdLngpOworICBjaGVja19tbV9m bm1zdWJfcHMgKGFbMF0ueCwgYVsxXS54LCBhWzJdLngpOworICBjaGVja19t bV9mbm1zdWJfc3MgKGFbMF0ueCwgYVsxXS54LCBhWzJdLngpOworfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaTM4Ni5l eHAgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pMzg2LmV4cApp bmRleCAxNjdiNzliLi40M2VkODQxIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9pMzg2LmV4cAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9pMzg2LmV4cApAQCAtMTcyLDYgKzE3Miwy MCBAQCBwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfZm1hNCB7IH0gewog ICAgIH0gIi1PMiAtbWZtYTQiIF0KIH0KIAorIyBSZXR1cm4gMSBpZiBmbWEg aW5zdHJ1Y3Rpb25zIGNhbiBiZSBjb21waWxlZC4KK3Byb2MgY2hlY2tfZWZm ZWN0aXZlX3RhcmdldF9mbWEgeyB9IHsKKyAgICByZXR1cm4gW2NoZWNrX25v X2NvbXBpbGVyX21lc3NhZ2VzIGZtYSBvYmplY3QgeworICAgICAgICB0eXBl ZGVmIGZsb2F0IF9fbTEyOCBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6 ZV9fICgxNikpKTsKKwl0eXBlZGVmIGZsb2F0IF9fdjRzZiBfX2F0dHJpYnV0 ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsKKwlfX20xMjggX21tX21h Y2NfcHMoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKKwl7 CisJICAgIHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl92Zm1hZGRw cyAoKF9fdjRzZilfX0EsCisJCQkJCQkgICAgIChfX3Y0c2YpX19CLAorCQkJ CQkJICAgICAoX192NHNmKV9fQyk7CisJfQorICAgIH0gIi1PMiAtbWZtYSIg XQorfQorCiAjIFJldHVybiAxIGlmIHhvcCBpbnN0cnVjdGlvbnMgY2FuIGJl IGNvbXBpbGVkLgogcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0X3hvcCB7 IH0gewogICAgIHJldHVybiBbY2hlY2tfbm9fY29tcGlsZXJfbWVzc2FnZXMg eG9wIG9iamVjdCB7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9zc2UtMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L3NzZS0xMi5jCmluZGV4IDU5ZTY1OWUuLmEwOTNlNTMgMTAwNjQ0 Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xMi5j CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xMi5j CkBAIC0zLDcgKzMsNyBAQAogICAgcG9wY250aW50cmluLmggYW5kIG1tX21h bGxvYy5oIGFyZSB1c2FibGUKICAgIHdpdGggLU8gLXN0ZD1jODkgLXBlZGFu dGljLWVycm9ycy4gICovCiAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLyog eyBkZy1vcHRpb25zICItTyAtc3RkPWM4OSAtcGVkYW50aWMtZXJyb3JzIC1t YXJjaD1rOCAtbXNzZTRhIC1tM2Rub3cgLW1hdnggLW1mbWE0IC1teG9wIC1t YWVzIC1tcGNsbXVsIC1tcG9wY250IC1tYWJtIC1tbHpjbnQgLW1ibWkgLW10 Ym0gLW1sd3AgLW1mc2dzYmFzZSAtbXJkcm5kIC1tZjE2YyIgfSAqLworLyog eyBkZy1vcHRpb25zICItTyAtc3RkPWM4OSAtcGVkYW50aWMtZXJyb3JzIC1t YXJjaD1rOCAtbXNzZTRhIC1tM2Rub3cgLW1hdnggLW1mbWE0IC1teG9wIC1t YWVzIC1tcGNsbXVsIC1tcG9wY250IC1tYWJtIC1tbHpjbnQgLW1ibWkgLW10 Ym0gLW1sd3AgLW1mc2dzYmFzZSAtbXJkcm5kIC1tZjE2YyAtbWZtYSIgfSAq LwogCiAjaW5jbHVkZSA8eDg2aW50cmluLmg+CiAKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xMy5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTEzLmMKaW5kZXggODM2Mjcy ZC4uOGFiZWEzMjYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L3NzZS0xMy5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L3NzZS0xMy5jCkBAIC0xLDEzICsxLDEzIEBACiAvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLwotLyogeyBkZy1vcHRpb25zICItTzIgLVdlcnJv ci1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtbWFyY2g9azggLW1z c2U0YSAtbTNkbm93IC1tYXZ4IC1tZm1hNCAtbXhvcCAtbWFlcyAtbXBjbG11 bCAtbXBvcGNudCAtbWFibSAtbWx6Y250IC1tYm1pIC1tdGJtIC1tbHdwIC1t ZnNnc2Jhc2UgLW1yZHJuZCAtbWYxNmMiIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1XZXJyb3ItaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24g LW1hcmNoPWs4IC1tc3NlNGEgLW0zZG5vdyAtbWF2eCAtbWZtYTQgLW14b3Ag LW1hZXMgLW1wY2xtdWwgLW1wb3BjbnQgLW1hYm0gLW1semNudCAtbWJtaSAt bXRibSAtbWx3cCAtbWZzZ3NiYXNlIC1tcmRybmQgLW1mMTZjIC1tZm1hIiB9 ICovCiAKICNpbmNsdWRlIDxtbV9tYWxsb2MuaD4KIAogLyogVGVzdCB0aGF0 IHRoZSBpbnRyaW5zaWNzIGNvbXBpbGUgd2l0aCBvcHRpbWl6YXRpb24uICBB bGwgb2YgdGhlbQogICAgYXJlIGRlZmluZWQgYXMgaW5saW5lIGZ1bmN0aW9u cyBpbiB7LHgsZSxwLHQscyx3LGEsYixpfW1taW50cmluLmgsCiAgICBtbTNk bm93LmgsIGZtYTRpbnRyaW4uaCwgeG9waW50cmluLmgsIGFibWludHJpbi5o LCBibWlpbnRyaW4uaCwKLSAgIHRibWludHJpbi5oLCBsd3BpbnRyaW4uaCwg cG9wY250aW50cmluLmggYW5kIG1tX21hbGxvYy5oIHRoYXQKLSAgIHJlZmVy ZW5jZSB0aGUgcHJvcGVyIGJ1aWx0aW4gZnVuY3Rpb25zLgorICAgdGJtaW50 cmluLmgsIGx3cGludHJpbi5oLCBwb3BjbnRpbnRyaW4uaCwgZm1haW50cmlu LmggYW5kIG1tX21hbGxvYy5oIAorICAgdGhhdCByZWZlcmVuY2UgdGhlIHBy b3BlciBidWlsdGluIGZ1bmN0aW9ucy4KIAogICAgRGVmaW5pbmcgYXdheSAi ZXh0ZXJuIiBhbmQgIl9faW5saW5lIiByZXN1bHRzIGluIGFsbCBvZiB0aGVt IGJlaW5nCiAgICBjb21waWxlZCBhcyBwcm9wZXIgZnVuY3Rpb25zLiAgKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3Nz ZS0xNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTE0 LmMKaW5kZXggYWY0Mjc4MS4uMzQ0MDJmZiAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTE0LmMKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTE0LmMKQEAgLTEsMTIgKzEs MTMgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9wdGlv bnMgIi1PMCAtV2Vycm9yLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9u IC1tYXJjaD1rOCAtbXNzZTRhIC1tM2Rub3cgLW1hdnggLW1mbWE0IC1teG9w IC1tYWVzIC1tcGNsbXVsIC1tcG9wY250IC1tYWJtIC1tbHpjbnQgLW1ibWkg LW10Ym0gLW1sd3AgLW1mc2dzYmFzZSAtbXJkcm5kIC1tZjE2YyIgfSAqLwor LyogeyBkZy1vcHRpb25zICItTzAgLVdlcnJvci1pbXBsaWNpdC1mdW5jdGlv bi1kZWNsYXJhdGlvbiAtbWFyY2g9azggLW1zc2U0YSAtbTNkbm93IC1tYXZ4 IC1tZm1hNCAtbXhvcCAtbWFlcyAtbXBjbG11bCAtbXBvcGNudCAtbWFibSAt bWx6Y250IC1tYm1pIC1tdGJtIC1tbHdwIC1tZnNnc2Jhc2UgLW1yZHJuZCAt bWYxNmMgLW1mbWEiIH0gKi8KIAogI2luY2x1ZGUgPG1tX21hbGxvYy5oPgog CiAvKiBUZXN0IHRoYXQgdGhlIGludHJpbnNpY3MgY29tcGlsZSB3aXRob3V0 IG9wdGltaXphdGlvbi4gIEFsbCBvZiB0aGVtIGFyZQogICAgZGVmaW5lZCBh cyBpbmxpbmUgZnVuY3Rpb25zIGluIHsseCxlLHAsdCxzLHcsYSxiLGl9bW1p bnRyaW4uaCwgbW0zZG5vdy5oLAotICAgZm1hNGludHJpbi5oLCB4b3BpbnRy aW4uaCwgYWJtaW50cmluLmgsIGJtaWludHJpbi5oLCB0Ym1pbnRyaW4uaCwK LSAgIGx3cGludHJpbi5oIGFuZCBtbV9tYWxsb2MuaCB0aGF0IHJlZmVyZW5j ZSB0aGUgcHJvcGVyIGJ1aWx0aW4gZnVuY3Rpb25zLgorICAgZm1hNGludHJp bi5oLCB4b3BpbnRyaW4uaCwgYWJtaW50cmluLmgsIGJtaWludHJpbi5oLCB0 Ym1pbnRyaW4uaCwgCisgICBsd3BpbnRyaW4uaCwgZm1haW50cmluLmggYW5k IG1tX21hbGxvYy5oIHRoYXQgcmVmZXJlbmNlIHRoZSBwcm9wZXIgCisgICBi dWlsdGluIGZ1bmN0aW9ucy4KIAogICAgRGVmaW5pbmcgYXdheSAiZXh0ZXJu IiBhbmQgIl9faW5saW5lIiByZXN1bHRzIGluIGFsbCBvZiB0aGVtIGJlaW5n IGNvbXBpbGVkCiAgICBhcyBwcm9wZXIgZnVuY3Rpb25zLiAgKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0yMi5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTIyLmMKaW5k ZXggMGE3YWYwMy4uZjgwOTZhYyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTIyLmMKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTIyLmMKQEAgLTcsOCArNyw4IEBACiAv KiBUZXN0IHRoYXQgdGhlIGludHJpbnNpY3MgY29tcGlsZSB3aXRoIG9wdGlt aXphdGlvbi4gIEFsbCBvZiB0aGVtCiAgICBhcmUgZGVmaW5lZCBhcyBpbmxp bmUgZnVuY3Rpb25zIGluIHsseCxlLHAsdCxzLHcsYSxiLGl9bW1pbnRyaW4u aCwKICAgIG1tM2Rub3cuaCwgZm1hNGludHJpbi5oLCB4b3BpbnRyaW4uaCwg YWJtaW50cmluLmgsIGJtaWludHJpbi5oLAotICAgdGJtaW50cmluLmgsIGx3 cGludHJpbi5oLCBwb3BjbnRpbnRyaW4uaCBhbmQgbW1fbWFsbG9jLmggdGhh dAotICAgcmVmZXJlbmNlIHRoZSBwcm9wZXIgYnVpbHRpbiBmdW5jdGlvbnMu CisgICB0Ym1pbnRyaW4uaCwgbHdwaW50cmluLmgsIHBvcGNudGludHJpbi5o LCBmbWFpbnRyaW4uaCBhbmQgbW1fbWFsbG9jLmggCisgICB0aGF0IHJlZmVy ZW5jZSB0aGUgcHJvcGVyIGJ1aWx0aW4gZnVuY3Rpb25zLgogCiAgICBEZWZp bmluZyBhd2F5ICJleHRlcm4iIGFuZCAiX19pbmxpbmUiIHJlc3VsdHMgaW4g YWxsIG9mIHRoZW0gYmVpbmcKICAgIGNvbXBpbGVkIGFzIHByb3BlciBmdW5j dGlvbnMuICAqLwpAQCAtMjIwLDkgKzIyMCw5IEBAIHRlc3RfMiAoX21tX2Ns bXVsZXBpNjRfc2kxMjgsIF9fbTEyOGksIF9fbTEyOGksIF9fbTEyOGksIDEp CiAjZW5kaWYKICNpbmNsdWRlIDxwb3BjbnRpbnRyaW4uaD4KIAotLyogeDg2 aW50cmluLmggKEZNQTQvWE9QL0xXUC9CTUkvVEJNL0xaQ05UKS4gKi8KKy8q IHg4NmludHJpbi5oIChGTUE0L1hPUC9MV1AvQk1JL1RCTS9MWkNOVC9GTUEp LiAqLwogI2lmZGVmIERJRkZFUkVOVF9QUkFHTUFTCi0jcHJhZ21hIEdDQyB0 YXJnZXQgKCJmbWE0LHhvcCxsd3AsYm1pLHRibSxsemNudCIpCisjcHJhZ21h IEdDQyB0YXJnZXQgKCJmbWE0LHhvcCxsd3AsYm1pLHRibSxsemNudCxmbWEi KQogI2VuZGlmCiAjaW5jbHVkZSA8eDg2aW50cmluLmg+CiAvKiB4b3BpbnRy aW4uaCAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvc3NlLTIzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9zc2UtMjMuYwppbmRleCA4ZDBjMzIzMy4uM2YxMjJmYiAxMDA2NDQKLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTIzLmMKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTIzLmMKQEAg LTYsOCArNiw4IEBACiAvKiBUZXN0IHRoYXQgdGhlIGludHJpbnNpY3MgY29t cGlsZSB3aXRoIG9wdGltaXphdGlvbi4gIEFsbCBvZiB0aGVtCiAgICBhcmUg ZGVmaW5lZCBhcyBpbmxpbmUgZnVuY3Rpb25zIGluIHsseCxlLHAsdCxzLHcs YSxiLGl9bW1pbnRyaW4uaCwKICAgIG1tM2Rub3cuaCwgZm1hNGludHJpbi5o LCB4b3BpbnRyaW4uaCwgYWJtaW50cmluLmgsIGJtaWludHJpbi5oLAotICAg dGJtaW50cmluLmgsIGx3cGludHJpbi5oLCBwb3BjbnRpbnRyaW4uaCBhbmQg bW1fbWFsbG9jLmggdGhhdAotICAgcmVmZXJlbmNlIHRoZSBwcm9wZXIgYnVp bHRpbiBmdW5jdGlvbnMuCisgICB0Ym1pbnRyaW4uaCwgbHdwaW50cmluLmgs IHBvcGNudGludHJpbi5oLCBmbWFpbnRyaW4uaCBhbmQgbW1fbWFsbG9jLmgg CisgICB0aGF0IHJlZmVyZW5jZSB0aGUgcHJvcGVyIGJ1aWx0aW4gZnVuY3Rp b25zLgogCiAgICBEZWZpbmluZyBhd2F5ICJleHRlcm4iIGFuZCAiX19pbmxp bmUiIHJlc3VsdHMgaW4gYWxsIG9mIHRoZW0gYmVpbmcKICAgIGNvbXBpbGVk IGFzIHByb3BlciBmdW5jdGlvbnMuICAqLwpAQCAtMTQ3LDcgKzE0Nyw3IEBA CiAjZGVmaW5lIF9fYnVpbHRpbl9pYTMyX2JleHRyaV91MzIoWCwgWSkgX19i dWlsdGluX2lhMzJfYmV4dHJfdTMyIChYLCAxKQogI2RlZmluZSBfX2J1aWx0 aW5faWEzMl9iZXh0cmlfdTY0KFgsIFkpIF9fYnVpbHRpbl9pYTMyX2JleHRy X3U2NCAoWCwgMSkKIAotI3ByYWdtYSBHQ0MgdGFyZ2V0ICgic3NlNGEsM2Ru b3csYXZ4LGZtYTQseG9wLGFlcyxwY2xtdWwscG9wY250LGFibSxsemNudCxi bWksdGJtLGx3cCxmc2dzYmFzZSxyZHJuZCxmMTZjIikKKyNwcmFnbWEgR0ND IHRhcmdldCAoInNzZTRhLDNkbm93LGF2eCxmbWE0LHhvcCxhZXMscGNsbXVs LHBvcGNudCxhYm0sbHpjbnQsYm1pLHRibSxsd3AsZnNnc2Jhc2UscmRybmQs ZjE2YyxmbWEiKQogI2luY2x1ZGUgPHdtbWludHJpbi5oPgogI2luY2x1ZGUg PHNtbWludHJpbi5oPgogI2luY2x1ZGUgPG1tM2Rub3cuaD4K --20cf303f63f6b8d5c804abb5d456--