From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 83504 invoked by alias); 14 Dec 2018 00:09:41 -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 83481 invoked by uid 89); 14 Dec 2018 00:09:40 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-14.3 required=5.0 tests=BAYES_20,FREEMAIL_FROM,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_SOFTFAIL,TIME_LIMIT_EXCEEDED autolearn=unavailable version=3.3.2 spammy=ba, jasonredhatcom, jason@redhat.com, bi X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 14 Dec 2018 00:09:29 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXarV-0004EZ-Ft for gcc-patches@gcc.gnu.org; Thu, 13 Dec 2018 18:57:54 -0500 Received: from mail-ot1-x344.google.com ([2607:f8b0:4864:20::344]:41627) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gXarT-000437-NC for gcc-patches@gcc.gnu.org; Thu, 13 Dec 2018 18:57:48 -0500 Received: by mail-ot1-x344.google.com with SMTP id u16so3728185otk.8 for ; Thu, 13 Dec 2018 15:57:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vcNnd/0k6TpqG8NpsBU7Bdh73ROSgtQ7cljAIKJzsqM=; b=l6kSm+5uPT6ar9TFUkGDdKApR0tHC4rRmw0A9iN+eXuikr6UXJak2hiSDi+0hP4gVO mzgjVDpHaB3ViVE41edpuOIh2GwieTq7Ur9tuIUAOXVFPXCO1rqci5HftBxD/cf86Mz/ E0OPyq1F0ePLBtVBdwSQEilnfpKJf2CEdQ2ZVGDSL3za/csvq6tnPFKbBvtdshDRYFuR yea1fikaIqLNGFOvCxwp+YJ+xJtUJEaPifv3pz5QD+lv+654nz5TPMoxAtihfmDBrplM PX0u+mAezuPpz6G7/ndmLu9W5SMcsfpVkzBvHj0Z/ZlwbogT9rwA8NNSIDK8rxyqwf3p 7QLQ== MIME-Version: 1.0 References: In-Reply-To: From: "H.J. Lu" Date: Fri, 14 Dec 2018 00:09:00 -0000 Message-ID: Subject: V5 [PATCH] C/C++: Add -Waddress-of-packed-member To: Jason Merrill Cc: "Joseph S. Myers" , Martin Sebor , GCC Patches Content-Type: multipart/mixed; boundary="000000000000278d7e057cf011a2" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::344 X-IsSubscribed: yes X-SW-Source: 2018-12/txt/msg01002.txt.bz2 --000000000000278d7e057cf011a2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 5560 On Thu, Dec 13, 2018 at 12:50 PM Jason Merrill wrote: > > On 9/25/18 11:46 AM, H.J. Lu wrote: > > On Fri, Aug 31, 2018 at 2:04 PM, Jason Merrill wrote: > >> On 07/23/2018 05:24 PM, H.J. Lu wrote: > >>> > >>> On Mon, Jun 18, 2018 at 12:26 PM, Joseph Myers > >>> wrote: > >>>> > >>>> On Mon, 18 Jun 2018, Jason Merrill wrote: > >>>> > >>>>> On Mon, Jun 18, 2018 at 11:59 AM, Joseph Myers > >>>>> wrote: > >>>>>> > >>>>>> On Mon, 18 Jun 2018, Jason Merrill wrote: > >>>>>> > >>>>>>>> + if (TREE_CODE (rhs) =3D=3D COND_EXPR) > >>>>>>>> + { > >>>>>>>> + /* Check the THEN path first. */ > >>>>>>>> + tree op1 =3D TREE_OPERAND (rhs, 1); > >>>>>>>> + context =3D check_address_of_packed_member (type, op1); > >>>>>>> > >>>>>>> > >>>>>>> This should handle the GNU extension of re-using operand 0 if ope= rand > >>>>>>> 1 is omitted. > >>>>>> > >>>>>> > >>>>>> Doesn't that just use a SAVE_EXPR? > >>>>> > >>>>> > >>>>> Hmm, I suppose it does, but many places in the compiler seem to exp= ect > >>>>> that it produces a COND_EXPR with TREE_OPERAND 1 as NULL_TREE. > >>>> > >>>> > >>>> Maybe that's used somewhere inside the C++ front end. For C a SAVE_= EXPR > >>>> is produced directly. > >>> > >>> > >>> Here is the updated patch. Changes from the last one: > >>> > >>> 1. Handle COMPOUND_EXPR. > >>> 2. Fixed typos in comments. > >>> 3. Combined warn_for_pointer_of_packed_member and > >>> warn_for_address_of_packed_member into > >>> warn_for_address_or_pointer_of_packed_member. > >> > >> > >>> c.i:4:33: warning: converting a packed =E2=80=98struct C *=E2=80=99 p= ointer increases the > >>> alignment of =E2=80=98long int *=E2=80=99 pointer from 1 to 8 [-Waddr= ess-of-packed-member] > >> > >> > >> I think this would read better as > >> > >> c.i:4:33: warning: converting a packed =E2=80=98struct C *=E2=80=99 po= inter (alignment 1) to > >> =E2=80=98long int *=E2=80=99 (alignment 8) may result in an unaligned = pointer value > >> [-Waddress-of-packed-member] > > > > Fixed. > > > >>> + while (TREE_CODE (base) =3D=3D ARRAY_REF) > >>> + base =3D TREE_OPERAND (base, 0); > >>> + if (TREE_CODE (base) !=3D COMPONENT_REF) > >>> + return NULL_TREE; > >> > >> > >> Are you deliberately not handling the other handled_component_p cases?= If > >> so, there should be a comment. > > > > I changed it to > > > > while (handled_component_p (base)) > > { > > enum tree_code code =3D TREE_CODE (base); > > if (code =3D=3D COMPONENT_REF) > > break; > > switch (code) > > { > > case ARRAY_REF: > > base =3D TREE_OPERAND (base, 0); > > break; > > default: > > /* FIXME: Can it ever happen? */ > > gcc_unreachable (); > > break; > > } > > } > > > > Is there a testcase to trigger this ICE? I couldn't find one. > > You can take the address of an element of complex: > > __complex int i; > int *p =3D &__real(i); > > You may get VIEW_CONVERT_EXPR with location wrappers. Fixed. I replaced gcc_unreachable with return NULL_TREE; > >>> + /* Check alignment of the object. */ > >>> + if (TREE_CODE (object) =3D=3D COMPONENT_REF) > >>> + { > >>> + field =3D TREE_OPERAND (object, 1); > >>> + if (TREE_CODE (field) =3D=3D FIELD_DECL && DECL_PACKED (field)) > >>> + { > >>> + type_align =3D TYPE_ALIGN (type); > >>> + context =3D DECL_CONTEXT (field); > >>> + record_align =3D TYPE_ALIGN (context); > >>> + if ((record_align % type_align) !=3D 0) > >>> + return context; > >>> + } > >>> + } > >> > >> > >> Why doesn't this recurse? What if you have a packed field three > >> COMPONENT_REFs down? > > > > My patch works on > > [hjl@gnu-cfl-1 pr51628-4]$ cat x.i > > struct A { int i; } __attribute__ ((packed)); > > struct B { struct A a; }; > > struct C { struct B b; }; > > > > extern struct C *p; > > > > int* g8 (void) { return &p->b.a.i; } > > [hjl@gnu-cfl-1 pr51628-4]$ make x.s > > /export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/xgcc > > -B/export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/ -O2 > > -S x.i > > x.i: In function =E2=80=98g8=E2=80=99: > > x.i:7:25: warning: taking address of packed member of =E2=80=98struct A= =E2=80=99 may > > result in an unaligned pointer value [-Waddress-of-packed-member] > > 7 | int* g8 (void) { return &p->b.a.i; } > > | ^~~~~~~~~ > > [hjl@gnu-cfl-1 pr51628-4]$ > > > > If it isn't what you had in mind, can you give me a testcase? > > In that testcase, 'i' is the top COMPONENT_EXPR. What I was talking > about would be more like > > struct A { int i; }; > struct B { struct A a; }; > struct C { struct B b __attribute__ ((packed)); }; > > extern struct C *p; > > int* g8 (void) { return &p->b.a.i; } > Fixed with a recursive call: tree context =3D check_alignment_of_packed_member (type, field); if (context) return context; /* Check alignment of the object. */ while (TREE_CODE (object) =3D=3D COMPONENT_REF) { field =3D TREE_OPERAND (object, 1); context =3D check_alignment_of_packed_member (type, field); if (context) return context; object =3D TREE_OPERAND (object, 0); } return NULL_TREE; Here is the updated patch. Tested on i686 and x86-64. OK for trunk? Thanks. --=20 H.J. --000000000000278d7e057cf011a2 Content-Type: text/x-patch; charset="UTF-8"; name="0001-C-C-Add-Waddress-of-packed-member.patch" Content-Disposition: attachment; filename="0001-C-C-Add-Waddress-of-packed-member.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jpn9efta0 Content-length: 67255 RnJvbSBhMmQxMWFiMjg0ZmE5ZDA0YjM4YzA1YzlkZjZhNjE1Zjk1MWIzMDRk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTIgSmFuIDIwMTggMjE6 MTI6MDUgLTA4MDAKU3ViamVjdDogW1BBVENIXSBDL0MrKzogQWRkIC1XYWRk cmVzcy1vZi1wYWNrZWQtbWVtYmVyCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRy YW5zZmVyLUVuY29kaW5nOiA4Yml0CgpXaGVuIGFkZHJlc3Mgb2YgcGFja2Vk IG1lbWJlciBvZiBzdHJ1Y3Qgb3IgdW5pb24gaXMgdGFrZW4sIGl0IG1heSBy ZXN1bHQKaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUuICBUaGlzIHBh dGNoIGFkZHMgLVdhZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIKdG8gY2hlY2sg YWxpZ25tZW50IGF0IHBvaW50ZXIgYXNzaWdubWVudCBhbmQgd2FybiB1bmFs aWduZWQgYWRkcmVzcyBhcwp3ZWxsIGFzIHVuYWxpZ25lZCBwb2ludGVyOgoK JCBjYXQgeC5pCnN0cnVjdCBwYWlyX3QKewogIGNoYXIgYzsKICBpbnQgaTsK fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CgpleHRlcm4gc3RydWN0IHBh aXJfdCBwOwppbnQgKmFkZHIgPSAmcC5pOwokIGdjYyAtTzIgLVMgeC5pCngu aTo4OjEzOiB3YXJuaW5nOiB0YWtpbmcgYWRkcmVzcyBvZiBwYWNrZWQgbWVt YmVyIG9mIOKAmHN0cnVjdCBwYWlyX3TigJkgbWF5IHJlc3VsdCBpbiBhbiB1 bmFsaWduZWQgcG9pbnRlciB2YWx1ZSBbLVdhZGRyZXNzLW9mLXBhY2tlZC1t ZW1iZXJdCjggfCBpbnQgKmFkZHIgPSAmcC5pOwogIHwgICAgICAgICAgICAg XgoKJCBjYXQgYy5pCnN0cnVjdCBCIHsgaW50IGk7IH07CnN0cnVjdCBDIHsg c3RydWN0IEIgYjsgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7Cgpsb25n KiBnOCAoc3RydWN0IEMgKnApIHsgcmV0dXJuIHA7IH0KJCBnY2MgLU8yIC1T IGMuaSAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzCmMuaTogSW4g ZnVuY3Rpb24g4oCYZzjigJk6CmMuaTo0OjE4OiB3YXJuaW5nOiBjb252ZXJ0 aW5nIGEgcGFja2VkIOKAmHN0cnVjdCBDICrigJkgcG9pbnRlciAoYWxpZ25t ZW50IDEpIHRvIOKAmGxvbmcgaW50ICrigJkgKGFsaWdubWVudCA4KSBtYXkg bWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSBbLVdh ZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXJdCjQgfCBsb25nKiBnOCAoc3RydWN0 IEMgKnApIHsgcmV0dXJuIHA7IH0KICB8ICAgICAgICAgICAgICAgICAgXgpj Lmk6Mjo4OiBub3RlOiBkZWZpbmVkIGhlcmUKMiB8IHN0cnVjdCBDIHsgc3Ry dWN0IEIgYjsgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgfCAgICAg ICAgXgokCgpUaGlzIHdhcm5pbmcgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiAg U2luY2UgcmVhZF9lbmNvZGVkX3ZhbHVlX3dpdGhfYmFzZQppbiB1bndpbmQt cGUuaCBoYXMKCiAgdW5pb24gdW5hbGlnbmVkCiAgICB7CiAgICAgIHZvaWQg KnB0cjsKICAgICAgdW5zaWduZWQgdTIgX19hdHRyaWJ1dGVfXyAoKG1vZGUg KEhJKSkpOwogICAgICB1bnNpZ25lZCB1NCBfX2F0dHJpYnV0ZV9fICgobW9k ZSAoU0kpKSk7CiAgICAgIHVuc2lnbmVkIHU4IF9fYXR0cmlidXRlX18gKCht b2RlIChESSkpKTsKICAgICAgc2lnbmVkIHMyIF9fYXR0cmlidXRlX18gKCht b2RlIChISSkpKTsKICAgICAgc2lnbmVkIHM0IF9fYXR0cmlidXRlX18gKCht b2RlIChTSSkpKTsKICAgICAgc2lnbmVkIHM4IF9fYXR0cmlidXRlX18gKCht b2RlIChESSkpKTsKICAgIH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykp OwogIF9VbndpbmRfSW50ZXJuYWxfUHRyIHJlc3VsdDsKCmFuZCBHQ0Mgd2Fy bnM6CgpnY2MvbGliZ2NjL3Vud2luZC1wZS5oOjIxMDozNzogd2FybmluZzog dGFraW5nIGFkZHJlc3Mgb2YgcGFja2VkIG1lbWJlciBvZiAndW5pb24gdW5h bGlnbmVkJyBtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZh bHVlIFstV2FkZHJlc3Mtb2YtcGFja2VkLW1lbWJlcl0KICAgIHJlc3VsdCA9 IChfVW53aW5kX0ludGVybmFsX1B0cikgdS0+cHRyOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCndlIG5lZWQgdG8gYWRkIEdDQyBw cmFnbWEgdG8gaWdub3JlIC1XYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyLgoK Z2NjL2MvCgoJUFIgYy81MTYyOAoJKiBkb2MvaW52b2tlLnRleGk6IERvY3Vt ZW50IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyLgoKZ2NjL2MtZmFt aWx5LwoKCVBSIGMvNTE2MjgKCSogYy1jb21tb24uaCAod2Fybl9mb3JfYWRk cmVzc19vcl9wb2ludGVyX29mX3BhY2tlZF9tZW1iZXIpOiBOZXcuCgkqIGMt d2Fybi5jIChjaGVja19hbGlnbm1lbnRfb2ZfcGFja2VkX21lbWJlcik6IE5l dyBmdW5jdGlvbi4KCShjaGVja19hZGRyZXNzX29mX3BhY2tlZF9tZW1iZXIp OiBMaWtld2lzZS4KCShjaGVja19hbmRfd2Fybl9hZGRyZXNzX29mX3BhY2tl ZF9tZW1iZXIpOiBMaWtld2lzZS4KCSh3YXJuX2Zvcl9hZGRyZXNzX29yX3Bv aW50ZXJfb2ZfcGFja2VkX21lbWJlcik6IExpa2V3aXNlLgoJKiBjLm9wdDog QWRkIC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyLgoKZ2NjL2MvCgoJ UFIgYy81MTYyOAoJKiBjLXR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25t ZW50KTogQ2FsbAoJd2Fybl9mb3JfYWRkcmVzc19vcl9wb2ludGVyX29mX3Bh Y2tlZF9tZW1iZXIuCgpnY2MvY3AvCgoJUFIgYy81MTYyOAoJKiBjYWxsLmMg KGNvbnZlcnRfZm9yX2FyZ19wYXNzaW5nKTogQ2FsbAoJd2Fybl9mb3JfYWRk cmVzc19vcl9wb2ludGVyX29mX3BhY2tlZF9tZW1iZXIuCgkqIHR5cGVjay5j IChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgpnY2MvdGVz dHN1aXRlLwoKCVBSIGMvNTE2MjgKCSogYy1jKystY29tbW9uL3ByNTE2Mjgt MS5jOiBOZXcgdGVzdC4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtMi5jOiBM aWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtMy5jOiBMaWtld2lz ZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtNC5jOiBMaWtld2lzZS4KCSog Yy1jKystY29tbW9uL3ByNTE2MjgtNS5jOiBMaWtld2lzZS4KCSogYy1jKyst Y29tbW9uL3ByNTE2MjgtNi5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9u L3ByNTE2MjgtNy5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2 MjgtOC5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtOS5j OiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtMTAuYzogTGlr ZXdpc2UuCgkqIGMtYysrLWNvbW1vbi9wcjUxNjI4LTExLmM6IExpa2V3aXNl LgoJKiBjLWMrKy1jb21tb24vcHI1MTYyOC0xMi5jOiBMaWtld2lzZS4KCSog Yy1jKystY29tbW9uL3ByNTE2MjgtMTMuYzogTGlrZXdpc2UuCgkqIGMtYysr LWNvbW1vbi9wcjUxNjI4LTE0LmM6IExpa2V3aXNlLgoJKiBjLWMrKy1jb21t b24vcHI1MTYyOC0xNS5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3By NTE2MjgtMjYuYzogTGlrZXdpc2UuCgkqIGMtYysrLWNvbW1vbi9wcjUxNjI4 LTI3LmM6IExpa2V3aXNlLgoJKiBjLWMrKy1jb21tb24vcHI1MTYyOC0yOC5j OiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3ByNTE2MjgtMjkuYzogTGlr ZXdpc2UuCgkqIGdjYy5kZy9wcjUxNjI4LTE3LmM6IExpa2V3aXNlLgoJKiBn Y2MuZGcvcHI1MTYyOC0xOC5jOiBMaWtld2lzZS4KCSogZ2NjLmRnL3ByNTE2 MjgtMTkuYzogTGlrZXdpc2UuCgkqIGdjYy5kZy9wcjUxNjI4LTIwLmM6IExp a2V3aXNlLgoJKiBnY2MuZGcvcHI1MTYyOC0yMS5jOiBMaWtld2lzZS4KCSog Z2NjLmRnL3ByNTE2MjgtMjIuYzogTGlrZXdpc2UuCgkqIGdjYy5kZy9wcjUx NjI4LTIzLmM6IExpa2V3aXNlLgoJKiBnY2MuZGcvcHI1MTYyOC0yNC5jOiBM aWtld2lzZS4KCSogZ2NjLmRnL3ByNTE2MjgtMjUuYzogTGlrZXdpc2UuCgkq IGMtYysrLWNvbW1vbi9hc2FuL21pc2FsaWduLTEuYzogQWRkCgktV25vLWFk ZHJlc3Mtb2YtcGFja2VkLW1lbWJlci4KCSogYy1jKystY29tbW9uL2FzYW4v bWlzYWxpZ24tMi5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3Vic2Fu L2FsaWduLTIuYzogTGlrZXdpc2UuCgkqIGMtYysrLWNvbW1vbi91YnNhbi9h bGlnbi00LmM6IExpa2V3aXNlLgoJKiBjLWMrKy1jb21tb24vdWJzYW4vYWxp Z24tNi5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL3Vic2FuL2FsaWdu LTcuYzogTGlrZXdpc2UuCgkqIGMtYysrLWNvbW1vbi91YnNhbi9hbGlnbi04 LmM6IExpa2V3aXNlLgoJKiBjLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tMTAu YzogTGlrZXdpc2UuCgkqIGcrKy5kZy91YnNhbi9hbGlnbi0yLkM6IExpa2V3 aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvYXZ4NTEyYnctdm1vdmRxdTE2LTIu YzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvaTM4Ni9hdng1MTJmLXZtb3Zk cXUzMi0yLmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvYXZ4NTEy Zi12bW92ZHF1NjQtMi5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9pMzg2 L2F2eDUxMnZsLXZtb3ZkcXUxNi0yLmM6IExpa2V3aXNlLgoJKiBnY2MudGFy Z2V0L2kzODYvYXZ4NTEydmwtdm1vdmRxdTMyLTIuYzogTGlrZXdpc2UuCgkq IGdjYy50YXJnZXQvaTM4Ni9hdng1MTJ2bC12bW92ZHF1NjQtMi5jOiBMaWtl d2lzZS4KCmxpYmdjYy8KCgkqIHVud2luZC1wZS5oIChyZWFkX2VuY29kZWRf dmFsdWVfd2l0aF9iYXNlKTogQWRkIEdDQyBwcmFnbWEKCXRvIGlnbm9yZSAt V2FkZHJlc3Mtb2YtcGFja2VkLW1lbWJlci4KLS0tCiBnY2MvYy1mYW1pbHkv Yy1jb21tb24uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2Nj L2MtZmFtaWx5L2Mtd2Fybi5jICAgICAgICAgICAgICAgICAgICAgICAgIHwg MTkyICsrKysrKysrKysrKysrKysrKwogZ2NjL2MtZmFtaWx5L2Mub3B0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIGdjYy9jL2MtdHlw ZWNrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQog Z2NjL2NwL2NhbGwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAzICsKIGdjYy9jcC90eXBlY2suYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArCiBnY2MvZG9jL2ludm9rZS50ZXhpICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDggKwogZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vYXNhbi9taXNhbGlnbi0xLmMgIHwgICAyICstCiBnY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hc2FuL21pc2FsaWduLTIuYyAgfCAg IDIgKy0KIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMS5j ICAgICAgICB8ICAyOSArKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L3ByNTE2MjgtMTAuYyAgICAgICB8ICAyNCArKysKIGdjYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL3ByNTE2MjgtMTEuYyAgICAgICB8ICAxNyArKwogZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMi5jICAgICAgIHwg IDE4ICsrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTEz LmMgICAgICAgfCAgIDkgKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v cHI1MTYyOC0xNC5jICAgICAgIHwgICA5ICsKIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3ByNTE2MjgtMTUuYyAgICAgICB8ICAxNCArKwogZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xNi5jICAgICAgIHwgIDEz ICsrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTIuYyAg ICAgICAgfCAgMjkgKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9w cjUxNjI4LTI2LmMgICAgICAgfCAgMzMgKysrCiBnY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9wcjUxNjI4LTI3LmMgICAgICAgfCAgMTIgKysKIGdjYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMjguYyAgICAgICB8ICAx NyArKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yOS5j ICAgICAgIHwgIDE2ICsrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9w cjUxNjI4LTMuYyAgICAgICAgfCAgMzUgKysrKwogZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vcHI1MTYyOC00LmMgICAgICAgIHwgIDM1ICsrKysKIGdj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNS5jICAgICAgICB8 ICAzNSArKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4 LTYuYyAgICAgICAgfCAgMzUgKysrKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vcHI1MTYyOC03LmMgICAgICAgIHwgIDI5ICsrKwogZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC04LmMgICAgICAgIHwgIDM2ICsr KysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtOS5jICAg ICAgICB8ICAzNiArKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91 YnNhbi9hbGlnbi0xMC5jICAgfCAgIDIgKy0KIGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3Vic2FuL2FsaWduLTIuYyAgICB8ICAgMiArLQogZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tNC5jICAgIHwgICAy ICstCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi02 LmMgICAgfCAgIDIgKy0KIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vi c2FuL2FsaWduLTcuYyAgICB8ICAgMiArLQogZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vdWJzYW4vYWxpZ24tOC5jICAgIHwgICAyICstCiBnY2MvdGVz dHN1aXRlL2crKy5kZy91YnNhbi9hbGlnbi0yLkMgICAgICAgICAgfCAgIDIg Ky0KIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTcuYyAgICAgICAg ICAgICB8ICAxMCArCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTE4 LmMgICAgICAgICAgICAgfCAgMjMgKysrCiBnY2MvdGVzdHN1aXRlL2djYy5k Zy9wcjUxNjI4LTE5LmMgICAgICAgICAgICAgfCAgMjYgKysrCiBnY2MvdGVz dHN1aXRlL2djYy5kZy9wcjUxNjI4LTIwLmMgICAgICAgICAgICAgfCAgMTEg KwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MTYyOC0yMS5jICAgICAgICAg ICAgIHwgIDExICsKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjIu YyAgICAgICAgICAgICB8ICAgOSArCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9w cjUxNjI4LTIzLmMgICAgICAgICAgICAgfCAgIDkgKwogZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcHI1MTYyOC0yNC5jICAgICAgICAgICAgIHwgIDEwICsKIGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjUuYyAgICAgICAgICAgICB8 ICAgOSArCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmJ3LXZtb3ZkcXUx Ni0yLmMgICAgfCAgIDIgKy0KIC4uLi9nY2MudGFyZ2V0L2kzODYvYXZ4NTEy Zi12bW92ZHF1MzItMi5jICAgICB8ICAgMiArLQogLi4uL2djYy50YXJnZXQv aTM4Ni9hdng1MTJmLXZtb3ZkcXU2NC0yLmMgICAgIHwgICAyICstCiAuLi4v Z2NjLnRhcmdldC9pMzg2L2F2eDUxMnZsLXZtb3ZkcXUxNi0yLmMgICAgfCAg IDIgKy0KIC4uLi9nY2MudGFyZ2V0L2kzODYvYXZ4NTEydmwtdm1vdmRxdTMy LTIuYyAgICB8ICAgMiArLQogLi4uL2djYy50YXJnZXQvaTM4Ni9hdng1MTJ2 bC12bW92ZHF1NjQtMi5jICAgIHwgICAyICstCiBsaWJnY2MvdW53aW5kLXBl LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogNTIgZmls ZXMgY2hhbmdlZCwgODM5IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL3ByNTE2MjgtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMC5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vcHI1MTYyOC0xMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMy5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xNC5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vcHI1MTYyOC0xNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xNi5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9wcjUxNjI4LTI2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTI3LmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTI4LmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9wcjUxNjI4LTI5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTMuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNC5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v cHI1MTYyOC01LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9wcjUxNjI4LTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1 MTYyOC04LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9wcjUxNjI4LTkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTcuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTguYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2Mjgt MTkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRn L3ByNTE2MjgtMjAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLmRnL3ByNTE2MjgtMjEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjIuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjMuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2Mjgt MjQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRn L3ByNTE2MjgtMjUuYwoKZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWNv bW1vbi5oIGIvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmgKaW5kZXggNDE4NzM0 M2MwYjMuLmViMGFkNjA5NDBkIDEwMDY0NAotLS0gYS9nY2MvYy1mYW1pbHkv Yy1jb21tb24uaAorKysgYi9nY2MvYy1mYW1pbHkvYy1jb21tb24uaApAQCAt MTI4Miw2ICsxMjgyLDcgQEAgZXh0ZXJuIHZvaWQgY19kb19zd2l0Y2hfd2Fy bmluZ3MgKHNwbGF5X3RyZWUsIGxvY2F0aW9uX3QsIHRyZWUsIHRyZWUsIGJv b2wsCiAJCQkJICBib29sKTsKIGV4dGVybiB2b2lkIHdhcm5fZm9yX29taXR0 ZWRfY29uZG9wIChsb2NhdGlvbl90LCB0cmVlKTsKIGV4dGVybiBib29sIHdh cm5fZm9yX3Jlc3RyaWN0ICh1bnNpZ25lZCwgdHJlZSAqLCB1bnNpZ25lZCk7 CitleHRlcm4gdm9pZCB3YXJuX2Zvcl9hZGRyZXNzX29yX3BvaW50ZXJfb2Zf cGFja2VkX21lbWJlciAoYm9vbCwgdHJlZSwgdHJlZSk7CiAKIC8qIFBsYWNl cyB3aGVyZSBhbiBsdmFsdWUsIG9yIG1vZGlmaWFibGUgbHZhbHVlLCBtYXkg YmUgcmVxdWlyZWQuCiAgICBVc2VkIHRvIHNlbGVjdCBkaWFnbm9zdGljIG1l c3NhZ2VzIGluIGx2YWx1ZV9lcnJvciBhbmQKZGlmZiAtLWdpdCBhL2djYy9j LWZhbWlseS9jLXdhcm4uYyBiL2djYy9jLWZhbWlseS9jLXdhcm4uYwppbmRl eCA3OThhZDFiY2IzOS4uNjE1MTM0Y2ZkYWMgMTAwNjQ0Ci0tLSBhL2djYy9j LWZhbWlseS9jLXdhcm4uYworKysgYi9nY2MvYy1mYW1pbHkvYy13YXJuLmMK QEAgLTI2MTYsMyArMjYxNiwxOTUgQEAgd2Fybl9mb3JfbXVsdGlzdGF0ZW1l bnRfbWFjcm9zIChsb2NhdGlvbl90IGJvZHlfbG9jLCBsb2NhdGlvbl90IG5l eHRfbG9jLAogICAgIGluZm9ybSAoZ3VhcmRfbG9jLCAic29tZSBwYXJ0cyBv ZiBtYWNybyBleHBhbnNpb24gYXJlIG5vdCBndWFyZGVkIGJ5ICIKIAkgICAg InRoaXMgJXFzIGNsYXVzZSIsIGd1YXJkX3RpbmZvX3RvX3N0cmluZyAoa2V5 d29yZCkpOwogfQorCisvKiBSZXR1cm4gc3RydWN0IG9yIHVuaW9uIHR5cGUg aWYgdGhlIGFsaWdubWVudCBvZiBkYXRhIG1lbWViZXIsIEZJRUxELAorICAg aXMgbGVzcyB0aGFuIHRoZSBhbGlnbm1lbnQgb2YgVFlQRS4gIE90aGVyd2lz ZSwgcmV0dXJuIE5VTExfVFJFRS4gICovCisKK3N0YXRpYyB0cmVlCitjaGVj a19hbGlnbm1lbnRfb2ZfcGFja2VkX21lbWJlciAodHJlZSB0eXBlLCB0cmVl IGZpZWxkKQoreworICAvKiBDaGVjayBhbGlnbm1lbnQgb2YgdGhlIGRhdGEg bWVtYmVyLiAgKi8KKyAgaWYgKFRSRUVfQ09ERSAoZmllbGQpID09IEZJRUxE X0RFQ0wKKyAgICAgICYmIChERUNMX1BBQ0tFRCAoZmllbGQpCisJICB8fCBU WVBFX1BBQ0tFRCAoVFJFRV9UWVBFIChmaWVsZCkpKSkKKyAgICB7CisgICAg ICAvKiBDaGVjayB0aGUgZXhwZWN0ZWQgYWxpZ25tZW50IGFnYWluc3QgdGhl IGZpZWxkIGFsaWdubWVudC4gICovCisgICAgICB1bnNpZ25lZCBpbnQgdHlw ZV9hbGlnbiA9IFRZUEVfQUxJR04gKHR5cGUpOworICAgICAgdHJlZSBjb250 ZXh0ID0gREVDTF9DT05URVhUIChmaWVsZCk7CisgICAgICB1bnNpZ25lZCBp bnQgcmVjb3JkX2FsaWduID0gVFlQRV9BTElHTiAoY29udGV4dCk7CisgICAg ICBpZiAoKHJlY29yZF9hbGlnbiAlIHR5cGVfYWxpZ24pICE9IDApCisJcmV0 dXJuIGNvbnRleHQ7CisgICAgICB0cmVlIGZpZWxkX29mZiA9IGJ5dGVfcG9z aXRpb24gKGZpZWxkKTsKKyAgICAgIGlmICghbXVsdGlwbGVfb2ZfcCAoVFJF RV9UWVBFIChmaWVsZF9vZmYpLCBmaWVsZF9vZmYsCisJCQkgIHNpemVfaW50 ICh0eXBlX2FsaWduIC8gQklUU19QRVJfVU5JVCkpKQorCXJldHVybiBjb250 ZXh0OworICAgIH0KKworICByZXR1cm4gTlVMTF9UUkVFOworfQorCisvKiBS ZXR1cm4gc3RydWN0IG9yIHVuaW9uIHR5cGUgaWYgdGhlIHJpZ2h0IGhhbmQg dmFsdWUsIFJIUywgdGFrZXMgdGhlCisgICB1bmFsaWduZWQgYWRkcmVzcyBv ZiBwYWNrZWQgbWVtYmVyIG9mIHN0cnVjdCBvciB1bmlvbiB3aGVuIGFzc2ln bmluZworICAgdG8gVFlQRS4gIE90aGVyd2lzZSwgcmV0dXJuIE5VTExfVFJF RS4gICovCisKK3N0YXRpYyB0cmVlCitjaGVja19hZGRyZXNzX29mX3BhY2tl ZF9tZW1iZXIgKHRyZWUgdHlwZSwgdHJlZSByaHMpCit7CisgIHRyZWUgYmFz ZTsKKyAgdHJlZSBvYmplY3Q7CisgIHRyZWUgZmllbGQ7CisKKyAgaWYgKElO RElSRUNUX1JFRl9QIChyaHMpKQorICAgIHJocyA9IFRSRUVfT1BFUkFORCAo cmhzLCAwKTsKKworICBzd2l0Y2ggKFRSRUVfQ09ERSAocmhzKSkKKyAgICB7 CisgICAgY2FzZSBBRERSX0VYUFI6CisgICAgICBiYXNlID0gVFJFRV9PUEVS QU5EIChyaHMsIDApOworICAgICAgd2hpbGUgKGhhbmRsZWRfY29tcG9uZW50 X3AgKGJhc2UpKQorCXsKKwkgIGVudW0gdHJlZV9jb2RlIGNvZGUgPSBUUkVF X0NPREUgKGJhc2UpOworCSAgaWYgKGNvZGUgPT0gQ09NUE9ORU5UX1JFRikK KwkgICAgYnJlYWs7CisJICBzd2l0Y2ggKGNvZGUpCisJICAgIHsKKwkgICAg Y2FzZSBBUlJBWV9SRUY6CisJICAgICAgYmFzZSA9IFRSRUVfT1BFUkFORCAo YmFzZSwgMCk7CisJICAgICAgYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJICAg ICAgcmV0dXJuIE5VTExfVFJFRTsKKwkgICAgfQorCX0KKyAgICAgIGlmIChU UkVFX0NPREUgKGJhc2UpICE9IENPTVBPTkVOVF9SRUYpCisJcmV0dXJuIE5V TExfVFJFRTsKKyAgICAgIG9iamVjdCA9IFRSRUVfT1BFUkFORCAoYmFzZSwg MCk7CisgICAgICBmaWVsZCA9IFRSRUVfT1BFUkFORCAoYmFzZSwgMSk7Cisg ICAgICBicmVhazsKKyAgICBjYXNlIENPTVBPTkVOVF9SRUY6CisgICAgICBv YmplY3QgPSBUUkVFX09QRVJBTkQgKHJocywgMCk7CisgICAgICBmaWVsZCA9 IFRSRUVfT1BFUkFORCAocmhzLCAxKTsKKyAgICAgIGJyZWFrOworICAgIGRl ZmF1bHQ6CisgICAgICByZXR1cm4gTlVMTF9UUkVFOworICAgIH0KKworICB0 cmVlIGNvbnRleHQgPSBjaGVja19hbGlnbm1lbnRfb2ZfcGFja2VkX21lbWJl ciAodHlwZSwgZmllbGQpOworICBpZiAoY29udGV4dCkKKyAgICByZXR1cm4g Y29udGV4dDsKKworICAvKiBDaGVjayBhbGlnbm1lbnQgb2YgdGhlIG9iamVj dC4gICovCisgIHdoaWxlIChUUkVFX0NPREUgKG9iamVjdCkgPT0gQ09NUE9O RU5UX1JFRikKKyAgICB7CisgICAgICBmaWVsZCA9IFRSRUVfT1BFUkFORCAo b2JqZWN0LCAxKTsKKyAgICAgIGNvbnRleHQgPSBjaGVja19hbGlnbm1lbnRf b2ZfcGFja2VkX21lbWJlciAodHlwZSwgZmllbGQpOworICAgICAgaWYgKGNv bnRleHQpCisJcmV0dXJuIGNvbnRleHQ7CisgICAgICBvYmplY3QgPSBUUkVF X09QRVJBTkQgKG9iamVjdCwgMCk7CisgICAgfQorCisgIHJldHVybiBOVUxM X1RSRUU7Cit9CisKKy8qIENoZWNrIGFuZCB3YXJuIGlmIHRoZSByaWdodCBo YW5kIHZhbHVlLCBSSFMsIHRha2VzIHRoZSB1bmFsaWduZWQKKyAgIGFkZHJl c3Mgb2YgcGFja2VkIG1lbWJlciBvZiBzdHJ1Y3Qgb3IgdW5pb24gd2hlbiBh c3NpZ25pbmcgdG8gVFlQRS4gICovCisKK3N0YXRpYyB2b2lkCitjaGVja19h bmRfd2Fybl9hZGRyZXNzX29mX3BhY2tlZF9tZW1iZXIgKHRyZWUgdHlwZSwg dHJlZSByaHMpCit7CisgIGlmIChUUkVFX0NPREUgKHJocykgIT0gQ09ORF9F WFBSKQorICAgIHsKKyAgICAgIHRyZWUgY29udGV4dCA9IGNoZWNrX2FkZHJl c3Nfb2ZfcGFja2VkX21lbWJlciAodHlwZSwgcmhzKTsKKyAgICAgIGlmIChj b250ZXh0KQorCXsKKwkgIGxvY2F0aW9uX3QgbG9jID0gRVhQUl9MT0NfT1Jf TE9DIChyaHMsIGlucHV0X2xvY2F0aW9uKTsKKwkgIHdhcm5pbmdfYXQgKGxv YywgT1BUX1dhZGRyZXNzX29mX3BhY2tlZF9tZW1iZXIsCisJCSAgICAgICJ0 YWtpbmcgYWRkcmVzcyBvZiBwYWNrZWQgbWVtYmVyIG9mICVxVCBtYXkgcmVz dWx0ICIKKwkJICAgICAgImluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVl IiwKKwkJICAgICAgY29udGV4dCk7CisJfQorICAgICAgcmV0dXJuOworICAg IH0KKworICAvKiBDaGVjayB0aGUgVEhFTiBwYXRoLiAgKi8KKyAgY2hlY2tf YW5kX3dhcm5fYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyICh0eXBlLCBUUkVF X09QRVJBTkQgKHJocywgMSkpOworCisgIC8qIENoZWNrIHRoZSBFTFNFIHBh dGguICAqLworICBjaGVja19hbmRfd2Fybl9hZGRyZXNzX29mX3BhY2tlZF9t ZW1iZXIgKHR5cGUsIFRSRUVfT1BFUkFORCAocmhzLCAyKSk7Cit9CisKKy8q IFdhcm4gaWYgdGhlIHJpZ2h0IGhhbmQgdmFsdWUsIFJIUzoKKyAgIDEuIEZv ciBDT05WRVJUX1AgPT0gdHJ1ZSwgaXMgYSBwb2ludGVyIHZhbHVlIHdoaWNo IGlzbid0IGFsaWduZWQgdG8gYQorICAgICAgcG9pbnRlciB0eXBlIFRZUEUu CisgICAyLiBGb3IgQ09OVkVSVF9QID09IGZhbHNlLCBpcyBhbiBhZGRyZXNz IHdoaWNoIHRha2VzIHRoZSB1bmFsaWduZWQKKyAgICAgIGFkZHJlc3Mgb2Yg cGFja2VkIG1lbWJlciBvZiBzdHJ1Y3Qgb3IgdW5pb24gd2hlbiBhc3NpZ25p bmcgdG8gVFlQRS4KKyovCisKK3ZvaWQKK3dhcm5fZm9yX2FkZHJlc3Nfb3Jf cG9pbnRlcl9vZl9wYWNrZWRfbWVtYmVyIChib29sIGNvbnZlcnRfcCwgdHJl ZSB0eXBlLAorCQkJCQkgICAgICB0cmVlIHJocykKK3sKKyAgaWYgKCF3YXJu X2FkZHJlc3Nfb2ZfcGFja2VkX21lbWJlcikKKyAgICByZXR1cm47CisKKyAg LyogRG9uJ3Qgd2FybiBpZiB3ZSBkb24ndCBhc3NpZ24gUkhTIHRvIGEgcG9p bnRlci4gICovCisgIGlmICghUE9JTlRFUl9UWVBFX1AgKHR5cGUpKQorICAg IHJldHVybjsKKworICB3aGlsZSAoVFJFRV9DT0RFIChyaHMpID09IENPTVBP VU5EX0VYUFIpCisgICAgcmhzID0gVFJFRV9PUEVSQU5EIChyaHMsIDEpOwor CisgIGlmIChjb252ZXJ0X3ApCisgICAgeworICAgICAgYm9vbCByaHNwb2lu dGVyX3A7CisgICAgICB0cmVlIHJoc3R5cGU7CisKKyAgICAgIC8qIENoZWNr IHRoZSBvcmlnaW5hbCB0eXBlIG9mIFJIUy4gICovCisgICAgICBzd2l0Y2gg KFRSRUVfQ09ERSAocmhzKSkKKwl7CisJY2FzZSBQQVJNX0RFQ0w6CisJY2Fz ZSBWQVJfREVDTDoKKwkgIHJoc3R5cGUgPSBUUkVFX1RZUEUgKHJocyk7CisJ ICByaHNwb2ludGVyX3AgPSBQT0lOVEVSX1RZUEVfUCAocmhzdHlwZSk7CisJ ICBicmVhazsKKwljYXNlIE5PUF9FWFBSOgorCSAgcmhzID0gVFJFRV9PUEVS QU5EIChyaHMsIDApOworCSAgaWYgKFRSRUVfQ09ERSAocmhzKSA9PSBBRERS X0VYUFIpCisJICAgIHJocyA9IFRSRUVfT1BFUkFORCAocmhzLCAwKTsKKwkg IHJoc3R5cGUgPSBUUkVFX1RZUEUgKHJocyk7CisJICByaHNwb2ludGVyX3Ag PSBUUkVFX0NPREUgKHJoc3R5cGUpID09IEFSUkFZX1RZUEU7CisJICBicmVh azsKKwlkZWZhdWx0OgorCSAgcmV0dXJuOworCX0KKworICAgICAgaWYgKHJo c3BvaW50ZXJfcCAmJiBUWVBFX1BBQ0tFRCAoVFJFRV9UWVBFIChyaHN0eXBl KSkpCisJeworCSAgdW5zaWduZWQgaW50IHR5cGVfYWxpZ24gPSBUWVBFX0FM SUdOX1VOSVQgKFRSRUVfVFlQRSAodHlwZSkpOworCSAgdW5zaWduZWQgaW50 IHJoc19hbGlnbiA9IFRZUEVfQUxJR05fVU5JVCAoVFJFRV9UWVBFIChyaHN0 eXBlKSk7CisJICBpZiAoKHJoc19hbGlnbiAlIHR5cGVfYWxpZ24pICE9IDAp CisJICAgIHsKKwkgICAgICBsb2NhdGlvbl90IGxvY2F0aW9uID0gRVhQUl9M T0NfT1JfTE9DIChyaHMsIGlucHV0X2xvY2F0aW9uKTsKKwkgICAgICB3YXJu aW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhZGRyZXNzX29mX3BhY2tlZF9tZW1i ZXIsCisJCQkgICJjb252ZXJ0aW5nIGEgcGFja2VkICVxVCBwb2ludGVyIChh bGlnbm1lbnQgJWQpICIKKwkJCSAgInRvICVxVCAoYWxpZ25tZW50ICVkKSBt YXkgbWF5IHJlc3VsdCBpbiBhbiAiCisJCQkgICJ1bmFsaWduZWQgcG9pbnRl ciB2YWx1ZSIsCisJCQkgIHJoc3R5cGUsIHJoc19hbGlnbiwgdHlwZSwgdHlw ZV9hbGlnbik7CisJICAgICAgdHJlZSBkZWNsID0gVFlQRV9TVFVCX0RFQ0wg KFRSRUVfVFlQRSAocmhzdHlwZSkpOworCSAgICAgIGluZm9ybSAoREVDTF9T T1VSQ0VfTE9DQVRJT04gKGRlY2wpLCAiZGVmaW5lZCBoZXJlIik7CisJICAg ICAgZGVjbCA9IFRZUEVfU1RVQl9ERUNMIChUUkVFX1RZUEUgKHR5cGUpKTsK KwkgICAgICBpZiAoZGVjbCkKKwkJaW5mb3JtIChERUNMX1NPVVJDRV9MT0NB VElPTiAoZGVjbCksICJkZWZpbmVkIGhlcmUiKTsKKwkgICAgfQorCX0KKyAg ICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBHZXQgdGhlIHR5cGUgb2Yg dGhlIHBvaW50ZXIgcG9pbnRpbmcgdG8uICAqLworICAgICAgdHlwZSA9IFRS RUVfVFlQRSAodHlwZSk7CisKKyAgICAgIGlmIChUUkVFX0NPREUgKHJocykg PT0gTk9QX0VYUFIpCisJcmhzID0gVFJFRV9PUEVSQU5EIChyaHMsIDApOwor CisgICAgICBjaGVja19hbmRfd2Fybl9hZGRyZXNzX29mX3BhY2tlZF9tZW1i ZXIgKHR5cGUsIHJocyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ2NjL2Mt ZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0CmluZGV4IDA3ZmYx Yzg0Zjk2Li4yMmNjZjkxMGE4NSAxMDA2NDQKLS0tIGEvZ2NjL2MtZmFtaWx5 L2Mub3B0CisrKyBiL2djYy9jLWZhbWlseS9jLm9wdApAQCAtNjI1LDYgKzYy NSwxMCBAQCBXaW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMKIEMgT2JqQyBW YXIod2Fybl9pbmNvbXBhdGlibGVfcG9pbnRlcl90eXBlcykgSW5pdCgxKSBX YXJuaW5nCiBXYXJuIHdoZW4gdGhlcmUgaXMgYSBjb252ZXJzaW9uIGJldHdl ZW4gcG9pbnRlcnMgdGhhdCBoYXZlIGluY29tcGF0aWJsZSB0eXBlcy4KIAor V2FkZHJlc3Mtb2YtcGFja2VkLW1lbWJlcgorQyBPYmpDIEMrKyBPYmpDKysg VmFyKHdhcm5fYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyKSBJbml0KDEpIFdh cm5pbmcKK1dhcm4gd2hlbiB0aGUgYWRkcmVzcyBvZiBwYWNrZWQgbWVtYmVy IG9mIHN0cnVjdCBvciB1bmlvbiBpcyB0YWtlbi4KKwogV2luaXQtc2VsZgog QyBPYmpDIEMrKyBPYmpDKysgVmFyKHdhcm5faW5pdF9zZWxmKSBXYXJuaW5n IExhbmdFbmFibGVkQnkoQysrIE9iakMrKyxXYWxsKQogV2FybiBhYm91dCB2 YXJpYWJsZXMgd2hpY2ggYXJlIGluaXRpYWxpemVkIHRvIHRoZW1zZWx2ZXMu CmRpZmYgLS1naXQgYS9nY2MvYy9jLXR5cGVjay5jIGIvZ2NjL2MvYy10eXBl Y2suYwppbmRleCAxYTg5NzI3MzA4OC4uZGE0YTgxNjlkNTYgMTAwNjQ0Ci0t LSBhL2djYy9jL2MtdHlwZWNrLmMKKysrIGIvZ2NjL2MvYy10eXBlY2suYwpA QCAtNjcyNCw3ICs2NzI0LDExIEBAIGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQg KGxvY2F0aW9uX3QgbG9jYXRpb24sIGxvY2F0aW9uX3QgZXhwcl9sb2MsIHRy ZWUgdHlwZSwKICAgICB9CiAKICAgaWYgKFRZUEVfTUFJTl9WQVJJQU5UICh0 eXBlKSA9PSBUWVBFX01BSU5fVkFSSUFOVCAocmhzdHlwZSkpCi0gICAgcmV0 dXJuIHJoczsKKyAgICB7CisgICAgICB3YXJuX2Zvcl9hZGRyZXNzX29yX3Bv aW50ZXJfb2ZfcGFja2VkX21lbWJlciAoZmFsc2UsIHR5cGUsCisJCQkJCQkg ICAgb3JpZ19yaHMpOworICAgICAgcmV0dXJuIHJoczsKKyAgICB9CiAKICAg aWYgKGNvZGVyID09IFZPSURfVFlQRSkKICAgICB7CkBAIC03Mjc5LDYgKzcy ODMsMTEgQEAgY29udmVydF9mb3JfYXNzaWdubWVudCAobG9jYXRpb25fdCBs b2NhdGlvbiwgbG9jYXRpb25fdCBleHByX2xvYywgdHJlZSB0eXBlLAogCSAg ICB9CiAJfQogCisgICAgICAvKiBJZiBSSFMgaXMndCBhbiBhZGRyZXNzLCBj aGVjayBwb2ludGVyIG9yIGFycmF5IG9mIHBhY2tlZAorCSBzdHJ1Y3Qgb3Ig dW5pb24uICAqLworICAgICAgd2Fybl9mb3JfYWRkcmVzc19vcl9wb2ludGVy X29mX3BhY2tlZF9tZW1iZXIKKwkoVFJFRV9DT0RFIChvcmlnX3JocykgIT0g QUREUl9FWFBSLCB0eXBlLCBvcmlnX3Jocyk7CisKICAgICAgIHJldHVybiBj b252ZXJ0ICh0eXBlLCByaHMpOwogICAgIH0KICAgZWxzZSBpZiAoY29kZWwg PT0gUE9JTlRFUl9UWVBFICYmIGNvZGVyID09IEFSUkFZX1RZUEUpCmRpZmYg LS1naXQgYS9nY2MvY3AvY2FsbC5jIGIvZ2NjL2NwL2NhbGwuYwppbmRleCA2 MzI4YTM2YjYwNC4uNDBmZmM4NjMwOTEgMTAwNjQ0Ci0tLSBhL2djYy9jcC9j YWxsLmMKKysrIGIvZ2NjL2NwL2NhbGwuYwpAQCAtNzYxOCw2ICs3NjE4LDkg QEAgY29udmVydF9mb3JfYXJnX3Bhc3NpbmcgKHRyZWUgdHlwZSwgdHJlZSB2 YWwsIHRzdWJzdF9mbGFnc190IGNvbXBsYWluKQogCX0KICAgICAgIG1heWJl X3dhcm5fcGFybV9hYmkgKHR5cGUsIGNwX2V4cHJfbG9jX29yX2xvYyAodmFs LCBpbnB1dF9sb2NhdGlvbikpOwogICAgIH0KKworICB3YXJuX2Zvcl9hZGRy ZXNzX29yX3BvaW50ZXJfb2ZfcGFja2VkX21lbWJlciAoZmFsc2UsIHR5cGUs IHZhbCk7CisKICAgcmV0dXJuIHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvZ2Nj L2NwL3R5cGVjay5jIGIvZ2NjL2NwL3R5cGVjay5jCmluZGV4IGFjMGM4MTE1 NWI1Li45M2IyOTVhZGU5MCAxMDA2NDQKLS0tIGEvZ2NjL2NwL3R5cGVjay5j CisrKyBiL2djYy9jcC90eXBlY2suYwpAQCAtOTAyMyw2ICs5MDIzLDggQEAg Y29udmVydF9mb3JfYXNzaWdubWVudCAodHJlZSB0eXBlLCB0cmVlIHJocywK ICAgICAgIFRSRUVfTk9fV0FSTklORyAocmhzKSA9IDE7CiAgICAgfQogCisg IHdhcm5fZm9yX2FkZHJlc3Nfb3JfcG9pbnRlcl9vZl9wYWNrZWRfbWVtYmVy IChmYWxzZSwgdHlwZSwgcmhzKTsKKwogICByZXR1cm4gcGVyZm9ybV9pbXBs aWNpdF9jb252ZXJzaW9uX2ZsYWdzIChzdHJpcF90b3BfcXVhbHMgKHR5cGUp LCByaHMsCiAJCQkJCSAgICBjb21wbGFpbiwgZmxhZ3MpOwogfQpkaWZmIC0t Z2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRl eGkKaW5kZXggNDRlMTA2OWRlM2IuLjI1ODc2MGE1NDRhIDEwMDY0NAotLS0g YS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKyBiL2djYy9kb2MvaW52b2tlLnRl eGkKQEAgLTM1OCw2ICszNTgsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0 aXZlLUMrKyBEaWFsZWN0c30uCiAtV3VzZWxlc3MtY2FzdCAgLVd2YXJpYWRp Yy1tYWNyb3MgIC1XdmVjdG9yLW9wZXJhdGlvbi1wZXJmb3JtYW5jZSBAZ29s CiAtV3ZsYSAgLVd2bGEtbGFyZ2VyLXRoYW49QHZhcntieXRlLXNpemV9ICAt V3ZvbGF0aWxlLXJlZ2lzdGVyLXZhciBAZ29sCiAtV3dyaXRlLXN0cmluZ3Mg QGdvbAorLVdhZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIgQGdvbAogLVd6ZXJv LWFzLW51bGwtcG9pbnRlci1jb25zdGFudCAgLVdoc2F9CiAKIEBpdGVtIEMg YW5kIE9iamVjdGl2ZS1DLW9ubHkgV2FybmluZyBPcHRpb25zCkBAIC02OTgx LDYgKzY5ODIsMTMgQEAgYmVoYXZpb3IgYW5kIGFyZSBub3QgcG9ydGFibGUg aW4gQywgc28gdGhleSB1c3VhbGx5IGluZGljYXRlIHRoYXQgdGhlCiBwcm9n cmFtbWVyIGludGVuZGVkIHRvIHVzZSBAY29kZXtzdHJjbXB9LiAgVGhpcyB3 YXJuaW5nIGlzIGVuYWJsZWQgYnkKIEBvcHRpb257LVdhbGx9LgogCitAaXRl bSAtV2FkZHJlc3Mtb2YtcGFja2VkLW1lbWJlcgorQG9waW5kZXggV2FkZHJl c3Mtb2YtcGFja2VkLW1lbWJlcgorQG9waW5kZXggV25vLWFkZHJlc3Mtb2Yt cGFja2VkLW1lbWJlcgorV2FybiB3aGVuIHRoZSBhZGRyZXNzIG9mIHBhY2tl ZCBtZW1iZXIgb2Ygc3RydWN0IG9yIHVuaW9uIGlzIHRha2VuLAord2hpY2gg dXN1YWxseSByZXN1bHRzIGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVl LiAgVGhpcyBpcworZW5hYmxlZCBieSBkZWZhdWx0LgorCiBAaXRlbSAtV2xv Z2ljYWwtb3AKIEBvcGluZGV4IFdsb2dpY2FsLW9wCiBAb3BpbmRleCBXbm8t bG9naWNhbC1vcApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vYXNhbi9taXNhbGlnbi0xLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9hc2FuL21pc2FsaWduLTEuYwppbmRleCA1Y2Q2MDVhYzA0NS4u ZWJlYjAzMDY3MDYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2FzYW4vbWlzYWxpZ24tMS5jCisrKyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2FzYW4vbWlzYWxpZ24tMS5jCkBAIC0xLDUgKzEsNSBA QAogLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyBpbHAzMiB8fCBscDY0IH0g fSB9ICovCi0vKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9ICB7ICIqIiB9 IHsgIi1PMiIgfSB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9 ICB7ICIqIiB9IHsgIi1PMiAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJl ciIgfSB9ICovCiAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZuby1v bWl0LWZyYW1lLXBvaW50ZXIiIHsgdGFyZ2V0ICotKi1kYXJ3aW4qIH0gfSAq LwogLyogeyBkZy1zaG91bGRmYWlsICJhc2FuIiB9ICovCiAKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2FzYW4vbWlzYWxpZ24t Mi5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXNhbi9taXNhbGln bi0yLmMKaW5kZXggYTZlZDQ5YmFjMDUuLmIyN2UyMmQzNWE4IDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hc2FuL21pc2FsaWdu LTIuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hc2FuL21p c2FsaWduLTIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gcnVuIHsg dGFyZ2V0IHsgaWxwMzIgfHwgbHA2NCB9IH0gfSAqLwotLyogeyBkZy1za2lw LWlmICIiIHsgKi0qLSogfSAgeyAiKiIgfSB7ICItTzIiIH0gfSAqLworLyog eyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSAgeyAiKiIgfSB7ICItTzIgLVdu by1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiIH0gfSAqLwogLyogeyBkZy1h ZGRpdGlvbmFsLW9wdGlvbnMgIi1mbm8tb21pdC1mcmFtZS1wb2ludGVyIiB7 IHRhcmdldCAqLSotZGFyd2luKiB9IH0gKi8KIC8qIHsgZGctc2hvdWxkZmFp bCAiYXNhbiIgfSAqLwogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9wcjUxNjI4LTEuYyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3ByNTE2MjgtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi41MzI0ZjljYzk2NAotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMS5jCkBAIC0w LDAgKzEsMjkgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3Ry dWN0IHBhaXJfdAoreworICBpbnQgeDsKKyAgaW50IGk7Cit9IF9fYXR0cmli dXRlX18oKHBhY2tlZCwgYWxpZ25lZCAoNCkpKTsKKworZXh0ZXJuIHN0cnVj dCBwYWlyX3QgcDsKK2V4dGVybiBpbnQgKng7CitleHRlcm4gdm9pZCBiYXIg KGludCAqKTsKKworaW50ICphZGRyID0gJnAuaTsKKworaW50ICoKK2ZvbyAo dm9pZCkKK3sKKyAgc3RydWN0IHBhaXJfdCBhcnJbMl0gPSB7IHsgMSwgMTAg fSwgeyAyLCAyMCB9IH07CisgIGludCAqcDAsICpwMTsKKyAgcDAgPSAmYXJy WzBdLmk7CisgIGJhciAocDApOworICBwMSA9ICZhcnJbMV0uaTsKKyAgYmFy IChwMSk7CisgIGJhciAoJnAuaSk7CisgIHggPSAmcC5pOworICByZXR1cm4g JnAuaTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL3ByNTE2MjgtMTAuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L3ByNTE2MjgtMTAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uMDg1ZmUxNjA4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTEwLmMKQEAgLTAsMCAr MSwyNCBAQAorLyogUFIgYy81MTYyOC4gICovCisvKiB7IGRnLWRvIHJ1biB7 IHRhcmdldCBpbnQxMjggfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiIg fSAqLworCitzdHJ1Y3QgcGFpcl90Cit7CisgIGNoYXIgYzsKKyAgX19pbnQx MjhfdCBpOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3R5cGVk ZWYgc3RydWN0IHVuYWxpZ25lZF9pbnQxMjhfdF8KK3sKKyAgX19pbnQxMjhf dCB2YWx1ZTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgdW5hbGlnbmVk X2ludDEyOF90OworCitzdHJ1Y3QgcGFpcl90IHAgPSB7MCwgMX07Cit1bmFs aWduZWRfaW50MTI4X3QgKmFkZHIgPSAodW5hbGlnbmVkX2ludDEyOF90ICop ICZwLmk7CisKK2ludCAKK21haW4oKSAKK3sKKyAgYWRkci0+dmFsdWUgPSB+ KF9faW50MTI4X3QpMDsKKyAgcmV0dXJuIChwLmkgIT0gMSkgPyAwIDogMTsK K30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3By NTE2MjgtMTEuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2 MjgtMTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzY2MTIzMmFjODgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTExLmMKQEAgLTAsMCArMSwxNyBA QAorLyogUFIgYy81MTYyOC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgeyB0 YXJnZXQgaW50MTI4IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTyIgfSAq LworCitzdHJ1Y3QgdHVwbGVfdAoreworICBjaGFyIGNbMTJdOworICBfX2lu dDEyOF90IGk7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCwgYWxpZ25lZCAo OCkpKTsKKwordHlwZWRlZiBzdHJ1Y3QgdW5hbGlnbmVkX2ludDEyOF90Xwor eworICBfX2ludDEyOF90IHZhbHVlOworfSBfX2F0dHJpYnV0ZV9fICgocGFj a2VkLCBhbGlnbmVkKDQpKSkgdW5hbGlnbmVkX2ludDEyOF90OworCitzdHJ1 Y3QgdHVwbGVfdCBwID0ge3swfSwgMX07Cit1bmFsaWduZWRfaW50MTI4X3Qg KmFkZHIgPSAodW5hbGlnbmVkX2ludDEyOF90ICopKCZwLmkpOwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMi5j IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0xMi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYzIyMWZh ODdlZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3ByNTE2MjgtMTIuYwpAQCAtMCwwICsxLDE4IEBACisvKiBQUiBj LzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBpbnQx MjggfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3N0cnVj dCB0dXBsZV90Cit7CisgIGNoYXIgY1sxMF07CisgIF9faW50MTI4X3QgaTsK K30gX19hdHRyaWJ1dGVfXygocGFja2VkLCBhbGlnbmVkICg4KSkpOworCit0 eXBlZGVmIHN0cnVjdCB1bmFsaWduZWRfaW50MTI4X3RfCit7CisgIF9faW50 MTI4X3QgdmFsdWU7Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQsIGFsaWdu ZWQoNCkpKSB1bmFsaWduZWRfaW50MTI4X3Q7CisKK3N0cnVjdCB0dXBsZV90 IHAgPSB7ezB9LCAxfTsKK3VuYWxpZ25lZF9pbnQxMjhfdCAqYWRkciA9ICh1 bmFsaWduZWRfaW50MTI4X3QgKikoJnAuaSk7CisvKiB7IGRnLXdhcm5pbmcg Im1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTMuYyBiL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTMuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGVkZDVlN2Y4NGQKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUx NjI4LTEzLmMKQEAgLTAsMCArMSw5IEBACisvKiBQUiBjLzUxNjI4LiAgKi8K Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P IiB9ICovCisKK3N0cnVjdCBCIHsgaW50IGk7IH07CitzdHJ1Y3QgQyB7IHN0 cnVjdCBCIGI7IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitpbnQq IGg0IChzdHJ1Y3QgQyAqcCkgeyByZXR1cm4gJnAtPmIuaTsgfQorLyogeyBk Zy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVy IHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTE0LmMg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTE0LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY1MDM3OGI4 NjUxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vcHI1MTYyOC0xNC5jCkBAIC0wLDAgKzEsOSBAQAorLyogUFIgYy81 MTYyOC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1v cHRpb25zICItTyIgfSAqLworCitzdHJ1Y3QgQSB7CisgIGludCBpOworfSBf X2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3ZvaWQqIGYwIChzdHJ1Y3Qg QSAqcCkgeyByZXR1cm4gJnAtPmk7IH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTUuYyBiL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL3ByNTE2MjgtMTUuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmNhYzZkNzBhZDUKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4 LTE1LmMKQEAgLTAsMCArMSwxNCBAQAorLyogUFIgYy81MTYyOC4gICovCisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyIg fSAqLworCitzdHJ1Y3QgQSB7CisgIGludCBpOworfSBfX2F0dHJpYnV0ZV9f ICgocGFja2VkKSk7CisKK2ludCoKK2YgKHN0cnVjdCBBICpwLCBpbnQgKnEp Cit7CisgIHJldHVybiBxID8gcSA6ICZwLT5pOworLyogeyBkZy13YXJuaW5n ICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCit9CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTE2LmMgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTE2LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNkNTAyZmU3NmI4Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v cHI1MTYyOC0xNi5jCkBAIC0wLDAgKzEsMTMgQEAKKy8qIFBSIGMvNTE2Mjgu ICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8iIH0gKi8KKworc3RydWN0IF9fYXR0cmlidXRlX18gKChwYWNrZWQp KSBBIHsgaW50IGk7IH07CitzdHJ1Y3QgQiB7CisgIHN0cnVjdCBBIGE7Cit9 IGI7CisKK2ludCAqcCA9IChpbnQqKSZiLmEuaTsKKy8qIHsgZGctd2Fybmlu ZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworaW50ICpxID0gKGludCop JmIuYTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFs aWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEg fSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v cHI1MTYyOC0yLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUx NjI4LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uYWJmYjg0ZGRkMDUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTIuYwpAQCAtMCwwICsxLDI5IEBA CisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3N0cnVjdCBwYWlyX3QK K3sKKyAgaW50IHg7CisgIGludCBpOworfSBfX2F0dHJpYnV0ZV9fKChwYWNr ZWQsIGFsaWduZWQgKDgpKSk7CisKK2V4dGVybiBzdHJ1Y3QgcGFpcl90IHA7 CitleHRlcm4gaW50ICp4OworZXh0ZXJuIHZvaWQgYmFyIChpbnQgKik7CisK K2ludCAqYWRkciA9ICZwLmk7CisKK2ludCAqCitmb28gKHZvaWQpCit7Cisg IHN0cnVjdCBwYWlyX3QgYXJyWzJdID0geyB7IDEsIDEwIH0sIHsgMiwgMjAg fSB9OworICBpbnQgKnAwLCAqcDE7CisgIHAwID0gJmFyclswXS5pOworICBi YXIgKHAwKTsKKyAgcDEgPSAmYXJyWzFdLmk7CisgIGJhciAocDEpOworICBi YXIgKCZwLmkpOworICB4ID0gJnAuaTsKKyAgcmV0dXJuICZwLmk7Cit9CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4 LTI2LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTI2 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIw NDIzNzk4NjBhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vcHI1MTYyOC0yNi5jCkBAIC0wLDAgKzEsMzMgQEAKKy8q IFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3RydWN0IEEgeworICBpbnQg aTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitzdHJ1Y3QgQSBw ID0gezF9OworaW50ICphZGRyOworCitpbnQgaSwgajsKKwordm9pZAorZm9v MSAodm9pZCkKK3sKKyAgYWRkciA9IChpID0gLTEsICZwLmkpOworLyogeyBk Zy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVy IHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCit9CisKK3Zv aWQKK2ZvbzIgKHZvaWQpCit7CisgIGFkZHIgPSAoaSA9IC0xLCBqID0gLTIs ICZwLmkpOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVu YWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovCit9CisKK3ZvaWQKK2ZvbzMgKHZvaWQpCit7CisgIGFkZHIgPSAo aSA9IC0xLCAoaiA9IC0yLCAmcC5pKSk7CisvKiB7IGRnLXdhcm5pbmcgIm1h eSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsg dGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMjcuYyBiL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtMjcuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWFlMWVmZDdhZmIKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUx NjI4LTI3LmMKQEAgLTAsMCArMSwxMiBAQAorLyogUFIgYy81MTYyOC4gICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt TyIgfSAqLworCitzdHJ1Y3QgQSB7IGludCBpOyB9IF9fYXR0cmlidXRlX18g KChwYWNrZWQpKTsKK3N0cnVjdCBCIHsgc3RydWN0IEEgYTsgfTsKK3N0cnVj dCBDIHsgc3RydWN0IEIgYjsgfTsKKworZXh0ZXJuIHN0cnVjdCBDICpwOwor CitpbnQqIGc4ICh2b2lkKSB7IHJldHVybiAmcC0+Yi5hLmk7IH0KKy8qIHsg ZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRl ciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yOC5j IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0yOC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lOGM3NTJk MGIxMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3ByNTE2MjgtMjguYwpAQCAtMCwwICsxLDE3IEBACisvKiBQUiBj LzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PIiB9ICovCisKK3N0cnVjdCBBIHsgCisgIGludCBpOwor fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK2ludCAqCitmb28zIChz dHJ1Y3QgQSAqcDEsIGludCAqcTEsIGludCAqcTIsIHN0cnVjdCBBICpwMikg Cit7CisgIHJldHVybiAocTEgCisJICA/ICZwMS0+aQorLyogeyBkZy13YXJu aW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVl IiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisJICA6IChxMiA/ICZw Mi0+aSA6IHEyKSk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4g YW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0q IH0gLi0xIH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3ByNTE2MjgtMjkuYyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3ByNTE2MjgtMjkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uOTRiMzcyMmQyYzgKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTI5LmMKQEAg LTAsMCArMSwxNiBAQAorLyogUFIgYy81MTYyOC4gICovCisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyIgfSAqLworCitz dHJ1Y3QgQSB7IGludCBpOyB9Oworc3RydWN0IEIgeyBzdHJ1Y3QgQSBhOyB9 Oworc3RydWN0IEMgeyBzdHJ1Y3QgQiBiIF9fYXR0cmlidXRlX18gKChwYWNr ZWQpKTsgfTsKKworZXh0ZXJuIHN0cnVjdCBDICpwOworCitpbnQqCitnOCAo dm9pZCkKK3sKKyAgcmV0dXJuICZwLT5iLmEuaTsKKy8qIHsgZGctd2Fybmlu ZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIg IiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworfQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC0zLmMgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTMuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGVhOTRjODQ1YTAKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9w cjUxNjI4LTMuYwpAQCAtMCwwICsxLDM1IEBACisvKiBQUiBjLzUxNjI4LiAg Ki8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1PIiB9ICovCisKK3N0cnVjdCBwYWlyX3QKK3sKKyAgaW50IHg7CisgIGlu dCBpOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQsIGFsaWduZWQgKDIpKSk7 CisKK2V4dGVybiBzdHJ1Y3QgcGFpcl90IHA7CitleHRlcm4gaW50ICp4Owor ZXh0ZXJuIHZvaWQgYmFyIChpbnQgKik7CisKK2ludCAqYWRkciA9ICZwLmk7 CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVk IHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8K KworaW50ICoKK2ZvbyAodm9pZCkKK3sKKyAgc3RydWN0IHBhaXJfdCBhcnJb Ml0gPSB7IHsgMSwgMTAgfSwgeyAyLCAyMCB9IH07CisgIGludCAqcDAsICpw MTsKKyAgcDAgPSAmYXJyWzBdLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSBy ZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgYmFyIChwMCk7CisgIHAxID0gJmFy clsxXS5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVu YWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9ICovCisgIGJhciAocDEpOworICBiYXIgKCZwLmkpOworLyogeyBkZy13 YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZh bHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIHggPSAmcC5p OworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25l ZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov CisgIHJldHVybiAmcC5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0 IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9wcjUxNjI4LTQuYyBiL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL3ByNTE2MjgtNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5jNGMxZmI3MmQ2ZAotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNC5jCkBA IC0wLDAgKzEsMzUgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKwor c3RydWN0IHBhaXJfdAoreworICBpbnQgeDsKKyAgaW50IGk7Cit9IF9fYXR0 cmlidXRlX18oKHBhY2tlZCkpOworCitleHRlcm4gc3RydWN0IHBhaXJfdCBw OworZXh0ZXJuIGludCAqeDsKK2V4dGVybiB2b2lkIGJhciAoaW50ICopOwor CitpbnQgKmFkZHIgPSAmcC5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVz dWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdl dCAqLSotKiB9IC4tMSB9ICovCisKK2ludCAqCitmb28gKHZvaWQpCit7Cisg IHN0cnVjdCBwYWlyX3QgYXJyWzJdID0geyB7IDEsIDEwIH0sIHsgMiwgMjAg fSB9OworICBpbnQgKnAwLCAqcDE7CisgIHAwID0gJmFyclswXS5pOworLyog eyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2lu dGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIGJh ciAocDApOworICBwMSA9ICZhcnJbMV0uaTsKKy8qIHsgZGctd2FybmluZyAi bWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIg eyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBiYXIgKHAxKTsKKyAgYmFy ICgmcC5pKTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1 bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfSAqLworICB4ID0gJnAuaTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJl c3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJn ZXQgKi0qLSogfSAuLTEgfSAqLworICByZXR1cm4gJnAuaTsKKy8qIHsgZGct d2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2 YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC01LmMg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUxNjI4LTUuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWQ3YzMwOWEw ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9wcjUxNjI4LTUuYwpAQCAtMCwwICsxLDM1IEBACisvKiBQUiBjLzUx NjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PIiB9ICovCisKK3N0cnVjdCBwYWlyX3QKK3sKKyAgY2hhciB4 OworICBpbnQgaTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK2V4 dGVybiBzdHJ1Y3QgcGFpcl90IHA7CitleHRlcm4gaW50ICp4OworZXh0ZXJu IHZvaWQgYmFyIChpbnQgKik7CisKK2ludCAqYWRkciA9ICZwLmk7CisvKiB7 IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50 ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKworaW50 ICoKK2ZvbyAodm9pZCkKK3sKKyAgc3RydWN0IHBhaXJfdCBhcnJbMl0gPSB7 IHsgMSwgMTAgfSwgeyAyLCAyMCB9IH07CisgIGludCAqcDAsICpwMTsKKyAg cDAgPSAmYXJyWzBdLmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQg aW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICot Ki0qIH0gLi0xIH0gKi8KKyAgYmFyIChwMCk7CisgIHAxID0gJmFyclsxXS5p OworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25l ZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICov CisgIGJhciAocDEpOworICBiYXIgKCZwLmkpOworLyogeyBkZy13YXJuaW5n ICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIHggPSAmcC5pOworLyog eyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2lu dGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIHJl dHVybiAmcC5pOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFu IHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9wcjUxNjI4LTYuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL3ByNTE2MjgtNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi41MmFhMDdhNGNmMwotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtNi5jCkBAIC0wLDAg KzEsMzUgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3RydWN0 IHBhaXJfdAoreworICBjaGFyIHg7CisgIGludCBpOworfSBfX2F0dHJpYnV0 ZV9fKChwYWNrZWQsIGFsaWduZWQgKDQpKSk7CisKK2V4dGVybiBzdHJ1Y3Qg cGFpcl90IHA7CitleHRlcm4gaW50ICp4OworZXh0ZXJuIHZvaWQgYmFyIChp bnQgKik7CisKK2ludCAqYWRkciA9ICZwLmk7CisvKiB7IGRnLXdhcm5pbmcg Im1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKworaW50ICoKK2ZvbyAodm9p ZCkKK3sKKyAgc3RydWN0IHBhaXJfdCBhcnJbMl0gPSB7IHsgMSwgMTAgfSwg eyAyLCAyMCB9IH07CisgIGludCAqcDAsICpwMTsKKyAgcDAgPSAmYXJyWzBd Lmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGln bmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0g Ki8KKyAgYmFyIChwMCk7CisgIHAxID0gJmFyclsxXS5pOworLyogeyBkZy13 YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZh bHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIGJhciAocDEp OworICBiYXIgKCZwLmkpOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0 IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCisgIHggPSAmcC5pOworLyogeyBkZy13YXJuaW5n ICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIHJldHVybiAmcC5pOwor LyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBw b2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCit9 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9wcjUx NjI4LTcuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2Mjgt Ny5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5h ZTRhNjgxZjk2NgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL3ByNTE2MjgtNy5jCkBAIC0wLDAgKzEsMjkgQEAKKy8q IFBSIGMvNTE2MjguICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8iIH0gKi8KKworc3RydWN0IHBhaXJfdAorewor ICBpbnQgeDsKKyAgaW50IGlbNF07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tl ZCwgYWxpZ25lZCAoNCkpKTsKKworZXh0ZXJuIHN0cnVjdCBwYWlyX3QgcDsK K2V4dGVybiBpbnQgKng7CitleHRlcm4gdm9pZCBiYXIgKGludCAqKTsKKwor aW50ICphZGRyID0gcC5pOworCitpbnQgKgorZm9vIChzdHJ1Y3QgcGFpcl90 ICpwKQoreworICBpbnQgKnAwLCAqcDE7CisgIHAwID0gcC0+aTsKKyAgYmFy IChwMCk7CisgIHAxID0gJnAtPmlbMV07CisgIGJhciAocDEpOworICBiYXIg KHAtPmkpOworICBiYXIgKCZwLT5pWzJdKTsKKyAgeCA9IHAtPmk7CisgIHJl dHVybiAmcC0+aVszXTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL3ByNTE2MjgtOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vcHI1MTYyOC04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmNjMmRhZTA5NmFlCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC04LmMKQEAg LTAsMCArMSwzNiBAQAorLyogUFIgYy81MTYyOC4gICovCisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyIgfSAqLworCitz dHJ1Y3QgcGFpcl90Cit7CisgIGNoYXIgeDsKKyAgaW50IGlbNF07Cit9IF9f YXR0cmlidXRlX18gKChwYWNrZWQsIGFsaWduZWQgKDQpKSk7CisKK2V4dGVy biBzdHJ1Y3QgcGFpcl90IHA7CitleHRlcm4gaW50ICp4OworZXh0ZXJuIHZv aWQgYmFyIChpbnQgKik7CisKK2ludCAqYWRkciA9IHAuaTsKKy8qIHsgZGct d2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2 YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworCitpbnQgKgor Zm9vIChzdHJ1Y3QgcGFpcl90ICpwKQoreworICBpbnQgKnAwLCAqcDE7Cisg IHAwID0gcC0+aTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBh biB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSog fSAuLTEgfSAqLworICBiYXIgKHAwKTsKKyAgcDEgPSAmcC0+aVsxXTsKKy8q IHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9p bnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBi YXIgKHAxKTsKKyAgYmFyIChwLT5pKTsKKy8qIHsgZGctd2FybmluZyAibWF5 IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0 YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICBiYXIgKCZwLT5pWzJdKTsKKy8q IHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1bmFsaWduZWQgcG9p bnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfSAqLworICB4 ID0gcC0+aTsKKy8qIHsgZGctd2FybmluZyAibWF5IHJlc3VsdCBpbiBhbiB1 bmFsaWduZWQgcG9pbnRlciB2YWx1ZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAu LTEgfSAqLworICByZXR1cm4gJnAtPmlbM107CisvKiB7IGRnLXdhcm5pbmcg Im1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIi IHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KK30KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3ByNTE2MjgtOS5jIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1MTYyOC05LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA0NzBhYTNiOTNkCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vcHI1 MTYyOC05LmMKQEAgLTAsMCArMSwzNiBAQAorLyogUFIgYy81MTYyOC4gICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt TyIgfSAqLworCitzdHJ1Y3QgcGFpcl90Cit7CisgIGludCB4OworICBpbnQg aVs0XTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitleHRlcm4g c3RydWN0IHBhaXJfdCBwOworZXh0ZXJuIGludCAqeDsKK2V4dGVybiB2b2lk IGJhciAoaW50ICopOworCitpbnQgKmFkZHIgPSBwLmk7CisvKiB7IGRnLXdh cm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFs dWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKworaW50ICoKK2Zv byAoc3RydWN0IHBhaXJfdCAqcCkKK3sKKyAgaW50ICpwMCwgKnAxOworICBw MCA9IHAtPmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4g dW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0g Li0xIH0gKi8KKyAgYmFyIChwMCk7CisgIHAxID0gJnAtPmlbMV07CisvKiB7 IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50 ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgYmFy IChwMSk7CisgIGJhciAocC0+aSk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSBy ZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgYmFyICgmcC0+aVsyXSk7CisvKiB7 IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50 ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KKyAgeCA9 IHAtPmk7CisvKiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5h bGlnbmVkIHBvaW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0x IH0gKi8KKyAgcmV0dXJuICZwLT5pWzNdOworLyogeyBkZy13YXJuaW5nICJt YXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCit9CmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi0xMC5jIGIvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tMTAuYwppbmRl eCA1NmFlOWViZmUzMC4uNjIxMDUzMzE3M2MgMTAwNjQ0Ci0tLSBhL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTEwLmMKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tMTAuYwpA QCAtMSw2ICsxLDYgQEAKIC8qIExpbWl0IHRoaXMgdG8ga25vd24gbm9uLXN0 cmljdCBhbGlnbm1lbnQgdGFyZ2V0cy4gICovCiAvKiB7IGRnLWRvIHJ1biB7 IHRhcmdldCB7IGk/ODYtKi1saW51eCogeDg2XzY0LSotbGludXgqIH0gfSB9 ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PIC1mc2FuaXRpemU9YWxpZ25tZW50 IC1mc2FuaXRpemUtcmVjb3Zlcj1hbGlnbm1lbnQiIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8gLWZzYW5pdGl6ZT1hbGlnbm1lbnQgLWZzYW5pdGl6ZS1y ZWNvdmVyPWFsaWdubWVudCAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJl ciIgfSAqLwogCiBzdHJ1Y3QgUiB7IGludCBhOyB9IHI7CiBzdHJ1Y3QgUyB7 IHN0cnVjdCBSIGE7IGNoYXIgYjsgbG9uZyBsb25nIGM7IHNob3J0IGRbMTBd OyB9OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v dWJzYW4vYWxpZ24tMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v dWJzYW4vYWxpZ24tMi5jCmluZGV4IDA3MWRlOGMyMDJhLi4zMzZiMWMzYzkw NyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJz YW4vYWxpZ24tMi5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L3Vic2FuL2FsaWduLTIuYwpAQCAtMSw2ICsxLDYgQEAKIC8qIExpbWl0IHRo aXMgdG8ga25vd24gbm9uLXN0cmljdCBhbGlnbm1lbnQgdGFyZ2V0cy4gICov CiAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IGk/ODYtKi1saW51eCogeDg2 XzY0LSotbGludXgqIH0gfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1mc2Fu aXRpemU9YWxpZ25tZW50IiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mc2Fu aXRpemU9YWxpZ25tZW50IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVy IiB9ICovCiAKIHN0cnVjdCBTIHsgaW50IGE7IGNoYXIgYjsgbG9uZyBsb25n IGM7IHNob3J0IGRbMTBdOyB9Owogc3RydWN0IFQgeyBjaGFyIGE7IGxvbmcg bG9uZyBiOyB9OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vdWJzYW4vYWxpZ24tNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vdWJzYW4vYWxpZ24tNC5jCmluZGV4IDMyNTI1OTVkMzMwLi5kNWZl ZWVlMjljNiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vdWJzYW4vYWxpZ24tNC5jCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL3Vic2FuL2FsaWduLTQuYwpAQCAtMSw2ICsxLDYgQEAKIC8qIExp bWl0IHRoaXMgdG8ga25vd24gbm9uLXN0cmljdCBhbGlnbm1lbnQgdGFyZ2V0 cy4gICovCiAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IGk/ODYtKi1saW51 eCogeDg2XzY0LSotbGludXgqIH0gfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMg Ii1mc2FuaXRpemU9bnVsbCxhbGlnbm1lbnQiIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLWZzYW5pdGl6ZT1udWxsLGFsaWdubWVudCAtV25vLWFkZHJlc3Mt b2YtcGFja2VkLW1lbWJlciIgfSAqLwogCiAjaW5jbHVkZSAiYWxpZ24tMi5j IgogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91 YnNhbi9hbGlnbi02LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91 YnNhbi9hbGlnbi02LmMKaW5kZXggMzM2NDc0NmZiMjcuLjAzMDJiN2I4ODk0 IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNh bi9hbGlnbi02LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v dWJzYW4vYWxpZ24tNi5jCkBAIC0xLDYgKzEsNiBAQAogLyogTGltaXQgdGhp cyB0byBrbm93biBub24tc3RyaWN0IGFsaWdubWVudCB0YXJnZXRzLiAgKi8K IC8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgaT84Ni0qLWxpbnV4KiB4ODZf NjQtKi1saW51eCogfSB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8gLWZz YW5pdGl6ZT1hbGlnbm1lbnQgLWZzYW5pdGl6ZS1yZWNvdmVyPWFsaWdubWVu dCIgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtZnNhbml0aXplPWFsaWdu bWVudCAtZnNhbml0aXplLXJlY292ZXI9YWxpZ25tZW50IC1Xbm8tYWRkcmVz cy1vZi1wYWNrZWQtbWVtYmVyIiB9ICovCiAKIHN0cnVjdCBTIHsgaW50IGE7 IGNoYXIgYjsgbG9uZyBsb25nIGM7IHNob3J0IGRbMTBdOyB9Owogc3RydWN0 IFQgeyBjaGFyIGE7IGxvbmcgbG9uZyBiOyB9OwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tNy5jIGIvZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tNy5jCmluZGV4 IGVjNGU4N2Y1NmQ1Li5kZDFlOGM5MWNlZiAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vYWxpZ24tNy5jCisrKyBiL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTcuYwpAQCAt MSw2ICsxLDYgQEAKIC8qIExpbWl0IHRoaXMgdG8ga25vd24gbm9uLXN0cmlj dCBhbGlnbm1lbnQgdGFyZ2V0cy4gICovCiAvKiB7IGRnLWRvIHJ1biB7IHRh cmdldCB7IGk/ODYtKi1saW51eCogeDg2XzY0LSotbGludXgqIH0gfSB9ICov Ci0vKiB7IGRnLW9wdGlvbnMgIi1PIC1mc2FuaXRpemU9YWxpZ25tZW50IC1m bm8tc2FuaXRpemUtcmVjb3Zlcj1hbGlnbm1lbnQgLWZkdW1wLXRyZWUtc2Fu b3B0LWRldGFpbHMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZzYW5p dGl6ZT1hbGlnbm1lbnQgLWZuby1zYW5pdGl6ZS1yZWNvdmVyPWFsaWdubWVu dCAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciAtZmR1bXAtdHJlZS1z YW5vcHQtZGV0YWlscyIgfSAqLwogLyogeyBkZy1za2lwLWlmICIiIHsgKi0q LSogfSB7ICItZmx0byAtZm5vLWZhdC1sdG8tb2JqZWN0cyIgfSB9ICovCiAv KiB7IGRnLXNob3VsZGZhaWwgInVic2FuIiB9ICovCiAKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTguYyBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTguYwpp bmRleCA2MWMxY2ViNjY4Mi4uNWZlMGUwZmU5MzEgMTAwNjQ0Ci0tLSBhL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL3Vic2FuL2FsaWduLTguYworKysg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9hbGlnbi04LmMK QEAgLTEsNiArMSw2IEBACiAvKiBMaW1pdCB0aGlzIHRvIGtub3duIG5vbi1z dHJpY3QgYWxpZ25tZW50IHRhcmdldHMuICAqLwogLyogeyBkZy1kbyBydW4g eyB0YXJnZXQgeyBpPzg2LSotbGludXgqIHg4Nl82NC0qLWxpbnV4KiB9IH0g fSAqLwotLyogeyBkZy1vcHRpb25zICItTyAtZnNhbml0aXplPWFsaWdubWVu dCAtZnNhbml0aXplLXVuZGVmaW5lZC10cmFwLW9uLWVycm9yIC1mZHVtcC10 cmVlLXNhbm9wdC1kZXRhaWxzIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P IC1mc2FuaXRpemU9YWxpZ25tZW50IC1mc2FuaXRpemUtdW5kZWZpbmVkLXRy YXAtb24tZXJyb3IgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIgLWZk dW1wLXRyZWUtc2Fub3B0LWRldGFpbHMiIH0gKi8KIC8qIHsgZGctc2tpcC1p ZiAiIiB7ICotKi0qIH0geyAiLWZsdG8gLWZuby1mYXQtbHRvLW9iamVjdHMi IH0gfSAqLwogLyogeyBkZy1zaG91bGRmYWlsICJ1YnNhbiIgfSAqLwogCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy91YnNhbi9hbGlnbi0y LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy91YnNhbi9hbGlnbi0yLkMKaW5k ZXggM2U0ZjU0ODVkMDIuLmM5N2VkZTg4MzkyIDEwMDY0NAotLS0gYS9nY2Mv dGVzdHN1aXRlL2crKy5kZy91YnNhbi9hbGlnbi0yLkMKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvdWJzYW4vYWxpZ24tMi5DCkBAIC0xLDYgKzEsNiBA QAogLy8gTGltaXQgdGhpcyB0byBrbm93biBub24tc3RyaWN0IGFsaWdubWVu dCB0YXJnZXRzLgogLy8geyBkZy1kbyBydW4geyB0YXJnZXQgeyBpPzg2LSot bGludXgqIHg4Nl82NC0qLWxpbnV4KiB9IH0gfQotLy8geyBkZy1vcHRpb25z ICItZnNhbml0aXplPWFsaWdubWVudCAtV2FsbCAtV25vLXVudXNlZC12YXJp YWJsZSAtc3RkPWMrKzExIiB9CisvLyB7IGRnLW9wdGlvbnMgIi1mc2FuaXRp emU9YWxpZ25tZW50IC1XYWxsIC1Xbm8tdW51c2VkLXZhcmlhYmxlIC1Xbm8t YWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIC1zdGQ9YysrMTEiIH0KIAogdHlw ZWRlZiBjb25zdCBsb25nIGludCBMOwogc3RydWN0IFMgeyBsb25nIGludCBs OyBjaGFyIGJ1ZlsxICsgc2l6ZW9mIChpbnQpICsgc2l6ZW9mIChMKV07IH0g czsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2Mjgt MTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTcuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGJlOTViMjI5 NGUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9w cjUxNjI4LTE3LmMKQEAgLTAsMCArMSwxMCBAQAorLyogUFIgYy81MTYyOC4g ICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItTyAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzIiB9ICovCisK K3N0cnVjdCBBIHsKKyAgaW50IGk7Cit9IF9fYXR0cmlidXRlX18gKChwYWNr ZWQpKTsKKworbG9uZyogZjggKHN0cnVjdCBBICpwKSB7IHJldHVybiAmcC0+ aTsgfQorLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFuIHVuYWxp Z25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9 ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4 LTE4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTE4LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAzYTA0ZWZm NzVjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv cHI1MTYyOC0xOC5jCkBAIC0wLDAgKzEsMjMgQEAKKy8qIFBSIGMvNTE2Mjgu ICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8iIH0gKi8KKwordm9pZCBmb28gKGludCAqKTsKKworaW50ICoKK2Jh ciAoaW50IG4sIGludCBrLCB2b2lkICpwdHIpCit7CisgIHN0cnVjdCBBCisg IHsKKyAgICBpbnQgY1trXTsKKyAgICBpbnQgeFtuXTsKKyAgfSBfX2F0dHJp YnV0ZV9fICgocGFja2VkLCBhbGlnbmVkICg0KSkpOworICBzdHJ1Y3QgQSAq cCA9IChzdHJ1Y3QgQSAqKSBwdHI7CisKKyAgaW50ICpwMCwgKnAxOworICBw MCA9IHAtPng7CisgIGZvbyAocDApOworICBwMSA9ICZwLT54WzFdOworICBm b28gKHAxKTsKKyAgcmV0dXJuICZwLT54WzFdOworfQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MTYyOC0xOS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvcHI1MTYyOC0xOS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi43ZmYwM2U4NWNlYQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMTkuYwpAQCAt MCwwICsxLDI2IEBACisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIiB9ICovCisKK3Zv aWQgZm9vIChpbnQgKik7CisKK2ludCAqCitiYXIgKGludCBuLCBpbnQgaywg dm9pZCAqcHRyKQoreworICBzdHJ1Y3QgQQorICB7CisgICAgY2hhciBjW2td OworICAgIGludCB4W25dOworICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQp KTsKKyAgc3RydWN0IEEgKnAgPSAoc3RydWN0IEEgKikgcHRyOworCisgIGlu dCAqcDAsICpwMTsKKyAgcDAgPSBwLT54OworLyogeyBkZy13YXJuaW5nICJt YXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7 IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCisgIGZvbyAocDApOworICBwMSA9 ICZwLT54WzFdOworLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGluIGFu IHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9 IC4tMSB9ICovCisgIGZvbyAocDEpOworICByZXR1cm4gJnAtPnhbMV07Cisv KiB7IGRnLXdhcm5pbmcgIm1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBv aW50ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KK30K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjAu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjAuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODA4ODgyODNiNzMK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUx NjI4LTIwLmMKQEAgLTAsMCArMSwxMSBAQAorLyogUFIgYy81MTYyOC4gICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt TyAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzIiB9ICovCisKK3N0 cnVjdCBCIHsgaW50IGk7IH07CitzdHJ1Y3QgQyB7IHN0cnVjdCBCIGI7IH0g X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCitleHRlcm4gc3RydWN0IEMg KnA7CisKK2xvbmcqIGc4ICh2b2lkKSB7IHJldHVybiBwOyB9CisvKiB7IGRn LXdhcm5pbmcgIm1heSBtYXkgcmVzdWx0IGluIGFuIHVuYWxpZ25lZCBwb2lu dGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9ICovCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTIxLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTIxLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMwNzdlNzJjOGQ1Ci0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MTYyOC0y MS5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qIFBSIGMvNTE2MjguICAqLworLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVdu by1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcyIgfSAqLworCitzdHJ1Y3Qg QiB7IGludCBpOyB9Oworc3RydWN0IEMgeyBzdHJ1Y3QgQiBiOyB9IF9fYXR0 cmlidXRlX18gKChwYWNrZWQpKTsKKworZXh0ZXJuIHN0cnVjdCBDIHBbXTsK KworbG9uZyogZzggKHZvaWQpIHsgcmV0dXJuIHA7IH0KKy8qIHsgZGctd2Fy bmluZyAibWF5IG1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIg dmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjIuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3ByNTE2MjgtMjIuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWJkNWQ3OTE2MzkKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4LTIyLmMK QEAgLTAsMCArMSw5IEBACisvKiBQUiBjLzUxNjI4LiAgKi8KKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1Xbm8taW5j b21wYXRpYmxlLXBvaW50ZXItdHlwZXMiIH0gKi8KKworc3RydWN0IEIgeyBp bnQgaTsgfTsKK3N0cnVjdCBDIHsgc3RydWN0IEIgYjsgfSBfX2F0dHJpYnV0 ZV9fICgocGFja2VkKSk7CisKK2ludCogZzQgKHN0cnVjdCBDICpwKSB7IHJl dHVybiAmcC0+YjsgfQorLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0IGlu IGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAqLSot KiB9IC4tMSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy9wcjUxNjI4LTIzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUxNjI4 LTIzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjU3MDliZTYwYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcHI1MTYyOC0yMy5jCkBAIC0wLDAgKzEsOSBAQAorLyogUFIg Yy81MTYyOC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBk Zy1vcHRpb25zICItTyAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVz IiB9ICovCisKK3N0cnVjdCBBIHsKKyAgaW50IGk7Cit9IF9fYXR0cmlidXRl X18gKChwYWNrZWQpKTsKKworY2hhciogZjAgKHN0cnVjdCBBICpwKSB7IHJl dHVybiAmcC0+aTsgfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvcHI1MTYyOC0yNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1MTYy OC0yNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4zYWQ5OWNkMmYxNgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3ByNTE2MjgtMjQuYwpAQCAtMCwwICsxLDEwIEBACisvKiBQ UiBjLzUxNjI4LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1PIC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlw ZXMiIH0gKi8KKworc3RydWN0IEEgeworICBpbnQgaTsKK30gX19hdHRyaWJ1 dGVfXyAoKHBhY2tlZCkpOworCitzaG9ydCogZjIgKHN0cnVjdCBBICpwKSB7 IHJldHVybiAmcC0+aTsgfQorLyogeyBkZy13YXJuaW5nICJtYXkgcmVzdWx0 IGluIGFuIHVuYWxpZ25lZCBwb2ludGVyIHZhbHVlIiAiIiB7IHRhcmdldCAq LSotKiB9IC4tMSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9wcjUxNjI4LTI1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjUx NjI4LTI1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjJmYzVjMDI4NzExCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvcHI1MTYyOC0yNS5jCkBAIC0wLDAgKzEsOSBAQAorLyog UFIgYy81MTYyOC4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItTyAtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5 cGVzIiB9ICovCisKK3N0cnVjdCBCIHsgaW50IGk7IH07CitzdHJ1Y3QgQyB7 IHN0cnVjdCBCIGI7IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCits b25nKiBnOCAoc3RydWN0IEMgKnApIHsgcmV0dXJuIHA7IH0KKy8qIHsgZGct d2FybmluZyAibWF5IG1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50 ZXIgdmFsdWUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmJ3 LXZtb3ZkcXUxNi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdng1MTJidy12bW92ZHF1MTYtMi5jCmluZGV4IGE2MTYwOWM0MGQyLi5j NmUzZWJkYzUwNyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvYXZ4NTEyYnctdm1vdmRxdTE2LTIuYworKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJidy12bW92ZHF1MTYtMi5j CkBAIC0xLDUgKzEsNSBAQAogLyogeyBkZy1kbyBydW4gfSAqLwotLyogeyBk Zy1vcHRpb25zICItTzIgLW1hdng1MTJidyIgfSAqLworLyogeyBkZy1vcHRp b25zICItTzIgLW1hdng1MTJidyAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1l bWJlciIgfSAqLwogLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQg YXZ4NTEyYncgfSAqLwogCiAjZGVmaW5lIEFWWDUxMkJXCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJmLXZtb3Zk cXUzMi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1 MTJmLXZtb3ZkcXUzMi0yLmMKaW5kZXggZjJlZGMzZGZmN2IuLjk1YTY1N2Zj NWZmIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdng1MTJmLXZtb3ZkcXUzMi0yLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXZ4NTEyZi12bW92ZHF1MzItMi5jCkBAIC0xLDUg KzEsNSBAQAogLyogeyBkZy1kbyBydW4gfSAqLwotLyogeyBkZy1vcHRpb25z ICItTzIgLW1hdng1MTJmIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAt bWF2eDUxMmYgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiIH0gKi8K IC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGF2eDUxMmYgfSAq LwogCiAjZGVmaW5lIEFWWDUxMkYKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmYtdm1vdmRxdTY0LTIuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmYtdm1vdmRxdTY0 LTIuYwppbmRleCAxNDE3Njk2NWFjZS4uOTU0YjA5MWQ5NzYgMTAwNjQ0Ci0t LSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmYtdm1v dmRxdTY0LTIuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdng1MTJmLXZtb3ZkcXU2NC0yLmMKQEAgLTEsNSArMSw1IEBACiAvKiB7 IGRnLWRvIHJ1biB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWF2eDUx MmYiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4NTEyZiAtV25v LWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIgfSAqLwogLyogeyBkZy1yZXF1 aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXZ4NTEyZiB9ICovCiAKICNkZWZpbmUg QVZYNTEyRgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvYXZ4NTEydmwtdm1vdmRxdTE2LTIuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2F2eDUxMnZsLXZtb3ZkcXUxNi0yLmMKaW5kZXgg NDVhZTgzZDQ1NTIuLjgxNDY1ZjhkOWEwIDEwMDY0NAotLS0gYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJ2bC12bW92ZHF1MTYtMi5j CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMnZs LXZtb3ZkcXUxNi0yLmMKQEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIHJ1 biB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWF2eDUxMmJ3IC1tYXZ4 NTEydmwiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4NTEyYncg LW1hdng1MTJ2bCAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIgfSAq LwogLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXZ4NTEydmwg fSAqLwogLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXZ4NTEy YncgfSAqLwogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9hdng1MTJ2bC12bW92ZHF1MzItMi5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEydmwtdm1vdmRxdTMyLTIuYwppbmRl eCA0YjkyOGQwY2Q0Mi4uMTkzOTA2NjRiZDAgMTAwNjQ0Ci0tLSBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMnZsLXZtb3ZkcXUzMi0y LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4NTEy dmwtdm1vdmRxdTMyLTIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8g cnVuIH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4NTEydmwiIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXZ4NTEydmwgLVduby1hZGRy ZXNzLW9mLXBhY2tlZC1tZW1iZXIiIH0gKi8KIC8qIHsgZGctcmVxdWlyZS1l ZmZlY3RpdmUtdGFyZ2V0IGF2eDUxMnZsIH0gKi8KIAogI2RlZmluZSBBVlg1 MTJWTApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvYXZ4NTEydmwtdm1vdmRxdTY0LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2F2eDUxMnZsLXZtb3ZkcXU2NC0yLmMKaW5kZXggMTg2 M2VkMzYxNmYuLmFlYTBjMTJhNWZmIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJ2bC12bW92ZHF1NjQtMi5jCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMnZsLXZt b3ZkcXU2NC0yLmMKQEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIHJ1biB9 ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWF2eDUxMnZsIiB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1PMiAtbWF2eDUxMnZsIC1Xbm8tYWRkcmVzcy1v Zi1wYWNrZWQtbWVtYmVyIiB9ICovCiAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0 aXZlLXRhcmdldCBhdng1MTJ2bCB9ICovCiAKICNkZWZpbmUgQVZYNTEyVkwK ZGlmZiAtLWdpdCBhL2xpYmdjYy91bndpbmQtcGUuaCBiL2xpYmdjYy91bndp bmQtcGUuaAppbmRleCBkZDVhZTk1ZmMyYy4uMDVjMmZiNGRkNTAgMTAwNjQ0 Ci0tLSBhL2xpYmdjYy91bndpbmQtcGUuaAorKysgYi9saWJnY2MvdW53aW5k LXBlLmgKQEAgLTE3Nyw2ICsxNzcsOSBAQCByZWFkX3NsZWIxMjggKGNvbnN0 IHVuc2lnbmVkIGNoYXIgKnAsIF9zbGViMTI4X3QgKnZhbCkKICAgIFRoZSBm dW5jdGlvbiByZXR1cm5zIFAgaW5jcmVtZW50ZWQgcGFzdCB0aGUgdmFsdWUu ICBCQVNFIGlzIGFzIGdpdmVuCiAgICBieSBiYXNlX29mX2VuY29kZWRfdmFs dWUgZm9yIHRoaXMgZW5jb2RpbmcgaW4gdGhlIGFwcHJvcHJpYXRlIGNvbnRl eHQuICAqLwogCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFn bWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdhZGRyZXNzLW9mLXBhY2tl ZC1tZW1iZXIiCisKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICoKIHJl YWRfZW5jb2RlZF92YWx1ZV93aXRoX2Jhc2UgKHVuc2lnbmVkIGNoYXIgZW5j b2RpbmcsIF9VbndpbmRfUHRyIGJhc2UsCiAJCQkgICAgICBjb25zdCB1bnNp Z25lZCBjaGFyICpwLCBfVW53aW5kX1B0ciAqdmFsKQpAQCAtMjcwLDYgKzI3 Myw4IEBAIHJlYWRfZW5jb2RlZF92YWx1ZV93aXRoX2Jhc2UgKHVuc2lnbmVk IGNoYXIgZW5jb2RpbmcsIF9VbndpbmRfUHRyIGJhc2UsCiAgIHJldHVybiBw OwogfQogCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCiAjaWZuZGVm IE5PX0JBU0VfT0ZfRU5DT0RFRF9WQUxVRQogCiAvKiBMaWtlIHJlYWRfZW5j b2RlZF92YWx1ZV93aXRoX2Jhc2UsIGJ1dCBnZXQgdGhlIGJhc2UgZnJvbSB0 aGUgY29udGV4dAotLSAKMi4xOS4yCgo= --000000000000278d7e057cf011a2--