From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [59.151.112.132] (helo=heian.cn.fujitsu.com) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1ag0iY-000197-UF for kexec@lists.infradead.org; Wed, 16 Mar 2016 01:57:56 +0000 Message-ID: <56E8BD1D.5010209@cn.fujitsu.com> Date: Wed, 16 Mar 2016 09:55:41 +0800 From: =?UTF-8?B?Ilpob3UsIFdlbmppYW4v5ZGo5paH5YmRIg==?= MIME-Version: 1.0 Subject: Re: [PATCH v4] Improve the performance of --num-threads -d 31 References: <1457483231-2092-1-git-send-email-zhouwj-fnst@cn.fujitsu.com> <20160315063430.GA12981@dhcp-128-25.nay.redhat.com> <56E7B5D9.30303@cn.fujitsu.com> <20160315093316.GA13722@dhcp-128-25.nay.redhat.com> In-Reply-To: <20160315093316.GA13722@dhcp-128-25.nay.redhat.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Minfei Huang Cc: kexec@lists.infradead.org SGkgTWluZmVpLAoKSSBoYXZlIHNvbWUgcXVlc3Rpb25zLgoKSWYgdGhlIHZhbHVlIG9mIG51bS10 aHJlYWRzIGlzIDgsCjEuIEhvdyBtdWNoIGlzIHRoZSBmcmVlIG1lbW9yeSBiZWZvcmUgcnVubmlu ZyBtYWtlZHVtcGZpbGUgZmFpbGVkPwoKMi4gSG93IG11Y2ggaXMgdGhlIGZyZWUgbWVtb3J5IGJl Zm9yZSBydW5uaW5nIG1ha2VkdW1wZmlsZSBzdWNjZXNzPwoKCkFuZCB0aGUgZm9sbG93aW5nIHJl c3VsdCBpcyB2ZXJ5IHN0cmFuZ2UgaWYgYWxsIGNhY2hlIGhhcyBiZWVuIGRyb3BwZWQuCm1ha2Vk dW1wZmlsZSAtLW51bS10aHJlYWRzIDMwIC1kIDMxCiAgICAgcmVhbCAgICAwbTAuMDA2cwogICAg IHVzZXIgICAgMG0wLjAwMnMKICAgICBzeXMgMG0wLjAwNHMKCi0tIApUaGFua3MKWmhvdQoKT24g MDMvMTUvMjAxNiAwNTozMyBQTSwgTWluZmVpIEh1YW5nIHdyb3RlOgo+IE9uIDAzLzE1LzE2IGF0 IDAzOjEycG0sICJaaG91LCBXZW5qaWFuL+WRqOaWh+WJkSIgd3JvdGU6Cj4+IEhlbGxvIE1pbmZl aSwKPj4KPj4gSSBndWVzcyB0aGUgcmVzdWx0IGlzIGFmZmVjdGVkIGJ5IHRoZSBjYWNoZXMuCj4+ IEhvdyBhYm91dCBleGVjdXRpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kIGJlZm9yZSBydW5uaW5n IG1ha2VkdW1wZmlsZSBlYWNoIHRpbWU/Cj4+ICMgZWNobyAzID4gL3Byb2Mvc3lzL3ZtL2Ryb3Bf Y2FjaGVzCj4KPiBIaSwgWmhvdS4KPgo+IFNlZW0gdGhlcmUgaXMgYSBidWcgZHVyaW5nIGR1bXBp bmcgdm1jb3JlIHdpdGggb3B0aW9uIG51bS10aHJlYWRzLgo+Cj4gMTMwNyBvcGVuKCIvcHJvYy9t ZW1pbmZvIiwgT19SRE9OTFkpICAgICAgICAgPSA0Cj4gMTMwOCBmc3RhdCg0LCB7c3RfbW9kZT1T X0lGUkVHfDA0NDQsIHN0X3NpemU9MCwgLi4ufSkgPSAwCj4gMTMwOSBtbWFwKE5VTEwsIDQwOTYs IFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCkg PSAweDdmNTkzMjJkMzAwMAo+IDEzMTAgcmVhZCg0LCAiTWVtVG90YWw6ICAgICAgICAgMzg1NDUy IGtCXG5NZW1GIi4uLiwgMTAyNCkgPSAxMDI0Cj4gMTMxMSBjbG9zZSg0KSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPSAwCj4gMTMxMiBtdW5tYXAoMHg3ZjU5MzIyZDMwMDAsIDQwOTYp ICAgICAgICAgICAgPSAwCj4gMTMxMyBtbWFwKE5VTEwsIDE4NDQ2NzQ0MDQ4NTg0Mzg4NjA4LCBQ Uk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZBVEV8TUFQX0FOT05ZTU9VUywgLTEsIDApID0g LTEgRU5PTUVNIChDYW5ub3QgYWxsb2NhdGUgbWVtb3J5KQo+IDEzMTQgbW1hcChOVUxMLCAxODQ0 Njc0NDA0ODU4NDUyMzc3NiwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1BUF9B Tk9OWU1PVVMsIC0xLCAwKSA9IC0xIEVOT01FTSAoQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSkKPiAx MzE1IG1tYXAoTlVMTCwgMTM0MjE3NzI4LCBQUk9UX05PTkUsIE1BUF9QUklWQVRFfE1BUF9BTk9O WU1PVVN8TUFQX05PUkVTRVJWRSwgLTEsIDApID0gMHg3ZjU5MjdiYjIwMDAKPiAxMzE2IG11bm1h cCgweDdmNTkyN2JiMjAwMCwgNDUxMzc5MikgICAgICAgICA9IDAKPiAxMzE3IG11bm1hcCgweDdm NTkyYzAwMDAwMCwgNjI1OTUwNzIpICAgICAgICA9IDAKPiAxMzE4IG1wcm90ZWN0KDB4N2Y1OTI4 MDAwMDAwLCAxMzUxNjgsIFBST1RfUkVBRHxQUk9UX1dSSVRFKSA9IDAKPiAxMzE5IG1tYXAoTlVM TCwgMTg0NDY3NDQwNDg1ODQzODg2MDgsIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfUFJJVkFU RXxNQVBfQU5PTllNT1VTLCAtMSwgMCkgPSAtMSBFTk9NRU0gKENhbm5vdCBhbGxvY2F0ZSBtZW1v cnkpCj4KPiBUaGFua3MKPiBNaW5mZWkKPgo+Pgo+PiAtLQo+PiBUaGFua3MKPj4gWmhvdQo+Pgo+ PiBPbiAwMy8xNS8yMDE2IDAyOjM0IFBNLCBNaW5mZWkgSHVhbmcgd3JvdGU6Cj4+PiBIaSwgWmhv dS4KPj4+Cj4+PiBJIGhhdmUgYXBwbGllZCB0aGlzIHBhdGNoIGJhc2Ugb24gMS41LjkuIFRoZXJl IGFyZSBzZXZlcmFsIHRlc3RjYXNlcyBJCj4+PiBoYXZlIHRlc3RlZC4KPj4+Cj4+PiAtIG1ha2Vk dW1wZmlsZSAtLW51bS10aHJlYWRzIDY0IC1kIDMxCj4+PiAgICAgIHJlYWwgICAgMG0wLjAxMHMK Pj4+ICAgICAgdXNlciAgICAwbTAuMDAycwo+Pj4gICAgICBzeXMgMG0wLjAwOXMKPj4+Cj4+PiAt IG1ha2VkdW1wZmlsZSAtLW51bS10aHJlYWRzIDMxIC1kIDMxCj4+PiAgICAgIHJlYWwgICAgMm00 MC45MTVzCj4+PiAgICAgIHVzZXIgICAgMTBtNTAuOTAwcwo+Pj4gICAgICBzeXMgMjNtOS42NjRz Cj4+Pgo+Pj4gbWFrZWR1bXBmaWxlIC0tbnVtLXRocmVhZHMgMzAgLWQgMzEKPj4+ICAgICAgcmVh bCAgICAwbTAuMDA2cwo+Pj4gICAgICB1c2VyICAgIDBtMC4wMDJzCj4+PiAgICAgIHN5cyAwbTAu MDA0cwo+Pj4KPj4+IG1ha2VkdW1wZmlsZSAtLW51bS10aHJlYWRzIDMyIC1kIDMxCj4+PiAgICAg IHJlYWwgICAgMG0wLjAwN3MKPj4+ICAgICAgdXNlciAgICAwbTAuMDAycwo+Pj4gICAgICBzeXMg MG0wLjAwNXMKPj4+Cj4+PiAtIG1ha2VkdW1wZmlsZSAtLW51bS10aHJlYWRzIDggLWQgMzEKPj4+ ICAgICAgcmVhbCAgICAybTMyLjY5MnMKPj4+ICAgICAgdXNlciAgICA3bTQuNjMwcwo+Pj4gICAg ICBzeXMgMm0wLjM2OXMKPj4+Cj4+PiAtIG1ha2VkdW1wZmlsZSAtLW51bS10aHJlYWRzIDEgLWQg MzEKPj4+ICAgICAgcmVhbCAgICA0bTQyLjQyM3MKPj4+ICAgICAgdXNlciAgICA3bTI3LjE1M3MK Pj4+ICAgICAgc3lzIDBtMjIuNDkwcwo+Pj4KPj4+IC0gbWFrZWR1bXBmaWxlLm9yaWcgLWQgMzEK Pj4+ICAgICAgcmVhbCAgICA0bTEuMjk3cwo+Pj4gICAgICB1c2VyICAgIDNtMzkuNjk2cwo+Pj4g ICAgICBzeXMgMG0xNS4yMDBzCj4+Pgo+Pj4gVGhpcyBwYXRjaCBoYXMgYSBodWdlIGluY3JlbWVu dCB0byB0aGUgZmlsdGVyIHBlcmZvcm1hbmNlIHVuZGVyIDMxLiBCdXQKPj4+IGl0IGlzIG5vdCBz dGFibGUsIHNpbmNlIG1ha2VkdW1wZmlsZSBmYWlscyB0byBkdW1wIHZtY29yZSBpbnRlcm1pdHRl bnRseS4KPj4+IFlvdSBjYW4gZmluZCB0aGUgYWJvdmUgdGVzdCByZXN1bHQsIG1ha2VkdW1wZmls ZSBmYWlscyB0byBkdW1wIHZtY29yZQo+Pj4gd2l0aCBvcHRpb24gLS1udW0tdGhyZWFkcyA2NCwg YWxzbyBpdCBtYXkgb2NjdXIgd2l0aCBvcHRpb24KPj4+IC0tbnVtYmVyLXRocmVhZHMgOC4KPj4+ Cj4+PiBUaGFua3MKPj4+IE1pbmZlaQo+Pj4KPj4+IE9uIDAzLzA5LzE2IGF0IDA4OjI3YW0sIFpo b3UgV2VuamlhbiB3cm90ZToKPj4+PiB2NDoKPj4+PiAgICAgICAgICAxLiBmaXggYSBidWcgY2F1 c2VkIGJ5IHRoZSBsb2dpYwo+Pj4+IHYzOgo+Pj4+ICAgICAgICAgIDEuIHJlbW92ZSBzb21lIHVu dXNlZCB2YXJpYWJsZXMKPj4+PiAgICAgICAgICAyLiBmaXggYSBidWcgY2F1c2VkIGJ5IHRoZSB3 cm9uZyBsb2dpYwo+Pj4+ICAgICAgICAgIDMuIGZpeCBhIGJ1ZyBjYXVzZWQgYnkgb3B0aW1pc2lu Zwo+Pj4+ICAgICAgICAgIDQuIGltcHJvdmUgbW9yZSBwZXJmb3JtYW5jZSBieSB1c2luZyBNaW5v cnUgVXN1aSdzIGNvZGUKPj4+Pgo+Pj4+IG11bHRpLXRocmVhZHMgaW1wbGVtZW50YXRpb24gd2ls bCBpbnRyb2R1Y2UgZXh0cmEgY29zdCB3aGVuIGhhbmRsaW5nCj4+Pj4gZWFjaCBwYWdlLiBUaGUg b3JpZ2luIGltcGxlbWVudGF0aW9uIHdpbGwgYWxzbyBkbyB0aGUgZXh0cmEgd29yayBmb3IKPj4+ PiBmaWx0ZXJlZCBwYWdlcy4gU28gdGhlcmUgaXMgYSBiaWcgcGVyZm9ybWFuY2UgZGVncmFkYXRp b24gaW4KPj4+PiAtLW51bS10aHJlYWRzIC1kIDMxLgo+Pj4+IFRoZSBuZXcgaW1wbGVtZW50YXRp b24gd29uJ3QgZG8gdGhlIGV4dHJhIHdvcmsgZm9yIGZpbHRlcmVkIHBhZ2VzIGFueQo+Pj4+IG1v cmUuIFNvIHRoZSBwZXJmb3JtYW5jZSBvZiAtZCAzMSBpcyBjbG9zZSB0byB0aGF0IG9mIHNlcmlh bCBwcm9jZXNzaW5nLgo+Pj4+Cj4+Pj4gVGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBqdXN0IGxp a2UgdGhlIGZvbGxvd2luZzoKPj4+PiAgICAgICAgICAqIFRoZSBiYXNpYyBpZGVhIGlzIHByb2R1 Y2VyIHByb2R1Y2luZyBwYWdlIGFuZCBjb25zdW1lciB3cml0aW5nIHBhZ2UuCj4+Pj4gICAgICAg ICAgKiBFYWNoIHByb2R1Y2VyIGhhdmUgYSBwYWdlX2ZsYWdfYnVmIGxpc3Qgd2hpY2ggaXMgdXNl ZCBmb3Igc3RvcmluZwo+Pj4+ICAgICAgICAgICAgcGFnZSdzIGRlc2NyaXB0aW9uLgo+Pj4+ICAg ICAgICAgICogVGhlIHNpemUgb2YgcGFnZV9mbGFnX2J1ZiBpcyBsaXR0bGUgc28gaXQgd29uJ3Qg dGFrZSB0b28gbXVjaCBtZW1vcnkuCj4+Pj4gICAgICAgICAgKiBBbmQgYWxsIHByb2R1Y2VycyB3 aWxsIHNoYXJlIGEgcGFnZV9kYXRhX2J1ZiBhcnJheSB3aGljaCBpcwo+Pj4+ICAgICAgICAgICAg dXNlZCBmb3Igc3RvcmluZyBwYWdlJ3MgY29tcHJlc3NlZCBkYXRhLgo+Pj4+ICAgICAgICAgICog VGhlIG1haW4gdGhyZWFkIGlzIHRoZSBjb25zdW1lci4gSXQgd2lsbCBmaW5kIHRoZSBuZXh0IHBm biBhbmQgd3JpdGUKPj4+PiAgICAgICAgICAgIGl0IGludG8gZmlsZS4KPj4+PiAgICAgICAgICAq IFRoZSBuZXh0IHBmbiBpcyBzbWFsbGVzdCBwZm4gaW4gYWxsIHBhZ2VfZmxhZ19idWYuCj4+Pj4K Pj4+PiBTaWduZWQtb2ZmLWJ5OiBNaW5vcnUgVXN1aSA8bWluLXVzdWlAdGkuanAubmVjLmNvbT4K Pj4+PiBTaWduZWQtb2ZmLWJ5OiBaaG91IFdlbmppYW4gPHpob3V3ai1mbnN0QGNuLmZ1aml0c3Uu Y29tPgo+Pj4+IC0tLQo+Pj4+ICAgbWFrZWR1bXBmaWxlLmMgfCAyOTggKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4gICBtYWtlZHVt cGZpbGUuaCB8ICAzNSArKysrLS0tCj4+Pj4gICAyIGZpbGVzIGNoYW5nZWQsIDIwMiBpbnNlcnRp b25zKCspLCAxMzEgZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvbWFrZWR1bXBm aWxlLmMgYi9tYWtlZHVtcGZpbGUuYwo+Pj4+IGluZGV4IGZhMGI3NzkuLjJiMDg2NGEgMTAwNjQ0 Cj4+Pj4gLS0tIGEvbWFrZWR1bXBmaWxlLmMKPj4+PiArKysgYi9tYWtlZHVtcGZpbGUuYwo+Pj4+ IEBAIC0zNDgzLDcgKzM0ODMsOCBAQCBpbml0aWFsX2Zvcl9wYXJhbGxlbCgpCj4+Pj4gICAJdW5z aWduZWQgbG9uZyBwYWdlX2RhdGFfYnVmX3NpemU7Cj4+Pj4gICAJdW5zaWduZWQgbG9uZyBsaW1p dF9zaXplOwo+Pj4+ICAgCWludCBwYWdlX2RhdGFfbnVtOwo+Pj4+IC0JaW50IGk7Cj4+Pj4gKwlz dHJ1Y3QgcGFnZV9mbGFnICpjdXJyZW50Owo+Pj4+ICsJaW50IGksIGo7Cj4+Pj4KPj4+PiAgIAls ZW5fYnVmX291dCA9IGNhbGN1bGF0ZV9sZW5fYnVmX291dChpbmZvLT5wYWdlX3NpemUpOwo+Pj4+ Cj4+Pj4gQEAgLTM1NjAsMTAgKzM1NjEsMTYgQEAgaW5pdGlhbF9mb3JfcGFyYWxsZWwoKQo+Pj4+ Cj4+Pj4gICAJbGltaXRfc2l6ZSA9IChnZXRfZnJlZV9tZW1vcnlfc2l6ZSgpCj4+Pj4gICAJCSAg ICAgIC0gTUFQX1JFR0lPTiAqIGluZm8tPm51bV90aHJlYWRzKSAqIDAuNjsKPj4+PiArCWlmIChs aW1pdF9zaXplIDwgMCkgewo+Pj4+ICsJCU1TRygiRnJlZSBtZW1vcnkgaXMgbm90IGVub3VnaCBm b3IgbXVsdGktdGhyZWFkc1xuIik7Cj4+Pj4gKwkJcmV0dXJuIEZBTFNFOwo+Pj4+ICsJfQo+Pj4+ Cj4+Pj4gICAJcGFnZV9kYXRhX251bSA9IGxpbWl0X3NpemUgLyBwYWdlX2RhdGFfYnVmX3NpemU7 Cj4+Pj4gKwlpbmZvLT5udW1fYnVmZmVycyA9IDMgKiBpbmZvLT5udW1fdGhyZWFkczsKPj4+Pgo+ Pj4+IC0JaW5mby0+bnVtX2J1ZmZlcnMgPSBNSU4oTlVNX0JVRkZFUlMsIHBhZ2VfZGF0YV9udW0p Owo+Pj4+ICsJaW5mby0+bnVtX2J1ZmZlcnMgPSBNQVgoaW5mby0+bnVtX2J1ZmZlcnMsIE5VTV9C VUZGRVJTKTsKPj4+PiArCWluZm8tPm51bV9idWZmZXJzID0gTUlOKGluZm8tPm51bV9idWZmZXJz LCBwYWdlX2RhdGFfbnVtKTsKPj4+Pgo+Pj4+ICAgCURFQlVHX01TRygiTnVtYmVyIG9mIHN0cnVj dCBwYWdlX2RhdGEgZm9yIHByb2R1Y2UvY29uc3VtZTogJWRcbiIsCj4+Pj4gICAJCQlpbmZvLT5u dW1fYnVmZmVycyk7Cj4+Pj4gQEAgLTM1ODgsNiArMzU5NSwzNiBAQCBpbml0aWFsX2Zvcl9wYXJh bGxlbCgpCj4+Pj4gICAJfQo+Pj4+Cj4+Pj4gICAJLyoKPj4+PiArCSAqIGluaXRpYWwgcGFnZV9m bGFnIGZvciBlYWNoIHRocmVhZAo+Pj4+ICsJICovCj4+Pj4gKwlpZiAoKGluZm8tPnBhZ2VfZmxh Z19idWYgPSBtYWxsb2Moc2l6ZW9mKHZvaWQgKikgKiBpbmZvLT5udW1fdGhyZWFkcykpCj4+Pj4g KwkgICAgPT0gTlVMTCkgewo+Pj4+ICsJCU1TRygiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBw YWdlX2ZsYWdfYnVmLiAlc1xuIiwKPj4+PiArCQkJCXN0cmVycm9yKGVycm5vKSk7Cj4+Pj4gKwkJ cmV0dXJuIEZBTFNFOwo+Pj4+ICsJfQo+Pj4+ICsJbWVtc2V0KGluZm8tPnBhZ2VfZmxhZ19idWYs IDAsIHNpemVvZih2b2lkICopICogaW5mby0+bnVtX3RocmVhZHMpOwo+Pj4+ICsKPj4+PiArCWZv ciAoaSA9IDA7IGkgPCBpbmZvLT5udW1fdGhyZWFkczsgaSsrKSB7Cj4+Pj4gKwkJaWYgKChpbmZv LT5wYWdlX2ZsYWdfYnVmW2ldID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgcGFnZV9mbGFnKSkp ID09IE5VTEwpIHsKPj4+PiArCQkJTVNHKCJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHBhZ2Vf ZmxhZy4gJXNcbiIsCj4+Pj4gKwkJCQlzdHJlcnJvcihlcnJubykpOwo+Pj4+ICsJCQlyZXR1cm4g RkFMU0U7Cj4+Pj4gKwkJfQo+Pj4+ICsJCWN1cnJlbnQgPSBpbmZvLT5wYWdlX2ZsYWdfYnVmW2ld Owo+Pj4+ICsKPj4+PiArCQlmb3IgKGogPSAxOyBqIDwgTlVNX0JVRkZFUlM7IGorKykgewo+Pj4+ ICsJCQlpZiAoKGN1cnJlbnQtPm5leHQgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBwYWdlX2Zs YWcpKSkgPT0gTlVMTCkgewo+Pj4+ICsJCQkJTVNHKCJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9y IHBhZ2VfZmxhZy4gJXNcbiIsCj4+Pj4gKwkJCQkJc3RyZXJyb3IoZXJybm8pKTsKPj4+PiArCQkJ CXJldHVybiBGQUxTRTsKPj4+PiArCQkJfQo+Pj4+ICsJCQljdXJyZW50ID0gY3VycmVudC0+bmV4 dDsKPj4+PiArCQl9Cj4+Pj4gKwkJY3VycmVudC0+bmV4dCA9IGluZm8tPnBhZ2VfZmxhZ19idWZb aV07Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJLyoKPj4+PiAgIAkgKiBpbml0aWFsIGZkX21lbW9y eSBmb3IgdGhyZWFkcwo+Pj4+ICAgCSAqLwo+Pj4+ICAgCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5u dW1fdGhyZWFkczsgaSsrKSB7Cj4+Pj4gQEAgLTM2MTIsNyArMzY0OSw4IEBAIGluaXRpYWxfZm9y X3BhcmFsbGVsKCkKPj4+PiAgIHZvaWQKPj4+PiAgIGZyZWVfZm9yX3BhcmFsbGVsKCkKPj4+PiAg IHsKPj4+PiAtCWludCBpOwo+Pj4+ICsJaW50IGksIGo7Cj4+Pj4gKwlzdHJ1Y3QgcGFnZV9mbGFn ICpjdXJyZW50Owo+Pj4+Cj4+Pj4gICAJaWYgKGluZm8tPnRocmVhZHMgIT0gTlVMTCkgewo+Pj4+ ICAgCQlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnVtX3RocmVhZHM7IGkrKykgewo+Pj4+IEBAIC0z NjU1LDYgKzM2OTMsMTkgQEAgZnJlZV9mb3JfcGFyYWxsZWwoKQo+Pj4+ICAgCQlmcmVlKGluZm8t PnBhZ2VfZGF0YV9idWYpOwo+Pj4+ICAgCX0KPj4+Pgo+Pj4+ICsJaWYgKGluZm8tPnBhZ2VfZmxh Z19idWYgIT0gTlVMTCkgewo+Pj4+ICsJCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5udW1fdGhyZWFk czsgaSsrKSB7Cj4+Pj4gKwkJCWZvciAoaiA9IDA7IGogPCBOVU1fQlVGRkVSUzsgaisrKSB7Cj4+ Pj4gKwkJCQlpZiAoaW5mby0+cGFnZV9mbGFnX2J1ZltpXSAhPSBOVUxMKSB7Cj4+Pj4gKwkJCQkJ Y3VycmVudCA9IGluZm8tPnBhZ2VfZmxhZ19idWZbaV07Cj4+Pj4gKwkJCQkJaW5mby0+cGFnZV9m bGFnX2J1ZltpXSA9IGN1cnJlbnQtPm5leHQ7Cj4+Pj4gKwkJCQkJZnJlZShjdXJyZW50KTsKPj4+ PiArCQkJCX0KPj4+PiArCQkJfQo+Pj4+ICsJCX0KPj4+PiArCQlmcmVlKGluZm8tPnBhZ2VfZmxh Z19idWYpOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiAgIAlpZiAoaW5mby0+cGFyYWxsZWxfaW5mbyA9 PSBOVUxMKQo+Pj4+ICAgCQlyZXR1cm47Cj4+Pj4KPj4+PiBAQCAtNzA3NSwxMSArNzEyNiwxMSBA QCB2b2lkICoKPj4+PiAgIGtkdW1wX3RocmVhZF9mdW5jdGlvbl9jeWNsaWModm9pZCAqYXJnKSB7 Cj4+Pj4gICAJdm9pZCAqcmV0dmFsID0gUFRIUkVBRF9GQUlMOwo+Pj4+ICAgCXN0cnVjdCB0aHJl YWRfYXJncyAqa2R1bXBfdGhyZWFkX2FyZ3MgPSAoc3RydWN0IHRocmVhZF9hcmdzICopYXJnOwo+ Pj4+IC0Jc3RydWN0IHBhZ2VfZGF0YSAqcGFnZV9kYXRhX2J1ZiA9IGtkdW1wX3RocmVhZF9hcmdz LT5wYWdlX2RhdGFfYnVmOwo+Pj4+ICsJdm9sYXRpbGUgc3RydWN0IHBhZ2VfZGF0YSAqcGFnZV9k YXRhX2J1ZiA9IGtkdW1wX3RocmVhZF9hcmdzLT5wYWdlX2RhdGFfYnVmOwo+Pj4+ICsJdm9sYXRp bGUgc3RydWN0IHBhZ2VfZmxhZyAqcGFnZV9mbGFnX2J1ZiA9IGtkdW1wX3RocmVhZF9hcmdzLT5w YWdlX2ZsYWdfYnVmOwo+Pj4+ICAgCXN0cnVjdCBjeWNsZSAqY3ljbGUgPSBrZHVtcF90aHJlYWRf YXJncy0+Y3ljbGU7Cj4+Pj4gLQlpbnQgcGFnZV9kYXRhX251bSA9IGtkdW1wX3RocmVhZF9hcmdz LT5wYWdlX2RhdGFfbnVtOwo+Pj4+IC0JbWRmX3Bmbl90IHBmbjsKPj4+PiAtCWludCBpbmRleDsK Pj4+PiArCW1kZl9wZm5fdCBwZm4gPSBjeWNsZS0+c3RhcnRfcGZuOwo+Pj4+ICsJaW50IGluZGV4 ID0ga2R1bXBfdGhyZWFkX2FyZ3MtPnRocmVhZF9udW07Cj4+Pj4gICAJaW50IGJ1Zl9yZWFkeTsK Pj4+PiAgIAlpbnQgZHVtcGFibGU7Cj4+Pj4gICAJaW50IGZkX21lbW9yeSA9IDA7Cj4+Pj4gQEAg LTcxMjUsNDcgKzcxNzYsNDggQEAga2R1bXBfdGhyZWFkX2Z1bmN0aW9uX2N5Y2xpYyh2b2lkICph cmcpIHsKPj4+PiAgIAkJCQkJCWtkdW1wX3RocmVhZF9hcmdzLT50aHJlYWRfbnVtKTsKPj4+PiAg IAl9Cj4+Pj4KPj4+PiAtCXdoaWxlICgxKSB7Cj4+Pj4gLQkJLyogZ2V0IG5leHQgcGZuICovCj4+ Pj4gLQkJcHRocmVhZF9tdXRleF9sb2NrKCZpbmZvLT5jdXJyZW50X3Bmbl9tdXRleCk7Cj4+Pj4g LQkJcGZuID0gaW5mby0+Y3VycmVudF9wZm47Cj4+Pj4gLQkJaW5mby0+Y3VycmVudF9wZm4rKzsK Pj4+PiAtCQlwdGhyZWFkX211dGV4X3VubG9jaygmaW5mby0+Y3VycmVudF9wZm5fbXV0ZXgpOwo+ Pj4+IC0KPj4+PiAtCQlpZiAocGZuID49IGtkdW1wX3RocmVhZF9hcmdzLT5lbmRfcGZuKQo+Pj4+ IC0JCQlicmVhazsKPj4+PiAtCj4+Pj4gLQkJaW5kZXggPSAtMTsKPj4+PiArCS8qCj4+Pj4gKwkg KiBmaWx0ZXJlZCBwYWdlIHdvbid0IHRha2UgYW55dGhpbmcKPj4+PiArCSAqIHVuZmlsdGVyZWQg emVybyBwYWdlIHdpbGwgb25seSB0YWtlIGEgcGFnZV9mbGFnX2J1Zgo+Pj4+ICsJICogdW5maWx0 ZXJlZCBub24temVybyBwYWdlIHdpbGwgdGFrZSBhIHBhZ2VfZmxhZ19idWYgYW5kIGEgcGFnZV9k YXRhX2J1Zgo+Pj4+ICsJICovCj4+Pj4gKwl3aGlsZSAocGZuIDwgY3ljbGUtPmVuZF9wZm4pIHsK Pj4+PiAgIAkJYnVmX3JlYWR5ID0gRkFMU0U7Cj4+Pj4KPj4+PiArCQlwdGhyZWFkX211dGV4X2xv Y2soJmluZm8tPnBhZ2VfZGF0YV9tdXRleCk7Cj4+Pj4gKwkJd2hpbGUgKHBhZ2VfZGF0YV9idWZb aW5kZXhdLnVzZWQgIT0gRkFMU0UpIHsKPj4+PiArCQkJaW5kZXggPSAoaW5kZXggKyAxKSAlIGlu Zm8tPm51bV9idWZmZXJzOwo+Pj4+ICsJCX0KPj4+PiArCQlwYWdlX2RhdGFfYnVmW2luZGV4XS51 c2VkID0gVFJVRTsKPj4+PiArCQlwdGhyZWFkX211dGV4X3VubG9jaygmaW5mby0+cGFnZV9kYXRh X211dGV4KTsKPj4+PiArCj4+Pj4gICAJCXdoaWxlIChidWZfcmVhZHkgPT0gRkFMU0UpIHsKPj4+ PiAgIAkJCXB0aHJlYWRfdGVzdGNhbmNlbCgpOwo+Pj4+IC0KPj4+PiAtCQkJaW5kZXggPSBwZm4g JSBwYWdlX2RhdGFfbnVtOwo+Pj4+IC0KPj4+PiAtCQkJaWYgKHBmbiAtIGluZm8tPmNvbnN1bWVk X3BmbiA+IGluZm8tPm51bV9idWZmZXJzKQo+Pj4+ICsJCQlpZiAocGFnZV9mbGFnX2J1Zi0+cmVh ZHkgPT0gRkxBR19SRUFEWSkKPj4+PiAgIAkJCQljb250aW51ZTsKPj4+Pgo+Pj4+IC0JCQlpZiAo cGFnZV9kYXRhX2J1ZltpbmRleF0ucmVhZHkgIT0gMCkKPj4+PiAtCQkJCWNvbnRpbnVlOwo+Pj4+ IC0KPj4+PiAtCQkJcHRocmVhZF9tdXRleF9sb2NrKCZwYWdlX2RhdGFfYnVmW2luZGV4XS5tdXRl eCk7Cj4+Pj4gLQo+Pj4+IC0JCQlpZiAocGFnZV9kYXRhX2J1ZltpbmRleF0ucmVhZHkgIT0gMCkK Pj4+PiAtCQkJCWdvdG8gdW5sb2NrOwo+Pj4+IC0KPj4+PiAtCQkJYnVmX3JlYWR5ID0gVFJVRTsK Pj4+PiArCQkJLyogZ2V0IG5leHQgZHVtcGFibGUgcGZuICovCj4+Pj4gKwkJCXB0aHJlYWRfbXV0 ZXhfbG9jaygmaW5mby0+Y3VycmVudF9wZm5fbXV0ZXgpOwo+Pj4+ICsJCQlmb3IgKHBmbiA9IGlu Zm8tPmN1cnJlbnRfcGZuOyBwZm4gPCBjeWNsZS0+ZW5kX3BmbjsgcGZuKyspIHsKPj4+PiArCQkJ CWR1bXBhYmxlID0gaXNfZHVtcGFibGUoCj4+Pj4gKwkJCQkJaW5mby0+ZmRfYml0bWFwID8gJmJp dG1hcF9wYXJhbGxlbCA6IGluZm8tPmJpdG1hcDIsCj4+Pj4gKwkJCQkJcGZuLAo+Pj4+ICsJCQkJ CWN5Y2xlKTsKPj4+PiArCQkJCWlmIChkdW1wYWJsZSkKPj4+PiArCQkJCQlicmVhazsKPj4+PiAr CQkJfQo+Pj4+ICsJCQlpbmZvLT5jdXJyZW50X3BmbiA9IHBmbiArIDE7Cj4+Pj4KPj4+PiAtCQkJ cGFnZV9kYXRhX2J1ZltpbmRleF0ucGZuID0gcGZuOwo+Pj4+IC0JCQlwYWdlX2RhdGFfYnVmW2lu ZGV4XS5yZWFkeSA9IDE7Cj4+Pj4gKwkJCXBhZ2VfZmxhZ19idWYtPnBmbiA9IHBmbjsKPj4+PiAr CQkJcGFnZV9mbGFnX2J1Zi0+cmVhZHkgPSBGTEFHX0ZJTExJTkc7Cj4+Pj4gKwkJCXB0aHJlYWRf bXV0ZXhfdW5sb2NrKCZpbmZvLT5jdXJyZW50X3Bmbl9tdXRleCk7Cj4+Pj4gKwkJCXNlbV9wb3N0 KCZpbmZvLT5wYWdlX2ZsYWdfYnVmX3NlbSk7Cj4+Pj4KPj4+PiAtCQkJZHVtcGFibGUgPSBpc19k dW1wYWJsZSgKPj4+PiAtCQkJCWluZm8tPmZkX2JpdG1hcCA/ICZiaXRtYXBfcGFyYWxsZWwgOiBp bmZvLT5iaXRtYXAyLAo+Pj4+IC0JCQkJcGZuLAo+Pj4+IC0JCQkJY3ljbGUpOwo+Pj4+IC0JCQlw YWdlX2RhdGFfYnVmW2luZGV4XS5kdW1wYWJsZSA9IGR1bXBhYmxlOwo+Pj4+IC0JCQlpZiAoIWR1 bXBhYmxlKQo+Pj4+IC0JCQkJZ290byB1bmxvY2s7Cj4+Pj4gKwkJCWlmIChwZm4gPj0gY3ljbGUt PmVuZF9wZm4pIHsKPj4+PiArCQkJCWluZm8tPmN1cnJlbnRfcGZuID0gY3ljbGUtPmVuZF9wZm47 Cj4+Pj4gKwkJCQlwYWdlX2RhdGFfYnVmW2luZGV4XS51c2VkID0gRkFMU0U7Cj4+Pj4gKwkJCQli cmVhazsKPj4+PiArCQkJfQo+Pj4+Cj4+Pj4gICAJCQlpZiAoIXJlYWRfcGZuX3BhcmFsbGVsKGZk X21lbW9yeSwgcGZuLCBidWYsCj4+Pj4gICAJCQkJCSAgICAgICAmYml0bWFwX21lbW9yeV9wYXJh bGxlbCwKPj4+PiBAQCAtNzE3OCwxMSArNzIzMCwxMSBAQCBrZHVtcF90aHJlYWRfZnVuY3Rpb25f Y3ljbGljKHZvaWQgKmFyZykgewo+Pj4+Cj4+Pj4gICAJCQlpZiAoKGluZm8tPmR1bXBfbGV2ZWwg JiBETF9FWENMVURFX1pFUk8pCj4+Pj4gICAJCQkgICAgJiYgaXNfemVyb19wYWdlKGJ1ZiwgaW5m by0+cGFnZV9zaXplKSkgewo+Pj4+IC0JCQkJcGFnZV9kYXRhX2J1ZltpbmRleF0uemVybyA9IFRS VUU7Cj4+Pj4gLQkJCQlnb3RvIHVubG9jazsKPj4+PiArCQkJCXBhZ2VfZmxhZ19idWYtPnplcm8g PSBUUlVFOwo+Pj4+ICsJCQkJZ290byBuZXh0Owo+Pj4+ICAgCQkJfQo+Pj4+Cj4+Pj4gLQkJCXBh Z2VfZGF0YV9idWZbaW5kZXhdLnplcm8gPSBGQUxTRTsKPj4+PiArCQkJcGFnZV9mbGFnX2J1Zi0+ emVybyA9IEZBTFNFOwo+Pj4+Cj4+Pj4gICAJCQkvKgo+Pj4+ICAgCQkJICogQ29tcHJlc3MgdGhl IHBhZ2UgZGF0YS4KPj4+PiBAQCAtNzIxMCw2ICs3MjYyLDcgQEAga2R1bXBfdGhyZWFkX2Z1bmN0 aW9uX2N5Y2xpYyh2b2lkICphcmcpIHsKPj4+PiAgIAkJCQlwYWdlX2RhdGFfYnVmW2luZGV4XS5m bGFncyA9Cj4+Pj4gICAJCQkJCQkJRFVNUF9ESF9DT01QUkVTU0VEX0xaTzsKPj4+PiAgIAkJCQlw YWdlX2RhdGFfYnVmW2luZGV4XS5zaXplICA9IHNpemVfb3V0Owo+Pj4+ICsKPj4+PiAgIAkJCQlt ZW1jcHkocGFnZV9kYXRhX2J1ZltpbmRleF0uYnVmLCBidWZfb3V0LCBzaXplX291dCk7Cj4+Pj4g ICAjZW5kaWYKPj4+PiAgICNpZmRlZiBVU0VTTkFQUFkKPj4+PiBAQCAtNzIzMiwxMiArNzI4NSwx NCBAQCBrZHVtcF90aHJlYWRfZnVuY3Rpb25fY3ljbGljKHZvaWQgKmFyZykgewo+Pj4+ICAgCQkJ CXBhZ2VfZGF0YV9idWZbaW5kZXhdLnNpemUgID0gaW5mby0+cGFnZV9zaXplOwo+Pj4+ICAgCQkJ CW1lbWNweShwYWdlX2RhdGFfYnVmW2luZGV4XS5idWYsIGJ1ZiwgaW5mby0+cGFnZV9zaXplKTsK Pj4+PiAgIAkJCX0KPj4+PiAtdW5sb2NrOgo+Pj4+IC0JCQlwdGhyZWFkX211dGV4X3VubG9jaygm cGFnZV9kYXRhX2J1ZltpbmRleF0ubXV0ZXgpOwo+Pj4+ICsJCQlwYWdlX2ZsYWdfYnVmLT5pbmRl eCA9IGluZGV4Owo+Pj4+ICsJCQlidWZfcmVhZHkgPSBUUlVFOwo+Pj4+ICtuZXh0Ogo+Pj4+ICsJ CQlwYWdlX2ZsYWdfYnVmLT5yZWFkeSA9IEZMQUdfUkVBRFk7Cj4+Pj4gKwkJCXBhZ2VfZmxhZ19i dWYgPSBwYWdlX2ZsYWdfYnVmLT5uZXh0Owo+Pj4+Cj4+Pj4gICAJCX0KPj4+PiAgIAl9Cj4+Pj4g LQo+Pj4+ICAgCXJldHZhbCA9IE5VTEw7Cj4+Pj4KPj4+PiAgIGZhaWw6Cj4+Pj4gQEAgLTcyNjUs MTQgKzczMjAsMTUgQEAgd3JpdGVfa2R1bXBfcGFnZXNfcGFyYWxsZWxfY3ljbGljKHN0cnVjdCBj YWNoZV9kYXRhICpjZF9oZWFkZXIsCj4+Pj4gICAJc3RydWN0IHBhZ2VfZGVzYyBwZDsKPj4+PiAg IAlzdHJ1Y3QgdGltZXZhbCB0dl9zdGFydDsKPj4+PiAgIAlzdHJ1Y3QgdGltZXZhbCBsYXN0LCBu ZXc7Cj4+Pj4gLQl1bnNpZ25lZCBsb25nIGxvbmcgY29uc3VtaW5nX3BmbjsKPj4+PiAgIAlwdGhy ZWFkX3QgKip0aHJlYWRzID0gTlVMTDsKPj4+PiAgIAlzdHJ1Y3QgdGhyZWFkX2FyZ3MgKmtkdW1w X3RocmVhZF9hcmdzID0gTlVMTDsKPj4+PiAgIAl2b2lkICp0aHJlYWRfcmVzdWx0Owo+Pj4+IC0J aW50IHBhZ2VfZGF0YV9udW07Cj4+Pj4gKwlpbnQgcGFnZV9idWZfbnVtOwo+Pj4+ICAgCXN0cnVj dCBwYWdlX2RhdGEgKnBhZ2VfZGF0YV9idWYgPSBOVUxMOwo+Pj4+ICAgCWludCBpOwo+Pj4+ICAg CWludCBpbmRleDsKPj4+PiArCWludCBlbmRfY291bnQsIGNvbnN1bWluZywgY2hlY2tfY291bnQ7 Cj4+Pj4gKwltZGZfcGZuX3QgY3VycmVudF9wZm4sIHRlbXBfcGZuOwo+Pj4+Cj4+Pj4gICAJaWYg KGluZm8tPmZsYWdfZWxmX2R1bXBmaWxlKQo+Pj4+ICAgCQlyZXR1cm4gRkFMU0U7Cj4+Pj4gQEAg LTcyODQsMTMgKzczNDAsNiBAQCB3cml0ZV9rZHVtcF9wYWdlc19wYXJhbGxlbF9jeWNsaWMoc3Ry dWN0IGNhY2hlX2RhdGEgKmNkX2hlYWRlciwKPj4+PiAgIAkJZ290byBvdXQ7Cj4+Pj4gICAJfQo+ Pj4+Cj4+Pj4gLQlyZXMgPSBwdGhyZWFkX211dGV4X2luaXQoJmluZm8tPmNvbnN1bWVkX3Bmbl9t dXRleCwgTlVMTCk7Cj4+Pj4gLQlpZiAocmVzICE9IDApIHsKPj4+PiAtCQlFUlJNU0coIkNhbid0 IGluaXRpYWxpemUgY29uc3VtZWRfcGZuX211dGV4LiAlc1xuIiwKPj4+PiAtCQkJCXN0cmVycm9y KHJlcykpOwo+Pj4+IC0JCWdvdG8gb3V0Owo+Pj4+IC0JfQo+Pj4+IC0KPj4+PiAgIAlyZXMgPSBw dGhyZWFkX211dGV4X2luaXQoJmluZm8tPmZpbHRlcl9tdXRleCwgTlVMTCk7Cj4+Pj4gICAJaWYg KHJlcyAhPSAwKSB7Cj4+Pj4gICAJCUVSUk1TRygiQ2FuJ3QgaW5pdGlhbGl6ZSBmaWx0ZXJfbXV0 ZXguICVzXG4iLCBzdHJlcnJvcihyZXMpKTsKPj4+PiBAQCAtNzMxNCwzNiArNzM2MywyMyBAQCB3 cml0ZV9rZHVtcF9wYWdlc19wYXJhbGxlbF9jeWNsaWMoc3RydWN0IGNhY2hlX2RhdGEgKmNkX2hl YWRlciwKPj4+PiAgIAllbmRfcGZuICAgPSBjeWNsZS0+ZW5kX3BmbjsKPj4+Pgo+Pj4+ICAgCWlu Zm8tPmN1cnJlbnRfcGZuID0gc3RhcnRfcGZuOwo+Pj4+IC0JaW5mby0+Y29uc3VtZWRfcGZuID0g c3RhcnRfcGZuIC0gMTsKPj4+Pgo+Pj4+ICAgCXRocmVhZHMgPSBpbmZvLT50aHJlYWRzOwo+Pj4+ ICAgCWtkdW1wX3RocmVhZF9hcmdzID0gaW5mby0+a2R1bXBfdGhyZWFkX2FyZ3M7Cj4+Pj4KPj4+ PiAtCXBhZ2VfZGF0YV9udW0gPSBpbmZvLT5udW1fYnVmZmVyczsKPj4+PiArCXBhZ2VfYnVmX251 bSA9IGluZm8tPm51bV9idWZmZXJzOwo+Pj4+ICAgCXBhZ2VfZGF0YV9idWYgPSBpbmZvLT5wYWdl X2RhdGFfYnVmOwo+Pj4+ICsJcHRocmVhZF9tdXRleF9pbml0KCZpbmZvLT5wYWdlX2RhdGFfbXV0 ZXgsIE5VTEwpOwo+Pj4+ICsJc2VtX2luaXQoJmluZm8tPnBhZ2VfZmxhZ19idWZfc2VtLCAwLCAw KTsKPj4+Pgo+Pj4+IC0JZm9yIChpID0gMDsgaSA8IHBhZ2VfZGF0YV9udW07IGkrKykgewo+Pj4+ IC0JCS8qCj4+Pj4gLQkJICogcHJvZHVjZXIgd2lsbCB1c2UgcGZuIGluIHBhZ2VfZGF0YV9idWYg dG8gZGVjaWRlIHRoZQo+Pj4+IC0JCSAqIGNvbnN1bWVkIHBmbgo+Pj4+IC0JCSAqLwo+Pj4+IC0J CXBhZ2VfZGF0YV9idWZbaV0ucGZuID0gc3RhcnRfcGZuIC0gMTsKPj4+PiAtCQlwYWdlX2RhdGFf YnVmW2ldLnJlYWR5ID0gMDsKPj4+PiAtCQlyZXMgPSBwdGhyZWFkX211dGV4X2luaXQoJnBhZ2Vf ZGF0YV9idWZbaV0ubXV0ZXgsIE5VTEwpOwo+Pj4+IC0JCWlmIChyZXMgIT0gMCkgewo+Pj4+IC0J CQlFUlJNU0coIkNhbid0IGluaXRpYWxpemUgbXV0ZXggb2YgcGFnZV9kYXRhX2J1Zi4gJXNcbiIs Cj4+Pj4gLQkJCQkJc3RyZXJyb3IocmVzKSk7Cj4+Pj4gLQkJCWdvdG8gb3V0Owo+Pj4+IC0JCX0K Pj4+PiAtCX0KPj4+PiArCWZvciAoaSA9IDA7IGkgPCBwYWdlX2J1Zl9udW07IGkrKykKPj4+PiAr CQlwYWdlX2RhdGFfYnVmW2ldLnVzZWQgPSBGQUxTRTsKPj4+Pgo+Pj4+ICAgCWZvciAoaSA9IDA7 IGkgPCBpbmZvLT5udW1fdGhyZWFkczsgaSsrKSB7Cj4+Pj4gICAJCWtkdW1wX3RocmVhZF9hcmdz W2ldLnRocmVhZF9udW0gPSBpOwo+Pj4+ICAgCQlrZHVtcF90aHJlYWRfYXJnc1tpXS5sZW5fYnVm X291dCA9IGxlbl9idWZfb3V0Owo+Pj4+IC0JCWtkdW1wX3RocmVhZF9hcmdzW2ldLnN0YXJ0X3Bm biA9IHN0YXJ0X3BmbjsKPj4+PiAtCQlrZHVtcF90aHJlYWRfYXJnc1tpXS5lbmRfcGZuID0gZW5k X3BmbjsKPj4+PiAtCQlrZHVtcF90aHJlYWRfYXJnc1tpXS5wYWdlX2RhdGFfbnVtID0gcGFnZV9k YXRhX251bTsKPj4+PiAgIAkJa2R1bXBfdGhyZWFkX2FyZ3NbaV0ucGFnZV9kYXRhX2J1ZiA9IHBh Z2VfZGF0YV9idWY7Cj4+Pj4gKwkJa2R1bXBfdGhyZWFkX2FyZ3NbaV0ucGFnZV9mbGFnX2J1ZiA9 IGluZm8tPnBhZ2VfZmxhZ19idWZbaV07Cj4+Pj4gICAJCWtkdW1wX3RocmVhZF9hcmdzW2ldLmN5 Y2xlID0gY3ljbGU7Cj4+Pj4KPj4+PiAgIAkJcmVzID0gcHRocmVhZF9jcmVhdGUodGhyZWFkc1tp XSwgTlVMTCwKPj4+PiBAQCAtNzM1Niw1NSArNzM5Miw4OCBAQCB3cml0ZV9rZHVtcF9wYWdlc19w YXJhbGxlbF9jeWNsaWMoc3RydWN0IGNhY2hlX2RhdGEgKmNkX2hlYWRlciwKPj4+PiAgIAkJfQo+ Pj4+ICAgCX0KPj4+Pgo+Pj4+IC0JY29uc3VtaW5nX3BmbiA9IHN0YXJ0X3BmbjsKPj4+PiAtCWlu ZGV4ID0gLTE7Cj4+Pj4gKwllbmRfY291bnQgPSAwOwo+Pj4+ICsJd2hpbGUgKDEpIHsKPj4+PiAr CQljb25zdW1pbmcgPSAwOwo+Pj4+ICsJCWNoZWNrX2NvdW50ID0gMDsKPj4+Pgo+Pj4+IC0JZ2V0 dGltZW9mZGF5KCZsYXN0LCBOVUxMKTsKPj4+PiArCQkvKgo+Pj4+ICsJCSAqIFRoZSBiYXNpYyBp ZGVhIGlzIHByb2R1Y2VyIHByb2R1Y2luZyBwYWdlIGFuZCBjb25zdW1lciB3cml0aW5nIHBhZ2Uu Cj4+Pj4gKwkJICogRWFjaCBwcm9kdWNlciBoYXZlIGEgcGFnZV9mbGFnX2J1ZiBsaXN0IHdoaWNo IGlzIHVzZWQgZm9yIHN0b3JpbmcgcGFnZSdzIGRlc2NyaXB0aW9uLgo+Pj4+ICsJCSAqIFRoZSBz aXplIG9mIHBhZ2VfZmxhZ19idWYgaXMgbGl0dGxlIHNvIGl0IHdvbid0IHRha2UgdG9vIG11Y2gg bWVtb3J5Lgo+Pj4+ICsJCSAqIEFuZCBhbGwgcHJvZHVjZXJzIHdpbGwgc2hhcmUgYSBwYWdlX2Rh dGFfYnVmIGFycmF5IHdoaWNoIGlzIHVzZWQgZm9yIHN0b3JpbmcgcGFnZSdzIGNvbXByZXNzZWQg ZGF0YS4KPj4+PiArCQkgKiBUaGUgbWFpbiB0aHJlYWQgaXMgdGhlIGNvbnN1bWVyLiBJdCB3aWxs IGZpbmQgdGhlIG5leHQgcGZuIGFuZCB3cml0ZSBpdCBpbnRvIGZpbGUuCj4+Pj4gKwkJICogVGhl IG5leHQgcGZuIGlzIHNtYWxsZXN0IHBmbiBpbiBhbGwgcGFnZV9mbGFnX2J1Zi4KPj4+PiArCQkg Ki8KPj4+PiArCQlzZW1fd2FpdCgmaW5mby0+cGFnZV9mbGFnX2J1Zl9zZW0pOwo+Pj4+ICsJCWdl dHRpbWVvZmRheSgmbGFzdCwgTlVMTCk7Cj4+Pj4gKwkJd2hpbGUgKDEpIHsKPj4+PiArCQkJY3Vy cmVudF9wZm4gPSBlbmRfcGZuOwo+Pj4+Cj4+Pj4gLQl3aGlsZSAoY29uc3VtaW5nX3BmbiA8IGVu ZF9wZm4pIHsKPj4+PiAtCQlpbmRleCA9IGNvbnN1bWluZ19wZm4gJSBwYWdlX2RhdGFfbnVtOwo+ Pj4+ICsJCQkvKgo+Pj4+ICsJCQkgKiBwYWdlX2ZsYWdfYnVmIGlzIGluIGNpcmN1bGFyIGxpbmtl ZCBsaXN0Lgo+Pj4+ICsJCQkgKiBUaGUgYXJyYXkgaW5mby0+cGFnZV9mbGFnX2J1ZltdIHJlY29y ZHMgdGhlIGN1cnJlbnQgcGFnZV9mbGFnX2J1ZiBpbiBlYWNoIHRocmVhZCdzCj4+Pj4gKwkJCSAq IHBhZ2VfZmxhZ19idWYgbGlzdC4KPj4+PiArCQkJICogY29uc3VtaW5nIGlzIHVzZWQgZm9yIHJl Y29yZGluZyBpbiB3aGljaCB0aHJlYWQgdGhlIHBmbiBpcyB0aGUgc21hbGxlc3QuCj4+Pj4gKwkJ CSAqIGN1cnJlbnRfcGZuIGlzIHVzZWQgZm9yIHJlY29yZGluZyB0aGUgdmFsdWUgb2YgcGZuIHdo ZW4gY2hlY2tpbmcgdGhlIHBmbi4KPj4+PiArCQkJICovCj4+Pj4gKwkJCWZvciAoaSA9IDA7IGkg PCBpbmZvLT5udW1fdGhyZWFkczsgaSsrKSB7Cj4+Pj4gKwkJCQlpZiAoaW5mby0+cGFnZV9mbGFn X2J1ZltpXS0+cmVhZHkgPT0gRkxBR19VTlVTRUQpCj4+Pj4gKwkJCQkJY29udGludWU7Cj4+Pj4g KwkJCQl0ZW1wX3BmbiA9IGluZm8tPnBhZ2VfZmxhZ19idWZbaV0tPnBmbjsKPj4+Pgo+Pj4+IC0J CWdldHRpbWVvZmRheSgmbmV3LCBOVUxMKTsKPj4+PiAtCQlpZiAobmV3LnR2X3NlYyAtIGxhc3Qu dHZfc2VjID4gV0FJVF9USU1FKSB7Cj4+Pj4gLQkJCUVSUk1TRygiQ2FuJ3QgZ2V0IGRhdGEgb2Yg cGZuICVsbHguXG4iLCBjb25zdW1pbmdfcGZuKTsKPj4+PiAtCQkJZ290byBvdXQ7Cj4+Pj4gLQkJ fQo+Pj4+ICsJCQkJLyoKPj4+PiArCQkJCSAqIGNvdW50IGhvdyBtYW55IHRocmVhZHMgaGF2ZSBy ZWFjaGVkIHRoZSBlbmQuCj4+Pj4gKwkJCQkgKi8KPj4+PiArCQkJCWlmICh0ZW1wX3BmbiA+PSBl bmRfcGZuKSB7Cj4+Pj4gKwkJCQkJaW5mby0+cGFnZV9mbGFnX2J1ZltpXS0+cmVhZHkgPSBGTEFH X1VOVVNFRDsKPj4+PiArCQkJCQllbmRfY291bnQrKzsKPj4+PiArCQkJCQljb250aW51ZTsKPj4+ PiArCQkJCX0KPj4+Pgo+Pj4+IC0JCS8qCj4+Pj4gLQkJICogY2hlY2sgcGZuIGZpcnN0IHdpdGhv dXQgbXV0ZXggbG9ja2VkIHRvIHJlZHVjZSB0aGUgdGltZQo+Pj4+IC0JCSAqIHRyeWluZyB0byBs b2NrIHRoZSBtdXRleAo+Pj4+IC0JCSAqLwo+Pj4+IC0JCWlmIChwYWdlX2RhdGFfYnVmW2luZGV4 XS5wZm4gIT0gY29uc3VtaW5nX3BmbikKPj4+PiAtCQkJY29udGludWU7Cj4+Pj4gKwkJCQlpZiAo Y3VycmVudF9wZm4gPCB0ZW1wX3BmbikKPj4+PiArCQkJCQljb250aW51ZTsKPj4+Pgo+Pj4+IC0J CWlmIChwdGhyZWFkX211dGV4X3RyeWxvY2soJnBhZ2VfZGF0YV9idWZbaW5kZXhdLm11dGV4KSAh PSAwKQo+Pj4+IC0JCQljb250aW51ZTsKPj4+PiArCQkJCWNoZWNrX2NvdW50Kys7Cj4+Pj4gKwkJ CQljb25zdW1pbmcgPSBpOwo+Pj4+ICsJCQkJY3VycmVudF9wZm4gPSB0ZW1wX3BmbjsKPj4+PiAr CQkJfQo+Pj4+Cj4+Pj4gLQkJLyogY2hlY2sgd2hldGhlciB0aGUgZm91bmQgb25lIGlzIHJlYWR5 IHRvIGJlIGNvbnN1bWVkICovCj4+Pj4gLQkJaWYgKHBhZ2VfZGF0YV9idWZbaW5kZXhdLnBmbiAh PSBjb25zdW1pbmdfcGZuIHx8Cj4+Pj4gLQkJICAgIHBhZ2VfZGF0YV9idWZbaW5kZXhdLnJlYWR5 ICE9IDEpIHsKPj4+PiAtCQkJZ290byB1bmxvY2s7Cj4+Pj4gKwkJCS8qCj4+Pj4gKwkJCSAqIElm IGFsbCB0aGUgdGhyZWFkcyBoYXZlIHJlYWNoZWQgdGhlIGVuZCwgd2Ugd2lsbCBmaW5pc2ggd3Jp dGluZy4KPj4+PiArCQkJICovCj4+Pj4gKwkJCWlmIChlbmRfY291bnQgPj0gaW5mby0+bnVtX3Ro cmVhZHMpCj4+Pj4gKwkJCQlnb3RvIGZpbmlzaDsKPj4+PiArCj4+Pj4gKwkJCS8qCj4+Pj4gKwkJ CSAqIElmIHRoZSBwYWdlX2ZsYWdfYnVmIGlzIG5vdCByZWFkeSwgdGhlIHBmbiByZWNvcmRlZCBt YXkgYmUgY2hhbmdlZC4KPj4+PiArCQkJICogU28gd2Ugc2hvdWxkIHJlY2hlY2suCj4+Pj4gKwkJ CSAqLwo+Pj4+ICsJCQlpZiAoaW5mby0+cGFnZV9mbGFnX2J1Zltjb25zdW1pbmddLT5yZWFkeSAh PSBGTEFHX1JFQURZKSB7Cj4+Pj4gKwkJCQlnZXR0aW1lb2ZkYXkoJm5ldywgTlVMTCk7Cj4+Pj4g KwkJCQlpZiAobmV3LnR2X3NlYyAtIGxhc3QudHZfc2VjID4gV0FJVF9USU1FKSB7Cj4+Pj4gKwkJ CQkJRVJSTVNHKCJDYW4ndCBnZXQgZGF0YSBvZiBwZm4uXG4iKTsKPj4+PiArCQkJCQlnb3RvIG91 dDsKPj4+PiArCQkJCX0KPj4+PiArCQkJCWNvbnRpbnVlOwo+Pj4+ICsJCQl9Cj4+Pj4gKwo+Pj4+ ICsJCQlpZiAoY3VycmVudF9wZm4gPT0gaW5mby0+cGFnZV9mbGFnX2J1Zltjb25zdW1pbmddLT5w Zm4pCj4+Pj4gKwkJCQlicmVhazsKPj4+PiAgIAkJfQo+Pj4+Cj4+Pj4gICAJCWlmICgobnVtX2R1 bXBlZCAlIHBlcikgPT0gMCkKPj4+PiAgIAkJCXByaW50X3Byb2dyZXNzKFBST0dSRVNTX0NPUFks IG51bV9kdW1wZWQsIGluZm8tPm51bV9kdW1wYWJsZSk7Cj4+Pj4KPj4+PiAtCQkvKiBuZXh0IHBm biBpcyBmb3VuZCwgcmVmcmVzaCBsYXN0IGhlcmUgKi8KPj4+PiAtCQlsYXN0ID0gbmV3Owo+Pj4+ IC0JCWNvbnN1bWluZ19wZm4rKzsKPj4+PiAtCQlpbmZvLT5jb25zdW1lZF9wZm4rKzsKPj4+PiAt CQlwYWdlX2RhdGFfYnVmW2luZGV4XS5yZWFkeSA9IDA7Cj4+Pj4gLQo+Pj4+IC0JCWlmIChwYWdl X2RhdGFfYnVmW2luZGV4XS5kdW1wYWJsZSA9PSBGQUxTRSkKPj4+PiAtCQkJZ290byB1bmxvY2s7 Cj4+Pj4gLQo+Pj4+ICAgCQludW1fZHVtcGVkKys7Cj4+Pj4KPj4+PiAtCQlpZiAocGFnZV9kYXRh X2J1ZltpbmRleF0uemVybyA9PSBUUlVFKSB7Cj4+Pj4gKwo+Pj4+ICsJCWlmIChpbmZvLT5wYWdl X2ZsYWdfYnVmW2NvbnN1bWluZ10tPnplcm8gPT0gVFJVRSkgewo+Pj4+ICAgCQkJaWYgKCF3cml0 ZV9jYWNoZShjZF9oZWFkZXIsIHBkX3plcm8sIHNpemVvZihwYWdlX2Rlc2NfdCkpKQo+Pj4+ICAg CQkJCWdvdG8gb3V0Owo+Pj4+ICAgCQkJcGZuX3plcm8rKzsKPj4+PiAgIAkJfSBlbHNlIHsKPj4+ PiArCQkJaW5kZXggPSBpbmZvLT5wYWdlX2ZsYWdfYnVmW2NvbnN1bWluZ10tPmluZGV4Owo+Pj4+ ICAgCQkJcGQuZmxhZ3MgICAgICA9IHBhZ2VfZGF0YV9idWZbaW5kZXhdLmZsYWdzOwo+Pj4+ICAg CQkJcGQuc2l6ZSAgICAgICA9IHBhZ2VfZGF0YV9idWZbaW5kZXhdLnNpemU7Cj4+Pj4gICAJCQlw ZC5wYWdlX2ZsYWdzID0gMDsKPj4+PiBAQCAtNzQyMCwxMiArNzQ4OSwxMiBAQCB3cml0ZV9rZHVt cF9wYWdlc19wYXJhbGxlbF9jeWNsaWMoc3RydWN0IGNhY2hlX2RhdGEgKmNkX2hlYWRlciwKPj4+ PiAgIAkJCSAqLwo+Pj4+ICAgCQkJaWYgKCF3cml0ZV9jYWNoZShjZF9wYWdlLCBwYWdlX2RhdGFf YnVmW2luZGV4XS5idWYsIHBkLnNpemUpKQo+Pj4+ICAgCQkJCWdvdG8gb3V0Owo+Pj4+IC0KPj4+ PiArCQkJcGFnZV9kYXRhX2J1ZltpbmRleF0udXNlZCA9IEZBTFNFOwo+Pj4+ICAgCQl9Cj4+Pj4g LXVubG9jazoKPj4+PiAtCQlwdGhyZWFkX211dGV4X3VubG9jaygmcGFnZV9kYXRhX2J1ZltpbmRl eF0ubXV0ZXgpOwo+Pj4+ICsJCWluZm8tPnBhZ2VfZmxhZ19idWZbY29uc3VtaW5nXS0+cmVhZHkg PSBGTEFHX1VOVVNFRDsKPj4+PiArCQlpbmZvLT5wYWdlX2ZsYWdfYnVmW2NvbnN1bWluZ10gPSBp bmZvLT5wYWdlX2ZsYWdfYnVmW2NvbnN1bWluZ10tPm5leHQ7Cj4+Pj4gICAJfQo+Pj4+IC0KPj4+ PiArZmluaXNoOgo+Pj4+ICAgCXJldCA9IFRSVUU7Cj4+Pj4gICAJLyoKPj4+PiAgIAkgKiBwcmlu dCBbMTAwICVdCj4+Pj4gQEAgLTc0NjMsMTUgKzc1MzIsOSBAQCBvdXQ6Cj4+Pj4gICAJCX0KPj4+ PiAgIAl9Cj4+Pj4KPj4+PiAtCWlmIChwYWdlX2RhdGFfYnVmICE9IE5VTEwpIHsKPj4+PiAtCQlm b3IgKGkgPSAwOyBpIDwgcGFnZV9kYXRhX251bTsgaSsrKSB7Cj4+Pj4gLQkJCXB0aHJlYWRfbXV0 ZXhfZGVzdHJveSgmcGFnZV9kYXRhX2J1ZltpXS5tdXRleCk7Cj4+Pj4gLQkJfQo+Pj4+IC0JfQo+ Pj4+IC0KPj4+PiArCXNlbV9kZXN0cm95KCZpbmZvLT5wYWdlX2ZsYWdfYnVmX3NlbSk7Cj4+Pj4g ICAJcHRocmVhZF9yd2xvY2tfZGVzdHJveSgmaW5mby0+dXNlbW1hcF9yd2xvY2spOwo+Pj4+ICAg CXB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmaW5mby0+ZmlsdGVyX211dGV4KTsKPj4+PiAtCXB0aHJl YWRfbXV0ZXhfZGVzdHJveSgmaW5mby0+Y29uc3VtZWRfcGZuX211dGV4KTsKPj4+PiAgIAlwdGhy ZWFkX211dGV4X2Rlc3Ryb3koJmluZm8tPmN1cnJlbnRfcGZuX211dGV4KTsKPj4+Pgo+Pj4+ICAg CXJldHVybiByZXQ7Cj4+Pj4gQEAgLTc1NjQsNiArNzYyNyw3IEBAIHdyaXRlX2tkdW1wX3BhZ2Vz X2N5Y2xpYyhzdHJ1Y3QgY2FjaGVfZGF0YSAqY2RfaGVhZGVyLCBzdHJ1Y3QgY2FjaGVfZGF0YSAq Y2RfcGFnCj4+Pj4gICAJCW51bV9kdW1wZWQrKzsKPj4+PiAgIAkJaWYgKCFyZWFkX3BmbihwZm4s IGJ1ZikpCj4+Pj4gICAJCQlnb3RvIG91dDsKPj4+PiArCj4+Pj4gICAJCWZpbHRlcl9kYXRhX2J1 ZmZlcihidWYsIHBmbl90b19wYWRkcihwZm4pLCBpbmZvLT5wYWdlX3NpemUpOwo+Pj4+Cj4+Pj4g ICAJCS8qCj4+Pj4gZGlmZiAtLWdpdCBhL21ha2VkdW1wZmlsZS5oIGIvbWFrZWR1bXBmaWxlLmgK Pj4+PiBpbmRleCBlMGI1YmJmLi40YjMxNWMwIDEwMDY0NAo+Pj4+IC0tLSBhL21ha2VkdW1wZmls ZS5oCj4+Pj4gKysrIGIvbWFrZWR1bXBmaWxlLmgKPj4+PiBAQCAtNDQsNiArNDQsNyBAQAo+Pj4+ ICAgI2luY2x1ZGUgInByaW50X2luZm8uaCIKPj4+PiAgICNpbmNsdWRlICJzYWR1bXBfbW9kLmgi Cj4+Pj4gICAjaW5jbHVkZSA8cHRocmVhZC5oPgo+Pj4+ICsjaW5jbHVkZSA8c2VtYXBob3JlLmg+ Cj4+Pj4KPj4+PiAgIC8qCj4+Pj4gICAgKiBSZXN1bHQgb2YgY29tbWFuZAo+Pj4+IEBAIC05Nzcs NyArOTc4LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVsb25nbG9uZzsKPj4+ PiAgICNkZWZpbmUgUEFHRV9EQVRBX05VTQkoNTApCj4+Pj4gICAjZGVmaW5lIFdBSVRfVElNRQko NjAgKiAxMCkKPj4+PiAgICNkZWZpbmUgUFRIUkVBRF9GQUlMCSgodm9pZCAqKS0yKQo+Pj4+IC0j ZGVmaW5lIE5VTV9CVUZGRVJTCSg1MCkKPj4+PiArI2RlZmluZSBOVU1fQlVGRkVSUwkoMjApCj4+ Pj4KPj4+PiAgIHN0cnVjdCBtbWFwX2NhY2hlIHsKPj4+PiAgIAljaGFyCSptbWFwX2J1ZjsKPj4+ PiBAQCAtOTg1LDI4ICs5ODYsMzMgQEAgc3RydWN0IG1tYXBfY2FjaGUgewo+Pj4+ICAgCW9mZl90 ICAgbW1hcF9lbmRfb2Zmc2V0Owo+Pj4+ICAgfTsKPj4+Pgo+Pj4+ICtlbnVtIHsKPj4+PiArCUZM QUdfVU5VU0VELAo+Pj4+ICsJRkxBR19SRUFEWSwKPj4+PiArCUZMQUdfRklMTElORwo+Pj4+ICt9 Owo+Pj4+ICtzdHJ1Y3QgcGFnZV9mbGFnIHsKPj4+PiArCW1kZl9wZm5fdCBwZm47Cj4+Pj4gKwlj aGFyIHplcm87Cj4+Pj4gKwljaGFyIHJlYWR5Owo+Pj4+ICsJc2hvcnQgaW5kZXg7Cj4+Pj4gKwlz dHJ1Y3QgcGFnZV9mbGFnICpuZXh0Owo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiAgIHN0cnVjdCBwYWdl X2RhdGEKPj4+PiAgIHsKPj4+PiAtCW1kZl9wZm5fdCBwZm47Cj4+Pj4gLQlpbnQgZHVtcGFibGU7 Cj4+Pj4gLQlpbnQgemVybzsKPj4+PiAtCXVuc2lnbmVkIGludCBmbGFnczsKPj4+PiAgIAlsb25n IHNpemU7Cj4+Pj4gICAJdW5zaWduZWQgY2hhciAqYnVmOwo+Pj4+IC0JcHRocmVhZF9tdXRleF90 IG11dGV4Owo+Pj4+IC0JLyoKPj4+PiAtCSAqIHdoZXRoZXIgdGhlIHBhZ2VfZGF0YSBpcyByZWFk eSB0byBiZSBjb25zdW1lZAo+Pj4+IC0JICovCj4+Pj4gLQlpbnQgcmVhZHk7Cj4+Pj4gKwlpbnQg ZmxhZ3M7Cj4+Pj4gKwlpbnQgdXNlZDsKPj4+PiAgIH07Cj4+Pj4KPj4+PiAgIHN0cnVjdCB0aHJl YWRfYXJncyB7Cj4+Pj4gICAJaW50IHRocmVhZF9udW07Cj4+Pj4gICAJdW5zaWduZWQgbG9uZyBs ZW5fYnVmX291dDsKPj4+PiAtCW1kZl9wZm5fdCBzdGFydF9wZm4sIGVuZF9wZm47Cj4+Pj4gLQlp bnQgcGFnZV9kYXRhX251bTsKPj4+PiAgIAlzdHJ1Y3QgY3ljbGUgKmN5Y2xlOwo+Pj4+ICAgCXN0 cnVjdCBwYWdlX2RhdGEgKnBhZ2VfZGF0YV9idWY7Cj4+Pj4gKwlzdHJ1Y3QgcGFnZV9mbGFnICpw YWdlX2ZsYWdfYnVmOwo+Pj4+ICAgfTsKPj4+Pgo+Pj4+ICAgLyoKPj4+PiBAQCAtMTI5NSwxMSAr MTMwMSwxMiBAQCBzdHJ1Y3QgRHVtcEluZm8gewo+Pj4+ICAgCXB0aHJlYWRfdCAqKnRocmVhZHM7 Cj4+Pj4gICAJc3RydWN0IHRocmVhZF9hcmdzICprZHVtcF90aHJlYWRfYXJnczsKPj4+PiAgIAlz dHJ1Y3QgcGFnZV9kYXRhICpwYWdlX2RhdGFfYnVmOwo+Pj4+ICsJc3RydWN0IHBhZ2VfZmxhZyAq KnBhZ2VfZmxhZ19idWY7Cj4+Pj4gKwlzZW1fdCBwYWdlX2ZsYWdfYnVmX3NlbTsKPj4+PiAgIAlw dGhyZWFkX3J3bG9ja190IHVzZW1tYXBfcndsb2NrOwo+Pj4+ICAgCW1kZl9wZm5fdCBjdXJyZW50 X3BmbjsKPj4+PiAgIAlwdGhyZWFkX211dGV4X3QgY3VycmVudF9wZm5fbXV0ZXg7Cj4+Pj4gLQlt ZGZfcGZuX3QgY29uc3VtZWRfcGZuOwo+Pj4+IC0JcHRocmVhZF9tdXRleF90IGNvbnN1bWVkX3Bm bl9tdXRleDsKPj4+PiArCXB0aHJlYWRfbXV0ZXhfdCBwYWdlX2RhdGFfbXV0ZXg7Cj4+Pj4gICAJ cHRocmVhZF9tdXRleF90IGZpbHRlcl9tdXRleDsKPj4+PiAgIH07Cj4+Pj4gICBleHRlcm4gc3Ry dWN0IER1bXBJbmZvCQkqaW5mbzsKPj4+PiAtLQo+Pj4+IDEuOC4zLjEKPj4+Pgo+Pj4+Cj4+Pj4K Pj4+Pgo+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4+Pj4ga2V4ZWMgbWFpbGluZyBsaXN0Cj4+Pj4ga2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwo+ Pj4+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMKPj4+ Cj4+Pgo+Pgo+Pgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+PiBrZXhlYyBtYWlsaW5nIGxpc3QKPj4ga2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9y Zwo+PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCgoK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprZXhlYyBt YWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCg==