From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joshua Otto Subject: Re: [PATCH RFC 07/20] migration: defer precopy policy to libxl Date: Thu, 30 Mar 2017 01:28:17 -0400 Message-ID: <20170330052817.GD5346@eagle> References: <1490605592-12189-1-git-send-email-jtotto@uwaterloo.ca> <1490605592-12189-8-git-send-email-jtotto@uwaterloo.ca> <58DC02D7.2030701@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ctSdI-0005Ou-6o for xen-devel@lists.xenproject.org; Thu, 30 Mar 2017 05:28:28 +0000 Content-Disposition: inline In-Reply-To: <58DC02D7.2030701@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jennifer Herbert , xen-devel@lists.xenproject.org Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, czylin@uwaterloo.ca, imhy.yang@gmail.com, hjarmstr@uwaterloo.ca List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBNYXIgMjksIDIwMTcgYXQgMDc6NTQ6MTVQTSArMDEwMCwgSmVubmlmZXIgSGVyYmVy dCB3cm90ZToKPiBJIHdvdWxkIGxpa2UgdG8gZW5jb3VyYWdlIHRoaXMgcGF0Y2ggLSBhcyBJIGhh dmUgdXNlIGZvciBpdCBvdXRzaWRlCj4gb2YgeW91ciBwb3N0Y29weSB3b3JrLgoKR2xhZCB0byBo ZWFyIHRoYXQhCgo+IFNvbWUgdGhpbmdzIHBlb3BsZSB3aWxsIGNvbW1lbnQgb246Cj4gWW91J3Zl IHVzZWQgJ3Vuc2lnbmVkJyB3aXRob3V0IHRoZSBpbnQga2V5d29yZCwgd2hpY2ggcGVvcGxlIGRv bid0IGxpa2UuCj4gQWxzbyBvbiBsaW5lIDMyNCwgeW91ciBtaXNzaW5nIHNwYWNlIGJldHdlZW4g J2lmICgnIGFuZAo+ICdjdHgtPnNhdmUucG9saWN5X2RlY2lzaW9uJy4KCkFjay4gIEFsbCBvZiB0 aGUgZXhpc3RpbmcgY29kZSBpbiB4Y19zcl9zYXZlL3hjX3NyX3Jlc3RvcmUgdXNlcyBwbGFpbiAi dW5zaWduZWQiCnNvIEkgdHJpZWQgdG8gYmUgY29uc2lzdGVudC4KCj4gCj4gQWxzbywgSSdtIG5v dCBhIGZhbiBvZiB5b3VyIENPTlNVTFRfUE9MSUNZIG1hY3JvLCB3aGljaCB5b3UndmUgZGVmaW5l ZCBhdAo+IGEgb2RkIHBvaW50IGluIHlvdXIgZnVuY3Rpb24sIGFuZCBJIHRoaW5rIGNvdWxkIGJl IGRvbmUgbW9yZSBlbGVnYW50bHkuCj4gV29yc3Qgb2YgYWxsIC4uLiBpdHMgYSBtYWNybyAtIHdo aWNoIEkgdGhpbmsgc2hvdWxkIGdlbmVyYWxseSBiZSBhdm9pZGVkCj4gdW5sZXNzCj4gdGhlcmUg aXMgbGl0dGxlIGNob2ljZS4gICBJJ20gc3VyZSB5b3UgY291bGQgd3JpdGUgYSBoZWxwZXIgZnVu Y3Rpb24gdG8KPiByZXBsYWNlIHRoaXMuCgpZZXMsIHlvdSdyZSByaWdodCwgd2lsbCBmaXguCgpU aGFuayB5b3UgZm9yIHRoZSByZXZpZXchCgpKb3NoCgo+IAo+IENoZWVycywKPiAKPiAtamVubnkK PiAKPiBPbiAyNy8wMy8xNyAxMDowNiwgSm9zaHVhIE90dG8gd3JvdGU6Cj4gPlRoZSBwcmVjb3B5 IHBoYXNlIG9mIHRoZSB4Y19kb21haW5fc2F2ZSgpIGxpdmUgbWlncmF0aW9uIGFsZ29yaXRobSBo YXMKPiA+aGlzdG9yaWNhbGx5IGJlZW4gaW1wbGVtZW50ZWQgdG8gcnVuIHVudGlsIGVpdGhlciBh KSAoYWxtb3N0KSBubyBwYWdlcwo+ID5hcmUgZGlydHkgb3IgYikgc29tZSBmaXhlZCwgaGFyZC1j b2RlZCBtYXhpbXVtIG51bWJlciBvZiBwcmVjb3B5Cj4gPml0ZXJhdGlvbnMgaGFzIGJlZW4gZXhj ZWVkZWQuICBUaGlzIHBvbGljeSBhbmQgaXRzIGltcGxlbWVudGF0aW9uIGFyZQo+ID5sZXNzIHRo YW4gaWRlYWwgZm9yIGEgZmV3IHJlYXNvbnM6Cj4gPi0gdGhlIGxvZ2ljIG9mIHRoZSBwb2xpY3kg aXMgaW50ZXJ0d2luZWQgd2l0aCB0aGUgY29udHJvbCBmbG93IG9mIHRoZQo+ID4gICBtZWNoYW5p c20gb2YgdGhlIHByZWNvcHkgc3RhZ2UKPiA+LSBpdCBjYW4ndCB0YWtlIGludG8gYWNjb3VudCBm YWN0cyBleHRlcm5hbCB0byB0aGUgaW1tZWRpYXRlCj4gPiAgIG1pZ3JhdGlvbiBjb250ZXh0LCBz dWNoIGFzIGludGVyYWN0aXZlIHVzZXIgaW5wdXQgb3IgdGhlIHBhc3NhZ2Ugb2YKPiA+ICAgd2Fs bC1jbG9jayB0aW1lCj4gPi0gaXQgZG9lcyBub3QgcGVybWl0IHRoZSB1c2VyIHRvIGNoYW5nZSB0 aGVpciBtaW5kLCBvdmVyIHRpbWUsIGFib3V0Cj4gPiAgIHdoYXQgdG8gZG8gYXQgdGhlIGVuZCBv ZiB0aGUgcHJlY29weSAodGhleSBnZXQgYW4gdW5jb25kaXRpb25hbAo+ID4gICB0cmFuc2l0aW9u IGludG8gdGhlIHN0b3AtYW5kLWNvcHkgcGhhc2Ugb2YgdGhlIG1pZ3JhdGlvbikKPiA+Cj4gPlRv IHBlcm1pdCB1c2VycyB0byBpbXBsZW1lbnQgYXJiaXRyYXJ5IGhpZ2hlci1sZXZlbCBwb2xpY2ll cyBnb3Zlcm5pbmcKPiA+d2hlbiB0aGUgbGl2ZSBtaWdyYXRpb24gcHJlY29weSBwaGFzZSBzaG91 bGQgZW5kLCBhbmQgd2hhdCBzaG91bGQgYmUKPiA+ZG9uZSBuZXh0Ogo+ID4tIGFkZCBhIHByZWNv cHlfcG9saWN5KCkgY2FsbGJhY2sgdG8gdGhlIHhjX2RvbWFpbl9zYXZlKCkgdXNlci1zdXBwbGll ZAo+ID4gICBjYWxsYmFja3MKPiA+LSBkdXJpbmcgdGhlIHByZWNvcHkgcGhhc2Ugb2YgbGl2ZSBt aWdyYXRpb25zLCBjb25zdWx0IHRoaXMgcG9saWN5IGFmdGVyCj4gPiAgIGVhY2ggYmF0Y2ggb2Yg cGFnZXMgdHJhbnNtaXR0ZWQgYW5kIHRha2UgdGhlIGRpY3RhdGVkIGFjdGlvbiwgd2hpY2gKPiA+ ICAgbWF5IGJlIHRvIGEpIGFib3J0IHRoZSBtaWdyYXRpb24gZW50aXJlbHksIGIpIGNvbnRpbnVl IHdpdGggdGhlCj4gPiAgIHByZWNvcHksIG9yIGMpIHByb2NlZWQgdG8gdGhlIHN0b3AtYW5kLWNv cHkgcGhhc2UuCj4gPi0gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgb2xkIHBvbGlj eSBhcyBzdWNoIGEgY2FsbGJhY2sgaW4KPiA+ICAgbGlieGwgYW5kIHBsdW1iIGl0IHRocm91Z2gg dGhlIElQQyBtYWNoaW5lcnkgdG8gbGlieGMsIGVmZmVjdGl2ZWx5Cj4gPiAgIG1haW50YWluZyB0 aGUgb2xkIHBvbGljeSBmb3Igbm93Cj4gPgo+ID5TaWduZWQtb2ZmLWJ5OiBKb3NodWEgT3R0byA8 anRvdHRvQHV3YXRlcmxvby5jYT4KPiA+LS0tCj4gPiAgdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5n dWVzdC5oICAgICB8ICAyMyArKysrLQo+ID4gIHRvb2xzL2xpYnhjL3hjX25vbWlncmF0ZS5jICAg ICAgICAgfCAgIDMgKy0KPiA+ICB0b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCAgICAgICAgIHwg ICA3ICstCj4gPiAgdG9vbHMvbGlieGMveGNfc3Jfc2F2ZS5jICAgICAgICAgICB8IDE5NCArKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gPiAgdG9vbHMvbGlieGwvbGlieGxf ZG9tX3NhdmUuYyAgICAgICB8ICAyMCArKysrCj4gPiAgdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9j YWxsb3V0LmMgICB8ICAgMyArLQo+ID4gIHRvb2xzL2xpYnhsL2xpYnhsX3NhdmVfaGVscGVyLmMg ICAgfCAgIDcgKy0KPiA+ICB0b29scy9saWJ4bC9saWJ4bF9zYXZlX21zZ3NfZ2VuLnBsIHwgICA0 ICstCj4gPiAgOCBmaWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25z KC0pCj4gPgo+ID5kaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oIGIv dG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5oCj4gPmluZGV4IGFhOGNjOGIuLjMwZmZiNmYg MTAwNjQ0Cj4gPi0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuZ3Vlc3QuaAo+ID4rKysgYi90 b29scy9saWJ4Yy9pbmNsdWRlL3hlbmd1ZXN0LmgKPiA+QEAgLTM5LDYgKzM5LDE0IEBACj4gPiAg ICovCj4gPiAgc3RydWN0IHhlbmV2dGNobl9oYW5kbGU7Cj4gPisvKiBGb3Igc2F2ZSdzIHByZWNv cHlfcG9saWN5KCkuICovCj4gPitzdHJ1Y3QgcHJlY29weV9zdGF0cwo+ID4rewo+ID4rICAgIHVu c2lnbmVkIGl0ZXJhdGlvbjsKPiA+KyAgICB1bnNpZ25lZCB0b3RhbF93cml0dGVuOwo+ID4rICAg IGxvbmcgZGlydHlfY291bnQ7IC8qIC0xIGlmIHVua25vd24gKi8KPiA+K307Cj4gPisKPiA+ICAv KiBjYWxsYmFja3MgcHJvdmlkZWQgYnkgeGNfZG9tYWluX3NhdmUgKi8KPiA+ICBzdHJ1Y3Qgc2F2 ZV9jYWxsYmFja3Mgewo+ID4gICAgICAvKiBDYWxsZWQgYWZ0ZXIgZXhwaXJhdGlvbiBvZiBjaGVj a3BvaW50IGludGVydmFsLAo+ID5AQCAtNDYsNiArNTQsMTcgQEAgc3RydWN0IHNhdmVfY2FsbGJh Y2tzIHsKPiA+ICAgICAgICovCj4gPiAgICAgIGludCAoKnN1c3BlbmQpKHZvaWQqIGRhdGEpOwo+ ID4rICAgIC8qIENhbGxlZCBhZnRlciBldmVyeSBiYXRjaCBvZiBwYWdlIGRhdGEgc2VudCBkdXJp bmcgdGhlIHByZWNvcHkgcGhhc2Ugb2YgYQo+ID4rICAgICAqIGxpdmUgbWlncmF0aW9uIHRvIGFz ayB0aGUgY2FsbGVyIHdoYXQgdG8gZG8gbmV4dCBiYXNlZCBvbiB0aGUgY3VycmVudAo+ID4rICAg ICAqIHN0YXRlIG9mIHRoZSBwcmVjb3B5IG1pZ3JhdGlvbi4KPiA+KyAgICAgKi8KPiA+KyNkZWZp bmUgWEdTX1BPTElDWV9BQk9SVCAgICAgICAgICAoLTEpIC8qIEFiYW5kb24gdGhlIG1pZ3JhdGlv biBlbnRpcmVseSBhbmQKPiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqIHRpZHkgdXAuICovCj4gPisjZGVmaW5lIFhHU19QT0xJQ1lfQ09OVElOVUVfUFJFQ09QWSAw ICAvKiBSZW1haW4gaW4gdGhlIHByZWNvcHkgcGhhc2UuICovCj4gPisjZGVmaW5lIFhHU19QT0xJ Q1lfU1RPUF9BTkRfQ09QWSAgICAxICAvKiBJbW1lZGlhdGVseSBzdXNwZW5kIGFuZCB0cmFuc21p dCB0aGUKPiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlbWFp bmluZyBkaXJ0eSBwYWdlcy4gKi8KPiA+KyAgICBpbnQgKCpwcmVjb3B5X3BvbGljeSkoc3RydWN0 IHByZWNvcHlfc3RhdHMgc3RhdHMsIHZvaWQgKmRhdGEpOwo+ID4rCj4gPiAgICAgIC8qIENhbGxl ZCBhZnRlciB0aGUgZ3Vlc3QncyBkaXJ0eSBwYWdlcyBoYXZlIGJlZW4KPiA+ICAgICAgICogIGNv cGllZCBpbnRvIGFuIG91dHB1dCBidWZmZXIuCj4gPiAgICAgICAqIENhbGxiYWNrIGZ1bmN0aW9u IHJlc3VtZXMgdGhlIGd1ZXN0ICYgdGhlIGRldmljZSBtb2RlbCwKPiA+QEAgLTEwMCw4ICsxMTks OCBAQCB0eXBlZGVmIGVudW0gewo+ID4gICAqICAgICAgICBkb2Vzbid0IHVzZSBjaGVja3BvaW50 aW5nCj4gPiAgICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUKPiA+ICAgKi8K PiA+LWludCB4Y19kb21haW5fc2F2ZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGlvX2ZkLCB1aW50 MzJfdCBkb20sIHVpbnQzMl90IG1heF9pdGVycywKPiA+LSAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBtYXhfZmFjdG9yLCB1aW50MzJfdCBmbGFncyAvKiBYQ0ZMQUdTX3h4eCAqLywKPiA+K2lu dCB4Y19kb21haW5fc2F2ZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGlvX2ZkLCB1aW50MzJfdCBk b20sCj4gPisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MgLyogWENGTEFHU194eHgg Ki8sCj4gPiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzYXZlX2NhbGxiYWNrcyogY2FsbGJh Y2tzLCBpbnQgaHZtLAo+ID4gICAgICAgICAgICAgICAgICAgICB4Y19taWdyYXRpb25fc3RyZWFt X3Qgc3RyZWFtX3R5cGUsIGludCByZWN2X2ZkKTsKPiA+ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhj L3hjX25vbWlncmF0ZS5jIGIvdG9vbHMvbGlieGMveGNfbm9taWdyYXRlLmMKPiA+aW5kZXggMTVj ODM4Zi4uMmFmNjRlNCAxMDA2NDQKPiA+LS0tIGEvdG9vbHMvbGlieGMveGNfbm9taWdyYXRlLmMK PiA+KysrIGIvdG9vbHMvbGlieGMveGNfbm9taWdyYXRlLmMKPiA+QEAgLTIwLDggKzIwLDcgQEAK PiA+ICAjaW5jbHVkZSA8eGVuY3RybC5oPgo+ID4gICNpbmNsdWRlIDx4ZW5ndWVzdC5oPgo+ID4t aW50IHhjX2RvbWFpbl9zYXZlKHhjX2ludGVyZmFjZSAqeGNoLCBpbnQgaW9fZmQsIHVpbnQzMl90 IGRvbSwgdWludDMyX3QgbWF4X2l0ZXJzLAo+ID4tICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IG1heF9mYWN0b3IsIHVpbnQzMl90IGZsYWdzLAo+ID4raW50IHhjX2RvbWFpbl9zYXZlKHhjX2lu dGVyZmFjZSAqeGNoLCBpbnQgaW9fZmQsIHVpbnQzMl90IGRvbSwgdWludDMyX3QgZmxhZ3MsCj4g PiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzYXZlX2NhbGxiYWNrcyogY2FsbGJhY2tzLCBp bnQgaHZtLAo+ID4gICAgICAgICAgICAgICAgICAgICB4Y19taWdyYXRpb25fc3RyZWFtX3Qgc3Ry ZWFtX3R5cGUsIGludCByZWN2X2ZkKQo+ID4gIHsKPiA+ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhj L3hjX3NyX2NvbW1vbi5oIGIvdG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmgKPiA+aW5kZXggYjFh YTg4ZS4uYTkxNjBiZCAxMDA2NDQKPiA+LS0tIGEvdG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmgK PiA+KysrIGIvdG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmgKPiA+QEAgLTE5OCwxMiArMTk4LDEx IEBAIHN0cnVjdCB4Y19zcl9jb250ZXh0Cj4gPiAgICAgICAgICAgICAgLyogRnVydGhlciBkZWJ1 Z2dpbmcgaW5mb3JtYXRpb24gaW4gdGhlIHN0cmVhbS4gKi8KPiA+ICAgICAgICAgICAgICBib29s IGRlYnVnOwo+ID4tICAgICAgICAgICAgLyogUGFyYW1ldGVycyBmb3IgdHdlYWtpbmcgbGl2ZSBt aWdyYXRpb24uICovCj4gPi0gICAgICAgICAgICB1bnNpZ25lZCBtYXhfaXRlcmF0aW9uczsKPiA+ LSAgICAgICAgICAgIHVuc2lnbmVkIGRpcnR5X3RocmVzaG9sZDsKPiA+LQo+ID4gICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgcDJtX3NpemU7Cj4gPisgICAgICAgICAgICBzdHJ1Y3QgcHJlY29w eV9zdGF0cyBzdGF0czsKPiA+KyAgICAgICAgICAgIGludCBwb2xpY3lfZGVjaXNpb247Cj4gPisK PiA+ICAgICAgICAgICAgICB4ZW5fcGZuX3QgKmJhdGNoX3BmbnM7Cj4gPiAgICAgICAgICAgICAg dW5zaWduZWQgbnJfYmF0Y2hfcGZuczsKPiA+ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpk ZWZlcnJlZF9wYWdlczsKPiA+ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3NyX3NhdmUuYyBi L3Rvb2xzL2xpYnhjL3hjX3NyX3NhdmUuYwo+ID5pbmRleCA3OTdhZWM1Li5lYjk1MzM0IDEwMDY0 NAo+ID4tLS0gYS90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMKPiA+KysrIGIvdG9vbHMvbGlieGMv eGNfc3Jfc2F2ZS5jCj4gPkBAIC0yNzEsMTMgKzI3MSwyOSBAQCBzdGF0aWMgaW50IHdyaXRlX2Jh dGNoKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4gPiAgfQo+ID4gIC8qCj4gPisgKiBUZXN0 IGlmIHRoZSBiYXRjaCBpcyBmdWxsLgo+ID4rICovCj4gPitzdGF0aWMgYm9vbCBiYXRjaF9mdWxs KHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4gPit7Cj4gPisgICAgcmV0dXJuIGN0eC0+c2F2 ZS5ucl9iYXRjaF9wZm5zID09IE1BWF9CQVRDSF9TSVpFOwo+ID4rfQo+ID4rCj4gPisvKgo+ID4r ICogVGVzdCBpZiB0aGUgYmF0Y2ggaXMgZW1wdHkuCj4gPisgKi8KPiA+K3N0YXRpYyBib29sIGJh dGNoX2VtcHR5KHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4gPit7Cj4gPisgICAgcmV0dXJu IGN0eC0+c2F2ZS5ucl9iYXRjaF9wZm5zID09IDA7Cj4gPit9Cj4gPisKPiA+Ky8qCj4gPiAgICog Rmx1c2ggYSBiYXRjaCBvZiBwZm5zIGludG8gdGhlIHN0cmVhbS4KPiA+ICAgKi8KPiA+ICBzdGF0 aWMgaW50IGZsdXNoX2JhdGNoKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4gPiAgewo+ID4g ICAgICBpbnQgcmMgPSAwOwo+ID4tICAgIGlmICggY3R4LT5zYXZlLm5yX2JhdGNoX3BmbnMgPT0g MCApCj4gPisgICAgaWYgKCBiYXRjaF9lbXB0eShjdHgpICkKPiA+ICAgICAgICAgIHJldHVybiBy YzsKPiA+ICAgICAgcmMgPSB3cml0ZV9iYXRjaChjdHgpOwo+ID5AQCAtMjkzLDE5ICszMDksMTIg QEAgc3RhdGljIGludCBmbHVzaF9iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQo+ID4g IH0KPiA+ICAvKgo+ID4tICogQWRkIGEgc2luZ2xlIHBmbiB0byB0aGUgYmF0Y2gsIGZsdXNoaW5n IHRoZSBiYXRjaCBpZiBmdWxsLgo+ID4rICogQWRkIGEgc2luZ2xlIHBmbiB0byB0aGUgYmF0Y2gu Cj4gPiAgICovCj4gPi1zdGF0aWMgaW50IGFkZF90b19iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4 dCAqY3R4LCB4ZW5fcGZuX3QgcGZuKQo+ID4rc3RhdGljIHZvaWQgYWRkX3RvX2JhdGNoKHN0cnVj dCB4Y19zcl9jb250ZXh0ICpjdHgsIHhlbl9wZm5fdCBwZm4pCj4gPiAgewo+ID4tICAgIGludCBy YyA9IDA7Cj4gPi0KPiA+LSAgICBpZiAoIGN0eC0+c2F2ZS5ucl9iYXRjaF9wZm5zID09IE1BWF9C QVRDSF9TSVpFICkKPiA+LSAgICAgICAgcmMgPSBmbHVzaF9iYXRjaChjdHgpOwo+ID4tCj4gPi0g ICAgaWYgKCByYyA9PSAwICkKPiA+LSAgICAgICAgY3R4LT5zYXZlLmJhdGNoX3BmbnNbY3R4LT5z YXZlLm5yX2JhdGNoX3BmbnMrK10gPSBwZm47Cj4gPi0KPiA+LSAgICByZXR1cm4gcmM7Cj4gPisg ICAgYXNzZXJ0KGN0eC0+c2F2ZS5ucl9iYXRjaF9wZm5zIDwgTUFYX0JBVENIX1NJWkUpOwo+ID4r ICAgIGN0eC0+c2F2ZS5iYXRjaF9wZm5zW2N0eC0+c2F2ZS5ucl9iYXRjaF9wZm5zKytdID0gcGZu Owo+ID4gIH0KPiA+ICAvKgo+ID5AQCAtMzUyLDEwICszNjEsMTUgQEAgc3RhdGljIGludCBzdXNw ZW5kX2RvbWFpbihzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQo+ID4gICAqIFNlbmQgYSBzdWJz ZXQgb2YgcGFnZXMgaW4gdGhlIGd1ZXN0cyBwMm0sIGFjY29yZGluZyB0byB0aGUgZGlydHkgYml0 bWFwLgo+ID4gICAqIFVzZWQgZm9yIGVhY2ggc3Vic2VxdWVudCBpdGVyYXRpb24gb2YgdGhlIGxp dmUgbWlncmF0aW9uIGxvb3AuCj4gPiAgICoKPiA+KyAqIER1cmluZyB0aGUgcHJlY29weSBzdGFn ZSBvZiBhIGxpdmUgbWlncmF0aW9uLCB0ZXN0IHRoZSB1c2VyLXN1cHBsaWVkCj4gPisgKiBwb2xp Y3kgZnVuY3Rpb24gYWZ0ZXIgZWFjaCBiYXRjaCBvZiBwYWdlcyBhbmQgY3V0IG9mZiB0aGUgb3Bl cmF0aW9uCj4gPisgKiBlYXJseSBpZiBpbmRpY2F0ZWQuICBVbmxlc3MgYWJvcnRpbmcsIHRoZSBk aXJ0eSBwYWdlcyByZW1haW5pbmcgaW4gdGhpcyByb3VuZAo+ID4rICogYXJlIHRyYW5zZmVycmVk IGludG8gdGhlIGRlZmVycmVkX3BhZ2VzIGJpdG1hcC4KPiA+KyAqCj4gPiAgICogQml0bWFwIGlz IGJvdW5kZWQgYnkgcDJtX3NpemUuCj4gPiAgICovCj4gPiAgc3RhdGljIGludCBzZW5kX2RpcnR5 X3BhZ2VzKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsCj4gPi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBlbnRyaWVzKQo+ID4rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgZW50cmllcywgYm9vbCBwcmVjb3B5KQo+ID4gIHsKPiA+ICAg ICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBjdHgtPnhjaDsKPiA+ICAgICAgeGVuX3Bmbl90IHA7Cj4g PkBAIC0zNjQsMzEgKzM3OCw1NyBAQCBzdGF0aWMgaW50IHNlbmRfZGlydHlfcGFnZXMoc3RydWN0 IHhjX3NyX2NvbnRleHQgKmN0eCwKPiA+ICAgICAgREVDTEFSRV9IWVBFUkNBTExfQlVGRkVSX1NI QURPVyh1bnNpZ25lZCBsb25nLCBkaXJ0eV9iaXRtYXAsCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmN0eC0+c2F2ZS5kaXJ0eV9iaXRtYXBfaGJ1Zik7Cj4gPi0gICAg Zm9yICggcCA9IDAsIHdyaXR0ZW4gPSAwOyBwIDwgY3R4LT5zYXZlLnAybV9zaXplOyArK3AgKQo+ ID4rICAgIGludCAoKnByZWNvcHlfcG9saWN5KShzdHJ1Y3QgcHJlY29weV9zdGF0cywgdm9pZCAq KSA9Cj4gPisgICAgICAgIGN0eC0+c2F2ZS5jYWxsYmFja3MtPnByZWNvcHlfcG9saWN5Owo+ID4r ICAgIHZvaWQgKmRhdGEgPSBjdHgtPnNhdmUuY2FsbGJhY2tzLT5kYXRhOwo+ID4rCj4gPisgICAg YXNzZXJ0KGJhdGNoX2VtcHR5KGN0eCkpOwo+ID4rICAgIGZvciAoIHAgPSAwLCB3cml0dGVuID0g MDsgcCA8IGN0eC0+c2F2ZS5wMm1fc2l6ZTsgKQo+ID4gICAgICB7Cj4gPi0gICAgICAgIGlmICgg IXRlc3RfYml0KHAsIGRpcnR5X2JpdG1hcCkgKQo+ID4tICAgICAgICAgICAgY29udGludWU7Cj4g PisgICAgICAgIGlmICggY3R4LT5zYXZlLmxpdmUgJiYgcHJlY29weSApCj4gPisgICAgICAgIHsK PiA+KyAgICAgICAgICAgIGN0eC0+c2F2ZS5wb2xpY3lfZGVjaXNpb24gPSBwcmVjb3B5X3BvbGlj eShjdHgtPnNhdmUuc3RhdHMsIGRhdGEpOwo+ID4rICAgICAgICAgICAgaWYgKCBjdHgtPnNhdmUu cG9saWN5X2RlY2lzaW9uID09IFhHU19QT0xJQ1lfQUJPUlQgKQo+ID4rICAgICAgICAgICAgewo+ ID4rICAgICAgICAgICAgICAgIHJldHVybiAtMTsKPiA+KyAgICAgICAgICAgIH0KPiA+KyAgICAg ICAgICAgIGVsc2UgaWYgKCBjdHgtPnNhdmUucG9saWN5X2RlY2lzaW9uICE9IFhHU19QT0xJQ1lf Q09OVElOVUVfUFJFQ09QWSApCj4gPisgICAgICAgICAgICB7Cj4gPisgICAgICAgICAgICAgICAg LyogQW55IG91dHN0YW5kaW5nIGRpcnR5IHBhZ2VzIGFyZSBub3cgZGVmZXJyZWQgdW50aWwgdGhl IG5leHQKPiA+KyAgICAgICAgICAgICAgICAgKiBwaGFzZSBvZiB0aGUgbWlncmF0aW9uLiAqLwo+ ID4rICAgICAgICAgICAgICAgIGJpdG1hcF9vcihjdHgtPnNhdmUuZGVmZXJyZWRfcGFnZXMsIGRp cnR5X2JpdG1hcCwKPiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5zYXZlLnAybV9z aXplKTsKPiA+KyAgICAgICAgICAgICAgICBpZiAoIGVudHJpZXMgPiB3cml0dGVuICkKPiA+KyAg ICAgICAgICAgICAgICAgICAgY3R4LT5zYXZlLm5yX2RlZmVycmVkX3BhZ2VzICs9IGVudHJpZXMg LSB3cml0dGVuOwo+ID4rCj4gPisgICAgICAgICAgICAgICAgZ290byBkb25lOwo+ID4rICAgICAg ICAgICAgfQo+ID4rICAgICAgICB9Cj4gPi0gICAgICAgIHJjID0gYWRkX3RvX2JhdGNoKGN0eCwg cCk7Cj4gPisgICAgICAgIGZvciAoIDsgcCA8IGN0eC0+c2F2ZS5wMm1fc2l6ZSAmJiAhYmF0Y2hf ZnVsbChjdHgpOyArK3AgKQo+ID4rICAgICAgICB7Cj4gPisgICAgICAgICAgICBpZiAoIHRlc3Rf YW5kX2NsZWFyX2JpdChwLCBkaXJ0eV9iaXRtYXApICkKPiA+KyAgICAgICAgICAgIHsKPiA+KyAg ICAgICAgICAgICAgICBhZGRfdG9fYmF0Y2goY3R4LCBwKTsKPiA+KyAgICAgICAgICAgICAgICAr K3dyaXR0ZW47Cj4gPisgICAgICAgICAgICAgICAgKytjdHgtPnNhdmUuc3RhdHMudG90YWxfd3Jp dHRlbjsKPiA+KyAgICAgICAgICAgIH0KPiA+KyAgICAgICAgfQo+ID4rCj4gPisgICAgICAgIHJj ID0gZmx1c2hfYmF0Y2goY3R4KTsKPiA+ICAgICAgICAgIGlmICggcmMgKQo+ID4gICAgICAgICAg ICAgIHJldHVybiByYzsKPiA+LSAgICAgICAgLyogVXBkYXRlIHByb2dyZXNzIGV2ZXJ5IDRNQiB3 b3J0aCBvZiBtZW1vcnkgc2VudC4gKi8KPiA+LSAgICAgICAgaWYgKCAod3JpdHRlbiAmICgoMVUg PDwgKDIyIC0gMTIpKSAtIDEpKSA9PSAwICkKPiA+LSAgICAgICAgICAgIHhjX3JlcG9ydF9wcm9n cmVzc19zdGVwKHhjaCwgd3JpdHRlbiwgZW50cmllcyk7Cj4gPi0KPiA+LSAgICAgICAgKyt3cml0 dGVuOwo+ID4rICAgICAgICAvKiBVcGRhdGUgcHJvZ3Jlc3MgYWZ0ZXIgZXZlcnkgYmF0Y2ggKDRN Qikgd29ydGggb2YgbWVtb3J5IHNlbnQuICovCj4gPisgICAgICAgIHhjX3JlcG9ydF9wcm9ncmVz c19zdGVwKHhjaCwgd3JpdHRlbiwgZW50cmllcyk7Cj4gPiAgICAgIH0KPiA+LSAgICByYyA9IGZs dXNoX2JhdGNoKGN0eCk7Cj4gPi0gICAgaWYgKCByYyApCj4gPi0gICAgICAgIHJldHVybiByYzsK PiA+LQo+ID4gICAgICBpZiAoIHdyaXR0ZW4gPiBlbnRyaWVzICkKPiA+ICAgICAgICAgIERQUklO VEYoIkJpdG1hcCBjb250YWluZWQgbW9yZSBlbnRyaWVzIHRoYW4gZXhwZWN0ZWQuLi4iKTsKPiA+ ICAgICAgeGNfcmVwb3J0X3Byb2dyZXNzX3N0ZXAoeGNoLCBlbnRyaWVzLCBlbnRyaWVzKTsKPiA+ KyBkb25lOgo+ID4gICAgICByZXR1cm4gY3R4LT5zYXZlLm9wcy5jaGVja192bV9zdGF0ZShjdHgp Owo+ID4gIH0KPiA+QEAgLTM5NiwxNCArNDM2LDE0IEBAIHN0YXRpYyBpbnQgc2VuZF9kaXJ0eV9w YWdlcyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LAo+ID4gICAqIFNlbmQgYWxsIHBhZ2VzIGlu IHRoZSBndWVzdHMgcDJtLiAgVXNlZCBhcyB0aGUgZmlyc3QgaXRlcmF0aW9uIG9mIHRoZSBsaXZl Cj4gPiAgICogbWlncmF0aW9uIGxvb3AsIGFuZCBmb3IgYSBub24tbGl2ZSBzYXZlLgo+ID4gICAq Lwo+ID4tc3RhdGljIGludCBzZW5kX2FsbF9wYWdlcyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4 KQo+ID4rc3RhdGljIGludCBzZW5kX2FsbF9wYWdlcyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4 LCBib29sIHByZWNvcHkpCj4gPiAgewo+ID4gICAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVJf U0hBRE9XKHVuc2lnbmVkIGxvbmcsIGRpcnR5X2JpdG1hcCwKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmY3R4LT5zYXZlLmRpcnR5X2JpdG1hcF9oYnVmKTsKPiA+ICAg ICAgYml0bWFwX3NldChkaXJ0eV9iaXRtYXAsIGN0eC0+c2F2ZS5wMm1fc2l6ZSk7Cj4gPi0gICAg cmV0dXJuIHNlbmRfZGlydHlfcGFnZXMoY3R4LCBjdHgtPnNhdmUucDJtX3NpemUpOwo+ID4rICAg IHJldHVybiBzZW5kX2RpcnR5X3BhZ2VzKGN0eCwgY3R4LT5zYXZlLnAybV9zaXplLCBwcmVjb3B5 KTsKPiA+ICB9Cj4gPiAgc3RhdGljIGludCBlbmFibGVfbG9nZGlydHkoc3RydWN0IHhjX3NyX2Nv bnRleHQgKmN0eCkKPiA+QEAgLTQ0Niw4ICs0ODYsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wcm9n cmVzc19zdHJpbmcoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwKPiA+ICAgICAgeGNfaW50ZXJm YWNlICp4Y2ggPSBjdHgtPnhjaDsKPiA+ICAgICAgY2hhciAqbmV3X3N0ciA9IE5VTEw7Cj4gPi0g ICAgaWYgKCBhc3ByaW50ZigmbmV3X3N0ciwgIkZyYW1lcyBpdGVyYXRpb24gJXUgb2YgJXUiLAo+ ID4tICAgICAgICAgICAgICAgICAgaXRlciwgY3R4LT5zYXZlLm1heF9pdGVyYXRpb25zKSA9PSAt MSApCj4gPisgICAgaWYgKCBhc3ByaW50ZigmbmV3X3N0ciwgIkZyYW1lcyBpdGVyYXRpb24gJXUi LCBpdGVyKSA9PSAtMSApCj4gPiAgICAgIHsKPiA+ICAgICAgICAgIFBFUlJPUigiVW5hYmxlIHRv IGFsbG9jYXRlIG5ldyBwcm9ncmVzcyBzdHJpbmciKTsKPiA+ICAgICAgICAgIHJldHVybiAtMTsK PiA+QEAgLTQ2OCwyMCArNTA3LDQ3IEBAIHN0YXRpYyBpbnQgc2VuZF9tZW1vcnlfbGl2ZShzdHJ1 Y3QgeGNfc3JfY29udGV4dCAqY3R4KQo+ID4gICAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGN0eC0+ eGNoOwo+ID4gICAgICB4Y19zaGFkb3dfb3Bfc3RhdHNfdCBzdGF0cyA9IHsgMCwgY3R4LT5zYXZl LnAybV9zaXplIH07Cj4gPiAgICAgIGNoYXIgKnByb2dyZXNzX3N0ciA9IE5VTEw7Cj4gPi0gICAg dW5zaWduZWQgeDsKPiA+ICAgICAgaW50IHJjOwo+ID4rICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JV RkZFUl9TSEFET1codW5zaWduZWQgbG9uZywgZGlydHlfYml0bWFwLAo+ID4rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmN0eC0+c2F2ZS5kaXJ0eV9iaXRtYXBfaGJ1Zik7Cj4g PisKPiA+KyAgICBpbnQgKCpwcmVjb3B5X3BvbGljeSkoc3RydWN0IHByZWNvcHlfc3RhdHMsIHZv aWQgKikgPQo+ID4rICAgICAgICBjdHgtPnNhdmUuY2FsbGJhY2tzLT5wcmVjb3B5X3BvbGljeTsK PiA+KyAgICB2b2lkICpkYXRhID0gY3R4LT5zYXZlLmNhbGxiYWNrcy0+ZGF0YTsKPiA+Kwo+ID4g ICAgICByYyA9IHVwZGF0ZV9wcm9ncmVzc19zdHJpbmcoY3R4LCAmcHJvZ3Jlc3Nfc3RyLCAwKTsK PiA+ICAgICAgaWYgKCByYyApCj4gPiAgICAgICAgICBnb3RvIG91dDsKPiA+LSAgICByYyA9IHNl bmRfYWxsX3BhZ2VzKGN0eCk7Cj4gPisjZGVmaW5lIENPTlNVTFRfUE9MSUNZICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPisgICAgZG8g eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCj4gPisgICAgICAgIGlmICggY3R4LT5zYXZlLnBvbGljeV9kZWNpc2lv biA9PSBYR1NfUE9MSUNZX0FCT1JUICkgICAgICAgICAgICAgICAgICBcCj4gPisgICAgICAgIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCj4gPisgICAgICAgICAgICByYyA9IC0xOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPisgICAgICAgICAgICBn b3RvIG91dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gPisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPisgICAgICAgIGVsc2UgaWYg KCBjdHgtPnNhdmUucG9saWN5X2RlY2lzaW9uICE9IFhHU19QT0xJQ1lfQ09OVElOVUVfUFJFQ09Q WSApICBcCj4gPisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPisgICAgICAgICAgICByYyA9IDA7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCj4gPisgICAgICAgICAgICBnb3RvIG91dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPisgICAgICAgIH0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Cj4gPisgICAgfSB3aGlsZSAoMCkKPiA+Kwo+ID4rICAgIGN0eC0+c2F2ZS5zdGF0cyA9IChzdHJ1 Y3QgcHJlY29weV9zdGF0cykKPiA+KyAgICAgICAgewo+ID4rICAgICAgICAgICAgLml0ZXJhdGlv biAgICAgPSAwLAo+ID4rICAgICAgICAgICAgLnRvdGFsX3dyaXR0ZW4gPSAwLAo+ID4rICAgICAg ICAgICAgLmRpcnR5X2NvdW50ICAgPSAtMQo+ID4rICAgICAgICB9Owo+ID4rICAgIHJjID0gc2Vu ZF9hbGxfcGFnZXMoY3R4LCAvKiBwcmVjb3B5ICovIHRydWUpOwo+ID4gICAgICBpZiAoIHJjICkK PiA+ICAgICAgICAgIGdvdG8gb3V0Owo+ID4tICAgIGZvciAoIHggPSAxOwo+ID4tICAgICAgICAg ICgoeCA8IGN0eC0+c2F2ZS5tYXhfaXRlcmF0aW9ucykgJiYKPiA+LSAgICAgICAgICAgKHN0YXRz LmRpcnR5X2NvdW50ID4gY3R4LT5zYXZlLmRpcnR5X3RocmVzaG9sZCkpOyArK3ggKQo+ID4rICAg IC8qIHNlbmRfYWxsX3BhZ2VzKCkgaGFzIHVwZGF0ZWQgdGhlIHN0YXRzICovCj4gPisgICAgQ09O U1VMVF9QT0xJQ1k7Cj4gPisKPiA+KyAgICBmb3IgKCBjdHgtPnNhdmUuc3RhdHMuaXRlcmF0aW9u ID0gMTsgOyArK2N0eC0+c2F2ZS5zdGF0cy5pdGVyYXRpb24gKQo+ID4gICAgICB7Cj4gPiAgICAg ICAgICBpZiAoIHhjX3NoYWRvd19jb250cm9sKAo+ID4gICAgICAgICAgICAgICAgICAgeGNoLCBj dHgtPmRvbWlkLCBYRU5fRE9NQ1RMX1NIQURPV19PUF9DTEVBTiwKPiA+QEAgLTQ5MywxOCArNTU5 LDQyIEBAIHN0YXRpYyBpbnQgc2VuZF9tZW1vcnlfbGl2ZShzdHJ1Y3QgeGNfc3JfY29udGV4dCAq Y3R4KQo+ID4gICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gICAgICAgICAgfQo+ID4tICAgICAg ICBpZiAoIHN0YXRzLmRpcnR5X2NvdW50ID09IDAgKQo+ID4tICAgICAgICAgICAgYnJlYWs7Cj4g PisgICAgICAgIC8qIENoZWNrIHRoZSBuZXcgZGlydHlfY291bnQgYWdhaW5zdCB0aGUgcG9saWN5 LiAqLwo+ID4rICAgICAgICBjdHgtPnNhdmUuc3RhdHMuZGlydHlfY291bnQgPSBzdGF0cy5kaXJ0 eV9jb3VudDsKPiA+KyAgICAgICAgY3R4LT5zYXZlLnBvbGljeV9kZWNpc2lvbiA9IHByZWNvcHlf cG9saWN5KGN0eC0+c2F2ZS5zdGF0cywgZGF0YSk7Cj4gPisgICAgICAgIGlmICggY3R4LT5zYXZl LnBvbGljeV9kZWNpc2lvbiA9PSBYR1NfUE9MSUNZX0FCT1JUICkKPiA+KyAgICAgICAgewo+ID4r ICAgICAgICAgICAgcmMgPSAtMTsKPiA+KyAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4rICAgICAg ICB9Cj4gPisgICAgICAgIGVsc2UgaWYgKGN0eC0+c2F2ZS5wb2xpY3lfZGVjaXNpb24gIT0gWEdT X1BPTElDWV9DT05USU5VRV9QUkVDT1BZICkKPiA+KyAgICAgICAgewo+ID4rICAgICAgICAgICAg Yml0bWFwX29yKGN0eC0+c2F2ZS5kZWZlcnJlZF9wYWdlcywgZGlydHlfYml0bWFwLAo+ID4rICAg ICAgICAgICAgICAgICAgICAgIGN0eC0+c2F2ZS5wMm1fc2l6ZSk7Cj4gPisgICAgICAgICAgICBj dHgtPnNhdmUubnJfZGVmZXJyZWRfcGFnZXMgKz0gc3RhdHMuZGlydHlfY291bnQ7Cj4gPisgICAg ICAgICAgICByYyA9IDA7Cj4gPisgICAgICAgICAgICBnb3RvIG91dDsKPiA+KyAgICAgICAgfQo+ ID4rCj4gPisgICAgICAgIC8qIEFmdGVyIHRoaXMgcG9pbnQgd2Ugd29uJ3Qga25vdyBob3cgbWFu eSBwYWdlcyBhcmUgcmVhbGx5IGRpcnR5IHVudGlsCj4gPisgICAgICAgICAqIHRoZSBuZXh0IGl0 ZXJhdGlvbi4gKi8KPiA+KyAgICAgICAgY3R4LT5zYXZlLnN0YXRzLmRpcnR5X2NvdW50ID0gLTE7 Cj4gPi0gICAgICAgIHJjID0gdXBkYXRlX3Byb2dyZXNzX3N0cmluZyhjdHgsICZwcm9ncmVzc19z dHIsIHgpOwo+ID4rICAgICAgICByYyA9IHVwZGF0ZV9wcm9ncmVzc19zdHJpbmcoY3R4LCAmcHJv Z3Jlc3Nfc3RyLAo+ID4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5z YXZlLnN0YXRzLml0ZXJhdGlvbik7Cj4gPiAgICAgICAgICBpZiAoIHJjICkKPiA+ICAgICAgICAg ICAgICBnb3RvIG91dDsKPiA+LSAgICAgICAgcmMgPSBzZW5kX2RpcnR5X3BhZ2VzKGN0eCwgc3Rh dHMuZGlydHlfY291bnQpOwo+ID4rICAgICAgICByYyA9IHNlbmRfZGlydHlfcGFnZXMoY3R4LCBz dGF0cy5kaXJ0eV9jb3VudCwgLyogcHJlY29weSAqLyB0cnVlKTsKPiA+ICAgICAgICAgIGlmICgg cmMgKQo+ID4gICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4rCj4gPisgICAgICAgIC8qIHNlbmRf ZGlydHlfcGFnZXMoKSBoYXMgdXBkYXRlZCB0aGUgc3RhdHMgKi8KPiA+KyAgICAgICAgQ09OU1VM VF9QT0xJQ1k7Cj4gPiAgICAgIH0KPiA+KyN1bmRlZiBDT05TVUxUX1BPTElDWQo+ID4rCj4gPiAg IG91dDoKPiA+ICAgICAgeGNfc2V0X3Byb2dyZXNzX3ByZWZpeCh4Y2gsIE5VTEwpOwo+ID4gICAg ICBmcmVlKHByb2dyZXNzX3N0cik7Cj4gPkBAIC01OTUsNyArNjg1LDcgQEAgc3RhdGljIGludCBz dXNwZW5kX2FuZF9zZW5kX2RpcnR5KHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4gPiAgICAg IGlmICggY3R4LT5zYXZlLmxpdmUgKQo+ID4gICAgICB7Cj4gPiAgICAgICAgICByYyA9IHVwZGF0 ZV9wcm9ncmVzc19zdHJpbmcoY3R4LCAmcHJvZ3Jlc3Nfc3RyLAo+ID4tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY3R4LT5zYXZlLm1heF9pdGVyYXRpb25zKTsKPiA+KyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+c2F2ZS5zdGF0cy5pdGVyYXRpb24p Owo+ID4gICAgICAgICAgaWYgKCByYyApCj4gPiAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAg ICAgIH0KPiA+QEAgLTYxNCw3ICs3MDQsOCBAQCBzdGF0aWMgaW50IHN1c3BlbmRfYW5kX3NlbmRf ZGlydHkoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKPiA+ICAgICAgICAgIH0KPiA+ICAgICAg fQo+ID4tICAgIHJjID0gc2VuZF9kaXJ0eV9wYWdlcyhjdHgsIHN0YXRzLmRpcnR5X2NvdW50ICsg Y3R4LT5zYXZlLm5yX2RlZmVycmVkX3BhZ2VzKTsKPiA+KyAgICByYyA9IHNlbmRfZGlydHlfcGFn ZXMoY3R4LCBzdGF0cy5kaXJ0eV9jb3VudCArIGN0eC0+c2F2ZS5ucl9kZWZlcnJlZF9wYWdlcywK PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJlY29weSAqLyBmYWxzZSk7Cj4gPiAg ICAgIGlmICggcmMgKQo+ID4gICAgICAgICAgZ290byBvdXQ7Cj4gPkBAIC02NDUsNyArNzM2LDcg QEAgc3RhdGljIGludCB2ZXJpZnlfZnJhbWVzKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4g PiAgICAgICAgICBnb3RvIG91dDsKPiA+ICAgICAgeGNfc2V0X3Byb2dyZXNzX3ByZWZpeCh4Y2gs ICJGcmFtZXMgdmVyaWZ5Iik7Cj4gPi0gICAgcmMgPSBzZW5kX2FsbF9wYWdlcyhjdHgpOwo+ID4r ICAgIHJjID0gc2VuZF9hbGxfcGFnZXMoY3R4LCAvKiBwcmVjb3B5ICovIGZhbHNlKTsKPiA+ICAg ICAgaWYgKCByYyApCj4gPiAgICAgICAgICBnb3RvIG91dDsKPiA+QEAgLTcxOSw3ICs4MTAsNyBA QCBzdGF0aWMgaW50IHNlbmRfZG9tYWluX21lbW9yeV9ub25saXZlKHN0cnVjdCB4Y19zcl9jb250 ZXh0ICpjdHgpCj4gPiAgICAgIHhjX3NldF9wcm9ncmVzc19wcmVmaXgoeGNoLCAiRnJhbWVzIik7 Cj4gPi0gICAgcmMgPSBzZW5kX2FsbF9wYWdlcyhjdHgpOwo+ID4rICAgIHJjID0gc2VuZF9hbGxf cGFnZXMoY3R4LCAvKiBwcmVjb3B5ICovIGZhbHNlKTsKPiA+ICAgICAgaWYgKCByYyApCj4gPiAg ICAgICAgICBnb3RvIGVycjsKPiA+QEAgLTkxMCw4ICsxMDAxLDcgQEAgc3RhdGljIGludCBzYXZl KHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsIHVpbnQxNl90IGd1ZXN0X3R5cGUpCj4gPiAgfTsK PiA+ICBpbnQgeGNfZG9tYWluX3NhdmUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBpb19mZCwgdWlu dDMyX3QgZG9tLAo+ID4tICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1heF9pdGVycywgdWlu dDMyX3QgbWF4X2ZhY3RvciwgdWludDMyX3QgZmxhZ3MsCj4gPi0gICAgICAgICAgICAgICAgICAg c3RydWN0IHNhdmVfY2FsbGJhY2tzKiBjYWxsYmFja3MsIGludCBodm0sCj4gPisgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgZmxhZ3MsIHN0cnVjdCBzYXZlX2NhbGxiYWNrcyogY2FsbGJhY2tz LCBpbnQgaHZtLAo+ID4gICAgICAgICAgICAgICAgICAgICB4Y19taWdyYXRpb25fc3RyZWFtX3Qg c3RyZWFtX3R5cGUsIGludCByZWN2X2ZkKQo+ID4gIHsKPiA+ICAgICAgc3RydWN0IHhjX3NyX2Nv bnRleHQgY3R4ID0KPiA+QEAgLTkzMiwyNSArMTAyMiwxNyBAQCBpbnQgeGNfZG9tYWluX3NhdmUo eGNfaW50ZXJmYWNlICp4Y2gsIGludCBpb19mZCwgdWludDMyX3QgZG9tLAo+ID4gICAgICAgICAg ICAgc3RyZWFtX3R5cGUgPT0gWENfTUlHX1NUUkVBTV9SRU1VUyB8fAo+ID4gICAgICAgICAgICAg c3RyZWFtX3R5cGUgPT0gWENfTUlHX1NUUkVBTV9DT0xPKTsKPiA+LSAgICAvKgo+ID4tICAgICAq IFRPRE86IEZpbmQgc29tZSB0aW1lIHRvIGJldHRlciB0d2VhayB0aGUgbGl2ZSBtaWdyYXRpb24g YWxnb3JpdGhtLgo+ID4tICAgICAqCj4gPi0gICAgICogVGhlc2UgcGFyYW1ldGVycyBhcmUgYmV0 dGVyIHRoYW4gdGhlIGxlZ2FjeSBhbGdvcml0aG0gZXNwZWNpYWxseSBmb3IKPiA+LSAgICAgKiBi dXN5IGd1ZXN0cy4KPiA+LSAgICAgKi8KPiA+LSAgICBjdHguc2F2ZS5tYXhfaXRlcmF0aW9ucyA9 IDU7Cj4gPi0gICAgY3R4LnNhdmUuZGlydHlfdGhyZXNob2xkID0gNTA7Cj4gPi0KPiA+ICAgICAg LyogU2FuaXR5IGNoZWNrcyBmb3IgY2FsbGJhY2tzLiAqLwo+ID4gICAgICBpZiAoIGh2bSApCj4g PiAgICAgICAgICBhc3NlcnQoY2FsbGJhY2tzLT5zd2l0Y2hfcWVtdV9sb2dkaXJ0eSk7Cj4gPisg ICAgaWYgKCBjdHguc2F2ZS5saXZlICkKPiA+KyAgICAgICAgYXNzZXJ0KGNhbGxiYWNrcy0+cHJl Y29weV9wb2xpY3kpOwo+ID4gICAgICBpZiAoIGN0eC5zYXZlLmNoZWNrcG9pbnRlZCApCj4gPiAg ICAgICAgICBhc3NlcnQoY2FsbGJhY2tzLT5jaGVja3BvaW50ICYmIGNhbGxiYWNrcy0+YWZ0ZXJj b3B5KTsKPiA+ICAgICAgaWYgKCBjdHguc2F2ZS5jaGVja3BvaW50ZWQgPT0gWENfTUlHX1NUUkVB TV9DT0xPICkKPiA+ICAgICAgICAgIGFzc2VydChjYWxsYmFja3MtPndhaXRfY2hlY2twb2ludCk7 Cj4gPi0gICAgRFBSSU5URigiZmQgJWQsIGRvbSAldSwgbWF4X2l0ZXJzICV1LCBtYXhfZmFjdG9y ICV1LCBmbGFncyAldSwgaHZtICVkIiwKPiA+LSAgICAgICAgICAgIGlvX2ZkLCBkb20sIG1heF9p dGVycywgbWF4X2ZhY3RvciwgZmxhZ3MsIGh2bSk7Cj4gPisgICAgRFBSSU5URigiZmQgJWQsIGRv bSAldSwgZmxhZ3MgJXUsIGh2bSAlZCIsIGlvX2ZkLCBkb20sIGZsYWdzLCBodm0pOwo+ID4gICAg ICBpZiAoIHhjX2RvbWFpbl9nZXRpbmZvKHhjaCwgZG9tLCAxLCAmY3R4LmRvbWluZm8pICE9IDEg KQo+ID4gICAgICB7Cj4gPmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kb21fc2F2ZS5j IGIvdG9vbHMvbGlieGwvbGlieGxfZG9tX3NhdmUuYwo+ID5pbmRleCA3N2ZlMzBlLi42ZDI4Y2Nl IDEwMDY0NAo+ID4tLS0gYS90b29scy9saWJ4bC9saWJ4bF9kb21fc2F2ZS5jCj4gPisrKyBiL3Rv b2xzL2xpYnhsL2xpYnhsX2RvbV9zYXZlLmMKPiA+QEAgLTMyOCw2ICszMjgsMjUgQEAgaW50IGxp YnhsX19zYXZlX2VtdWxhdG9yX3hlbnN0b3JlX2RhdGEobGlieGxfX2RvbWFpbl9zYXZlX3N0YXRl ICpkc3MsCj4gPiAgICAgIHJldHVybiByYzsKPiA+ICB9Cj4gPisvKgo+ID4rICogVGhpcyBpcyB0 aGUgbGl2ZSBtaWdyYXRpb24gcHJlY29weSBwb2xpY3kgLSBpdCdzIGNhbGxlZCBwZXJpb2RpY2Fs bHkgZHVyaW5nCj4gPisgKiB0aGUgcHJlY29weSBwaGFzZSBvZiBsaXZlIG1pZ3JhdGlvbnMsIGFu ZCBpcyByZXNwb25zaWJsZSBmb3IgZGVjaWRpbmcgd2hlbgo+ID4rICogdGhlIHByZWNvcHkgcGhh c2Ugc2hvdWxkIHRlcm1pbmF0ZSBhbmQgd2hhdCBzaG91bGQgYmUgZG9uZSBuZXh0Lgo+ID4rICoK PiA+KyAqIFRoZSBwb2xpY3kgaW1wbGVtZW50ZWQgaGVyZSBiZWhhdmVzIGlkZW50aWNhbGx5IHRv IHRoZSBwb2xpY3kgcHJldmlvdXNseQo+ID4rICogaGFyZC1jb2RlZCBpbnRvIHhjX2RvbWFpbl9z YXZlKCkgLSBpdCBwcm9jZWVkcyB0byB0aGUgc3RvcC1hbmQtY29weSBwaGFzZSBvZgo+ID4rICog dGhlIGxpdmUgbWlncmF0aW9uIHdoZW4gdGhlcmUgYXJlIGVpdGhlciBmZXdlciB0aGFuIDUwIGRp cnR5IHBhZ2VzLCBvciBtb3JlCj4gPisgKiB0aGFuIDUgcHJlY29weSByb3VuZHMgaGF2ZSBjb21w bGV0ZWQuCj4gPisgKi8KPiA+K3N0YXRpYyBpbnQgbGlieGxfX3NhdmVfbGl2ZV9taWdyYXRpb25f c2ltcGxlX3ByZWNvcHlfcG9saWN5KAo+ID4rICAgIHN0cnVjdCBwcmVjb3B5X3N0YXRzIHN0YXRz LCB2b2lkICp1c2VyKQo+ID4rewo+ID4rICAgIHJldHVybiAoKHN0YXRzLmRpcnR5X2NvdW50ID49 IDAgJiYgc3RhdHMuZGlydHlfY291bnQgPCA1MCkgfHwKPiA+KyAgICAgICAgICAgIHN0YXRzLml0 ZXJhdGlvbiA+PSA1KQo+ID4rICAgICAgICA/IFhHU19QT0xJQ1lfU1RPUF9BTkRfQ09QWQo+ID4r ICAgICAgICA6IFhHU19QT0xJQ1lfQ09OVElOVUVfUFJFQ09QWTsKPiA+K30KPiA+Kwo+ID4gIC8q LS0tLS0gbWFpbiBjb2RlIGZvciBzYXZpbmcsIGluIG9yZGVyIG9mIGV4ZWN1dGlvbiAtLS0tLSov Cj4gPiAgdm9pZCBsaWJ4bF9fZG9tYWluX3NhdmUobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZG9t YWluX3NhdmVfc3RhdGUgKmRzcykKPiA+QEAgLTQwMSw2ICs0MjAsNyBAQCB2b2lkIGxpYnhsX19k b21haW5fc2F2ZShsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19kb21haW5fc2F2ZV9zdGF0ZSAqZHNz KQo+ID4gICAgICBpZiAoZHNzLT5jaGVja3BvaW50ZWRfc3RyZWFtID09IExJQlhMX0NIRUNLUE9J TlRFRF9TVFJFQU1fTk9ORSkKPiA+ICAgICAgICAgIGNhbGxiYWNrcy0+c3VzcGVuZCA9IGxpYnhs X19kb21haW5fc3VzcGVuZF9jYWxsYmFjazsKPiA+KyAgICBjYWxsYmFja3MtPnByZWNvcHlfcG9s aWN5ID0gbGlieGxfX3NhdmVfbGl2ZV9taWdyYXRpb25fc2ltcGxlX3ByZWNvcHlfcG9saWN5Owo+ ID4gICAgICBjYWxsYmFja3MtPnN3aXRjaF9xZW11X2xvZ2RpcnR5ID0gbGlieGxfX2RvbWFpbl9z dXNwZW5kX2NvbW1vbl9zd2l0Y2hfcWVtdV9sb2dkaXJ0eTsKPiA+ICAgICAgZHNzLT5zd3MuYW8g ID0gZHNzLT5hbzsKPiA+ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfY2FsbG91 dC5jIGIvdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9jYWxsb3V0LmMKPiA+aW5kZXggNDZiODkyYy4u MDI2YjU3MiAxMDA2NDQKPiA+LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9jYWxsb3V0LmMK PiA+KysrIGIvdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9jYWxsb3V0LmMKPiA+QEAgLTg5LDggKzg5 LDcgQEAgdm9pZCBsaWJ4bF9feGNfZG9tYWluX3NhdmUobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9f ZG9tYWluX3NhdmVfc3RhdGUgKmRzcywKPiA+ICAgICAgICAgIGxpYnhsX19zcm1fY2FsbG91dF9l bnVtY2FsbGJhY2tzX3NhdmUoJnNocy0+Y2FsbGJhY2tzLnNhdmUuYSk7Cj4gPiAgICAgIGNvbnN0 IHVuc2lnbmVkIGxvbmcgYXJnbnVtc1tdID0gewo+ID4tICAgICAgICBkc3MtPmRvbWlkLCAwLCAw LCBkc3MtPnhjZmxhZ3MsIGRzcy0+aHZtLAo+ID4tICAgICAgICBjYmZsYWdzLCBkc3MtPmNoZWNr cG9pbnRlZF9zdHJlYW0sCj4gPisgICAgICAgIGRzcy0+ZG9taWQsIGRzcy0+eGNmbGFncywgZHNz LT5odm0sIGNiZmxhZ3MsIGRzcy0+Y2hlY2twb2ludGVkX3N0cmVhbSwKPiA+ICAgICAgfTsKPiA+ ICAgICAgc2hzLT5hbyA9IGFvOwo+ID5kaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfc2F2 ZV9oZWxwZXIuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfaGVscGVyLmMKPiA+aW5kZXggZDNk ZWY2Yi4uMDI0MWE2YiAxMDA2NDQKPiA+LS0tIGEvdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9oZWxw ZXIuYwo+ID4rKysgYi90b29scy9saWJ4bC9saWJ4bF9zYXZlX2hlbHBlci5jCj4gPkBAIC0yNTEs OCArMjUxLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ID4gICAgICAgICAg aW9fZmQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvaShORVhUQVJHKTsKPiA+ICAg ICAgICAgIHJlY3ZfZmQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0b2koTkVYVEFSRyk7 Cj4gPiAgICAgICAgICB1aW50MzJfdCBkb20gPSAgICAgICAgICAgICAgICAgICAgICBzdHJ0b3Vs KE5FWFRBUkcsMCwxMCk7Cj4gPi0gICAgICAgIHVpbnQzMl90IG1heF9pdGVycyA9ICAgICAgICAg ICAgICAgIHN0cnRvdWwoTkVYVEFSRywwLDEwKTsKPiA+LSAgICAgICAgdWludDMyX3QgbWF4X2Zh Y3RvciA9ICAgICAgICAgICAgICAgc3RydG91bChORVhUQVJHLDAsMTApOwo+ID4gICAgICAgICAg dWludDMyX3QgZmxhZ3MgPSAgICAgICAgICAgICAgICAgICAgc3RydG91bChORVhUQVJHLDAsMTAp Owo+ID4gICAgICAgICAgaW50IGh2bSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvaShO RVhUQVJHKTsKPiA+ICAgICAgICAgIHVuc2lnbmVkIGNiZmxhZ3MgPSAgICAgICAgICAgICAgICAg IHN0cnRvdWwoTkVYVEFSRywwLDEwKTsKPiA+QEAgLTI2NCw5ICsyNjIsOCBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gPiAgICAgICAgICBzdGFydHVwKCJzYXZlIik7Cj4gPiAg ICAgICAgICBzZXR1cF9zaWduYWxzKHNhdmVfc2lnbmFsX2hhbmRsZXIpOwo+ID4tICAgICAgICBy ID0geGNfZG9tYWluX3NhdmUoeGNoLCBpb19mZCwgZG9tLCBtYXhfaXRlcnMsIG1heF9mYWN0b3Is IGZsYWdzLAo+ID4tICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhlbHBlcl9zYXZlX2NhbGxi YWNrcywgaHZtLCBzdHJlYW1fdHlwZSwKPiA+LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl Y3ZfZmQpOwo+ID4rICAgICAgICByID0geGNfZG9tYWluX3NhdmUoeGNoLCBpb19mZCwgZG9tLCBm bGFncywgJmhlbHBlcl9zYXZlX2NhbGxiYWNrcywgaHZtLAo+ID4rICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RyZWFtX3R5cGUsIHJlY3ZfZmQpOwo+ID4gICAgICAgICAgY29tcGxldGUocik7 Cj4gPiAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChtb2RlLCItLXJlc3RvcmUtZG9tYWluIikpIHsK PiA+ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfbXNnc19nZW4ucGwgYi90b29s cy9saWJ4bC9saWJ4bF9zYXZlX21zZ3NfZ2VuLnBsCj4gPmluZGV4IDI3ODQ1YmIuLjUwYzk3YjQg MTAwNzU1Cj4gPi0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfbXNnc19nZW4ucGwKPiA+Kysr IGIvdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9tc2dzX2dlbi5wbAo+ID5AQCAtMzMsNiArMzMsNyBA QCBvdXIgQG1zZ3MgPSAoCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICd4ZW5fcGZuX3QnLCAnY29uc29sZV9nZm4nXSBdLAo+ID4gICAgICBbICA5LCAn c3JXJywgICAgImNvbXBsZXRlIiwgICAgICAgICAgICAgIFtxdyhpbnQgcmV0dmFsCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlcnJub3Zh bCldIF0sCj4gPisgICAgWyAxMCwgJ3NjeFcnLCAgICJwcmVjb3B5X3BvbGljeSIsIFsnc3RydWN0 IHByZWNvcHlfc3RhdHMnLCAnc3RhdHMnXSBdCj4gPiAgKTsKPiA+ICAjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID5AQCAtMTQxLDcgKzE0Miw4IEBAIHN0YXRpYyB2 b2lkIGJ5dGVzX3B1dCh1bnNpZ25lZCBjaGFyICpjb25zdCBidWYsIGludCAqbGVuLAo+ID4gIEVO RAo+ID4tZm9yZWFjaCBteSAkc2ltcGxldHlwZSAocXcoaW50IHVpbnQxNl90IHVpbnQzMl90IHVu c2lnbmVkKSwgJ3Vuc2lnbmVkIGxvbmcnLCAneGVuX3Bmbl90Jykgewo+ID4rZm9yZWFjaCBteSAk c2ltcGxldHlwZSAocXcoaW50IHVpbnQxNl90IHVpbnQzMl90IHVuc2lnbmVkKSwKPiA+KyAgICAg ICAgICAgICAgICAgICAgICAgICd1bnNpZ25lZCBsb25nJywgJ3hlbl9wZm5fdCcsICdzdHJ1Y3Qg cHJlY29weV9zdGF0cycpIHsKPiA+ICAgICAgbXkgJHR5cGVpZCA9IHR5cGVpZCgkc2ltcGxldHlw ZSk7Cj4gPiAgICAgICRvdXRfYm9keXsnY2FsbG91dCd9IC49IDw8RU5EOwo+ID4gIHN0YXRpYyBp bnQgJHt0eXBlaWR9X2dldChjb25zdCB1bnNpZ25lZCBjaGFyICoqbXNnLAo+IAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==