From mboxrd@z Thu Jan 1 00:00:00 1970 From: libin.yang@linux.intel.com Subject: [PATCH] drm/i915: set proper N/M in modeset Date: Thu, 14 Jul 2016 15:06:21 +0800 Message-ID: <1468479981-738-1-git-send-email-libin.yang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id E67A36E800 for ; Thu, 14 Jul 2016 07:09:08 +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, jani.nikula@linux.intel.com, ville.syrjala@linux.intel.com, daniel.vetter@intel.com, tiwai@suse.de Cc: Libin Yang List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb20+CgpXaGVuIG1vZGVz ZXQgb2NjdXJzIGFuZCB0aGUgTFNfQ0xLIGlzIHNldCB0byBzb21lCnNwZWNpYWwgdmFsdWVzIGlu IERQIG1vZGUsIHRoZSBOL00gbmVlZCB0byBiZSBzZXQKbWFudWFsbHkgaWYgYXVkaW8gaXMgcGxh eWluZy4KCkFsc28sIHRoZSBwYXRjaCBhcHBsaWVzCmNvbW1pdCA3ZTgyNzVjMmYyYmIgKCJkcm0v aTkxNTogc2V0IHByb3BlciBOL0NUUyBpbiBtb2Rlc2V0IikKdG8gQVBMIHBsYXRmb3JtLgoKU2ln bmVkLW9mZi1ieTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8ICAgNiArKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyB8IDExNiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCA4YmZkZTc1Li4yZjlkMDBlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTczNTEsNiArNzM1MSwxMiBAQCBlbnVtIHsKICNkZWZp bmUgX0hTV19BVURfQ09ORklHX0IJCTB4NjUxMDAKICNkZWZpbmUgSFNXX0FVRF9DRkcocGlwZSkJ CV9NTUlPX1BJUEUocGlwZSwgX0hTV19BVURfQ09ORklHX0EsIF9IU1dfQVVEX0NPTkZJR19CKQog CisjZGVmaW5lIF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9BCQkweDY1MDI4CisjZGVmaW5lIF9IU1df QVVEX01fQ1RTX0VOQUJMRV9CCQkweDY1MTI4CisjZGVmaW5lIEhTV19BVURfTV9DVFNfRU5BQkxF KHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsIF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9BLCBfSFNXX0FV RF9NX0NUU19FTkFCTEVfQikKKyNkZWZpbmUgICBBVURfTV9DVFNfTV9WQUxVRV9JTkRFWAkoMSA8 PCAyMSkKKyNkZWZpbmUgICBBVURfTV9DVFNfTV9QUk9HX0VOQUJMRQkoMSA8PCAyMCkKKwogI2Rl ZmluZSBfSFNXX0FVRF9NSVNDX0NUUkxfQQkJMHg2NTAxMAogI2RlZmluZSBfSFNXX0FVRF9NSVND X0NUUkxfQgkJMHg2NTExMAogI2RlZmluZSBIU1dfQVVEX01JU0NfQ1RSTChwaXBlKQkJX01NSU9f UElQRShwaXBlLCBfSFNXX0FVRF9NSVNDX0NUUkxfQSwgX0hTV19BVURfTUlTQ19DVFJMX0IpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwppbmRleCA2NzAwYTdiLi5lMmU0ZDRiIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKQEAgLTk4LDYgKzk4LDIyIEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgewogCXsgMTkyMDAwLCBUTURTXzI5N00sIDIwNDgwLCAyNDc1MDAgfSwKIH07CiAKKyNk ZWZpbmUgTENfNTMzTSA1MzMyNTAKKyNkZWZpbmUgTENfMTQ4TSAxNDg1MDAKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgeworCWludCBzYW1wbGVfcmF0ZTsKKwlpbnQgY2xvY2s7CisJaW50IG47CisJaW50 IG07Cit9IGF1ZF9ubVtdID0geworCXs0ODAwMCwgTENfNTMzTSwgODg4NzUsIDQwOTZ9LAorCXs0 NDEwMCwgTENfNTMzTSwgMTQ4MTI1LCA2MjcyfSwKKwl7MzIwMDAsIExDXzUzM00sIDI2NjYyNSwg ODE5Mn0sCisJezQ4MDAwLCBMQ18xNDhNLCAxMjM3NSwgMjA0OH0sCisJezQ0MTAwLCBMQ18xNDhN LCAyMDYyNSwgMzEzNn0sCisJezMyMDAwLCBMQ18xNDhNLCAzNzEyNSwgNDA5Nn0sCit9OworCiAv KiBnZXQgQVVEX0NPTkZJR19QSVhFTF9DTE9DS19IRE1JXyogdmFsdWUgZm9yIG1vZGUgKi8KIHN0 YXRpYyB1MzIgYXVkaW9fY29uZmlnX2hkbWlfcGl4ZWxfY2xvY2soY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCiB7CkBAIC0xMjEsMjAgKzEzNyw1MCBAQCBzdGF0 aWMgdTMyIGF1ZGlvX2NvbmZpZ19oZG1pX3BpeGVsX2Nsb2NrKGNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZAogCXJldHVybiBoZG1pX2F1ZGlvX2Nsb2NrW2ldLmNvbmZpZzsK IH0KIAotc3RhdGljIGludCBhdWRpb19jb25maWdfZ2V0X24oY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUsIGludCByYXRlKQorc3RhdGljIGludCBhdWRpb19jb25maWdfZ2V0X24o c3RydWN0IGludGVsX2NydGMgKmNydGMsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSwgaW50IHJhdGUpCit7CisJaW50IGk7CisKKwlpZiAoaW50ZWxfY3J0Y19o YXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9IRE1JKSkgeworCQlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShhdWRfbmN0cyk7IGkrKykgeworCQkJaWYgKChyYXRlID09IGF1ZF9u Y3RzW2ldLnNhbXBsZV9yYXRlKSAmJgorCQkJCShtb2RlLT5jbG9jayA9PSBhdWRfbmN0c1tpXS5j bG9jaykpIHsKKwkJCQlyZXR1cm4gYXVkX25jdHNbaV0ubjsKKwkJCX0KKwkJfQorCX0KKworCWlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkgewor CQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbm0pOyBpKyspIHsKKwkJCWlmICgocmF0 ZSA9PSBhdWRfbm1baV0uc2FtcGxlX3JhdGUpICYmCisJCQkJKG1vZGUtPmNsb2NrID09IGF1ZF9u bVtpXS5jbG9jaykpIHsKKwkJCQlyZXR1cm4gYXVkX25tW2ldLm47CisJCQl9CisJCX0KKwl9CisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2dldF9tKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAorCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUsIGludCByYXRlKQogewogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo YXVkX25jdHMpOyBpKyspIHsKLQkJaWYgKChyYXRlID09IGF1ZF9uY3RzW2ldLnNhbXBsZV9yYXRl KSAmJgotCQkJKG1vZGUtPmNsb2NrID09IGF1ZF9uY3RzW2ldLmNsb2NrKSkgewotCQkJcmV0dXJu IGF1ZF9uY3RzW2ldLm47CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJ TlRFTF9PVVRQVVRfRFApKSB7CisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1ZF9ubSk7 IGkrKykgeworCQkJaWYgKChyYXRlID09IGF1ZF9ubVtpXS5zYW1wbGVfcmF0ZSkgJiYKKwkJCQko bW9kZS0+Y2xvY2sgPT0gYXVkX25tW2ldLmNsb2NrKSkgeworCQkJCXJldHVybiBhdWRfbm1baV0u bTsKKwkJCX0KIAkJfQogCX0KKwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdWludDMyX3QgYXVk aW9fY29uZmlnX3NldHVwX25fcmVnKGludCBuLCB1aW50MzJfdCB2YWwpCitzdGF0aWMgdWludDMy X3QgYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJ CQkgaW50IG4sIHVpbnQzMl90IHZhbCkKIHsKIAlpbnQgbl9sb3csIG5fdXA7CiAJdWludDMyX3Qg dG1wID0gdmFsOwpAQCAtMTQ1LDYgKzE5MSwyMyBAQCBzdGF0aWMgdWludDMyX3QgYXVkaW9fY29u ZmlnX3NldHVwX25fcmVnKGludCBuLCB1aW50MzJfdCB2YWwpCiAJdG1wIHw9ICgobl91cCA8PCBB VURfQ09ORklHX1VQUEVSX05fU0hJRlQpIHwKIAkJCShuX2xvdyA8PCBBVURfQ09ORklHX0xPV0VS X05fU0hJRlQpIHwKIAkJCUFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRSk7CisJaWYgKGludGVsX2Ny dGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRFApKQorCQl0bXAgfD0gQVVE X0NPTkZJR19OX1ZBTFVFX0lOREVYOworCXJldHVybiB0bXA7Cit9CisKK3N0YXRpYyB1aW50MzJf dCBhdWRpb19jb25maWdfc2V0dXBfbV9yZWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCisJCQkJ CSBpbnQgbSwgdWludDMyX3QgdmFsKQoreworCXVpbnQzMl90IHRtcCA9IHZhbDsKKworCWlmICgh aW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpCisJCXJl dHVybiAwOworCisJdG1wIHw9IG07CisJdG1wIHw9IEFVRF9NX0NUU19NX1ZBTFVFX0lOREVYOwor CXRtcCB8PSBBVURfTV9DVFNfTV9QUk9HX0VOQUJMRTsKKwogCXJldHVybiB0bXA7CiB9CiAKQEAg LTE1Niw2ICsyMTksMTAgQEAgc3RhdGljIGJvb2wgYXVkaW9fcmF0ZV9uZWVkX3Byb2coc3RydWN0 IGludGVsX2NydGMgKmNydGMsCiAJCSAobW9kZS0+Y2xvY2sgPT0gVE1EU18yOTZNKSkgJiYKIAkJ aW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9IRE1JKSkKIAkJ cmV0dXJuIHRydWU7CisJZWxzZSBpZiAoKChtb2RlLT5jbG9jayA9PSBMQ181MzNNKSB8fAorCQkg ICAobW9kZS0+Y2xvY2sgPT0gTENfMTQ4TSkpICYmCisJCSAgaW50ZWxfY3J0Y19oYXNfdHlwZShj cnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpCisJCXJldHVybiB0cnVlOwogCWVsc2UKIAkJ cmV0dXJuIGZhbHNlOwogfQpAQCAtMjg3LDcgKzM1NCw3IEBAIHN0YXRpYyB2b2lkIGhzd19hdWRp b19jb2RlY19lbmFibGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9CiAJCWVuY190b19kaWdfcG9ydCgm ZW5jb2Rlci0+YmFzZSk7CiAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsK LQl1aW50MzJfdCB0bXA7CisJdWludDMyX3QgdG1wLCBtOwogCWludCBsZW4sIGk7CiAJaW50IG4s IHJhdGU7CiAKQEAgLTM0MywxNSArNDEwLDI1IEBAIHN0YXRpYyB2b2lkIGhzd19hdWRpb19jb2Rl Y19lbmFibGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCURSTV9FUlJPUigi aW52YWxpZCBwb3J0OiAlZFxuIiwgcG9ydCk7CiAJCQlyYXRlID0gMDsKIAkJfQotCQluID0gYXVk aW9fY29uZmlnX2dldF9uKGFkanVzdGVkX21vZGUsIHJhdGUpOworCQluID0gYXVkaW9fY29uZmln X2dldF9uKGludGVsX2NydGMsIGFkanVzdGVkX21vZGUsIHJhdGUpOwogCQlpZiAobiAhPSAwKQot CQkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKG4sIHRtcCk7CisJCQl0bXAgPSBhdWRp b19jb25maWdfc2V0dXBfbl9yZWcoaW50ZWxfY3J0YywgbiwgdG1wKTsKIAkJZWxzZQogCQkJRFJN X0RFQlVHX0tNUygibm8gc3VpdGFibGUgTiB2YWx1ZSBpcyBmb3VuZFxuIik7CiAJfQogCiAJSTkx NV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKIAorCS8qIHNldHVwIG0gdmFsdWUgZm9y IERQICovCisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoaW50ZWxfY3J0Yy0+Y29uZmlnLCBJTlRF TF9PVVRQVVRfRFApKSB7CisJCW0gPSBhdWRpb19jb25maWdfZ2V0X20oaW50ZWxfY3J0YywgYWRq dXN0ZWRfbW9kZSwgcmF0ZSk7CisJCWlmIChtICE9IDApIHsKKwkJCXRtcCA9IEk5MTVfUkVBRChI U1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7CisJCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBf bV9yZWcoaW50ZWxfY3J0YywgbSwgdG1wKTsKKwkJCUk5MTVfV1JJVEUoSFNXX0FVRF9NX0NUU19F TkFCTEUocGlwZSksIHRtcCk7CisJCX0KKwl9CisKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5h dl9tdXRleCk7CiB9CiAKQEAgLTYzNyw3ICs3MTQsNyBAQCBzdGF0aWMgaW50IGk5MTVfYXVkaW9f Y29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGU7CiAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29t cCA9IGRldl9wcml2LT5hdWRpb19jb21wb25lbnQ7CiAJZW51bSBwaXBlIHBpcGUgPSBJTlZBTElE X1BJUEU7Ci0JdTMyIHRtcDsKKwl1MzIgdG1wLCBtOwogCWludCBuOwogCWludCBlcnIgPSAwOwog CkBAIC02NDUsNyArNzIyLDggQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5j X2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAogCWlmICghSVNfU0tZTEFLRShkZXZfcHJp dikgJiYKIAkgICAgIUlTX0tBQllMQUtFKGRldl9wcml2KSAmJgogCSAgICAhSVNfQlJPQURXRUxM KGRldl9wcml2KSAmJgotCSAgICAhSVNfSEFTV0VMTChkZXZfcHJpdikpCisJICAgICFJU19IQVNX RUxMKGRldl9wcml2KSAmJgorCSAgICAhSVNfQlJPWFRPTihkZXZfcHJpdikpCiAJCXJldHVybiAw OwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsKQEAgLTY1Myw3ICs3MzEsOCBA QCBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsCiAJaW50ZWxfZW5jb2RlciA9IGRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9y dF07CiAJLyogaW50ZWxfZW5jb2RlciBtaWdodCBiZSBOVUxMIGZvciBEUCBNU1QgKi8KIAlpZiAo IWludGVsX2VuY29kZXIgfHwgIWludGVsX2VuY29kZXItPmJhc2UuY3J0YyB8fAotCSAgICBpbnRl bF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKSB7CisJICAgICgoaW50ZWxfZW5j b2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgJiYKKwkgICAgIChpbnRlbF9lbmNvZGVy LT50eXBlICE9IElOVEVMX09VVFBVVF9EUCkpKSB7CiAJCURSTV9ERUJVR19LTVMoIm5vIHZhbGlk IHBvcnQgJWNcbiIsIHBvcnRfbmFtZShwb3J0KSk7CiAJCWVyciA9IC1FTk9ERVY7CiAJCWdvdG8g dW5sb2NrOwpAQCAtNjgxLDcgKzc2MCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25l bnRfc3luY19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJZ290byB1bmxvY2s7CiAJ fQogCi0JbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihtb2RlLCByYXRlKTsKKwluID0gYXVkaW9fY29u ZmlnX2dldF9uKGNydGMsIG1vZGUsIHJhdGUpOwogCWlmIChuID09IDApIHsKIAkJRFJNX0RFQlVH X0tNUygiVXNpbmcgYXV0b21hdGljIG1vZGUgZm9yIE4gdmFsdWUgb24gcG9ydCAlY1xuIiwKIAkJ CQkJICBwb3J0X25hbWUocG9ydCkpOwpAQCAtNjkzLDggKzc3MiwxNyBAQCBzdGF0aWMgaW50IGk5 MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAK IAkvKiAzLiBzZXQgdGhlIE4vQ1RTL00gKi8KIAl0bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9DRkco cGlwZSkpOwotCXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhuLCB0bXApOworCXRtcCA9 IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhjcnRjLCBuLCB0bXApOwogCUk5MTVfV1JJVEUoSFNX X0FVRF9DRkcocGlwZSksIHRtcCk7CisJLyogc2V0dXAgbSB2YWx1ZSBmb3IgRFAgKi8KKwlpZiAo aW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpIHsKKwkJ bSA9IGF1ZGlvX2NvbmZpZ19nZXRfbShjcnRjLCBtb2RlLCByYXRlKTsKKwkJaWYgKG0gPT0gMCkK KwkJCWdvdG8gdW5sb2NrOworCQl0bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9NX0NUU19FTkFCTEUo cGlwZSkpOworCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbV9yZWcoY3J0YywgbSwgdG1wKTsK KwkJSTkxNV9XUklURShIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSwgdG1wKTsKKwl9CiAKICB1 bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwotLSAKMS45LjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=