From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16734 invoked by alias); 28 Oct 2011 19:53:06 -0000 Received: (qmail 16674 invoked by uid 22791); 28 Oct 2011 19:52:58 -0000 X-SWARE-Spam-Status: No, hits=3.1 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KAM_STOCKTIP,RCVD_IN_DNSWL_LOW,TW_BJ,TW_GB,TW_YM X-Spam-Check-By: sourceware.org Received: from mail-fx0-f41.google.com (HELO mail-fx0-f41.google.com) (209.85.161.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 28 Oct 2011 19:52:35 +0000 Received: by faat2 with SMTP id t2so1657140faa.0 for ; Fri, 28 Oct 2011 12:52:33 -0700 (PDT) Received: by 10.223.39.20 with SMTP id d20mr8058745fae.37.1319831553402; Fri, 28 Oct 2011 12:52:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.152.10.106 with HTTP; Fri, 28 Oct 2011 12:52:12 -0700 (PDT) In-Reply-To: References: <4E8DCE67.80507@earthlink.net> <4E92E639.7000402@earthlink.net> <83ipnjs9i1.fsf@gnu.org> <83ipndc92n.fsf@gnu.org> <83ehy0ded8.fsf@gnu.org> <4EA753C4.60408@mentor.com> From: Justin Lebar Date: Fri, 28 Oct 2011 19:55:00 -0000 Message-ID: Subject: Re: Status of 'blacklist' patch? To: Tom Tromey Cc: Eli Zaretskii , Stan Shebs , gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00151747914ee768c204b0613a4e X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-10/txt/msg00780.txt.bz2 --00151747914ee768c204b0613a4e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 924 > One more note... Oops; I should have noticed that. Fixed. -Justin On Fri, Oct 28, 2011 at 3:47 PM, Tom Tromey wrote: >>>>>> "Justin" =3D=3D Justin Lebar writes: > > One more note... > > Justin> +int > Justin> +function_pc_is_marked_for_skip (CORE_ADDR pc) > Justin> +{ > Justin> + =C2=A0int searched_for_sal =3D 0; > Justin> + =C2=A0struct symtab_and_line sal; > Justin> + =C2=A0char *filename =3D NULL; > Justin> + =C2=A0struct skiplist_entry *e; > Justin> + > Justin> + =C2=A0sal =3D find_pc_line (pc, 0); > Justin> + =C2=A0filename =3D sal.symtab->filename; > > These last two lines should be removed. > They defeat the lazy computation scheme. > > Justin> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 sal =3D find_pc_line = (pc, 0); > Justin> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 filename =3D sal.symt= ab->filename; > > I think sal.symtab can be NULL. > > Tom > --00151747914ee768c204b0613a4e Content-Type: text/x-patch; charset=US-ASCII; name="skip-7.diff" Content-Disposition: attachment; filename="skip-7.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gubllpb90 Content-length: 76657 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IGExNjZkMTQuLjBmMTAyMjUgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEx LTEwLTA2ICBKdXN0aW4gTGViYXIgIDxqdXN0aW4ubGViYXJAZ21haWwuY29t PgorCisJKiBNYWtlZmlsZS5pbjogKFNGSUxFUyk6IEFkZCBza2lwLmMuCisJ KEhGSUxFU19OT19TUkNESVIpOiBBZGQgc2tpcC5oLgorCShDT01NT05fT0JT KTogQWRkIHNraXAuby4KKwkqIHNraXAuaCwgc2tpcC5jOiBOZXcuCisJKiBi cmVha3BvaW50LmggKHNldF9kZWZhdWx0X2JyZWFrcG9pbnQpOiBSZW1vdmUu CisJKGdldF9zYWxfYXJjaCk6IERlY2xhcmUuCisJKiBicmVha3BvaW50LmM6 IFJlbW92ZSBkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQsCisJZGVmYXVsdF9i cmVha3BvaW50X2FkZHJlc3MsIGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWIs CisJZGVmYXVsdF9icmVha3BvaW50X2xpbmUsIGRlZmF1bHRfYnJlYWtwb2lu dF9wc3BhY2UgdmFyaWFibGVzLgorCShnZXRfc2FsX2FyY2gpOiBNYWtlIHB1 YmxpYy4KKwkoc2V0X2RlZmF1bHRfYnJlYWtwb2ludCk6IFJlbW92ZS4KKwko cGFyc2VfYnJlYWtwb2ludF9zYWxzLCBjcmVhdGVfYnJlYWtwb2ludCwgY2xl YXJfY29tbWFuZCwKKwlkZWNvZGVfbGluZV9zcGVjXzEpOiBSZW1vdmUgdXNl cyBvZiBkZWZhdWx0X2JyZWFrcG9pbnQgdmFyaWFibGVzOworCXJlcGxhY2Vk IHdpdGggZnVuY3Rpb24gY2FsbHMgaW50byBzdGFjay5jLgorCSogY2xpL2Ns aS1jbWRzLmg6IEFkZCBjbWRfbGlzdF9lbGVtZW50ICpza2lwbGlzdC4KKwkq IGNsaS9jbGktY21kcy5jOiBBZGQgc2tpcGxpc3QuCisJKGluaXRfY21kX2xp c3RzKTogSW5pdGlhbGl6ZSBza2lwbGlzdC4KKwkoaW5pdF9jbGlfY21kcyk6 IEZpeCBjb21tZW50IChjbGFzc2VzIG9mIGNvbW1hbmRzIGFwcGVhciBpbgor CWFscGhhYmV0aWNhbCBvcmRlcikuCisJKiBpbmZydW4uYyAoaGFuZGxlX2lu ZmVyaW9yX2V2ZW50KTogQWRkIGNoZWNrIHRoYXQgd2UgZG9uJ3Qgc3RlcCBp bnRvCisJYSBmdW5jdGlvbiB3aG9zZSBwYyBpcyBtYXJrZWQgZm9yIHNraXAu CisJKiBzdGFjay5jOiBEZWNsYXJlIGxhc3RfZGlzcGxheWVkX3NhbF92YWxp ZCwgbGFzdF9kaXNwbGF5ZWRfcHNwYWNlLAorCWxhc3RfZGlzcGxheWVkX2Fk ZHIsIGxhc3RfZGlzcGxheWVkX3N5bXRhYiwgbGFzdF9kaXNwbGF5ZWRfbGlu ZQorCXZhcmlhYmxlcy4KKwkoc2V0X2xhc3RfZGlzcGxheWVkX3NhbCk6IE5l dyBzdGF0aWMgZnVuY3Rpb24uCisJKHByaW50X2ZyYW1lX2luZm8pOiBTd2l0 Y2ggY2FsbCB0byBzZXRfZGVmYXVsdF9icmVha3BvaW50IHRvIGNhbGwgdG8K KwlzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsLgorCShjbGVhcl9sYXN0X2Rpc3Bs YXllZF9zYWwsIGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCwKKwlnZXRf bGFzdF9kaXNwbGF5ZWRfcHNwYWNlLCBnZXRfbGFzdF9kaXNwbGF5ZWRfYWRk ciwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiLCBnZXRfbGFzdF9kaXNw bGF5ZWRfbGluZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsKTogTmV3IHB1 YmxpYyBmdW5jdGlvbnMuCisJKiBzdGFjay5oIChjbGVhcl9sYXN0X2Rpc3Bs YXllZF9zYWwsIGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCwKKwlnZXRf bGFzdF9kaXNwbGF5ZWRfcHNwYWNlLCBnZXRfbGFzdF9kaXNwbGF5ZWRfYWRk ciwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiLCBnZXRfbGFzdF9kaXNw bGF5ZWRfbGluZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsKTogRGVjbGFy ZS4KKwogMjAxMS0xMC0wNSAgVHJpc3RhbiBHaW5nb2xkICA8Z2luZ29sZEBh ZGFjb3JlLmNvbT4KIAogCSogYWRhLXRhc2tzLmMgKHJlYWRfYXRjYik6IE1h a2UgcmF2ZW5zY2FyX3Rhc2tfbmFtZSBzdGF0aWMuCmRpZmYgLS1naXQgYS9n ZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KaW5kZXggODI2ZDMz OS4uZDZiMDA0YiAxMDA2NDQKLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKyBi L2dkYi9NYWtlZmlsZS5pbgpAQCAtNzE5LDcgKzcxOSw3IEBAIFNGSUxFUyA9 IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFs cHJpbnQuYyBhZGEtdGFza3MuYyBcCiAJcHJvbG9ndWUtdmFsdWUuYyBwc3lt dGFiLmMgXAogCXJlZ2NhY2hlLmMgcmVnZ3JvdXBzLmMgcmVtb3RlLmMgcmVt b3RlLWZpbGVpby5jIHJldmVyc2UuYyBcCiAJc2VudGluZWwtZnJhbWUuYyBc Ci0Jc2VyaWFsLmMgc2VyLWJhc2UuYyBzZXItdW5peC5jIFwKKwlzZXJpYWwu YyBzZXItYmFzZS5jIHNlci11bml4LmMgc2tpcC5jIFwKIAlzb2xpYi5jIHNv bGliLXRhcmdldC5jIHNvdXJjZS5jIFwKIAlzdGFic3JlYWQuYyBzdGFjay5j IHN0ZC1yZWdzLmMgc3ltZmlsZS5jIHN5bWZpbGUtbWVtLmMgc3ltbWlzYy5j IFwKIAlzeW10YWIuYyBcCkBAIC04MTksNyArODE5LDcgQEAgb3NkYXRhLmgg cHJvY2ZzLmggcHl0aG9uL3B5LWV2ZW50LmggcHl0aG9uL3B5LWV2ZW50cy5o IHB5dGhvbi9weS1zdG9wZXZlbnQuaCBcCiBweXRob24vcHl0aG9uLWludGVy bmFsLmggcHl0aG9uL3B5dGhvbi5oIHJhdmVuc2Nhci10aHJlYWQuaCByZWNv cmQuaCBcCiBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhwdXguaCBzb2xp Yi1zcHUuaCB3aW5kb3dzLW5hdC5oIHhjb2ZmcmVhZC5oIFwKIGdudWxpYi9l eHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9jKytkZWZzLmggZ251 bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAotZ251bGliL3N0ZGRlZi5pbi5o IGlubGluZS1mcmFtZS5oIFwKK2dudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUt ZnJhbWUuaCBza2lwLmggXAogY29tbW9uL2NvbW1vbi11dGlscy5oIGNvbW1v bi94bWwtdXRpbHMuaCBjb21tb24vYnVmZmVyLmggY29tbW9uL3B0aWQuaCBc CiBjb21tb24vbGludXgtb3NkYXRhLmgKIApAQCAtOTA3LDcgKzkwNyw3IEBA IENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMpICQoWVlP QkopIFwKIAl4bWwtc3VwcG9ydC5vIHhtbC1zeXNjYWxsLm8geG1sLXV0aWxz Lm8gXAogCXRhcmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQtbWVtb3J5Lm8g eG1sLXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCiAJaW5mZXJpb3IubyBvc2Rh dGEubyBnZGJfdXNsZWVwLm8gcmVjb3JkLm8gZ2NvcmUubyBcCi0Jaml0Lm8g cHJvZ3NwYWNlLm8gXAorCWppdC5vIHByb2dzcGFjZS5vIHNraXAubyBcCiAJ Y29tbW9uLXV0aWxzLm8gYnVmZmVyLm8gcHRpZC5vCiAKIFRTT0JTID0gaW5m bG93Lm8KZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MKaW5kZXgg NGQ0MzRjNS4uODIyNWNmOCAxMDA2NDQKLS0tIGEvZ2RiL05FV1MKKysrIGIv Z2RiL05FV1MKQEAgLTMsNiArMyw5IEBACiAKICoqKiBDaGFuZ2VzIHNpbmNl IEdEQiA3LjMuMQogCisqIEdEQiBub3cgYWxsb3dzIHlvdSB0byBza2lwIHVu aW50ZXJlc3RpbmcgZnVuY3Rpb25zIGFuZCBmaWxlcyB3aGVuCisgIHN0ZXBw aW5nIHdpdGggdGhlICJza2lwIGZ1bmN0aW9uIiBhbmQgInNraXAgZmlsZSIg Y29tbWFuZHMuCisKICogR0RCIGhhcyB0d28gbmV3IGNvbW1hbmRzOiAic2V0 IHJlbW90ZSBoYXJkd2FyZS13YXRjaHBvaW50LWxlbmd0aC1saW1pdCIKICAg YW5kICJzaG93IHJlbW90ZSBoYXJkd2FyZS13YXRjaHBvaW50LWxlbmd0aC1s aW1pdCIuICBUaGVzZSBhbGxvd3MgdG8KICAgc2V0IG9yIHNob3cgdGhlIG1h eGltdW0gbGVuZ3RoIGxpbWl0IChpbiBieXRlcykgb2YgYSByZW1vdGUKZGlm ZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5j CmluZGV4IDA4ZmY2OWIuLmI0MWZiNzkgMTAwNjQ0Ci0tLSBhL2dkYi9icmVh a3BvaW50LmMKKysrIGIvZ2RiL2JyZWFrcG9pbnQuYwpAQCAtNjUsNiArNjUs OCBAQAogI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCiAjaW5jbHVkZSAiY2xp L2NsaS11dGlscy5oIgogI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIKKyNp bmNsdWRlICJzdGFjay5oIgorI2luY2x1ZGUgInNraXAuaCIKIAogLyogcmVh ZGxpbmUgaW5jbHVkZSBmaWxlcyAqLwogI2luY2x1ZGUgInJlYWRsaW5lL3Jl YWRsaW5lLmgiCkBAIC01NzIsMTkgKzU3NCw2IEBAIG1ha2VfY2xlYW51cF9k ZWNyZWZfY291bnRlZF9jb21tYW5kX2xpbmUgKHN0cnVjdCBjb3VudGVkX2Nv bW1hbmRfbGluZSAqKmNtZHApCiAgIHJldHVybiBtYWtlX2NsZWFudXAgKGRv X2NsZWFudXBfY291bnRlZF9jb21tYW5kX2xpbmUsIGNtZHApOwogfQogCi0v KiBEZWZhdWx0IGFkZHJlc3MsIHN5bXRhYiBhbmQgbGluZSB0byBwdXQgYSBi cmVha3BvaW50IGF0Ci0gICBmb3IgImJyZWFrIiBjb21tYW5kIHdpdGggbm8g YXJnLgotICAgSWYgZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkIGlzIHplcm8s IHRoZSBvdGhlciB0aHJlZSBhcmUKLSAgIG5vdCB2YWxpZCwgYW5kICJicmVh ayIgd2l0aCBubyBhcmcgaXMgYW4gZXJyb3IuCi0KLSAgIFRoaXMgc2V0IGJ5 IHByaW50X3N0YWNrX2ZyYW1lLCB3aGljaCBjYWxscyBzZXRfZGVmYXVsdF9i cmVha3BvaW50LiAgKi8KLQotaW50IGRlZmF1bHRfYnJlYWtwb2ludF92YWxp ZDsKLUNPUkVfQUREUiBkZWZhdWx0X2JyZWFrcG9pbnRfYWRkcmVzczsKLXN0 cnVjdCBzeW10YWIgKmRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7Ci1pbnQg ZGVmYXVsdF9icmVha3BvaW50X2xpbmU7Ci1zdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsKLQogDAogLyogUmV0dXJu IHRoZSBicmVha3BvaW50IHdpdGggdGhlIHNwZWNpZmllZCBudW1iZXIsIG9y IE5VTEwKICAgIGlmIHRoZSBudW1iZXIgZG9lcyBub3QgcmVmZXIgdG8gYW4g ZXhpc3RpbmcgYnJlYWtwb2ludC4gICovCkBAIC01MzM5LDIwICs1MzI4LDYg QEAgZGVzY3JpYmVfb3RoZXJfYnJlYWtwb2ludHMgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAogICAgIH0KIH0KIAwKLS8qIFNldCB0aGUgZGVmYXVsdCBw bGFjZSB0byBwdXQgYSBicmVha3BvaW50Ci0gICBmb3IgdGhlIGBicmVhaycg Y29tbWFuZCB3aXRoIG5vIGFyZ3VtZW50cy4gICovCi0KLXZvaWQKLXNldF9k ZWZhdWx0X2JyZWFrcG9pbnQgKGludCB2YWxpZCwgc3RydWN0IHByb2dyYW1f c3BhY2UgKnBzcGFjZSwKLQkJCUNPUkVfQUREUiBhZGRyLCBzdHJ1Y3Qgc3lt dGFiICpzeW10YWIsCi0JCQlpbnQgbGluZSkKLXsKLSAgZGVmYXVsdF9icmVh a3BvaW50X3ZhbGlkID0gdmFsaWQ7Ci0gIGRlZmF1bHRfYnJlYWtwb2ludF9w c3BhY2UgPSBwc3BhY2U7Ci0gIGRlZmF1bHRfYnJlYWtwb2ludF9hZGRyZXNz ID0gYWRkcjsKLSAgZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYiA9IHN5bXRh YjsKLSAgZGVmYXVsdF9icmVha3BvaW50X2xpbmUgPSBsaW5lOwotfQogCiAv KiBSZXR1cm4gdHJ1ZSBpZmYgaXQgaXMgbWVhbmluZ2Z1bCB0byB1c2UgdGhl IGFkZHJlc3MgbWVtYmVyIG9mCiAgICBCUFQuICBGb3Igc29tZSBicmVha3Bv aW50IHR5cGVzLCB0aGUgYWRkcmVzcyBtZW1iZXIgaXMgaXJyZWxldmFudApA QCAtNTc2NCw3ICs1NzM5LDcgQEAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25f ZnVuY3Rpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jLCBpbnQgZXhwbGlj aXRfbG9jKQogfQogCiAvKiBBdHRlbXB0IHRvIGRldGVybWluZSBhcmNoaXRl Y3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwuICAqLwotc3Rh dGljIHN0cnVjdCBnZGJhcmNoICoKK3N0cnVjdCBnZGJhcmNoICoKIGdldF9z YWxfYXJjaCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWwpCiB7CiAgIGlm IChzYWwuc2VjdGlvbikKQEAgLTc1NDMsMjQgKzc1MTgsMjYgQEAgcGFyc2Vf YnJlYWtwb2ludF9zYWxzIChjaGFyICoqYWRkcmVzcywKICAgaWYgKCgqYWRk cmVzcykgPT0gTlVMTAogICAgICAgfHwgKHN0cm5jbXAgKCgqYWRkcmVzcyks ICJpZiIsIDIpID09IDAgJiYgaXNzcGFjZSAoKCphZGRyZXNzKVsyXSkpKQog ICAgIHsKLSAgICAgIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCisg ICAgICAvKiBUaGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50LCBpZiBpdCdz IHZhbGlkLCBpcyBvdXIgZGVmYXVsdCBicmVha3BvaW50CisgICAgICAgICBh ZGRyZXNzLiAqLworICAgICAgaWYgKGxhc3RfZGlzcGxheWVkX3NhbF9pc192 YWxpZCAoKSkKIAl7CiAJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsK IAogCSAgaW5pdF9zYWwgKCZzYWwpOwkJLyogSW5pdGlhbGl6ZSB0byB6ZXJv ZXMuICAqLwogCSAgc2Fscy0+c2FscyA9IChzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lICopCiAJICAgIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHN5bXRhYl9h bmRfbGluZSkpOwotCSAgc2FsLnBjID0gZGVmYXVsdF9icmVha3BvaW50X2Fk ZHJlc3M7Ci0JICBzYWwubGluZSA9IGRlZmF1bHRfYnJlYWtwb2ludF9saW5l OwotCSAgc2FsLnN5bXRhYiA9IGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7 Ci0JICBzYWwucHNwYWNlID0gZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsK LQkgIHNhbC5zZWN0aW9uID0gZmluZF9wY19vdmVybGF5IChzYWwucGMpOwor CisJICAvKiBTZXQgc2FsJ3MgcHNwYWNlLCBwYywgc3ltdGFiLCBhbmQgbGlu ZSB0byB0aGUgdmFsdWVzCisJICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBs YXN0IGNhbGwgdG8gcHJpbnRfZnJhbWVfaW5mby4gKi8KKwkgIGdldF9sYXN0 X2Rpc3BsYXllZF9zYWwgKCZzYWwpOworICAgICAgICAgIHNhbC5zZWN0aW9u ID0gZmluZF9wY19vdmVybGF5IChzYWwucGMpOwogCiAJICAvKiAiYnJlYWsi IHdpdGhvdXQgYXJndW1lbnRzIGlzIGVxdWl2YWxlbnQgdG8gImJyZWFrICpQ QyIKLQkgICAgIHdoZXJlIFBDIGlzIHRoZSBkZWZhdWx0X2JyZWFrcG9pbnRf YWRkcmVzcy4gIFNvIG1ha2Ugc3VyZQotCSAgICAgdG8gc2V0IHNhbC5leHBs aWNpdF9wYyB0byBwcmV2ZW50IEdEQiBmcm9tIHRyeWluZyB0bwotCSAgICAg ZXhwYW5kIHRoZSBsaXN0IG9mIHNhbHMgdG8gaW5jbHVkZSBhbGwgb3RoZXIg aW5zdGFuY2VzCi0JICAgICB3aXRoIHRoZSBzYW1lIHN5bXRhYiBhbmQgbGlu ZS4gICovCisJICAgICB3aGVyZSBQQyBpcyB0aGUgbGFzdCBkaXNwbGF5ZWQg Y29kZXBvaW50J3MgYWRkcmVzcy4gIFNvCisJICAgICBtYWtlIHN1cmUgdG8g c2V0IHNhbC5leHBsaWNpdF9wYyB0byBwcmV2ZW50IEdEQiBmcm9tCisJICAg ICB0cnlpbmcgdG8gZXhwYW5kIHRoZSBsaXN0IG9mIHNhbHMgdG8gaW5jbHVk ZSBhbGwgb3RoZXIKKwkgICAgIGluc3RhbmNlcyB3aXRoIHRoZSBzYW1lIHN5 bXRhYiBhbmQgbGluZS4gICovCiAJICBzYWwuZXhwbGljaXRfcGMgPSAxOwog CiAJICBzYWxzLT5zYWxzWzBdID0gc2FsOwpAQCAtNzU3NCwxOSArNzU1MSwy MiBAQCBwYXJzZV9icmVha3BvaW50X3NhbHMgKGNoYXIgKiphZGRyZXNzLAog ICAgICAgLyogRm9yY2UgYWxtb3N0IGFsbCBicmVha3BvaW50cyB0byBiZSBp biB0ZXJtcyBvZiB0aGUKICAgICAgICAgIGN1cnJlbnRfc291cmNlX3N5bXRh YiAod2hpY2ggaXMgZGVjb2RlX2xpbmVfMSdzIGRlZmF1bHQpLgogICAgICAg ICAgVGhpcyBzaG91bGQgcHJvZHVjZSB0aGUgcmVzdWx0cyB3ZSB3YW50IGFs bW9zdCBhbGwgb2YgdGhlCi0gICAgICAgICB0aW1lIHdoaWxlIGxlYXZpbmcg ZGVmYXVsdF9icmVha3BvaW50XyogYWxvbmUuCisJIHRpbWUgd2hpbGUgbGVh dmluZyB0aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50IHBvaW50ZXJzCisJ IGFsb25lLgogCiAgICAgICAgICBPYmpDOiBIb3dldmVyLCBkb24ndCBtYXRj aCBhbiBPYmplY3RpdmUtQyBtZXRob2QgbmFtZSB3aGljaAogICAgICAgICAg bWF5IGhhdmUgYSAnKycgb3IgJy0nIHN1Y2NlZWRlZCBieSBhICdbJyAqLwog CSAKICAgICAgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgY3Vyc2FsID0gZ2V0 X2N1cnJlbnRfc291cmNlX3N5bXRhYl9hbmRfbGluZSAoKTsKIAkJCQotICAg ICAgaWYgKGRlZmF1bHRfYnJlYWtwb2ludF92YWxpZAorICAgICAgaWYgKGxh c3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKQogCSAgJiYgKCFjdXJzYWwu c3ltdGFiCiAgCSAgICAgIHx8ICgoc3RyY2hyICgiKy0iLCAoKmFkZHJlc3Mp WzBdKSAhPSBOVUxMKQogIAkJICAmJiAoKCphZGRyZXNzKVsxXSAhPSAnWycp KSkpCi0JKnNhbHMgPSBkZWNvZGVfbGluZV8xIChhZGRyZXNzLCAxLCBkZWZh dWx0X2JyZWFrcG9pbnRfc3ltdGFiLAotCQkJICAgICAgIGRlZmF1bHRfYnJl YWtwb2ludF9saW5lLCBjYW5vbmljYWwpOworCSpzYWxzID0gZGVjb2RlX2xp bmVfMSAoYWRkcmVzcywgMSwKKwkJCSAgICAgICBnZXRfbGFzdF9kaXNwbGF5 ZWRfc3ltdGFiICgpLAorCQkJICAgICAgIGdldF9sYXN0X2Rpc3BsYXllZF9s aW5lICgpLAorCQkJICAgICAgIGNhbm9uaWNhbCk7CiAgICAgICBlbHNlCiAJ KnNhbHMgPSBkZWNvZGVfbGluZV8xIChhZGRyZXNzLCAxLCAoc3RydWN0IHN5 bXRhYiAqKSBOVUxMLCAwLAogCQkgICAgICAgICAgICAgICBjYW5vbmljYWwp OwpAQCAtOTYxMSw5ICs5NTkxLDExIEBAIHVudGlsX2JyZWFrX2NvbW1hbmQg KGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgIC8q IFNldCBhIGJyZWFrcG9pbnQgd2hlcmUgdGhlIHVzZXIgd2FudHMgaXQgYW5k IGF0IHJldHVybiBmcm9tCiAgICAgIHRoaXMgZnVuY3Rpb24uICAqLwogCi0g IGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCi0gICAgc2FscyA9IGRl Y29kZV9saW5lXzEgKCZhcmcsIDEsIGRlZmF1bHRfYnJlYWtwb2ludF9zeW10 YWIsCi0JCQkgIGRlZmF1bHRfYnJlYWtwb2ludF9saW5lLCBOVUxMKTsKKyAg aWYgKGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKSkKKyAgICBzYWxz ID0gZGVjb2RlX2xpbmVfMSAoJmFyZywgMSwKKwkJCSAgZ2V0X2xhc3RfZGlz cGxheWVkX3N5bXRhYiAoKSwKKwkJCSAgZ2V0X2xhc3RfZGlzcGxheWVkX2xp bmUgKCksCisJCQkgIE5VTEwpOwogICBlbHNlCiAgICAgc2FscyA9IGRlY29k ZV9saW5lXzEgKCZhcmcsIDEsIChzdHJ1Y3Qgc3ltdGFiICopIE5VTEwsIDAs IE5VTEwpOwogCkBAIC0xMDEzNSwxMCArMTAxMTcsMTEgQEAgY2xlYXJfY29t bWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiAJeG1hbGxvYyAoc2l6 ZW9mIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lKSk7CiAgICAgICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBzYWxzLnNhbHMpOwogICAgICAgaW5pdF9zYWwgKCZz YWwpOwkJLyogSW5pdGlhbGl6ZSB0byB6ZXJvZXMuICAqLwotICAgICAgc2Fs LmxpbmUgPSBkZWZhdWx0X2JyZWFrcG9pbnRfbGluZTsKLSAgICAgIHNhbC5z eW10YWIgPSBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFiOwotICAgICAgc2Fs LnBjID0gZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3M7Ci0gICAgICBzYWwu cHNwYWNlID0gZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsKKworICAgICAg LyogU2V0IHNhbCdzIGxpbmUsIHN5bXRhYiwgcGMsIGFuZCBwc3BhY2UgdG8g dGhlIHZhbHVlcworCSBjb3JyZXNwb25kaW5nIHRvIHRoZSBsYXN0IGNhbGwg dG8gcHJpbnRfZnJhbWVfaW5mby4gIElmIHRoZQorCSBjb2RlcG9pbnQgaXMg bm90IHZhbGlkLCB0aGlzIHdpbGwgc2V0IGFsbCB0aGUgZmllbGRzIHRvIDAu ICovCisgICAgICBnZXRfbGFzdF9kaXNwbGF5ZWRfc2FsICgmc2FsKTsKICAg ICAgIGlmIChzYWwuc3ltdGFiID09IDApCiAJZXJyb3IgKF8oIk5vIHNvdXJj ZSBmaWxlIHNwZWNpZmllZC4iKSk7CiAKQEAgLTExOTg2LDYgKzExOTY5LDkg QEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCiAgIGNyZWF0ZV9sb25nam1w X21hc3Rlcl9icmVha3BvaW50ICgpOwogICBjcmVhdGVfc3RkX3Rlcm1pbmF0 ZV9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKICAgY3JlYXRlX2V4Y2VwdGlvbl9t YXN0ZXJfYnJlYWtwb2ludCAoKTsKKworICAvKiBXaGlsZSB3ZSdyZSBhdCBp dCwgcmVzZXQgdGhlIHNraXAgbGlzdCB0b28uICovCisgIHNraXBfcmVfc2V0 ICgpOwogfQogDAogLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2YgdGhp cyBicmVha3BvaW50OgpAQCAtMTI0MzUsNyArMTI0MjEsOCBAQCBpbnZhbGlk YXRlX2JwX3ZhbHVlX29uX21lbW9yeV9jaGFuZ2UgKENPUkVfQUREUiBhZGRy LCBpbnQgbGVuLAogICAgICAgfQogfQogCi0vKiBVc2UgZGVmYXVsdF9icmVh a3BvaW50XydzLCBvciBub3RoaW5nIGlmIHRoZXkgYXJlbid0IHZhbGlkLiAg Ki8KKy8qIFVzZSB0aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50J3MgdmFs dWVzLCBvciBub3RoaW5nCisgICBpZiB0aGV5IGFyZW4ndCB2YWxpZC4gKi8K IAogc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzCiBkZWNvZGVfbGluZV9zcGVj XzEgKGNoYXIgKnN0cmluZywgaW50IGZ1bmZpcnN0bGluZSkKQEAgLTEyNDQ0 LDEwICsxMjQzMSwxMCBAQCBkZWNvZGVfbGluZV9zcGVjXzEgKGNoYXIgKnN0 cmluZywgaW50IGZ1bmZpcnN0bGluZSkKIAogICBpZiAoc3RyaW5nID09IDAp CiAgICAgZXJyb3IgKF8oIkVtcHR5IGxpbmUgc3BlY2lmaWNhdGlvbi4iKSk7 Ci0gIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCisgIGlmIChsYXN0 X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQgKCkpCiAgICAgc2FscyA9IGRlY29k ZV9saW5lXzEgKCZzdHJpbmcsIGZ1bmZpcnN0bGluZSwKLQkJCSAgZGVmYXVs dF9icmVha3BvaW50X3N5bXRhYiwKLQkJCSAgZGVmYXVsdF9icmVha3BvaW50 X2xpbmUsCisJCQkgIGdldF9sYXN0X2Rpc3BsYXllZF9zeW10YWIgKCksCisJ CQkgIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lICgpLAogCQkJICBOVUxMKTsK ICAgZWxzZQogICAgIHNhbHMgPSBkZWNvZGVfbGluZV8xICgmc3RyaW5nLCBm dW5maXJzdGxpbmUsCmRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5oIGIv Z2RiL2JyZWFrcG9pbnQuaAppbmRleCA1ZTVkMWI5Li5kOGE3NjAxIDEwMDY0 NAotLS0gYS9nZGIvYnJlYWtwb2ludC5oCisrKyBiL2dkYi9icmVha3BvaW50 LmgKQEAgLTEwMzMsOSArMTAzMyw2IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtw b2ludCAqY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVh a3BvaW50ICpicGt0KTsKIAogZXh0ZXJuIHZvaWQgc2V0X2lnbm9yZV9jb3Vu dCAoaW50LCBpbnQsIGludCk7CiAKLWV4dGVybiB2b2lkIHNldF9kZWZhdWx0 X2JyZWFrcG9pbnQgKGludCwgc3RydWN0IHByb2dyYW1fc3BhY2UgKiwKLQkJ CQkgICAgQ09SRV9BRERSLCBzdHJ1Y3Qgc3ltdGFiICosIGludCk7Ci0KIGV4 dGVybiB2b2lkIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51bSBpbmZf Y29udGV4dCk7CiAKIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVh bnVwX2RlbGV0ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsK QEAgLTEzNTksNCArMTM1Niw3IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2lu dCAqaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRzIChpbnQgKCopIChzdHJ1Y3Qg YnJlYWtwb2ludCAqCiAKIGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3Ag KHN0cnVjdCBicmVha3BvaW50ICopOwogCisvKiBBdHRlbXB0IHRvIGRldGVy bWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBT QUwuICAqLworZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICpnZXRfc2FsX2FyY2gg KHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsKTsKKwogI2VuZGlmIC8qICFk ZWZpbmVkIChCUkVBS1BPSU5UX0gpICovCmRpZmYgLS1naXQgYS9nZGIvY2xp L2NsaS1jbWRzLmMgYi9nZGIvY2xpL2NsaS1jbWRzLmMKaW5kZXggY2NmNmVh Ni4uZGFiM2ExMiAxMDA2NDQKLS0tIGEvZ2RiL2NsaS9jbGktY21kcy5jCisr KyBiL2dkYi9jbGkvY2xpLWNtZHMuYwpAQCAtMTg1LDYgKzE4NSw4IEBAIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzZXRjaGVja2xpc3Q7CiAKIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpzaG93Y2hlY2tsaXN0OwogCitzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqc2tpcGxpc3Q7CisKIC8qIENvbW1hbmQgdHJh Y2luZyBzdGF0ZS4gICovCiAKIGludCBzb3VyY2VfdmVyYm9zZSA9IDA7CkBA IC0xMzI5LDYgKzEzMzEsNyBAQCBpbml0X2NtZF9saXN0cyAodm9pZCkKICAg c2hvd3ByaW50bGlzdCA9IE5VTEw7CiAgIHNldGNoZWNrbGlzdCA9IE5VTEw7 CiAgIHNob3djaGVja2xpc3QgPSBOVUxMOworICBza2lwbGlzdCA9IE5VTEw7 CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMzk0LDcgKzEzOTcsNyBAQCBpbml0 X2NsaV9jbWRzICh2b2lkKQogICBjaGFyICpzb3VyY2VfaGVscF90ZXh0Owog CiAgIC8qIERlZmluZSB0aGUgY2xhc3NlcyBvZiBjb21tYW5kcy4KLSAgICAg VGhleSB3aWxsIGFwcGVhciBpbiB0aGUgaGVscCBsaXN0IGluIHRoZSByZXZl cnNlIG9mIHRoaXMgb3JkZXIuICAqLworICAgICBUaGV5IHdpbGwgYXBwZWFy IGluIHRoZSBoZWxwIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLiAgKi8K IAogICBhZGRfY21kICgiaW50ZXJuYWxzIiwgY2xhc3NfbWFpbnRlbmFuY2Us IE5VTEwsIF8oIlwKIE1haW50ZW5hbmNlIGNvbW1hbmRzLlxuXApkaWZmIC0t Z2l0IGEvZ2RiL2NsaS9jbGktY21kcy5oIGIvZ2RiL2NsaS9jbGktY21kcy5o CmluZGV4IGU3OWRjZjAuLjczY2NkZDIgMTAwNjQ0Ci0tLSBhL2dkYi9jbGkv Y2xpLWNtZHMuaAorKysgYi9nZGIvY2xpL2NsaS1jbWRzLmgKQEAgLTEwNiw2 ICsxMDYsOCBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNl dGNoZWNrbGlzdDsKIAogZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpzaG93Y2hlY2tsaXN0OwogCitleHRlcm4gc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKnNraXBsaXN0OworCiAvKiBFeHBvcnRlZCB0byBnZGIvdG9wLmMg Ki8KIAogdm9pZCBpbml0X2NtZF9saXN0cyAodm9pZCk7CmRpZmYgLS1naXQg YS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpp bmRleCBkZDBmN2Y2Li4zODJkZmQ0IDEwMDY0NAotLS0gYS9nZGIvZG9jL2dk Yi50ZXhpbmZvCisrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KQEAgLTQ4NTQs NiArNDg1NCwxMTEgQEAgcHJvY2VlZCB1bnRpbCB0aGUgZnVuY3Rpb24gcmV0 dXJucy4KIEFuIGFyZ3VtZW50IGlzIGEgcmVwZWF0IGNvdW50LCBhcyBpbiBA Y29kZXtuZXh0fS4KIEBlbmQgdGFibGUKIAorQG5vZGUgU2tpcHBpbmcgT3Zl ciBGdW5jdGlvbnMgYW5kIEZpbGVzCitAc3Vic2VjdGlvbiBTa2lwcGluZyBP dmVyIEZ1bmN0aW9ucyBhbmQgRmlsZXMKK0BjaW5kZXggc2tpcHBpbmcgb3Zl ciBmdW5jdGlvbnMgYW5kIGZpbGVzCisKK1RoZSBwcm9ncmFtIHlvdSBhcmUg ZGVidWdnaW5nIG1heSBjb250YWluIHNvbWUgZnVuY3Rpb25zIHdoaWNoIGFy ZQordW5pbnRlcmVzdGluZyB0byBkZWJ1Zy4gIFRoZSBAY29kZXtza2lwfSBj b21hbmQgbGV0cyB5b3UgdGVsbCBAdmFsdWV7R0RCTn0gdG8KK3NraXAgYSBm dW5jdGlvbiBvciBhbGwgZnVuY3Rpb25zIGluIGEgZmlsZSB3aGVuIHN0ZXBw aW5nLgorCitGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBD IGZ1bmN0aW9uOgorCitAc21hbGxleGFtcGxlCisxMDEgICAgIGludCBmdW5j KCkKKzEwMiAgICAgQHsKKzEwMyAgICAgICAgIGZvbyhib3JpbmcoKSk7Cisx MDQgICAgICAgICBiYXIoYm9yaW5nKCkpOworMTA1ICAgICBAfQorQGVuZCBz bWFsbGV4YW1wbGUKKworQG5vaW5kZW50CitTdXBwb3NlIHlvdSB3aXNoIHRv IHN0ZXAgaW50byB0aGUgZnVuY3Rpb25zIEBjb2Rle2Zvb30gYW5kIEBjb2Rl e2Jhcn0sIGJ1dCB5b3UKK2FyZSBub3QgaW50ZXJlc3RlZCBpbiBzdGVwcGlu ZyB0aHJvdWdoIEBjb2Rle2JvcmluZ30uICBJZiB5b3UgcnVuIEBjb2Rle3N0 ZXB9CithdCBsaW5lIDEwMywgeW91J2xsIGVudGVyIEBjb2Rle2JvcmluZygp fSwgYnV0IGlmIHlvdSBydW4gQGNvZGV7bmV4dH0sIHlvdSdsbAorc3RlcCBv dmVyIGJvdGggQGNvZGV7Zm9vfSBhbmQgQGNvZGV7Ym9yaW5nfSEKKworT25l IHNvbHV0aW9uIGlzIHRvIEBjb2Rle3N0ZXB9IGludG8gQGNvZGV7Ym9yaW5n fSBhbmQgdXNlIHRoZSBAY29kZXtmaW5pc2h9Citjb21tYW5kIHRvIGltbWVk aWF0ZWx5IGV4aXQgaXQuICBCdXQgdGhpcyBjYW4gYmVjb21lIHRlZGlvdXMg aWYgQGNvZGV7Ym9yaW5nfQoraXMgY2FsbGVkIGZyb20gbWFueSBwbGFjZXMu CisKK0EgbW9yZSBmbGV4aWJsZSBzb2x1dGlvbiBpcyB0byBleGVjdXRlIEBr YmR7c2tpcCBib3Jpbmd9LiAgVGhpcyBpbnN0cnVjdHMKK0B2YWx1ZXtHREJO fSBuZXZlciB0byBzdGVwIGludG8gQGNvZGV7Ym9yaW5nfS4gIE5vdyB3aGVu IHlvdSBleGVjdXRlCitAY29kZXtzdGVwfSBhdCBsaW5lIDEwMywgeW91J2xs IHN0ZXAgb3ZlciBAY29kZXtib3Jpbmd9IGFuZCBkaXJlY3RseSBpbnRvCitA Y29kZXtmb299LgorCitZb3UgY2FuIGFsc28gaW5zdHJ1Y3QgQHZhbHVle0dE Qk59IHRvIHNraXAgYWxsIGZ1bmN0aW9ucyBpbiBhIGZpbGUsIHdpdGgsIGZv cgorZXhhbXBsZSwgQGNvZGV7c2tpcCBmaWxlIGJvcmluZy5jfS4KKworQHRh YmxlIEBjb2RlCitAa2luZGV4IHNraXAgZnVuY3Rpb24KK0BpdGVtIHNraXAg QHJ7W31AdmFye2xpbmVzcGVjfUBye119CitAaXRlbXggc2tpcCBmdW5jdGlv biBAcntbfUB2YXJ7bGluZXNwZWN9QHJ7XX0KK0FmdGVyIHJ1bm5pbmcgdGhp cyBjb21tYW5kLCB0aGUgZnVuY3Rpb24gbmFtZWQgYnkgQHZhcntsaW5lc3Bl Y30gb3IgdGhlCitmdW5jdGlvbiBjb250YWluaW5nIHRoZSBsaW5lIG5hbWVk IGJ5IEB2YXJ7bGluZXNwZWN9IHdpbGwgYmUgc2tpcHBlZCBvdmVyIHdoZW4K K3N0ZXBwaW5nLiAgQHhyZWZ7U3BlY2lmeSBMb2NhdGlvbn0KKworSWYgeW91 IGRvIG5vdCBzcGVjaWZ5IEB2YXJ7bGluZXNwZWN9LCB0aGUgZnVuY3Rpb24g eW91J3JlIGN1cnJlbnRseSBkZWJ1Z2dpbmcKK3dpbGwgYmUgc2tpcHBlZC4K KworKElmIHlvdSBoYXZlIGEgZnVuY3Rpb24gY2FsbGVkIEBjb2Rle2ZpbGV9 IHRoYXQgeW91IHdhbnQgdG8gc2tpcCwgdXNlCitAa2Jke3NraXAgZnVuY3Rp b24gZmlsZX0uKQorCitAa2luZGV4IHNraXAgZmlsZQorQGl0ZW0gc2tpcCBm aWxlIEBye1t9QHZhcntmaWxlbmFtZX1AcntdfQorQWZ0ZXIgcnVubmluZyB0 aGlzIGNvbW1hbmQsIGFueSBmdW5jdGlvbiB3aG9zZSBzb3VyY2UgbGl2ZXMg aW4gQHZhcntmaWxlbmFtZX0KK3dpbGwgYmUgc2tpcHBlZCBvdmVyIHdoZW4g c3RlcHBpbmcuCisKK0lmIHlvdSBkbyBub3Qgc3BlY2lmeSBAdmFye2ZpbGVu YW1lfSwgZnVuY3Rpb25zIHdob3NlIHNvdXJjZSBsaXZlcyBpbiB0aGUgZmls ZQoreW91J3JlIGN1cnJlbnRseSBkZWJ1Z2dpbmcgd2lsbCBiZSBza2lwcGVk LgorQGVuZCB0YWJsZQorCitTa2lwcyBjYW4gYmUgbGlzdGVkLCBkZWxldGVk LCBkaXNhYmxlZCwgYW5kIGVuYWJsZWQsIG11Y2ggbGlrZSBicmVha3BvaW50 cy4KK1RoZXNlIGFyZSB0aGUgY29tbWFuZHMgZm9yIG1hbmFnaW5nIHlvdXIg bGlzdCBvZiBza2lwczoKKworQHRhYmxlIEBjb2RlCitAa2luZGV4IGluZm8g c2tpcAorQGl0ZW0gaW5mbyBza2lwIEBye1t9QHZhcntyYW5nZX1AcntdfQor UHJpbnQgZGV0YWlscyBhYm91dCB0aGUgc3BlY2lmaWVkIHNraXAocykuICBJ ZiBAdmFye3JhbmdlfSBpcyBub3Qgc3BlY2lmaWVkLAorcHJpbnQgYSB0YWJs ZSB3aXRoIGRldGFpbHMgYWJvdXQgYWxsIGZ1bmN0aW9ucyBhbmQgZmlsZXMg bWFya2VkIGZvciBza2lwcGluZy4KK0Bjb2Rle2luZm8gc2tpcH0gcHJpbnRz IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBza2lwOgor CitAdGFibGUgQGVtcGgKK0BpdGVtIElkZW50aWZpZXIKK0EgbnVtYmVyIGlk ZW50aWZ5aW5nIHRoaXMgc2tpcC4KK0BpdGVtIFR5cGUKK1RoZSB0eXBlIG9m IHRoaXMgc2tpcCwgZWl0aGVyIEBzYW1we2Z1bmN0aW9ufSBvciBAc2FtcHtm aWxlfS4KK0BpdGVtIEVuYWJsZWQgb3IgRGlzYWJsZWQKK0VuYWJsZWQgc2tp cHMgYXJlIG1hcmtlZCB3aXRoIEBzYW1we3l9LiAgRGlzYWJsZWQgc2tpcHMg YXJlIG1hcmtlZCB3aXRoIEBzYW1we259LgorQGl0ZW0gQWRkcmVzcworRm9y IGZ1bmN0aW9uIHNraXBzLCB0aGlzIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIGFk ZHJlc3MgaW4gbWVtb3J5IG9mIHRoZSBmdW5jdGlvbgorYmVpbmcgc2tpcHBl ZC4gIElmIHlvdSd2ZSBzZXQgYSBmdW5jdGlvbiBza2lwIG9uIGEgZnVuY3Rp b24gd2hpY2ggaGFzIG5vdCB5ZXQKK2JlZW4gbG9hZGVkLCB0aGlzIGZpZWxk IHdpbGwgY29udGFpbiBAc2FtcHs8UEVORElORz59LiAgT25jZSBhIHNoYXJl ZCBsaWJyYXJ5Cit3aGljaCBoYXMgdGhlIGZ1bmN0aW9uIGlzIGxvYWRlZCwg QGNvZGV7aW5mbyBza2lwfSB3aWxsIHNob3cgdGhlIGZ1bmN0aW9uJ3MKK2Fk ZHJlc3MgaGVyZS4KK0BpdGVtIFdoYXQKK0ZvciBmaWxlIHNraXBzLCB0aGlz IGZpZWxkIGNvbnRhaW5zIHRoZSBmaWxlbmFtZSBiZWluZyBza2lwcGVkLiAg Rm9yIGZ1bmN0aW9ucworc2tpcHMsIHRoaXMgZmllbGQgY29udGFpbnMgdGhl IGZ1bmN0aW9uIG5hbWUgYW5kIGl0cyBsaW5lIG51bWJlciBpbiB0aGUgZmls ZQord2hlcmUgaXQgaXMgZGVmaW5lZC4KK0BlbmQgdGFibGUKKworQGtpbmRl eCBza2lwIGRlbGV0ZQorQGl0ZW0gc2tpcCBkZWxldGUgQHJ7W31AdmFye3Jh bmdlfUBye119CitEZWxldGUgdGhlIHNwZWNpZmllZCBza2lwKHMpLiAgSWYg QHZhcntyYW5nZX0gaXMgbm90IHNwZWNpZmllZCwgZGVsZXRlIGFsbAorc2tp cHMuCisKK0BraW5kZXggc2tpcCBlbmFibGUKK0BpdGVtIHNraXAgZW5hYmxl IEBye1t9QHZhcntyYW5nZX1AcntdfQorRW5hYmxlIHRoZSBzcGVjaWZpZWQg c2tpcChzKS4gIElmIEB2YXJ7cmFuZ2V9IGlzIG5vdCBzcGVjaWZpZWQsIGVu YWJsZSBhbGwKK3NraXBzLgorCitAa2luZGV4IHNraXAgZGlzYWJsZQorQGl0 ZW0gc2tpcCBkaXNhYmxlIEBye1t9QHZhcntyYW5nZX1AcntdfQorRGlzYWJs ZSB0aGUgc3BlY2lmaWVkIHNraXAocykuICBJZiBAdmFye3JhbmdlfSBpcyBu b3Qgc3BlY2lmaWVkLCBkaXNhYmxlIGFsbAorc2tpcHMuCisKK0BlbmQgdGFi bGUKKwogQG5vZGUgU2lnbmFscwogQHNlY3Rpb24gU2lnbmFscwogQGNpbmRl eCBzaWduYWxzCmRpZmYgLS1naXQgYS9nZGIvZ2RiY21kLmggYi9nZGIvZ2Ri Y21kLmgKaW5kZXggYzAyY2U2OS4uNjA2YjgxMiAxMDA2NDQKLS0tIGEvZ2Ri L2dkYmNtZC5oCisrKyBiL2dkYi9nZGJjbWQuaApAQCAtMTI0LDYgKzEyNCw4 IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2V0Y2hlY2ts aXN0OwogCiBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNob3dj aGVja2xpc3Q7CiAKK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq c2tpcGxpc3Q7CisKIC8qIENoYWluIGNvbnRhaW5pbmcgYWxsIGRlZmluZWQg InNhdmUiIHN1YmNvbW1hbmRzLiAgKi8KIAogZXh0ZXJuIHN0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICpzYXZlX2NtZGxpc3Q7CmRpZmYgLS1naXQgYS9nZGIv aW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKaW5kZXggMjI1MDM0Yy4uZThiZTEy MSAxMDA2NDQKLS0tIGEvZ2RiL2luZnJ1bi5jCisrKyBiL2dkYi9pbmZydW4u YwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgInRyYWNlcG9pbnQuaCIK ICNpbmNsdWRlICJjb250aW51YXRpb25zLmgiCiAjaW5jbHVkZSAiaW50ZXJw cy5oIgorI2luY2x1ZGUgInNraXAuaCIKIAogLyogUHJvdG90eXBlcyBmb3Ig bG9jYWwgZnVuY3Rpb25zICovCiAKQEAgLTQ4MjksNyArNDgzMCw4IEBAIHBy b2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogCX0KIAogICAgICAgLyogSWYgd2Ug aGF2ZSBsaW5lIG51bWJlciBpbmZvcm1hdGlvbiBmb3IgdGhlIGZ1bmN0aW9u IHdlIGFyZQotICAgICAgICAgdGhpbmtpbmcgb2Ygc3RlcHBpbmcgaW50bywg c3RlcCBpbnRvIGl0LgorCSB0aGlua2luZyBvZiBzdGVwcGluZyBpbnRvIGFu ZCB0aGUgZnVuY3Rpb24gaXNuJ3Qgb24gdGhlIHNraXAKKwkgbGlzdCwgc3Rl cCBpbnRvIGl0LgogCiAgICAgICAgICBJZiB0aGVyZSBhcmUgc2V2ZXJhbCBz eW10YWJzIGF0IHRoYXQgUEMgKGUuZy4gd2l0aCBpbmNsdWRlCiAgICAgICAg ICBmaWxlcyksIGp1c3Qgd2FudCB0byBrbm93IHdoZXRoZXIgKmFueSogb2Yg dGhlbSBoYXZlIGxpbmUKQEAgLTQ4MzgsNyArNDg0MCw4IEBAIHByb2Nlc3Nf ZXZlbnRfc3RvcF90ZXN0OgogCXN0cnVjdCBzeW10YWJfYW5kX2xpbmUgdG1w X3NhbDsKIAogCXRtcF9zYWwgPSBmaW5kX3BjX2xpbmUgKGVjcy0+c3RvcF9m dW5jX3N0YXJ0LCAwKTsKLQlpZiAodG1wX3NhbC5saW5lICE9IDApCisJaWYg KHRtcF9zYWwubGluZSAhPSAwICYmCisJICAgICFmdW5jdGlvbl9wY19pc19t YXJrZWRfZm9yX3NraXAgKGVjcy0+c3RvcF9mdW5jX3N0YXJ0KSkKIAkgIHsK IAkgICAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19SRVZFUlNF KQogCSAgICAgIGhhbmRsZV9zdGVwX2ludG9fZnVuY3Rpb25fYmFja3dhcmQg KGdkYmFyY2gsIGVjcyk7CmRpZmYgLS1naXQgYS9nZGIvc2tpcC5jIGIvZ2Ri L3NraXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45 NTRmNDg3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3NraXAuYwpAQCAtMCww ICsxLDYwMiBAQAorLyogU2tpcHBpbmcgdW5pbnRlcmVzdGluZyBmaWxlcyBh bmQgZnVuY3Rpb25zIHdoaWxlIHN0ZXBwaW5nLgorCisgICBDb3B5cmlnaHQg KEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlICJkZWZzLmgi CisjaW5jbHVkZSAic2tpcC5oIgorI2luY2x1ZGUgInZhbHVlLmgiCisjaW5j bHVkZSAidmFscHJpbnQuaCIKKyNpbmNsdWRlICJ1aS1vdXQuaCIKKyNpbmNs dWRlICJnZGJfc3RyaW5nLmgiCisjaW5jbHVkZSAic3ltdGFiLmgiCisjaW5j bHVkZSAiZ2RiY21kLmgiCisjaW5jbHVkZSAiY29tbWFuZC5oIgorI2luY2x1 ZGUgImNvbXBsZXRlci5oIgorI2luY2x1ZGUgInN0YWNrLmgiCisjaW5jbHVk ZSAiY2xpL2NsaS11dGlscy5oIgorI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIK KyNpbmNsdWRlICJsaW5lc3BlYy5oIgorI2luY2x1ZGUgIm9iamZpbGVzLmgi CisjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgImJyZWFrcG9p bnQuaCIgLyogZm9yIGdldF9zYWxfYXJjaCAoKSAqLworCitzdHJ1Y3Qgc2tp cGxpc3RfZW50cnkKK3sKKyAgaW50IG51bWJlcjsKKworICAvKiBOVUxMIGlm IHRoaXMgaXNuJ3QgYSBza2lwbGlzdCBlbnRyeSBmb3IgYW4gZW50aXJlIGZp bGUuCisgICAgIFRoZSBza2lwbGlzdCBlbnRyeSBvd25zIHRoaXMgcG9pbnRl ci4gICovCisgIGNoYXIgKmZpbGVuYW1lOworCisgIC8qIFRoZSBuYW1lIG9m IHRoZSBtYXJrZWQtZm9yLXNraXAgZnVuY3Rpb24sIGlmIHRoaXMgaXMgYSBz a2lwbGlzdAorICAgICBlbnRyeSBmb3IgYSBmdW5jdGlvbi4gIE5vdGUgdGhh dCB0aGlzIG1pZ2h0IGJlIG5vbi1udWxsIGV2ZW4gaWYKKyAgICAgdGhlIHBj IGlzIDAgaWYgdGhlIGVudHJ5IGlzIHBlbmRpbmcgYSBzaGFyZWQgbGlicmFy eSBsb2FkLgorCisgICAgIFRoZSBza2lwbGlzdCBlbnRyeSBvd25zIHRoaXMg cG9pbnRlci4gICovCisgIGNoYXIgKmZ1bmN0aW9uX25hbWU7CisKKyAgLyog MCBpZiB0aGlzIGlzIGEgc2tpcGxpc3QgZW50cnkgZm9yIGFuIGVudGlyZSBm aWxlLCBvciBpZiB0aGlzCisgICAgIGVudHJ5IHdpbGwgYmUgb24gYSBmdW5j dGlvbiwgcGVuZGluZyBhIHNoYXJlZCBsaWJyYXJ5IGxvYWQuICAqLworICBD T1JFX0FERFIgcGM7CisKKyAgLyogQXJjaGl0ZWN0dXJlIHdlIHVzZWQgdG8g Y3JlYXRlIHRoZSBza2lwbGlzdCBlbnRyeS4gTWF5IGJlIG51bGwKKyAgICAg aWYgdGhlIGVudHJ5IGlzIHBlbmRpbmcgYSBzaGFyZWQgbGlicmFyeSBsb2Fk LiAgKi8KKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7CisKKyAgaW50IGVu YWJsZWQ7CisgIGludCBwZW5kaW5nOworCisgIHN0cnVjdCBza2lwbGlzdF9l bnRyeSAqbmV4dDsKK307CisKK3N0YXRpYyB2b2lkIHNraXBfZnVuY3Rpb25f Y29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOworc3RhdGljIHZv aWQgc2tpcF9maWxlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5 KTsKK3N0YXRpYyB2b2lkIHNraXBfaW5mbyAoY2hhciAqYXJnLCBpbnQgZnJv bV90dHkpOworCitzdGF0aWMgdm9pZCBhZGRfc2tpcGxpc3RfZW50cnkgKHN0 cnVjdCBza2lwbGlzdF9lbnRyeSAqZSk7CitzdGF0aWMgdm9pZCBza2lwX2Z1 bmN0aW9uX3BjIChDT1JFX0FERFIgcGMsIGNoYXIgKm5hbWUsCisJCQkgICAg ICBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCwKKwkJCSAgICAgIGludCBwZW5kaW5n KTsKKworc3RhdGljIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqc2tpcGxpc3Rf ZW50cnlfY2hhaW47CitzdGF0aWMgaW50IHNraXBsaXN0X2VudHJ5X2NvdW50 OworCisjZGVmaW5lIEFMTF9TS0lQTElTVF9FTlRSSUVTKEUpIFwKKyAgZm9y IChFID0gc2tpcGxpc3RfZW50cnlfY2hhaW47IEU7IEUgPSBFLT5uZXh0KQor CisjZGVmaW5lIEFMTF9TS0lQTElTVF9FTlRSSUVTX1NBRkUoRSxUTVApIFwK KyAgZm9yIChFID0gc2tpcGxpc3RfZW50cnlfY2hhaW47ICAgICAgICAgXAor ICAgICAgIEUgPyAoVE1QID0gRS0+bmV4dCwgMSkgOiAwOyAgICAgICBcCisg ICAgICAgRSA9IFRNUCkKKworc3RhdGljIHZvaWQKK3NraXBfZmlsZV9jb21t YW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0IHNr aXBsaXN0X2VudHJ5ICplOworICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7Cisg IGludCBwZW5kaW5nID0gMDsKKyAgY2hhciAqZmlsZW5hbWUgPSAwOworCisg IC8qIElmIG5vIGFyZ3VtZW50IHdhcyBnaXZlbiwgdHJ5IHRvIGRlZmF1bHQg dG8gdGhlIGxhc3QKKyAgICAgZGlzcGxheWVkIGNvZGVwb2ludC4gKi8KKyAg aWYgKGFyZyA9PSAwKQorICAgIHsKKyAgICAgIHN5bXRhYiA9IGdldF9sYXN0 X2Rpc3BsYXllZF9zeW10YWIgKCk7CisgICAgICBpZiAoc3ltdGFiID09IDAp CisJZXJyb3IgKF8oIk5vIGRlZmF1bHQgZmlsZSBub3cuIikpOworICAgICAg ZWxzZQorCWZpbGVuYW1lID0gc3ltdGFiLT5maWxlbmFtZTsKKyAgICB9Cisg IGVsc2UKKyAgICB7CisgICAgICBzeW10YWIgPSBsb29rdXBfc3ltdGFiIChh cmcpOworICAgICAgaWYgKHN5bXRhYiA9PSAwKQorCXsKKwkgIGZwcmludGZf ZmlsdGVyZWQgKGdkYl9zdGRlcnIsIF8oIk5vIHNvdXJjZSBmaWxlIG5hbWVk ICVzLlxuIiksIGFyZyk7CisJICBpZiAoIW5xdWVyeSAoXygiXAorSWdub3Jl IGZpbGUgcGVuZGluZyBmdXR1cmUgc2hhcmVkIGxpYnJhcnkgbG9hZD8gIikp KQorCSAgICByZXR1cm47CisKKwkgIHBlbmRpbmcgPSAxOworCSAgZmlsZW5h bWUgPSBhcmc7CisJfQorICAgICAgZWxzZQorCWZpbGVuYW1lID0gc3ltdGFi LT5maWxlbmFtZTsKKyAgICB9CisKKyAgZSA9IFhaQUxMT0MgKHN0cnVjdCBz a2lwbGlzdF9lbnRyeSk7CisgIGUtPmZpbGVuYW1lID0geHN0cmR1cCAoZmls ZW5hbWUpOworICBlLT5lbmFibGVkID0gMTsKKyAgZS0+cGVuZGluZyA9IHBl bmRpbmc7CisgIGlmIChzeW10YWIgIT0gMCkKKyAgICBlLT5nZGJhcmNoID0g Z2V0X29iamZpbGVfYXJjaCAoc3ltdGFiLT5vYmpmaWxlKTsKKworICBhZGRf c2tpcGxpc3RfZW50cnkgKGUpOworCisgIHByaW50Zl9maWx0ZXJlZCAoXygi RmlsZSAlcyB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZy5cbiIpLCBm aWxlbmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkCitza2lwX2Z1bmN0aW9uX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBDT1JFX0FE RFIgZnVuY19wYzsKKyAgY2hhciAqbmFtZSA9IE5VTEw7CisKKyAgLyogRGVm YXVsdCB0byB0aGUgY3VycmVudCBmdW5jdGlvbiBpZiBubyBhcmd1bWVudCBp cyBnaXZlbi4gKi8KKyAgaWYgKGFyZyA9PSAwKQorICAgIHsKKyAgICAgIENP UkVfQUREUiBwYzsKKyAgICAgIGlmICghbGFzdF9kaXNwbGF5ZWRfc2FsX2lz X3ZhbGlkICgpKQorCWVycm9yIChfKCJObyBkZWZhdWx0IGZ1bmN0aW9uIG5v dy4iKSk7CisKKyAgICAgIHBjID0gZ2V0X2xhc3RfZGlzcGxheWVkX2FkZHIg KCk7CisgICAgICBpZiAoIWZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMs ICZuYW1lLCAmZnVuY19wYywgMCkpCisJeworCSAgZXJyb3IgKF8oIk5vIGZ1 bmN0aW9uIGZvdW5kIGNvbnRhaW5pbmcgY3VycmVudCBwcm9ncmFtIHBvaW50 ICVzLiIpLAorCQkgIHBhZGRyZXNzIChnZXRfY3VycmVudF9hcmNoICgpLCBw YykpOworCX0KKyAgICAgIHNraXBfZnVuY3Rpb25fcGMgKGZ1bmNfcGMsIG5h bWUsIGdldF9jdXJyZW50X2FyY2ggKCksIDApOworICAgIH0KKyAgZWxzZQor ICAgIHsKKyAgICAgIC8qIERlY29kZSBhcmcuICBXZSBzZXQgZnVuZmlyc3Rs aW5lPTEgc28gZGVjb2RlX2xpbmVfMSB3aWxsIGdpdmUgdXMgdGhlCisJIGZp cnN0IGxpbmUgb2YgdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCwgaWYgaXQgY2Fu LCBhbmQgc28gdGhhdCB3ZSdsbAorCSByZWplY3QgdmFyaWFibGUgbmFtZXMg YW5kIHRoZSBsaWtlLiAqLworCisgICAgICBpbnQgaTsKKyAgICAgIGludCBw ZW5kaW5nID0gMDsKKyAgICAgIGNoYXIgKm9yaWdfYXJnID0gYXJnOyAvKiBk ZWNvZGVfbGluZV8xIG1vZGlmaWVzIHRoZSBhcmcgcG9pbnRlci4gKi8KKyAg ICAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGRlY29kZV9leGNl cHRpb247CisgICAgICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2FsczsK KworICAgICAgVFJZX0NBVENIIChkZWNvZGVfZXhjZXB0aW9uLCBSRVRVUk5f TUFTS19FUlJPUikKKwl7CisJICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJmFy ZywgMSwgMCwgMCwgMCk7CisJfQorCisgICAgICBpZiAoZGVjb2RlX2V4Y2Vw dGlvbi5yZWFzb24gPCAwKQorICAgICAgICB7CisgICAgICAgICAgaWYgKGRl Y29kZV9leGNlcHRpb24uZXJyb3IgIT0gTk9UX0ZPVU5EX0VSUk9SKQorICAg ICAgICAgICAgdGhyb3dfZXhjZXB0aW9uIChkZWNvZGVfZXhjZXB0aW9uKTsK KworCSAgZnByaW50Zl9maWx0ZXJlZCAoZ2RiX3N0ZGVyciwKKwkJCSAgICBf KCJObyBmdW5jdGlvbiBmb3VuZCBuYW1lZCAlcy5cbiIpLCBvcmlnX2FyZyk7 CisKKwkgIGlmIChucXVlcnkgKF8oIlwKK0lnbm9yZSBmdW5jdGlvbiBwZW5k aW5nIGZ1dHVyZSBzaGFyZWQgbGlicmFyeSBsb2FkPyAiKSkpCisJICAgIHsK KwkgICAgICAvKiBBZGQgdGhlIHBlbmRpbmcgc2tpcGxpc3QgZW50cnkuICov CisJICAgICAgc2tpcF9mdW5jdGlvbl9wYyAoMCwgb3JpZ19hcmcsIDAsIDEp OworCSAgICB9CisKKwkgIHJldHVybjsKKwl9CisKKyAgICAgIGlmIChzYWxz Lm5lbHRzID4gMSkKKwllcnJvciAoXygiU3BlY2lmeSBqdXN0IG9uZSBmdW5j dGlvbiBhdCBhIHRpbWUuIikpOworICAgICAgaWYgKHN0cmxlbiAoYXJnKSAh PSAwKQorCWVycm9yIChfKCJKdW5rIGF0IGVuZCBvZiBhcmd1bWVudHMuIikp OworCisgICAgICAvKiBUaGUgcGMgZGVjb2RlX2xpbmVfMSBnaXZlcyB1cyBp cyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgZnVuY3Rpb24sCisJIGJ1dCB3ZSBh Y3R1YWxseSB3YW50IHRoZSBsaW5lIGJlZm9yZSB0aGF0LiAgVGhlIGNhbGwg dG8KKwkgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIGdldHMgdXMgdGhlIHZh bHVlIHdlIGFjdHVhbGx5IHdhbnQuICovCisgICAgICB7CisJc3RydWN0IHN5 bXRhYl9hbmRfbGluZSBzYWwgPSBzYWxzLnNhbHNbMF07CisJQ09SRV9BRERS IHBjID0gc2FsLnBjOworCUNPUkVfQUREUiBmdW5jX3N0YXJ0ID0gMDsKKwlz dHJ1Y3QgZ2RiYXJjaCAqYXJjaCA9IGdldF9zYWxfYXJjaCAoc2FsKTsKKwor CWlmICghZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsICZm dW5jX3N0YXJ0LCAwKSkKKwkgIHsKKwkgICAgZXJyb3IgKF8oIk5vIGZ1bmN0 aW9uIGZvdW5kIGNvbnRhaW5pbmcgcHJvZ3JhbSBwb2ludCAlcy4iKSwKKwkJ ICAgICBwYWRkcmVzcyAoYXJjaCwgcGMpKTsKKwkgIH0KKworCXNraXBfZnVu Y3Rpb25fcGMgKGZ1bmNfc3RhcnQsIG5hbWUsIGFyY2gsIDApOworICAgICAg fQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK3NraXBfaW5mbyAoY2hhciAq YXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRy eSAqZTsKKyAgaW50IG51bV9wcmludGFibGVfZW50cmllcyA9IDA7CisgIGlu dCBhZGRyZXNzX3dpZHRoID0gMTA7CisgIHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zIG9wdHM7CisgIHN0cnVjdCBjbGVhbnVwICp0YmxfY2hhaW47CisK KyAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOworCisgIC8qIENv dW50IHRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgdGFibGUgYW5kIHNlZSBp ZiB3ZSBuZWVkIHNwYWNlIGZvciBhCisgICAgIDY0LWJpdCBhZGRyZXNzIGFu eXdoZXJlLiAqLworICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkKKyAgICBp ZiAoYXJnID09IDAgfHwgbnVtYmVyX2lzX2luX2xpc3QgKGFyZywgZS0+bnVt YmVyKSkKKyAgICAgIHsKKwludW1fcHJpbnRhYmxlX2VudHJpZXMrKzsKKwlp ZiAoZS0+Z2RiYXJjaCAmJiBnZGJhcmNoX2FkZHJfYml0IChlLT5nZGJhcmNo KSA+IDMyKQorCSAgYWRkcmVzc193aWR0aCA9IDE4OworICAgICAgfQorCisg IGlmIChudW1fcHJpbnRhYmxlX2VudHJpZXMgPT0gMCkKKyAgICB7CisgICAg ICBpZiAoYXJnID09IDApCisJdWlfb3V0X21lc3NhZ2UgKGN1cnJlbnRfdWlv dXQsIDAsIF8oIlwKK05vdCBza2lwcGluZyBhbnkgZmlsZXMgb3IgZnVuY3Rp b25zLlxuIikpOworICAgICAgZWxzZQorCXVpX291dF9tZXNzYWdlIChjdXJy ZW50X3Vpb3V0LCAwLAorCQkJXygiTm8gc2tpcGxpc3QgZW50cmllcyBmb3Vu ZCB3aXRoIG51bWJlciAlcy5cbiIpLCBhcmcpOworCisgICAgICByZXR1cm47 CisgICAgfQorCisgIGlmIChvcHRzLmFkZHJlc3NwcmludCkKKyAgICB0Ymxf Y2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAo Y3VycmVudF91aW91dCwgNSwKKwkJCQkJCSAgICAgbnVtX3ByaW50YWJsZV9l bnRyaWVzLAorCQkJCQkJICAgICAiU2tpcGxpc3RUYWJsZSIpOworICBlbHNl CisgICAgdGJsX2NoYWluCisgICAgICAgPSBtYWtlX2NsZWFudXBfdWlfb3V0 X3RhYmxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwgNCwKKwkJCQkJICAg ICAgbnVtX3ByaW50YWJsZV9lbnRyaWVzLAorCQkJCQkgICAgICAiU2tpcGxp c3RUYWJsZSIpOworCisgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRf dWlvdXQsIDcsIHVpX2xlZnQsICJudW1iZXIiLCAiTnVtIik7ICAgICAgLyog MSAqLworICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAx NCwgdWlfbGVmdCwgInR5cGUiLCAiVHlwZSIpOyAgICAgIC8qIDIgKi8KKyAg dWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgMywgdWlfbGVm dCwgImVuYWJsZWQiLCAiRW5iIik7ICAgICAvKiAzICovCisgIGlmIChvcHRz LmFkZHJlc3NwcmludCkKKyAgICB7CisgICAgICB1aV9vdXRfdGFibGVfaGVh ZGVyIChjdXJyZW50X3Vpb3V0LCBhZGRyZXNzX3dpZHRoLCB1aV9sZWZ0LAor CQkJICAgImFkZHIiLCAiQWRkcmVzcyIpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIDQgKi8KKyAgICB9CisgIHVpX291dF90YWJsZV9oZWFkZXIg KGN1cnJlbnRfdWlvdXQsIDQwLCB1aV9ub2FsaWduLCAid2hhdCIsICJXaGF0 Iik7ICAgLyogNSAqLworICB1aV9vdXRfdGFibGVfYm9keSAoY3VycmVudF91 aW91dCk7CisKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisgICAgewor ICAgICAgc3RydWN0IGNsZWFudXAgKmVudHJ5X2NoYWluOworCisgICAgICBR VUlUOworICAgICAgaWYgKGFyZyAhPSAwICYmICFudW1iZXJfaXNfaW5fbGlz dCAoYXJnLCBlLT5udW1iZXIpKQorCWNvbnRpbnVlOworCisgICAgICBlbnRy eV9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5k IChjdXJyZW50X3Vpb3V0LAorCQkJCQkJCSAiYmxrbHN0LWVudHJ5Iik7Cisg ICAgICB1aV9vdXRfZmllbGRfaW50IChjdXJyZW50X3Vpb3V0LCAibnVtYmVy IiwgZS0+bnVtYmVyKTsgICAgICAgICAgICAgLyogMSAqLworCisgICAgICBp ZiAoZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorCXVpX291dF9maWVsZF9zdHJp bmcgKGN1cnJlbnRfdWlvdXQsICJ0eXBlIiwgImZ1bmN0aW9uIik7ICAgICAg ICAgLyogMiAqLworICAgICAgZWxzZSBpZiAoZS0+ZmlsZW5hbWUgIT0gMCkK Kwl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAidHlwZSIs ICJmaWxlIik7ICAgICAgICAgICAgIC8qIDIgKi8KKyAgICAgIGVsc2UKKwlp bnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJcCitTa2lw bGlzdCBlbnRyeSBzaG91bGQgaGF2ZSBlaXRoZXIgYSBmaWxlbmFtZSBvciBh IGZ1bmN0aW9uIG5hbWUuIikpOworCisgICAgICBpZiAoZS0+ZW5hYmxlZCkK Kwl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAiZW5hYmxl ZCIsICJ5Iik7ICAgICAgICAgICAgIC8qIDMgKi8KKyAgICAgIGVsc2UKKwl1 aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAiZW5hYmxlZCIs ICJuIik7ICAgICAgICAgICAgIC8qIDMgKi8KKworICAgICAgaWYgKG9wdHMu YWRkcmVzc3ByaW50KQorCXsKKwkgIGlmIChlLT5wYyAhPSAwKQorCSAgICB1 aV9vdXRfZmllbGRfY29yZV9hZGRyIChjdXJyZW50X3Vpb3V0LCAiYWRkciIs CisJCQkJICAgIGUtPmdkYmFyY2gsIGUtPnBjKTsgICAgICAgICAgICAgICAg ICAvKiA0ICovCisJICBlbHNlCisJICAgIHVpX291dF9maWVsZF9zdHJpbmcg KGN1cnJlbnRfdWlvdXQsICJhZGRyIiwgIiIpOyAgICAgICAgICAgICAvKiA0 ICovCisJfQorCisgICAgICBpZiAoIWUtPnBlbmRpbmcgJiYgZS0+ZnVuY3Rp b25fbmFtZSAhPSAwKQorCXsKKwkgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisK KwkgICBnZGJfYXNzZXJ0IChlLT5wYyAhPSAwKTsKKwkgICBzeW0gPSBmaW5k X3BjX2Z1bmN0aW9uIChlLT5wYyk7CisJICAgaWYgKHN5bSkKKwkgICAgIHVp X291dF9maWVsZF9mbXQgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgIiVzIGF0 ICVzOiVkIiwKKwkJCSAgICAgICBzeW0tPmdpbmZvLm5hbWUsCisJCQkgICAg ICAgc3ltLT5zeW10YWItPmZpbGVuYW1lLAorCQkJICAgICAgIHN5bS0+bGlu ZSk7CisJICAgZWxzZQorCSAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3Vy cmVudF91aW91dCwgIndoYXQiLCAiPyIpOworCX0KKyAgICAgIGVsc2UgaWYg KGUtPnBlbmRpbmcgJiYgZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorCXsKKwkg IHVpX291dF9maWVsZF9mbXQgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgIiVz IChQRU5ESU5HKSIsCisJCQkgICAgZS0+ZnVuY3Rpb25fbmFtZSk7CisJfQor ICAgICAgZWxzZSBpZiAoIWUtPnBlbmRpbmcgJiYgZS0+ZmlsZW5hbWUgIT0g MCkKKwl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAid2hh dCIsIGUtPmZpbGVuYW1lKTsKKyAgICAgIGVsc2UgaWYgKGUtPnBlbmRpbmcg JiYgZS0+ZmlsZW5hbWUgIT0gMCkKKwl1aV9vdXRfZmllbGRfZm10IChjdXJy ZW50X3Vpb3V0LCAid2hhdCIsICIlcyAoUEVORElORykiLAorCQkJICBlLT5m aWxlbmFtZSk7CisKKyAgICAgIHVpX291dF90ZXh0IChjdXJyZW50X3Vpb3V0 LCAiXG4iKTsKKyAgICAgIGRvX2NsZWFudXBzIChlbnRyeV9jaGFpbik7Cisg ICAgfQorCisgIGRvX2NsZWFudXBzICh0YmxfY2hhaW4pOworfQorCitzdGF0 aWMgdm9pZAorc2tpcF9lbmFibGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQg ZnJvbV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZTsKKyAg aW50IGZvdW5kID0gMDsKKworICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkK KyAgICBpZiAoYXJnID09IDAgfHwgbnVtYmVyX2lzX2luX2xpc3QgKGFyZywg ZS0+bnVtYmVyKSkKKyAgICAgIHsKKyAgICAgICAgZS0+ZW5hYmxlZCA9IDE7 CisgICAgICAgIGZvdW5kID0gMTsKKyAgICAgIH0KKworICBpZiAoIWZvdW5k KQorICAgIGVycm9yIChfKCJObyBza2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdp dGggbnVtYmVyICVzLiIpLCBhcmcpOworfQorCitzdGF0aWMgdm9pZAorc2tp cF9kaXNhYmxlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQor eworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmU7CisgIGludCBmb3VuZCA9 IDA7CisKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisgICAgaWYgKGFy ZyA9PSAwIHx8IG51bWJlcl9pc19pbl9saXN0IChhcmcsIGUtPm51bWJlcikp CisgICAgICB7CisJZS0+ZW5hYmxlZCA9IDA7CisgICAgICAgIGZvdW5kID0g MTsKKyAgICAgIH0KKworICBpZiAoIWZvdW5kKQorICAgIGVycm9yIChfKCJO byBza2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdpdGggbnVtYmVyICVzLiIpLCBh cmcpOworfQorCitzdGF0aWMgdm9pZAorc2tpcF9kZWxldGVfY29tbWFuZCAo Y2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlz dF9lbnRyeSAqZSwgKnRlbXAsICpiX3ByZXY7CisgIGludCBmb3VuZCA9IDA7 CisKKyAgYl9wcmV2ID0gMDsKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVNfU0FG RSAoZSwgdGVtcCkKKyAgICBpZiAoYXJnID09IDAgfHwgbnVtYmVyX2lzX2lu X2xpc3QgKGFyZywgZS0+bnVtYmVyKSkKKyAgICAgIHsKKwlpZiAoYl9wcmV2 ICE9IDApCisJICBiX3ByZXYtPm5leHQgPSBlLT5uZXh0OworCWVsc2UKKwkg IHNraXBsaXN0X2VudHJ5X2NoYWluID0gZS0+bmV4dDsKKworCXhmcmVlIChl LT5mdW5jdGlvbl9uYW1lKTsKKwl4ZnJlZSAoZS0+ZmlsZW5hbWUpOworCXhm cmVlIChlKTsKKyAgICAgICAgZm91bmQgPSAxOworICAgICAgfQorICAgIGVs c2UKKyAgICAgIHsKKwliX3ByZXYgPSBlOworICAgICAgfQorCisgIGlmICgh Zm91bmQpCisgICAgZXJyb3IgKF8oIk5vIHNraXBsaXN0IGVudHJpZXMgZm91 bmQgd2l0aCBudW1iZXIgJXMuIiksIGFyZyk7Cit9CisKKy8qIENyZWF0ZSBh IHNraXBsaXN0IGVudHJ5IGZvciB0aGUgZ2l2ZW4gcGMgY29ycmVzcG9uZGlu ZyB0byB0aGUgZ2l2ZW4KKyAgIGZ1bmN0aW9uIG5hbWUgYW5kIGFkZCBpdCB0 byB0aGUgbGlzdC4gKi8KKworc3RhdGljIHZvaWQKK3NraXBfZnVuY3Rpb25f cGMgKENPUkVfQUREUiBwYywgY2hhciAqbmFtZSwgc3RydWN0IGdkYmFyY2gg KmFyY2gsCisJCSAgaW50IHBlbmRpbmcpCit7CisgIHN0cnVjdCBza2lwbGlz dF9lbnRyeSAqZSA9IFhaQUxMT0MgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSk7 CisKKyAgZS0+cGMgPSBwYzsKKyAgZS0+Z2RiYXJjaCA9IGFyY2g7CisgIGUt PmVuYWJsZWQgPSAxOworICBlLT5wZW5kaW5nID0gcGVuZGluZzsKKyAgZS0+ ZnVuY3Rpb25fbmFtZSA9IHhzdHJkdXAgKG5hbWUpOworCisgIGFkZF9za2lw bGlzdF9lbnRyeSAoZSk7CisKKyAgaWYgKCFwZW5kaW5nKQorICAgIHByaW50 Zl9maWx0ZXJlZCAoXygiRnVuY3Rpb24gJXMgYXQgJXMgd2lsbCBiZSBza2lw cGVkIHdoZW4gc3RlcHBpbmcuXG4iKSwKKwkJICAgICBuYW1lLCBwYWRkcmVz cyAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgcGMpKTsKKyAgZWxzZQorICAgIHBy aW50Zl9maWx0ZXJlZCAoXygiRnVuY3Rpb24gJXMgd2lsbCBiZSBza2lwcGVk IHdoZW4gc3RlcHBpbmcsICIKKwkJICAgICAgICJwZW5kaW5nIHNoYXJlZCBs aWJyYXJ5IGxvYWQuXG4iKSwKKwkJICAgICBuYW1lKTsKK30KKworLyogQWRk IHRoZSBnaXZlbiBza2lwbGlzdCBlbnRyeSB0byBvdXIgbGlzdCwgYW5kIHNl dCB0aGUgZW50cnkncyBudW1iZXIuICovCisKK3N0YXRpYyB2b2lkCithZGRf c2tpcGxpc3RfZW50cnkgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSkKK3sK KyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICplMTsKKworICBlLT5udW1iZXIg PSArK3NraXBsaXN0X2VudHJ5X2NvdW50OworCisgIC8qIEFkZCB0byB0aGUg ZW5kIG9mIHRoZSBjaGFpbiBzbyB0aGF0IHRoZSBsaXN0IG9mCisgICAgIHNr aXBsaXN0IGVudHJpZXMgd2lsbCBiZSBpbiBudW1lcmljYWwgb3JkZXIuICov CisKKyAgZTEgPSBza2lwbGlzdF9lbnRyeV9jaGFpbjsKKyAgaWYgKGUxID09 IDApCisgICAgc2tpcGxpc3RfZW50cnlfY2hhaW4gPSBlOworICBlbHNlCisg ICAgeworICAgICAgd2hpbGUgKGUxLT5uZXh0KQorCWUxID0gZTEtPm5leHQ7 CisgICAgICBlMS0+bmV4dCA9IGU7CisgICAgfQorfQorCisvKiBEb2VzIHRo ZSBnaXZlbiBwYyBjb3JyZXNwb25kIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSBz a2lwcGVkIGZ1bmN0aW9uPyAqLworCitpbnQKK2Z1bmN0aW9uX3BjX2lzX21h cmtlZF9mb3Jfc2tpcCAoQ09SRV9BRERSIHBjKQoreworICBpbnQgc2VhcmNo ZWRfZm9yX3NhbCA9IDA7CisgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2Fs OworICBjaGFyICpmaWxlbmFtZSA9IE5VTEw7CisgIHN0cnVjdCBza2lwbGlz dF9lbnRyeSAqZTsKKworICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkKKyAg ICB7CisgICAgICBpZiAoIWUtPmVuYWJsZWQgfHwgZS0+cGVuZGluZykKKwlj b250aW51ZTsKKworICAgICAgLyogRG9lcyB0aGUgcGMgd2UncmUgc3RlcHBp bmcgaW50byBtYXRjaCBlJ3Mgc3RvcmVkIHBjPyAqLworICAgICAgaWYgKGUt PnBjICE9IDAgJiYgcGMgPT0gZS0+cGMpCisJcmV0dXJuIDE7CisKKyAgICAg IGlmIChlLT5maWxlbmFtZSAhPSAwKQorCXsKKwkgIC8qIEdldCB0aGUgZmls ZW5hbWUgY29ycmVzcG9uZGluZyB0byB0aGlzIHBjLCBpZiB3ZSBoYXZlbid0 CisJICAgKiB5ZXQuICovCisJICBpZiAoIXNlYXJjaGVkX2Zvcl9zYWwpCisJ ICAgIHsKKwkgICAgICBzYWwgPSBmaW5kX3BjX2xpbmUgKHBjLCAwKTsKKyAg ICAgICAgICAgICAgaWYgKHNhbC5zeW10YWIgIT0gMCkKKyAgICAgICAgICAg ICAgICBmaWxlbmFtZSA9IHNhbC5zeW10YWItPmZpbGVuYW1lOworCSAgICAg IHNlYXJjaGVkX2Zvcl9zYWwgPSAxOworCSAgICB9CisJICBpZiAoZmlsZW5h bWUgIT0gMCAmJiBzdHJjbXAgKGZpbGVuYW1lLCBlLT5maWxlbmFtZSkgPT0g MCkKKwkgICAgcmV0dXJuIDE7CisJfQorICAgIH0KKworICByZXR1cm4gMDsK K30KKworLyogUmUtc2V0IHRoZSBza2lwIGxpc3QgYWZ0ZXIgc3ltYm9scyBo YXZlIGJlZW4gcmUtbG9hZGVkLiAqLwordm9pZAorc2tpcF9yZV9zZXQgKHZv aWQpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZTsKKworICBBTExf U0tJUExJU1RfRU5UUklFUyAoZSkKKyAgICB7CisgICAgICBpZiAoZS0+Zmls ZW5hbWUgIT0gMCkKKwl7CisJICAvKiBJZiBpdCdzIGFuIGVudHJ5IHRlbGxp bmcgdXMgdG8gc2tpcCBhIGZpbGUsIGJ1dCB0aGUgZW50cnkgaXMKKwkgICAg IGN1cnJlbnRseSBwZW5kaW5nIGEgc29saWIgbG9hZCwgbGV0J3Mgc2VlIGlm IHdlIG5vdyBrbm93CisJICAgICBhYm91dCB0aGUgZmlsZS4gKi8KKwkgIHN0 cnVjdCBzeW10YWIgKnN5bXRhYiA9IGxvb2t1cF9zeW10YWIgKGUtPmZpbGVu YW1lKTsKKwkgIGlmIChzeW10YWIgIT0gMCkKKwkgICAgeworCSAgICAgIHhm cmVlIChlLT5maWxlbmFtZSk7CisJICAgICAgZS0+ZmlsZW5hbWUgPSB4c3Ry ZHVwIChzeW10YWItPmZpbGVuYW1lKTsKKwkgICAgICBlLT5nZGJhcmNoID0g Z2V0X29iamZpbGVfYXJjaCAoc3ltdGFiLT5vYmpmaWxlKTsKKwkgICAgICBl LT5wZW5kaW5nID0gMDsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAg ICAgZS0+cGVuZGluZyA9IDE7CisJICAgIH0KKwl9CisgICAgICBlbHNlIGlm IChlLT5mdW5jdGlvbl9uYW1lICE9IDApCisgICAgICAgIHsKKwkgIGNoYXIg KmZ1bmNfbmFtZSA9IGUtPmZ1bmN0aW9uX25hbWU7CisJICBzdHJ1Y3Qgc3lt dGFic19hbmRfbGluZXMgc2FsczsKKwkgIHZvbGF0aWxlIHN0cnVjdCBnZGJf ZXhjZXB0aW9uIGRlY29kZV9leGNlcHRpb247CisKKwkgIFRSWV9DQVRDSCAo ZGVjb2RlX2V4Y2VwdGlvbiwgUkVUVVJOX01BU0tfRVJST1IpCisJICAgIHsK KwkgICAgICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJmZ1bmNfbmFtZSwgMSwg MCwgMCwgMCk7CisJICAgIH0KKworCSAgaWYgKGRlY29kZV9leGNlcHRpb24u cmVhc29uID49IDAKKyAgICAgICAgICAgICAgJiYgc2Fscy5uZWx0cyA9PSAx ICYmIHN0cmxlbiAoZnVuY19uYW1lKSA9PSAwKQorCSAgICB7CisJICAgICAg c3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWwgPSBzYWxzLnNhbHNbMF07CisJ ICAgICAgQ09SRV9BRERSIHBjID0gc2FsLnBjOworCSAgICAgIENPUkVfQURE UiBmdW5jX3N0YXJ0ID0gMDsKKwkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqYXJj aCA9IGdldF9zYWxfYXJjaCAoc2FsKTsKKyAgICAgICAgICAgICAgY2hhciAq ZnVuY19uYW1lOworCisJICAgICAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5j dGlvbiAocGMsICZmdW5jX25hbWUsICZmdW5jX3N0YXJ0LCAwKSkKKwkJewor CQkgIGUtPnBlbmRpbmcgPSAwOworICAgICAgICAgICAgICAgICAgZS0+ZnVu Y3Rpb25fbmFtZSA9IHhzdHJkdXAgKGZ1bmNfbmFtZSk7CisJCSAgZS0+cGMg PSBmdW5jX3N0YXJ0OworCQkgIGUtPmdkYmFyY2ggPSBhcmNoOworCQl9CisJ ICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGUtPnBlbmRpbmcgPSAx OworCSAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQKK19pbml0 aWFsaXplX3N0ZXBfc2tpcCAodm9pZCkKK3sKKyAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmM7CisKKyAgc2tpcGxpc3RfZW50cnlfY2hhaW4gPSAwOwor ICBza2lwbGlzdF9lbnRyeV9jb3VudCA9IDA7CisKKyAgYWRkX3ByZWZpeF9j bWQgKCJza2lwIiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9mdW5jdGlvbl9j b21tYW5kLCBfKCJcCitJZ25vcmUgYSBmdW5jdGlvbiB3aGlsZSBzdGVwcGlu Zy5cblwKK1VzYWdlOiBza2lwIFtGVU5DVElPTiBOQU1FXVxuXAorSWYgbm8g ZnVuY3Rpb24gbmFtZSBpcyBnaXZlbiwgaWdub3JlIHRoZSBjdXJyZW50IGZ1 bmN0aW9uLiIpLAorICAgICAgICAgICAgICAgICAgJnNraXBsaXN0LCAic2tp cCAiLCAxLCAmY21kbGlzdCk7CisKKyAgYyA9IGFkZF9jbWQgKCJmaWxlIiwg Y2xhc3NfYnJlYWtwb2ludCwgc2tpcF9maWxlX2NvbW1hbmQsIF8oIlwKK0ln bm9yZSBhIGZpbGUgd2hpbGUgc3RlcHBpbmcuXG5cCitVc2FnZTogc2tpcCBm aWxlIFtGSUxFTkFNRV1cblwKK0lmIG5vIGZpbGVuYW1lIGlzIGdpdmVuLCBp Z25vcmUgdGhlIGN1cnJlbnQgZmlsZS4iKSwKKwkgICAgICAgJnNraXBsaXN0 KTsKKyAgc2V0X2NtZF9jb21wbGV0ZXIgKGMsIGZpbGVuYW1lX2NvbXBsZXRl cik7CisKKyAgYyA9IGFkZF9jbWQgKCJmdW5jdGlvbiIsIGNsYXNzX2JyZWFr cG9pbnQsIHNraXBfZnVuY3Rpb25fY29tbWFuZCwgXygiXAorSWdub3JlIGEg ZnVuY3Rpb24gd2hpbGUgc3RlcHBpbmcuXG5cCitVc2FnZTogc2tpcCBmdW5j dGlvbiBbRlVOQ1RJT04gTkFNRV1cblwKK0lmIG5vIGZ1bmN0aW9uIG5hbWUg aXMgZ2l2ZW4sIHNraXAgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIiksCisJICAg ICAgICZza2lwbGlzdCk7CisgIHNldF9jbWRfY29tcGxldGVyIChjLCBsb2Nh dGlvbl9jb21wbGV0ZXIpOworCisgIGFkZF9jbWQgKCJlbmFibGUiLCBjbGFz c19icmVha3BvaW50LCBza2lwX2VuYWJsZV9jb21tYW5kLCBfKCJcCitFbmFi bGUgc2tpcCBlbnRyaWVzLiAgWW91IGNhbiBzcGVjaWZ5IG51bWJlcnMgKGUu Zy4gXCJza2lwIGVuYWJsZSAxIDNcIiksIFwKK3JhbmdlcyAoZS5nLiBcInNr aXAgZW5hYmxlIDQtOFwiKSwgb3IgYm90aCAoZS5nLiBcInNraXAgZW5hYmxl IDEgMyA0LThcIikuXG5cblwKK0lmIHlvdSBkb24ndCBzcGVjaWZ5IGFueSBu dW1iZXJzIG9yIHJhbmdlcywgd2UnbGwgZW5hYmxlIGFsbCBza2lwIGVudHJp ZXMuXG5cblwKK1VzYWdlOiBza2lwIGVuYWJsZSBbTlVNQkVSUyBBTkQvT1Ig UkFOR0VTXSIpLAorCSAgICZza2lwbGlzdCk7CisKKyAgYWRkX2NtZCAoImRp c2FibGUiLCBjbGFzc19icmVha3BvaW50LCBza2lwX2Rpc2FibGVfY29tbWFu ZCwgXygiXAorRGlzYWJsZSBza2lwIGVudHJpZXMuICBZb3UgY2FuIHNwZWNp ZnkgbnVtYmVycyAoZS5nLiBcInNraXAgZGlzYWJsZSAxIDNcIiksIFwKK3Jh bmdlcyAoZS5nLiBcInNraXAgZGlzYWJsZSA0LThcIiksIG9yIGJvdGggKGUu Zy4gXCJza2lwIGRpc2FibGUgMSAzIDQtOFwiKS5cblxuXAorSWYgeW91IGRv bid0IHNwZWNpZnkgYW55IG51bWJlcnMgb3IgcmFuZ2VzLCB3ZSdsbCBkaXNh YmxlIGFsbCBza2lwIGVudHJpZXMuXG5cblwKK1VzYWdlOiBza2lwIGRpc2Fi bGUgW05VTUJFUlMgQU5EL09SIFJBTkdFU10iKSwKKwkgICAmc2tpcGxpc3Qp OworCisgIGFkZF9jbWQgKCJkZWxldGUiLCBjbGFzc19icmVha3BvaW50LCBz a2lwX2RlbGV0ZV9jb21tYW5kLCBfKCJcCitEZWxldGUgc2tpcCBlbnRyaWVz LiAgWW91IGNhbiBzcGVjaWZ5IG51bWJlcnMgKGUuZy4gXCJza2lwIGRlbGV0 ZSAxIDNcIiksIFwKK3JhbmdlcyAoZS5nLiBcInNraXAgZGVsZXRlIDQtOFwi KSwgb3IgYm90aCAoZS5nLiBcInNraXAgZGVsZXRlIDEgMyA0LThcIikuXG5c blwKK0lmIHlvdSBkb24ndCBzcGVjaWZ5IGFueSBudW1iZXJzIG9yIHJhbmdl cywgd2UnbGwgZGVsZXRlIGFsbCBza2lwIGVudHJpZXMuXG5cblwKK1VzYWdl OiBza2lwIGRlbGV0ZSBbTlVNQkVSUyBBTkQvT1IgUkFOR0VTXSIpLAorICAg ICAgICAgICAmc2tpcGxpc3QpOworCisgIGFkZF9pbmZvICgic2tpcCIsIHNr aXBfaW5mbywgXygiXAorRGlzcGxheSB0aGUgc3RhdHVzIG9mIHNraXBzLiAg WW91IGNhbiBzcGVjaWZ5IG51bWJlcnMgKGUuZy4gXCJza2lwIGluZm8gMSAz XCIpLCBcCityYW5nZXMgKGUuZy4gXCJza2lwIGluZm8gNC04XCIpLCBvciBi b3RoIChlLmcuIFwic2tpcCBpbmZvIDEgMyA0LThcIikuXG5cblwKK0lmIHlv dSBkb24ndCBzcGVjaWZ5IGFueSBudW1iZXJzIG9yIHJhbmdlcywgd2UnbGwg c2hvdyBhbGwgc2tpcHMuXG5cblwKK1VzYWdlOiBza2lwIGluZm8gW05VTUJF UlMgQU5EL09SIFJBTkdFU11cblwKK1RoZSBcIlR5cGVcIiBjb2x1bW4gaW5k aWNhdGVzIG9uZSBvZjpcblwKK1x0ZmlsZSAgICAgICAgLSBpZ25vcmVkIGZp bGVcblwKK1x0ZnVuY3Rpb24gICAgLSBpZ25vcmVkIGZ1bmN0aW9uIikpOwor fQpkaWZmIC0tZ2l0IGEvZ2RiL3NraXAuaCBiL2dkYi9za2lwLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzZjdlZAotLS0gL2Rl di9udWxsCisrKyBiL2dkYi9za2lwLmgKQEAgLTAsMCArMSwyOCBAQAorLyog SGVhZGVyIGZvciBza2lwcGluZyBvdmVyIHVuaW50ZXJlc3RpbmcgZmlsZXMg YW5kIGZ1bmN0aW9ucyB3aGVuIGRlYnVnZ2luZy4KKworICAgQ29weXJpZ2h0 IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaWYgIWRlZmluZWQgKFNL SVBfSCkKKyNkZWZpbmUgU0tJUF9ICisKKy8qIFJldHVybnMgMSBpZiB0aGUg Z2l2ZW4gcGMgaXMgbWFya2VkIGZvciBza2lwIGFuZCBzaG91bGRuJ3QgYmUK KyAgIHN0ZXBwZWQgaW50by4gIE90aGVyd2lzZSwgcmV0dXJucyAwLiAqLwor aW50IGZ1bmN0aW9uX3BjX2lzX21hcmtlZF9mb3Jfc2tpcCAoQ09SRV9BRERS IHBjKTsKKworLyogUmUtc2V0IHRoZSBza2lwIGxpc3QgYWZ0ZXIgc3ltYm9s cyBoYXZlIGJlZW4gcmVsb2FkZWQuICovCit2b2lkIHNraXBfcmVfc2V0ICh2 b2lkKTsKKworI2VuZGlmIC8qICFkZWZpbmVkIChTS0lQX0gpICovCmRpZmYg LS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCmluZGV4IDE1NjY2 ZWUuLjBhZDI5MjYgMTAwNjQ0Ci0tLSBhL2dkYi9zdGFjay5jCisrKyBiL2dk Yi9zdGFjay5jCkBAIC03Myw2ICs3MywxMiBAQCBzdGF0aWMgdm9pZCBwcmlu dF9mcmFtZSAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcHJpbnRf bGV2ZWwsCiAJCQkgZW51bSBwcmludF93aGF0IHByaW50X3doYXQsICBpbnQg cHJpbnRfYXJncywKIAkJCSBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7 CiAKK3N0YXRpYyB2b2lkIHNldF9sYXN0X2Rpc3BsYXllZF9zYWwgKGludCB2 YWxpZCwKKwkJCQkgICAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwK KwkJCQkgICAgQ09SRV9BRERSIGFkZHIsCisJCQkJICAgIHN0cnVjdCBzeW10 YWIgKnN5bXRhYiwKKwkJCQkgICAgaW50IGxpbmUpOworCiAvKiBaZXJvIG1l YW5zIGRvIHRoaW5ncyBub3JtYWxseTsgd2UgYXJlIGludGVyYWN0aW5nIGRp cmVjdGx5IHdpdGggdGhlCiAgICB1c2VyLiAgT25lIG1lYW5zIHByaW50IHRo ZSBmdWxsIGZpbGVuYW1lIGFuZCBsaW5lbnVtYmVyIHdoZW4gYQogICAgZnJh bWUgaXMgcHJpbnRlZCwgYW5kIGRvIHNvIGluIGEgZm9ybWF0IGVtYWNzMTgv ZW1hY3MxOS4yMiBjYW4KQEAgLTgwLDYgKzg2LDE0IEBAIHN0YXRpYyB2b2lk IHByaW50X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCBw cmludF9sZXZlbCwKICAgIGNhc2VzIGFuZCBpbiBhIHNsaWdodGx5IGRpZmZl cmVudCBzeW50YXguICAqLwogCiBpbnQgYW5ub3RhdGlvbl9sZXZlbCA9IDA7 CisKKy8qIFRoZXNlIHZhcmlhYmxlcyBob2xkIHRoZSBsYXN0IHN5bXRhYiBh bmQgbGluZSB3ZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCisgKiBUaGlzIGlz IHdoZXJlIHdlIGluc2VydCBhIGJyZWFrcG9pbnQgb3IgYSBza2lwbGlzdCBl bnRyeSBieSBkZWZhdWx0LiAqLworc3RhdGljIGludCBsYXN0X2Rpc3BsYXll ZF9zYWxfdmFsaWQgPSAwOworc3RhdGljIHN0cnVjdCBwcm9ncmFtX3NwYWNl ICpsYXN0X2Rpc3BsYXllZF9wc3BhY2UgPSAwOworc3RhdGljIENPUkVfQURE UiBsYXN0X2Rpc3BsYXllZF9hZGRyID0gMDsKK3N0YXRpYyBzdHJ1Y3Qgc3lt dGFiICpsYXN0X2Rpc3BsYXllZF9zeW10YWIgPSAwOworc3RhdGljIGludCBs YXN0X2Rpc3BsYXllZF9saW5lID0gMDsKIAwKIAogLyogUmV0dXJuIDEgaWYg d2Ugc2hvdWxkIGRpc3BsYXkgdGhlIGFkZHJlc3MgaW4gYWRkaXRpb24gdG8g dGhlIGxvY2F0aW9uLApAQCAtNTk5LDkgKzYxMyw5IEBAIHByaW50X2ZyYW1l X2luZm8gKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHByaW50X2xl dmVsLAogICAgICAgQ09SRV9BRERSIHBjOwogCiAgICAgICBpZiAoZ2V0X2Zy YW1lX3BjX2lmX2F2YWlsYWJsZSAoZnJhbWUsICZwYykpCi0Jc2V0X2RlZmF1 bHRfYnJlYWtwb2ludCAoMSwgc2FsLnBzcGFjZSwgcGMsIHNhbC5zeW10YWIs IHNhbC5saW5lKTsKKwlzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsICgxLCBzYWwu cHNwYWNlLCBwYywgc2FsLnN5bXRhYiwgc2FsLmxpbmUpOwogICAgICAgZWxz ZQotCXNldF9kZWZhdWx0X2JyZWFrcG9pbnQgKDAsIDAsIDAsIDAsIDApOwor CXNldF9sYXN0X2Rpc3BsYXllZF9zYWwgKDAsIDAsIDAsIDAsIDApOwogICAg IH0KIAogICBhbm5vdGF0ZV9mcmFtZV9lbmQgKCk7CkBAIC02MDksNiArNjIz LDEwNiBAQCBwcmludF9mcmFtZV9pbmZvIChzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUsIGludCBwcmludF9sZXZlbCwKICAgZ2RiX2ZsdXNoIChnZGJfc3Rk b3V0KTsKIH0KIAorLyogUmVtZW1iZXIgdGhlIGxhc3Qgc3ltdGFiIGFuZCBs aW5lIHdlIGRpc3BsYXllZCwgd2hpY2ggd2UgdXNlIGUuZy4KKyAqIGFzIHRo ZSBwbGFjZSB0byBwdXQgYSBicmVha3BvaW50IHdoZW4gdGhlIGBicmVhaycg Y29tbWFuZCBpcworICogaW52b2tlZCB3aXRoIG5vIGFyZ3VtZW50cy4gICov CisKK3N0YXRpYyB2b2lkCitzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsIChpbnQg dmFsaWQsIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsCisJCQlDT1JF X0FERFIgYWRkciwgc3RydWN0IHN5bXRhYiAqc3ltdGFiLAorCQkJaW50IGxp bmUpCit7CisgIGxhc3RfZGlzcGxheWVkX3NhbF92YWxpZCA9IHZhbGlkOwor ICBsYXN0X2Rpc3BsYXllZF9wc3BhY2UgPSBwc3BhY2U7CisgIGxhc3RfZGlz cGxheWVkX2FkZHIgPSBhZGRyOworICBsYXN0X2Rpc3BsYXllZF9zeW10YWIg PSBzeW10YWI7CisgIGxhc3RfZGlzcGxheWVkX2xpbmUgPSBsaW5lOworfQor CisvKiBGb3JnZXQgdGhlIGxhc3Qgc2FsIHdlIGRpc3BsYXllZC4gICovCisK K3ZvaWQKK2NsZWFyX2xhc3RfZGlzcGxheWVkX3NhbCAodm9pZCkKK3sKKyAg bGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkID0gMDsKKyAgbGFzdF9kaXNwbGF5 ZWRfcHNwYWNlID0gMDsKKyAgbGFzdF9kaXNwbGF5ZWRfYWRkciA9IDA7Cisg IGxhc3RfZGlzcGxheWVkX3N5bXRhYiA9IDA7CisgIGxhc3RfZGlzcGxheWVk X2xpbmUgPSAwOworfQorCisvKiBJcyBvdXIgcmVjb3JkIG9mIHRoZSBsYXN0 IHNhbCB3ZSBkaXNwbGF5ZWQgdmFsaWQ/ICBJZiBub3QsCisgKiB0aGUgZ2V0 X2xhc3RfZGlzcGxheWVkXyogZnVuY3Rpb25zIHdpbGwgcmV0dXJuIE5VTEwg b3IgMCwgYXMKKyAqIGFwcHJvcHJpYXRlLiAgKi8KKworaW50CitsYXN0X2Rp c3BsYXllZF9zYWxfaXNfdmFsaWQgKHZvaWQpCit7CisgIHJldHVybiBsYXN0 X2Rpc3BsYXllZF9zYWxfdmFsaWQ7Cit9CisKKy8qIEdldCB0aGUgcHNwYWNl IG9mIHRoZSBsYXN0IHNhbCB3ZSBkaXNwbGF5ZWQsIGlmIGl0J3MgdmFsaWQu ICAqLworCitzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqCitnZXRfbGFzdF9kaXNw bGF5ZWRfcHNwYWNlICh2b2lkKQoreworICBpZiAobGFzdF9kaXNwbGF5ZWRf c2FsX3ZhbGlkKQorICAgIHJldHVybiBsYXN0X2Rpc3BsYXllZF9wc3BhY2U7 CisgIHJldHVybiAwOworfQorCisvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhl IGxhc3Qgc2FsIHdlIGRpc3BsYXllZCwgaWYgaXQncyB2YWxpZC4gICovCisK K0NPUkVfQUREUgorZ2V0X2xhc3RfZGlzcGxheWVkX2FkZHIgKHZvaWQpCit7 CisgIGlmIChsYXN0X2Rpc3BsYXllZF9zYWxfdmFsaWQpCisgICAgcmV0dXJu IGxhc3RfZGlzcGxheWVkX2FkZHI7CisgIHJldHVybiAwOworfQorCisvKiBH ZXQgdGhlIHN5bXRhYiBvZiB0aGUgbGFzdCBzYWwgd2UgZGlzcGxheWVkLCBp ZiBpdCdzIHZhbGlkLiAgKi8KKworc3RydWN0IHN5bXRhYioKK2dldF9sYXN0 X2Rpc3BsYXllZF9zeW10YWIgKHZvaWQpCit7CisgIGlmIChsYXN0X2Rpc3Bs YXllZF9zYWxfdmFsaWQpCisgICAgcmV0dXJuIGxhc3RfZGlzcGxheWVkX3N5 bXRhYjsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIEdldCB0aGUgbGluZSBvZiB0 aGUgbGFzdCBzYWwgd2UgZGlzcGxheWVkLCBpZiBpdCdzIHZhbGlkLiAgKi8K KworaW50CitnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAodm9pZCkKK3sKKyAg aWYgKGxhc3RfZGlzcGxheWVkX3NhbF92YWxpZCkKKyAgICByZXR1cm4gbGFz dF9kaXNwbGF5ZWRfbGluZTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIEdldCB0 aGUgbGFzdCBzYWwgd2UgZGlzcGxheWVkLCBpZiBpdCdzIHZhbGlkLiAgKi8K Kwordm9pZAorZ2V0X2xhc3RfZGlzcGxheWVkX3NhbCAoc3RydWN0IHN5bXRh Yl9hbmRfbGluZSAqc2FsKQoreworICBpZiAobGFzdF9kaXNwbGF5ZWRfc2Fs X3ZhbGlkKQorICAgIHsKKyAgICAgIHNhbC0+cHNwYWNlID0gbGFzdF9kaXNw bGF5ZWRfcHNwYWNlOworICAgICAgc2FsLT5wYyA9IGxhc3RfZGlzcGxheWVk X2FkZHI7CisgICAgICBzYWwtPnN5bXRhYiA9IGxhc3RfZGlzcGxheWVkX3N5 bXRhYjsKKyAgICAgIHNhbC0+bGluZSA9IGxhc3RfZGlzcGxheWVkX2xpbmU7 CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgc2FsLT5wc3BhY2UgPSAw OworICAgICAgc2FsLT5wYyA9IDA7CisgICAgICBzYWwtPnN5bXRhYiA9IDA7 CisgICAgICBzYWwtPmxpbmUgPSAwOworICAgIH0KK30KKworCiAvKiBBdHRl bXB0IHRvIG9idGFpbiB0aGUgRlVOTkFNRSwgRlVOTEFORyBhbmQgb3B0aW9u YWxseSBGVU5DUCBvZiB0aGUgZnVuY3Rpb24KICAgIGNvcnJlc3BvbmRpbmcg dG8gRlJBTUUuICAqLwogCmRpZmYgLS1naXQgYS9nZGIvc3RhY2suaCBiL2dk Yi9zdGFjay5oCmluZGV4IDNjY2U2MjMuLjMxMmU4ZmYgMTAwNjQ0Ci0tLSBh L2dkYi9zdGFjay5oCisrKyBiL2dkYi9zdGFjay5oCkBAIC0zOCw0ICszOCwx NCBAQCB2b2lkIGl0ZXJhdGVfb3Zlcl9ibG9ja19sb2NhbF92YXJzIChzdHJ1 Y3QgYmxvY2sgKmJsb2NrLAogCQkJCSAgICBpdGVyYXRlX292ZXJfYmxvY2tf YXJnX2xvY2FsX3ZhcnNfY2IgY2IsCiAJCQkJICAgIHZvaWQgKmNiX2RhdGEp OwogCisvKiBHZXQgb3Igc2V0IHRoZSBsYXN0IGRpc3BsYXllZCBzeW10YWIg YW5kIGxpbmUsIHdoaWNoIGlzLCBlLmcuIHdoZXJlIHdlIHNldCBhCisgKiBi cmVha3BvaW50IHdoZW4gYGJyZWFrJyBpcyBzdXBwbGllZCB3aXRoIG5vIGFy Z3VtZW50cy4gICovCit2b2lkIGNsZWFyX2xhc3RfZGlzcGxheWVkX3NhbCAo dm9pZCk7CitpbnQgbGFzdF9kaXNwbGF5ZWRfc2FsX2lzX3ZhbGlkICh2b2lk KTsKK3N0cnVjdCBwcm9ncmFtX3NwYWNlKiBnZXRfbGFzdF9kaXNwbGF5ZWRf cHNwYWNlICh2b2lkKTsKK0NPUkVfQUREUiBnZXRfbGFzdF9kaXNwbGF5ZWRf YWRkciAodm9pZCk7CitzdHJ1Y3Qgc3ltdGFiKiBnZXRfbGFzdF9kaXNwbGF5 ZWRfc3ltdGFiICh2b2lkKTsKK2ludCBnZXRfbGFzdF9kaXNwbGF5ZWRfbGlu ZSAodm9pZCk7Cit2b2lkIGdldF9sYXN0X2Rpc3BsYXllZF9zYWwgKHN0cnVj dCBzeW10YWJfYW5kX2xpbmUgKnNhbCk7CisKICNlbmRpZiAvKiAjaWZuZGVm IFNUQUNLX0ggKi8KZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmMgYi9nZGIv c3ltZmlsZS5jCmluZGV4IDE1NDBjYjcuLjFjNGQwYzkgMTAwNjQ0Ci0tLSBh L2dkYi9zeW1maWxlLmMKKysrIGIvZ2RiL3N5bWZpbGUuYwpAQCAtNTYsNiAr NTYsNyBAQAogI2luY2x1ZGUgImVsZi1iZmQuaCIKICNpbmNsdWRlICJzb2xp Yi5oIgogI2luY2x1ZGUgInJlbW90ZS5oIgorI2luY2x1ZGUgInN0YWNrLmgi CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxmY250bC5o PgpAQCAtMjc4MCw3ICsyNzgxLDcgQEAgY2xlYXJfc3ltdGFiX3VzZXJzIChp bnQgYWRkX2ZsYWdzKQogICBjbGVhcl9kaXNwbGF5cyAoKTsKICAgaWYgKChh ZGRfZmxhZ3MgJiBTWU1GSUxFX0RFRkVSX0JQX1JFU0VUKSA9PSAwKQogICAg IGJyZWFrcG9pbnRfcmVfc2V0ICgpOwotICBzZXRfZGVmYXVsdF9icmVha3Bv aW50ICgwLCBOVUxMLCAwLCAwLCAwKTsKKyAgY2xlYXJfbGFzdF9kaXNwbGF5 ZWRfc2FsICgpOwogICBjbGVhcl9wY19mdW5jdGlvbl9jYWNoZSAoKTsKICAg b2JzZXJ2ZXJfbm90aWZ5X25ld19vYmpmaWxlIChOVUxMKTsKIApkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgYi9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwppbmRleCA4ZjllZmQxLi43ZGVlYTNlIDEwMDY0NAotLS0g YS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZworKysgYi9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTEwLTA2ICBKdXN0 aW4gTGViYXIgPGp1c3Rpbi5sZWJhckBnbWFpbC5jb20+CisKKwlBZGQgdGVz dHMgZm9yIHNraXAgY29tbWFuZC4KKwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9z a2lwLXNvbGliLWxpYi5jOiBOZXcKKwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9z a2lwLXNvbGliLW1haW4uYzogTmV3CisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2Uv c2tpcC1zb2xpYi5leHA6IE5ldworCSogdGVzdHN1aXRlL2dkYi5iYXNlL3Nr aXAuYzogTmV3CisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC5leHA6IE5l dworCSogdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAxLmM6IE5ldworCSogdGVz dHN1aXRlL2dkYi5iYXNlL01ha2VmaWxlLmluOiBBZGRpbmcgbmV3IGZpbGVz LgorCiAyMDExLTEwLTA1ICBQaWVycmUgTXVsbGVyICA8bXVsbGVyQGljcy51 LXN0cmFzYmcuZnI+CiAKIAlBZGQgdGVzdHMgZm9yIHBhc3Npbmcgb2YgZW52 aXJvbm1lbnQgdmFyaWFibGVzIHRvIGluZmVyaW9yLgpkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtlZmlsZS5pbiBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvTWFrZWZpbGUuaW4KaW5kZXggNzJmMWJhNC4uN2Nl YjEyMSAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtl ZmlsZS5pbgorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL01ha2VmaWxl LmluCkBAIC0zMCw4ICszMCw4IEBAIEVYRUNVVEFCTEVTID0gYTItcnVuIGFk dmFuY2UgYWxsLXR5cGVzIGFubm90YTEgYW5ub3RhMS13YXRjaF90aHJlYWRf bnVtIFwKIAlzZXBzeW10YWIuZGVidWcgc2Vwc3ltdGFiLnN0cmlwcGVkIHNl dHNob3cgc2V0dmFyIHNobWFpbiBzaHJlbG9jIFwKIAlzaWdhbGwgc2lnYWx0 c3RhY2sgc2lnYnB0IHNpZ2NobGQgc2lnaW5mbyBzaWdpbmZvLWFkZHIgXAog CXNpZ2luZm8taW5mY2FsbCBzaWdpbmZvLW9iaiBzaWduYWxzIHNpZ251bGwg c2lncmVwZWF0IHNpZ3N0ZXAgXAotCXNpemVvZiBzb2xpYiBzb2xpYi1jb3Jy dXB0ZWQgc29saWItZGlzcGxheS1tYWluIHNvbGliLW5vZGlyIFwKLQlzb2xp Yi1vdmVybGFwLW1haW4tMHg0MDAwMDAwMCBzb2xpYi1zeW1ib2wtbWFpbiBz b2xpYi13ZWFrIFwKKwlzaXplb2Ygc2tpcCBza2lwLXNvbGliIHNvbGliIHNv bGliLWNvcnJ1cHRlZCBzb2xpYi1kaXNwbGF5LW1haW4KKwlzb2xpYi1ub2Rp ciBzb2xpYi1vdmVybGFwLW1haW4tMHg0MDAwMDAwMCBzb2xpYi1zeW1ib2wt bWFpbiBzb2xpYi13ZWFrIFwKIAlzb2xpYi13ZWFrLWxpYjIgc29saWJfc2wg c28taW1wbC1sZCBzby1pbmRyLWNsIFwKIAlzdGFjay1jaGVja2luZyBzdGFy dCBzdGVwLWJyZWFrIHN0ZXAtYnQgc3RlcC1saW5lIHN0ZXAtcmVzdW1lLWlu ZmNhbGwgXAogCXN0ZXAtdGVzdCBzdG9yZSBzdHJ1Y3RzLXQqIHN0cnVjdHMy IHN0cnVjdHMzIFwKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc2tpcC1zb2xpYi1saWIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv c2tpcC1zb2xpYi1saWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi43OTJjZDAxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLWxpYi5jCkBAIC0wLDAgKzEsMTEg QEAKKy8qIFNpbXBsZSBzaGFyZWQgbGlicmFyeSAqLworCitpbnQgc3F1YXJl KGludCBudW0pCit7CisgIHJldHVybiBtdWx0aXBseShudW0sIG51bSk7Cit9 CisKK2ludCBtdWx0aXBseShpbnQgYSwgaW50IGIpCit7CisgIHJldHVybiBh ICogYjsKK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv c2tpcC1zb2xpYi1tYWluLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Nr aXAtc29saWItbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjc0NmJiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3NraXAtc29saWItbWFpbi5jCkBAIC0wLDAgKzEsNiBA QAoraW50IHNxdWFyZShpbnQgbnVtKTsKKworaW50IG1haW4oKQoreworICBy ZXR1cm4gc3F1YXJlKDApOworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9za2lwLXNvbGliLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2Uvc2tpcC1zb2xpYi5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZDZlMjVhNAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi5leHAKQEAgLTAsMCArMSwx MzAgQEAKKyMgICBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIwor IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBUaGlzIGZpbGUg d2FzIHdyaXR0ZW4gYnkgSnVzdGluIExlYmFyLiAoanVzdGluLmxlYmFyQGdt YWlsLmNvbSkKKworIworIyBUZXN0cyBza2lwcGluZyBzaGFyZWQgbGlicmFy aWVzLgorIworCisjIFRoaXMgb25seSB3b3JrcyBvbiBHTlUvTGludXguCitp ZiB7ICFbaXNuYXRpdmVdIHx8IFtpc19yZW1vdGUgaG9zdF0gfHwgIVtpc3Rh cmdldCAqLWxpbnV4Kl0gfHwgW3NraXBfc2hsaWJfdGVzdHNdfSB7CisgICAg Y29udGludWUKK30KKworc2V0IHRlc3QgInNraXAtc29saWIiCitzZXQgc3Jj ZmlsZV9tYWluICIke3Rlc3R9LW1haW4uYyIKK3NldCBiaW5maWxlX21haW4g IiR7dGVzdH0tdGVzdCIKK3NldCBzcmNmaWxlX2xpYiAiJHt0ZXN0fS1saWIu YyIKK3NldCBsaWJuYW1lICJsaWIke3Rlc3R9Igorc2V0IGJpbmZpbGVfbGli ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJuYW1lfS5zbworCisjCisjIENv bXBpbGUgb3VyIHByb2dyYW0gdW5kZXIgdGVzdC4gIFRoZSBtYWluIHByb2dy YW0gcmVmZXJlbmNlcyBhIHNoYXJlZCBsaWJyYXJ5CisjIGxpYnNraXAtc29s aWIuc28sIHdoaWNoIGNvbnRhaW5zIHR3byBmdW5jdGlvbnMsIHNxdWFyZSgp LCB3aGljaCBpcworIyByZWZlcmVuY2VkIGJ5IHRoZSBtYWluIHByb2dyYW0s IGFuZCBtdWx0aXBseSgpLCB3aGljaCBpcyBub3QgcmVmZXJlbmNlZCBieQor IyB0aGUgbWFpbiBwcm9ncmFtLgorIworCitpZiB7W2dkYl9jb21waWxlX3No bGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlX2xpYn0gJHtiaW5m aWxlX2xpYn0gW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tZlBJQyAt V2wsLXNvbmFtZSwke2xpYm5hbWV9LnNvXV0gIT0gIiJ9IHsKKyAgICByZXR1 cm4gLTEKK30KKworaWYge1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGVfbWFpbn0iICIke2JpbmZpbGVfbWFpbn0ubyIgb2Jq ZWN0IGRlYnVnXSAhPSAiIn0geworICAgIHJldHVybiAtMQorfQorCitpZiB7 W2dkYl9jb21waWxlICIke2JpbmZpbGVfbWFpbn0ubyIgIiR7YmluZmlsZV9t YWlufSIgZXhlY3V0YWJsZSBcCisgICAgICAgICAgICAgICAgIFtsaXN0IGRl YnVnICJhZGRpdGlvbmFsX2ZsYWdzPS1MJHtvYmpkaXJ9LyR7c3ViZGlyfSAt bCR7dGVzdH0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtV2wsLXJwYXRoPSR7b2JqZGlyfS8ke3N1YmRpcn0i XV0gIT0gIiJ9IHsKKyAgICByZXR1cm4gLTEKK30KKworZ2RiX3N0YXJ0Citj bGVhbl9yZXN0YXJ0ICR7YmluZmlsZV9tYWlufQorCisjCisjIEF0IHRoaXMg cG9pbnQsIGlmIHdlIHRyeSB0byBza2lwIHRoZSBmaWxlICR7c3JjZmlsZV9s aWJ9IG9yIHRoZSBmdW5jdGlvbgorIyBtdWx0aXBseSgpLCB3ZSBzaG91bGQg Z2V0IGEgcHJvbXB0IGFza2luZyB1cyBpZiB3ZSB3YW50IHRvIGVuYWJsZSB0 aGUKKyMgc2tpcCBlbnRyeSBwZW5kaW5nIGEgc2hhcmVkIGxpYnJhcnkgbG9h ZC4KKyMKKworZ2RiX3Rlc3QgInNraXAgZmlsZSAke3NyY2ZpbGVfbGlifSIg XAorICAiRmlsZSAke3NyY2ZpbGVfbGlifSB3aWxsIGJlIHNraXBwZWQgd2hl biBzdGVwcGluZy4iIFwKKyAgImlnbm9yaW5nIGZpbGUgaW4gc29saWIiIFwK KyAgIk5vIHNvdXJjZSBmaWxlIG5hbWVkICR7c3JjZmlsZV9saWJ9LioKK0ln bm9yZSBmaWxlIHBlbmRpbmcgZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQu KiIgXAorICAieSIKKworIworIyBEb2VzIGluZm8gc2tpcCBsaXN0IHRoaXMg ZW50cnkgYXMgcGVuZGluZz8KKyMKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwK KyAgIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1doYXRcXHMq CisxXFxzK2ZpbGVcXHMreVxccytcXHMrJHtzcmNmaWxlX2xpYn0gXFwoUEVO RElOR1xcKVxccyoiIFwKKyAgImluZm8gc2tpcCB3aXRoIHBlbmRpbmcgZmls ZSIKKworaWYgIVtydW50b19tYWluXSB7IGZhaWwgInNraXAgdGVzdHMgc3Vw cHJlc3NlZCIgfQorCisjCisjIFdlIHNob3VsZG4ndCBzdGVwIGludG8gc3F1 YXJlKCksIHNpbmNlIHdlIHNraXBwZWQgc2tpcC1zb2xpYi1saWIuYy4KKyMK K2dkYl90ZXN0ICJzdGVwIiAiIgorZ2RiX3Rlc3QgImJ0IiAiIzBcXHMrbWFp bi4qIiAic3RlcCBhZnRlciBpZ25vcmluZyBzb2xpYiBmaWxlLiIKKworIwor IyBPdXIgZW50cnkgc2hvdWxkIG5vIGxvbmdlciBiZSBwZW5kaW5nLiAgTm90 ZSB0aGF0IHdlIHVuZm9ydHVuYXRlbHkgbmVlZCB0byBkbworIyBhdCBsZWFz dCBvbmUgc3RlcCBiZWZvcmUgdGhlIGVudHJ5IHdpbGwgYmUgdW5tYXJrZWQg YXMgcGVuZGluZy4KKyMKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyAgIk51 bVxccytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisxXFxz K2ZpbGVcXHMreVxccytcXHMrLioke3NyY2ZpbGVfbGlifVxccyoiIFwKKyAg ImluZm8gc2tpcCB3aXRoIHBlbmRpbmcgZmlsZSIKKworIworIyBOb3cgcmVz dGFydCBnZGIgYW5kIHRlc3RpbmcgaWdub3Jpbmcgb2YgYSBmdW5jdGlvbiBp bnNpZGUgYSBzb2xpYi4KKyMKK2dkYl9leGl0CitnZGJfc3RhcnQKK2NsZWFu X3Jlc3RhcnQgJHtiaW5maWxlX21haW59CisKK2dkYl90ZXN0ICJza2lwIGZ1 bmN0aW9uIG11bHRpcGx5IiBcCisgICJGdW5jdGlvbiBtdWx0aXBseSB3aWxs IGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZywgcGVuZGluZyBzaGFyZWQgbGli cmFyeSBsb2FkLiIgXAorICAiaWdub3JpbmcgZnVuY3Rpb24gaW4gc29saWIi IFwKKyJObyBmdW5jdGlvbiBmb3VuZCBuYW1lZCBtdWx0aXBseS4uKgorSWdu b3JlIGZ1bmN0aW9uIHBlbmRpbmcgZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxv YWQuKiIgXAorICAieSIKKworaWYgIVtydW50b19tYWluXSB7IGZhaWwgInNr aXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorCisjCisjIE91ciBmaXJzdCBzdGVw IHNob3VsZCB0YWtlIHVzIGludG8gc3F1YXJlLgorIworZ2RiX3Rlc3QgInN0 ZXAiICJzcXVhcmUuKiIKKworIworIyBOb3cgb3VyIGVudHJ5IHNob3VsZCBu byBsb25nZXIgYmUgcGVuZGluZy4KKyMKK2dkYl90ZXN0ICJpbmZvIHNraXAi IFwKKyAgIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1doYXRc XHMqCisxXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdK1xccytt dWx0aXBseSBhdCAuKiR7c3JjZmlsZV9saWJ9Oi4qXFxzKiIgXAorICAic2tp cCBzaG91bGQgbm8gbG9uZ2VyIGJlIHBlbmRpbmcuIgorCisjCisjIFRoaXMg c3RlcCBzaG91bGRuJ3QgZ28gaW50byBtdWx0aXBseSAtLSB3ZSBzaG91bGQg c2tpcCBpdCBhbmQgZ28gb24gdG8gdGhlCisjIGxhc3QgbGluZSBvZiBzcXVh cmUuCisjCitnZGJfdGVzdCAic3RlcCIgIiIKK2dkYl90ZXN0ICJidCIgIiMw XFxzK3NxdWFyZS4qIgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9za2lwLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjViYTkzCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lw LmMKQEAgLTAsMCArMSwxMyBAQAoraW50IGZvbygpOworaW50IGJhcigpOwor aW50IGJheihpbnQsIGludCk7CisKK2ludCBtYWluKCkKK3sKKyAgcmV0dXJu IGJheihmb28oKSwgYmFyKCkpOworfQorCitpbnQgZm9vKCkKK3sKKyAgcmV0 dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3NraXAuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLmV4cApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzY5OWViCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lw LmV4cApAQCAtMCwwICsxLDE3OSBAQAorIyAgIENvcHlyaWdodCAyMDExIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorCisjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKdXN0aW4gTGViYXIu IChqdXN0aW4ubGViYXJAZ21haWwuY29tKQorCitpZiB7IFtwcmVwYXJlX2Zv cl90ZXN0aW5nIHNraXAuZXhwICJza2lwIiBcCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHtza2lwLmMgc2tpcDEuYyB9IFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAge2RlYnVnIG5vd2FybmluZ3N9XSB9IHsKKyAgICByZXR1 cm4gLTEKK30KKworc2V0IHNyY2ZpbGUgc2tpcC5jCitzZXQgc3JjZmlsZTEg c2tpcDEuYworCisjCisjIFJpZ2h0IGFmdGVyIHdlIHN0YXJ0IGdkYiwgdGhl cmUncyBubyBkZWZhdWx0IGZpbGUgb3IgZnVuY3Rpb24gdG8gc2tpcC4KKyMK K2dkYl90ZXN0ICJza2lwIGZpbGUiICJObyBkZWZhdWx0IGZpbGUgbm93LiIK K2dkYl90ZXN0ICJza2lwIGZ1bmN0aW9uIiAiTm8gZGVmYXVsdCBmdW5jdGlv biBub3cuIgorZ2RiX3Rlc3QgInNraXAiICJObyBkZWZhdWx0IGZ1bmN0aW9u IG5vdy4iCisKK2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lwIHRlc3Rz IHN1cHByZXNzZWQiIH0KKworIworIyBUZXN0IHxpbmZvIHNraXB8IHdpdGgg YW4gZW1wdHkgc2tpcGxpc3QuCisjCitnZGJfdGVzdCAiaW5mbyBza2lwIiAi Tm90IHNraXBwaW5nIGFueSBmaWxlcyBvciBmdW5jdGlvbnNcLiIgImluZm8g c2tpcCBlbXB0eSIKKworIworIyBDcmVhdGUgYSBza2lwbGlzdCBlbnRyeSBm b3IgdGhlIGN1cnJlbnQgZmlsZSBhbmQgZnVuY3Rpb24uCisjCitnZGJfdGVz dCAic2tpcCBmaWxlIiAiRmlsZSAuKiRzcmNmaWxlIHdpbGwgYmUgc2tpcHBl ZCB3aGVuIHN0ZXBwaW5nXC4iCitnZGJfdGVzdCAic2tpcCIgIkZ1bmN0aW9u IG1haW4gYXQgLiogd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIK KworIworIyBDcmVhdGUgYSBza2lwbGlzdCBlbnRyeSBmb3IgYSBzcGVjaWZp ZWQgZmlsZSBhbmQgZnVuY3Rpb24uCisjCitnZGJfdGVzdCAic2tpcCBmaWxl IHNraXAxLmMiICJGaWxlIC4qJHNyY2ZpbGUxIHdpbGwgYmUgc2tpcHBlZCB3 aGVuIHN0ZXBwaW5nXC4iCitnZGJfdGVzdCAic2tpcCBmdW5jdGlvbiBiYXoi ICJGdW5jdGlvbiBiYXogYXQgLiogd2lsbCBiZSBza2lwcGVkIHdoZW4gc3Rl cHBpbmdcLiIKKworIworIyBUZXN0IGJhZCBza2lwbGlzdCBlbnRyeSBtb2Rp ZmljYXRpb24gY29tbWFuZHMKKyMKK2dkYl90ZXN0ICJza2lwIGVuYWJsZSA5 OTkiICJObyBza2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdpdGggbnVtYmVyIDk5 OS4iCitnZGJfdGVzdCAic2tpcCBkaXNhYmxlIDk5OSIgIk5vIHNraXBsaXN0 IGVudHJpZXMgZm91bmQgd2l0aCBudW1iZXIgOTk5LiIKK2dkYl90ZXN0ICJz a2lwIGRlbGV0ZSA5OTkiICJObyBza2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdp dGggbnVtYmVyIDk5OS4iCitnZGJfdGVzdCAic2tpcCBlbmFibGUgYSIgIkFy Z3MgbXVzdCBiZSBudW1iZXJzIG9yICdcXCQnIHZhcmlhYmxlcy4iCitnZGJf dGVzdCAic2tpcCBkaXNhYmxlIGEiICJBcmdzIG11c3QgYmUgbnVtYmVycyBv ciAnXFwkJyB2YXJpYWJsZXMuIgorZ2RiX3Rlc3QgInNraXAgZGVsZXRlIGEi ICJBcmdzIG11c3QgYmUgbnVtYmVycyBvciAnXFwkJyB2YXJpYWJsZXMuIgor CisjCisjIEFzayBmb3IgaW5mbyBvbiBhIHNraXBsaXN0IGVudHJ5IHdoaWNo IGRvZXNuJ3QgZXhpc3QuCisjCitnZGJfdGVzdCAiaW5mbyBza2lwIDk5OSIg Ik5vIHNraXBsaXN0IGVudHJpZXMgZm91bmQgd2l0aCBudW1iZXIgOTk5LiIK KworIworIyBEb2VzIHxpbmZvIHNraXB8IGxvb2sgcmlnaHQ/CisjCitnZGJf dGVzdCAiaW5mbyBza2lwIiBcCisgICJOdW1cXHMrVHlwZVxccytFbmJcXHMr QWRkcmVzc1xccytXaGF0XFxzKgorMVxccytmaWxlXFxzK3lcXHMrLiokc3Jj ZmlsZVxccyoKKzJcXHMrZnVuY3Rpb25cXHMreVxccysweFxbMC05YS1mXF0r IG1haW4gYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xccyoKKzNcXHMrZmlsZVxc cyt5XFxzKy4qJHNyY2ZpbGUxXFxzKgorNFxccytmdW5jdGlvblxccyt5XFxz KzB4XFswLTlhLWZcXSsgYmF6IGF0IC4qJHNyY2ZpbGUxOlxbMC05XF0rXFxz KiIKKworIworIyBSaWdodCBub3csIHdlIGhhdmUgYW4gb3V0c3RhbmRpbmcg c2tpcGxpc3QgZW50cnkgb24gYm90aCBzb3VyY2UKKyMgZmlsZXMsIHNvIHdo ZW4gd2Ugc3RlcCBpbnRvIHRoZSBmaXJzdCBsaW5lIGluIG1haW4oKSwgd2Ug c2hvdWxkIHN0ZXAKKyMgcmlnaHQgb3ZlciBpdCBhbmQgZ28gdG8gdGhlIHNl Y29uZCBsaW5lIG9mIG1haW4oKS4KKyMKKworaWYgIVtydW50b19tYWluXSB7 IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorZ2RiX3Rlc3QgInN0 ZXAiCitnZGJfdGVzdCAiYnQiICJcXHMqXFwjMFxccyttYWluLioiICJzdGVw IGFmdGVyIGFsbCBpZ25vcmVkIgorCisjCisjIE5vdyByZW1vdmUgc2tpcC5j IGZyb20gdGhlIHNraXBsaXN0LiAgT3VyIGZpcnN0IHN0ZXAgc2hvdWxkIHRh a2UgdXMKKyMgaW50byBmb28oKSwgYW5kIG91ciBzZWNvbmQgc3RlcCBzaG91 bGQgdGFrZSB1cyB0byB0aGUgbmV4dCBsaW5lIGluCisjIG1haW4oKS4KKyMK K2dkYl90ZXN0ICJza2lwIGRlbGV0ZSAxIgorIyBDaGVjayB0aGF0IGVudHJ5 IDEgaXMgbWlzc2luZyBmcm9tIHxpbmZvIHNraXB8CitnZGJfdGVzdCAiaW5m byBza2lwIiBcCisgICJOdW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xc cytXaGF0XFxzKgorMlxccytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZc XSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxbMC05XF0rXFxzKgorM1xccytmaWxl XFxzK3lcXHMrLiokc3JjZmlsZTFcXHMqCis0XFxzK2Z1bmN0aW9uXFxzK3lc XHMrMHhcWzAtOWEtZlxdKyBiYXogYXQgLiokc3JjZmlsZTE6XFswLTlcXStc XHMqIgorCitpZiAhW3J1bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBz dXBwcmVzc2VkIiB9CitnZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQu KiIgInN0ZXAgYWZ0ZXIgZGVsZXRpbmcgMSAoMSkiCitnZGJfdGVzdCAic3Rl cCI7ICMgUmV0dXJuIGZyb20gZm9vKCkKK2dkYl90ZXN0ICJzdGVwIiAibWFp biBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIgZGVsZXRpbmcgMSAoMikiCisK KyMKKyMgTm93IGRpc2FibGUgdGhlIHNraXBsaXN0IGVudHJ5IGZvciAgc2tp cDEuYy4gIFdlIHNob3VsZCBub3cKKyMgc3RlcCBpbnRvIGZvbygpLCB0aGVu IGludG8gYmFyKCksIGJ1dCBub3QgaW50byBiYXooKS4KKyMKK2dkYl90ZXN0 ICJza2lwIGRpc2FibGUgMyIKKyMgSXMgZW50cnkgMyBkaXNhYmxlZCBpbiB8 aW5mbyBza2lwfD8KK2dkYl90ZXN0ICJpbmZvIHNraXAgMyIgIi4qXFxuM1xc cytmaWxlXFxzK24uKiIgXAorICAiaW5mbyBza2lwIHNob3dzIGVudHJ5IGFz IGRpc2FibGVkIgorCitpZiAhW3J1bnRvX21haW5dIHsgZmFpbCAic2tpcCB0 ZXN0cyBzdXBwcmVzc2VkIiB9CitnZGJfdGVzdCAic3RlcCIgImJhciBcXChc XCkgYXQuKiIgInN0ZXAgYWZ0ZXIgZGlzYWJsaW5nIDMgKDEpIgorZ2RiX3Rl c3QgInN0ZXAiOyAjIFJldHVybiBmcm9tIGZvbygpCitnZGJfdGVzdCAic3Rl cCIgImZvbyBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIgZGlzYWJsaW5nIDMg KDIpIgorZ2RiX3Rlc3QgInN0ZXAiOyAjIFJldHVybiBmcm9tIGJhcigpCitn ZGJfdGVzdCAic3RlcCIgIm1haW4gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVy IGRpc2FibGluZyAzICgzKSIKKworIworIyBFbmFibGUgc2tpcGxpc3QgZW50 cnkgMyBhbmQgbWFrZSBzdXJlIHdlIHN0ZXAgb3ZlciBpdCBsaWtlIGJlZm9y ZS4KKyMKK2dkYl90ZXN0ICJza2lwIGVuYWJsZSAzIgorIyBJcyBlbnRyeSAz IGVuYWJsZWQgaW4gfGluZm8gc2tpcHw/CitnZGJfdGVzdCAiaW5mbyBza2lw IDMiICIuKlxcbjNcXHMrZmlsZVxccyt5LioiIFwKKyAgImluZm8gc2tpcCBz aG93cyBlbnRyeSBhcyBlbmFibGVkIgoraWYgIVtydW50b19tYWluXSB7IGZh aWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorZ2RiX3Rlc3QgInN0ZXAi ICJmb28gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRlbGV0aW5nIDEgKDEp IgorZ2RiX3Rlc3QgInN0ZXAiOyAjIFJldHVybiBmcm9tIGZvbygpCitnZGJf dGVzdCAic3RlcCIgIm1haW4gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRl bGV0aW5nIDEgKDIpIgorCitnZGJfdGVzdCAic2tpcCBkaXNhYmxlIgorZ2Ri X3Rlc3QgImluZm8gc2tpcCIgXAorICAiTnVtXFxzK1R5cGVcXHMrRW5iXFxz K0FkZHJlc3NcXHMrV2hhdFxccyoKKzJcXHMrZnVuY3Rpb25cXHMrblxccysw eFxbMC05YS1mXF0rIG1haW4gYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xccyoK KzNcXHMrZmlsZVxccytuXFxzKy4qJHNyY2ZpbGUxXFxzKgorNFxccytmdW5j dGlvblxccytuXFxzKzB4XFswLTlhLWZcXSsgYmF6IGF0IC4qJHNyY2ZpbGUx OlxbMC05XF0rXFxzKiIgXAorICAiaW5mbyBza2lwIGFmdGVyIGRpc2FibGlu ZyBhbGwiCisKK2dkYl90ZXN0ICJza2lwIGVuYWJsZSIKK2dkYl90ZXN0ICJp bmZvIHNraXAiIFwKKyAgIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRyZXNz XFxzK1doYXRcXHMqCisyXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEt ZlxdKyBtYWluIGF0IC4qJHNyY2ZpbGU6XFswLTlcXStcXHMqCiszXFxzK2Zp bGVcXHMreVxccysuKiRzcmNmaWxlMVxccyoKKzRcXHMrZnVuY3Rpb25cXHMr eVxccysweFxbMC05YS1mXF0rIGJheiBhdCAuKiRzcmNmaWxlMTpcWzAtOVxd K1xccyoiIFwKKyAgImluZm8gc2tpcCBhZnRlciBlbmFibGluZyBhbGwiCisK K2dkYl90ZXN0ICJza2lwIGRpc2FibGUgNCAyLTMiCitnZGJfdGVzdCAiaW5m byBza2lwIiBcCisgICJOdW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xc cytXaGF0XFxzKgorMlxccytmdW5jdGlvblxccytuXFxzKzB4XFswLTlhLWZc XSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxbMC05XF0rXFxzKgorM1xccytmaWxl XFxzK25cXHMrLiokc3JjZmlsZTFcXHMqCis0XFxzK2Z1bmN0aW9uXFxzK25c XHMrMHhcWzAtOWEtZlxdKyBiYXogYXQgLiokc3JjZmlsZTE6XFswLTlcXStc XHMqIiBcCisgICJpbmZvIHNraXAgYWZ0ZXIgZGlzYWJsaW5nIDQgMi0zIgor CitnZGJfdGVzdCAic2tpcCBlbmFibGUgMi0zIgorZ2RiX3Rlc3QgImluZm8g c2tpcCIgXAorICAiTnVtXFxzK1R5cGVcXHMrRW5iXFxzK0FkZHJlc3NcXHMr V2hhdFxccyoKKzJcXHMrZnVuY3Rpb25cXHMreVxccysweFxbMC05YS1mXF0r IG1haW4gYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xccyoKKzNcXHMrZmlsZVxc cyt5XFxzKy4qJHNyY2ZpbGUxXFxzKgorNFxccytmdW5jdGlvblxccytuXFxz KzB4XFswLTlhLWZcXSsgYmF6IGF0IC4qJHNyY2ZpbGUxOlxbMC05XF0rXFxz KiIgXAorICAiaW5mbyBza2lwIGFmdGVyIGVuYWJsaW5nIDItMyIKKworZ2Ri X3Rlc3QgImluZm8gc2tpcCAyLTMiIFwKKyAgIk51bVxccytUeXBlXFxzK0Vu YlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisyXFxzK2Z1bmN0aW9uXFxzK3lc XHMrMHhcWzAtOWEtZlxdKyBtYWluIGF0IC4qJHNyY2ZpbGU6XFswLTlcXStc XHMqCiszXFxzK2ZpbGVcXHMreVxccysuKiRzcmNmaWxlMVxccyoiIFwKKyAg ImluZm8gc2tpcCAyLTMiCisKK2dkYl90ZXN0ICJza2lwIGRlbGV0ZSAyIDMi CitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisgICI0XFxzK2Z1bmN0aW9uXFxz K25cXHMrMHhcWzAtOWEtZlxdKyBiYXogYXQgLiokc3JjZmlsZTE6XFswLTlc XStcXHMqIiBcCisgICJpbmZvIHNraXAgYWZ0ZXIgZGVsZXRpbmcgMiAzIgor CitnZGJfdGVzdCAic2tpcCBkZWxldGUiCitnZGJfdGVzdCAiaW5mbyBza2lw IiAiTm90IHNraXBwaW5nIGFueSBmaWxlcyBvciBmdW5jdGlvbnNcLiIgXAor ICAiaW5mbyBza2lwIGFmdGVyIGRlbGV0aW5nIGFsbCIKZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcDEuYyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvc2tpcDEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4yZGFiNWMzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9za2lwMS5jCkBAIC0wLDAgKzEsOSBAQAoraW50 IGJhcigpCit7CisgIHJldHVybiAxOworfQorCitpbnQgYmF6KGludCBhLCBp bnQgYikKK3sKKyAgcmV0dXJuIGEgKyBiOworfQo= --00151747914ee768c204b0613a4e--