From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23021 invoked by alias); 10 May 2013 10:57:38 -0000 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 Received: (qmail 23011 invoked by uid 89); 10 May 2013 10:57:37 -0000 X-Spam-SWARE-Status: No, score=-3.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,SPF_PASS,TW_EG,TW_RG autolearn=ham version=3.3.1 Received: from mail-ob0-f175.google.com (HELO mail-ob0-f175.google.com) (209.85.214.175) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 10 May 2013 10:57:35 +0000 Received: by mail-ob0-f175.google.com with SMTP id wd20so3962319obb.6 for ; Fri, 10 May 2013 03:57:33 -0700 (PDT) X-Received: by 10.182.144.42 with SMTP id sj10mr6630555obb.66.1368183453646; Fri, 10 May 2013 03:57:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.60.13.133 with HTTP; Fri, 10 May 2013 03:56:53 -0700 (PDT) In-Reply-To: <87d2t2tt02.fsf@fleche.redhat.com> References: <515451EA.1000200@mentor.com> <83y5d7wpvq.fsf@gnu.org> <516454DA.9040109@redhat.com> <87ppxzhfqy.fsf@fleche.redhat.com> <516C2549.3060808@redhat.com> <87vc7ithtj.fsf@fleche.redhat.com> <87wqrrll9m.fsf@fleche.redhat.com> <87d2t2tt02.fsf@fleche.redhat.com> From: Hui Zhu Date: Fri, 10 May 2013 10:57:00 -0000 Message-ID: Subject: Re: [PATCH] add -s option to make -break-insert support dprintf To: Tom Tromey Cc: Pedro Alves , Eli Zaretskii , Hui Zhu , gdb-patches ml , Marc Khouzam Content-Type: multipart/mixed; boundary=14dae9399163be098e04dc5b0818 X-Virus-Found: No X-SW-Source: 2013-05/txt/msg00374.txt.bz2 --14dae9399163be098e04dc5b0818 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 3760 Hi Tom, Thanks for your review. On Wed, May 8, 2013 at 4:49 AM, Tom Tromey wrote: >>>>>> "Hui" == Hui Zhu writes: > > Hui> According to your comments. I did some update with these patches to > Hui> added special command -dprintf-insert to insert dprintf. Its format > Hui> is close to simple dprintf command: > Hui> -dprintf-insert LOCATION FORMAT ARG ARG ... > > I like this approach much more. > Thanks for doing it. > > Hui> +static char * > Hui> +mi_argv_to_format (int format_num, char **argv, int argc) > > This needs an introductory comment explaining the arguments and result. Add: /* Convert arguments in ARGV to the string in "format",argv,argv... and return it. */ > > Hui> + /* If all the string need convert to \ddd mode, so * 2. > Hui> + + 2 for two ". > Hui> + + 1 for \0. */ > Hui> + format_size = strlen (argv[format_num]) * 4 + 3; > > The comment says "* 2" but the code says "* 4". > Personally I'd just use an obstack rather than mess around with explicit > reallocs and the like. Obstack is better than what I did in before. Thanks for that. Updated patch for it. > > Hui> + sprintf (format + format_current_size, "\\%o", > Hui> + argv[format_num][i]); > > It seems that this could do the wrong thing for a char that > sign-extends. I changed this part to: sprintf (tmp, "\\%o", (unsigned char)argv[format_num][i]); > > Hui> + /* Apply other argv to FORMAT. */ > Hui> + for (i = format_num + 1; i < argc; i++) > > It seems to me that it would be better to just pass in argv+argc to > mi_argv_to_format, and omit the format_num argument entirely. Fixed. > > Hui> +static void > Hui> +mi_cmd_break_insert_1 (int dprintf, char *command, char **argv, int argc) > > Intro comment. /* Insert breakpoint. If dprintf is true, it will insert dprintf. If not, it will insert other type breakpoint. */ > > Hui> + extra_string = mi_argv_to_format (oind + 1, argv, argc); > Hui> + make_cleanup (xfree, extra_string); > > This makes a dangling cleanup. Fixed. > > Hui> + if (tracepoint) > Hui> + { > Hui> + /* Note that to request a fast tracepoint, the client uses the > Hui> + "hardware" flag, although there's nothing of hardware related to > Hui> + fast tracepoints -- one can implement slow tracepoints with > Hui> + hardware breakpoints, but fast tracepoints are always software. > Hui> + "fast" is a misnomer, actually, "jump" would be more appropriate. > Hui> + A simulator or an emulator could conceivably implement fast > Hui> + regular non-jump based tracepoints. */ > Hui> + type_wanted = hardware ? bp_fast_tracepoint : bp_tracepoint; > Hui> + ops = &tracepoint_breakpoint_ops; > Hui> + } > Hui> + else if (dprintf) > Hui> + { > > It seems that 'tracepoint' and 'dprintf' are exclusive, so this should > be checked above where "hardware" is checked. Fixed. I post the new patches that updated according to your comments. Thanks, Hui 2013-05-10 Hui Zhu * breakpoint.c (dprintf_breakpoint_ops): Remove its static. * breakpoint.h (dprintf_breakpoint_ops): Add extern. * mi/mi-cmd-break.c (ctype.h): New include. (gdb_obstack.h): New include. (mi_argv_to_format, mi_cmd_break_insert_1): New. (mi_cmd_break_insert): Call mi_cmd_break_insert_1. (mi_cmd_dprintf_insert): New. * mi/mi-cmds.c (mi_cmds): Add "dprintf-insert". * mi/mi-cmds.h (mi_cmd_dprintf_insert): New extern. 2013-05-10 Hui Zhu * gdb.texinfo (GDB/MI Breakpoint Commands): Describe the "-dprintf-insert" command. 2013-05-10 Hui Zhu * gdb.mi/Makefile.in (PROGS): Add "mi-dprintf". * gdb.mi/mi-dprintf.exp, gdb.mi/mi-dprintf.c: New. --14dae9399163be098e04dc5b0818 Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf.txt" Content-Disposition: attachment; filename="mi-dprintf.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hgj90xsw0 Content-length: 10208 LS0tIGEvYnJlYWtwb2ludC5jCisrKyBiL2JyZWFrcG9pbnQuYwpAQCAtMzAx LDcgKzMwMSw3IEBAIHN0cnVjdCBicmVha3BvaW50X29wcyBia3B0X2JyZWFr cG9pbnRfb3AKIHN0YXRpYyBzdHJ1Y3QgYnJlYWtwb2ludF9vcHMgYmtwdF9w cm9iZV9icmVha3BvaW50X29wczsKIAogLyogRHluYW1pYyBwcmludGYgY2xh c3MgdHlwZS4gICovCi1zdGF0aWMgc3RydWN0IGJyZWFrcG9pbnRfb3BzIGRw cmludGZfYnJlYWtwb2ludF9vcHM7CitzdHJ1Y3QgYnJlYWtwb2ludF9vcHMg ZHByaW50Zl9icmVha3BvaW50X29wczsKIAogLyogVGhlIHN0eWxlIGluIHdo aWNoIHRvIHBlcmZvcm0gYSBkeW5hbWljIHByaW50Zi4gIFRoaXMgaXMgYSB1 c2VyCiAgICBvcHRpb24gYmVjYXVzZSBkaWZmZXJlbnQgb3V0cHV0IG9wdGlv bnMgaGF2ZSBkaWZmZXJlbnQgdHJhZGVvZmZzOwotLS0gYS9icmVha3BvaW50 LmgKKysrIGIvYnJlYWtwb2ludC5oCkBAIC0xMjEyLDYgKzEyMTIsNyBAQCBl eHRlcm4gdm9pZCB0YnJlYWtfY29tbWFuZCAoY2hhciAqLCBpbnQpCiBleHRl cm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIGJhc2VfYnJlYWtwb2ludF9vcHM7 CiBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIGJrcHRfYnJlYWtwb2lu dF9vcHM7CiBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIHRyYWNlcG9p bnRfYnJlYWtwb2ludF9vcHM7CitleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRf b3BzIGRwcmludGZfYnJlYWtwb2ludF9vcHM7CiAKIGV4dGVybiB2b2lkIGlu aXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpOwogCi0tLSBhL21pL21p LWNtZC1icmVhay5jCisrKyBiL21pL21pLWNtZC1icmVhay5jCkBAIC0zMCw2 ICszMCw4IEBACiAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJt aS1tYWluLmgiCiAjaW5jbHVkZSAibWktY21kLWJyZWFrLmgiCisjaW5jbHVk ZSAiZ2RiX29ic3RhY2suaCIKKyNpbmNsdWRlIDxjdHlwZS5oPgogCiBlbnVt CiAgIHsKQEAgLTg0LDExICs4Niw4MiBAQCBzZXR1cF9icmVha3BvaW50X3Jl cG9ydGluZyAodm9pZCkKIH0KIAogCi0vKiBJbXBsZW1lbnRzIHRoZSAtYnJl YWstaW5zZXJ0IGNvbW1hbmQuCi0gICBTZWUgdGhlIE1JIG1hbnVhbCBmb3Ig dGhlIGxpc3Qgb2YgcG9zc2libGUgb3B0aW9ucy4gICovCisvKiBDb252ZXJ0 IGFyZ3VtZW50cyBpbiBBUkdWIHRvIHRoZSBzdHJpbmcgaW4gImZvcm1hdCIs YXJndixhcmd2Li4uCisgICBhbmQgcmV0dXJuIGl0LiAgKi8KIAotdm9pZAot bWlfY21kX2JyZWFrX2luc2VydCAoY2hhciAqY29tbWFuZCwgY2hhciAqKmFy Z3YsIGludCBhcmdjKQorc3RhdGljIGNoYXIgKgorbWlfYXJndl90b19mb3Jt YXQgKGNoYXIgKiphcmd2LCBpbnQgYXJnYykKK3sKKyAgaW50IGk7CisgIHN0 cnVjdCBvYnN0YWNrIG9ic3RhY2s7CisgIGNoYXIgKnJldDsKKworICBvYnN0 YWNrX2luaXQgKCZvYnN0YWNrKTsKKworICAvKiBDb252ZXJ0IEFSR1ZbT0lO RCArIDFdIHRvIGZvcm1hdCBzdHJpbmcgYW5kIHNhdmUgdG8gRk9STUFULiAg Ki8KKyAgb2JzdGFja18xZ3JvdyAoJm9ic3RhY2ssICdcIicpOworICBmb3Ig KGkgPSAwOyBpIDwgc3RybGVuIChhcmd2WzBdKTsgaSsrKQorICAgIHsKKyAg ICAgIHN3aXRjaCAoYXJndlswXVtpXSkKKwl7CisJY2FzZSAnXFwnOgorCSAg b2JzdGFja19ncm93ICgmb2JzdGFjaywgIlxcXFwiLCAyKTsKKwkgIGJyZWFr OworCWNhc2UgJ1xhJzoKKwkgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssICJc XGEiLCAyKTsKKwkgIGJyZWFrOworCWNhc2UgJ1xiJzoKKwkgIG9ic3RhY2tf Z3JvdyAoJm9ic3RhY2ssICJcXGIiLCAyKTsKKwkgIGJyZWFrOworCWNhc2Ug J1xmJzoKKwkgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssICJcXGYiLCAyKTsK KwkgIGJyZWFrOworCWNhc2UgJ1xuJzoKKwkgIG9ic3RhY2tfZ3JvdyAoJm9i c3RhY2ssICJcXG4iLCAyKTsKKwkgIGJyZWFrOworCWNhc2UgJ1xyJzoKKwkg IG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssICJcXHIiLCAyKTsKKwkgIGJyZWFr OworCWNhc2UgJ1x0JzoKKwkgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssICJc XHQiLCAyKTsKKwkgIGJyZWFrOworCWNhc2UgJ1x2JzoKKwkgIG9ic3RhY2tf Z3JvdyAoJm9ic3RhY2ssICJcXHYiLCAyKTsKKwkgIGJyZWFrOworCWRlZmF1 bHQ6CisJICBpZiAoaXNwcmludChhcmd2WzBdW2ldKSkKKwkgICAgb2JzdGFj a19ncm93ICgmb2JzdGFjaywgYXJndlswXSArIGksIDEpOworCSAgZWxzZQor CSAgICB7CisJICAgICAgY2hhciB0bXBbNV07CisJICAgICAgc3ByaW50ZiAo dG1wLCAiXFwlbyIsICh1bnNpZ25lZCBjaGFyKWFyZ3ZbMF1baV0pOworCSAg ICAgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssIHRtcCwgc3RybGVuICh0bXAp KTsKKwkgICAgfQorCSAgYnJlYWs7CisJfQorICAgIH0KKyAgb2JzdGFja18x Z3JvdyAoJm9ic3RhY2ssICdcIicpOworCisgIC8qIEFwcGx5IG90aGVyIGFy Z3YgdG8gRk9STUFULiAgKi8KKyAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkr KykKKyAgICB7CisgICAgICBvYnN0YWNrXzFncm93ICgmb2JzdGFjaywgJywn KTsKKyAgICAgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssIGFyZ3ZbaV0sIHN0 cmxlbiAoYXJndltpXSkpOworICAgIH0KKyAgb2JzdGFja18xZ3JvdyAoJm9i c3RhY2ssICdcMCcpOworCisgIHJldCA9IHhzdHJkdXAgKG9ic3RhY2tfZmlu aXNoICgmb2JzdGFjaykpOworICBvYnN0YWNrX2ZyZWUgKCZvYnN0YWNrLCBO VUxMKTsKKworICByZXR1cm4gcmV0OworfQorCisvKiBJbnNlcnQgYnJlYWtw b2ludC4KKyAgIElmIGRwcmludGYgaXMgdHJ1ZSwgaXQgd2lsbCBpbnNlcnQg ZHByaW50Zi4KKyAgIElmIG5vdCwgaXQgd2lsbCBpbnNlcnQgb3RoZXIgdHlw ZSBicmVha3BvaW50LiAgKi8KKworc3RhdGljIHZvaWQKK21pX2NtZF9icmVh a19pbnNlcnRfMSAoaW50IGRwcmludGYsIGNoYXIgKmNvbW1hbmQsIGNoYXIg Kiphcmd2LCBpbnQgYXJnYykKIHsKICAgY2hhciAqYWRkcmVzcyA9IE5VTEw7 CiAgIGludCBoYXJkd2FyZSA9IDA7CkBAIC0xMDIsNiArMTc1LDggQEAgbWlf Y21kX2JyZWFrX2luc2VydCAoY2hhciAqY29tbWFuZCwgY2hhcgogICBzdHJ1 Y3QgY2xlYW51cCAqYmFja190bzsKICAgZW51bSBicHR5cGUgdHlwZV93YW50 ZWQ7CiAgIHN0cnVjdCBicmVha3BvaW50X29wcyAqb3BzOworICBjaGFyICpl eHRyYV9zdHJpbmcgPSBOVUxMOworICBzdHJ1Y3QgY2xlYW51cCAqZXh0cmFf c3RyaW5nX2NsZWFudXA7CiAKICAgZW51bSBvcHQKICAgICB7CkBAIC0xNjMs MzUgKzIzOCw4MSBAQCBtaV9jbWRfYnJlYWtfaW5zZXJ0IChjaGFyICpjb21t YW5kLCBjaGFyCiAgICAgfQogCiAgIGlmIChvaW5kID49IGFyZ2MpCi0gICAg ZXJyb3IgKF8oIi1icmVhay1pbnNlcnQ6IE1pc3NpbmcgPGxvY2F0aW9uPiIp KTsKLSAgaWYgKG9pbmQgPCBhcmdjIC0gMSkKLSAgICBlcnJvciAoXygiLWJy ZWFrLWluc2VydDogR2FyYmFnZSBmb2xsb3dpbmcgPGxvY2F0aW9uPiIpKTsK KyAgICBlcnJvciAoXygiLSVzLWluc2VydDogTWlzc2luZyA8bG9jYXRpb24+ IiksCisJICAgZHByaW50ZiA/ICJkcHJpbnRmIiA6ICJicmVhayIpOwogICBh ZGRyZXNzID0gYXJndltvaW5kXTsKKyAgaWYgKGRwcmludGYpCisgICAgewor ICAgICAgaW50IGZvcm1hdF9udW0gPSBvaW5kICsgMTsKKworICAgICAgaWYg KGhhcmR3YXJlIHx8IHRyYWNlcG9pbnQpCisJZXJyb3IgKF8oIi1kcHJpbnRm LWluc2VydDogZG9lcyBub3Qgc3VwcG9ydCAtaCBvciAtYSIpKTsKKyAgICAg IGlmIChmb3JtYXRfbnVtID49IGFyZ2MpCisJZXJyb3IgKF8oIi1kcHJpbnRm LWluc2VydDogTWlzc2luZyA8Zm9ybWF0PiIpKTsKKworICAgICAgZXh0cmFf c3RyaW5nID0gbWlfYXJndl90b19mb3JtYXQgKGFyZ3YgKyBmb3JtYXRfbnVt LCBhcmdjIC0gZm9ybWF0X251bSk7CisgICAgICBleHRyYV9zdHJpbmdfY2xl YW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGV4dHJhX3N0cmluZyk7Cisg ICAgfQorICBlbHNlCisgICAgeworICAgICAgaWYgKG9pbmQgPCBhcmdjIC0g MSkKKwllcnJvciAoXygiLWJyZWFrLWluc2VydDogR2FyYmFnZSBmb2xsb3dp bmcgPGxvY2F0aW9uPiIpKTsKKyAgICB9CiAKICAgLyogTm93IHdlIGhhdmUg d2hhdCB3ZSBuZWVkLCBsZXQncyBpbnNlcnQgdGhlIGJyZWFrcG9pbnQhICAq LwogICBiYWNrX3RvID0gc2V0dXBfYnJlYWtwb2ludF9yZXBvcnRpbmcgKCk7 CiAKLSAgLyogTm90ZSB0aGF0IHRvIHJlcXVlc3QgYSBmYXN0IHRyYWNlcG9p bnQsIHRoZSBjbGllbnQgdXNlcyB0aGUKLSAgICAgImhhcmR3YXJlIiBmbGFn LCBhbHRob3VnaCB0aGVyZSdzIG5vdGhpbmcgb2YgaGFyZHdhcmUgcmVsYXRl ZCB0bwotICAgICBmYXN0IHRyYWNlcG9pbnRzIC0tIG9uZSBjYW4gaW1wbGVt ZW50IHNsb3cgdHJhY2Vwb2ludHMgd2l0aAotICAgICBoYXJkd2FyZSBicmVh a3BvaW50cywgYnV0IGZhc3QgdHJhY2Vwb2ludHMgYXJlIGFsd2F5cyBzb2Z0 d2FyZS4KLSAgICAgImZhc3QiIGlzIGEgbWlzbm9tZXIsIGFjdHVhbGx5LCAi anVtcCIgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZS4KLSAgICAgQSBzaW11 bGF0b3Igb3IgYW4gZW11bGF0b3IgY291bGQgY29uY2VpdmFibHkgaW1wbGVt ZW50IGZhc3QKLSAgICAgcmVndWxhciBub24tanVtcCBiYXNlZCB0cmFjZXBv aW50cy4gICovCi0gIHR5cGVfd2FudGVkID0gKHRyYWNlcG9pbnQKLQkJID8g KGhhcmR3YXJlID8gYnBfZmFzdF90cmFjZXBvaW50IDogYnBfdHJhY2Vwb2lu dCkKLQkJIDogKGhhcmR3YXJlID8gYnBfaGFyZHdhcmVfYnJlYWtwb2ludCA6 IGJwX2JyZWFrcG9pbnQpKTsKLSAgb3BzID0gdHJhY2Vwb2ludCA/ICZ0cmFj ZXBvaW50X2JyZWFrcG9pbnRfb3BzIDogJmJrcHRfYnJlYWtwb2ludF9vcHM7 CisgIGlmICh0cmFjZXBvaW50KQorICAgIHsKKyAgICAgIC8qIE5vdGUgdGhh dCB0byByZXF1ZXN0IGEgZmFzdCB0cmFjZXBvaW50LCB0aGUgY2xpZW50IHVz ZXMgdGhlCisJICJoYXJkd2FyZSIgZmxhZywgYWx0aG91Z2ggdGhlcmUncyBu b3RoaW5nIG9mIGhhcmR3YXJlIHJlbGF0ZWQgdG8KKwkgZmFzdCB0cmFjZXBv aW50cyAtLSBvbmUgY2FuIGltcGxlbWVudCBzbG93IHRyYWNlcG9pbnRzIHdp dGgKKwkgaGFyZHdhcmUgYnJlYWtwb2ludHMsIGJ1dCBmYXN0IHRyYWNlcG9p bnRzIGFyZSBhbHdheXMgc29mdHdhcmUuCisJICJmYXN0IiBpcyBhIG1pc25v bWVyLCBhY3R1YWxseSwgImp1bXAiIHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlh dGUuCisJIEEgc2ltdWxhdG9yIG9yIGFuIGVtdWxhdG9yIGNvdWxkIGNvbmNl aXZhYmx5IGltcGxlbWVudCBmYXN0CisJIHJlZ3VsYXIgbm9uLWp1bXAgYmFz ZWQgdHJhY2Vwb2ludHMuICAqLworICAgICAgdHlwZV93YW50ZWQgPSBoYXJk d2FyZSA/IGJwX2Zhc3RfdHJhY2Vwb2ludCA6IGJwX3RyYWNlcG9pbnQ7Cisg ICAgICBvcHMgPSAmdHJhY2Vwb2ludF9icmVha3BvaW50X29wczsKKyAgICB9 CisgIGVsc2UgaWYgKGRwcmludGYpCisgICAgeworICAgICAgdHlwZV93YW50 ZWQgPSBicF9kcHJpbnRmOworICAgICAgb3BzID0gJmRwcmludGZfYnJlYWtw b2ludF9vcHM7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgdHlwZV93 YW50ZWQgPSBoYXJkd2FyZSA/IGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQgOiBi cF9icmVha3BvaW50OworICAgICAgb3BzID0gJmJrcHRfYnJlYWtwb2ludF9v cHM7CisgICAgfQogCiAgIGNyZWF0ZV9icmVha3BvaW50IChnZXRfY3VycmVu dF9hcmNoICgpLCBhZGRyZXNzLCBjb25kaXRpb24sIHRocmVhZCwKLQkJICAg ICBOVUxMLAorCQkgICAgIGV4dHJhX3N0cmluZywKIAkJICAgICAwIC8qIGNv bmRpdGlvbiBhbmQgdGhyZWFkIGFyZSB2YWxpZC4gICovLAogCQkgICAgIHRl bXBfcCwgdHlwZV93YW50ZWQsCiAJCSAgICAgaWdub3JlX2NvdW50LAogCQkg ICAgIHBlbmRpbmcgPyBBVVRPX0JPT0xFQU5fVFJVRSA6IEFVVE9fQk9PTEVB Tl9GQUxTRSwKIAkJICAgICBvcHMsIDAsIGVuYWJsZWQsIDAsIDApOwogICBk b19jbGVhbnVwcyAoYmFja190byk7CisgIGlmIChkcHJpbnRmKQorICAgIGRv X2NsZWFudXBzIChleHRyYV9zdHJpbmdfY2xlYW51cCk7Cit9CisKKy8qIElt cGxlbWVudHMgdGhlIC1icmVhay1pbnNlcnQgY29tbWFuZC4KKyAgIFNlZSB0 aGUgTUkgbWFudWFsIGZvciB0aGUgbGlzdCBvZiBwb3NzaWJsZSBvcHRpb25z LiAgKi8KIAordm9pZAorbWlfY21kX2JyZWFrX2luc2VydCAoY2hhciAqY29t bWFuZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQoreworICBtaV9jbWRfYnJl YWtfaW5zZXJ0XzEgKDAsIGNvbW1hbmQsIGFyZ3YsIGFyZ2MpOworfQorCisv KiBJbXBsZW1lbnRzIHRoZSAtZHByaW50Zi1pbnNlcnQgY29tbWFuZC4KKyAg IFNlZSB0aGUgTUkgbWFudWFsIGZvciB0aGUgbGlzdCBvZiBwb3NzaWJsZSBv cHRpb25zLiAgKi8KKwordm9pZAorbWlfY21kX2RwcmludGZfaW5zZXJ0IChj aGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCit7CisgIG1p X2NtZF9icmVha19pbnNlcnRfMSAoMSwgY29tbWFuZCwgYXJndiwgYXJnYyk7 CiB9CiAKIGVudW0gd3BfdHlwZQotLS0gYS9taS9taS1jbWRzLmMKKysrIGIv bWkvbWktY21kcy5jCkBAIC02MSw2ICs2MSw4IEBAIHN0YXRpYyBzdHJ1Y3Qg bWlfY21kIG1pX2NtZHNbXSA9CiAgIERFRl9NSV9DTURfQ0xJICgiYnJlYWst aW5mbyIsICJpbmZvIGJyZWFrIiwgMSksCiAgIERFRl9NSV9DTURfTUlfMSAo ImJyZWFrLWluc2VydCIsIG1pX2NtZF9icmVha19pbnNlcnQsCiAJCSAgICZt aV9zdXBwcmVzc19ub3RpZmljYXRpb24uYnJlYWtwb2ludCksCisgIERFRl9N SV9DTURfTUlfMSAoImRwcmludGYtaW5zZXJ0IiwgbWlfY21kX2RwcmludGZf aW5zZXJ0LAorCQkgICAmbWlfc3VwcHJlc3Nfbm90aWZpY2F0aW9uLmJyZWFr cG9pbnQpLAogICBERUZfTUlfQ01EX0NMSSAoImJyZWFrLWxpc3QiLCAiaW5m byBicmVhayIsIDApLAogICBERUZfTUlfQ01EX01JXzEgKCJicmVhay1wYXNz Y291bnQiLCBtaV9jbWRfYnJlYWtfcGFzc2NvdW50LAogCQkgICAmbWlfc3Vw cHJlc3Nfbm90aWZpY2F0aW9uLmJyZWFrcG9pbnQpLAotLS0gYS9taS9taS1j bWRzLmgKKysrIGIvbWkvbWktY21kcy5oCkBAIC0zOSw2ICszOSw3IEBAIHR5 cGVkZWYgdm9pZCAobWlfY21kX2FyZ3ZfZnR5cGUpIChjaGFyICoKIGV4dGVy biBtaV9jbWRfYXJndl9mdHlwZSBtaV9jbWRfYWRhX3Rhc2tfaW5mbzsKIGV4 dGVybiBtaV9jbWRfYXJndl9mdHlwZSBtaV9jbWRfYWRkX2luZmVyaW9yOwog ZXh0ZXJuIG1pX2NtZF9hcmd2X2Z0eXBlIG1pX2NtZF9icmVha19pbnNlcnQ7 CitleHRlcm4gbWlfY21kX2FyZ3ZfZnR5cGUgbWlfY21kX2RwcmludGZfaW5z ZXJ0OwogZXh0ZXJuIG1pX2NtZF9hcmd2X2Z0eXBlIG1pX2NtZF9icmVha19j b21tYW5kczsKIGV4dGVybiBtaV9jbWRfYXJndl9mdHlwZSBtaV9jbWRfYnJl YWtfcGFzc2NvdW50OwogZXh0ZXJuIG1pX2NtZF9hcmd2X2Z0eXBlIG1pX2Nt ZF9icmVha193YXRjaDsK --14dae9399163be098e04dc5b0818 Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf-doc.txt" Content-Disposition: attachment; filename="mi-dprintf-doc.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hgj90xvv1 Content-length: 3726 LS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC02MCw2ICs2MCw4IEBAIHNob3cg ZGVidWcgbmlvczIKICAgKiogVGhlIC10cmFjZS1zYXZlIE1JIGNvbW1hbmQg Y2FuIG9wdGlvbmFsbHkgc2F2ZSB0cmFjZSBidWZmZXIgaW4gQ29tbW9uCiAg ICAgIFRyYWNlIEZvcm1hdCBub3cuCiAKKyAgKiogVGhlIG5ldyBjb21tYW5k IC1kcHJpbnRmLWluc2VydCBzZXRzIGEgZHluYW1pYyBwcmludGYgYnJlYWtw b2ludC4KKwogKioqIENoYW5nZXMgaW4gR0RCIDcuNgogCiAqIFRhcmdldCBy ZWNvcmQgaGFzIGJlZW4gcmVuYW1lZCB0byByZWNvcmQtZnVsbC4KLS0tIGEv ZG9jL2dkYi50ZXhpbmZvCisrKyBiL2RvYy9nZGIudGV4aW5mbwpAQCAtMjg5 NzEsNiArMjg5NzEsODQgQEAgdGltZXM9IjAiQH1dQH0KIEBjIChnZGIpCiBA ZW5kIHNtYWxsZXhhbXBsZQogCitAc3ViaGVhZGluZyBUaGUgQGNvZGV7LWRw cmludGYtaW5zZXJ0fSBDb21tYW5kCitAZmluZGV4IC1kcHJpbnRmLWluc2Vy dAorCitAc3Vic3ViaGVhZGluZyBTeW5vcHNpcworCitAc21hbGxleGFtcGxl CisgLWRwcmludGYtaW5zZXJ0IFsgLXQgXSBbIC1mIF0gWyAtZCBdCisgICAg WyAtYyBAdmFye2NvbmRpdGlvbn0gXSBbIC1pIEB2YXJ7aWdub3JlLWNvdW50 fSBdCisgICAgWyAtcCBAdmFye3RocmVhZC1pZH0gXSBbIEB2YXJ7bG9jYXRp b259IF0gWyBAdmFye2Zvcm1hdH0gXQorICAgIFsgQHZhcnthcmd1bWVudH0g XQorQGVuZCBzbWFsbGV4YW1wbGUKKworQG5vaW5kZW50CitJZiBzcGVjaWZp ZWQsIEB2YXJ7bG9jYXRpb259LCBjYW4gYmUgb25lIG9mOgorCitAaXRlbWl6 ZSBAYnVsbGV0CitAaXRlbSBmdW5jdGlvbgorQGMgQGl0ZW0gK29mZnNldAor QGMgQGl0ZW0gLW9mZnNldAorQGMgQGl0ZW0gbGluZW51bQorQGl0ZW0gZmls ZW5hbWU6bGluZW51bQorQGl0ZW0gZmlsZW5hbWU6ZnVuY3Rpb24KK0BpdGVt ICphZGRyZXNzCitAZW5kIGl0ZW1pemUKKworVGhlIHBvc3NpYmxlIG9wdGlv bmFsIHBhcmFtZXRlcnMgb2YgdGhpcyBjb21tYW5kIGFyZToKKworQHRhYmxl IEBzYW1wCitAaXRlbSAtdAorSW5zZXJ0IGEgdGVtcG9yYXJ5IGJyZWFrcG9p bnQuCitAaXRlbSAtZgorSWYgQHZhcntsb2NhdGlvbn0gY2Fubm90IGJlIHBh cnNlZCAoZm9yIGV4YW1wbGUgaWYgaXQKK3JlZmVycyB0byB1bmtub3duIGZp bGVzIG9yIGZ1bmN0aW9ucyksIGNyZWF0ZSBhIHBlbmRpbmcKK2JyZWFrcG9p bnQuIFdpdGhvdXQgdGhpcyBmbGFnLCBAdmFsdWV7R0RCTn0gd2lsbCByZXBv cnQKK2FuIGVycm9yLCBhbmQgd29uJ3QgY3JlYXRlIGEgYnJlYWtwb2ludCwg aWYgQHZhcntsb2NhdGlvbn0KK2Nhbm5vdCBiZSBwYXJzZWQuCitAaXRlbSAt ZAorQ3JlYXRlIGEgZGlzYWJsZWQgYnJlYWtwb2ludC4KK0BpdGVtIC1jIEB2 YXJ7Y29uZGl0aW9ufQorTWFrZSB0aGUgYnJlYWtwb2ludCBjb25kaXRpb25h bCBvbiBAdmFye2NvbmRpdGlvbn0uCitAaXRlbSAtaSBAdmFye2lnbm9yZS1j b3VudH0KK0luaXRpYWxpemUgdGhlIEB2YXJ7aWdub3JlLWNvdW50fS4KK0Bp dGVtIC1wIEB2YXJ7dGhyZWFkLWlkfQorUmVzdHJpY3QgdGhlIGJyZWFrcG9p bnQgdG8gdGhlIHNwZWNpZmllZCBAdmFye3RocmVhZC1pZH0uCitAZW5kIHRh YmxlCisKK0BzdWJzdWJoZWFkaW5nIFJlc3VsdAorCitAeHJlZntHREIvTUkg QnJlYWtwb2ludCBJbmZvcm1hdGlvbn0sIGZvciBkZXRhaWxzIG9uIHRoZSBm b3JtYXQgb2YgdGhlCityZXN1bHRpbmcgYnJlYWtwb2ludC4KKworTm90ZTog dGhpcyBmb3JtYXQgaXMgb3BlbiB0byBjaGFuZ2UuCitAYyBBbiBvdXQtb2Yt YmFuZCBicmVha3BvaW50IGluc3RlYWQgb2YgcGFydCBvZiB0aGUgcmVzdWx0 PworCitAc3Vic3ViaGVhZGluZyBAdmFsdWV7R0RCTn0gQ29tbWFuZAorCitU aGUgY29ycmVzcG9uZGluZyBAdmFsdWV7R0RCTn0gY29tbWFuZHMgYXJlIEBz YW1we2RwcmludGZ9LgorCitAc3Vic3ViaGVhZGluZyBFeGFtcGxlCisKK0Bz bWFsbGV4YW1wbGUKKyhnZGIpCis0LWRwcmludGYtaW5zZXJ0IGZvbyAiQXQg Zm9vIGVudHJ5XG4iCis0XmRvbmUsYmtwdD1Ae251bWJlcj0iMSIsdHlwZT0i ZHByaW50ZiIsZGlzcD0ia2VlcCIsZW5hYmxlZD0ieSIsCithZGRyPSIweDAw MDAwMDAwMDA0MDA2MWIiLGZ1bmM9ImZvbyIsZmlsZT0ibWktZHByaW50Zi5j IiwKK2Z1bGxuYW1lPSJtaS1kcHJpbnRmLmMiLGxpbmU9IjI1Iix0aHJlYWQt Z3JvdXBzPVsiaTEiXSwKK3RpbWVzPSIwIixzY3JpcHQ9QHsicHJpbnRmIFwi QXQgZm9vIGVudHJ5XFxuXCIiLCJjb250aW51ZSJAfSwKK29yaWdpbmFsLWxv Y2F0aW9uPSJmb28iQH0KKyhnZGIpCis1LWRwcmludGYtaW5zZXJ0IDI2ICJh cmc9JWQsIGc9JWRcbiIgYXJnIGcKKzVeZG9uZSxia3B0PUB7bnVtYmVyPSIy Iix0eXBlPSJkcHJpbnRmIixkaXNwPSJrZWVwIixlbmFibGVkPSJ5IiwKK2Fk ZHI9IjB4MDAwMDAwMDAwMDQwMDYyYSIsZnVuYz0iZm9vIixmaWxlPSJtaS1k cHJpbnRmLmMiLAorZnVsbG5hbWU9Im1pLWRwcmludGYuYyIsbGluZT0iMjYi LHRocmVhZC1ncm91cHM9WyJpMSJdLAordGltZXM9IjAiLHNjcmlwdD1AeyJw cmludGYgXCJhcmc9JWQsIGc9JWRcXG5cIiwgYXJnLCBnIiwiY29udGludWUi QH0sCitvcmlnaW5hbC1sb2NhdGlvbj0ibWktZHByaW50Zi5jOjI2IkB9Ciso Z2RiKQorQGVuZCBzbWFsbGV4YW1wbGUKKwogQHN1YmhlYWRpbmcgVGhlIEBj b2Rley1icmVhay1saXN0fSBDb21tYW5kCiBAZmluZGV4IC1icmVhay1saXN0 CiAK --14dae9399163be098e04dc5b0818 Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf-test.txt" Content-Disposition: attachment; filename="mi-dprintf-test.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hgj90xvx2 Content-length: 10094 LS0tIGEvdGVzdHN1aXRlL2dkYi5taS9NYWtlZmlsZS5pbgorKysgYi90ZXN0 c3VpdGUvZ2RiLm1pL01ha2VmaWxlLmluCkBAIC0zLDcgKzMsNyBAQCBzcmNk aXIgPSBAc3JjZGlyQAogCiBQUk9HUyA9IGJhc2ljcyBjX3ZhcmlhYmxlIGNw cF92YXJpYWJsZSB2YXItY21kIGR3Mi1yZWYtbWlzc2luZy1mcmFtZQlcCiAJ Z2RiNjY5LXB0aHJlYWRzIGdkYjcwMSBnZGI3OTIgbWktYXN5bmMgbWktYmFz aWNzIG1pLWJyZWFrCVwKLQltaS1jbGkgbWktY29uc29sZSBtaS1kaXNhc3Nl bWJsZSBtaS1ldmFsIG1pLWZpbGUJCVwKKwltaS1jbGkgbWktY29uc29sZSBt aS1kaXNhc3NlbWJsZSBtaS1kcHJpbnRmIG1pLWV2YWwgbWktZmlsZQlcCiAJ bWktZmlsZS10cmFuc2ZlciBtaS1ub24tc3RvcCBtaS1ub24tc3RvcC1leGl0 CQkJXAogCW1pLW5zLXN0YWxlLXJlZ2NhY2hlIG1pLW5zaW50cmFsbCBtaS1u c21vcmlidW5kIG1pLW5zdGhyZXhlYwlcCiAJbWktcGVuZGluZyBtaS1wdGhy ZWFkcyBtaS1yZWFkLW1lbW9yeSBtaS1yZWdzIG1pLXJldHVybgkJXAotLS0g L2Rldi9udWxsCisrKyBiL3Rlc3RzdWl0ZS9nZGIubWkvbWktZHByaW50Zi5j CkBAIC0wLDAgKzEsNTkgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAoQykg MjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRy aWJ1dGVkIGJ5IEh1aSBaaHUgIDxodWlAY29kZXNvdXJjZXJ5LmNvbT4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPHN0ZGlv Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKK3N0YXRpYyBpbnQgZzsKKwor dm9pZAorZm9vIChpbnQgYXJnKQoreworICBnICs9IGFyZzsKKyAgZyAqPSAy OyAvKiBzZXQgZHByaW50ZiAxIGhlcmUgKi8KKyAgZyAvPSAyLjU7IC8qIHNl dCBicmVha3BvaW50IDEgaGVyZSAqLworfQorCitpbnQKK21haW4gKGludCBh cmdjLCBjaGFyICphcmd2W10pCit7CisgIGludCBsb2MgPSAxMjM0OworCisg IC8qIEVuc3VyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZS4gICov CisgIHByaW50ZiAoImtpY2tvZmYgJWRcbiIsIGxvYyk7CisgIGZwcmludGYg KHN0ZGVyciwgImFsc28gdG8gc3RkZXJyICVkXG4iLCBsb2MpOworCisgIGZv byAobG9jKyspOworICBmb28gKGxvYysrKTsKKyAgZm9vIChsb2MrKyk7Cisg IHJldHVybiBnOworfQorCisvKiBNYWtlIHN1cmUgZnVuY3Rpb24gJ21hbGxv YycgaXMgbGlua2VkIGludG8gcHJvZ3JhbS4gIE9uIHNvbWUgYmFyZS1tZXRh bAorICAgcG9ydCwgaWYgd2UgZG9uJ3QgdXNlICdtYWxsb2MnLCBpdCB3aWxs IG5vdCBiZSBsaW5rZWQgaW4gcHJvZ3JhbS4gICdtYWxsb2MnCisgICBpcyBu ZWVkZWQsIG90aGVyd2lzZSB3ZSdsbCBzZWUgc3VjaCBlcnJvciBtZXNzYWdl CisgICBldmFsdWF0aW9uIG9mIHRoaXMgZXhwcmVzc2lvbiByZXF1aXJlcyB0 aGUgcHJvZ3JhbSB0byBoYXZlIGEgZnVuY3Rpb24KKyAgICJtYWxsb2MiLiAg Ki8KKwordm9pZAorYmFyICh2b2lkKQoreworICB2b2lkICpwID0gbWFsbG9j ICgxNik7CisKKyAgZnJlZSAocCk7Cit9Ci0tLSAvZGV2L251bGwKKysrIGIv dGVzdHN1aXRlL2dkYi5taS9taS1kcHJpbnRmLmV4cApAQCAtMCwwICsxLDE0 NSBAQAorIyAgIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyMgICBDb250cmlidXRlZCBieSBIdWkgWmh1ICA8 aHVpQGNvZGVzb3VyY2VyeS5jb20+CisKKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK2xv YWRfbGliIG1pLXN1cHBvcnQuZXhwCitzZXQgTUlGTEFHUyAiLWk9bWkiCisK K2dkYl9leGl0CitpZiBbbWlfZ2RiX3N0YXJ0XSB7CisgICAgY29udGludWUK K30KKworc3RhbmRhcmRfdGVzdGZpbGUKKworaWYge1tidWlsZF9leGVjdXRh YmxlICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1Z31d ID09IC0xfSB7CisgICAgdW50ZXN0ZWQgImZhaWxlZCB0byBjb21waWxlICR0 ZXN0ZmlsZSIKKyAgICByZXR1cm4gLTEKK30KKworbWlfZGVsZXRlX2JyZWFr cG9pbnRzCisKK3NldCBicF9sb2NhdGlvbjEgW2dkYl9nZXRfbGluZV9udW1i ZXIgInNldCBicmVha3BvaW50IDEgaGVyZSJdCitzZXQgZHBfbG9jYXRpb24x IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgZHByaW50ZiAxIGhlcmUiXQor CittaV9ydW5fdG9fbWFpbgorCittaV9nZGJfdGVzdCAiMS1kcHJpbnRmLWlu c2VydCIgXAorICAgICIxXFxeZXJyb3IsbXNnPVwiLWRwcmludGYtaW5zZXJ0 OiBNaXNzaW5nIDxsb2NhdGlvbj5cIiIgIm1pIGluc2VydCB3aXRob3V0IGxv Y2F0aW9uIgorCittaV9nZGJfdGVzdCAiMi1kcHJpbnRmLWluc2VydCBmb28i IFwKKyAgICAiMlxcXmVycm9yLG1zZz1cIi1kcHJpbnRmLWluc2VydDogTWlz c2luZyA8Zm9ybWF0PlwiIiAibWkgaW5zZXJ0IGJyZWFrcG9pbnQgd2l0aG91 dCBmb3JtYXQgc3RyaW5nIgorCittaV9nZGJfdGVzdCAiMy1kcHJpbnRmLWlu c2VydCAyOSIgXAorICAgICIzXFxeZXJyb3IsbXNnPVwiLWRwcmludGYtaW5z ZXJ0OiBNaXNzaW5nIDxmb3JtYXQ+XCIiICJtaSBpbnNlcnQgc2Vjb25kIGJy ZWFrcG9pbnQgd2l0aG91dCBmb3JtYXQgc3RyaW5nIgorCittaV9nZGJfdGVz dCAiLWJyZWFrLWluc2VydCBtYWluIiAiLioiICJtaSBpbnNlcnQgYnJlYWtw b2ludCBtYWluIgorbWlfZGVsZXRlX2JyZWFrcG9pbnRzCisKK21pX2dkYl90 ZXN0ICI0LWRwcmludGYtaW5zZXJ0IGZvbyBcIkF0IGZvbyBlbnRyeVxcblwi IiBcCisgICAgIjRcXF5kb25lLGJrcHQ9XHtudW1iZXI9XCIuKlwiLHR5cGU9 XCJkcHJpbnRmXCIuKmZ1bmM9XCJmb29cIixmaWxlPVwiLiptaS1kcHJpbnRm LmNcIixmdWxsbmFtZT1cIi4qbWktZHByaW50Zi5jXCIsbGluZT1cIi4qXCIu KiIgIm1pIGluc2VydCBkcHJpbnRmIGZvbyIKKworbWlfZ2RiX3Rlc3QgIjUt ZHByaW50Zi1pbnNlcnQgJGRwX2xvY2F0aW9uMSBcImFyZz0lZCwgZz0lZFxc blwiIGFyZyBnIiBcCisgICAgIjVcXF5kb25lLGJrcHQ9XHtudW1iZXI9XCIu KlwiLHR5cGU9XCJkcHJpbnRmXCIuKmZ1bmM9XCJmb29cIixmaWxlPVwiLipt aS1kcHJpbnRmLmNcIixmdWxsbmFtZT1cIi4qbWktZHByaW50Zi5jXCIsbGlu ZT1cIiRkcF9sb2NhdGlvbjFcIi4qIiBcCisgICAgIm1pIGluc2VydCBkcHJp bnRmIGRwX2xvY2F0aW9uMSIKKworbWlfZ2RiX3Rlc3QgIjYtYnJlYWstaW5m byIgXAorICAgICI2XFxeZG9uZSxCcmVha3BvaW50VGFibGU9XHtucl9yb3dz PVwiLlwiLG5yX2NvbHM9XCIuXCIsaGRyPVxcXFtce3dpZHRoPVwiLipcIixh bGlnbm1lbnQ9XCIuKlwiLGNvbF9uYW1lPVwibnVtYmVyXCIsY29saGRyPVwi TnVtXCJcfSxce3dpZHRoPVwiLipcIixhbGlnbm1lbnQ9XCIuKlwiLGNvbF9u YW1lPVwidHlwZVwiLGNvbGhkcj1cIlR5cGVcIlx9LFx7d2lkdGg9XCIuKlwi LGFsaWdubWVudD1cIi4qXCIsY29sX25hbWU9XCJkaXNwXCIsY29saGRyPVwi RGlzcFwiXH0sXHt3aWR0aD1cIi4qXCIsYWxpZ25tZW50PVwiLipcIixjb2xf bmFtZT1cImVuYWJsZWRcIixjb2xoZHI9XCJFbmJcIlx9LFx7d2lkdGg9XCIu KlwiLGFsaWdubWVudD1cIi4qXCIsY29sX25hbWU9XCJhZGRyXCIsY29saGRy PVwiQWRkcmVzc1wiXH0sXHt3aWR0aD1cIi4qXCIsYWxpZ25tZW50PVwiLipc Iixjb2xfbmFtZT1cIndoYXRcIixjb2xoZHI9XCJXaGF0XCJcfVxcXF0sYm9k eT1cXFxbYmtwdD1ce251bWJlcj1cIjNcIix0eXBlPVwiZHByaW50ZlwiLipm dW5jPVwiZm9vXCIsZmlsZT1cIi4qbWktZHByaW50Zi5jXCIsZnVsbG5hbWU9 XCIuKm1pLWRwcmludGYuY1wiLGxpbmU9XCIuKlwiLiosYmtwdD1ce251bWJl cj1cIi4qXCIsdHlwZT1cImRwcmludGZcIi4qZnVuYz1cImZvb1wiLGZpbGU9 XCIuKm1pLWRwcmludGYuY1wiLGZ1bGxuYW1lPVwiLiptaS1kcHJpbnRmLmNc IixsaW5lPVwiJGRwX2xvY2F0aW9uMVwiLioiIFwKKyAgICAibWkgaW5mbyBk cHJpbnRmIgorCittaV9nZGJfdGVzdCAiLWJyZWFrLWluc2VydCAkYnBfbG9j YXRpb24xIiAiLioiICJtaSBpbnNlcnQgYnJlYWtwb2ludCBicF9sb2NhdGlv bjEiCisKK3Byb2MgbWlfY29udGludWVfZHByaW50ZiB7YXJnc30geworICAg IHdpdGhfdGVzdF9wcmVmaXggJGFyZ3MgeworCWdsb2JhbCBtaV9nZGJfcHJv bXB0CisKKwltaV9ydW5fY21kCisJc2V0IG1zZyAibWkgMXN0IGRwcmludGYi CisJZ2RiX2V4cGVjdCB7CisgICAgICAgICAgICAtcmUgIi4qQXQgZm9vIGVu dHJ5Liphcmc9MTIzNCwgZz0xMjM0LioiIHsKKwkJcGFzcyAkbXNnCisJICAg IH0KKwkgICAgLXJlICIuKiRtaV9nZGJfcHJvbXB0JCIgeworCQlmYWlsICRt c2cKKwkgICAgfQorICAgICAgICAgICAgdGltZW91dCB7CisJCWZhaWwgJG1z ZworICAgICAgICAgICAgfQorCX0KKwltaV9leHBlY3Rfc3RvcCAiLioiICIu KiIgIi4qIiAiLioiICIuKiIgIiIgIiRtc2cgc3RvcCIKKworCXNldCBtc2cg Im1pIDJuZCBkcHJpbnRmIgorCW1pX3NlbmRfcmVzdW1pbmdfY29tbWFuZCAi ZXhlYy1jb250aW51ZSIgIiRtc2cgY29udGludWUiCisJZ2RiX2V4cGVjdCB7 CisgICAgICAgICAgICAtcmUgIi4qQXQgZm9vIGVudHJ5Liphcmc9MTIzNSwg Zz0yMjIyLioiIHsKKwkJcGFzcyAkbXNnCisJICAgIH0KKwkgICAgLXJlICIu KiRtaV9nZGJfcHJvbXB0JCIgeworCQlmYWlsICRtc2cKKwkgICAgfQorICAg ICAgICAgICAgdGltZW91dCB7CisJCWZhaWwgJG1zZworICAgICAgICAgICAg fQorCX0KKyAgICB9Cit9CisKK21pX2NvbnRpbnVlX2RwcmludGYgImdkYiIK KworIyBUaGUgImNhbGwiIHN0eWxlIGRlcGVuZHMgb24gaGF2aW5nIEkvTyBm dW5jdGlvbnMgYXZhaWxhYmxlLCBzbyB0ZXN0LgorCitpZiAhW3RhcmdldF9p bmZvIGV4aXN0cyBnZGIsbm9pbmZlcmlvcmlvXSB7CisKKyAgICAjIE5vdyBz d2l0Y2ggc3R5bGVzIGFuZCByZXJ1bjsgaW4gdGhlIGFic2VuY2Ugb2YgcmVk aXJlY3Rpb24gdGhlCisgICAgIyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBzYW1l LgorCisgICAgbWlfZ2RiX3Rlc3QgInNldCBkcHJpbnRmLXN0eWxlIGNhbGwi ICIuKiIgIm1pIHNldCBkcHJpbnRmIHN0eWxlIHRvIGNhbGwiCisgICAgbWlf Y29udGludWVfZHByaW50ZiAiY2FsbCIKKworICAgIG1pX2dkYl90ZXN0ICJz ZXQgZHByaW50Zi1mdW5jdGlvbiBmcHJpbnRmIiAiLioiICJtaSBzZXQgZHBy aW50Zi1jaGFubmVsIHN0ZGVyciIKKyAgICBtaV9nZGJfdGVzdCAic2V0IGRw cmludGYtY2hhbm5lbCBzdGRlcnIiICIuKiIgIm1pIHNldCBkcHJpbnRmIGNo YW5uZWwiCisgICAgbWlfY29udGludWVfZHByaW50ZiAiZnByaW50ZiIKK30K Kworc2V0IHRhcmdldF9jYW5fZHByaW50ZiAwCitzZXQgbXNnICJzZXQgZHBy aW50ZiBzdHlsZSB0byBhZ2VudCIKK3NlbmRfZ2RiICJzZXQgZHByaW50Zi1z dHlsZSBhZ2VudFxuIgorZ2RiX2V4cGVjdCB7CisgICAgLXJlICJ3YXJuaW5n OiBUYXJnZXQgY2Fubm90IHJ1biBkcHJpbnRmIGNvbW1hbmRzLCBmYWxsaW5n IGJhY2sgdG8gR0RCIHByaW50Zi4qJG1pX2dkYl9wcm9tcHQkIiB7CisJdW5z dXBwb3J0ZWQgIiRtc2ciCisgICAgfQorICAgIC1yZSAiLipkb25lLiokbWlf Z2RiX3Byb21wdCQiIHsKKwlzZXQgdGFyZ2V0X2Nhbl9kcHJpbnRmIDEKKwlw YXNzICIkbXNnIgorICAgIH0KKyAgICAtcmUgIi4qJG1pX2dkYl9wcm9tcHQk IiB7CisJZmFpbCAiJG1zZyIKKyAgICB9CisgICAgdGltZW91dCB7CisJZmFp bCAiJG1zZyIKKyAgICB9Cit9CisKK2lmICR0YXJnZXRfY2FuX2RwcmludGYg eworICAgIG1pX3J1bl9jbWQKKworICAgIG1pX2dkYl90ZXN0ICJjb250aW51 ZSIgIi4qYnJlYWtwb2ludC1oaXQuKmZ1bmM9XCJmb29cIi4qIiAibWkgMXN0 IGRwcmludGYsIGFnZW50IgorCisgICAgbWlfZ2RiX3Rlc3QgImNvbnRpbnVl IiAiLipicmVha3BvaW50LWhpdC4qZnVuYz1cImZvb1wiLioiICJtaSAybmQg ZHByaW50ZiwgYWdlbnQiCisKKyAgICBtaV9nZGJfdGVzdCAiNi1icmVhay1p bmZvIiAiLiptb2RpZmllZC4qIiAibWkgaW5mbyBkcHJpbnRmIHNlY29uZCB0 aW1lIgorfQorCittaV9nZGJfdGVzdCAic2V0IGRwcmludGYtc3R5bGUgZm9v YmFyIiAiLiplcnJvci4qIiAibWkgc2V0IGRwcmludGYgc3R5bGUgdG8gYW4g dW5yZWNvZ25pemVkIHR5cGUiCg== --14dae9399163be098e04dc5b0818--