From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 5/8] drm: Handle aspect ratio info in atomic and legacy modeset paths Date: Tue, 13 Feb 2018 18:45:50 +0200 Message-ID: <20180213164550.GL5453@intel.com> References: <1515738096-16892-6-git-send-email-ankit.k.nautiyal@intel.com> <20180129185321.GU5453@intel.com> <2a237194-9136-1b9e-7df2-9f4056dde68d@intel.com> <20180131130911.GJ5453@intel.com> <9cbf55ba-79ac-b2be-7847-84b7a58b7b3c@intel.com> <20180201125437.GN5453@intel.com> <10dd7fbf-4005-e5b3-8a2c-cbb3536ca19b@intel.com> <20180213131843.GC5453@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1B14A6E02E for ; Tue, 13 Feb 2018 16:45:54 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Nautiyal, Ankit K" Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBGZWIgMTMsIDIwMTggYXQgMDk6NTM6NTNQTSArMDUzMCwgTmF1dGl5YWwsIEFua2l0 IEsgd3JvdGU6Cj4gSGkgVmlsbGUsCj4gCj4gVGhhbmtzIHlldCBhZ2FpbiB0byBsb29rIGludG8g dGhpcy4KPiAKPiBJIGFtIHN0aWxsIHNrZXB0aWNhbCBhYm91dCByZWplY3RpbmcgdGhlIG1vZGUs IGlmIGFzcGVjdCByYXRpbyBjYXAgaXMgCj4gbm90IHNldC4KPiBQZXJoYXBzIEkgYW0gbm90IGF3 YXJlIHdpdGggdGhlIHVzZXJzcGFjZSBleHBlY3RhdGlvbnMuCj4gCj4gUGxlYXNlIGZpbmQgbXkg cmVzcG9uc2UgaW5saW5lOgo+IAo+IE9uIDIvMTMvMjAxOCA2OjQ4IFBNLCBWaWxsZSBTeXJqw6Rs w6Qgd3JvdGU6Cj4gPiBPbiBUdWUsIEZlYiAxMywgMjAxOCBhdCAxMDoyMToxNUFNICswNTMwLCBO YXV0aXlhbCwgQW5raXQgSyB3cm90ZToKPiA+PiBIaSBWaWxsZSwKPiA+Pgo+ID4+IEFzIHBlciBv dXIgbGFzdCBkaXNjdXNzaW9uLCBmb2xsb3dpbmcgcG9pbnRzIHdlcmUgZGlzY3Vzc2VkOgo+ID4+ Cj4gPj4gMS4gVG8gc3VwcHJlc3MgdGhlIGFzcGVjdC1yYXRpbyBpbmZvIGZyb20gZ2V0YmxvYiBp b2N0bCB0byBhIHVzZXIgdGhhdAo+ID4+IGRvZXMgbm90IHN1cHBvcnQgaXQ6Cj4gPj4KPiA+PiAg ICAgICBpLiBBIG5ldyBmbGFnIG11c3QgYmUgYWRkZWQgdG8gZHJtX2Jsb2JfcHJvcGVydHkgdG8g bWFyayBpZiB0aGUKPiA+PiBibG9iIGhhcyBtb2RlIGRhdGEuCj4gPj4KPiA+PiAgICAgICBpaS4g VGhpcyBmbGFnIG11c3QgYmUgc2V0IHdoZW4gdGhlIHVzZXIgdHJpZXMgZG8gYW4gYXRvbWljIG1v ZGVzZXQuCj4gPj4KPiA+PiAgICAgICBpaWkuIEluIHRoZSBnZXRibG9iIGlvY3RsLCBiYXNlZCBv biB0aGUgYWJvdmUgZmxhZywgaXQgY2FuIGJlCj4gPj4gZGV0ZXJtaW5lZCB0aGF0IGlmIHRoZSBi bG9iCj4gPj4KPiA+PiAgICAgICBoYXMgbW9kZSBkYXRhLCBhbmQgdGhlIGFzcGVjdCByYXRpbyBp bmZvIGNhbiBiZSBzdXBwcmVzc2VkIGluCj4gPj4gZ2V0YmxvYiBpb2N0bCwgaWYgdXNlciBkb2Vz IG5vdCBzdXBwb3J0IGl0Lgo+ID4+Cj4gPj4gMi4gSW5zdGVhZCBvZiBhZGRpbmcgYXNwZWN0IHJh dGlvIGNhcGFiaWxpdGllcyBpbiBkcm1fYXRvbWljX3N0YXRlLCBwYXNzCj4gPj4gb24gdGhlIGZp bGVfcHJpdiB3aGljaCBhbHJlYWR5IGhhcwo+ID4+Cj4gPj4gdGhlIHJlcXVpcmVkIGluZm9ybWF0 aW9uIHRvIHRoZSBmdW5jdGlvbiBkcm1fbW9kZV9jb252ZXJ0X3Vtb2RlLgo+ID4+Cj4gPj4gSXQg d2lsbCByZXF1aXJlIGFkZGl0aW9uIG9mIGFuIG5ldyBhcmd1bWVudCBmaWxlX3ByaXYgdG8gc2V2 ZXJhbAo+ID4+IGZ1bmN0aW9ucywgYnV0IHRoYXQgaXMgcmlnaHQgdGhpbmcgdG8gZG8sCj4gPj4K PiA+PiBhcyBmaWxlX3ByaXYgaXMgdGhlIGNvcnJlY3Qgc3RydWN0dXJlIGZvciB0aGUgY2FwYWJp bGl0eSBpbmZvcm1hdGlvbi4KPiA+Pgo+ID4+IDMuIENoYW5naW5nIHRoZSB1c2VybW9kZSBhc3Bl Y3QgcmF0aW8gZmxhZyBiaXRzLCB3aXRob3V0IGNoYW5nZSBpbiB0aGUKPiA+PiBwaWN0dXJlX2Fz cGVjdF9yYXRpbyB3b3VsZCBub3QgbWF0dGVyLCBhbmQgZG9lcyBub3QgbmVlZCB0byBiZSBoYW5k bGVkCj4gPj4gaW4gdGhpcyBwYXRjaC4KPiA+Pgo+ID4+Cj4gPj4gSSBqdXN0IGhhdmUgb25lIHF1 ZXJ5IGhlcmUuIFdlIGhhdmUgYWdyZWVkIHRvIG1vZGlmeQo+ID4+IGRybV9tb2RlX2NvbnZlcnRf dW1vZGUsIHRvIGZpbHRlciBvdXQgdGhlIGFzcGVjdC1yYXRpbwo+ID4+Cj4gPj4gaW5mbyBpZiB1 c2VyIGhhcyBub3Qgc2V0IGFzcGVjdC1yYXRpbyBjYXBhYmlsaXR5LCBidXQgZG8gd2UgbmVlZCBh Cj4gPj4gc2ltaWxhciBjaGFuZ2UgdGhlIGRybV9tb2RlX2NvbnZlcnRfdG9fdW1vZGU/Cj4gPiBJ IHRoaW5rIHlvdSBtYXliZSBoYWQgdGhvc2UgYmFja3dhcmRzLgo+ID4KPiA+IGRybV9tb2RlX2Nv bnZlcnRfdW1vZGUoKSwgb3IgbW9yZSBsaWtlbHkgaXRzIHJlbGV2YW50IGNhbGxlcnMgc2V0Y3J0 Ywo+ID4gYW5kIHNldHByb3BlcnR5LCBuZWVkIHRvIHJlamVjdCB0aGUgbW9kZSBpZiB0aGUgY2xp ZW50IGNhcCBpcyBub3Qgc2V0Lgo+IEkgZ3Vlc3MsIHJlamVjdGluZyB0aGUgbW9kZSwgYWx0b2dl dGhlciBjYW4gYnJlYWsgdGhlIGV4aXN0aW5nIHVzZXItc3BhY2VzLgo+IEN1cnJlbnQgdXNlci1z cGFjZXMsIG9ibGl2aW91cyBvZiB0aGUgYXNwZWN0LXJhdGlvIGNhcGFiaWxpdHkgaW4gZHJtLCAK PiB3aWxsIG5vdCBzZXQgdGhlIGFzcGVjdC1yYXRpbyBjYXBhYmlsaXR5Lgo+IFNvbWUgb2YgdGhl bSwgbWlnaHQgaGF2ZSBzb21lIGdhcmJhZ2UgdmFsdWUgaW4gdGhlIGFzcGVjdCByYXRpbyBiaXRz IG9mIAo+IHRoZSB1c2VyIG1vZGUuIElmIHdlIHJlamVjdCBzdWNoCj4gbW9kZXMsIHRoZSB1c2Vy LXNwYWNlcyB0aGF0IHdlcmUgZWFybGllciB3b3JraW5nIHdpbGwgYnJlYWsuCj4gKEJ1dCBpZiB3 ZSBhcmUgc3VyZSwgdGhhdCB0aGUgYXNwZWN0IHJhdGlvIGZsYWcgYml0cyB3aWxsIGFsbCBiZSBy ZXNldCwgCj4gdGhlbiBpdCBtYWtlcyBzZW5zZSB0byByZWplY3QgdGhlIG1vZGUuKQoKV2UgYWxy ZWFkeSByZWplY3QgYWxsIHVuc3BlY2lmaWVkIGZsYWdzLgoKPiAKPiBJbnN0ZWFkIG9mIHJlamVj dGluZyBzdWNoIG1vZGVzLCBpZiB3ZSBqdXN0IG9ubHkgaWdub3JlIHRoZSBhc3BlY3QgcmF0aW8g Cj4gYml0cyBpbiBzdWNoIGNhc2VzLCBhbmQgY2Fycnkgb24gd2l0aCB0aGUKPiBtb2Rlc2V0IGZv ciB0aGUgZ2l2ZW4gdXNlciBtb2RlLCB0aGUgYmVoYXZpb3VyIHdvdWxkIGJlIGludGFjdCwganVz dCBhcyAKPiBwcmlvciB0byB0aGUgYXNwZWN0IHJhdGlvIGNoYW5nZXMuCj4gCj4gPiBkcm1fbW9k ZV9jb252ZXJ0X3RvX3Vtb2RlKCksIG9yIHJhdGhlciBpdHMgY2FsbGVycyBnZXRibG9iIGFuZCBn ZXRjcnRjLAo+ID4gbmVlZCB0byBmaWx0ZXIgb3V0IHRoZSBmbGFncy4KPiAKPiBZZXMgcmlnaHQu IEknbGwgYmUgZmlsdGVyaW5nIG91dCB0aGUgZmxhZ3MgaW4gdGhlIGdldGJsb2IgYW5kIGdldGNy dGMgCj4gZnVuY3Rpb25zLgo+IAo+IFRoYW5rcyAmIFJlZ2FyZHMsCj4gQW5raXQKPiA+PiBJZiB3 ZSBkbywgSSBhbSBub3Qgc3VyZSBpZiBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBoYXZlIHRoZSBm aWxlX3ByaXYgdG8KPiA+PiAvZHJtX2F0b21pY19zZXRfbW9kZV9mb3JfY3J0Yy8sIHdoaWNoIGNh bGxzCj4gPj4KPiA+PiBkcm1fbW9kZV9jb252ZXJ0X3RvX3Vtb2RlLiAgVGhlIGZ1bmN0aW9uIC9k cm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjLwo+ID4+IGlzIHVzZWQgdG8gc2V0IG1vZGUsIG9y aWdpbmF0aW5nIGJ5IGtlcm5lbCwKPiA+Pgo+ID4+IGFuZCBtYWtlIGEgYmxvYiBmcm9tIHRoZSBr ZXJuZWwgbW9kZSwgd2hpY2ggaXQgc2F2ZXMgaW4gY3J0Y19zdGF0ZS4KPiA+Pgo+ID4+IFRoaXMg ZnVuY3Rpb24gLzogZHJtX2F0b21pY19zZXRfbW9kZV9mb3JfY3J0YywgL2lzIGNhbGxlZCBieSBz ZXZlcmFsCj4gPj4gaGVscGVyIGZ1bmN0aW9ucyBhbmQgZHJpdmVyIGZ1bmN0aW9ucywgYW5kIHBh c3NpbmcKPiA+Pgo+ID4+IGZpbGVfcHJpdiBmcm9tIGFsbCB0aGVzZSBmdW5jdGlvbnMgZG9lcyBu b3Qgc2VlbSB0byBiZSBwbGF1c2libGUuCj4gPiBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdG8gcGx1 bWIgaXQgcXVpdGUgdGhhdCBkZWVwLiBEb2luZyB0aGUKPiA+IGNoZWNrIGluIGRybV9hdG9taWNf Y3J0Y19zZXRfcHJvcGVydHkoKSBzaG91bGQgYmUgc3VmZmljaWVudC4KPiA+Cj4gPj4gQW55IHN1 Z2dlc3Rpb25zIG9uIGhvdyB0byBoYW5kbGUgdGhpcyBzaXR1YXRpb24/Cj4gPj4KPiA+Pgo+ID4+ IFJlZ2FyZHMsCj4gPj4KPiA+PiBBbmtpdAo+ID4+Cj4gPj4KPiA+PiBPbiAyLzgvMjAxOCA5OjU5 IEFNLCBOYXV0aXlhbCwgQW5raXQgSyB3cm90ZToKPiA+Pj4gSGkgVmlsbGUsCj4gPj4+Cj4gPj4+ IEkgc3RpbGwgaGF2ZSBzb21lIHF1ZXJpZXMgcmVnYXJkaW5nIHRoZSBoYW5kbGluZyBvZiBhc3Bl Y3QgcmF0aW8gZmxhZ3MKPiA+Pj4gaW4gZ2V0YmxvYiBpb2N0bC4KPiA+Pj4KPiA+Pj4gUGxlYXNl IGZpbmQgYmVsb3cgbXkgcmVzcG9uc2VzIGlubGluZS4KPiA+Pj4KPiA+Pj4KPiA+Pj4gT24gMi8x LzIwMTggNjoyNCBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4+Pj4gT24gVGh1LCBGZWIg MDEsIDIwMTggYXQgMDQ6MzU6MjJQTSArMDUzMCwgTmF1dGl5YWwsIEFua2l0IEsgd3JvdGU6Cj4g Pj4+Pj4gSGkgVmlsbGUsCj4gPj4+Pj4KPiA+Pj4+PiBBcHByZWNpYXRlIHlvdXIgdGltZSBhbmQg dGhlIHN1Z2dlc3Rpb25zLgo+ID4+Pj4+IFBsZWFzZSBmaW5kIG15IHJlc3BvbnNlIGlubGluZToK PiA+Pj4+Pgo+ID4+Pj4+IE9uIDEvMzEvMjAxOCA2OjM5IFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3Jv dGU6Cj4gPj4+Pj4+IE9uIFdlZCwgSmFuIDMxLCAyMDE4IGF0IDEyOjA0OjUyUE0gKzA1MzAsIE5h dXRpeWFsLCBBbmtpdCBLIHdyb3RlOgo+ID4+Pj4+Pj4gT24gMS8zMC8yMDE4IDEyOjIzIEFNLCBW aWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPj4+Pj4+Pj4gT24gRnJpLCBKYW4gMTIsIDIwMTggYXQg MTE6NTE6MzNBTSArMDUzMCwgTmF1dGl5YWwsIEFua2l0IEsgd3JvdGU6Cj4gPj4+Pj4+Pj4+IEZy b206IEFua2l0IE5hdXRpeWFsIDxhbmtpdC5rLm5hdXRpeWFsQGludGVsLmNvbT4KPiA+Pj4+Pj4+ Pj4KPiA+Pj4+Pj4+Pj4gSWYgdGhlIHVzZXIgbW9kZSBkb2VzIG5vdCBzdXBwb3J0IGFzcGVjdC1y YXRpbywgYW5kIHJlcXVlc3RzIGZvcgo+ID4+Pj4+Pj4+PiBhIG1vZGVzZXQsIHRoZW4gdGhlIGZs YWcgYml0cyByZXByZXNlbnRpbmcgYXNwZWN0IHJhdGlvIGluIHRoZQo+ID4+Pj4+Pj4+PiBnaXZl biB1c2VyLW1vZGUgbXVzdCBiZSByZWplY3RlZC4KPiA+Pj4+Pj4+Pj4gU2ltaWxhcmx5LCB3aGls ZSBwcmVwYXJpbmcgYSB1c2VyLW1vZGUgZnJvbSBrZXJuZWwgbW9kZSwgdGhlCj4gPj4+Pj4+Pj4+ IGFzcGVjdC1yYXRpbyBpbmZvIG11c3Qgbm90IGJlIGdpdmVuLCBpZiBhc3BlY3QtcmF0aW8gaXMg bm90Cj4gPj4+Pj4+Pj4+IHN1cHBvcnRlZCBieSB0aGUgdXNlci4KPiA+Pj4+Pj4+Pj4KPiA+Pj4+ Pj4+Pj4gVGhpcyBwYXRjaDoKPiA+Pj4+Pj4+Pj4gMS4gYWRkcyBhIG5ldyBiaXQgZmllbGQgYXNw ZWN0X3JhdGlvX2FsbG93ZWQgaW4gZHJtX2F0b21pY19zdGF0ZSwKPiA+Pj4+Pj4+Pj4gd2hpY2gg aXMgc2V0IG9ubHkgaWYgdGhlIGFzcGVjdC1yYXRpbyBpcyBzdXBwb3J0ZWQgYnkgdGhlIHVzZXIu Cj4gPj4+Pj4+Pj4+IDIuIGRpc2NhcmRzIHRoZSBhc3BlY3QtcmF0aW8gaW5mbyBmcm9tIHRoZSB1 c2VyIG1vZGUgd2hpbGUKPiA+Pj4+Pj4+Pj4gcHJlcGFyaW5nIGtlcm5lbCBtb2RlIHN0cnVjdHVy ZSwgZHVyaW5nIG1vZGVzZXQsIGlmIHRoZQo+ID4+Pj4+Pj4+PiB1c2VyIGRvZXMgbm90IHN1cHBv cnQgYXNwZWN0IHJhdGlvLgo+ID4+Pj4+Pj4+PiAzLiBhdm9pZHMgc2V0dGluZyB0aGUgYXNwZWN0 LXJhdGlvIGluZm8gaW4gdXNlci1tb2RlLCB3aGlsZQo+ID4+Pj4+Pj4+PiBjb252ZXJ0aW5nIHVz ZXItbW9kZSBmcm9tIHRoZSBrZXJuZWwtbW9kZS4KPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gU2ln bmVkLW9mZi1ieTogQW5raXQgTmF1dGl5YWwgPGFua2l0LmsubmF1dGl5YWxAaW50ZWwuY29tPgo+ ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBWMzogQWRkcmVzc2VkIHJldmlldyBjb21tZW50cyBmcm9t IFZpbGxlOgo+ID4+Pj4+Pj4+PiAtRG8gbm90IGNvcnJ1cHQgdGhlIGN1cnJlbnQgY3J0YyBzdGF0 ZSBieSB1cGRhdGluZyBhc3BlY3QgcmF0aW8KPiA+Pj4+Pj4+Pj4gb24gdGhlIGZseS4KPiA+Pj4+ Pj4+Pj4gLS0tCj4gPj4+Pj4+Pj4+ICAgICAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyB8 IDYxCj4gPj4+Pj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tCj4gPj4+Pj4+Pj4+ICAgICAgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgICB8IDE5ICsr KysrKysrKysrKysrCj4gPj4+Pj4+Pj4+ICAgICAgaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oICAg ICB8ICAyICsrCj4gPj4+Pj4+Pj4+ICAgICAgMyBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4+Pj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljLmMKPiA+Pj4+Pj4+Pj4gaW5kZXggNjlmZjc2My4uMzkzMTNlMiAxMDA2NDQK PiA+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4+Pj4+Pj4+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPj4+Pj4+Pj4+IEBAIC0zMTYs NiArMzE2LDM1IEBAIHN0YXRpYyBzMzIgX191c2VyCj4gPj4+Pj4+Pj4+ICpnZXRfb3V0X2ZlbmNl X2Zvcl9jcnRjKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+Pj4+Pj4+Pj4gICAg ICAgICAgICAgIHJldHVybiBmZW5jZV9wdHI7Cj4gPj4+Pj4+Pj4+ICAgICAgfQo+ID4+Pj4+Pj4+ PiArLyoqCj4gPj4+Pj4+Pj4+ICsgKiBkcm1fYXRvbWljX2FsbG93X2FzcGVjdF9yYXRpb19mb3Jf a21vZGUKPiA+Pj4+Pj4+Pj4gKyAqIEBzdGF0ZTogdGhlIGNydGMgc3RhdGUKPiA+Pj4+Pj4+Pj4g KyAqIEBtb2RlOiBrZXJuZWwtaW50ZXJuYWwgbW9kZSwgd2hpY2ggaXMgdXNlZCB0byBjcmVhdGUg YQo+ID4+Pj4+Pj4+PiBkdXBsaWNhdGUgbW9kZSwKPiA+Pj4+Pj4+Pj4gKyAqIHdpdGggdXBkYXRl ZCBwaWN0dXJlIGFzcGVjdCByYXRpby4KPiA+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+ICsgKiBB bGxvdyB0aGUgYXNwZWN0IHJhdGlvIGluZm8gaW4gdGhlIGtlcm5lbCBtb2RlIG9ubHkgaWYKPiA+ Pj4+Pj4+Pj4gYXNwZWN0IHJhdGlvIGlzCj4gPj4+Pj4+Pj4+ICsgKiBzdXBwb3J0ZWQuCj4gPj4+ Pj4+Pj4+ICsgKgo+ID4+Pj4+Pj4+PiArICogUkVUVVJOUzoKPiA+Pj4+Pj4+Pj4gKyAqIGtlcm5l bC1pbnRlcm5hbCBtb2RlIHdpdGggdXBkYXRlZCBwaWN0dXJlIGFzcGVjdCByYXRpbyB2YWx1ZS4K PiA+Pj4+Pj4+Pj4gKyAqLwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICtzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSoKPiA+Pj4+Pj4+Pj4gK2RybV9hdG9taWNfYWxsb3dfYXNwZWN0X3JhdGlvX2Zv cl9rbW9kZShzdHJ1Y3QgZHJtX2NydGNfc3RhdGUKPiA+Pj4+Pj4+Pj4gKnN0YXRlLAo+ID4+Pj4+ Pj4+PiArICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSkKPiA+Pj4+Pj4+Pj4gK3sKPiA+Pj4+Pj4+Pj4gKyAgICBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqYXRvbWljX3N0YXRlID0gc3RhdGUtPnN0YXRlOwo+ID4+Pj4+Pj4+PiArICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphcl9rbW9kZTsKPiA+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+PiAr ICAgIGFyX2ttb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKHN0YXRlLT5jcnRjLT5kZXYsIG1vZGUp Owo+ID4+Pj4+Pj4+PiArICAgIC8qCj4gPj4+Pj4+Pj4+ICsgICAgICogSWYgYXNwZWN0IHJhdGlv IGlzIG5vdCBzdXBwb3J0ZWQsIHNldCB0aGUgcGljdHVyZSBhc3BlY3QKPiA+Pj4+Pj4+Pj4gcmF0 aW8gYXMKPiA+Pj4+Pj4+Pj4gKyAgICAgKiBOT05FLgo+ID4+Pj4+Pj4+PiArICAgICAqLwo+ID4+ Pj4+Pj4+PiArICAgIGlmIChhdG9taWNfc3RhdGUgJiYgIWF0b21pY19zdGF0ZS0+YWxsb3dfYXNw ZWN0X3JhdGlvKQo+ID4+Pj4+Pj4+PiArICAgICAgICBhcl9rbW9kZS0+cGljdHVyZV9hc3BlY3Rf cmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUX05PTkU7Cj4gPj4+Pj4+Pj4+ICsgICAgcmV0dXJu IGFyX2ttb2RlOwo+ID4+Pj4+Pj4+PiArfQo+ID4+Pj4+Pj4+PiAgICAgICAgICAvKioKPiA+Pj4+ Pj4+Pj4gICAgICAgKiBkcm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjIC0gc2V0IG1vZGUgZm9y IENSVEMKPiA+Pj4+Pj4+Pj4gQEAgLTM0MSw3ICszNzAsMTAgQEAgaW50IGRybV9hdG9taWNfc2V0 X21vZGVfZm9yX2NydGMoc3RydWN0Cj4gPj4+Pj4+Pj4+IGRybV9jcnRjX3N0YXRlICpzdGF0ZSwK PiA+Pj4+Pj4+Pj4gICAgICAgICAgc3RhdGUtPm1vZGVfYmxvYiA9IE5VTEw7Cj4gPj4+Pj4+Pj4+ ICAgICAgICAgICAgICBpZiAobW9kZSkgewo+ID4+Pj4+Pj4+PiAtICAgICAgICBkcm1fbW9kZV9j b252ZXJ0X3RvX3Vtb2RlKCZ1bW9kZSwgbW9kZSk7Cj4gPj4+Pj4+Pj4+ICsgICAgICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphcl9tb2RlOwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsg ICAgICAgIGFyX21vZGUgPQo+ID4+Pj4+Pj4+PiBkcm1fYXRvbWljX2FsbG93X2FzcGVjdF9yYXRp b19mb3Jfa21vZGUoc3RhdGUsIG1vZGUpOwo+ID4+Pj4+Pj4+PiArICAgICAgICBkcm1fbW9kZV9j b252ZXJ0X3RvX3Vtb2RlKCZ1bW9kZSwgYXJfbW9kZSk7Cj4gPj4+Pj4+Pj4gVGhpcyBzdGlsbCBs b29rcyBza2V0Y2h5Lgo+ID4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gSSBiZWxpZXZlIHRoZXJlIGFyZSBq dXN0IHR3byBwbGFjZXMgd2hlcmUgd2UgbmVlZCB0byBmaWx0ZXIgb3V0IHRoZQo+ID4+Pj4+Pj4+ IGFzcGVjdCByYXRpbyBmbGFncyBmcm9tIHRoZSB1bW9kZSwgbmFtZWx5IHRoZSBnZXRibG9iIGFu ZCBnZXRjcnRjCj4gPj4+Pj4+Pj4gaW9jdGxzLgo+ID4+Pj4+Pj4gQUZBSUsgVGhlIGdldGJsb2Ig aW9jdGwgY2FuIGJlIGNhbGxlZCBmb3IgZWRpZCBibG9iLCBnYW1tYSwgY3RtIGJsb2IsCj4gPj4+ Pj4+PiBldGMuIGFwYXJ0IGZyb20gdGhlIG1vZGUgYmxvYi4KPiA+Pj4+Pj4+IElzIHRoZXJlIGFu eSB3YXkgdG8gY2hlY2sgZnJvbSBibG9iIGlkIChvciBieSBhbnkgb3RoZXIgbWVhbnMpLAo+ID4+ Pj4+Pj4gaWYgdGhlIGRhdGEgaXMgZm9yIHRoZSBtb2RlLCBvciBlZGlkLCBvciBnYW1tYSBldGMu Cj4gPj4+Pj4+IEkgdGhpbmsgd2UnZCBoYXZlIHRvIHNvbWVob3cgbWFyayB0aGUgbW9kZSBibG9i cyBhcyBzcGVjaWFsLiBVbnRpbCB3ZQo+ID4+Pj4+PiBoYXZlIG1vcmUgbmVlZCBmb3IgY2xlYW5p bmcgdXAgYmxvYnMgYmVmb3JlIHJldHVybmluZyB0aGVtIHRvCj4gPj4+Pj4+IHVzZXJzcGFjZQo+ ID4+Pj4+PiBJIHRoaW5rIGEgc2ltcGxlIGZsYWcgc2hvdWxkIGRvLiBJZiB3ZSBjb21lIHVwIHdp dGggbW9yZSB1c2VzIGxpa2UKPiA+Pj4+Pj4gdGhpcwo+ID4+Pj4+PiB0aGVuIGl0IG1pZ2h0IG1h a2Ugc2Vuc2UgdG8gaW50cm9kdWNlIHNvbWUga2luZCBvZiBvcHRpb25hbCBmaWx0ZXIKPiA+Pj4+ Pj4gZnVuY3Rpb24gZm9yIGJsb2JzLgo+ID4+Pj4+IElmIG15IHVuZGVyc3RhbmRpbmcgaXMgY29y cmVjdCwKPiA+Pj4+PiAxLiBUbyBiZSBhYmxlIHRvIGRvIHRoaXMsIHdlIG5lZWQgdG8gY2hhbmdl IGluIHVhcGkuCj4gPj4+PiBXZSBzaG91bGQgYmUgZmluZSB3aXRoIGFuIGludGVybmFsIGZsYWcu IE9idmlvdXNseSBpdCB3b24ndCBiZSBzZXQKPiA+Pj4+IGZvciBibG9icyBmcmVzaGx5IGNyZWF0 ZWQgYnkgdXNlcnNwYWNlLCBidXQgdGhhdCdzIGZpbmUgYmVjYXVzZSB3ZQo+ID4+Pj4gZG8gbm8g b3RoZXIgZXJyb3IgY2hlY2tpbmcgZm9yIHRoZW0gZWl0aGVyLiBUaGUgZXJyb3IgY2hlY2tpbmcg d2lsbAo+ID4+Pj4gaGFwcGVuIHdoZW4gdGhlIHVzZXIgdHJpZXMgdG8gYWN0dWFsbHkgdXNlIHRo ZSBibG9iLgo+ID4+PiBJIGFtIG5vdCBzdXJlIHdoeSBnZXRibG9iIGlvY3RsIHNob3VsZCBldmVu IGNvbWUgaW50byBwaWN0dXJlLgo+ID4+PiAoUGVyaGFwcyBJIGFtIG1pc3Npbmcgc29tZXRoaW5n KS4KPiA+Pj4gQXMgcGVyIG15IHVuZGVyc3RhbmRpbmc6Cj4gPj4+IElmIGEgdXNlcnNwYWNlIG5l ZWRzIHRvIHNldCBhIG1vZGUsIGl0IHdpbGwganVzdCBjcmVhdGUgYSBibG9iIHdpdGgKPiA+Pj4g ZHJtX21vZGVfbW9kZV9pbmZvLAo+ID4+PiBhbmQgZ2V0IHRoZSBibG9iLWlkLiBUaGlzIGJsb2It aWQgd291bGQgYmUgc3VwcGxpZWQgdG8KPiA+Pj4gZHJtX21vZGVfYXRvbWljX2lvY3RsIGFzIGEg Y3J0Ywo+ID4+PiBwcm9wZXJ0eSBtb2RlX2lkLgo+ID4+PiBBdCB0aGUga2VybmVsIHNpZGUsICB0 aGUgY3J0YyBwcm9wZXJ0eSBtb2RlX2lkIGlzIHNldCBieSBsb29raW5nLXVwCj4gPj4+IGZvciBt b2RlIGJsb2IgZnJvbSBibG9iIGlkLgo+ID4+PiBJIGFtIGRvaW5nIHRoZSBjaGFuZ2UgaW4gdGhl IHVzZXIgbW9kZSBhc3BlY3QtcmF0aW8gZmxhZ3MgYXQgdGhpcwo+ID4+PiBqdW5jdGlvbi4KPiA+ Pj4KPiA+Pj4gQXMgZmFyIGFzIGdldGJsb2IgaW9jdGwgaXMgY29uY2VybmVkLCBpZiB0aGUgdXNl ciBkb2VzIGNhbGwgZ2V0YmxvYgo+ID4+PiBpb2N0bCBmb3IgZ2V0dGluZyBtb2RlIGJsb2IgZnJv bQo+ID4+PiB0aGUgYmxvYiBpZCwgaXQgd2lsbCByZWNlaXZlIHRoZSBzYW1lIG1vZGUgYmxvYiwg d2l0aCBzYW1lIGFzcGVjdAo+ID4+PiByYXRpbyBpbmZvIHdoaWNoIHRoZSB1c2VyIGhhZAo+ID4+ PiBjcmVhdGVkIHVzaW5nIGNyZWF0ZSBibG9iIGlvY3RsLiBJZiBpdCBkb2VzIHdhbnQgdG8gdXNl IHRoZSBibG9iLCBpdAo+ID4+PiBoYXMgdG8gY29tZSB0aHJvdWdoIHRoZQo+ID4+PiBkcm1fbW9k ZV9hdG9taWNfaW9jdGwgd2F5LCB3aGVyZSBhc3BlY3QgcmF0aW8gZmxhZ3MgYXJlIGhhbmRsZWQu Cj4gPj4+Cj4gPj4+Pj4gMi4gV2hlbmV2ZXIgdGhlIHVzZXJzcGFjZSBjcmVhdGVzIGEgYmxvYiBm b3IgbW9kZSwgdGhlIG5ldyBmbGFnL2NsYXNzCj4gPj4+Pj4gZm9yIGJsb2IgdHlwZSBuZWVkcyB0 byBiZSBzZXQuCj4gPj4+Pj4KPiA+Pj4+PiBEbyB5b3UgdGhpbmsgdGhhdCBpdCdzIHdvcnRoIHRo ZSBlZmZvcnQ/Cj4gPj4+Pj4+PiBJZiB3ZSBjYW4gY2hlY2sgdGhhdCwgSSBjYW4gbWFrZSBzdXJl IHRoYXQgYXNwZWN0LXJhdGlvIGZsYWdzIGFyZQo+ID4+Pj4+Pj4gdGFrZW4KPiA+Pj4+Pj4+IGNh cmUgb2YsIGlmIHRoZSBibG9iIGlzIGZvciBtb2RlLAo+ID4+Pj4+Pj4gYW5kIHRoZSBhc3BlY3Qg cmF0aW8gaXMgbm90IHN1cHBvcnRlZC4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+Pj4gQW5kIGZvciBjaGVj a2luZyB0aGUgdXNlciBpbnB1dCBJIHRoaW5rIHdlIHNob3VsZCBwcm9iYWJseSBqdXN0Cj4gPj4+ Pj4+Pj4gc3RpY2sgdGhhdCBpbnRvIGRybV9tb2RlX2NvbnZlcnRfdW1vZGUoKS4gTG9va3MgbGlr ZSB3ZSBuZXZlciBjYWxsCj4gPj4+Pj4+Pj4gdGhhdCBmcm9tIGFueXdoZXJlIGJ1dCB0aGUgYXRv bWljL3NldHByb3AgYW5kIHNldGNydGMgcGF0aHMgd2l0aAo+ID4+Pj4+Pj4+IGEgbm9uLU5VTEwg YXJndW1lbnQuCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBJICp0aGluayogdGhvc2UgdGhyZWUgcGxh Y2VzIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGNvdmVyCj4gPj4+Pj4+Pj4gZXZlcnl0aGluZy4K PiA+Pj4+Pj4+IEFncmVlZC4gSW5mYWN0IEkgdHJpZWQgdG8gZG8gdGhhdCBmaXJzdCwgYnV0IHRo ZSBvbmx5IHByb2JsZW0gd2UgaGF2ZQo+ID4+Pj4+Pj4gaGVyZSwgaXMgdGhhdCwgdGhlIGZpbGVf cHJpdgo+ID4+Pj4+Pj4gd2hpY2ggaGFzIHRoZSBhc3BlY3QgcmF0aW8gY2FwYWJpbGl0eSBpbmZv cm1hdGlvbiBpcyBub3Qgc3VwcGxpZWQKPiA+Pj4+Pj4+IHRvIHRoZQo+ID4+Pj4+Pj4gZHJtX21v ZGVfY29udmVydF91bW9kZSgpCj4gPj4+Pj4+PiBvciB0aGUgZnVuY3Rpb25zIGNhbGxpbmcsIGRy bV9tb2RlX2NvbnZlcl91bW9kZSgpLiBBdCBiZXN0IHdlIGhhdmUKPiA+Pj4+Pj4+IGRybV9jcnRj X3N0YXRlLgo+ID4+Pj4+PiBTaW1wbHkgcGFzc2luZyB0aGUgZmlsZV9wcml2IGRvd24gd291bGQg c2VlbSBsaWtlIHRoZSBtb3N0IG9idmlvdXMKPiA+Pj4+Pj4gc29sdXRpb24uCj4gPj4+Pj4gVGhp cyBtZWFucyB3ZSBoYXZlIHRvIG1ha2UgY2hhbmdlIGluIHZhcmlvdXMgZHJpdmVycyBhbmQgd2Ug aGF2ZSB0bwo+ID4+Pj4+IHB1bGwKPiA+Pj4+PiB0aGUgZmlsZV9wcml2Cj4gPj4+Pj4gcGFyYW1l dGVyIHRocmVlIGxldmVscyBkb3duLiBTaG91bGQgd2UgdGhpbmsgb2YgYSBiZXR0ZXIgd2F5IGZv cgo+ID4+Pj4+IGRvaW5nIHRoaXM/Cj4gPj4+PiBDb2NjaW5lbGxlIGlzIHByZXR0eSBnb29kIGF0 IG1vZGlmeWluZyBmdW5jdGlvbiBwYXJhbWV0ZXJzLgo+ID4+PiBUaGFua3MgZm9yIHBvaW50aW5n IG91dCBDb2NjaW5lbGxlLCB3aWxsIGRlZmludGVseSB0cnkgdGhhdCBvdXQuCj4gPj4+IEJ1dCBt eSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgd2UgcmVhbGx5IHdhbnQgdG8gZHJhZyB0aGUgZmls ZV9wcml2Cj4gPj4+IGZyb20gZHJtX21vZGVfYXRvbWljX2lvY3RsIC0tPiBkcm1fbW9kZV9hdG9t aWNfc2V0X3Byb3BlcnR5IC0tPgo+ID4+PiBkcm1fYXRvbWljX2NydGNfc2V0X3Byb3BlcnR5IC0t PiBkcm1fbW9kZV9zZXRfbW9kZV9wcm9wX2Zvcl9jcnRjLS0+Cj4gPj4+IGRybV9tb2RlX2NvbnZl cnRfdW1vZGUuCj4gPj4+Cj4gPj4+IEluc3RlYWQsIEkgdHJpZWQgdG8gYWRkIGEgbmV3IGZpZWxk IChhbGxvd19hc3BlY3RfcmF0aW8pIGluCj4gPj4+IGRybV9jcnRjX3N0YXRlIHdoaWNoIGlzCj4g Pj4+IGFscmVhZHkgcGFzc2VkIGZyb20gdGhlIGRybV9tb2RlX2F0b21pY19pb2N0bCBhbGwgdGhl IHdheSB0bwo+ID4+PiBkcm1fbW9kZV9jb252ZXJ0X3Vtb2RlLgo+ID4+Pgo+ID4+Pgo+ID4+PiAt UmVnYXJkcwo+ID4+PiBBbmtpdAo+ID4+Pj4+Pj4gSSBoYXZlIGFkZGVkIGFuIGFzcGVjdCByYXRp byBhbGxvd2VkIGZsYWcgIGluCj4gPj4+Pj4+PiBkcm1fY3J0Y19zdGF0ZS0+c3RhdGUgc28KPiA+ Pj4+Pj4+IHRoYXQgaXRzIGF2YWlsYWJsZSBpbiB0aGUKPiA+Pj4+Pj4+IGZ1bmN0aW9ucyBjYWxs aW5nIGRybV9tb2RlX2NvbnZlcnRfdW1vZGUuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gSSBhbSBvcGVu IHRvIHN1Z2dlc3Rpb24gdG8gYXZvaWQgYWRkaW5nIGEgbmV3IGZsYWcgaW4KPiA+Pj4+Pj4+IGRy bV9hdG9taWNfc3RhdGUsCj4gPj4+Pj4+PiBpZiB0aGVyZSBpcyBhIGJldHRlcgo+ID4+Pj4+Pj4g d2F5IHRvIGxldCB0aGUgZHJtX21vZGVfY29udmVydF91bW9kZSggKSBrbm93IHRoYXQgdXNlciBz dXBwb3J0cwo+ID4+Pj4+Pj4gYXNwZWN0Cj4gPj4+Pj4+PiByYXRpbyBjYXBhYmlsaXR5Lgo+ID4+ Pj4+Pj4+PiAgICAgICAgICAgICAgc3RhdGUtPm1vZGVfYmxvYiA9Cj4gPj4+Pj4+Pj4+IGRybV9w cm9wZXJ0eV9jcmVhdGVfYmxvYihzdGF0ZS0+Y3J0Yy0+ZGV2LAo+ID4+Pj4+Pj4+PiBzaXplb2Yo dW1vZGUpLAo+ID4+Pj4+Pj4+PiBAQCAtMzQ5LDEwICszODEsMTEgQEAgaW50IGRybV9hdG9taWNf c2V0X21vZGVfZm9yX2NydGMoc3RydWN0Cj4gPj4+Pj4+Pj4+IGRybV9jcnRjX3N0YXRlICpzdGF0 ZSwKPiA+Pj4+Pj4+Pj4gICAgICAgICAgICAgIGlmIChJU19FUlIoc3RhdGUtPm1vZGVfYmxvYikp Cj4gPj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoc3RhdGUtPm1vZGVf YmxvYik7Cj4gPj4+Pj4+Pj4+ICAgICAgLSAgICAgICAgZHJtX21vZGVfY29weSgmc3RhdGUtPm1v ZGUsIG1vZGUpOwo+ID4+Pj4+Pj4+PiArICAgICAgICBkcm1fbW9kZV9jb3B5KCZzdGF0ZS0+bW9k ZSwgYXJfbW9kZSk7Cj4gPj4+Pj4+Pj4+ICAgICAgICAgICAgICBzdGF0ZS0+ZW5hYmxlID0gdHJ1 ZTsKPiA+Pj4+Pj4+Pj4gICAgICAgICAgICAgIERSTV9ERUJVR19BVE9NSUMoIlNldCBbTU9ERTol c10gZm9yIENSVEMgc3RhdGUgJXBcbiIsCj4gPj4+Pj4+Pj4+IC0gICAgICAgICAgICAgICAgIG1v ZGUtPm5hbWUsIHN0YXRlKTsKPiA+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgYXJfbW9kZS0+ bmFtZSwgc3RhdGUpOwo+ID4+Pj4+Pj4+PiArICAgICAgICBkcm1fbW9kZV9kZXN0cm95KHN0YXRl LT5jcnRjLT5kZXYsIGFyX21vZGUpOwo+ID4+Pj4+Pj4+PiAgICAgICAgICB9IGVsc2Ugewo+ID4+ Pj4+Pj4+PiAgICAgICAgICAgICAgbWVtc2V0KCZzdGF0ZS0+bW9kZSwgMCwgc2l6ZW9mKHN0YXRl LT5tb2RlKSk7Cj4gPj4+Pj4+Pj4+ICAgICAgICAgICAgICBzdGF0ZS0+ZW5hYmxlID0gZmFsc2U7 Cj4gPj4+Pj4+Pj4+IEBAIC00MzYsNiArNDY5LDI1IEBACj4gPj4+Pj4+Pj4+IGRybV9hdG9taWNf cmVwbGFjZV9wcm9wZXJ0eV9ibG9iX2Zyb21faWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ Pj4+Pj4+Pj4gICAgICB9Cj4gPj4+Pj4+Pj4+ICAgICAgICAgIC8qKgo+ID4+Pj4+Pj4+PiArICog ZHJtX2F0b21pY19hbGxvd19hc3BlY3RfcmF0aW9fZm9yX3Vtb2RlCj4gPj4+Pj4+Pj4+ICsgKiBA c3RhdGU6IHRoZSBjcnRjIHN0YXRlCj4gPj4+Pj4+Pj4+ICsgKiBAdW1vZGU6IHVzZXJzcGFjZSBt b2RlLCB3aG9zZSBhc3BlY3QgcmF0aW8gZmxhZyBiaXRzIGFyZSB0bwo+ID4+Pj4+Pj4+PiBiZSB1 cGRhdGVkLgo+ID4+Pj4+Pj4+PiArICoKPiA+Pj4+Pj4+Pj4gKyAqIEFsbG93IHRoZSBhc3BlY3Qg cmF0aW8gaW5mbyBpbiB0aGUgdXNlcnNwYWNlIG1vZGUgb25seSBpZgo+ID4+Pj4+Pj4+PiBhc3Bl Y3QgcmF0aW8gaXMKPiA+Pj4+Pj4+Pj4gKyAqIHN1cHBvcnRlZC4KPiA+Pj4+Pj4+Pj4gKyAqLwo+ ID4+Pj4+Pj4+PiArdm9pZAo+ID4+Pj4+Pj4+PiArZHJtX2F0b21pY19hbGxvd19hc3BlY3RfcmF0 aW9fZm9yX3Vtb2RlKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZQo+ID4+Pj4+Pj4+PiAqc3RhdGUsCj4g Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fbW9kZV9tb2RlaW5mbyAq dW1vZGUpCj4gPj4+Pj4+Pj4+ICt7Cj4gPj4+Pj4+Pj4+ICsgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKmF0b21pY19zdGF0ZSA9IHN0YXRlLT5zdGF0ZTsKPiA+Pj4+Pj4+Pj4gKwo+ID4+Pj4+ Pj4+PiArICAgIC8qIFJlc2V0IHRoZSBhc3BlY3QgcmF0aW8gZmxhZ3MgaWYgYXNwZWN0IHJhdGlv IGlzIG5vdAo+ID4+Pj4+Pj4+PiBzdXBwb3J0ZWQgKi8KPiA+Pj4+Pj4+Pj4gKyAgICBpZiAoYXRv bWljX3N0YXRlICYmICFhdG9taWNfc3RhdGUtPmFsbG93X2FzcGVjdF9yYXRpbykKPiA+Pj4+Pj4+ Pj4gKyAgICAgICAgdW1vZGUtPmZsYWdzICY9ICh+RFJNX01PREVfRkxBR19QSUNfQVJfTUFTSyk7 Cj4gPj4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4gKy8qKgo+ID4+Pj4+Pj4+ PiAgICAgICAqIGRybV9hdG9taWNfY3J0Y19zZXRfcHJvcGVydHkgLSBzZXQgcHJvcGVydHkgb24g Q1JUQwo+ID4+Pj4+Pj4+PiAgICAgICAqIEBjcnRjOiB0aGUgZHJtIENSVEMgdG8gc2V0IGEgcHJv cGVydHkgb24KPiA+Pj4+Pj4+Pj4gICAgICAgKiBAc3RhdGU6IHRoZSBzdGF0ZSBvYmplY3QgdG8g dXBkYXRlIHdpdGggdGhlIG5ldyBwcm9wZXJ0eQo+ID4+Pj4+Pj4+PiB2YWx1ZQo+ID4+Pj4+Pj4+ PiBAQCAtNDY0LDYgKzUxNiw5IEBAIGludCBkcm1fYXRvbWljX2NydGNfc2V0X3Byb3BlcnR5KHN0 cnVjdAo+ID4+Pj4+Pj4+PiBkcm1fY3J0YyAqY3J0YywKPiA+Pj4+Pj4+Pj4gICAgICAgICAgZWxz ZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX21vZGVfaWQpIHsKPiA+Pj4+Pj4+Pj4gICAg ICAgICAgICAgIHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqbW9kZSA9Cj4gPj4+Pj4+Pj4+ICAg ICAgICAgICAgICAgICAgZHJtX3Byb3BlcnR5X2xvb2t1cF9ibG9iKGRldiwgdmFsKTsKPiA+Pj4+ Pj4+Pj4gKyBkcm1fYXRvbWljX2FsbG93X2FzcGVjdF9yYXRpb19mb3JfdW1vZGUoc3RhdGUsCj4g Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8g KikKPiA+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgbW9kZS0+ZGF0YSk7Cj4gPj4+Pj4+ Pj4+ICAgICAgICAgICAgICByZXQgPSBkcm1fYXRvbWljX3NldF9tb2RlX3Byb3BfZm9yX2NydGMo c3RhdGUsIG1vZGUpOwo+ID4+Pj4+Pj4+PiAgICAgICAgICAgICAgZHJtX3Byb3BlcnR5X2Jsb2Jf cHV0KG1vZGUpOwo+ID4+Pj4+Pj4+PiAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+Pj4+Pj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gPj4+Pj4+Pj4+IGIv ZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiA+Pj4+Pj4+Pj4gaW5kZXggZjA1NTZlNi4uYTJk MzRmYSAxMDA2NDQKPiA+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMK PiA+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiA+Pj4+Pj4+Pj4g QEAgLTQyNSw2ICs0MjUsMTMgQEAgaW50IGRybV9tb2RlX2dldGNydGMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiA+Pj4+Pj4+Pj4gICAgICAgICAgZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0 ZXgsIE5VTEwpOwo+ID4+Pj4+Pj4+PiAgICAgICAgICBpZiAoY3J0Yy0+c3RhdGUpIHsKPiA+Pj4+ Pj4+Pj4gICAgICAgICAgICAgIGlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlKSB7Cj4gPj4+Pj4+Pj4+ ICsgICAgICAgICAgICAvKgo+ID4+Pj4+Pj4+PiArICAgICAgICAgICAgICogSWYgdGhlIGFzcGVj dC1yYXRpbyBpcyBub3QgcmVxdWlyZWQgYnkgdGhlLAo+ID4+Pj4+Pj4+PiArICAgICAgICAgICAg ICogdXNlcnNwYWNlLCBkbyBub3Qgc2V0IHRoZSBhc3BlY3QtcmF0aW8gZmxhZ3MuCj4gPj4+Pj4+ Pj4+ICsgICAgICAgICAgICAgKi8KPiA+Pj4+Pj4+Pj4gKyAgICAgICAgICAgIGlmICghZmlsZV9w cml2LT5hc3BlY3RfcmF0aW9fYWxsb3dlZCkKPiA+Pj4+Pj4+Pj4gKyBjcnRjLT5zdGF0ZS0+bW9k ZS5waWN0dXJlX2FzcGVjdF9yYXRpbyA9Cj4gPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAg IEhETUlfUElDVFVSRV9BU1BFQ1RfTk9ORTsKPiA+Pj4+Pj4+PiBUaGVzZSB3b3VsZCBzdGlsbCBj bG9iYmVyIHRoZSBjdXJyZW50IGNydGMgc3RhdGUuIFNvIGRlZmluaXRlbHkKPiA+Pj4+Pj4+PiBk b24ndAo+ID4+Pj4+Pj4+IHdhbnQgdG8gZG8gdGhpcy4KPiA+Pj4+Pj4+IEFscmlnaHQsIHNvIGFs dGVybmF0aXZlIHdheSBvZiBkb2luZyB0aGlzIHdpbGwgYmU6Cj4gPj4+Pj4+PiBBdm9pZCBjaGFu Z2luZyB0aGUgY3J0Yy0+c3RhdGUtPm1vZGUucGljdHVyZV9hc3BlY3RfcmF0aW8gaS5lIGtlcm5l bAo+ID4+Pj4+Pj4gbW9kZSBzdHJ1Y3R1cmUsCj4gPj4+Pj4+PiBidXQgc2V0IHRoZSBhc3BlY3Qg cmF0aW8gZmxhZ3MgaW4gdGhlIHVzZXJtb2RlIHRvIG5vbmUsIGFmdGVyCj4gPj4+Pj4+PiBjYWxs aW5nIHRoZQo+ID4+Pj4+Pj4gZHJtX21vZGVfY29udmVydF90b191bW9kZSgpLgo+ID4+Pj4+Pj4K PiA+Pj4+Pj4+IFdpbGwgdGFrZSBjYXJlIG9mIHRoaXMgaW4gdGhlIG5leHQgcGF0Y2hzZXQuCj4g Pj4+Pj4gSSBnYXZlIGEgdGhvdWdodCBhYm91dCBpdCBhZ2Fpbi4gQXMgeW91IGhhdmUgbWVudGlv bmVkIGVhcmxpZXIgdGhhdAo+ID4+Pj4+IGdldF9jcnRjIGlzIG9uZSBvZiB0aGUKPiA+Pj4+PiBw bGFjZSB3aGVyZSB0aGUgdXNlciBtb2RlIGFzcGVjdCByYXRpbyBmbGFncyBtdXN0IGJlIGZpbHRl cmVkIG91dCwgaXMKPiA+Pj4+PiB0aGlzIHdoYXQgeW91IGhhdmUKPiA+Pj4+PiBpbiBtaW5kLiBJ IGhvcGUgSSBkaWQgbm90IG1pc3VuZGVyc3RhbmQuCj4gPj4+Pj4KPiA+Pj4+PiBDaGFuZ2luZyB0 aGUgdXNlcm1vZGUgYXNwZWN0IHJhdGlvIGZsYWcgYml0cywgd2l0aG91dCBjaGFuZ2UgaW4gdGhl Cj4gPj4+Pj4gcGljdHVyZV9hc3BlY3RfcmF0aW8KPiA+Pj4+PiBrZXJuZWwgbW9kZSB3aWxsIG5v dCByZXN1bHQgaW4gYm90aCBzdHJ1Y3R1cmVzIG91dCBvZiBzeW5jPwo+ID4+Pj4gSSBkb24ndCB0 aGluayB0aGF0IHNob3VsZCByZWFsbHkgbWF0dGVyLiBJIHN1cHBvc2Ugd2UgbWlnaHQgZ2V0IG9u ZQo+ID4+Pj4gZXh0cmEgbW9kZXNldCB3aGVuIHRoZSB1c2VyIGZlZWRzIHRoYXQgbW9kZSBiYWNr IHZpYSBzZXRjcnRjL2F0b21pYywgYnV0Cj4gPj4+PiBtZWguIEFuZCBhY3R1YWxseSB0aGUgYXNw ZWN0IHJhdGlvIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgaW5mb2ZyYW1lLCBzbwo+ID4+Pj4gd2Ug c2hvdWxkIGJlIGFibGUgdG8gZXZlbnR1YWxseSBlbGltaW5hdGUgdGhhdCBleHRyYSBtb2Rlc2V0 IGFuZCBqdXN0Cj4gPj4+PiB1cGRhdGUgdGhlIGluZm9mcmFtZSBpbnN0ZWFkLgo+ID4+Pj4KPiA+ Pj4+Pj4+Pj4gZHJtX21vZGVfY29udmVydF90b191bW9kZSgmY3J0Y19yZXNwLT5tb2RlLCAmY3J0 Yy0+c3RhdGUtPm1vZGUpOwo+ID4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgIGNydGNfcmVzcC0+ bW9kZV92YWxpZCA9IDE7Cj4gPj4+Pj4+Pj4+ICAgICAgQEAgLTQzNSw2ICs0NDIsMTMgQEAgaW50 IGRybV9tb2RlX2dldGNydGMoc3RydWN0IGRybV9kZXZpY2UKPiA+Pj4+Pj4+Pj4gKmRldiwKPiA+ Pj4+Pj4+Pj4gICAgICAgICAgICAgIGNydGNfcmVzcC0+eCA9IGNydGMtPng7Cj4gPj4+Pj4+Pj4+ ICAgICAgICAgICAgICBjcnRjX3Jlc3AtPnkgPSBjcnRjLT55Owo+ID4+Pj4+Pj4+PiAgICAgICAg ICAgICAgaWYgKGNydGMtPmVuYWJsZWQpIHsKPiA+Pj4+Pj4+Pj4gKyAgICAgICAgICAgIC8qCj4g Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgKiBJZiB0aGUgYXNwZWN0LXJhdGlvIGlzIG5vdCByZXF1 aXJlZCBieSB0aGUsCj4gPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgKiB1c2Vyc3BhY2UsIGRvIG5v dCBzZXQgdGhlIGFzcGVjdC1yYXRpbyBmbGFncy4KPiA+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAq Lwo+ID4+Pj4+Pj4+PiArICAgICAgICAgICAgaWYgKCFmaWxlX3ByaXYtPmFzcGVjdF9yYXRpb19h bGxvd2VkKQo+ID4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgIGNydGMtPm1vZGUucGljdHVyZV9h c3BlY3RfcmF0aW8gPQo+ID4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICBIRE1JX1BJQ1RV UkVfQVNQRUNUX05PTkU7Cj4gPj4+Pj4+Pj4+IGRybV9tb2RlX2NvbnZlcnRfdG9fdW1vZGUoJmNy dGNfcmVzcC0+bW9kZSwgJmNydGMtPm1vZGUpOwo+ID4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAg IGNydGNfcmVzcC0+bW9kZV92YWxpZCA9IDE7Cj4gPj4+Pj4+Pj4+ICAgICAgQEAgLTYxMCw2ICs2 MjQsMTEgQEAgaW50IGRybV9tb2RlX3NldGNydGMoc3RydWN0IGRybV9kZXZpY2UKPiA+Pj4+Pj4+ Pj4gKmRldiwgdm9pZCAqZGF0YSwKPiA+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICBnb3RvIG91 dDsKPiA+Pj4+Pj4+Pj4gICAgICAgICAgICAgIH0KPiA+Pj4+Pj4+Pj4gICAgICArICAgICAgICAv KiBJZiB0aGUgdXNlciBkb2VzIG5vdCBhc2sgZm9yIGFzcGVjdCByYXRpbywgcmVzZXQKPiA+Pj4+ Pj4+Pj4gdGhlIGFzcGVjdAo+ID4+Pj4+Pj4+PiArICAgICAgICAgKiByYXRpbyBiaXRzIGluIHRo ZSB1c2VybW9kZS4KPiA+Pj4+Pj4+Pj4gKyAgICAgICAgICovCj4gPj4+Pj4+Pj4+ICsgICAgICAg IGlmICghZmlsZV9wcml2LT5hc3BlY3RfcmF0aW9fYWxsb3dlZCkKPiA+Pj4+Pj4+Pj4gKyAgICAg ICAgICAgIGNydGNfcmVxLT5tb2RlLmZsYWdzICY9ICh+RFJNX01PREVfRkxBR19QSUNfQVJfTUFT Syk7Cj4gPj4+Pj4+Pj4+ICAgICAgICAgICAgICByZXQgPSBkcm1fbW9kZV9jb252ZXJ0X3Vtb2Rl KG1vZGUsICZjcnRjX3JlcS0+bW9kZSk7Cj4gPj4+Pj4+Pj4+ICAgICAgICAgICAgICBpZiAocmV0 KSB7Cj4gPj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiSW52YWxpZCBt b2RlXG4iKTsKPiA+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWMu aCBiL2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaAo+ID4+Pj4+Pj4+PiBpbmRleCAxYzI3NTI2Li4x MzBkYWQ5IDEwMDY0NAo+ID4+Pj4+Pj4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgK PiA+Pj4+Pj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4gPj4+Pj4+Pj4+IEBA IC0yMzcsNiArMjM3LDcgQEAgc3RydWN0IF9fZHJtX3ByaXZhdGVfb2Jqc19zdGF0ZSB7Cj4gPj4+ Pj4+Pj4+ICAgICAgICogQHJlZjogY291bnQgb2YgYWxsIHJlZmVyZW5jZXMgdG8gdGhpcyBzdGF0 ZSAod2lsbCBub3QgYmUKPiA+Pj4+Pj4+Pj4gZnJlZWQgdW50aWwgemVybykKPiA+Pj4+Pj4+Pj4g ICAgICAgKiBAZGV2OiBwYXJlbnQgRFJNIGRldmljZQo+ID4+Pj4+Pj4+PiAgICAgICAqIEBhbGxv d19tb2Rlc2V0OiBhbGxvdyBmdWxsIG1vZGVzZXQKPiA+Pj4+Pj4+Pj4gKyAqIEBhbGxvd19hc3Bl Y3RfcmF0aW86IGFsbG93IHRoZSBhc3BlY3QgcmF0aW8gaW5mbyB0byBiZQo+ID4+Pj4+Pj4+PiBw YXNzZXMgdG8gdXNlcgo+ID4+Pj4+Pj4+PiAgICAgICAqIEBsZWdhY3lfY3Vyc29yX3VwZGF0ZTog aGludCB0byBlbmZvcmNlIGxlZ2FjeSBjdXJzb3IKPiA+Pj4+Pj4+Pj4gSU9DVEwgc2VtYW50aWNz Cj4gPj4+Pj4+Pj4+ICAgICAgICogQGFzeW5jX3VwZGF0ZTogaGludCBmb3IgYXN5bmNocm9ub3Vz IHBsYW5lIHVwZGF0ZQo+ID4+Pj4+Pj4+PiAgICAgICAqIEBwbGFuZXM6IHBvaW50ZXIgdG8gYXJy YXkgb2Ygc3RydWN0dXJlcyB3aXRoIHBlci1wbGFuZSBkYXRhCj4gPj4+Pj4+Pj4+IEBAIC0yNTYs NiArMjU3LDcgQEAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgewo+ID4+Pj4+Pj4+PiAgICAgICAg ICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiA+Pj4+Pj4+Pj4gICAgICAgICAgYm9vbCBh bGxvd19tb2Rlc2V0IDogMTsKPiA+Pj4+Pj4+Pj4gKyAgICBib29sIGFsbG93X2FzcGVjdF9yYXRp byA6IDE7Cj4gPj4+Pj4+Pj4+ICAgICAgICAgIGJvb2wgbGVnYWN5X2N1cnNvcl91cGRhdGUgOiAx Owo+ID4+Pj4+Pj4+PiAgICAgICAgICBib29sIGFzeW5jX3VwZGF0ZSA6IDE7Cj4gPj4+Pj4+Pj4+ ICAgICAgICAgIHN0cnVjdCBfX2RybV9wbGFuZXNfc3RhdGUgKnBsYW5lczsKPiA+Pj4+Pj4+Pj4g LS0gCj4gPj4+Pj4+Pj4+IDIuNy40Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPj4+Pj4+Pj4+IGRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKPiA+Pj4+Pj4+Pj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+ID4+Pj4+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo+ID4+Pj4+IFJlZ2FyZHMsCj4gPj4+Pj4gQW5raXQKPiAKCi0tIApWaWxs ZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=