From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [RFC 01/29] drm/i915/gvt: Introduce the basic architecture of GVT-g Date: Tue, 16 Feb 2016 14:44:32 +0200 Message-ID: <877fi4zuxb.fsf@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> <1453976511-27322-2-git-send-email-zhi.a.wang@intel.com> <1454075829.11299.48.camel@linux.intel.com> <56B197AB.5070406@intel.com> <56C2F1C4.1030309@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id A063D6E7AE for ; Tue, 16 Feb 2016 12:44:40 +0000 (UTC) In-Reply-To: <56C2F1C4.1030309@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Zhi Wang , Joonas Lahtinen , intel-gfx@lists.freedesktop.org, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAxNiBGZWIgMjAxNiwgWmhpIFdhbmcgPHpoaS5hLndhbmdAaW50ZWwuY29tPiB3cm90 ZToKPiBIaSBKb29uYXM6Cj4gICAgICBGb3IgdGhlIGRlYnVnIGZ1bmN0aW9uL21hY3JvcywgY291 bGQgd2UgdXNlIERSTV9ERUJVR19EUklWRVIgYXMgCj4gb3V0cHV0LCBidXQga2VlcCBvdXIgaW50 ZXJuYWwgZGVidWcgc3dpdGNoICYgbWFyY29zLCBsaWtlOgo+Cj4gI2RlZmluZSBndnRfZGJnX3h4 eCh4eHgsIHh4eCkgXAo+IAlpZiAoZ3Z0X2RlYnVnICYgeHh4KSBcCj4gCQlEUk1fREVCVUdfRFJJ VkVSKHh4eHh4eCkKPgo+IElzIGl0IE9LIGZvciB0aGUgbWFpbnRhaW5lcnM/IE9yIHdlIGhhdmUg dG8gdXNlIERSTV9ERUJVR19EUklWRVIgCj4gZGlyZWN0bHkgOiguCgpSYXRoZXIgdGhhbiBpbnRy b2R1Y2luZyBuZXcgZGVidWcgbWFjcm9zIG9mIHlvdXIgb3duLCBJIHRoaW5rIEknZCByYXRoZXIK c2VlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nOgoKKiBEUk1fREVCVUdfKiwgRFJN X0VSUk9SLCBhbmQgZnJpZW5kcy4KCiogZGV2X2RiZywgZGV2X2luZm8sIGRldl9lcnIsIGFuZCBm cmllbmRzLiBTZWUgdGhlIGR5bmFtaWMgZGVidWcKICBmYWNpbGl0aWVzIGZvciBmaW5lIGdyYWlu ZWQgY29udHJvbCBvZiB3aGF0IGlzIHByaW50ZWQuCgoqIHByX2RlYnVnLCBwcl9pbmZvLCBwcl9l cnIsIGFuZCBmcmllbmRzLiBTZWUgcHJfZm10IGZvciBkZWZpbmluZyBjdXN0b20KICBwcmVmaXhl cyBmb3Igd2hhdCBpcyBwcmludGVkLgoKQlIsCkphbmkuCgoKPgo+IFRoYW5rcywKPiBaaGkuCj4K PiDkuo4gMDIvMDMvMTYgMTQ6MDEsIFpoaSBXYW5nIHdyb3RlOgo+PiBIaSBKb29uYXM6Cj4+ICAg ICAgVGhhbmtzIHlvdSB2ZXJ5IG11Y2ghIFdlJ3JlIHZlcnkgZXhjaXRlZCBmb3IgcmVjZWl2aW5n IHlvdXIgYWR2aWNlCj4+IGFuZCBjb250aW51ZSB0byBiZSBvcGVuIHRvIGFueSBjb21tZW50cy4g OikKPj4KPj4gSSdtIHN1cHBvc2VkIHRoYXQgd2Ugc2hvdWxkIG1ha2UgdGhlIGFncmVlbWVudHMg b24gaTkxNSBob3N0IGNoYW5nZSBhdAo+PiB0aGUgdmVyeSBiZWdpbm5pbmcsIGFzIEknbSBjb25j ZXJuZWQgZHVyaW5nIHRoZSBkaXNjdXNzaW9uIG9mIGk5MTUgaG9zdAo+PiBjaGFuZ2UsIHlvdSBr bm93LCBtYXliZSBzb21lIGNvZGUgb2YgR1ZULWcgbmVlZHMgdG8gYmUgcmVmaW5lZCBvcgo+PiBy ZS1kZXNpZ25lZC4gU28gd2UgcHV0IHRoZSBpOTE1IGhvc3QgY2hhbmdlcyB0byB0aGUgYmVnaW5u aW5nIG9mIHRoZQo+PiBwYXRjaCBzZXQgZm9yIHRoZSBjb252ZW5pZW5jZSBvZiBkaXNjdXNzaW9u Lgo+Pgo+PiBJIHN1bW1hcml6ZSB5b3VyIGNvbW1lbnRzIGFzIGJlbG93LCB2ZXJ5IGFwcGxpY2F0 ZS4gOikKPj4KPj4gLSBSZXBsYWNlIGJvb2xlYW4gcmV0dXJuIHZhbHVlIHdpdGggaW50IGFzIG11 Y2ggYXMgcG9zc2libGUuCj4+IC0gUmVwbGFjZSBjdXN0b21pemVkIGRlYnVnIEFTU0VSVCgpIGZ1 bmN0aW9uICYgbWFjcm9zIHdpdGggRFJNX0RFQlVHXyoKPj4gLSBEb2N1bWVudCBhbGwgbm9uLXN0 YXRpYyBmdW5jdGlvbnMgbGlrZSBpOTE1Cj4+IC0gRml4IGFsbCB3aGl0ZXNwYWNlIHZpYSBzY3Jp cHRzL2NsZWFucGF0Y2gucGwKPj4gLSBDb21taXQgZnVuY3Rpb24gc3RydWN0dXJlIHJlZmluZW1l bnQuCj4+IC0gQ2hhbmdlIHRoZSByZWdpc3RlciBhY2Nlc3MgYmVoYXZpb3IganVzdCBsaWtlIHdo YXQgaTkxNSBkb2VzLgo+Pgo+PiBGb3Igb3RoZXIgY29tbWVudHMsIHNlZSBteSBjb21tZW50cyBi ZWxvdy4gOikKPj4KPj4gT24gMDEvMjkvMTYgMjE6NTcsIEpvb25hcyBMYWh0aW5lbiB3cm90ZToK Pj4+IEhpLAo+Pj4KPj4+IFRMO0RSIE92ZXJhbGwsIHdlIGhhdmUgc2FtZSBwcm9ibGVtIGFzIHdp dGggdGhlIHNjaGVkdWxlciBzZXJpZXMsIHRoZXJlCj4+PiBpcyB0b28gbXVjaCBwbGFjZWhvbGRl ciBzdHVmZiBmb3IgZWFzeSByZXZpZXcuIEp1c3Qgc3F1YXNoIGVub3VnaCBjb2RlCj4+PiBpbnRv IG9uZSBjb21taXQgc28gaXQgYWN0dWFsbHkgZG9lcyBzb21ldGhpbmcgbG9naWNhbCB0aGF0IGNh biBiZQo+Pj4gcmV2aWV3ZWQgYW5kIHRoZW4gZXh0ZW5kIGl0IGxhdGVyLiBUaGVuIGl0IGNhbiBi ZSByZXZpZXdlZCBhbmQgcHVzaGVkLgo+Pj4gSnVzdCBzcGxpdHRpbmcgdGhlIGNvZGUgZG93biB0 byBhY2hpZXZlIHNtYWxsZXIgcGF0Y2hlcyBpcyBub3QgdGhlCj4+PiByaWdodCB0aGluZyB0byBk by4KPj4+Cj4+PiBDb21tZW50cyBvbiB0aGUgb3ZlcmFsbCBjb2RlOiBZb3UgbmVlZCB0byBkb2N1 bWVudCBhbGwgaGVhZGVyIGZpbGUKPj4+IGZ1bmN0aW9ucyAoaW4gdGhlIHNvdXJjZSBmaWxlcyks IGFuZCBpdCBpcyBnb29kIHRvIGRvY3VtZW50IHRoZSBzdGF0aWMKPj4+IGZ1bmN0aW9ucyB3aXRo aW4gYSBmaWxlIHRvbywgdG8gbWFrZSBmdXR1cmUgbWFpbnRlbmFuY2UgZWFzaWVyLgo+Pj4KPj4+ IEl0IGlzIG5vdCBhYm91dCBzcGxpdHRpbmcgdGhlIGNvZGUgZG93biB0byBzbWFsbCBjaHVua3Ms IGJ1dCBzcGxpdHRpbmcKPj4+IGl0IGRvd24gdG8gc21hbGwgKmxvZ2ljYWwqIGNodW5rcy4gSXQg ZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbW1pdAo+Pj4gZG96ZW5zIG9mIGVtcHR5IGJvZGllZCBm dW5jdGlvbnMgZm9yIHJldmlldywgYW5kIHRoZW4gbGF0ZXIgYWRkIHRoZWlyCj4+PiBjb2RlLgo+ Pj4KPj4+IElmIHlvdSBhZGQgZnVuY3Rpb25zLCBvbmx5IGFkZCB0aGVtIGF0IGEgcGF0Y2ggdGhh dCB0YWtlcyB0aGVtIGludG8gdXNlCj4+PiB0b28sIHVubGVzcyB3ZSdyZSB0YWxraW5nIGFib3V0 IGdlbmVyYWwgcHVycG9zZSBzaGFyZWQgY29kZS4gQW5kIGFsc28KPj4+IHJlbWVtYmVyIHRvIGFk ZCB0aGUgZnVuY3Rpb24gYm9keSBhbmQgZG9jdW1lbnRhdGlvbiBoZWFkZXIuIElmIHlvdQo+Pj4g c2ltcGx5IGFkZCBhICJyZXR1cm4gMDsiIG9yIHNpbWlsYXIgZnVuY3Rpb24gYm9keSwgZG8gYWRk IGEgY29tbWVudCB0bwo+Pj4gd2h5IHRoZSBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdCBhbmQgd2hl biBpdCB3aWxsLgo+Pj4KPj4+IFRoZW4sIHRoZXJlIGlzIGEgdHJlbmQgb2YgaGF2aW5nIGEgYm9v bGVhbiByZXR1cm4gdmFsdWVzIGluIHRoZSBjb2RlLgo+Pj4gV2hlbiBwb3NzaWJsZSwgaXQgc2hv dWxkIHJhdGhlciBiZSBpbnQgYW5kIHRoZSBjYXVzZSBmb3IgZmFpbHVyZSBzaG91bGQKPj4+IGJl IHByb3BhZ2F0ZWQgZnJvbSB0aGUgbGFzdCBsZXZlbCBhbGwgdGhlIHdheSB0byB1cCAoLUVOT01F TiBldGMuKS4KPj4+IFRoaXMgd2F5IGRlYnVnZ2luZyBiZWNvbWVzIGVhc2llciBhbmQgaWYgbmV3 IGVycm9yIGNvbmRpdGlvbnMgYXBwZWFyLAo+Pj4gdGhlcmUgaXMgbGVzcyBvZiBhIG1haW50ZW5h bmNlIGJ1cmRlbiB0byBhZGQgdGhlIHByb3BhZ2F0aW9uIGxhdGVyLgo+Pj4KPj4+IEZpbmFsbHks IG1ha2Ugc3VyZSB0byBsb29rIGF0IHRoZSBleGlzdGluZyBkcml2ZXIgcGFydHMgYW5kCj4+PiAg ICAgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvRG9jdW1lbnRhdGlvbi9Db2RpbmdTdHlsZQo+ Pj4gZm9yIHByb3BlciBjb2Rpbmcgc3R5bGUuIFRoZXJlIGFyZSBsb3RzIG9mIHdoaXRlc3BhY2Ug Zml4ZXMgbmVlZGVkIGluCj4+PiB0aGlzIHNlcmllcywgbGlrZSBhcnJheSBpbml0aWFsaXphdGlv bnMuCj4+Pgo+Pj4gSSBob3BlIHRvIHNlZSB0aGlzIGZpcnN0IHBhdGNoIHJlcm9sbGVkIHNvIHRo YXQgeW91IHNxdWFzaCBzb21lIG9mIHRoZQo+Pj4gbGF0ZXIgY29tbWl0cyBpbnRvIGl0IHNvIHRo YXQgYWxsIGZ1bmN0aW9ucyBoYXZlIGEgYm9keSBhbmQgeW91IGFkZAo+Pj4gZG9jdW1lbnRhdGlv biBmb3IgdGhlIGZ1bmN0aW9ucyBzbyBJIGNhbiBib3RoIHNlZSB3aGF0IGl0IHNob3VsZCBkbyBh bmQKPj4+IHdoYXQgaXQgYWN0dWFsbHkgZG9lcy4gT25seSByZXJvbGwgdGhlIGZpcnN0IHBhdGNo LCB0byBrZWVwIHRoZQo+Pj4gaXRlcmF0aXZlIHN0ZXAgc21hbGxlci4gTGV0cyBvbmx5IHRoZW4g Y29udGludWUgd2l0aCB0aGUgcmVzdCBvZiB0aGUKPj4+IHNlcmllcyBvbmNlIHdlJ3ZlIHJlYWNo ZWQgYSBjb25zZW5zdXMgb24gdGhlIGZvcm1hdHRpbmcgYW5kIHN0eWxlCj4+PiBiYXNpY3MuCj4+ Pgo+Pj4gU2VlIG1vcmUgY29tbWVudHMgYmVsb3cuCj4+Pgo+Pj4gT24gdG8sIDIwMTYtMDEtMjgg YXQgMTg6MjEgKzA4MDAsIFpoaSBXYW5nIHdyb3RlOgo+Pj4+IFRoaXMgcGF0Y2ggaW50cm9kdWNl cyB0aGUgdmVyeSBiYXNpYyBmcmFtZXdvcmsgb2YgR1ZULWcgZGV2aWNlIG1vZGVsLAo+Pj4+IGlu Y2x1ZGVzIGJhc2ljIHByb3RvdHlwZXMsIGRlZmluaXRpb25zLCBpbml0aWFsaXphdGlvbi4KPj4+ PiAtLS0KPj4+PiAgIGFyY2gveDg2L2luY2x1ZGUvYXNtL3hlbi9pbnRlcmZhY2UuaCAgfCAgIDMg Kwo+Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyAgICAgICAgICB8ICAxNiArKwo+ Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICB8ICAgMiArCj4+Pj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgICAgIHwgICA1ICsKPj4+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kZWJ1Zy5oICAgICAgfCAgNzIgKysrKysrKwo+Pj4+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuYyB8ICAzNCArKysrCj4+Pj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5oIHwgMTEwICsrKysrKysrKysKPj4+ PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYyAgICAgICAgfCAzNjYKPj4+PiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZ3Z0LmggICAgICAgIHwgMTMwICsrKysrKysrKysrKwo+Pj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oICB8ICAzMCArKysKPj4+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9tcHQuaCAgICAgICAgfCAgOTcgKysrKysrKysrCj4+Pj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvcGFyYW1zLmMgICAgIHwgIDI5ICsrKwo+Pj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L3BhcmFtcy5oICAgICB8ICAzNCArKysrCj4+Pj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvcmVnLmggICAgICAgIHwgIDM0ICsrKysKPj4+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZG1hLmMgICAgICAgfCAgMTkgKysKPj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggICAgICAgfCAgIDYgKwo+Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV92Z3B1LmggICAgICB8ICAgMyArCj4+Pj4gICBpbmNsdWRlL3hlbi9pbnRlcmZhY2UveGVu LmggICAgICAgICAgIHwgICAxICsKPj4+PiAgIDE4IGZpbGVzIGNoYW5nZWQsIDk5MSBpbnNlcnRp b25zKCspCj4+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L01ha2VmaWxlCj4+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2RlYnVnLmgKPj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZmJfZGVjb2Rlci5jCj4+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaAo+Pj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYwo+Pj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAo+Pj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaAo+Pj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tcHQuaAo+Pj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuYwo+Pj4+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuaAo+Pj4+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaAo+Pj4+Cj4+Pj4gZGlmZiAtLWdp dCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3hlbi9pbnRlcmZhY2UuaAo+Pj4+IGIvYXJjaC94ODYv aW5jbHVkZS9hc20veGVuL2ludGVyZmFjZS5oCj4+Pj4gaW5kZXggNjJjYTAzZS4uNmZmNDk4NiAx MDA2NDQKPj4+PiAtLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ZW4vaW50ZXJmYWNlLmgKPj4+ PiArKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ZW4vaW50ZXJmYWNlLmgKPj4+PiBAQCAtNzMs NiArNzMsOSBAQAo+Pj4+ICAgI2VuZGlmCj4+Pj4KPj4+PiAgICNpZm5kZWYgX19BU1NFTUJMWV9f Cj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZQo+Pj4+ICsKPj4+Cj4+PiBJIGRvbid0IGZvbGxvdyB3aHkg dGhpcyB3b3VsZCBuZWVkIHRvIGJlIGFkZGVkIGlmIHRoZSBmaWxlIGlzIG5vdAo+Pj4gbW9kaWZp ZWQgb3RoZXJ3aXNlLiBFYWNoIGhlYWRlciBzaG91bGQgb25seSBpbmNsdWRlIHdoYXQgdGhleSB1 c2UuCj4+Pgo+Pj4gSWYgdGhpcyBpcyBhbiBleGlzdGluZyBidWcgKHRoYXQgeGVuL2ludGVyZmFj ZS5oIGNhbiBub3QgYmUgaW5jbHVkZWQKPj4+IHdpdGhvdXQgaW5jbHVkaW5nIGxpbnV4L3R5cGVz LmgpLCBpdCBzaG91bGQgYmUgc3BsaXQgdG8gYSBzZXBhcmF0ZQo+Pj4gcGF0Y2ggYW5kIHNlbnQg dG8gWGVuIHRlYW0uIFNhbWUgZm9yIGluY2x1ZGUveGVuL2ludGVyZmFjZS94ZW4uaC4KPj4+Cj4+ Pj4gICAvKiBFeHBsaWNpdGx5IHNpemUgaW50ZWdlcnMgdGhhdCByZXByZXNlbnQgcGZucyBpbiB0 aGUgcHVibGljCj4+Pj4gaW50ZXJmYWNlCj4+Pj4gICAgKiB3aXRoIFhlbiBzbyB0aGF0IG9uIEFS TSB3ZSBjYW4gaGF2ZSBvbmUgQUJJIHRoYXQgd29ya3MgZm9yIDMyCj4+Pj4gYW5kIDY0Cj4+Pj4g ICAgKiBiaXQgZ3Vlc3RzLiAqLwo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwo+Pj4+IGluZGV4IDA1MWVh YjMuLjg5ZmY3MjMgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZp Zwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKPj4+PiBAQCAtNDcsMyAr NDcsMTkgQEAgY29uZmlnIERSTV9JOTE1X1BSRUxJTUlOQVJZX0hXX1NVUFBPUlQKPj4+PiAgICAg ICAgIG9wdGlvbiBjaGFuZ2VzIHRoZSBkZWZhdWx0IGZvciB0aGF0IG1vZHVsZSBvcHRpb24uCj4+ Pj4KPj4+PiAgICAgICAgIElmIGluIGRvdWJ0LCBzYXkgIk4iLgo+Pj4+ICsKPj4+PiArY29uZmln IEk5MTVfR1ZUCj4+Pj4gKyAgICAgICAgdHJpc3RhdGUgIkdWVC1nIGhvc3QgZHJpdmVyIgo+Pj4+ ICsgICAgICAgIGRlcGVuZHMgb24gRFJNX0k5MTUKPj4+PiArICAgICAgICBzZWxlY3QgSVJRX1dP UksKPj4+PiArICAgICAgICBkZWZhdWx0IHkKPj4+Cj4+PiBEZWZhdWx0aW5nIHRvICJuIiB3b3Vs ZCBtYWtlIHNlbnNlIGluaXRpYWxseS4KPj4+Cj4+IFtaaGldIFN1cmUsIHdpbGwgZG8uCj4+Pj4g KyAgICAgICAgaGVscAo+Pj4+ICsgICAgICAgICAgRW5hYmxpbmcgR1ZULWcgbWVkaWF0ZWQgZ3Jh cGhpY3MgcGFzc3Rocm91Z2ggdGVjaG5pcXVlIGZvcgo+Pj4+IEludGVsIGk5MTUKPj4+PiArICAg ICAgICAgIGJhc2VkIGludGVncmF0ZWQgZ3JhcGhpY3MgY2FyZC4gV2l0aCBHVlQtZywgaXQncyBw b3NzaWJsZQo+Pj4+IHRvIGhhdmUgb25lCj4+Pj4gKyAgICAgICAgICBpbnRlZ3JhdGVkIGk5MTUg ZGV2aWNlIHNoYXJlZCBieSBtdWx0aXBsZSBWTXMuIFBlcmZvcm1hbmNlCj4+Pj4gY3JpdGljYWwK Pj4+PiArICAgICAgICAgIG9wdGVyYXRpb25zIHN1Y2ggYXMgYXBwZXJ0dXJlIGFjY2Vzc2VzIGFu ZCByaW5nIGJ1ZmZlcgo+Pj4+IG9wZXJhdGlvbnMKPj4+PiArICAgICAgICAgIGFyZSBwYXNzLXRo cm91Z2hlZCB0byBWTSwgd2l0aCBhIG1pbmltYWwgc2V0IG9mCj4+Pj4gY29uZmxpY3RpbmcgcmVz b3VyY2VzCj4+Pj4gKyAgICAgICAgICAoZS5nLiBkaXNwbGF5IHNldHRpbmdzKSBtZWRpYXRlZCBi eSB2R1QgZHJpdmVyLiBUaGUKPj4+PiBiZW5lZml0IG9mIHZHVAo+Pj4+ICsgICAgICAgICAgaXMg b24gYm90aCB0aGUgcGVyZm9ybWFuY2UsIGdpdmVuIHRoYXQgZWFjaCBWTSBjb3VsZAo+Pj4+IGRp cmVjdGx5IG9wZXJhdGUKPj4+PiArICAgICAgICAgIGl0cyBhcGVydHVyZSBzcGFjZSBhbmQgc3Vi bWl0IGNvbW1hbmRzIGxpa2UgcnVubmluZyBvbgo+Pj4+IG5hdGl2ZSwgYW5kCj4+Pj4gKyAgICAg ICAgICB0aGUgZmVhdHVyZSBjb21wbGV0ZW5lc3MsIGdpdmVuIHRoYXQgYSB0cnVlIEdFTiBoYXJk d2FyZQo+Pj4+IGlzIGV4cG9zZWQuCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+Pj4+IGlu ZGV4IDA4NTFkZTA3Li5kNGRmNDEwIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPj4+ PiBAQCAtOTEsNiArOTEsOCBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwKPj4+PiAgICAgICAg IGludGVsX3Nkdm8ubyBcCj4+Pj4gICAgICAgICBpbnRlbF90di5vCj4+Pj4KPj4+PiArb2JqLSQo Q09ORklHX0k5MTVfR1ZUKSAgKz0gZ3Z0Lwo+Pj4+ICsKPj4+PiAgICMgdmlydHVhbCBncHUgY29k ZQo+Pj4+ICAgaTkxNS15ICs9IGk5MTVfdmdwdS5vCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvTWFrZWZpbGUKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAw MDAuLjY5MzViNzgKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L01ha2VmaWxlCj4+Pj4gQEAgLTAsMCArMSw1IEBACj4+Pj4gK0dWVF9TT1VSQ0Ug Oj0gZ3Z0Lm8gcGFyYW1zLm8gZmJfZGVjb2Rlci5vCj4+Pj4gKwo+Pj4+ICtjY2ZsYWdzLXkgICAg ICAgICAgICArPSAtSSQoc3JjKSAtSSQoc3JjKS8uLiAtV2FsbCAtV2Vycm9yCj4+Pj4gLVduby11 bnVzZWQtZnVuY3Rpb24KPj4+PiAraTkxNV9ndnQteSAgICAgICAgICAgIDo9ICQoR1ZUX1NPVVJD RSkKPj4+PiArb2JqLSQoQ09ORklHX0k5MTVfR1ZUKSAgICAgICAgKz0gaTkxNV9ndnQubwo+Pj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGVidWcuaAo+Pj4+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ Pj4+IGluZGV4IDAwMDAwMDAuLjE4ZTE0NjcKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKPj4+PiBAQCAtMCwwICsxLDcyIEBACj4+ Pj4gKy8qCj4+Pj4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+Pj4gKyAqCj4+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4+Pj4gb2J0YWluaW5n IGEKPj4+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZQo+Pj4+ICJTb2Z0d2FyZSIpLAo+Pj4+ICsgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+Pj4+IGxp bWl0YXRpb24KPj4+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4+Pj4gc3VibGljZW5zZSwKPj4+PiArICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20K Pj4+PiB0aGUKPj4+PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPj4+PiArICoKPj4+PiArICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZwo+ Pj4+IHRoZSBuZXh0Cj4+Pj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbAo+Pj4+IHBvcnRpb25zIG9mIHRoZQo+Pj4+ICsgKiBTb2Z0 d2FyZS4KPj4+PiArICoKPj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCj4+Pj4gRVhQUkVTUyBPUgo+Pj4+ICsgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+ Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8KPj4+PiBFVkVOVCBTSEFMTAo+Pj4+ICsg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUwo+Pj4+IE9SIE9USEVSCj4+Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+Pj4+IEFSSVNJTkcgRlJP TSwKPj4+PiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUgo+Pj4+IERFQUxJTkdTIElOIFRIRQo+Pj4+ICsgKiBTT0ZUV0FSRS4K Pj4+PiArICovCj4+Pj4gKwo+Pj4+ICsjaWZuZGVmIF9fR1ZUX0RFQlVHX0hfXwo+Pj4+ICsjZGVm aW5lIF9fR1ZUX0RFQlVHX0hfXwo+Pj4+ICsKPj4+PiArI2RlZmluZQo+Pj4+IEFTU0VSVCh4KSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ Pj4gKyAgICAgICAgZG8KPj4+PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+Pj4+ICsgICAgICAgICAgICAgICAgaWYgKCEoeCkp Cj4+Pj4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCJBc3NlcnQgYXQgJXMgbGluZQo+Pj4+ ICVkXG4iLCAgICAgICAgICAgICAgICBcCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19GSUxFX18sCj4+Pj4gX19MSU5FX18pOyAgICAgICAgICAgICAgICAgICAgXAo+Pj4+ ICsKPj4+PiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKPj4+PiArICAgICAgICB9IHdoaWxlICgwKTsKPj4+PiArCj4+Pj4gKyNkZWZpbmUg QVNTRVJUX05VTSh4LAo+Pj4+IHkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAo+Pj4+ICsgICAgICAgIGRvCj4+Pj4geyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4+PiArICAgICAgICAg ICAgICAgIGlmICghKHgpKQo+Pj4+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aygiQXNzZXJ0 IGF0ICVzIGxpbmUgJWQgcGFyYQo+Pj4+IDB4JWxseFxuIiwgICAgXAo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywKPj4+PiAodTY0KXkpOyAg ICAgICAgICAgIFwKPj4+PiArCj4+Pj4gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4+Pj4gKyAgICAgICAgfSB3aGlsZSAoMCk7Cj4+Pj4g Kwo+Pj4KPj4+IFRoZXJlIGFscmVhZHkgaXMgV0FSTl9PTiAoYW5kIGk5MTVfZHJ2LmggbW9kaWZp ZXMgaXQgYSBsaXR0bGUpLiBEbyBub3QKPj4+IGludHJvZHVjZSBjdXN0b20gZnVuY3Rpb25zIGxp a2UgdGhpcywgaWYgdGhlIGV4aXN0aW5nIG9uZXMgbmVlZAo+Pj4gaW1wcm92ZW1lbnQsIGltcHJv dmUgdGhlbS4KPj4+Cj4+IFtaaGldIE9LLiBXaWxsIGRvIGFzIHdoYXQgaTkxNSBkb2VzCj4+Pj4g KyNkZWZpbmUgZ3Z0X2luZm8oZm10LCBhcmdzLi4uKSBcCj4+Pj4gKyAgICBwcmludGsoS0VSTl9J TkZPIltHVlQtZ10gImZtdCJcbiIsICMjYXJncykKPj4+PiArCj4+Pj4gKyNkZWZpbmUgZ3Z0X2Vy cihmbXQsIGFyZ3MuLi4pIFwKPj4+PiArICAgIHByaW50ayhLRVJOX0VSUiIlcygpIC0gJWQ6ICJm bXQiXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sICMjYXJncykKPj4+PiArCj4+Pj4gKyNkZWZpbmUg Z3Z0X3dhcm4oZm10LCBhcmdzLi4uKSBcCj4+Pj4gKyAgICBwcmludGsoS0VSTl9XQVJOSU5HIiVz KCkgLSAlZDogImZtdCJcbiIsIF9fZnVuY19fLCBfX0xJTkVfXywKPj4+PiAjI2FyZ3MpCj4+Pj4g Kwo+Pj4+ICsjZGVmaW5lIGd2dF9kYmcobGV2ZWwsIGZtdCwgYXJncy4uLikgZG8geyBcCj4+Pj4g KyAgICAgICAgaWYgKGd2dC5kZWJ1ZyAmIGxldmVsKSBcCj4+Pj4gKyAgICAgICAgICAgIHByaW50 ayhLRVJOX0RFQlVHIiVzKCkgLSAlZDogImZtdCJcbiIsIF9fZnVuY19fLAo+Pj4+IF9fTElORV9f LCAjI2FyZ3MpOyBcCj4+Pj4gKyAgICB9d2hpbGUoMCkKPj4+PiArCj4+Pj4gK2VudW0gewo+Pj4+ ICsgICAgR1ZUX0RCR19DT1JFID0gKDEgPDwgMCksCj4+Pj4gKyAgICBHVlRfREJHX01NID0gKDEg PDwgMSksCj4+Pj4gKyAgICBHVlRfREJHX0lSUSA9ICgxIDw8IDIpLAo+Pj4+ICt9Owo+Pj4+ICsK Pj4+PiArI2RlZmluZSBndnRfZGJnX2NvcmUoZm10LCBhcmdzLi4uKSBcCj4+Pj4gKyAgICBndnRf ZGJnKEdWVF9EQkdfQ09SRSwgZm10LCAjI2FyZ3MpCj4+Pj4gKwo+Pj4+ICsjZGVmaW5lIGd2dF9k YmdfbW0oZm10LCBhcmdzLi4uKSBcCj4+Pj4gKyAgICBndnRfZGJnKEdWVF9EQkdfTU0sIGZtdCwg IyNhcmdzKQo+Pj4+ICsKPj4+PiArI2RlZmluZSBndnRfZGJnX2lycShmbXQsIGFyZ3MuLi4pIFwK Pj4+PiArICAgIGd2dF9kYmcoR1ZUX0RCR19JUlEsIGZtdCwgIyNhcmdzKQo+Pj4+ICsKPj4+PiAr I2VuZGlmCj4+Pgo+Pj4gVGhpcyBzaG91bGQgYmUgaW50ZWdyYXRlZCBiZXR0ZXIgdG8gRFJNIGRl YnVnZ2luZyBvcHRpb25zLCBjdXN0b20KPj4+IGRlYnVnZ2luZyBjb2RlIG9ubHkgZm9yIGk5MTUg d2FzIHJlamVjdGVkIGEgd2hpbGUgYWdvLgo+Pj4KPj4gW1pISV0gVGhhbmtzIGZvciBzaGFyaW5n IHRoZSBoaXN0b3J5LiA6KSBXaWxsIGNoYW5nZSB0aGF0Lgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5jCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZmJfZGVjb2Rlci5jCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRl eCAwMDAwMDAwLi5hMjE5ODE5Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9mYl9kZWNvZGVyLmMKPj4+PiBAQCAtMCwwICsxLDM0IEBACj4+Pj4g Ky8qCj4+Pj4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuCj4+Pj4gKyAqCj4+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4+Pj4gb2J0YWluaW5nIGEK Pj4+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZQo+Pj4+ICJTb2Z0d2FyZSIpLAo+Pj4+ICsgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+Pj4+IGxpbWl0 YXRpb24KPj4+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsCj4+Pj4gc3VibGljZW5zZSwKPj4+PiArICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20KPj4+ PiB0aGUKPj4+PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPj4+PiArICoKPj4+PiArICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZwo+Pj4+ IHRoZSBuZXh0Cj4+Pj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbAo+Pj4+IHBvcnRpb25zIG9mIHRoZQo+Pj4+ICsgKiBTb2Z0d2Fy ZS4KPj4+PiArICoKPj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCj4+Pj4gRVhQUkVTUyBPUgo+Pj4+ICsgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+Pj4g TUVSQ0hBTlRBQklMSVRZLAo+Pj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8KPj4+PiBFVkVOVCBTSEFMTAo+Pj4+ICsgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUwo+Pj4+IE9SIE9USEVSCj4+Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+Pj4+IEFSSVNJTkcgRlJPTSwK Pj4+PiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUgo+Pj4+IERFQUxJTkdTIElOIFRIRQo+Pj4+ICsgKiBTT0ZUV0FSRS4KPj4+ PiArICovCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAiZ3Z0LmgiCj4+Pj4gKwo+Pj4+ICtpbnQgZ3Z0 X2RlY29kZV9mYl9mb3JtYXQoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsIGludCB2bWlkLCBzdHJ1 Y3QKPj4+PiBndnRfZmJfZm9ybWF0ICpmYikKPj4+PiArewo+Pj4+ICsgICAgcmV0dXJuIDA7Cj4+ Pj4gK30KPj4+PiArCj4+Pj4gK2ludCBndnRfZmJfbm90aWZpZXJfY2FsbF9jaGFpbih1bnNpZ25l ZCBsb25nIHZhbCwgdm9pZCAqZGF0YSkKPj4+PiArewo+Pj4+ICsgICAgcmV0dXJuIDA7Cj4+Pj4g K30KPj4+Cj4+PiBLZXJuZWxkb2MgbWlzc2luZyBmb3IgdGhlc2UgZnVuY3Rpb25zLiBJdCBpcyBh bGwgdGhlIHNhbWUgdG8gc3F1YXNoCj4+PiBsYXRlciBwYXRjaGVzIHRvIGludHJvZHVjZSB0aGUg Y29kZSB0byB0aGVzZSBmdW5jdGlvbnMgYWxyZWFkeSwKPj4+IHJldmlld2luZyB1dGlsaXR5IGZ1 bmN0aW9ucyB3aXRoIG5vIGtlcm5lbGRvYyBhbmQgbm8gYm9keSBtYWtlcyBpdAo+Pj4gc29tZXdo YXQgZGlmZmljdWx0IHRvIHNlZSB0aGUgYmlnIHBpY3R1cmUuCj4+Pgo+Pgo+PiBbWmhpXSBPbmUg cXVlc3Rpb24uIEkgc2F3IGk5MTUgcHV0IHNvbWUgZnVuY3Rpb24gaW5zdHJ1Y3Rpb24gaW4gKi5j LiBJcwo+PiBpdCBhbHNvIE9LIGZvciBrZXJuZWwgZG9jIGdlbmVyYXRpbmcgdGhlIHByb3BlciBk b2MgZmlsZXM/Cj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9m Yl9kZWNvZGVyLmgKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9mYl9kZWNvZGVyLmgK Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAuLjJjMjllZDQKPj4+ PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2Rl Y29kZXIuaAo+Pj4+IEBAIC0wLDAgKzEsMTEwIEBACj4+Pj4gKy8qCj4+Pj4gKyAqIENvcHlyaWdo dChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ Pj4gKyAqCj4+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uCj4+Pj4gb2J0YWluaW5nIGEKPj4+PiArICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+Pj4+ICJT b2Z0d2FyZSIpLAo+Pj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+Pj4+IGxpbWl0YXRpb24KPj4+PiArICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4+ Pj4gc3VibGljZW5zZSwKPj4+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20KPj4+PiB0aGUKPj4+PiArICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKPj4+PiArICoKPj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZwo+Pj4+IHRoZSBuZXh0Cj4+Pj4gKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbAo+ Pj4+IHBvcnRpb25zIG9mIHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZS4KPj4+PiArICoKPj4+PiArICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsCj4+Pj4gRVhQUkVTUyBPUgo+Pj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+ ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8KPj4+PiBFVkVOVCBTSEFMTAo+Pj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwo+Pj4+IE9SIE9USEVS Cj4+Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLAo+Pj4+IEFSSVNJTkcgRlJPTSwKPj4+PiArICogT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+Pj4+IERF QUxJTkdTIElOIFRIRQo+Pj4+ICsgKiBTT0ZUV0FSRS4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsj aWZuZGVmIF9HVlRfRkJfREVDT0RFUl9IXwo+Pj4+ICsjZGVmaW5lIF9HVlRfRkJfREVDT0RFUl9I Xwo+Pj4+ICsKPj4+PiArdHlwZWRlZiBlbnVtIHsKPj4+PiArICAgIEZCX01PREVfU0VUX1NUQVJU ID0gMSwKPj4+PiArICAgIEZCX01PREVfU0VUX0VORCwKPj4+PiArICAgIEZCX0RJU1BMQVlfRkxJ UCwKPj4+PiArfWd2dF9mYl9ldmVudF90Owo+Pj4+ICsKPj4+PiArdHlwZWRlZiBlbnVtIHsKPj4+ PiArICAgIERESV9QT1JUX05PTkUgICAgPSAwLAo+Pj4+ICsgICAgRERJX1BPUlRfQiAgICA9IDEs Cj4+Pj4gKyAgICBERElfUE9SVF9DICAgID0gMiwKPj4+PiArICAgIERESV9QT1JUX0QgICAgPSAz LAo+Pj4+ICsgICAgRERJX1BPUlRfRSAgICA9IDQKPj4+PiArfSBkZGlfcG9ydF90Owo+Pj4+ICsK Pj4+PiArc3RydWN0IHBndF9kZXZpY2U7Cj4+Pj4gKwo+Pj4+ICtzdHJ1Y3QgZ3Z0X2ZiX25vdGlm eV9tc2cgewo+Pj4+ICsgICAgdW5zaWduZWQgdm1faWQ7Cj4+Pj4gKyAgICB1bnNpZ25lZCBwaXBl X2lkOyAvKiBpZCBzdGFydGluZyBmcm9tIDAgKi8KPj4+PiArICAgIHVuc2lnbmVkIHBsYW5lX2lk OyAvKiBwcmltYXJ5LCBjdXJzb3IsIG9yIHNwcml0ZSAqLwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiAr LyogY29sb3Igc3BhY2UgY29udmVyc2lvbiBhbmQgZ2FtbWEgY29ycmVjdGlvbiBhcmUgbm90IGlu Y2x1ZGVkICovCj4+Pj4gK3N0cnVjdCBndnRfcHJpbWFyeV9wbGFuZV9mb3JtYXQgewo+Pj4+ICsg ICAgdTggICAgZW5hYmxlZDsgICAgLyogcGxhbmUgaXMgZW5hYmxlZCAqLwo+Pj4+ICsgICAgdTgg ICAgdGlsZWQ7ICAgICAgICAvKiBYLXRpbGVkICovCj4+Pj4gKyAgICB1OCAgICBicHA7ICAgICAg ICAvKiBiaXRzIHBlciBwaXhlbCAqLwo+Pj4+ICsgICAgdTMyICAgIGh3X2Zvcm1hdDsgICAgLyog Zm9ybWF0IGZpZWxkIGluIHRoZSBQUklfQ1RMIHJlZ2lzdGVyICovCj4+Pj4gKyAgICB1MzIgICAg ZHJtX2Zvcm1hdDsgICAgLyogZm9ybWF0IGluIERSTSBkZWZpbml0aW9uICovCj4+Pj4gKyAgICB1 MzIgICAgYmFzZTsgICAgICAgIC8qIGZyYW1lYnVmZmVyIGJhc2UgaW4gZ3JhcGhpY3MgbWVtb3J5 ICovCj4+Pj4gKyAgICB1MzIgICAgeF9vZmZzZXQ7ICAgIC8qIGluIHBpeGVscyAqLwo+Pj4+ICsg ICAgdTMyICAgIHlfb2Zmc2V0OyAgICAvKiBpbiBsaW5lcyAqLwo+Pj4+ICsgICAgdTMyICAgIHdp ZHRoOyAgICAgICAgLyogaW4gcGl4ZWxzICovCj4+Pj4gKyAgICB1MzIgICAgaGVpZ2h0OyAgICAg ICAgLyogaW4gbGluZXMgKi8KPj4+PiArICAgIHUzMiAgICBzdHJpZGU7ICAgICAgICAvKiBpbiBi eXRlcyAqLwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArc3RydWN0IGd2dF9zcHJpdGVfcGxhbmVfZm9y bWF0IHsKPj4+PiArICAgIHU4ICAgIGVuYWJsZWQ7ICAgIC8qIHBsYW5lIGlzIGVuYWJsZWQgKi8K Pj4+PiArICAgIHU4ICAgIHRpbGVkOyAgICAgICAgLyogWC10aWxlZCAqLwo+Pj4+ICsgICAgdTgg ICAgYnBwOyAgICAgICAgLyogYml0cyBwZXIgcGl4ZWwgKi8KPj4+PiArICAgIHUzMiAgICBod19m b3JtYXQ7ICAgIC8qIGZvcm1hdCBmaWVsZCBpbiB0aGUgU1BSX0NUTCByZWdpc3RlciAqLwo+Pj4+ ICsgICAgdTMyICAgIGRybV9mb3JtYXQ7ICAgIC8qIGZvcm1hdCBpbiBEUk0gZGVmaW5pdGlvbiAq Lwo+Pj4+ICsgICAgdTMyICAgIGJhc2U7ICAgICAgICAvKiBzcHJpdGUgYmFzZSBpbiBncmFwaGlj cyBtZW1vcnkgKi8KPj4+PiArICAgIHUzMiAgICB4X3BvczsgICAgICAgIC8qIGluIHBpeGVscyAq Lwo+Pj4+ICsgICAgdTMyICAgIHlfcG9zOyAgICAgICAgLyogaW4gbGluZXMgKi8KPj4+PiArICAg IHUzMiAgICB4X29mZnNldDsgICAgLyogaW4gcGl4ZWxzICovCj4+Pj4gKyAgICB1MzIgICAgeV9v ZmZzZXQ7ICAgIC8qIGluIGxpbmVzICovCj4+Pj4gKyAgICB1MzIgICAgd2lkdGg7ICAgICAgICAv KiBpbiBwaXhlbHMgKi8KPj4+PiArICAgIHUzMiAgICBoZWlnaHQ7ICAgICAgICAvKiBpbiBsaW5l cyAqLwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArc3RydWN0IGd2dF9jdXJzb3JfcGxhbmVfZm9ybWF0 IHsKPj4+PiArICAgIHU4ICAgIGVuYWJsZWQ7Cj4+Pj4gKyAgICB1OCAgICBtb2RlOyAgICAgICAg LyogY3Vyc29yIG1vZGUgc2VsZWN0ICovCj4+Pj4gKyAgICB1OCAgICBicHA7ICAgICAgICAvKiBi aXRzIHBlciBwaXhlbCAqLwo+Pj4+ICsgICAgdTMyICAgIGRybV9mb3JtYXQ7ICAgIC8qIGZvcm1h dCBpbiBEUk0gZGVmaW5pdGlvbiAqLwo+Pj4+ICsgICAgdTMyICAgIGJhc2U7ICAgICAgICAvKiBj dXJzb3IgYmFzZSBpbiBncmFwaGljcyBtZW1vcnkgKi8KPj4+PiArICAgIHUzMiAgICB4X3Bvczsg ICAgICAgIC8qIGluIHBpeGVscyAqLwo+Pj4+ICsgICAgdTMyICAgIHlfcG9zOyAgICAgICAgLyog aW4gbGluZXMgKi8KPj4+PiArICAgIHU4ICAgIHhfc2lnbjsgICAgICAgIC8qIFggUG9zaXRpb24g U2lnbiAqLwo+Pj4+ICsgICAgdTggICAgeV9zaWduOyAgICAgICAgLyogWSBQb3NpdGlvbiBTaWdu ICovCj4+Pj4gKyAgICB1MzIgICAgd2lkdGg7ICAgICAgICAvKiBpbiBwaXhlbHMgKi8KPj4+PiAr ICAgIHUzMiAgICBoZWlnaHQ7ICAgICAgICAvKiBpbiBsaW5lcyAqLwo+Pj4+ICsgICAgdTMyICAg IHhfaG90OyAgICAgICAgLyogaW4gcGl4ZWxzICovCj4+Pj4gKyAgICB1MzIgICAgeV9ob3Q7ICAg ICAgICAvKiBpbiBwaXhlbHMgKi8KPj4+PiArfTsKPj4+PiArCj4+Pgo+Pj4gVGhlIGFib3ZlIHN0 cnVjdHMgaGF2ZSBhIGxvdCBpbiBjb21tb24sIHdvdWxkIGl0IG1ha2Ugc2Vuc2UgdG8gaGF2ZSB0 aGUKPj4+IGNvbW1vbiBtZW1iZXJzICsgcGxhbmUgdHlwZSBhbmQgdGhlbiB1bmlvbiBmb3IgdGhl IHBsYW5lIHR5cGUgc3BlY2lmaWMKPj4+IGRhdGEuIEkgc3VzcGVjdCBoYXZpbmcgaXQgYWxsIHNw bGl0IHRoaXMgd2F5IHdpbGwgbGVhZCB0byBtb3JlIHV0aWxpdHkKPj4+IGZ1bmN0aW9ucyBzb21l d2hlcmUuCj4+Pgo+PiBbWmhpXSBUaGFua3MuIFdpbGwgZG8gdGhhdC4KPj4KPj4+PiArc3RydWN0 IGd2dF9waXBlX2Zvcm1hdCB7Cj4+Pj4gKyAgICBzdHJ1Y3QgZ3Z0X3ByaW1hcnlfcGxhbmVfZm9y bWF0ICAgIHByaW1hcnk7Cj4+Pj4gKyAgICBzdHJ1Y3QgZ3Z0X3Nwcml0ZV9wbGFuZV9mb3JtYXQg ICAgc3ByaXRlOwo+Pj4+ICsgICAgc3RydWN0IGd2dF9jdXJzb3JfcGxhbmVfZm9ybWF0ICAgIGN1 cnNvcjsKPj4+PiArICAgIGRkaV9wb3J0X3QgZGRpX3BvcnQ7ICAvKiB0aGUgRERJIHBvcnQgdGhh dCB0aGUgcGlwZSBpcyBjb25uZWN0ZWQKPj4+PiB0byAqLwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiAr c3RydWN0IGd2dF9mYl9mb3JtYXR7Cj4+Pj4gKyAgICBzdHJ1Y3QgZ3Z0X3BpcGVfZm9ybWF0ICAg IHBpcGVzW0k5MTVfTUFYX1BJUEVTXTsKPj4+PiArfTsKPj4+PiArCj4+Pj4gK2V4dGVybiBpbnQg Z3Z0X2ZiX25vdGlmaWVyX2NhbGxfY2hhaW4odW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKmRhdGEp Owo+Pj4+ICtleHRlcm4gaW50IGd2dF9kZWNvZGVfZmJfZm9ybWF0KHN0cnVjdCBwZ3RfZGV2aWNl ICpwZGV2LCBpbnQgdm1pZCwKPj4+PiArICAgICAgICAgICAgICAgIHN0cnVjdCBndnRfZmJfZm9y bWF0ICpmYik7Cj4+Pj4gKwo+Pj4+ICsjZW5kaWYKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0 LmMKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAuLjA0MWQxMGYK Pj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2 dC5jCj4+Pj4gQEAgLTAsMCArMSwzNjYgQEAKPj4+PiArLyoKPj4+PiArICogQ29weXJpZ2h0KGMp IDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4+PiAr ICoKPj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24KPj4+PiBvYnRhaW5pbmcgYQo+Pj4+ICsgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4+Pj4gIlNvZnR3 YXJlIiksCj4+Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0Cj4+Pj4gbGltaXRhdGlvbgo+Pj4+ICsgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPj4+PiBz dWJsaWNlbnNlLAo+Pj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+Pj4+IHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ogo+Pj4+ICsgKgo+Pj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4+Pj4gdGhlIG5leHQKPj4+PiArICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4+Pj4g cG9ydGlvbnMgb2YgdGhlCj4+Pj4gKyAqIFNvZnR3YXJlLgo+Pj4+ICsgKgo+Pj4+ICsgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwKPj4+PiBFWFBSRVNTIE9SCj4+Pj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPj4+PiBNRVJDSEFOVEFCSUxJVFksCj4+Pj4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTwo+Pj4+IEVWRU5UIFNIQUxMCj4+Pj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTCj4+Pj4gT1IgT1RIRVIKPj4+ PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCj4+Pj4gQVJJU0lORyBGUk9NLAo+Pj4+ICsgKiBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4+Pj4gREVBTElO R1MgSU4gVEhFCj4+Pj4gKyAqIFNPRlRXQVJFLgo+Pj4+ICsgKi8KPj4+PiArCj4+Pj4gKyNpbmNs dWRlCj4+Pj4gKyNpbmNsdWRlCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAiZ3Z0LmgiCj4+Pj4gKwo+ Pj4+ICtzdHJ1Y3QgZ3Z0X2hvc3QgZ3Z0X2hvc3Q7Cj4+Pj4gKwo+Pj4+ICtleHRlcm4gc3RydWN0 IGd2dF9rZXJuZWxfZG0geGVuZ3Rfa2RtOwo+Pj4+ICtleHRlcm4gc3RydWN0IGd2dF9rZXJuZWxf ZG0ga3ZtZ3Rfa2RtOwo+Pj4+ICsKPj4+PiArc3RhdGljIGNvbnN0IGNoYXIgKnN1cHBvcnRlZF9o eXBlcnZpc29yc1tdID0gewo+Pj4KPj4+IHNob3VsZCBiZSAic3RhdGljIGNvbnN0IGNoYXIgKiBj b25zdCIuCj4+Pgo+Pj4+ICsgICAgW0dWVF9IWVBFUlZJU09SX1RZUEVfWEVOXSA9ICJYZW4gSHlw ZXJ2aXNvciIsCj4+Pj4gKyAgICBbR1ZUX0hZUEVSVklTT1JfVFlQRV9LVk1dID0gIktWTSIsCj4+ Pj4gK307Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgYm9vbCBndnRfaW5pdF9ob3N0KHZvaWQpCj4+Pj4g K3sKPj4+PiArICAgIHN0cnVjdCBndnRfaG9zdCAqaG9zdCA9ICZndnRfaG9zdDsKPj4+PiArCj4+ Pj4gKyAgICBpZiAoIWd2dC5lbmFibGUpIHsKPj4+PiArICAgICAgICBndnRfZGJnX2NvcmUoIkdW VC1nIGhhcyBiZWVuIGRpc2FibGVkIGJ5IGtlcm5lbCBwYXJhbWV0ZXIiKTsKPj4+PiArICAgICAg ICByZXR1cm4gZmFsc2U7Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKGhvc3QtPmlu aXRpYWxpemVkKSB7Cj4+Pj4gKyAgICAgICAgZ3Z0X2VycigiR1ZULWcgaGFzIGFscmVhZHkgYmVl biBpbml0aWFsaXplZCEiKTsKPj4+PiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4+Pj4gKyAgICB9 Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKHhlbl9pbml0aWFsX2RvbWFpbigpKSB7Cj4+Pgo+Pj4gU2hv dWxkbid0IFhlbiBjb2RlIGJlIENPTkZJR19YRU5fRE9NMCBhbmQgQ09ORklHX1hFTiAjaWZkZWYg cHJvdGVjdGVkPwo+Pj4KPj4gW1poaV0gVGhlIGZvbGxvd2luZyBjb2RlIHBpZWNlIHNob3dzIHhl bl9pbml0aWFsX2RvbWFpbigpL3hlbl9kb21haW4oKQo+PiBjb3VsZCBhbHNvIGJlIHVzZWQgd2hl biBDT05GSUdfWEVOX0RPTTAgaXMgbm90IHNldC4KPj4KPj4gI2lmZGVmIENPTkZJR19YRU4KPj4g ZXh0ZXJuIGVudW0geGVuX2RvbWFpbl90eXBlIHhlbl9kb21haW5fdHlwZTsKPj4gI2Vsc2UKPj4g I2RlZmluZSB4ZW5fZG9tYWluX3R5cGUgICAgICAgICBYRU5fTkFUSVZFCj4+ICNlbmRpZgo+Pgo+ PiAjZGVmaW5lIHhlbl9kb21haW4oKSAgICAgICAgICAgICh4ZW5fZG9tYWluX3R5cGUgIT0gWEVO X05BVElWRSkKPj4gI2RlZmluZSB4ZW5fcHZfZG9tYWluKCkgICAgICAgICAoeGVuX2RvbWFpbigp ICYmICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeGVuX2RvbWFpbl90eXBlID09IFhFTl9QVl9ET01BSU4pCj4+ICNkZWZpbmUgeGVu X2h2bV9kb21haW4oKSAgICAgICAgKHhlbl9kb21haW4oKSAmJiAgICAgICAgICAgICAgICAgICAg ICAgIFwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9kb21haW5fdHlw ZSA9PSBYRU5fSFZNX0RPTUFJTikKPj4KPj4gI2lmZGVmIENPTkZJR19YRU5fRE9NMAo+PiAjaW5j bHVkZSA8eGVuL2ludGVyZmFjZS94ZW4uaD4KPj4gI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNv ci5oPgo+Pgo+PiAjZGVmaW5lIHhlbl9pbml0aWFsX2RvbWFpbigpICAgICh4ZW5fZG9tYWluKCkg JiYgXAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3N0YXJ0X2luZm8g JiYKPj4geGVuX3N0YXJ0X2luZm8tPmZsYWdzICYgU0lGX0lOSVRET01BSU4pCj4+ICNlbHNlICAv KiAhQ09ORklHX1hFTl9ET00wICovCj4+ICNkZWZpbmUgeGVuX2luaXRpYWxfZG9tYWluKCkgICAg KDApCj4+ICNlbmRpZiAgLyogQ09ORklHX1hFTl9ET00wICovCj4+Cj4+Pj4gKyAgICAgICAgLyog WGVuIERvbTAgKi8KPj4+PiArICAgICAgICBob3N0LT5rZG0gPSB0cnlfdGhlbl9yZXF1ZXN0X21v ZHVsZShzeW1ib2xfZ2V0KHhlbmd0X2tkbSksCj4+Pj4gInhlbmd0Iik7Cj4+Pj4gKyAgICAgICAg aG9zdC0+aHlwZXJ2aXNvcl90eXBlID0gR1ZUX0hZUEVSVklTT1JfVFlQRV9YRU47Cj4+Pj4gKyAg ICB9IGVsc2UgaWYoeGVuX2RvbWFpbigpKSB7Cj4+Pj4gKyAgICAgICAgLyogWGVuIERvbVUgKi8K Pj4+PiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4+Pj4gKyAgICB9IGVsc2Ugewo+Pj4+ICsgICAg ICAgIC8qIG5vdCBpbiBYZW4uIFRyeSBLVk1HVCAqLwo+Pj4+ICsgICAgICAgIGhvc3QtPmtkbSA9 IHRyeV90aGVuX3JlcXVlc3RfbW9kdWxlKHN5bWJvbF9nZXQoa3ZtZ3Rfa2RtKSwKPj4+PiAia3Zt Iik7Cj4+Pj4gKyAgICAgICAgaG9zdC0+aHlwZXJ2aXNvcl90eXBlID0gR1ZUX0hZUEVSVklTT1Jf VFlQRV9LVk07Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4KPj4+IFdoeSBkbyB3ZSBuZWVkIHRvIGtl ZXAgdHJhY2sgb2YgaHlwZXJ2aXNvciB0eXBlLCBhcmUgdGhlcmUgcGxlbnR5IG9mCj4+PiBoeXBl cnZpc29yIHNwZWNpZmljIGJlaGF2aW91ciBkaWZmZXJlbmNlcz8KPj4KPj4gW1poaV0gQXMgR1ZU LWcgbmVlZHMgc29tZSBoeXBlcnZpc29yIHNlcnZpY2VzIHRvIHdvcmssIHdlIHdyaXRlIGEKPj4g YWJzdHJhY3Rpb24gbGF5ZXIgdG8gY29ubmVjdCBHVlQtZyB0byBkaWZmZXJlbnQgaHlwZXJ2aXNv ci4gQnV0IHN0aWxsCj4+IHRoZXJlIGFyZSBzb21lIGVtdWxhdGlvbiBsb2dpYyBjb3VsZG4ndCBi ZSBmaXR0ZWQgaW50byB0aGF0IGFic3RyYWN0aW9uCj4+IGxheWVyLCBsaWtlIE9wUmVnaW9uIGVt dWxhdGlvbi4gSW4gWGVuLCB3ZSBlbXVsYXRlcyBpdCBpbiBrZXJuZWwgc3BhY2UsCj4+IHdoaWxl IHdlIGVtdWxhdGVzIGl0IGluIFFlbXUgdW5kZXIgS1ZNLiBJIGFsc28gYWdyZWVkIHRoYXQgd2Ug c2hvdWxkCj4+IGZpbmQgc29tZSBhcHByb2FjaCB0byBpbXByb3ZlIGl0IGp1c3QgbGlrZSB3aGF0 IHlvdSBzYWlkLgo+Pgo+PiBJZiBpdCBpcyBqdXN0IGZvciBwcmludGluZwo+Pj4gdGhlIGJlbG93 IGRlYnVnLCBJIHRoaW5rIGl0J3MgYmV0dGVyIHRvIG1vdmUgdGhlIGRlYnVnIGludG8gYWJvdmUg Y29kZQo+Pj4gdGhhdCBkZXRlY3RzIHRoZSBoeXBlcnZpc29yLCB3cmFwIHRoZW0gd2l0aCBhcHBy b3ByaWF0ZSBDT05GSUcgI2lmZGVmcy4KPj4+Cj4+Pj4gKyAgICBpZiAoIWhvc3QtPmtkbSkKPj4+ PiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKCFoeXBlcnZpc29y X2RldGVjdF9ob3N0KCkpCj4+Pj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+ICsKPj4+PiAr ICAgIGd2dF9pbmZvKCJSdW5uaW5nIHdpdGggaHlwZXJ2aXNvciAlcyBpbiBob3N0IG1vZGUiLAo+ Pj4+ICsgICAgICAgICAgICBzdXBwb3J0ZWRfaHlwZXJ2aXNvcnNbaG9zdC0+aHlwZXJ2aXNvcl90 eXBlXSk7Cj4+Pj4gKwo+Pj4+ICsgICAgaWRyX2luaXQoJmhvc3QtPmRldmljZV9pZHIpOwo+Pj4+ ICsgICAgbXV0ZXhfaW5pdCgmaG9zdC0+ZGV2aWNlX2lkcl9sb2NrKTsKPj4+PiArCj4+Pj4gKyAg ICBob3N0LT5pbml0aWFsaXplZCA9IHRydWU7Cj4+Pj4gKyAgICByZXR1cm4gdHJ1ZTsKPj4+PiAr fQo+Pj4+ICsKPj4+PiArc3RhdGljIGJvb2wgaW5pdF9kZXZpY2VfaW5mbyhzdHJ1Y3QgcGd0X2Rl dmljZSAqcGRldikKPj4+PiArewo+Pj4+ICsgICAgc3RydWN0IGd2dF9kZXZpY2VfaW5mbyAqaW5m byA9ICZwZGV2LT5kZXZpY2VfaW5mbzsKPj4+PiArCj4+Pj4gKyAgICBpZiAoIUlTX0JST0FEV0VM TChwZGV2LT5kZXZfcHJpdikpIHsKPj4+PiArICAgICAgICBndnRfZXJyKCJVbnN1cHBvcnRlZCBH RU4gZGV2aWNlIik7Cj4+Pj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+ICsgICAgfQo+Pj4+ ICsKPj4+PiArICAgIGlmIChJU19CUk9BRFdFTEwocGRldi0+ZGV2X3ByaXYpKSB7Cj4+Pj4gKyAg ICAgICAgaW5mby0+bWF4X2d0dF9nbV9zeiA9ICgxVUwgPDwgMzIpOwo+Pj4+ICsgICAgICAgIC8q Cj4+Pj4gKyAgICAgICAgICogVGhlIGxheW91dCBvZiBCQVIwIGluIEJEVzoKPj4+PiArICAgICAg ICAgKiB8PCAtIE1NSU8gMk1CIC0+fDwtIFJlc2VydmVkIDZNQiAtPnw8LSBNQVggR1RUIDhNQi0+ fAo+Pj4+ICsgICAgICAgICAqCj4+Pj4gKyAgICAgICAgICogR1RUIG9mZnNldCBpbiBCQVIwIHN0 YXJ0cyBmcm9tIDhNQiB0byAxNk1CLCBhbmQKPj4+PiArICAgICAgICAgKiBXaGF0ZXZlciBHVFQg c2l6ZSBpcyBjb25maWd1cmVkIGluIEJJT1MsCj4+Pj4gKyAgICAgICAgICogdGhlIHNpemUgb2Yg QkFSMCBpcyBhbHdheXMgMTZNQi4gVGhlIGFjdHVhbCBjb25maWd1cmVkCj4+Pj4gKyAgICAgICAg ICogR1RUIHNpemUgY2FuIGJlIGZvdW5kIGluIEdNQ0hfQ1RSTC4KPj4+PiArICAgICAgICAgKi8K Pj4+PiArICAgICAgICBpbmZvLT5ndHRfc3RhcnRfb2Zmc2V0ID0gKDFVTCA8PCAyMyk7Cj4+Pj4g KyAgICAgICAgaW5mby0+bWF4X2d0dF9zaXplID0gKDFVTCA8PCAyMyk7Cj4+Pj4gKyAgICAgICAg aW5mby0+Z3R0X2VudHJ5X3NpemUgPSA4Owo+Pj4+ICsgICAgICAgIGluZm8tPmd0dF9lbnRyeV9z aXplX3NoaWZ0ID0gMzsKPj4+PiArICAgICAgICBpbmZvLT5nbWFkcl9ieXRlc19pbl9jbWQgPSA4 Owo+Pj4KPj4+IFdvdWxkIHRoaXMgaW5mb3JtYXRpb24gYmUgdXNlZnVsIGluIGEgaGVhZGVyIGFz ICNkZWZpbmVzIHRvbz8KPj4+Cj4+IFtaaGldIFByb2JhYmx5LiBDb25zaWRlciB0aGF0IG9uZSBH VlQtZyBmZWF0dXJlZCBrZXJuZWwgY291bGQgYmUgYWJsZSB0bwo+PiBydW4gb24gZGlmZmVyZW50 IHBsYXRmb3JtcywgdGhlIGluZm9ybWFpb24gZGF0YSBzdHJ1Y3R1cmUgY291bGQgYmUKPj4gZGlm ZmVyZW50LiBCdXQgSSBhZ3JlZSB0byBkZWZpbmUgdGhlIG1hZ2ljIG51bWJlcnMgaW4gYSBoZWFk ZXIgZmlsZXMuIDopCj4+Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgZ3Z0X2luZm8oIkRl dmljZSBpbmZvOiIpOwo+Pj4+ICsgICAgcHJpbnRrKCIgICAgICAgIG1heF9ndHRfZ21fc3o6ICVs bHhcbiIsIGluZm8tPm1heF9ndHRfZ21fc3opOwo+Pj4+ICsgICAgcHJpbnRrKCIgICAgICAgIG1h eF9ndHRfc2l6ZTogJXhcbiIsIGluZm8tPm1heF9ndHRfc2l6ZSk7Cj4+Pj4gKyAgICBwcmludGso IiAgICAgICAgZ3R0X3NpemVfZW50cnk6ICV4XG4iLCBpbmZvLT5ndHRfZW50cnlfc2l6ZSk7Cj4+ Pj4gKyAgICBwcmludGsoIiAgICAgICAgZ3R0X2VudHJ5X3NpemVfc2hpZnQ6ICV4XG4iLAo+Pj4+ IGluZm8tPmd0dF9lbnRyeV9zaXplX3NoaWZ0KTsKPj4+PiArICAgIHByaW50aygiICAgICAgICBn dHRfc3RhcnRfb2Zmc2V0OiAleFxuIiwgaW5mby0+Z3R0X3N0YXJ0X29mZnNldCk7Cj4+Pj4gKyAg ICBwcmludGsoIiAgICAgICAgZ3R0X2VuZF9vZmZzZXQ6ICV4XG4iLCBpbmZvLT5ndHRfZW5kX29m ZnNldCk7Cj4+Pj4gKwo+Pj4KPj4+IEp1c3QgcHV0IHRoaXMgdG8ga2luZCBvZiBzdHVmZiB0byBp OTE1X2RlYnVnZnMuYy4KPj4+Cj4+IFtaaGldIFRoYW5rcy4KPj4KPj4+PiArICAgIHJldHVybiB0 cnVlOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9pZCBpbml0X2luaXRpYWxfY2ZnX3Nw YWNlX3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQo+Pj4+ICt7Cj4+Pj4gKyAgICBzdHJ1 Y3QgcGNpX2RldiAqcGNpX2RldiA9IHBkZXYtPmRldl9wcml2LT5kZXYtPnBkZXY7Cj4+Pj4gKyAg ICBpbnQgaTsKPj4+PiArCj4+Pj4gKyAgICBndnRfZGJnX2NvcmUoImluaXQgaW5pdGlhbCBjZmcg c3BhY2UsIGlkICVkIiwgcGRldi0+aWQpOwo+Pj4+ICsKPj4+PiArICAgIGZvciAoaSA9IDA7IGkg PCBHVlRfQ0ZHX1NQQUNFX1NaOyBpICs9IDQpCj4+Pgo+Pj4gKz0gc2l6ZW9mKC4uLikKPj4+Cj4+ Pj4gKyAgICAgICAgcGNpX3JlYWRfY29uZmlnX2R3b3JkKHBjaV9kZXYsIGksCj4+Pj4gKyAgICAg ICAgICAgICAgICAodTMyICopJnBkZXYtPmluaXRpYWxfY2ZnX3NwYWNlW2ldKTsKPj4+PiArCj4+ Pj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4+Pgo+Pj4gTm8gbWFnaWMgbnVtYmVy cyBtYWtlIGEgI2RlZmluZSBmb3IgMyBhbmQgZ2l2ZSBpdCBhIGRlc2NyaXB0aXZlIG5hbWUuCj4+ Pgo+Pj4+ICsgICAgICAgIHBkZXYtPmJhcl9zaXplW2ldID0gcGNpX3Jlc291cmNlX2xlbihwY2lf ZGV2LCBpICogMik7Cj4+Pj4gKyAgICAgICAgZ3Z0X2luZm8oImJhciAlZCBzaXplOiAlbGx4Iiwg aSwgcGRldi0+YmFyX3NpemVbaV0pOwo+Pj4+ICsgICAgfQo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtz dGF0aWMgdm9pZCBjbGVhbl9pbml0aWFsX21taW9fc3RhdGUoc3RydWN0IHBndF9kZXZpY2UgKnBk ZXYpCj4+Pj4gK3sKPj4+PiArICAgIGlmIChwZGV2LT5ndHRtbWlvX3ZhKSB7Cj4+Pj4gKyAgICAg ICAgaW91bm1hcChwZGV2LT5ndHRtbWlvX3ZhKTsKPj4+PiArICAgICAgICBwZGV2LT5ndHRtbWlv X3ZhID0gTlVMTDsKPj4+PiArICAgIH0KPj4+PiArCj4+Pj4gKyAgICBpZiAocGRldi0+Z21hZHJf dmEpIHsKPj4+PiArICAgICAgICBpb3VubWFwKHBkZXYtPmdtYWRyX3ZhKTsKPj4+PiArICAgICAg ICBwZGV2LT5nbWFkcl92YSA9IE5VTEw7Cj4+Pj4gKyAgICB9Cj4+Pj4gK30KPj4+PiArCj4+Pj4g K3N0YXRpYyBib29sIGluaXRfaW5pdGlhbF9tbWlvX3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2KQo+Pj4+ICt7Cj4+Pj4gKyAgICB1NjQgYmFyMCwgYmFyMTsKPj4+PiArCj4+Pj4gKyAgICBn dnRfZGJnX2NvcmUoImluaXQgaW5pdGlhbCBtbWlvIHN0YXRlLCBpZCAlZCIsIHBkZXYtPmlkKTsK Pj4+PiArCj4+Pj4gKyAgICBiYXIwID0gKih1NjQgKikmcGRldi0+aW5pdGlhbF9jZmdfc3BhY2Vb R1ZUX1JFR19DRkdfU1BBQ0VfQkFSMF07Cj4+Pj4gKyAgICBiYXIxID0gKih1NjQgKikmcGRldi0+ aW5pdGlhbF9jZmdfc3BhY2VbR1ZUX1JFR19DRkdfU1BBQ0VfQkFSMV07Cj4+Pj4gKwo+Pj4+ICsg ICAgcGRldi0+Z3R0bW1pb19iYXNlID0gYmFyMCAmIH4weGY7Cj4+Pj4gKyAgICBwZGV2LT5tbWlv X3NpemUgPSAyICogMTAyNCAqIDEwMjQ7Cj4+Pj4gKyAgICBwZGV2LT5yZWdfbnVtID0gcGRldi0+ bW1pb19zaXplIC8gNDsKPj4+PiArICAgIHBkZXYtPmdtYWRyX2Jhc2UgPSBiYXIxICYgfjB4ZjsK Pj4+PiArCj4+Pgo+Pj4gTWFueSBtYWdpYyBudW1iZXJzLgo+Pj4KPj4+PiArICAgIHBkZXYtPmd0 dG1taW9fdmEgPSBpb3JlbWFwKHBkZXYtPmd0dG1taW9fYmFzZSwgcGRldi0+YmFyX3NpemVbMF0p Owo+Pj4+ICsgICAgaWYgKCFwZGV2LT5ndHRtbWlvX3ZhKSB7Cj4+Pj4gKyAgICAgICAgZ3Z0X2Vy cigiZmFpbCB0byBtYXAgR1RUTU1JTyBCQVIuIik7Cj4+Pgo+Pj4gVGhlc2Ugc2hvdWxkIGJlIGlm KFdBUk5fT04oLi4uKSkKPj4+Cj4+Pj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+ICsgICAg fQo+Pj4+ICsKPj4+PiArICAgIHBkZXYtPmdtYWRyX3ZhID0gaW9yZW1hcChwZGV2LT5nbWFkcl9i YXNlLCBwZGV2LT5iYXJfc2l6ZVsyXSk7Cj4+Pj4gKyAgICBpZiAoIXBkZXYtPmdtYWRyX3ZhKSB7 Cj4+Pj4gKyAgICAgICAgZ3Z0X2VycigiZmFpbCB0byBtYXAgR01BRFIgQkFSLiIpOwo+Pj4+ICsg ICAgICAgIGdvdG8gZXJyOwo+Pj4+ICsgICAgfQo+Pj4+ICsKPj4+PiArICAgIGd2dF9pbmZvKCJi YXIwOiAweCVsbHgsIGJhcjE6IDB4JWxseCIsIGJhcjAsIGJhcjEpOwo+Pj4+ICsgICAgZ3Z0X2lu Zm8oIm1taW8gc2l6ZTogJXgiLCBwZGV2LT5tbWlvX3NpemUpOwo+Pj4+ICsgICAgZ3Z0X2luZm8o Imd0dG1taW86IDB4JWxseCwgZ21hZHI6IDB4JWxseCIsIHBkZXYtPmd0dG1taW9fYmFzZSwKPj4+ PiBwZGV2LT5nbWFkcl9iYXNlKTsKPj4+PiArICAgIGd2dF9pbmZvKCJndHRtbWlvX3ZhOiAlcCIs IHBkZXYtPmd0dG1taW9fdmEpOwo+Pj4+ICsgICAgZ3Z0X2luZm8oImdtYWRyX3ZhOiAlcCIsIHBk ZXYtPmdtYWRyX3ZhKTsKPj4+PiArCj4+Pj4gKyAgICByZXR1cm4gdHJ1ZTsKPj4+PiArZXJyOgo+ Pj4+ICsgICAgY2xlYW5faW5pdGlhbF9tbWlvX3N0YXRlKHBkZXYpOwo+Pj4+ICsgICAgcmV0dXJu IGZhbHNlOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50IGd2dF9zZXJ2aWNlX3RocmVh ZCh2b2lkICpkYXRhKQo+Pj4+ICt7Cj4+Pj4gKyAgICBzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9 IChzdHJ1Y3QgcGd0X2RldmljZSAqKWRhdGE7Cj4+Pj4gKyAgICBpbnQgcjsKPj4+PiArCj4+Pj4g KyAgICBndnRfZGJnX2NvcmUoInNlcnZpY2UgdGhyZWFkIHN0YXJ0LCBwZ3QgJWQiLCBwZGV2LT5p ZCk7Cj4+Pj4gKwo+Pj4+ICsgICAgd2hpbGUoIWt0aHJlYWRfc2hvdWxkX3N0b3AoKSkgewo+Pj4+ ICsgICAgICAgIHIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUocGRldi0+c2VydmljZV90aHJl YWRfd3EsCj4+Pj4gKyAgICAgICAgICAgICAgICBrdGhyZWFkX3Nob3VsZF9zdG9wKCkgfHwgcGRl di0+c2VydmljZV9yZXF1ZXN0KTsKPj4+PiArCj4+Pj4gKyAgICAgICAgaWYgKGt0aHJlYWRfc2hv dWxkX3N0b3AoKSkKPj4+PiArICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gKwo+Pj4+ICsgICAgICAg IGlmIChyKSB7Cj4+Pj4gKyAgICAgICAgICAgIGd2dF93YXJuKCJzZXJ2aWNlIHRocmVhZCBpcyB3 YWtlbiB1cCBieSB1bmV4cGVjdGVkCj4+Pj4gc2lnbmFsLiIpOwo+Pj4KPj4+IFNob3VsZCBiZSBX QVJOX09OQ0UsIHRvIGF2b2lkIGZ1dHVyZSBkaXNhc3RlcnMgd2l0aCBDSS4KPj4+Cj4+IFtaaGld IFRoYW5rcy4KPj4+PiArICAgICAgICAgICAgY29udGludWU7Cj4+Pj4gKyAgICAgICAgfQo+Pj4+ ICsgICAgfQo+Pj4+ICsgICAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyB2 b2lkIGNsZWFuX3NlcnZpY2VfdGhyZWFkKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQo+Pj4+ICt7 Cj4+Pj4gKyAgICBpZiAocGRldi0+c2VydmljZV90aHJlYWQpIHsKPj4+PiArICAgICAgICBrdGhy ZWFkX3N0b3AocGRldi0+c2VydmljZV90aHJlYWQpOwo+Pj4+ICsgICAgICAgIHBkZXYtPnNlcnZp Y2VfdGhyZWFkID0gTlVMTDsKPj4+PiArICAgIH0KPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGlj IGJvb2wgaW5pdF9zZXJ2aWNlX3RocmVhZChzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKPj4+PiAr ewo+Pj4+ICsgICAgaW5pdF93YWl0cXVldWVfaGVhZCgmcGRldi0+c2VydmljZV90aHJlYWRfd3Ep Owo+Pj4+ICsKPj4+PiArICAgIHBkZXYtPnNlcnZpY2VfdGhyZWFkID0ga3RocmVhZF9ydW4oZ3Z0 X3NlcnZpY2VfdGhyZWFkLAo+Pj4+ICsgICAgICAgICAgICBwZGV2LCAiZ3Z0X3NlcnZpY2VfdGhy ZWFkJWQiLCBwZGV2LT5pZCk7Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKCFwZGV2LT5zZXJ2aWNlX3Ro cmVhZCkgewo+Pj4+ICsgICAgICAgIGd2dF9lcnIoImZhaWwgdG8gc3RhcnQgc2VydmljZSB0aHJl YWQuIik7Cj4+Pj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+ICsgICAgfQo+Pj4+ICsKPj4+ PiArICAgIHJldHVybiB0cnVlOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9pZCBjbGVh bl9wZ3RfZGV2aWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQo+Pj4+ICt7Cj4+Pj4gKyAgICBj bGVhbl9zZXJ2aWNlX3RocmVhZChwZGV2KTsKPj4+PiArICAgIGNsZWFuX2luaXRpYWxfbW1pb19z dGF0ZShwZGV2KTsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIGJvb2wgaW5pdF9wZ3RfZGV2 aWNlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LCBzdHJ1Y3QKPj4+PiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4+PiArewo+Pj4+ICsgICAgaWYgKCFpbml0X2RldmljZV9pbmZvKHBkZXYp KQo+Pj4+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPj4+PiArCj4+Pj4gKyAgICBpbml0X2luaXRp YWxfY2ZnX3NwYWNlX3N0YXRlKHBkZXYpOwo+Pj4+ICsKPj4+PiArICAgIGlmICghaW5pdF9pbml0 aWFsX21taW9fc3RhdGUocGRldikpCj4+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4+Pj4gKwo+Pj4+ ICsgICAgaWYgKCFpbml0X3NlcnZpY2VfdGhyZWFkKHBkZXYpKQo+Pj4+ICsgICAgICAgIGdvdG8g ZXJyOwo+Pj4+ICsKPj4+PiArICAgIHJldHVybiB0cnVlOwo+Pj4+ICtlcnI6Cj4+Pj4gKyAgICBj bGVhbl9wZ3RfZGV2aWNlKHBkZXYpOwo+Pj4+ICsgICAgcmV0dXJuIGZhbHNlOwo+Pj4+ICt9Cj4+ Pj4gKwo+Pj4+ICtzdGF0aWMgYm9vbCBwb3N0X2luaXRfcGd0X2RldmljZShzdHJ1Y3QgcGd0X2Rl dmljZSAqcGRldikKPj4+PiArewo+Pj4+ICsgICAgcmV0dXJuIHRydWU7Cj4+Pj4gK30KPj4+PiAr Cj4+Pj4gK3N0YXRpYyB2b2lkIGZyZWVfcGd0X2RldmljZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRl dikKPj4+PiArewo+Pj4+ICsgICAgc3RydWN0IGd2dF9ob3N0ICpob3N0ID0gJmd2dF9ob3N0Owo+ Pj4+ICsKPj4+PiArICAgIG11dGV4X2xvY2soJmhvc3QtPmRldmljZV9pZHJfbG9jayk7Cj4+Pj4g KyAgICBpZHJfcmVtb3ZlKCZob3N0LT5kZXZpY2VfaWRyLCBwZGV2LT5pZCk7Cj4+Pj4gKyAgICBt dXRleF91bmxvY2soJmhvc3QtPmRldmljZV9pZHJfbG9jayk7Cj4+Pj4gKwo+Pj4+ICsgICAgdmZy ZWUocGRldik7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgcGd0X2RldmljZSAq YWxsb2NfcGd0X2RldmljZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+Pj4+ICpkZXZfcHJpdikK Pj4+PiArewo+Pj4+ICsgICAgc3RydWN0IGd2dF9ob3N0ICpob3N0ID0gJmd2dF9ob3N0Owo+Pj4+ ICsgICAgc3RydWN0IHBndF9kZXZpY2UgKnBkZXYgPSBOVUxMOwo+Pj4+ICsKPj4+PiArICAgIHBk ZXYgPSB2emFsbG9jKHNpemVvZigqcGRldikpOwo+Pj4+ICsgICAgaWYgKCFwZGV2KSB7Cj4+Pj4g KyAgICAgICAgZ3Z0X2VycigiZmFpbCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHBndCBkZXZpY2Uu Iik7Cj4+Pj4gKyAgICAgICAgcmV0dXJuIE5VTEw7Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4+ICsg ICAgbXV0ZXhfbG9jaygmaG9zdC0+ZGV2aWNlX2lkcl9sb2NrKTsKPj4+PiArICAgIHBkZXYtPmlk ID0gaWRyX2FsbG9jKCZob3N0LT5kZXZpY2VfaWRyLCBwZGV2LCAwLCAwLCBHRlBfS0VSTkVMKTsK Pj4+PiArICAgIG11dGV4X3VubG9jaygmaG9zdC0+ZGV2aWNlX2lkcl9sb2NrKTsKPj4+PiArCj4+ Pj4gKyAgICBpZiAocGRldi0+aWQgPCAwKSB7Cj4+Pj4gKyAgICAgICAgZ3Z0X2VycigiZmFpbCB0 byBhbGxvY2F0ZSBwZ3QgZGV2aWNlIGlkLiIpOwo+Pj4+ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4+ ICsgICAgfQo+Pj4+ICsKPj4+PiArICAgIG11dGV4X2luaXQoJnBkZXYtPmxvY2spOwo+Pj4+ICsg ICAgcGRldi0+ZGV2X3ByaXYgPSBkZXZfcHJpdjsKPj4+PiArICAgIGlkcl9pbml0KCZwZGV2LT5p bnN0YW5jZV9pZHIpOwo+Pj4+ICsKPj4+PiArICAgIHJldHVybiBwZGV2Owo+Pj4+ICtlcnI6Cj4+ Pj4gKyAgICBmcmVlX3BndF9kZXZpY2UocGRldik7Cj4+Pj4gKyAgICByZXR1cm4gTlVMTDsKPj4+ PiArfQo+Pj4+ICsKPj4+PiArdm9pZCBndnRfZGVzdHJveV9wZ3RfZGV2aWNlKHZvaWQgKnByaXZh dGVfZGF0YSkKPj4+PiArewo+Pj4+ICsgICAgc3RydWN0IHBndF9kZXZpY2UgKnBkZXYgPSAoc3Ry dWN0IHBndF9kZXZpY2UgKilwcml2YXRlX2RhdGE7Cj4+Pj4gKwo+Pj4+ICsgICAgY2xlYW5fcGd0 X2RldmljZShwZGV2KTsKPj4+PiArICAgIGZyZWVfcGd0X2RldmljZShwZGV2KTsKPj4+PiArfQo+ Pj4+ICsKPj4+PiArdm9pZCAqZ3Z0X2NyZWF0ZV9wZ3RfZGV2aWNlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPj4+PiArewo+Pj4+ICsgICAgc3RydWN0IHBndF9kZXZpY2UgKnBk ZXYgPSBOVUxMOwo+Pj4+ICsgICAgc3RydWN0IGd2dF9ob3N0ICpob3N0ID0gJmd2dF9ob3N0Owo+ Pj4+ICsKPj4+PiArICAgIGlmICghaG9zdC0+aW5pdGlhbGl6ZWQgJiYgIWd2dF9pbml0X2hvc3Qo KSkgewo+Pj4+ICsgICAgICAgIGd2dF9lcnIoImd2dF9pbml0X2hvc3QgZmFpbCIpOwo+Pj4+ICsg ICAgICAgIHJldHVybiBOVUxMOwo+Pj4+ICsgICAgfQo+Pj4+ICsKPj4+PiArICAgIGd2dF9kYmdf Y29yZSgiY3JlYXRlIG5ldyBwZ3QgZGV2aWNlLCBpOTE1IGRldl9wcml2OiAlcCIsIGRldl9wcml2 KTsKPj4+PiArCj4+Pj4gKyAgICBwZGV2ID0gYWxsb2NfcGd0X2RldmljZShkZXZfcHJpdik7Cj4+ Pj4gKyAgICBpZiAoIXBkZXYpIHsKPj4+PiArICAgICAgICBndnRfZXJyKCJmYWlsIHRvIGFsbG9j YXRlIG1lbW9yeSBmb3IgcGd0IGRldmljZS4iKTsKPj4+PiArICAgICAgICBnb3RvIGVycjsKPj4+ PiArICAgIH0KPj4+PiArCj4+Pj4gKyAgICBndnRfZGJnX2NvcmUoImluaXQgcGd0IGRldmljZSwg aWQgJWQiLCBwZGV2LT5pZCk7Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKCFpbml0X3BndF9kZXZpY2Uo cGRldiwgZGV2X3ByaXYpKSB7Cj4+Pj4gKyAgICAgICAgZ3Z0X2VycigiZmFpbCB0byBpbml0IHBo eXNpY2FsIGRldmljZSBzdGF0ZS4iKTsKPj4+PiArICAgICAgICBnb3RvIGVycjsKPj4+PiArICAg IH0KPj4+PiArCj4+Pj4gKyAgICBndnRfZGJnX2NvcmUoInBndCBkZXZpY2UgY3JlYXRpb24gZG9u ZSwgaWQgJWQiLCBwZGV2LT5pZCk7Cj4+Pj4gKwo+Pj4+ICsgICAgcmV0dXJuIHBkZXY7Cj4+Pj4g K2VycjoKPj4+PiArICAgIGlmIChwZGV2KSB7Cj4+Pj4gKyAgICAgICAgZ3Z0X2Rlc3Ryb3lfcGd0 X2RldmljZShwZGV2KTsKPj4+PiArICAgICAgICBwZGV2ID0gTlVMTDsKPj4+PiArICAgIH0KPj4+ PiArICAgIHJldHVybiBOVUxMOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtib29sIGd2dF9wb3N0X2lu aXRfcGd0X2RldmljZSh2b2lkICpwcml2YXRlX2RhdGEpCj4+Pj4gK3sKPj4+PiArICAgIHN0cnVj dCBwZ3RfZGV2aWNlICpwZGV2ID0gKHN0cnVjdCBwZ3RfZGV2aWNlICopcHJpdmF0ZV9kYXRhOwo+ Pj4+ICsgICAgc3RydWN0IGd2dF9ob3N0ICpob3N0ID0gJmd2dF9ob3N0Owo+Pj4+ICsKPj4+PiAr ICAgIGlmICghaG9zdC0+aW5pdGlhbGl6ZWQpIHsKPj4+PiArICAgICAgICBndnRfZXJyKCJndnRf aG9zdCBoYXZlbid0IGJlZW4gaW5pdGlhbGl6ZWQuIik7Cj4+Pj4gKyAgICAgICAgcmV0dXJuIGZh bHNlOwo+Pj4+ICsgICAgfQo+Pj4+ICsKPj4+PiArICAgIGd2dF9kYmdfY29yZSgicG9zdCBpbml0 IHBndCBkZXZpY2UgJWQiLCBwZGV2LT5pZCk7Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKCFwb3N0X2lu aXRfcGd0X2RldmljZShwZGV2KSkgewo+Pj4+ICsgICAgICAgIGd2dF9lcnIoImZhaWwgdG8gcG9z dCBpbml0IHBoeXNpY2FsIGRldmljZSBzdGF0ZS4iKTsKPj4+PiArICAgICAgICByZXR1cm4gZmFs c2U7Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgcmV0dXJuIHRydWU7Cj4+Pj4gK30KPj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4+Pj4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+ IGluZGV4IDAwMDAwMDAuLjZjODViYmEKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4+Pj4gQEAgLTAsMCArMSwxMzAgQEAKPj4+PiAr LyoKPj4+PiArICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC4KPj4+PiArICoKPj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPj4+PiBvYnRhaW5pbmcgYQo+ Pj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlCj4+Pj4gIlNvZnR3YXJlIiksCj4+Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4+Pj4gbGltaXRh dGlvbgo+Pj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwKPj4+PiBzdWJsaWNlbnNlLAo+Pj4+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+Pj4+ IHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+Pj4+ICsgKgo+Pj4+ICsgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4+Pj4g dGhlIG5leHQKPj4+PiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsCj4+Pj4gcG9ydGlvbnMgb2YgdGhlCj4+Pj4gKyAqIFNvZnR3YXJl Lgo+Pj4+ICsgKgo+Pj4+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPj4+PiBFWFBSRVNTIE9SCj4+Pj4gKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPj4+PiBN RVJDSEFOVEFCSUxJVFksCj4+Pj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTwo+Pj4+IEVWRU5UIFNIQUxMCj4+Pj4gKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTCj4+Pj4gT1IgT1RIRVIKPj4+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4+Pj4gQVJJU0lORyBGUk9NLAo+ Pj4+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSCj4+Pj4gREVBTElOR1MgSU4gVEhFCj4+Pj4gKyAqIFNPRlRXQVJFLgo+Pj4+ ICsgKi8KPj4+PiArCj4+Pj4gKyNpZm5kZWYgX0dWVF9IXwo+Pj4+ICsjZGVmaW5lIF9HVlRfSF8K Pj4+PiArCj4+Pj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+Pj4+ICsjaW5jbHVkZSAiaTkxNV92 Z3B1LmgiCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAiZGVidWcuaCIKPj4+PiArI2luY2x1ZGUgInBh cmFtcy5oIgo+Pj4+ICsjaW5jbHVkZSAicmVnLmgiCj4+Pj4gKyNpbmNsdWRlICJoeXBlcmNhbGwu aCIKPj4+PiArI2luY2x1ZGUgIm1wdC5oIgo+Pj4+ICsjaW5jbHVkZSAiZmJfZGVjb2Rlci5oIgo+ Pj4+ICsKPj4+PiArI2RlZmluZSBHVlRfTUFYX1ZHUFUgOAo+Pj4+ICsKPj4+PiArZW51bSB7Cj4+ Pj4gKyAgICBHVlRfSFlQRVJWSVNPUl9UWVBFX1hFTiA9IDAsCj4+Pj4gKyAgICBHVlRfSFlQRVJW SVNPUl9UWVBFX0tWTSwKPj4+PiArfTsKPj4+PiArCj4+Pj4gK3N0cnVjdCBndnRfaG9zdCB7Cj4+ Pj4gKyAgICBib29sIGluaXRpYWxpemVkOwo+Pj4+ICsgICAgaW50IGh5cGVydmlzb3JfdHlwZTsK Pj4+PiArICAgIHN0cnVjdCBtdXRleCBkZXZpY2VfaWRyX2xvY2s7Cj4+Pj4gKyAgICBzdHJ1Y3Qg aWRyIGRldmljZV9pZHI7Cj4+Pj4gKyAgICBzdHJ1Y3QgZ3Z0X2tlcm5lbF9kbSAqa2RtOwo+Pj4+ ICt9Owo+Pj4+ICsKPj4+PiArZXh0ZXJuIHN0cnVjdCBndnRfaG9zdCBndnRfaG9zdDsKPj4+PiAr Cj4+Pj4gKy8qIERlc2NyaWJlIHRoZSBsaW1pdGF0aW9uIG9mIEhXLiovCj4+Pj4gK3N0cnVjdCBn dnRfZGV2aWNlX2luZm8gewo+Pj4+ICsgICAgdTY0IG1heF9ndHRfZ21fc3o7Cj4+Pj4gKyAgICB1 MzIgZ3R0X3N0YXJ0X29mZnNldDsKPj4+PiArICAgIHUzMiBndHRfZW5kX29mZnNldDsKPj4+PiAr ICAgIHUzMiBtYXhfZ3R0X3NpemU7Cj4+Pj4gKyAgICB1MzIgZ3R0X2VudHJ5X3NpemU7Cj4+Pj4g KyAgICB1MzIgZ3R0X2VudHJ5X3NpemVfc2hpZnQ7Cj4+Pj4gKyAgICB1MzIgZ21hZHJfYnl0ZXNf aW5fY21kOwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArc3RydWN0IHZndF9kZXZpY2Ugewo+Pj4+ICsg ICAgaW50IGlkOwo+Pj4+ICsgICAgaW50IHZtX2lkOwo+Pj4+ICsgICAgc3RydWN0IHBndF9kZXZp Y2UgKnBkZXY7Cj4+Pj4gKyAgICBib29sIHdhcm5fdW50cmFjazsKPj4+PiArfTsKPj4+PiArCj4+ Pj4gK3N0cnVjdCBwZ3RfZGV2aWNlIHsKPj4+PiArICAgIHN0cnVjdCBtdXRleCBsb2NrOwo+Pj4+ ICsgICAgaW50IGlkOwo+Pj4+ICsKPj4+PiArICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdjsKPj4+PiArICAgIHN0cnVjdCBpZHIgaW5zdGFuY2VfaWRyOwo+Pj4+ICsKPj4+PiAr ICAgIHN0cnVjdCBndnRfZGV2aWNlX2luZm8gZGV2aWNlX2luZm87Cj4+Pj4gKwo+Pj4+ICsgICAg dTggaW5pdGlhbF9jZmdfc3BhY2VbR1ZUX0NGR19TUEFDRV9TWl07Cj4+Pj4gKyAgICB1NjQgYmFy X3NpemVbR1ZUX0JBUl9OVU1dOwo+Pj4+ICsKPj4+PiArICAgIHU2NCBndHRtbWlvX2Jhc2U7Cj4+ Pj4gKyAgICB2b2lkICpndHRtbWlvX3ZhOwo+Pj4+ICsKPj4+PiArICAgIHU2NCBnbWFkcl9iYXNl Owo+Pj4+ICsgICAgdm9pZCAqZ21hZHJfdmE7Cj4+Pj4gKwo+Pj4+ICsgICAgdTMyIG1taW9fc2l6 ZTsKPj4+PiArICAgIHUzMiByZWdfbnVtOwo+Pj4+ICsKPj4+PiArICAgIHdhaXRfcXVldWVfaGVh ZF90IHNlcnZpY2VfdGhyZWFkX3dxOwo+Pj4+ICsgICAgc3RydWN0IHRhc2tfc3RydWN0ICpzZXJ2 aWNlX3RocmVhZDsKPj4+PiArICAgIHVuc2lnbmVkIGxvbmcgc2VydmljZV9yZXF1ZXN0Owo+Pj4+ ICt9Owo+Pj4+ICsKPj4+Cj4+PiBIZXJlLS0+Cj4+Pgo+Pj4+ICtzdGF0aWMgaW5saW5lIHUzMiBn dnRfbW1pb19yZWFkKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LAo+Pj4+ICsgICAgICAgIHUzMiBy ZWcpCj4+Pj4gK3sKPj4+PiArICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHBkZXYtPmRldl9wcml2Owo+Pj4+ICsgICAgaTkxNV9yZWdfdCB0bXAgPSB7LnJlZyA9IHJlZ307 Cj4+Pj4gKyAgICByZXR1cm4gSTkxNV9SRUFEKHRtcCk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0 YXRpYyBpbmxpbmUgdm9pZCBndnRfbW1pb193cml0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwK Pj4+PiArICAgICAgICB1MzIgcmVnLCB1MzIgdmFsKQo+Pj4+ICt7Cj4+Pj4gKyAgICBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwZGV2LT5kZXZfcHJpdjsKPj4+PiArICAgIGk5 MTVfcmVnX3QgdG1wID0gey5yZWcgPSByZWd9Owo+Pj4+ICsgICAgSTkxNV9XUklURSh0bXAsIHZh bCk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbmxpbmUgdTY0IGd2dF9tbWlvX3JlYWQ2 NChzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwKPj4+PiArICAgICAgICB1MzIgcmVnKQo+Pj4+ICt7 Cj4+Pj4gKyAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwZGV2LT5kZXZf cHJpdjsKPj4+PiArICAgIGk5MTVfcmVnX3QgdG1wID0gey5yZWcgPSByZWd9Owo+Pj4+ICsgICAg cmV0dXJuIEk5MTVfUkVBRDY0KHRtcCk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbmxp bmUgdm9pZCBndnRfbW1pb193cml0ZTY0KHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LAo+Pj4+ICsg ICAgICAgIHUzMiByZWcsIHU2NCB2YWwpCj4+Pj4gK3sKPj4+PiArICAgIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHBkZXYtPmRldl9wcml2Owo+Pj4+ICsgICAgaTkxNV9yZWdf dCB0bXAgPSB7LnJlZyA9IHJlZ307Cj4+Pj4gKyAgICBJOTE1X1dSSVRFNjQodG1wLCB2YWwpOwo+ Pj4+ICt9Cj4+Pj4gKwo+Pj4KPj4+IDwtLSBXaHk/IFRoZSBpOTE1X3JlZ190IHR5cGUgd2FzIGFk ZGVkIHRvIGF2b2lkIHByb2JsZW1zLCB0aGlzIGNvZGUgaXMKPj4+IG5vdCB1c2VkIGFueXdoZXJl LCBhbmQgaXQgaGFzIG5vIGRvY3VtZW50YXRpb24sIHNvIEkgY2FuIG5vdCByZXZpZXcgaXQuCj4+ Pgo+Pj4gSSB3cm90ZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIHRoZSBwb3N0Lgo+Pj4KPj4gW1po aV0gVGhhbmtzLCBJIHdpbGwgY2hlY2sgdGhhdC4KPj4KPj4+IFJlZ2FyZHMsIEpvb25hcwo+Pj4K Pj4+PiArI2VuZGlmCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9o eXBlcmNhbGwuaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oCj4+ Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwLi4wYTQxODc0Cj4+Pj4g LS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9oeXBlcmNh bGwuaAo+Pj4+IEBAIC0wLDAgKzEsMzAgQEAKPj4+PiArLyoKPj4+PiArICogQ29weXJpZ2h0KGMp IDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4+PiAr ICoKPj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24KPj4+PiBvYnRhaW5pbmcgYQo+Pj4+ICsgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4+Pj4gIlNvZnR3 YXJlIiksCj4+Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0Cj4+Pj4gbGltaXRhdGlvbgo+Pj4+ICsgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPj4+PiBz dWJsaWNlbnNlLAo+Pj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+Pj4+IHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ogo+Pj4+ICsgKgo+Pj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4+Pj4gdGhlIG5leHQKPj4+PiArICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4+Pj4g cG9ydGlvbnMgb2YgdGhlCj4+Pj4gKyAqIFNvZnR3YXJlLgo+Pj4+ICsgKgo+Pj4+ICsgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwKPj4+PiBFWFBSRVNTIE9SCj4+Pj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPj4+PiBNRVJDSEFOVEFCSUxJVFksCj4+Pj4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTwo+Pj4+IEVWRU5UIFNIQUxMCj4+Pj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTCj4+Pj4gT1IgT1RIRVIKPj4+ PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCj4+Pj4gQVJJU0lORyBGUk9NLAo+Pj4+ICsgKiBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4+Pj4gREVBTElO R1MgSU4gVEhFCj4+Pj4gKyAqIFNPRlRXQVJFLgo+Pj4+ICsgKi8KPj4+PiArCj4+Pj4gKyNpZm5k ZWYgX0dWVF9IWVBFUkNBTExfSF8KPj4+PiArI2RlZmluZSBfR1ZUX0hZUEVSQ0FMTF9IXwo+Pj4+ ICsKPj4+PiArc3RydWN0IGd2dF9rZXJuZWxfZG0gewo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArI2Vu ZGlmIC8qIF9HVlRfSFlQRVJDQUxMX0hfICovCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9tcHQuaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21wdC5o Cj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwLi5iYmU0NDY1Cj4+ Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tcHQu aAo+Pj4+IEBAIC0wLDAgKzEsOTcgQEAKPj4+PiArLyoKPj4+PiArICogQ29weXJpZ2h0KGMpIDIw MTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4+PiArICoK Pj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24KPj4+PiBvYnRhaW5pbmcgYQo+Pj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4+Pj4gIlNvZnR3YXJl IiksCj4+Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0Cj4+Pj4gbGltaXRhdGlvbgo+Pj4+ICsgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPj4+PiBzdWJs aWNlbnNlLAo+Pj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+Pj4+IHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ Pj4+ICsgKgo+Pj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4+Pj4gdGhlIG5leHQKPj4+PiArICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4+Pj4gcG9y dGlvbnMgb2YgdGhlCj4+Pj4gKyAqIFNvZnR3YXJlLgo+Pj4+ICsgKgo+Pj4+ICsgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwK Pj4+PiBFWFBSRVNTIE9SCj4+Pj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPj4+PiBNRVJDSEFOVEFCSUxJVFksCj4+Pj4gKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO Two+Pj4+IEVWRU5UIFNIQUxMCj4+Pj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTCj4+Pj4gT1IgT1RIRVIKPj4+PiAr ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsCj4+Pj4gQVJJU0lORyBGUk9NLAo+Pj4+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4+Pj4gREVBTElOR1Mg SU4gVEhFCj4+Pj4gKyAqIFNPRlRXQVJFLgo+Pj4+ICsgKi8KPj4+PiArCj4+Pj4gKyNpZm5kZWYg X0dWVF9NUFRfSF8KPj4+PiArI2RlZmluZSBfR1ZUX01QVF9IXwo+Pj4+ICsKPj4+PiArc3RydWN0 IHZndF9kZXZpY2U7Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgaHlw ZXJ2aXNvcl9nMm1fcGZuKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsCj4+Pj4gKyAgICB1bnNpZ25l ZCBsb25nIGdfcGZuKQo+Pj4+ICt7Cj4+Pj4gKyAgICByZXR1cm4gMDsKPj4+PiArfQo+Pj4+ICsK Pj4+PiArc3RhdGljIGlubGluZSBpbnQgaHlwZXJ2aXNvcl9wYXVzZV9kb21haW4oc3RydWN0IHZn dF9kZXZpY2UgKnZndCkKPj4+PiArewo+Pj4+ICsgICAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiAr Cj4+Pj4gK3N0YXRpYyBpbmxpbmUgaW50IGh5cGVydmlzb3Jfc2h1dGRvd25fZG9tYWluKHN0cnVj dCB2Z3RfZGV2aWNlICp2Z3QpCj4+Pj4gK3sKPj4+PiArICAgIHJldHVybiAwOwo+Pj4+ICt9Cj4+ Pj4gKwo+Pj4+ICtzdGF0aWMgaW5saW5lIGludCBoeXBlcnZpc29yX3NldF90cmFwX2FyZWEoc3Ry dWN0IHZndF9kZXZpY2UgKnZndCwKPj4+PiArICAgIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBl bmQsIGJvb2wgbWFwKQo+Pj4+ICt7Cj4+Pj4gKyAgICByZXR1cm4gMDsKPj4+PiArfQo+Pj4+ICsK Pj4+PiArc3RhdGljIGlubGluZSBib29sIGh5cGVydmlzb3JfZGV0ZWN0X2hvc3Qodm9pZCkKPj4+ PiArewo+Pj4+ICsgICAgcmV0dXJuIGZhbHNlOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMg aW5saW5lIGludCBoeXBlcnZpc29yX3ZpcnRfdG9fbWZuKHZvaWQgKmFkZHIpCj4+Pj4gK3sKPj4+ PiArICAgIHJldHVybiAwOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQg Kmh5cGVydmlzb3JfbWZuX3RvX3ZpcnQoaW50IG1mbikKPj4+PiArewo+Pj4+ICsgICAgcmV0dXJu IE5VTEw7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBoeXBlcnZpc29y X2luamVjdF9tc2koc3RydWN0IHZndF9kZXZpY2UgKnZndCkKPj4+PiArewo+Pj4+ICsgICAgcmV0 dXJuOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW5saW5lIGludCBoeXBlcnZpc29yX2h2 bV9pbml0KHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpCj4+Pj4gK3sKPj4+PiArICAgIHJldHVybiAw Owo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgaHlwZXJ2aXNvcl9odm1f ZXhpdChzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQo+Pj4+ICt7Cj4+Pj4gK30KPj4+PiArCj4+Pj4g K3N0YXRpYyBpbmxpbmUgdm9pZCAqaHlwZXJ2aXNvcl9ncGFfdG9fdmEoc3RydWN0IHZndF9kZXZp Y2UgKnZndCwKPj4+PiB1bnNpZ25lZCBsb25nIGdwYSkKPj4+PiArewo+Pj4+ICsgICAgcmV0dXJu IE5VTEw7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBoeXBlcnZpc29y X3JlYWRfdmEoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgdm9pZCAqdmEsCj4+Pj4gKyAgICAgICAg dm9pZCAqdmFsLCBpbnQgbGVuLCBpbnQgYXRvbWljKQo+Pj4+ICt7Cj4+Pj4gKyAgICByZXR1cm4g ZmFsc2U7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBoeXBlcnZpc29y X3dyaXRlX3ZhKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIHZvaWQKPj4+PiAqdmEsCj4+Pj4gKyAg ICAgICAgdm9pZCAqdmFsLCBpbnQgbGVuLCBpbnQgYXRvbWljKQo+Pj4+ICt7Cj4+Pj4gKyAgICBy ZXR1cm4gZmFsc2U7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gKyNlbmRpZiAvKiBfR1ZUX01QVF9IXyAq Lwo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmMKPj4+ PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuYwo+Pj4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMC4uZGZjMzNjMwo+Pj4+IC0tLSAvZGV2L251bGwKPj4+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmMKPj4+PiBAQCAtMCwwICsx LDI5IEBACj4+Pj4gKy8qCj4+Pj4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+Pj4gKyAqCj4+Pj4gKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4+Pj4g b2J0YWluaW5nIGEKPj4+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+Pj4+ICJTb2Z0d2FyZSIpLAo+Pj4+ICsgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dAo+Pj4+IGxpbWl0YXRpb24KPj4+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4+Pj4gc3VibGljZW5zZSwKPj4+PiArICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20KPj4+PiB0aGUKPj4+PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPj4+PiArICoKPj4+PiArICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZwo+Pj4+IHRoZSBuZXh0Cj4+Pj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbAo+Pj4+IHBvcnRpb25zIG9mIHRoZQo+Pj4+ ICsgKiBTb2Z0d2FyZS4KPj4+PiArICoKPj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCj4+Pj4gRVhQUkVTUyBPUgo+ Pj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GCj4+Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8KPj4+PiBFVkVOVCBTSEFM TAo+Pj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUwo+Pj4+IE9SIE9USEVSCj4+Pj4gKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+Pj4+IEFS SVNJTkcgRlJPTSwKPj4+PiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+Pj4+IERFQUxJTkdTIElOIFRIRQo+Pj4+ICsgKiBT T0ZUV0FSRS4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAiZ3Z0LmgiCj4+Pj4gKwo+ Pj4+ICtzdHJ1Y3QgZ3Z0X2tlcm5lbF9wYXJhbXMgZ3Z0ID0gewo+Pj4+ICsgICAgLmVuYWJsZSA9 IHRydWUsCj4+Pj4gKyAgICAuZGVidWcgPSAwLAo+Pj4+ICt9Owo+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmgKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9wYXJhbXMuaAo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAw MDAwMC4uZDI5NTViOQo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvcGFyYW1zLmgKPj4+PiBAQCAtMCwwICsxLDM0IEBACj4+Pj4gKy8qCj4+Pj4g KyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuCj4+Pj4gKyAqCj4+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4+Pj4gb2J0YWluaW5nIGEKPj4+PiArICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZQo+Pj4+ICJTb2Z0d2FyZSIpLAo+Pj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+Pj4+IGxpbWl0YXRpb24KPj4+ PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsCj4+Pj4gc3VibGljZW5zZSwKPj4+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20KPj4+PiB0aGUKPj4+ PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKPj4+PiArICoKPj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZwo+Pj4+IHRoZSBuZXh0 Cj4+Pj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbAo+Pj4+IHBvcnRpb25zIG9mIHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZS4KPj4+PiAr ICoKPj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsCj4+Pj4gRVhQUkVTUyBPUgo+Pj4+ICsgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+Pj4gTUVSQ0hBTlRB QklMSVRZLAo+Pj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8KPj4+PiBFVkVOVCBTSEFMTAo+Pj4+ICsgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwo+ Pj4+IE9SIE9USEVSCj4+Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+Pj4+IEFSSVNJTkcgRlJPTSwKPj4+PiArICog T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUgo+Pj4+IERFQUxJTkdTIElOIFRIRQo+Pj4+ICsgKiBTT0ZUV0FSRS4KPj4+PiArICovCj4+ Pj4gKwo+Pj4+ICsjaWZuZGVmIF9HVlRfUEFSQU1TX0hfCj4+Pj4gKyNkZWZpbmUgX0dWVF9QQVJB TVNfSF8KPj4+PiArCj4+Pj4gK3N0cnVjdCBndnRfa2VybmVsX3BhcmFtcyB7Cj4+Pj4gKyAgICBi b29sIGVuYWJsZTsKPj4+PiArICAgIGludCBkZWJ1ZzsKPj4+PiArfTsKPj4+PiArCj4+Pj4gK2V4 dGVybiBzdHJ1Y3QgZ3Z0X2tlcm5lbF9wYXJhbXMgZ3Z0Owo+Pj4+ICsKPj4+PiArI2VuZGlmCj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaAo+Pj4+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+ PiBpbmRleCAwMDAwMDAwLi5kMzYzYjc0Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaAo+Pj4+IEBAIC0wLDAgKzEsMzQgQEAKPj4+PiAr LyoKPj4+PiArICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC4KPj4+PiArICoKPj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPj4+PiBvYnRhaW5pbmcgYQo+ Pj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlCj4+Pj4gIlNvZnR3YXJlIiksCj4+Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4+Pj4gbGltaXRh dGlvbgo+Pj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwKPj4+PiBzdWJsaWNlbnNlLAo+Pj4+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+Pj4+ IHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+Pj4+ICsgKgo+Pj4+ICsgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4+Pj4g dGhlIG5leHQKPj4+PiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsCj4+Pj4gcG9ydGlvbnMgb2YgdGhlCj4+Pj4gKyAqIFNvZnR3YXJl Lgo+Pj4+ICsgKgo+Pj4+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKPj4+PiBFWFBSRVNTIE9SCj4+Pj4gKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPj4+PiBN RVJDSEFOVEFCSUxJVFksCj4+Pj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTwo+Pj4+IEVWRU5UIFNIQUxMCj4+Pj4gKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTCj4+Pj4gT1IgT1RIRVIKPj4+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4+Pj4gQVJJU0lORyBGUk9NLAo+ Pj4+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSCj4+Pj4gREVBTElOR1MgSU4gVEhFCj4+Pj4gKyAqIFNPRlRXQVJFLgo+Pj4+ ICsgKi8KPj4+PiArCj4+Pj4gKyNpZm5kZWYgX0dWVF9SRUdfSAo+Pj4+ICsjZGVmaW5lIF9HVlRf UkVHX0gKPj4+PiArCj4+Pj4gKyNkZWZpbmUgR1ZUX0NGR19TUEFDRV9TWiAgICAyNTYKPj4+PiAr I2RlZmluZSBHVlRfQkFSX05VTSAgICAgICAgNAo+Pj4+ICsKPj4+PiArI2RlZmluZSBHVlRfUkVH X0NGR19TUEFDRV9CQVIwICAgIDB4MTAKPj4+PiArI2RlZmluZSBHVlRfUkVHX0NGR19TUEFDRV9C QVIxICAgIDB4MTgKPj4+PiArI2RlZmluZSBHVlRfUkVHX0NGR19TUEFDRV9CQVIyICAgIDB4MjAK Pj4+PiArCj4+Pj4gKyNlbmRpZgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RtYS5jCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4+Pj4g aW5kZXggNDcyNWU4ZC4uZWNhOGU1MCAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RtYS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEu Ywo+Pj4+IEBAIC05NDMsNiArOTQzLDEwIEBAIGludCBpOTE1X2RyaXZlcl9sb2FkKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4+Pj4gdW5zaWduZWQgbG9uZyBmbGFncykKPj4+Pgo+Pj4+ICAgICAg IGludGVsX3VuY29yZV9pbml0KGRldik7Cj4+Pj4KPj4+PiArICAgIGRldl9wcml2LT52Z3B1Lmhv c3RfcHJpdmF0ZV9kYXRhID0gZ3Z0X2NyZWF0ZV9wZ3RfZGV2aWNlKGRldl9wcml2KTsKPj4+PiAr ICAgIGlmKGludGVsX2d2dF9ob3N0X2FjdGl2ZShkZXYpKQo+Pj4+ICsgICAgICAgIERSTV9JTkZP KCJHVlQtZyBpcyBydW5uaW5nIGluIGhvc3QgbW9kZVxuIik7Cj4+Pj4gKwo+Pj4+ICAgICAgIHJl dCA9IGk5MTVfZ2VtX2d0dF9pbml0KGRldik7Cj4+Pj4gICAgICAgaWYgKHJldCkKPj4+PiAgICAg ICAgICAgZ290byBvdXRfZnJlZWNzcjsKPj4+PiBAQCAtMTA2Nyw2ICsxMDcxLDEzIEBAIGludCBp OTE1X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+Pj4gdW5zaWduZWQgbG9u ZyBmbGFncykKPj4+PiAgICAgICAgICAgZ290byBvdXRfcG93ZXJfd2VsbDsKPj4+PiAgICAgICB9 Cj4+Pj4KPj4+PiArICAgIGlmIChpbnRlbF9ndnRfaG9zdF9hY3RpdmUoZGV2KSkgewo+Pj4+ICsg ICAgICAgIGlmCj4+Pj4gKCFndnRfcG9zdF9pbml0X3BndF9kZXZpY2UoZGV2X3ByaXYtPnZncHUu aG9zdF9wcml2YXRlX2RhdGEpKSB7Cj4+Pj4gKyAgICAgICAgICAgIERSTV9FUlJPUigiZmFpbGVk IHRvIHBvc3QgaW5pdCBwZ3QgZGV2aWNlXG4iKTsKPj4+PiArICAgICAgICAgICAgZ290byBvdXRf cG93ZXJfd2VsbDsKPj4+PiArICAgICAgICB9Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4+ICAgICAg IC8qCj4+Pj4gICAgICAgICogTm90aWZ5IGEgdmFsaWQgc3VyZmFjZSBhZnRlciBtb2Rlc2V0dGlu ZywKPj4+PiAgICAgICAgKiB3aGVuIHJ1bm5pbmcgaW5zaWRlIGEgVk0uCj4+Pj4gQEAgLTExMTcs NiArMTEyOCwxMCBAQCBvdXRfZ3R0Ogo+Pj4+ICAgICAgIGk5MTVfZ2xvYmFsX2d0dF9jbGVhbnVw KGRldik7Cj4+Pj4gICBvdXRfZnJlZWNzcjoKPj4+PiAgICAgICBpbnRlbF9jc3JfdWNvZGVfZmlu aShkZXZfcHJpdik7Cj4+Pj4gKyAgICBpZiAoaW50ZWxfZ3Z0X2hvc3RfYWN0aXZlKGRldikpIHsK Pj4+PiArICAgICAgICBndnRfZGVzdHJveV9wZ3RfZGV2aWNlKGRldl9wcml2LT52Z3B1Lmhvc3Rf cHJpdmF0ZV9kYXRhKTsKPj4+PiArICAgICAgICBkZXZfcHJpdi0+dmdwdS5ob3N0X3ByaXZhdGVf ZGF0YSA9IE5VTEw7Cj4+Pj4gKyAgICB9Cj4+Pj4gICAgICAgaW50ZWxfdW5jb3JlX2ZpbmkoZGV2 KTsKPj4+PiAgICAgICBwY2lfaW91bm1hcChkZXYtPnBkZXYsIGRldl9wcml2LT5yZWdzKTsKPj4+ PiAgIHB1dF9icmlkZ2U6Cj4+Pj4gQEAgLTExNjUsNiArMTE4MCwxMCBAQCBpbnQgaTkxNV9kcml2 ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+Pj4KPj4+PiAgICAgICBpbnRlbF9t b2Rlc2V0X2NsZWFudXAoZGV2KTsKPj4+Pgo+Pj4+ICsgICAgaWYgKGludGVsX2d2dF9ob3N0X2Fj dGl2ZShkZXYpKSB7Cj4+Pj4gKyAgICAgICAgZ3Z0X2Rlc3Ryb3lfcGd0X2RldmljZShkZXZfcHJp di0+dmdwdS5ob3N0X3ByaXZhdGVfZGF0YSk7Cj4+Pj4gKyAgICAgICAgZGV2X3ByaXYtPnZncHUu aG9zdF9wcml2YXRlX2RhdGEgPSBOVUxMOwo+Pj4+ICsgICAgfQo+Pj4+ICAgICAgIC8qCj4+Pj4g ICAgICAgICogZnJlZSB0aGUgbWVtb3J5IHNwYWNlIGFsbG9jYXRlZCBmb3IgdGhlIGNoaWxkIGRl dmljZQo+Pj4+ICAgICAgICAqIGNvbmZpZyBwYXJzZWQgZnJvbSBWQlQKPj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+Pj4+IGluZGV4IDAxY2M5ODIuLmRiM2M3OWIgMTAwNjQ0Cj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+PiBAQCAtMTY3Myw2ICsxNjczLDcgQEAgc3RydWN0 IGk5MTVfd29ya2Fyb3VuZHMgewo+Pj4+Cj4+Pj4gICBzdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdSB7 Cj4+Pj4gICAgICAgYm9vbCBhY3RpdmU7Cj4+Pj4gKyAgICB2b2lkICpob3N0X3ByaXZhdGVfZGF0 YTsKPj4+PiAgIH07Cj4+Pj4KPj4+PiAgIHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zIHsK Pj4+PiBAQCAtMjc0Nyw2ICsyNzQ4LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF92Z3B1 X2FjdGl2ZShzdHJ1Y3QKPj4+PiBkcm1fZGV2aWNlICpkZXYpCj4+Pj4gICAgICAgcmV0dXJuIHRv X2k5MTUoZGV2KS0+dmdwdS5hY3RpdmU7Cj4+Pj4gICB9Cj4+Pj4KPj4+PiArc3RhdGljIGlubGlu ZSBib29sIGludGVsX2d2dF9ob3N0X2FjdGl2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+Pj4+ ICt7Cj4+Pj4gKyAgICByZXR1cm4gdG9faTkxNShkZXYpLT52Z3B1Lmhvc3RfcHJpdmF0ZV9kYXRh ID8gdHJ1ZSA6IGZhbHNlOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICAgdm9pZAo+Pj4+ICAgaTkxNV9l bmFibGVfcGlwZXN0YXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBp cGUKPj4+PiBwaXBlLAo+Pj4+ICAgICAgICAgICAgICAgIHUzMiBzdGF0dXNfbWFzayk7Cj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCj4+Pj4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAo+Pj4+IGluZGV4IDNjODNiNDcuLjk0MjQ5MGEg MTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmgKPj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAo+Pj4+IEBAIC0xMTMsNSArMTEz LDggQEAgc3RydWN0IHZndF9pZiB7Cj4+Pj4gICBleHRlcm4gdm9pZCBpOTE1X2NoZWNrX3ZncHUo c3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4+Pj4gICBleHRlcm4gaW50IGludGVsX3ZndF9iYWxs b29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+Pj4+ICAgZXh0ZXJuIHZvaWQgaW50ZWxfdmd0 X2RlYmFsbG9vbih2b2lkKTsKPj4+PiArZXh0ZXJuIHZvaWQgKmd2dF9jcmVhdGVfcGd0X2Rldmlj ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+Pj4+ICtleHRlcm4gYm9vbCBn dnRfcG9zdF9pbml0X3BndF9kZXZpY2Uodm9pZCAqcHJpdmF0ZV9kYXRhKTsKPj4+PiArZXh0ZXJu IHZvaWQgZ3Z0X2Rlc3Ryb3lfcGd0X2RldmljZSh2b2lkICpwcml2YXRlX2RhdGEpOwo+Pj4+Cj4+ Pj4gICAjZW5kaWYgLyogX0k5MTVfVkdQVV9IXyAqLwo+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRl L3hlbi9pbnRlcmZhY2UveGVuLmggYi9pbmNsdWRlL3hlbi9pbnRlcmZhY2UveGVuLmgKPj4+PiBp bmRleCBkMTMzMTEyLi43OGEzOGYxIDEwMDY0NAo+Pj4+IC0tLSBhL2luY2x1ZGUveGVuL2ludGVy ZmFjZS94ZW4uaAo+Pj4+ICsrKyBiL2luY2x1ZGUveGVuL2ludGVyZmFjZS94ZW4uaAo+Pj4+IEBA IC0yOCw2ICsyOCw3IEBACj4+Pj4gICAjZGVmaW5lIF9fWEVOX1BVQkxJQ19YRU5fSF9fCj4+Pj4K Pj4+PiAgICNpbmNsdWRlCj4+Pj4gKyNpbmNsdWRlCj4+Pj4KPj4+PiAgIC8qCj4+Pj4gICAgKiBY RU4gIlNZU1RFTSBDQUxMUyIgKGEuay5hLiBIWVBFUkNBTExTKS4KPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50 ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==