From mboxrd@z Thu Jan 1 00:00:00 1970 From: Karol Herbst Subject: Re: [PATCH v2] drm/nouveau: add a LED driver for the NVIDIA logo Date: Tue, 23 Aug 2016 16:38:45 +0200 Message-ID: References: <1462319465-29090-1-git-send-email-martin.peres@free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Martin Peres Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: nouveau.vger.kernel.org MjAxNi0wOC0yMyAxNjowNiBHTVQrMDI6MDAgTWFydGluIFBlcmVzIDxtYXJ0aW4ucGVyZXNAZnJl ZS5mcj46Cj4gT24gMjMvMDgvMTYgMTE6MzEsIEthcm9sIEhlcmJzdCB3cm90ZToKPj4KPj4gbWF5 YmUgaXQgbWFrZXMgc2Vuc2UgdG8gZXhwb3NlIHRoZSBTTEkgTEVELCB0b28uCj4+Cj4+IFJlZ2Fy ZGxlc3Mgb2YgbXkgY29tbWVudHMgdGhpcyBwYXRjaCBpcyByZXZpZXdlZC1ieSBtZS4KPgo+Cj4g WW91IHJldmlld2VkIHRoZSB3cm9uZyBwYXRjaCwgSSBzaG91bGQgaGF2ZSBuYW1lZCB0aGUgcmUt c2VuZCB2My4KPgo+IEkgYWNjaWRlbnRhbGx5IHNlbnQgdGhlIHYxIHBhdGNoIGFzIGEgdjIgOnMK PgoKeWVhaCwgbWFpbG1hbiB3YXMgc3R1cGlkIHRvZGF5LiBJIGdvdCB5b3VyIG5ldyB2ZXJzaW9u IHdheSB0b28gbGF0ZS4KcmJ5IHN0aWxsIHZhbGlkIHRob3VnaC4KCj4+Cj4+IDIwMTYtMDgtMjMg MTozOSBHTVQrMDI6MDAgTWFydGluIFBlcmVzIDxtYXJ0aW4ucGVyZXNAZnJlZS5mcj46Cj4+Pgo+ Pj4gV2UgcmVjZWl2ZWQgYSBkb25hdGlvbiBvZiBhIFRpdGFuIHdoaWNoIGhhcyB0aGlzIHVzZWxl c3MgZmVhdHVyZQo+Pj4gYWxsb3dpbmcgdXNlcnMgdG8gY29udHJvbCB0aGUgYnJpZ2h0bmVzcyBv ZiB0aGUgTEVEIGJlaGluZCB0aGUKPj4+IGxvZ28gb2YgTlZJRElBLiBJbiB0aGUgdHJ1ZSBzcGly aXQgb2Ygb3BlbiBzb3VyY2UsIGxldCdzIGV4cG9zZQo+Pj4gdGhhdCB0byB0aGUgdXNlcnMgb2Yg dmVyeSBleHBlbnNpdmUgY2FyZHMhCj4+Pgo+Pj4gVGhpcyBwYXRjaCBob29rcyB1cCB0aGlzIExF RC9QV00gdG8gdGhlIExFRCBzdWJzeXN0ZW0gd2hpY2ggYWxsb3dzCj4+PiBibGlua2luZyBpdCBp biBzeW5jIHdpdGggY3B1L2Rpc2svbmV0d29yay93aGF0ZXZlciBhY3Rpdml0eSAoaGVhcnRiZWF0 Cj4+PiBpcyBxdWl0ZSBuaWNlISkuIFVzZXJzIG1heSBhbHNvIGltcGxlbWVudCBzb21lIGJyZWF0 aGluZyBlZmZlY3Qgb3IKPj4+IG1vcnNlIGNvZGUgc3VwcG9ydCBpbiB0aGUgdXNlcnNwYWNlIGlm IHRoZXkgZmVlbCBsaWtlIGl0Lgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBQZXJlcyA8 bWFydGluLnBlcmVzQGZyZWUuZnI+Cj4+PiAtLS0KPj4+ICAgZHJtL25vdXZlYXUvS2J1aWxkICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4+PiAgIGRybS9ub3V2ZWF1L2luY2x1ZGUv bnZrbS9zdWJkZXYvYmlvcy9ncGlvLmggfCAgIDEgKwo+Pj4gICBkcm0vbm91dmVhdS9ub3V2ZWF1 X2RybS5jICAgICAgICAgICAgICAgICAgIHwgICA3ICsrCj4+PiAgIGRybS9ub3V2ZWF1L25vdXZl YXVfZHJtLmggICAgICAgICAgICAgICAgICAgfCAgIDMgKwo+Pj4gICBkcm0vbm91dmVhdS9ub3V2 ZWF1X2xlZC5jICAgICAgICAgICAgICAgICAgIHwgMTMxCj4+PiArKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4+PiAgIGRybS9ub3V2ZWF1L25vdXZlYXVfbGVkLmggICAgICAgICAgICAgICAg ICAgfCAgNDggKysrKysrKysrKwo+Pj4gICA2IGZpbGVzIGNoYW5nZWQsIDE5MSBpbnNlcnRpb25z KCspCj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcm0vbm91dmVhdS9ub3V2ZWF1X2xlZC5jCj4+ PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcm0vbm91dmVhdS9ub3V2ZWF1X2xlZC5oCj4+Pgo+Pj4g ZGlmZiAtLWdpdCBhL2RybS9ub3V2ZWF1L0tidWlsZCBiL2RybS9ub3V2ZWF1L0tidWlsZAo+Pj4g aW5kZXggMjUyN2JmNC4uMzEyYmNhOSAxMDA2NDQKPj4+IC0tLSBhL2RybS9ub3V2ZWF1L0tidWls ZAo+Pj4gKysrIGIvZHJtL25vdXZlYXUvS2J1aWxkCj4+PiBAQCAtMjIsNiArMjIsNyBAQCBub3V2 ZWF1LSQoQ09ORklHX0RFQlVHX0ZTKSArPSBub3V2ZWF1X2RlYnVnZnMubwo+Pj4gICBub3V2ZWF1 LXkgKz0gbm91dmVhdV9kcm0ubwo+Pj4gICBub3V2ZWF1LXkgKz0gbm91dmVhdV9od21vbi5vCj4+ PiAgIG5vdXZlYXUtJChDT05GSUdfQ09NUEFUKSArPSBub3V2ZWF1X2lvYzMyLm8KPj4+ICtub3V2 ZWF1LXkgKz0gbm91dmVhdV9sZWQubwo+Pj4gICBub3V2ZWF1LXkgKz0gbm91dmVhdV9udmlmLm8K Pj4+ICAgbm91dmVhdS0kKENPTkZJR19OT1VWRUFVX1BMQVRGT1JNX0RSSVZFUikgKz0gbm91dmVh dV9wbGF0Zm9ybS5vCj4+PiAgIG5vdXZlYXUteSArPSBub3V2ZWF1X3VzaWYubyAjIHVzZXJzcGFj ZSA8LT4gbnZpZgo+Pj4gZGlmZiAtLWdpdCBhL2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9zdWJk ZXYvYmlvcy9ncGlvLmgKPj4+IGIvZHJtL25vdXZlYXUvaW5jbHVkZS9udmttL3N1YmRldi9iaW9z L2dwaW8uaAo+Pj4gaW5kZXggYTQ3ZDQ2ZC4uYjdhNTRlNiAxMDA2NDQKPj4+IC0tLSBhL2RybS9u b3V2ZWF1L2luY2x1ZGUvbnZrbS9zdWJkZXYvYmlvcy9ncGlvLmgKPj4+ICsrKyBiL2RybS9ub3V2 ZWF1L2luY2x1ZGUvbnZrbS9zdWJkZXYvYmlvcy9ncGlvLmgKPj4+IEBAIC02LDYgKzYsNyBAQCBl bnVtIGRjYl9ncGlvX2Z1bmNfbmFtZSB7Cj4+PiAgICAgICAgICBEQ0JfR1BJT19UVkRBQzEgPSAw eDJkLAo+Pj4gICAgICAgICAgRENCX0dQSU9fRkFOID0gMHgwOSwKPj4+ICAgICAgICAgIERDQl9H UElPX0ZBTl9TRU5TRSA9IDB4M2QsCj4+PiArICAgICAgIERDQl9HUElPX0xPR09fTEVEX1BXTSA9 IDB4ODQsCj4+PiAgICAgICAgICBEQ0JfR1BJT19VTlVTRUQgPSAweGZmLAo+Pj4gICAgICAgICAg RENCX0dQSU9fVklEMCA9IDB4MDQsCj4+PiAgICAgICAgICBEQ0JfR1BJT19WSUQxID0gMHgwNSwK Pj4+IGRpZmYgLS1naXQgYS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jIGIvZHJtL25vdXZlYXUv bm91dmVhdV9kcm0uYwo+Pj4gaW5kZXggZDA2ODc3ZC4uZGM5NzQwMSAxMDA2NDQKPj4+IC0tLSBh L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMKPj4+ICsrKyBiL2RybS9ub3V2ZWF1L25vdXZlYXVf ZHJtLmMKPj4+IEBAIC00OSw2ICs0OSw3IEBACj4+PiAgICNpbmNsdWRlICJub3V2ZWF1X3R0bS5o Igo+Pj4gICAjaW5jbHVkZSAibm91dmVhdV9nZW0uaCIKPj4+ICAgI2luY2x1ZGUgIm5vdXZlYXVf dmdhLmgiCj4+PiArI2luY2x1ZGUgIm5vdXZlYXVfbGVkLmgiCj4+PiAgICNpbmNsdWRlICJub3V2 ZWF1X2h3bW9uLmgiCj4+PiAgICNpbmNsdWRlICJub3V2ZWF1X2FjcGkuaCIKPj4+ICAgI2luY2x1 ZGUgIm5vdXZlYXVfYmlvcy5oIgo+Pj4gQEAgLTQ2OCw2ICs0NjksNyBAQCBub3V2ZWF1X2RybV9s b2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkCj4+PiBsb25nIGZsYWdzKQo+Pj4g ICAgICAgICAgbm91dmVhdV9od21vbl9pbml0KGRldik7Cj4+PiAgICAgICAgICBub3V2ZWF1X2Fj Y2VsX2luaXQoZHJtKTsKPj4+ICAgICAgICAgIG5vdXZlYXVfZmJjb25faW5pdChkZXYpOwo+Pj4g KyAgICAgICBub3V2ZWF1X2xlZF9pbml0KGRldik7Cj4+Pgo+Pj4gICAgICAgICAgaWYgKG5vdXZl YXVfcnVudGltZV9wbSAhPSAwKSB7Cj4+PiAgICAgICAgICAgICAgICAgIHBtX3J1bnRpbWVfdXNl X2F1dG9zdXNwZW5kKGRldi0+ZGV2KTsKPj4+IEBAIC00OTksNiArNTAxLDcgQEAgbm91dmVhdV9k cm1fdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+PiAgICAgICAgICBzdHJ1Y3Qgbm91 dmVhdV9kcm0gKmRybSA9IG5vdXZlYXVfZHJtKGRldik7Cj4+Pgo+Pj4gICAgICAgICAgcG1fcnVu dGltZV9nZXRfc3luYyhkZXYtPmRldik7Cj4+PiArICAgICAgIG5vdXZlYXVfbGVkX2ZpbmkoZGV2 KTsKPj4+ICAgICAgICAgIG5vdXZlYXVfZmJjb25fZmluaShkZXYpOwo+Pj4gICAgICAgICAgbm91 dmVhdV9hY2NlbF9maW5pKGRybSk7Cj4+PiAgICAgICAgICBub3V2ZWF1X2h3bW9uX2ZpbmkoZGV2 KTsKPj4+IEBAIC01NTAsNiArNTUzLDggQEAgbm91dmVhdV9kb19zdXNwZW5kKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGJvb2wKPj4+IHJ1bnRpbWUpCj4+PiAgICAgICAgICBzdHJ1Y3Qgbm91dmVh dV9jbGkgKmNsaTsKPj4+ICAgICAgICAgIGludCByZXQ7Cj4+Pgo+Pj4gKyAgICAgICBub3V2ZWF1 X2xlZF9zdXNwZW5kKGRldik7Cj4+PiArCj4+PiAgICAgICAgICBpZiAoZGV2LT5tb2RlX2NvbmZp Zy5udW1fY3J0Yykgewo+Pj4gICAgICAgICAgICAgICAgICBOVl9JTkZPKGRybSwgInN1c3BlbmRp bmcgY29uc29sZS4uLlxuIik7Cj4+PiAgICAgICAgICAgICAgICAgIG5vdXZlYXVfZmJjb25fc2V0 X3N1c3BlbmQoZGV2LCAxKTsKPj4+IEBAIC02MzgsNiArNjQzLDggQEAgbm91dmVhdV9kb19yZXN1 bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbAo+Pj4gcnVudGltZSkKPj4+ICAgICAgICAg ICAgICAgICAgbm91dmVhdV9mYmNvbl9zZXRfc3VzcGVuZChkZXYsIDApOwo+Pj4gICAgICAgICAg fQo+Pj4KPj4+ICsgICAgICAgbm91dmVhdV9sZWRfcmVzdW1lKGRldik7Cj4+PiArCj4+PiAgICAg ICAgICByZXR1cm4gMDsKPj4+ICAgfQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcm0vbm91dmVhdS9u b3V2ZWF1X2RybS5oIGIvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uaAo+Pj4gaW5kZXggNWMzNjNl ZC4uYjE0OGRjYiAxMDA2NDQKPj4+IC0tLSBhL2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmgKPj4+ ICsrKyBiL2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmgKPj4+IEBAIC0xNjYsNiArMTY2LDkgQEAg c3RydWN0IG5vdXZlYXVfZHJtIHsKPj4+ICAgICAgICAgIHN0cnVjdCBub3V2ZWF1X2h3bW9uICpo d21vbjsKPj4+ICAgICAgICAgIHN0cnVjdCBub3V2ZWF1X2RlYnVnZnMgKmRlYnVnZnM7Cj4+Pgo+ Pj4gKyAgICAgICAvKiBsZWQgbWFuYWdlbWVudCAqLwo+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVh dV9sZWQgKmxlZDsKPj4+ICsKPj4+ICAgICAgICAgIC8qIGRpc3BsYXkgcG93ZXIgcmVmZXJlbmNl ICovCj4+PiAgICAgICAgICBib29sIGhhdmVfZGlzcF9wb3dlcl9yZWY7Cj4+Pgo+Pj4gZGlmZiAt LWdpdCBhL2RybS9ub3V2ZWF1L25vdXZlYXVfbGVkLmMgYi9kcm0vbm91dmVhdS9ub3V2ZWF1X2xl ZC5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMC4uM2YyM2ZmNgo+ Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvZHJtL25vdXZlYXUvbm91dmVhdV9sZWQuYwo+Pj4g QEAgLTAsMCArMSwxMzEgQEAKPj4+ICsvKgo+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXJ0 aW4gUGVyZXMKPj4+ICsgKgo+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwo+Pj4gKyAqIGEgY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+Pj4g KyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcKPj4+ICsgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCj4+PiArICogZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCj4+PiAr ICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvCj4+PiArICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+Pj4gKyAq Cj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2UgKGluY2x1ZGluZyB0aGUKPj4+ICsgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbAo+Pj4gKyAqIHBvcnRpb25zIG9mIHRo ZSBTb2Z0d2FyZS4KPj4+ICsgKgo+Pj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+Pj4gKyAqIEVYUFJFU1MgT1IgSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+Pj4g KyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E Cj4+PiBOT05JTkZSSU5HRU1FTlQuCj4+PiArICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS SUdIVCBPV05FUihTKSBBTkQvT1IgSVRTIFNVUFBMSUVSUyBCRQo+Pj4gKyAqIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTgo+Pj4g QUNUSU9OCj4+PiArICogT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCj4+PiArICogV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4+PiArICoKPj4+ICsg Ki8KPj4+ICsKPj4+ICsvKgo+Pj4gKyAqIEF1dGhvcnM6Cj4+PiArICogIE1hcnRpbiBQZXJlcyA8 bWFydGluLnBlcmVzQGZyZWUuZnI+Cj4+PiArICovCj4+PiArCj4+PiArI2luY2x1ZGUgPGxpbnV4 L2xlZHMuaD4KPj4+ICsKPj4+ICsjaW5jbHVkZSAibm91dmVhdV9kcm0uaCIKPj4+ICsjaW5jbHVk ZSAibm91dmVhdV9sZWQuaCIKPj4+ICsjaW5jbHVkZSA8bnZrbS9zdWJkZXYvZ3Bpby5oPgo+Pj4g Kwo+Pj4gK3N0YXRpYyBlbnVtIGxlZF9icmlnaHRuZXNzCj4+PiArbm91dmVhdV9sZWRfZ2V0X2Jy aWdodG5lc3Moc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkKQo+Pj4gK3sKPj4+ICsgICAgICAgc3Ry dWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBjb250YWluZXJfb2YobGVkLCBzdHJ1Y3QKPj4+IG5v dXZlYXVfbGVkLCBsZWQpLT5kZXY7Cj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2RybSAqZHJt ID0gbm91dmVhdV9kcm0oZHJtX2Rldik7Cj4+PiArICAgICAgIHN0cnVjdCBudmlmX29iamVjdCAq ZGV2aWNlID0gJmRybS0+ZGV2aWNlLm9iamVjdDsKPj4+ICsgICAgICAgdTMyIGRpdiwgZHV0eTsK Pj4+ICsKPj4+ICsgICAgICAgZGl2ID0gIG52aWZfcmQzMihkZXZpY2UsIDB4NjFjODgwKSAmIDB4 MDBmZmZmZmY7Cj4+PiArICAgICAgIGR1dHkgPSBudmlmX3JkMzIoZGV2aWNlLCAweDYxYzg4NCkg JiAweDAwZmZmZmZmOwo+Pj4gKwo+Pj4gKyAgICAgICByZXR1cm4gZHV0eSAqIExFRF9GVUxMIC8g ZGl2Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZAo+Pj4gK25vdXZlYXVfbGVkX3NldF9i cmlnaHRuZXNzKHN0cnVjdCBsZWRfY2xhc3NkZXYgKmxlZCwgZW51bSBsZWRfYnJpZ2h0bmVzcwo+ Pj4gdmFsdWUpCj4+PiArewo+Pj4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9 IGNvbnRhaW5lcl9vZihsZWQsIHN0cnVjdAo+Pj4gbm91dmVhdV9sZWQsIGxlZCktPmRldjsKPj4+ ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHJtICpkcm0gPSBub3V2ZWF1X2RybShkcm1fZGV2KTsK Pj4+ICsgICAgICAgc3RydWN0IG52aWZfb2JqZWN0ICpkZXZpY2UgPSAmZHJtLT5kZXZpY2Uub2Jq ZWN0Owo+Pj4gKwo+Pj4gKyAgICAgICB1MzIgaW5wdXRfY2xrID0gMjdlNjsgLyogUERJU1BMQVku U09SWzFdLlBXTSBpcyBjb25uZWN0ZWQgdG8gdGhlCj4+PiBjcnlzdGFsICovCj4+PiArICAgICAg IHUzMiBmcmVxID0gMTAwOyAvKiB0aGlzIGlzIHdoYXQgbnZpZGlhIHVzZXMgYW5kIGl0IHNob3Vs ZCBiZQo+Pj4gZ29vZC1lbm91Z2ggKi8KPj4+ICsgICAgICAgdTMyIGRpdiwgZHV0eTsKPj4+ICsK Pj4+ICsgICAgICAgZGl2ID0gaW5wdXRfY2xrIC8gZnJlcTsKPj4+ICsgICAgICAgZHV0eSA9IHZh bHVlICogZGl2IC8gTEVEX0ZVTEw7Cj4+PiArCj4+PiArICAgICAgIC8qIGZvciBub3csIHRoaXMg aXMgc2FmZSB0byBkaXJlY3RseSBwb2tlIHRob3NlIHJlZ2lzdGVycwo+Pj4gYmVjYXVzZToKPj4+ ICsgICAgICAgICogIC0gQTogbnZpZGlhIG5ldmVyIHB1dHMgdGhlIGxvZ28gbGVkIHRvIGFueSBv dGhlciBQV00KPj4+IGNvbnRyb2xlcgo+Pj4gKyAgICAgICAgKiAgICAgICB0aGFuIFBESVNQTEFZ LlNPUlsxXS5QV00uCj4+PiArICAgICAgICAqICAtIEI6IG5vdXZlYXUgZG9lcyBub3QgdG91Y2gg dGhlc2UgcmVnaXN0ZXJzIGFueXdoZXJlIGVsc2UKPj4+ICsgICAgICAgICovCj4+PiArICAgICAg IG52aWZfd3IzMihkZXZpY2UsIDB4NjFjODgwLCBkaXYpOwo+Pj4gKyAgICAgICBudmlmX3dyMzIo ZGV2aWNlLCAweDYxYzg4NCwgMHhjMDAwMDAwMCB8IGR1dHkpOwo+Pgo+PiBJIGZlZWwgbGlrZSB0 aGVyZSBzaG91bGQgYmUgYSBjb21tZW50IGV4cGxhaW5pbmcgdGhlIDB4NDAwMDAwMDAKPj4gKGNv bm5lY3RlZCB0byBjcnlzdGFsKS4gT3IgbWF5YmUgd2Ugc2hvdWxkIGJlIGluIGdlbmVyYWwgbW9y ZSBzdHJpY3QKPj4gYWJvdXQgdXNpbmcgY29uc3RhbnRzLCBJIGZlZWwgbGlrZSB0aG9zZSBoYXJk Y29kZWQgbWFnaWMgbnVtYmVycyBhcmUKPj4gaGFyZCB0byB1bmRlcnN0YW5kIGJ5IHVzZXJzLgo+ Cj4KPiBXZWxsLCB0cnVlLCBidXQgYXMgbG9uZyBhcyBpdCBpcyB3ZWxsIGRvY3VtZW50ZWQgaW4g cm5uZGIsIEkgdGhpbmsgaXQgaXMgdGhlCj4gcHJvcGVyIHdheSB0byBnby4gT3RoZXJ3aXNlLCB3 ZSB3b3VsZCBuZWVkIHRvIG1haW50YWluIG1hY3JvcyB3aGljaCB3ZSB0cmllZAo+IGFuZCBmYWls ZWQgYXQgOnMKPgoKd2VsbCwgbm90IGV2ZXJ5Ym9keSBrbm93cyB3aGVyZSB0byBsb29rIGZvciBz dHVmZi4gQnV0IHRoaXMgaXMgYW4KaXNzdWUgdW5yZWxhdGVkIHRvIHlvdXIgcGF0Y2ggYW55d2F5 LgoKPiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSwgdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2Yg dGhlIGZ1bmN0aW9uIHNob3VsZCBnaXZlCj4gYWxsIHRoZSBpbmZvcm1hdGlvbi4KPgo+IFdlIG5l ZWQgdG8gbWFrZSB0aGUgdXNlIG9mIGxvb2t1cCBrbm93bjoKPgo+ICQgbG9va3VwIC1hIEU0IDB4 NjFjODg0IDB4YzAwMDAwMDAKPiBQRElTUExBWS5TT1JbMHgxXS5QV01fQ1RMID0+IHsgRFVUWSA9 IDAgfCBDTE9DS19TRUxFQ1QgPSBVTksxIHwgVFJJR0dFUiB9Cj4KPiBPSywgSSBmb3Jnb3QgdG8g dXBkYXRlIHJubkRCIDpzCgp1cHN0cmVhbSBvciBsb2NhbD8gVGhlIFhNTCBsb29rZWQgZmluZSB0 byBtZSwgYnV0IG1heWJlIEkgbG9va2VkIGF0CnRoZSB3cm9uZyB0aGluZy4gbnZtLgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOb3V2ZWF1IG1haWxpbmcg bGlzdApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUK