From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.69) (envelope-from ) id 1PcaVL-0000Xq-3O for ltp-list@lists.sourceforge.net; Tue, 11 Jan 2011 09:27:03 +0000 Received: from mx1.redhat.com ([209.132.183.28]) by sog-mx-4.v43.ch3.sourceforge.com with esmtp (Exim 4.72) id 1PcaVJ-0006kl-F5 for ltp-list@lists.sourceforge.net; Tue, 11 Jan 2011 09:27:03 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id p0B9Qt1s014324 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 11 Jan 2011 04:26:55 -0500 Message-ID: <4D2C224A.8090402@redhat.com> Date: Tue, 11 Jan 2011 17:26:34 +0800 From: Caspar Zhang MIME-Version: 1.0 References: <1294339211-19449-1-git-send-email-czhang@redhat.com> <4D260D04.3080102@redhat.com> In-Reply-To: <4D260D04.3080102@redhat.com> Subject: Re: [LTP] Final version [Re: [PATCH v4] make pid_list dynamically sized with memory] List-Id: Linux Test Project General Discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ltp-list-bounces@lists.sourceforge.net To: ltp-list@lists.sourceforge.net T24gMDEvMDcvMjAxMSAwMjo0MiBBTSwgQ2FzcGFyIFpoYW5nIHdyb3RlOgo+IEhpIEdhcnJldHQs IHRoaXMgaXMgdGhlICpmaW5hbCogdmVyc2lvbiwgcGxlYXNlIHJldmlldy4KCkhpLCBhbnlib2R5 IGhhdmUgYSBjaGFuY2UgdG8gbG9vayBhdCB0aGlzIHBhdGNoPyBUaGFua3MhCgpDYXNwYXIKCj4g Cj4gT24gMDEvMDcvMjAxMSAwMjo0MCBBTSwgY3poYW5nQHJlZGhhdC5jb20gd3JvdGU6Cj4+IEZy b206IENhc3BhciBaaGFuZyA8Y3poYW5nQHJlZGhhdC5jb20+Cj4+Cj4+IFdlIGdldCBzZWdmYXVs dHMgZHVyaW5nIHRlc3RpbmcgbXRlc3QwMSBvbiBhIDVUQiBtZW1vcnkgbWFjaGluZSwgdGhlCj4+ IHByb2JsZW0gd2FzIHRyYWNlZCB0byB0aGUgYXJyYXkgcGlkX2xpc3RbXSB3ZW50IHRvIG92ZXJm bG93IGFuZAo+PiBjb3JydXB0ZWQgbWVtb3J5LiBUaGlzIGZpeCBtYWtlcyBwaWRfbGlzdCBkeW5h bWljYWxseSBzaXplZCB3aXRoCj4+IGNvcnJlY3QgbWVtb3J5IHNpemUgdG8gYXZvaWQgb3ZlcmZs b3cuCj4+Cj4+IHYyOiBub3Qgc3BsaXQgaW50byBkaWZmZXJlbnQgYml0cyB3aGVuIGFsbG9jYXRp bmcgcGlkX2xpc3QuCj4+IHYzOiAxKSBmaXggb3B0YXJnczogLWIgYW5kIC1wIHNob3VsZCBub3Qg YmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lLgo+PiAgICAgMikgcHJlX21lbSBtYXliZSBub3QgaW5p dGlhbGl6ZWQgYmVmb3JlIHVzaW5nIGlmIC1wIG9wdGlvbiBub3QgdXNlZC4KPj4gICAgICAgIGZp eCBpdCBieSBtb3ZpbmcgaXQgb3V0c2lkZSBgYGlmKG1heHBlcmNlbnQpJycgYmxvY2suCj4+IHY0 OiBmaXggY29kZSBmb3JtYXQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENhc3BhciBaaGFuZyA8Y3po YW5nQHJlZGhhdC5jb20+Cj4+IC0tLQo+PiAgdGVzdGNhc2VzL2tlcm5lbC9tZW0vbXRlc3QwMS9t dGVzdDAxLmMgfCAgNDA5ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4+ICAxIGZp bGVzIGNoYW5nZWQsIDIxNSBpbnNlcnRpb25zKCspLCAxOTQgZGVsZXRpb25zKC0pCj4+Cj4+IGRp ZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDAxL210ZXN0MDEuYyBiL3Rlc3Rj YXNlcy9rZXJuZWwvbWVtL210ZXN0MDEvbXRlc3QwMS5jCj4+IGluZGV4IGFlZTBkNTEuLjk0YjQy OWEgMTAwNjQ0Cj4+IC0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDEvbXRlc3QwMS5j Cj4+ICsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDEvbXRlc3QwMS5jCj4+IEBAIC00 NCwyMjMgKzQ0LDI0NCBAQAo+PiAgCj4+ICAjaW5jbHVkZSAidGVzdC5oIgo+PiAgCj4+ICsjZGVm aW5lIEZJVkVfSFVORFJFRF9LQiAodW5zaWduZWQgbG9uZyBsb25nKSg1MDAqMTAyNCoxMDI0KQo+ PiArI2RlZmluZSBPTkVfTUVHQUJZVEUgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykoMTAyNCoxMDI0 KjEwMjQpCj4+ICsjZGVmaW5lIFRIUkVFX01FR0FCWVRFUyAodW5zaWduZWQgbG9uZyBsb25nKSgz Kk9ORV9NRUdBQllURSkKPj4gKwo+PiAgY2hhciAqVENJRCA9ICJtdGVzdDAxIjsKPj4gIGludCBU U1RfVE9UQUwgPSAxOwo+PiAtCj4+ICBpbnQgcGlkX2NvdW50ID0gMDsKPj4gIAo+PiAgdm9pZCBo YW5kbGVyKGludCBzaWdubykKPj4gIHsKPj4gLSAgICAgICAgcGlkX2NvdW50Kys7Cj4+ICsgICAg cGlkX2NvdW50Kys7Cj4+ICB9Cj4+ICAKPj4gLWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2 W10pIHsKPj4gLSAgY2hhciogbWVtOwo+PiAtICBmbG9hdCBwZXJjZW50Owo+PiAtICB1bnNpZ25l ZCBpbnQgbWF4cGVyY2VudD0wLCBkb3dyaXRlPTAsIHZlcmJvc2U9MCwgaiwgYzsKPj4gLSAgdW5z aWduZWQgbG9uZyBieXRlY291bnQsIGFsbG9jX2J5dGVzOwo+PiAtICB1bnNpZ25lZCBsb25nIGxv bmcgb3JpZ2luYWxfbWF4Ynl0ZXMsbWF4Ynl0ZXM9MDsKPj4gLSAgdW5zaWduZWQgbG9uZyBsb25n IHByZV9tZW0sIHBvc3RfbWVtOwo+PiAtICBleHRlcm4gY2hhciogb3B0YXJnOwo+PiAtICBpbnQg Y2h1bmtzaXplID0gMTAyNCoxMDI0OyAvKiBvbmUgbWVnIGF0IGEgdGltZSBieSBkZWZhdWx0ICov Cj4+IC0gIHN0cnVjdCBzeXNpbmZvIHNzdGF0czsKPj4gLSAgaW50IGkscGlkX2NudHI7Cj4+IC0g IHBpZF90IHBpZCxwaWRfbGlzdFsxMDAwXTsKPj4gLSAgc3RydWN0IHNpZ2FjdGlvbiBhY3Q7Cj4+ IC0KPj4gLSAgYWN0LnNhX2hhbmRsZXIgPSBoYW5kbGVyOwo+PiAtICBhY3Quc2FfZmxhZ3MgPSAw Owo+PiAtICBzaWdlbXB0eXNldCgmYWN0LnNhX21hc2spOwo+PiAtICBzaWdhY3Rpb24oU0lHUlRN SU4sICAmYWN0LCAwKTsKPj4gLQo+PiAtICBmb3IgKGk9MDtpPDEwMDA7aSsrKQo+PiAtICAgcGlk X2xpc3RbaV09KHBpZF90KTA7Cj4+IC0KPj4gLSAgd2hpbGUgKChjPWdldG9wdChhcmdjLCBhcmd2 LCAiYzpiOnA6d3ZoIikpICE9IEVPRikgewo+PiAtICAgIHN3aXRjaCgoY2hhciljKSB7Cj4+IC0g ICAgICBjYXNlICdjJzoKPj4gLSAgICAgICAgY2h1bmtzaXplID0gYXRvaShvcHRhcmcpOwo+PiAt ICAgICAgICBicmVhazsKPj4gLSAgICAgIGNhc2UgJ2InOgo+PiAtICAgICAgICBtYXhieXRlcyA9 IGF0b2xsKG9wdGFyZyk7Cj4+IC0gICAgICAgIGJyZWFrOwo+PiAtICAgICAgY2FzZSAncCc6Cj4+ IC0gICAgICAgIG1heHBlcmNlbnQgPSBhdG9pKG9wdGFyZyk7Cj4+IC0JaWYgKG1heHBlcmNlbnQg PD0gMCkgewo+PiAtCSAgdHN0X3Jlc20oVEZBSUwsICJFUlJPUjogLXAgb3B0aW9uIHJlcXVpcmVz IG51bWJlciBncmVhdGVyIHRoYW4gMCIpOwo+PiAtCSAgZXhpdCgxKTt9Cj4+IC0JaWYgKG1heHBl cmNlbnQgPiA5OSkgewo+PiAtCSAgdHN0X3Jlc20oVEZBSUwsICJFUlJPUjogLXAgb3B0aW9uIGNh bm5vdCBiZSBncmVhdGVyIHRoYW4gOTkiKTsKPj4gLQkgIGV4aXQoMSk7fQo+PiAtICAgICAgICBi cmVhazsKPj4gLSAgICAgIGNhc2UgJ3cnOgo+PiAtICAgICAgICBkb3dyaXRlID0gMTsKPj4gLSAg ICAgICAgYnJlYWs7Cj4+IC0gICAgICBjYXNlICd2JzoKPj4gLSAgICAgICAgdmVyYm9zZSA9IDE7 Cj4+IC0gICAgICAgIGJyZWFrOwo+PiAtICAgICAgY2FzZSAnaCc6Cj4+IC0gICAgICBkZWZhdWx0 Ogo+PiAtICAgICAgICBwcmludGYoIlVzYWdlOiAlcyBbLWMgPGJ5dGVzPl0gWy1iIDxieXRlcz58 LXAgPHBlcmNlbnQ+XSBbLXZdXG4iLCBhcmd2WzBdKTsKPj4gLSAgICAgICAgcHJpbnRmKCJcdC1j IDxudW0+XHRzaXplIG9mIGNodW5rIGluIGJ5dGVzIHRvIG1hbGxvYyBvbiBlYWNoIHBhc3NcbiIp Owo+PiAtICAgICAgICBwcmludGYoIlx0LWIgPGJ5dGVzPlx0bWF4aW11bSBudW1iZXIgb2YgYnl0 ZXMgdG8gYWxsb2NhdGUgYmVmb3JlIHN0b3BwaW5nXG4iKTsKPj4gLSAgICAgICAgcHJpbnRmKCJc dC1wIDxieXRlcz5cdHBlcmNlbnQgb2YgdG90YWwgbWVtb3J5IHVzZWQgYXQgd2hpY2ggdGhlIHBy b2dyYW0gc3RvcHNcbiIpOwo+PiAtICAgICAgICBwcmludGYoIlx0LXdcdFx0d3JpdGUgdG8gdGhl IG1lbW9yeSBhZnRlciBhbGxvY2F0aW5nXG4iKTsKPj4gLSAgICAgICAgcHJpbnRmKCJcdC12XHRc dHZlcmJvc2VcbiIpOwo+PiAtICAgICAgICBwcmludGYoIlx0LWhcdFx0ZGlzcGxheSB1c2FnZVxu Iik7Cj4+IC0gICAgICAgIGV4aXQoLTEpOwo+PiAtICAgIH0KPj4gLSAgfQo+PiAtCj4+IC0gIHN5 c2luZm8oJnNzdGF0cyk7Cj4+IC0gIGlmIChtYXhwZXJjZW50KSB7Cj4+ICtpbnQgbWFpbihpbnQg YXJnYywgY2hhciogYXJndltdKQo+PiArewo+PiArICAgIGNoYXIqIG1lbTsKPj4gKyAgICBmbG9h dCBwZXJjZW50Owo+PiArICAgIHVuc2lnbmVkIGludCBtYXhwZXJjZW50ID0gMCwgZG93cml0ZSA9 IDAsIHZlcmJvc2U9MCwgaiwgYzsKPj4gKyAgICB1bnNpZ25lZCBsb25nIGJ5dGVjb3VudCwgYWxs b2NfYnl0ZXMsIG1heF9waWRzOwo+PiArICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBvcmlnaW5hbF9t YXhieXRlcywgbWF4Ynl0ZXMgPSAwOwo+PiArICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBwcmVfbWVt LCBwb3N0X21lbTsKPj4gICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxfcmFtLCB0b3RhbF9m cmVlLCBELCBDOwo+PiAtICAgIHBlcmNlbnQ9KGZsb2F0KW1heHBlcmNlbnQvMTAwLjAwOwo+PiAt Cj4+IC0gICAgdG90YWxfcmFtPXNzdGF0cy50b3RhbHJhbTsKPj4gLSAgICB0b3RhbF9yYW09dG90 YWxfcmFtK3NzdGF0cy50b3RhbHN3YXA7Cj4+IC0KPj4gLSAgICB0b3RhbF9mcmVlPXNzdGF0cy5m cmVlcmFtOwo+PiAtICAgIHRvdGFsX2ZyZWU9dG90YWxfZnJlZStzc3RhdHMuZnJlZXN3YXA7Cj4+ IC0KPj4gLSAgICAvKiBUb3RhbCBtZW1vcnkgdXNlZCBuZWVkZWQgdG8gcmVhY2ggbWF4cGVyY2Vu dCAqLwo+PiAtICAgIEQgPSBwZXJjZW50Kihzc3RhdHMubWVtX3VuaXQqdG90YWxfcmFtKTsKPj4g LSAgICB0c3RfcmVzbShUSU5GTywgIlRvdGFsIG1lbW9yeSB1c2VkIG5lZWRlZCB0byByZWFjaCBt YXhwZXJjZW50ID0gJWxsdSBrYnl0ZXMiLCBELzEwMjQpOwo+PiAtCj4+IC0gICAgLyogVG90YWwg bWVtb3J5IGFscmVhZHkgdXNlZCAqLwo+PiAtICAgIEMgPSBzc3RhdHMubWVtX3VuaXQqKHRvdGFs X3JhbS10b3RhbF9mcmVlKTsKPj4gLSAgICB0c3RfcmVzbShUSU5GTywgIlRvdGFsIG1lbW9yeSBh bHJlYWR5IHVzZWQgb24gc3lzdGVtID0gJWxsdSBrYnl0ZXMiLCBDLzEwMjQpOwo+PiArICAgIGV4 dGVybiBjaGFyKiBvcHRhcmc7Cj4+ICsgICAgaW50IGNodW5rc2l6ZSA9IDEwMjQqMTAyNDsgLyog b25lIG1lZyBhdCBhIHRpbWUgYnkgZGVmYXVsdCAqLwo+PiArICAgIHN0cnVjdCBzeXNpbmZvIHNz dGF0czsKPj4gKyAgICBpbnQgaSwgcGlkX2NudHI7Cj4+ICsgICAgcGlkX3QgcGlkLCAqcGlkX2xp c3Q7Cj4+ICsgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Q7Cj4+ICAKPj4gKyAgICBhY3Quc2FfaGFu ZGxlciA9IGhhbmRsZXI7Cj4+ICsgICAgYWN0LnNhX2ZsYWdzID0gMDsKPj4gKyAgICBzaWdlbXB0 eXNldCgmYWN0LnNhX21hc2spOwo+PiArICAgIHNpZ2FjdGlvbihTSUdSVE1JTiwgICZhY3QsIDAp Owo+PiArICAgIAo+PiArICAgIHdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiYzpiOnA6 d3ZoIikpICE9IEVPRikgCj4+ICsgICAgewo+PiArICAgICAgICBzd2l0Y2goKGNoYXIpYykgCj4+ ICsgICAgICAgIHsKPj4gKyAgICAgICAgICAgIGNhc2UgJ2MnOgo+PiArICAgICAgICAgICAgICAg IGNodW5rc2l6ZSA9IGF0b2kob3B0YXJnKTsKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4g KyAgICAgICAgICAgIGNhc2UgJ2InOgo+PiArICAgICAgICAgICAgICAgIGlmIChtYXhwZXJjZW50 ICE9IDApIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgdHN0X3Jlc20oVEZBSUwsICJFUlJPUjog LWIgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLXAgb3B0aW9uIGF0IHRoZSBzYW1lIHRpbWUi KTsKPj4gKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKPj4gKyAgICAgICAgICAgICAgICB9 Cj4+ICsgICAgICAgICAgICAgICAgbWF4Ynl0ZXMgPSBhdG9sbChvcHRhcmcpOwo+PiArICAgICAg ICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgY2FzZSAncCc6Cj4+ICsgICAgICAgICAg ICAgICAgaWYgKG1heGJ5dGVzICE9IDApIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgdHN0X3Jl c20oVEZBSUwsICJFUlJPUjogLXAgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggLWIgb3B0aW9u IGF0IHRoZSBzYW1lIHRpbWUiKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKPj4g KyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgbWF4cGVyY2VudCA9IGF0b2ko b3B0YXJnKTsKPj4gKyAgICAgICAgICAgICAgICBpZiAobWF4cGVyY2VudCA8PSAwKSB7Cj4+ICsg ICAgICAgICAgICAgICAgICAgIHRzdF9yZXNtKFRGQUlMLCAiRVJST1I6IC1wIG9wdGlvbiByZXF1 aXJlcyBudW1iZXIgZ3JlYXRlciB0aGFuIDAiKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgZXhp dCgxKTsKPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgaWYgKG1heHBl cmNlbnQgPiA5OSkgewo+PiArICAgICAgICAgICAgICAgICAgICB0c3RfcmVzbShURkFJTCwgIkVS Uk9SOiAtcCBvcHRpb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiA5OSIpOwo+PiArICAgICAgICAg ICAgICAgICAgICBleGl0KDEpOwo+PiArICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAg ICAgICBicmVhazsKPj4gKyAgICAgICAgICAgIGNhc2UgJ3cnOgo+PiArICAgICAgICAgICAgICAg IGRvd3JpdGUgPSAxOwo+PiArICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAg Y2FzZSAndic6Cj4+ICsgICAgICAgICAgICAgICAgdmVyYm9zZSA9IDE7Cj4+ICsgICAgICAgICAg ICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICBjYXNlICdoJzoKPj4gKyAgICAgICAgICAgIGRl ZmF1bHQ6Cj4+ICsgICAgICAgICAgICAgICAgcHJpbnRmKCJVc2FnZTogJXMgWy1jIDxieXRlcz5d IFstYiA8Ynl0ZXM+fC1wIDxwZXJjZW50Pl0gWy12XVxuIiwgYXJndlswXSk7Cj4+ICsgICAgICAg ICAgICAgICAgcHJpbnRmKCJcdC1jIDxudW0+XHRzaXplIG9mIGNodW5rIGluIGJ5dGVzIHRvIG1h bGxvYyBvbiBlYWNoIHBhc3NcbiIpOwo+PiArICAgICAgICAgICAgICAgIHByaW50ZigiXHQtYiA8 Ynl0ZXM+XHRtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBhbGxvY2F0ZSBiZWZvcmUgc3RvcHBp bmdcbiIpOwo+PiArICAgICAgICAgICAgICAgIHByaW50ZigiXHQtcCA8Ynl0ZXM+XHRwZXJjZW50 IG9mIHRvdGFsIG1lbW9yeSB1c2VkIGF0IHdoaWNoIHRoZSBwcm9ncmFtIHN0b3BzXG4iKTsKPj4g KyAgICAgICAgICAgICAgICBwcmludGYoIlx0LXdcdFx0d3JpdGUgdG8gdGhlIG1lbW9yeSBhZnRl ciBhbGxvY2F0aW5nXG4iKTsKPj4gKyAgICAgICAgICAgICAgICBwcmludGYoIlx0LXZcdFx0dmVy Ym9zZVxuIik7Cj4+ICsgICAgICAgICAgICAgICAgcHJpbnRmKCJcdC1oXHRcdGRpc3BsYXkgdXNh Z2VcbiIpOwo+PiArICAgICAgICAgICAgICAgIGV4aXQoLTEpOwo+PiArICAgICAgICB9Cj4+ICsg ICAgfQo+PiArICAgIAo+PiArICAgIHN5c2luZm8oJnNzdGF0cyk7Cj4+ICsgICAgdG90YWxfcmFt ID0gc3N0YXRzLnRvdGFscmFtICsgc3N0YXRzLnRvdGFsc3dhcDsgCj4+ICsgICAgdG90YWxfZnJl ZSA9IHNzdGF0cy5mcmVlcmFtICsgc3N0YXRzLmZyZWVzd2FwOwo+PiAgICAgIC8qIFRvdGFsIEZy ZWUgUHJlLVRlc3QgUkFNICovCj4+IC0gICAgcHJlX21lbSA9IHNzdGF0cy5tZW1fdW5pdCp0b3Rh bF9mcmVlOwo+PiAtCj4+IC0gICAgLyogQXJlIHdlIGFscmVhZHkgdXNpbmcgbW9yZSB0aGFuIG1h eHBlcmNlbnQ/ICovCj4+IC0gICAgaWYgKEM+RCkgewo+PiAtICAgICAgdHN0X3Jlc20oVEZBSUws ICJNb3JlIG1lbW9yeSB0aGFuIHRoZSBtYXhpbXVtIGFtb3VudCB5b3Ugc3BlY2lmaWVkIGlzIGFs cmVhZHkgYmVpbmcgdXNlZCIpOwo+PiAtICAgICAgZXhpdCgxKTsKPj4gKyAgICBwcmVfbWVtID0g c3N0YXRzLm1lbV91bml0ICogdG90YWxfZnJlZTsgICAKPj4gKyAgICBtYXhfcGlkcyA9IHRvdGFs X3JhbSAvICh1bnNpZ25lZCBsb25nKUZJVkVfSFVORFJFRF9LQiArIDE7Cj4+ICsgCj4+ICsgICAg aWYgKChwaWRfbGlzdCA9IG1hbGxvYyhtYXhfcGlkcyAqIHNpemVvZihwaWRfdCkpKSA9PSBOVUxM KQo+PiArICAgIHsKPj4gKyAgICAgICAgdHN0X3Jlc20oVEJST0t8VEVSUk5PLCAibWFsbG9jIGZh aWxlZC4iKTsKPj4gKyAgICAgICAgZXhpdCgxKTsKPj4gICAgICB9Cj4+IC0gICAgZWxzZQo+PiAt ICAgICAgcHJlX21lbSA9IHNzdGF0cy5tZW1fdW5pdCp0b3RhbF9mcmVlOwo+PiArICAgIG1lbXNl dChwaWRfbGlzdCwgMCwgbWF4X3BpZHMgKiBzaXplb2YocGlkX3QpKTsKPj4gKyAgICAKPj4gKyAg ICAvKiBDdXJyZW50bHkgdXNlZCBtZW1vcnkgKi8KPj4gKyAgICBDID0gc3N0YXRzLm1lbV91bml0 ICogKHRvdGFsX3JhbSAtIHRvdGFsX2ZyZWUpOwo+PiArICAgIHRzdF9yZXNtKFRJTkZPLCAiVG90 YWwgbWVtb3J5IGFscmVhZHkgdXNlZCBvbiBzeXN0ZW0gPSAlbGx1IGtieXRlcyIsIEMvMTAyNCk7 Cj4+ICsgICAgCj4+ICsgICAgaWYgKG1heHBlcmNlbnQpIAo+PiArICAgIHsKPj4gKyAgICAgICAg cGVyY2VudCA9IChmbG9hdCltYXhwZXJjZW50IC8gMTAwLjAwOwo+PiAgCj4+IC0gICAgLyogc2V0 IG1heGJ5dGVzIHRvIHRoZSBleHRyYSBhbW91bnQgd2Ugd2FudCB0byBhbGxvY2F0ZSAqLwo+PiAt ICAgIG1heGJ5dGVzID0gRC1DOwo+PiAtICAgIHRzdF9yZXNtKFRJTkZPLCAiRmlsbGluZyB1cCAl ZCUlIG9mIHJhbSB3aGljaCBpcyAlbGx1IGtieXRlcyIsIG1heHBlcmNlbnQsIG1heGJ5dGVzLzEw MjQpOwo+PiAtICB9Cj4+IC0gIG9yaWdpbmFsX21heGJ5dGVzPW1heGJ5dGVzOwo+PiAtICBpPTA7 Cj4+IC0gIHBpZF9jbnRyPTA7Cj4+IC0gIHBpZD1mb3JrKCk7Cj4+IC0gIGlmIChwaWQgIT0gMCkK Pj4gLSAgICBwaWRfY250cisrOwo+PiAtICAgIHBpZF9saXN0W2ldPXBpZDsKPj4gKyAgICAgICAg LyogRGVzaXJlZCBtZW1vcnkgbmVlZGVkIHRvIHJlYWNoIG1heHBlcmNlbnQgKi8KPj4gKyAgICAg ICAgRCA9IHBlcmNlbnQgKiAoc3N0YXRzLm1lbV91bml0ICogdG90YWxfcmFtKTsKPj4gKyAgICAg ICAgdHN0X3Jlc20oVElORk8sICJUb3RhbCBtZW1vcnkgdXNlZCBuZWVkZWQgdG8gcmVhY2ggbWF4 cGVyY2VudCA9ICVsbHUga2J5dGVzIiwgRC8xMDI0KTsKPj4gKyAgICAgICAgCj4+ICsgICAgICAg IC8qIEFyZSB3ZSBhbHJlYWR5IHVzaW5nIG1vcmUgdGhhbiBtYXhwZXJjZW50PyAqLwo+PiArICAg ICAgICBpZiAoQyA+IEQpIAo+PiArICAgICAgICB7Cj4+ICsgICAgICAgICAgICB0c3RfcmVzbShU RkFJTCwgIk1vcmUgbWVtb3J5IHRoYW4gdGhlIG1heGltdW0gYW1vdW50IHlvdSBzcGVjaWZpZWQg aXMgYWxyZWFkeSBiZWluZyB1c2VkIik7Cj4+ICsgICAgICAgICAgICBmcmVlKHBpZF9saXN0KTsK Pj4gKyAgICAgICAgICAgIGV4aXQoMSk7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgICAgCj4+ICsg ICAgICAgIC8qIHNldCBtYXhieXRlcyB0byB0aGUgZXh0cmEgYW1vdW50IHdlIHdhbnQgdG8gYWxs b2NhdGUgKi8KPj4gKyAgICAgICAgbWF4Ynl0ZXMgPSBEIC0gQzsKPj4gKyAgICAgICAgdHN0X3Jl c20oVElORk8sICJGaWxsaW5nIHVwICVkJSUgb2YgcmFtIHdoaWNoIGlzICVsbHUga2J5dGVzIiwg bWF4cGVyY2VudCwgbWF4Ynl0ZXMvMTAyNCk7Cj4+ICsgICAgfQo+PiArICAgIG9yaWdpbmFsX21h eGJ5dGVzID0gbWF4Ynl0ZXM7Cj4+ICsgICAgaSA9IDA7Cj4+ICsgICAgcGlkX2NudHIgPSAwOwo+ PiArICAgIHBpZCA9IGZvcmsoKTsKPj4gKyAgICBpZiAocGlkICE9IDApCj4+ICsgICAgICAgIHBp ZF9jbnRyKys7Cj4+ICsgICAgcGlkX2xpc3RbaV0gPSBwaWQ7Cj4+ICAKPj4gICNpZiBkZWZpbmVk IChfczM5MF8pIC8qIHMzOTAncyAzMWJpdCBhZGRyZXNzaW5nIHJlcXVpcmVzIHNtYWxsZXIgY2h1 bmtzICovCj4+IC0jZGVmaW5lIEZJVkVfSFVORFJFRF9LQgkoNTAwKjEwMjQqMTAyNCkKPj4gLSNk ZWZpbmUgT05FX01FR0FCWVRFCSgxMDI0KjEwMjQqMTAyNCkKPj4gLSNkZWZpbmUgVEhSRUVfTUVH QUJZVEVTCSgzKk9ORV9NRUdBQllURSkKPj4gLSAgd2hpbGUgKHBpZCAhPSAwICYmIG1heGJ5dGVz ID4gRklWRV9IVU5EUkVEX0tCKQo+PiAtICB7Cj4+IC0gICAgaSsrOwo+PiAtICAgIG1heGJ5dGVz IC09IEZJVkVfSFVORFJFRF9LQjsKPj4gLSAgICBwaWQgPSBmb3JrKCk7Cj4+IC0gICAgaWYgKHBp ZCAhPSAwKSB7Cj4+IC0gICAgICBwaWRfY250cisrOwo+PiAtICAgICAgcGlkX2xpc3RbaV0gPSBw aWQ7Cj4+ICsgICAgd2hpbGUgKHBpZCAhPSAwICYmIG1heGJ5dGVzID4gRklWRV9IVU5EUkVEX0tC KQo+PiArICAgIHsKPj4gKyAgICAgICAgaSsrOwo+PiArICAgICAgICBtYXhieXRlcyAtPSBGSVZF X0hVTkRSRURfS0I7Cj4+ICsgICAgICAgIHBpZCA9IGZvcmsoKTsKPj4gKyAgICAgICAgaWYgKHBp ZCAhPSAwKSAKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgICAgcGlkX2NudHIrKzsKPj4gKyAg ICAgICAgICAgIHBpZF9saXN0W2ldID0gcGlkOwo+PiArICAgICAgICB9Cj4+ICAgICAgfQo+PiAt ICB9Cj4+IC0gIGlmIChtYXhieXRlcyA+IEZJVkVfSFVORFJFRF9LQikKPj4gLSAgICBhbGxvY19i eXRlcyBGSVZFX0hVTkRSRURfS0I7Cj4+IC0gIGVsc2UKPj4gLSAgICBhbGxvY19ieXRlcyA9ICh1 bnNpZ25lZCBsb25nKSBtYXhieXRlczsKPj4gLQo+PiArICAgIGlmIChtYXhieXRlcyA+IEZJVkVf SFVORFJFRF9LQikKPj4gKyAgICAgICAgYWxsb2NfYnl0ZXMgPSBGSVZFX0hVTkRSRURfS0I7Cj4+ ICsgICAgZWxzZQo+PiArICAgICAgICBhbGxvY19ieXRlcyA9ICh1bnNpZ25lZCBsb25nKSBtYXhi eXRlczsKPj4gKyAgICAKPj4gICNlbGlmIF9fV09SRFNJWkU9PTMyCj4+IC0gIHdoaWxlIChwaWQg IT0gMCAmJiBtYXhieXRlcyA+IE9ORV9NRUdBQllURSkKPj4gLSAgewo+PiAtICAgIGkrKzsKPj4g LSAgICBtYXhieXRlcyAtPSBPTkVfTUVHQUJZVEU7Cj4+IC0gICAgcGlkID0gZm9yaygpOwo+PiAt ICAgIGlmIChwaWQgIT0gMCkgewo+PiAtICAgICAgcGlkX2NudHIrKzsKPj4gLSAgICAgIHBpZF9s aXN0W2ldPXBpZDsKPj4gKyAgICB3aGlsZSAocGlkICE9IDAgJiYgbWF4Ynl0ZXMgPiBPTkVfTUVH QUJZVEUpCj4+ICsgICAgewo+PiArICAgICAgICBpKys7Cj4+ICsgICAgICAgIG1heGJ5dGVzIC09 IE9ORV9NRUdBQllURTsKPj4gKyAgICAgICAgcGlkID0gZm9yaygpOwo+PiArICAgICAgICBpZiAo cGlkICE9IDApIAo+PiArICAgICAgICB7Cj4+ICsgICAgICAgICAgICBwaWRfY250cisrOwo+PiAr ICAgICAgICAgICAgcGlkX2xpc3RbaV09cGlkOwo+PiArICAgICAgICB9Cj4+ICAgICAgfQo+PiAt ICB9Cj4+IC0gIGlmIChtYXhieXRlcyA+IE9ORV9NRUdBQllURSkKPj4gLSAgICBhbGxvY19ieXRl cyA9IE9ORV9NRUdBQllURTsKPj4gLSAgZWxzZQo+PiAtICAgIGFsbG9jX2J5dGVzID0gKHVuc2ln bmVkIGxvbmcpbWF4Ynl0ZXM7Cj4+IC0KPj4gKyAgICBpZiAobWF4Ynl0ZXMgPiBPTkVfTUVHQUJZ VEUpCj4+ICsgICAgICAgIGFsbG9jX2J5dGVzID0gT05FX01FR0FCWVRFOwo+PiArICAgIGVsc2UK Pj4gKyAgICAgICAgYWxsb2NfYnl0ZXMgPSAodW5zaWduZWQgbG9uZyltYXhieXRlczsKPj4gKyAg ICAKPj4gICNlbGlmIF9fV09SRFNJWkU9PTY0Cj4+IC0gIHdoaWxlIChwaWQhPTAgJiYgbWF4Ynl0 ZXMgPiBUSFJFRV9NRUdBQllURVMpCj4+IC0gIHsKPj4gLSAgICBpKys7Cj4+IC0gICAgbWF4Ynl0 ZXMgLT0gVEhSRUVfTUVHQUJZVEVTOwo+PiAtICAgIHBpZD1mb3JrKCk7Cj4+IC0gICAgaWYgKHBp ZCAhPSAwKSB7Cj4+IC0gICAgICBwaWRfY250cisrOwo+PiAtICAgICAgcGlkX2xpc3RbaV0gPSBw aWQ7Cj4+IC0gICAgfQo+PiAtICB9Cj4+IC0gIGlmIChtYXhieXRlcyA+IFRIUkVFX01FR0FCWVRF UykKPj4gLSAgICBhbGxvY19ieXRlcyA9IFRIUkVFX01FR0FCWVRFUzsKPj4gLSAgZWxzZQo+PiAt ICAgIGFsbG9jX2J5dGVzID0gbWF4Ynl0ZXM7Cj4+IC0jZW5kaWYKPj4gLQo+PiAtICBpZiAocGlk ID09IDApCQkJLyoqIENISUxEICoqLwo+PiAtICB7Cj4+IC0gICAgYnl0ZWNvdW50PWNodW5rc2l6 ZTsKPj4gLSAgICB3aGlsZSAoMSkgewo+PiAtICAgICAgaWYgKChtZW0gPSAoY2hhciopbWFsbG9j KGNodW5rc2l6ZSkpID09IE5VTEwpIHsKPj4gLSAgICAgICAgdHN0X3Jlc20oVElORk8sICJzdG9w cGVkIGF0ICVsdSBieXRlcyIsIGJ5dGVjb3VudCk7Cj4+IC0gICAgICAgIGV4aXQoMSk7Cj4+IC0g ICAgICB9Cj4+IC0gICAgICBpZiAoZG93cml0ZSkKPj4gLSAgICAgICAgZm9yIChqPTA7IGo8Y2h1 bmtzaXplOyBqKyspCj4+IC0gICAgICAgICAgKihtZW0raik9J2EnOwo+PiAtICAgICAgaWYgKHZl cmJvc2UpCj4+IC0JdHN0X3Jlc20oVElORk8sICJhbGxvY2F0ZWQgJWx1IGJ5dGVzIGNodW5rc2l6 ZSBpcyAlZCIsIGJ5dGVjb3VudCwgY2h1bmtzaXplKTsKPj4gLSAgICAgIGJ5dGVjb3VudCs9Y2h1 bmtzaXplOwo+PiAtICAgICAgaWYgKGFsbG9jX2J5dGVzICYmIChieXRlY291bnQgPj0gYWxsb2Nf Ynl0ZXMpKQo+PiAtICAgICAgICBicmVhazsKPj4gKyAgICB3aGlsZSAocGlkIT0wICYmIG1heGJ5 dGVzID4gVEhSRUVfTUVHQUJZVEVTKSAKPj4gKyAgICB7Cj4+ICsgICAgICAgIGkrKzsKPj4gKyAg ICAgICAgbWF4Ynl0ZXMgLT0gVEhSRUVfTUVHQUJZVEVTOwo+PiArICAgICAgICBwaWQgPSBmb3Jr KCk7Cj4+ICsgICAgICAgIGlmIChwaWQgIT0gMCkgCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAg ICAgIHBpZF9jbnRyKys7Cj4+ICsgICAgICAgICAgICBwaWRfbGlzdFtpXSA9IHBpZDsKPj4gKyAg ICAgICAgfQo+PiAgICAgIH0KPj4gLSAgICBpZiAoZG93cml0ZSkKPj4gLSAgICAgIHRzdF9yZXNt KFRJTkZPLCAiLi4uICVsdSBieXRlcyBhbGxvY2F0ZWQgYW5kIHVzZWQuIiwgYnl0ZWNvdW50KTsK Pj4gKyAgICBpZiAobWF4Ynl0ZXMgPiBUSFJFRV9NRUdBQllURVMpCj4+ICsgICAgICAgIGFsbG9j X2J5dGVzID0gVEhSRUVfTUVHQUJZVEVTOwo+PiAgICAgIGVsc2UKPj4gLSAgICAgIHRzdF9yZXNt KFRJTkZPLCAiLi4uICVsdSBieXRlcyBhbGxvY2F0ZWQgb25seS4iLCBieXRlY291bnQpOwo+PiAt ICAgIGtpbGwoZ2V0cHBpZCgpLFNJR1JUTUlOKTsKPj4gLSAgICB3aGlsZSAoMSkKPj4gLSAgICAg IHNsZWVwKDEpOwo+PiAtICB9Cj4+IC0gIGVsc2UJCQkJCS8qKiBQQVJFTlQgKiovCj4+IC0gIHsK Pj4gLQo+PiAtICAgIGk9MDsKPj4gLSAgICBzeXNpbmZvKCZzc3RhdHMpOwo+PiArICAgICAgICBh bGxvY19ieXRlcyA9IG1heGJ5dGVzOwo+PiArI2VuZGlmCj4+ICAKPj4gLSAgICBpZiAoZG93cml0 ZSkKPj4gKyAgICBpZiAocGlkID09IDApICAgICAgICAgLyoqIENISUxEICoqLwo+PiAgICAgIHsK Pj4gLSAgICAgIC8qIFRvdGFsIEZyZWUgUG9zdC1UZXN0IFJBTSAqLwo+PiAtICAgICAgcG9zdF9t ZW0gPSAodW5zaWduZWQgbG9uZyBsb25nKXNzdGF0cy5tZW1fdW5pdCpzc3RhdHMuZnJlZXJhbTsK Pj4gLSAgICAgIHBvc3RfbWVtID0gcG9zdF9tZW0rKCh1bnNpZ25lZCBsb25nIGxvbmcpc3N0YXRz Lm1lbV91bml0KnNzdGF0cy5mcmVlc3dhcCk7Cj4+IC0KPj4gLSAgICAgIHdoaWxlICgoKCh1bnNp Z25lZCBsb25nIGxvbmcpcHJlX21lbSAtIHBvc3RfbWVtKSA8ICh1bnNpZ25lZCBsb25nIGxvbmcp b3JpZ2luYWxfbWF4Ynl0ZXMpICYmCj4+IC0gICAgICAgICAgICAgIChwaWRfY291bnQgPCBwaWRf Y250cikgKQo+PiAtICAgICAgewo+PiAtICAgICAgIHNsZWVwKDEpOwo+PiAtICAgICAgIHN5c2lu Zm8oJnNzdGF0cyk7Cj4+IC0gICAgICAgcG9zdF9tZW0gPSAodW5zaWduZWQgbG9uZyBsb25nKXNz dGF0cy5tZW1fdW5pdCpzc3RhdHMuZnJlZXJhbTsKPj4gLSAgICAgICBwb3N0X21lbSA9IHBvc3Rf bWVtKygodW5zaWduZWQgbG9uZyBsb25nKXNzdGF0cy5tZW1fdW5pdCpzc3RhdHMuZnJlZXN3YXAp Owo+PiAtICAgICAgfQo+PiArICAgICAgICBieXRlY291bnQgPSBjaHVua3NpemU7Cj4+ICsgICAg ICAgIHdoaWxlICgxKSAKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgICAgaWYgKChtZW0gPSBt YWxsb2MoY2h1bmtzaXplKSkgPT0gTlVMTCkgCj4+ICsgICAgICAgICAgICB7Cj4+ICsgICAgICAg ICAgICAgICAgdHN0X3Jlc20oVEJST0t8VEVSUk5PLCAic3RvcHBlZCBhdCAlbHUgYnl0ZXMiLCBi eXRlY291bnQpOwo+PiArICAgICAgICAgICAgICAgIGZyZWUocGlkX2xpc3QpOwo+PiArICAgICAg ICAgICAgICAgIGV4aXQoMSk7Cj4+ICsgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICBpZiAo ZG93cml0ZSkKPj4gKyAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgY2h1bmtzaXplOyBq KyspCj4+ICsgICAgICAgICAgICAgICAgICAgICoobWVtK2opID0gJ2EnOwo+PiArICAgICAgICAg ICAgaWYgKHZlcmJvc2UpCj4+ICsgICAgICAgICAgICAgICAgdHN0X3Jlc20oVElORk8sICJhbGxv Y2F0ZWQgJWx1IGJ5dGVzIGNodW5rc2l6ZSBpcyAlZCIsIGJ5dGVjb3VudCwgY2h1bmtzaXplKTsK Pj4gKyAgICAgICAgICAgIGJ5dGVjb3VudCArPSBjaHVua3NpemU7Cj4+ICsgICAgICAgICAgICBp ZiAoYWxsb2NfYnl0ZXMgJiYgYnl0ZWNvdW50ID49IGFsbG9jX2J5dGVzKQo+PiArICAgICAgICAg ICAgICAgIGJyZWFrOwo+PiArICAgICAgICB9Cj4+ICsgICAgICAgIGlmIChkb3dyaXRlKQo+PiAr ICAgICAgICAgICAgdHN0X3Jlc20oVElORk8sICIuLi4gJWx1IGJ5dGVzIGFsbG9jYXRlZCBhbmQg dXNlZC4iLCBieXRlY291bnQpOwo+PiArICAgICAgICBlbHNlCj4+ICsgICAgICAgICAgICB0c3Rf cmVzbShUSU5GTywgIi4uLiAlbHUgYnl0ZXMgYWxsb2NhdGVkIG9ubHkuIiwgYnl0ZWNvdW50KTsK Pj4gKyAgICAgICAga2lsbChnZXRwcGlkKCksIFNJR1JUTUlOKTsKPj4gKyAgICAgICAgd2hpbGUg KDEpCj4+ICsgICAgICAgICAgICBzbGVlcCgxKTsKPj4gICAgICB9Cj4+IC0gICAgd2hpbGUgKHBp ZF9saXN0W2ldIT0wKQo+PiArICAgIGVsc2UgICAgICAgICAgICAgICAgICAvKiogUEFSRU5UICoq Lwo+PiAgICAgIHsKPj4gLSAgICAgIGtpbGwocGlkX2xpc3RbaV0sU0lHS0lMTCk7Cj4+IC0gICAg ICBpKys7Cj4+ICsgICAgICAgIGkgPSAwOwo+PiArICAgICAgICBzeXNpbmZvKCZzc3RhdHMpOwo+ PiArICAgICAgICAKPj4gKyAgICAgICAgaWYgKGRvd3JpdGUpIAo+PiArICAgICAgICB7Cj4+ICsg ICAgICAgICAgICAvKiBUb3RhbCBGcmVlIFBvc3QtVGVzdCBSQU0gKi8KPj4gKyAgICAgICAgICAg IHBvc3RfbWVtID0gKHVuc2lnbmVkIGxvbmcgbG9uZylzc3RhdHMubWVtX3VuaXQgKiBzc3RhdHMu ZnJlZXJhbTsKPj4gKyAgICAgICAgICAgIHBvc3RfbWVtID0gcG9zdF9tZW0gKyAodW5zaWduZWQg bG9uZyBsb25nKXNzdGF0cy5tZW1fdW5pdCAqIHNzdGF0cy5mcmVlc3dhcDsKPj4gKwo+PiArICAg ICAgICAgICAgd2hpbGUgKCgoKHVuc2lnbmVkIGxvbmcgbG9uZylwcmVfbWVtIC0gcG9zdF9tZW0p IDwgKHVuc2lnbmVkIGxvbmcgbG9uZylvcmlnaW5hbF9tYXhieXRlcykgJiYKPj4gKyAgICAgICAg ICAgICAgICAgICAgKHBpZF9jb3VudCA8IHBpZF9jbnRyKSkKPj4gKyAgICAgICAgICAgIHsKPj4g KyAgICAgICAgICAgICAgICBzbGVlcCgxKTsKPj4gKyAgICAgICAgICAgICAgICBzeXNpbmZvKCZz c3RhdHMpOwo+PiArICAgICAgICAgICAgICAgIHBvc3RfbWVtID0gKHVuc2lnbmVkIGxvbmcgbG9u Zylzc3RhdHMubWVtX3VuaXQgKiBzc3RhdHMuZnJlZXJhbTsKPj4gKyAgICAgICAgICAgICAgICBw b3N0X21lbSA9IHBvc3RfbWVtICsgKHVuc2lnbmVkIGxvbmcgbG9uZylzc3RhdHMubWVtX3VuaXQg KiBzc3RhdHMuZnJlZXN3YXA7Cj4+ICsgICAgICAgICAgICB9Cj4+ICsgICAgICAgIH0KPj4gKyAg ICAgICAgd2hpbGUgKHBpZF9saXN0W2ldICE9IDApCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAg ICAgIGtpbGwocGlkX2xpc3RbaV0sIFNJR0tJTEwpOwo+PiArICAgICAgICAgICAgaSsrOwo+PiAr ICAgICAgICB9Cj4+ICsgICAgICAgIGlmIChkb3dyaXRlKQo+PiArICAgICAgICAgICAgdHN0X3Jl c20oVFBBU1MsICIlbGx1IGtieXRlcyBhbGxvY2F0ZWQgYW5kIHVzZWQuIiwgb3JpZ2luYWxfbWF4 Ynl0ZXMvMTAyNCk7Cj4+ICsgICAgICAgIGVsc2UKPj4gKyAgICAgICAgICAgIHRzdF9yZXNtKFRQ QVNTLCAiJWxsdSBrYnl0ZXMgYWxsb2NhdGVkIG9ubHkuIiwgb3JpZ2luYWxfbWF4Ynl0ZXMvMTAy NCk7Cj4+ICAgICAgfQo+PiAtICAgIGlmIChkb3dyaXRlKQo+PiAtICAgICAgdHN0X3Jlc20oVFBB U1MsICIlbGx1IGtieXRlcyBhbGxvY2F0ZWQgYW5kIHVzZWQuIiwgb3JpZ2luYWxfbWF4Ynl0ZXMv MTAyNCk7Cj4+IC0gICAgZWxzZQo+PiAtICAgICAgdHN0X3Jlc20oVFBBU1MsICIlbGx1IGtieXRl cyBhbGxvY2F0ZWQgb25seS4iLCBvcmlnaW5hbF9tYXhieXRlcy8xMDI0KTsKPj4gLSAgfQo+PiAt ICBleGl0KDApOwo+PiAtfQo+PiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKPj4gKyAgICBm cmVlKHBpZF9saXN0KTsKPj4gKyAgICBleGl0KDApOwo+PiArfQo+IAo+IAoKCi0tIApRdWFsaXR5 IEFzc3VyYW5jZSBBc3NvY2lhdGUgKEtlcm5lbCkgaW4KUmVkIEhhdCBTb2Z0d2FyZSAoQmVpamlu ZykgQ28uLCBSJkQgQnJhbmNoCgpURUw6ICs4Ni0xMC02MjYwODE1MApXRUI6IGh0dHA6Ly93d3cu cmVkaGF0LmNvbS8KLS0KQy1BLVMtUC1BLVIsIENhc3BhciAva8Omc3DJkTovIDstKQoKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCkdhaW5pbmcgdGhlIHRydXN0IG9mIG9ubGluZSBjdXN0b21lcnMgaXMg dml0YWwgZm9yIHRoZSBzdWNjZXNzIG9mIGFueSBjb21wYW55CnRoYXQgcmVxdWlyZXMgc2Vuc2l0 aXZlIGRhdGEgdG8gYmUgdHJhbnNtaXR0ZWQgb3ZlciB0aGUgV2ViLiAgIExlYXJuIGhvdyB0byAK YmVzdCBpbXBsZW1lbnQgYSBzZWN1cml0eSBzdHJhdGVneSB0aGF0IGtlZXBzIGNvbnN1bWVycycg aW5mb3JtYXRpb24gc2VjdXJlIAphbmQgaW5zdGlsbHMgdGhlIGNvbmZpZGVuY2UgdGhleSBuZWVk IHRvIHByb2NlZWQgd2l0aCB0cmFuc2FjdGlvbnMuCmh0dHA6Ly9wLnNmLm5ldC9zZnUvb3JhY2xl LXNmZGV2bmwgCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Ckx0cC1saXN0IG1haWxpbmcgbGlzdApMdHAtbGlzdEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0 cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbHRwLWxpc3QK