From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v9 07/39] drm/i915: MEI interface definition Date: Wed, 19 Dec 2018 16:21:14 +0100 Message-ID: <20181219152114.GJ21184@phenom.ffwll.local> References: <1544673701-6353-1-git-send-email-ramalingam.c@intel.com> <1544673701-6353-8-git-send-email-ramalingam.c@intel.com> <20181219140021.GE21184@phenom.ffwll.local> 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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "C, Ramalingam" Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, seanpaul@chromium.org, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBEZWMgMTksIDIwMTggYXQgMDg6NDU6NDFQTSArMDUzMCwgQywgUmFtYWxpbmdhbSB3 cm90ZToKPiAKPiBPbiAxMi8xOS8yMDE4IDc6MzAgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4g PiBPbiBUaHUsIERlYyAxMywgMjAxOCBhdCAwOTozMTowOUFNICswNTMwLCBSYW1hbGluZ2FtIEMg d3JvdGU6Cj4gPiA+IERlZmluaW5nIHRoZSBtZWktaTkxNSBpbnRlcmZhY2UgZnVuY3Rpb25zIGFu ZCBpbml0aWFsaXphdGlvbiBvZgo+ID4gPiB0aGUgaW50ZXJmYWNlLgo+ID4gPiAKPiA+ID4gdjI6 Cj4gPiA+ICAgIEFkanVzdCB0byB0aGUgbmV3IGludGVyZmFjZSBjaGFuZ2VzLiBbVG9tYXNdCj4g PiA+ICAgIEFkZGVkIGZ1cnRoZXIgZGVidWcgbG9ncyBmb3IgdGhlIGZhaWx1cmVzIGF0IE1FSSBp L2YuCj4gPiA+ICAgIHBvcnQgaW4gaGRjcF9wb3J0IGRhdGEgaXMgZXF1aXBwZWQgdG8gaGFuZGxl IC12ZSB2YWx1ZXMuCj4gPiA+IHYzOgo+ID4gPiAgICBtZWkgY29tcCBpcyBtYXRjaGVkIGZvciBn bG9iYWwgaTkxNSBjb21wIG1hc3Rlci4gW0RhbmllbF0KPiA+ID4gICAgSW4gaGRjcF9zaGltIGhk Y3BfcHJvdG9jb2woKSBpcyByZXBsYWNlZCB3aXRoIGNvbnN0IHZhcmlhYmxlLiBbRGFuaWVsXQo+ ID4gPiAgICBtZWkgd3JhcHBlcnMgYXJlIGFkanVzdGVkIGFzIHBlciB0aGUgaS9mIGNoYW5nZSBb RGFuaWVsXQo+ID4gWWVhaCBsb29rcyBhbGwgZ29vZC4gU3BvdHRlZCBzb21lIHNtYWxsIHN0dWZm IGJlbG93IHN0aWxsLgo+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFt YWxpbmdhbS5jQGludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggIHwgICA1ICsKPiA+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZGNwLmMgfCAyNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+ ID4gICBpbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oICAgICAgfCAgIDcgKysKPiA+ID4gICAz IGZpbGVzIGNoYW5nZWQsIDI1OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gPiA+IAo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiBpbmRleCBkZDkzNzE2NDdhOGMuLjE5 MWI2ZTBmMDg2YyAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4g QEAgLTM5LDYgKzM5LDcgQEAKPiA+ID4gICAjaW5jbHVkZSA8ZHJtL2RybV9kcF9tc3RfaGVscGVy Lmg+Cj4gPiA+ICAgI2luY2x1ZGUgPGRybS9kcm1fcmVjdC5oPgo+ID4gPiAgICNpbmNsdWRlIDxk cm0vZHJtX2F0b21pYy5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9pOTE1X21laV9oZGNwX2ludGVy ZmFjZS5oPgo+ID4gPiAgICNpbmNsdWRlIDxtZWRpYS9jZWMtbm90aWZpZXIuaD4KPiA+ID4gICAv KioKPiA+ID4gQEAgLTM3OSw2ICszODAsOSBAQCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIHsKPiA+ ID4gICAJLyogRGV0ZWN0cyBwYW5lbCdzIGhkY3AgY2FwYWJpbGl0eS4gVGhpcyBpcyBvcHRpb25h bCBmb3IgSERNSS4gKi8KPiA+ID4gICAJaW50ICgqaGRjcF9jYXBhYmxlKShzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+ID4gICAJCQkgICAgYm9vbCAqaGRjcF9j YXBhYmxlKTsKPiA+ID4gKwo+ID4gPiArCS8qIEhEQ1AgYWRhcHRhdGlvbihEUC9IRE1JKSByZXF1 aXJlZCBvbiB0aGUgcG9ydCAqLwo+ID4gPiArCWVudW0gaGRjcF93aXJlZF9wcm90b2NvbCBwcm90 b2NvbDsKPiA+ID4gICB9Owo+ID4gPiAgIHN0cnVjdCBpbnRlbF9oZGNwIHsKPiA+ID4gQEAgLTM5 OSw2ICs0MDMsNyBAQCBzdHJ1Y3QgaW50ZWxfaGRjcCB7Cj4gPiA+ICAgCSAqIGNvbnRlbnQgY2Fu IGZsb3cgb25seSB0aHJvdWdoIGEgbGluayBwcm90ZWN0ZWQgYnkgSERDUDIuMi4KPiA+ID4gICAJ ICovCj4gPiA+ICAgCXU4IGNvbnRlbnRfdHlwZTsKPiA+ID4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2Rh dGEgcG9ydF9kYXRhOwo+ID4gPiAgIH07Cj4gPiA+ICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7 Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPiA+ID4gaW5kZXggNTg0ZDI3ZjNjNjk5 Li45NDA1ZmNlMDdiOTMgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkY3AuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMK PiA+ID4gQEAgLTgsOCArOCwxMCBAQAo+ID4gPiAgICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ID4g PiAgICNpbmNsdWRlIDxkcm0vZHJtX2hkY3AuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vaTkxNV9j b21wb25lbnQuaD4KPiA+ID4gICAjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4gPiA+ICAgI2luY2x1 ZGUgPGxpbnV4L3JhbmRvbS5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ ID4gPiAgICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiA+ID4gICAjaW5jbHVkZSAiaTkxNV9yZWcu aCIKPiA+ID4gQEAgLTgzMyw2ICs4MzUsMjMyIEBAIGJvb2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKPiA+ID4gICAJ cmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBwb3J0IDwgUE9SVF9FOwo+ID4gPiAg IH0KPiA+ID4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKPiA+ID4gK2hkY3Ay X3ByZXBhcmVfYWtlX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4g PiArCQkgICAgICAgc3RydWN0IGhkY3AyX2FrZV9pbml0ICpha2VfZGF0YSkKPiA+ID4gK3sKPiA+ ID4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRf ZGF0YTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gPiArCXN0cnVjdCBpOTE1X2NvbXBvbmVudF9tYXN0 ZXIgKmNvbXAgPSBkZXZfcHJpdi0+Y29tcF9tYXN0ZXI7Cj4gPiA+ICsJaW50IHJldDsKPiA+ID4g Kwo+ID4gPiArCS8qIER1cmluZyB0aGUgY29ubmVjdG9yIGluaXQgZW5jb2RlciBtaWdodCBub3Qg YmUgaW5pdGlhbGl6ZWQgKi8KPiA+ID4gKwlpZiAoZGF0YS0+cG9ydCA9PSBQT1JUX05PTkUpCj4g PiA+ICsJCWRhdGEtPnBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7Cj4gPiA+ICsKPiA+ ID4gKwlyZXQgPSBjb21wLT5oZGNwX29wcy0+aW5pdGlhdGVfaGRjcDJfc2Vzc2lvbihjb21wLT5t ZWlfZGV2LAo+ID4gPiArCQkJCQkJICAgICBkYXRhLCBha2VfZGF0YSk7Cj4gPiA+ICsJaWYgKHJl dCkKPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiUHJlcGFyZV9ha2VfaW5pdCBmYWlsZWQuICVkXG4i LCByZXQpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ID4gPiAraGRjcDJfdmVyaWZ5 X3J4X2NlcnRfcHJlcGFyZV9rbShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4g PiA+ICsJCQkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQgKnJ4X2NlcnQsCj4gPiA+ICsJCQkJ Ym9vbCAqcGFpcmVkLAo+ID4gPiArCQkJCXN0cnVjdCBoZGNwMl9ha2Vfbm9fc3RvcmVkX2ttICpl a19wdWJfa20sCj4gPiA+ICsJCQkJc2l6ZV90ICptc2dfc3opCj4gPiA+ICt7Cj4gPiA+ICsJc3Ry dWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4g PiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0 b3ItPmJhc2UuZGV2KTsKPiA+ID4gKwlzdHJ1Y3QgaTkxNV9jb21wb25lbnRfbWFzdGVyICpjb21w ID0gZGV2X3ByaXYtPmNvbXBfbWFzdGVyOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4g KwlyZXQgPSBjb21wLT5oZGNwX29wcy0+dmVyaWZ5X3JlY2VpdmVyX2NlcnRfcHJlcGFyZV9rbShj b21wLT5tZWlfZGV2LAo+ID4gPiArCQkJCQkJCSAgICAgIGRhdGEsIHJ4X2NlcnQsCj4gPiA+ICsJ CQkJCQkJICAgICAgcGFpcmVkLCBla19wdWJfa20sCj4gPiA+ICsJCQkJCQkJICAgICAgbXNnX3N6 KTsKPiA+ID4gKwlpZiAocmV0IDwgMCkKPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IHJ4 X2NlcnQgZmFpbGVkLiAlZFxuIiwgcmV0KTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiByZXQ7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQK PiA+ID4gK2hkY3AyX3ZlcmlmeV9ocHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ID4gPiArCQkgICAgc3RydWN0IGhkY3AyX2FrZV9zZW5kX2hwcmltZSAqcnhfaHByaW1l KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0 b3ItPmhkY3AucG9ydF9kYXRhOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gPiA+ICsJc3RydWN0IGk5MTVf Y29tcG9uZW50X21hc3RlciAqY29tcCA9IGRldl9wcml2LT5jb21wX21hc3RlcjsKPiA+ID4gKwlp bnQgcmV0Owo+ID4gPiArCj4gPiA+ICsJcmV0ID0gY29tcC0+aGRjcF9vcHMtPnZlcmlmeV9ocHJp bWUoY29tcC0+bWVpX2RldiwgZGF0YSwgcnhfaHByaW1lKTsKPiA+ID4gKwlpZiAocmV0IDwgMCkK PiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IGhwcmltZSBmYWlsZWQuICVkXG4iLCByZXQp Owo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3Rh dGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ID4gPiAraGRjcDJfc3RvcmVfcGFpcmlu Z19pbmZvKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gKwkJCSBzdHJ1 Y3QgaGRjcDJfYWtlX3NlbmRfcGFpcmluZ19pbmZvICpwYWlyaW5nX2luZm8pCj4gPiA+ICt7Cj4g PiA+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0 X2RhdGE7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ID4gKwlzdHJ1Y3QgaTkxNV9jb21wb25lbnRfbWFz dGVyICpjb21wID0gZGV2X3ByaXYtPmNvbXBfbWFzdGVyOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ ICsKPiA+ID4gKwlyZXQgPSBjb21wLT5oZGNwX29wcy0+c3RvcmVfcGFpcmluZ19pbmZvKGNvbXAt Pm1laV9kZXYsIGRhdGEsCj4gPiA+ICsJCQkJCQkgcGFpcmluZ19pbmZvKTsKPiA+ID4gKwlpZiAo cmV0IDwgMCkKPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiU3RvcmUgcGFpcmluZyBpbmZvIGZhaWxl ZC4gJWRcbiIsIHJldCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiArfQo+ID4g PiArCj4gPiA+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50Cj4gPiA+ICtoZGNw Ml9wcmVwYXJlX2xjX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4g PiArCQkgICAgICBzdHJ1Y3QgaGRjcDJfbGNfaW5pdCAqbGNfaW5pdCkKPiA+ID4gK3sKPiA+ID4g KwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0 YTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNv bm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gPiArCXN0cnVjdCBpOTE1X2NvbXBvbmVudF9tYXN0ZXIg KmNvbXAgPSBkZXZfcHJpdi0+Y29tcF9tYXN0ZXI7Cj4gPiA+ICsJaW50IHJldDsKPiA+ID4gKwo+ ID4gPiArCXJldCA9IGNvbXAtPmhkY3Bfb3BzLT5pbml0aWF0ZV9sb2NhbGl0eV9jaGVjayhjb21w LT5tZWlfZGV2LCBkYXRhLAo+ID4gPiArCQkJCQkJICAgICAgbGNfaW5pdCk7Cj4gPiA+ICsJaWYg KHJldCA8IDApCj4gPiA+ICsJCURSTV9ERUJVR19LTVMoIlByZXBhcmUgbGNfaW5pdCBmYWlsZWQu ICVkXG4iLCByZXQpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gPiArc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ID4gPiAraGRjcDJf dmVyaWZ5X2xwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ICsJ CSAgICBzdHJ1Y3QgaGRjcDJfbGNfc2VuZF9scHJpbWUgKnJ4X2xwcmltZSkKPiA+ID4gK3sKPiA+ ID4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRf ZGF0YTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gPiArCXN0cnVjdCBpOTE1X2NvbXBvbmVudF9tYXN0 ZXIgKmNvbXAgPSBkZXZfcHJpdi0+Y29tcF9tYXN0ZXI7Cj4gPiA+ICsJaW50IHJldDsKPiA+ID4g Kwo+ID4gPiArCXJldCA9IGNvbXAtPmhkY3Bfb3BzLT52ZXJpZnlfbHByaW1lKGNvbXAtPm1laV9k ZXYsIGRhdGEsIHJ4X2xwcmltZSk7Cj4gPiA+ICsJaWYgKHJldCA8IDApCj4gPiA+ICsJCURSTV9E RUJVR19LTVMoIlZlcmlmeSBMX1ByaW1lIGZhaWxlZC4gJWRcbiIsIHJldCk7Cj4gPiA+ICsKPiA+ ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgX19hdHRyaWJ1 dGVfXygodW51c2VkKSkKPiA+ID4gK2ludCBoZGNwMl9wcmVwYXJlX3NrZXkoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiArCQkgICAgICAgc3RydWN0IGhkY3AyX3NrZV9z ZW5kX2VrcyAqc2tlX2RhdGEpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRh ICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gPiA+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ ID4gKwlzdHJ1Y3QgaTkxNV9jb21wb25lbnRfbWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmNvbXBf bWFzdGVyOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBjb21wLT5oZGNw X29wcy0+Z2V0X3Nlc3Npb25fa2V5KGNvbXAtPm1laV9kZXYsIGRhdGEsIHNrZV9kYXRhKTsKPiA+ ID4gKwlpZiAocmV0IDwgMCkKPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiR2V0IHNlc3Npb24ga2V5 IGZhaWxlZC4gJWRcbiIsIHJldCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiAr fQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50Cj4gPiA+ ICtoZGNwMl92ZXJpZnlfcmVwX3RvcG9sb2d5X3ByZXBhcmVfYWNrKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gKwkJCQkgICAgICBzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRf cmVjZWl2ZXJpZF9saXN0Cj4gPiA+ICsJCQkJCQkJCSpyZXBfdG9wb2xvZ3ksCj4gPiA+ICsJCQkJ ICAgICAgc3RydWN0IGhkY3AyX3JlcF9zZW5kX2FjayAqcmVwX3NlbmRfYWNrKQo+ID4gPiArewo+ ID4gPiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9y dF9kYXRhOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gPiA+ICsJc3RydWN0IGk5MTVfY29tcG9uZW50X21h c3RlciAqY29tcCA9IGRldl9wcml2LT5jb21wX21hc3RlcjsKPiA+ID4gKwlpbnQgcmV0Owo+ID4g PiArCj4gPiA+ICsJcmV0ID0gY29tcC0+aGRjcF9vcHMtPnJlcGVhdGVyX2NoZWNrX2Zsb3dfcHJl cGFyZV9hY2soY29tcC0+bWVpX2RldiwKPiA+ID4gKwkJCQkJCQkgICAgICBkYXRhLAo+ID4gPiAr CQkJCQkJCSAgICAgIHJlcF90b3BvbG9neSwKPiA+ID4gKwkJCQkJCQkgICAgICByZXBfc2VuZF9h Y2spOwo+ID4gPiArCWlmIChyZXQgPCAwKQo+ID4gPiArCQlEUk1fREVCVUdfS01TKCJWZXJpZnkg cmVwIHRvcG9sb2d5IGZhaWxlZC4gJWRcbiIsIHJldCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4g cmV0Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2Vk KSkgaW50Cj4gPiA+ICtoZGNwMl92ZXJpZnlfbXByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvciwKPiA+ID4gKwkJICAgIHN0cnVjdCBoZGNwMl9yZXBfc3RyZWFtX3JlYWR5ICpz dHJlYW1fcmVhZHkpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRh ID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ID4gKwlz dHJ1Y3QgaTkxNV9jb21wb25lbnRfbWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmNvbXBfbWFzdGVy Owo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBjb21wLT5oZGNwX29wcy0+ dmVyaWZ5X21wcmltZShjb21wLT5tZWlfZGV2LCBkYXRhLCBzdHJlYW1fcmVhZHkpOwo+ID4gPiAr CWlmIChyZXQgPCAwKQo+ID4gPiArCQlEUk1fREVCVUdfS01TKCJWZXJpZnkgbXByaW1lIGZhaWxl ZC4gJWRcbiIsIHJldCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiArfQo+ID4g PiArCj4gPiA+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiA+ID4gK2ludCBoZGNw Ml9hdXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4g PiA+ICt7Cj4gPiA+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+ aGRjcC5wb3J0X2RhdGE7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ID4gKwlzdHJ1Y3QgaTkxNV9jb21w b25lbnRfbWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmNvbXBfbWFzdGVyOwo+ID4gPiArCWludCBy ZXQ7Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBjb21wLT5oZGNwX29wcy0+ZW5hYmxlX2hkY3BfYXV0 aGVudGljYXRpb24oY29tcC0+bWVpX2RldiwgZGF0YSk7Cj4gPiA+ICsJaWYgKHJldCA8IDApCj4g PiA+ICsJCURSTV9ERUJVR19LTVMoIkVuYWJsZSBoZGNwIGF1dGggZmFpbGVkLiAlZFxuIiwgcmV0 KTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0 YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQo+ID4gPiAraW50IGhkY3AyX2Nsb3NlX21laV9z ZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gK3sKPiA+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+ YmFzZS5kZXYpOwo+ID4gPiArCXN0cnVjdCBpOTE1X2NvbXBvbmVudF9tYXN0ZXIgKmNvbXAgPSBk ZXZfcHJpdi0+Y29tcF9tYXN0ZXI7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gY29tcC0+aGRjcF9v cHMtPmNsb3NlX2hkY3Bfc2Vzc2lvbihjb21wLT5tZWlfZGV2LAo+ID4gPiArCQkJCQkJICAmY29u bmVjdG9yLT5oZGNwLnBvcnRfZGF0YSk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQo+ID4gPiAraW50IGhkY3AyX2RlYXV0aGVudGljYXRlX3Bv cnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiArewo+ID4gPiArCXJl dHVybiBoZGNwMl9jbG9zZV9tZWlfc2Vzc2lvbihjb25uZWN0b3IpOwo+ID4gPiArfQo+ID4gPiAr Cj4gPiA+ICtzdGF0aWMgaW50IGk5MTVfaGRjcF9jb21wb25lbnRfbWF0Y2goc3RydWN0IGRldmlj ZSAqZGV2LCB2b2lkICpkYXRhKQo+ID4gPiArewo+ID4gPiArCXJldHVybiAhc3RyY21wKGRldi0+ ZHJpdmVyLT5uYW1lLCAibWVpX2hkY3AiKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGlj IGludCBpbml0aWFsaXplX2hkY3BfcG9ydF9kYXRhKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25u ZWN0b3ItPmhkY3A7Cj4gPiA+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmhkY3At PnBvcnRfZGF0YTsKPiA+ID4gKwo+ID4gPiArCWRhdGEtPnBvcnQgPSBQT1JUX05PTkU7Cj4gPiA+ ICsJaWYgKGNvbm5lY3Rvci0+ZW5jb2RlcikKPiA+ID4gKwkJZGF0YS0+cG9ydCA9IGNvbm5lY3Rv ci0+ZW5jb2Rlci0+cG9ydDsKPiA+IFRoaXMgYW5kIHRoZSBjb2RlIGFib3ZlIGluIGFrZV9pbml0 IHN0aWxsIGxvb2sgc3RyYW5nZS4gSSdtIG5vdCByZWFsbHkKPiA+IGZvbGxvd2luZyBob3cgd2Ug Y2FuIGVuZCB1cCB3aXRoIGFuIGludGlhbGl6YXRpb24gc2VxdWVuY2Ugd2hlcmUgd2UgZG8gbm90 Cj4gPiB5ZXQga25vdyB0aGUgZW5jb2RlciBhbmQgaGVuY2UgY2FuJ3QgYXNzaWduIHRoZSBwb3J0 Pwo+ID4gCj4gPiBUaGF0IHN0aWxsIHNtZWxscyBsaWtlIGEgYnVnLiBJIHRoaW5rIHdlIHNob3Vs ZCBiZSBhYmxlIHRvIHNldCB0aGlzCj4gPiB1bmNvbmR0aW9uYWxseSAoaWYgbm90LCBJIG5lZWQg dG8gdW5kZXJzdGFuZCB3aHkpLgo+IAo+IE9vcHMuIHRoaXMgaXMgY2F1c2VkIGJ5IG1lIGJ5IGNh bGxpbmcgdGhlIGhkY3BfaW5pdCBldmVuIGJlZm9yZSBpbnRlbF9jb25uZWN0b3JfYXR0YWNoX2Vu Y29kZXIuCj4gCj4gV2lsbCBmaXggaXQuCj4gCj4gPiAKPiA+ID4gKwo+ID4gPiArCWRhdGEtPnBv cnRfdHlwZSA9ICh1OClIRENQX1BPUlRfVFlQRV9JTlRFR1JBVEVEOwo+ID4gPiArCWRhdGEtPnBy b3RvY29sID0gKHU4KWhkY3AtPnNoaW0tPnByb3RvY29sOwo+ID4gPiArCj4gPiA+ICsJZGF0YS0+ ayA9IDE7Cj4gPiA+ICsJaWYgKCFkYXRhLT5zdHJlYW1zKQo+ID4gPiArCQlkYXRhLT5zdHJlYW1z ID0ga2NhbGxvYyhkYXRhLT5rLAo+ID4gPiArCQkJCQlzaXplb2Yoc3RydWN0IGhkY3AyX3N0cmVh bWlkX3R5cGUpLAo+ID4gPiArCQkJCQlHRlBfS0VSTkVMKTsKPiA+ID4gKwlpZiAoIWRhdGEtPnN0 cmVhbXMpIHsKPiA+ID4gKwkJRFJNX0VSUk9SKCJPdXQgb2YgTWVtb3J5XG4iKTsKPiA+ID4gKwkJ cmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZGF0YS0+c3RyZWFtc1sw XS5zdHJlYW1faWQgPSAwOwo+ID4gPiArCWRhdGEtPnN0cmVhbXNbMF0uc3RyZWFtX3R5cGUgPSBo ZGNwLT5jb250ZW50X3R5cGU7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiAgIGJvb2wgaXNfaGRjcDJfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiA+ID4gICB7Cj4gPiA+ICAgCXJldHVybiAoKElOVEVMX0dFTihkZXZf cHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwKPiA+ID4gQEAgLTg0Mywx MCArMTA3MSwyOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZGNwMl9pbml0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gICB7Cj4gPiA+ICAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gPiA+ICAg CXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiA+ID4gKwlzdGF0 aWMgYm9vbCBjb21wX21hdGNoX2FkZGVkOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICAgCVdBUk5f T04oIWlzX2hkY3AyX3N1cHBvcnRlZChkZXZfcHJpdikpOwo+ID4gPiAtCS8qIFRPRE86IE1FSSBp bnRlcmZhY2UgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQgaGVyZSAqLwo+ID4gPiArCXJldCA9IGlu aXRpYWxpemVfaGRjcF9wb3J0X2RhdGEoY29ubmVjdG9yKTsKPiA+ID4gKwlpZiAocmV0KSB7Cj4g PiA+ICsJCURSTV9ERUJVR19LTVMoIk1laSBoZGNwIGRhdGEgaW5pdCBmYWlsZWRcbiIpOwo+ID4g PiArCQlyZXR1cm47Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBDb21w b25lbnQgZm9yIG1laSBpcyBjb21tb24gYWNyb3NzIHRoZSBjb25uZWN0b3IuCj4gPiA+ICsJICog QWRkaW5nIHRoZSBtYXRjaCBvbmNlIGlzIHN1ZmZpY2llbnQuCj4gPiA+ICsJICogVE9ETzogSW5z dGVhZCBvZiBzdGF0aWMgYm9vbCwgZG8gd2UgbmVlZCBmbGFnIGluIGRldl9wcml2Py4KPiA+ID4g KwkgKi8KPiA+ID4gKwlpZiAoIWNvbXBfbWF0Y2hfYWRkZWQpIHsKPiA+ID4gKwkJY29tcG9uZW50 X21hdGNoX2FkZChkZXZfcHJpdi0+ZHJtLmRldiwgJmRldl9wcml2LT5tYXN0ZXJfbWF0Y2gsCj4g PiA+ICsJCQkJICAgIGk5MTVfaGRjcF9jb21wb25lbnRfbWF0Y2gsIGRldl9wcml2KTsKPiA+IFBh dGNoIHNlcmllcyBuZWVkcyB0byBiZSByZW9yZGVyZWQ6IFdlIGNhbiBvbmx5IGRvIHRoZSBjb21w b25lbnRfbWF0Y2hfYWRkCj4gPiBvbmNlIHRoZSBtZWkgY29tcG9uZW50IGlzIG1lcmdlZC4gTWF5 YmUganVzdCBzcGxpdCBvdXQgdGhpcyBodW5rIGludG8gYQo+ID4gZmluYWwgcGF0Y2g/Cj4gVGhp cyBmdW5jdGlvbiB3b250IGJlIGNhbGxlZCB0aWxsIEtjb25maWcgaXMgZGVmaW5lZCBpbiB0aGUg bWVpX2hkY3AKPiBjaGFuZ2VzLiBCdXQgeWVzIHRoaXMgY2h1bmsgc2hvdWxkIGJlIGxhc3QgcGF0 Y2ggb2YgdGhlc2Ugc2VyaWVzLgo+ID4gCj4gPiA+ICsJCWNvbXBfbWF0Y2hfYWRkZWQgPSB0cnVl Owo+ID4gVGhpcyBzdGF0aWMgaGVyZSBraW5kYSB3b3JrcyBiZWNhdXNlIHRoZXJlJ3Mgb25seSAx IGdwdSwgYnV0IGl0J3MgYSBiYWQKPiA+IGhhY2suIFBsZWFzZSBtb3ZlIHRvIGRybV9pOTE1X3By aXZhdGUgKG5leHQgdG8gdGhlIG90aGVyIGNvbXBvbmVudCBzdHVmZikuCj4gT2sKPiA+IAo+ID4g QWxzbywgd2UgbmVlZCB0byBvbmx5IGRvIHRoaXMgd2hlbiBDT05GSUdfTUVJX0hEQ1AgaXMgZW5h YmxlZCwgb3RoZXJ3aXNlCj4gPiBoZGNwMiBpbml0IG11c3QgZmFpbC4gTWF5YmUgYmVzdCB0byBw dXQgdGhhdCBpbnRvIHRoZSBpc19oZGNwMl9zdXBwb3J0ZWQKPiA+IGhlbHBlciBmb3Igbm93LiBP bmNlIHdlIGdldCBub24tTUVJIGhkY3AyIChkZWZpbml0ZWx5IG5lZWRlZCBmb3IgZGlzY3JldGUK PiA+IGdwdSkgd2UgY2FuIHNwbGl0IHRoYXQgdXAgaW50byBpc19tZWlfaGRjcDJfc3VwcG9ydCBh bmQKPiA+IGlzX290aGVyX2hkY3AyX3N1cHBvcnRlZC4KPiAKPiB0aGUgY2hlY2sgZm9yIENPTkZJ R19JTlRFTF9NRUlfSERDUCBpcyBhbHJlYWR5IGFkZGVkIGludG8KPiBpc19oZGNwMl9zdXBwb3J0 ZWQoKQoKSW5kZWVkLCBJIG92ZXJsb29rZWQgdGhhdC4gTWF5YmUgaGlnaGxpZ2h0IGl0IGEgYml0 IG1vcmUgd2l0aCBhIHNlcGFyYXRlCgoJaWYgKCFDT05GSUdfRU5BQkxFRChNRUlfSERDUCkpCgkJ cmV0dXJuIGZhbHNlOwoKc28gaXQgc3RpY2sgb3V0IG1vcmUgaW4gdGhlIHByZXZpb3VzIHBhdGNo LiBDdXJyZW50bHkgaXQncyBhIGJpdCBidXJyaWVkLgoKV2l0aCB0aGF0ICsgdGhlIGluaXQgb3Jk ZXJpbmcgZml4ZWQ6CgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBm ZndsbC5jaD4KClRoZXJlJ3Mgbm8gbmVlZCB0byBzcGxpdCB0aGUgcGF0Y2ggb3V0IGFueW1vcmUs IHNpbmNlIHdpdGhvdXQgdGhlIG1laQpwYXRjaGVzIHlvdSBjYW4ndCBlbmFibGUgdGhhdCBLY29u ZmlnIG9wdGlvbiBhbmQgaGVuY2Ugbm8gYmlzZWN0IGlzc3Vlcy4KCkNoZWVycywgRGFuaWVsCgoK PiAKPiAtUmFtCj4gCj4gPiAKPiA+IE90aGVyd2lzZSBsZ3RtIEkgdGhpbmsuCj4gPiAtRGFuaWVs Cj4gPiAKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gICAJaGRjcC0+aGRjcDJfc3VwcG9ydGVkID0g MTsKPiA+ID4gICB9Cj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVu dC5oIGIvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaAo+ID4gPiBpbmRleCA2Zjk0ZGRkM2Yy YzIuLjdhNzIwMTM3NGNmZSAxMDA2NDQKPiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0vaTkxNV9jb21w b25lbnQuaAo+ID4gPiArKysgYi9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oCj4gPiA+IEBA IC0yNCw2ICsyNCw4IEBACj4gPiA+ICAgI2lmbmRlZiBfSTkxNV9DT01QT05FTlRfSF8KPiA+ID4g ICAjZGVmaW5lIF9JOTE1X0NPTVBPTkVOVF9IXwo+ID4gPiArI2luY2x1ZGUgPGRybS9pOTE1X21l aV9oZGNwX2ludGVyZmFjZS5oPgo+ID4gPiArCj4gPiA+ICAgI2luY2x1ZGUgImRybV9hdWRpb19j b21wb25lbnQuaCIKPiA+ID4gICAvKiBNQVhfUE9SVCBpcyB0aGUgbnVtYmVyIG9mIHBvcnQKPiA+ ID4gQEAgLTUwLDggKzUyLDEzIEBAIHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCB7Cj4gPiA+ ICAgICogc3RydWN0IGk5MTVfY29tcG9uZW50X21hc3RlciAtIFVzZWQgZm9yIGNvbW11bmljYXRp b24gYmV0d2VlbiBpOTE1Cj4gPiA+ICAgICoJCQkJICBhbmQgYW55IG90aGVyIGRyaXZlcnMgZm9y IHRoZSBzZXJ2aWNlcwo+ID4gPiAgICAqCQkJCSAgb2YgZGlmZmVyZW50IGZlYXR1cmUuCj4gPiA+ ICsgKiBAbWVpX2RldjogZGV2aWNlIHRoYXQgcHJvdmlkZSB0aGUgSERDUDIuMiBzZXJ2aWNlIGZy b20gTUVJIEJ1cy4KPiA+ID4gKyAqIEBoZGNwX29wczogT3BzIGltcGxlbWVudGVkIGJ5IG1laV9o ZGNwIGRyaXZlciwgdXNlZCBieSBpOTE1IGRyaXZlci4KPiA+ID4gICAgKi8KPiA+ID4gICBzdHJ1 Y3QgaTkxNV9jb21wb25lbnRfbWFzdGVyIHsKPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlICptZWlfZGV2 Owo+ID4gPiArCWNvbnN0IHN0cnVjdCBpOTE1X2hkY3BfY29tcG9uZW50X29wcyAqaGRjcF9vcHM7 Cj4gPiA+ICsKPiA+ID4gICAJLyoKPiA+ID4gICAJICogQWRkIGhlcmUgdGhlIGludGVyZmFjZSBk ZXRhaWxzIGJldHdlZW4gSTkxNSBhbmQgaW50ZXJlc3RlZCBtb2R1bGVzLgo+ID4gPiAgIAkgKi8K PiA+ID4gLS0gCj4gPiA+IDIuNy40Cj4gPiA+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=