From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8444 invoked by alias); 1 Nov 2011 14:53:59 -0000 Received: (qmail 8421 invoked by uid 22791); 1 Nov 2011 14:53:51 -0000 X-SWARE-Spam-Status: No, hits=3.0 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; Tue, 01 Nov 2011 14:53:22 +0000 Received: by faat2 with SMTP id t2so5150977faa.0 for ; Tue, 01 Nov 2011 07:53:20 -0700 (PDT) Received: by 10.223.62.209 with SMTP id y17mr1235912fah.7.1320159200393; Tue, 01 Nov 2011 07:53:20 -0700 (PDT) MIME-Version: 1.0 Received: by 10.152.10.106 with HTTP; Tue, 1 Nov 2011 07:52:59 -0700 (PDT) In-Reply-To: <4EAF2E0E.7080508@earthlink.net> References: <4E92E639.7000402@earthlink.net> <83ipnjs9i1.fsf@gnu.org> <83ipndc92n.fsf@gnu.org> <83ehy0ded8.fsf@gnu.org> <4EA753C4.60408@mentor.com> <4EAF2E0E.7080508@earthlink.net> From: Justin Lebar Date: Tue, 01 Nov 2011 14:53:00 -0000 Message-ID: Subject: Re: Status of 'blacklist' patch? To: Stan Shebs Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00151747c0062fbcb604b0ad8424 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-11/txt/msg00010.txt.bz2 --00151747c0062fbcb604b0ad8424 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 3245 Checked in, with two spaces after periods in comments. Thank you for your patience! -Justin 2011-10-06 Justin Lebar * Makefile.in: (SFILES): Add skip.c. (HFILES_NO_SRCDIR): Add skip.h. (COMMON_OBS): Add skip.o. * skip.h, skip.c: New. * breakpoint.h (set_default_breakpoint): Remove. (get_sal_arch): Declare. * breakpoint.c: Remove default_breakpoint_valid, default_breakpoint_address, default_breakpoint_symtab, default_breakpoint_line, default_breakpoint_pspace variables. (get_sal_arch): Make public. (set_default_breakpoint): Remove. (parse_breakpoint_sals, create_breakpoint, clear_command, decode_line_spec_1): Remove uses of default_breakpoint variables; replaced with function calls into stack.c. * cli/cli-cmds.h: Add cmd_list_element *skiplist. * cli/cli-cmds.c: Add skiplist. (init_cmd_lists): Initialize skiplist. (init_cli_cmds): Fix comment (classes of commands appear in alphabetical order). * infrun.c (handle_inferior_event): Add check that we don't step into a function whose pc is marked for skip. * stack.c: Declare last_displayed_sal_valid, last_displayed_pspace, last_displayed_addr, last_displayed_symtab, last_displayed_line variables. (set_last_displayed_sal): New static function. (print_frame_info): Switch call to set_default_breakpoint to call to set_last_displayed_sal. (clear_last_displayed_sal, last_displayed_sal_is_valid, get_last_displayed_pspace, get_last_displayed_addr, get_last_displayed_symtab, get_last_displayed_line, get_last_displayed_sal): New public functions. * stack.h (clear_last_displayed_sal, last_displayed_sal_is_valid, get_last_displayed_pspace, get_last_displayed_addr, get_last_displayed_symtab, get_last_displayed_line, get_last_displayed_sal): Declare. 2011-10-06 Justin Lebar Add tests for skip command. * testsuite/gdb.base/skip-solib-lib.c: New * testsuite/gdb.base/skip-solib-main.c: New * testsuite/gdb.base/skip-solib.exp: New * testsuite/gdb.base/skip.c: New * testsuite/gdb.base/skip.exp: New * testsuite/gdb.base/skip1.c: New * testsuite/gdb.base/Makefile.in: Adding new files. On Mon, Oct 31, 2011 at 7:23 PM, Stan Shebs wrote: > On 10/31/11 6:28 AM, Justin Lebar wrote: >>> >>> Thanks, this version is ok. >> >> Is this final approval on the patch, or are we waiting on something else? > > I was going to say it was ready to go in, but then I noticed these in > skip.c: > > + =C2=A0/* Default to the current function if no argument is given. */ > > > We like to have two spaces after the period. =C2=A0(Yes, it's borderline = OCD, but > we avoid source churn and confusing diffs if we prescribe this level of > consistency.) > > There might be other things to fix, but at this point I think it's more > efficient to push the code in and start getting it some real-world exerci= se. > > >> If the former, how do I check in? > > Somebody else can commit it for you, but if you intend to be an ongoing > contributor, you need an account on sourceware.org (see > http://sourceware.org/ for instructions), and then set up a read-write > checkout, per http://sourceware.org/gdb/current/ , and check in from ther= e. > > Stan > stan@codesourcery.com > > --00151747c0062fbcb604b0ad8424 Content-Type: text/x-patch; charset=US-ASCII; name="skip-8.diff" Content-Disposition: attachment; filename="skip-8.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_guh0oav11 Content-length: 76621 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IGJkYzliZjIuLjVmNWZhYmMgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM 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 ZS4KKwogMjAxMS0xMC0yOSAgWWFvIFFpICA8eWFvQGNvZGVzb3VyY2VyeS5j b20+CiAKIAkqIGluZmNtZC5jIChkaXNjb25uZWN0X2NvbW1hbmQpOiBDYWxs IGRpc2Nvbm5lY3RfdHJhY2luZy4KZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmls ZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgppbmRleCAzMmQ4ZWYzLi43YTdmZjlm IDEwMDY0NAotLS0gYS9nZGIvTWFrZWZpbGUuaW4KKysrIGIvZ2RiL01ha2Vm aWxlLmluCkBAIC03MjcsNyArNzI3LDcgQEAgU0ZJTEVTID0gYWRhLWV4cC55 IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFk YS10YXNrcy5jIFwKIAlwcm9sb2d1ZS12YWx1ZS5jIHBzeW10YWIuYyBcCiAJ cmVnY2FjaGUuYyByZWdncm91cHMuYyByZW1vdGUuYyByZW1vdGUtZmlsZWlv LmMgcmV2ZXJzZS5jIFwKIAlzZW50aW5lbC1mcmFtZS5jIFwKLQlzZXJpYWwu YyBzZXItYmFzZS5jIHNlci11bml4LmMgXAorCXNlcmlhbC5jIHNlci1iYXNl LmMgc2VyLXVuaXguYyBza2lwLmMgXAogCXNvbGliLmMgc29saWItdGFyZ2V0 LmMgc291cmNlLmMgXAogCXN0YWJzcmVhZC5jIHN0YWNrLmMgc3RkLXJlZ3Mu YyBzeW1maWxlLmMgc3ltZmlsZS1tZW0uYyBzeW1taXNjLmMgXAogCXN5bXRh Yi5jIFwKQEAgLTgyNyw3ICs4MjcsNyBAQCBvc2RhdGEuaCBwcm9jZnMuaCBw eXRob24vcHktZXZlbnQuaCBweXRob24vcHktZXZlbnRzLmggcHl0aG9uL3B5 LXN0b3BldmVudC5oIFwKIHB5dGhvbi9weXRob24taW50ZXJuYWwuaCBweXRo b24vcHl0aG9uLmggcmF2ZW5zY2FyLXRocmVhZC5oIHJlY29yZC5oIFwKIHNv bGliLWRhcndpbi5oIHNvbGliLWlhNjQtaHB1eC5oIHNvbGliLXNwdS5oIHdp bmRvd3MtbmF0LmggeGNvZmZyZWFkLmggXAogZ251bGliL2V4dHJhL2FyZy1u b25udWxsLmggZ251bGliL2V4dHJhL2MrK2RlZnMuaCBnbnVsaWIvZXh0cmEv d2Fybi1vbi11c2UuaCBcCi1nbnVsaWIvc3RkZGVmLmluLmggaW5saW5lLWZy YW1lLmggXAorZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5oIHNr aXAuaCBcCiBjb21tb24vY29tbW9uLXV0aWxzLmggY29tbW9uL3htbC11dGls cy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwKIGNvbW1vbi9s aW51eC1vc2RhdGEuaAogCkBAIC05MTUsNyArOTE1LDcgQEAgQ09NTU9OX09C UyA9ICQoREVQRklMRVMpICQoQ09ORklHX09CUykgJChZWU9CSikgXAogCXht bC1zdXBwb3J0Lm8geG1sLXN5c2NhbGwubyB4bWwtdXRpbHMubyBcCiAJdGFy Z2V0LWRlc2NyaXB0aW9ucy5vIHRhcmdldC1tZW1vcnkubyB4bWwtdGRlc2Mu byB4bWwtYnVpbHRpbi5vIFwKIAlpbmZlcmlvci5vIG9zZGF0YS5vIGdkYl91 c2xlZXAubyByZWNvcmQubyBnY29yZS5vIFwKLQlqaXQubyBwcm9nc3BhY2Uu byBcCisJaml0Lm8gcHJvZ3NwYWNlLm8gc2tpcC5vIFwKIAljb21tb24tdXRp bHMubyBidWZmZXIubyBwdGlkLm8KIAogVFNPQlMgPSBpbmZsb3cubwpkaWZm IC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwppbmRleCA5NzNlZDBiLi45 YTI3YjY0IDEwMDY0NAotLS0gYS9nZGIvTkVXUworKysgYi9nZGIvTkVXUwpA QCAtMyw2ICszLDkgQEAKIAogKioqIENoYW5nZXMgc2luY2UgR0RCIDcuMy4x CiAKKyogR0RCIG5vdyBhbGxvd3MgeW91IHRvIHNraXAgdW5pbnRlcmVzdGlu ZyBmdW5jdGlvbnMgYW5kIGZpbGVzIHdoZW4KKyAgc3RlcHBpbmcgd2l0aCB0 aGUgInNraXAgZnVuY3Rpb24iIGFuZCAic2tpcCBmaWxlIiBjb21tYW5kcy4K KwogKiBHREIgaGFzIHR3byBuZXcgY29tbWFuZHM6ICJzZXQgcmVtb3RlIGhh cmR3YXJlLXdhdGNocG9pbnQtbGVuZ3RoLWxpbWl0IgogICBhbmQgInNob3cg cmVtb3RlIGhhcmR3YXJlLXdhdGNocG9pbnQtbGVuZ3RoLWxpbWl0Ii4gIFRo ZXNlIGFsbG93cyB0bwogICBzZXQgb3Igc2hvdyB0aGUgbWF4aW11bSBsZW5n dGggbGltaXQgKGluIGJ5dGVzKSBvZiBhIHJlbW90ZQpkaWZmIC0tZ2l0IGEv Z2RiL2JyZWFrcG9pbnQuYyBiL2dkYi9icmVha3BvaW50LmMKaW5kZXggYmEx YjA4Zi4uOGM5OGJlZiAxMDA2NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwor KysgYi9nZGIvYnJlYWtwb2ludC5jCkBAIC02NSw2ICs2NSw4IEBACiAjaW5j bHVkZSAicGFyc2VyLWRlZnMuaCIKICNpbmNsdWRlICJjbGkvY2xpLXV0aWxz LmgiCiAjaW5jbHVkZSAiY29udGludWF0aW9ucy5oIgorI2luY2x1ZGUgInN0 YWNrLmgiCisjaW5jbHVkZSAic2tpcC5oIgogCiAvKiByZWFkbGluZSBpbmNs dWRlIGZpbGVzICovCiAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIK QEAgLTU3MiwxOSArNTc0LDYgQEAgbWFrZV9jbGVhbnVwX2RlY3JlZl9jb3Vu dGVkX2NvbW1hbmRfbGluZSAoc3RydWN0IGNvdW50ZWRfY29tbWFuZF9saW5l ICoqY21kcCkKICAgcmV0dXJuIG1ha2VfY2xlYW51cCAoZG9fY2xlYW51cF9j b3VudGVkX2NvbW1hbmRfbGluZSwgY21kcCk7CiB9CiAKLS8qIERlZmF1bHQg YWRkcmVzcywgc3ltdGFiIGFuZCBsaW5lIHRvIHB1dCBhIGJyZWFrcG9pbnQg YXQKLSAgIGZvciAiYnJlYWsiIGNvbW1hbmQgd2l0aCBubyBhcmcuCi0gICBJ ZiBkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQgaXMgemVybywgdGhlIG90aGVy IHRocmVlIGFyZQotICAgbm90IHZhbGlkLCBhbmQgImJyZWFrIiB3aXRoIG5v IGFyZyBpcyBhbiBlcnJvci4KLQotICAgVGhpcyBzZXQgYnkgcHJpbnRfc3Rh Y2tfZnJhbWUsIHdoaWNoIGNhbGxzIHNldF9kZWZhdWx0X2JyZWFrcG9pbnQu ICAqLwotCi1pbnQgZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkOwotQ09SRV9B RERSIGRlZmF1bHRfYnJlYWtwb2ludF9hZGRyZXNzOwotc3RydWN0IHN5bXRh YiAqZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYjsKLWludCBkZWZhdWx0X2Jy ZWFrcG9pbnRfbGluZTsKLXN0cnVjdCBwcm9ncmFtX3NwYWNlICpkZWZhdWx0 X2JyZWFrcG9pbnRfcHNwYWNlOwotCiAMCiAvKiBSZXR1cm4gdGhlIGJyZWFr cG9pbnQgd2l0aCB0aGUgc3BlY2lmaWVkIG51bWJlciwgb3IgTlVMTAogICAg aWYgdGhlIG51bWJlciBkb2VzIG5vdCByZWZlciB0byBhbiBleGlzdGluZyBi cmVha3BvaW50LiAgKi8KQEAgLTUzMzksMjAgKzUzMjgsNiBAQCBkZXNjcmli ZV9vdGhlcl9icmVha3BvaW50cyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CiAgICAgfQogfQogDAotLyogU2V0IHRoZSBkZWZhdWx0IHBsYWNlIHRvIHB1 dCBhIGJyZWFrcG9pbnQKLSAgIGZvciB0aGUgYGJyZWFrJyBjb21tYW5kIHdp dGggbm8gYXJndW1lbnRzLiAgKi8KLQotdm9pZAotc2V0X2RlZmF1bHRfYnJl YWtwb2ludCAoaW50IHZhbGlkLCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNw YWNlLAotCQkJQ09SRV9BRERSIGFkZHIsIHN0cnVjdCBzeW10YWIgKnN5bXRh YiwKLQkJCWludCBsaW5lKQotewotICBkZWZhdWx0X2JyZWFrcG9pbnRfdmFs aWQgPSB2YWxpZDsKLSAgZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZSA9IHBz cGFjZTsKLSAgZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3MgPSBhZGRyOwot ICBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFiID0gc3ltdGFiOwotICBkZWZh dWx0X2JyZWFrcG9pbnRfbGluZSA9IGxpbmU7Ci19CiAKIC8qIFJldHVybiB0 cnVlIGlmZiBpdCBpcyBtZWFuaW5nZnVsIHRvIHVzZSB0aGUgYWRkcmVzcyBt ZW1iZXIgb2YKICAgIEJQVC4gIEZvciBzb21lIGJyZWFrcG9pbnQgdHlwZXMs IHRoZSBhZGRyZXNzIG1lbWJlciBpcyBpcnJlbGV2YW50CkBAIC01NzY0LDcg KzU3MzksNyBAQCBzZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAo c3RydWN0IGJwX2xvY2F0aW9uICpsb2MsIGludCBleHBsaWNpdF9sb2MpCiB9 CiAKIC8qIEF0dGVtcHQgdG8gZGV0ZXJtaW5lIGFyY2hpdGVjdHVyZSBvZiBs b2NhdGlvbiBpZGVudGlmaWVkIGJ5IFNBTC4gICovCi1zdGF0aWMgc3RydWN0 IGdkYmFyY2ggKgorc3RydWN0IGdkYmFyY2ggKgogZ2V0X3NhbF9hcmNoIChz dHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCkKIHsKICAgaWYgKHNhbC5zZWN0 aW9uKQpAQCAtNzU0MywyNCArNzUxOCwyNiBAQCBwYXJzZV9icmVha3BvaW50 X3NhbHMgKGNoYXIgKiphZGRyZXNzLAogICBpZiAoKCphZGRyZXNzKSA9PSBO VUxMCiAgICAgICB8fCAoc3RybmNtcCAoKCphZGRyZXNzKSwgImlmIiwgMikg PT0gMCAmJiBpc3NwYWNlICgoKmFkZHJlc3MpWzJdKSkpCiAgICAgewotICAg ICAgaWYgKGRlZmF1bHRfYnJlYWtwb2ludF92YWxpZCkKKyAgICAgIC8qIFRo ZSBsYXN0IGRpc3BsYXllZCBjb2RlcG9pbnQsIGlmIGl0J3MgdmFsaWQsIGlz IG91ciBkZWZhdWx0IGJyZWFrcG9pbnQKKyAgICAgICAgIGFkZHJlc3MuICAq LworICAgICAgaWYgKGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKSkK IAl7CiAJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKIAogCSAgaW5p dF9zYWwgKCZzYWwpOwkJLyogSW5pdGlhbGl6ZSB0byB6ZXJvZXMuICAqLwog CSAgc2Fscy0+c2FscyA9IChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICopCiAJ ICAgIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSkp OwotCSAgc2FsLnBjID0gZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3M7Ci0J ICBzYWwubGluZSA9IGRlZmF1bHRfYnJlYWtwb2ludF9saW5lOwotCSAgc2Fs LnN5bXRhYiA9IGRlZmF1bHRfYnJlYWtwb2ludF9zeW10YWI7Ci0JICBzYWwu cHNwYWNlID0gZGVmYXVsdF9icmVha3BvaW50X3BzcGFjZTsKLQkgIHNhbC5z ZWN0aW9uID0gZmluZF9wY19vdmVybGF5IChzYWwucGMpOworCisJICAvKiBT ZXQgc2FsJ3MgcHNwYWNlLCBwYywgc3ltdGFiLCBhbmQgbGluZSB0byB0aGUg dmFsdWVzCisJICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBsYXN0IGNhbGwg dG8gcHJpbnRfZnJhbWVfaW5mby4gICovCisJICBnZXRfbGFzdF9kaXNwbGF5 ZWRfc2FsICgmc2FsKTsKKyAgICAgICAgICBzYWwuc2VjdGlvbiA9IGZpbmRf cGNfb3ZlcmxheSAoc2FsLnBjKTsKIAogCSAgLyogImJyZWFrIiB3aXRob3V0 IGFyZ3VtZW50cyBpcyBlcXVpdmFsZW50IHRvICJicmVhayAqUEMiCi0JICAg ICB3aGVyZSBQQyBpcyB0aGUgZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3Mu ICBTbyBtYWtlIHN1cmUKLQkgICAgIHRvIHNldCBzYWwuZXhwbGljaXRfcGMg dG8gcHJldmVudCBHREIgZnJvbSB0cnlpbmcgdG8KLQkgICAgIGV4cGFuZCB0 aGUgbGlzdCBvZiBzYWxzIHRvIGluY2x1ZGUgYWxsIG90aGVyIGluc3RhbmNl cwotCSAgICAgd2l0aCB0aGUgc2FtZSBzeW10YWIgYW5kIGxpbmUuICAqLwor CSAgICAgd2hlcmUgUEMgaXMgdGhlIGxhc3QgZGlzcGxheWVkIGNvZGVwb2lu dCdzIGFkZHJlc3MuICBTbworCSAgICAgbWFrZSBzdXJlIHRvIHNldCBzYWwu ZXhwbGljaXRfcGMgdG8gcHJldmVudCBHREIgZnJvbQorCSAgICAgdHJ5aW5n IHRvIGV4cGFuZCB0aGUgbGlzdCBvZiBzYWxzIHRvIGluY2x1ZGUgYWxsIG90 aGVyCisJICAgICBpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBzeW10YWIgYW5k IGxpbmUuICAqLwogCSAgc2FsLmV4cGxpY2l0X3BjID0gMTsKIAogCSAgc2Fs cy0+c2Fsc1swXSA9IHNhbDsKQEAgLTc1NzQsMTkgKzc1NTEsMjIgQEAgcGFy c2VfYnJlYWtwb2ludF9zYWxzIChjaGFyICoqYWRkcmVzcywKICAgICAgIC8q IEZvcmNlIGFsbW9zdCBhbGwgYnJlYWtwb2ludHMgdG8gYmUgaW4gdGVybXMg b2YgdGhlCiAgICAgICAgICBjdXJyZW50X3NvdXJjZV9zeW10YWIgKHdoaWNo IGlzIGRlY29kZV9saW5lXzEncyBkZWZhdWx0KS4KICAgICAgICAgIFRoaXMg c2hvdWxkIHByb2R1Y2UgdGhlIHJlc3VsdHMgd2Ugd2FudCBhbG1vc3QgYWxs IG9mIHRoZQotICAgICAgICAgdGltZSB3aGlsZSBsZWF2aW5nIGRlZmF1bHRf YnJlYWtwb2ludF8qIGFsb25lLgorCSB0aW1lIHdoaWxlIGxlYXZpbmcgdGhl IGxhc3QgZGlzcGxheWVkIGNvZGVwb2ludCBwb2ludGVycworCSBhbG9uZS4K IAogICAgICAgICAgT2JqQzogSG93ZXZlciwgZG9uJ3QgbWF0Y2ggYW4gT2Jq ZWN0aXZlLUMgbWV0aG9kIG5hbWUgd2hpY2gKICAgICAgICAgIG1heSBoYXZl IGEgJysnIG9yICctJyBzdWNjZWVkZWQgYnkgYSAnWycgKi8KIAkgCiAgICAg ICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIGN1cnNhbCA9IGdldF9jdXJyZW50 X3NvdXJjZV9zeW10YWJfYW5kX2xpbmUgKCk7CiAJCQkKLSAgICAgIGlmIChk ZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQKKyAgICAgIGlmIChsYXN0X2Rpc3Bs YXllZF9zYWxfaXNfdmFsaWQgKCkKIAkgICYmICghY3Vyc2FsLnN5bXRhYgog IAkgICAgICB8fCAoKHN0cmNociAoIistIiwgKCphZGRyZXNzKVswXSkgIT0g TlVMTCkKICAJCSAgJiYgKCgqYWRkcmVzcylbMV0gIT0gJ1snKSkpKQotCSpz YWxzID0gZGVjb2RlX2xpbmVfMSAoYWRkcmVzcywgMSwgZGVmYXVsdF9icmVh a3BvaW50X3N5bXRhYiwKLQkJCSAgICAgICBkZWZhdWx0X2JyZWFrcG9pbnRf bGluZSwgY2Fub25pY2FsKTsKKwkqc2FscyA9IGRlY29kZV9saW5lXzEgKGFk ZHJlc3MsIDEsCisJCQkgICAgICAgZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRh YiAoKSwKKwkJCSAgICAgICBnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAoKSwK KwkJCSAgICAgICBjYW5vbmljYWwpOwogICAgICAgZWxzZQogCSpzYWxzID0g ZGVjb2RlX2xpbmVfMSAoYWRkcmVzcywgMSwgKHN0cnVjdCBzeW10YWIgKikg TlVMTCwgMCwKIAkJICAgICAgICAgICAgICAgY2Fub25pY2FsKTsKQEAgLTk2 MTEsOSArOTU5MSwxMSBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICph cmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogICAvKiBTZXQgYSBi cmVha3BvaW50IHdoZXJlIHRoZSB1c2VyIHdhbnRzIGl0IGFuZCBhdCByZXR1 cm4gZnJvbQogICAgICB0aGlzIGZ1bmN0aW9uLiAgKi8KIAotICBpZiAoZGVm YXVsdF9icmVha3BvaW50X3ZhbGlkKQotICAgIHNhbHMgPSBkZWNvZGVfbGlu ZV8xICgmYXJnLCAxLCBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFiLAotCQkJ ICBkZWZhdWx0X2JyZWFrcG9pbnRfbGluZSwgTlVMTCk7CisgIGlmIChsYXN0 X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQgKCkpCisgICAgc2FscyA9IGRlY29k ZV9saW5lXzEgKCZhcmcsIDEsCisJCQkgIGdldF9sYXN0X2Rpc3BsYXllZF9z eW10YWIgKCksCisJCQkgIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lICgpLAor CQkJICBOVUxMKTsKICAgZWxzZQogICAgIHNhbHMgPSBkZWNvZGVfbGluZV8x ICgmYXJnLCAxLCAoc3RydWN0IHN5bXRhYiAqKSBOVUxMLCAwLCBOVUxMKTsK IApAQCAtMTAxMzUsMTAgKzEwMTE3LDExIEBAIGNsZWFyX2NvbW1hbmQgKGNo YXIgKmFyZywgaW50IGZyb21fdHR5KQogCXhtYWxsb2MgKHNpemVvZiAoc3Ry dWN0IHN5bXRhYl9hbmRfbGluZSkpOwogICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgc2Fscy5zYWxzKTsKICAgICAgIGluaXRfc2FsICgmc2FsKTsJCS8q IEluaXRpYWxpemUgdG8gemVyb2VzLiAgKi8KLSAgICAgIHNhbC5saW5lID0g ZGVmYXVsdF9icmVha3BvaW50X2xpbmU7Ci0gICAgICBzYWwuc3ltdGFiID0g ZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYjsKLSAgICAgIHNhbC5wYyA9IGRl ZmF1bHRfYnJlYWtwb2ludF9hZGRyZXNzOwotICAgICAgc2FsLnBzcGFjZSA9 IGRlZmF1bHRfYnJlYWtwb2ludF9wc3BhY2U7CisKKyAgICAgIC8qIFNldCBz YWwncyBsaW5lLCBzeW10YWIsIHBjLCBhbmQgcHNwYWNlIHRvIHRoZSB2YWx1 ZXMKKwkgY29ycmVzcG9uZGluZyB0byB0aGUgbGFzdCBjYWxsIHRvIHByaW50 X2ZyYW1lX2luZm8uICBJZiB0aGUKKwkgY29kZXBvaW50IGlzIG5vdCB2YWxp ZCwgdGhpcyB3aWxsIHNldCBhbGwgdGhlIGZpZWxkcyB0byAwLiAgKi8KKyAg ICAgIGdldF9sYXN0X2Rpc3BsYXllZF9zYWwgKCZzYWwpOwogICAgICAgaWYg KHNhbC5zeW10YWIgPT0gMCkKIAllcnJvciAoXygiTm8gc291cmNlIGZpbGUg c3BlY2lmaWVkLiIpKTsKIApAQCAtMTE5ODYsNiArMTE5NjksOSBAQCBicmVh a3BvaW50X3JlX3NldCAodm9pZCkKICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVy X2JyZWFrcG9pbnQgKCk7CiAgIGNyZWF0ZV9zdGRfdGVybWluYXRlX21hc3Rl cl9icmVha3BvaW50ICgpOwogICBjcmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9i cmVha3BvaW50ICgpOworCisgIC8qIFdoaWxlIHdlJ3JlIGF0IGl0LCByZXNl dCB0aGUgc2tpcCBsaXN0IHRvby4gICovCisgIHNraXBfcmVfc2V0ICgpOwog fQogDAogLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2YgdGhpcyBicmVh a3BvaW50OgpAQCAtMTI0MzUsNyArMTI0MjEsOCBAQCBpbnZhbGlkYXRlX2Jw X3ZhbHVlX29uX21lbW9yeV9jaGFuZ2UgKENPUkVfQUREUiBhZGRyLCBpbnQg bGVuLAogICAgICAgfQogfQogCi0vKiBVc2UgZGVmYXVsdF9icmVha3BvaW50 XydzLCBvciBub3RoaW5nIGlmIHRoZXkgYXJlbid0IHZhbGlkLiAgKi8KKy8q IFVzZSB0aGUgbGFzdCBkaXNwbGF5ZWQgY29kZXBvaW50J3MgdmFsdWVzLCBv ciBub3RoaW5nCisgICBpZiB0aGV5IGFyZW4ndCB2YWxpZC4gICovCiAKIHN0 cnVjdCBzeW10YWJzX2FuZF9saW5lcwogZGVjb2RlX2xpbmVfc3BlY18xIChj aGFyICpzdHJpbmcsIGludCBmdW5maXJzdGxpbmUpCkBAIC0xMjQ0NCwxMCAr MTI0MzEsMTAgQEAgZGVjb2RlX2xpbmVfc3BlY18xIChjaGFyICpzdHJpbmcs IGludCBmdW5maXJzdGxpbmUpCiAKICAgaWYgKHN0cmluZyA9PSAwKQogICAg IGVycm9yIChfKCJFbXB0eSBsaW5lIHNwZWNpZmljYXRpb24uIikpOwotICBp ZiAoZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkKQorICBpZiAobGFzdF9kaXNw bGF5ZWRfc2FsX2lzX3ZhbGlkICgpKQogICAgIHNhbHMgPSBkZWNvZGVfbGlu ZV8xICgmc3RyaW5nLCBmdW5maXJzdGxpbmUsCi0JCQkgIGRlZmF1bHRfYnJl YWtwb2ludF9zeW10YWIsCi0JCQkgIGRlZmF1bHRfYnJlYWtwb2ludF9saW5l LAorCQkJICBnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiICgpLAorCQkJICBn ZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAoKSwKIAkJCSAgTlVMTCk7CiAgIGVs c2UKICAgICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJnN0cmluZywgZnVuZmly c3RsaW5lLApkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuaCBiL2dkYi9i cmVha3BvaW50LmgKaW5kZXggYzIxMTZlMi4uZmUzODFkZiAxMDA2NDQKLS0t IGEvZ2RiL2JyZWFrcG9pbnQuaAorKysgYi9nZGIvYnJlYWtwb2ludC5oCkBA IC0xMDMzLDkgKzEwMzMsNiBAQCBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnQg KmNsb25lX21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2lu dCAqYnBrdCk7CiAKIGV4dGVybiB2b2lkIHNldF9pZ25vcmVfY291bnQgKGlu dCwgaW50LCBpbnQpOwogCi1leHRlcm4gdm9pZCBzZXRfZGVmYXVsdF9icmVh a3BvaW50IChpbnQsIHN0cnVjdCBwcm9ncmFtX3NwYWNlICosCi0JCQkJICAg IENPUkVfQUREUiwgc3RydWN0IHN5bXRhYiAqLCBpbnQpOwotCiBleHRlcm4g dm9pZCBicmVha3BvaW50X2luaXRfaW5mZXJpb3IgKGVudW0gaW5mX2NvbnRl eHQpOwogCiBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9k ZWxldGVfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKik7CkBAIC0x MzY1LDQgKzEzNjIsNyBAQCBleHRlcm4gaW50IHBjX2F0X25vbl9pbmxpbmVf ZnVuY3Rpb24gKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCiAKIGV4 dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmVha3BvaW50 ICopOwogCisvKiBBdHRlbXB0IHRvIGRldGVybWluZSBhcmNoaXRlY3R1cmUg b2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwuICAqLworZXh0ZXJuIHN0 cnVjdCBnZGJhcmNoICpnZXRfc2FsX2FyY2ggKHN0cnVjdCBzeW10YWJfYW5k X2xpbmUgc2FsKTsKKwogI2VuZGlmIC8qICFkZWZpbmVkIChCUkVBS1BPSU5U X0gpICovCmRpZmYgLS1naXQgYS9nZGIvY2xpL2NsaS1jbWRzLmMgYi9nZGIv Y2xpL2NsaS1jbWRzLmMKaW5kZXggNjI0ZDBkZS4uOTQzMjhjNCAxMDA2NDQK LS0tIGEvZ2RiL2NsaS9jbGktY21kcy5jCisrKyBiL2dkYi9jbGkvY2xpLWNt ZHMuYwpAQCAtMTg2LDYgKzE4Niw4IEBAIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICpzZXRjaGVja2xpc3Q7CiAKIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpzaG93Y2hlY2tsaXN0OwogCitzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq c2tpcGxpc3Q7CisKIC8qIENvbW1hbmQgdHJhY2luZyBzdGF0ZS4gICovCiAK IGludCBzb3VyY2VfdmVyYm9zZSA9IDA7CkBAIC0xNTExLDYgKzE1MTMsNyBA QCBpbml0X2NtZF9saXN0cyAodm9pZCkKICAgc2hvd3ByaW50bGlzdCA9IE5V TEw7CiAgIHNldGNoZWNrbGlzdCA9IE5VTEw7CiAgIHNob3djaGVja2xpc3Qg PSBOVUxMOworICBza2lwbGlzdCA9IE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC0xNTc2LDcgKzE1NzksNyBAQCBpbml0X2NsaV9jbWRzICh2b2lkKQog ICBjaGFyICpzb3VyY2VfaGVscF90ZXh0OwogCiAgIC8qIERlZmluZSB0aGUg Y2xhc3NlcyBvZiBjb21tYW5kcy4KLSAgICAgVGhleSB3aWxsIGFwcGVhciBp biB0aGUgaGVscCBsaXN0IGluIHRoZSByZXZlcnNlIG9mIHRoaXMgb3JkZXIu ICAqLworICAgICBUaGV5IHdpbGwgYXBwZWFyIGluIHRoZSBoZWxwIGxpc3Qg aW4gYWxwaGFiZXRpY2FsIG9yZGVyLiAgKi8KIAogICBhZGRfY21kICgiaW50 ZXJuYWxzIiwgY2xhc3NfbWFpbnRlbmFuY2UsIE5VTEwsIF8oIlwKIE1haW50 ZW5hbmNlIGNvbW1hbmRzLlxuXApkaWZmIC0tZ2l0IGEvZ2RiL2NsaS9jbGkt Y21kcy5oIGIvZ2RiL2NsaS9jbGktY21kcy5oCmluZGV4IGU3OWRjZjAuLjcz Y2NkZDIgMTAwNjQ0Ci0tLSBhL2dkYi9jbGkvY2xpLWNtZHMuaAorKysgYi9n ZGIvY2xpL2NsaS1jbWRzLmgKQEAgLTEwNiw2ICsxMDYsOCBAQCBleHRlcm4g c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNldGNoZWNrbGlzdDsKIAogZXh0 ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzaG93Y2hlY2tsaXN0Owog CitleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNraXBsaXN0Owor CiAvKiBFeHBvcnRlZCB0byBnZGIvdG9wLmMgKi8KIAogdm9pZCBpbml0X2Nt ZF9saXN0cyAodm9pZCk7CmRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhp bmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwppbmRleCBjMjAwYjU1Li4wZjM3 ZTZlIDEwMDY0NAotLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisrKyBiL2dk Yi9kb2MvZ2RiLnRleGluZm8KQEAgLTQ4NTQsNiArNDg1NCwxMTEgQEAgcHJv Y2VlZCB1bnRpbCB0aGUgZnVuY3Rpb24gcmV0dXJucy4KIEFuIGFyZ3VtZW50 IGlzIGEgcmVwZWF0IGNvdW50LCBhcyBpbiBAY29kZXtuZXh0fS4KIEBlbmQg dGFibGUKIAorQG5vZGUgU2tpcHBpbmcgT3ZlciBGdW5jdGlvbnMgYW5kIEZp bGVzCitAc3Vic2VjdGlvbiBTa2lwcGluZyBPdmVyIEZ1bmN0aW9ucyBhbmQg RmlsZXMKK0BjaW5kZXggc2tpcHBpbmcgb3ZlciBmdW5jdGlvbnMgYW5kIGZp bGVzCisKK1RoZSBwcm9ncmFtIHlvdSBhcmUgZGVidWdnaW5nIG1heSBjb250 YWluIHNvbWUgZnVuY3Rpb25zIHdoaWNoIGFyZQordW5pbnRlcmVzdGluZyB0 byBkZWJ1Zy4gIFRoZSBAY29kZXtza2lwfSBjb21hbmQgbGV0cyB5b3UgdGVs bCBAdmFsdWV7R0RCTn0gdG8KK3NraXAgYSBmdW5jdGlvbiBvciBhbGwgZnVu Y3Rpb25zIGluIGEgZmlsZSB3aGVuIHN0ZXBwaW5nLgorCitGb3IgZXhhbXBs ZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBDIGZ1bmN0aW9uOgorCitAc21h bGxleGFtcGxlCisxMDEgICAgIGludCBmdW5jKCkKKzEwMiAgICAgQHsKKzEw MyAgICAgICAgIGZvbyhib3JpbmcoKSk7CisxMDQgICAgICAgICBiYXIoYm9y aW5nKCkpOworMTA1ICAgICBAfQorQGVuZCBzbWFsbGV4YW1wbGUKKworQG5v aW5kZW50CitTdXBwb3NlIHlvdSB3aXNoIHRvIHN0ZXAgaW50byB0aGUgZnVu Y3Rpb25zIEBjb2Rle2Zvb30gYW5kIEBjb2Rle2Jhcn0sIGJ1dCB5b3UKK2Fy ZSBub3QgaW50ZXJlc3RlZCBpbiBzdGVwcGluZyB0aHJvdWdoIEBjb2Rle2Jv cmluZ30uICBJZiB5b3UgcnVuIEBjb2Rle3N0ZXB9CithdCBsaW5lIDEwMywg eW91J2xsIGVudGVyIEBjb2Rle2JvcmluZygpfSwgYnV0IGlmIHlvdSBydW4g QGNvZGV7bmV4dH0sIHlvdSdsbAorc3RlcCBvdmVyIGJvdGggQGNvZGV7Zm9v fSBhbmQgQGNvZGV7Ym9yaW5nfSEKKworT25lIHNvbHV0aW9uIGlzIHRvIEBj b2Rle3N0ZXB9IGludG8gQGNvZGV7Ym9yaW5nfSBhbmQgdXNlIHRoZSBAY29k ZXtmaW5pc2h9Citjb21tYW5kIHRvIGltbWVkaWF0ZWx5IGV4aXQgaXQuICBC dXQgdGhpcyBjYW4gYmVjb21lIHRlZGlvdXMgaWYgQGNvZGV7Ym9yaW5nfQor aXMgY2FsbGVkIGZyb20gbWFueSBwbGFjZXMuCisKK0EgbW9yZSBmbGV4aWJs ZSBzb2x1dGlvbiBpcyB0byBleGVjdXRlIEBrYmR7c2tpcCBib3Jpbmd9LiAg VGhpcyBpbnN0cnVjdHMKK0B2YWx1ZXtHREJOfSBuZXZlciB0byBzdGVwIGlu dG8gQGNvZGV7Ym9yaW5nfS4gIE5vdyB3aGVuIHlvdSBleGVjdXRlCitAY29k ZXtzdGVwfSBhdCBsaW5lIDEwMywgeW91J2xsIHN0ZXAgb3ZlciBAY29kZXti b3Jpbmd9IGFuZCBkaXJlY3RseSBpbnRvCitAY29kZXtmb299LgorCitZb3Ug Y2FuIGFsc28gaW5zdHJ1Y3QgQHZhbHVle0dEQk59IHRvIHNraXAgYWxsIGZ1 bmN0aW9ucyBpbiBhIGZpbGUsIHdpdGgsIGZvcgorZXhhbXBsZSwgQGNvZGV7 c2tpcCBmaWxlIGJvcmluZy5jfS4KKworQHRhYmxlIEBjb2RlCitAa2luZGV4 IHNraXAgZnVuY3Rpb24KK0BpdGVtIHNraXAgQHJ7W31AdmFye2xpbmVzcGVj fUBye119CitAaXRlbXggc2tpcCBmdW5jdGlvbiBAcntbfUB2YXJ7bGluZXNw ZWN9QHJ7XX0KK0FmdGVyIHJ1bm5pbmcgdGhpcyBjb21tYW5kLCB0aGUgZnVu Y3Rpb24gbmFtZWQgYnkgQHZhcntsaW5lc3BlY30gb3IgdGhlCitmdW5jdGlv biBjb250YWluaW5nIHRoZSBsaW5lIG5hbWVkIGJ5IEB2YXJ7bGluZXNwZWN9 IHdpbGwgYmUgc2tpcHBlZCBvdmVyIHdoZW4KK3N0ZXBwaW5nLiAgQHhyZWZ7 U3BlY2lmeSBMb2NhdGlvbn0KKworSWYgeW91IGRvIG5vdCBzcGVjaWZ5IEB2 YXJ7bGluZXNwZWN9LCB0aGUgZnVuY3Rpb24geW91J3JlIGN1cnJlbnRseSBk ZWJ1Z2dpbmcKK3dpbGwgYmUgc2tpcHBlZC4KKworKElmIHlvdSBoYXZlIGEg ZnVuY3Rpb24gY2FsbGVkIEBjb2Rle2ZpbGV9IHRoYXQgeW91IHdhbnQgdG8g c2tpcCwgdXNlCitAa2Jke3NraXAgZnVuY3Rpb24gZmlsZX0uKQorCitAa2lu ZGV4IHNraXAgZmlsZQorQGl0ZW0gc2tpcCBmaWxlIEBye1t9QHZhcntmaWxl bmFtZX1AcntdfQorQWZ0ZXIgcnVubmluZyB0aGlzIGNvbW1hbmQsIGFueSBm dW5jdGlvbiB3aG9zZSBzb3VyY2UgbGl2ZXMgaW4gQHZhcntmaWxlbmFtZX0K K3dpbGwgYmUgc2tpcHBlZCBvdmVyIHdoZW4gc3RlcHBpbmcuCisKK0lmIHlv dSBkbyBub3Qgc3BlY2lmeSBAdmFye2ZpbGVuYW1lfSwgZnVuY3Rpb25zIHdo b3NlIHNvdXJjZSBsaXZlcyBpbiB0aGUgZmlsZQoreW91J3JlIGN1cnJlbnRs eSBkZWJ1Z2dpbmcgd2lsbCBiZSBza2lwcGVkLgorQGVuZCB0YWJsZQorCitT a2lwcyBjYW4gYmUgbGlzdGVkLCBkZWxldGVkLCBkaXNhYmxlZCwgYW5kIGVu YWJsZWQsIG11Y2ggbGlrZSBicmVha3BvaW50cy4KK1RoZXNlIGFyZSB0aGUg Y29tbWFuZHMgZm9yIG1hbmFnaW5nIHlvdXIgbGlzdCBvZiBza2lwczoKKwor QHRhYmxlIEBjb2RlCitAa2luZGV4IGluZm8gc2tpcAorQGl0ZW0gaW5mbyBz a2lwIEBye1t9QHZhcntyYW5nZX1AcntdfQorUHJpbnQgZGV0YWlscyBhYm91 dCB0aGUgc3BlY2lmaWVkIHNraXAocykuICBJZiBAdmFye3JhbmdlfSBpcyBu b3Qgc3BlY2lmaWVkLAorcHJpbnQgYSB0YWJsZSB3aXRoIGRldGFpbHMgYWJv dXQgYWxsIGZ1bmN0aW9ucyBhbmQgZmlsZXMgbWFya2VkIGZvciBza2lwcGlu Zy4KK0Bjb2Rle2luZm8gc2tpcH0gcHJpbnRzIHRoZSBmb2xsb3dpbmcgaW5m b3JtYXRpb24gYWJvdXQgZWFjaCBza2lwOgorCitAdGFibGUgQGVtcGgKK0Bp dGVtIElkZW50aWZpZXIKK0EgbnVtYmVyIGlkZW50aWZ5aW5nIHRoaXMgc2tp cC4KK0BpdGVtIFR5cGUKK1RoZSB0eXBlIG9mIHRoaXMgc2tpcCwgZWl0aGVy IEBzYW1we2Z1bmN0aW9ufSBvciBAc2FtcHtmaWxlfS4KK0BpdGVtIEVuYWJs ZWQgb3IgRGlzYWJsZWQKK0VuYWJsZWQgc2tpcHMgYXJlIG1hcmtlZCB3aXRo IEBzYW1we3l9LiAgRGlzYWJsZWQgc2tpcHMgYXJlIG1hcmtlZCB3aXRoIEBz YW1we259LgorQGl0ZW0gQWRkcmVzcworRm9yIGZ1bmN0aW9uIHNraXBzLCB0 aGlzIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIGFkZHJlc3MgaW4gbWVtb3J5IG9m IHRoZSBmdW5jdGlvbgorYmVpbmcgc2tpcHBlZC4gIElmIHlvdSd2ZSBzZXQg YSBmdW5jdGlvbiBza2lwIG9uIGEgZnVuY3Rpb24gd2hpY2ggaGFzIG5vdCB5 ZXQKK2JlZW4gbG9hZGVkLCB0aGlzIGZpZWxkIHdpbGwgY29udGFpbiBAc2Ft cHs8UEVORElORz59LiAgT25jZSBhIHNoYXJlZCBsaWJyYXJ5Cit3aGljaCBo YXMgdGhlIGZ1bmN0aW9uIGlzIGxvYWRlZCwgQGNvZGV7aW5mbyBza2lwfSB3 aWxsIHNob3cgdGhlIGZ1bmN0aW9uJ3MKK2FkZHJlc3MgaGVyZS4KK0BpdGVt IFdoYXQKK0ZvciBmaWxlIHNraXBzLCB0aGlzIGZpZWxkIGNvbnRhaW5zIHRo ZSBmaWxlbmFtZSBiZWluZyBza2lwcGVkLiAgRm9yIGZ1bmN0aW9ucworc2tp cHMsIHRoaXMgZmllbGQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIG5hbWUgYW5k IGl0cyBsaW5lIG51bWJlciBpbiB0aGUgZmlsZQord2hlcmUgaXQgaXMgZGVm aW5lZC4KK0BlbmQgdGFibGUKKworQGtpbmRleCBza2lwIGRlbGV0ZQorQGl0 ZW0gc2tpcCBkZWxldGUgQHJ7W31AdmFye3JhbmdlfUBye119CitEZWxldGUg dGhlIHNwZWNpZmllZCBza2lwKHMpLiAgSWYgQHZhcntyYW5nZX0gaXMgbm90 IHNwZWNpZmllZCwgZGVsZXRlIGFsbAorc2tpcHMuCisKK0BraW5kZXggc2tp cCBlbmFibGUKK0BpdGVtIHNraXAgZW5hYmxlIEBye1t9QHZhcntyYW5nZX1A cntdfQorRW5hYmxlIHRoZSBzcGVjaWZpZWQgc2tpcChzKS4gIElmIEB2YXJ7 cmFuZ2V9IGlzIG5vdCBzcGVjaWZpZWQsIGVuYWJsZSBhbGwKK3NraXBzLgor CitAa2luZGV4IHNraXAgZGlzYWJsZQorQGl0ZW0gc2tpcCBkaXNhYmxlIEBy e1t9QHZhcntyYW5nZX1AcntdfQorRGlzYWJsZSB0aGUgc3BlY2lmaWVkIHNr aXAocykuICBJZiBAdmFye3JhbmdlfSBpcyBub3Qgc3BlY2lmaWVkLCBkaXNh YmxlIGFsbAorc2tpcHMuCisKK0BlbmQgdGFibGUKKwogQG5vZGUgU2lnbmFs cwogQHNlY3Rpb24gU2lnbmFscwogQGNpbmRleCBzaWduYWxzCmRpZmYgLS1n aXQgYS9nZGIvZ2RiY21kLmggYi9nZGIvZ2RiY21kLmgKaW5kZXggYzAyY2U2 OS4uNjA2YjgxMiAxMDA2NDQKLS0tIGEvZ2RiL2dkYmNtZC5oCisrKyBiL2dk Yi9nZGJjbWQuaApAQCAtMTI0LDYgKzEyNCw4IEBAIGV4dGVybiBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqc2V0Y2hlY2tsaXN0OwogCiBleHRlcm4gc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKnNob3djaGVja2xpc3Q7CiAKK2V4dGVy biBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2tpcGxpc3Q7CisKIC8qIENo YWluIGNvbnRhaW5pbmcgYWxsIGRlZmluZWQgInNhdmUiIHN1YmNvbW1hbmRz LiAgKi8KIAogZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzYXZl X2NtZGxpc3Q7CmRpZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5m cnVuLmMKaW5kZXggZTBjNTlhMS4uN2VjMDc4OCAxMDA2NDQKLS0tIGEvZ2Ri L2luZnJ1bi5jCisrKyBiL2dkYi9pbmZydW4uYwpAQCAtNTYsNiArNTYsNyBA QAogI2luY2x1ZGUgInRyYWNlcG9pbnQuaCIKICNpbmNsdWRlICJjb250aW51 YXRpb25zLmgiCiAjaW5jbHVkZSAiaW50ZXJwcy5oIgorI2luY2x1ZGUgInNr aXAuaCIKIAogLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zICov CiAKQEAgLTQ5MTcsNyArNDkxOCw4IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90 ZXN0OgogCX0KIAogICAgICAgLyogSWYgd2UgaGF2ZSBsaW5lIG51bWJlciBp bmZvcm1hdGlvbiBmb3IgdGhlIGZ1bmN0aW9uIHdlIGFyZQotICAgICAgICAg dGhpbmtpbmcgb2Ygc3RlcHBpbmcgaW50bywgc3RlcCBpbnRvIGl0LgorCSB0 aGlua2luZyBvZiBzdGVwcGluZyBpbnRvIGFuZCB0aGUgZnVuY3Rpb24gaXNu J3Qgb24gdGhlIHNraXAKKwkgbGlzdCwgc3RlcCBpbnRvIGl0LgogCiAgICAg ICAgICBJZiB0aGVyZSBhcmUgc2V2ZXJhbCBzeW10YWJzIGF0IHRoYXQgUEMg KGUuZy4gd2l0aCBpbmNsdWRlCiAgICAgICAgICBmaWxlcyksIGp1c3Qgd2Fu dCB0byBrbm93IHdoZXRoZXIgKmFueSogb2YgdGhlbSBoYXZlIGxpbmUKQEAg LTQ5MjYsNyArNDkyOCw4IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0Ogog CXN0cnVjdCBzeW10YWJfYW5kX2xpbmUgdG1wX3NhbDsKIAogCXRtcF9zYWwg PSBmaW5kX3BjX2xpbmUgKGVjcy0+c3RvcF9mdW5jX3N0YXJ0LCAwKTsKLQlp ZiAodG1wX3NhbC5saW5lICE9IDApCisJaWYgKHRtcF9zYWwubGluZSAhPSAw ICYmCisJICAgICFmdW5jdGlvbl9wY19pc19tYXJrZWRfZm9yX3NraXAgKGVj cy0+c3RvcF9mdW5jX3N0YXJ0KSkKIAkgIHsKIAkgICAgaWYgKGV4ZWN1dGlv bl9kaXJlY3Rpb24gPT0gRVhFQ19SRVZFUlNFKQogCSAgICAgIGhhbmRsZV9z dGVwX2ludG9fZnVuY3Rpb25fYmFja3dhcmQgKGdkYmFyY2gsIGVjcyk7CmRp ZmYgLS1naXQgYS9nZGIvc2tpcC5jIGIvZ2RiL3NraXAuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmRhM2M0Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiL3NraXAuYwpAQCAtMCwwICsxLDYwMiBAQAorLyogU2tp cHBpbmcgdW5pbnRlcmVzdGluZyBmaWxlcyBhbmQgZnVuY3Rpb25zIHdoaWxl IHN0ZXBwaW5nLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisKKyNpbmNsdWRlICJkZWZzLmgiCisjaW5jbHVkZSAic2tpcC5o IgorI2luY2x1ZGUgInZhbHVlLmgiCisjaW5jbHVkZSAidmFscHJpbnQuaCIK KyNpbmNsdWRlICJ1aS1vdXQuaCIKKyNpbmNsdWRlICJnZGJfc3RyaW5nLmgi CisjaW5jbHVkZSAic3ltdGFiLmgiCisjaW5jbHVkZSAiZ2RiY21kLmgiCisj aW5jbHVkZSAiY29tbWFuZC5oIgorI2luY2x1ZGUgImNvbXBsZXRlci5oIgor I2luY2x1ZGUgInN0YWNrLmgiCisjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5o IgorI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKyNpbmNsdWRlICJsaW5lc3Bl Yy5oIgorI2luY2x1ZGUgIm9iamZpbGVzLmgiCisjaW5jbHVkZSAiZXhjZXB0 aW9ucy5oIgorI2luY2x1ZGUgImJyZWFrcG9pbnQuaCIgLyogZm9yIGdldF9z YWxfYXJjaCAoKSAqLworCitzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkKK3sKKyAg aW50IG51bWJlcjsKKworICAvKiBOVUxMIGlmIHRoaXMgaXNuJ3QgYSBza2lw bGlzdCBlbnRyeSBmb3IgYW4gZW50aXJlIGZpbGUuCisgICAgIFRoZSBza2lw bGlzdCBlbnRyeSBvd25zIHRoaXMgcG9pbnRlci4gICovCisgIGNoYXIgKmZp bGVuYW1lOworCisgIC8qIFRoZSBuYW1lIG9mIHRoZSBtYXJrZWQtZm9yLXNr aXAgZnVuY3Rpb24sIGlmIHRoaXMgaXMgYSBza2lwbGlzdAorICAgICBlbnRy eSBmb3IgYSBmdW5jdGlvbi4gIE5vdGUgdGhhdCB0aGlzIG1pZ2h0IGJlIG5v bi1udWxsIGV2ZW4gaWYKKyAgICAgdGhlIHBjIGlzIDAgaWYgdGhlIGVudHJ5 IGlzIHBlbmRpbmcgYSBzaGFyZWQgbGlicmFyeSBsb2FkLgorCisgICAgIFRo ZSBza2lwbGlzdCBlbnRyeSBvd25zIHRoaXMgcG9pbnRlci4gICovCisgIGNo YXIgKmZ1bmN0aW9uX25hbWU7CisKKyAgLyogMCBpZiB0aGlzIGlzIGEgc2tp cGxpc3QgZW50cnkgZm9yIGFuIGVudGlyZSBmaWxlLCBvciBpZiB0aGlzCisg ICAgIGVudHJ5IHdpbGwgYmUgb24gYSBmdW5jdGlvbiwgcGVuZGluZyBhIHNo YXJlZCBsaWJyYXJ5IGxvYWQuICAqLworICBDT1JFX0FERFIgcGM7CisKKyAg LyogQXJjaGl0ZWN0dXJlIHdlIHVzZWQgdG8gY3JlYXRlIHRoZSBza2lwbGlz dCBlbnRyeS4gTWF5IGJlIG51bGwKKyAgICAgaWYgdGhlIGVudHJ5IGlzIHBl bmRpbmcgYSBzaGFyZWQgbGlicmFyeSBsb2FkLiAgKi8KKyAgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2g7CisKKyAgaW50IGVuYWJsZWQ7CisgIGludCBwZW5k aW5nOworCisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqbmV4dDsKK307CisK K3N0YXRpYyB2b2lkIHNraXBfZnVuY3Rpb25fY29tbWFuZCAoY2hhciAqYXJn LCBpbnQgZnJvbV90dHkpOworc3RhdGljIHZvaWQgc2tpcF9maWxlX2NvbW1h bmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KTsKK3N0YXRpYyB2b2lkIHNr aXBfaW5mbyAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOworCitzdGF0aWMg dm9pZCBhZGRfc2tpcGxpc3RfZW50cnkgKHN0cnVjdCBza2lwbGlzdF9lbnRy eSAqZSk7CitzdGF0aWMgdm9pZCBza2lwX2Z1bmN0aW9uX3BjIChDT1JFX0FE RFIgcGMsIGNoYXIgKm5hbWUsCisJCQkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAq YXJjaCwKKwkJCSAgICAgIGludCBwZW5kaW5nKTsKKworc3RhdGljIHN0cnVj dCBza2lwbGlzdF9lbnRyeSAqc2tpcGxpc3RfZW50cnlfY2hhaW47CitzdGF0 aWMgaW50IHNraXBsaXN0X2VudHJ5X2NvdW50OworCisjZGVmaW5lIEFMTF9T S0lQTElTVF9FTlRSSUVTKEUpIFwKKyAgZm9yIChFID0gc2tpcGxpc3RfZW50 cnlfY2hhaW47IEU7IEUgPSBFLT5uZXh0KQorCisjZGVmaW5lIEFMTF9TS0lQ TElTVF9FTlRSSUVTX1NBRkUoRSxUTVApIFwKKyAgZm9yIChFID0gc2tpcGxp c3RfZW50cnlfY2hhaW47ICAgICAgICAgXAorICAgICAgIEUgPyAoVE1QID0g RS0+bmV4dCwgMSkgOiAwOyAgICAgICBcCisgICAgICAgRSA9IFRNUCkKKwor c3RhdGljIHZvaWQKK3NraXBfZmlsZV9jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICplOwor ICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7CisgIGludCBwZW5kaW5nID0gMDsK KyAgY2hhciAqZmlsZW5hbWUgPSAwOworCisgIC8qIElmIG5vIGFyZ3VtZW50 IHdhcyBnaXZlbiwgdHJ5IHRvIGRlZmF1bHQgdG8gdGhlIGxhc3QKKyAgICAg ZGlzcGxheWVkIGNvZGVwb2ludC4gICovCisgIGlmIChhcmcgPT0gMCkKKyAg ICB7CisgICAgICBzeW10YWIgPSBnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFi ICgpOworICAgICAgaWYgKHN5bXRhYiA9PSAwKQorCWVycm9yIChfKCJObyBk ZWZhdWx0IGZpbGUgbm93LiIpKTsKKyAgICAgIGVsc2UKKwlmaWxlbmFtZSA9 IHN5bXRhYi0+ZmlsZW5hbWU7CisgICAgfQorICBlbHNlCisgICAgeworICAg ICAgc3ltdGFiID0gbG9va3VwX3N5bXRhYiAoYXJnKTsKKyAgICAgIGlmIChz eW10YWIgPT0gMCkKKwl7CisJICBmcHJpbnRmX2ZpbHRlcmVkIChnZGJfc3Rk ZXJyLCBfKCJObyBzb3VyY2UgZmlsZSBuYW1lZCAlcy5cbiIpLCBhcmcpOwor CSAgaWYgKCFucXVlcnkgKF8oIlwKK0lnbm9yZSBmaWxlIHBlbmRpbmcgZnV0 dXJlIHNoYXJlZCBsaWJyYXJ5IGxvYWQ/ICIpKSkKKwkgICAgcmV0dXJuOwor CisJICBwZW5kaW5nID0gMTsKKwkgIGZpbGVuYW1lID0gYXJnOworCX0KKyAg ICAgIGVsc2UKKwlmaWxlbmFtZSA9IHN5bXRhYi0+ZmlsZW5hbWU7CisgICAg fQorCisgIGUgPSBYWkFMTE9DIChzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkpOwor ICBlLT5maWxlbmFtZSA9IHhzdHJkdXAgKGZpbGVuYW1lKTsKKyAgZS0+ZW5h YmxlZCA9IDE7CisgIGUtPnBlbmRpbmcgPSBwZW5kaW5nOworICBpZiAoc3lt dGFiICE9IDApCisgICAgZS0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2gg KHN5bXRhYi0+b2JqZmlsZSk7CisKKyAgYWRkX3NraXBsaXN0X2VudHJ5IChl KTsKKworICBwcmludGZfZmlsdGVyZWQgKF8oIkZpbGUgJXMgd2lsbCBiZSBz a2lwcGVkIHdoZW4gc3RlcHBpbmcuXG4iKSwgZmlsZW5hbWUpOworfQorCitz dGF0aWMgdm9pZAorc2tpcF9mdW5jdGlvbl9jb21tYW5kIChjaGFyICphcmcs IGludCBmcm9tX3R0eSkKK3sKKyAgQ09SRV9BRERSIGZ1bmNfcGM7CisgIGNo YXIgKm5hbWUgPSBOVUxMOworCisgIC8qIERlZmF1bHQgdG8gdGhlIGN1cnJl bnQgZnVuY3Rpb24gaWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4uICAqLworICBp ZiAoYXJnID09IDApCisgICAgeworICAgICAgQ09SRV9BRERSIHBjOworICAg ICAgaWYgKCFsYXN0X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQgKCkpCisJZXJy b3IgKF8oIk5vIGRlZmF1bHQgZnVuY3Rpb24gbm93LiIpKTsKKworICAgICAg cGMgPSBnZXRfbGFzdF9kaXNwbGF5ZWRfYWRkciAoKTsKKyAgICAgIGlmICgh ZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsICZmdW5jX3Bj LCAwKSkKKwl7CisJICBlcnJvciAoXygiTm8gZnVuY3Rpb24gZm91bmQgY29u dGFpbmluZyBjdXJyZW50IHByb2dyYW0gcG9pbnQgJXMuIiksCisJCSAgcGFk ZHJlc3MgKGdldF9jdXJyZW50X2FyY2ggKCksIHBjKSk7CisJfQorICAgICAg c2tpcF9mdW5jdGlvbl9wYyAoZnVuY19wYywgbmFtZSwgZ2V0X2N1cnJlbnRf YXJjaCAoKSwgMCk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgLyog RGVjb2RlIGFyZy4gIFdlIHNldCBmdW5maXJzdGxpbmU9MSBzbyBkZWNvZGVf bGluZV8xIHdpbGwgZ2l2ZSB1cyB0aGUKKwkgZmlyc3QgbGluZSBvZiB0aGUg ZnVuY3Rpb24gc3BlY2lmaWVkLCBpZiBpdCBjYW4sIGFuZCBzbyB0aGF0IHdl J2xsCisJIHJlamVjdCB2YXJpYWJsZSBuYW1lcyBhbmQgdGhlIGxpa2UuICAq LworCisgICAgICBpbnQgaTsKKyAgICAgIGludCBwZW5kaW5nID0gMDsKKyAg ICAgIGNoYXIgKm9yaWdfYXJnID0gYXJnOyAvKiBkZWNvZGVfbGluZV8xIG1v ZGlmaWVzIHRoZSBhcmcgcG9pbnRlci4gICovCisgICAgICB2b2xhdGlsZSBz dHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBkZWNvZGVfZXhjZXB0aW9uOworICAgICAg c3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHM7CisKKyAgICAgIFRSWV9D QVRDSCAoZGVjb2RlX2V4Y2VwdGlvbiwgUkVUVVJOX01BU0tfRVJST1IpCisJ eworCSAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZhcmcsIDEsIDAsIDAsIDAp OworCX0KKworICAgICAgaWYgKGRlY29kZV9leGNlcHRpb24ucmVhc29uIDwg MCkKKyAgICAgICAgeworICAgICAgICAgIGlmIChkZWNvZGVfZXhjZXB0aW9u LmVycm9yICE9IE5PVF9GT1VORF9FUlJPUikKKyAgICAgICAgICAgIHRocm93 X2V4Y2VwdGlvbiAoZGVjb2RlX2V4Y2VwdGlvbik7CisKKwkgIGZwcmludGZf ZmlsdGVyZWQgKGdkYl9zdGRlcnIsCisJCQkgICAgXygiTm8gZnVuY3Rpb24g Zm91bmQgbmFtZWQgJXMuXG4iKSwgb3JpZ19hcmcpOworCisJICBpZiAobnF1 ZXJ5IChfKCJcCitJZ25vcmUgZnVuY3Rpb24gcGVuZGluZyBmdXR1cmUgc2hh cmVkIGxpYnJhcnkgbG9hZD8gIikpKQorCSAgICB7CisJICAgICAgLyogQWRk IHRoZSBwZW5kaW5nIHNraXBsaXN0IGVudHJ5LiAgKi8KKwkgICAgICBza2lw X2Z1bmN0aW9uX3BjICgwLCBvcmlnX2FyZywgMCwgMSk7CisJICAgIH0KKwor CSAgcmV0dXJuOworCX0KKworICAgICAgaWYgKHNhbHMubmVsdHMgPiAxKQor CWVycm9yIChfKCJTcGVjaWZ5IGp1c3Qgb25lIGZ1bmN0aW9uIGF0IGEgdGlt ZS4iKSk7CisgICAgICBpZiAoc3RybGVuIChhcmcpICE9IDApCisJZXJyb3Ig KF8oIkp1bmsgYXQgZW5kIG9mIGFyZ3VtZW50cy4iKSk7CisKKyAgICAgIC8q IFRoZSBwYyBkZWNvZGVfbGluZV8xIGdpdmVzIHVzIGlzIHRoZSBmaXJzdCBs aW5lIG9mIHRoZSBmdW5jdGlvbiwKKwkgYnV0IHdlIGFjdHVhbGx5IHdhbnQg dGhlIGxpbmUgYmVmb3JlIHRoYXQuICBUaGUgY2FsbCB0bworCSBmaW5kX3Bj X3BhcnRpYWxfZnVuY3Rpb24gZ2V0cyB1cyB0aGUgdmFsdWUgd2UgYWN0dWFs bHkgd2FudC4gICovCisgICAgICB7CisJc3RydWN0IHN5bXRhYl9hbmRfbGlu ZSBzYWwgPSBzYWxzLnNhbHNbMF07CisJQ09SRV9BRERSIHBjID0gc2FsLnBj OworCUNPUkVfQUREUiBmdW5jX3N0YXJ0ID0gMDsKKwlzdHJ1Y3QgZ2RiYXJj aCAqYXJjaCA9IGdldF9zYWxfYXJjaCAoc2FsKTsKKworCWlmICghZmluZF9w Y19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsICZmdW5jX3N0YXJ0LCAw KSkKKwkgIHsKKwkgICAgZXJyb3IgKF8oIk5vIGZ1bmN0aW9uIGZvdW5kIGNv bnRhaW5pbmcgcHJvZ3JhbSBwb2ludCAlcy4iKSwKKwkJICAgICBwYWRkcmVz cyAoYXJjaCwgcGMpKTsKKwkgIH0KKworCXNraXBfZnVuY3Rpb25fcGMgKGZ1 bmNfc3RhcnQsIG5hbWUsIGFyY2gsIDApOworICAgICAgfQorICAgIH0KK30K Kworc3RhdGljIHZvaWQKK3NraXBfaW5mbyAoY2hhciAqYXJnLCBpbnQgZnJv bV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZTsKKyAgaW50 IG51bV9wcmludGFibGVfZW50cmllcyA9IDA7CisgIGludCBhZGRyZXNzX3dp ZHRoID0gMTA7CisgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7 CisgIHN0cnVjdCBjbGVhbnVwICp0YmxfY2hhaW47CisKKyAgZ2V0X3VzZXJf cHJpbnRfb3B0aW9ucyAoJm9wdHMpOworCisgIC8qIENvdW50IHRoZSBudW1i ZXIgb2Ygcm93cyBpbiB0aGUgdGFibGUgYW5kIHNlZSBpZiB3ZSBuZWVkIHNw YWNlIGZvciBhCisgICAgIDY0LWJpdCBhZGRyZXNzIGFueXdoZXJlLiAgKi8K KyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisgICAgaWYgKGFyZyA9PSAw IHx8IG51bWJlcl9pc19pbl9saXN0IChhcmcsIGUtPm51bWJlcikpCisgICAg ICB7CisJbnVtX3ByaW50YWJsZV9lbnRyaWVzKys7CisJaWYgKGUtPmdkYmFy Y2ggJiYgZ2RiYXJjaF9hZGRyX2JpdCAoZS0+Z2RiYXJjaCkgPiAzMikKKwkg IGFkZHJlc3Nfd2lkdGggPSAxODsKKyAgICAgIH0KKworICBpZiAobnVtX3By aW50YWJsZV9lbnRyaWVzID09IDApCisgICAgeworICAgICAgaWYgKGFyZyA9 PSAwKQorCXVpX291dF9tZXNzYWdlIChjdXJyZW50X3Vpb3V0LCAwLCBfKCJc CitOb3Qgc2tpcHBpbmcgYW55IGZpbGVzIG9yIGZ1bmN0aW9ucy5cbiIpKTsK KyAgICAgIGVsc2UKKwl1aV9vdXRfbWVzc2FnZSAoY3VycmVudF91aW91dCwg MCwKKwkJCV8oIk5vIHNraXBsaXN0IGVudHJpZXMgZm91bmQgd2l0aCBudW1i ZXIgJXMuXG4iKSwgYXJnKTsKKworICAgICAgcmV0dXJuOworICAgIH0KKwor ICBpZiAob3B0cy5hZGRyZXNzcHJpbnQpCisgICAgdGJsX2NoYWluID0gbWFr ZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKGN1cnJlbnRfdWlv dXQsIDUsCisJCQkJCQkgICAgIG51bV9wcmludGFibGVfZW50cmllcywKKwkJ CQkJCSAgICAgIlNraXBsaXN0VGFibGUiKTsKKyAgZWxzZQorICAgIHRibF9j aGFpbgorICAgICAgID0gbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdp bl9lbmQgKGN1cnJlbnRfdWlvdXQsIDQsCisJCQkJCSAgICAgIG51bV9wcmlu dGFibGVfZW50cmllcywKKwkJCQkJICAgICAgIlNraXBsaXN0VGFibGUiKTsK KworICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCA3LCB1 aV9sZWZ0LCAibnVtYmVyIiwgIk51bSIpOyAgICAgIC8qIDEgKi8KKyAgdWlf b3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgMTQsIHVpX2xlZnQs ICJ0eXBlIiwgIlR5cGUiKTsgICAgICAvKiAyICovCisgIHVpX291dF90YWJs ZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDMsIHVpX2xlZnQsICJlbmFibGVk IiwgIkVuYiIpOyAgICAgLyogMyAqLworICBpZiAob3B0cy5hZGRyZXNzcHJp bnQpCisgICAgeworICAgICAgdWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVu dF91aW91dCwgYWRkcmVzc193aWR0aCwgdWlfbGVmdCwKKwkJCSAgICJhZGRy IiwgIkFkZHJlc3MiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA0 ICovCisgICAgfQorICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vp b3V0LCA0MCwgdWlfbm9hbGlnbiwgIndoYXQiLCAiV2hhdCIpOyAgIC8qIDUg Ki8KKyAgdWlfb3V0X3RhYmxlX2JvZHkgKGN1cnJlbnRfdWlvdXQpOworCisg IEFMTF9TS0lQTElTVF9FTlRSSUVTIChlKQorICAgIHsKKyAgICAgIHN0cnVj dCBjbGVhbnVwICplbnRyeV9jaGFpbjsKKworICAgICAgUVVJVDsKKyAgICAg IGlmIChhcmcgIT0gMCAmJiAhbnVtYmVyX2lzX2luX2xpc3QgKGFyZywgZS0+ bnVtYmVyKSkKKwljb250aW51ZTsKKworICAgICAgZW50cnlfY2hhaW4gPSBt YWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAoY3VycmVudF91 aW91dCwKKwkJCQkJCQkgImJsa2xzdC1lbnRyeSIpOworICAgICAgdWlfb3V0 X2ZpZWxkX2ludCAoY3VycmVudF91aW91dCwgIm51bWJlciIsIGUtPm51bWJl cik7ICAgICAgICAgICAgIC8qIDEgKi8KKworICAgICAgaWYgKGUtPmZ1bmN0 aW9uX25hbWUgIT0gMCkKKwl1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50 X3Vpb3V0LCAidHlwZSIsICJmdW5jdGlvbiIpOyAgICAgICAgIC8qIDIgKi8K KyAgICAgIGVsc2UgaWYgKGUtPmZpbGVuYW1lICE9IDApCisJdWlfb3V0X2Zp ZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgInR5cGUiLCAiZmlsZSIpOyAg ICAgICAgICAgICAvKiAyICovCisgICAgICBlbHNlCisJaW50ZXJuYWxfZXJy b3IgKF9fRklMRV9fLCBfX0xJTkVfXywgXygiXAorU2tpcGxpc3QgZW50cnkg c2hvdWxkIGhhdmUgZWl0aGVyIGEgZmlsZW5hbWUgb3IgYSBmdW5jdGlvbiBu YW1lLiIpKTsKKworICAgICAgaWYgKGUtPmVuYWJsZWQpCisJdWlfb3V0X2Zp ZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgImVuYWJsZWQiLCAieSIpOyAg ICAgICAgICAgICAvKiAzICovCisgICAgICBlbHNlCisJdWlfb3V0X2ZpZWxk X3N0cmluZyAoY3VycmVudF91aW91dCwgImVuYWJsZWQiLCAibiIpOyAgICAg ICAgICAgICAvKiAzICovCisKKyAgICAgIGlmIChvcHRzLmFkZHJlc3Nwcmlu dCkKKwl7CisJICBpZiAoZS0+cGMgIT0gMCkKKwkgICAgdWlfb3V0X2ZpZWxk X2NvcmVfYWRkciAoY3VycmVudF91aW91dCwgImFkZHIiLAorCQkJCSAgICBl LT5nZGJhcmNoLCBlLT5wYyk7ICAgICAgICAgICAgICAgICAgLyogNCAqLwor CSAgZWxzZQorCSAgICB1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vp b3V0LCAiYWRkciIsICIiKTsgICAgICAgICAgICAgLyogNCAqLworCX0KKwor ICAgICAgaWYgKCFlLT5wZW5kaW5nICYmIGUtPmZ1bmN0aW9uX25hbWUgIT0g MCkKKwl7CisJICAgc3RydWN0IHN5bWJvbCAqc3ltOworCisJICAgZ2RiX2Fz c2VydCAoZS0+cGMgIT0gMCk7CisJICAgc3ltID0gZmluZF9wY19mdW5jdGlv biAoZS0+cGMpOworCSAgIGlmIChzeW0pCisJICAgICB1aV9vdXRfZmllbGRf Zm10IChjdXJyZW50X3Vpb3V0LCAid2hhdCIsICIlcyBhdCAlczolZCIsCisJ CQkgICAgICAgc3ltLT5naW5mby5uYW1lLAorCQkJICAgICAgIHN5bS0+c3lt dGFiLT5maWxlbmFtZSwKKwkJCSAgICAgICBzeW0tPmxpbmUpOworCSAgIGVs c2UKKwkgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQs ICJ3aGF0IiwgIj8iKTsKKwl9CisgICAgICBlbHNlIGlmIChlLT5wZW5kaW5n ICYmIGUtPmZ1bmN0aW9uX25hbWUgIT0gMCkKKwl7CisJICB1aV9vdXRfZmll bGRfZm10IChjdXJyZW50X3Vpb3V0LCAid2hhdCIsICIlcyAoUEVORElORyki LAorCQkJICAgIGUtPmZ1bmN0aW9uX25hbWUpOworCX0KKyAgICAgIGVsc2Ug aWYgKCFlLT5wZW5kaW5nICYmIGUtPmZpbGVuYW1lICE9IDApCisJdWlfb3V0 X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgIndoYXQiLCBlLT5maWxl bmFtZSk7CisgICAgICBlbHNlIGlmIChlLT5wZW5kaW5nICYmIGUtPmZpbGVu YW1lICE9IDApCisJdWlfb3V0X2ZpZWxkX2ZtdCAoY3VycmVudF91aW91dCwg IndoYXQiLCAiJXMgKFBFTkRJTkcpIiwKKwkJCSAgZS0+ZmlsZW5hbWUpOwor CisgICAgICB1aV9vdXRfdGV4dCAoY3VycmVudF91aW91dCwgIlxuIik7Cisg ICAgICBkb19jbGVhbnVwcyAoZW50cnlfY2hhaW4pOworICAgIH0KKworICBk b19jbGVhbnVwcyAodGJsX2NoYWluKTsKK30KKworc3RhdGljIHZvaWQKK3Nr aXBfZW5hYmxlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQor eworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmU7CisgIGludCBmb3VuZCA9 IDA7CisKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisgICAgaWYgKGFy ZyA9PSAwIHx8IG51bWJlcl9pc19pbl9saXN0IChhcmcsIGUtPm51bWJlcikp CisgICAgICB7CisgICAgICAgIGUtPmVuYWJsZWQgPSAxOworICAgICAgICBm b3VuZCA9IDE7CisgICAgICB9CisKKyAgaWYgKCFmb3VuZCkKKyAgICBlcnJv ciAoXygiTm8gc2tpcGxpc3QgZW50cmllcyBmb3VuZCB3aXRoIG51bWJlciAl cy4iKSwgYXJnKTsKK30KKworc3RhdGljIHZvaWQKK3NraXBfZGlzYWJsZV9j b21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0 IHNraXBsaXN0X2VudHJ5ICplOworICBpbnQgZm91bmQgPSAwOworCisgIEFM TF9TS0lQTElTVF9FTlRSSUVTIChlKQorICAgIGlmIChhcmcgPT0gMCB8fCBu dW1iZXJfaXNfaW5fbGlzdCAoYXJnLCBlLT5udW1iZXIpKQorICAgICAgewor CWUtPmVuYWJsZWQgPSAwOworICAgICAgICBmb3VuZCA9IDE7CisgICAgICB9 CisKKyAgaWYgKCFmb3VuZCkKKyAgICBlcnJvciAoXygiTm8gc2tpcGxpc3Qg ZW50cmllcyBmb3VuZCB3aXRoIG51bWJlciAlcy4iKSwgYXJnKTsKK30KKwor c3RhdGljIHZvaWQKK3NraXBfZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywg aW50IGZyb21fdHR5KQoreworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmUs ICp0ZW1wLCAqYl9wcmV2OworICBpbnQgZm91bmQgPSAwOworCisgIGJfcHJl diA9IDA7CisgIEFMTF9TS0lQTElTVF9FTlRSSUVTX1NBRkUgKGUsIHRlbXAp CisgICAgaWYgKGFyZyA9PSAwIHx8IG51bWJlcl9pc19pbl9saXN0IChhcmcs IGUtPm51bWJlcikpCisgICAgICB7CisJaWYgKGJfcHJldiAhPSAwKQorCSAg Yl9wcmV2LT5uZXh0ID0gZS0+bmV4dDsKKwllbHNlCisJICBza2lwbGlzdF9l bnRyeV9jaGFpbiA9IGUtPm5leHQ7CisKKwl4ZnJlZSAoZS0+ZnVuY3Rpb25f bmFtZSk7CisJeGZyZWUgKGUtPmZpbGVuYW1lKTsKKwl4ZnJlZSAoZSk7Cisg ICAgICAgIGZvdW5kID0gMTsKKyAgICAgIH0KKyAgICBlbHNlCisgICAgICB7 CisJYl9wcmV2ID0gZTsKKyAgICAgIH0KKworICBpZiAoIWZvdW5kKQorICAg IGVycm9yIChfKCJObyBza2lwbGlzdCBlbnRyaWVzIGZvdW5kIHdpdGggbnVt YmVyICVzLiIpLCBhcmcpOworfQorCisvKiBDcmVhdGUgYSBza2lwbGlzdCBl bnRyeSBmb3IgdGhlIGdpdmVuIHBjIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdp dmVuCisgICBmdW5jdGlvbiBuYW1lIGFuZCBhZGQgaXQgdG8gdGhlIGxpc3Qu ICAqLworCitzdGF0aWMgdm9pZAorc2tpcF9mdW5jdGlvbl9wYyAoQ09SRV9B RERSIHBjLCBjaGFyICpuYW1lLCBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCwKKwkJ ICBpbnQgcGVuZGluZykKK3sKKyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICpl ID0gWFpBTExPQyAoc3RydWN0IHNraXBsaXN0X2VudHJ5KTsKKworICBlLT5w YyA9IHBjOworICBlLT5nZGJhcmNoID0gYXJjaDsKKyAgZS0+ZW5hYmxlZCA9 IDE7CisgIGUtPnBlbmRpbmcgPSBwZW5kaW5nOworICBlLT5mdW5jdGlvbl9u YW1lID0geHN0cmR1cCAobmFtZSk7CisKKyAgYWRkX3NraXBsaXN0X2VudHJ5 IChlKTsKKworICBpZiAoIXBlbmRpbmcpCisgICAgcHJpbnRmX2ZpbHRlcmVk IChfKCJGdW5jdGlvbiAlcyBhdCAlcyB3aWxsIGJlIHNraXBwZWQgd2hlbiBz dGVwcGluZy5cbiIpLAorCQkgICAgIG5hbWUsIHBhZGRyZXNzIChnZXRfY3Vy cmVudF9hcmNoICgpLCBwYykpOworICBlbHNlCisgICAgcHJpbnRmX2ZpbHRl cmVkIChfKCJGdW5jdGlvbiAlcyB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVw cGluZywgIgorCQkgICAgICAgInBlbmRpbmcgc2hhcmVkIGxpYnJhcnkgbG9h ZC5cbiIpLAorCQkgICAgIG5hbWUpOworfQorCisvKiBBZGQgdGhlIGdpdmVu IHNraXBsaXN0IGVudHJ5IHRvIG91ciBsaXN0LCBhbmQgc2V0IHRoZSBlbnRy eSdzIG51bWJlci4gICovCisKK3N0YXRpYyB2b2lkCithZGRfc2tpcGxpc3Rf ZW50cnkgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSkKK3sKKyAgc3RydWN0 IHNraXBsaXN0X2VudHJ5ICplMTsKKworICBlLT5udW1iZXIgPSArK3NraXBs aXN0X2VudHJ5X2NvdW50OworCisgIC8qIEFkZCB0byB0aGUgZW5kIG9mIHRo ZSBjaGFpbiBzbyB0aGF0IHRoZSBsaXN0IG9mCisgICAgIHNraXBsaXN0IGVu dHJpZXMgd2lsbCBiZSBpbiBudW1lcmljYWwgb3JkZXIuICAqLworCisgIGUx ID0gc2tpcGxpc3RfZW50cnlfY2hhaW47CisgIGlmIChlMSA9PSAwKQorICAg IHNraXBsaXN0X2VudHJ5X2NoYWluID0gZTsKKyAgZWxzZQorICAgIHsKKyAg ICAgIHdoaWxlIChlMS0+bmV4dCkKKwllMSA9IGUxLT5uZXh0OworICAgICAg ZTEtPm5leHQgPSBlOworICAgIH0KK30KKworLyogRG9lcyB0aGUgZ2l2ZW4g cGMgY29ycmVzcG9uZCB0byB0aGUgYmVnaW5uaW5nIG9mIGEgc2tpcHBlZCBm dW5jdGlvbj8gKi8KKworaW50CitmdW5jdGlvbl9wY19pc19tYXJrZWRfZm9y X3NraXAgKENPUkVfQUREUiBwYykKK3sKKyAgaW50IHNlYXJjaGVkX2Zvcl9z YWwgPSAwOworICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKKyAgY2hh ciAqZmlsZW5hbWUgPSBOVUxMOworICBzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkg KmU7CisKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisgICAgeworICAg ICAgaWYgKCFlLT5lbmFibGVkIHx8IGUtPnBlbmRpbmcpCisJY29udGludWU7 CisKKyAgICAgIC8qIERvZXMgdGhlIHBjIHdlJ3JlIHN0ZXBwaW5nIGludG8g bWF0Y2ggZSdzIHN0b3JlZCBwYz8gKi8KKyAgICAgIGlmIChlLT5wYyAhPSAw ICYmIHBjID09IGUtPnBjKQorCXJldHVybiAxOworCisgICAgICBpZiAoZS0+ ZmlsZW5hbWUgIT0gMCkKKwl7CisJICAvKiBHZXQgdGhlIGZpbGVuYW1lIGNv cnJlc3BvbmRpbmcgdG8gdGhpcyBwYywgaWYgd2UgaGF2ZW4ndAorCSAgICog eWV0LiAgKi8KKwkgIGlmICghc2VhcmNoZWRfZm9yX3NhbCkKKwkgICAgewor CSAgICAgIHNhbCA9IGZpbmRfcGNfbGluZSAocGMsIDApOworICAgICAgICAg ICAgICBpZiAoc2FsLnN5bXRhYiAhPSAwKQorICAgICAgICAgICAgICAgIGZp bGVuYW1lID0gc2FsLnN5bXRhYi0+ZmlsZW5hbWU7CisJICAgICAgc2VhcmNo ZWRfZm9yX3NhbCA9IDE7CisJICAgIH0KKwkgIGlmIChmaWxlbmFtZSAhPSAw ICYmIHN0cmNtcCAoZmlsZW5hbWUsIGUtPmZpbGVuYW1lKSA9PSAwKQorCSAg ICByZXR1cm4gMTsKKwl9CisgICAgfQorCisgIHJldHVybiAwOworfQorCisv KiBSZS1zZXQgdGhlIHNraXAgbGlzdCBhZnRlciBzeW1ib2xzIGhhdmUgYmVl biByZS1sb2FkZWQuICAqLwordm9pZAorc2tpcF9yZV9zZXQgKHZvaWQpCit7 CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZTsKKworICBBTExfU0tJUExJ U1RfRU5UUklFUyAoZSkKKyAgICB7CisgICAgICBpZiAoZS0+ZmlsZW5hbWUg IT0gMCkKKwl7CisJICAvKiBJZiBpdCdzIGFuIGVudHJ5IHRlbGxpbmcgdXMg dG8gc2tpcCBhIGZpbGUsIGJ1dCB0aGUgZW50cnkgaXMKKwkgICAgIGN1cnJl bnRseSBwZW5kaW5nIGEgc29saWIgbG9hZCwgbGV0J3Mgc2VlIGlmIHdlIG5v dyBrbm93CisJICAgICBhYm91dCB0aGUgZmlsZS4gICovCisJICBzdHJ1Y3Qg c3ltdGFiICpzeW10YWIgPSBsb29rdXBfc3ltdGFiIChlLT5maWxlbmFtZSk7 CisJICBpZiAoc3ltdGFiICE9IDApCisJICAgIHsKKwkgICAgICB4ZnJlZSAo ZS0+ZmlsZW5hbWUpOworCSAgICAgIGUtPmZpbGVuYW1lID0geHN0cmR1cCAo c3ltdGFiLT5maWxlbmFtZSk7CisJICAgICAgZS0+Z2RiYXJjaCA9IGdldF9v YmpmaWxlX2FyY2ggKHN5bXRhYi0+b2JqZmlsZSk7CisJICAgICAgZS0+cGVu ZGluZyA9IDA7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGUt PnBlbmRpbmcgPSAxOworCSAgICB9CisJfQorICAgICAgZWxzZSBpZiAoZS0+ ZnVuY3Rpb25fbmFtZSAhPSAwKQorICAgICAgICB7CisJICBjaGFyICpmdW5j X25hbWUgPSBlLT5mdW5jdGlvbl9uYW1lOworCSAgc3RydWN0IHN5bXRhYnNf YW5kX2xpbmVzIHNhbHM7CisJICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2Vw dGlvbiBkZWNvZGVfZXhjZXB0aW9uOworCisJICBUUllfQ0FUQ0ggKGRlY29k ZV9leGNlcHRpb24sIFJFVFVSTl9NQVNLX0VSUk9SKQorCSAgICB7CisJICAg ICAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZmdW5jX25hbWUsIDEsIDAsIDAs IDApOworCSAgICB9CisKKwkgIGlmIChkZWNvZGVfZXhjZXB0aW9uLnJlYXNv biA+PSAwCisgICAgICAgICAgICAgICYmIHNhbHMubmVsdHMgPT0gMSAmJiBz dHJsZW4gKGZ1bmNfbmFtZSkgPT0gMCkKKwkgICAgeworCSAgICAgIHN0cnVj dCBzeW10YWJfYW5kX2xpbmUgc2FsID0gc2Fscy5zYWxzWzBdOworCSAgICAg IENPUkVfQUREUiBwYyA9IHNhbC5wYzsKKwkgICAgICBDT1JFX0FERFIgZnVu Y19zdGFydCA9IDA7CisJICAgICAgc3RydWN0IGdkYmFyY2ggKmFyY2ggPSBn ZXRfc2FsX2FyY2ggKHNhbCk7CisgICAgICAgICAgICAgIGNoYXIgKmZ1bmNf bmFtZTsKKworCSAgICAgIGlmIChmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24g KHBjLCAmZnVuY19uYW1lLCAmZnVuY19zdGFydCwgMCkpCisJCXsKKwkJICBl LT5wZW5kaW5nID0gMDsKKyAgICAgICAgICAgICAgICAgIGUtPmZ1bmN0aW9u X25hbWUgPSB4c3RyZHVwIChmdW5jX25hbWUpOworCQkgIGUtPnBjID0gZnVu Y19zdGFydDsKKwkJICBlLT5nZGJhcmNoID0gYXJjaDsKKwkJfQorCSAgICB9 CisJICBlbHNlCisJICAgIHsKKwkgICAgICBlLT5wZW5kaW5nID0gMTsKKwkg ICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkCitfaW5pdGlhbGl6 ZV9zdGVwX3NraXAgKHZvaWQpCit7CisgIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICpjOworCisgIHNraXBsaXN0X2VudHJ5X2NoYWluID0gMDsKKyAgc2tp cGxpc3RfZW50cnlfY291bnQgPSAwOworCisgIGFkZF9wcmVmaXhfY21kICgi c2tpcCIsIGNsYXNzX2JyZWFrcG9pbnQsIHNraXBfZnVuY3Rpb25fY29tbWFu ZCwgXygiXAorSWdub3JlIGEgZnVuY3Rpb24gd2hpbGUgc3RlcHBpbmcuXG5c CitVc2FnZTogc2tpcCBbRlVOQ1RJT04gTkFNRV1cblwKK0lmIG5vIGZ1bmN0 aW9uIG5hbWUgaXMgZ2l2ZW4sIGlnbm9yZSB0aGUgY3VycmVudCBmdW5jdGlv bi4iKSwKKyAgICAgICAgICAgICAgICAgICZza2lwbGlzdCwgInNraXAgIiwg MSwgJmNtZGxpc3QpOworCisgIGMgPSBhZGRfY21kICgiZmlsZSIsIGNsYXNz X2JyZWFrcG9pbnQsIHNraXBfZmlsZV9jb21tYW5kLCBfKCJcCitJZ25vcmUg YSBmaWxlIHdoaWxlIHN0ZXBwaW5nLlxuXAorVXNhZ2U6IHNraXAgZmlsZSBb RklMRU5BTUVdXG5cCitJZiBubyBmaWxlbmFtZSBpcyBnaXZlbiwgaWdub3Jl IHRoZSBjdXJyZW50IGZpbGUuIiksCisJICAgICAgICZza2lwbGlzdCk7Cisg IHNldF9jbWRfY29tcGxldGVyIChjLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwor CisgIGMgPSBhZGRfY21kICgiZnVuY3Rpb24iLCBjbGFzc19icmVha3BvaW50 LCBza2lwX2Z1bmN0aW9uX2NvbW1hbmQsIF8oIlwKK0lnbm9yZSBhIGZ1bmN0 aW9uIHdoaWxlIHN0ZXBwaW5nLlxuXAorVXNhZ2U6IHNraXAgZnVuY3Rpb24g W0ZVTkNUSU9OIE5BTUVdXG5cCitJZiBubyBmdW5jdGlvbiBuYW1lIGlzIGdp dmVuLCBza2lwIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiIpLAorCSAgICAgICAm c2tpcGxpc3QpOworICBzZXRfY21kX2NvbXBsZXRlciAoYywgbG9jYXRpb25f Y29tcGxldGVyKTsKKworICBhZGRfY21kICgiZW5hYmxlIiwgY2xhc3NfYnJl YWtwb2ludCwgc2tpcF9lbmFibGVfY29tbWFuZCwgXygiXAorRW5hYmxlIHNr aXAgZW50cmllcy4gIFlvdSBjYW4gc3BlY2lmeSBudW1iZXJzIChlLmcuIFwi c2tpcCBlbmFibGUgMSAzXCIpLCBcCityYW5nZXMgKGUuZy4gXCJza2lwIGVu YWJsZSA0LThcIiksIG9yIGJvdGggKGUuZy4gXCJza2lwIGVuYWJsZSAxIDMg NC04XCIpLlxuXG5cCitJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhbnkgbnVtYmVy cyBvciByYW5nZXMsIHdlJ2xsIGVuYWJsZSBhbGwgc2tpcCBlbnRyaWVzLlxu XG5cCitVc2FnZTogc2tpcCBlbmFibGUgW05VTUJFUlMgQU5EL09SIFJBTkdF U10iKSwKKwkgICAmc2tpcGxpc3QpOworCisgIGFkZF9jbWQgKCJkaXNhYmxl IiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9kaXNhYmxlX2NvbW1hbmQsIF8o IlwKK0Rpc2FibGUgc2tpcCBlbnRyaWVzLiAgWW91IGNhbiBzcGVjaWZ5IG51 bWJlcnMgKGUuZy4gXCJza2lwIGRpc2FibGUgMSAzXCIpLCBcCityYW5nZXMg KGUuZy4gXCJza2lwIGRpc2FibGUgNC04XCIpLCBvciBib3RoIChlLmcuIFwi c2tpcCBkaXNhYmxlIDEgMyA0LThcIikuXG5cblwKK0lmIHlvdSBkb24ndCBz cGVjaWZ5IGFueSBudW1iZXJzIG9yIHJhbmdlcywgd2UnbGwgZGlzYWJsZSBh bGwgc2tpcCBlbnRyaWVzLlxuXG5cCitVc2FnZTogc2tpcCBkaXNhYmxlIFtO VU1CRVJTIEFORC9PUiBSQU5HRVNdIiksCisJICAgJnNraXBsaXN0KTsKKwor ICBhZGRfY21kICgiZGVsZXRlIiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9k ZWxldGVfY29tbWFuZCwgXygiXAorRGVsZXRlIHNraXAgZW50cmllcy4gIFlv dSBjYW4gc3BlY2lmeSBudW1iZXJzIChlLmcuIFwic2tpcCBkZWxldGUgMSAz XCIpLCBcCityYW5nZXMgKGUuZy4gXCJza2lwIGRlbGV0ZSA0LThcIiksIG9y IGJvdGggKGUuZy4gXCJza2lwIGRlbGV0ZSAxIDMgNC04XCIpLlxuXG5cCitJ ZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhbnkgbnVtYmVycyBvciByYW5nZXMsIHdl J2xsIGRlbGV0ZSBhbGwgc2tpcCBlbnRyaWVzLlxuXG5cCitVc2FnZTogc2tp cCBkZWxldGUgW05VTUJFUlMgQU5EL09SIFJBTkdFU10iKSwKKyAgICAgICAg ICAgJnNraXBsaXN0KTsKKworICBhZGRfaW5mbyAoInNraXAiLCBza2lwX2lu Zm8sIF8oIlwKK0Rpc3BsYXkgdGhlIHN0YXR1cyBvZiBza2lwcy4gIFlvdSBj YW4gc3BlY2lmeSBudW1iZXJzIChlLmcuIFwic2tpcCBpbmZvIDEgM1wiKSwg XAorcmFuZ2VzIChlLmcuIFwic2tpcCBpbmZvIDQtOFwiKSwgb3IgYm90aCAo ZS5nLiBcInNraXAgaW5mbyAxIDMgNC04XCIpLlxuXG5cCitJZiB5b3UgZG9u J3Qgc3BlY2lmeSBhbnkgbnVtYmVycyBvciByYW5nZXMsIHdlJ2xsIHNob3cg YWxsIHNraXBzLlxuXG5cCitVc2FnZTogc2tpcCBpbmZvIFtOVU1CRVJTIEFO RC9PUiBSQU5HRVNdXG5cCitUaGUgXCJUeXBlXCIgY29sdW1uIGluZGljYXRl cyBvbmUgb2Y6XG5cCitcdGZpbGUgICAgICAgIC0gaWdub3JlZCBmaWxlXG5c CitcdGZ1bmN0aW9uICAgIC0gaWdub3JlZCBmdW5jdGlvbiIpKTsKK30KZGlm ZiAtLWdpdCBhL2dkYi9za2lwLmggYi9nZGIvc2tpcC5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YWE0ZjMKLS0tIC9kZXYvbnVs bAorKysgYi9nZGIvc2tpcC5oCkBAIC0wLDAgKzEsMjggQEAKKy8qIEhlYWRl ciBmb3Igc2tpcHBpbmcgb3ZlciB1bmludGVyZXN0aW5nIGZpbGVzIGFuZCBm dW5jdGlvbnMgd2hlbiBkZWJ1Z2dpbmcuCisKKyAgIENvcHlyaWdodCAoQykg MjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2lmICFkZWZpbmVkIChTS0lQX0gp CisjZGVmaW5lIFNLSVBfSAorCisvKiBSZXR1cm5zIDEgaWYgdGhlIGdpdmVu IHBjIGlzIG1hcmtlZCBmb3Igc2tpcCBhbmQgc2hvdWxkbid0IGJlCisgICBz dGVwcGVkIGludG8uICBPdGhlcndpc2UsIHJldHVybnMgMC4gICovCitpbnQg ZnVuY3Rpb25fcGNfaXNfbWFya2VkX2Zvcl9za2lwIChDT1JFX0FERFIgcGMp OworCisvKiBSZS1zZXQgdGhlIHNraXAgbGlzdCBhZnRlciBzeW1ib2xzIGhh dmUgYmVlbiByZWxvYWRlZC4gICovCit2b2lkIHNraXBfcmVfc2V0ICh2b2lk KTsKKworI2VuZGlmIC8qICFkZWZpbmVkIChTS0lQX0gpICovCmRpZmYgLS1n aXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCmluZGV4IDAwMzcyNWEu LjkxMzZkYWEgMTAwNjQ0Ci0tLSBhL2dkYi9zdGFjay5jCisrKyBiL2dkYi9z dGFjay5jCkBAIC05Niw2ICs5NiwxMiBAQCBzdGF0aWMgdm9pZCBwcmludF9m cmFtZSAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcHJpbnRfbGV2 ZWwsCiAJCQkgZW51bSBwcmludF93aGF0IHByaW50X3doYXQsICBpbnQgcHJp bnRfYXJncywKIAkJCSBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7CiAK K3N0YXRpYyB2b2lkIHNldF9sYXN0X2Rpc3BsYXllZF9zYWwgKGludCB2YWxp ZCwKKwkJCQkgICAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwKKwkJ CQkgICAgQ09SRV9BRERSIGFkZHIsCisJCQkJICAgIHN0cnVjdCBzeW10YWIg KnN5bXRhYiwKKwkJCQkgICAgaW50IGxpbmUpOworCiAvKiBaZXJvIG1lYW5z IGRvIHRoaW5ncyBub3JtYWxseTsgd2UgYXJlIGludGVyYWN0aW5nIGRpcmVj dGx5IHdpdGggdGhlCiAgICB1c2VyLiAgT25lIG1lYW5zIHByaW50IHRoZSBm dWxsIGZpbGVuYW1lIGFuZCBsaW5lbnVtYmVyIHdoZW4gYQogICAgZnJhbWUg aXMgcHJpbnRlZCwgYW5kIGRvIHNvIGluIGEgZm9ybWF0IGVtYWNzMTgvZW1h Y3MxOS4yMiBjYW4KQEAgLTEwMyw2ICsxMDksMTQgQEAgc3RhdGljIHZvaWQg cHJpbnRfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHBy aW50X2xldmVsLAogICAgY2FzZXMgYW5kIGluIGEgc2xpZ2h0bHkgZGlmZmVy ZW50IHN5bnRheC4gICovCiAKIGludCBhbm5vdGF0aW9uX2xldmVsID0gMDsK KworLyogVGhlc2UgdmFyaWFibGVzIGhvbGQgdGhlIGxhc3Qgc3ltdGFiIGFu ZCBsaW5lIHdlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KKyAqIFRoaXMgaXMg d2hlcmUgd2UgaW5zZXJ0IGEgYnJlYWtwb2ludCBvciBhIHNraXBsaXN0IGVu dHJ5IGJ5IGRlZmF1bHQuICAqLworc3RhdGljIGludCBsYXN0X2Rpc3BsYXll ZF9zYWxfdmFsaWQgPSAwOworc3RhdGljIHN0cnVjdCBwcm9ncmFtX3NwYWNl ICpsYXN0X2Rpc3BsYXllZF9wc3BhY2UgPSAwOworc3RhdGljIENPUkVfQURE UiBsYXN0X2Rpc3BsYXllZF9hZGRyID0gMDsKK3N0YXRpYyBzdHJ1Y3Qgc3lt dGFiICpsYXN0X2Rpc3BsYXllZF9zeW10YWIgPSAwOworc3RhdGljIGludCBs YXN0X2Rpc3BsYXllZF9saW5lID0gMDsKIAwKIAogLyogUmV0dXJuIDEgaWYg d2Ugc2hvdWxkIGRpc3BsYXkgdGhlIGFkZHJlc3MgaW4gYWRkaXRpb24gdG8g dGhlIGxvY2F0aW9uLApAQCAtODcyLDkgKzg4Niw5IEBAIHByaW50X2ZyYW1l X2luZm8gKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHByaW50X2xl dmVsLAogICAgICAgQ09SRV9BRERSIHBjOwogCiAgICAgICBpZiAoZ2V0X2Zy YW1lX3BjX2lmX2F2YWlsYWJsZSAoZnJhbWUsICZwYykpCi0Jc2V0X2RlZmF1 bHRfYnJlYWtwb2ludCAoMSwgc2FsLnBzcGFjZSwgcGMsIHNhbC5zeW10YWIs IHNhbC5saW5lKTsKKwlzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsICgxLCBzYWwu cHNwYWNlLCBwYywgc2FsLnN5bXRhYiwgc2FsLmxpbmUpOwogICAgICAgZWxz ZQotCXNldF9kZWZhdWx0X2JyZWFrcG9pbnQgKDAsIDAsIDAsIDAsIDApOwor CXNldF9sYXN0X2Rpc3BsYXllZF9zYWwgKDAsIDAsIDAsIDAsIDApOwogICAg IH0KIAogICBhbm5vdGF0ZV9mcmFtZV9lbmQgKCk7CkBAIC04ODIsNiArODk2 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 c3ltZmlsZS5jCmluZGV4IGRmY2UzODAuLmE0ZWFhZDkgMTAwNjQ0Ci0tLSBh L2dkYi9zeW1maWxlLmMKKysrIGIvZ2RiL3N5bWZpbGUuYwpAQCAtNTYsNiAr NTYsNyBAQAogI2luY2x1ZGUgImVsZi1iZmQuaCIKICNpbmNsdWRlICJzb2xp Yi5oIgogI2luY2x1ZGUgInJlbW90ZS5oIgorI2luY2x1ZGUgInN0YWNrLmgi CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxmY250bC5o PgpAQCAtMjgzOSw3ICsyODQwLDcgQEAgY2xlYXJfc3ltdGFiX3VzZXJzIChp bnQgYWRkX2ZsYWdzKQogICBjbGVhcl9kaXNwbGF5cyAoKTsKICAgaWYgKChh ZGRfZmxhZ3MgJiBTWU1GSUxFX0RFRkVSX0JQX1JFU0VUKSA9PSAwKQogICAg IGJyZWFrcG9pbnRfcmVfc2V0ICgpOwotICBzZXRfZGVmYXVsdF9icmVha3Bv aW50ICgwLCBOVUxMLCAwLCAwLCAwKTsKKyAgY2xlYXJfbGFzdF9kaXNwbGF5 ZWRfc2FsICgpOwogICBjbGVhcl9wY19mdW5jdGlvbl9jYWNoZSAoKTsKICAg b2JzZXJ2ZXJfbm90aWZ5X25ld19vYmpmaWxlIChOVUxMKTsKIApkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgYi9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwppbmRleCBjZWVjYWQxLi5lNWQ4MTE0IDEwMDY0NAotLS0g YS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZworKysgYi9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTEwLTA2ICBKdXN0 aW4gTGViYXIgPGp1c3Rpbi5sZWJhckBnbWFpbC5jb20+CisKKwlBZGQgdGVz dHMgZm9yIHNraXAgY29tbWFuZC4KKwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9z a2lwLXNvbGliLWxpYi5jOiBOZXcKKwkqIHRlc3RzdWl0ZS9nZGIuYmFzZS9z a2lwLXNvbGliLW1haW4uYzogTmV3CisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2Uv c2tpcC1zb2xpYi5leHA6IE5ldworCSogdGVzdHN1aXRlL2dkYi5iYXNlL3Nr aXAuYzogTmV3CisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC5leHA6IE5l dworCSogdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAxLmM6IE5ldworCSogdGVz dHN1aXRlL2dkYi5iYXNlL01ha2VmaWxlLmluOiBBZGRpbmcgbmV3IGZpbGVz LgorCiAyMDExLTEwLTMxICBZYW8gUWkgIDx5YW9AY29kZXNvdXJjZXJ5LmNv bT4KIAkgICAgUGVkcm8gQWx2ZXMgIDxwZWRyb0Bjb2Rlc291cmNlcnkuY29t PgogCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL01ha2Vm aWxlLmluIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtlZmlsZS5pbgpp bmRleCA3MmYxYmE0Li43Y2ViMTIxIDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL01ha2VmaWxlLmluCisrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvTWFrZWZpbGUuaW4KQEAgLTMwLDggKzMwLDggQEAgRVhFQ1VU QUJMRVMgPSBhMi1ydW4gYWR2YW5jZSBhbGwtdHlwZXMgYW5ub3RhMSBhbm5v dGExLXdhdGNoX3RocmVhZF9udW0gXAogCXNlcHN5bXRhYi5kZWJ1ZyBzZXBz eW10YWIuc3RyaXBwZWQgc2V0c2hvdyBzZXR2YXIgc2htYWluIHNocmVsb2Mg XAogCXNpZ2FsbCBzaWdhbHRzdGFjayBzaWdicHQgc2lnY2hsZCBzaWdpbmZv IHNpZ2luZm8tYWRkciBcCiAJc2lnaW5mby1pbmZjYWxsIHNpZ2luZm8tb2Jq IHNpZ25hbHMgc2lnbnVsbCBzaWdyZXBlYXQgc2lnc3RlcCBcCi0Jc2l6ZW9m IHNvbGliIHNvbGliLWNvcnJ1cHRlZCBzb2xpYi1kaXNwbGF5LW1haW4gc29s aWItbm9kaXIgXAotCXNvbGliLW92ZXJsYXAtbWFpbi0weDQwMDAwMDAwIHNv bGliLXN5bWJvbC1tYWluIHNvbGliLXdlYWsgXAorCXNpemVvZiBza2lwIHNr aXAtc29saWIgc29saWIgc29saWItY29ycnVwdGVkIHNvbGliLWRpc3BsYXkt bWFpbgorCXNvbGliLW5vZGlyIHNvbGliLW92ZXJsYXAtbWFpbi0weDQwMDAw MDAwIHNvbGliLXN5bWJvbC1tYWluIHNvbGliLXdlYWsgXAogCXNvbGliLXdl YWstbGliMiBzb2xpYl9zbCBzby1pbXBsLWxkIHNvLWluZHItY2wgXAogCXN0 YWNrLWNoZWNraW5nIHN0YXJ0IHN0ZXAtYnJlYWsgc3RlcC1idCBzdGVwLWxp bmUgc3RlcC1yZXN1bWUtaW5mY2FsbCBcCiAJc3RlcC10ZXN0IHN0b3JlIHN0 cnVjdHMtdCogc3RydWN0czIgc3RydWN0czMgXApkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLWxpYi5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLWxpYi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MmNkMDEKLS0tIC9kZXYvbnVs bAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbGli LmMKQEAgLTAsMCArMSwxMSBAQAorLyogU2ltcGxlIHNoYXJlZCBsaWJyYXJ5 ICovCisKK2ludCBzcXVhcmUoaW50IG51bSkKK3sKKyAgcmV0dXJuIG11bHRp cGx5KG51bSwgbnVtKTsKK30KKworaW50IG11bHRpcGx5KGludCBhLCBpbnQg YikKK3sKKyAgcmV0dXJuIGEgKiBiOworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLW1haW4uYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1tYWluLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ2YmI1ZgotLS0gL2Rldi9udWxs CisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1tYWlu LmMKQEAgLTAsMCArMSw2IEBACitpbnQgc3F1YXJlKGludCBudW0pOworCitp bnQgbWFpbigpCit7CisgIHJldHVybiBzcXVhcmUoMCk7Cit9CmRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWIuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLmV4cApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmUyNWE0Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGli LmV4cApAQCAtMCwwICsxLDEzMCBAQAorIyAgIENvcHlyaWdodCAyMDExIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorCisjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKdXN0aW4gTGViYXIu IChqdXN0aW4ubGViYXJAZ21haWwuY29tKQorCisjCisjIFRlc3RzIHNraXBw aW5nIHNoYXJlZCBsaWJyYXJpZXMuCisjCisKKyMgVGhpcyBvbmx5IHdvcmtz IG9uIEdOVS9MaW51eC4KK2lmIHsgIVtpc25hdGl2ZV0gfHwgW2lzX3JlbW90 ZSBob3N0XSB8fCAhW2lzdGFyZ2V0ICotbGludXgqXSB8fCBbc2tpcF9zaGxp Yl90ZXN0c119IHsKKyAgICBjb250aW51ZQorfQorCitzZXQgdGVzdCAic2tp cC1zb2xpYiIKK3NldCBzcmNmaWxlX21haW4gIiR7dGVzdH0tbWFpbi5jIgor c2V0IGJpbmZpbGVfbWFpbiAiJHt0ZXN0fS10ZXN0Igorc2V0IHNyY2ZpbGVf bGliICIke3Rlc3R9LWxpYi5jIgorc2V0IGxpYm5hbWUgImxpYiR7dGVzdH0i CitzZXQgYmluZmlsZV9saWIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2xpYm5h bWV9LnNvCisKKyMKKyMgQ29tcGlsZSBvdXIgcHJvZ3JhbSB1bmRlciB0ZXN0 LiAgVGhlIG1haW4gcHJvZ3JhbSByZWZlcmVuY2VzIGEgc2hhcmVkIGxpYnJh cnkKKyMgbGlic2tpcC1zb2xpYi5zbywgd2hpY2ggY29udGFpbnMgdHdvIGZ1 bmN0aW9ucywgc3F1YXJlKCksIHdoaWNoIGlzCisjIHJlZmVyZW5jZWQgYnkg dGhlIG1haW4gcHJvZ3JhbSwgYW5kIG11bHRpcGx5KCksIHdoaWNoIGlzIG5v dCByZWZlcmVuY2VkIGJ5CisjIHRoZSBtYWluIHByb2dyYW0uCisjCisKK2lm IHtbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSBbbGlzdCBkZWJ1ZyBhZGRpdGlv bmFsX2ZsYWdzPS1mUElDIC1XbCwtc29uYW1lLCR7bGlibmFtZX0uc29dXSAh PSAiIn0geworICAgIHJldHVybiAtMQorfQorCitpZiB7W2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9tYWlufSIgIiR7Ymlu ZmlsZV9tYWlufS5vIiBvYmplY3QgZGVidWddICE9ICIifSB7CisgICAgcmV0 dXJuIC0xCit9CisKK2lmIHtbZ2RiX2NvbXBpbGUgIiR7YmluZmlsZV9tYWlu fS5vIiAiJHtiaW5maWxlX21haW59IiBleGVjdXRhYmxlIFwKKyAgICAgICAg ICAgICAgICAgW2xpc3QgZGVidWcgImFkZGl0aW9uYWxfZmxhZ3M9LUwke29i amRpcn0vJHtzdWJkaXJ9IC1sJHt0ZXN0fSBcCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1XbCwtcnBhdGg9JHtv YmpkaXJ9LyR7c3ViZGlyfSJdXSAhPSAiIn0geworICAgIHJldHVybiAtMQor fQorCitnZGJfc3RhcnQKK2NsZWFuX3Jlc3RhcnQgJHtiaW5maWxlX21haW59 CisKKyMKKyMgQXQgdGhpcyBwb2ludCwgaWYgd2UgdHJ5IHRvIHNraXAgdGhl IGZpbGUgJHtzcmNmaWxlX2xpYn0gb3IgdGhlIGZ1bmN0aW9uCisjIG11bHRp cGx5KCksIHdlIHNob3VsZCBnZXQgYSBwcm9tcHQgYXNraW5nIHVzIGlmIHdl IHdhbnQgdG8gZW5hYmxlIHRoZQorIyBza2lwIGVudHJ5IHBlbmRpbmcgYSBz aGFyZWQgbGlicmFyeSBsb2FkLgorIworCitnZGJfdGVzdCAic2tpcCBmaWxl ICR7c3JjZmlsZV9saWJ9IiBcCisgICJGaWxlICR7c3JjZmlsZV9saWJ9IHdp bGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nLiIgXAorICAiaWdub3Jpbmcg ZmlsZSBpbiBzb2xpYiIgXAorICAiTm8gc291cmNlIGZpbGUgbmFtZWQgJHtz cmNmaWxlX2xpYn0uKgorSWdub3JlIGZpbGUgcGVuZGluZyBmdXR1cmUgc2hh cmVkIGxpYnJhcnkgbG9hZC4qIiBcCisgICJ5IgorCisjCisjIERvZXMgaW5m byBza2lwIGxpc3QgdGhpcyBlbnRyeSBhcyBwZW5kaW5nPworIworZ2RiX3Rl c3QgImluZm8gc2tpcCIgXAorICAiTnVtXFxzK1R5cGVcXHMrRW5iXFxzK0Fk ZHJlc3NcXHMrV2hhdFxccyoKKzFcXHMrZmlsZVxccyt5XFxzK1xccyske3Ny Y2ZpbGVfbGlifSBcXChQRU5ESU5HXFwpXFxzKiIgXAorICAiaW5mbyBza2lw IHdpdGggcGVuZGluZyBmaWxlIgorCitpZiAhW3J1bnRvX21haW5dIHsgZmFp bCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9CisKKyMKKyMgV2Ugc2hvdWxk bid0IHN0ZXAgaW50byBzcXVhcmUoKSwgc2luY2Ugd2Ugc2tpcHBlZCBza2lw LXNvbGliLWxpYi5jLgorIworZ2RiX3Rlc3QgInN0ZXAiICIiCitnZGJfdGVz dCAiYnQiICIjMFxccyttYWluLioiICJzdGVwIGFmdGVyIGlnbm9yaW5nIHNv bGliIGZpbGUuIgorCisjCisjIE91ciBlbnRyeSBzaG91bGQgbm8gbG9uZ2Vy IGJlIHBlbmRpbmcuICBOb3RlIHRoYXQgd2UgdW5mb3J0dW5hdGVseSBuZWVk IHRvIGRvCisjIGF0IGxlYXN0IG9uZSBzdGVwIGJlZm9yZSB0aGUgZW50cnkg d2lsbCBiZSB1bm1hcmtlZCBhcyBwZW5kaW5nLgorIworZ2RiX3Rlc3QgImlu Zm8gc2tpcCIgXAorICAiTnVtXFxzK1R5cGVcXHMrRW5iXFxzK0FkZHJlc3Nc XHMrV2hhdFxccyoKKzFcXHMrZmlsZVxccyt5XFxzK1xccysuKiR7c3JjZmls ZV9saWJ9XFxzKiIgXAorICAiaW5mbyBza2lwIHdpdGggcGVuZGluZyBmaWxl IgorCisjCisjIE5vdyByZXN0YXJ0IGdkYiBhbmQgdGVzdGluZyBpZ25vcmlu ZyBvZiBhIGZ1bmN0aW9uIGluc2lkZSBhIHNvbGliLgorIworZ2RiX2V4aXQK K2dkYl9zdGFydAorY2xlYW5fcmVzdGFydCAke2JpbmZpbGVfbWFpbn0KKwor Z2RiX3Rlc3QgInNraXAgZnVuY3Rpb24gbXVsdGlwbHkiIFwKKyAgIkZ1bmN0 aW9uIG11bHRpcGx5IHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nLCBw ZW5kaW5nIHNoYXJlZCBsaWJyYXJ5IGxvYWQuIiBcCisgICJpZ25vcmluZyBm dW5jdGlvbiBpbiBzb2xpYiIgXAorIk5vIGZ1bmN0aW9uIGZvdW5kIG5hbWVk IG11bHRpcGx5Li4qCitJZ25vcmUgZnVuY3Rpb24gcGVuZGluZyBmdXR1cmUg c2hhcmVkIGxpYnJhcnkgbG9hZC4qIiBcCisgICJ5IgorCitpZiAhW3J1bnRv X21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9CisKKyMK KyMgT3VyIGZpcnN0IHN0ZXAgc2hvdWxkIHRha2UgdXMgaW50byBzcXVhcmUu CisjCitnZGJfdGVzdCAic3RlcCIgInNxdWFyZS4qIgorCisjCisjIE5vdyBv dXIgZW50cnkgc2hvdWxkIG5vIGxvbmdlciBiZSBwZW5kaW5nLgorIworZ2Ri X3Rlc3QgImluZm8gc2tpcCIgXAorICAiTnVtXFxzK1R5cGVcXHMrRW5iXFxz K0FkZHJlc3NcXHMrV2hhdFxccyoKKzFcXHMrZnVuY3Rpb25cXHMreVxccysw eFxbMC05YS1mXF0rXFxzK211bHRpcGx5IGF0IC4qJHtzcmNmaWxlX2xpYn06 LipcXHMqIiBcCisgICJza2lwIHNob3VsZCBubyBsb25nZXIgYmUgcGVuZGlu Zy4iCisKKyMKKyMgVGhpcyBzdGVwIHNob3VsZG4ndCBnbyBpbnRvIG11bHRp cGx5IC0tIHdlIHNob3VsZCBza2lwIGl0IGFuZCBnbyBvbiB0byB0aGUKKyMg bGFzdCBsaW5lIG9mIHNxdWFyZS4KKyMKK2dkYl90ZXN0ICJzdGVwIiAiIgor Z2RiX3Rlc3QgImJ0IiAiIzBcXHMrc3F1YXJlLioiCmRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAuYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2Uvc2tpcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjU2NWJhOTMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3NraXAuYwpAQCAtMCwwICsxLDEzIEBACitpbnQgZm9v KCk7CitpbnQgYmFyKCk7CitpbnQgYmF6KGludCwgaW50KTsKKworaW50IG1h aW4oKQoreworICByZXR1cm4gYmF6KGZvbygpLCBiYXIoKSk7Cit9CisKK2lu dCBmb28oKQoreworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3NraXAuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjdjNjk5ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3NraXAuZXhwCkBAIC0wLDAgKzEsMTc5IEBACisjICAg Q29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVu IGJ5IEp1c3RpbiBMZWJhci4gKGp1c3Rpbi5sZWJhckBnbWFpbC5jb20pCisK K2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rpbmcgc2tpcC5leHAgInNraXAiIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAge3NraXAuYyBza2lwMS5jIH0g XAorICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGVidWcgbm93YXJuaW5n c31dIH0geworICAgIHJldHVybiAtMQorfQorCitzZXQgc3JjZmlsZSBza2lw LmMKK3NldCBzcmNmaWxlMSBza2lwMS5jCisKKyMKKyMgUmlnaHQgYWZ0ZXIg d2Ugc3RhcnQgZ2RiLCB0aGVyZSdzIG5vIGRlZmF1bHQgZmlsZSBvciBmdW5j dGlvbiB0byBza2lwLgorIworZ2RiX3Rlc3QgInNraXAgZmlsZSIgIk5vIGRl ZmF1bHQgZmlsZSBub3cuIgorZ2RiX3Rlc3QgInNraXAgZnVuY3Rpb24iICJO byBkZWZhdWx0IGZ1bmN0aW9uIG5vdy4iCitnZGJfdGVzdCAic2tpcCIgIk5v IGRlZmF1bHQgZnVuY3Rpb24gbm93LiIKKworaWYgIVtydW50b19tYWluXSB7 IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorCisjCisjIFRlc3Qg fGluZm8gc2tpcHwgd2l0aCBhbiBlbXB0eSBza2lwbGlzdC4KKyMKK2dkYl90 ZXN0ICJpbmZvIHNraXAiICJOb3Qgc2tpcHBpbmcgYW55IGZpbGVzIG9yIGZ1 bmN0aW9uc1wuIiAiaW5mbyBza2lwIGVtcHR5IgorCisjCisjIENyZWF0ZSBh IHNraXBsaXN0IGVudHJ5IGZvciB0aGUgY3VycmVudCBmaWxlIGFuZCBmdW5j dGlvbi4KKyMKK2dkYl90ZXN0ICJza2lwIGZpbGUiICJGaWxlIC4qJHNyY2Zp bGUgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIKK2dkYl90ZXN0 ICJza2lwIiAiRnVuY3Rpb24gbWFpbiBhdCAuKiB3aWxsIGJlIHNraXBwZWQg d2hlbiBzdGVwcGluZ1wuIgorCisjCisjIENyZWF0ZSBhIHNraXBsaXN0IGVu dHJ5IGZvciBhIHNwZWNpZmllZCBmaWxlIGFuZCBmdW5jdGlvbi4KKyMKK2dk Yl90ZXN0ICJza2lwIGZpbGUgc2tpcDEuYyIgIkZpbGUgLiokc3JjZmlsZTEg d2lsbCBiZSBza2lwcGVkIHdoZW4gc3RlcHBpbmdcLiIKK2dkYl90ZXN0ICJz a2lwIGZ1bmN0aW9uIGJheiIgIkZ1bmN0aW9uIGJheiBhdCAuKiB3aWxsIGJl IHNraXBwZWQgd2hlbiBzdGVwcGluZ1wuIgorCisjCisjIFRlc3QgYmFkIHNr aXBsaXN0IGVudHJ5IG1vZGlmaWNhdGlvbiBjb21tYW5kcworIworZ2RiX3Rl c3QgInNraXAgZW5hYmxlIDk5OSIgIk5vIHNraXBsaXN0IGVudHJpZXMgZm91 bmQgd2l0aCBudW1iZXIgOTk5LiIKK2dkYl90ZXN0ICJza2lwIGRpc2FibGUg OTk5IiAiTm8gc2tpcGxpc3QgZW50cmllcyBmb3VuZCB3aXRoIG51bWJlciA5 OTkuIgorZ2RiX3Rlc3QgInNraXAgZGVsZXRlIDk5OSIgIk5vIHNraXBsaXN0 IGVudHJpZXMgZm91bmQgd2l0aCBudW1iZXIgOTk5LiIKK2dkYl90ZXN0ICJz a2lwIGVuYWJsZSBhIiAiQXJncyBtdXN0IGJlIG51bWJlcnMgb3IgJ1xcJCcg dmFyaWFibGVzLiIKK2dkYl90ZXN0ICJza2lwIGRpc2FibGUgYSIgIkFyZ3Mg bXVzdCBiZSBudW1iZXJzIG9yICdcXCQnIHZhcmlhYmxlcy4iCitnZGJfdGVz dCAic2tpcCBkZWxldGUgYSIgIkFyZ3MgbXVzdCBiZSBudW1iZXJzIG9yICdc XCQnIHZhcmlhYmxlcy4iCisKKyMKKyMgQXNrIGZvciBpbmZvIG9uIGEgc2tp cGxpc3QgZW50cnkgd2hpY2ggZG9lc24ndCBleGlzdC4KKyMKK2dkYl90ZXN0 ICJpbmZvIHNraXAgOTk5IiAiTm8gc2tpcGxpc3QgZW50cmllcyBmb3VuZCB3 aXRoIG51bWJlciA5OTkuIgorCisjCisjIERvZXMgfGluZm8gc2tpcHwgbG9v ayByaWdodD8KKyMKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyAgIk51bVxc cytUeXBlXFxzK0VuYlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisxXFxzK2Zp bGVcXHMreVxccysuKiRzcmNmaWxlXFxzKgorMlxccytmdW5jdGlvblxccyt5 XFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxbMC05XF0r XFxzKgorM1xccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZTFcXHMqCis0XFxz K2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxdKyBiYXogYXQgLiokc3Jj ZmlsZTE6XFswLTlcXStcXHMqIgorCisjCisjIFJpZ2h0IG5vdywgd2UgaGF2 ZSBhbiBvdXRzdGFuZGluZyBza2lwbGlzdCBlbnRyeSBvbiBib3RoIHNvdXJj ZQorIyBmaWxlcywgc28gd2hlbiB3ZSBzdGVwIGludG8gdGhlIGZpcnN0IGxp bmUgaW4gbWFpbigpLCB3ZSBzaG91bGQgc3RlcAorIyByaWdodCBvdmVyIGl0 IGFuZCBnbyB0byB0aGUgc2Vjb25kIGxpbmUgb2YgbWFpbigpLgorIworCitp ZiAhW3J1bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2Vk IiB9CitnZGJfdGVzdCAic3RlcCIKK2dkYl90ZXN0ICJidCIgIlxccypcXCMw XFxzK21haW4uKiIgInN0ZXAgYWZ0ZXIgYWxsIGlnbm9yZWQiCisKKyMKKyMg Tm93IHJlbW92ZSBza2lwLmMgZnJvbSB0aGUgc2tpcGxpc3QuICBPdXIgZmly c3Qgc3RlcCBzaG91bGQgdGFrZSB1cworIyBpbnRvIGZvbygpLCBhbmQgb3Vy IHNlY29uZCBzdGVwIHNob3VsZCB0YWtlIHVzIHRvIHRoZSBuZXh0IGxpbmUg aW4KKyMgbWFpbigpLgorIworZ2RiX3Rlc3QgInNraXAgZGVsZXRlIDEiCisj IENoZWNrIHRoYXQgZW50cnkgMSBpcyBtaXNzaW5nIGZyb20gfGluZm8gc2tp cHwKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyAgIk51bVxccytUeXBlXFxz K0VuYlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisyXFxzK2Z1bmN0aW9uXFxz K3lcXHMrMHhcWzAtOWEtZlxdKyBtYWluIGF0IC4qJHNyY2ZpbGU6XFswLTlc XStcXHMqCiszXFxzK2ZpbGVcXHMreVxccysuKiRzcmNmaWxlMVxccyoKKzRc XHMrZnVuY3Rpb25cXHMreVxccysweFxbMC05YS1mXF0rIGJheiBhdCAuKiRz cmNmaWxlMTpcWzAtOVxdK1xccyoiCisKK2lmICFbcnVudG9fbWFpbl0geyBm YWlsICJza2lwIHRlc3RzIHN1cHByZXNzZWQiIH0KK2dkYl90ZXN0ICJzdGVw IiAiZm9vIFxcKFxcKSBhdC4qIiAic3RlcCBhZnRlciBkZWxldGluZyAxICgx KSIKK2dkYl90ZXN0ICJzdGVwIjsgIyBSZXR1cm4gZnJvbSBmb28oKQorZ2Ri X3Rlc3QgInN0ZXAiICJtYWluIFxcKFxcKSBhdC4qIiAic3RlcCBhZnRlciBk ZWxldGluZyAxICgyKSIKKworIworIyBOb3cgZGlzYWJsZSB0aGUgc2tpcGxp c3QgZW50cnkgZm9yICBza2lwMS5jLiAgV2Ugc2hvdWxkIG5vdworIyBzdGVw IGludG8gZm9vKCksIHRoZW4gaW50byBiYXIoKSwgYnV0IG5vdCBpbnRvIGJh eigpLgorIworZ2RiX3Rlc3QgInNraXAgZGlzYWJsZSAzIgorIyBJcyBlbnRy eSAzIGRpc2FibGVkIGluIHxpbmZvIHNraXB8PworZ2RiX3Rlc3QgImluZm8g c2tpcCAzIiAiLipcXG4zXFxzK2ZpbGVcXHMrbi4qIiBcCisgICJpbmZvIHNr aXAgc2hvd3MgZW50cnkgYXMgZGlzYWJsZWQiCisKK2lmICFbcnVudG9fbWFp bl0geyBmYWlsICJza2lwIHRlc3RzIHN1cHByZXNzZWQiIH0KK2dkYl90ZXN0 ICJzdGVwIiAiYmFyIFxcKFxcKSBhdC4qIiAic3RlcCBhZnRlciBkaXNhYmxp bmcgMyAoMSkiCitnZGJfdGVzdCAic3RlcCI7ICMgUmV0dXJuIGZyb20gZm9v KCkKK2dkYl90ZXN0ICJzdGVwIiAiZm9vIFxcKFxcKSBhdC4qIiAic3RlcCBh ZnRlciBkaXNhYmxpbmcgMyAoMikiCitnZGJfdGVzdCAic3RlcCI7ICMgUmV0 dXJuIGZyb20gYmFyKCkKK2dkYl90ZXN0ICJzdGVwIiAibWFpbiBcXChcXCkg YXQuKiIgInN0ZXAgYWZ0ZXIgZGlzYWJsaW5nIDMgKDMpIgorCisjCisjIEVu YWJsZSBza2lwbGlzdCBlbnRyeSAzIGFuZCBtYWtlIHN1cmUgd2Ugc3RlcCBv dmVyIGl0IGxpa2UgYmVmb3JlLgorIworZ2RiX3Rlc3QgInNraXAgZW5hYmxl IDMiCisjIElzIGVudHJ5IDMgZW5hYmxlZCBpbiB8aW5mbyBza2lwfD8KK2dk Yl90ZXN0ICJpbmZvIHNraXAgMyIgIi4qXFxuM1xccytmaWxlXFxzK3kuKiIg XAorICAiaW5mbyBza2lwIHNob3dzIGVudHJ5IGFzIGVuYWJsZWQiCitpZiAh W3J1bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9 CitnZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0 ZXIgZGVsZXRpbmcgMSAoMSkiCitnZGJfdGVzdCAic3RlcCI7ICMgUmV0dXJu IGZyb20gZm9vKCkKK2dkYl90ZXN0ICJzdGVwIiAibWFpbiBcXChcXCkgYXQu KiIgInN0ZXAgYWZ0ZXIgZGVsZXRpbmcgMSAoMikiCisKK2dkYl90ZXN0ICJz a2lwIGRpc2FibGUiCitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisgICJOdW1c XHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxccytm dW5jdGlvblxccytuXFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNm aWxlOlxbMC05XF0rXFxzKgorM1xccytmaWxlXFxzK25cXHMrLiokc3JjZmls ZTFcXHMqCis0XFxzK2Z1bmN0aW9uXFxzK25cXHMrMHhcWzAtOWEtZlxdKyBi YXogYXQgLiokc3JjZmlsZTE6XFswLTlcXStcXHMqIiBcCisgICJpbmZvIHNr aXAgYWZ0ZXIgZGlzYWJsaW5nIGFsbCIKKworZ2RiX3Rlc3QgInNraXAgZW5h YmxlIgorZ2RiX3Rlc3QgImluZm8gc2tpcCIgXAorICAiTnVtXFxzK1R5cGVc XHMrRW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzJcXHMrZnVuY3Rpb25c XHMreVxccysweFxbMC05YS1mXF0rIG1haW4gYXQgLiokc3JjZmlsZTpcWzAt OVxdK1xccyoKKzNcXHMrZmlsZVxccyt5XFxzKy4qJHNyY2ZpbGUxXFxzKgor NFxccytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZcXSsgYmF6IGF0IC4q JHNyY2ZpbGUxOlxbMC05XF0rXFxzKiIgXAorICAiaW5mbyBza2lwIGFmdGVy IGVuYWJsaW5nIGFsbCIKKworZ2RiX3Rlc3QgInNraXAgZGlzYWJsZSA0IDIt MyIKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyAgIk51bVxccytUeXBlXFxz K0VuYlxccytBZGRyZXNzXFxzK1doYXRcXHMqCisyXFxzK2Z1bmN0aW9uXFxz K25cXHMrMHhcWzAtOWEtZlxdKyBtYWluIGF0IC4qJHNyY2ZpbGU6XFswLTlc XStcXHMqCiszXFxzK2ZpbGVcXHMrblxccysuKiRzcmNmaWxlMVxccyoKKzRc XHMrZnVuY3Rpb25cXHMrblxccysweFxbMC05YS1mXF0rIGJheiBhdCAuKiRz cmNmaWxlMTpcWzAtOVxdK1xccyoiIFwKKyAgImluZm8gc2tpcCBhZnRlciBk aXNhYmxpbmcgNCAyLTMiCisKK2dkYl90ZXN0ICJza2lwIGVuYWJsZSAyLTMi CitnZGJfdGVzdCAiaW5mbyBza2lwIiBcCisgICJOdW1cXHMrVHlwZVxccytF bmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxccytmdW5jdGlvblxccyt5 XFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxbMC05XF0r XFxzKgorM1xccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZTFcXHMqCis0XFxz K2Z1bmN0aW9uXFxzK25cXHMrMHhcWzAtOWEtZlxdKyBiYXogYXQgLiokc3Jj ZmlsZTE6XFswLTlcXStcXHMqIiBcCisgICJpbmZvIHNraXAgYWZ0ZXIgZW5h YmxpbmcgMi0zIgorCitnZGJfdGVzdCAiaW5mbyBza2lwIDItMyIgXAorICAi TnVtXFxzK1R5cGVcXHMrRW5iXFxzK0FkZHJlc3NcXHMrV2hhdFxccyoKKzJc XHMrZnVuY3Rpb25cXHMreVxccysweFxbMC05YS1mXF0rIG1haW4gYXQgLiok c3JjZmlsZTpcWzAtOVxdK1xccyoKKzNcXHMrZmlsZVxccyt5XFxzKy4qJHNy Y2ZpbGUxXFxzKiIgXAorICAiaW5mbyBza2lwIDItMyIKKworZ2RiX3Rlc3Qg InNraXAgZGVsZXRlIDIgMyIKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyAg IjRcXHMrZnVuY3Rpb25cXHMrblxccysweFxbMC05YS1mXF0rIGJheiBhdCAu KiRzcmNmaWxlMTpcWzAtOVxdK1xccyoiIFwKKyAgImluZm8gc2tpcCBhZnRl ciBkZWxldGluZyAyIDMiCisKK2dkYl90ZXN0ICJza2lwIGRlbGV0ZSIKK2dk Yl90ZXN0ICJpbmZvIHNraXAiICJOb3Qgc2tpcHBpbmcgYW55IGZpbGVzIG9y IGZ1bmN0aW9uc1wuIiBcCisgICJpbmZvIHNraXAgYWZ0ZXIgZGVsZXRpbmcg YWxsIgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lw MS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwMS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYWI1YzMKLS0tIC9kZXYv bnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAxLmMKQEAg LTAsMCArMSw5IEBACitpbnQgYmFyKCkKK3sKKyAgcmV0dXJuIDE7Cit9CisK K2ludCBiYXooaW50IGEsIGludCBiKQoreworICByZXR1cm4gYSArIGI7Cit9 Cg== --00151747c0062fbcb604b0ad8424--