From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 99132 invoked by alias); 8 Dec 2015 16:22:18 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 99123 invoked by uid 89); 8 Dec 2015 16:22:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.2 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ob0-f178.google.com Received: from mail-ob0-f178.google.com (HELO mail-ob0-f178.google.com) (209.85.214.178) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 08 Dec 2015 16:22:11 +0000 Received: by obciw8 with SMTP id iw8so15967185obc.1 for ; Tue, 08 Dec 2015 08:22:08 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.182.19.131 with SMTP id f3mr409518obe.26.1449591728764; Tue, 08 Dec 2015 08:22:08 -0800 (PST) Received: by 10.76.77.99 with HTTP; Tue, 8 Dec 2015 08:22:08 -0800 (PST) Date: Tue, 08 Dec 2015 16:22:00 -0000 Message-ID: Subject: PING^1: [PATCH] Add TYPE_EMPTY_RECORD for C++ empty class From: "H.J. Lu" To: Richard Biener Cc: Jason Merrill , GCC Patches Content-Type: multipart/mixed; boundary=001a11c213cc102479052665602e X-IsSubscribed: yes X-SW-Source: 2015-12/txt/msg00891.txt.bz2 --001a11c213cc102479052665602e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 3220 On Mon, Nov 23, 2015 at 12:53 PM, H.J. Lu wrote: > On Mon, Nov 23, 2015 at 1:57 AM, Richard Biener > wrote: >> On Sat, Nov 21, 2015 at 12:46 AM, H.J. Lu wrote: >>> On Fri, Nov 20, 2015 at 2:17 PM, Jason Merrill wrote: >>>> On 11/20/2015 01:52 PM, H.J. Lu wrote: >>>>> >>>>> On Tue, Nov 17, 2015 at 4:22 AM, Richard Biener >>>>> wrote: >>>>>> >>>>>> On Tue, Nov 17, 2015 at 12:01 PM, H.J. Lu wrot= e: >>>>>>> >>>>>>> Empty record should be returned and passed the same way in C and C+= +. >>>>>>> This patch adds LANG_HOOKS_EMPTY_RECORD_P for C++ empty class, which >>>>>>> defaults to return false. For C++, LANG_HOOKS_EMPTY_RECORD_P is de= fined >>>>>>> to is_really_empty_class, which returns true for C++ empty classes.= For >>>>>>> LTO, we stream out a bit to indicate if a record is empty and we st= ore >>>>>>> it in TYPE_LANG_FLAG_0 when streaming in. get_ref_base_and_extent = is >>>>>>> changed to set bitsize to 0 for empty records. Middle-end and x86 >>>>>>> backend are updated to ignore empty records for parameter passing a= nd >>>>>>> function value return. Other targets may need similar changes. >>>>>> >>>>>> >>>>>> Please avoid a new langhook for this and instead claim a bit in >>>>>> tree_type_common >>>>>> like for example restrict_flag (double-check it is unused for >>>>>> non-pointers). >>>>> >>>>> >>>>> There is no bit in tree_type_common I can overload. restrict_flag is >>>>> checked for non-pointers to issue an error when it is used on >>>>> non-pointers: >>>>> >>>>> >>>>> /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/template/qual= ttp20.C:19:38: >>>>> error: =E2=80=98__restrict__=E2=80=99 qualifiers cannot be applied to= =E2=80=98AS::L=E2=80=99 >>>>> typedef typename T::L __restrict__ r;// { dg-error "'__restrict__' >>>>> qualifiers cannot" "" } >>>> >>>> >>>> The C++ front end only needs to check TYPE_RESTRICT for this purpose on >>>> front-end-specific type codes like TEMPLATE_TYPE_PARM; cp_type_quals c= ould >>>> handle that specifically if you change TYPE_RESTRICT to only apply to >>>> pointers. >>>> >>> >>> restrict_flag is also checked in this case: >>> >>> [hjl@gnu-6 gcc]$ cat x.i >>> struct dummy { }; >>> >>> struct dummy >>> foo (struct dummy __restrict__ i) >>> { >>> return i; >>> } >>> [hjl@gnu-6 gcc]$ gcc -S x.i -Wall >>> x.i:4:13: error: invalid use of =E2=80=98restrict=E2=80=99 >>> foo (struct dummy __restrict__ i) >>> ^ >>> x.i:4:13: error: invalid use of =E2=80=98restrict=E2=80=99 >>> [hjl@gnu-6 gcc]$ >>> >>> restrict_flag can't also be used to indicate `i' is an empty record. >> >> I'm sure this error can be done during parsing w/o relying on TYPE_RESTR= ICT. >> >> But well, use any other free bit (but do not enlarge >> tree_type_common). Eventually >> you can free up a bit by putting sth into type_lang_specific currently >> using bits >> in tree_type_common. > > There are no bits in tree_type_common I can move. Instead, > this patch overloads side_effects_flag in tree_base. Tested on > Linux/x86-64. OK for trunk? > > Thanks. > > -- > H.J. --=20 H.J. --001a11c213cc102479052665602e Content-Type: text/x-patch; charset=US-ASCII; name="0001-Add-TYPE_EMPTY_RECORD-for-C-empty-class.patch" Content-Disposition: attachment; filename="0001-Add-TYPE_EMPTY_RECORD-for-C-empty-class.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ihxlhfa81 Content-length: 43274 RnJvbSAxZTNlNmVkNDJlZDg2Yjc0ZDAxYmQzYTZiODY5YzE1ZGJhOTY0YzIx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgTm92IDIwMTUgMTM6 MTk6MDUgLTA4MDAKU3ViamVjdDogW1BBVENIXSBBZGQgVFlQRV9FTVBUWV9S RUNPUkQgZm9yIEMrKyBlbXB0eSBjbGFzcwoKRW1wdHkgcmVjb3JkIHNob3Vs ZCBiZSByZXR1cm5lZCBhbmQgcGFzc2VkIHRoZSBzYW1lIHdheSBpbiBDIGFu ZCBDKysuClRoaXMgcGF0Y2ggb3ZlcmxvYWRzIGEgYml0LCBzaWRlX2VmZmVj dHNfZmxhZywgaW4gdHJlZV9iYXNlIGZvciBDKysKZW1wdHkgY2xhc3MuICBN aWRkbGUtZW5kIGFuZCB4ODYgYmFja2VuZCBhcmUgdXBkYXRlZCB0byBpZ25v cmUgZW1wdHkKcmVjb3JkcyBmb3IgcGFyYW1ldGVyIHBhc3NpbmcgYW5kIGZ1 bmN0aW9uIHZhbHVlIHJldHVybi4gIE90aGVyIHRhcmdldHMKbWF5IG5lZWQg c2ltaWxhciBjaGFuZ2VzLgoKZ2V0X3JlZl9iYXNlX2FuZF9leHRlbnQgaXMg Y2hhbmdlZCB0byBzZXQgYml0c2l6ZSB0byAwIGZvciBlbXB0eSByZWNvcmRz CnNvIHRoYXQgd2hlbiByZWZfbWF5YmVfdXNlZF9ieV9jYWxsX3BfMSBjYWxs cyBnZXRfcmVmX2Jhc2VfYW5kX2V4dGVudCB0bwpnZXQgMCBhcyB0aGUgbWF4 aW11bSBzaXplIG9uIGVtcHR5IHJlY29yZC4gIE90aGVyd2lzZSwgZmluZF90 YWlsX2NhbGxzCndvbid0IHBlcmZvcm0gdGFpbCBjYWxsIG9wdGltaXphdGlv biBmb3IgZnVuY3Rpb25zIHdpdGggZW1wdHkgcmVjb3JkCnBhcmFtZXRlcnMs IGFzIHNob3duIGluIGcrKy5kZy9wcjYwMzM2LTEuQyBhbmQgZysrLmRnL3By NjAzMzYtMi5DLgoKZ2NjLwoKCVBSIGMrKy82MDMzNgoJUFIgbWlkZGxlLWVu ZC82NzIzOQoJUFIgdGFyZ2V0LzY4MzU1CgkqIGNhbGxzLmMgKGluaXRpYWxp emVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBSZXBsYWNlCgl0YXJnZXRtLmNh bGxzLmZ1bmN0aW9uX2FyZywgdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9pbmNv bWluZ19hcmcKCWFuZCB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19hZHZh bmNlIHdpdGggZnVuY3Rpb25fYXJnLAoJZnVuY3Rpb25faW5jb21pbmdfYXJn IGFuZCBmdW5jdGlvbl9hcmdfYWR2YW5jZS4KCShleHBhbmRfY2FsbCk6IExp a2V3aXNlLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBMaWtld2lz ZS4KCShzdG9yZV9vbmVfYXJnKTogVXNlIDAgZm9yIGVtcHR5IHJlY29yZCBz aXplLiAgRG9uJ3QKCXB1c2ggMCBzaXplIGFyZ3VtZW50IG9udG8gc3RhY2su CgkobXVzdF9wYXNzX2luX3N0YWNrX3Zhcl9zaXplX29yX3BhZCk6IFJldHVy biBmYWxzZSBmb3IgZW1wdHkKCXJlY29yZC4KCSogZHNlLmMgKGdldF9jYWxs X2FyZ3MpOiBSZXBsYWNlIHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnCglh bmQgdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9hcmdfYWR2YW5jZSB3aXRoIGZ1 bmN0aW9uX2FyZyBhbmQKCWZ1bmN0aW9uX2FyZ19hZHZhbmNlLgoJKiBleHBy LmMgKGJsb2NrX21vdmVfbGliY2FsbF9zYWZlX2Zvcl9jYWxsX3Bhcm0pOiBM aWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3ApOiBS ZXBsYWNlCgl0YXJnZXRtLmNhbGxzLnJldHVybl9pbl9tZW1vcnkgd2l0aCBy ZXR1cm5faW5fbWVtb3J5LgoJKGFzc2lnbl9wYXJtX2ZpbmRfZW50cnlfcnRs KTogUmVwbGFjZQoJdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9pbmNvbWluZ19h cmcgd2l0aCBmdW5jdGlvbl9pbmNvbWluZ19hcmcuCgkoYXNzaWduX3Bhcm1z KTogUmVwbGFjZSB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19hZHZhbmNl IHdpdGgKCWZ1bmN0aW9uX2FyZ19hZHZhbmNlLgoJKGdpbXBsaWZ5X3BhcmFt ZXRlcnMpOiBSZXBsYWNlIHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnX2Fk dmFuY2UKCXdpdGggZnVuY3Rpb25fYXJnX2FkdmFuY2UuCgkobG9jYXRlX2Fu ZF9wYWRfcGFybSk6IFVzZSAwIGZvciBlbXB0eSByZWNvcmQgc2l6ZS4KCShm dW5jdGlvbl9hcmdfYWR2YW5jZSk6IE5ldyB3cmFwcGVyIGZ1bmN0aW9uLgoJ KGZ1bmN0aW9uX2FyZyk6IExpa2V3aXNlLgoJKGZ1bmN0aW9uX2luY29taW5n X2FyZyk6IExpa2V3aXNlLgoJKHJldHVybl9pbl9tZW1vcnkpOiBMaWtld2lz ZS4KCSogbHRvLXN0cmVhbWVyLW91dC5jIChoYXNoX3RyZWUpOiBDYWxsIGhz dGF0ZS5hZGRfZmxhZyB3aXRoCglUWVBFX0VNUFRZX1JFQ09SRCBmb3IgdHlw ZXMuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IEFsc28gaGFuZGxl IFRZUEVfRU1QVFlfUkVDT1JELgoJKiB1YnNhbi5jICh1YnNhbl90eXBlX2Rl c2NyaXB0b3IpOiBMaWtld2lzZS4KCSogdGFyZ2V0LmggKGZ1bmN0aW9uX2Fy Z19hZHZhbmNlKTogTmV3IHByb3RvdHlwZS4KCShmdW5jdGlvbl9hcmcpOiBM aWtld2lzZS4KCShmdW5jdGlvbl9pbmNvbWluZ19hcmcpOiBMaWtld2lzZS4K CShyZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIHRhcmdob29rcy5j IChzdGRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBVc2UgMCBmb3IgZW1wdHkg cmVjb3JkCglzaXplLgoJKiB0cmVlLWRmYS5jIChnZXRfcmVmX2Jhc2VfYW5k X2V4dGVudCk6IExpa2V3aXNlLgoJKiB0cmVlLWNvcmUuaCAodHJlZV9iYXNl KTogTWVudGlvbiBUWVBFX0VNUFRZX1JFQ09SRCBpbiBjb21tZW50cwoJZm9y IHNpZGVfZWZmZWN0c19mbGFnLgoJKiB0cmVlLXN0cmVhbWVyLWluLmMgKHVu cGFja190c19iYXNlX3ZhbHVlX2ZpZWxkcyk6IFN0cmVhbSBpbgoJVFlQRV9F TVBUWV9SRUNPUkQgZm9yIHR5cGVzLgoJKiB0cmVlLXN0cmVhbWVyLW91dC5j IChwYWNrX3RzX2Jhc2VfdmFsdWVfZmllbGRzKTogU3RyZWFtIG91dAoJVFlQ RV9FTVBUWV9SRUNPUkQgZm9yIHR5cGVzLgoJKiB0cmVlLmggKFRZUEVfRU1Q VFlfUkVDT1JEKTogTmV3LgoJKHR5cGVfaXNfZW1wdHlfcmVjb3JkX3ApOiBO ZXcgc3RhdGljIGlubGluZSBmdW5jdGlvbi4KCSogdmFyLXRyYWNraW5nLmMg KHByZXBhcmVfY2FsbF9hcmd1bWVudHMpOiBSZXBsYWNlCgl0YXJnZXRtLmNh bGxzLmZ1bmN0aW9uX2FyZyBhbmQgdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9h cmdfYWR2YW5jZQoJd2l0aCBmdW5jdGlvbl9hcmcgYW5kIGZ1bmN0aW9uX2Fy Z19hZHZhbmNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZ2ltcGxp ZnlfdmFfYXJnKTogVXNlIDAgZm9yIGVtcHR5CglyZWNvcmQgc2l6ZS4KCmdj Yy9jCgoJUFIgYysrLzYwMzM2CglQUiBtaWRkbGUtZW5kLzY3MjM5CglQUiB0 YXJnZXQvNjgzNTUKCSogYy1hdXgtaW5mby5jIChnZW5fdHlwZSk6IEFkZCBU WVBFX0VNUFRZX1JFQ09SRCBjaGVjay4KCmdjYy9jcC8KCglQUiBjKysvNjAz MzYKCVBSIG1pZGRsZS1lbmQvNjcyMzkKCVBSIHRhcmdldC82ODM1NQoJKiBj bGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBTZXQgVFlQRV9FTVBUWV9SRUNP UkQgd2l0aCByZXR1cm4KCXZhbHVlIGZyb20gaXNfcmVhbGx5X2VtcHR5X2Ns YXNzICgpLgoKZ2NjL2x0by8KCglQUiBjKysvNjAzMzYKCVBSIG1pZGRsZS1l bmQvNjcyMzkKCVBSIHRhcmdldC82ODM1NQoJKiBsdG8uYyAoY29tcGFyZV90 cmVlX3NjY3NfMSk6IENhbGwgY29tcGFyZV92YWx1ZXMgd2l0aAoJVFlQRV9F TVBUWV9SRUNPUkQgZm9yIHR5cGVzLgoKZ2NjL3Rlc3RzdWl0ZS8KCglQUiBj KysvNjAzMzYKCVBSIG1pZGRsZS1lbmQvNjcyMzkKCVBSIHRhcmdldC82ODM1 NQoJKiBnKysuZGcvYWJpL2VtcHR5MTIuQzogTmV3IHRlc3QuCgkqIGcrKy5k Zy9hYmkvZW1wdHkxMi5oOiBMaWtld2lzZS4KCSogZysrLmRnL2FiaS9lbXB0 eTEyYS5jOiBMaWtld2lzZS4KCSogZysrLmRnL3ByNjAzMzYtMS5DOiBMaWtl d2lzZS4KCSogZysrLmRnL3ByNjAzMzYtMi5DOiBMaWtld2lzZS4KCSogZysr LmRnL3ByNjgzNTUuQzogTGlrZXdpc2UuCi0tLQogZ2NjL2MvYy1hdXgtaW5m by5jICAgICAgICAgICAgICAgICAgfCAgMiArCiBnY2MvY2FsbHMuYyAgICAg ICAgICAgICAgICAgICAgICAgICB8IDc2ICsrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLQogZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAg ICAgICAgICAgfCAgMyArLQogZ2NjL2NwL2NsYXNzLmMgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArCiBnY2MvZHNlLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA0ICstCiBnY2MvZXhwci5jICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA1ICstLQogZ2NjL2Z1bmN0aW9uLmMgICAgICAgICAgICAg ICAgICAgICAgfCA3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tCiBnY2MvbHRvLXN0cmVhbWVyLW91dC5jICAgICAgICAgICAgICB8 ICAyICsKIGdjYy9sdG8vbHRvLmMgICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKwogZ2NjL3ByaW50LXRyZWUuYyAgICAgICAgICAgICAgICAgICAgfCAg MyArKwogZ2NjL3RhcmdldC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAg OCArKysrCiBnY2MvdGFyZ2hvb2tzLmMgICAgICAgICAgICAgICAgICAgICB8 ICA1ICsrLQogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTIuQyAg fCAxNyArKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5 MTIuaCAgfCAgOSArKysrKwogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2Vt cHR5MTJhLmMgfCAgNiArKysKIGdjYy90ZXN0c3VpdGUvZysrLmRnL3ByNjAz MzYtMS5DICAgIHwgMTcgKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZysrLmRn L3ByNjAzMzYtMi5DICAgIHwgMjggKysrKysrKysrKysrKwogZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvcHI2ODM1NS5DICAgICAgfCAyNCArKysrKysrKysrKysK IGdjYy90cmVlLWNvcmUuaCAgICAgICAgICAgICAgICAgICAgIHwgIDMgKysK IGdjYy90cmVlLWRmYS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKwog Z2NjL3RyZWUtc3RyZWFtZXItaW4uYyAgICAgICAgICAgICAgfCAgNSArKy0K IGdjYy90cmVlLXN0cmVhbWVyLW91dC5jICAgICAgICAgICAgIHwgIDUgKyst CiBnY2MvdHJlZS5oICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsr KysrKwogZ2NjL3Vic2FuLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MyArLQogZ2NjL3Zhci10cmFja2luZy5jICAgICAgICAgICAgICAgICAgfCAx OCArKysrLS0tLS0KIDI1IGZpbGVzIGNoYW5nZWQsIDI3NCBpbnNlcnRpb25z KCspLCA2NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2crKy5kZy9hYmkvZW1wdHkxMi5DCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTIuaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9lbXB0 eTEyYS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvcHI2MDMzNi0xLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2crKy5kZy9wcjYwMzM2LTIuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZysrLmRnL3ByNjgzNTUuQwoKZGlmZiAtLWdpdCBhL2dj Yy9jL2MtYXV4LWluZm8uYyBiL2djYy9jL2MtYXV4LWluZm8uYwppbmRleCA3 OWQ5ODUxLi45M2IwMDFiIDEwMDY0NAotLS0gYS9nY2MvYy9jLWF1eC1pbmZv LmMKKysrIGIvZ2NjL2MvYy1hdXgtaW5mby5jCkBAIC00MzMsNiArNDMzLDgg QEAgZ2VuX3R5cGUgKGNvbnN0IGNoYXIgKnJldF92YWwsIHRyZWUgdCwgZm9y bWFsc19zdHlsZSBzdHlsZSkKICAgICByZXRfdmFsID0gY29uY2F0ICgidm9s YXRpbGUgIiwgcmV0X3ZhbCwgTlVMTCk7CiAgIGlmIChUWVBFX1JFU1RSSUNU ICh0KSkKICAgICByZXRfdmFsID0gY29uY2F0ICgicmVzdHJpY3QgIiwgcmV0 X3ZhbCwgTlVMTCk7CisgIGlmIChUWVBFX0VNUFRZX1JFQ09SRCAodCkpCisg ICAgcmV0X3ZhbCA9IGNvbmNhdCAoImVtcHR5LXJlY29yZCAiLCByZXRfdmFs LCBOVUxMKTsKICAgcmV0dXJuIHJldF92YWw7CiB9CiAKZGlmZiAtLWdpdCBh L2djYy9jYWxscy5jIGIvZ2NjL2NhbGxzLmMKaW5kZXggYjU2NTU2YS4uYTgx Y2IzZCAxMDA2NDQKLS0tIGEvZ2NjL2NhbGxzLmMKKysrIGIvZ2NjL2NhbGxz LmMKQEAgLTEzOTEsOCArMTM5MSw4IEBAIGluaXRpYWxpemVfYXJndW1lbnRf aW5mb3JtYXRpb24gKGludCBudW1fYWN0dWFscyBBVFRSSUJVVEVfVU5VU0VE LAogICAgICAgYXJnc1tpXS51bnNpZ25lZHAgPSB1bnNpZ25lZHA7CiAgICAg ICBhcmdzW2ldLm1vZGUgPSBtb2RlOwogCi0gICAgICBhcmdzW2ldLnJlZyA9 IHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgbW9k ZSwgdHlwZSwKLQkJCQkJCWFyZ3BvcyA8IG5fbmFtZWRfYXJncyk7CisgICAg ICBhcmdzW2ldLnJlZyA9IGZ1bmN0aW9uX2FyZyAoYXJnc19zb19mYXIsIG1v ZGUsIHR5cGUsCisJCQkJICBhcmdwb3MgPCBuX25hbWVkX2FyZ3MpOwogCiAg ICAgICBpZiAoYXJnc1tpXS5yZWcgJiYgQ09OU1RfSU5UX1AgKGFyZ3NbaV0u cmVnKSkKIAl7CkBAIC0xNDA1LDggKzE0MDUsOCBAQCBpbml0aWFsaXplX2Fy Z3VtZW50X2luZm9ybWF0aW9uIChpbnQgbnVtX2FjdHVhbHMgQVRUUklCVVRF X1VOVVNFRCwKIAkgYXJndW1lbnRzIGhhdmUgdG8gZ28gaW50byB0aGUgaW5j b21pbmcgcmVnaXN0ZXJzLiAgKi8KICAgICAgIGlmICh0YXJnZXRtLmNhbGxz LmZ1bmN0aW9uX2luY29taW5nX2FyZyAhPSB0YXJnZXRtLmNhbGxzLmZ1bmN0 aW9uX2FyZykKIAlhcmdzW2ldLnRhaWxfY2FsbF9yZWcKLQkgID0gdGFyZ2V0 bS5jYWxscy5mdW5jdGlvbl9pbmNvbWluZ19hcmcgKGFyZ3Nfc29fZmFyLCBt b2RlLCB0eXBlLAotCQkJCQkJIGFyZ3BvcyA8IG5fbmFtZWRfYXJncyk7CisJ ICA9IGZ1bmN0aW9uX2luY29taW5nX2FyZyAoYXJnc19zb19mYXIsIG1vZGUs IHR5cGUsCisJCQkJICAgYXJncG9zIDwgbl9uYW1lZF9hcmdzKTsKICAgICAg IGVsc2UKIAlhcmdzW2ldLnRhaWxfY2FsbF9yZWcgPSBhcmdzW2ldLnJlZzsK IApAQCAtMTQ2Nyw4ICsxNDY3LDggQEAgaW5pdGlhbGl6ZV9hcmd1bWVudF9p bmZvcm1hdGlvbiAoaW50IG51bV9hY3R1YWxzIEFUVFJJQlVURV9VTlVTRUQs CiAgICAgICAvKiBJbmNyZW1lbnQgQVJHU19TT19GQVIsIHdoaWNoIGhhcyBp bmZvIGFib3V0IHdoaWNoIGFyZy1yZWdpc3RlcnMKIAkgaGF2ZSBiZWVuIHVz ZWQsIGV0Yy4gICovCiAKLSAgICAgIHRhcmdldG0uY2FsbHMuZnVuY3Rpb25f YXJnX2FkdmFuY2UgKGFyZ3Nfc29fZmFyLCBUWVBFX01PREUgKHR5cGUpLAot CQkJCQkgIHR5cGUsIGFyZ3BvcyA8IG5fbmFtZWRfYXJncyk7CisgICAgICBm dW5jdGlvbl9hcmdfYWR2YW5jZSAoYXJnc19zb19mYXIsIFRZUEVfTU9ERSAo dHlwZSksIHR5cGUsCisJCQkgICAgYXJncG9zIDwgbl9uYW1lZF9hcmdzKTsK ICAgICB9CiB9CiAKQEAgLTMzMjAsMTQgKzMzMjAsMTEgQEAgZXhwYW5kX2Nh bGwgKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBpbnQgaWdub3JlKQogICAgICAg LyogU2V0IHVwIG5leHQgYXJndW1lbnQgcmVnaXN0ZXIuICBGb3Igc2libGlu ZyBjYWxscyBvbiBtYWNoaW5lcwogCSB3aXRoIHJlZ2lzdGVyIHdpbmRvd3Mg dGhpcyBzaG91bGQgYmUgdGhlIGluY29taW5nIHJlZ2lzdGVyLiAgKi8KICAg ICAgIGlmIChwYXNzID09IDApCi0JbmV4dF9hcmdfcmVnID0gdGFyZ2V0bS5j YWxscy5mdW5jdGlvbl9pbmNvbWluZ19hcmcgKGFyZ3Nfc29fZmFyLAotCQkJ CQkJCSAgICBWT0lEbW9kZSwKLQkJCQkJCQkgICAgdm9pZF90eXBlX25vZGUs Ci0JCQkJCQkJICAgIHRydWUpOworCW5leHRfYXJnX3JlZyA9IGZ1bmN0aW9u X2luY29taW5nX2FyZyAoYXJnc19zb19mYXIsIFZPSURtb2RlLAorCQkJCQkg ICAgICB2b2lkX3R5cGVfbm9kZSwgdHJ1ZSk7CiAgICAgICBlbHNlCi0JbmV4 dF9hcmdfcmVnID0gdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9hcmcgKGFyZ3Nf c29fZmFyLAotCQkJCQkJICAgVk9JRG1vZGUsIHZvaWRfdHlwZV9ub2RlLAot CQkJCQkJICAgdHJ1ZSk7CisJbmV4dF9hcmdfcmVnID0gZnVuY3Rpb25fYXJn IChhcmdzX3NvX2ZhciwgVk9JRG1vZGUsCisJCQkJICAgICB2b2lkX3R5cGVf bm9kZSwgdHJ1ZSk7CiAKICAgICAgIGlmIChwYXNzID09IDEgJiYgKHJldHVy bl9mbGFncyAmIEVSRl9SRVRVUk5TX0FSRykpCiAJewpAQCAtMzkzOSw4ICsz OTM2LDggQEAgZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSAoaW50IHJldHZh bCwgcnR4IG9yZ2Z1biwgcnR4IHZhbHVlLAogICAgICAgYXJndmVjW2NvdW50 XS5tb2RlID0gUG1vZGU7CiAgICAgICBhcmd2ZWNbY291bnRdLnBhcnRpYWwg PSAwOwogCi0gICAgICBhcmd2ZWNbY291bnRdLnJlZyA9IHRhcmdldG0uY2Fs bHMuZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwKLQkJCQkJCSAgICAgIFBt b2RlLCBOVUxMX1RSRUUsIHRydWUpOworICAgICAgYXJndmVjW2NvdW50XS5y ZWcgPSBmdW5jdGlvbl9hcmcgKGFyZ3Nfc29fZmFyLCBQbW9kZSwgTlVMTF9U UkVFLAorCQkJCQl0cnVlKTsKICAgICAgIGdjY19hc3NlcnQgKHRhcmdldG0u Y2FsbHMuYXJnX3BhcnRpYWxfYnl0ZXMgKGFyZ3Nfc29fZmFyLCBQbW9kZSwK IAkJCQkJCSAgIE5VTExfVFJFRSwgMSkgPT0gMCk7CiAKQEAgLTM5NTcsNyAr Mzk1NCw3IEBAIGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEgKGludCByZXR2 YWwsIHJ0eCBvcmdmdW4sIHJ0eCB2YWx1ZSwKIAkgIHx8IHJlZ19wYXJtX3N0 YWNrX3NwYWNlID4gMCkKIAlhcmdzX3NpemUuY29uc3RhbnQgKz0gYXJndmVj W2NvdW50XS5sb2NhdGUuc2l6ZS5jb25zdGFudDsKIAotICAgICAgdGFyZ2V0 bS5jYWxscy5mdW5jdGlvbl9hcmdfYWR2YW5jZSAoYXJnc19zb19mYXIsIFBt b2RlLCAodHJlZSkgMCwgdHJ1ZSk7CisgICAgICBmdW5jdGlvbl9hcmdfYWR2 YW5jZSAoYXJnc19zb19mYXIsIFBtb2RlLCAodHJlZSkgMCwgdHJ1ZSk7CiAK ICAgICAgIGNvdW50Kys7CiAgICAgfQpAQCAtNDAyMiw3ICs0MDE5LDcgQEAg ZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSAoaW50IHJldHZhbCwgcnR4IG9y Z2Z1biwgcnR4IHZhbHVlLAogICAgICAgbW9kZSA9IHByb21vdGVfZnVuY3Rp b25fbW9kZSAoTlVMTF9UUkVFLCBtb2RlLCAmdW5zaWduZWRfcCwgTlVMTF9U UkVFLCAwKTsKICAgICAgIGFyZ3ZlY1tjb3VudF0ubW9kZSA9IG1vZGU7CiAg ICAgICBhcmd2ZWNbY291bnRdLnZhbHVlID0gY29udmVydF9tb2RlcyAobW9k ZSwgR0VUX01PREUgKHZhbCksIHZhbCwgdW5zaWduZWRfcCk7Ci0gICAgICBh cmd2ZWNbY291bnRdLnJlZyA9IHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJn IChhcmdzX3NvX2ZhciwgbW9kZSwKKyAgICAgIGFyZ3ZlY1tjb3VudF0ucmVn ID0gZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgbW9kZSwKIAkJCQkJCSAg ICAgIE5VTExfVFJFRSwgdHJ1ZSk7CiAKICAgICAgIGFyZ3ZlY1tjb3VudF0u cGFydGlhbApAQCAtNDA1Miw3ICs0MDQ5LDcgQEAgZW1pdF9saWJyYXJ5X2Nh bGxfdmFsdWVfMSAoaW50IHJldHZhbCwgcnR4IG9yZ2Z1biwgcnR4IHZhbHVl LAogCQkJICAgICBHRVRfTU9ERV9TSVpFIChtb2RlKSA8PSBVTklUU19QRVJf V09SRCk7CiAjZW5kaWYKIAotICAgICAgdGFyZ2V0bS5jYWxscy5mdW5jdGlv bl9hcmdfYWR2YW5jZSAoYXJnc19zb19mYXIsIG1vZGUsICh0cmVlKSAwLCB0 cnVlKTsKKyAgICAgIGZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhcmdzX3NvX2Zh ciwgbW9kZSwgKHRyZWUpIDAsIHRydWUpOwogICAgIH0KIAogICAvKiBJZiB0 aGlzIG1hY2hpbmUgcmVxdWlyZXMgYW4gZXh0ZXJuYWwgZGVmaW5pdGlvbiBm b3IgbGlicmFyeQpAQCAtNDM5OSw4ICs0Mzk2LDcgQEAgZW1pdF9saWJyYXJ5 X2NhbGxfdmFsdWVfMSAoaW50IHJldHZhbCwgcnR4IG9yZ2Z1biwgcnR4IHZh bHVlLAogCSAgICAgICBidWlsZF9mdW5jdGlvbl90eXBlICh0Zm9tLCBOVUxM X1RSRUUpLAogCSAgICAgICBvcmlnaW5hbF9hcmdzX3NpemUuY29uc3RhbnQs IGFyZ3Nfc2l6ZS5jb25zdGFudCwKIAkgICAgICAgc3RydWN0X3ZhbHVlX3Np emUsCi0JICAgICAgIHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnIChhcmdz X3NvX2ZhciwKLQkJCQkJICAgVk9JRG1vZGUsIHZvaWRfdHlwZV9ub2RlLCB0 cnVlKSwKKwkgICAgICAgZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgVk9J RG1vZGUsIHZvaWRfdHlwZV9ub2RlLCB0cnVlKSwKIAkgICAgICAgdmFscmVn LAogCSAgICAgICBvbGRfaW5oaWJpdF9kZWZlcl9wb3AgKyAxLCBjYWxsX2Z1 c2FnZSwgZmxhZ3MsIGFyZ3Nfc29fZmFyKTsKIApAQCAtNDgzNSw3ICs0ODMx LDEwIEBAIHN0b3JlX29uZV9hcmcgKHN0cnVjdCBhcmdfZGF0YSAqYXJnLCBy dHggYXJnYmxvY2ssIGludCBmbGFncywKIAkgTm90ZSB0aGF0IGluIEMgdGhl IGRlZmF1bHQgYXJndW1lbnQgcHJvbW90aW9ucwogCSB3aWxsIHByZXZlbnQg c3VjaCBtaXNtYXRjaGVzLiAgKi8KIAotICAgICAgc2l6ZSA9IEdFVF9NT0RF X1NJWkUgKGFyZy0+bW9kZSk7CisgICAgICBpZiAodHlwZV9pc19lbXB0eV9y ZWNvcmRfcCAoVFJFRV9UWVBFIChwdmFsKSkpCisJc2l6ZSA9IDA7CisgICAg ICBlbHNlCisJc2l6ZSA9IEdFVF9NT0RFX1NJWkUgKGFyZy0+bW9kZSk7CiAg ICAgICAvKiBDb21wdXRlIGhvdyBtdWNoIHNwYWNlIHRoZSBwdXNoIGluc3Ry dWN0aW9uIHdpbGwgcHVzaC4KIAkgT24gbWFueSBtYWNoaW5lcywgcHVzaGlu ZyBhIGJ5dGUgd2lsbCBhZHZhbmNlIHRoZSBzdGFjawogCSBwb2ludGVyIGJ5 IGEgaGFsZndvcmQuICAqLwpAQCAtNDg2NSwxMCArNDg2NCwxNCBAQCBzdG9y ZV9vbmVfYXJnIChzdHJ1Y3QgYXJnX2RhdGEgKmFyZywgcnR4IGFyZ2Jsb2Nr LCBpbnQgZmxhZ3MsCiAKICAgICAgIC8qIFRoaXMgaXNuJ3QgYWxyZWFkeSB3 aGVyZSB3ZSB3YW50IGl0IG9uIHRoZSBzdGFjaywgc28gcHV0IGl0IHRoZXJl LgogCSBUaGlzIGNhbiBlaXRoZXIgYmUgZG9uZSB3aXRoIHB1c2ggb3IgY29w eSBpbnNucy4gICovCi0gICAgICBpZiAoIWVtaXRfcHVzaF9pbnNuIChhcmct PnZhbHVlLCBhcmctPm1vZGUsIFRSRUVfVFlQRSAocHZhbCksIE5VTExfUlRY LAotCQkgICAgICBwYXJtX2FsaWduLCBwYXJ0aWFsLCByZWcsIHVzZWQgLSBz aXplLCBhcmdibG9jaywKLQkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5s b2NhdGUub2Zmc2V0KSwgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsCi0JCSAgICAg IEFSR1NfU0laRV9SVFggKGFyZy0+bG9jYXRlLmFsaWdubWVudF9wYWQpLCB0 cnVlKSkKKyAgICAgIGlmICh1c2VkCisJICAmJiAhZW1pdF9wdXNoX2luc24g KGFyZy0+dmFsdWUsIGFyZy0+bW9kZSwgVFJFRV9UWVBFIChwdmFsKSwKKwkJ CSAgICAgIE5VTExfUlRYLCBwYXJtX2FsaWduLCBwYXJ0aWFsLCByZWcsCisJ CQkgICAgICB1c2VkIC0gc2l6ZSwgYXJnYmxvY2ssCisJCQkgICAgICBBUkdT X1NJWkVfUlRYIChhcmctPmxvY2F0ZS5vZmZzZXQpLAorCQkJICAgICAgcmVn X3Bhcm1fc3RhY2tfc3BhY2UsCisJCQkgICAgICBBUkdTX1NJWkVfUlRYIChh cmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSwKKwkJCSAgICAgIHRydWUpKQog CXNpYmNhbGxfZmFpbHVyZSA9IDE7CiAKICAgICAgIC8qIFVubGVzcyB0aGlz IGlzIGEgcGFydGlhbGx5LWluLXJlZ2lzdGVyIGFyZ3VtZW50LCB0aGUgYXJn dW1lbnQgaXMgbm93CkBAIC00OTAwLDEwICs0OTAzLDE1IEBAIHN0b3JlX29u ZV9hcmcgKHN0cnVjdCBhcmdfZGF0YSAqYXJnLCBydHggYXJnYmxvY2ssIGlu dCBmbGFncywKIAl7CiAJICAvKiBQVVNIX1JPVU5ESU5HIGhhcyBubyBlZmZl Y3Qgb24gdXMsIGJlY2F1c2UgZW1pdF9wdXNoX2luc24KIAkgICAgIGZvciBC TEttb2RlIGlzIGNhcmVmdWwgdG8gYXZvaWQgaXQuICAqLworCSAgYm9vbCBl bXB0eV9yZWNvcmQgPSB0eXBlX2lzX2VtcHR5X3JlY29yZF9wIChUUkVFX1RZ UEUgKHB2YWwpKTsKIAkgIGV4Y2VzcyA9IChhcmctPmxvY2F0ZS5zaXplLmNv bnN0YW50Ci0JCSAgICAtIGludF9zaXplX2luX2J5dGVzIChUUkVFX1RZUEUg KHB2YWwpKQorCQkgICAgLSAoZW1wdHlfcmVjb3JkCisJCSAgICAgICA/IDAK KwkJICAgICAgIDogaW50X3NpemVfaW5fYnl0ZXMgKFRSRUVfVFlQRSAocHZh bCkpKQogCQkgICAgKyBwYXJ0aWFsKTsKLQkgIHNpemVfcnR4ID0gZXhwYW5k X2V4cHIgKHNpemVfaW5fYnl0ZXMgKFRSRUVfVFlQRSAocHZhbCkpLAorCSAg c2l6ZV9ydHggPSBleHBhbmRfZXhwciAoKGVtcHR5X3JlY29yZAorCQkJCSAg ID8gc2l6ZV96ZXJvX25vZGUKKwkJCQkgICA6IHNpemVfaW5fYnl0ZXMgKFRS RUVfVFlQRSAocHZhbCkpKSwKIAkJCQkgIE5VTExfUlRYLCBUWVBFX01PREUg KHNpemV0eXBlKSwKIAkJCQkgIEVYUEFORF9OT1JNQUwpOwogCX0KQEAgLTQ5 NzEsMTAgKzQ5NzksMTMgQEAgc3RvcmVfb25lX2FyZyAoc3RydWN0IGFyZ19k YXRhICphcmcsIHJ0eCBhcmdibG9jaywgaW50IGZsYWdzLAogCSAgICB9CiAJ fQogCi0gICAgICBlbWl0X3B1c2hfaW5zbiAoYXJnLT52YWx1ZSwgYXJnLT5t b2RlLCBUUkVFX1RZUEUgKHB2YWwpLCBzaXplX3J0eCwKLQkJICAgICAgcGFy bV9hbGlnbiwgcGFydGlhbCwgcmVnLCBleGNlc3MsIGFyZ2Jsb2NrLAotCQkg ICAgICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5vZmZzZXQpLCByZWdf cGFybV9zdGFja19zcGFjZSwKLQkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJn LT5sb2NhdGUuYWxpZ25tZW50X3BhZCksIGZhbHNlKTsKKyAgICAgIGlmICgh Q09OU1RfSU5UX1AgKHNpemVfcnR4KSB8fCBJTlRWQUwgKHNpemVfcnR4KSAh PSAwKQorCWVtaXRfcHVzaF9pbnNuIChhcmctPnZhbHVlLCBhcmctPm1vZGUs IFRSRUVfVFlQRSAocHZhbCksCisJCQlzaXplX3J0eCwgcGFybV9hbGlnbiwg cGFydGlhbCwgcmVnLCBleGNlc3MsCisJCQlhcmdibG9jaywgQVJHU19TSVpF X1JUWCAoYXJnLT5sb2NhdGUub2Zmc2V0KSwKKwkJCXJlZ19wYXJtX3N0YWNr X3NwYWNlLAorCQkJQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUuYWxpZ25t ZW50X3BhZCksCisJCQlmYWxzZSk7CiAKICAgICAgIC8qIFVubGVzcyB0aGlz IGlzIGEgcGFydGlhbGx5LWluLXJlZ2lzdGVyIGFyZ3VtZW50LCB0aGUgYXJn dW1lbnQgaXMgbm93CiAJIGluIHRoZSBzdGFjay4KQEAgLTUwNTIsNiArNTA2 Myw5IEBAIG11c3RfcGFzc19pbl9zdGFja192YXJfc2l6ZV9vcl9wYWQgKG1h Y2hpbmVfbW9kZSBtb2RlLCBjb25zdF90cmVlIHR5cGUpCiAgIGlmIChUUkVF X0FERFJFU1NBQkxFICh0eXBlKSkKICAgICByZXR1cm4gdHJ1ZTsKIAorICBp ZiAodHlwZV9pc19lbXB0eV9yZWNvcmRfcCAodHlwZSkpCisgICAgcmV0dXJu IGZhbHNlOworCiAgIC8qIElmIHRoZSBwYWRkaW5nIGFuZCBtb2RlIG9mIHRo ZSB0eXBlIGlzIHN1Y2ggdGhhdCBhIGNvcHkgaW50bwogICAgICBhIHJlZ2lz dGVyIHdvdWxkIHB1dCBpdCBpbnRvIHRoZSB3cm9uZyBwYXJ0IG9mIHRoZSBy ZWdpc3Rlci4gICovCiAgIGlmIChtb2RlID09IEJMS21vZGUKZGlmZiAtLWdp dCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYv aTM4Ni5jCmluZGV4IGNjNDI1NDQuLjAxZDRkODAgMTAwNjQ0Ci0tLSBhL2dj Yy9jb25maWcvaTM4Ni9pMzg2LmMKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kz ODYuYwpAQCAtMTAyNzcsNyArMTAyNzcsOCBAQCBpeDg2X2dpbXBsaWZ5X3Zh X2FyZyAodHJlZSB2YWxpc3QsIHRyZWUgdHlwZSwgZ2ltcGxlX3NlcSAqcHJl X3AsCiAgIGluZGlyZWN0X3AgPSBwYXNzX2J5X3JlZmVyZW5jZSAoTlVMTCwg VFlQRV9NT0RFICh0eXBlKSwgdHlwZSwgZmFsc2UpOwogICBpZiAoaW5kaXJl Y3RfcCkKICAgICB0eXBlID0gYnVpbGRfcG9pbnRlcl90eXBlICh0eXBlKTsK LSAgc2l6ZSA9IGludF9zaXplX2luX2J5dGVzICh0eXBlKTsKKyAgYm9vbCBl bXB0eV9yZWNvcmQgPSB0eXBlICYmIHR5cGVfaXNfZW1wdHlfcmVjb3JkX3Ag KHR5cGUpOworICBzaXplID0gZW1wdHlfcmVjb3JkID8gMCA6IGludF9zaXpl X2luX2J5dGVzICh0eXBlKTsKICAgcnNpemUgPSBDRUlMIChzaXplLCBVTklU U19QRVJfV09SRCk7CiAKICAgbmF0X21vZGUgPSB0eXBlX25hdHVyYWxfbW9k ZSAodHlwZSwgTlVMTCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2Ns YXNzLmMgYi9nY2MvY3AvY2xhc3MuYwppbmRleCAyMTZhMzAxLi5kOTdhYWU2 IDEwMDY0NAotLS0gYS9nY2MvY3AvY2xhc3MuYworKysgYi9nY2MvY3AvY2xh c3MuYwpAQCAtNjgwMiw2ICs2ODAyLDggQEAgZmluaXNoX3N0cnVjdF8xICh0 cmVlIHQpCiAJICBUWVBFX1RSQU5TUEFSRU5UX0FHR1IgKHQpID0gMDsKIAl9 CiAgICAgfQorCisgIFRZUEVfRU1QVFlfUkVDT1JEICh0KSA9IGlzX3JlYWxs eV9lbXB0eV9jbGFzcyAodCk7CiB9CiAKIC8qIEluc2VydCBGSUVMRFMgaW50 byBUIGZvciB0aGUgc29ydGVkIGNhc2UgaWYgdGhlIEZJRUxEUyBjb3VudCBp cwpkaWZmIC0tZ2l0IGEvZ2NjL2RzZS5jIGIvZ2NjL2RzZS5jCmluZGV4IDM1 ZWVmNzEuLjU5NDEwNmYgMTAwNjQ0Ci0tLSBhL2djYy9kc2UuYworKysgYi9n Y2MvZHNlLmMKQEAgLTIzNjYsNyArMjM2Niw3IEBAIGdldF9jYWxsX2FyZ3Mg KHJ0eCBjYWxsX2luc24sIHRyZWUgZm4sIHJ0eCAqYXJncywgaW50IG5hcmdz KQogICAgIHsKICAgICAgIG1hY2hpbmVfbW9kZSBtb2RlID0gVFlQRV9NT0RF IChUUkVFX1ZBTFVFIChhcmcpKTsKICAgICAgIHJ0eCByZWcsIGxpbmssIHRt cDsKLSAgICAgIHJlZyA9IHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnIChh cmdzX3NvX2ZhciwgbW9kZSwgTlVMTF9UUkVFLCB0cnVlKTsKKyAgICAgIHJl ZyA9IGZ1bmN0aW9uX2FyZyAoYXJnc19zb19mYXIsIG1vZGUsIE5VTExfVFJF RSwgdHJ1ZSk7CiAgICAgICBpZiAoIXJlZyB8fCAhUkVHX1AgKHJlZykgfHwg R0VUX01PREUgKHJlZykgIT0gbW9kZQogCSAgfHwgR0VUX01PREVfQ0xBU1Mg KG1vZGUpICE9IE1PREVfSU5UKQogCXJldHVybiBmYWxzZTsKQEAgLTI0MDAs NyArMjQwMCw3IEBAIGdldF9jYWxsX2FyZ3MgKHJ0eCBjYWxsX2luc24sIHRy ZWUgZm4sIHJ0eCAqYXJncywgaW50IG5hcmdzKQogICAgICAgaWYgKHRtcCkK IAlhcmdzW2lkeF0gPSB0bXA7CiAKLSAgICAgIHRhcmdldG0uY2FsbHMuZnVu Y3Rpb25fYXJnX2FkdmFuY2UgKGFyZ3Nfc29fZmFyLCBtb2RlLCBOVUxMX1RS RUUsIHRydWUpOworICAgICAgZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGFyZ3Nf c29fZmFyLCBtb2RlLCBOVUxMX1RSRUUsIHRydWUpOwogICAgIH0KICAgaWYg KGFyZyAhPSB2b2lkX2xpc3Rfbm9kZSB8fCBpZHggIT0gbmFyZ3MpCiAgICAg cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvZ2NjL2V4cHIuYyBiL2djYy9l eHByLmMKaW5kZXggYmQ0M2RjNC4uMzg0NTgxYSAxMDA2NDQKLS0tIGEvZ2Nj L2V4cHIuYworKysgYi9nY2MvZXhwci5jCkBAIC0xMTk4LDEzICsxMTk4LDEy IEBAIGJsb2NrX21vdmVfbGliY2FsbF9zYWZlX2Zvcl9jYWxsX3Bhcm0gKHZv aWQpCiAgICAgZm9yICggOyBhcmcgIT0gdm9pZF9saXN0X25vZGUgOyBhcmcg PSBUUkVFX0NIQUlOIChhcmcpKQogICAgICAgewogCW1hY2hpbmVfbW9kZSBt b2RlID0gVFlQRV9NT0RFIChUUkVFX1ZBTFVFIChhcmcpKTsKLQlydHggdG1w ID0gdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9hcmcgKGFyZ3Nfc29fZmFyLCBt b2RlLAotCQkJCQkgICAgICBOVUxMX1RSRUUsIHRydWUpOworCXJ0eCB0bXAg PSBmdW5jdGlvbl9hcmcgKGFyZ3Nfc29fZmFyLCBtb2RlLCBOVUxMX1RSRUUs IHRydWUpOwogCWlmICghdG1wIHx8ICFSRUdfUCAodG1wKSkKIAkgIHJldHVy biBmYWxzZTsKIAlpZiAodGFyZ2V0bS5jYWxscy5hcmdfcGFydGlhbF9ieXRl cyAoYXJnc19zb19mYXIsIG1vZGUsIE5VTEwsIDEpKQogCSAgcmV0dXJuIGZh bHNlOwotCXRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGFy Z3Nfc29fZmFyLCBtb2RlLAorCWZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhcmdz X3NvX2ZhciwgbW9kZSwKIAkJCQkJICAgIE5VTExfVFJFRSwgdHJ1ZSk7CiAg ICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL2djYy9mdW5jdGlvbi5jIGIvZ2Nj L2Z1bmN0aW9uLmMKaW5kZXggYWZjMmM4Ny4uZDg5MjRmZSAxMDA2NDQKLS0t IGEvZ2NjL2Z1bmN0aW9uLmMKKysrIGIvZ2NjL2Z1bmN0aW9uLmMKQEAgLTIw NzMsNyArMjA3Myw3IEBAIGFnZ3JlZ2F0ZV92YWx1ZV9wIChjb25zdF90cmVl IGV4cCwgY29uc3RfdHJlZSBmbnR5cGUpCiAgIGlmIChmbGFnX3BjY19zdHJ1 Y3RfcmV0dXJuICYmIEFHR1JFR0FURV9UWVBFX1AgKHR5cGUpKQogICAgIHJl dHVybiAxOwogCi0gIGlmICh0YXJnZXRtLmNhbGxzLnJldHVybl9pbl9tZW1v cnkgKHR5cGUsIGZudHlwZSkpCisgIGlmIChyZXR1cm5faW5fbWVtb3J5ICh0 eXBlLCBmbnR5cGUpKQogICAgIHJldHVybiAxOwogCiAgIC8qIE1ha2Ugc3Vy ZSB3ZSBoYXZlIHN1aXRhYmxlIGNhbGwtY2xvYmJlcmVkIHJlZ3MgdG8gcmV0 dXJuCkBAIC0yNTIzLDEwICsyNTIzLDEwIEBAIGFzc2lnbl9wYXJtX2ZpbmRf ZW50cnlfcnRsIChzdHJ1Y3QgYXNzaWduX3Bhcm1fZGF0YV9hbGwgKmFsbCwK ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgZW50cnlfcGFybSA9IHRhcmdl dG0uY2FsbHMuZnVuY3Rpb25faW5jb21pbmdfYXJnIChhbGwtPmFyZ3Nfc29f ZmFyLAotCQkJCQkJICAgIGRhdGEtPnByb21vdGVkX21vZGUsCi0JCQkJCQkg ICAgZGF0YS0+cGFzc2VkX3R5cGUsCi0JCQkJCQkgICAgZGF0YS0+bmFtZWRf YXJnKTsKKyAgZW50cnlfcGFybSA9IGZ1bmN0aW9uX2luY29taW5nX2FyZyAo YWxsLT5hcmdzX3NvX2ZhciwKKwkJCQkgICAgICBkYXRhLT5wcm9tb3RlZF9t b2RlLAorCQkJCSAgICAgIGRhdGEtPnBhc3NlZF90eXBlLAorCQkJCSAgICAg IGRhdGEtPm5hbWVkX2FyZyk7CiAKICAgaWYgKGVudHJ5X3Bhcm0gPT0gMCkK ICAgICBkYXRhLT5wcm9tb3RlZF9tb2RlID0gZGF0YS0+cGFzc2VkX21vZGU7 CkBAIC0yNTUwLDkgKzI1NTAsOSBAQCBhc3NpZ25fcGFybV9maW5kX2VudHJ5 X3J0bCAoc3RydWN0IGFzc2lnbl9wYXJtX2RhdGFfYWxsICphbGwsCiAgICAg ICBpZiAodGFyZ2V0bS5jYWxscy5wcmV0ZW5kX291dGdvaW5nX3ZhcmFyZ3Nf bmFtZWQgKGFsbC0+YXJnc19zb19mYXIpKQogCXsKIAkgIHJ0eCB0ZW07Ci0J ICB0ZW0gPSB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2luY29taW5nX2FyZyAo YWxsLT5hcmdzX3NvX2ZhciwKLQkJCQkJCSAgICAgZGF0YS0+cHJvbW90ZWRf bW9kZSwKLQkJCQkJCSAgICAgZGF0YS0+cGFzc2VkX3R5cGUsIHRydWUpOwor CSAgdGVtID0gZnVuY3Rpb25faW5jb21pbmdfYXJnIChhbGwtPmFyZ3Nfc29f ZmFyLAorCQkJCSAgICAgICBkYXRhLT5wcm9tb3RlZF9tb2RlLAorCQkJCSAg ICAgICBkYXRhLT5wYXNzZWRfdHlwZSwgdHJ1ZSk7CiAJICBpbl9yZWdzID0g dGVtICE9IE5VTEw7CiAJfQogICAgIH0KQEAgLTM3NTIsOCArMzc1Miw4IEBA IGFzc2lnbl9wYXJtcyAodHJlZSBmbmRlY2wpCiAJfQogCiAgICAgICAvKiBV cGRhdGUgaW5mbyBvbiB3aGVyZSBuZXh0IGFyZyBhcnJpdmVzIGluIHJlZ2lz dGVycy4gICovCi0gICAgICB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19h ZHZhbmNlIChhbGwuYXJnc19zb19mYXIsIGRhdGEucHJvbW90ZWRfbW9kZSwK LQkJCQkJICBkYXRhLnBhc3NlZF90eXBlLCBkYXRhLm5hbWVkX2FyZyk7Cisg ICAgICBmdW5jdGlvbl9hcmdfYWR2YW5jZSAoYWxsLmFyZ3Nfc29fZmFyLCBk YXRhLnByb21vdGVkX21vZGUsCisJCQkgICAgZGF0YS5wYXNzZWRfdHlwZSwg ZGF0YS5uYW1lZF9hcmcpOwogCiAgICAgICBpZiAoUE9JTlRFUl9CT1VORFNf VFlQRV9QIChkYXRhLnBhc3NlZF90eXBlKSkKIAlib3VuZF9ubysrOwpAQCAt Mzk0OSw4ICszOTQ5LDggQEAgZ2ltcGxpZnlfcGFyYW1ldGVycyAodm9pZCkK IAljb250aW51ZTsKIAogICAgICAgLyogVXBkYXRlIGluZm8gb24gd2hlcmUg bmV4dCBhcmcgYXJyaXZlcyBpbiByZWdpc3RlcnMuICAqLwotICAgICAgdGFy Z2V0bS5jYWxscy5mdW5jdGlvbl9hcmdfYWR2YW5jZSAoYWxsLmFyZ3Nfc29f ZmFyLCBkYXRhLnByb21vdGVkX21vZGUsCi0JCQkJCSAgZGF0YS5wYXNzZWRf dHlwZSwgZGF0YS5uYW1lZF9hcmcpOworICAgICAgZnVuY3Rpb25fYXJnX2Fk dmFuY2UgKGFsbC5hcmdzX3NvX2ZhciwgZGF0YS5wcm9tb3RlZF9tb2RlLAor CQkJICAgIGRhdGEucGFzc2VkX3R5cGUsIGRhdGEubmFtZWRfYXJnKTsKIAog ICAgICAgLyogPz8/IE9uY2UgdXBvbiBhIHRpbWUgdmFyaWFibGVfc2l6ZSBz dHVmZmVkIHBhcmFtZXRlciBsaXN0CiAJIFNBVkVfRVhQUnMgKGFtb25nc3Qg b3RoZXJzKSBvbnRvIGEgcGVuZGluZyBzaXplcyBsaXN0LiAgVGhpcwpAQCAt NDA5Myw4ICs0MDkzLDExIEBAIGxvY2F0ZV9hbmRfcGFkX3Bhcm0gKG1hY2hp bmVfbW9kZSBwYXNzZWRfbW9kZSwgdHJlZSB0eXBlLCBpbnQgaW5fcmVncywK IAogICBwYXJ0X3NpemVfaW5fcmVncyA9IChyZWdfcGFybV9zdGFja19zcGFj ZSA9PSAwID8gcGFydGlhbCA6IDApOwogCi0gIHNpemV0cmVlCi0gICAgPSB0 eXBlID8gc2l6ZV9pbl9ieXRlcyAodHlwZSkgOiBzaXplX2ludCAoR0VUX01P REVfU0laRSAocGFzc2VkX21vZGUpKTsKKyAgaWYgKHR5cGUpCisgICAgc2l6 ZXRyZWUgPSAodHlwZV9pc19lbXB0eV9yZWNvcmRfcCAodHlwZSkKKwkJPyBz aXplX3plcm9fbm9kZSA6IHNpemVfaW5fYnl0ZXMgKHR5cGUpKTsKKyAgZWxz ZQorICAgIHNpemV0cmVlID0gc2l6ZV9pbnQgKEdFVF9NT0RFX1NJWkUgKHBh c3NlZF9tb2RlKSk7CiAgIHdoZXJlX3BhZCA9IEZVTkNUSU9OX0FSR19QQURE SU5HIChwYXNzZWRfbW9kZSwgdHlwZSk7CiAgIGJvdW5kYXJ5ID0gdGFyZ2V0 bS5jYWxscy5mdW5jdGlvbl9hcmdfYm91bmRhcnkgKHBhc3NlZF9tb2RlLCB0 eXBlKTsKICAgcm91bmRfYm91bmRhcnkgPSB0YXJnZXRtLmNhbGxzLmZ1bmN0 aW9uX2FyZ19yb3VuZF9ib3VuZGFyeSAocGFzc2VkX21vZGUsCkBAIC02ODIx LDUgKzY4MjQsNTIgQEAgbWFrZV9wYXNzX21hdGNoX2FzbV9jb25zdHJhaW50 cyAoZ2NjOjpjb250ZXh0ICpjdHh0KQogICByZXR1cm4gbmV3IHBhc3NfbWF0 Y2hfYXNtX2NvbnN0cmFpbnRzIChjdHh0KTsKIH0KIAorLyogV3JhcHBlciBm b3IgdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9hcmdfYWR2YW5jZS4gICovCisK K3ZvaWQKK2Z1bmN0aW9uX2FyZ19hZHZhbmNlIChjdW11bGF0aXZlX2FyZ3Nf dCBjYSwgbWFjaGluZV9tb2RlIG1vZGUsCisJCSAgICAgIGNvbnN0X3RyZWUg dHlwZSwgYm9vbCBuYW1lZCkKK3sKKyAgaWYgKHR5cGUgJiYgdHlwZV9pc19l bXB0eV9yZWNvcmRfcCAodHlwZSkpCisgICAgcmV0dXJuOworCisgIHRhcmdl dG0uY2FsbHMuZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGNhLCBtb2RlLCB0eXBl LCBuYW1lZCk7Cit9CisKKy8qIFdyYXBwZXIgZm9yIHRhcmdldG0uY2FsbHMu ZnVuY3Rpb25fYXJnLiAgKi8KKworcnR4CitmdW5jdGlvbl9hcmcgKGN1bXVs YXRpdmVfYXJnc190IGNhLCBtYWNoaW5lX21vZGUgbW9kZSwgY29uc3RfdHJl ZSB0eXBlLAorCSAgICAgIGJvb2wgbmFtZWQpCit7CisgIGlmICh0eXBlICYm IHR5cGVfaXNfZW1wdHlfcmVjb3JkX3AgKHR5cGUpKQorICAgIHJldHVybiBO VUxMOworCisgIHJldHVybiB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZyAo Y2EsIG1vZGUsIHR5cGUsIG5hbWVkKTsKK30KKworLyogV3JhcHBlciBmb3Ig dGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9pbmNvbWluZ19hcmcuICAqLworCity dHgKK2Z1bmN0aW9uX2luY29taW5nX2FyZyAoY3VtdWxhdGl2ZV9hcmdzX3Qg Y2EsIG1hY2hpbmVfbW9kZSBtb2RlLAorCQkgICAgICAgY29uc3RfdHJlZSB0 eXBlLCBib29sIG5hbWVkKQoreworICBpZiAodHlwZSAmJiB0eXBlX2lzX2Vt cHR5X3JlY29yZF9wICh0eXBlKSkKKyAgICByZXR1cm4gTlVMTDsKKworICBy ZXR1cm4gdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9pbmNvbWluZ19hcmcgKGNh LCBtb2RlLCB0eXBlLCBuYW1lZCk7Cit9CisKKy8qIFdyYXBwZXIgZm9yIHRh cmdldG0uY2FsbHMucmV0dXJuX2luX21lbW9yeS4gICovCisKK2Jvb2wKK3Jl dHVybl9pbl9tZW1vcnkgKGNvbnN0X3RyZWUgdHlwZSwgY29uc3RfdHJlZSBm bnR5cGUpCit7CisgIGlmICh0eXBlICYmIHR5cGVfaXNfZW1wdHlfcmVjb3Jk X3AgKHR5cGUpKQorICAgIHJldHVybiBmYWxzZTsKKworICByZXR1cm4gdGFy Z2V0bS5jYWxscy5yZXR1cm5faW5fbWVtb3J5ICh0eXBlLCBmbnR5cGUpOwor fQorCiAKICNpbmNsdWRlICJndC1mdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEv Z2NjL2x0by1zdHJlYW1lci1vdXQuYyBiL2djYy9sdG8tc3RyZWFtZXItb3V0 LmMKaW5kZXggMGQ2MTBmMS4uODk4Y2VlOSAxMDA2NDQKLS0tIGEvZ2NjL2x0 by1zdHJlYW1lci1vdXQuYworKysgYi9nY2MvbHRvLXN0cmVhbWVyLW91dC5j CkBAIC05NDAsNiArOTQwLDggQEAgaGFzaF90cmVlIChzdHJ1Y3Qgc3RyZWFt ZXJfdHJlZV9jYWNoZV9kICpjYWNoZSwgaGFzaF9tYXA8dHJlZSwgaGFzaHZh bF90PiAqbWFwLAogICAgICAgaHN0YXRlLmFkZF9mbGFnIChUUkVFX1JFQURP TkxZICh0KSk7CiAgICAgICBoc3RhdGUuYWRkX2ZsYWcgKFRSRUVfUFVCTElD ICh0KSk7CiAgICAgfQorICBlbHNlCisgICAgaHN0YXRlLmFkZF9mbGFnIChU WVBFX0VNUFRZX1JFQ09SRCAodCkpOwogICBoc3RhdGUuYWRkX2ZsYWcgKFRS RUVfQUREUkVTU0FCTEUgKHQpKTsKICAgaHN0YXRlLmFkZF9mbGFnIChUUkVF X1RISVNfVk9MQVRJTEUgKHQpKTsKICAgaWYgKERFQ0xfUCAodCkpCmRpZmYg LS1naXQgYS9nY2MvbHRvL2x0by5jIGIvZ2NjL2x0by9sdG8uYwppbmRleCAy NjYxNDkxLi5kZjQwM2JmIDEwMDY0NAotLS0gYS9nY2MvbHRvL2x0by5jCisr KyBiL2djYy9sdG8vbHRvLmMKQEAgLTEwMDIsNiArMTAwMiw4IEBAIGNvbXBh cmVfdHJlZV9zY2NzXzEgKHRyZWUgdDEsIHRyZWUgdDIsIHRyZWUgKiptYXAp CiAgICAgICBjb21wYXJlX3ZhbHVlcyAoVFJFRV9SRUFET05MWSk7CiAgICAg ICBjb21wYXJlX3ZhbHVlcyAoVFJFRV9QVUJMSUMpOwogICAgIH0KKyAgZWxz ZQorICAgIGNvbXBhcmVfdmFsdWVzIChUWVBFX0VNUFRZX1JFQ09SRCk7CiAg IGNvbXBhcmVfdmFsdWVzIChUUkVFX0FERFJFU1NBQkxFKTsKICAgY29tcGFy ZV92YWx1ZXMgKFRSRUVfVEhJU19WT0xBVElMRSk7CiAgIGlmIChERUNMX1Ag KHQxKSkKZGlmZiAtLWdpdCBhL2djYy9wcmludC10cmVlLmMgYi9nY2MvcHJp bnQtdHJlZS5jCmluZGV4IGNiMGYxZmQuLmJiNDg5ZmYgMTAwNjQ0Ci0tLSBh L2djYy9wcmludC10cmVlLmMKKysrIGIvZ2NjL3ByaW50LXRyZWUuYwpAQCAt NTg3LDYgKzU4Nyw5IEBAIHByaW50X25vZGUgKEZJTEUgKmZpbGUsIGNvbnN0 IGNoYXIgKnByZWZpeCwgdHJlZSBub2RlLCBpbnQgaW5kZW50KQogICAgICAg aWYgKFRZUEVfUkVTVFJJQ1QgKG5vZGUpKQogCWZwdXRzICgiIHJlc3RyaWN0 IiwgZmlsZSk7CiAKKyAgICAgIGlmIChUWVBFX0VNUFRZX1JFQ09SRCAobm9k ZSkpCisJZnB1dHMgKCIgZW1wdHktcmVjb3JkIiwgZmlsZSk7CisKICAgICAg IGlmIChUWVBFX0xBTkdfRkxBR18wIChub2RlKSkKIAlmcHV0cyAoIiB0eXBl XzAiLCBmaWxlKTsKICAgICAgIGlmIChUWVBFX0xBTkdfRkxBR18xIChub2Rl KSkKZGlmZiAtLWdpdCBhL2djYy90YXJnZXQuaCBiL2djYy90YXJnZXQuaApp bmRleCBmZmM0ZDZhLi5lYjAxYTc2IDEwMDY0NAotLS0gYS9nY2MvdGFyZ2V0 LmgKKysrIGIvZ2NjL3RhcmdldC5oCkBAIC0xMDQsNiArMTA0LDE0IEBAIGV4 dGVybiBib29sIHRhcmdldF9kZWZhdWx0X3BvaW50ZXJfYWRkcmVzc19tb2Rl c19wICh2b2lkKTsKICAgIGJlaGF2aW91ci4gICovCiBleHRlcm4gdW5zaWdu ZWQgaW50IGdldF9tb3ZlX3JhdGlvIChib29sKTsKIAorZXh0ZXJuIHZvaWQg ZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGN1bXVsYXRpdmVfYXJnc190LCBtYWNo aW5lX21vZGUsCisJCQkJICBjb25zdF90cmVlLCBib29sKTsKK2V4dGVybiBy dHggZnVuY3Rpb25fYXJnIChjdW11bGF0aXZlX2FyZ3NfdCwgbWFjaGluZV9t b2RlLCBjb25zdF90cmVlLAorCQkJIGJvb2wpOworZXh0ZXJuIHJ0eCBmdW5j dGlvbl9pbmNvbWluZ19hcmcgKGN1bXVsYXRpdmVfYXJnc190LCBtYWNoaW5l X21vZGUsCisJCQkJICBjb25zdF90cmVlLCBib29sKTsKK2V4dGVybiBib29s IHJldHVybl9pbl9tZW1vcnkgKGNvbnN0X3RyZWUsIGNvbnN0X3RyZWUpOwor CiBzdHJ1Y3Qgc3RkYXJnX2luZm87CiBzdHJ1Y3Qgc3BlY19pbmZvX2RlZjsK IHN0cnVjdCBoYXJkX3JlZ19zZXRfY29udGFpbmVyOwpkaWZmIC0tZ2l0IGEv Z2NjL3Rhcmdob29rcy5jIGIvZ2NjL3Rhcmdob29rcy5jCmluZGV4IDAxZDM2 ODYuLmRlMTBlYzMgMTAwNjQ0Ci0tLSBhL2djYy90YXJnaG9va3MuYworKysg Yi9nY2MvdGFyZ2hvb2tzLmMKQEAgLTE4MjksOSArMTgyOSwxMiBAQCBzdGRf Z2ltcGxpZnlfdmFfYXJnX2V4cHIgKHRyZWUgdmFsaXN0LCB0cmVlIHR5cGUs IGdpbXBsZV9zZXEgKnByZV9wLAogICAvKiBIb2lzdCB0aGUgdmFsaXN0IHZh bHVlIGludG8gYSB0ZW1wb3JhcnkgZm9yIHRoZSBtb21lbnQuICAqLwogICB2 YWxpc3RfdG1wID0gZ2V0X2luaXRpYWxpemVkX3RtcF92YXIgKHZhbGlzdCwg cHJlX3AsIE5VTEwpOwogCisgIGJvb2wgZW1wdHlfcmVjb3JkID0gdHlwZV9p c19lbXB0eV9yZWNvcmRfcCAodHlwZSk7CisKICAgLyogdmFfbGlzdCBwb2lu dGVyIGlzIGFsaWduZWQgdG8gUEFSTV9CT1VOREFSWS4gIElmIGFyZ3VtZW50 IGFjdHVhbGx5CiAgICAgIHJlcXVpcmVzIGdyZWF0ZXIgYWxpZ25tZW50LCB3 ZSBtdXN0IHBlcmZvcm0gZHluYW1pYyBhbGlnbm1lbnQuICAqLwogICBpZiAo Ym91bmRhcnkgPiBhbGlnbgorICAgICAgJiYgIWVtcHR5X3JlY29yZAogICAg ICAgJiYgIWludGVnZXJfemVyb3AgKFRZUEVfU0laRSAodHlwZSkpKQogICAg IHsKICAgICAgIHQgPSBidWlsZDIgKE1PRElGWV9FWFBSLCBUUkVFX1RZUEUg KHZhbGlzdCksIHZhbGlzdF90bXAsCkBAIC0xODU4LDcgKzE4NjEsNyBAQCBz dGRfZ2ltcGxpZnlfdmFfYXJnX2V4cHIgKHRyZWUgdmFsaXN0LCB0cmVlIHR5 cGUsIGdpbXBsZV9zZXEgKnByZV9wLAogICAgIH0KIAogICAvKiBDb21wdXRl IHRoZSByb3VuZGVkIHNpemUgb2YgdGhlIHR5cGUuICAqLwotICB0eXBlX3Np emUgPSBzaXplX2luX2J5dGVzICh0eXBlKTsKKyAgdHlwZV9zaXplID0gZW1w dHlfcmVjb3JkID8gc2l6ZV96ZXJvX25vZGUgOiBzaXplX2luX2J5dGVzICh0 eXBlKTsKICAgcm91bmRlZF9zaXplID0gcm91bmRfdXAgKHR5cGVfc2l6ZSwg YWxpZ24pOwogCiAgIC8qIFJlZHVjZSByb3VuZGVkX3NpemUgc28gaXQncyBz aGFyYWJsZSB3aXRoIHRoZSBwb3N0cXVldWUuICAqLwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTIuQyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL2FiaS9lbXB0eTEyLkMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNDMwZDU3ZAotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9lbXB0eTEyLkMKQEAgLTAsMCAr MSwxNyBAQAorLy8gUFIgYysrLzYwMzM2CisvLyB7IGRnLWRvIHJ1biB9Cisv LyB7IGRnLW9wdGlvbnMgIi14IGMiIH0KKy8vIHsgZGctYWRkaXRpb25hbC1z b3VyY2VzICJlbXB0eTEyYS5jIiB9CisvLyB7IGRnLXBydW5lLW91dHB1dCAi Y29tbWFuZCBsaW5lIG9wdGlvbiIgfQorCisjaW5jbHVkZSAiZW1wdHkxMi5o IgorZXh0ZXJuICJDIiB2b2lkIGZ1bihzdHJ1Y3QgZHVtbXksIHN0cnVjdCBm b28pOworCitpbnQgbWFpbigpCit7CisgIHN0cnVjdCBkdW1teSBkOworICBz dHJ1Y3QgZm9vIGYgPSB7IC0xLCAtMiwgLTMsIC00LCAtNSB9OworCisgIGZ1 bihkLCBmKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2crKy5kZy9hYmkvZW1wdHkxMi5oIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvYWJpL2VtcHR5MTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5jNjFhZmNkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTIuaApAQCAtMCwwICsxLDkgQEAK K3N0cnVjdCBkdW1teSB7IH07CitzdHJ1Y3QgZm9vCit7CisgIGludCBpMTsK KyAgaW50IGkyOworICBpbnQgaTM7CisgIGludCBpNDsKKyAgaW50IGk1Owor fTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9lbXB0 eTEyYS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTJhLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRhMjViYQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9l bXB0eTEyYS5jCkBAIC0wLDAgKzEsNiBAQAorI2luY2x1ZGUgImVtcHR5MTIu aCIKK3ZvaWQgZnVuKHN0cnVjdCBkdW1teSBkLCBzdHJ1Y3QgZm9vIGYpCit7 CisgIGlmIChmLmkxICE9IC0xKQorICAgIF9fYnVpbHRpbl9hYm9ydCgpOwor fQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI2MDMzNi0x LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9wcjYwMzM2LTEuQwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjA4NjM4Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI2MDMzNi0xLkMK QEAgLTAsMCArMSwxNyBAQAorLy8geyBkZy1kbyBjb21waWxlIH0KKy8vIHsg ZGctb3B0aW9ucyAiLU8yIC1zdGQ9YysrMTEgLWZuby1waWMiIH0KKy8vIHsg ZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGZwaWMgfQorCitzdHJ1Y3Qg ZHVtbXkgeyB9Oworc3RydWN0IHRydWVfdHlwZSB7IHN0cnVjdCBkdW1teSBp OyB9OworCitleHRlcm4gdHJ1ZV90eXBlIHk7CitleHRlcm4gdm9pZCB4eHgg KHRydWVfdHlwZSBjKTsKKwordm9pZAoreXl5ICh2b2lkKQoreworICB4eHgg KHkpOworfQorCisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImpt cFxbXHQgXF0rXFteXCRcXSo/X1ozeHh4OXRydWVfdHlwZSIgeyB0YXJnZXQg aT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvcHI2MDMzNi0yLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9wcjYwMzM2LTIuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi43YjkwMmU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvcHI2MDMzNi0yLkMKQEAgLTAsMCArMSwyOCBAQAorLy8g eyBkZy1kbyBydW4gfQorLy8geyBkZy1vcHRpb25zICItTzIiIH0KKworI2lu Y2x1ZGUgPHN0ZGFyZy5oPgorCitzdHJ1Y3QgZHVtbXkgeyBzdHJ1Y3R7fV9f YXR0cmlidXRlX18oKGFsaWduZWQgKDQpKSkgYVs3XTsgfTsKKwordm9pZAor dGVzdCAoc3RydWN0IGR1bW15IGEsIC4uLikKK3sKKyAgdmFfbGlzdCB2YV9h cmdsaXN0OworICBpbnQgaTsKKworICB2YV9zdGFydCAodmFfYXJnbGlzdCwg YSk7CisgIGkgPSB2YV9hcmcgKHZhX2FyZ2xpc3QsIGludCk7CisgIGlmIChp ICE9IDB4MTApCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICB2YV9lbmQg KHZhX2FyZ2xpc3QpOworfQorCitzdHJ1Y3QgZHVtbXkgYTA7CisKK2ludAor bWFpbiAoKQoreworICB0ZXN0IChhMCwgMHgxMCk7CisgIHJldHVybiAwOwor fQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI2ODM1NS5D IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI2ODM1NS5DCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNTRmYzQKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9wcjY4MzU1LkMKQEAgLTAs MCArMSwyNCBAQAorLy8geyBkZy1kbyBjb21waWxlIH0KKy8vIHsgZGctb3B0 aW9ucyAiLU8yIC1zdGQ9YysrMTEgLWZuby1waWMiIH0KKy8vIHsgZGctcmVx dWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGZwaWMgfQorCit0ZW1wbGF0ZTx0eXBl bmFtZSBfVHAsIF9UcCBfX3Y+CitzdHJ1Y3QgaW50ZWdyYWxfY29uc3RhbnQK K3sKKyAgc3RhdGljIGNvbnN0ZXhwciBfVHAgdmFsdWUgPSBfX3Y7CisgIHR5 cGVkZWYgX1RwIHZhbHVlX3R5cGU7CisgIHR5cGVkZWYgaW50ZWdyYWxfY29u c3RhbnQ8X1RwLCBfX3Y+IHR5cGU7CisgIGNvbnN0ZXhwciBvcGVyYXRvciB2 YWx1ZV90eXBlKCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KK307CisKK3R5 cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4gdHJ1ZV90eXBl OworZXh0ZXJuIHZvaWQgeHh4ICh0cnVlX3R5cGUgYyk7CisKK3ZvaWQKK3l5 eSAodm9pZCkKK3sKKyAgdHJ1ZV90eXBlIHk7CisgIHh4eCAoeSk7Cit9CisK Ky8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFtcdCBcXStc W15cJFxdKj9fWjN4eHgxN2ludGVncmFsX2NvbnN0YW50SWJMYjFFRSIgeyB0 YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfQpkaWZmIC0tZ2l0IGEv Z2NjL3RyZWUtY29yZS5oIGIvZ2NjL3RyZWUtY29yZS5oCmluZGV4IDljYzY0 ZDkuLjY3YmZmYTQgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLWNvcmUuaAorKysg Yi9nY2MvdHJlZS1jb3JlLmgKQEAgLTEwODYsNiArMTA4Niw5IEBAIHN0cnVj dCBHVFkoKCkpIHRyZWVfYmFzZSB7CiAgICAgICAgRk9SQ0VEX0xBQkVMIGlu CiAgICAgICAgICAgIExBQkVMX0RFQ0wKIAorICAgICAgIFRZUEVfRU1QVFlf UkVDT1JEIGluCisgICAgICAgICAgIGFsbCB0eXBlcworCiAgICB2b2xhdGls ZV9mbGFnOgogCiAgICAgICAgVFJFRV9USElTX1ZPTEFUSUxFIGluCmRpZmYg LS1naXQgYS9nY2MvdHJlZS1kZmEuYyBiL2djYy90cmVlLWRmYS5jCmluZGV4 IGJiNWNkNDkuLjE2MzRlZDYgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLWRmYS5j CisrKyBiL2djYy90cmVlLWRmYS5jCkBAIC0zOTQsNiArMzk0LDggQEAgZ2V0 X3JlZl9iYXNlX2FuZF9leHRlbnQgKHRyZWUgZXhwLCBIT1NUX1dJREVfSU5U ICpwb2Zmc2V0LAogICAgICAgbWFjaGluZV9tb2RlIG1vZGUgPSBUWVBFX01P REUgKFRSRUVfVFlQRSAoZXhwKSk7CiAgICAgICBpZiAobW9kZSA9PSBCTEtt b2RlKQogCXNpemVfdHJlZSA9IFRZUEVfU0laRSAoVFJFRV9UWVBFIChleHAp KTsKKyAgICAgIGVsc2UgaWYgKHR5cGVfaXNfZW1wdHlfcmVjb3JkX3AgKFRS RUVfVFlQRSAoZXhwKSkpCisJYml0c2l6ZSA9IDA7CiAgICAgICBlbHNlCiAJ Yml0c2l6ZSA9IGludCAoR0VUX01PREVfUFJFQ0lTSU9OIChtb2RlKSk7CiAg ICAgfQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3RyZWFtZXItaW4uYyBiL2dj Yy90cmVlLXN0cmVhbWVyLWluLmMKaW5kZXggNjVhMWNlMy4uN2I2NzUzNCAx MDA2NDQKLS0tIGEvZ2NjL3RyZWUtc3RyZWFtZXItaW4uYworKysgYi9nY2Mv dHJlZS1zdHJlYW1lci1pbi5jCkBAIC0xMTIsNyArMTEyLDEwIEBAIHVucGFj a190c19iYXNlX3ZhbHVlX2ZpZWxkcyAoc3RydWN0IGJpdHBhY2tfZCAqYnAs IHRyZWUgZXhwcikKICAgICAgIFRSRUVfUFVCTElDIChleHByKSA9ICh1bnNp Z25lZCkgYnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7CiAgICAgfQogICBlbHNl Ci0gICAgYnBfdW5wYWNrX3ZhbHVlIChicCwgNCk7CisgICAgeworICAgICAg VFlQRV9FTVBUWV9SRUNPUkQgKGV4cHIpID0gKHVuc2lnbmVkKSBicF91bnBh Y2tfdmFsdWUgKGJwLCAxKTsKKyAgICAgIGJwX3VucGFja192YWx1ZSAoYnAs IDMpOworICAgIH0KICAgVFJFRV9BRERSRVNTQUJMRSAoZXhwcikgPSAodW5z aWduZWQpIGJwX3VucGFja192YWx1ZSAoYnAsIDEpOwogICBUUkVFX1RISVNf Vk9MQVRJTEUgKGV4cHIpID0gKHVuc2lnbmVkKSBicF91bnBhY2tfdmFsdWUg KGJwLCAxKTsKICAgaWYgKERFQ0xfUCAoZXhwcikpCmRpZmYgLS1naXQgYS9n Y2MvdHJlZS1zdHJlYW1lci1vdXQuYyBiL2djYy90cmVlLXN0cmVhbWVyLW91 dC5jCmluZGV4IGQwYjdmNmQuLjliMTRkYjggMTAwNjQ0Ci0tLSBhL2djYy90 cmVlLXN0cmVhbWVyLW91dC5jCisrKyBiL2djYy90cmVlLXN0cmVhbWVyLW91 dC5jCkBAIC04Myw3ICs4MywxMCBAQCBwYWNrX3RzX2Jhc2VfdmFsdWVfZmll bGRzIChzdHJ1Y3QgYml0cGFja19kICpicCwgdHJlZSBleHByKQogICAgICAg YnBfcGFja192YWx1ZSAoYnAsIFRSRUVfUFVCTElDIChleHByKSwgMSk7CiAg ICAgfQogICBlbHNlCi0gICAgYnBfcGFja192YWx1ZSAoYnAsIDAsIDQpOwor ICAgIHsKKyAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUWVBFX0VNUFRZX1JF Q09SRCAoZXhwciksIDEpOworICAgICAgYnBfcGFja192YWx1ZSAoYnAsIDAs IDMpOworICAgIH0KICAgYnBfcGFja192YWx1ZSAoYnAsIFRSRUVfQUREUkVT U0FCTEUgKGV4cHIpLCAxKTsKICAgYnBfcGFja192YWx1ZSAoYnAsIFRSRUVf VEhJU19WT0xBVElMRSAoZXhwciksIDEpOwogICBpZiAoREVDTF9QIChleHBy KSkKZGlmZiAtLWdpdCBhL2djYy90cmVlLmggYi9nY2MvdHJlZS5oCmluZGV4 IGNiNTJkZWIuLjU2OWY3MDkgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLmgKKysr IGIvZ2NjL3RyZWUuaApAQCAtNzY2LDYgKzc2NiwxMCBAQCBleHRlcm4gdm9p ZCBvbXBfY2xhdXNlX3JhbmdlX2NoZWNrX2ZhaWxlZCAoY29uc3RfdHJlZSwg Y29uc3QgY2hhciAqLCBpbnQsCiAgICBjb21wdXRlZCBnb3Rvcy4gICovCiAj ZGVmaW5lIEZPUkNFRF9MQUJFTChOT0RFKSAoTEFCRUxfREVDTF9DSEVDSyAo Tk9ERSktPmJhc2Uuc2lkZV9lZmZlY3RzX2ZsYWcpCiAKKy8qIE5vbnplcm8g aW4gYSB0eXBlIGNvbnNpZGVyZWQgYW4gZW1wdHkgcmVjb3JkLiAgKi8KKyNk ZWZpbmUgVFlQRV9FTVBUWV9SRUNPUkQoTk9ERSkgXAorICAoVFlQRV9DSEVD SyAoTk9ERSktPmJhc2Uuc2lkZV9lZmZlY3RzX2ZsYWcpCisKIC8qIE5vbnpl cm8gbWVhbnMgdGhpcyBleHByZXNzaW9uIGlzIHZvbGF0aWxlIGluIHRoZSBD IHNlbnNlOgogICAgaXRzIGFkZHJlc3Mgc2hvdWxkIGJlIG9mIHR5cGUgYHZv bGF0aWxlIFdIQVRFVkVSIConLgogICAgSW4gb3RoZXIgd29yZHMsIHRoZSBk ZWNsYXJlZCBpdGVtIGlzIHZvbGF0aWxlIHF1YWxpZmllZC4KQEAgLTUzMzcs NiArNTM0MSwxNCBAQCB0eXBlX3dpdGhfYWxpYXNfc2V0X3AgKGNvbnN0X3Ry ZWUgdCkKICAgcmV0dXJuIGZhbHNlOwogfQogCisvKiBSZXR1cm4gdHJ1ZSBp ZiB0eXBlIFQgaXMgYW4gZW1wdHkgcmVjb3JkLiAgKi8KKworc3RhdGljIGlu bGluZSBib29sCit0eXBlX2lzX2VtcHR5X3JlY29yZF9wIChjb25zdF90cmVl IHQpCit7CisgIHJldHVybiBUWVBFX0VNUFRZX1JFQ09SRCAoVFlQRV9NQUlO X1ZBUklBTlQgKHQpKTsKK30KKwogZXh0ZXJuIGxvY2F0aW9uX3Qgc2V0X2Js b2NrIChsb2NhdGlvbl90IGxvYywgdHJlZSBibG9jayk7CiAKIGV4dGVybiB2 b2lkIGd0X2dnY19teCAodHJlZSAmKTsKZGlmZiAtLWdpdCBhL2djYy91YnNh bi5jIGIvZ2NjL3Vic2FuLmMKaW5kZXggNmZjNjIzMy4uNmRhZmM5MCAxMDA2 NDQKLS0tIGEvZ2NjL3Vic2FuLmMKKysrIGIvZ2NjL3Vic2FuLmMKQEAgLTM3 OSwxMCArMzc5LDExIEBAIHVic2FuX3R5cGVfZGVzY3JpcHRvciAodHJlZSB0 eXBlLCBlbnVtIHVic2FuX3ByaW50X3N0eWxlIHBzdHlsZSkKIAogICBpZiAo cHN0eWxlID09IFVCU0FOX1BSSU5UX1BPSU5URVIpCiAgICAgewotICAgICAg cHBfcHJpbnRmICgmcHJldHR5X25hbWUsICInJXMlcyVzJXMlcyVzJXMiLAor ICAgICAgcHBfcHJpbnRmICgmcHJldHR5X25hbWUsICInJXMlcyVzJXMlcyVz JXMlcyIsCiAJCSBUWVBFX1ZPTEFUSUxFICh0eXBlMikgPyAidm9sYXRpbGUg IiA6ICIiLAogCQkgVFlQRV9SRUFET05MWSAodHlwZTIpID8gImNvbnN0ICIg OiAiIiwKIAkJIFRZUEVfUkVTVFJJQ1QgKHR5cGUyKSA/ICJyZXN0cmljdCAi IDogIiIsCisJCSBUWVBFX0VNUFRZX1JFQ09SRCAodHlwZTIpID8gImVtcHR5 LXJlY29yZCAiIDogIiIsCiAJCSBUWVBFX0FUT01JQyAodHlwZTIpID8gIl9B dG9taWMgIiA6ICIiLAogCQkgVFJFRV9DT0RFICh0eXBlMikgPT0gUkVDT1JE X1RZUEUKIAkJID8gInN0cnVjdCAiCmRpZmYgLS1naXQgYS9nY2MvdmFyLXRy YWNraW5nLmMgYi9nY2MvdmFyLXRyYWNraW5nLmMKaW5kZXggOTE4NWJmZC4u ZTlmZGJlOSAxMDA2NDQKLS0tIGEvZ2NjL3Zhci10cmFja2luZy5jCisrKyBi L2djYy92YXItdHJhY2tpbmcuYwpAQCAtNjE0MCwxMCArNjE0MCwxMCBAQCBw cmVwYXJlX2NhbGxfYXJndW1lbnRzIChiYXNpY19ibG9jayBiYiwgcnR4X2lu c24gKmluc24pCiAJCSAgcnR4IHJlZzsKIAkJICBJTklUX0NVTVVMQVRJVkVf QVJHUyAoYXJnc19zb19mYXJfdiwgdHlwZSwgTlVMTF9SVFgsIGZuZGVjbCwK IAkJCQkJbmFyZ3MgKyAxKTsKLQkJICByZWcgPSB0YXJnZXRtLmNhbGxzLmZ1 bmN0aW9uX2FyZyAoYXJnc19zb19mYXIsIG1vZGUsCi0JCQkJCQkgICAgc3Ry dWN0X2FkZHIsIHRydWUpOwotCQkgIHRhcmdldG0uY2FsbHMuZnVuY3Rpb25f YXJnX2FkdmFuY2UgKGFyZ3Nfc29fZmFyLCBtb2RlLAotCQkJCQkJICAgICAg c3RydWN0X2FkZHIsIHRydWUpOworCQkgIHJlZyA9IGZ1bmN0aW9uX2FyZyAo YXJnc19zb19mYXIsIG1vZGUsIHN0cnVjdF9hZGRyLAorCQkJCSAgICAgIHRy dWUpOworCQkgIGZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhcmdzX3NvX2Zhciwg bW9kZSwgc3RydWN0X2FkZHIsCisJCQkJCXRydWUpOwogCQkgIGlmIChyZWcg PT0gTlVMTF9SVFgpCiAJCSAgICB7CiAJCSAgICAgIGZvciAoOyBsaW5rOyBs aW5rID0gWEVYUCAobGluaywgMSkpCkBAIC02MTY0LDggKzYxNjQsOCBAQCBw cmVwYXJlX2NhbGxfYXJndW1lbnRzIChiYXNpY19ibG9jayBiYiwgcnR4X2lu c24gKmluc24pCiAJCSAgbWFjaGluZV9tb2RlIG1vZGU7CiAJCSAgdCA9IFRZ UEVfQVJHX1RZUEVTICh0eXBlKTsKIAkJICBtb2RlID0gVFlQRV9NT0RFIChU UkVFX1ZBTFVFICh0KSk7Ci0JCSAgdGhpc19hcmcgPSB0YXJnZXRtLmNhbGxz LmZ1bmN0aW9uX2FyZyAoYXJnc19zb19mYXIsIG1vZGUsCi0JCQkJCQkJIFRS RUVfVkFMVUUgKHQpLCB0cnVlKTsKKwkJICB0aGlzX2FyZyA9IGZ1bmN0aW9u X2FyZyAoYXJnc19zb19mYXIsIG1vZGUsCisJCQkJCSAgIFRSRUVfVkFMVUUg KHQpLCB0cnVlKTsKIAkJICBpZiAodGhpc19hcmcgJiYgIVJFR19QICh0aGlz X2FyZykpCiAJCSAgICB0aGlzX2FyZyA9IE5VTExfUlRYOwogCQkgIGVsc2Ug aWYgKHRoaXNfYXJnID09IE5VTExfUlRYKQpAQCAtNjI4MCw4ICs2MjgwLDcg QEAgcHJlcGFyZV9jYWxsX2FyZ3VtZW50cyAoYmFzaWNfYmxvY2sgYmIsIHJ0 eF9pbnNuICppbnNuKQogCQlhcmd0eXBlID0gYnVpbGRfcG9pbnRlcl90eXBl IChhcmd0eXBlKTsKIAkJbW9kZSA9IFRZUEVfTU9ERSAoYXJndHlwZSk7CiAJ ICAgICAgfQotCSAgICByZWcgPSB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2Fy ZyAoYXJnc19zb19mYXIsIG1vZGUsCi0JCQkJCSAgICAgIGFyZ3R5cGUsIHRy dWUpOworCSAgICByZWcgPSBmdW5jdGlvbl9hcmcgKGFyZ3Nfc29fZmFyLCBt b2RlLCBhcmd0eXBlLCB0cnVlKTsKIAkgICAgaWYgKFRSRUVfQ09ERSAoYXJn dHlwZSkgPT0gUkVGRVJFTkNFX1RZUEUKIAkJJiYgSU5URUdSQUxfVFlQRV9Q IChUUkVFX1RZUEUgKGFyZ3R5cGUpKQogCQkmJiByZWcKQEAgLTYzMzUsOCAr NjMzNCw3IEBAIHByZXBhcmVfY2FsbF9hcmd1bWVudHMgKGJhc2ljX2Jsb2Nr IGJiLCBydHhfaW5zbiAqaW5zbikKIAkJCX0KIAkJICB9CiAJICAgICAgfQot CSAgICB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhcmdz X3NvX2ZhciwgbW9kZSwKLQkJCQkJCWFyZ3R5cGUsIHRydWUpOworCSAgICBm dW5jdGlvbl9hcmdfYWR2YW5jZSAoYXJnc19zb19mYXIsIG1vZGUsIGFyZ3R5 cGUsIHRydWUpOwogCSAgICB0ID0gVFJFRV9DSEFJTiAodCk7CiAJICB9CiAg ICAgICB9Ci0tIAoyLjUuMAoK --001a11c213cc102479052665602e--