From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jackie Li Subject: [PATCH 1/2] drm/i915: implemented dynamic WOPCM partition. Date: Fri, 3 Nov 2017 17:18:37 -0700 Message-ID: <1509754718-27734-1-git-send-email-yaodong.li@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3888D6EB4F for ; Sat, 4 Nov 2017 00:19:15 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Sujaritha Sundaresan List-Id: intel-gfx@lists.freedesktop.org U3RhdGljIFdPUENNIHBhcnRpdGlvbmluZyB3b3VsZCBsZWFkIHRvIEd1QyBsb2FkaW5nIGZhaWx1 cmUKaWYgdGhlIEd1Qy9IdUMgZmlybXdhcmUgc2l6ZSBleGNlZWRlZCBjdXJyZW50IHN0YXRpYyA1 MTJLQgpwYXJ0aXRpb24gYm91bmRhcnkuCgpUaGlzIHBhdGNoIGVuYWJsZWQgdGhlIGR5bmFtaWNh bCBjYWxjdWxhdGlvbiBvZiB0aGUgV09QQ00gYXBlcnR1cmUKdXNlZCBieSBHdUMvSHVDIGZpcm13 YXJlLiBHdUMgV09QQ00gb2Zmc2V0IHdhcyBzZXQgdG8KSHVDIHNpemUgKyByZXNlcnZlZCBXT1BD TSBzaXplLiBHdUMgV09QQ00gc2l6ZSB3YXMgc2V0IHRvCnRvdGFsIFdPUENNIHNpemUgLSBHdUMg V09QQ00gb2Zmc2V0IC0gUkM2Q1RYIHNpemUuCgpTaWduZWQtb2ZmLWJ5OiBKYWNraWUgTGkgPHlh b2RvbmcubGlAaW50ZWwuY29tPgpDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3pr b0BpbnRlbC5jb20+CkNjOiBTYWdhciBBcnVuIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50ZWwu Y29tPgpDYzogU3VqYXJpdGhhIFN1bmRhcmVzYW4gPHN1amFyaXRoYS5zdW5kYXJlc2FuQGludGVs LmNvbT4KQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0Bp bnRlbC5jb20+CkNjOiBKb2huIFNwb3Rzd29vZCA8am9obi5hLnNwb3Rzd29vZEBpbnRlbC5jb20+ CkNjOiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8ICAxNSArKysrCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgMTMgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1 Y19yZWcuaCAgICAgfCAgMTggKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5j ICAgICAgICB8ICA0NiArKysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Yy5oICAgICAgICB8ICAxOCArLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMg ICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jICAgICAgICAg fCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VjX2Z3LmMgICAgICB8ICAxMiArKy0KIDkgZmlsZXMgY2hhbmdlZCwgMjIzIGlu c2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4 IGU3ZTllMDYuLjE5NTA5ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNjIzLDYgKzYy MywxNSBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAlXQVJOX09OKCFsaXN0X2VtcHR5KCZkZXZfcHJpdi0+Y29udGV4dHMubGlz dCkpOwogfQogCitzdGF0aWMgdm9pZCBpOTE1X3dvcGNtX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF93b3BjbV9pbmZvICp3b3BjbSA9ICZk ZXZfcHJpdi0+d29wY207CisKKwl3b3BjbS0+c2l6ZSA9IFdPUENNX0RFRkFVTFRfU0laRTsKKwor CURSTV9ERUJVR19EUklWRVIoIldPUENNIHNpemU6ICVkS0JcbiIsIHdvcGNtLT5zaXplID4+IDEw KTsKK30KKwogc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwpAQCAtNjcwLDYgKzY3OSwxMiBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0 X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAocmV0KQogCQlnb3RvIGNsZWFudXBf aXJxOwogCisJLyoKKwkgKiBHZXQgdGhlIHdvcGNtIG1lbW9yeSBpbmZvLgorCSAqIE5PVEU6IHRo aXMgbmVlZCB0byBiZSBjYWxsZWQgYmVmb3JlIGluaXQgRlcuCisJICovCisJaTkxNV93b3BjbV9p bml0KGRldl9wcml2KTsKKwogCWludGVsX3VjX2luaXRfZncoZGV2X3ByaXYpOwogCiAJcmV0ID0g aTkxNV9nZW1faW5pdChkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA3MmJi NWI1Li42MWNkMjkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTIyMzUsNiArMjIzNSwx NiBAQCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgewogCXU4IHZvbHRhZ2VfbGV2ZWw7CiB9Owog CitzdHJ1Y3QgaW50ZWxfd29wY21faW5mbyB7CisJdTMyIHNpemU7Cit9OworCitzdHJ1Y3QgaW50 ZWxfd29wY21fcGFydGl0aW9uIHsKKwl1MzIgZ3VjX3dvcGNtX29mZnNldDsKKwl1MzIgZ3VjX3dv cGNtX3NpemU7CisJdTMyIGd1Y193b3BjbV90b3A7Cit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSB7CiAJc3RydWN0IGRybV9kZXZpY2UgZHJtOwogCkBAIC0yMjU4LDYgKzIyNjgsOSBAQCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGludGVsX2h1YyBodWM7CiAJc3RydWN0 IGludGVsX2d1YyBndWM7CiAKKwlzdHJ1Y3QgaW50ZWxfd29wY21faW5mbyB3b3BjbTsKKwlzdHJ1 Y3QgaW50ZWxfd29wY21fcGFydGl0aW9uIHdvcGNtX3BhcnRpdGlvbjsKKwogCXN0cnVjdCBpbnRl bF9jc3IgY3NyOwogCiAJc3RydWN0IGludGVsX2dtYnVzIGdtYnVzW0dNQlVTX05VTV9QSU5TXTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCAxMGFmZmIzLi43MzQ3 ZmQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC0zMTIsMTIg KzMxMiwxMiBAQCBfX2NyZWF0ZV9od19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAljdHgtPmRlc2NfdGVtcGxhdGUgPQogCQlkZWZhdWx0X2Rlc2NfdGVtcGxhdGUo ZGV2X3ByaXYsIGRldl9wcml2LT5tbS5hbGlhc2luZ19wcGd0dCk7CiAKLQkvKiBHdUMgcmVxdWly ZXMgdGhlIHJpbmcgdG8gYmUgcGxhY2VkIGFib3ZlIEdVQ19XT1BDTV9UT1AuIElmIEd1QyBpcyBu b3QKKwkvKiBHdUMgcmVxdWlyZXMgdGhlIHJpbmcgdG8gYmUgcGxhY2VkIGFib3ZlIGd1YyB3b3Bj bSB0b3AuIElmIEd1QyBpcyBub3QKIAkgKiBwcmVzZW50IG9yIG5vdCBpbiB1c2Ugd2Ugc3RpbGwg bmVlZCBhIHNtYWxsIGJpYXMgYXMgcmluZyB3cmFwYXJvdW5kCiAJICogYXQgb2Zmc2V0IDAgc29t ZXRpbWVzIGhhbmdzLiBObyBpZGVhIHdoeS4KIAkgKi8KIAlpZiAoSEFTX0dVQyhkZXZfcHJpdikg JiYgaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1Y19sb2FkaW5nKQotCQljdHgtPmdndHRfb2Zmc2V0 X2JpYXMgPSBHVUNfV09QQ01fVE9QOworCQljdHgtPmdndHRfb2Zmc2V0X2JpYXMgPSBpbnRlbF9n dWNfd29wY21fdG9wKGRldl9wcml2KTsKIAllbHNlCiAJCWN0eC0+Z2d0dF9vZmZzZXRfYmlhcyA9 IEk5MTVfR1RUX1BBR0VfU0laRTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAppbmRl eCAzNWNmOTkxLi5kMzA5ODg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaApAQCAt NjcsMTcgKzY3LDI3IEBACiAjZGVmaW5lIERNQV9HVUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMz NDApCiAjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdFTlRfVkNSCQkgICgwPDwxKQogI2RlZmluZSAg IEhVQ19MT0FESU5HX0FHRU5UX0dVQwkJICAoMTw8MSkKLSNkZWZpbmUgICBHVUNfV09QQ01fT0ZG U0VUX1ZBTFVFCSAgMHg4MDAwMAkvKiA1MTJLQiAqLwogI2RlZmluZSBHVUNfTUFYX0lETEVfQ09V TlQJCV9NTUlPKDB4QzNFNCkKIAogI2RlZmluZSBIVUNfU1RBVFVTMiAgICAgICAgICAgICBfTU1J TygweEQzQjApCiAjZGVmaW5lICAgSFVDX0ZXX1ZFUklGSUVEICAgICAgICgxPDw3KQogCiAvKiBE ZWZpbmVzIFdPUENNIHNwYWNlIGF2YWlsYWJsZSB0byBHdUMgZmlybXdhcmUgKi8KKy8qIGRlZmF1 bHQgV09QQ00gc2l6ZSAxTUIgKi8KKyNkZWZpbmUgV09QQ01fREVGQVVMVF9TSVpFCQkoMHgxIDw8 IDIwKQorLyogcmVzZXJ2ZWQgV09QQ00gc2l6ZSAxNktCICovCisjZGVmaW5lIFdPUENNX1JFU0VS VkVEX1NJWkUJCSgweDQwMDApCisvKiBHVUMgV09QQ00gT2Zmc2V0IG5lZWQgdG8gYmUgMTZLQiBh bGlnbmVkICovCisjZGVmaW5lIFdPUENNX09GRlNFVF9BTElHTk1FTlQJCSgweDQwMDApCisvKiA4 S0Igc3RhY2sgcmVzZXJ2ZWQgZm9yIEd1QyBGVyovCisjZGVmaW5lIEdVQ19XT1BDTV9TVEFDS19S RVNFUlZFRAkoMHgyMDAwKQorLyogMjRLQiBXT1BDTSByZXNlcnZlZCBmb3IgUkM2IENUWCBvbiBC WFQgKi8KKyNkZWZpbmUgQlhUX1dPUENNX1JDNl9SRVNFUlZFRAkJKDB4NjAwMCkKKworI2RlZmlu ZSBHRU45X0dVQ19XT1BDTV9ERUxUQQkJNAorI2RlZmluZSBHRU45X0dVQ19XT1BDTV9PRkZTRVQJ CSgweDI0MDAwKQorCiAjZGVmaW5lIEdVQ19XT1BDTV9TSVpFCQkJX01NSU8oMHhjMDUwKQotLyog R3VDIGFkZHJlc3NlcyBiZWxvdyBHVUNfV09QQ01fVE9QIGRvbid0IG1hcCB0aHJvdWdoIHRoZSBH VFQgKi8KLSNkZWZpbmUgICBHVUNfV09QQ01fVE9QCQkJICAoMHg4MCA8PCAxMikJLyogNTEyS0Ig Ki8KLSNkZWZpbmUgICBCWFRfR1VDX1dPUENNX1JDNl9SRVNFUlZFRAkgICgweDEwIDw8IDEyKQkv KiA2NEtCICAqLwogCiAvKiBHdUMgYWRkcmVzc2VzIGFib3ZlIEdVQ19HR1RUX1RPUCBhbHNvIGRv bid0IG1hcCB0aHJvdWdoIHRoZSBHVFQgKi8KICNkZWZpbmUgR1VDX0dHVFRfVE9QCQkJMHhGRUUw MDAwMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYwppbmRleCA5Njc4NjMwLi4wZWZjZmI0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWMuYwpAQCAtMzM3LDcgKzMzNyw3IEBAIGludCBpbnRlbF9ndWNf cmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqIFRoaXMgaXMgYSB3 cmFwcGVyIHRvIGNyZWF0ZSBhbiBvYmplY3QgZm9yIHVzZSB3aXRoIHRoZSBHdUMuIEluIG9yZGVy IHRvCiAgKiB1c2UgaXQgaW5zaWRlIHRoZSBHdUMsIGFuIG9iamVjdCBuZWVkcyB0byBiZSBwaW5u ZWQgbGlmZXRpbWUsIHNvIHdlIGFsbG9jYXRlCiAgKiBib3RoIHNvbWUgYmFja2luZyBzdG9yYWdl IGFuZCBhIHJhbmdlIGluc2lkZSB0aGUgR2xvYmFsIEdUVC4gV2UgbXVzdCBwaW4KLSAqIGl0IGlu IHRoZSBHR1RUIHNvbWV3aGVyZSBvdGhlciB0aGFuIHRoYW4gWzAsIEdVQ19XT1BDTV9UT1ApIGJl Y2F1c2UgdGhhdAorICogaXQgaW4gdGhlIEdHVFQgc29tZXdoZXJlIG90aGVyIHRoYW4gdGhhbiBb MCwgZ3VjIHdvcGNtX3RvcCkgYmVjYXVzZSB0aGF0CiAgKiByYW5nZSBpcyByZXNlcnZlZCBpbnNp ZGUgR3VDLgogICoKICAqIFJldHVybjoJQSBpOTE1X3ZtYSBpZiBzdWNjZXNzZnVsLCBvdGhlcndp c2UgYW4gRVJSX1BUUi4KQEAgLTM1OCw3ICszNTgsOCBAQCBzdHJ1Y3QgaTkxNV92bWEgKmludGVs X2d1Y19hbGxvY2F0ZV92bWEoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgc2l6ZSkKIAkJZ290 byBlcnI7CiAKIAlyZXQgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCBQQUdFX1NJWkUsCi0JCQkgICBQ SU5fR0xPQkFMIHwgUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCk7CisJCQkgICBQSU5f R0xPQkFMIHwgUElOX09GRlNFVF9CSUFTIHwKKwkJCSAgIGludGVsX2d1Y193b3BjbV90b3AoZGV2 X3ByaXYpKTsKIAlpZiAocmV0KSB7CiAJCXZtYSA9IEVSUl9QVFIocmV0KTsKIAkJZ290byBlcnI7 CkBAIC0zNzMsMTEgKzM3NCw0MiBAQCBzdHJ1Y3QgaTkxNV92bWEgKmludGVsX2d1Y19hbGxvY2F0 ZV92bWEoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgc2l6ZSkKIAogdTMyIGludGVsX2d1Y193 b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQl1MzIgd29w Y21fc2l6ZSA9IEdVQ19XT1BDTV9UT1A7CisJc3RydWN0IGludGVsX3dvcGNtX3BhcnRpdGlvbiAq d3AgPSAmZGV2X3ByaXYtPndvcGNtX3BhcnRpdGlvbjsKIAotCS8qIE9uIEJYVCwgdGhlIHRvcCBv ZiBXT1BDTSBpcyByZXNlcnZlZCBmb3IgUkM2IGNvbnRleHQgKi8KLQlpZiAoSVNfR0VOOV9MUChk ZXZfcHJpdikpCi0JCXdvcGNtX3NpemUgLT0gQlhUX0dVQ19XT1BDTV9SQzZfUkVTRVJWRUQ7CisJ R0VNX0JVR19PTighd3AtPmd1Y193b3BjbV9zaXplKTsKIAotCXJldHVybiB3b3BjbV9zaXplOwor CXJldHVybiB3cC0+Z3VjX3dvcGNtX3NpemU7Cit9CisKK3UzMiBpbnRlbF9ndWNfd29wY21fdG9w KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfd29w Y21fcGFydGl0aW9uICp3cCA9ICZkZXZfcHJpdi0+d29wY21fcGFydGl0aW9uOworCisJR0VNX0JV R19PTighZGV2X3ByaXYtPndvcGNtLnNpemUpOworCisJcmV0dXJuIHdwLT5ndWNfd29wY21fdG9w ID8gd3AtPmd1Y193b3BjbV90b3AgOiBkZXZfcHJpdi0+d29wY20uc2l6ZTsKK30KKwordTMyIGlu dGVsX2d1Y193b3BjbV9vZmZzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQor eworCXN0cnVjdCBpbnRlbF93b3BjbV9wYXJ0aXRpb24gKndwID0gJmRldl9wcml2LT53b3BjbV9w YXJ0aXRpb247CisKKwlHRU1fQlVHX09OKCF3cC0+Z3VjX3dvcGNtX3NpemUpOworCisJcmV0dXJu IHdwLT5ndWNfd29wY21fb2Zmc2V0OworfQorCisvKgorICogR3VDIGRvZXMgbm90IGFsbG93IGFu eSBnZnggR0dUVCBhZGRyZXNzIHRoYXQgZmFsbHMgaW50byByYW5nZSBbMCwgV09QQ01fVE9QKSwK KyAqIHdoaWNoIGlzIHJlc2VydmVkIGZvciBCb290IFJPTSwgU1JBTSBhbmQgV09QQ00uIEFsbCBn Znggb2JqZWN0cworICogdXNlZCBieSBHdUMgaXMgcGlubmVkIHdpdGggUElOX09GRlNFVF9CSUFT IGFsb25nIHdpdGggdG9wIG9mIFdPUENNLgorICovCit1MzIgZ3VjX2dndHRfb2Zmc2V0KHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHZtYS0+dm0tPmk5MTU7CisJdTMyIG9mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsKKwor CUdFTV9CVUdfT04ob2Zmc2V0IDwgaW50ZWxfZ3VjX3dvcGNtX3RvcChkZXZfcHJpdikpOworCUdF TV9CVUdfT04ocmFuZ2Vfb3ZlcmZsb3dzX3QodTY0LCBvZmZzZXQsIHZtYS0+c2l6ZSwgR1VDX0dH VFRfVE9QKSk7CisJcmV0dXJuIG9mZnNldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKaW5k ZXggNjA3ZTAyNS4uMTQ5M2RlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKQEAgLTEwMCwy MSArMTAwLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2d1Y19ub3RpZnkoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQogCWd1Yy0+bm90aWZ5KGd1Yyk7CiB9CiAKLS8qCi0gKiBHdUMgZG9lcyBu b3QgYWxsb3cgYW55IGdmeCBHR1RUIGFkZHJlc3MgdGhhdCBmYWxscyBpbnRvIHJhbmdlIFswLCBX T1BDTV9UT1ApLAotICogd2hpY2ggaXMgcmVzZXJ2ZWQgZm9yIEJvb3QgUk9NLCBTUkFNIGFuZCBX T1BDTS4gQ3VycmVudGx5IHRoaXMgdG9wIGFkZHJlc3MgaXMKLSAqIDUxMksuIEluIG9yZGVyIHRv IGV4Y2x1ZGUgMC01MTJLIGFkZHJlc3Mgc3BhY2UgZnJvbSBHR1RULCBhbGwgZ2Z4IG9iamVjdHMK LSAqIHVzZWQgYnkgR3VDIGlzIHBpbm5lZCB3aXRoIFBJTl9PRkZTRVRfQklBUyBhbG9uZyB3aXRo IHNpemUgb2YgV09QQ00uCi0gKi8KLXN0YXRpYyBpbmxpbmUgdTMyIGd1Y19nZ3R0X29mZnNldChz dHJ1Y3QgaTkxNV92bWEgKnZtYSkKLXsKLQl1MzIgb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2 bWEpOwotCi0JR0VNX0JVR19PTihvZmZzZXQgPCBHVUNfV09QQ01fVE9QKTsKLQlHRU1fQlVHX09O KHJhbmdlX292ZXJmbG93c190KHU2NCwgb2Zmc2V0LCB2bWEtPnNpemUsIEdVQ19HR1RUX1RPUCkp OwotCi0JcmV0dXJuIG9mZnNldDsKLX0KIAogdm9pZCBpbnRlbF9ndWNfaW5pdF9lYXJseShzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpOwogdm9pZCBpbnRlbF9ndWNfaW5pdF9zZW5kX3JlZ3Moc3RydWN0 IGludGVsX2d1YyAqZ3VjKTsKQEAgLTEyNyw1ICsxMTIsOCBAQCBpbnQgaW50ZWxfZ3VjX3N1c3Bl bmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGludCBpbnRlbF9ndWNfcmVz dW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBzdHJ1Y3QgaTkxNV92bWEg KmludGVsX2d1Y19hbGxvY2F0ZV92bWEoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgc2l6ZSk7 CiB1MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKK3UzMiBpbnRlbF9ndWNfd29wY21fdG9wKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cit1MzIgaW50ZWxfZ3VjX3dvcGNtX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwordTMyIGd1Y19nZ3R0X29mZnNldChzdHJ1Y3QgaTkxNV92bWEgKnZt YSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwppbmRleCA5OGQxNzI1Li5hOTg1 YWE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwpAQCAtMjAyLDcgKzIwMiw4IEBAIHZvaWQg aW50ZWxfaHVjX2F1dGgoc3RydWN0IGludGVsX2h1YyAqaHVjKQogCQlyZXR1cm47CiAKIAl2bWEg PSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oaHVjLT5mdy5vYmosIE5VTEwsIDAsIDAsCi0JCQkJ UElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCk7CisJCQkJUElOX09GRlNFVF9CSUFTIHwK KwkJCQlpbnRlbF9ndWNfd29wY21fdG9wKGk5MTUpKTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gcGluIGh1YyBmdyBvYmplY3QgJWRcbiIsCiAJCQkJKGludClQ VFJfRVJSKHZtYSkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKaW5kZXggYWVjMjk1NC4uODNiMjUx NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCkBAIC04Niw2ICs4NiwxMjUgQEAgdm9pZCBpbnRl bF91Y19pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpbnRl bF9ndWNfaW5pdF9lYXJseSgmZGV2X3ByaXYtPmd1Yyk7CiB9CiAKK3N0YXRpYyB1MzIgcmM2X2Nv bnRleHRfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJLyogT24g QlhULCB0aGUgdG9wIG9mIFdPUENNIGlzIHJlc2VydmVkIGZvciBSQzYgY29udGV4dCAqLworCWlm IChJU19HRU45X0xQKGRldl9wcml2KSkKKwkJcmV0dXJuIEJYVF9XT1BDTV9SQzZfUkVTRVJWRUQ7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkb193b3BjbV9wYXJ0aXRpb24oc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCXUzMiBvZmZzZXQsIHUzMiByZXNlcnZlZF9z aXplKQoreworCXN0cnVjdCBpbnRlbF93b3BjbV9wYXJ0aXRpb24gKndwID0gJmRldl9wcml2LT53 b3BjbV9wYXJ0aXRpb247CisJdTMyIGFsaWduZWRfb2Zmc2V0ID0gQUxJR04ob2Zmc2V0LCBXT1BD TV9PRkZTRVRfQUxJR05NRU5UKTsKKworCWlmIChvZmZzZXQgPj0gZGV2X3ByaXYtPndvcGNtLnNp emUpCisJCXJldHVybiAtRTJCSUc7CisKKwlpZiAocmVzZXJ2ZWRfc2l6ZSA+PSBkZXZfcHJpdi0+ d29wY20uc2l6ZSkKKwkJcmV0dXJuIC1FMkJJRzsKKworCWlmICgoYWxpZ25lZF9vZmZzZXQgKyBy ZXNlcnZlZF9zaXplKSA+PSBkZXZfcHJpdi0+d29wY20uc2l6ZSkKKwkJcmV0dXJuIC1FMkJJRzsK KworCXdwLT5ndWNfd29wY21fb2Zmc2V0ID0gYWxpZ25lZF9vZmZzZXQ7CisJd3AtPmd1Y193b3Bj bV90b3AgPSBkZXZfcHJpdi0+d29wY20uc2l6ZSAtIHdwLT5ndWNfd29wY21fb2Zmc2V0OworCXdw LT5ndWNfd29wY21fc2l6ZSA9IHdwLT5ndWNfd29wY21fdG9wIC0gcmVzZXJ2ZWRfc2l6ZTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGludGVsX3VjX2luaXRfd29wY21fcGFydGl0aW9u KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfd29w Y21fcGFydGl0aW9uICp3cCA9ICZkZXZfcHJpdi0+d29wY21fcGFydGl0aW9uOworCXN0cnVjdCBp bnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZnc7CisJc3RydWN0IGludGVsX3Vj X2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5mdzsKKwlzaXplX3QgaHVjX3NpemUsIGd1Y19z aXplOworCXUzMiBvZmZzZXQ7CisJdTMyIHJlc2VydmVkOworCXUzMiB3b3BjbV9iYXNlOworCXUz MiBkZWx0YTsKKwlpbnQgZXJyOworCisJLypSZXR1cm4gaWYgV09QQ00gcGFydGl0aW9uIGhhcyBi ZWVuIGluaXRpYWxpemVkKi8KKwlpZiAod3AtPmd1Y193b3BjbV9zaXplKQorCQlyZXR1cm4gMDsK KworCUdFTV9CVUdfT04oIWRldl9wcml2LT53b3BjbS5zaXplKTsKKworCS8qTm8gbmVlZCB0byBk byBwYXJ0aXRpb24gaWYgZmFpbGVkIHRvIGZldGNoIGJvdGggR3VDIGFuZCBIdUMgRlcqLworCWlm IChndWNfZnctPmZldGNoX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTICYmCisJ CWh1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCisJCXJl dHVybiAtRUlPOworCisJaHVjX3NpemUgPSAwOworCWd1Y19zaXplID0gMDsKKwlvZmZzZXQgPSBX T1BDTV9SRVNFUlZFRF9TSVpFOworCXJlc2VydmVkID0gcmM2X2NvbnRleHRfc2l6ZShkZXZfcHJp dik7CisKKwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfU1VD Q0VTUykKKwkJaHVjX3NpemUgPSBodWNfZnctPmhlYWRlcl9zaXplICsgaHVjX2Z3LT51Y29kZV9z aXplOworCisJZXJyID0gZG9fd29wY21fcGFydGl0aW9uKGRldl9wcml2LCBvZmZzZXQgKyBodWNf c2l6ZSwgcmVzZXJ2ZWQpOworCWlmIChlcnIpIHsKKwkJaWYgKCFodWNfc2l6ZSkKKwkJCWdvdG8g cHRfZG9uZTsKKworCQkvKnBhcnRpdGlvbiBmYWlsZWQgd2l0aCBIdUMgRlcsIGJsb2NrIEh1QyBs b2FkaW5nKi8KKwkJaHVjX3NpemUgPSAwOworCisJCS8qcGFydGl0aW9uIHdpdGhvdXQgbG9hZGlu ZyBIdUMgRlcqLworCQllcnIgPSBkb193b3BjbV9wYXJ0aXRpb24oZGV2X3ByaXYsIG9mZnNldCwg cmVzZXJ2ZWQpOworCQlpZiAoZXJyKQorCQkJZ290byBwdF9kb25lOworCX0KKworCS8qCisJICog Q2hlY2sgaGFyZHdhcmUgcmVzdHJpY3Rpb24gb24gR2VuOQorCSAqIEd1QyBXT1BDTSBzaXplIGlz IGF0IGxlYXN0IDQgYnl0ZXMgbGFyZ2VyIHRoYW4gR3VDIFdPUENNIGJhc2UgZHVlCisJICogdG8g aGFyZHdhcmUgbGltaXRhdGlvbiBvbiBHZW45LgorCSAqLworCWlmIChJU19HRU45KGRldl9wcml2 KSkgeworCQl3b3BjbV9iYXNlID0gd3AtPmd1Y193b3BjbV9vZmZzZXQgKyBHRU45X0dVQ19XT1BD TV9PRkZTRVQ7CisJCWlmICh1bmxpa2VseSh3b3BjbV9iYXNlID4gd3AtPmd1Y193b3BjbV9zaXpl KSkKKwkJCWdvdG8gcHRfZG9uZTsKKworCQlkZWx0YSA9IHdwLT5ndWNfd29wY21fc2l6ZSAtIHdv cGNtX2Jhc2U7CisJCWlmICh1bmxpa2VseShkZWx0YSA8IEdFTjlfR1VDX1dPUENNX0RFTFRBKSkK KwkJCWdvdG8gcHRfZG9uZTsKKwl9CisKKwlpZiAoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gSU5U RUxfVUNfRklSTVdBUkVfU1VDQ0VTUykgeworCQlndWNfc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3Np emUgKyBndWNfZnctPnVjb2RlX3NpemU7CisJCS8qbmVlZCA4SyBzdGFjayBmb3IgR3VDKi8KKwkJ Z3VjX3NpemUgKz0gR1VDX1dPUENNX1NUQUNLX1JFU0VSVkVEOworCX0KKworCWlmIChndWNfc2l6 ZSA+IHdwLT5ndWNfd29wY21fc2l6ZSkKKwkJZ3VjX3NpemUgPSAwOworCitwdF9kb25lOgorCWlm ICghaHVjX3NpemUpIHsKKwkJRFJNX0VSUk9SKCJIdUMgZmlybXdhcmUgaXMgdG9vIGxhcmdlIHRv IGZpdCBpbiBXT1BDTVxuIik7CisJCWludGVsX3VjX2Z3X2ZpbmkoaHVjX2Z3KTsKKwl9CisKKwlp ZiAoIWd1Y19zaXplKSB7CisJCURSTV9FUlJPUigiR3VDIGZpcm13YXJlIGlzIHRvbyBsYXJnZSB0 byBmaXQgaW4gV09QQ01cbiIpOworCQlpbnRlbF91Y19md19maW5pKGd1Y19mdyk7CisJfQorCisJ RFJNX0RFQlVHX0RSSVZFUigiR3VDIFdPUENNIG9mZnNldCAlZEtCLCBzaXplICVkS0IsIHRvcCAl ZEtCXG4iLAorCQl3cC0+Z3VjX3dvcGNtX29mZnNldCA+PiAxMCwKKwkJd3AtPmd1Y193b3BjbV9z aXplID4+IDEwLAorCQl3cC0+Z3VjX3dvcGNtX3RvcCA+PiAxMCk7CisKKwlyZXR1cm4gZXJyOwor fQorCiB2b2lkIGludGVsX3VjX2luaXRfZncoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewogCWludGVsX3VjX2Z3X2ZldGNoKGRldl9wcml2LCAmZGV2X3ByaXYtPmh1Yy5mdyk7 CkBAIC0xNTcsNiArMjc2LDExIEBAIGludCBpbnRlbF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfbG9h ZGluZykKIAkJcmV0dXJuIDA7CiAKKwkvKmluaXQgV09QQ00gcGFydGl0aW9uKi8KKwlyZXQgPSBp bnRlbF91Y19pbml0X3dvcGNtX3BhcnRpdGlvbihkZXZfcHJpdik7CisJaWYgKHJldCkKKwkJZ290 byBlcnJfd29wY207CisKIAlndWNfZGlzYWJsZV9jb21tdW5pY2F0aW9uKGd1Yyk7CiAJZ2VuOV9y ZXNldF9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7CiAKQEAgLTE3Niw3ICszMDAsNyBAQCBpbnQg aW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJLyog aW5pdCBXT1BDTSAqLwogCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIGludGVsX2d1Y193b3Bj bV9zaXplKGRldl9wcml2KSk7CiAJSTkxNV9XUklURShETUFfR1VDX1dPUENNX09GRlNFVCwKLQkJ ICAgR1VDX1dPUENNX09GRlNFVF9WQUxVRSB8IEhVQ19MT0FESU5HX0FHRU5UX0dVQyk7CisJCWlu dGVsX2d1Y193b3BjbV9vZmZzZXQoZGV2X3ByaXYpIHwgSFVDX0xPQURJTkdfQUdFTlRfR1VDKTsK IAogCS8qIFdhRW5hYmxldUtlcm5lbEhlYWRlclZhbGlkRml4OnNrbCAqLwogCS8qIFdhRW5hYmxl R3VDQm9vdEhhc2hDaGVja05vdFNldDpza2wsYnh0LGtibCAqLwpAQCAtMjQ5LDcgKzM3Myw3IEBA IGludCBpbnRlbF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAkJaTkxNV9ndWNfc3VibWlzc2lvbl9maW5pKGRldl9wcml2KTsKIGVycl9ndWM6CiAJaTkxNV9n Z3R0X2Rpc2FibGVfZ3VjKGRldl9wcml2KTsKLQorZXJyX3dvcGNtOgogCWlmIChpOTE1X21vZHBh cmFtcy5lbmFibGVfZ3VjX2xvYWRpbmcgPiAxIHx8CiAJICAgIGk5MTVfbW9kcGFyYW1zLmVuYWJs ZV9ndWNfc3VibWlzc2lvbiA+IDEpIHsKIAkJRFJNX0VSUk9SKCJHdUMgaW5pdCBmYWlsZWQuIEZp cm13YXJlIGxvYWRpbmcgZGlzYWJsZWQuXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VjX2Z3LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5j CmluZGV4IDk3Mzg4OGUuLmFlZmJhMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VjX2Z3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYwpA QCAtOTUsOSArOTUsMTMgQEAgdm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJdWNfZnctPnVjb2RlX29mZnNldCA9IHVjX2Z3LT5oZWFkZXJf b2Zmc2V0ICsgdWNfZnctPmhlYWRlcl9zaXplOwogCXVjX2Z3LT51Y29kZV9zaXplID0gKGNzcy0+ c2l6ZV9kdyAtIGNzcy0+aGVhZGVyX3NpemVfZHcpICogc2l6ZW9mKHUzMik7CiAKLQkvKiBIZWFk ZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNICovCisJLyoKKwkgKiBIZWFkZXIg YW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNCisJICogT25seSBjaGVjayB0aGUgc2l6 ZSBhZ2FpbnN0IHRoZSBvdmVyYWxsIGF2YWlsYWJsZSBXT1BDTSBoZXJlLiBXaWxsCisJICogY29u dGludWUgdG8gY2hlY2sgdGhlIHNpemUgZHVyaW5nIFdPUENNIHBhcnRpdGlvbiBjYWxjdWxhdGlv bi4KKwkgKi8KIAlzaXplID0gdWNfZnctPmhlYWRlcl9zaXplICsgdWNfZnctPnVjb2RlX3NpemU7 Ci0JaWYgKHNpemUgPiBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJpdikpIHsKKwlpZiAoc2l6 ZSA+IGRldl9wcml2LT53b3BjbS5zaXplKSB7CiAJCURSTV9XQVJOKCIlczogRmlybXdhcmUgaXMg dG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIiwKIAkJCSBpbnRlbF91Y19md190eXBlX3JlcHIo dWNfZnctPnR5cGUpKTsKIAkJZXJyID0gLUUyQklHOwpAQCAtMjA3LDYgKzIxMSw3IEBAIGludCBp bnRlbF91Y19md191cGxvYWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKIAkJICAgICAgIGlu dCAoKnhmZXIpKHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncsCiAJCQkJICAgc3RydWN0IGk5MTVf dm1hICp2bWEpKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNSh1 Y19mdy0+b2JqLT5iYXNlLmRldik7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IGVycjsK IApAQCAtMjMwLDcgKzIzNSw4IEBAIGludCBpbnRlbF91Y19md191cGxvYWQoc3RydWN0IGludGVs X3VjX2Z3ICp1Y19mdywKIAl9CiAKIAl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4odWNf ZnctPm9iaiwgTlVMTCwgMCwgMCwKLQkJCQkgICAgICAgUElOX09GRlNFVF9CSUFTIHwgR1VDX1dP UENNX1RPUCk7CisJCQkJICAgICAgIFBJTl9PRkZTRVRfQklBUyB8CisJCQkJICAgICAgIGludGVs X2d1Y193b3BjbV90b3AoaTkxNSkpOwogCWlmIChJU19FUlIodm1hKSkgewogCQllcnIgPSBQVFJf RVJSKHZtYSk7CiAJCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IGdndHQtcGluIGVycj0lZFxuIiwK LS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK