From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28515 invoked by alias); 27 Jan 2012 12:47:52 -0000 Received: (qmail 28499 invoked by uid 22791); 27 Jan 2012 12:47:46 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 27 Jan 2012 12:47:28 +0000 Received: by vcbfl11 with SMTP id fl11so1374785vcb.0 for ; Fri, 27 Jan 2012 04:47:27 -0800 (PST) Received: by 10.220.213.200 with SMTP id gx8mr3409179vcb.13.1327668447175; Fri, 27 Jan 2012 04:47:27 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.3.130 with HTTP; Fri, 27 Jan 2012 04:47:07 -0800 (PST) In-Reply-To: References: <83r4z8eqoa.fsf@gnu.org> From: Kevin Pouget Date: Fri, 27 Jan 2012 13:04:00 -0000 Message-ID: Subject: Re: [PATCH] Add bp_location to Python interface To: gdb-patches@sourceware.org Cc: pmuldoon@redhat.com, Eli Zaretskii Content-Type: multipart/mixed; boundary=bcaec54fb8142c65e104b781e644 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: 2012-01/txt/msg00947.txt.bz2 --bcaec54fb8142c65e104b781e644 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3498 On Wed, Jan 11, 2012 at 8:25 PM, Doug Evans wrote: > On Jan 11, 2012 1:02 AM, "Kevin Pouget" wrote: >> >> I'm not sure we can really move it away from the Python/Guile API, >> because, AFAIU, this volatile aspect if purely internal. 'Normal' >> users won't ever see it. >> >> > $ i b >> > Num =A0 =A0 Type =A0 =A0 =A0 =A0 =A0 Disp Enb Address =A0 =A0 =A0 =A0 = =A0 =A0What >> > 1 =A0 =A0 =A0 breakpoint =A0 =A0 keep y =A0 =A0 >> > =A0 =A0 =A0 =A0 1.1 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 y = =A0 =A0 0x4562c0 in main at ../../../git/gdb/gdb/gdb.c:26 inf 2 >> > =A0 =A0 =A0 =A0 1.2 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 y = =A0 =A0 0x4562c0 in main at ../../../git/gdb/gdb/gdb.c:26 inf 1 >> >> will remain the same all the time, but the objects (both in Python and >> their GDB backends) in gdb.breakpoints()[0].locations() will be >> deleted and re-created at various moments (cf. previous discussions). >> So far, I couldn't really understand what's the rational behind that >> ... >> >> [I'm not sure how well you know this part of GDB, please don't >> hesitate to correct me if I'm wrong] > > Yikes, missed that. > GDB internals are free to change at will, the python API is the exact opp= osite. > This is the kind of API addition that gives me pause. > Once it's in we're stuck. > > I once wrote a doc on managing GDB features/APIs, loosely based on > what I could remember of the SystemV ABI. > The ABI elements had three stages in their life, though I don't fully > remember the details. > IMO, IWBN to have something like it for our Python API. > In particular, one could remove something, after a preset amount of > time had passed since the announcement of its pending removal. > And one could add new things without promising they'll be there forever. > That scheme is old, and my memory is sketchy. > My point is that today we don't have anything other than: "Once it's > in we're stuck." [AFAICT] > > For the case at hand, IWBN to have some experience with whether this > addition works well enough that we want to keep it. > And it's not clear we can determine that without some real world use of i= t. ping I totally agree with Doug's discussion, but I'll let people with more experience decide about the policy regarding Python API. I've refreshed my patch against the current HEAD Cordially, Kevin 2012-01-27 Kevin Pouget Add bp_location to Python interface * Makefile.in (SUBDIR_PYTHON_OBS): Add py-bploc.o (SUBDIR_PYTHON_SRCS): Add python/py-bploc.c Add build rule for this file. * breakpoint.h (struct bploc_object): Forward declaration. (struct bp_location): Add py_bploc_obj. * breakpoint.c (free_bp_location): Call gdbpy_bplocation_free. * python/py-bploc.c: New file. * python/py-breakpoint.c (bppy_locations): New function. (breakpoint_object_methods): New method binding: locations(). * python/python-internal.h (bploc_object): New typedef. (bplocation_to_bplocation_object): New prototype. (gdbpy_initialize_bplocation): Likewise. * python/python.c (gdbpy_bplocation_free): New empty stub. (_initialize_python): Call gdbpy_initialize_bplocation. * python/python.h (gdbpy_bplocation_free): New prototype. =09 doc/ Add bp_location to Python interface * gdb.texinfo (Breakpoints In Python): Document gdb.Breakpoint.locations and gdb.BpLocation. testsuite/ Add bp_location to Python interface * gdb.python/py-breakpoint.exp: Test gdb.BpLocation. --bcaec54fb8142c65e104b781e644 Content-Type: text/x-patch; charset=US-ASCII; name="0001-Add-gdb.BpLocation-to-Python-interface.patch" Content-Disposition: attachment; filename="0001-Add-gdb.BpLocation-to-Python-interface.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gxx7gwta0 Content-length: 32119 RnJvbSA1YTIzMmY0N2MwZjFhMWMwZDAzMDEwY2ZjNDBlNWY0ODU2MjRhMzRl IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLZXZpbiBQb3VnZXQg PGtldmluLnBvdWdldEBzdC5jb20+CkRhdGU6IFdlZCwgMTggTWF5IDIwMTEg MTA6MDI6MjMgLTA0MDAKU3ViamVjdDogW1BBVENIXSBBZGQgZ2RiLkJwTG9j YXRpb24gdG8gUHl0aG9uIGludGVyZmFjZQoKLS0tCiBnZGIvTWFrZWZpbGUu aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIGdkYi9O RVdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg KwogZ2RiL2JyZWFrcG9pbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMyArCiBnZGIvYnJlYWtwb2ludC5oICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA2ICsKIGdkYi9kb2MvZ2RiLnRleGluZm8gICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNDcgKysrKwogZ2RiL3B5dGhvbi9weS1i cGxvYy5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMxMiArKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBnZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQu YyAgICAgICAgICAgICAgICAgfCAgIDM5ICsrKysKIGdkYi9weXRob24vcHl0 aG9uLWludGVybmFsLmggICAgICAgICAgICAgICB8ICAgIDYgKwogZ2RiL3B5 dGhvbi9weXRob24uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyAr CiBnZGIvcHl0aG9uL3B5dGhvbi5oICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAyICsKIGdkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1icmVha3Bv aW50LmV4cCB8ICAgNTcgKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDQ4OCBp bnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGdkYi9weXRob24vcHktYnBsb2MuYwoKZGlmZiAtLWdpdCBhL2dkYi9N YWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgppbmRleCAzOGM5M2M5Li42 YjlmY2VhIDEwMDY0NAotLS0gYS9nZGIvTWFrZWZpbGUuaW4KKysrIGIvZ2Ri L01ha2VmaWxlLmluCkBAIC0yNjksNiArMjY5LDcgQEAgU1VCRElSX1BZVEhP Tl9PQlMgPSBcCiAJcHktYXV0by1sb2FkLm8gXAogCXB5LWJsb2NrLm8gXAog CXB5LWJwZXZlbnQubyBcCisJcHktYnBsb2MubyBcCiAJcHktYnJlYWtwb2lu dC5vIFwKIAlweS1jbWQubyBcCiAJcHktY29udGludWVldmVudC5vIFwKQEAg LTMwMSw2ICszMDIsNyBAQCBTVUJESVJfUFlUSE9OX1NSQ1MgPSBcCiAJcHl0 aG9uL3B5LWF1dG8tbG9hZC5jIFwKIAlweXRob24vcHktYmxvY2suYyBcCiAJ cHl0aG9uL3B5LWJwZXZlbnQuYyBcCisJcHl0aG9uL3B5LWJwbG9jLmMgXAog CXB5dGhvbi9weS1icmVha3BvaW50LmMgXAogCXB5dGhvbi9weS1jbWQuYyBc CiAJcHl0aG9uL3B5LWNvbnRpbnVlZXZlbnQuYyBcCkBAIC0yMDIyLDYgKzIw MjQsMTAgQEAgcHktYnBldmVudC5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWJw ZXZlbnQuYwogCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2Rp cikvcHl0aG9uL3B5LWJwZXZlbnQuYwogCSQoUE9TVENPTVBJTEUpCiAKK3B5 LWJwbG9jLm86ICQoc3JjZGlyKS9weXRob24vcHktYnBsb2MuYworCSQoQ09N UElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWJw bG9jLmMKKwkkKFBPU1RDT01QSUxFKQorCiBweS1icmVha3BvaW50Lm86ICQo c3JjZGlyKS9weXRob24vcHktYnJlYWtwb2ludC5jCiAJJChDT01QSUxFKSAk KFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktYnJlYWtwb2lu dC5jCiAJJChQT1NUQ09NUElMRSkKZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIv Z2RiL05FV1MKaW5kZXggNDc5OGI3Yi4uOTcwOWNjMiAxMDA2NDQKLS0tIGEv Z2RiL05FV1MKKysrIGIvZ2RiL05FV1MKQEAgLTEwLDYgKzEwLDkgQEAKICAg KiogQSBuZXcgY2xhc3MsIGdkYi5wcmludGluZy5GbGFnRW51bWVyYXRpb25Q cmludGVyLCBjYW4gYmUgdXNlZCB0bwogICAgICBhcHBseSAiZmxhZyBlbnVt Ii1zdHlsZSBwcmV0dHktcHJpbnRpbmcgdG8gYW55IGVudW0uCiAKKyAgKiog QSBuZXcgbWV0aG9kICJnZGIuQnJlYWtwb2ludC5sb2NhdGlvbnMiIGhhcyBi ZWVuIGFkZGVkLCBhcyB3ZWxsIGFzCisgICAgIHRoZSBjbGFzcyBnZGIuQnBM b2NhdGlvbiB0byBwcm92aWRlIGZ1cnRoZXIgZGV0YWlscyBhYm91dCBicmVh a3BvaW50CisgICAgIGxvY2F0aW9ucy4KICogR0RCc2VydmVyIG5vdyBzdXBw b3J0cyBzdGRpbyBjb25uZWN0aW9ucy4KICAgRS5nLiAoZ2RiKSB0YXJnZXQg cmVtb3RlIHwgc3NoIG15aG9zdCBnZGJzZXJ2ZXIgLSBoZWxsbwogCmRpZmYg LS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwpp bmRleCBlYzdmMzQ4Li42MzlhMmI1IDEwMDY0NAotLS0gYS9nZGIvYnJlYWtw b2ludC5jCisrKyBiL2dkYi9icmVha3BvaW50LmMKQEAgLTU3NzEsNiArNTc3 MSw5IEBAIHN0YXRpYyB2b2lkCiBmcmVlX2JwX2xvY2F0aW9uIChzdHJ1Y3Qg YnBfbG9jYXRpb24gKmxvYykKIHsKICAgbG9jLT5vcHMtPmR0b3IgKGxvYyk7 CisKKyAgZ2RicHlfYnBsb2NhdGlvbl9mcmVlIChsb2MpOworCiAgIHhmcmVl IChsb2MpOwogfQogCmRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5oIGIv Z2RiL2JyZWFrcG9pbnQuaAppbmRleCBhYTY2NzkwLi4xMzk0MTFkIDEwMDY0 NAotLS0gYS9nZGIvYnJlYWtwb2ludC5oCisrKyBiL2dkYi9icmVha3BvaW50 LmgKQEAgLTI2LDYgKzI2LDcgQEAKIHN0cnVjdCB2YWx1ZTsKIHN0cnVjdCBi bG9jazsKIHN0cnVjdCBicmVha3BvaW50X29iamVjdDsKK3N0cnVjdCBicGxv Y19vYmplY3Q7CiBzdHJ1Y3QgZ2V0X251bWJlcl9vcl9yYW5nZV9zdGF0ZTsK IHN0cnVjdCB0aHJlYWRfaW5mbzsKIHN0cnVjdCBicHN0YXRzOwpAQCAtNDA1 LDYgKzQwNiwxMSBAQCBzdHJ1Y3QgYnBfbG9jYXRpb24KICAgLyogU291cmNl IGZpbGUgbmFtZSBvZiB0aGlzIGFkZHJlc3MuICAqLwogCiAgIGNoYXIgKnNv dXJjZV9maWxlOworCisgIC8qIFB5dGhvbiBvYmplY3QgYXNzb2NpYXRlZCB3 aXRoIHRoaXMgbG9jYXRpb24uICBNYXkgYmUgTlVMTCBpZiB0aGUgbG9jYXRp b24KKyAgICAgaXMgbm90IHlldCBleHBvcnRlZCB0byBQeXRob24uICAqLwor CisgIHN0cnVjdCBicGxvY19vYmplY3QgKnB5X2JwbG9jX29iajsKIH07CiAK IC8qIFRoaXMgc3RydWN0dXJlIGlzIGEgY29sbGVjdGlvbiBvZiBmdW5jdGlv biBwb2ludGVycyB0aGF0LCBpZiBhdmFpbGFibGUsCmRpZmYgLS1naXQgYS9n ZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwppbmRl eCBmYTcyOGRiLi5kMWRjYTgwIDEwMDY0NAotLS0gYS9nZGIvZG9jL2dkYi50 ZXhpbmZvCisrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KQEAgLTI0NDEwLDYg KzI0NDEwLDUzIEBAIGNvbW1hbmRzLCBzZXBhcmF0ZWQgYnkgbmV3bGluZXMu ICBJZiB0aGVyZSBhcmUgbm8gY29tbWFuZHMsIHRoaXMKIGF0dHJpYnV0ZSBp cyBAY29kZXtOb25lfS4gIFRoaXMgYXR0cmlidXRlIGlzIG5vdCB3cml0YWJs ZS4KIEBlbmQgZGVmdmFyCiAKK0BmaW5kZXggZ2RiLmxvY2F0aW9ucworQGRl ZnVuIGdkYi5sb2NhdGlvbnMgKCkKK1JldHVybiBhIHR1cGxlIGNvbnRhaW5p bmcgYSBzZXF1ZW5jZSBvZiBAY29kZXtnZGIuQnBMb2NhdGlvbn0gb2JqZWN0 cyAKKyhzZWUgYmVsb3cpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJyZWFrcG9p bnQuICBBIGJyZWFrcG9pbnQgd2l0aCBubyBsb2NhdGlvbgoraXMgYSBwZW5k aW5nIGJyZWFrcG9pbnQgKEBweHJlZntTZXQgQnJlYWtzLCAsIHBlbmRpbmcg YnJlYWtwb2ludHN9KS4KK0BlbmQgZGVmdW4KKworQSBicmVha3BvaW50IGxv Y2F0aW9uIGlzIHJlcHJlc2VudGVkIGJ5IGEgQGNvZGV7Z2RiLkJwTG9jYXRp b259IG9iamVjdCwKK3doaWNoIG9mZmVycyB0aGUgZm9sbG93aW5nIGF0dHJp YnV0ZXMgKGFsbCByZWFkIG9ubHkpIGFuZCBtZXRob2RzLgorUGxlYXNlIG5v dGUgdGhhdCBicmVha3BvaW50IGxvY2F0aW9uIG9iamVjdHMgYXJlIHZlcnkg dm9sYXRpbGUgZW50aXRpZXMgaW4KK0B2YWx1ZXtHREJOfSwgc28gb25lIHNo b3VsZCBhdm9pZCBrZWVwaW5nIHJlZmVyZW5jZXMgdG8gdGhlbS4gIFRoZXkg Y2FuIGJlIAorZGVzdHJ1Y3RlZCBhbmQgcmVjcmVhdGVkIG9uIGFueSBicmVh a3BvaW50IGNyZWF0aW9uIGFuZCBkZWxldGlvbiwgc2hhcmVkLQorbGlicmFy eSBldmVudCwgaW5mZXJpb3IgZnVuY3Rpb24gY2FsbCwgQGRvdHN7fSAKKwor QGRlZnZhciBCcExvY2F0aW9uLm93bmVyCitUaGlzIGF0dHJpYnV0ZSBob2xk cyBhIHJlZmVyZW5jZSB0byB0aGUgQGNvZGV7Z2RiLkJyZWFrcG9pbnR9IG9i amVjdCB3aGljaAorb3ducyB0aGlzIGxvY2F0aW9uLiAgVGhpcyBhdHRyaWJ1 dGUgaXMgbm90IHdyaXRhYmxlLiAgRnJvbSBhbiBpbXBsZW1lbnRhdGlvbiAK K3BvaW50IG9mIHZpZXcsIHRoZXJlIGlzIGEgb25lLXRvLW1hbnkgcmVsYXRp b24gYmV0d2VlbiBhIGJyZWFrcG9pbnQgYW5kCitpdHMgbG9jYXRpb25zLCBl dmVuIGlmIHR3byBicmVha3BvaW50cyBhcmUgc2V0IGF0IHNhbWUgYWRkcmVz cy4KKyAKK0BlbmQgZGVmdmFyCisKK0BkZWZ2YXIgQnBMb2NhdGlvbi5lbmFi bGVkCitUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxv Y2F0aW9uIGlzIGN1cnJlbnRseSBlbmFibGVkIG9yIG5vdC4KK1RoaXMgYXR0 cmlidXRlIGlzIG5vdCB3cml0YWJsZS4KK0BlbmQgZGVmdmFyCisKK0BkZWZ2 YXIgQnBMb2NhdGlvbi5pbmZlcmlvcgorVGhpcyBhdHRyaWJ1dGUgaG9sZHMg YSByZWZlcmVuY2UgdG8gdGhlIEBjb2Rle2dkYi5JbmZlcmlvcn0gb2JqZWN0 CitpbiB3aGljaCB0aGlzIGJyZWFrcG9pbnQgbG9jYXRpb24gaGFzIGJlZW4g aW5zZXJ0ZWQuICBUaGUgdmFsdWUgd2lsbCBiZSAKK0Bjb2Rle05vbmV9IGlm IHRoZXJlIGlzIG5vIGluZmVyaW9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxv Y2F0aW9uLiAgIFRoaXMgCithdHRyaWJ1dGUgaXMgbm90IHdyaXRhYmxlLgor QGVuZCBkZWZ2YXIKKworQGRlZnZhciBCcExvY2F0aW9uLmFkZHJlc3MKK1Ro aXMgYXR0cmlidXRlIGhvbGRzIGEgQGNvZGV7Z2RiLlZhbHVlfSBvYmplY3Qg Y29ycmVzcG9uZGluZyB0byB0aGUgYWRkcmVzcyAKK2F0IHdoaWNoIHRoZSBi cmVha3BvaW50IGhhcyBiZWVuIGluc2VydGVkLiAgIFRoaXMgYXR0cmlidXRl IGlzIG5vdCB3cml0YWJsZS4KK0BlbmQgZGVmdmFyCisKK0BkZWZ1biBCcExv Y2F0aW9uLmlzX3ZhbGlkICgpCitSZXR1cm5zIEBjb2Rle1RydWV9IGlmIHRo ZSBAY29kZXtnZGIuQnBMb2NhdGlvbn0gb2JqZWN0IGlzIHZhbGlkLAorQGNv ZGV7RmFsc2V9IGlmIG5vdC4gIEEgQGNvZGV7Z2RiLkJwTG9jYXRpb259IG9i amVjdCBtYXkgYmUgaW52YWxpZGF0ZWQgZHVyaW5nCithbnkgY2FsbCB0byBA dmFsdWV7R0RCfSdzIEFQSSBmb3IgaW50ZXJuYWwgcmVhc29ucyAoZm9yIGlu c3RhbmNlLCBicmVha3BvaW50IAorb3IgZXhlY3V0aW9uIHJlbGF0ZWQgbWVj aGFuaXNtcykuICBBbGwgb3RoZXIgQGNvZGV7Z2RiLkJwTG9jYXRpb259IG1l dGhvZHMKK2FuZCBhdHRyaWJ1dGVzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9u IGlmIHRoZSBvYmplY3QgaXMgaW52YWxpZC4KK0BlbmQgZGVmdW4KKwogQG5v ZGUgRmluaXNoIEJyZWFrcG9pbnRzIGluIFB5dGhvbgogQHN1YnN1YnNlY3Rp b24gRmluaXNoIEJyZWFrcG9pbnRzCiAKZGlmZiAtLWdpdCBhL2dkYi9weXRo b24vcHktYnBsb2MuYyBiL2dkYi9weXRob24vcHktYnBsb2MuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWFiOTI2Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiL3B5dGhvbi9weS1icGxvYy5jCkBAIC0wLDAgKzEs MzEyIEBACisvKiBQeXRob24gaW50ZXJmYWNlIHRvIGJyZWFrcG9pbnQgbG9j YXRpb25zLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworCisjaW5j bHVkZSAiZGVmcy5oIgorI2luY2x1ZGUgImluZmVyaW9yLmgiCisjaW5jbHVk ZSAicHl0aG9uLWludGVybmFsLmgiCisjaW5jbHVkZSAib2JzZXJ2ZXIuaCIK KyNpbmNsdWRlICJnZGJhcmNoLmgiCisKK3N0cnVjdCBicGxvY19vYmplY3QK K3sKKyAgUHlPYmplY3RfSEVBRAorCisgIC8qIFRoZSBsb2NhdGlvbiBjb3Jy ZXNwb25kaW5nIHRvIHRoaXMgZ2RiLkJwTG9jYXRpb24gb2JqZWN0LiAgSXQn cyB0aGUgc2FtZQorICAgICBpZGVhIGFzIGdkYi5CcmVha3BvaW50LCBpZiB0 aGUgJ2JhY2tlbmQnIGxvY2F0aW9uIGlzIGRlbGV0ZWQsIExPQyBpcworICAg ICBzZXQgdG8gTlVMTC4gIE5vIHJlZmVyZW5jZSB0byB0aGUgbG9jYXRpb24g aXMgb3duZWQgaGVyZSAoaW4gdGVybXMgb2YKKyAgICAgcmVmLiBjb3VudGlu ZykgaW4gb3JkZXIgbm90IHRvIGNoYW5nZSB0aGUgaW50ZXJuYWwgYmVoYXZp b3IuICAqLworICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYzsKKworICAvKiAx IGlmIHRoZSBvd25lciBCUCBoYXMgYmVlbiBkZWxldGVkLCAwIG90aGVyd2lz ZS4gICovCisgIGludCBpbnZhbGlkX293bmVyOworfTsKKworLyogUmVxdWly ZSB0aGF0IExPQ0FUSU9OIGJlIGEgdmFsaWQgYnBfbG9jYXRpb247IHRocm93 IGEgUHl0aG9uCisgICBleGNlcHRpb24gaWYgaXQgaXMgaW52YWxpZC4gICov CisjZGVmaW5lIEJQTE9DUFlfUkVRVUlSRV9WQUxJRChMb2NhdGlvbikgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICBpZiAoKExvY2F0aW9uKS0+bG9jID09 IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVF cnJvciwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF8oIkJwTG9jYXRpb24gaW52YWxpZC4iKSk7ICAg ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworc3RhdGljIFB5 VHlwZU9iamVjdCBicGxvY19vYmplY3RfdHlwZTsKKworLyogQ2FsbCBieSBm cmVlX2JwX2xvY2F0aW9uIHdoZW4gbG9jIGlzIGFib3V0IHRvIGJlIGZyZWVk LiAgKi8KKwordm9pZAorZ2RicHlfYnBsb2NhdGlvbl9mcmVlIChzdHJ1Y3Qg YnBfbG9jYXRpb24gKmxvYykKK3sKKyAgaWYgKGxvYy0+cHlfYnBsb2Nfb2Jq KQorICAgIHsKKyAgICAgIGxvYy0+cHlfYnBsb2Nfb2JqLT5sb2MgPSBOVUxM OworICAgICAgUHlfREVDUkVGIChsb2MtPnB5X2JwbG9jX29iaik7CisgICAg fQorfQorCisvKiBEaXNzb2NpYXRlIHRoZSBicF9sb2NhdGlvbiBmcm9tIHRo ZSBQeXRob24gb2JqZWN0LiAgKi8KKworc3RhdGljIHZvaWQKK2JwbG9jcHlf ZGVhbGxvYyAoUHlPYmplY3QgKnNlbGYpCit7CisgIGJwbG9jX29iamVjdCAq c2VsZl9icGxvYyA9IChicGxvY19vYmplY3QgKikgc2VsZjsKKworICBpZiAo c2VsZl9icGxvYy0+bG9jICE9IE5VTEwpCisgICAgc2VsZl9icGxvYy0+bG9j LT5weV9icGxvY19vYmogPSBOVUxMOworCisgIHNlbGYtPm9iX3R5cGUtPnRw X2ZyZWUgKHNlbGYpOworfQorCisvKiBDcmVhdGUgb3IgYWNxdWlyZSBhIHJl ZiB0byB0aGUgYnBfbG9jYXRpb24gb2JqZWN0IChnZGIuQnBMb2NhdGlvbikK KyAgIHRoYXQgZW5jYXBzdWxhdGVzIHRoZSBzdHJ1Y3QgYnBfbG9jYXRpb24g ZnJvbSBHREIuICAqLworCitQeU9iamVjdCAqCiticGxvY2F0aW9uX3RvX2Jw bG9jYXRpb25fb2JqZWN0IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKK3sK KyAgYnBsb2Nfb2JqZWN0ICpicGxvY19vYmo7CisKKyAgZ2RiX2Fzc2VydCAo bG9jICE9IE5VTEwpOworICBpZiAobG9jLT5weV9icGxvY19vYmopCisgICAg eworICAgICAgUHlfSU5DUkVGIChsb2MtPnB5X2JwbG9jX29iaik7CisgICAg ICByZXR1cm4gKFB5T2JqZWN0ICopIGxvYy0+cHlfYnBsb2Nfb2JqOworICAg IH0KKworICBicGxvY19vYmogPSBQeU9iamVjdF9OZXcgKGJwbG9jX29iamVj dCwgJmJwbG9jX29iamVjdF90eXBlKTsKKyAgaWYgKCFicGxvY19vYmopCisg ICAgcmV0dXJuIE5VTEw7CisKKyAgYnBsb2Nfb2JqLT5sb2MgPSBsb2M7Cisg IGJwbG9jX29iai0+aW52YWxpZF9vd25lciA9IDA7CisgIFB5X0lOQ1JFRiAo YnBsb2Nfb2JqKTsKKyAgbG9jLT5weV9icGxvY19vYmogPSBicGxvY19vYmo7 CisKKyAgcmV0dXJuIChQeU9iamVjdCAqKSBicGxvY19vYmo7Cit9CisKKy8q IFB5dGhvbiBmdW5jdGlvbiB0byBnZXQgdGhlIEJQIG93bmluZyB0aGlzIGxv Y2F0aW9uLCBpZiBhbnkuICAqLworCitzdGF0aWMgUHlPYmplY3QgKgorYnBs b2NweV9nZXRfb3duZXIgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJl KQoreworICBicGxvY19vYmplY3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nfb2Jq ZWN0ICopIHNlbGY7CisKKyAgQlBMT0NQWV9SRVFVSVJFX1ZBTElEIChzZWxm X2JwbG9jKTsKKworICBpZiAoc2VsZl9icGxvYy0+aW52YWxpZF9vd25lcikK KyAgICBQeV9SRVRVUk5fTk9ORTsKKworICBpZiAoc2VsZl9icGxvYy0+bG9j LT5vd25lcgorICAgICAgJiYgc2VsZl9icGxvYy0+bG9jLT5vd25lci0+cHlf YnBfb2JqZWN0KQorICAgIHsKKyAgICAgIFB5X0lOQ1JFRiAoc2VsZl9icGxv Yy0+bG9jLT5vd25lci0+cHlfYnBfb2JqZWN0KTsKKyAgICAgIHJldHVybiAo UHlPYmplY3QgKikgc2VsZl9icGxvYy0+bG9jLT5vd25lci0+cHlfYnBfb2Jq ZWN0OworICAgIH0KKworICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyogUHl0 aG9uIGZ1bmN0aW9uIHRvIHRlc3Qgd2hldGhlciBvciBub3QgdGhpcyBicmVh a3BvaW50IGxvY2F0aW9uIGlzCisgICBlbmFibGVkLiAgKi8KKworc3RhdGlj IFB5T2JqZWN0ICoKK2JwbG9jcHlfZ2V0X2VuYWJsZWQgKFB5T2JqZWN0ICpz ZWxmLCB2b2lkICpjbG9zdXJlKQoreworICBicGxvY19vYmplY3QgKnNlbGZf YnBsb2MgPSAoYnBsb2Nfb2JqZWN0ICopIHNlbGY7CisKKyAgQlBMT0NQWV9S RVFVSVJFX1ZBTElEIChzZWxmX2JwbG9jKTsKKworICBpZiAoc2VsZl9icGxv Yy0+bG9jLT5lbmFibGVkKQorICAgIFB5X1JFVFVSTl9UUlVFOworCisgIFB5 X1JFVFVSTl9GQUxTRTsKK30KKworLyogUHl0aG9uIGZ1bmN0aW9uIHRvIGdl dCB0aGUgYWRkcmVzcyBvZiB0aGlzIGJyZWFrcG9pbnQgbG9jYXRpb24uICBU aGUKKyAgIGdkYi5WYWx1ZSBvYmplY3Qgd2lsbCBiZSBjYWNoZWQgaWYgdGhp cyBpcyB0aGUgZmlyc3QgYWNjZXNzLiAgUmV0dXJucworICAgTlVMTCBpbiBj YXNlIG9mIGZhaWx1cmUsIHdpdGggYSBQeXRob24gZXhjZXB0aW9uIHNldC4g ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCiticGxvY3B5X2dldF9hZGRyZXNz IChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgYnBsb2Nf b2JqZWN0ICpzZWxmX2JwbG9jID0gKGJwbG9jX29iamVjdCAqKSBzZWxmOwor ICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7CisgIHN0 cnVjdCB0eXBlICp2YWxfdHlwZSA9IE5VTEw7IC8qIEluaXRpYWxpemUgdG8g YXBwZWFzZSBnY2Mgd2FybmluZy4gICovCisgIHN0cnVjdCB2YWx1ZSAqdmFs ID0gTlVMTDsgLyogSW5pdGlhbGl6ZSB0byBhcHBlYXNlIGdjYyB3YXJuaW5n LiAgKi8KKyAgUHlPYmplY3QgKnB5X2FkZHJlc3M7CisKKyAgQlBMT0NQWV9S RVFVSVJFX1ZBTElEIChzZWxmX2JwbG9jKTsKKworICAvKiBHZXQgdGhlIGFk ZHJlc3MgVmFsdWUgb2JqZWN0IGFzIGEgdm9pZCAqIHZhbHVlLiAgKi8KKyAg VFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKKyAgICB7Cisg ICAgICBpZiAoaXNfd2F0Y2hwb2ludCAoc2VsZl9icGxvYy0+bG9jLT5vd25l cikpCisgICAgICAgIHsKKyAgICAgICAgICBzdHJ1Y3Qgd2F0Y2hwb2ludCAq d3AgPSAoc3RydWN0IHdhdGNocG9pbnQgKikgc2VsZl9icGxvYy0+bG9jLT5v d25lcjsKKworICAgICAgICAgIGlmICh3cC0+dmFsKQorICAgICAgICAgICAg dmFsX3R5cGUgPSB2YWx1ZV90eXBlICh3cC0+dmFsKTsKKyAgICAgICAgfQor CisgICAgICBpZiAoIXZhbF90eXBlKQorICAgICAgICB2YWxfdHlwZSA9IGJ1 aWx0aW5fdHlwZSAocHl0aG9uX2dkYmFyY2gpLT5idWlsdGluX3ZvaWQ7CisK KyAgICAgIHZhbCA9IHZhbHVlX2Zyb21fcG9pbnRlciAobG9va3VwX3BvaW50 ZXJfdHlwZSAodmFsX3R5cGUpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmX2JwbG9jLT5sb2MtPmFkZHJlc3MpOworICAgIH0KKyAg R0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7CisKKyAgcHlfYWRk cmVzcyA9IHZhbHVlX3RvX3ZhbHVlX29iamVjdCAodmFsKTsKKyAgaWYgKCFw eV9hZGRyZXNzKQorICAgIHJldHVybiBOVUxMOworCisgIHJldHVybiBweV9h ZGRyZXNzOworfQorCisvKiBQeXRob24gZnVuY3Rpb24gdG8gZ2V0IHRoZSBp bmZlcmlvciBob3N0aW5nIHRoaXMgYnJlYWtwb2ludCBsb2NhdGlvbi4KKyAg IFJldHVybiBQeV9Ob25lIGlmIHRoZXJlIGlzIG5vIGluZmVyaW9yIGFzc29j aWF0ZWQgd2l0aCB0aGUgcHJvZ3JhbSBzcGFjZSBvZgorICAgdGhpcyBsb2Nh dGlvbiwgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUsIHdpdGggYSBweXRo b24gZXhjZXB0aW9uIHNldC4gICovCisKK3N0YXRpYyBQeU9iamVjdCAqCiti cGxvY3B5X2dldF9pbmZlcmlvciAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNs b3N1cmUpCit7CisgIGJwbG9jX29iamVjdCAqc2VsZl9icGxvYyA9IChicGxv Y19vYmplY3QgKikgc2VsZjsKKyAgc3RydWN0IGluZmVyaW9yICppbmY7Cisg IFB5T2JqZWN0ICppbmZvYmo7CisKKyAgQlBMT0NQWV9SRVFVSVJFX1ZBTElE IChzZWxmX2JwbG9jKTsKKworICBpbmYgPSBmaW5kX2luZmVyaW9yX2Zvcl9w cm9ncmFtX3NwYWNlIChzZWxmX2JwbG9jLT5sb2MtPnBzcGFjZSk7CisgIGlm ICghaW5mKQorICAgIFB5X1JFVFVSTl9OT05FOworCisgIGluZm9iaiA9IGlu ZmVyaW9yX3RvX2luZmVyaW9yX29iamVjdCAoaW5mKTsKKyAgUHlfWElOQ1JF RiAoaW5mb2JqKTsKKworICByZXR1cm4gaW5mb2JqOworfQorCisvKiBQeXRo b24gZnVuY3Rpb24gd2hpY2ggY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiBhIGJw IGxvY2F0aW9uIG9iamVjdC4gICovCisKK3N0YXRpYyBQeU9iamVjdCAqCiti cGxvY3B5X2lzX3ZhbGlkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFy Z3MpCit7CisgIGJwbG9jX29iamVjdCAqc2VsZl9icGxvYyA9IChicGxvY19v YmplY3QgKikgc2VsZjsKKworICBpZiAoc2VsZl9icGxvYy0+bG9jKQorICAg IFB5X1JFVFVSTl9UUlVFOworICBQeV9SRVRVUk5fRkFMU0U7Cit9CisKKy8q IENhbGxiYWNrIHRyaWdnZXJlZCB3aGVuIGEgYnJlYWtwb2ludCBpcyBkZWxl dGVkLiAgVGhpcyB3aWxsIGludmFsaWRhdGUKKyAgIHRoZSBjb3JyZXNwb25k aW5nIGJwX2xvY2F0aW9uIFB5dGhvbiBvYmplY3Qgb3duZXJzLiAgKi8KKwor c3RhdGljIHZvaWQKK2JwbG9jcHlfYnJlYWtwb2ludF9kZWxldGVkIChzdHJ1 Y3QgYnJlYWtwb2ludCAqYikgeworICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxv YzsKKworICBmb3IgKGxvYyA9IGItPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5l eHQpCisgICAgeworICAgICAgaWYgKGxvYy0+cHlfYnBsb2Nfb2JqKQorICAg ICAgICBsb2MtPnB5X2JwbG9jX29iai0+aW52YWxpZF9vd25lciA9IDE7Cisg ICAgfQorfQorCisvKiBJbml0aWFsaXplIHRoZSBQeXRob24gYnBfbG9jYXRp b24gY29kZS4gICovCisKK3ZvaWQKK2dkYnB5X2luaXRpYWxpemVfYnBsb2Nh dGlvbiAodm9pZCkKK3sKKyAgaWYgKFB5VHlwZV9SZWFkeSAoJmJwbG9jX29i amVjdF90eXBlKSA8IDApCisgICAgcmV0dXJuOworCisgIFB5X0lOQ1JFRiAo JmJwbG9jX29iamVjdF90eXBlKTsKKyAgaWYgKFB5TW9kdWxlX0FkZE9iamVj dCAoZ2RiX21vZHVsZSwgIkJwTG9jYXRpb24iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAoUHlPYmplY3QgKikgJmJwbG9jX29iamVjdF90eXBlKSA8 IDApCisgICAgcmV0dXJuOworCisgIG9ic2VydmVyX2F0dGFjaF9icmVha3Bv aW50X2RlbGV0ZWQgKGJwbG9jcHlfYnJlYWtwb2ludF9kZWxldGVkKTsKK30K Kworc3RhdGljIFB5R2V0U2V0RGVmIGJwbG9jX29iamVjdF9nZXRzZXRbXSA9 Cit7CisgIHsgIm93bmVyIiwgYnBsb2NweV9nZXRfb3duZXIsIE5VTEwsCisg ICAgIkVhY2ggYnJlYWtwb2ludCBsb2NhdGlvbiBtdXN0IGJlbG9uZyB0byBl eGFjdGx5IG9uZSBoaWdoZXItbGV2ZWwgXAorYnJlYWtwb2ludC4gIFRoaXMg cG9pbnRlciBpcyBOVUxMIGlmZiB0aGlzIGJwX2xvY2F0aW9uIGlzIG5vIFwK K2xvbmdlciBhdHRhY2hlZCB0byBhIGJyZWFrcG9pbnQgKHJlYWQtb25seSku IiwKKyAgICBOVUxMIH0sCisgIHsgImVuYWJsZWQiLCBicGxvY3B5X2dldF9l bmFibGVkLCBOVUxMLAorICAgICJJcyB0aGlzIHBhcnRpY3VsYXIgbG9jYXRp b24gZW5hYmxlZC4iLCBOVUxMIH0sCisgIHsgImFkZHJlc3MiLCBicGxvY3B5 X2dldF9hZGRyZXNzLCBOVUxMLAorICAgICJUaGUgYWRkcmVzcyBhdCB3aGlj aCB0aGUgYnJlYWtwb2ludCBoYXMgYmVlbiBzZXQuIiwgTlVMTCB9LAorICB7 ICJpbmZlcmlvciIsIGJwbG9jcHlfZ2V0X2luZmVyaW9yLCBOVUxMLAorICAg ICJUaGUgaW5mZXJpb3IgaW4gd2hpY2ggdGhpcyBicmVha3BvaW50IGxvY2F0 aW9uIGhhcyBiZWVuIHNldC4iLCBOVUxMIH0sCisgIHsgTlVMTCB9ICAvKiBT ZW50aW5lbC4gICovCit9OworCisKK3N0YXRpYyBQeU1ldGhvZERlZiBicGxv Y19vYmplY3RfbWV0aG9kc1tdID0KK3sKKyAgeyAiaXNfdmFsaWQiLCBicGxv Y3B5X2lzX3ZhbGlkLCBNRVRIX05PQVJHUywKKyAgICAiUmV0dXJuIHRydWUg aWYgdGhpcyBicmVha3BvaW50IGxvY2F0aW9uIGlzIHZhbGlkLCBmYWxzZSBp ZiBub3QuIiB9LAorICB7IE5VTEwgfSAvKiBTZW50aW5lbC4gICovCit9Owor CitzdGF0aWMgUHlUeXBlT2JqZWN0IGJwbG9jX29iamVjdF90eXBlID0KK3sK KyAgUHlPYmplY3RfSEVBRF9JTklUIChOVUxMKQorICAwLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9iX3NpemUgKi8K KyAgImdkYi5CcExvY2F0aW9uIiwgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiB0cF9uYW1lICovCisgIHNpemVvZiAoYnBsb2Nfb2JqZWN0KSwgICAg ICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgIDAsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBf aXRlbXNpemUgKi8KKyAgYnBsb2NweV9kZWFsbG9jLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgIDAsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQg Ki8KKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiB0cF9nZXRhdHRyICovCisgIDAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAw LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IHRwX2NvbXBhcmUgKi8KKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgIDAsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVt YmVyICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBw aW5nICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogdHBfaGFzaCAgKi8KKyAgMCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgIDAs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog dHBfc3RyICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRy byAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICBQeV9UUEZMQUdTX0RFRkFV TFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgIC8qIHRwX2ZsYWdzICovCisg ICJHREIgYnJlYWtwb2ludCBsb2NhdGlvbiBvYmplY3QiLCAgICAgICAgICAg LyogdHBfZG9jICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgMCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVh ciAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgIDAsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3Rv ZmZzZXQgKi8KKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiB0cF9pdGVyICovCisgIDAsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8K KyAgYnBsb2Nfb2JqZWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAg ICAvKiB0cF9tZXRob2RzICovCisgIDAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICBicGxv Y19vYmplY3RfZ2V0c2V0LCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw X2dldHNldCAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgMCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisg IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogdHBfZGVzY3JfZ2V0ICovCisgIDAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgIDAs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog dHBfZGljdG9mZnNldCAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgMCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxv YyAqLworfTsKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktYnJlYWtwb2lu dC5jIGIvZ2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMKaW5kZXggMTk1ZWQy Yi4uMjVlZjYyZiAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weS1icmVha3Bv aW50LmMKKysrIGIvZ2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMKQEAgLTU4 NCw2ICs1ODQsNDMgQEAgYnBweV9nZXRfaWdub3JlX2NvdW50IChQeU9iamVj dCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKICAgcmV0dXJuIFB5SW50X0Zyb21M b25nIChzZWxmX2JwLT5icC0+aWdub3JlX2NvdW50KTsKIH0KIAorCisvKiBQ eXRob24gZnVuY3Rpb24gd2hpY2ggcmV0dXJucyB0aGUgQnBMb2NhdGlvbiBv YmplY3RzIGFzc29jaWF0ZWQKKyAgIHdpdGggdGhpcyBicmVha3BvaW50LiAg Ki8KKworc3RhdGljIFB5T2JqZWN0ICoKK2JwcHlfbG9jYXRpb25zIChQeU9i amVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgIGJyZWFrcG9pbnRf b2JqZWN0ICpzZWxmX2JwID0gKGJyZWFrcG9pbnRfb2JqZWN0ICopIHNlbGY7 CisgIFB5T2JqZWN0ICpsaXN0LCAqdHVwbGU7CisgIHN0cnVjdCBicF9sb2Nh dGlvbiAqbG9jOworICBpbnQgZXJyOworCisgIEJQUFlfUkVRVUlSRV9WQUxJ RCAoc2VsZl9icCk7CisKKyAgbGlzdCA9IFB5TGlzdF9OZXcgKDApOworICBp ZiAoIWxpc3QpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgZXJyID0gMDsKKyAg Zm9yIChsb2MgPSBzZWxmX2JwLT5icC0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+ bmV4dCkKKyAgICB7CisgICAgICBQeU9iamVjdCAqbG9jX29iaiA9ICBicGxv Y2F0aW9uX3RvX2JwbG9jYXRpb25fb2JqZWN0IChsb2MpOworICAgICAgZXJy ID0gUHlMaXN0X0FwcGVuZCAobGlzdCwgbG9jX29iaik7CisgICAgICBpZiAo ZXJyID09IC0xKQorICAgICAgICB7CisgICAgICAgICAgUHlfREVDUkVGIChs aXN0KTsKKyAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAg ICAgUHlfREVDUkVGIChsb2Nfb2JqKTsKKyAgICB9CisKKyAgdHVwbGUgPSBQ eUxpc3RfQXNUdXBsZSAobGlzdCk7CisgIFB5X0RFQ1JFRiAobGlzdCk7CisK KyAgcmV0dXJuIHR1cGxlOworfQorCiAvKiBQeXRob24gZnVuY3Rpb24gdG8g Y3JlYXRlIGEgbmV3IGJyZWFrcG9pbnQuICAqLwogc3RhdGljIGludAogYnBw eV9pbml0IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2Jq ZWN0ICprd2FyZ3MpCkBAIC05NzUsNiArMTAxMiw4IEBAIHN0YXRpYyBQeU1l dGhvZERlZiBicmVha3BvaW50X29iamVjdF9tZXRob2RzW10gPQogICAgICJS ZXR1cm4gdHJ1ZSBpZiB0aGlzIGJyZWFrcG9pbnQgaXMgdmFsaWQsIGZhbHNl IGlmIG5vdC4iIH0sCiAgIHsgImRlbGV0ZSIsIGJwcHlfZGVsZXRlX2JyZWFr cG9pbnQsIE1FVEhfTk9BUkdTLAogICAgICJEZWxldGUgdGhlIHVuZGVybHlp bmcgR0RCIGJyZWFrcG9pbnQuIiB9LAorICB7ICJsb2NhdGlvbnMiLCBicHB5 X2xvY2F0aW9ucywgTUVUSF9OT0FSR1MsCisgICAgIkdldCBhIGxpc3Qgb2Yg Z2RiLkJwTG9jYXRpb24gb2JqZWN0cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBi cmVha3BvaW50LiIgfSwKICAgeyBOVUxMIH0gLyogU2VudGluZWwuICAqLwog fTsKIApkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwu aCBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKaW5kZXggMjJlNmI0 MS4uYjk1ZThjNiAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weXRob24taW50 ZXJuYWwuaAorKysgYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCkBA IC0xNjUsNiArMTY1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgYnJlYWtwb2ludF9v YmplY3QKIGV4dGVybiBicmVha3BvaW50X29iamVjdCAqYnBweV9wZW5kaW5n X29iamVjdDsKIAogCisvKiBEZWZpbmVkIGluIHB5LWJwbG9jLmMgKi8KK3R5 cGVkZWYgc3RydWN0IGJwbG9jX29iamVjdCBicGxvY19vYmplY3Q7CisKIHR5 cGVkZWYgc3RydWN0CiB7CiAgIFB5T2JqZWN0X0hFQUQKQEAgLTIxNyw2ICsy MjAsOCBAQCBQeU9iamVjdCAqcHNweV9nZXRfcHJpbnRlcnMgKFB5T2JqZWN0 ICosIHZvaWQgKik7CiBQeU9iamVjdCAqb2JqZmlsZV90b19vYmpmaWxlX29i amVjdCAoc3RydWN0IG9iamZpbGUgKik7CiBQeU9iamVjdCAqb2JqZnB5X2dl dF9wcmludGVycyAoUHlPYmplY3QgKiwgdm9pZCAqKTsKIAorUHlPYmplY3Qg KmJwbG9jYXRpb25fdG9fYnBsb2NhdGlvbl9vYmplY3QgKHN0cnVjdCBicF9s b2NhdGlvbiAqbG9jKTsKKwogdGhyZWFkX29iamVjdCAqY3JlYXRlX3RocmVh ZF9vYmplY3QgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApOwogdGhyZWFkX29i amVjdCAqZmluZF90aHJlYWRfb2JqZWN0IChwdGlkX3QgcHRpZCk7CiBQeU9i amVjdCAqZmluZF9pbmZlcmlvcl9vYmplY3QgKGludCBwaWQpOwpAQCAtMjQ1 LDYgKzI1MCw3IEBAIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9wc3BhY2UgKHZv aWQpOwogdm9pZCBnZGJweV9pbml0aWFsaXplX29iamZpbGUgKHZvaWQpOwog dm9pZCBnZGJweV9pbml0aWFsaXplX2JyZWFrcG9pbnRzICh2b2lkKTsKIHZv aWQgZ2RicHlfaW5pdGlhbGl6ZV9maW5pc2hicmVha3BvaW50cyAodm9pZCk7 Cit2b2lkIGdkYnB5X2luaXRpYWxpemVfYnBsb2NhdGlvbiAodm9pZCk7CiB2 b2lkIGdkYnB5X2luaXRpYWxpemVfbGF6eV9zdHJpbmcgKHZvaWQpOwogdm9p ZCBnZGJweV9pbml0aWFsaXplX3BhcmFtZXRlcnMgKHZvaWQpOwogdm9pZCBn ZGJweV9pbml0aWFsaXplX3RocmVhZCAodm9pZCk7CmRpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9weXRob24uYwppbmRl eCA3OTVkZDQ0Li4yMTNkZDQxIDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5 dGhvbi5jCisrKyBiL2dkYi9weXRob24vcHl0aG9uLmMKQEAgLTExMDEsNiAr MTEwMSwxMiBAQCBnZGJweV9icmVha3BvaW50X2hhc19weV9jb25kIChzdHJ1 Y3QgYnJlYWtwb2ludF9vYmplY3QgKmJwX29iaikKIAkJICAgICJzY3JpcHRp bmcgaXMgbm90IHN1cHBvcnRlZC4iKSk7CiB9CiAKK3ZvaWQKK2dkYnB5X2Jw bG9jYXRpb25fZnJlZSAoc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0ICpicF9v YmopCit7CisgIHJldHVybjsKK30KKwogI2VuZGlmIC8qIEhBVkVfUFlUSE9O ICovCiAKIAwKQEAgLTEyNDQsNiArMTI1MCw3IEBAIG1lc3NhZ2UgPT0gYW4g ZXJyb3IgbWVzc2FnZSB3aXRob3V0IGEgc3RhY2sgd2lsbCBiZSBwcmludGVk LiIpLAogICBnZGJweV9pbml0aWFsaXplX29iamZpbGUgKCk7CiAgIGdkYnB5 X2luaXRpYWxpemVfYnJlYWtwb2ludHMgKCk7CiAgIGdkYnB5X2luaXRpYWxp emVfZmluaXNoYnJlYWtwb2ludHMgKCk7CisgIGdkYnB5X2luaXRpYWxpemVf YnBsb2NhdGlvbiAoKTsKICAgZ2RicHlfaW5pdGlhbGl6ZV9sYXp5X3N0cmlu ZyAoKTsKICAgZ2RicHlfaW5pdGlhbGl6ZV90aHJlYWQgKCk7CiAgIGdkYnB5 X2luaXRpYWxpemVfaW5mZXJpb3IgKCk7CmRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaAppbmRleCA1OTdl ZDJlLi5hMDYxOTQ4IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5o CisrKyBiL2dkYi9weXRob24vcHl0aG9uLmgKQEAgLTQ3LDQgKzQ3LDYgQEAg aW50IGdkYnB5X3Nob3VsZF9zdG9wIChzdHJ1Y3QgYnJlYWtwb2ludF9vYmpl Y3QgKmJwX29iaik7CiAKIGludCBnZGJweV9icmVha3BvaW50X2hhc19weV9j b25kIChzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3QgKmJwX29iaik7CiAKK3Zv aWQgZ2RicHlfYnBsb2NhdGlvbl9mcmVlIChzdHJ1Y3QgYnBfbG9jYXRpb24g KmxvYyk7CisKICNlbmRpZiAvKiBHREJfUFlUSE9OX0ggKi8KZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1icmVha3BvaW50LmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1icmVha3BvaW50LmV4 cAppbmRleCBmM2Q0MDllLi45ODA2ZTRhIDEwMDY0NAotLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktYnJlYWtwb2ludC5leHAKKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWJyZWFrcG9pbnQuZXhwCkBAIC0x NzgsNiArMTc4LDExIEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7CiB9CiAK IGdkYl9weV90ZXN0X3NpbGVudF9jbWQgICJweXRob24gd3AxID0gZ2RiLkJy ZWFrcG9pbnQgKFwicmVzdWx0XCIsIHR5cGU9Z2RiLkJQX1dBVENIUE9JTlQs IHdwX2NsYXNzPWdkYi5XUF9XUklURSApIiAiU2V0IHdhdGNocG9pbnQiIDAK KworZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBsZW4od3AxLmxvY2F0aW9ucygp KSA9PSAxIiAiVHJ1ZSIgImNoZWNrIHdhdGNocG9pbnQgbG9jYXRpb24iCitn ZGJfdGVzdCAicHl0aG9uIHByaW50IHdwMS5sb2NhdGlvbnMoKVxbMFxdLmlu ZmVyaW9yLm51bSIgIjEiICJjaGVjayB3YXRjaHBvaW50IGxvY2F0aW9uJ3Mg aW5mZXJpb3IiCitnZGJfdGVzdCAicHl0aG9uIHByaW50IHdwMS5sb2NhdGlv bnMoKVxbMFxdLmFkZHJlc3MgPT0gZ2RiLnBhcnNlX2FuZF9ldmFsKFwiJnJl c3VsdFwiKSIgIlRydWUiICJjaGVjayB3YXRjaHBvaW50IGxvY2F0aW9uJ3Mg YWRkcmVzcyIKKwogZ2RiX3Rlc3QgImNvbnRpbnVlIiAiLipcW1d3XF1hdGNo cG9pbnQuKnJlc3VsdC4qT2xkIHZhbHVlID0gMC4qTmV3IHZhbHVlID0gMjUu Km1haW4uKiIgIlRlc3Qgd2F0Y2hwb2ludCB3cml0ZSIKIAogIyBJbnRlcm5h bCBicmVha3BvaW50cy4KQEAgLTMwMCwzICszMDUsNTUgQEAgZ2RiX3B5X3Rl c3Rfc2lsZW50X2NtZCAgInB5dGhvbiB3cDEgPSB3cF9ldmFsIChcInJlc3Vs dFwiLCB0eXBlPWdkYi5CUF9XQVRDSFBPSU4KIGdkYl90ZXN0ICJjb250aW51 ZSIgIi4qXFtXd1xdYXRjaHBvaW50LipyZXN1bHQuKk9sZCB2YWx1ZSA9LipO ZXcgdmFsdWUgPSA3ODguKiIgIlRlc3Qgd2F0Y2hwb2ludCB3cml0ZSIKIGdk Yl90ZXN0ICJweXRob24gcHJpbnQgbmV2ZXJfZXZhbF9icDEuY291bnQiICIw IiBcCiAgICAgIkNoZWNrIHRoYXQgdGhpcyB1bnJlbGF0ZWQgYnJlYWtwb2lu dHMgZXZhbCBmdW5jdGlvbiB3YXMgbmV2ZXIgY2FsbGVkLiIKKworIyBnZGIu QnBMb2NhdGlvbgorCisjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCitjbGVh bl9yZXN0YXJ0ICR7dGVzdGZpbGV9CisKK2lmICFbcnVudG9fbWFpbl0gdGhl biB7CisgICAgZmFpbCAiQ2Fubm90IHJ1biB0byBtYWluLiIKKyAgICByZXR1 cm4gMAorfQorZGVsZXRlX2JyZWFrcG9pbnRzCitnZGJfdGVzdF9ub19vdXRw dXQgInNldCBkZXRhY2gtb24tZm9yayBvZmYiICJkb24ndCBkZXRhY2ggb24g Zm9yayIKK2dkYl90ZXN0ICJjYWxsIGZvcmsoKSIgIk5ldyBwcm9jZXNzIC4q IiAiY3JlYXRlIGEgc2Vjb25kIGluZmVyaW9yIgorCitnZGJfYnJlYWtwb2lu dCAibWFpbiIKK2dkYl90ZXN0ICJweSBwcmludCBsZW4oZ2RiLmJyZWFrcG9p bnRzKCkpIiAiMSIgImVuc3VyZSB0aGF0IHRocmVyZSBpcyBvbmx5IG9uZSBC UCIKK2dkYl90ZXN0X25vX291dHB1dCB7cHkgYnAwID0gZ2RiLmJyZWFrcG9p bnRzKClbMF19ICJzYXZlIGJyZWFrcG9pbnQgMCIKK2dkYl90ZXN0ICJweSBw cmludCBsZW4oYnAwLmxvY2F0aW9ucygpKSIgIjIiICJlbnN1cmUgdGhhdCB0 aHJlcmUgYXJlIDIgbG9jYXRpb25zIgorCitnZGJfdGVzdF9ub19vdXRwdXQg e3B5IGxvYzAgPSBicDAubG9jYXRpb25zKClbMF19ICJzYXZlIGxvY2F0aW9u IDAiCitnZGJfdGVzdF9ub19vdXRwdXQge3B5IGxvYzEgPSBicDAubG9jYXRp b25zKClbMV19ICJzYXZlIGxvY2F0aW9uIDEiCisKK2dkYl90ZXN0ICJweSBw cmludCBsb2MwLm93bmVyID09IGxvYzEub3duZXIgPT0gYnAwIiAiVHJ1ZSIg InZlcmlmeSBvd25lcnNoaXAiCitnZGJfdGVzdCAicHkgcHJpbnQgbG9jMC5h ZGRyZXNzID09IGxvYzEuYWRkcmVzcyAiICJUcnVlIiAidmVyaWZ5IGFkZHJl c3NlcyBhcmUgaWRlbnRpY2FsIgorIyBob3cgdG8gY2hlY2sgYWRkcmVzcyBs b2NhdGlvbiA/ICE9IGFkZHJlc3MobWFpbikKKworZ2RiX3Rlc3Qge3B5IHBy aW50IGxvYzAuaW5mZXJpb3IgPT0gZ2RiLmluZmVyaW9ycygpWzBdfSAiVHJ1 ZSIgInZlcmlmeSBpbmZlcmlvciBmb3IgbG9jIDAiICNpbmYgMgorZ2RiX3Rl c3Qge3B5IHByaW50IGxvYzEuaW5mZXJpb3IgPT0gZ2RiLmluZmVyaW9ycygp WzFdfSAiVHJ1ZSIgInZlcmlmeSBpbmZlcmlvciBmb3IgbG9jIDEiICNpbmYg MQorCitnZGJfdGVzdCAicHkgcHJpbnQgbG9jMC5lbmFibGVkID09IGxvYzEu ZW5hYmxlZCA9PSBUcnVlIiAiVHJ1ZSIgInZlcmlmeSB0aGF0IGxvY2F0aW9u cyBhcmUgZW5hYmxlZCIKKworZ2RiX3Rlc3QgInB5IHByaW50IGxvYzAuaW5m ZXJpb3IubnVtIiAiMiIgImVuc3VyZSB0aGF0IGxvYzAgaXMgb24gaW5mZXJp b3IgMiIKKworZ2RiX3Rlc3QgImRldGFjaCBpbmZlcmlvciAyIiAiRGV0YWNo aW5nIGZyb20gcHJvZ3JhbTouKiIgImRldGFjaCBpbmZlcmlvciAyIgorZ2Ri X3Rlc3QgImluZmVyaW9yIDEiICJTd2l0Y2hpbmcgdG8gaW5mZXJpb3IgLioi ICJzd2l0Y2ggdG8gaW5mZXJpb3IgMSIKK2dkYl90ZXN0X25vX291dHB1dCAi cmVtb3ZlLWluZmVyaW9ycyAyIiAicmVtb3ZlIGluZmVyaW9yIDIiCitnZGJf dGVzdCAicHkgcHJpbnQgbG9jMC5pbmZlcmlvciIgIk5vbmUiICJyZW1vdmVk IGluZmVyaW9yIHNldCB0byBOb25lIgorCitkZWxldGVfYnJlYWtwb2ludHMK K2dkYl90ZXN0ICJweSBwcmludCBicDAuaXNfdmFsaWQoKSIgIkZhbHNlIiAi dmVyaWZ5IHRoYXQgQlAgaGFzIGJlZW4gaW52YWxpZGF0ZWQiCitnZGJfdGVz dCAicHkgYnAwLmxvY2F0aW9ucygpIiAiLipSdW50aW1lRXJyb3I6IEJyZWFr cG9pbnQgLiogaXMgaW52YWxpZC4qIlwKKyAgICAgICAgICJ2ZXJpZnkgdGhh dCBsb2NhdGlvbnMgY2FuJ3QgYWNjZXNzZWQgb24gYW4gaW52YWxpZCBicmVh a3BvaW50IgorICAgICAgICAgCitnZGJfdGVzdCAicHkgcHJpbnQgbG9jMC5p c192YWxpZCgpIiAiRmFsc2UiICJ2ZXJpZnkgdGhhdCBsb2NhdGlvbiBpcyBp bnZhbGlkIgorZ2RiX3Rlc3QgInB5IHByaW50IGxvYzAub3duZXIiICIuKlJ1 bnRpbWVFcnJvcjogQnBMb2NhdGlvbiBpbnZhbGlkLioiXAorICAgICAgICAg InZlcmlmeSB0aGF0IG93bmVyIGNhbid0IGJlIGFjY2Vzc2VkIgorZ2RiX3Rl c3QgInB5IHByaW50IGxvYzAuZW5hYmxlZCIgIi4qUnVudGltZUVycm9yOiBC cExvY2F0aW9uIGludmFsaWQuKiJcCisgICAgICAgICAidmVyaWZ5IHRoYXQg bG9jYXRpb24gY2FuJ3QgYmUgYWNjZXNzZWQiCitnZGJfdGVzdCAicHkgcHJp bnQgbG9jMC5hZGRyZXNzIiAiLipSdW50aW1lRXJyb3I6IEJwTG9jYXRpb24g aW52YWxpZC4qIlwKKyAgICAgICAgICJ2ZXJpZnkgdGhhdCBsb2NhdGlvbiBj YW4ndCBiZSBhY2Nlc3NlZCIKK2dkYl90ZXN0ICJweSBwcmludCBsb2MwLmlu ZmVyaW9yIiAiLipSdW50aW1lRXJyb3I6IEJwTG9jYXRpb24gaW52YWxpZC4q IlwKKyAgICAgICAgICJ2ZXJpZnkgdGhhdCBpbmZlcmlvciBjYW4ndCBiZSBh Y2Nlc3NlZCIKLS0gCjEuNy42LjUKCg== --bcaec54fb8142c65e104b781e644--