From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 4/4] drm/i915/icl: Add Multi-segmented gamma support Date: Mon, 6 May 2019 16:11:09 +0300 Message-ID: <20190506131109.GY24299@intel.com> References: <20190430152108.31814-1-shashank.sharma@intel.com> <20190430152108.31814-5-shashank.sharma@intel.com> <20190503155054.GS24299@intel.com> <20190506122522.GV24299@intel.com> <476f334d-82e1-6a1c-773f-2a1dac467125@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 921D489906 for ; Mon, 6 May 2019 13:11:14 +0000 (UTC) Content-Disposition: inline In-Reply-To: <476f334d-82e1-6a1c-773f-2a1dac467125@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMDYsIDIwMTkgYXQgMDY6MjU6MTlQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiAKPiBPbiA1LzYvMjAxOSA1OjU1IFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6 Cj4gPiBPbiBNb24sIE1heSAwNiwgMjAxOSBhdCAwNDowOTozM1BNICswNTMwLCBTaGFybWEsIFNo YXNoYW5rIHdyb3RlOgo+ID4+IFJlZ2FyZHMKPiA+Pgo+ID4+IFNoYXNoYW5rCj4gPj4KPiA+PiBP biA1LzMvMjAxOSA5OjIwIFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPj4+IE9uIFR1ZSwg QXByIDMwLCAyMDE5IGF0IDA4OjUxOjA4UE0gKzA1MzAsIFNoYXNoYW5rIFNoYXJtYSB3cm90ZToK PiA+Pj4+IElDTCBpbnRyb2R1Y2VzIGEgbmV3IGdhbW1hIGNvcnJlY3Rpb24gbW9kZSBpbiBkaXNw bGF5IGVuZ2luZSwgY2FsbGVkCj4gPj4+PiBtdWx0aS1zZWdtZW50ZWQtZ2FtbWEgbW9kZS4gVGhp cyBtb2RlIGFsbG93cyB1c2VycyB0byBwcm9ncmFtIHRoZQo+ID4+Pj4gZGFya2VyIHJlZ2lvbiBv ZiB0aGUgZ2FtbWEgY3VydmUgd2l0aCBzdWVwcmZpbmUgcHJlY2lzaW9uLiBBbgo+ID4+Pj4gZXhh bXBsZSB1c2UgY2FzZSBmb3IgdGhpcyBpcyBIRFIgY3VydmVzIChsaWtlIFBRIFNULTIwODQpLgo+ ID4+Pj4KPiA+Pj4+IElmIHdlIHBsb3QgYSBnYW1tYSBjb3JyZWN0aW9uIGN1cnZlIGZyb20gdmFs dWUgcmFuZ2UgYmV0d2VlbiAwLjAgdG8gMS4wLAo+ID4+Pj4gSUNMJ3MgbXVsdGktc2VnbWVudCBo YXMgMyBkaWZmZXJlbnQgc2VjdGlvbnM6Cj4gPj4+PiAtIHN1cGVyZmluZSBzZWdtZW50OiA5IHZh bHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEvKDEyOCAqIDI1NikKPiA+Pj4+IC0gZmluZSBzZWdt ZW50OiAyNTcgdmFsdWVzLCByYW5nZXMgYmV0d2VlbiAwIC0gMS8oMTI4KQo+ID4+Pj4gLSBjb3Jh c2Ugc2VnbWVudDogMjU3IHZhbHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEKPiA+Pj4+Cj4gPj4+ PiBUaGlzIHBhdGNoOgo+ID4+Pj4gLSBDaGFuZ2VzIGdhbW1hIExVVHMgc2l6ZSBmb3IgSUNML0dF TjExIHRvIDI2MjE0NCBlbnRyaWVzICg4ICogMTI4ICogMjU2KSwKPiA+Pj4+ICAgICBzbyB0aGF0 IHVzZXJzcGFjZSBjYW4gcHJvZ3JhbSB3aXRoIGhpZ2hlc3QgcHJlY2lzaW9uIHN1cHBvcnRlZC4K PiA+Pj4+IC0gQ2hhbmdlcyBkZWZhdWx0IGdhbW1hIG1vZGUgKG5vbi1sZWdhY3kpIHRvIG11bHRp LXNlZ21lbnRlZC1nYW1tYSBtb2RlLgo+ID4+Pj4gLSBBZGRzIGZ1bmN0aW9ucyB0byBwcm9ncmFt L2RldGVjdCBtdWx0aS1zZWdtZW50IGdhbW1hLgo+ID4+Pj4KPiA+Pj4+IFYyOiBBZGRyZXNzZWQg cmV2aWV3IGNvbW1lbnRzIGZyb20gVmlsbGUKPiA+Pj4+ICAgICAgIC0gc2VwYXJhdGUgZnVuY3Rp b24gZm9yIHN1cGVyZmluZSBhbmQgZmluZSBzZWdtZW50cy4KPiA+Pj4+ICAgICAgIC0gcmVtb3Zl IGVudW0gZm9yIHNlZ21lbnRzLgo+ID4+Pj4gICAgICAgLSByZXVzZSBsYXN0IGVudHJ5IG9mIHRo ZSBMVVQgYXMgZ2NfbWF4IHZhbHVlLgo+ID4+Pj4gICAgICAgLSByZXBsYWNlIGlmKCkgLi4uLmNv bmQgd2l0aCBzd2l0Y2guLi5jYXNlIGluIGljbF9sb2FkX2x1dHMuCj4gPj4+PiAgICAgICAtIGFk ZCBhbiBlbnRyeSB2YXJpYWJsZSwgaW5zdGVhZCBvZiAnd29yZCcKPiA+Pj4+Cj4gPj4+PiBDYzog VmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Pj4+IENj OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ ID4+Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPj4+Pgo+ ID4+Pj4gU3VnZ2VzdGVkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPgo+ID4+Pj4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFu ay5zaGFybWFAaW50ZWwuY29tPgo+ID4+Pj4gU2lnbmVkLW9mZi1ieTogVW1hIFNoYW5rYXIgPHVt YS5zaGFua2FyQGludGVsLmNvbT4KPiA+Pj4+IC0tLQo+ID4+Pj4gICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wY2kuYyAgICB8ICAgMyArLQo+ID4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY29sb3IuYyB8IDEyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4+ Pj4gICAgMiBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK PiA+Pj4+Cj4gPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2ku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiA+Pj4+IGluZGV4IGZmYTJlZTcw YTAzZC4uODM2OTg5NTE3NjBiIDEwMDY0NAo+ID4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wY2kuYwo+ID4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2ku Ywo+ID4+Pj4gQEAgLTc0OSw3ICs3NDksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rl dmljZV9pbmZvIGludGVsX2Nhbm5vbmxha2VfaW5mbyA9IHsKPiA+Pj4+ICAgIAlHRU4oMTEpLCBc Cj4gPj4+PiAgICAJLmRkYl9zaXplID0gMjA0OCwgXAo+ID4+Pj4gICAgCS5oYXNfbG9naWNhbF9y aW5nX2Vsc3EgPSAxLCBcCj4gPj4+PiAtCS5jb2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSAz MywgLmdhbW1hX2x1dF9zaXplID0gMTAyNCB9Cj4gPj4+PiArCS5jb2xvciA9IHsgLmRlZ2FtbWFf bHV0X3NpemUgPSAzMywgLmdhbW1hX2x1dF9zaXplID0gMjYyMTQ0IH0KPiA+Pj4gVWdoLiBUaGF0 cyBvbmUgYmlnIExVVC4gQnV0IGxvb2tzIGNvcnJlY3QuCj4gPj4+Cj4gPj4+PiArCj4gPj4+IEJv Z3VzIG5ld2xpbmUuCj4gPj4gR290IGl0Lgo+ID4+Pj4gICAgCj4gPj4+PiAgICBzdGF0aWMgY29u c3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2ljZWxha2VfMTFfaW5mbyA9IHsKPiA+ Pj4+ICAgIAlHRU4xMV9GRUFUVVJFUywKPiA+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3Iu Ywo+ID4+Pj4gaW5kZXggNmMzNDFiZWE1MTRjLi40OTgzMWU4ZDAyZmIgMTAwNjQ0Cj4gPj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gPj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gPj4+PiBAQCAtNDEsNiArNDEsOSBAQAo+ ID4+Pj4gICAgI2RlZmluZSBDVE1fQ09FRkZfQUJTKGNvZWZmKQkJKChjb2VmZikgJiAoQ1RNX0NP RUZGX1NJR04gLSAxKSkKPiA+Pj4+ICAgIAo+ID4+Pj4gICAgI2RlZmluZSBMRUdBQ1lfTFVUX0xF TkdUSAkJMjU2Cj4gPj4+PiArI2RlZmluZSBJQ0xfR0FNTUFfTVVMVElTRUdfTFVUX0xFTkdUSAkJ KDI1NiAqIDEyOCAqIDgpCj4gPj4+PiArI2RlZmluZSBJQ0xfR0FNTUFfU1VQRVJGSU5FX1NFR19M RU5HVEgJOQo+ID4+Pj4gKwo+ID4+Pj4gICAgLyoKPiA+Pj4+ICAgICAqIEV4dHJhY3QgdGhlIENT QyBjb2VmZmljaWVudCBmcm9tIGEgQ1RNIGNvZWZmaWNpZW50IChpbiBVMzIuMzIgZml4ZWQgcG9p bnQKPiA+Pj4+ICAgICAqIGZvcm1hdCkuIFRoaXMgbWFjcm8gdGFrZXMgdGhlIGNvZWZmaWNpZW50 IHdlIHdhbnQgdHJhbnNmb3JtZWQgYW5kIHRoZQo+ID4+Pj4gQEAgLTc2Nyw2ICs3NzAsMTEzIEBA IHN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gPj4+PiAgICAJfQo+ID4+Pj4gICAgfQo+ID4+Pj4gICAgCj4gPj4+PiAr LyogaWxrKyAiMTIuNCIgaW50ZXJwb2xhdGVkIGZvcm1hdCAoaGlnaCAxMCBiaXRzKSAqLwo+ID4+ Pj4gK3N0YXRpYyB1MzIgaWxrX2x1dF8xMnA0X2xkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1 dCAqY29sb3IpCj4gPj4+PiArewo+ID4+Pj4gKwlyZXR1cm4gKGNvbG9yLT5yZWQgPj4gNikgPDwg MjAgfCAoY29sb3ItPmdyZWVuID4+IDYpIDw8IDEwIHwKPiA+Pj4+ICsJCShjb2xvci0+Ymx1ZSA+ PiA2KTsKPiA+Pj4+ICt9Cj4gPj4+PiArCj4gPj4+PiArLyogaWxrKyAiMTIuNCIgaW50ZXJwb2xh dGVkIGZvcm1hdCAobG93IDYgYml0cykgKi8KPiA+Pj4+ICtzdGF0aWMgdTMyIGlsa19sdXRfMTJw NF91ZHcoY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yKQo+ID4+Pj4gK3sKPiA+Pj4+ ICsJcmV0dXJuIChjb2xvci0+cmVkICYgMHgzZikgPDwgMjQgfCAoY29sb3ItPmdyZWVuICYgMHgz ZikgPDwgMTQgfAo+ID4+Pj4gKwkJKGNvbG9yLT5ibHVlICYgMHgzZik7Cj4gPj4+PiArfQo+ID4+ Pj4gKwo+ID4+Pj4gK3N0YXRpYyB2b2lkCj4gPj4+PiAraWNsX2xvYWRfZ2NtYXgoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPj4+PiArCQkJY29uc3Qgc3RydWN0 IGRybV9jb2xvcl9sdXQgKmVudHJ5KQo+ID4+PiBJbmRlbnRhdGlvbiBsb29rcyBvZmYuIEFsc28g cy9lbnRyeS9jb2xvci8gdG8gbWF0Y2ggdGhlIG90aGVyIHNpbWlsYXJpc2gKPiA+Pj4gZnVuY3Mg bWF5YmU/Cj4gPj4gU3VyZS4KPiA+Pj4+ICt7Cj4gPj4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4+Pj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsK PiA+Pj4+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ID4+Pj4gKwo+ID4+Pj4gKwkv KiBGaXhtZTogTFVUIGVudHJpZXMgYXJlIDE2IGJpdCBvbmx5LCBzbyB3ZSBjYW4gcHJvZyAweEZG RkYgbWF4ICovCj4gPj4+PiArCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDApLCBl bnRyeS0+cmVkKTsKPiA+Pj4+ICsJSTkxNV9XUklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSks IGVudHJ5LT5ncmVlbik7Cj4gPj4+PiArCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUs IDIpLCBlbnRyeS0+Ymx1ZSk7Cj4gPj4+PiArfQo+ID4+Pj4gKwo+ID4+Pj4gK3N0YXRpYyB2b2lk Cj4gPj4+PiAraWNsX3Byb2dyYW1fZ2FtbWFfc3VwZXJmaW5lX3NlZ21lbnQoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPj4+PiArewo+ID4+Pj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsK PiA+Pj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj LT5iYXNlLmRldik7Cj4gPj4+PiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxv YiA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ID4+Pj4gKwljb25zdCBzdHJ1Y3QgZHJt X2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ZGF0YTsKPiA+Pj4+ICsJZW51bSBwaXBlIHBpcGUgPSBj cnRjLT5waXBlOwo+ID4+Pj4gKwl1MzIgaTsKPiA+Pj4+ICsKPiA+Pj4+ICsJaWYgKCFsdXQgfHwg ZHJtX2NvbG9yX2x1dF9zaXplKGJsb2IpIDwgSUNMX0dBTU1BX1NVUEVSRklORV9TRUdfTEVOR1RI KQo+ID4+Pj4gKwkJcmV0dXJuOwo+ID4+PiBUaGVzZSBjaGVja3MgYXJlbid0IG5lZWRlZC4gSnVz dCBkZWFkIGNvZGUuCj4gPj4gV2lsbCByZW1vdmUgdGhpcyBhbmQgc2ltaWxhcnMuCj4gPj4+PiAr Cj4gPj4+PiArCS8qCj4gPj4+PiArCSAqIEV2ZXJ5IGVudHJ5IGluIHRoZSBtdWx0aS1zZWdtZW50 IExVVCBpcyBjb3JyZXNwb25kaW5nIHRvIGEgc3VwZXJmaW5lCj4gPj4+PiArCSAqIHNlZ21lbnQg c3RlcCB3aGljaCBpcyAxLyg4ICogMTI4ICogMjU2KS4KPiA+Pj4+ICsJICoKPiA+Pj4+ICsJICog U3VwZXJmaW5lIHNlZ21lbnQgaGFzIDkgZW50cmllcywgY29ycmVzcG9uZGluZyB0byB2YWx1ZXMK PiA+Pj4+ICsJICogMCwgMS8oOCAqIDEyOCAqIDI1NiksIDIvKDggKiAxMjggKiAyNTYpIC4uLi4g OC8oOCAqIDEyOCAqIDI1NikuCj4gPj4+PiArCSAqLwo+ID4+Pj4gKwlJOTE1X1dSSVRFKFBSRUNf UEFMX01VTFRJX1NFR19JTkRFWChwaXBlKSwgUEFMX1BSRUNfQVVUT19JTkNSRU1FTlQpOwo+ID4+ Pj4gKwo+ID4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKSB7Cj4gPj4+PiArCQljb25zdCBz dHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnkgPSAmbHV0W2ldOwo+ID4+Pj4gKwo+ID4+Pj4gKwkJ STkxNV9XUklURShQUkVDX1BBTF9NVUxUSV9TRUdfREFUQShwaXBlKSwKPiA+Pj4+ICsJCQkgICBp bGtfbHV0XzEycDRfdWR3KGVudHJ5KSk7Cj4gPj4+IGxkdyBzaG91bGQgY29tZSBiZWZvcmUgdWR3 Lgo+ID4+IEdvdCBpdC4KPiA+Pj4+ICsJCUk5MTVfV1JJVEUoUFJFQ19QQUxfTVVMVElfU0VHX0RB VEEocGlwZSksCj4gPj4+PiArCQkJICAgaWxrX2x1dF8xMnA0X2xkdyhlbnRyeSkpOwo+ID4+Pj4g Kwl9Cj4gPj4+PiArfQo+ID4+Pj4gKwo+ID4+Pj4gK3N0YXRpYyB2b2lkCj4gPj4+PiAraWNsX3By b2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiA+Pj4+ICt7Cj4gPj4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4+Pj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiA+Pj4+ ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Y19zdGF0ZS0+YmFz ZS5nYW1tYV9sdXQ7Cj4gPj4+PiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBi bG9iLT5kYXRhOwo+ID4+Pj4gKwljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnk7Cj4g Pj4+ICdlbnRyeScgZGVjbGFyYXRpb24gY2FuIGJlIG1vdmVkIGludG8gdGhlIGxvb3BzLgo+ID4+ IEl0cyBiZWluZyB1c2VkIGluIG11bHRpcGxlIGxvb3BzLAo+ID4gSU1PIHN0aWxsIGJldHRlciB0 byBtb3ZlIGludG8gdGhlIGxvb3BzLiBXZSBkb24ndCB3YW50IHRvIHBhc3MgYW55Cj4gPiBpbmZv cm1hdGlvbiBiZXR3ZWVuIHRoZSBsb29wcy4KPiA+Cj4gPj4gYWxzbyBiZWluZyB1c2VkIGZvciBH Q01heCBvdXRzaWRlIHRoZQo+ID4+IGxvb3AuCj4gPiBIbW0uIFRoYXQgbWlnaHQgYmUgYW4gYXJn dWVtbnQgZm9yIGtlZXBpbmcgaXQgb3V0LiBCdXQgdGhlIGN1cnJlbnQKPiA+IGdjbWF4IHVzYWdl IGxvb2tzIGJyb2tlbi4gWW91J3JlIHByb2dyYW1taW5nIHRoZSBzYW1lIHZhbHVlIGludG8KPiA+ IHRoZSBsYXN0IFBBTF9QUkVDIGluZGV4IGFuZCBHQ01BWC4KPiAKPiBJc24ndCB0aGlzIHdoYXQg eW91IHdhbnRlZCA/IElJUkMsIHlvdXIgcmVjb21tZW5kYXRpb24gd2FzIHRvIHByb2dyYW0gCj4g dGhlIGhpZ2hlc3QgdmFsdWVzIHVzZXIgd2FudHMgdG8gcHJvZ3JhbSBpbiBHQ01BWCByZWcuIFdl IGFsc28gaGFkIGEgCj4gZGlzY3Vzc2lvbiBvbiBob3cgdXNlciBjYW50IHByb2dyYW0gMS4wLCBh cyB3ZSBoYXZlIExVVCBkZXB0aCBvbiAxNiBiaXQgCj4gb25seSwgYW5kIHdlIGRlY2lkZWQgdG8g dXNlIHRoZSBsYXN0IHZhbHVlIG9mIHRoZSBMVVQgYXMgR0NNQVguIERpZCBJIAo+IG1pc3VuZGVy c3RhbmQgYW55dGhpbmcgdGhlcmUgPwoKSXQgc2hvdWxkIGJlOgpQQUxfUFJFQ1ttYXhdID0gbHV0 W3NpemUtMl07CkdDTUFYID0gbHV0W3NpemUtMV07CgpPaCwgd2UgYWxzbyBuZWVkIHRvIGluY3Jl YXNlIHRoZSBMVVQgc2l6ZSBieSBvbmUgdG8gbWFrZSB0aGF0CndvcmsgY29ycmVjdGx5LgoKLS0g ClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZng=