From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [PATCH v9 10/27] xsplice: Add helper elf routines Date: Tue, 26 Apr 2016 06:37:14 -0600 Message-ID: <571F7D1A02000078000E5D4E@prv-mh.provo.novell.com> References: <1461598514-5440-1-git-send-email-konrad.wilk@oracle.com> <1461598514-5440-11-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1av2F2-00008e-IH for xen-devel@lists.xenproject.org; Tue, 26 Apr 2016 12:37:24 +0000 In-Reply-To: <1461598514-5440-11-git-send-email-konrad.wilk@oracle.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: Keir Fraser , ross.lagerwall@citrix.com, andrew.cooper3@citrix.com, Ian Jackson , Tim Deegan , mpohlack@amazon.de, sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org Pj4+IE9uIDI1LjA0LjE2IGF0IDE3OjM0LCA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4gd3JvdGU6 Cj4gRnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+Cj4gCj4g QWRkIEVsZiByb3V0aW5lcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGluIHByZXBhcmF0aW9uIGZvciBs b2FkaW5nIGFuCj4geFNwbGljZSBwYXlsb2FkLgo+IAo+IFdlIG1ha2UgYW4gYXNzdW1wdGlvbiB0 aGF0IHRoZSBtYXggbnVtYmVyIG9mIHNlY3Rpb25zIGFuIEVMRiBwYXlsb2FkCj4gY2FuIGhhdmUg aXMgNjQuIFdlIGNhbiBpbiBmdXR1cmUgbWFrZSB0aGlzIGJlIGRlcGVuZGVudCBvbiB0aGUKPiBu YW1lcyBvZiB0aGUgc2VjdGlvbnMgYW5kIHZlcmlmeWluZyBhZ2FpbnN0IGEgbGlzdCwgYnV0IGZv ciByaWdodCBub3cKPiB0aGlzIHN1ZmZpY2VzLgo+IAo+IEFsc28gd2UgYSB3aG9sZSBsb3Qgb2Yg Y2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBFTEYgcGF5bG9hZAo+IGZpbGUgaXMgbm90IGNv cnJ1cHRlZCBub3IgdGhhdCB0aGUgb2Zmc2V0cyBwb2ludCBwYXN0IHRoZSBmaWxlLgo+IAo+IEZv ciBtb3N0IG9mIHRoZSBjaGVja3Mgd2UgcHJpbnQgYW4gbWVzc2FnZSBpZiB0aGUgaHlwZXJ2aXNv ciBpcyBidWlsdAo+IHdpdGggZGVidWcgZW5hYmxlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBSb3Nz IExhZ2Vyd2FsbCA8cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBL b25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+Cj4gQWNrZWQtYnk6 IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgo+IFJldmlld2VkLWJ5OiBB bmRyZXcgQ29vcGVyPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CgpBZ2FpbiAuLi4KCj4gdjk6 IENoYW5nZWQgZWxmX3ZlcmlmeV9zdHJ0YWIgdG8gdXNlIGNvbnN0IGNoYXIgYW5kIHJldHVybiBF SU5WQUwuCj4gICAgIFJlbW92ZSAnaWYgKCAhZGVsdGEgKScgY2hlY2sgaW4gZWxmX3Jlc29sdmVf c2VjdGlvbnMKPiAgICAgUmVtb3ZlIHN0YWxlIGNvbW1lbnRzLgo+ICAgICBGaXhlZCBvbmUgb2Zm IGNoZWNrIGFnYWluc3QgIHNoX2xpbmsuCj4gICAgIERvY3VtZW50IGJvdW5kYXJ5IGNoZWNrcyBh Z2FpbnN0IHNoc3RydGFiIGFuZCBzeW10YWIuCj4gICAgIEZpeGVkIHJldHVybiBjb2RlcyBpbiB4 c3BsaWNlX2hlYWRlcl9jaGVjay4KPiAgICAgQWRkIGNoZWNrIGZvciBzZWN0aW9ucyB0byBub3Qg YmUgd2l0aGluIEVMRiBoZWFkZXIuCj4gICAgIEFkZGVkIG92ZXJmbG93IGNoZWNrIGZvciBlX3No b2ZmIGluIHhzcGxpY2VfaGVhZGVyX2NoZWNrLgo+ICAgICBNb3ZlZCBYU1BMSUNFIG1hY3JvIGJ5 IGZvdXIgdGFicy4KPiAgICAgTWFrZSAtPnN5bSBiZSBjb25zdC4KCi4uLiB3YXkgdG9vIG1hbnkg Y2hhbmdlcyBmb3IgcHJlLWV4aXN0aW5nIHRhZ3MgdG8gc3RheSwgYXQgbGVhc3QKZm9yIG15IHRh c3RlLgoKPiArc3RhdGljIGludCBlbGZfcmVzb2x2ZV9zZWN0aW9ucyhzdHJ1Y3QgeHNwbGljZV9l bGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKPiArewo+ICsgICAgc3RydWN0IHhzcGxpY2VfZWxm X3NlYyAqc2VjOwo+ICsgICAgdW5zaWduZWQgaW50IGk7Cj4gKyAgICBFbGZfT2ZmIGRlbHRhOwo+ ICsgICAgaW50IHJjOwo+ICsKPiArICAgIC8qIHhzcGxpY2VfZWxmX2xvYWQgc2FuaXR5IGNoZWNr ZWQgZV9zaG51bS4gKi8KPiArICAgIHNlYyA9IHhtYWxsb2NfYXJyYXkoc3RydWN0IHhzcGxpY2Vf ZWxmX3NlYywgZWxmLT5oZHItPmVfc2hudW0pOwo+ICsgICAgaWYgKCAhc2VjICkKPiArICAgIHsK PiArICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UiJXM6IENvdWxkIG5vdCBhbGxv Y2F0ZSBtZW1vcnkgZm9yIHNlY3Rpb24gdGFibGUhXG4iLAo+ICsgICAgICAgICAgICAgICBlbGYt Pm5hbWUpOwo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsgICAgfQo+ICsKPiArICAgIGVs Zi0+c2VjID0gc2VjOwo+ICsKPiArICAgIC8qIGVfc2hvZmYgYW5kIGVfc2hudW0gb3ZlcmZsb3cg Y2hlY2tzIGFyZSBkb25lIGluIHhzcGxpY2VfaGVhZGVyX2NoZWNrLiAqLwo+ICsgICAgZGVsdGEg PSBlbGYtPmhkci0+ZV9zaG9mZiArIGVsZi0+aGRyLT5lX3NobnVtICogZWxmLT5oZHItPmVfc2hl bnRzaXplOwoKVGhlIGFkZGVkIGNvbW1lbnQganVzdCBoZWxwcyBtYWtlIG9idmlvdXMgdGhhdCB0 aGUgb3ZlcmZsb3cgSQpiZWxpZXZlIEFuZHJldyB3YXMgd29ycmllZCBhYm91dCBpcyBzdGlsbCBu b3QgYmVpbmcgdGFrZW4gY2FyZSBvZjoKQWxsIHhzcGxpY2VfaGVhZGVyX2NoZWNrKCkgZG9lcyBp cyByYW5nZSBjaGVjayB0aGUgdHdvIHZhbHVlcwptZW50aW9uZWQgaW4gdGhlIGNvbW1lbnQuIEJ1 dCBJIGFncmVlIHRoYXQgYSBwcm9wZXIgcmFuZ2UgY2hlY2sKKGF0IG9uY2UgZWxpbWluYXRpbmcg b3ZlcmZsb3cgY29uY2VybnMgZm9yIHRoZSBhcml0aG1ldGljIGhlcmUpCndvdWxkIGJldHRlciBs aXZlIHRoZXJlIChhbmQgYWxzbyBzZWUgdGhlcmUpLgoKPiArICAgIGlmICggZGVsdGEgPiBlbGYt PmxlbiApCj4gKyAgICB7Cj4gKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElD RSAiJXM6IFNlY3Rpb24gdGFibGUgaXMgcGFzdCBlbmQgb2YgcGF5bG9hZCFcbiIsCj4gKyAgICAg ICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKPiArICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4gKyAgICB9Cj4gKwo+ICsgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsg aSsrICkKPiArICAgIHsKPiArICAgICAgICBkZWx0YSA9IGVsZi0+aGRyLT5lX3Nob2ZmICsgaSAq IGVsZi0+aGRyLT5lX3NoZW50c2l6ZTsKPiArCj4gKyAgICAgICAgc2VjW2ldLnNlYyA9IGRhdGEg KyBkZWx0YTsKPiArCj4gKyAgICAgICAgZGVsdGEgPSBzZWNbaV0uc2VjLT5zaF9vZmZzZXQ7Cj4g KyAgICAgICAgLyoKPiArICAgICAgICAgKiBOLkIuIGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMs IGVsZl9nZXRfc3ltIHNraXAgdGhpcyBjaGVjayBhcwo+ICsgICAgICAgICAqIHdlIGRvIGl0IGhl cmUuCj4gKyAgICAgICAgICovCj4gKyAgICAgICAgaWYgKCBkZWx0YSA8IHNpemVvZihFbGZfRWhk cikgfHwKPiArICAgICAgICAgICAgIChkZWx0YSArIHNlY1tpXS5zZWMtPnNoX3NpemUgPiBlbGYt PmxlbikgKQoKVGhlIHNlY29uZCBoYWxmIG9mIHRoZSBjaGVjayBuZWVkcyB0byBiZSBza2lwcGVk IGZvciBTSFRfTk9CSVRTCnNlY3Rpb25zLiBBbmQgYmV3YXJlIG9mIG92ZXJmbG93IGFnYWluIC0g Ym90aCBhZGRlbmRzIGFsb25lIG1heQpiZSB0b28gbGFyZ2UsIGJ1dCB0aGUgc3VtIG1heSBiZSB3 aXRoaW4gcmFuZ2UuCgo+ICtzdGF0aWMgaW50IGVsZl9nZXRfc3ltKHN0cnVjdCB4c3BsaWNlX2Vs ZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQo+ICt7Cj4gKyAgICBjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9lbGZfc2VjICpzeW10YWJfc2VjLCAqc3RydGFiX3NlYzsKPiArICAgIHN0cnVjdCB4c3BsaWNl X2VsZl9zeW0gKnN5bTsKPiArICAgIHVuc2lnbmVkIGludCBpLCBkZWx0YSwgb2Zmc2V0LCBuc3lt Owo+ICsKPiArICAgIHN5bXRhYl9zZWMgPSBlbGYtPnN5bXRhYjsKPiArICAgIHN0cnRhYl9zZWMg PSBlbGYtPnN0cnRhYjsKPiArCj4gKyAgICAvKiBQb2ludGVycyBhcml0aG1ldGljIHRvIGdldCBm aWxlIG9mZnNldC4gKi8KPiArICAgIG9mZnNldCA9IHN0cnRhYl9zZWMtPmRhdGEgLSBkYXRhOwo+ ICsKPiArICAgIC8qIENoZWNrZWQgYWxyZWFkeSBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9ucywgYnV0 IGp1c3QgaW4gY2FzZS4gKi8KPiArICAgIEFTU0VSVChvZmZzZXQgPT0gc3RydGFiX3NlYy0+c2Vj LT5zaF9vZmZzZXQpOwo+ICsgICAgQVNTRVJUKG9mZnNldCA8IGVsZi0+bGVuICYmIChvZmZzZXQg KyBzdHJ0YWJfc2VjLT5zZWMtPnNoX3NpemUgPD0gZWxmLT5sZW4pKTsKPiArCj4gKyAgICAvKiBz eW10YWJfc2VjLT5kYXRhIHdhcyBjb21wdXRlZCBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9ucy4gKi8K PiArICAgIEFTU0VSVCgoc3ltdGFiX3NlYy0+c2VjLT5zaF9vZmZzZXQgKyBkYXRhKSA9PSBzeW10 YWJfc2VjLT5kYXRhKTsKPiArCj4gKyAgICAvKiBObyBuZWVkIHRvIGNoZWNrIHZhbHVlcyBhcyBl bGZfcmVzb2x2ZV9zZWN0aW9ucyBkaWQgaXQuICovCj4gKyAgICBuc3ltID0gc3ltdGFiX3NlYy0+ c2VjLT5zaF9zaXplIC8gc3ltdGFiX3NlYy0+c2VjLT5zaF9lbnRzaXplOwo+ICsKPiArICAgIHN5 bSA9IHhtYWxsb2NfYXJyYXkoc3RydWN0IHhzcGxpY2VfZWxmX3N5bSwgbnN5bSk7Cj4gKyAgICBp ZiAoICFzeW0gKQo+ICsgICAgewo+ICsgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElD RSAiJXM6IENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN5bWJvbHNcbiIsCj4gKyAgICAg ICAgICAgICAgIGVsZi0+bmFtZSk7Cj4gKyAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKyAgICB9 Cj4gKwo+ICsgICAgLyogU28gd2UgZG9uJ3QgbGVhayBtZW1vcnkuICovCj4gKyAgICBlbGYtPnN5 bSA9IHN5bTsKPiArCj4gKyAgICBmb3IgKCBpID0gMTsgaSA8IG5zeW07IGkrKyApCj4gKyAgICB7 Cj4gKyAgICAgICAgRWxmX1N5bSAqcyA9ICYoKEVsZl9TeW0gKilzeW10YWJfc2VjLT5kYXRhKVtp XTsKCkknbSBzb3JyeSBmb3Igbm90IHNwb3R0aW5nIHRoaXMgZWFybGllciwgYnV0IHRoZSBjYWxj dWxhdGlvbiBoZXJlIG5lZWRzCnRvIGZvbGxvdyB0aGF0IG9mIHRoZSBzZWN0aW9uIHBvaW50ZXJz IGludG8gdGhlIHNlY3Rpb24gdGFibGUsIGkuZS4gdXNlCnN5bXRhYl9zZWMtPnNlYy0+c2hfZW50 c2l6ZSAod2hpY2ggYWZhaWN0IGF0IG9uY2Ugd2lsbCBhbGxvdyBnZXR0aW5nCnJpZCBvZiB0aGUg Y2FzdCwgYW5kIHdoaWNoIEkgZ3Vlc3Mgd2lsbCBtYWtlIG9idmlvdXMgdGhhdCB0aGlzIGxhY2tz IGEKY29uc3QgcXVhbGlmaWVyKS4KCj4gKyAgICAgICAgZGVsdGEgPSBzLT5zdF9uYW1lOwo+ICsg ICAgICAgIC8qIEJvdW5kYXJ5IGNoZWNrIHdpdGhpbiB0aGUgLnN0cnRhYi4gKi8KPiArICAgICAg ICBpZiAoIGRlbHRhID4gc3RydGFiX3NlYy0+c2VjLT5zaF9zaXplICkKCj49IChqdXN0IGxpa2Ug aW4gZWxmX3Jlc29sdmVfc2VjdGlvbl9uYW1lcygpKQoKPiArICAgICAgICB7Cj4gKyAgICAgICAg ICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFN5bWJvbCBbJXVdIGRhdGEgaXMg cGFzdCBlbmQgb2YgcGF5bG9hZCFcbiIsCgpNZXNzYWdlIHRleHQgZG9lcyBub3QgbWF0Y2ggY29u dGV4dCAoYWxzbyBpbgplbGZfcmVzb2x2ZV9zZWN0aW9uX25hbWVzKCkgYXMgSSBub3cgc2VlKS4K Cj4gKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBpKTsKPiArICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBzeW1baV0uc3ltID0gczsK PiArICAgICAgICBzeW1baV0ubmFtZSA9IGRhdGEgKyAoZGVsdGEgKyBvZmZzZXQpOwoKSSB0aGlu ayB0aGlzCgogICAgICAgIHN5bVtpXS5uYW1lID0gc3RydGFiX3NlYy0+ZGF0YSArIGRlbHRhOwoK d291bGQgYmUgbW9yZSBvYnZpb3VzIHRvIHRoZSByZWFkZXIuCgo+ICtzdGF0aWMgaW50IHhzcGxp Y2VfaGVhZGVyX2NoZWNrKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQo+ICt7Cj4gKyAg ICBjb25zdCBFbGZfRWhkciAqaGRyID0gZWxmLT5oZHI7Cj4gKwo+ICsgICAgaWYgKCBzaXplb2Yo KmVsZi0+aGRyKSA+IGVsZi0+bGVuICkKPiArICAgIHsKPiArICAgICAgICBkcHJpbnRrKFhFTkxP R19FUlIsIFhTUExJQ0UgIiVzOiBTZWN0aW9uIGhlYWRlciBpcyBiaWdnZXIgdGhhbiBwYXlsb2Fk IVxuIiwKPiArICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7Cj4gKyAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCAhSVNfRUxGKCpoZHIpICkKPiArICAgIHsK PiArICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBOb3QgYW4gRUxGIHBh eWxvYWQhXG4iLCBlbGYtPm5hbWUpOwo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAg fQo+ICsKPiArICAgIGlmICggaGRyLT5lX2lkZW50W0VJX0NMQVNTXSAhPSBFTEZDTEFTUzY0IHx8 Cj4gKyAgICAgICAgIGhkci0+ZV9pZGVudFtFSV9EQVRBXSAhPSBFTEZEQVRBMkxTQiB8fAo+ICsg ICAgICAgICBoZHItPmVfaWRlbnRbRUlfT1NBQkldICE9IEVMRk9TQUJJX1NZU1YgfHwKCldoYXQg YWJvdXQgRUlfVkVSU0lPTiBhbmQgRUlfQUJJVkVSU0lPTiwgYnR3PwoKPiArICAgICAgICAgaGRy LT5lX3R5cGUgIT0gRVRfUkVMIHx8Cj4gKyAgICAgICAgIGhkci0+ZV9waG51bSAhPSAwICkKPiAr ICAgIHsKPiArICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBJbnZhbGlk IEVMRiBwYXlsb2FkIVxuIiwgZWxmLT5uYW1lKTsKPiArICAgICAgICByZXR1cm4gLUVPUE5PVFNV UFA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCBlbGYtPmhkci0+ZV9zaHN0cm5keCA9PSBTSE5f VU5ERUYgKQo+ICsgICAgewo+ICsgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAi JXM6IFNlY3Rpb24gbmFtZSBpZHggaXMgdW5kZWZpbmVkIT9cbiIsCj4gKyAgICAgICAgICAgICAg ICBlbGYtPm5hbWUpOwo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgfQo+ICsKPiAr ICAgIC8qIENoZWNrIHRoYXQgc2VjdGlvbiBuYW1lIGluZGV4IGlzIHdpdGhpbiB0aGUgc2VjdGlv bnMuICovCj4gKyAgICBpZiAoIGVsZi0+aGRyLT5lX3Noc3RybmR4ID49IGVsZi0+aGRyLT5lX3No bnVtICkKPiArICAgIHsKPiArICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVz OiBTZWN0aW9uIG5hbWUgaWR4ICgldSkgaXMgcGFzdCBlbmQgb2Ygc2VjdGlvbnMgKCV1KSFcbiIs Cj4gKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+aGRyLT5lX3Noc3RybmR4LCBlbGYt Pmhkci0+ZV9zaG51bSk7Cj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICB9Cj4gKwo+ ICsgICAgaWYgKCBlbGYtPmhkci0+ZV9zaG51bSA+IDY0ICkKPiArICAgIHsKPiArICAgICAgICBk cHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBUb28gbWFueSAoJXUpIHNlY3Rpb25zIVxu IiwKPiArICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5oZHItPmVfc2hudW0pOwo+ICsg ICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoIGVsZi0+ aGRyLT5lX3Nob2ZmID4gVUxPTkdfTUFYICkKCldoeSBub3QgIj49IGVsZi0+bGVuIiAoYW5kIEkg c2VlIGl0IHdhcyBhbG1vc3QgdGhhdCB3YXkgaW4gdjguMSk/CkFuZCB0aGVuIGZvbGxvd2VkIChm dXJ0aGVyIGRvd24pIGJ5IGFub3RoZXIgY2hlY2sgdGFraW5nCmVsZi0+aGRyLT5lX3NobnVtICog ZWxmLT5oZHItPmVfc2hlbnRzaXplIGludG8gYWNjb3VudCAob2YKY291cnNlIGFzIHRoaW5ncyBz dGFuZCBub3csIGVsZi0+aGRyLT5lX3NoZW50c2l6ZSBjYW4gYWxzbyBiZQphcmJpdHJhcmlseSBs YXJnZSwgc28gdGhpcyB3b3VsZCBuZWVkIHRvIGJlIHN1aXRhYmx5IHN0cnVjdHVyZWQKLSBlLmcu ICIoZWxmLT5sZW4gLSBlbGYtPmhkci0+ZV9zaG9mZikgLyBlbGYtPmhkci0+ZV9zaGVudHNpemUg PAplbGYtPmhkci0+ZV9zaG51bSIpLgoKSmFuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=