From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1160 invoked by alias); 28 Jun 2010 17:44:29 -0000 Received: (qmail 1147 invoked by uid 22791); 28 Jun 2010 17:44:28 -0000 X-SWARE-Spam-Status: No, hits=-1.0 required=5.0 tests=AWL,BAYES_40,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,TW_BJ,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from ey-out-1920.google.com (HELO ey-out-1920.google.com) (74.125.78.149) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 28 Jun 2010 17:44:22 +0000 Received: by ey-out-1920.google.com with SMTP id 4so194779eyg.42 for ; Mon, 28 Jun 2010 10:44:19 -0700 (PDT) Received: by 10.213.91.70 with SMTP id l6mr1173239ebm.43.1277747050237; Mon, 28 Jun 2010 10:44:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.202.139 with HTTP; Mon, 28 Jun 2010 10:43:49 -0700 (PDT) In-Reply-To: References: From: Justin Lebar Date: Mon, 28 Jun 2010 17:44:00 -0000 Message-ID: Subject: Re: [Patch] Bug 8287: Skip uninteresting functions while debugging To: tromey@redhat.com, gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00c09f8e5fc70ca22a048a1aabdd 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: 2010-06/txt/msg00640.txt.bz2 --00c09f8e5fc70ca22a048a1aabdd Content-Type: text/plain; charset=ISO-8859-1 Content-length: 5219 On Fri, Jun 25, 2010 at 2:56 PM, Tom Tromey wrote: > FWIW I think this is a very good first patch to gdb. Thanks! > One concern of mine is that this code will not perform well with many > blacklists in place. It may make sense to keep a hash table indexed by > name (function or file), to make lookups faster. What do you think? I imagine you'd have to have a pretty large blacklist to notice a delay when using gdb interactively, even on modest hardware. I don't know much about gdb scripting -- this might matter more in that case. But would one single-step in a script? FWIW, enabling/disabling/deleting breakpoints takes time linear to the number of breakpoints. I'm happy to switch to a hashtable here if that's what we want. > Another random thought is whether we want to be able to blacklist based > on objfile name. That seems like it might be nice. Regular expression matching on file and function names has also been suggested. While I'm thinking about it, one problem I've run into while using this patch while debugging Firefox is that we somehow load multiple copies of our smart pointer header, so I have to blacklist both ../../nsCOMPtr.h and ../../../nsCOMPtr.h. I need to investigate further exactly what about our build system is causing this to see if it's something which should be fixed in gdb or Mozilla's build, but my guess is that we may want to support this in gdb somehow. > Justin> This patch also fixes bug 11614: decode_variable() in linespec.c > Justin> does not obey its contract > > It is somewhat preferred in gdb to submit things like this as separate > patches. I've split them out in this new set. Because you need the bug11614 patch in order for the blacklist patch to work (and since bug11614 is a trivial fix), I've included both attachments in this one e-mail. > Justin> + if (sals.nelts == 0) > Justin> + error (_("No function to blacklist.")); /* TODO can I trigger this? */ > Justin> + if (sals.nelts > 1) > Justin> + error (_("Specify just one function at a time.")); /* TODO can I > Justin> trigger this? */ > > Good questions :-) > > It is great to be defensive here, but the comments should go before > checkin. > > Maybe you can get nelts>1 with a C++ destructor? I'm not sure. I didn't hit that error with a simple C++ destructor. Maybe some kind of pathological destructor could hit it. I'm mostly concerned that the error messages are meaningful if we do hit them. I'm only guessing at what nelts == 0 and nelts > 1 mean. > Justin> + if (opts.addressprint) > Justin> + { > Justin> + if (b->pc != 0) > Justin> + ui_out_field_core_addr (uiout, "addr", b->gdbarch, b->pc); /* 4 */ > Justin> + else > Justin> + ui_out_field_string (uiout, "addr", "n/a"); /* 4 */ > Justin> + } > > A small nit, but I'm not sure about the exact string "n/a" here. > If there is an analogous situation elsewhere it would be good to just do > whatever is done there. We could just use the empty string if that would be clearer. > Justin> + /* First, check whether the file or function this entry is pending on has > Justin> + been loaded. It might be more sensible to do this on a solib load, > Justin> + but that doesn't seem to work for some reason. */ > > Let's figure this out. I spent a while in #gdb with a few people (I don't recall who) and we couldn't figure this out. I added a solib load observer, but from within it, find_pc_partial_function always failed. I'm not sure where to look to figure out what's going on. > Also, since the blacklist includes a PC value, I think you have to reset > it when re-running the inferior, and on some other state changes as well. Hm. How do we handle this with breakpoints? > Justin> + add_cmd ("enable", class_blacklist, blacklist_enable_command, _("\ > Justin> +Enable a blacklist entry.\n\ > Justin> +blacklist enable [NUMBER]"), > Justin> + &blacklistlist); > > I think it would be more usual to make the commands "enable blacklist ..." > instead of "blacklist enable ...". Likewise for disable and delete. I'm not sure I like "enable blacklist". The problem is that "blacklist" is a noun referring to the list of all functions we skip and also a verb meaning "add an entry to the blacklist". "Enable blacklist" sounds to me like we're enabling an entire list of blacklist entries. Maybe we can name the thing which indicates that we shouldn't step into a function something less confusing than a "blacklist entry"? > Justin> -int default_breakpoint_valid; > Justin> -CORE_ADDR default_breakpoint_address; > Justin> -struct symtab *default_breakpoint_symtab; > Justin> -int default_breakpoint_line; > Justin> -struct program_space *default_breakpoint_pspace; > > I'm not sure I understand the rationale for this set of changes. > Is it just to make the naming more clear? Right: They're no longer the default breakpoint values since they're now also the default blacklist values too. I moved them into stack.c so that set_last_displayed_codepoint (which replaces set_default_breakpoint) could be a static function -- it's only called in stack.c. -Justin --00c09f8e5fc70ca22a048a1aabdd Content-Type: application/octet-stream; name=bug8287 Content-Disposition: attachment; filename=bug8287 Content-Transfer-Encoding: base64 X-Attachment-Id: f_gazli5ki1 Content-length: 64132 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IDk2OWYzMWQuLjMyODVmNzAgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEw LTA2LTE4ICBKdXN0aW4gTGViYXIgPGp1c3Rpbi5sZWJhckBnbWFpbC5jb20+ CisKKwkqIE1ha2VmaWxlLmluOiAoU0ZJTEVTKTogQWRkIGJsYWNrbGlzdC5j LgorCShIRklMRVNfTk9fU1JDRElSKTogQWRkIGJsYWNrbGlzdC5oLgorCShD T01NT05fT0JTKTogQWRkIGJsYWNrbGlzdC5vLgorCSogYmxhY2tsaXN0Lmgs IGJsYWNrbGlzdC5jOiBOZXcKKwkqIGJyZWFrcG9pbnQuaCAoc2V0X2RlZmF1 bHRfYnJlYWtwb2ludCk6IHJlbW92ZWQKKwkqIGJyZWFrcG9pbnQuYzogUmVt b3ZlZCBkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQsCisJZGVmYXVsdF9icmVh a3BvaW50X2FkZHJlc3MsIGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWIsCisJ ZGVmYXVsdF9icmVha3BvaW50X2xpbmUsIGRlZmF1bHRfYnJlYWtwb2ludF9w c3BhY2UgdmFyaWFibGVzLgorCShzZXRfZGVmYXVsdF9icmVha3BvaW50KTog UmVtb3ZlZAorCShwYXJzZV9icmVha3BvaW50X3NhbHMsIGNyZWF0ZV9icmVh a3BvaW50LCBjbGVhcl9jb21tYW5kLAorCWRlY29kZV9saW5lX3NwZWNfMSk6 IFJlbW92ZWQgdXNlcyBvZiBkZWZhdWx0X2JyZWFrcG9pbnQgdmFyaWFibGVz OworCXJlcGxhY2VkIHdpdGggZnVuY3Rpb24gY2FsbHMgaW50byBzdGFjay5j LgorCSogY2xpLWNtZHMuaDogQWRkZWQgY21kX2xpc3RfZWxlbWVudCAqYmxh Y2tsaXN0bGlzdC4KKwkqIGNsaS1jbWRzLmM6IEFkZGVkIGJsYWNrbGlzdGxp c3QuCisJKGluaXRfY21kX2xpc3RzKTogSW5pdGlhbGl6ZSBibGFja2xpc3Rs aXN0LgorCShpbml0X2NsaV9jbWRzKTogRml4ZWQgY29tbWVudCAoY2xhc3Nl cyBvZiBjb21tYW5kcyBhcHBlYXIgaW4KKwlhbHBoYWJldGljYWwgb3JkZXIp LgorCSogaW5mcnVuLmMgKGhhbmRsZV9pbmZlcmlvcl9ldmVudCk6IEFkZGVk IGNoZWNrIHRoYXQgd2UgZG9uJ3Qgc3RlcAorCWludG8gYSBmdW5jdGlvbiB3 aG9zZSBwYyBpcyBibGFja2xpc3RlZC4KKwkqIHN0YWNrLmM6IEFkZGVkIGxh c3RfY29kZXBvaW50X3ZhbGlkLCBsYXN0X2NvZGVwb2ludF9wc3BhY2UsCisJ bGFzdF9jb2RlcG9pbnRfYWRkciwgbGFzdF9jb2RlcG9pbnRfc3ltdGFiLCBs YXN0X2NvZGVwb2ludF9saW5lCisJdmFyaWFibGVzLgorCShzZXRfbGFzdF9k aXNwbGF5ZWRfY29kZXBvaW50KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KKwko cHJpbnRfZnJhbWVfaW5mbyk6IFN3aXRjaGVkIGNhbGwgdG8gc2V0X2RlZmF1 bHRfYnJlYWtwb2ludCB0byBjYWxsIHRvCisJc2V0X2xhc3RfZGlzcGxheWVk X2NvZGVwb2ludC4KKwkoY2xlYXJfbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50 LAorCWxhc3RfZGlzcGxheWVkX2NvZGVwb2ludF9pc192YWxpZCwgZ2V0X2xh c3RfZGlzcGxheWVkX3BzcGFjZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfYWRk ciwgZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYiwKKwlnZXRfbGFzdF9kaXNw bGF5ZWRfbGluZSwgc2V0X3NhbF90b19sYXN0X2Rpc3BsYXllZF9jb2RlcG9p bnQpOiBOZXcKKwlwdWJsaWMgZnVuY3Rpb25zLgorCSogc3RhY2suaCAoY2xl YXJfbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50LAorCWxhc3RfZGlzcGxheWVk X2NvZGVwb2ludF9pc192YWxpZCwgZ2V0X2xhc3RfZGlzcGxheWVkX3BzcGFj ZSwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfYWRkciwgZ2V0X2xhc3RfZGlzcGxh eWVkX3N5bXRhYiwKKwlnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSwgc2V0X3Nh bF90b19sYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQpOiBBZGRlZAorCiAyMDEw LTA2LTI1ICBKdXN0aW4gTGViYXIgPGp1c3Rpbi5sZWJhckBnbWFpbC5jb20+ CiAKIAkqIGxpbmVzcGVjLmMgKGRlY29kZV92YXJpYWJsZSk6IFBhc3Npbmcg YSBub24tbnVsbCBub3RfZm91bmRfcHRyCmRpZmYgLS1naXQgYS9nZGIvTWFr ZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KaW5kZXggZmMxNDhmZS4uNWQy YzIzZSAxMDA2NDQKLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKyBiL2dkYi9N YWtlZmlsZS5pbgpAQCAtNjUzLDYgKzY1Myw3IEBAIFNGSUxFUyA9IGFkYS1l eHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFscHJpbnQu YyBhZGEtdGFza3MuYyBcCiAJYXV4di5jIGF4LWdlbmVyYWwuYyBheC1nZGIu YyBcCiAJYmNhY2hlLmMgXAogCWJmZC10YXJnZXQuYyBcCisJYmxhY2tsaXN0 LmMgXAogCWJsb2NrLmMgYmxvY2tmcmFtZS5jIGJyZWFrcG9pbnQuYyBidWls ZHN5bS5jIFwKIAljLWV4cC55IGMtbGFuZy5jIGMtdHlwZXByaW50LmMgYy12 YWxwcmludC5jIFwKIAljaGFyc2V0LmMgY2xpLW91dC5jIGNvZmZyZWFkLmMg Y29mZi1wZS1yZWFkLmMgXApAQCAtNzcyLDcgKzc3Myw3IEBAIGFubm90YXRl Lmggc2ltLXJlZ25vLmggZGljdGlvbmFyeS5oIGRmcC5oIG1haW4uaCBmcmFt ZS11bndpbmQuaAlcCiByZW1vdGUtZmlsZWlvLmggaTM4Ni1saW51eC10ZGVw LmggdmF4LXRkZXAuaCBvYmpjLWxhbmcuaCBcCiBzZW50aW5lbC1mcmFtZS5o IGJjYWNoZS5oIHN5bWZpbGUuaCB3aW5kb3dzLXRkZXAuaCBsaW51eC10ZGVw LmggXAogZ2RiX3VzbGVlcC5oIGppdC5oIHhtbC1zeXNjYWxsLmggYWRhLW9w ZXJhdG9yLmluYyBtaWNyb2JsYXplLXRkZXAuaCBcCi1wc3ltdGFiLmggcHN5 bXByaXYuaAorcHN5bXRhYi5oIHBzeW1wcml2LmggYmxhY2tsaXN0LmgKIAog IyBIZWFkZXIgZmlsZXMgdGhhdCBhbHJlYWR5IGhhdmUgc3JjZGlyIGluIHRo ZW0sIG9yIHdoaWNoIGFyZSBpbiBvYmpkaXIuCiAKQEAgLTgwNiw2ICs4MDcs NyBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAk KFlZT0JKKSBcCiAJYWRkcm1hcC5vIFwKIAlhdXh2Lm8gXAogCWJmZC10YXJn ZXQubyBcCisJYmxhY2tsaXN0Lm8gXAogCWJsb2NrZnJhbWUubyBicmVha3Bv aW50Lm8gZmluZHZhci5vIHJlZ2NhY2hlLm8gXAogCWNoYXJzZXQubyBkaXNh c20ubyBkdW1teS1mcmFtZS5vIGRmcC5vIFwKIAlzb3VyY2UubyB2YWx1ZS5v IGV2YWwubyB2YWxvcHMubyB2YWxhcml0aC5vIHZhbHByaW50Lm8gcHJpbnRj bWQubyBcCmRpZmYgLS1naXQgYS9nZGIvYmxhY2tsaXN0LmMgYi9nZGIvYmxh Y2tsaXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NjU5NGEyOAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9ibGFja2xpc3QuYwpA QCAtMCwwICsxLDU2MiBAQAorLyogSGVhZGVyIGZvciBHREIgbGluZSBjb21w bGV0aW9uLgorICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LworCisjaW5jbHVkZSAiZGVmcy5oIgorI2luY2x1ZGUgImJsYWNrbGlzdC5o IgorI2luY2x1ZGUgInZhbHVlLmgiCisjaW5jbHVkZSAidmFscHJpbnQuaCIK KyNpbmNsdWRlICJ1aS1vdXQuaCIKKyNpbmNsdWRlICJnZGJfc3RyaW5nLmgi CisjaW5jbHVkZSAic3ltdGFiLmgiCisjaW5jbHVkZSAiZ2RiY21kLmgiCisj aW5jbHVkZSAiY29tbWFuZC5oIgorI2luY2x1ZGUgImNvbXBsZXRlci5oIgor I2luY2x1ZGUgInN0YWNrLmgiCisjaW5jbHVkZSAiYXJjaC11dGlscy5oIgor I2luY2x1ZGUgImxpbmVzcGVjLmgiCisjaW5jbHVkZSAib2JqZmlsZXMuaCIK Kworc3RydWN0IGJsYWNrbGlzdF9lbnRyeQoreworICBpbnQgbnVtYmVyOwor CisgIC8qIG51bGwgaWYgdGhpcyBpc24ndCBhIGJsYWNrbGlzdCBlbnRyeSBm b3IgYW4gZW50aXJlIGZpbGUuIAorICAgICBUaGUgYmxhY2tsaXN0IGVudHJ5 IG93bnMgdGhpcyBwb2ludGVyLiAqLworICBjaGFyICpmaWxlbmFtZTsKKwor ICAvKiBUaGUgbmFtZSBvZiB0aGUgYmxhY2tsaXN0ZWQgZnVuY3Rpb24sIGlm IHRoaXMgaXMgYSBibGFja2xpc3QgZW50cnkgZm9yIGEKKyAgICAgZnVuY3Rp b24uICBOb3RlIHRoYXQgdGhpcyBtaWdodCBiZSBub24tbnVsbCBldmVuIGlm IHRoZSBwYyBpcyAwIGlmIHRoZQorICAgICBlbnRyeSBpcyBwZW5kaW5nIGEg c2hhcmVkIGxpYnJhcnkgbG9hZC4KKworICAgICBUaGUgYmxhY2tsaXN0IGVu dHJ5IG93bnMgdGhpcyBwb2ludGVyLiAqLworICBjaGFyICpmdW5jdGlvbl9u YW1lOworCisgIC8qIDAgaWYgdGhpcyBpcyBhIGJsYWNrbGlzdCBlbnRyeSBm b3IgYW4gZW50aXJlIGZpbGUsIG9yIGlmIHRoaXMgZW50cnkgd2lsbAorICAg ICBiZSBvbiBhIGZ1bmN0aW9uLCBwZW5kaW5nIGEgc2hhcmVkIGxpYnJhcnkg bG9hZC4gKi8KKyAgQ09SRV9BRERSIHBjOworCisgIC8qIEFyY2hpdGVjdHVy ZSB3ZSB1c2VkIHRvIGNyZWF0ZSB0aGUgYmxhY2tsaXN0IGVudHJ5LiBNYXkg YmUgbnVsbCAKKyAgICAgaWYgdGhlIGVudHJ5IGlzIHBlbmRpbmcgYSBzaGFy ZWQgbGlicmFyeSBsb2FkLiAqLworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aDsKKworICBpbnQgZW5hYmxlZDsKKyAgaW50IHBlbmRpbmc7CisKKyAgc3Ry dWN0IGJsYWNrbGlzdF9lbnRyeSAqbmV4dDsKK307CisKK3N0YXRpYyB2b2lk IGJsYWNrbGlzdF9mdW5jdGlvbl9jb21tYW5kIChjaGFyICphcmcsIGludCBm cm9tX3R0eSk7CitzdGF0aWMgdm9pZCBibGFja2xpc3RfZmlsZV9jb21tYW5k IChjaGFyICphcmcsIGludCBmcm9tX3R0eSk7CitzdGF0aWMgdm9pZCBibGFj a2xpc3RfaW5mbyAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOworCitzdGF0 aWMgdm9pZCBhZGRfYmxhY2tsaXN0X2VudHJ5IChzdHJ1Y3QgYmxhY2tsaXN0 X2VudHJ5ICpiKTsKK3N0YXRpYyB2b2lkIGJsYWNrbGlzdF9mdW5jdGlvbl9w YyAoQ09SRV9BRERSIHBjLCBjaGFyICpuYW1lLAorCQkJCSAgIHN0cnVjdCBn ZGJhcmNoICphcmNoLAorCQkJCSAgIGludCBwZW5kaW5nKTsKK3N0YXRpYyB2 b2lkIHRyeV9yZXNvbHZlX3BlbmRpbmdfZW50cnkgKHN0cnVjdCBibGFja2xp c3RfZW50cnkgKmIpOworc3RhdGljIHN0cnVjdCBnZGJhcmNoICpnZXRfc2Fs X2FyY2ggKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCk7CisKK3N0YXRp YyBzdHJ1Y3QgYmxhY2tsaXN0X2VudHJ5ICpibGFja2xpc3RfZW50cnlfY2hh aW47CitzdGF0aWMgaW50IGJsYWNrbGlzdF9lbnRyeV9jb3VudDsKKworI2Rl ZmluZSBBTExfQkxBQ0tMSVNUX0VOVFJJRVMoQikgXAorICBmb3IgKEIgPSBi bGFja2xpc3RfZW50cnlfY2hhaW47IEI7IEIgPSBCLT5uZXh0KQorCitzdGF0 aWMgdm9pZAorYmxhY2tsaXN0X2ZpbGVfY29tbWFuZCAoY2hhciAqYXJnLCBp bnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBibGFja2xpc3RfZW50cnkgKmI7 CisgIHN0cnVjdCBzeW10YWIgKnN5bXRhYjsKKyAgaW50IHBlbmRpbmcgPSAw OworICBjaGFyICpmaWxlbmFtZSA9IDA7CisKKyAgLyogSWYgbm8gYXJndW1l bnQgd2FzIGdpdmVuLCB0cnkgdG8gZGVmYXVsdCB0byB0aGUgbGFzdAorICAg ICBkaXNwbGF5ZWQgY29kZXBvaW50LiAqLworICBpZiAoYXJnID09IDApCisg ICAgeworICAgICAgc3ltdGFiID0gZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRh YiAoKTsKKyAgICAgIGlmIChzeW10YWIgPT0gMCkKKwllcnJvciAoXygiTm8g ZGVmYXVsdCBibGFja2xpc3QgZmlsZSBub3cuIikpOworICAgICAgZWxzZQor CWZpbGVuYW1lID0gc3ltdGFiLT5maWxlbmFtZTsKKyAgICB9CisgIGVsc2UK KyAgICB7CisgICAgICBzeW10YWIgPSBsb29rdXBfc3ltdGFiIChhcmcpOwor ICAgICAgaWYgKHN5bXRhYiA9PSAwKQorCXsKKwkgIGZwcmludGZfZmlsdGVy ZWQgKGdkYl9zdGRlcnIsIF8oIk5vIHNvdXJjZSBmaWxlIG5hbWVkICVzLlxu IiksIGFyZyk7CisJICBpZiAoIW5xdWVyeSAoXygiXAorQWRkIGZpbGUgdG8g YmxhY2tsaXN0IHBlbmRpbmcgZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQ/ ICIpKSkKKwkgICAgcmV0dXJuOworCisJICBwZW5kaW5nID0gMTsKKwkgIGZp bGVuYW1lID0gYXJnOworCX0KKyAgICAgIGVsc2UKKwlmaWxlbmFtZSA9IHN5 bXRhYi0+ZmlsZW5hbWU7CisgICAgfQorCisgIGIgPSBYWkFMTE9DIChzdHJ1 Y3QgYmxhY2tsaXN0X2VudHJ5KTsKKyAgYi0+ZmlsZW5hbWUgPSB4c3RyZHVw IChmaWxlbmFtZSk7CisgIGItPmVuYWJsZWQgPSAxOworICBiLT5wZW5kaW5n ID0gcGVuZGluZzsKKyAgaWYgKHN5bXRhYiAhPSAwKQorICAgIGItPmdkYmFy Y2ggPSBnZXRfb2JqZmlsZV9hcmNoIChzeW10YWItPm9iamZpbGUpOworCisg IGFkZF9ibGFja2xpc3RfZW50cnkgKGIpOworCisgIHByaW50Zl9maWx0ZXJl ZCAoIkJsYWNrbGlzdGluZyBmaWxlICVzLlxuIiwgZmlsZW5hbWUpOworfQor CitzdGF0aWMgdm9pZAorYmxhY2tsaXN0X2Z1bmN0aW9uX2NvbW1hbmQgKGNo YXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBDT1JFX0FERFIgZnVuY19w YzsKKyAgY2hhciAqbmFtZSA9IE5VTEw7CisKKyAgLyogRGVmYXVsdCB0byB0 aGUgY3VycmVudCBmdW5jdGlvbiBpZiBubyBhcmd1bWVudCBpcyBnaXZlbi4g Ki8KKyAgaWYgKGFyZyA9PSAwKQorICAgIHsKKyAgICAgIENPUkVfQUREUiBw YzsKKyAgICAgIGlmICghbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50X2lzX3Zh bGlkICgpKQorCWVycm9yIChfKCJObyBkZWZhdWx0IGJsYWNrbGlzdCBmdW5j dGlvbiBub3cuIikpOworCisgICAgICBwYyA9IGdldF9sYXN0X2Rpc3BsYXll ZF9hZGRyICgpOworICAgICAgaWYgKCFmaW5kX3BjX3BhcnRpYWxfZnVuY3Rp b24gKHBjLCAmbmFtZSwgJmZ1bmNfcGMsIDApKQorCXsKKwkgIGVycm9yIChf KCJObyBmdW5jdGlvbiBmb3VuZCBjb250YWluaW5nIGN1cnJlbnQgcHJvZ3Jh bSBwb2ludCAlcy4iKSwKKwkJICBwYWRkcmVzcyAoZ2V0X2N1cnJlbnRfYXJj aCAoKSwgcGMpKTsKKwl9CisgICAgICBibGFja2xpc3RfZnVuY3Rpb25fcGMg KGZ1bmNfcGMsIG5hbWUsIGdldF9jdXJyZW50X2FyY2ggKCksIDApOworICAg IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIERlY29kZSBhcmcuICBXZSBz ZXQgZnVuZmlyc3RsaW5lPTEgc28gZGVjb2RlX2xpbmVfMSB3aWxsIGdpdmUg dXMgdGhlCisJIGZpcnN0IGxpbmUgb2YgdGhlIGZ1bmN0aW9uIHNwZWNpZmll ZCwgaWYgaXQgY2FuLCBhbmQgc28gdGhhdCB3ZSdsbAorCSByZWplY3QgdmFy aWFibGUgbmFtZXMgYW5kIHRoZSBsaWtlLiAqLworCisgICAgICAvKiBUT0RP IG1heWJlIHdhbnQgc29tZXRoaW5nIGxpa2UgcGFyc2VfYnJlYWtwb2ludF9z YWxzICgpCisgICAgICAgICBpbiBicmVha3BvaW50LmMuICovCisgICAgICBp bnQgaTsKKyAgICAgIGludCBub3RfZm91bmQgPSAwOworICAgICAgaW50IHBl bmRpbmcgPSAwOworICAgICAgY2hhciAqb3JpZ19hcmcgPSBhcmc7IC8qIGRl Y29kZV9saW5lXzEgbW9kaWZpZXMgdGhlIGFyZyBwb2ludGVyLiAqLworICAg ICAgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHMgPSBkZWNvZGVfbGlu ZV8xICgmYXJnLCAxLCAwLCAwLCAwLAorCQkJCQkJICAgICAmbm90X2ZvdW5k KTsKKworICAgICAgaWYgKG5vdF9mb3VuZCkKKwl7CisJICBmcHJpbnRmX2Zp bHRlcmVkIChnZGJfc3RkZXJyLAorCQkJICAgIF8oIk5vIGZ1bmN0aW9uIGZv dW5kIG5hbWVkICVzLlxuIiksIG9yaWdfYXJnKTsKKworCSAgaWYgKG5xdWVy eSAoXygiXAorQWRkIGZ1bmN0aW9uIHRvIGJsYWNrbGlzdCBwZW5kaW5nIGZ1 dHVyZSBzaGFyZWQgbGlicmFyeSBsb2FkPyAiKSkpCisJICAgIHsKKwkgICAg ICAvKiBBZGQgdGhlIHBlbmRpbmcgYmxhY2tsaXN0IGVudHJ5LiAqLworCSAg ICAgIGJsYWNrbGlzdF9mdW5jdGlvbl9wYyAoMCwgb3JpZ19hcmcsIDAsIDEp OworCSAgICB9CisKKwkgIHJldHVybjsKKwl9CisKKyAgICAgIGlmIChzYWxz Lm5lbHRzID09IDApCisJZXJyb3IgKF8oIk5vIGZ1bmN0aW9uIHRvIGJsYWNr bGlzdC4iKSk7IC8qIFRPRE8gY2FuIEkgdHJpZ2dlciB0aGlzPyAqLworICAg ICAgaWYgKHNhbHMubmVsdHMgPiAxKQorCWVycm9yIChfKCJTcGVjaWZ5IGp1 c3Qgb25lIGZ1bmN0aW9uIGF0IGEgdGltZS4iKSk7IC8qIFRPRE8gY2FuIEkg dHJpZ2dlciB0aGlzPyAqLworICAgICAgaWYgKHN0cmxlbiAoYXJnKSAhPSAw KQorCWVycm9yIChfKCJKdW5rIGF0IGVuZCBvZiBhcmd1bWVudHMuIikpOwor CisgICAgICAvKiBUaGUgcGMgZGVjb2RlX2xpbmVfMSBnaXZlcyB1cyBpcyB0 aGUgZmlyc3QgbGluZSBvZiB0aGUgZnVuY3Rpb24sCisJIGJ1dCB3ZSBhY3R1 YWxseSB3YW50IHRoZSBsaW5lIGJlZm9yZSB0aGF0LiAgVGhlIGNhbGwgdG8K KwkgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIGdldHMgdXMgdGhlIHZhbHVl IHdlIGFjdHVhbGx5IHdhbnQuICovCisgICAgICB7CisJc3RydWN0IHN5bXRh Yl9hbmRfbGluZSAqc2FsID0gJnNhbHMuc2Fsc1swXTsKKwlDT1JFX0FERFIg cGMgPSBzYWwtPnBjOworCUNPUkVfQUREUiBmdW5jX3N0YXJ0ID0gMDsKKwlz dHJ1Y3QgZ2RiYXJjaCAqYXJjaCA9IGdldF9zYWxfYXJjaCAoc2FsKTsKKwor CWlmICghZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsICZm dW5jX3N0YXJ0LCAwKSkKKwkgIHsKKwkgICAgZXJyb3IgKF8oIk5vIGZ1bmN0 aW9uIGZvdW5kIGNvbnRhaW5pbmcgcHJvZ3JhbSBwb2ludCAlcy4iKSwKKwkJ ICAgICBwYWRkcmVzcyAoYXJjaCwgcGMpKTsKKwkgIH0KKworCWJsYWNrbGlz dF9mdW5jdGlvbl9wYyAoZnVuY19zdGFydCwgbmFtZSwgYXJjaCwgMCk7Cisg ICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorYmxhY2tsaXN0X2lu Zm8gKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3QgYmxh Y2tsaXN0X2VudHJ5ICpiOworICBpbnQgbnVtX3ByaW50YWJsZV9lbnRyaWVz ID0gMDsKKyAgaW50IGVudHJ5X251bSA9IC0xOworICBpbnQgYWRkcmVzc193 aWR0aCA9IDEwOworICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRz OworICBzdHJ1Y3QgY2xlYW51cCAqdGJsX2NoYWluOworCisgIGdldF91c2Vy X3ByaW50X29wdGlvbnMgKCZvcHRzKTsKKworICBpZiAoYXJnICE9IDApCisg ICAgeworICAgICAgZW50cnlfbnVtID0gcGFyc2VfYW5kX2V2YWxfbG9uZyAo YXJnKTsKKyAgICB9CisKKyAgLyogQ291bnQgdGhlIG51bWJlciBvZiByb3dz IGluIHRoZSB0YWJsZSBhbmQgc2VlIGlmIHdlIG5lZWQgc3BhY2UgZm9yIGEK KyAgICAgNjQtYml0IGFkZHJlc3MgYW55d2hlcmUuICovCisgIEFMTF9CTEFD S0xJU1RfRU5UUklFUyAoYikKKyAgICBpZiAoZW50cnlfbnVtID09IC0xIHx8 IGItPm51bWJlciA9PSBlbnRyeV9udW0pCisgICAgICB7CisJbnVtX3ByaW50 YWJsZV9lbnRyaWVzKys7CisJaWYgKGItPmdkYmFyY2ggJiYgZ2RiYXJjaF9h ZGRyX2JpdCAoYi0+Z2RiYXJjaCkgPiAzMikKKwkgIGFkZHJlc3Nfd2lkdGgg PSAxODsKKyAgICAgIH0KKworICBpZiAobnVtX3ByaW50YWJsZV9lbnRyaWVz ID09IDApCisgICAgeworICAgICAgaWYgKGVudHJ5X251bSA9PSAtMSkKKwl1 aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJCbGFja2xpc3QgaXMgZW1wdHku XG4iKTsKKyAgICAgIGVsc2UKKwl1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAs CisJCQkiTm8gYmxhY2tsaXN0IGVudHJ5IG51bWJlcmVkICVkLlxuIiwgZW50 cnlfbnVtKTsKKworICAgICAgcmV0dXJuOworICAgIH0KKworICBpZiAob3B0 cy5hZGRyZXNzcHJpbnQpCisgICAgdGJsX2NoYWluCisgICAgICAgPSBtYWtl X2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDUsIG51 bV9wcmludGFibGVfZW50cmllcywKKwkJCQkJICAgICAgIkJsYWNrbGlzdFRh YmxlIik7CisgIGVsc2UKKyAgICB0YmxfY2hhaW4KKyAgICAgICA9IG1ha2Vf Y2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgNCwgbnVt X3ByaW50YWJsZV9lbnRyaWVzLAorCQkJCQkgICAgICAiQmxhY2tsaXN0VGFi bGUiKTsKKworICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNywgdWlf bGVmdCwgIm51bWJlciIsICJOdW0iKTsgICAgICAgICAgICAgIC8qIDEgKi8K KyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDE0LCB1aV9sZWZ0LCAi dHlwZSIsICJUeXBlIik7ICAgICAgICAgICAgICAvKiAyICovCisgIHVpX291 dF90YWJsZV9oZWFkZXIgKHVpb3V0LCAzLCB1aV9sZWZ0LCAiZW5hYmxlZCIs ICJFbmIiKTsgICAgICAgICAgICAgLyogMyAqLworICBpZiAob3B0cy5hZGRy ZXNzcHJpbnQpCisgICAgeworICAgICAgdWlfb3V0X3RhYmxlX2hlYWRlciAo dWlvdXQsIGFkZHJlc3Nfd2lkdGgsIHVpX2xlZnQsCisJCQkgICAiYWRkciIs ICJBZGRyZXNzIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNCAq LworICAgIH0KKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDQwLCB1 aV9ub2FsaWduLCAid2hhdCIsICJXaGF0Iik7ICAgICAgICAgICAvKiA1ICov CisgIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7CisKKyAgQUxMX0JMQUNL TElTVF9FTlRSSUVTIChiKQorICAgIHsKKyAgICAgIHN0cnVjdCBjbGVhbnVw ICplbnRyeV9jaGFpbjsKKworICAgICAgUVVJVDsKKyAgICAgIGlmIChlbnRy eV9udW0gIT0gLTEgJiYgZW50cnlfbnVtICE9IGItPm51bWJlcikKKwljb250 aW51ZTsKKworICAgICAgZW50cnlfY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlf b3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJibGtsc3QtZW50cnkiKTsK KyAgICAgIHVpX291dF9maWVsZF9pbnQgKHVpb3V0LCAibnVtYmVyIiwgYi0+ bnVtYmVyKTsgICAgICAgICAgICAgICAgICAgICAvKiAxICovCisKKyAgICAg IGlmIChiLT5mdW5jdGlvbl9uYW1lICE9IDApCisJdWlfb3V0X2ZpZWxkX3N0 cmluZyAodWlvdXQsICJ0eXBlIiwgImZ1bmN0aW9uIik7ICAgICAgICAgICAg ICAgICAvKiAyICovCisgICAgICBlbHNlIGlmIChiLT5maWxlbmFtZSAhPSAw KQorCXVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAidHlwZSIsICJmaWxl Iik7ICAgICAgICAgICAgICAgICAgICAgLyogMiAqLworICAgICAgZWxzZQor CWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oIlwKK0Js YWNrbGlzdCBlbnRyeSBzaG91bGQgaGF2ZSBlaXRoZXIgYSBmaWxlbmFtZSBv ciBhIGZ1bmN0aW9uIG5hbWUuIikpOworCisgICAgICBpZiAoYi0+ZW5hYmxl ZCkKKwl1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImVuYWJsZWQiLCAi eSIpOyAgICAgICAgICAgICAgICAgICAgIC8qIDMgKi8KKyAgICAgIGVsc2UK Kwl1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImVuYWJsZWQiLCAibiIp OyAgICAgICAgICAgICAgICAgICAgIC8qIDMgKi8KKworICAgICAgaWYgKG9w dHMuYWRkcmVzc3ByaW50KQorCXsKKwkgIGlmIChiLT5wYyAhPSAwKQorCSAg ICB1aV9vdXRfZmllbGRfY29yZV9hZGRyICh1aW91dCwgImFkZHIiLCBiLT5n ZGJhcmNoLCBiLT5wYyk7ICAgLyogNCAqLworCSAgZWxzZQorCSAgICB1aV9v dXRfZmllbGRfc3RyaW5nICh1aW91dCwgImFkZHIiLCAibi9hIik7ICAgICAg ICAgICAgICAgICAgLyogNCAqLworCX0KKworICAgICAgaWYgKCFiLT5wZW5k aW5nICYmIGItPmZ1bmN0aW9uX25hbWUgIT0gMCkKKwl7CisJICAgc3RydWN0 IHN5bWJvbCAqc3ltOworCSAgIGdkYl9hc3NlcnQgKGItPnBjICE9IDApOwor CSAgIHN5bSA9IGZpbmRfcGNfZnVuY3Rpb24gKGItPnBjKTsKKwkgICBpZiAo c3ltKQorCSAgICAgdWlfb3V0X2ZpZWxkX2ZtdCAodWlvdXQsICJ3aGF0Iiwg IiVzIGF0ICVzOiVkIiwKKwkJCSAgICAgICBzeW0tPmdpbmZvLm5hbWUsCisJ CQkgICAgICAgc3ltLT5zeW10YWItPmZpbGVuYW1lLAorCQkJICAgICAgIHN5 bS0+bGluZSk7CisJICAgZWxzZQorCSAgICAgdWlfb3V0X2ZpZWxkX3N0cmlu ZyAodWlvdXQsICJ3aGF0IiwgIj8iKTsKKwl9CisgICAgICBlbHNlIGlmIChi LT5wZW5kaW5nICYmIGItPmZ1bmN0aW9uX25hbWUgIT0gMCkKKwl7CisJICB1 aV9vdXRfZmllbGRfZm10ICh1aW91dCwgIndoYXQiLCAiJXMgKFBFTkRJTkcp IiwKKwkJCSAgICBiLT5mdW5jdGlvbl9uYW1lKTsKKwl9CisgICAgICBlbHNl IGlmICghYi0+cGVuZGluZyAmJiBiLT5maWxlbmFtZSAhPSAwKQorCXVpX291 dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAid2hhdCIsIGItPmZpbGVuYW1lKTsK KyAgICAgIGVsc2UgaWYgKGItPnBlbmRpbmcgJiYgYi0+ZmlsZW5hbWUgIT0g MCkKKwl1aV9vdXRfZmllbGRfZm10ICh1aW91dCwgIndoYXQiLCAiJXMgKFBF TkRJTkcpIiwKKwkJCSAgYi0+ZmlsZW5hbWUpOworCisgICAgICB1aV9vdXRf dGV4dCAodWlvdXQsICJcbiIpOworICAgICAgZG9fY2xlYW51cHMgKGVudHJ5 X2NoYWluKTsKKyAgICB9CisKKyAgZG9fY2xlYW51cHMgKHRibF9jaGFpbik7 Cit9CisKK3N0YXRpYyB2b2lkCitibGFja2xpc3RfZW5hYmxlX2NvbW1hbmQg KGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3QgYmxhY2ts aXN0X2VudHJ5ICpiOworICBpbnQgZW50cnlfbnVtID0gcGFyc2VfYW5kX2V2 YWxfbG9uZyAoYXJnKTsKKyAgQUxMX0JMQUNLTElTVF9FTlRSSUVTIChiKQor ICAgIGlmIChiLT5udW1iZXIgPT0gZW50cnlfbnVtKQorICAgICAgeworCWIt PmVuYWJsZWQgPSAxOworCXJldHVybjsKKyAgICAgIH0KKworICBlcnJvciAo XygiTm8gYmxhY2tsaXN0IGVudHJ5IG51bWJlcmVkICVkLiIpLCBlbnRyeV9u dW0pOworfQorCitzdGF0aWMgdm9pZAorYmxhY2tsaXN0X2Rpc2FibGVfY29t bWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVjdCBi bGFja2xpc3RfZW50cnkgKmI7CisgIGludCBlbnRyeV9udW0gPSBwYXJzZV9h bmRfZXZhbF9sb25nIChhcmcpOworICBBTExfQkxBQ0tMSVNUX0VOVFJJRVMg KGIpCisgICAgaWYgKGItPm51bWJlciA9PSBlbnRyeV9udW0pCisgICAgICB7 CisJYi0+ZW5hYmxlZCA9IDA7CisJcmV0dXJuOworICAgICAgfQorCisgIGVy cm9yIChfKCJObyBibGFja2xpc3QgZW50cnkgbnVtYmVyZWQgJWQuIiksIGVu dHJ5X251bSk7Cit9CisKKy8qIENvbW1hbmQgZG8gZGVsZXRlIGEgYmxhY2ts aXN0IGVudHJ5LiAqLworc3RhdGljIHZvaWQKK2JsYWNrbGlzdF9kZWxldGVf Y29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0cnVj dCBibGFja2xpc3RfZW50cnkgKmIsICpiX3ByZXY7CisgIGludCBlbnRyeV9u dW0gPSBwYXJzZV9hbmRfZXZhbF9sb25nIChhcmcpOworCisgIC8qIFdlIGRv bid0IG5lZWQgdG8gdXNlIGEgU0FGRSBtYWNybyBoZXJlIHNpbmNlIHdlIHJl dHVybiBhcyBzb29uIGFzIHdlCisgICAgIHJlbW92ZSBhbiBlbGVtZW50IGZy b20gdGhlIGxpc3QuICovCisgIGJfcHJldiA9IDA7CisgIEFMTF9CTEFDS0xJ U1RfRU5UUklFUyAoYikKKyAgICBpZiAoYi0+bnVtYmVyID09IGVudHJ5X251 bSkKKyAgICAgIHsKKwlpZiAoYl9wcmV2ICE9IDApCisJICBiX3ByZXYtPm5l eHQgPSBiLT5uZXh0OworCWVsc2UKKwkgIGJsYWNrbGlzdF9lbnRyeV9jaGFp biA9IGItPm5leHQ7CisKKwl4ZnJlZSAoYi0+ZnVuY3Rpb25fbmFtZSk7CisJ eGZyZWUgKGItPmZpbGVuYW1lKTsKKwl4ZnJlZSAoYik7CisJcmV0dXJuOwor ICAgICAgfQorICAgIGVsc2UKKyAgICAgIHsKKwliX3ByZXYgPSBiOworICAg ICAgfQorCisgIGVycm9yIChfKCJObyBibGFja2xpc3QgZW50cnkgbnVtYmVy ZWQgJWQuIiksIGVudHJ5X251bSk7Cit9CisKKy8qIENyZWF0ZSBhIGJsYWNr bGlzdCBlbnRyeSBmb3IgdGhlIGdpdmVuIHBjIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGdpdmVuCisgICBmdW5jdGlvbiBuYW1lIGFuZCBhZGQgaXQgdG8gdGhl IGxpc3QuICovCitzdGF0aWMgdm9pZAorYmxhY2tsaXN0X2Z1bmN0aW9uX3Bj IChDT1JFX0FERFIgcGMsIGNoYXIgKm5hbWUsIHN0cnVjdCBnZGJhcmNoICph cmNoLAorCQkgICAgICAgaW50IHBlbmRpbmcpCit7CisgIHN0cnVjdCBibGFj a2xpc3RfZW50cnkgKmIgPSBYWkFMTE9DIChzdHJ1Y3QgYmxhY2tsaXN0X2Vu dHJ5KTsKKyAgYi0+cGMgPSBwYzsKKyAgYi0+Z2RiYXJjaCA9IGFyY2g7Cisg IGItPmVuYWJsZWQgPSAxOworICBiLT5wZW5kaW5nID0gcGVuZGluZzsKKyAg Yi0+ZnVuY3Rpb25fbmFtZSA9IHhzdHJkdXAgKG5hbWUpOworCisgIGFkZF9i bGFja2xpc3RfZW50cnkgKGIpOworCisgIGlmICghcGVuZGluZykKKyAgICBw cmludGZfZmlsdGVyZWQgKCJCbGFja2xpc3RpbmcgZnVuY3Rpb24gJXMgYXQg JXMuXG4iLAorCQkgICAgIG5hbWUsIHBhZGRyZXNzIChnZXRfY3VycmVudF9h cmNoICgpLCBwYykpOworICBlbHNlCisgICAgcHJpbnRmX2ZpbHRlcmVkICgi QmxhY2tsaXN0aW5nIGZ1bmN0aW9uICVzIHBlbmRpbmcgc2hhcmVkIGxpYnJh cnkgbG9hZC5cbiIsCisJCSAgICAgbmFtZSk7Cit9CisKKy8qIEFkZCB0aGUg Z2l2ZW4gYmxhY2tsaXN0IGVudHJ5IHRvIG91ciBsaXN0LCBhbmQgc2V0IHRo ZSBlbnRyeSdzIG51bWJlci4gKi8KK3N0YXRpYyB2b2lkCithZGRfYmxhY2ts aXN0X2VudHJ5IChzdHJ1Y3QgYmxhY2tsaXN0X2VudHJ5ICpiKQoreworICBz dHJ1Y3QgYmxhY2tsaXN0X2VudHJ5ICpiMTsKKworICBiLT5udW1iZXIgPSAr K2JsYWNrbGlzdF9lbnRyeV9jb3VudDsKKworICAvKiBBZGQgdG8gdGhlIGVu ZCBvZiB0aGUgY2hhaW4gc28gdGhhdCB0aGUgbGlzdCBvZgorICAgICBibGFj a2xpc3QgZW50cmllcyB3aWxsIGJlIGluIG51bWVyaWNhbCBvcmRlci4gKi8K KworICBiMSA9IGJsYWNrbGlzdF9lbnRyeV9jaGFpbjsKKyAgaWYgKGIxID09 IDApCisgICAgYmxhY2tsaXN0X2VudHJ5X2NoYWluID0gYjsKKyAgZWxzZQor ICAgIHsKKyAgICAgIHdoaWxlIChiMS0+bmV4dCkKKwliMSA9IGIxLT5uZXh0 OworICAgICAgYjEtPm5leHQgPSBiOworICAgIH0KK30KKworLyogRG9lcyB0 aGUgZ2l2ZW4gcGMgY29ycmVzcG9uZCB0byB0aGUgYmVnaW5uaW5nIG9mIGEg YmxhY2tsaXN0ZWQgZnVuY3Rpb24/ICovCitpbnQKK2Z1bmN0aW9uX3BjX2lz X2JsYWNrbGlzdGVkIChDT1JFX0FERFIgcGMpCit7CisgIHN0cnVjdCBzeW10 YWJfYW5kX2xpbmUgc2FsOworICBjaGFyICpmaWxlbmFtZTsKKyAgc3RydWN0 IGJsYWNrbGlzdF9lbnRyeSAqYjsKKworICBzYWwgPSBmaW5kX3BjX2xpbmUg KHBjLCAwKTsKKyAgZmlsZW5hbWUgPSBzYWwuc3ltdGFiLT5maWxlbmFtZTsK KworICBBTExfQkxBQ0tMSVNUX0VOVFJJRVMgKGIpCisgICAgeworICAgICAg LyogRmlyc3QsIGNoZWNrIHdoZXRoZXIgdGhlIGZpbGUgb3IgZnVuY3Rpb24g dGhpcyBlbnRyeSBpcyBwZW5kaW5nIG9uIGhhcworCSBiZWVuIGxvYWRlZC4g IEl0IG1pZ2h0IGJlIG1vcmUgc2Vuc2libGUgdG8gZG8gdGhpcyBvbiBhIHNv bGliIGxvYWQsCisJIGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSB0byB3b3JrIGZv ciBzb21lIHJlYXNvbi4gKi8KKyAgICAgIGlmIChiLT5wZW5kaW5nKQorCXRy eV9yZXNvbHZlX3BlbmRpbmdfZW50cnkgKGIpOworCisgICAgICBpZiAoYi0+ ZW5hYmxlZCAmJiAhYi0+cGVuZGluZworCSAgJiYgKChiLT5wYyAhPSAwICYm IHBjID09IGItPnBjKQorCSAgICAgIHx8IChiLT5maWxlbmFtZSAhPSAwICYm IGZpbGVuYW1lICE9IDAKKwkgICAgICAgICAgJiYgc3RyY21wIChmaWxlbmFt ZSwgYi0+ZmlsZW5hbWUpID09IDApKSkKKwlyZXR1cm4gMTsKKyAgICB9CisK KyAgcmV0dXJuIDA7Cit9CisKKy8qIFRyeSB0byBsb29rIHVwIHRoZSBmaWxl IG9yIGZ1bmN0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGJsYWNr bGlzdAorICAgZW50cnkuICBJZiB0aGUgZmlsZSBvciBmdW5jdGlvbiBub3cg ZXhpc3RzLCB1cGRhdGUgdGhlIGVudHJ5IGFuZCB1bm1hcmsgaXQKKyAgIGFz IHBlbmRpbmcuICovCitzdGF0aWMgdm9pZAordHJ5X3Jlc29sdmVfcGVuZGlu Z19lbnRyeSAoc3RydWN0IGJsYWNrbGlzdF9lbnRyeSAqYikKK3sKKyAgaWYg KCFiLT5wZW5kaW5nKQorICAgIHJldHVybjsKKworICBpZiAoYi0+ZmlsZW5h bWUgIT0gMCkKKyAgICB7CisgICAgICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWIg PSBsb29rdXBfc3ltdGFiIChiLT5maWxlbmFtZSk7CisgICAgICBpZiAoc3lt dGFiICE9IDApCisJeworCSAgeGZyZWUgKGItPmZpbGVuYW1lKTsKKwkgIGIt PmZpbGVuYW1lID0geHN0cmR1cCAoc3ltdGFiLT5maWxlbmFtZSk7CisJICBi LT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAoc3ltdGFiLT5vYmpmaWxl KTsKKwkgIGItPnBlbmRpbmcgPSAwOworCX0KKyAgICB9CisgIGVsc2UgaWYg KGItPmZ1bmN0aW9uX25hbWUgIT0gMCkKKyAgICB7CisgICAgICBpbnQgbm90 X2ZvdW5kID0gMDsKKyAgICAgIGNoYXIgKmZ1bmNfbmFtZSA9IGItPmZ1bmN0 aW9uX25hbWU7CisgICAgICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2Fs cyA9IGRlY29kZV9saW5lXzEgKCZmdW5jX25hbWUsIDEsIDAsIDAsIDAsCisJ CQkJCQkgICAgICZub3RfZm91bmQpOworCisgICAgICBpZiAoIW5vdF9mb3Vu ZCAmJiBzYWxzLm5lbHRzID09IDEgJiYgc3RybGVuIChmdW5jX25hbWUpID09 IDApCisJeworCSAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsID0gJnNh bHMuc2Fsc1swXTsKKwkgIENPUkVfQUREUiBwYyA9IHNhbC0+cGM7CisJICBD T1JFX0FERFIgZnVuY19zdGFydCA9IDA7CisJICBzdHJ1Y3QgZ2RiYXJjaCAq YXJjaCA9IGdldF9zYWxfYXJjaCAoc2FsKTsKKworCSAgaWYgKGZpbmRfcGNf cGFydGlhbF9mdW5jdGlvbiAocGMsICZiLT5mdW5jdGlvbl9uYW1lLCAmZnVu Y19zdGFydCwgMCkpCisJICAgIHsKKwkgICAgICBiLT5wZW5kaW5nID0gMDsK KwkgICAgICBiLT5wYyA9IGZ1bmNfc3RhcnQ7CisJICAgICAgYi0+Z2RiYXJj aCA9IGFyY2g7CisJICAgIH0KKwl9CisgICAgfQorfQorCisvKiBIZWxwZXIg ZnVuY3Rpb24gdG8gZ2V0IGEgZ2RiYXJjaCBmcm9tIGEgc3ltdGFiX2FuZF9s aW5lLiAqLworc3RhdGljIHN0cnVjdCBnZGJhcmNoKgorZ2V0X3NhbF9hcmNo IChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpCit7CisgIGlmIChzYWwt PnNlY3Rpb24pCisgICAgcmV0dXJuIGdldF9vYmpmaWxlX2FyY2ggKHNhbC0+ c2VjdGlvbi0+b2JqZmlsZSk7CisgIGlmIChzYWwtPnN5bXRhYikKKyAgICBy ZXR1cm4gZ2V0X29iamZpbGVfYXJjaCAoc2FsLT5zeW10YWItPm9iamZpbGUp OworICByZXR1cm4gZ2V0X2N1cnJlbnRfYXJjaCAoKTsKK30KKwordm9pZAor X2luaXRpYWxpemVfc3RlcF9ibGFja2xpc3QgKHZvaWQpCit7CisgIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpjOworCisgIGJsYWNrbGlzdF9lbnRyeV9j aGFpbiA9IDA7CisgIGJsYWNrbGlzdF9lbnRyeV9jb3VudCA9IDA7CisKKyAg YWRkX3ByZWZpeF9jbWQgKCJibGFja2xpc3QiLCBjbGFzc19icmVha3BvaW50 LCBibGFja2xpc3RfZnVuY3Rpb25fY29tbWFuZCwgXygiXAorSWdub3JlIGEg ZnVuY3Rpb24gd2hpbGUgc3RlcHBpbmcuXG5cCitibGFja2xpc3QgW0ZVTkNU SU9OIE5BTUVdXG5cCitJZiBubyBmdW5jdGlvbiBuYW1lIGlzIGdpdmVuLCBi bGFja2xpc3QgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIiksCisgICAgICAgICAg ICAgICAgICAmYmxhY2tsaXN0bGlzdCwgImJsYWNrbGlzdCAiLCAxLCAmY21k bGlzdCk7CisKKyAgYyA9IGFkZF9jbWQgKCJmaWxlIiwgY2xhc3NfYnJlYWtw b2ludCwgYmxhY2tsaXN0X2ZpbGVfY29tbWFuZCwgXygiXAorSWdub3JlIGEg ZmlsZSB3aGlsZSBzdGVwcGluZy5cblwKK2JsYWNrbGlzdCBmaWxlIFtGSUxF TkFNRV1cblwKK0lmIG5vIGZpbGVuYW1lIGlzIGdpdmVuLCBibGFja2xpc3Qg dGhlIGN1cnJlbnQgZmlsZS4iKSwKKwkgICAgICAgJmJsYWNrbGlzdGxpc3Qp OworICBzZXRfY21kX2NvbXBsZXRlciAoYywgZmlsZW5hbWVfY29tcGxldGVy KTsKKworICBjID0gYWRkX2NtZCAoImZ1bmN0aW9uIiwgY2xhc3NfYnJlYWtw b2ludCwgYmxhY2tsaXN0X2Z1bmN0aW9uX2NvbW1hbmQsIF8oIlwKK0lnbm9y ZSBhIGZ1bmN0aW9uIHdoaWxlIHN0ZXBwaW5nLlxuXAorYmxhY2tsaXN0IGZ1 bmN0aW9uIFtGVU5DVElPTiBOQU1FXVxuXAorSWYgbm8gZnVuY3Rpb24gbmFt ZSBpcyBnaXZlbiwgYmxhY2tsaXN0IHRoZSBjdXJyZW50IGZ1bmN0aW9uLiIp LAorCSAgICAgICAmYmxhY2tsaXN0bGlzdCk7CisgIHNldF9jbWRfY29tcGxl dGVyIChjLCBsb2NhdGlvbl9jb21wbGV0ZXIpOworCisgIGFkZF9jbWQgKCJl bmFibGUiLCBjbGFzc19icmVha3BvaW50LCBibGFja2xpc3RfZW5hYmxlX2Nv bW1hbmQsIF8oIlwKK0VuYWJsZSBhIGJsYWNrbGlzdCBlbnRyeS5cblwKK2Js YWNrbGlzdCBlbmFibGUgW05VTUJFUl0iKSwKKwkgICAmYmxhY2tsaXN0bGlz dCk7CisKKyAgYWRkX2NtZCAoImRpc2FibGUiLCBjbGFzc19icmVha3BvaW50 LCBibGFja2xpc3RfZGlzYWJsZV9jb21tYW5kLCBfKCJcCitEaXNhYmxlIGEg YmxhY2tsaXN0IGVudHJ5LlxuXAorYmxhY2tsaXN0IGRpc2FibGUgW05VTUJF Ul0iKSwKKwkgICAmYmxhY2tsaXN0bGlzdCk7CisKKyAgYWRkX2NtZCAoImRl bGV0ZSIsIGNsYXNzX2JyZWFrcG9pbnQsIGJsYWNrbGlzdF9kZWxldGVfY29t bWFuZCwgXygiXAorRGVsZXRlIGEgYmxhY2tsaXN0IGVudHJ5LlxuXAorYmxh Y2tsaXN0IGRlbGV0ZSBbTlVNQkVSXSIpLAorICAgICAgICAgICAmYmxhY2ts aXN0bGlzdCk7CisKKyAgYWRkX2luZm8gKCJibGFja2xpc3QiLCBibGFja2xp c3RfaW5mbywgXygiXAorU3RhdHVzIG9mIGJsYWNrbGlzdCwgb3Igb2YgYmxh Y2tsaXN0IGVudHJ5IE5VTUJFUi5cblwKK1RoZSBcIlR5cGVcIiBjb2x1bW4g aW5kaWNhdGVzIG9uZSBvZjpcblwKK1x0ZmlsZSAgICAgICAgLSBibGFja2xp c3RlZCBmaWxlXG5cCitcdGZ1bmN0aW9uICAgIC0gYmxhY2tsaXN0ZWQgZnVu Y3Rpb24iKSk7Cit9CmRpZmYgLS1naXQgYS9nZGIvYmxhY2tsaXN0LmggYi9n ZGIvYmxhY2tsaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYjViNWMyMAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9ibGFja2xp c3QuaApAQCAtMCwwICsxLDI3IEBACisvKiBIZWFkZXIgZm9yIEdEQiBsaW5l IGNvbXBsZXRpb24uCisgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisKKy8qIFJldHVybnMgMSBpZiB0aGUgZ2l2ZW4gcGMgd2FzIGJs YWNrbGlzdGVkIGFuZCBzaG91bGRuJ3QgYmUgc3RlcHBlZCBpbnRvLgorICAg T3RoZXJ3aXNlLCByZXR1cm5zIDAuICovCisKKyNpZiAhZGVmaW5lZCAoQmxB Q0tMSVNUX0gpCisjZGVmaW5lIEJMQUNLTElTVF9ICisKKy8qIEluZGljYXRl cyB3aGV0aGVyIHRoZSBnaXZlbiBwYyBpcyBibGFja2xpc3RlZCBhbmQgc2hv dWxkbid0IGJlIHN0ZXBwZWQKKyAgIGludG8uICovCitpbnQgZnVuY3Rpb25f cGNfaXNfYmxhY2tsaXN0ZWQgKENPUkVfQUREUiBwYyk7CisKKyNlbmRpZiAv KiAhZGVmaW5lZCAoQkxBQ0tMSVNUX0gpICovCmRpZmYgLS1naXQgYS9nZGIv YnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwppbmRleCA3NDgzOGU4 Li44ZjYwYmQ0IDEwMDY0NAotLS0gYS9nZGIvYnJlYWtwb2ludC5jCisrKyBi L2dkYi9icmVha3BvaW50LmMKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRl ICJ2YWxwcmludC5oIgogI2luY2x1ZGUgImppdC5oIgogI2luY2x1ZGUgInht bC1zeXNjYWxsLmgiCisjaW5jbHVkZSAic3RhY2suaCIKIAogLyogcmVhZGxp bmUgaW5jbHVkZSBmaWxlcyAqLwogI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRs aW5lLmgiCkBAIC01MjcsMTkgKzUyOCw2IEBAIG1ha2VfY2xlYW51cF9kZWNy ZWZfY291bnRlZF9jb21tYW5kX2xpbmUgKHN0cnVjdCBjb3VudGVkX2NvbW1h bmRfbGluZSAqKmNtZHApCiAgIHJldHVybiBtYWtlX2NsZWFudXAgKGRvX2Ns ZWFudXBfY291bnRlZF9jb21tYW5kX2xpbmUsIGNtZHApOwogfQogCi0vKiBE ZWZhdWx0IGFkZHJlc3MsIHN5bXRhYiBhbmQgbGluZSB0byBwdXQgYSBicmVh a3BvaW50IGF0Ci0gICBmb3IgImJyZWFrIiBjb21tYW5kIHdpdGggbm8gYXJn LgotICAgaWYgZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkIGlzIHplcm8sIHRo ZSBvdGhlciB0aHJlZSBhcmUKLSAgIG5vdCB2YWxpZCwgYW5kICJicmVhayIg d2l0aCBubyBhcmcgaXMgYW4gZXJyb3IuCi0KLSAgIFRoaXMgc2V0IGJ5IHBy aW50X3N0YWNrX2ZyYW1lLCB3aGljaCBjYWxscyBzZXRfZGVmYXVsdF9icmVh a3BvaW50LiAgKi8KLQotaW50IGRlZmF1bHRfYnJlYWtwb2ludF92YWxpZDsK LUNPUkVfQUREUiBkZWZhdWx0X2JyZWFrcG9pbnRfYWRkcmVzczsKLXN0cnVj dCBzeW10YWIgKmRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7Ci1pbnQgZGVm YXVsdF9icmVha3BvaW50X2xpbmU7Ci1zdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAq ZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsKLQogDAogLyogKlBQIGlzIGEg c3RyaW5nIGRlbm90aW5nIGEgYnJlYWtwb2ludC4gIEdldCB0aGUgbnVtYmVy IG9mIHRoZSBicmVha3BvaW50LgogICAgQWR2YW5jZSAqUFAgYWZ0ZXIgdGhl IHN0cmluZyBhbmQgYW55IHRyYWlsaW5nIHdoaXRlc3BhY2UuCkBAIC01MTc0 LDIwICs1MTYyLDYgQEAgZGVzY3JpYmVfb3RoZXJfYnJlYWtwb2ludHMgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgIH0KIH0KIAwKLS8qIFNldCB0 aGUgZGVmYXVsdCBwbGFjZSB0byBwdXQgYSBicmVha3BvaW50Ci0gICBmb3Ig dGhlIGBicmVhaycgY29tbWFuZCB3aXRoIG5vIGFyZ3VtZW50cy4gICovCi0K LXZvaWQKLXNldF9kZWZhdWx0X2JyZWFrcG9pbnQgKGludCB2YWxpZCwgc3Ry dWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwKLQkJCUNPUkVfQUREUiBhZGRy LCBzdHJ1Y3Qgc3ltdGFiICpzeW10YWIsCi0JCQlpbnQgbGluZSkKLXsKLSAg ZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkID0gdmFsaWQ7Ci0gIGRlZmF1bHRf YnJlYWtwb2ludF9wc3BhY2UgPSBwc3BhY2U7Ci0gIGRlZmF1bHRfYnJlYWtw b2ludF9hZGRyZXNzID0gYWRkcjsKLSAgZGVmYXVsdF9icmVha3BvaW50X3N5 bXRhYiA9IHN5bXRhYjsKLSAgZGVmYXVsdF9icmVha3BvaW50X2xpbmUgPSBs aW5lOwotfQogCiAvKiBSZXR1cm4gdHJ1ZSBpZmYgaXQgaXMgbWVhbmluZ2Z1 bCB0byB1c2UgdGhlIGFkZHJlc3MgbWVtYmVyIG9mCiAgICBCUFQuICBGb3Ig c29tZSBicmVha3BvaW50IHR5cGVzLCB0aGUgYWRkcmVzcyBtZW1iZXIgaXMg aXJyZWxldmFudApAQCAtNzEyMCwyMCArNzA5NCwyMyBAQCBwYXJzZV9icmVh a3BvaW50X3NhbHMgKGNoYXIgKiphZGRyZXNzLAogICBpZiAoKCphZGRyZXNz KSA9PSBOVUxMCiAgICAgICB8fCAoc3RybmNtcCAoKCphZGRyZXNzKSwgImlm IiwgMikgPT0gMCAmJiBpc3NwYWNlICgoKmFkZHJlc3MpWzJdKSkpCiAgICAg ewotICAgICAgaWYgKGRlZmF1bHRfYnJlYWtwb2ludF92YWxpZCkKKyAgICAg IC8qIFRoZSBsYXN0IGRpc3BsYXllZCBjb2RlcG9pbnQsIGlmIGl0J3MgdmFs aWQsIGlzIG91ciBkZWZhdWx0IGJyZWFrcG9pbnQKKyAgICAgICAgIGFkZHJl c3MuICovCisgICAgICBpZiAobGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50X2lz X3ZhbGlkICgpKQogCXsKIAkgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2Fs OwogCSAgaW5pdF9zYWwgKCZzYWwpOwkJLyogaW5pdGlhbGl6ZSB0byB6ZXJv ZXMgKi8KIAkgIHNhbHMtPnNhbHMgPSAoc3RydWN0IHN5bXRhYl9hbmRfbGlu ZSAqKQogCSAgICB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBzeW10YWJfYW5k X2xpbmUpKTsKLQkgIHNhbC5wYyA9IGRlZmF1bHRfYnJlYWtwb2ludF9hZGRy ZXNzOwotCSAgc2FsLmxpbmUgPSBkZWZhdWx0X2JyZWFrcG9pbnRfbGluZTsK LQkgIHNhbC5zeW10YWIgPSBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFiOwot CSAgc2FsLnBzcGFjZSA9IGRlZmF1bHRfYnJlYWtwb2ludF9wc3BhY2U7CisK KwkgIC8qIFNldCBzYWwncyBwc3BhY2UsIHBjLCBzeW10YWIsIGFuZCBsaW5l IHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZworCSAgICAgdG8gdGhlIGxh c3QgY2FsbCB0byBwcmludF9mcmFtZV9pbmZvLiAqLworCSAgc2V0X3NhbF90 b19sYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQgKCZzYWwpOworCiAJICBzYWwu c2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAoc2FsLnBjKTsKIAogCSAgLyog ImJyZWFrIiB3aXRob3V0IGFyZ3VtZW50cyBpcyBlcXVpdmFsZW50IHRvICJi cmVhayAqUEMiIHdoZXJlIFBDIGlzCi0JICAgICB0aGUgZGVmYXVsdF9icmVh a3BvaW50X2FkZHJlc3MuICBTbyBtYWtlIHN1cmUgdG8gc2V0CisJICAgICB0 aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50J3MgYWRkcmVzcy4gIFNvIG1h a2Ugc3VyZSB0byBzZXQKIAkgICAgIHNhbC5leHBsaWNpdF9wYyB0byBwcmV2 ZW50IEdEQiBmcm9tIHRyeWluZyB0byBleHBhbmQgdGhlIGxpc3Qgb2YKIAkg ICAgIHNhbHMgdG8gaW5jbHVkZSBhbGwgb3RoZXIgaW5zdGFuY2VzIHdpdGgg dGhlIHNhbWUgc3ltdGFiIGFuZCBsaW5lLgogCSAgICovCkBAIC03MTUwLDE5 ICs3MTI3LDIyIEBAIHBhcnNlX2JyZWFrcG9pbnRfc2FscyAoY2hhciAqKmFk ZHJlc3MsCiAgICAgICAvKiBGb3JjZSBhbG1vc3QgYWxsIGJyZWFrcG9pbnRz IHRvIGJlIGluIHRlcm1zIG9mIHRoZQogICAgICAgICAgY3VycmVudF9zb3Vy Y2Vfc3ltdGFiICh3aGljaCBpcyBkZWNvZGVfbGluZV8xJ3MgZGVmYXVsdCku ICBUaGlzCiAgICAgICAgICBzaG91bGQgcHJvZHVjZSB0aGUgcmVzdWx0cyB3 ZSB3YW50IGFsbW9zdCBhbGwgb2YgdGhlIHRpbWUgd2hpbGUKLSAgICAgICAg IGxlYXZpbmcgZGVmYXVsdF9icmVha3BvaW50XyogYWxvbmUuICAKKyAgICAg ICAgIGxlYXZpbmcgdGhlIGxhc3QgZGlzcGxheWVkIGNvZGVwb2ludCBwb2lu dGVycyBhbG9uZS4gIAogICAgICAgICAgT2JqQzogSG93ZXZlciwgZG9uJ3Qg bWF0Y2ggYW4gT2JqZWN0aXZlLUMgbWV0aG9kIG5hbWUgd2hpY2gKICAgICAg ICAgIG1heSBoYXZlIGEgJysnIG9yICctJyBzdWNjZWVkZWQgYnkgYSAnWycg Ki8KIAkgCiAgICAgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIGN1cnNhbCA9 IGdldF9jdXJyZW50X3NvdXJjZV9zeW10YWJfYW5kX2xpbmUgKCk7CiAJCQkK LSAgICAgIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQKKyAgICAgIGlm IChsYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnRfaXNfdmFsaWQgKCkKIAkgICYm ICghY3Vyc2FsLnN5bXRhYgogIAkgICAgICB8fCAoKHN0cmNociAoIistIiwg KCphZGRyZXNzKVswXSkgIT0gTlVMTCkKICAJCSAgJiYgKCgqYWRkcmVzcylb MV0gIT0gJ1snKSkpKQotCSpzYWxzID0gZGVjb2RlX2xpbmVfMSAoYWRkcmVz cywgMSwgZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYiwKLQkJCSAgICAgICBk ZWZhdWx0X2JyZWFrcG9pbnRfbGluZSwgYWRkcl9zdHJpbmcsIAotCQkJICAg ICAgIG5vdF9mb3VuZF9wdHIpOworCXsKKwkgICpzYWxzID0gZGVjb2RlX2xp bmVfMSAoYWRkcmVzcywgMSwKKwkJCQkgZ2V0X2xhc3RfZGlzcGxheWVkX3N5 bXRhYiAoKSwKKwkJCQkgZ2V0X2xhc3RfZGlzcGxheWVkX2xpbmUgKCksCisJ CQkJIGFkZHJfc3RyaW5nLCBub3RfZm91bmRfcHRyKTsKKwl9CiAgICAgICBl bHNlCiAJKnNhbHMgPSBkZWNvZGVfbGluZV8xIChhZGRyZXNzLCAxLCAoc3Ry dWN0IHN5bXRhYiAqKSBOVUxMLCAwLAogCQkgICAgICAgICAgICAgICBhZGRy X3N0cmluZywgbm90X2ZvdW5kX3B0cik7CkBAIC04MDgyLDkgKzgwNjIsMTEg QEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90 dHksIGludCBhbnl3aGVyZSkKICAgLyogU2V0IGEgYnJlYWtwb2ludCB3aGVy ZSB0aGUgdXNlciB3YW50cyBpdCBhbmQgYXQgcmV0dXJuIGZyb20KICAgICAg dGhpcyBmdW5jdGlvbiAqLwogCi0gIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRf dmFsaWQpCi0gICAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZhcmcsIDEsIGRl ZmF1bHRfYnJlYWtwb2ludF9zeW10YWIsCi0JCQkgIGRlZmF1bHRfYnJlYWtw b2ludF9saW5lLCAoY2hhciAqKiopIE5VTEwsIE5VTEwpOworICBpZiAobGFz dF9kaXNwbGF5ZWRfY29kZXBvaW50X2lzX3ZhbGlkICgpKQorICAgIHNhbHMg PSBkZWNvZGVfbGluZV8xICgmYXJnLCAxLAorCQkJICBnZXRfbGFzdF9kaXNw bGF5ZWRfc3ltdGFiICgpLAorCQkJICBnZXRfbGFzdF9kaXNwbGF5ZWRfbGlu ZSAoKSwKKwkJCSAgKGNoYXIgKioqKSBOVUxMLCBOVUxMKTsKICAgZWxzZQog ICAgIHNhbHMgPSBkZWNvZGVfbGluZV8xICgmYXJnLCAxLCAoc3RydWN0IHN5 bXRhYiAqKSBOVUxMLCAKIAkJCSAgMCwgKGNoYXIgKioqKSBOVUxMLCBOVUxM KTsKQEAgLTg2NzIsMTAgKzg2NTQsMTEgQEAgY2xlYXJfY29tbWFuZCAoY2hh ciAqYXJnLCBpbnQgZnJvbV90dHkpCiAJeG1hbGxvYyAoc2l6ZW9mIChzdHJ1 Y3Qgc3ltdGFiX2FuZF9saW5lKSk7CiAgICAgICBtYWtlX2NsZWFudXAgKHhm cmVlLCBzYWxzLnNhbHMpOwogICAgICAgaW5pdF9zYWwgKCZzYWwpOwkJLyog aW5pdGlhbGl6ZSB0byB6ZXJvZXMgKi8KLSAgICAgIHNhbC5saW5lID0gZGVm YXVsdF9icmVha3BvaW50X2xpbmU7Ci0gICAgICBzYWwuc3ltdGFiID0gZGVm YXVsdF9icmVha3BvaW50X3N5bXRhYjsKLSAgICAgIHNhbC5wYyA9IGRlZmF1 bHRfYnJlYWtwb2ludF9hZGRyZXNzOwotICAgICAgc2FsLnBzcGFjZSA9IGRl ZmF1bHRfYnJlYWtwb2ludF9wc3BhY2U7CisKKyAgICAgIC8qIFNldCBzYWwn cyBsaW5lLCBzeW10YWIsIHBjLCBhbmQgcHNwYWNlIHRvIHRoZSB2YWx1ZXMg Y29ycmVzcG9uZGluZyB0bworCSB0aGUgbGFzdCBjYWxsIHRvIHByaW50X2Zy YW1lX2luZm8uICBJZiB0aGUgY29kZXBvaW50IGlzIG5vdCB2YWxpZCwKKwkg dGhpcyB3aWxsIHNldCBhbGwgdGhlIGZpZWxkcyB0byAwLiAqLworICAgICAg c2V0X3NhbF90b19sYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQgKCZzYWwpOwog ICAgICAgaWYgKHNhbC5zeW10YWIgPT0gMCkKIAllcnJvciAoXygiTm8gc291 cmNlIGZpbGUgc3BlY2lmaWVkLiIpKTsKIApAQCAtMTAxODAsNyArMTAxNjMs OCBAQCBpbnZhbGlkYXRlX2JwX3ZhbHVlX29uX21lbW9yeV9jaGFuZ2UgKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuLAogICAgICAgfQogfQogCi0vKiBVc2Ug ZGVmYXVsdF9icmVha3BvaW50XydzLCBvciBub3RoaW5nIGlmIHRoZXkgYXJl bid0IHZhbGlkLiAgKi8KKy8qIFVzZSB0aGUgbGFzdCBkaXNwbGF5ZWQgY29k ZXBvaW50J3MgdmFsdWVzLCBvciBub3RoaW5nIAorICAgaWYgdGhleSBhcmVu J3QgdmFsaWQuICovCiAKIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcwogZGVj b2RlX2xpbmVfc3BlY18xIChjaGFyICpzdHJpbmcsIGludCBmdW5maXJzdGxp bmUpCkBAIC0xMDE4OCwxMSArMTAxNzIsMTMgQEAgZGVjb2RlX2xpbmVfc3Bl Y18xIChjaGFyICpzdHJpbmcsIGludCBmdW5maXJzdGxpbmUpCiAgIHN0cnVj dCBzeW10YWJzX2FuZF9saW5lcyBzYWxzOwogICBpZiAoc3RyaW5nID09IDAp CiAgICAgZXJyb3IgKF8oIkVtcHR5IGxpbmUgc3BlY2lmaWNhdGlvbi4iKSk7 Ci0gIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQpCi0gICAgc2FscyA9 IGRlY29kZV9saW5lXzEgKCZzdHJpbmcsIGZ1bmZpcnN0bGluZSwKLQkJCSAg ZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYiwKLQkJCSAgZGVmYXVsdF9icmVh a3BvaW50X2xpbmUsCi0JCQkgIChjaGFyICoqKikgTlVMTCwgTlVMTCk7Cisg IGlmIChsYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnRfaXNfdmFsaWQgKCkpCisg ICAgeworICAgICAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZzdHJpbmcsIGZ1 bmZpcnN0bGluZSwKKwkJCSAgICBnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFi ICgpLAorCQkJICAgIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lICgpLAorCQkJ ICAgIChjaGFyICoqKikgTlVMTCwgTlVMTCk7CisgICAgfQogICBlbHNlCiAg ICAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZzdHJpbmcsIGZ1bmZpcnN0bGlu ZSwKIAkJCSAgKHN0cnVjdCBzeW10YWIgKikgTlVMTCwgMCwgKGNoYXIgKioq KSBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50Lmgg Yi9nZGIvYnJlYWtwb2ludC5oCmluZGV4IDhiN2E1YzYuLjUwNjAyYjIgMTAw NjQ0Ci0tLSBhL2dkYi9icmVha3BvaW50LmgKKysrIGIvZ2RiL2JyZWFrcG9p bnQuaApAQCAtNzg5LDkgKzc4OSw2IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtw b2ludCAqY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVh a3BvaW50ICpicGt0KTsKIAogZXh0ZXJuIHZvaWQgc2V0X2lnbm9yZV9jb3Vu dCAoaW50LCBpbnQsIGludCk7CiAKLWV4dGVybiB2b2lkIHNldF9kZWZhdWx0 X2JyZWFrcG9pbnQgKGludCwgc3RydWN0IHByb2dyYW1fc3BhY2UgKiwKLQkJ CQkgICAgQ09SRV9BRERSLCBzdHJ1Y3Qgc3ltdGFiICosIGludCk7Ci0KIGV4 dGVybiB2b2lkIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51bSBpbmZf Y29udGV4dCk7CiAKIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVh bnVwX2RlbGV0ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsK ZGlmZiAtLWdpdCBhL2dkYi9jbGkvY2xpLWNtZHMuYyBiL2dkYi9jbGkvY2xp LWNtZHMuYwppbmRleCBmZGViOGRiLi5jNDAxZWVkIDEwMDY0NAotLS0gYS9n ZGIvY2xpL2NsaS1jbWRzLmMKKysrIGIvZ2RiL2NsaS9jbGktY21kcy5jCkBA IC0xODUsNiArMTg1LDggQEAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNl dGNoZWNrbGlzdDsKIAogc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNob3dj aGVja2xpc3Q7CiAKK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpibGFja2xp c3RsaXN0OworCiAvKiBDb21tYW5kIHRyYWNpbmcgc3RhdGUuICAqLwogCiBp bnQgc291cmNlX3ZlcmJvc2UgPSAwOwpAQCAtMTMwOCw2ICsxMzEwLDcgQEAg aW5pdF9jbWRfbGlzdHMgKHZvaWQpCiAgIHNob3dwcmludGxpc3QgPSBOVUxM OwogICBzZXRjaGVja2xpc3QgPSBOVUxMOwogICBzaG93Y2hlY2tsaXN0ID0g TlVMTDsKKyAgYmxhY2tsaXN0bGlzdCA9IE5VTEw7CiB9CiAKIHN0YXRpYyB2 b2lkCkBAIC0xMzcyLDcgKzEzNzUsNyBAQCBpbml0X2NsaV9jbWRzICh2b2lk KQogICBjaGFyICpzb3VyY2VfaGVscF90ZXh0OwogCiAgIC8qIERlZmluZSB0 aGUgY2xhc3NlcyBvZiBjb21tYW5kcy4KLSAgICAgVGhleSB3aWxsIGFwcGVh ciBpbiB0aGUgaGVscCBsaXN0IGluIHRoZSByZXZlcnNlIG9mIHRoaXMgb3Jk ZXIuICAqLworICAgICBUaGV5IHdpbGwgYXBwZWFyIGluIHRoZSBoZWxwIGxp c3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLiAgKi8KIAogICBhZGRfY21kICgi aW50ZXJuYWxzIiwgY2xhc3NfbWFpbnRlbmFuY2UsIE5VTEwsIF8oIlwKIE1h aW50ZW5hbmNlIGNvbW1hbmRzLlxuXApkaWZmIC0tZ2l0IGEvZ2RiL2dkYmNt ZC5oIGIvZ2RiL2dkYmNtZC5oCmluZGV4IDZhMjMwYzAuLmQ1NjFlNzMgMTAw NjQ0Ci0tLSBhL2dkYi9nZGJjbWQuaAorKysgYi9nZGIvZ2RiY21kLmgKQEAg LTEyNCw2ICsxMjQsOCBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKnNldGNoZWNrbGlzdDsKIAogZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpzaG93Y2hlY2tsaXN0OwogCitleHRlcm4gc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKmJsYWNrbGlzdGxpc3Q7CisKIGV4dGVybiB2b2lkIGV4 ZWN1dGVfY29tbWFuZCAoY2hhciAqLCBpbnQpOwogCiBlbnVtIGNvbW1hbmRf Y29udHJvbF90eXBlIGV4ZWN1dGVfY29udHJvbF9jb21tYW5kIChzdHJ1Y3Qg Y29tbWFuZF9saW5lICopOwpkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIv Z2RiL2luZnJ1bi5jCmluZGV4IDVmNTg3NTkuLjc0MDJmZWUgMTAwNjQ0Ci0t LSBhL2dkYi9pbmZydW4uYworKysgYi9nZGIvaW5mcnVuLmMKQEAgLTUyLDYg KzUyLDcgQEAKICNpbmNsdWRlICJpbmxpbmUtZnJhbWUuaCIKICNpbmNsdWRl ICJqaXQuaCIKICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCisjaW5jbHVkZSAi YmxhY2tsaXN0LmgiCiAKIC8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0 aW9ucyAqLwogCkBAIC00NDkwLDcgKzQ0OTEsOCBAQCBpbmZydW46IG5vdCBz d2l0Y2hpbmcgYmFjayB0byBzdGVwcGVkIHRocmVhZCwgaXQgaGFzIHZhbmlz aGVkXG4iKTsKIAl9CiAKICAgICAgIC8qIElmIHdlIGhhdmUgbGluZSBudW1i ZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBmdW5jdGlvbiB3ZSBhcmUKLSAgICAg ICAgIHRoaW5raW5nIG9mIHN0ZXBwaW5nIGludG8sIHN0ZXAgaW50byBpdC4K KyAgICAgICAgIHRoaW5raW5nIG9mIHN0ZXBwaW5nIGludG8gYW5kIHRoZSBm dW5jdGlvbiBpc24ndCBibGFja2xpc3RlZCwKKwkgc3RlcCBpbnRvIGl0Lgog CiAgICAgICAgICBJZiB0aGVyZSBhcmUgc2V2ZXJhbCBzeW10YWJzIGF0IHRo YXQgUEMgKGUuZy4gd2l0aCBpbmNsdWRlCiAgICAgICAgICBmaWxlcyksIGp1 c3Qgd2FudCB0byBrbm93IHdoZXRoZXIgKmFueSogb2YgdGhlbSBoYXZlIGxp bmUKQEAgLTQ1MDAsNyArNDUwMiw4IEBAIGluZnJ1bjogbm90IHN3aXRjaGlu ZyBiYWNrIHRvIHN0ZXBwZWQgdGhyZWFkLCBpdCBoYXMgdmFuaXNoZWRcbiIp OwogCiAJdG1wX3NhbCA9IGZpbmRfcGNfbGluZSAoZWNzLT5zdG9wX2Z1bmNf c3RhcnQsIDApOwogCXRtcF9zYWwucHNwYWNlID0gZ2V0X2ZyYW1lX3Byb2dy YW1fc3BhY2UgKGZyYW1lKTsKLQlpZiAodG1wX3NhbC5saW5lICE9IDApCisJ aWYgKHRtcF9zYWwubGluZSAhPSAwICYmCisJICAgICFmdW5jdGlvbl9wY19p c19ibGFja2xpc3RlZCAoZWNzLT5zdG9wX2Z1bmNfc3RhcnQpKQogCSAgewog CSAgICBpZiAoZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX1JFVkVSU0Up CiAJICAgICAgaGFuZGxlX3N0ZXBfaW50b19mdW5jdGlvbl9iYWNrd2FyZCAo Z2RiYXJjaCwgZWNzKTsKZGlmZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIvZ2Ri L3N0YWNrLmMKaW5kZXggNTNkNGFlYi4uMTRmZWJkOSAxMDA2NDQKLS0tIGEv Z2RiL3N0YWNrLmMKKysrIGIvZ2RiL3N0YWNrLmMKQEAgLTczLDYgKzczLDEy IEBAIHN0YXRpYyB2b2lkIHByaW50X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUsIGludCBwcmludF9sZXZlbCwKIAkJCSBlbnVtIHByaW50X3do YXQgcHJpbnRfd2hhdCwgIGludCBwcmludF9hcmdzLAogCQkJIHN0cnVjdCBz eW10YWJfYW5kX2xpbmUgc2FsKTsKIAorc3RhdGljIHZvaWQgc2V0X2xhc3Rf ZGlzcGxheWVkX2NvZGVwb2ludCAoaW50IHZhbGlkLAorCQkJCQkgIHN0cnVj dCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsCisJCQkgICAgICAgICAgICAgICAg ICBDT1JFX0FERFIgYWRkciwKKwkJCQkJICBzdHJ1Y3Qgc3ltdGFiICpzeW10 YWIsCisJCQkgICAgICAgICAgICAgICAgICBpbnQgbGluZSk7CisKIC8qIFpl cm8gbWVhbnMgZG8gdGhpbmdzIG5vcm1hbGx5OyB3ZSBhcmUgaW50ZXJhY3Rp bmcgZGlyZWN0bHkgd2l0aCB0aGUKICAgIHVzZXIuICBPbmUgbWVhbnMgcHJp bnQgdGhlIGZ1bGwgZmlsZW5hbWUgYW5kIGxpbmVudW1iZXIgd2hlbiBhCiAg ICBmcmFtZSBpcyBwcmludGVkLCBhbmQgZG8gc28gaW4gYSBmb3JtYXQgZW1h Y3MxOC9lbWFjczE5LjIyIGNhbgpAQCAtODAsNiArODYsMTQgQEAgc3RhdGlj IHZvaWQgcHJpbnRfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwg aW50IHByaW50X2xldmVsLAogICAgY2FzZXMgYW5kIGluIGEgc2xpZ2h0bHkg ZGlmZmVyZW50IHN5bnRheC4gICovCiAKIGludCBhbm5vdGF0aW9uX2xldmVs ID0gMDsKKworLyogVGhlc2UgdmFyaWFibGVzIGhvbGQgdGhlIGxhc3QgY29k ZXBvaW50IHdlIGRpc3BsYXllZCB0byB0aGUgdXNlci4gIFRoaXMgaXMKKyAg IHdoZXJlIHdlIGluc2VydCBhIGJyZWFrcG9pbnQgb3IgYSBibGFja2xpc3Qg ZW50cnkgYnkgZGVmYXVsdC4gKi8KK3N0YXRpYyBpbnQgbGFzdF9jb2RlcG9p bnRfdmFsaWQgPSAwOworc3RhdGljIHN0cnVjdCBwcm9ncmFtX3NwYWNlICps YXN0X2NvZGVwb2ludF9wc3BhY2UgPSAwOworc3RhdGljIENPUkVfQUREUiBs YXN0X2NvZGVwb2ludF9hZGRyID0gMDsKK3N0YXRpYyBzdHJ1Y3Qgc3ltdGFi ICpsYXN0X2NvZGVwb2ludF9zeW10YWIgPSAwOworc3RhdGljIGludCBsYXN0 X2NvZGVwb2ludF9saW5lID0gMDsKIAwKIAogc3RydWN0IHByaW50X3N0YWNr X2ZyYW1lX2FyZ3MKQEAgLTY1MCwxNCArNjY0LDk2IEBAIHByaW50X2ZyYW1l X2luZm8gKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHByaW50X2xl dmVsLAogICAgIH0KIAogICBpZiAocHJpbnRfd2hhdCAhPSBMT0NBVElPTikK LSAgICBzZXRfZGVmYXVsdF9icmVha3BvaW50ICgxLCBzYWwucHNwYWNlLAot CQkJICAgIGdldF9mcmFtZV9wYyAoZnJhbWUpLCBzYWwuc3ltdGFiLCBzYWwu bGluZSk7CisgICAgc2V0X2xhc3RfZGlzcGxheWVkX2NvZGVwb2ludCAoMSwg c2FsLnBzcGFjZSwKKwkJCSAgICAgICAgICBnZXRfZnJhbWVfcGMgKGZyYW1l KSwgc2FsLnN5bXRhYiwKKwkJCQkgIHNhbC5saW5lKTsKIAogICBhbm5vdGF0 ZV9mcmFtZV9lbmQgKCk7CiAKICAgZ2RiX2ZsdXNoIChnZGJfc3Rkb3V0KTsK IH0KIAorLyogUmVtZW1iZXIgdGhlIGxhc3QgY29kZXBvaW50IHdlIGRpc3Bs YXllZCwgd2hpY2ggd2UgdXNlIGUuZy4gYXMgdGhlIHBsYWNlIHRvCisgICBw dXQgYSBicmVha3BvaW50IHdoZW4gdGhlIGBicmVhaycgY29tbWFuZCBpcyBp bnZva2VkIHdpdGggbm8gYXJndW1lbnRzLiAqLworc3RhdGljIHZvaWQKK3Nl dF9sYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQgKGludCB2YWxpZCwgc3RydWN0 IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwKKwkJCSAgICAgIENPUkVfQUREUiBh ZGRyLCBzdHJ1Y3Qgc3ltdGFiICpzeW10YWIsCisJCQkgICAgICBpbnQgbGlu ZSkKK3sKKyAgbGFzdF9jb2RlcG9pbnRfdmFsaWQgPSB2YWxpZDsKKyAgbGFz dF9jb2RlcG9pbnRfcHNwYWNlID0gcHNwYWNlOworICBsYXN0X2NvZGVwb2lu dF9hZGRyID0gYWRkcjsKKyAgbGFzdF9jb2RlcG9pbnRfc3ltdGFiID0gc3lt dGFiOworICBsYXN0X2NvZGVwb2ludF9saW5lID0gbGluZTsKK30KKwordm9p ZAorY2xlYXJfbGFzdF9kaXNwbGF5ZWRfY29kZXBvaW50ICgpCit7CisgIGxh c3RfY29kZXBvaW50X3ZhbGlkID0gMDsKKyAgbGFzdF9jb2RlcG9pbnRfcHNw YWNlID0gMDsKKyAgbGFzdF9jb2RlcG9pbnRfYWRkciA9IDA7CisgIGxhc3Rf Y29kZXBvaW50X3N5bXRhYiA9IDA7CisgIGxhc3RfY29kZXBvaW50X2xpbmUg PSAwOworfQorCitpbnQKK2xhc3RfZGlzcGxheWVkX2NvZGVwb2ludF9pc192 YWxpZCAoKQoreworICByZXR1cm4gbGFzdF9jb2RlcG9pbnRfdmFsaWQ7Cit9 CisKK3N0cnVjdCBwcm9ncmFtX3NwYWNlKgorZ2V0X2xhc3RfZGlzcGxheWVk X3BzcGFjZSAoKQoreworICBpZiAobGFzdF9jb2RlcG9pbnRfdmFsaWQpCisg ICAgcmV0dXJuIGxhc3RfY29kZXBvaW50X3BzcGFjZTsKKyAgcmV0dXJuIDA7 Cit9CisKK0NPUkVfQUREUgorZ2V0X2xhc3RfZGlzcGxheWVkX2FkZHIgKCkK K3sKKyAgaWYgKGxhc3RfY29kZXBvaW50X3ZhbGlkKQorICAgIHJldHVybiBs YXN0X2NvZGVwb2ludF9hZGRyOworICByZXR1cm4gMDsKK30KKworc3RydWN0 IHN5bXRhYioKK2dldF9sYXN0X2Rpc3BsYXllZF9zeW10YWIgKCkKK3sKKyAg aWYgKGxhc3RfY29kZXBvaW50X3ZhbGlkKQorICAgIHJldHVybiBsYXN0X2Nv ZGVwb2ludF9zeW10YWI7CisgIHJldHVybiAwOworfQorCitpbnQKK2dldF9s YXN0X2Rpc3BsYXllZF9saW5lICgpCit7CisgIGlmIChsYXN0X2NvZGVwb2lu dF92YWxpZCkKKyAgICByZXR1cm4gbGFzdF9jb2RlcG9pbnRfbGluZTsKKyAg cmV0dXJuIDA7Cit9CisKK3ZvaWQKK3NldF9zYWxfdG9fbGFzdF9kaXNwbGF5 ZWRfY29kZXBvaW50IChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpCit7 CisgIGlmIChsYXN0X2NvZGVwb2ludF92YWxpZCkKKyAgICB7CisgICAgICBz YWwtPnBzcGFjZSA9IGxhc3RfY29kZXBvaW50X3BzcGFjZTsKKyAgICAgIHNh bC0+cGMgPSBsYXN0X2NvZGVwb2ludF9hZGRyOworICAgICAgc2FsLT5zeW10 YWIgPSBsYXN0X2NvZGVwb2ludF9zeW10YWI7CisgICAgICBzYWwtPmxpbmUg PSBsYXN0X2NvZGVwb2ludF9saW5lOworICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIHNhbC0+cHNwYWNlID0gMDsKKyAgICAgIHNhbC0+cGMgPSAwOwor ICAgICAgc2FsLT5zeW10YWIgPSAwOworICAgICAgc2FsLT5saW5lID0gMDsK KyAgICB9Cit9CisKIC8qIEF0dGVtcHQgdG8gb2J0YWluIHRoZSBGVU5OQU1F IGFuZCBGVU5MQU5HIG9mIHRoZSBmdW5jdGlvbiBjb3JyZXNwb25kaW5nCiAg ICB0byBGUkFNRS4gICovCiB2b2lkCmRpZmYgLS1naXQgYS9nZGIvc3RhY2su aCBiL2dkYi9zdGFjay5oCmluZGV4IDVlODc0YjQuLmZhMDgwMzUgMTAwNjQ0 Ci0tLSBhL2dkYi9zdGFjay5oCisrKyBiL2dkYi9zdGFjay5oCkBAIC0zOSw0 ICszOSwxNCBAQCB2b2lkIGl0ZXJhdGVfb3Zlcl9ibG9ja19sb2NhbF92YXJz IChzdHJ1Y3QgYmxvY2sgKmJsb2NrLAogCQkJCSAgICBpdGVyYXRlX292ZXJf YmxvY2tfYXJnX2xvY2FsX3ZhcnNfY2IgY2IsCiAJCQkJICAgIHZvaWQgKmNi X2RhdGEpOwogCisvKiBHZXQgb3Igc2V0IHRoZSBsYXN0IGRpc3BsYXllZCBj b2RlcG9pbnQsIHdoaWNoIGlzLCBlLmcuIHdoZXJlIHdlIHNldCBhCisgICBi cmVha3BvaW50IHdoZW4gYGJyZWFrJyBpcyBzdXBwbGllZCB3aXRoIG5vIGFy Z3VtZW50cy4gKi8KK3ZvaWQgY2xlYXJfbGFzdF9kaXNwbGF5ZWRfY29kZXBv aW50ICgpOworaW50IGxhc3RfZGlzcGxheWVkX2NvZGVwb2ludF9pc192YWxp ZCAoKTsKK3N0cnVjdCBwcm9ncmFtX3NwYWNlKiBnZXRfbGFzdF9kaXNwbGF5 ZWRfcHNwYWNlICgpOworQ09SRV9BRERSIGdldF9sYXN0X2Rpc3BsYXllZF9h ZGRyICgpOworc3RydWN0IHN5bXRhYiogZ2V0X2xhc3RfZGlzcGxheWVkX3N5 bXRhYiAoKTsKK2ludCBnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAoKTsKK3Zv aWQgc2V0X3NhbF90b19sYXN0X2Rpc3BsYXllZF9jb2RlcG9pbnQgKHN0cnVj dCBzeW10YWJfYW5kX2xpbmUgKnNhbCk7CisKICNlbmRpZiAvKiAjaWZuZGVm IFNUQUNLX0ggKi8KZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmMgYi9nZGIv c3ltZmlsZS5jCmluZGV4IGVkYTI2Y2MuLmI1NmJhZGYgMTAwNjQ0Ci0tLSBh L2dkYi9zeW1maWxlLmMKKysrIGIvZ2RiL3N5bWZpbGUuYwpAQCAtNTYsNiAr NTYsNyBAQAogI2luY2x1ZGUgImVsZi1iZmQuaCIKICNpbmNsdWRlICJzb2xp Yi5oIgogI2luY2x1ZGUgInJlbW90ZS5oIgorI2luY2x1ZGUgInN0YWNrLmgi CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxmY250bC5o PgpAQCAtMjcwOSw3ICsyNzEwLDcgQEAgY2xlYXJfc3ltdGFiX3VzZXJzICh2 b2lkKQogCiAgIGNsZWFyX2Rpc3BsYXlzICgpOwogICBicmVha3BvaW50X3Jl X3NldCAoKTsKLSAgc2V0X2RlZmF1bHRfYnJlYWtwb2ludCAoMCwgTlVMTCwg MCwgMCwgMCk7CisgIGNsZWFyX2xhc3RfZGlzcGxheWVkX2NvZGVwb2ludCAo KTsKICAgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKCk7CiAgIG9ic2VydmVy X25vdGlmeV9uZXdfb2JqZmlsZSAoTlVMTCk7CiAKZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvQ2hhbmdlTG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2cKaW5kZXggMDI0MDU0ZC4uZDYyZmYwNyAxMDA2NDQKLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9DaGFuZ2VMb2cKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNi0xOCAgSnVzdGluIExlYmFy IDxqdXN0aW4ubGViYXJAZ21haWwuY29tPgorCisJdGVzdHN1aXRlL2dkYi5i YXNlL2JsYWNrbGlzdC1zb2xpYi1saWIuYzogTmV3CisJdGVzdHN1aXRlL2dk Yi5iYXNlL2JsYWNrbGlzdC1zb2xpYi1tYWluLmM6IE5ldworCXRlc3RzdWl0 ZS9nZGIuYmFzZS9ibGFja2xpc3Qtc29saWIuZXhwOiBOZXcKKwl0ZXN0c3Vp dGUvZ2RiLmJhc2UvYmxhY2tsaXN0LmM6IE5ldworCXRlc3RzdWl0ZS9nZGIu YmFzZS9ibGFja2xpc3QuZXhwOiBOZXcKKwl0ZXN0c3VpdGUvZ2RiLmJhc2Uv YmxhY2tsaXN0MS5jOiBOZXcKKwl0ZXN0c3VpdGUvZ2RiLmJhc2UvTWFrZWZp bGUuaW46IEFkZGluZyBuZXcgZmlsZXMuCisKIDIwMTAtMDQtMjMgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KIAogCUZp eCBkZWFkbG9jayBvbiBsb29wZWQgbGlzdCBvZiBsb2FkZWQgc2hhcmVkIG9i amVjdHMuCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL01h a2VmaWxlLmluIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtlZmlsZS5p bgppbmRleCA1ZThlMzg1Li5iZDU0MTg0IDEwMDY0NAotLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL01ha2VmaWxlLmluCisrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvTWFrZWZpbGUuaW4KQEAgLTEsNyArMSw3IEBACiBWUEFU SCA9IEBzcmNkaXJACiBzcmNkaXIgPSBAc3JjZGlyQAogCi1FWEVDVVRBQkxF UyA9IGFsbC10eXBlcyBhbm5vdGExIGJpdGZpZWxkcyBicmVhayBcCitFWEVD VVRBQkxFUyA9IGFsbC10eXBlcyBhbm5vdGExIGJpdGZpZWxkcyBibGFja2xp c3QgYmxhY2tsaXN0LXNvbGliIGJyZWFrIFwKIAljYWxsLWFyLXN0IGNhbGwt cnQtc3QgY2FsbC1zdHJzIGNhbGxmdW5jcyBjYWxsZndtYWxsIFwKIAljaG5n LXN5bXMgY29tbWFuZHMgY29tcGlsZXIgY29uZGJyZWFrIGNvbnN0dmFycyBj b3JlbWFrZXIgXAogCWRieC10ZXN0IGRpc3BsYXkgZW5kaW5nLXJ1biBleGVj ZC1wcm9nIGV4cHJzIFwKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYmxhY2tsaXN0LXNvbGliLWxpYi5jIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9ibGFja2xpc3Qtc29saWItbGliLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNzkyY2QwMQotLS0gL2Rldi9udWxsCisr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYmxhY2tsaXN0LXNvbGliLWxp Yi5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qIFNpbXBsZSBzaGFyZWQgbGlicmFy eSAqLworCitpbnQgc3F1YXJlKGludCBudW0pCit7CisgIHJldHVybiBtdWx0 aXBseShudW0sIG51bSk7Cit9CisKK2ludCBtdWx0aXBseShpbnQgYSwgaW50 IGIpCit7CisgIHJldHVybiBhICogYjsKK30KZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYmxhY2tsaXN0LXNvbGliLW1haW4uYyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYmxhY2tsaXN0LXNvbGliLW1haW4uYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDZiYjVmCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9ibGFj a2xpc3Qtc29saWItbWFpbi5jCkBAIC0wLDAgKzEsNiBAQAoraW50IHNxdWFy ZShpbnQgbnVtKTsKKworaW50IG1haW4oKQoreworICByZXR1cm4gc3F1YXJl KDApOworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9i bGFja2xpc3Qtc29saWIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9i bGFja2xpc3Qtc29saWIuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmQ2YjhiYjUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2JsYWNrbGlzdC1zb2xpYi5leHAKQEAgLTAsMCAr MSwxMjkgQEAKKyMgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor IworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBUaGlzIGZp bGUgd2FzIHdyaXR0ZW4gYnkgSnVzdGluIExlYmFyLiAoanVzdGluLmxlYmFy QGdtYWlsLmNvbSkKKworIworIyBUZXN0cyBibGFja2xpc3Rpbmcgc2hhcmVk IGxpYnJhcmllcy4KKyMKKworIyBUaGlzIG9ubHkgd29ya3Mgb24gR05VL0xp bnV4LgoraWYgeyAhW2lzbmF0aXZlXSB8fCBbaXNfcmVtb3RlIGhvc3RdIHx8 ICFbaXN0YXJnZXQgKi1saW51eCpdIHx8IFtza2lwX3NobGliX3Rlc3RzXX0g eworICAgIGNvbnRpbnVlCit9CisKK3NldCB0ZXN0ICJibGFja2xpc3Qtc29s aWIiCitzZXQgc3JjZmlsZV9tYWluICIke3Rlc3R9LW1haW4uYyIKK3NldCBi aW5maWxlX21haW4gIiR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fS10ZXN0 Igorc2V0IHNyY2ZpbGVfbGliICIke3Rlc3R9LWxpYi5jIgorc2V0IGxpYm5h bWUgImxpYiR7dGVzdH0iCitzZXQgYmluZmlsZV9saWIgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke2xpYm5hbWV9LnNvCisKKyMKKyMgQ29tcGlsZSBvdXIgcHJv Z3JhbSB1bmRlciB0ZXN0LiAgVGhlIG1haW4gcHJvZ3JhbSByZWZlcmVuY2Vz IGEgc2hhcmVkIGxpYnJhcnkKKyMgbGliYmxhY2tsaXN0LXNvbGliLnNvLCB3 aGljaCBjb250YWlucyB0d28gZnVuY3Rpb25zLCBzcXVhcmUoKSwgd2hpY2gg aXMKKyMgcmVmZXJlbmNlZCBieSB0aGUgbWFpbiBwcm9ncmFtLCBhbmQgbXVs dGlwbHkoKSwgd2hpY2ggaXMgbm90IHJlZmVyZW5jZWQgYnkKKyMgdGhlIG1h aW4gcHJvZ3JhbS4KKyMKKworaWYge1tnZGJfY29tcGlsZV9zaGxpYiAke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9saWJ9ICR7YmluZmlsZV9saWJ9 IFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LWZQSUMgLVdsLC1zb25h bWUsJHtsaWJuYW1lfS5zb11dICE9ICIifSB7CisgICAgcmV0dXJuIC0xCit9 CisKK2lmIHtbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlX21haW59IiAiJHtiaW5maWxlX21haW59Lm8iIG9iamVjdCBkZWJ1 Z10gIT0gIiJ9IHsKKyAgICByZXR1cm4gLTEKK30KKworaWYge1tnZGJfY29t cGlsZSAiJHtiaW5maWxlX21haW59Lm8iICIke2JpbmZpbGVfbWFpbn0iIGV4 ZWN1dGFibGUgXAorICAgICAgICAgICAgICAgICBbbGlzdCBkZWJ1ZyAiYWRk aXRpb25hbF9mbGFncz0tTCR7b2JqZGlyfS8ke3N1YmRpcn0gLWwke3Rlc3R9 IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLVdsLC1ycGF0aD0ke29iamRpcn0vJHtzdWJkaXJ9Il1dICE9ICIi fSB7CisgICAgcmV0dXJuIC0xCit9CisKK2dkYl9zdGFydAorZ2RiX2xvYWQg JHtiaW5maWxlX21haW59CisKKyMKKyMgQXQgdGhpcyBwb2ludCwgaWYgd2Ug dHJ5IHRvIGJsYWNrbGlzdCB0aGUgZmlsZSAke3NyY2ZpbGVfbGlifSBvciB0 aGUgZnVuY3Rpb24KKyMgbXVsdGlwbHkoKSwgd2Ugc2hvdWxkIGdldCBhIHBy b21wdCBhc2tpbmcgdXMgaWYgd2Ugd2FudCB0byBlbmFibGUgdGhlCisjIGJs YWNrbGlzdCBlbnRyeSBwZW5kaW5nIGEgc2hhcmVkIGxpYnJhcnkgbG9hZC4K KyMKKworZ2RiX3Rlc3QgImJsYWNrbGlzdCBmaWxlICR7c3JjZmlsZV9saWJ9 IiBcCisiQmxhY2tsaXN0aW5nIGZpbGUgJHtzcmNmaWxlX2xpYn0uIiBcCisi YmxhY2tsaXN0aW5nIGZpbGUgaW4gc29saWIiIFwKKyJObyBzb3VyY2UgZmls ZSBuYW1lZCAke3NyY2ZpbGVfbGlifS4qCitBZGQgZmlsZSB0byBibGFja2xp c3QgcGVuZGluZyBmdXR1cmUgc2hhcmVkIGxpYnJhcnkgbG9hZC4qIlwKKyJ5 IgorCisjCisjIERvZXMgaW5mbyBibGFja2xpc3QgbGlzdCB0aGlzIGVudHJ5 IGFzIHBlbmRpbmc/CisjCitnZGJfdGVzdCAiaW5mbyBibGFja2xpc3QiIFwK KyJOdW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgor MVxccytmaWxlXFxzK3lcXHMrbi9hXFxzKyR7c3JjZmlsZV9saWJ9IFxcKFBF TkRJTkdcXClcXHMqIiBcCisiaW5mbyBibGFja2xpc3Qgd2l0aCBwZW5kaW5n IGZpbGUiCisKK2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJibGFja2xpc3Qg dGVzdHMgc3VwcHJlc3NlZCIgfQorCisjCisjIFdlIHNob3VsZG4ndCBzdGVw IGludG8gc3F1YXJlKCksIHNpbmNlIHdlIGJsYWNrbGlzdGVkIGJsYWNrbGlz dC1zb2xpYi1saWIuYy4KKyMKK2dkYl90ZXN0ICJzdGVwIiAiIgorZ2RiX3Rl c3QgImJ0IiAiIzBcXHMrbWFpbi4qIiAic3RlcCBhZnRlciBibGFja2xpc3Rp bmcgc29saWIgZmlsZS4iCisKKyMKKyMgT3VyIGVudHJ5IHNob3VsZCBubyBs b25nZXIgYmUgcGVuZGluZy4gIE5vdGUgdGhhdCB3ZSB1bmZvcnR1bmF0ZWx5 IG5lZWQgdG8gZG8KKyMgYXQgbGVhc3Qgb25lIHN0ZXAgYmVmb3JlIHRoZSBl bnRyeSB3aWxsIGJlIHVubWFya2VkIGFzIHBlbmRpbmcuCisjCitnZGJfdGVz dCAiaW5mbyBibGFja2xpc3QiIFwKKyJOdW1cXHMrVHlwZVxccytFbmJcXHMr QWRkcmVzc1xccytXaGF0XFxzKgorMVxccytmaWxlXFxzK3lcXHMrbi9hXFxz Ky4qJHtzcmNmaWxlX2xpYn1cXHMqIiBcCisiaW5mbyBibGFja2xpc3Qgd2l0 aCBwZW5kaW5nIGZpbGUiCisKKyMKKyMgTm93IHJlc3RhcnQgZ2RiIGFuZCB0 ZXN0aW5nIGJsYWNrbGlzdGluZyBvZiBhIGZ1bmN0aW9uIGluc2lkZSBhIHNv bGliLgorIworZ2RiX2V4aXQKK2dkYl9zdGFydAorZ2RiX2xvYWQgJHtiaW5m aWxlX21haW59CisKK2dkYl90ZXN0ICJibGFja2xpc3QgZnVuY3Rpb24gbXVs dGlwbHkiIFwKKyJCbGFja2xpc3RpbmcgZnVuY3Rpb24gbXVsdGlwbHkgcGVu ZGluZyBzaGFyZWQgbGlicmFyeSBsb2FkLiIgXAorImJsYWNrbGlzdGluZyBm dW5jdGlvbiBpbiBzb2xpYiIgXAorIk5vIGZ1bmN0aW9uIGZvdW5kIG5hbWVk IG11bHRpcGx5Li4qCitBZGQgZnVuY3Rpb24gdG8gYmxhY2tsaXN0IHBlbmRp bmcgZnV0dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQuKiJcCisieSIKKworaWYg IVtydW50b19tYWluXSB7IGZhaWwgImJsYWNrbGlzdCB0ZXN0cyBzdXBwcmVz c2VkIiB9CisKKyMKKyMgT3VyIGZpcnN0IHN0ZXAgc2hvdWxkIHRha2UgdXMg aW50byBzcXVhcmUuCisjCitnZGJfdGVzdCAic3RlcCIgInNxdWFyZS4qIgor CisjCisjIE5vdyBvdXIgZW50cnkgc2hvdWxkIG5vIGxvbmdlciBiZSBwZW5k aW5nLgorIworZ2RiX3Rlc3QgImluZm8gYmxhY2tsaXN0IiBcCisiTnVtXFxz K1R5cGVcXHMrRW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzFcXHMrZnVu Y3Rpb25cXHMreVxccysweFxbMC05YS1mXF0rXFxzK211bHRpcGx5IGF0IC4q JHtzcmNmaWxlX2xpYn06LipcXHMqIiBcCisKKyMKKyMgVGhpcyBzdGVwIHNo b3VsZG4ndCBnbyBpbnRvIG11bHRpcGx5IC0tIHdlIHNob3VsZCBza2lwIGl0 IGFuZCBnbyBvbiB0byB0aGUKKyMgbGFzdCBsaW5lIG9mIHNxdWFyZS4KKyMK K2dkYl90ZXN0ICJzdGVwIiAiIgorZ2RiX3Rlc3QgImJ0IiAiIzBcXHMrc3F1 YXJlLioiCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Js YWNrbGlzdC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9ibGFja2xpc3Qu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjViYTkz Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9i bGFja2xpc3QuYwpAQCAtMCwwICsxLDEzIEBACitpbnQgZm9vKCk7CitpbnQg YmFyKCk7CitpbnQgYmF6KGludCwgaW50KTsKKworaW50IG1haW4oKQorewor ICByZXR1cm4gYmF6KGZvbygpLCBiYXIoKSk7Cit9CisKK2ludCBmb28oKQor eworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYmxhY2tsaXN0LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYmxhY2tsaXN0LmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lZDFhZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9ibGFja2xpc3QuZXhwCkBAIC0wLDAgKzEsMTQwIEBA CisjICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxlIHdhcyB3 cml0dGVuIGJ5IEp1c3RpbiBMZWJhci4gKGp1c3Rpbi5sZWJhckBnbWFpbC5j b20pCisKK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgYmxhY2tsaXN0LmV4 cCAiYmxhY2tsaXN0IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHti bGFja2xpc3QuYyBibGFja2xpc3QxLmMgfSBcCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHtkZWJ1ZyBub3dhcm5pbmdzfV0gfSB7CisgICAgcmV0dXJu IC0xCit9CisKK3NldCBzcmNmaWxlIGJsYWNrbGlzdC5jCitzZXQgc3JjZmls ZTEgYmxhY2tsaXN0MS5jCisKKyMKKyMgUmlnaHQgYWZ0ZXIgd2Ugc3RhcnQg Z2RiLCB0aGVyZSdzIG5vIGRlZmF1bHQgZmlsZSBvciBmdW5jdGlvbiB0byBi bGFja2xpc3QuCisjCitnZGJfdGVzdCAiYmxhY2tsaXN0IGZpbGUiICJObyBk ZWZhdWx0IGJsYWNrbGlzdCBmaWxlIG5vdy4iCitnZGJfdGVzdCAiYmxhY2ts aXN0IGZ1bmN0aW9uIiAiTm8gZGVmYXVsdCBibGFja2xpc3QgZnVuY3Rpb24g bm93LiIKK2dkYl90ZXN0ICJibGFja2xpc3QiICJObyBkZWZhdWx0IGJsYWNr bGlzdCBmdW5jdGlvbiBub3cuIgorCitpZiAhW3J1bnRvX21haW5dIHsgZmFp bCAiYmxhY2tsaXN0IHRlc3RzIHN1cHByZXNzZWQiIH0KKworIworIyBUZXN0 IHxpbmZvIGJsYWNrbGlzdHwgd2l0aCBhbiBlbXB0eSBibGFja2xpc3QuCisj CitnZGJfdGVzdCAiaW5mbyBibGFja2xpc3QiICJCbGFja2xpc3QgaXMgZW1w dHkuIiAiaW5mbyBibGFja2xpc3QgZW1wdHkiCisKKyMKKyMgQ3JlYXRlIGEg YmxhY2tsaXN0IGVudHJ5IGZvciB0aGUgY3VycmVudCBmaWxlIGFuZCBmdW5j dGlvbi4KKyMKK2dkYl90ZXN0ICJibGFja2xpc3QgZmlsZSIgIkJsYWNrbGlz dGluZyBmaWxlIC4qJHNyY2ZpbGUuIgorZ2RiX3Rlc3QgImJsYWNrbGlzdCIg IkJsYWNrbGlzdGluZyBmdW5jdGlvbiBtYWluKCkgYXQgLipcLiIKKworIwor IyBDcmVhdGUgYSBibGFja2xpc3QgZW50cnkgZm9yIGEgc3BlY2lmaWVkIGZp bGUgYW5kIGZ1bmN0aW9uLgorIworZ2RiX3Rlc3QgImJsYWNrbGlzdCBmaWxl IGJsYWNrbGlzdDEuYyIgIkJsYWNrbGlzdGluZyBmaWxlIC4qJHNyY2ZpbGUx LiIKK2dkYl90ZXN0ICJibGFja2xpc3QgZnVuY3Rpb24gYmF6IiAiQmxhY2ts aXN0aW5nIGZ1bmN0aW9uIGJheiBhdCAuKiIKKworIworIyBUZXN0IGJhZCBi bGFja2xpc3QgZW50cnkgbW9kaWZpY2F0aW9uIGNvbW1hbmRzCisjCitnZGJf dGVzdCAiYmxhY2tsaXN0IGVuYWJsZSA5OTkiICJObyBibGFja2xpc3QgZW50 cnkgbnVtYmVyZWQgOTk5LiIKK2dkYl90ZXN0ICJibGFja2xpc3QgZGlzYWJs ZSA5OTkiICJObyBibGFja2xpc3QgZW50cnkgbnVtYmVyZWQgOTk5LiIKK2dk Yl90ZXN0ICJibGFja2xpc3QgZGVsZXRlIDk5OSIgIk5vIGJsYWNrbGlzdCBl bnRyeSBudW1iZXJlZCA5OTkuIgorZ2RiX3Rlc3QgImJsYWNrbGlzdCBlbmFi bGUiICJBcmd1bWVudCByZXF1aXJlZCBcXChleHByZXNzaW9uIHRvIGNvbXB1 dGVcXCkuIgorZ2RiX3Rlc3QgImJsYWNrbGlzdCBkaXNhYmxlIiAiQXJndW1l bnQgcmVxdWlyZWQgXFwoZXhwcmVzc2lvbiB0byBjb21wdXRlXFwpLiIKK2dk Yl90ZXN0ICJibGFja2xpc3QgZGVsZXRlIiAiQXJndW1lbnQgcmVxdWlyZWQg XFwoZXhwcmVzc2lvbiB0byBjb21wdXRlXFwpLiIKK2dkYl90ZXN0ICJibGFj a2xpc3QgZW5hYmxlIGEiICJObyBzeW1ib2wgXCJhXCIgaW4gY3VycmVudCBj b250ZXh0LiIKK2dkYl90ZXN0ICJibGFja2xpc3QgZGlzYWJsZSBhIiAiTm8g c3ltYm9sIFwiYVwiIGluIGN1cnJlbnQgY29udGV4dC4iCitnZGJfdGVzdCAi YmxhY2tsaXN0IGRlbGV0ZSBhIiAiTm8gc3ltYm9sIFwiYVwiIGluIGN1cnJl bnQgY29udGV4dC4iCisKKyMKKyMgVGVzdCB0aGF0IGJsYWNrbGlzdCBmdW5j dGlvbiBkb2Vzbid0IGFsbG93IGV4dHJhIGNoYXJhY3RlcnMgYXQgdGhlIGVu ZCBvZiBpdHMKKyMgYXJndW1lbnRzIGxpc3QuCisjCitnZGJfdGVzdCAiYmxh Y2tsaXN0IGZ1bmN0aW9uIGZvbyBiYXIiICJKdW5rIGF0IGVuZCBvZiBhcmd1 bWVudHMuIgorCisjCisjIEFzayBmb3IgaW5mbyBvbiBhIGJsYWNrbGlzdCBl bnRyeSB3aGljaCBkb2Vzbid0IGV4aXN0LgorIworZ2RiX3Rlc3QgImluZm8g YmxhY2tsaXN0IDk5OSIgIk5vIGJsYWNrbGlzdCBlbnRyeSBudW1iZXJlZCA5 OTkuIgorCisjCisjIERvZXMgfGluZm8gYmxhY2tsaXN0fCBsb29rIHJpZ2h0 PworIworZ2RiX3Rlc3QgImluZm8gYmxhY2tsaXN0IiBcCisiTnVtXFxzK1R5 cGVcXHMrRW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzFcXHMrZmlsZVxc cyt5XFxzK24vYS4qJHNyY2ZpbGVcXHMqCisyXFxzK2Z1bmN0aW9uXFxzK3lc XHMrMHhcWzAtOWEtZlxdKyBtYWluIGF0IC4qJHNyY2ZpbGU6XFswLTlcXStc XHMqCiszXFxzK2ZpbGVcXHMreVxccytuL2EuKiRzcmNmaWxlMVxccyoKKzRc XHMrZnVuY3Rpb25cXHMreVxccysweFxbMC05YS1mXF0rIGJheiBhdCAuKiRz cmNmaWxlMTpcWzAtOVxdK1xccyoiCisKKyMKKyMgUmlnaHQgbm93LCB3ZSBo YXZlIGFuIG91dHN0YW5kaW5nIGJsYWNrbGlzdCBvbiBib3RoIHNvdXJjZSBm aWxlcywgc28gd2hlbiB3ZQorIyBzdGVwIGludG8gdGhlIGZpcnN0IGxpbmUg aW4gbWFpbigpLCB3ZSBzaG91bGQgc3RlcCByaWdodCBvdmVyIGl0IGFuZCBn byB0bworIyB0aGUgc2Vjb25kIGxpbmUgb2YgbWFpbigpLgorIworaWYgIVty dW50b19tYWluXSB7IGZhaWwgImJsYWNrbGlzdCB0ZXN0cyBzdXBwcmVzc2Vk IiB9CitzZW5kX2dkYiAic3RlcFxuIgorZ2RiX3Rlc3QgImJ0IiAiIzBcXHMr bWFpbi4qIiAic3RlcCBhZnRlciBhbGwgYmxhY2tsaXN0ZWQiCisKKyMKKyMg Tm93IHJlbW92ZSBibGFja2xpc3QuYyBmcm9tIHRoZSBibGFja2xpc3QuICBP dXIgZmlyc3Qgc3RlcCBzaG91bGQgdGFrZSB1cworIyBpbnRvIGZvbygpLCBh bmQgb3VyIHNlY29uZCBzdGVwIHNob3VsZCB0YWtlIHVzIHRvIHRoZSBuZXh0 IGxpbmUgaW4gbWFpbigpLgorIworc2VuZF9nZGIgImJsYWNrbGlzdCBkZWxl dGUgMVxuIgorIyBDaGVjayB0aGF0IGVudHJ5IDEgaXMgbWlzc2luZyBmcm9t IHxpbmZvIGJsYWNrbGlzdHwKK2dkYl90ZXN0ICJpbmZvIGJsYWNrbGlzdCIg XAorIk51bVxccytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1doYXRcXHMq CisyXFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdKyBtYWluIGF0 IC4qJHNyY2ZpbGU6XFswLTlcXStcXHMqCiszXFxzK2ZpbGVcXHMreVxccytu L2EuKiRzcmNmaWxlMVxccyoKKzRcXHMrZnVuY3Rpb25cXHMreVxccysweFxb MC05YS1mXF0rIGJheiBhdCAuKiRzcmNmaWxlMTpcWzAtOVxdK1xccyoiCisK K2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJibGFja2xpc3QgdGVzdHMgc3Vw cHJlc3NlZCIgfQorZ2RiX3Rlc3QgInN0ZXAiICJmb28gXFwoXFwpIGF0Lioi ICJzdGVwIGFmdGVyIGRlbGV0aW5nIDEgKDEpIgorc2VuZF9nZGIgInN0ZXBc biI7ICMgUmV0dXJuIGZyb20gZm9vKCkKK2dkYl90ZXN0ICJzdGVwIiAibWFp biBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIgZGVsZXRpbmcgMSAoMikiCisK KyMKKyMgTm93IGRpc2FibGUgb3VyIGJsYWNrbGlzdGluZyBvZiBibGFja2xp c3QxLmMuICBXZSBzaG91bGQgbm93IHN0ZXAgaW50byBmb28oKSwKKyMgdGhl biBpbnRvIGJhcigpLCBidXQgbm90IGludG8gYmF6KCkuCisjCitzZW5kX2dk YiAiYmxhY2tsaXN0IGRpc2FibGUgM1xuIgorIyBJcyBlbnRyeSAzIGRpc2Fi bGVkIGluIHxpbmZvIGJsYWNrbGlzdHw/CitnZGJfdGVzdCAiaW5mbyBibGFj a2xpc3QgMyIgIi4qXFxuM1xccytmaWxlXFxzK24uKiIgXAorICAgICAgICAg ImluZm8gYmxhY2tsaXN0IHNob3dzIGVudHJ5IGFzIGRpc2FibGVkIgorCitp ZiAhW3J1bnRvX21haW5dIHsgZmFpbCAiYmxhY2tsaXN0IHRlc3RzIHN1cHBy ZXNzZWQiIH0KK2dkYl90ZXN0ICJzdGVwIiAiYmFyIFxcKFxcKSBhdC4qIiAi c3RlcCBhZnRlciBkaXNhYmxpbmcgMyAoMSkiCitzZW5kX2dkYiAic3RlcFxu IjsgIyBSZXR1cm4gZnJvbSBmb28oKQorZ2RiX3Rlc3QgInN0ZXAiICJmb28g XFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRpc2FibGluZyAzICgyKSIKK3Nl bmRfZ2RiICJzdGVwXG4iOyAjIFJldHVybiBmcm9tIGJhcigpCitnZGJfdGVz dCAic3RlcCIgIm1haW4gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRpc2Fi bGluZyAzICgzKSIKKworIworIyBFbmFibGUgYmxhY2tsaXN0IGVudHJ5IDMg YW5kIG1ha2Ugc3VyZSB3ZSBzdGVwIG92ZXIgaXQgbGlrZSBiZWZvcmUuCisj CitzZW5kX2dkYiAiYmxhY2tsaXN0IGVuYWJsZSAzXG4iCisjIElzIGVudHJ5 IDMgZW5hYmxlZCBpbiB8aW5mbyBibGFja2xpc3R8PworZ2RiX3Rlc3QgImlu Zm8gYmxhY2tsaXN0IDMiICIuKlxcbjNcXHMrZmlsZVxccyt5LioiIFwKKyAg ICAgICAgICJpbmZvIGJsYWNrbGlzdCBzaG93cyBlbnRyeSBhcyBlbmFibGVk IgoraWYgIVtydW50b19tYWluXSB7IGZhaWwgImJsYWNrbGlzdCB0ZXN0cyBz dXBwcmVzc2VkIiB9CitnZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQu KiIgInN0ZXAgYWZ0ZXIgZGVsZXRpbmcgMSAoMSkiCitzZW5kX2dkYiAic3Rl cFxuIjsgIyBSZXR1cm4gZnJvbSBmb28oKQorZ2RiX3Rlc3QgInN0ZXAiICJt YWluIFxcKFxcKSBhdC4qIiAic3RlcCBhZnRlciBkZWxldGluZyAxICgyKSIK KwpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9ibGFja2xp c3QxLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JsYWNrbGlzdDEuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGFiNWMzCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9ibGFj a2xpc3QxLmMKQEAgLTAsMCArMSw5IEBACitpbnQgYmFyKCkKK3sKKyAgcmV0 dXJuIDE7Cit9CisKK2ludCBiYXooaW50IGEsIGludCBiKQoreworICByZXR1 cm4gYSArIGI7Cit9Cg== --00c09f8e5fc70ca22a048a1aabdd Content-Type: application/octet-stream; name=bug11614 Content-Disposition: attachment; filename=bug11614 Content-Transfer-Encoding: base64 X-Attachment-Id: f_gazll4z11 Content-length: 2449 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IDE0ODIxOWUuLjk2OWYzMWQgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExIEBACisyMDEw LTA2LTI1ICBKdXN0aW4gTGViYXIgPGp1c3Rpbi5sZWJhckBnbWFpbC5jb20+ CisKKwkqIGxpbmVzcGVjLmMgKGRlY29kZV92YXJpYWJsZSk6IFBhc3Npbmcg YSBub24tbnVsbCBub3RfZm91bmRfcHRyCisJcHJldmVudHMgYW4gZXJyb3Ig ZnJvbSBiZWluZyB0aHJvd24gaWYgdGhlIGZ1bmN0aW9uIGNhbm5vdCBiZSBm b3VuZC4KKwkqIGJyZWFrcG9pbnQuYyAoY3JlYXRlX2JyZWFrcG9pbnQpOiBQ YXNzIGEgbnVsbCBub3RfZm91bmRfcHRyIHRvCisJZGVjb2RlX3ZhcmlhYmxl IHNvIHdlIGdldCBhbiBleGNlcHRpb24gd2hlbiBhIGZ1bmN0aW9uIGNhbm5v dCBiZQorCWZvdW5kLCBhcyBkZXNpcmVkLgorCiAyMDEwLTA0LTI0ICBQZWRy byBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+CiAKIAkqIGRlZnMu aDogQWRqdXN0IGNvbW1lbnQuCmRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2lu dC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwppbmRleCAzZGNhMTdlLi43NDgzOGU4 IDEwMDY0NAotLS0gYS9nZGIvYnJlYWtwb2ludC5jCisrKyBiL2dkYi9icmVh a3BvaW50LmMKQEAgLTczMzYsNyArNzMzNiw2IEBAIGNyZWF0ZV9icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgc3RydWN0IGNhcHR1 cmVkX3BhcnNlX2JyZWFrcG9pbnRfYXJncyBwYXJzZV9hcmdzOwogICBpbnQg aTsKICAgaW50IHBlbmRpbmcgPSAwOwotICBpbnQgbm90X2ZvdW5kID0gMDsK ICAgZW51bSBicHR5cGUgdHlwZV93YW50ZWQ7CiAgIGludCB0YXNrID0gMDsK ICAgaW50IHByZXZfYmtwdF9jb3VudCA9IGJyZWFrcG9pbnRfY291bnQ7CkBA IC03MzQ4LDcgKzczNDcsNyBAQCBjcmVhdGVfYnJlYWtwb2ludCAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsCiAgIHBhcnNlX2FyZ3MuYXJnX3AgPSAmYXJn OwogICBwYXJzZV9hcmdzLnNhbHNfcCA9ICZzYWxzOwogICBwYXJzZV9hcmdz LmFkZHJfc3RyaW5nX3AgPSAmYWRkcl9zdHJpbmc7Ci0gIHBhcnNlX2FyZ3Mu bm90X2ZvdW5kX3B0ciA9ICZub3RfZm91bmQ7CisgIHBhcnNlX2FyZ3Mubm90 X2ZvdW5kX3B0ciA9IDA7CiAKICAgZSA9IGNhdGNoX2V4Y2VwdGlvbiAodWlv dXQsIGRvX2NhcHR1cmVkX3BhcnNlX2JyZWFrcG9pbnQsIAogCQkgICAgICAg JnBhcnNlX2FyZ3MsIFJFVFVSTl9NQVNLX0FMTCk7CmRpZmYgLS1naXQgYS9n ZGIvbGluZXNwZWMuYyBiL2dkYi9saW5lc3BlYy5jCmluZGV4IGM1ZWEyOGEu LjE5NzI3YjUgMTAwNjQ0Ci0tLSBhL2dkYi9saW5lc3BlYy5jCisrKyBiL2dk Yi9saW5lc3BlYy5jCkBAIC0xODU3LDcgKzE4NTcsMTMgQEAgZGVjb2RlX3Zh cmlhYmxlIChjaGFyICpjb3B5LCBpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoq KmNhbm9uaWNhbCwKICAgICByZXR1cm4gbWluc3ltX2ZvdW5kIChmdW5maXJz dGxpbmUsIG1zeW1ib2wpOwogCiAgIGlmIChub3RfZm91bmRfcHRyKQotICAg ICpub3RfZm91bmRfcHRyID0gMTsKKyAgICB7CisgICAgICBzdHJ1Y3Qgc3lt dGFic19hbmRfbGluZXMgc2FsczsKKyAgICAgICpub3RfZm91bmRfcHRyID0g MTsKKyAgICAgIHNhbHMuc2FscyA9IDA7CisgICAgICBzYWxzLm5lbHRzID0g MDsKKyAgICAgIHJldHVybiBzYWxzOworICAgIH0KIAogICBpZiAoIWhhdmVf ZnVsbF9zeW1ib2xzICgpCiAgICAgICAmJiAhaGF2ZV9wYXJ0aWFsX3N5bWJv bHMgKCkK --00c09f8e5fc70ca22a048a1aabdd--