From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4 4/6] drm: scrambling support in drm layer Date: Thu, 23 Feb 2017 13:45:43 +0200 Message-ID: <20170223114543.GT31595@intel.com> References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> <1487769511-17359-5-git-send-email-shashank.sharma@intel.com> <20170222172424.GL31595@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Sharma, Shashank" Cc: jose.abreu@synopsys.com, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBGZWIgMjMsIDIwMTcgYXQgMDk6MDU6MTZBTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiAKPiBPbiAyLzIyLzIwMTcgMTA6 NTQgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+IE9uIFdlZCwgRmViIDIyLCAyMDE3IGF0 IDA2OjQ4OjI5UE0gKzA1MzAsIFNoYXNoYW5rIFNoYXJtYSB3cm90ZToKPiA+PiBIRE1JIDIuMCBz cGVjIG1hbmRhdGVzIHNjcmFtYmxpbmcgZm9yIG1vZGVzIHdpdGggcGl4ZWwgY2xvY2sgaGlnaGVy Cj4gPj4gdGhhbiAzNDAgTUh6LiBUaGlzIHBhdGNoIGFkZHMgZmV3IG5ldyBmdW5jdGlvbnMgaW4g ZHJtIGxheWVyIGZvcgo+ID4+IGNvcmUgZHJpdmVycyB0byBlbmFibGUvZGlzYWJsZSBzY3JhbWJs aW5nLgo+ID4+Cj4gPj4gVGhpcyBwYXRjaCBhZGRzOgo+ID4+IC0gQSBmdW5jdGlvbiB0byBkZXRl Y3Qgc2NyYW1ibGluZyBzdXBwb3J0IHBhcnNpbmcgSEYtVlNEQgo+ID4+IC0gQSBmdW5jdGlvbiB0 byBjaGVjayBzY3JhbWJsaW5nIHN0YXR1cyBydW50aW1lIHVzaW5nIFNDREMgcmVhZC4KPiA+PiAt IFR3byBmdW5jdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgc2NyYW1ibGluZyB1c2luZyBTQ0RDIHJl YWQvd3JpdGUuCj4gPj4gLSBGZXcgbmV3IGJvb2xzIHRvIHJlZmxlY3Qgc2NyYW1ibGluZyBzdXBw b3J0IGFuZCBzdGF0dXMuCj4gPj4KPiA+PiBWMjogQWRkcmVzc2VkIHJldmlldyBjb21tZW50cyBm cm9tIFRoaWVycnksIFZpbGxlIGFuZCBEaGluYWthcmFuCj4gPj4gVGhpZXJyeToKPiA+PiAtIE1o eiAtPiBNSHogaW4gY29tbWVudHMgYW5kIGNvbW1pdCBtZXNzYWdlLgo+ID4+IC0gaTJjIC0+IEky QyBpbiBjb21tZW50cy4KPiA+PiAtIEZpeCB0aGUgZnVuY3Rpb24gZG9jdW1lbnRhdGlvbnMsIGtl ZXAgaW4gc3luYyB3aXRoIGRybV9zY2RjX2hlbHBlci5jCj4gPj4gLSBkcm1fY29ubmVjdG9yIC0+ IERSTSBjb25uZWN0b3IuCj4gPj4gLSBDcmVhdGUgc3RydWN0dXJlIGZvciBTQ0RDLCBhbmQgc2F2 ZSBzY3JhbWJsaW5nIHN0YXR1cyBpbnNpZGUgdGhhdCwKPiA+PiAgICBpbiBhIHN1Yi1zdHJ1Y3R1 cmUuCj4gPj4gLSBDYWxsIHRoaXMgc3ViLXN0cnVjdHVyZSBzY3JhbWJsaW5nIGluc3RlYWQgb2Yg c2NyX2luZm8uCj4gPj4gLSBsb3dfcmF0ZXMgLT4gbG93X2Nsb2NrcyBpbiBzY3JhbWJsaW5nIHN0 YXR1cyBzdHJ1Y3R1cmUuCj4gPj4gLSBTdG9yZSB0aGUgcmV0dXJuIHZhbHVlIG9mIEkyQyByZWFk L3dyaXRlIGFuZCBwcmludCB0aGUgZXJyb3IgY29kZQo+ID4+ICAgIGluIGNhc2Ugb2YgZmFpbHVy ZS4KPiA+Pgo+ID4+IFRoaWVycnkgYW5kIFZpbGxlOgo+ID4+IC0gTW92ZSB0aGUgc2NyYW1ibGlu ZyBlbmFibGUvZGlzYWJsZS9xdWVyeSBmdW5jdGlvbnMgaW4KPiA+PiAgICBkcm1fc2NkY19oZWxw ZXIuYyBmaWxlLgo+ID4+IC0gQWRkIGRybV9TQ0RDIHByZWZpeCBmb3IgdGhlIGZ1bmN0aW9ucy4K PiA+PiAtIE9wdGltaXplIHRoZSByZXR1cm4gc3RhdGVtZW50IGZyb20gZnVuY3Rpb24KPiA+PiAg ICBkcm1fU0NEQ19jaGVja19zY3JhbWJsaW5nX3N0YXR1cy4KPiA+Pgo+ID4+IFZpbGxlOgo+ID4+ IC0gRG9udCBvdmVyd3JpdGUgc2F2ZWQgbWF4IFRNRFMgY2xvY2sgdmFsdWUgaW4gZGlzcGxheV9p bmZvLAo+ID4+ICAgIGlmIG1heCB0bWRzIGNsb2NrIGZyb20gSEYtVlNEQiBpcyBub3QgPiAzNDAg TUh6Lgo+ID4+IC0gZHJtX2RldGVjdF9oZG1pX3NjcmFtYmxpbmcgLT4gZHJtX3BhcnNlX2hkbWlf Zm9ydW1fdnNkYi4KPiA+PiAtIFJlbW92ZSBkeW5hbWljIHRyYWNraW5nIG9mIFNDREMgc3RhdHVz IGZyb20gRFJNIGxheWVyLCBmb3JjZSBib29sLgo+ID4+IC0gUHJvZ3JhbSBjbG9jayByYXRpbyBi aXQgYWxzbywgd2hpbGUgZW5hYmxpbmcgc2NyYW1ibGluZy4KPiA+Pgo+ID4+IERoaW5ha2FyYW46 Cj4gPj4gLSBBZGQgYSBjb21tZW50IGFib3V0ICo1MDAwIHdoaWxlIGV4dHJhY3RpbmcgbWF4IGNs b2NrIHN1cHBvcnRlZC4KPiA+Pgo+ID4+IFYzOiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZy b20gSm9zZS4KPiA+PiAtIENyZWF0ZSBzZXBhcmF0ZSBmdW5jdGlvbnMgdG8gZW5hYmxlIHNjcmFt YmxpbmcgYW5kIHRvIHNldCBUTURTCj4gPj4gICAgY2xvY2svY2hhcmFjdGVyIHJhdGUgcmF0aW8u Cj4gPj4KPiA+PiBWNDogUmViYXNlCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBT aGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4gPj4gLS0tCj4gPj4gICBkcml2ZXJz L2dwdS9kcm0vZHJtX2VkaWQuYyAgICAgICAgfCAgMzMgKysrKysrKy0KPiA+PiAgIGRyaXZlcnMv Z3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYyB8IDE2NCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ID4+ICAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAgIHwg IDE5ICsrKysrCj4gPj4gICBpbmNsdWRlL2RybS9kcm1fZWRpZC5oICAgICAgICAgICAgfCAgIDYg Ky0KPiA+PiAgIGluY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oICAgICB8ICA0MSArKysrKysr KysrCj4gPj4gICA1IGZpbGVzIGNoYW5nZWQsIDI2MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiA+PiBpbmRleCA2M2I3OWJlLi4xZTE4YzBhIDEw MDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiA+PiBAQCAtMzcsNiArMzcsNyBAQAo+ID4+ICAgI2lu Y2x1ZGUgPGRybS9kcm1fZWRpZC5oPgo+ID4+ICAgI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5o Pgo+ID4+ICAgI2luY2x1ZGUgPGRybS9kcm1fZGlzcGxheWlkLmg+Cj4gPj4gKyNpbmNsdWRlIDxk cm0vZHJtX3NjZGNfaGVscGVyLmg+Cj4gPj4gICAKPiA+PiAgICNpbmNsdWRlICJkcm1fY3J0Y19p bnRlcm5hbC5oIgo+ID4+ICAgCj4gPj4gQEAgLTM4MTEsMTMgKzM4MTIsNDMgQEAgZW51bSBoZG1p X3F1YW50aXphdGlvbl9yYW5nZQo+ID4+ICAgc3RhdGljIHZvaWQgZHJtX3BhcnNlX2hkbWlfZm9y dW1fdnNkYihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4+ICAgCQkJCSBjb25z dCB1OCAqaGZfdnNkYikKPiA+PiAgIHsKPiA+PiAtCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1p ID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhkbWk7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfaW5mbyAqZGlzcGxheSA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKPiA+PiArCXN0cnVj dCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmRpc3BsYXktPmhkbWk7Cj4gPj4gICAKPiA+PiAgIAlp ZiAoaGZfdnNkYls2XSAmIDB4ODApIHsKPiA+PiAgIAkJaGRtaS0+c2NkYy5zdXBwb3J0ZWQgPSB0 cnVlOwo+ID4+ICAgCQlpZiAoaGZfdnNkYls2XSAmIDB4NDApCj4gPj4gICAJCQloZG1pLT5zY2Rj LnJlYWRfcmVxdWVzdCA9IHRydWU7Cj4gPj4gICAJfQo+ID4+ICsKPiA+PiArCS8qCj4gPj4gKwkg KiBBbGwgSERNSSAyLjAgbW9uaXRvcnMgbXVzdCBzdXBwb3J0IHNjcmFtYmxpbmcgYXQgcmF0ZXMg PiAzNDAgTUh6Lgo+ID4+ICsJICogQW5kIGFzIHBlciB0aGUgc3BlYywgdGhyZWUgZmFjdG9ycyBj b25maXJtIHRoaXM6Cj4gPj4gKwkgKiAqIEF2YWlsYWJpbGl0eSBvZiBhIEhGLVZTREIgYmxvY2sg aW4gRURJRCAoY2hlY2spCj4gPj4gKwkgKiAqIE5vbiB6ZXJvIE1heF9UTURTX0NoYXJfUmF0ZSBm aWxlZCBpbiBIRi1WU0RCIChsZXQncyBjaGVjaykKPiA+PiArCSAqICogU0NEQyBzdXBwb3J0IGF2 YWlsYWJsZSAobGV0J3MgY2hlY2spCj4gPj4gKwkgKiBMZXRzIGNoZWNrIGl0IG91dC4KPiA+PiAr CSAqLwo+ID4+ICsKPiA+PiArCWlmIChoZl92c2RiWzVdKSB7Cj4gPj4gKwkJLyogbWF4IGNsb2Nr IGlzIDUwMDAgS0h6IHRpbWVzIGJsb2NrIHZhbHVlICovCj4gPj4gKwkJdTMyIG1heF90bWRzX2Ns b2NrID0gaGZfdnNkYls1XSAqIDUwMDA7Cj4gPj4gKwkJc3RydWN0IGRybV9zY2RjICpzY2RjID0g JmhkbWktPnNjZGM7Cj4gPj4gKwo+ID4+ICsJCWlmIChtYXhfdG1kc19jbG9jayA+IDM0MDAwMCkg ewo+ID4+ICsJCQlkaXNwbGF5LT5tYXhfdG1kc19jbG9jayA9IG1heF90bWRzX2Nsb2NrOwo+ID4+ ICsJCQlEUk1fREVCVUdfS01TKCJIRi1WU0RCOiBtYXggVE1EUyBjbG9jayAlZCBrSHpcbiIsCj4g Pj4gKwkJCQlkaXNwbGF5LT5tYXhfdG1kc19jbG9jayk7Cj4gPj4gKwkJfQo+ID4+ICsKPiA+PiAr CQlpZiAoc2NkYy0+c3VwcG9ydGVkKSB7Cj4gPj4gKwkJCXNjZGMtPnNjcmFtYmxpbmcuc3VwcG9y dGVkID0gdHJ1ZTsKPiA+PiArCj4gPj4gKwkJCS8qIEZldyBzaW5rcyBzdXBwb3J0IHNjcmFtYmxp bmcgZm9yIGNsb2tzIDwgMzQwTSAqLwo+ID4+ICsJCQlpZiAoKGhmX3ZzZGJbNl0gJiAweDgpKQo+ ID4+ICsJCQkJc2NkYy0+c2NyYW1ibGluZy5sb3dfcmF0ZXMgPSB0cnVlOwo+ID4+ICsJCX0KPiA+ PiArCX0KPiA+PiAgIH0KPiA+PiAgIAo+ID4+ICAgc3RhdGljIHZvaWQgZHJtX3BhcnNlX2hkbWlf ZGVlcF9jb2xvcl9pbmZvKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+ID4+IGluZGV4IGZlMGUxMjEuLmMwY2Y4MmIgMTAwNjQ0 Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4gPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4gPj4gQEAgLTIyLDggKzIyLDEwIEBA Cj4gPj4gICAgKi8KPiA+PiAgIAo+ID4+ICAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiA+PiAr I2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gPj4gICAKPiA+PiAgICNpbmNsdWRlIDxkcm0vZHJt X3NjZGNfaGVscGVyLmg+Cj4gPj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ID4+ICAgCj4gPj4g ICAvKioKPiA+PiAgICAqIERPQzogc2NkYyBoZWxwZXJzCj4gPj4gQEAgLTEwOSwzICsxMTEsMTY1 IEBAIHNzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1 OCBvZmZzZXQsCj4gPj4gICAJcmV0dXJuIGVycjsKPiA+PiAgIH0KPiA+PiAgIEVYUE9SVF9TWU1C T0woZHJtX3NjZGNfd3JpdGUpOwo+ID4+ICsKPiA+PiArLyoqCj4gPj4gKyAqIGRybV9zY2RjX2No ZWNrX3NjcmFtYmxpbmdfc3RhdHVzIC0gd2hhdCBpcyBzdGF0dXMgb2Ygc2NyYW1ibGluZz8KPiA+ PiArICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+ID4+ICsgKgo+ID4+ ICsgKiBSZWFkcyB0aGUgc2NyYW1ibGVyIHN0YXR1cyBvdmVyIFNDREMsIGFuZCBjaGVja3MgdGhl Cj4gPj4gKyAqIHNjcmFtYmxpbmcgc3RhdHVzLgo+ID4+ICsgKgo+ID4+ICsgKiBSZXR1cm5zOgo+ ID4+ICsgKiBUcnVlIGlmIHRoZSBzY3JhbWJsaW5nIGlzIGVuYWJsZWQsIGZhbHNlIG90aGVyd2lz ZS4KPiA+PiArICovCj4gPj4gKwo+ID4+ICtib29sIGRybV9zY2RjX2NoZWNrX3NjcmFtYmxpbmdf c3RhdHVzKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKPiA+PiArewo+ID4+ICsJdTggc3Rh dHVzOwo+ID4+ICsJaW50IHJldDsKPiA+PiArCj4gPj4gKwlyZXQgPSBkcm1fc2NkY19yZWFkYihh ZGFwdGVyLCBTQ0RDX1NDUkFNQkxFUl9TVEFUVVMsICZzdGF0dXMpOwo+ID4+ICsJaWYgKHJldCA8 IDApIHsKPiA+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWFkIHNjcmFtYmxpbmcgc3RhdHVz LCBlcnJvciAlZFxuIiwgcmV0KTsKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwl9Cj4gPj4g Kwo+ID4+ICsJcmV0dXJuIHN0YXR1cyAmIFNDRENfU0NSQU1CTElOR19TVEFUVVM7Cj4gPj4gK30K PiA+PiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY19jaGVja19zY3JhbWJsaW5nX3N0YXR1cyk7Cj4g PiBzL2NoZWNrL2dldC8gd291bGQgbWFrZSBtb3JlIHNlbnNlIHRvIG1lLgo+IGdvdCBpdC4KPiA+ PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBkcm1fc2NkY19lbmFibGVfc2NyYW1ibGluZyAtIGVuYWJs ZSBzY3JhbWJsaW5nCj4gPj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlciBmb3IgRERDIGNoYW5u ZWwKPiA+PiArICoKPiA+PiArICogV3JpdGVzIHRoZSBUTURTIGNvbmZpZyBvdmVyIFNDREMgY2hh bm5lbCwgYW5kIGVuYWJsZXMgc2NyYW1ibGluZwo+ID4+ICsgKiBSZXR1cm5zOgo+ID4+ICsgKiBU cnVlIGlmIHNjcmFtYmxpbmcgaXMgc3VjY2Vzc2Z1bGx5IGVuYWJsZWQsIGZhbHNlIG90aGVyd2lz ZS4KPiA+PiArICovCj4gPj4gKwo+ID4+ICtib29sIGRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5n KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKPiA+PiArewo+ID4+ICsJdTggY29uZmlnOwo+ ID4+ICsJaW50IHJldDsKPiA+PiArCj4gPj4gKwlyZXQgPSBkcm1fc2NkY19yZWFkYihhZGFwdGVy LCBTQ0RDX1RNRFNfQ09ORklHLCAmY29uZmlnKTsKPiA+PiArCWlmIChyZXQgPCAwKSB7Cj4gPj4g KwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVhZCB0bWRzIGNvbmZpZywgZXJyPSVkXG4iLCByZXQp Owo+ID4+ICsJCXJldHVybiBmYWxzZTsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwljb25maWcgfD0g U0NEQ19TQ1JBTUJMSU5HX0VOQUJMRTsKPiA+PiArCj4gPj4gKwlyZXQgPSBkcm1fc2NkY193cml0 ZWIoYWRhcHRlciwgU0NEQ19UTURTX0NPTkZJRywgY29uZmlnKTsKPiA+PiArCWlmIChyZXQgPCAw KSB7Cj4gPj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIHNjcmFtYmxpbmcsIGVycm9y ICVkXG4iLCByZXQpOwo+ID4+ICsJCXJldHVybiBmYWxzZTsKPiA+PiArCX0KPiA+PiArCj4gPj4g KwlyZXR1cm4gdHJ1ZTsKPiA+PiArfQo+ID4+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX2VuYWJs ZV9zY3JhbWJsaW5nKTsKPiA+PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBkcm1fc2NkY19kaXNhYmxl X3NjcmFtYmxpbmcgLSBkaXNhYmxlIHNjcmFtYmxpbmcKPiA+PiArICogQGFkYXB0ZXI6IEkyQyBh ZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+ID4+ICsgKgo+ID4+ICsgKiBXcml0ZSB0aGUgVE1EUyBj b25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBkaXNhYmxlIHNjcmFtYmxpbmcKPiA+PiArICog UmV0dXJuOiBUcnVlIGlmIHNjcmFtYmxpbmcgaXMgc3VjY2Vzc2Z1bGx5IGRpc2FibGVkLCBmYWxz ZSBvdGhlcndpc2UuCj4gPj4gKyAqLwo+ID4+ICtib29sIGRybV9zY2RjX2Rpc2FibGVfc2NyYW1i bGluZyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4gPj4gK3sKPiA+PiArCXU4IGNvbmZp ZzsKPiA+PiArCWludCByZXQ7Cj4gPj4gKwo+ID4+ICsJcmV0ID0gZHJtX3NjZGNfcmVhZGIoYWRh cHRlciwgU0NEQ19UTURTX0NPTkZJRywgJmNvbmZpZyk7Cj4gPj4gKwlpZiAocmV0IDwgMCkgewo+ ID4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlYWQgdG1kcyBjb25maWcsIGVycm9yICVkXG4i LCByZXQpOwo+ID4+ICsJCXJldHVybiBmYWxzZTsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwljb25m aWcgJj0gflNDRENfU0NSQU1CTElOR19FTkFCTEU7Cj4gPj4gKwo+ID4+ICsJcmV0ID0gZHJtX3Nj ZGNfd3JpdGViKGFkYXB0ZXIsIFNDRENfVE1EU19DT05GSUcsIGNvbmZpZyk7Cj4gPj4gKwlpZiAo cmV0IDwgMCkgewo+ID4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGVuYWJsZSBzY3JhbWJsaW5n LCBlcnJvciAlZFxuIiwgcmV0KTsKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwl9Cj4gPj4g Kwo+ID4+ICsJcmV0dXJuIHRydWU7Cj4gPj4gK30KPiA+PiArRVhQT1JUX1NZTUJPTChkcm1fc2Nk Y19kaXNhYmxlX3NjcmFtYmxpbmcpOwo+ID4+ICsKPiA+PiArLyoqCj4gPj4gKyAqIGRybV9zY2Rj X3NldF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8gLSBzZXQgVE1EUyBjbG9jayByYXRpbwo+ID4+ICsg KiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4gPj4gKyAqCj4gPj4gKyAq IFdyaXRlcyB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBzZXRzIFRNRFMK PiA+PiArICogY2xvY2sgcmF0aW8gdG8gMS80MAo+ID4+ICsgKiBSZXR1cm5zOgo+ID4+ICsgKiBU cnVlIGlmIHdyaXRlIGlzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZS4KPiA+PiArICovCj4g Pj4gK2Jvb2wgZHJtX3NjZGNfc2V0X2hpZ2hfdG1kc19jbG9ja19yYXRpbyhzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmFkYXB0ZXIpCj4gPj4gK3sKPiA+PiArCXU4IGNvbmZpZzsKPiA+PiArCWludCByZXQ7 Cj4gPj4gKwo+ID4+ICsJcmV0ID0gZHJtX3NjZGNfcmVhZGIoYWRhcHRlciwgU0NEQ19UTURTX0NP TkZJRywgJmNvbmZpZyk7Cj4gPj4gKwlpZiAocmV0IDwgMCkgewo+ID4+ICsJCURSTV9FUlJPUigi RmFpbGVkIHRvIHJlYWQgdG1kcyBjb25maWcsIGVycj0lZFxuIiwgcmV0KTsKPiA+PiArCQlyZXR1 cm4gZmFsc2U7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJY29uZmlnIHw9IFNDRENfVE1EU19CSVRf Q0xPQ0tfUkFUSU9fQllfNDA7Cj4gPj4gKwo+ID4+ICsJcmV0ID0gZHJtX3NjZGNfd3JpdGViKGFk YXB0ZXIsIFNDRENfVE1EU19DT05GSUcsIGNvbmZpZyk7Cj4gPj4gKwlpZiAocmV0IDwgMCkgewo+ ID4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHNldCBUTURTIGNsb2NrIHJhdGlvLCBlcnJvciAl ZFxuIiwgcmV0KTsKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJ LyoKPiA+PiArCSAqIFRoZSBzcGVjIHNheXMgdGhhdCB0aGUgc291cmNlIHNob3VsZCB3YWl0IG1p bmltdW0gMW1zIGFuZCBtYXhpbXVtCj4gPj4gKwkgKiAxMDBtcyBhZnRlciB3cml0aW5nIHRoZSBU TURTIGNvbmZpZyBmb3IgY2xvY2sgcmF0aW8uCj4gPj4gKwkgKi8KPiA+PiArCXVzbGVlcF9yYW5n ZSgxMDAwLCAxMDAwMDApOwo+ID4gQWxsb3dpbmcgdGhlIG1heCB0byBiZSAxMDBtcyBoZXJlIHNl ZW1zIG92ZXJseSBnZW5lcm91cyB0byBtZS4gSW4gYnkKPiA+IGFsbG93aW5nIDEwMG1zIHdlIG1p Z2h0IGJlIHZpb2xhdGluZyB0aGUgc3BlYyBzaW5jZSBpdCB3aWxsIHRha2UgYSBiaXQKPiA+IG9m IGFkZGl0b25hbCB0aW1lIGJlZm9yZSB0aGUgZHJpdmVyIHdpbGwgZW5hYmxlIHRoZSBvdXRwdXQu IFNvIEknZCBqdXN0Cj4gPiB1c2Ugc29tZXRoaW5nIGxpa2UgMS0yIG1zZWMuCj4gTWFrZXMgc2Vu c2UsIGJ1dCB3b3VsZG4ndCAxLTIgbXMgYmUgdG9vIHNtYWxsID8KPiBEbyB5b3UgdGhpbmsgd2Ug c2hvdWxkIGFsbG93IGF0IGxlYXN0IDEwbXMgPwoKSSBkb24ndCB0aGluayB0aGVyZSdzIG11Y2gg bWVyaXQgaW4gZ29pbmcgdGhhdCBoaWdoLiBXZSBkbyBzdGlsbCB3YW50IHRvCmtlZXAgdGhlIG1v ZGVzZXQgYXMgc2hvcnQgYXMgcG9zc2libGUsIHNvIGV4cGxpY2l0bHkgc2F5aW5nIHRoYXQgd2Ug YXJlCmhhcHB5IHRvIGRlbGF5IGZvciB1cCB0byAxMG1zIGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSBi ZXN0IGlkZWEgdG8gbWUuCgo+ID4+ICsJcmV0dXJuIHRydWU7Cj4gPj4gK30KPiA+PiArRVhQT1JU X1NZTUJPTChkcm1fc2NkY19zZXRfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKTsKPiA+PiArCj4gPj4g Ky8qKgo+ID4+ICsgKiBkcm1fc2NkY19jbGVhcl9oaWdoX3RtZHNfY2xvY2tfcmF0aW8gLSBjbGVh ciBUTURTIGNsb2NrIHJhdGlvCj4gPj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlciBmb3IgRERD IGNoYW5uZWwKPiA+PiArICoKPiA+PiArICogV3JpdGVzIHRoZSBUTURTIGNvbmZpZyBvdmVyIFND REMgY2hhbm5lbCwgYW5kIHNldHMgVE1EUwo+ID4+ICsgKiBjbG9jayByYXRpbyBiYWNrIHRvIDEv MTAgKGZyb20gMS80MCkKPiA+PiArICogUmV0dXJuczoKPiA+PiArICogVHJ1ZSBpZiB3cml0ZSBp cyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UuCj4gPj4gKyAqLwo+ID4+ICtib29sIGRybV9z Y2RjX2NsZWFyX2hpZ2hfdG1kc19jbG9ja19yYXRpbyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0 ZXIpCj4gPj4gK3sKPiA+PiArCXU4IGNvbmZpZzsKPiA+PiArCWludCByZXQ7Cj4gPj4gKwo+ID4+ ICsJcmV0ID0gZHJtX3NjZGNfcmVhZGIoYWRhcHRlciwgU0NEQ19UTURTX0NPTkZJRywgJmNvbmZp Zyk7Cj4gPj4gKwlpZiAocmV0IDwgMCkgewo+ID4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJl YWQgdG1kcyBjb25maWcsIGVycj0lZFxuIiwgcmV0KTsKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4g Pj4gKwl9Cj4gPj4gKwo+ID4+ICsJY29uZmlnICY9IH5TQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElP X0JZXzQwOwo+ID4+ICsKPiA+PiArCXJldCA9IGRybV9zY2RjX3dyaXRlYihhZGFwdGVyLCBTQ0RD X1RNRFNfQ09ORklHLCBjb25maWcpOwo+ID4+ICsJaWYgKHJldCA8IDApIHsKPiA+PiArCQlEUk1f RVJST1IoIkZhaWxlZCB0byBjbGVhciBUTURTIGNsb2NrIHJhdGlvLCBlcnJvciAlZFxuIiwgcmV0 KTsKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJLyoKPiA+PiAr CSAqIFRoZSBzcGVjIHNheXMgdGhhdCB0aGUgc291cmNlIHNob3VsZCB3YWl0IG1pbmltdW0gMW1z IGFuZCBtYXhpbXVtCj4gPj4gKwkgKiAxMDBtcyBhZnRlciB3cml0aW5nIHRoZSBUTURTIGNvbmZp ZyBmb3IgY2xvY2sgcmF0aW8uCj4gPj4gKwkgKi8KPiA+PiArCXVzbGVlcF9yYW5nZSgxMDAwLCAx MDAwMDApOwo+ID4+ICsJcmV0dXJuIHRydWU7Cj4gPj4gK30KPiA+PiArRVhQT1JUX1NZTUJPTChk cm1fc2NkY19jbGVhcl9oaWdoX3RtZHNfY2xvY2tfcmF0aW8pOwo+ID4gSGF2aW5nIHNlcGFyYXRl IHNldC9jbGVhciBmdW5jdGlvbnMganVzdCBsZWFkcyB0byBkdXBsaWNhdGVkIGNvZGUgSU1PLgo+ ID4gSSdkIGp1c3QgcGFzcyB0aGUgZGVzaXJlZCBzdGF0ZSBhcyBhIHBhcmFtZXRlci4KPiBPaywg SSB3aWxsIG1ha2UgYSBjb21tb24gZnVuY3Rpb24gZm9yIGJvdGggc2V0L2NsZWFyLCBhbmQgcGFz cyB0aGUgCj4gZW5hYmxlL2Rpc2FibGUgc3RhdGUKPiB0byBpdCAoc2ltaWxhciB0byB0aGF0IHdo aWNoIGhhbmRsZXMgbW9uaXRvciBzY3JhbWJsaW5nKQo+ID4gQW5kIHdoYXQgSSBzdWdnZXN0ZWQg ZWFybGllciB3YXMgdG8gZXZlbiBjb21iaW5lIHRoaXMgd2l0aCB0aGUgc2NyYW1ibGluZwo+ID4g d3JpdGUgd2hpY2ggd291bGQgcmVkdWNlIHRoZSBpMmMgdHJhZmZpYyBmcm9tIDIgcmVhZCBhbmQg MiB3cml0ZXMgdG8KPiA+IGp1c3QgMSB3cml0ZS4gQnV0IEkgY2FuIGxpdmUgd2l0aCB0aGVtIGJl aW5nIHNlcGFyYXRlIGFzIHdlbGwuCj4gVGhhbmtzLiBBY3R1YWxseSwgaWYgeW91IHNlZSBWMiwg dGhpcyBmaXJzdCBpbXBsZW1lbnRhdGlvbiB3YXMganVzdCBhcyAKPiB5b3Ugc3VnZ2VzdGVkLgo+ IEJ1dCB0aGVyZSB3YXMgYSBwcm9ibGVtIGhlcmUsIGZldyBtb25pdG9ycyBzdXBwb3J0IHNjcmFt YmxpbmcgYXQgYSBjbG9jayAKPiBsb3dlciB0aGFuCj4gMzQwTWh6IHRvbywgaW4gdGhlc2UgY2Fz ZXMgd2Ugd29udCBzZXQgdGhlIGhpZ2hfdG1kc19jbG9ja19yYXRpbyBidXQgCj4gb25seSBzZXQg dGhlIHNjcmFtYmxpbmcuCgpUaGVuIHRoZSBjYWxsZXIganVzdCBwYXNzZXMgY2xvY2tfcmF0aW89 bG93IGFuZCBzY3JhbWJsaW5nPXRydWUuIEkgZG9uJ3QKc2VlIHRoZSBwcm9ibGVtLgoKPiBUaGlz IHdhcyBjb21tZW50IGZyb20gSm9zZSwgd2hpY2ggd2UgYWRkcmVzc2VkIGludG8gc3BsaXR0aW5n IHRoaXMgaW50byAKPiB0d28gZnVuY3Rpb25zLCB3aGljaCBnaXZlcwo+IG1vcmUgY29udHJvbCB0 byBjYWxsZXIgZnVuY3Rpb24sIGJ5IHNlbGVjdGluZyB3aGF0IHRoZXkgd2FudCB0byBzZXQuIGJ1 dCAKPiB5ZWFoLCBjYW50IGJlYXQgdGhlIEkyQyB0cmFmZmljIG9wdGltaXphdGlvbi4KPiAKPiAt IFNoYXNoYW5rCj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBi L2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4+IGluZGV4IDZkNTMwNGUuLjc4NjE4MzA4 IDEwMDY0NAo+ID4+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4+ICsrKyBi L2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4+IEBAIC05MCw2ICs5MCwyMCBAQCBlbnVt IHN1YnBpeGVsX29yZGVyIHsKPiA+PiAgIAo+ID4+ICAgfTsKPiA+PiAgIAo+ID4+ICsvKioKPiA+ PiArICogc3RydWN0IGRybV9zY3JhbWJsaW5nOiBzaW5rJ3Mgc2NyYW1ibGluZyBzdXBwb3J0Lgo+ ID4+ICsgKi8KPiA+PiArc3RydWN0IGRybV9zY3JhbWJsaW5nIHsKPiA+PiArCS8qKgo+ID4+ICsJ ICogQHN1cHBvcnRlZDogc2NyYW1ibGluZyBzdXBwb3J0ZWQgZm9yIHJhdGVzID4gMzQwIE1oei4K PiA+PiArCSAqLwo+ID4+ICsJYm9vbCBzdXBwb3J0ZWQ7Cj4gPj4gKwkvKioKPiA+PiArCSAqIEBs b3dfcmF0ZXM6IHNjcmFtYmxpbmcgc3VwcG9ydGVkIGZvciByYXRlcyA8PSAzNDAgTWh6Lgo+ID4+ ICsJICovCj4gPj4gKwlib29sIGxvd19yYXRlczsKPiA+PiArfTsKPiA+PiArCj4gPj4gICAvKgo+ ID4+ICAgICogc3RydWN0IGRybV9zY2RjIC0gSW5mb3JtYXRpb24gYWJvdXQgc2NkYyBjYXBhYmls aXRpZXMgb2YgYSBIRE1JIDIuMCBzaW5rCj4gPj4gICAgKgo+ID4+IEBAIC0xMDUsOCArMTE5LDEz IEBAIHN0cnVjdCBkcm1fc2NkYyB7Cj4gPj4gICAJICogQHJlYWRfcmVxdWVzdDogc2luayBpcyBj YXBhYmxlIG9mIGdlbmVyYXRpbmcgc2NkYyByZWFkIHJlcXVlc3QuCj4gPj4gICAJICovCj4gPj4g ICAJYm9vbCByZWFkX3JlcXVlc3Q7Cj4gPj4gKwkvKioKPiA+PiArCSAqIEBzY3JhbWJsaW5nOiBz aW5rJ3Mgc2NyYW1ibGluZyBjYXBhYmlsaXRpZXMKPiA+PiArCSAqLwo+ID4+ICsJc3RydWN0IGRy bV9zY3JhbWJsaW5nIHNjcmFtYmxpbmc7Cj4gPj4gICB9Owo+ID4+ICAgCj4gPj4gKwo+ID4+ICAg LyoqCj4gPj4gICAgKiBzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAtIHJ1bnRpbWUgaW5mb3JtYXRpb24g YWJvdXQgdGhlIGNvbm5lY3RlZCBIRE1JIHNpbmsKPiA+PiAgICAqCj4gPj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvZHJtL2RybV9lZGlkLmggYi9pbmNsdWRlL2RybS9kcm1fZWRpZC5oCj4gPj4gaW5k ZXggNDNmYjBhYy4uZDI0Yzk3NCAxMDA2NDQKPiA+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fZWRp ZC5oCj4gPj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2VkaWQuaAo+ID4+IEBAIC00NjIsNSArNDYy LDkgQEAgdm9pZCBkcm1fZWRpZF9nZXRfbW9uaXRvcl9uYW1lKHN0cnVjdCBlZGlkICplZGlkLCBj aGFyICpuYW1lLAo+ID4+ICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRybV9tb2RlX2ZpbmRf ZG10KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPj4gICAJCQkJCSAgIGludCBoc2l6ZSwgaW50 IHZzaXplLCBpbnQgZnJlc2gsCj4gPj4gICAJCQkJCSAgIGJvb2wgcmIpOwo+ID4+IC0KPiA+PiAr Ym9vbCBkcm1fZW5hYmxlX3NjcmFtYmxpbmcoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPiA+PiArCQkJCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgYm9vbCBmb3JjZSk7Cj4g Pj4gK2Jvb2wgZHJtX2Rpc2FibGVfc2NyYW1ibGluZyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAo+ID4+ICsJCQkJc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBib29sIGZvcmNl KTsKPiA+PiArYm9vbCBkcm1fY2hlY2tfc2NyYW1ibGluZ19zdGF0dXMoc3RydWN0IGkyY19hZGFw dGVyICphZGFwdGVyKTsKPiA+PiAgICNlbmRpZiAvKiBfX0RSTV9FRElEX0hfXyAqLwo+ID4+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2Ry bV9zY2RjX2hlbHBlci5oCj4gPj4gaW5kZXggOTNiMDdiYy4uYzVmMjIyOSAxMDA2NDQKPiA+PiAt LS0gYS9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAo+ID4+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9zY2RjX2hlbHBlci5oCj4gPj4gQEAgLTEyOSw0ICsxMjksNDUgQEAgc3RhdGljIGlubGlu ZSBpbnQgZHJtX3NjZGNfd3JpdGViKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zm c2V0LAo+ID4+ICAgCXJldHVybiBkcm1fc2NkY193cml0ZShhZGFwdGVyLCBvZmZzZXQsICZ2YWx1 ZSwgc2l6ZW9mKHZhbHVlKSk7Cj4gPj4gICB9Cj4gPj4gICAKPiA+PiArLyoqCj4gPj4gKyAqIGRy bV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5nIC0gZW5hYmxlIHNjcmFtYmxpbmcKPiA+PiArICogQGFk YXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+ID4+ICsgKgo+ID4+ICsgKiBXcml0 ZXMgdGhlIFRNRFMgY29uZmlnIG92ZXIgU0NEQyBjaGFubmVsLCBhbmQgZW5hYmxlcyBzY3JhbWJs aW5nCj4gPj4gKyAqIFJldHVybnM6Cj4gPj4gKyAqIFRydWUgaWYgc2NyYW1ibGluZyBpcyBzdWNj ZXNzZnVsbHkgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLgo+ID4+ICsgKi8KPiA+PiArCj4gPj4g K2Jvb2wgZHJtX3NjZGNfZW5hYmxlX3NjcmFtYmxpbmcoc3RydWN0IGkyY19hZGFwdGVyICphZGFw dGVyKTsKPiA+PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBkcm1fc2NkY19kaXNhYmxlX3NjcmFtYmxp bmcgLSBkaXNhYmxlIHNjcmFtYmxpbmcKPiA+PiArICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZv ciBEREMgY2hhbm5lbAo+ID4+ICsgKgo+ID4+ICsgKiBXcml0ZSB0aGUgVE1EUyBjb25maWcgb3Zl ciBTQ0RDIGNoYW5uZWwsIGFuZCBkaXNhYmxlIHNjcmFtYmxpbmcKPiA+PiArICogUmV0dXJuOiBU cnVlIGlmIHNjcmFtYmxpbmcgaXMgc3VjY2Vzc2Z1bGx5IGRpc2FibGVkLCBmYWxzZSBvdGhlcndp c2UuCj4gPj4gKyAqLwo+ID4+ICtib29sIGRybV9zY2RjX2Rpc2FibGVfc2NyYW1ibGluZyhzdHJ1 Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpOwo+ID4+ICsKPiA+PiArLyoqCj4gPj4gKyAqIGRybV9z Y2RjX3NldF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8gLSBzZXQgVE1EUyBjbG9jayByYXRpbwo+ID4+ ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIgZm9yIEREQyBjaGFubmVsCj4gPj4gKyAqCj4gPj4g KyAqIFdyaXRlcyB0aGUgVE1EUyBjb25maWcgb3ZlciBTQ0RDIGNoYW5uZWwsIGFuZCBzZXRzIFRN RFMKPiA+PiArICogY2xvY2sgcmF0aW8gdG8gMS80MAo+ID4+ICsgKiBSZXR1cm5zOgo+ID4+ICsg KiBUcnVlIGlmIHdyaXRlIGlzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZS4KPiA+PiArICov Cj4gPj4gK2Jvb2wgZHJtX3NjZGNfc2V0X2hpZ2hfdG1kc19jbG9ja19yYXRpbyhzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkYXB0ZXIpOwo+ID4+ICsKPiA+PiArLyoqCj4gPj4gKyAqIGRybV9zY2RjX2Ns ZWFyX2hpZ2hfdG1kc19jbG9ja19yYXRpbyAtIGNsZWFyIFRNRFMgY2xvY2sgcmF0aW8KPiA+PiAr ICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciBEREMgY2hhbm5lbAo+ID4+ICsgKgo+ID4+ICsg KiBXcml0ZXMgdGhlIFRNRFMgY29uZmlnIG92ZXIgU0NEQyBjaGFubmVsLCBhbmQgc2V0cyBUTURT Cj4gPj4gKyAqIGNsb2NrIHJhdGlvIGJhY2sgdG8gMS8xMCAoZnJvbSAxLzQwKQo+ID4+ICsgKiBS ZXR1cm5zOgo+ID4+ICsgKiBUcnVlIGlmIHdyaXRlIGlzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVy d2lzZS4KPiA+PiArICovCj4gPj4gK2Jvb2wgZHJtX3NjZGNfY2xlYXJfaGlnaF90bWRzX2Nsb2Nr X3JhdGlvKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Cj4gPj4gICAjZW5kaWYKPiA+PiAt LSAKPiA+PiAxLjkuMQoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==