From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 1/5] drm: Add helpers to kick off self refresh mode in drivers Date: Tue, 2 Apr 2019 09:24:33 -0400 Message-ID: <20190402132433.GT114153@art_vandelay> References: <20190326204509.96515-1-sean@poorly.run> <20190327181500.GP2665@phenom.ffwll.local> <20190328210303.GM114153@art_vandelay> <20190329082110.GA2665@phenom.ffwll.local> <20190329131659.GO114153@art_vandelay> <20190329153632.GP2665@phenom.ffwll.local> <20190329181011.GP114153@art_vandelay> <20190401134930.GS114153@art_vandelay> <20190402074900.GZ2665@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8666C6E3E0 for ; Tue, 2 Apr 2019 13:24:35 +0000 (UTC) Received: by mail-qt1-x843.google.com with SMTP id k14so15195768qtb.0 for ; Tue, 02 Apr 2019 06:24:35 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190402074900.GZ2665@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Zain Wang , David Airlie , Jose Souza , Tomasz Figa , Maxime Ripard , Sean Paul , dri-devel , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBcHIgMDIsIDIwMTkgYXQgMDk6NDk6MDBBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBNb24sIEFwciAwMSwgMjAxOSBhdCAwOTo0OTozMEFNIC0wNDAwLCBTZWFuIFBh dWwgd3JvdGU6Cj4gPiBPbiBGcmksIE1hciAyOSwgMjAxOSBhdCAwODoyMTozMVBNICswMTAwLCBE YW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBGcmksIE1hciAyOSwgMjAxOSBhdCA3OjEwIFBN IFNlYW4gUGF1bCA8c2VhbkBwb29ybHkucnVuPiB3cm90ZToKPiA+ID4gPgo+ID4gPiA+IE9uIEZy aSwgTWFyIDI5LCAyMDE5IGF0IDA0OjM2OjMyUE0gKzAxMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6 Cj4gPiA+ID4gPiBPbiBGcmksIE1hciAyOSwgMjAxOSBhdCAwOToxNjo1OUFNIC0wNDAwLCBTZWFu IFBhdWwgd3JvdGU6Cj4gPiA+ID4gPiA+IE9uIEZyaSwgTWFyIDI5LCAyMDE5IGF0IDA5OjIxOjEw QU0gKzAxMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gT24gVGh1LCBNYXIg MjgsIDIwMTkgYXQgMDU6MDM6MDNQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3RlOgo+ID4gPiA+ID4g PiA+ID4gT24gV2VkLCBNYXIgMjcsIDIwMTkgYXQgMDc6MTU6MDBQTSArMDEwMCwgRGFuaWVsIFZl dHRlciB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4gT24gVHVlLCBNYXIgMjYsIDIwMTkgYXQgMDQ6 NDQ6NTRQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiA+IEZyb206 IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4gPiA+ID4gVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGRybSBoZWxwZXIgbGlicmFy eSB0byBoZWxwIGRyaXZlcnMgaW1wbGVtZW50Cj4gPiA+ID4gPiA+ID4gPiA+ID4gc2VsZiByZWZy ZXNoLiBEcml2ZXJzIGNob29zaW5nIHRvIHVzZSBpdCB3aWxsIHJlZ2lzdGVyIGNydGNzIGFuZAo+ ID4gPiA+ID4gPiA+ID4gPiA+IHdpbGwgcmVjZWl2ZSBjYWxsYmFja3Mgd2hlbiBpdCdzIHRpbWUg dG8gZW50ZXIgb3IgZXhpdCBzZWxmIHJlZnJlc2gKPiA+ID4gPiA+ID4gPiA+ID4gPiBtb2RlLgo+ ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gSW4gaXRzIGN1cnJlbnQgZm9y bSwgaXQgaGFzIGEgdGltZXIgd2hpY2ggd2lsbCB0cmlnZ2VyIGFmdGVyIGEKPiA+ID4gPiA+ID4g PiA+ID4gPiBkcml2ZXItc3BlY2lmaWVkIGFtb3VudCBvZiBpbmFjdGl2aXR5LiBXaGVuIHRoZSB0 aW1lciB0cmlnZ2VycywgdGhlCj4gPiA+ID4gPiA+ID4gPiA+ID4gaGVscGVycyB3aWxsIHN1Ym1p dCBhIG5ldyBhdG9taWMgY29tbWl0IHRvIHNodXQgdGhlIHJlZnJlc2hpbmcgcGlwZQo+ID4gPiA+ ID4gPiA+ID4gPiA+IG9mZi4gT24gdGhlIG5leHQgYXRvbWljIGNvbW1pdCwgdGhlIGRybSBjb3Jl IHdpbGwgcmV2ZXJ0IHRoZSBzZWxmCj4gPiA+ID4gPiA+ID4gPiA+ID4gcmVmcmVzaCBzdGF0ZSBh bmQgYnJpbmcgZXZlcnl0aGluZyBiYWNrIHVwIHRvIGJlIGFjdGl2ZWx5IGRyaXZlbi4KPiA+ID4g PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEZyb20gdGhlIGRyaXZlcidzIHBlcnNw ZWN0aXZlLCB0aGlzIHdvcmtzIGxpa2UgYSByZWd1bGFyIGRpc2FibGUvZW5hYmxlCj4gPiA+ID4g PiA+ID4gPiA+ID4gY3ljbGUuIFRoZSBkcml2ZXIgbmVlZCBvbmx5IGNoZWNrIHRoZSAnc2VsZl9y ZWZyZXNoX2FjdGl2ZScgYW5kL29yCj4gPiA+ID4gPiA+ID4gPiA+ID4gJ3NlbGZfcmVmcmVzaF9j aGFuZ2VkJyBzdGF0ZSBpbiBjcnRjX3N0YXRlIGFuZCBjb25uZWN0b3Jfc3RhdGUuIEl0Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gc2hvdWxkIGluaXRpYXRlIHNlbGYgcmVmcmVzaCBtb2RlIG9uIHRoZSBw YW5lbCBhbmQgZW50ZXIgYW4gb2ZmIG9yCj4gPiA+ID4gPiA+ID4gPiA+ID4gbG93LXBvd2VyIHN0 YXRlLgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQ2hhbmdlcyBpbiB2 MjoKPiA+ID4gPiA+ID4gPiA+ID4gPiAtIHMvcHNyL3NlbGZfcmVmcmVzaC8gKERhbmllbCkKPiA+ ID4gPiA+ID4gPiA+ID4gPiAtIGludGVncmF0ZWQgdGhlIHBzciBleGl0IGludG8gdGhlIGNvbW1p dCB0aGF0IHdha2VzIGl0IHVwIChKb3NlL0RhbmllbCkKPiA+ID4gPiA+ID4gPiA+ID4gPiAtIG1h ZGUgdGhlIHBzciBzdGF0ZSBwZXItY3J0YyAoSm9zZS9EYW5pZWwpCj4gPiA+ID4gPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBMaW5rIHRvIHYxOiBodHRwczovL3BhdGNod29yay5mcmVl ZGVza3RvcC5vcmcvcGF0Y2gvbXNnaWQvMjAxOTAyMjgyMTA5MzkuODMzODYtMi1zZWFuQHBvb3Js eS5ydW4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IENjOiBEYW5pZWwg VmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQ2M6IEpvc2UgU291 emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+ID4gPiA+ID4gPiA+ID4gPiA+IENjOiBaYWluIFdh bmcgPHd6ekByb2NrLWNoaXBzLmNvbT4KPiA+ID4gPiA+ID4gPiA+ID4gPiBDYzogVG9tYXN6IEZp Z2EgPHRmaWdhQGNocm9taXVtLm9yZz4KPiA+ID4gPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiA+ID4gPiA+ID4gPiA+ID4gPiAt LS0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJz LnJzdCAgICAgfCAgIDkgKwo+ID4gPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMyArLQo+ID4gPiA+ID4gPiA+ID4gPiA+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAgICAgICAgICB8ICAgNCArCj4gPiA+ID4gPiA+ ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jICAgICAgIHwgIDM2 ICsrKy0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3Rh dGVfaGVscGVyLmMgfCAgIDggKwo+ID4gPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY191YXBpLmMgICAgICAgICB8ICAgNSArLQo+ID4gPiA+ID4gPiA+ID4gPiA+ICBk cml2ZXJzL2dwdS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuYyB8IDIxMiArKysrKysrKysr KysrKysrKysrKysrCj4gPiA+ID4gPiA+ID4gPiA+ID4gIGluY2x1ZGUvZHJtL2RybV9hdG9taWMu aCAgICAgICAgICAgICAgICAgIHwgIDE1ICsrCj4gPiA+ID4gPiA+ID4gPiA+ID4gIGluY2x1ZGUv ZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICAgICAgICAgIHwgIDMxICsrKysKPiA+ID4gPiA+ID4g PiA+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX2NydGMuaCAgICAgICAgICAgICAgICAgICAgfCAgMTkg KysKPiA+ID4gPiA+ID4gPiA+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxw ZXIuaCAgICAgfCAgMjMgKysrCj4gPiA+ID4gPiA+ID4gPiA+ID4gIDExIGZpbGVzIGNoYW5nZWQs IDM2MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiA+ID4gPiA+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVy LmMKPiA+ID4gPiA+ID4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2Ry bV9zZWxmX3JlZnJlc2hfaGVscGVyLmgKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiAvc25pcAo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IGluZGV4IDQ5 ODUzODRlNTFmNi4uZWM5MGM1MjdkZWVkIDEwMDY0NAo+ID4gPiA+ID4gPiA+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5jCj4gPiA+ID4gPiA+ID4g PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVfaGVscGVyLmMKPiA+ ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTA1LDYgKzEwNSwxMCBAQCB2b2lkIF9fZHJtX2F0b21pY19o ZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPiA+ ID4gPiA+ID4gPiA+ICAgICBzdGF0ZS0+Y29tbWl0ID0gTlVMTDsKPiA+ID4gPiA+ID4gPiA+ID4g PiAgICAgc3RhdGUtPmV2ZW50ID0gTlVMTDsKPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgc3RhdGUt PnBhZ2VmbGlwX2ZsYWdzID0gMDsKPiA+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g PiA+ID4gKyAgIC8qIFNlbGYgcmVmcmVzaCBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ldyB1 cGRhdGUgaXMgYXZhaWxhYmxlICovCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgIHN0YXRlLT5hY3Rp dmUgPSBkcm1fYXRvbWljX2NydGNfZWZmZWN0aXZlbHlfYWN0aXZlKHN0YXRlKTsKPiA+ID4gPiA+ ID4gPiA+ID4gPiArICAgc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgPSBmYWxzZTsKPiA+ID4g PiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICBFWFBPUlRfU1lNQk9MKF9fZHJt X2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUpOwo+ID4gPiA+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTM3MCw2ICszNzQsMTAgQEAgX19kcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsCj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgLyogRG9u J3QgY29weSBvdmVyIGEgd3JpdGViYWNrIGpvYiwgdGhleSBhcmUgdXNlZCBvbmx5IG9uY2UgKi8K PiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgc3RhdGUtPndyaXRlYmFja19qb2IgPSBOVUxMOwo+ID4g PiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgLyogU2VsZiByZWZyZXNo IHNob3VsZCBiZSBjYW5jZWxlZCB3aGVuIGEgbmV3IHVwZGF0ZSBpcyBhdmFpbGFibGUgKi8KPiA+ ID4gPiA+ID4gPiA+ID4gPiArICAgc3RhdGUtPnNlbGZfcmVmcmVzaF9jaGFuZ2VkID0gc3RhdGUt PnNlbGZfcmVmcmVzaF9hY3RpdmU7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgIHN0YXRlLT5zZWxm X3JlZnJlc2hfYWN0aXZlID0gZmFsc2U7Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g PiA+IFdoeSB0aGUgZHVwbGljYXRpb24gaW4gc2VsZi1yZWZyZXNoIHRyYWNraW5nPyBDb25uZWN0 b3JzIG5ldmVyIGhhdmUgYQo+ID4gPiA+ID4gPiA+ID4gPiBkaWZmZXJlbnQgc2VsZi1yZWZyZXNo IHN0YXRlLCBhbmQgeW91IGNhbiBhbHdheXMgbG9vayBhdCB0aGUgcmlnaHQKPiA+ID4gPiA+ID4g PiA+ID4gY3J0Y19zdGF0ZS4gRHVwbGljYXRpb24ganVzdCBnaXZlcyB1cyB0aGUgY2hhbmNlIHRv IHNjcmV3IHVwIGFuZCBnZXQgb3V0Cj4gPiA+ID4gPiA+ID4gPiA+IG9mIHN5bmMgKGUuZy4gaWYg dGhlIGNydGMgZm9yIGEgY29ubmVjdG9yIGNoYW5nZXMpLgo+ID4gPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IE9uIGRpc2FibGUgdGhlIGNydGMgaXMgY2xlYXJl ZCBmcm9tIGNvbm5lY3Rvcl9zdGF0ZSwgc28gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8KPiA+ID4g PiA+ID4gPiA+IGl0LiBJZiBJIGFkZCB0aGUgYXBwcm9wcmlhdGUgYXRvbWljX2VuYWJsZS9kaXNh YmxlIGhvb2tzIGFzIHN1Z2dlc3RlZCBiZWxvdywgd2UKPiA+ID4gPiA+ID4gPiA+IHNob3VsZCBi ZSBhYmxlIHRvIG51a2UgdGhlc2UuCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBZZWFoIHdl J2QgbmVlZCB0aGUgb2xkIHN0YXRlIHRvIGxvb2sgYXQgdGhlIGNydGMgYW5kIGFsbCB0aGF0LiBX aGljaCBpcyBhCj4gPiA+ID4gPiA+ID4gbG90IG1vcmUgdHJpY2tpZXIuCj4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiBTaW5jZSBpdCdzIHN1Y2ggYSBzcGVjaWFsIGNhc2UsIHNob3VsZCB3ZSBo YXZlIGEgZGVkaWNhdGVkIGNhbGxiYWNrIGZvcgo+ID4gPiA+ID4gPiA+IHRoZSBkaXJlY3Qgc2Vs Zi1yZWZyZXNoIC0+IGNvbXBsZXRlbHkgb2ZmIHRyYW5zaXRpb24/IEl0J2xsIGJlIGFzeW1ldHJp YywKPiA+ID4gPiA+ID4gPiBidXQgdGhhdCdzIHRoZSBuYXR1cmUgb2YgdGhpcyBJIHRoaW5rLgo+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBSaWdodCwgdGhlIGFzeW1tZXRyeSBpcyByZWFsbHkgYW5u b3lpbmcgaGVyZS4gSWYgdGhlIGRyaXZlciBpcyBTUi1hd2FyZSwgaXQgbWFrZXMKPiA+ID4gPiA+ ID4gc2Vuc2Ugc2luY2UgU1ItYWN0aXZlIHRvIGRpc2FibGUgaXMgYSByZWFsIHRyYW5zaXRpb24u IEhvd2V2ZXIgaWYgdGhlIGRyaXZlciBpcwo+ID4gPiA+ID4gPiBub3QgU1ItYXdhcmUgKGllOiBp dCBqdXN0IGdldHMgdHVybmVkIG9mZiB3aGVuIFNSIGJlY29tZXMgYWN0aXZlKSwgdGhlIGRpc2Fi bGUKPiA+ID4gPiA+ID4gZnVuY3Rpb24gZ2V0cyBjYWxsZWQgdHdpY2Ugd2l0aG91dCBhbiBlbmFi bGUuIFNvIHRoYXQgY2hhbmdlcyB0aGUgImZvciBldmVyeQo+ID4gPiA+ID4gPiBlbmFibGUgdGhl cmUgaXMgYSBkaXNhYmxlIGFuZCB2aWNlIHZlcnNhIiBhc3N1bXB0aW9uLgo+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiBUaGlzIGlzIG9uZSBvZiB0aGUgYmVuZWZpdHMgb2YgdGhlIHYxIGRlc2lnbiwg U1Igd2FzIGJvbHRlZCBvbiBhbmQgbm8gZXhpc3RpbmcKPiA+ID4gPiA+ID4gcnVsZXMgKGFzeW5j L25vX21vZGVzZXQvZW5hYmxlLWRpc2FibGUgcGFpcnMpIHdlcmUgW2V4cGxpY2l0bHldIGJyb2tl bi4gVGhhdCdzCj4gPiA+ID4gPiA+IG5vdCB0byBzYXkgaXQgd2FzIGJldHRlciwgaXQgd2Fzbid0 LCBidXQgaXQgd2FzIGEgYmlnIGNvbnNpZGVyYXRpb24uCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ IFNvLCB3aGF0IHRvIGRvLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBJIHJlYWxseSBsaWtlIHRo ZSBpZGVhIHRoYXQgZHJpdmVycyBzaG91bGRuJ3QgaGF2ZSB0byBiZSBTUi1hd2FyZSB0byBiZSBp bnZvbHZlZAo+ID4gPiA+ID4gPiBpbiB0aGUgcGlwZWxpbmUuIFNvIGlmIHdlIGFkZCBhIGhvb2sg Zm9yIHRoaXMgbGlrZSB5b3Ugc3VnZ2VzdCwgd2UgY291bGQgYXZvaWQKPiA+ID4gPiA+ID4gY2Fs bGluZyBkaXNhYmxlIHR3aWNlIG9uIGFueXRoaW5nIG5vdCBTUi1hd2FyZS4gV2Ugd291bGQgbmVl ZCB0byBhZGQgdGhlIGhvb2sgb24KPiA+ID4gPiA+ID4gY3J0Yy9lbmNvZGVyL2JyaWRnZSB0byBt YWtlIHN1cmUgeW91IGNvdWxkIG1peCBuJyBtYXRjaCBTUi1hd2FyZSBhbmQKPiA+ID4gPiA+ID4g bm9uLVNSLWF3YXJlIGRldmljZXMuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEl0IHByb2JhYmx5 IG1ha2VzIHNlbnNlIHRvIGp1c3QgYWRkIG1hdGNoaW5nIFNSIGhvb2tzIGF0IHRoaXMgcG9pbnQu IFNpbmNlIGlmCj4gPiA+ID4gPiA+IHRoZSBkcml2ZXIgaXMgZG9pbmcgc29tZXRoaW5nIHNwZWNp YWwgaW4gZGlzYWJsZSwgaXQnbGwgbmVlZCB0byBkbyBzb21ldGhpbmcKPiA+ID4gPiA+ID4gc3Bl Y2lhbCBpbiBlbmFibGUuIEl0IGFsc28gcmVzZXJ2ZXMgZW5hYmxlIGFuZCBkaXNhYmxlIGZvciB3 aGF0IHRoZXkndmUKPiA+ID4gPiA+ID4gdHJhZGl0aW9uYWxseSBkb25lLiBJZiBhIGRldmljZSBp cyBub3QgU1ItYXdhcmUsIGl0J2xsIGp1c3QgZmFsbCBiYWNrIHRvIHRoZQo+ID4gPiA+ID4gPiBm dWxsIGVuYWJsZS9kaXNhYmxlIGFuZCB3ZSdsbCBtYWtlIHN1cmUgdG8gbm90IGRvdWJsZSB1cCBv biB0aGUgZGlzYWJsZSBpbiB0aGUKPiA+ID4gPiA+ID4gaGVscGVycy4KPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gU28gd2UnbGwga2VlcCBzeW1tZXRyeSwgYW5kIGF2b2lkIGhhdmluZyBhbiBhd2Z1 bCBob29rIG5hbWUgbGlrZQo+ID4gPiA+ID4gPiBkaXNhYmxlX2Zyb21fc2VsZl9yZWZyZXNoLi4g eXVjayEKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gVGhvdWdodHM/Cj4gPiA+ID4gPgo+ID4gPiA+ ID4gSSBsaWtlIHRoZSBhc3ltZXRyeSBhY3R1YWxseSwgaXQgaGFzIGdyb3duIG9uIGEgYml0IHdo aWxlIHdvcmtpbmcgb3V0IGFuZAo+ID4gPiA+ID4gcG9uZGVyaW5nIHRoaXMgOi0pCj4gPiA+ID4g Pgo+ID4gPiA+Cj4gPiA+ID4gSSdtIG5vdCBxdWl0ZSB0aGVyZSB3aXRoIHlvdSwgSSBzdGlsbCB0 aGluayBpdCdzIGJldHRlciB0byBzcGxpdCBpdCBhbGwgb3V0Lgo+ID4gPiA+Cj4gPiA+ID4gPiBC ZW5lZml0czoKPiA+ID4gPiA+IC0gd2Uga2VlcCB0aGUgMTAwJSBzeW1tZXRyeSBvZiBlbmFibGUv ZGlzYWJsZSBob29rcwo+ID4gPiA+ID4gLSBzZWxmLXJlZnJlc2ggYXdhcmUgY29ubmVjdG9yIGNv ZGUgYWxzbyBnZXRzIGEgYml0IHNpbXBsZXIgSSB0aGluazogaW4KPiA+ID4gPiA+ICAgdGhlIG5v cm1hbCBlbmFibGUvZGlzYWJsZSBob29rcyBpdCBjYW4ganVzdCBjaGVjayBmb3IKPiA+ID4gPiA+ ICAgY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgZm9y IHNyIHN0YXRlIGNoYW5nZXMKPiA+ID4gPiA+ICAgd2hpbGUgdGhlIHBpcGUgaXMgbG9naWNhbGx5 IHN0YXlpbmcgb24KPiA+ID4gPiA+IC0gdGhlIG9uZSBhc3ltbWV0cmljIGNhc2UgZHVlIHRvIHRo aXMgZGVzaWduIHdoZXJlIHdlIGRpc2FibGUgdGhlIHBpcGUKPiA+ID4gPiA+ICAgaGFyZGVyIGhh cyBhbiBhd2t3YXJkIHNwZWNpYWwgaG9vaywgd2hpY2ggZ2l2ZXMgdXMgYSBncmVhdCBvcHBvcnR1 bml0eQo+ID4gPiA+ID4gICB0byBleHBsYWluIHdoeSBpdCdzIG5lZWRlZAo+ID4gPiA+ID4gLSBu b3RoaW5nIGNoYW5nZXMgZm9yIG5vbi1zciBhd2FyZSBkcml2ZXJzCj4gPiA+ID4gPiAtIGFsc28g bm8gbmVlZCB0byBkdXBsaWNhdGUgc3Igc3RhdGUgaW50byBjb25uZWN0b3JzLCBzaW5jZSBpdCdz IGFsbAo+ID4gPiA+ID4gICBmYWlybHkgZXhwbGl0IGFscmVhZHkgaW4gYWxsIHRocmVlIHN0YXRl IHRyYW5zaXRpb25zLgo+ID4gPiA+Cj4gPiA+ID4gVG8gYmUgZmFpciwgb25seSBvbmUgb2YgdGhl c2UgaXMgZXhjbHVzaXZlIHRvIGFzeW1tZXRyeSwgYW5kIGl0J3MgdGhlIG9uZSB0aGF0Cj4gPiA+ ID4gcHJvdmlkZXMgdGhlIG9wcG9ydHVuaXR5IHRvIGFkZCBhIGNvbW1lbnQuIElmIHRoZSBzciBm dW5jdGlvbnMgYXJlIHN5bW1ldHJpYywKPiA+ID4gPiB0aGUgY29kZSBiZWNvbWVzIG11Y2ggbW9y ZSAibm9ybWFsIiBhbmQgbGVzcyBkZXNlcnZpbmcgb2YgdGhlIGV4cGxhbmF0aW9uLgo+ID4gPiA+ Cj4gPiA+ID4gVGhlIHJlYXNvbiBJIHdvdWxkIGxpa2UgdG8gc3BsaXQgb3V0IGVudHJ5IGFuZCBl eGl0IGlzIHRoYXQgaXQgbWFrZXMgdGhlIGRyaXZlcgo+ID4gPiA+IGNvZGUgYSBiaXQgZWFzaWVy IHRvIHJhdGlvbmFsaXplLiBDdXJyZW50bHkgd2UgbmVlZCB0byBjaGVjayB0aGUgc3RhdGUgYXQg dGhlCj4gPiA+ID4gYmVnaW5uaW5nIG9mIGVuYWJsZS9kaXNhYmxlIHRvIGRldGVybWluZSB3aGV0 aGVyIHdlIHdhbnQgdGhlIGZ1bGwgZW5hYmxlL2Rpc2FibGUKPiA+ID4gPiBvciB0aGUgcHNyIGV4 aXQvZW50ZXIuIFNvIHRoZSBzcl9kaXNhYmxlIGZ1bmN0aW9uIHdvdWxkIHJlYWxseSBqdXN0IGJl IHBsYWluCj4gPiA+ID4gb2xkIGRpc2FibGUgd2l0aG91dCB0aGUgc3BlY2lhbCBjYXNpbmcgYXQg dGhlIHRvcC4gSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCBldmVuCj4gPiA+ID4gbmVlZCB0aGUgc2Vw YXJhdGUgZnVuY3Rpb24sIHdlIGNvdWxkIGp1c3QgbGltaXQgZGlzYWJsZSBjYWxscyBvbmx5IG9u IHRob3NlCj4gPiA+ID4gb2JqZWN0cyB3aGljaCBhcmUgZWZmZWN0aXZlbHkgb24gKGFjdGl2ZSB8 fCBzcikuIFRoYXQgc3RhcnRzIHNvdW5kaW5nIGEgbG90IGxpa2UKPiA+ID4gPiB3aGF0IHdlIGFs cmVhZHkgaGF2ZSBoZXJlLgo+ID4gPiA+Cj4gPiA+ID4gRnVydGhlciwgZG9pbmcgU1IgaW4gZW5h YmxlL2Rpc2FibGUgaXMgcmVhbGx5IGp1c3QgbGVnYWN5IGZyb20gdjEgd2hpY2ggdHJpZWQgdG8K PiA+ID4gPiBrZWVwIGFzIG11Y2ggdGhlIHNhbWUgYXMgcG9zc2libGUuIE5vdyB0aGF0IHdlJ3Jl ICJpbiBpdCIsIEkgdGhpbmsgaXQgbWFrZXMKPiA+ID4gPiBzZW5zZSB0byBnbyBhbGwgaW4gYW5k IG1ha2UgU1IgYSBmaXJzdCBjbGFzcyBjaXRpemVuLgo+ID4gPiAKPiA+ID4gSG0sIHF1ZXN0aW9u IGlzOiBIb3cgbWFueSBob29rcyBkbyB5b3UgbmVlZD8gSnVzdCBzb21ldGhpbmcgb24gdGhlCj4g PiA+IGNvbm5lY3Rvciwgb3Igb24gdGhlIGVuY29kZXIsIG9yIGV2ZXJ5d2hlcmU/Cj4gPiAKPiA+ IGJyaWRnZS9lbmNvZGVyL2NydGMgYWxsIGRvIHNwZWNpYWwgdGhpbmdzIGR1cmluZyBTUiB0cmFu c2l0aW9ucywgSSBkb24ndCB0aGluawo+ID4gY29ubmVjdG9yIGlzIG5lY2Vzc2FyeS4gVGhpcyBp cyB0aGUgc2FtZSBmb3IgYW55IC5zcl9kaXNhYmxlIGZ1bmN0aW9uLCBldmVyeW9uZQo+ID4gd291 bGQgbmVlZCB0byBpbXBsZW1lbnQgaXQuCj4gCj4gSG0sIHRoYXQncyBhIGxvdCBvZiBuZXcgY2Fs bGJhY2tzIC4uLgo+IAo+ID4gPiBBbmQgaG93IGRvIHlvdSBoYW5kbGUgdGhlCj4gPiA+IHZhcmlv dXMgc3RhdGUgdHJhbnNpdGlvbnMuIE9uIHRoZSBkaXNhYmxlIHNpZGUgd2UgaGF2ZToKPiA+ID4g LSBhY3RpdmUgb24gLT4gYWN0aXZlIG9mZiwgbm8gc3IgKHVzZXJzcGFjZSBkaXNhYmxlcyBjcnRj KQo+ID4gPiAtIGFjdGl2ZSBvbiwgc3Igb2ZmIC0+IGFjdGl2ZSBvb2ZmLCBzciBvbiAoc3IgdGlt ZXIgZmlyZXMgYW5kIHN1c3BlbmRzIGNydGMpCj4gPiA+IC0gYWN0aXZlIG9mZiwgc3Igb24gLT4g YWN0aXZlIG9mZiwgc3Igb2ZmICh1c2Vyc3BhY2UgZGlzYWJsZSBjcnRjCj4gPiA+IHdoaWxlIGNy dGMgaXMgaW4gc3IpCj4gPiA+IFRoZXNlIGFyZSBhbGwgImxvZ2ljYWwgYWN0aXZlIG9uIiAtPiAi c29tZXRoaW5nIiB0cmFuc2l0aW9ucyB3aGVyZSB3ZQo+ID4gPiBkaXNhYmxlIHNvbWV0aGluZyAo Y3J0Yywgb3IgZGlzcGxheSBvciBib3RoKQo+ID4gPiAKPiA+ID4gU28gaW4gYSB3YXkgeW91J2Qg bmVlZCAzIGhvb2tzIGhlcmUgZm9yIHRoZSBmdWxsIG1hdHJpeC4KPiA+ID4gQW5kIHRoZXkgYWxs Cj4gPiA+IGtpbmRhIGRpc2FibGUgc29tZXRoaW5nLiBPbiB0aGUgZW5hYmxlIHNpZGUgd2UgaGF2 ZToKPiA+ID4gLSBhY3RpdmUgb2ZmLCBzciBvZmYgLT4gYWN0aXZlIG9uLCBzciBvZmYgKHVzZXJz cGFjZSBlbmFibGVzIGNydGMpCj4gPiA+IC0gYWN0aXZlIG9mZiwgc3Igb24gLT4gYWN0aXZlIG9u LCBzciBvZmYgKHVzZXJzcGFjZSBkb2VzIGEgcGFnZWZsaXAsIHN0b3BzIHNyKQo+ID4gPiBIZXJl IHdlIGVpdGhlciBlbmFibGUgdGhlIGNydGMgKGRpc3BsYXkgYWxyZWFkeSBvbikgb3IgYm90aC4g U2luY2Ugd2UKPiA+ID4gb25seSBnbyBpbnRvIHNyIHdpdGggdGhlIHRpbWVyIHRoZXJlJ3Mgbm8g M3JkIGNhc2Ugb2Ygb25seSBlbmFibGluZwo+ID4gPiB0aGUgZGlzcGxheS4gU28gc3RpbGwgYXN5 bWV0cmljLCBldmVuIHdpdGggbG90cyBtb3JlIGhvb2tzLgo+ID4gCj4gPiBXZSBkb24ndCBuZWVk IHRoZSAoYWN0aXZlIG9mZiwgc3Igb24pIC0+IChhY3RpdmUgb2ZmLCBzciBvZmYpICh0aGlyZCkg Y2FzZQo+ID4gYWJvdmUsIGl0J3MgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LiBKdXN0IGRvaW5nIGEg ZnVsbCBkaXNhYmxlIGlzIHN1ZmZpY2llbnQsCj4gPiBzbyB5b3Ugd291bGQgaGF2ZSBzeW1tZXRy eSBpbiB0aGUgZW5hYmxlL2Rpc2FibGUgY2FsbHMgYW5kIGFzeW1tZXRyeSBpbiB0aGUKPiA+IHNy IGNhbGxzLiBUaGlzIGlzIHNpbWlsYXIgdG8gZW5hYmxpbmcgYSBwbGFuZSwgb3IgdHVybmluZyBv dGhlciBIVyBmZWF0dXJlcyBvbgo+ID4gd2hpbGUgZW5hYmxlZC4gU1IgaXMgYWZ0ZXIgYWxsIGp1 c3QgYSBmZWF0dXJlIG9mIHRoZSBoYXJkd2FyZS4KPiAKPiBIbSB5ZWFoIEkgZ3Vlc3Mgd2UgY2Fu IHRyZWF0IGl0IGxpa2UgcGxhbmUgZGlzYWJsaW5nLCB3aGljaCBpbXBsaWNpdGx5Cj4gaGFwcGVu cyBpbiBjcnRjLT5kaXNhYmxlIHRvby4gT3IgdGhlIGltcGxpY2l0IHBsYW5lIGVuYWJsZSBpbiBj cnRjLT5lbmFibGUKPiAoYWx0aG91Z2ggdGhhdCBjYXNlIGRvZXNuJ3QgZXhpc3QgZm9yIHNyLCBz aW5jZSB3ZSBuZXZlciBnbyBkaXJlY3RseSBpbnRvCj4gc3IpLgo+IAo+ID4gPiBJZiB5b3Ugd2Fu dCB0aGUgZnVsbCBtYXRyaXgsIHRoZXJlJ3MgZ29pbmcgdG8gYmUgYSBfbG90XyBvZiBob29rcy4g SQo+ID4gPiB0aGluayBzbGlnaHRseSBtb3JlIGF3a3dhcmQgZHJpdmVyLCBidXQgbGVzcyBob29r cyBpcyBiZXR0ZXIuIEhlbmNlCj4gPiA+IHRoZSBzbGlnaHRseSBhd2t3YXJkIG1pZGRsZSBncm91 bmQgb2YgYSBzcGVjaWFsIGRpc2FibGVfZnJvbV9zciBob29rLgo+ID4gPiBCdXQgbWF5YmUgdGhl cmUncyBhIGJldHRlciBvcHRpb24gc29tZXdoZXJlIGVsc2UgLi4uCj4gPiAKPiA+IFRoZXJlJ3Mg cmVhbGx5IG5vIHJlYXNvbiB0byBldmVuIGhhdmUgdGhlIHNyX2Rpc2FibGUgZnVuY3Rpb24uIFRo ZSAuZGlzYWJsZQo+ID4gZnVuY3Rpb24gaW4gdGhlIGRyaXZlciB3aWxsIGFscmVhZHkgbmVlZCBz cGVjaWFsIGNhc2luZyB0byBkZXRlY3QgcHNyX2VudHJ5Cj4gPiB2cyBmdWxsIGRpc2FibGUsIHNv IGl0J2QgYmUgYmV0dGVyIHRvIGp1c3QgY2FsbCBkaXNhYmxlIHR3aWNlLiBUaGUgLnNyX2Rpc2Fi bGUKPiA+IGZ1bmN0aW9uIHdvdWxkIGFsd2F5cyBqdXN0IGRvIGEgZnVsbCBkaXNhYmxlIChpZTog dGhlIC5kaXNhYmxlIGltcGxlbWVudGF0aW9uCj4gPiB3aXRob3V0IHRoZSBzciBjaGVja3MgYXQg dGhlIHRvcCkuCj4gPiAKPiA+IFNvIHRoZSBkZWJhdGUgc2hvdWxkIGJlOiBhZGQgc3JfZW5hYmxl L2Rpc2FibGUgcGFpciBvZiBob29rcywgb3Igb3ZlcmxvYWQKPiA+IGRpc2FibGUgd2l0aCBhc3lt bWV0cnkgKGN1cnJlbnQgaW1wbGVtZW50YXRpb24pLgo+IAo+IEkgZ3Vlc3MgdGhhdCBtZWFucyB3 ZSdyZSBiYWNrIHRvIG5vIG5ldyBob29rcywgYW5kIHRoZSBkcml2ZXIganVzdCBkdHJ0Cj4gaW4g dGhlIGV4aXN0aW5nIGhvb2tzIHdpdGggdGhlIHN0YXRlIHRyYW5zaXRpb24gYml0cyB3ZSBoYXZl PyBJIHRob3VnaHQKPiB0aGUgaXNzdWUgd2l0aCB0aGF0IGlzIHRoYXQgd2UgY2FuJ3QgZ2V0IGF0 IGFsbCB0aGUgcmlnaHQgYml0cywgaGVuY2UgdGhlCj4gc3JfZGlzYWJsZSBzcGVjaWFsIGNhc2Ug aG9vay4KPiAKPiBPciBpcyB5b3VyIHBsYW4gdG8gcm9sbCBvdXQgYSBmdWxsIG5ldyBzZXQgb2Yg aG9va3MsIGVxdWlwcGVkIHdpdGgKPiBvbGQvbmV3X3N0YXRlIGZvciBldmVyeXRoaW5nPyBJIHRo aW5rIHdlJ2Qgb25seSBuZWVkIG9sZC9uZXdfc3RhdGUgZm9yIHRoZQo+IG9iamVjdCBhdCBoYW5k LCBzaW5jZSB3aXRoIHRoZSBvbGRfc3RhdGUgeW91IGNhbiBnZXQgYXQgZHJtX2F0b21pY19zdGF0 ZSwKPiB3aGljaCBhbGxvd3MgeW91IHRvIGdldCBhbnl0aGluZyBlbHNlIHJlYWxseS4KCkkgZG9u J3QgdGhpbmsgd2UgZXZlbiBuZWVkIHRvIHBhc3MgdGhlIHN0YXRlIHRvIHRoZSBzciBob29rcywg anVzdCBhZGQKCnZvaWQgc2VsZl9yZWZyZXNoX2VudGVyKHN0cnVjdCBkcm1fPHR5cGU+ICo8bmFt ZT4pOwp2b2lkIHNlbGZfcmVmcmVzaF9leGl0KHN0cnVjdCBkcm1fPHR5cGU+ICo8bmFtZT4pOwoK dG8gdGhlIGZ1bmNzIHZ0YWJsZSBmb3IgY3J0Yy9lbmNvZGVyL2JyaWRnZS4KCk9mIGNvdXJzZSBp dCdzIG5vdCBfcXVpdGVfIGFzIHN0cmFpZ2h0Zm9yd2FyZCBhcyB0aGF0IDopCgpXaXRoIHRoZSBj dXJyZW50IG1vZGVsLCB0aGUgcG93ZXJkb3duL3Bvd2VydXAgb3JkZXIgb2YgY29tcG9uZW50cyBp cyBpbXBsaWNpdGx5CmJyb2tlbi4gV2l0aCB0aGlzIG5ldyBtb2RlbCwgaXQncyBtdWNoIG1vcmUg b2J2aW91cywgdGhpcyBpcyBlYXNpZXN0IHRvCmlsbHVzdHJhdGUgd2l0aCBicmlkZ2VzLCBidXQg aXQncyB0cnVlIGZvciBjcnRjcyBhbmQgZW5jb2RlcnMgYXMgd2VsbC4KCkFzc3VtZSB5b3UgaGF2 ZSB0aGUgZm9sbG93aW5nIGJyaWRnZSBjaGFpbjoKCkVOQzAgKG5vdCBTUi1hd2FyZSkgCiAgICAg ICAgLT4gQlIwIChTUi1hd2FyZSkKICAgICAgICAgICAgICAgIC0+IEJSMSAobm90IFNSLWF3YXJl KQogICAgICAgICAgICAgICAgICAgICAgICAtPiBCUjIgKFNSLWF3YXJlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+IENPTjAKCkFuIFNSLWVudGVyIHRyYW5zaXRpb24gd291bGQg YmU6CiAgICAgICAgQlIyLT5zZWxmX3JlZnJlc2hfZW50ZXIKICAgICAgICBCUjEtPmRpc2FibGUK ICAgICAgICBCUjAtPnNlbGZfcmVmcmVzaF9lbnRlcgogICAgICAgIEVOQzAtPmRpc2FibGUKICAg ICAgICBCUjEtPnBvc3RfZGlzYWJsZQoKU1ItZXhpdCBpczoKICAgICAgICBCUjEtPnByZV9lbmFi bGUKICAgICAgICBFTkMwLT5lbmFibGUKICAgICAgICBCUjAtPnNlbGZfcmVmcmVzaF9leGl0CiAg ICAgICAgQlIxLT5lbmFibGUKICAgICAgICBCUjItPnNlbGZfcmVmcmVzaF9leGl0CgpEaXNhYmxp bmcgZnJvbSBTUiBiZWNvbWVzOgogICAgICAgIEJSMi0+ZGlzYWJsZQogICAgICAgIEJSMC0+ZGlz YWJsZQogICAgICAgIEJSMi0+cG9zdF9kaXNhYmxlCiAgICAgICAgQlIwLT5wb3N0X2Rpc2FibGUK ClNvIEknbSBzdGFydGluZyB0byBxdWVzdGlvbiBmYWxsaW5nIGJhY2sgb24gZGlzYWJsZS4gSSB0 aGluayBpdCB3YXMgYSBmaW5lCmNob2ljZSB3aGVuIHdlIHdvdWxkIGV4aXQgcHNyIGJlZm9yZSBk aXNhYmxlIChpZTogdjEpLCBidXQgSSB0aGluayBpdCBtaWdodCBiZQp0b28gY29tcGxpY2F0ZWQg bm93LiBXZSBjb3VsZCBtYWtlIEJSMiBhbmQgQlIwIGRvIHRoZSByaWdodCB0aGluZyBvbgpkaXNh YmxlLWZyb20tU1IsIGJ1dCBJJ20gd29ycmllZCB0aGF0IG1peGluZyB1cCB0aGUgb3JkZXIgZm9y IFNSLXVuYXdhcmUgZGV2aWNlcwooRU5DMC9CUjEpIG1pZ2h0IGNhdXNlIGlzc3Vlcy4KClBlcmhh cHMgd2Ugc2hvdWxkIHNjYWxlIHRoaXMgYmFjayBhbmQganVzdCB0cmVhdCBzZWxmX3JlZnJlc2gg YXMgaXRzIG93biB0aGluZwphbmQgbm90IGdvIHRocm91Z2ggdGhlIGVuYWJsZS9kaXNhYmxlIHBh dGggYXQgYWxsLiBEZXZpY2VzIHdoaWNoIGFyZSBub3QKU1ItYXdhcmUgc3RheSBvbiAod2hpY2gg aGFzIGl0J3Mgb3duIGlzc3VlcyBpZiBCUjEgdW5kZXJmbG93cyBiZWNhdXNlIGl0J3MKZXhwZWN0 aW5nIHZpZGVvIGZyb20gQlIwKS4gTWF5YmUgd2UgaGF2ZSB0byBlbnN1cmUgdGhlIGVudGlyZSBw aXBlIGlzIFNSLWF3YXJlCmJlZm9yZSB3ZSBkbyBhbiBTUi1lbnRlci4KClRob3VnaHRzPwoKU2Vh bgoKPiAKPiBPciBzaG91bGQgd2UganVzdCBhZGQgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgdG8g YWxsIHRoZXNlIGhvb2tzPyBUaGF0J2QKPiBwcm9iYWJseSB0aGUgbW9zdCBmbGV4aWJsZSBsb25n LXRlcm0gdGhpbmcuIENvdWxkIGV2ZW4gYmUgZG9uZSB3aXRoIGNvY2NpLAo+IHNvIHdlIGRvbid0 IG5lZWQgbmV3IGF0b21pY19kaXNhYmxlMiBjYWxscyBhbmQgc2lsbHkgdGhpbmdzIGxpa2UgdGhh dC4KPiAtRGFuaWVsCj4gPiAKPiA+IFNlYW4KPiA+IAo+ID4gPiAtRGFuaWVsCj4gPiA+IAo+ID4g PiA+Cj4gPiA+ID4gU2Vhbgo+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gLSBTUiBvbiBjYW4g b25seSBoYXBwZW4gaWYgdGhlIGxvZ2ljYWwgY3J0Y19zdGF0ZS0+YWN0aXZlIGlzIG9uIGFuZCBz dGF5cyBvbgo+ID4gPiA+ID4gLSBTUiBjYW4gZ2V0IGRpc2FibGVkIGluIDIgc3ViY2FzZXMKPiA+ ID4gPiA+ICAgLSBsb2dpY2FsIGFjdGl2ZSBzdGF0ZSBzdGF5cyBvbiAtPiBoYW5kbGVkIHdpdGgg ZXhpc3RpbmcgaG9va3MKPiA+ID4gPiA+ICAgLSBsb2dpY2FsIGFjdGl2ZSBzdGF0ZSBhbHNvIGdv ZXMgb2ZmIC0+IGV4aXN0aW5nIGhvb2tzIGFsbCBza2lwIChiZWNhdXNlCj4gPiA+ID4gPiAgICAg YWN0aXZlPWZhbHNlIC0+IGFjdGl2ZT1mYWxzZSBpcyBhIG5vLW9wKSwgdGhlIHNwZWNpYWwgLT5z cl9kaXNhYmxlCj4gPiA+ID4gPiAgICAgdGFrZXMgY2FyZQo+ID4gPiA+ID4KPiA+ID4gPiA+IEl0 IGZlZWxzIGxpa2UgdGhpcyBpcyBjbGVhbiwgaW50ZWdyYXRlcyB3ZWxsIHdpdGggYXRvbWljIGhl bHBlcnMgb3ZlcmFsbAo+ID4gPiA+ID4gYW5kIGl0IGV2ZW4gbWFrZXMgc2Vuc2UuIEF0IGxlYXN0 IHRvIG15IHNsaWdodGx5IG94eWdlbiBkZXByaXZlZCBtaW5kCj4gPiA+ID4gPiByaWdodCBub3cg Li4uCj4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4gPiA+ID4g IEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0 YXRlKTsKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAvc25pcAo+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9k cm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiA+ID4g PiA+ID4gPiBpbmRleCBjODA2MTk5MmQ2Y2IuLjBhZTdlODEyZWM2MiAxMDA2NDQKPiA+ID4gPiA+ ID4gPiA+ID4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiA+ID4g PiA+ID4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiA+ID4gPiA+ ID4gPiBAQCAtNTAxLDYgKzUwMSwzNyBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSB7Cj4g PiA+ID4gPiA+ID4gPiA+ID4gICAgIC8qKiBAdHY6IFRWIGNvbm5lY3RvciBzdGF0ZSAqLwo+ID4g PiA+ID4gPiA+ID4gPiA+ICAgICBzdHJ1Y3QgZHJtX3R2X2Nvbm5lY3Rvcl9zdGF0ZSB0djsKPiA+ ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAvKioKPiA+ID4gPiA+ID4g PiA+ID4gPiArICAgICogQHNlbGZfcmVmcmVzaF9jaGFuZ2VkOgo+ID4gPiA+ID4gPiA+ID4gPiA+ ICsgICAgKgo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgKiBTZXQgdHJ1ZSB3aGVuIHNlbGYgcmVm cmVzaCBzdGF0dXMgaGFzIGNoYW5nZWQuIFRoaXMgaXMgdXNlZnVsIGZvcgo+ID4gPiA+ID4gPiA+ ID4gPiA+ICsgICAgKiB1c2UgaW4gZW5jb2Rlci9icmlkZ2UgZW5hYmxlIHdoZXJlIHRoZSBvbGQg c3RhdGUgaXMgdW5hdmFpbGFibGUgdG8KPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICogdGhlIGRy aXZlciBhbmQgaXQgbmVlZHMgdG8ga25vdyB3aGV0aGVyIHRoZSBlbmFibGUgdHJhbnNpdGlvbiBp cyBhCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAqIGZ1bGwgdHJhbnNpdGlvbiwgb3IgaWYgaXQg anVzdCBuZWVkcyB0byBleGl0IHNlbGYgcmVmcmVzaCBtb2RlLgo+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiBVaCwgd2UganVzdCBuZWVkIHByb3BlciBhdG9taWMgY2FsbGJhY2tz IHdpdGggYWxsIHRoZSBzdGF0ZXMgYXZhaWxhYmxlLgo+ID4gPiA+ID4gPiA+ID4gPiBPbmNlIHlv dSBoYXZlIG9uZSwgeW91IGNhbiBnZXQgYXQgdGhlIG90aGVycy4KPiA+ID4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBXZWxsLCBzdXJlLCB3ZSBjb3VsZCBkbyB0 aGF0IHRvbyA6KQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gdGJoIEknbSBub3Qgc3VyZSB3 aGV0aGVyIHRoYXQncyByZWFsbHkgYmV0dGVyLCB0aGUgZHVwbGljYXRpb24ganVzdCBpcmtzCj4g PiA+ID4gPiA+ID4gbWUuIFdpdGggYSBuZXcgY2FsbGJhY2sgZm9yIHRoZSBzcGVjaWFsIHNlbGYt cmVmcmVzaCBkaXNhYmxlIChJIGd1ZXNzIHdlCj4gPiA+ID4gPiA+ID4gb25seSBuZWVkIHRoYXQg b24gdGhlIGNvbm5lY3RvciksIHBsdXMgbG9va2luZyBhdAo+ID4gPiA+ID4gPiA+IGNvbm5lY3Rv ci0+c3RhdGUtPmNydGMtPnN0YXRlLT5zZWxmX3JlZnJlc2gsIEkgdGhpbmsgd2UnZCBiZSBjb3Zl cmVkCj4gPiA+ID4gPiA+ID4gYXMtaXM/IE9yIGlzIHRoZXJlIGEgY29ybmVyIGNhc2UgSSdtIHN0 aWxsIG1pc3Npbmc/Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSSB0aGlu ayB3ZSBjYW4gcmVtb3ZlIHNlbGZfcmVmcmVzaF9jaGFuZ2VkL3NlbGZfcmVmcmVzaF9hY3RpdmUg aWYgd2UgaW1wbGVtZW50Cj4gPiA+ID4gPiA+IGRlZGljYXRlZCBob29rcyBmb3Igc2VsZl9yZWZy ZXNoX2VudGVyL2V4aXQuIFdlJ2xsIHdhbnQgdG8ga2VlcAo+ID4gPiA+ID4gPiBzZWxmX3JlZnJl c2hfYXdhcmUgYXJvdW5kIHNpbmNlIHRoZSBwcmVzZW5jZSBvZiB0aGUgY2FsbGJhY2sgaW1wbGVt ZW50YXRpb25zCj4gPiA+ID4gPiA+IGRvZXMgbm90IGltcGx5IHRoZSBwYW5lbCBjb25uZWN0ZWQg c3VwcG9ydHMgU1IuCj4gPiA+ID4gPgo+ID4gPiA+ID4gWXVwLCBzZWxmX3JlZnJlc2hfYXdhcmUg aXMgbmVlZGVkLgo+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQXMgbWVudGlvbmVkIGFib3ZlLCB3ZSds bCBuZWVkIHRoZXNlIGhvb2tzIG9uIGV2ZXJ5dGhpbmcgaW4gdGhlIHBpcGVsaW5lIHRvIGJlCj4g PiA+ID4gPiA+IGZ1bGx5IGNvdmVyZWQuCj4gPiA+ID4gPgo+ID4gPiA+ID4gTGV0J3MganVzdCBk byB0aGUgLT5zcl9kaXNhYmxlIGhvb2sgZm9yIG5vdy4gSSBkb24ndCB0aGluayB3ZSBuZWVkIGFs bCB0aGUKPiA+ID4gPiA+IG90aGVycyByZWFsbHkuCj4gPiA+ID4gPgo+ID4gPiA+ID4gQ2hlZXJz LCBEYW5pZWwKPiA+ID4gPiA+IC0tCj4gPiA+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+ID4gPiBT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gPiA+IGh0dHA6Ly9ibG9n LmZmd2xsLmNoCj4gPiA+ID4KPiA+ID4gPiAtLQo+ID4gPiA+IFNlYW4gUGF1bCwgU29mdHdhcmUg RW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCj4gPiA+IAo+ID4gPiAKPiA+ID4gCj4gPiA+ IC0tIAo+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBD b3Jwb3JhdGlvbgo+ID4gPiArNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xs LmNoCj4gPiAKPiA+IC0tIAo+ID4gU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xl IC8gQ2hyb21pdW0gT1MKPiAKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0tIApTZWFuIFBh dWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=