From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 457 invoked by alias); 1 Sep 2011 11:01:39 -0000 Received: (qmail 445 invoked by uid 22791); 1 Sep 2011 11:01:36 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ,TW_EV,TW_VP X-Spam-Check-By: sourceware.org Received: from mail-vw0-f41.google.com (HELO mail-vw0-f41.google.com) (209.85.212.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 01 Sep 2011 11:01:20 +0000 Received: by vwm42 with SMTP id 42so1566461vwm.0 for ; Thu, 01 Sep 2011 04:01:19 -0700 (PDT) Received: by 10.220.182.193 with SMTP id cd1mr29195vcb.11.1314874879130; Thu, 01 Sep 2011 04:01:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.189.70 with HTTP; Thu, 1 Sep 2011 04:00:59 -0700 (PDT) In-Reply-To: References: From: Kevin Pouget Date: Thu, 01 Sep 2011 11:09:00 -0000 Message-ID: Subject: Re: [RFC - Python] New ObjFile event To: Eli Zaretskii Cc: tromey@redhat.com, pmuldoon@redhat.com, gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=90e6ba53b3ec183e2904abdf2a72 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-09/txt/msg00011.txt.bz2 --90e6ba53b3ec183e2904abdf2a72 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3265 On Thu, Sep 1, 2011 at 12:18 PM, Eli Zaretskii wrote: >> From: Kevin Pouget >> Date: Thu, 1 Sep 2011 11:17:51 +0200 >> Cc: pmuldoon@redhat.com, gdb-patches@sourceware.org >> >> =A0This event indicates that the inferior or one of its threads has rece= ived as >> =A0signal. =A0@code{gdb.SignalEvent} has the following attributes: >> >> +@item events.newobjfile >> +Emits @code{gdb.NewObjFileEvent} which indicates that a new object-file= has >> +been loaded by @value{GDBN}. >> + >> +During the callback, ``current objfile'' will be set to the new object = file. >> + >> =A0@table @code >> =A0@defivar SignalEvent stop_signal >> =A0A string representing the signal received by the inferior. =A0A list = of possible >> @@ -22949,10 +22955,10 @@ The following objfile-related functions are av= ailable in the > > The addition doesn't look right: shouldn't it be _after_ the following > @table line? =A0events.newobjfile is an attribute of the same object as > stop_signal, right? sorry; I moved the paragraph to the right place. >> +When auto-loading a Python script (@pxref{Auto-loading}) and during new >> +object-file callbacks, @value{GDBN} sets the ``current objfile'' to the > > Why did you use "new" here? =A0New in relation to what? "new" here refers to object-file, but I'm not sure I can write "during new-object-file callbacks", can I? I also added a label reference to make things clearer here: > During the callback, ``current objfile'' will be set to the new object fi= le > (@pxref{Objfiles In Python}). (I'm not sure why there is no `_' between 'current' and 'objfile', I copied it from another place --- @value{GDBN} sets the ``current objfile'' to the corresponding objfile.) Many thanks, Kevin 2011-09-01 Kevin Pouget Allow Python notification of new object-file loadings. * Makefile.in (SUBDIR_PYTHON_SRCS): Add py-newobjfilevent.c. (SUBDIR_PYTHON_OBS): Add py-newobjfileevent.o. Add build rule for this file. * python/py-event.h (emit_new_objfile_event): New prototype. (newobjfile): New Python event emitter. * python/py-evts.c (gdbpy_initialize_py_events): Add newobjfile to Python event registry. * python/py-inferior.c: Include objfiles.h (python_new_objfile): New function. (gdbpy_initialize_inferior): Add python_new_objfile to the new objfile observers. * python/py-newobjfileevent.c: New file. * python-internal.h (gdbpy_initialize_new_objfile_event): New prototype. (gdbpy_current_objfile): New global variable. * python/python.c (gdbpy_current_objfile): Make global. (_initialize_python): Add gdbpy_initialize_new_objfile_event call. 2011-09-01 Kevin Pouget Allow Python notification of new object-file loadings. * gdb.texinfo (Events In Python): Document `gdb.NewObjFileEvent' events emitter. (Objfiles In Python): Indicate that `gdb.current_objfile' is also set during new object-file callbacks. 2011-09-01 Kevin Pouget Allow Python notification of new object-file loadings. * gdb.python/py-events.exp: Test newobjfile event. * gdb.python/py-events.py: Register newobjfile callback. * gdb.python/py-events.c: Add call to shared library * gdb.python/py-events-shlib.c: New file. --90e6ba53b3ec183e2904abdf2a72 Content-Type: text/x-patch; charset=US-ASCII; name="0001-New-ObjFile-event.patch" Content-Disposition: attachment; filename="0001-New-ObjFile-event.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gs1mfgot1 Content-length: 19911 RnJvbSAyYmNlMjc2Mzg1ODM1OGI3NTNmMWRhN2IyYmIzZGEwMjE1ZWQ4YmZj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLZXZpbiBQb3VnZXQg PGtldmluLnBvdWdldEBzdC5jb20+CkRhdGU6IFRodSwgMSBTZXAgMjAxMSAx MTowODoyMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIE5ldyBPYmpGaWxlIGV2 ZW50CgotLS0KIGdkYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDYgKysrCiBnZGIvTkVXUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAyICsKIGdkYi9kb2MvZ2RiLnRleGlu Zm8gICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKysrKysrLS0KIGdk Yi9weXRob24vcHktZXZlbnQuaCAgICAgICAgICAgICAgICAgICAgICB8ICAg IDEgKwogZ2RiL3B5dGhvbi9weS1ldmVudHMuaCAgICAgICAgICAgICAgICAg ICAgIHwgICAgMSArCiBnZGIvcHl0aG9uL3B5LWV2dHMuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAzICsrCiBnZGIvcHl0aG9uL3B5LWluZmVyaW9y LmMgICAgICAgICAgICAgICAgICAgfCAgIDI1ICsrKysrKysrKysrKysKIGdk Yi9weXRob24vcHktbmV3b2JqZmlsZWV2ZW50LmMgICAgICAgICAgICB8ICAg NTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZ2RiL3B5dGhvbi9w eXRob24taW50ZXJuYWwuaCAgICAgICAgICAgICAgIHwgICAgMiArCiBnZGIv cHl0aG9uL3B5dGhvbi5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2 ICsrLQogZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50cy1zaGxp Yi5jIHwgICAyMCArKysrKysrKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktZXZlbnRzLmMgICAgICAgfCAgICAzICsrCiBnZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktZXZlbnRzLmV4cCAgICAgfCAgIDI2ICsrKysrKysr KysrLS0tCiBnZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXZlbnRzLnB5 ICAgICAgfCAgIDIwICsrKysrKysrKysKIDE0IGZpbGVzIGNoYW5nZWQsIDE3 MiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnZGIvcHl0aG9uL3B5LW5ld29iamZpbGVldmVudC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2 ZW50cy1zaGxpYi5jCgpkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIv Z2RiL01ha2VmaWxlLmluCmluZGV4IDgyNmQzMzkuLjk4NjU4OGIgMTAwNjQ0 Ci0tLSBhL2dkYi9NYWtlZmlsZS5pbgorKysgYi9nZGIvTWFrZWZpbGUuaW4K QEAgLTI4OSw2ICsyODksNyBAQCBTVUJESVJfUFlUSE9OX09CUyA9IFwKIAlw eS1pbmZlcmlvci5vIFwKIAlweS1pbmZ0aHJlYWQubyBcCiAJcHktbGF6eS1z dHJpbmcubyBcCisJcHktbmV3b2JqZmlsZWV2ZW50Lm8gXAogCXB5LW9iamZp bGUubyBcCiAJcHktcGFyYW0ubyBcCiAJcHktcHJldHR5cHJpbnQubyBcCkBA IC0zMTksNiArMzIwLDcgQEAgU1VCRElSX1BZVEhPTl9TUkNTID0gXAogCXB5 dGhvbi9weS1pbmZlcmlvci5jIFwKIAlweXRob24vcHktaW5mdGhyZWFkLmMg XAogCXB5dGhvbi9weS1sYXp5LXN0cmluZy5jIFwKKwlweXRob24vcHktbmV3 b2JqZmlsZWV2ZW50LmMgXAogCXB5dGhvbi9weS1vYmpmaWxlLmMgXAogCXB5 dGhvbi9weS1wYXJhbS5jIFwKIAlweXRob24vcHktcHJldHR5cHJpbnQuYyBc CkBAIC0yMTE1LDYgKzIxMTcsMTAgQEAgcHktbGF6eS1zdHJpbmcubzogJChz cmNkaXIpL3B5dGhvbi9weS1sYXp5LXN0cmluZy5jCiAJJChDT01QSUxFKSAk KFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktbGF6eS1zdHJp bmcuYwogCSQoUE9TVENPTVBJTEUpCiAKK3B5LW5ld29iamZpbGVldmVudC5v OiAkKHNyY2RpcikvcHl0aG9uL3B5LW5ld29iamZpbGVldmVudC5jCisJJChD T01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHkt bmV3b2JqZmlsZWV2ZW50LmMKKwkkKFBPU1RDT01QSUxFKQorCiBweS1vYmpm aWxlLm86ICQoc3JjZGlyKS9weXRob24vcHktb2JqZmlsZS5jCiAJJChDT01Q SUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktb2Jq ZmlsZS5jCiAJJChQT1NUQ09NUElMRSkKZGlmZiAtLWdpdCBhL2dkYi9ORVdT IGIvZ2RiL05FV1MKaW5kZXggMjU1YTIyZS4uYmI1Nzk1YyAxMDA2NDQKLS0t IGEvZ2RiL05FV1MKKysrIGIvZ2RiL05FV1MKQEAgLTM4LDYgKzM4LDggQEAK IAogICAqKiBTeW1ib2xzIG5vdyBwcm92aWRlIHRoZSAidHlwZSIgYXR0cmli dXRlLCB0aGUgdHlwZSBvZiB0aGUgc3ltYm9sLgogCisgICoqIEEgbmV3IGV2 ZW50ICJnZGIubmV3b2JqZmlsZSIgaGFzIGJlZW4gYWRkZWQuCisKICogbGli dGhyZWFkLWRiLXNlYXJjaC1wYXRoIG5vdyBzdXBwb3J0cyB0d28gc3BlY2lh bCB2YWx1ZXM6ICRzZGlyIGFuZCAkcGRpci4KICAgJHNkaXIgc3BlY2lmaWVz IHRoZSBkZWZhdWx0IHN5c3RlbSBsb2NhdGlvbnMgb2Ygc2hhcmVkIGxpYnJh cmllcy4KICAgJHBkaXIgc3BlY2lmaWVzIHRoZSBkaXJlY3Rvcnkgd2hlcmUg dGhlIGxpYnB0aHJlYWQgdXNlZCBieSB0aGUgYXBwbGljYXRpb24KZGlmZiAt LWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhp bmZvCmluZGV4IDIzYjJhOTguLjA1Njc3NmEgMTAwNjQ0Ci0tLSBhL2dkYi9k b2MvZ2RiLnRleGluZm8KKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpAQCAt MjIzMjcsNiArMjIzMjcsMTMgQEAgQSByZWZlcmVuY2UgdG8gdGhlIGJyZWFr cG9pbnQgdGhhdCB3YXMgaGl0IG9mIHR5cGUgQGNvZGV7Z2RiLkJyZWFrcG9p bnR9LgogQGVuZCBkZWZpdmFyCiBAZW5kIHRhYmxlCiAKK0BpdGVtIGV2ZW50 cy5uZXdvYmpmaWxlCitFbWl0cyBAY29kZXtnZGIuTmV3T2JqRmlsZUV2ZW50 fSB3aGljaCBpbmRpY2F0ZXMgdGhhdCBhIG5ldyBvYmplY3QtZmlsZSBoYXMK K2JlZW4gbG9hZGVkIGJ5IEB2YWx1ZXtHREJOfS4KKworRHVyaW5nIHRoZSBj YWxsYmFjaywgYGBjdXJyZW50IG9iamZpbGUnJyB3aWxsIGJlIHNldCB0byB0 aGUgbmV3IG9iamVjdCBmaWxlCisoQHB4cmVme09iamZpbGVzIEluIFB5dGhv bn0pLgorCiBAZW5kIHRhYmxlCiAKIEBub2RlIFRocmVhZHMgSW4gUHl0aG9u CkBAIC0yMjk0OSwxMCArMjI5NTYsMTAgQEAgVGhlIGZvbGxvd2luZyBvYmpm aWxlLXJlbGF0ZWQgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgaW4gdGhlCiAK IEBmaW5kZXggZ2RiLmN1cnJlbnRfb2JqZmlsZQogQGRlZnVuIGN1cnJlbnRf b2JqZmlsZQotV2hlbiBhdXRvLWxvYWRpbmcgYSBQeXRob24gc2NyaXB0IChA cHhyZWZ7QXV0by1sb2FkaW5nfSksIEB2YWx1ZXtHREJOfQotc2V0cyB0aGUg YGBjdXJyZW50IG9iamZpbGUnJyB0byB0aGUgY29ycmVzcG9uZGluZyBvYmpm aWxlLiAgVGhpcwotZnVuY3Rpb24gcmV0dXJucyB0aGUgY3VycmVudCBvYmpm aWxlLiAgSWYgdGhlcmUgaXMgbm8gY3VycmVudCBvYmpmaWxlLAotdGhpcyBm dW5jdGlvbiByZXR1cm5zIEBjb2Rle05vbmV9LgorV2hlbiBhdXRvLWxvYWRp bmcgYSBQeXRob24gc2NyaXB0IChAcHhyZWZ7QXV0by1sb2FkaW5nfSkgYW5k IGR1cmluZworbmV3LW9iamVjdC1maWxlIGNhbGxiYWNrcywgQHZhbHVle0dE Qk59IHNldHMgdGhlIGBgY3VycmVudCBvYmpmaWxlJycgdG8KK3RoZSBjb3Jy ZXNwb25kaW5nIG9iamZpbGUuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhl IGN1cnJlbnQgb2JqZmlsZS4gCitJZiB0aGVyZSBpcyBubyBjdXJyZW50IG9i amZpbGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXtOb25lfS4KIEBl bmQgZGVmdW4KIAogQGZpbmRleCBnZGIub2JqZmlsZXMKZGlmZiAtLWdpdCBh L2dkYi9weXRob24vcHktZXZlbnQuaCBiL2dkYi9weXRob24vcHktZXZlbnQu aAppbmRleCBmNGIzZWUyLi45MDY5YTUxIDEwMDY0NAotLS0gYS9nZGIvcHl0 aG9uL3B5LWV2ZW50LmgKKysrIGIvZ2RiL3B5dGhvbi9weS1ldmVudC5oCkBA IC0xMTEsNiArMTExLDcgQEAgZXh0ZXJuIGludCBldnB5X2VtaXRfZXZlbnQg KFB5T2JqZWN0ICpldmVudCwKIAogZXh0ZXJuIFB5T2JqZWN0ICpjcmVhdGVf ZXZlbnRfb2JqZWN0IChQeVR5cGVPYmplY3QgKnB5X3R5cGUpOwogZXh0ZXJu IFB5T2JqZWN0ICpjcmVhdGVfdGhyZWFkX2V2ZW50X29iamVjdCAoUHlUeXBl T2JqZWN0ICpweV90eXBlKTsKK2V4dGVybiBpbnQgZW1pdF9uZXdfb2JqZmls ZV9ldmVudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogCiBleHRlcm4g dm9pZCBldnB5X2RlYWxsb2MgKFB5T2JqZWN0ICpzZWxmKTsKIGV4dGVybiBp bnQgZXZweV9hZGRfYXR0cmlidXRlIChQeU9iamVjdCAqZXZlbnQsCmRpZmYg LS1naXQgYS9nZGIvcHl0aG9uL3B5LWV2ZW50cy5oIGIvZ2RiL3B5dGhvbi9w eS1ldmVudHMuaAppbmRleCBiZDU0NDE4Li43MGY0NWE0IDEwMDY0NAotLS0g YS9nZGIvcHl0aG9uL3B5LWV2ZW50cy5oCisrKyBiL2dkYi9weXRob24vcHkt ZXZlbnRzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKICAg ZXZlbnRyZWdpc3RyeV9vYmplY3QgKnN0b3A7CiAgIGV2ZW50cmVnaXN0cnlf b2JqZWN0ICpjb250OwogICBldmVudHJlZ2lzdHJ5X29iamVjdCAqZXhpdGVk OworICBldmVudHJlZ2lzdHJ5X29iamVjdCAqbmV3b2JqZmlsZTsKIAogICBQ eU9iamVjdCAqbW9kdWxlOwogCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5 LWV2dHMuYyBiL2dkYi9weXRob24vcHktZXZ0cy5jCmluZGV4IDUwYzA1ZjMu LmM4ZDEwNDQgMTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHktZXZ0cy5jCisr KyBiL2dkYi9weXRob24vcHktZXZ0cy5jCkBAIC01OCw2ICs1OCw5IEBAIGdk YnB5X2luaXRpYWxpemVfcHlfZXZlbnRzICh2b2lkKQogICBpZiAoYWRkX25l d19yZWdpc3RyeSAoJmdkYl9weV9ldmVudHMuZXhpdGVkLCAiZXhpdGVkIikg PCAwKQogICAgIGdvdG8gZmFpbDsKIAorICBpZiAoYWRkX25ld19yZWdpc3Ry eSAoJmdkYl9weV9ldmVudHMubmV3b2JqZmlsZSwgIm5ld29iamZpbGUiKSA8 IDApCisgICAgZ290byBmYWlsOworCiAgIFB5X0lOQ1JFRiAoZ2RiX3B5X2V2 ZW50cy5tb2R1bGUpOwogICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJf bW9kdWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiZXZlbnRzIiwK ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktaW5mZXJpb3IuYyBiL2dkYi9w eXRob24vcHktaW5mZXJpb3IuYwppbmRleCA2YWRkNjgxLi42M2ZmYzJiIDEw MDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMKKysrIGIvZ2Ri L3B5dGhvbi9weS1pbmZlcmlvci5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j bHVkZSAiZ2RiY29yZS5oIgogI2luY2x1ZGUgImdkYnRocmVhZC5oIgogI2lu Y2x1ZGUgImluZmVyaW9yLmgiCisjaW5jbHVkZSAib2JqZmlsZXMuaCIKICNp bmNsdWRlICJvYnNlcnZlci5oIgogI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5h bC5oIgogI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKQEAgLTEyNSw2ICsxMjYs MjkgQEAgcHl0aG9uX2luZmVyaW9yX2V4aXQgKHN0cnVjdCBpbmZlcmlvciAq aW5mKQogICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CiB9CiAKKy8qIENhbGxi YWNrIHVzZWQgdG8gbm90aWZ5IFB5dGhvbiBsaXN0ZW5lcnMgYWJvdXQgbmV3 IG9iamZpbGVzIGxvYWRlZCBpbiB0aGUKKyAgIGluZmVyaW9yLiBQeXRob24g Z2xvYmFsIHZhcmlhYmxlICdnZGIuY3VycmVudF9vYmpmaWxlICgpJyB3aWxs IGJlIHNldAorICAgZHVyaW5nIHRoZSBub3RpZmljYXRpb25zLiAgKi8KKwor c3RhdGljIHZvaWQKK3B5dGhvbl9uZXdfb2JqZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUpCit7CisgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwor CisgIGlmIChvYmpmaWxlID09IE5VTEwpCisgICAgICAgcmV0dXJuOworCisg IGNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X29iamZpbGVfYXJj aCAob2JqZmlsZSksIGN1cnJlbnRfbGFuZ3VhZ2UpOworCisgIGdkYnB5X2N1 cnJlbnRfb2JqZmlsZSA9IG9iamZpbGU7CisKKyAgaWYgKGVtaXRfbmV3X29i amZpbGVfZXZlbnQgKG9iamZpbGUpIDwgMCkKKyAgICBnZGJweV9wcmludF9z dGFjayAoKTsKKworICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgIGdkYnB5 X2N1cnJlbnRfb2JqZmlsZSA9IE5VTEw7Cit9CisKIC8qIFJldHVybiBhIHJl ZmVyZW5jZSB0byB0aGUgUHl0aG9uIG9iamVjdCBvZiB0eXBlIEluZmVyaW9y CiAgICByZXByZXNlbnRpbmcgSU5GRVJJT1IuICBJZiB0aGUgb2JqZWN0IGhh cyBhbHJlYWR5IGJlZW4gY3JlYXRlZCwKICAgIHJldHVybiBpdCBhbmQgaW5j cmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQsICBvdGhlcndpc2UsIGNyZWF0 ZSBpdC4KQEAgLTcwMSw2ICs3MjUsNyBAQCBnZGJweV9pbml0aWFsaXplX2lu ZmVyaW9yICh2b2lkKQogICBvYnNlcnZlcl9hdHRhY2hfbm9ybWFsX3N0b3Ag KHB5dGhvbl9vbl9ub3JtYWxfc3RvcCk7CiAgIG9ic2VydmVyX2F0dGFjaF90 YXJnZXRfcmVzdW1lZCAocHl0aG9uX29uX3Jlc3VtZSk7CiAgIG9ic2VydmVy X2F0dGFjaF9pbmZlcmlvcl9leGl0IChweXRob25faW5mZXJpb3JfZXhpdCk7 CisgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAocHl0aG9uX25ld19v YmpmaWxlKTsKIAogICBtZW1idWZfb2JqZWN0X3R5cGUudHBfbmV3ID0gUHlU eXBlX0dlbmVyaWNOZXc7CiAgIGlmIChQeVR5cGVfUmVhZHkgKCZtZW1idWZf b2JqZWN0X3R5cGUpIDwgMCkKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHkt bmV3b2JqZmlsZWV2ZW50LmMgYi9nZGIvcHl0aG9uL3B5LW5ld29iamZpbGVl dmVudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIw ZTJiMzEKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvcHl0aG9uL3B5LW5ld29i amZpbGVldmVudC5jCkBAIC0wLDAgKzEsNTMgQEAKKy8qIFB5dGhvbiBpbnRl cmZhY2UgdG8gbmV3IG9iamVjdCBmaWxlIGxvYWRpbmcgZXZlbnRzLgorCisg ICBDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgInB5LWV2ZW50 LmgiCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgbmV3X29iamZpbGVfZXZlbnRf b2JqZWN0X3R5cGU7CisKK1B5T2JqZWN0ICoKK2NyZWF0ZV9uZXdfb2JqZmls ZV9ldmVudF9vYmplY3QgKHZvaWQpCit7CisgIHJldHVybiBjcmVhdGVfZXZl bnRfb2JqZWN0ICgmbmV3X29iamZpbGVfZXZlbnRfb2JqZWN0X3R5cGUpOwor fQorCisvKiBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBub3RpZmllcyBvYnNl cnZlcnMgd2hlbiBhIG5ldyBvYmpmaWxlIGV2ZW50IG9jY3Vycy4KKyAgIFRo aXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgYSBuZXcgUHl0aG9uIG5ld19vYmpm aWxlIGV2ZW50IG9iamVjdC4KKyAgIFJldHVybiAtMSBpZiBlbWl0IGZhaWxz LiAgKi8KKworaW50CitlbWl0X25ld19vYmpmaWxlX2V2ZW50IChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKK3sKKyAgUHlPYmplY3QgKmV2ZW50OworCisg IGlmIChldnJlZ3B5X25vX2xpc3RlbmVyc19wIChnZGJfcHlfZXZlbnRzLm5l d29iamZpbGUpKQorICAgIHJldHVybiAwOworCisgIGV2ZW50ID0gY3JlYXRl X25ld19vYmpmaWxlX2V2ZW50X29iamVjdCAoKTsKKyAgaWYgKGV2ZW50KQor ICAgIHJldHVybiBldnB5X2VtaXRfZXZlbnQgKGV2ZW50LCBnZGJfcHlfZXZl bnRzLm5ld29iamZpbGUpOworICByZXR1cm4gLTE7Cit9CisKK0dEQlBZX05F V19FVkVOVF9UWVBFIChuZXdfb2JqZmlsZSwKKyAgICAgICAgICAgICAgICAg ICAgICAiZ2RiLk5ld09iakZpbGVFdmVudCIsCisgICAgICAgICAgICAgICAg ICAgICAgIk5ld09iakZpbGVFdmVudCIsCisgICAgICAgICAgICAgICAgICAg ICAgIkdEQiBuZXcgb2JqZWN0IGZpbGUgZXZlbnQgb2JqZWN0IiwKKyAgICAg ICAgICAgICAgICAgICAgICBldmVudF9vYmplY3RfdHlwZSwKKyAgICAgICAg ICAgICAgICAgICAgICBzdGF0aWMpOwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhv bi9weXRob24taW50ZXJuYWwuaCBiL2dkYi9weXRob24vcHl0aG9uLWludGVy bmFsLmgKaW5kZXggOTk2YjIzYi4uYTY0ZGVkMiAxMDA2NDQKLS0tIGEvZ2Ri L3B5dGhvbi9weXRob24taW50ZXJuYWwuaAorKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi1pbnRlcm5hbC5oCkBAIC0yMTEsNiArMjExLDcgQEAgdm9pZCBnZGJw eV9pbml0aWFsaXplX2JyZWFrcG9pbnRfZXZlbnQgKHZvaWQpOwogdm9pZCBn ZGJweV9pbml0aWFsaXplX2NvbnRpbnVlX2V2ZW50ICh2b2lkKTsKIHZvaWQg Z2RicHlfaW5pdGlhbGl6ZV9leGl0ZWRfZXZlbnQgKHZvaWQpOwogdm9pZCBn ZGJweV9pbml0aWFsaXplX3RocmVhZF9ldmVudCAodm9pZCk7Cit2b2lkIGdk YnB5X2luaXRpYWxpemVfbmV3X29iamZpbGVfZXZlbnQgKHZvaWQpOwogCiBz dHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAoUHlPYmpl Y3QgKnB5KTsKIApAQCAtMjE5LDYgKzIyMCw3IEBAIHN0cnVjdCBjbGVhbnVw ICplbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CiAKIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqcHl0aG9uX2dkYmFyY2g7CiBl eHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvbl9sYW5n dWFnZTsKK2V4dGVybiBzdHJ1Y3Qgb2JqZmlsZSAqZ2RicHlfY3VycmVudF9v YmpmaWxlOwogCiAvKiBVc2UgdGhpcyBhZnRlciBhIFRSWV9FWENFUFQgdG8g dGhyb3cgdGhlIGFwcHJvcHJpYXRlIFB5dGhvbgogICAgZXhjZXB0aW9uLiAg Ki8KZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9nZGIvcHl0 aG9uL3B5dGhvbi5jCmluZGV4IDAzZWRjZTkuLjgxMmZjNjEgMTAwNjQ0Ci0t LSBhL2dkYi9weXRob24vcHl0aG9uLmMKKysrIGIvZ2RiL3B5dGhvbi9weXRo b24uYwpAQCAtODkxLDggKzg5MSw5IEBAIGdkYnB5X3Byb2dzcGFjZXMgKFB5 T2JqZWN0ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51c2VkMikKIAogLyogVGhl ICJjdXJyZW50IiBvYmpmaWxlLiAgVGhpcyBpcyBzZXQgd2hlbiBnZGIgZGV0 ZWN0cyB0aGF0IGEgbmV3CiAgICBvYmpmaWxlIGhhcyBiZWVuIGxvYWRlZC4g IEl0IGlzIG9ubHkgc2V0IGZvciB0aGUgZHVyYXRpb24gb2YgYSBjYWxsIHRv Ci0gICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZTsgaXQgaXMg TlVMTCBhdCBvdGhlciB0aW1lcy4gICovCi1zdGF0aWMgc3RydWN0IG9iamZp bGUgKmdkYnB5X2N1cnJlbnRfb2JqZmlsZTsKKyAgIHNvdXJjZV9weXRob25f c2NyaXB0X2Zvcl9vYmpmaWxlIGFuZCBuZXdfb2JqZmlsZSBjYWxsYmFja3M7 IGl0IGlzIE5VTEwgYXQKKyAgIG90aGVyIHRpbWVzLiAgKi8KK3N0cnVjdCBv YmpmaWxlICpnZGJweV9jdXJyZW50X29iamZpbGU7CiAKIC8qIFNldCB0aGUg Y3VycmVudCBvYmpmaWxlIHRvIE9CSkZJTEUgYW5kIHRoZW4gcmVhZCBTVFJF QU0sRklMRSBhcwogICAgUHl0aG9uIGNvZGUuICAqLwpAQCAtMTIwOSw2ICsx MjEwLDcgQEAgRW5hYmxlcyBvciBkaXNhYmxlcyBwcmludGluZyBvZiBQeXRo b24gc3RhY2sgdHJhY2VzLiIpLAogICBnZGJweV9pbml0aWFsaXplX2NvbnRp bnVlX2V2ZW50ICgpOwogICBnZGJweV9pbml0aWFsaXplX2V4aXRlZF9ldmVu dCAoKTsKICAgZ2RicHlfaW5pdGlhbGl6ZV90aHJlYWRfZXZlbnQgKCk7Cisg IGdkYnB5X2luaXRpYWxpemVfbmV3X29iamZpbGVfZXZlbnQgKCkgOwogCiAg IG9ic2VydmVyX2F0dGFjaF9iZWZvcmVfcHJvbXB0IChiZWZvcmVfcHJvbXB0 X2hvb2spOwogCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktZXZlbnRzLXNobGliLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktZXZlbnRzLXNobGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMmExN2JiZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMtc2hsaWIuYwpAQCAtMCww ICsxLDIwIEBACisvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgorCisgICBDb3B5cmlnaHQgMjAxMSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKworCit2b2lkIGRvX25vdGhpbmcgKHZvaWQpIHt9CisKZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMu YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMuYwppbmRl eCBjZWI2OTdlLi41YWM3MmYyIDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktZXZlbnRzLmMKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LWV2ZW50cy5jCkBAIC0xNiw2ICsxNiw4IEBACiAgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlICA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAqLwogCitleHRlcm4gdm9pZCBk b19ub3RoaW5nICh2b2lkKTsKKwogaW50IHNlY29uZCgpewogICByZXR1cm4g MTI7CiB9CkBAIC0yNSw1ICsyNyw2IEBAIGludCBmaXJzdCgpewogfQogCiBp bnQgbWFpbiAoKXsKKyAgZG9fbm90aGluZygpOwogICByZXR1cm4gZmlyc3Qo KTsKIH0KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1ldmVudHMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2 ZW50cy5leHAKaW5kZXggZTVkNmRhZi4uMTFkN2UwMCAxMDA2NDQKLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50cy5leHAKKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV2ZW50cy5leHAKQEAgLTI0 LDIzICsyNCwzOSBAQCBpZiAkdHJhY2VsZXZlbCB0aGVuIHsKIAogbG9hZF9s aWIgZ2RiLXB5dGhvbi5leHAKIAorc2V0IGxpYmZpbGUgInB5LWV2ZW50cy1z aGxpYiIKK3NldCBsaWJzcmMgICRzcmNkaXIvJHN1YmRpci8kbGliZmlsZS5j CitzZXQgbGliX3NsICAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGUuc28KK3Nl dCBsaWJfb3B0cyAgZGVidWcKKwogc2V0IHRlc3RmaWxlICJweS1ldmVudHMi CiBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiBzZXQgYmluZmlsZSAke29i amRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CitzZXQgZXhlY19vcHRzIFts aXN0IGRlYnVnIHNobGliPSRsaWJfc2xdCiBzZXQgcHlmaWxlICR7c3JjZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ucHkKIAotaWYgeyBbcHJlcGFyZV9m b3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNm aWxlfV0gfSB7CitpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0g ewogICAgIHJldHVybiAtMQogfQogCitpZiB7IFtnZGJfY29tcGlsZV9zaGxp YiAkbGlic3JjICRsaWJfc2wgJGxpYl9vcHRzXSAhPSAiIgorICAgICB8fCBb Z2RiX2NvbXBpbGUgJHNyY2Rpci8kc3ViZGlyLyRzcmNmaWxlICRiaW5maWxl IGV4ZWN1dGFibGUgJGV4ZWNfb3B0c10gIT0gIiJ9IHsKKyAgICB1bnRlc3Rl ZCAiQ291bGQgbm90IGNvbXBpbGUgZWl0aGVyICRsaWJzcmMgb3IgJHNyY2Rp ci8kc3ViZGlyLyRzcmNmaWxlLiIKKyAgICByZXR1cm4gLTEKK30KKworIyBT dGFydCB3aXRoIGEgZnJlc2ggZ2RiLgorY2xlYW5fcmVzdGFydCAke3Rlc3Rm aWxlfQorCiBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVl IH0KIAogZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gZXhlY2ZpbGUgKCck e3B5ZmlsZX0nKSIgIiIKIAotaWYgIVtydW50b19tYWluIF0gdGhlbiB7Ci0g ICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iCi0gICAgcmV0dXJuIC0xCi19 CitnZGJfdGVzdCAiVGVzdF9OZXdvYmpfRXZlbnRzIiAiTmV3IE9iamVjdEZp bGUgRXZlbnQgdGVzdGVyIHJlZ2lzdGVyZWQuIiAiUmVnaXN0ZXIgbmV3IG9i amZpbGUgZXZlbnQgaGFuZGxlciIKKworZ2RiX2JyZWFrcG9pbnQgIm1haW4i IHt0ZW1wb3Jhcnl9CisKK2dkYl90ZXN0ICJydW4iICIuKmV2ZW50IHR5cGU6 IG5ld19vYmpmaWxlLipuZXcgb2JqZmlsZSBuYW1lLioiICJOZXcgb2JqZmls ZSBub3RpZmljYXRpb24iCiAKIGdkYl90ZXN0ICJUZXN0X0V2ZW50cyIgIkV2 ZW50IHRlc3RlcnMgcmVnaXN0ZXJlZC4iCiAKZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1ldmVudHMucHkgYi9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktZXZlbnRzLnB5CmluZGV4IDlmMDViOWYuLjEy ZTM2ZTggMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1ldmVudHMucHkKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWV2ZW50cy5weQpAQCAtNDgsNiArNDgsMTQgQEAgZGVmIGNvbnRpbnVlX2hh bmRsZXIgKGV2ZW50KToKICAgICBpZiAoIGV2ZW50LmluZmVyaW9yX3RocmVh ZCBpcyBub3QgTm9uZSkgOgogICAgICAgICBwcmludCAidGhyZWFkIG51bTog JXMiICUgKGV2ZW50LmluZmVyaW9yX3RocmVhZC5udW0pOwogCitkZWYgbmV3 X29iamZpbGVfaGFuZGxlciAoZXZlbnQpOgorICAgIGlmIChpc2luc3RhbmNl IChldmVudCwgZ2RiLk5ld09iakZpbGVFdmVudCkpOgorICAgICAgICBwcmlu dCAiZXZlbnQgdHlwZTogbmV3X29iamZpbGUiCisgICAgaWYgKGdkYi5jdXJy ZW50X29iamZpbGUgKCkgaXMgbm90IE5vbmUpOgorICAgIAlwcmludCAibmV3 IG9iamZpbGUgbmFtZTogJXMiICUgKGdkYi5jdXJyZW50X29iamZpbGUgKCku ZmlsZW5hbWUpCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQgIm5ldyBvYmpm aWxlIGlzIE5vbmUiCisKIGNsYXNzIHRlc3RfZXZlbnRzIChnZGIuQ29tbWFu ZCk6CiAgICAgIiIiVGVzdCBldmVudHMuIiIiCiAKQEAgLTYyLDMgKzcwLDE1 IEBAIGNsYXNzIHRlc3RfZXZlbnRzIChnZGIuQ29tbWFuZCk6CiAgICAgICAg IHByaW50ICJFdmVudCB0ZXN0ZXJzIHJlZ2lzdGVyZWQuIgogCiB0ZXN0X2V2 ZW50cyAoKQorCitjbGFzcyB0ZXN0X25ld29ial9ldmVudHMgKGdkYi5Db21t YW5kKToKKyAgICAiIiJOZXdPYmogZXZlbnRzLiIiIgorCisgICAgZGVmIF9f aW5pdF9fIChzZWxmKToKKyAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18g KHNlbGYsICJ0ZXN0X25ld29ial9ldmVudHMiLCBnZGIuQ09NTUFORF9TVEFD SykKKworICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgor ICAgICAgICBnZGIuZXZlbnRzLm5ld29iamZpbGUuY29ubmVjdCAobmV3X29i amZpbGVfaGFuZGxlcikKKyAgICAgICAgcHJpbnQgIk5ldyBPYmplY3RGaWxl IEV2ZW50IHRlc3RlciByZWdpc3RlcmVkLiIKKwordGVzdF9uZXdvYmpfZXZl bnRzICgpCi0tIAoxLjcuNgoK --90e6ba53b3ec183e2904abdf2a72--