From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F88789EA6 for ; Wed, 27 Mar 2019 09:29:34 +0000 (UTC) From: Maarten Lankhorst Date: Wed, 27 Mar 2019 10:29:29 +0100 Message-Id: <20190327092930.6845-3-maarten.lankhorst@linux.intel.com> In-Reply-To: <20190327092930.6845-1-maarten.lankhorst@linux.intel.com> References: <20190327092930.6845-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/3] lib/igt_fb: Add support for Y410/Y416 formats, v4. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: WTQxMCBpcyBwYWNrZWQgd2l0aCBjb21wcmVzc2VkIGEgY2hhbm5lbCBhbmQgb25seSAzMiBicHAs IGxpa2UKMTAgYml0cyBSR0IgZm9ybWF0cy4gWTQxNiBpcyBhIHBhY2tlZCAxNiBiaXRzIHBlciBj b21wb25lbnQgZm9ybWF0LgoKQ2hhbmdlcyBzaW5jZSB2MToKLSBSZWJhc2Ugb24gdG9wIG9mIHVw c3RyZWFtIFlVViBjaGFuZ2VzLgpDaGFuZ2VzIHNpbmNlIHYyOgotIERpc2NhcmQgYWxwaGEgY2hh bm5lbCwgbm90IHVzZWQgdXBzdHJlYW0uCkNoYW5nZXMgc2luY2UgdjM6Ci0gSGFuZGxlIHRoZSBY VllVIGZvcm1hdHMgYW5kIFk0MXggZm9ybWF0cyBjb3JyZWN0bHkuCgpTaWduZWQtb2ZmLWJ5OiBN YWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgotLS0K IGxpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYyB8ICAgNiArCiBsaWIvaWd0X2ZiLmMgICAgICAgICAg ICAgfCAyNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAyIGZpbGVz IGNoYW5nZWQsIDI0NCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMgYi9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMKaW5k ZXggOWY5ZGMxNDM5ZWU0Li43ZGU2ZDVhYmQ2OTAgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY29sb3Jf ZW5jb2RpbmcuYworKysgYi9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMKQEAgLTE1NCw2ICsxNTQs MTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgewogCXsgRFJN X0ZPUk1BVF9ZMjEwLCA2NTQ3Mi5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwg NjE0NDAuZiB9LAogCXsgRFJNX0ZPUk1BVF9ZMjEyLCA2NTUyMC5mLCA0MDk2LmYsIDYwMTYwLmYs IDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAogCXsgRFJNX0ZPUk1BVF9ZMjE2LCA2NTUzNS5m LCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAorCXsgRFJNX0ZP Uk1BVF9ZNDEwLCAxMDIzLmYsIDY0LmYsIDk0MC5mLCA2NC5mLCA1MTIuZiwgOTYwLmYgfSwKKwl7 IERSTV9GT1JNQVRfWTQxMiwgNjU1MjAuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4 LmYsIDYxNDQwLmYgfSwKKwl7IERSTV9GT1JNQVRfWTQxNiwgNjU1MzUuZiwgNDA5Ni5mLCA2MDE2 MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKKwl7IERSTV9GT1JNQVRfWFZZVTIxMDEw MTAsIDEwMjMuZiwgNjQuZiwgOTQwLmYsIDY0LmYsIDUxMi5mLCA5NjAuZiB9LAorCXsgRFJNX0ZP Uk1BVF9YVllVMTJfMTYxNjE2MTYsIDY1NTIwLmYsIDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5mLCAz Mjc2OC5mLCA2MTQ0MC5mIH0sCisJeyBEUk1fRk9STUFUX1hWWVUxNjE2MTYxNiwgNjU1MzUuZiwg NDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKIH07CiAKIHN0YXRp YyBjb25zdCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0ICpsb29rdXBfZm91cmNjKHVpbnQz Ml90IGZvdXJjYykKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwppbmRl eCAxZTBiY2I5ZWEyY2QuLjJkNTU2ODdhN2FhMyAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5jCisr KyBiL2xpYi9pZ3RfZmIuYwpAQCAtMjIxLDYgKzIyMSwzNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGZvcm1hdF9kZXNjX3N0cnVjdCB7CiAJICAubnVtX3BsYW5lcyA9IDMsIC5wbGFuZV9icHAgPSB7 IDgsIDgsIDgsIH0sCiAJICAuaHN1YiA9IDIsIC52c3ViID0gMSwKIAl9LAorCXsgLm5hbWUgPSAi WTQxMCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9ZNDEwLAorCSAgLmNhaXJv X2lkID0gQ0FJUk9fRk9STUFUX1JHQkExMjhGLAorCSAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVf YnBwID0geyAzMiwgfSwKKwkgIC5oc3ViID0gMSwgLnZzdWIgPSAxLAorCX0sCisJeyAubmFtZSA9 ICJZNDEyIiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1k0MTIsCisJICAuY2Fp cm9faWQgPSBDQUlST19GT1JNQVRfUkdCQTEyOEYsCisJICAubnVtX3BsYW5lcyA9IDEsIC5wbGFu ZV9icHAgPSB7IDY0LCB9LAorCSAgLmhzdWIgPSAxLCAudnN1YiA9IDEsCisJfSwKKwl7IC5uYW1l ID0gIlk0MTYiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfWTQxNiwKKwkgIC5j YWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0JBMTI4RiwKKwkgIC5udW1fcGxhbmVzID0gMSwgLnBs YW5lX2JwcCA9IHsgNjQsIH0sCisJICAuaHN1YiA9IDEsIC52c3ViID0gMSwKKwl9LAorCXsgLm5h bWUgPSAiWFYzMCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9YVllVMjEwMTAx MCwKKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCisJICAubnVtX3BsYW5lcyA9 IDEsIC5wbGFuZV9icHAgPSB7IDMyLCB9LAorCSAgLmhzdWIgPSAxLCAudnN1YiA9IDEsCisJfSwK Kwl7IC5uYW1lID0gIlhWMzYiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfWFZZ VTEyXzE2MTYxNjE2LAorCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKKwkgIC5u dW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgNjQsIH0sCisJICAuaHN1YiA9IDEsIC52c3Vi ID0gMSwKKwl9LAorCXsgLm5hbWUgPSAiWFY0OCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJN X0ZPUk1BVF9YVllVMTYxNjE2MTYsCisJICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCOTZG LAorCSAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyA2NCwgfSwKKwkgIC5oc3ViID0g MSwgLnZzdWIgPSAxLAorCX0sCiAJeyAubmFtZSA9ICJQMDEwIiwgLmRlcHRoID0gLTEsIC5kcm1f aWQgPSBEUk1fRk9STUFUX1AwMTAsCiAJICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCOTZG LAogCSAgLm51bV9wbGFuZXMgPSAyLCAucGxhbmVfYnBwID0geyAxNiwgMzIgfSwKQEAgLTY4NCw2 ICs3MTQsMzMgQEAgc3RhdGljIHZvaWQgY2xlYXJfeXV2X2J1ZmZlcihzdHJ1Y3QgaWd0X2ZiICpm YikKIAkJCWZiLT5zdHJpZGVzWzBdICogZmItPnBsYW5lX2hlaWdodFswXSAvIHNpemVvZih3Y2hh cl90KSk7CiAJCWJyZWFrOwogCisJY2FzZSBEUk1fRk9STUFUX1hWWVUyMTAxMDEwOgorCWNhc2Ug RFJNX0ZPUk1BVF9ZNDEwOgorCQl3bWVtc2V0KHB0ciArIGZiLT5vZmZzZXRzWzBdLAorCQkJZnVs bF9yYW5nZSA/IDB4ZTAwMDAyMDAgOiAweGUwMDEwMjAwLAorCQlmYi0+c3RyaWRlc1swXSAqIGZi LT5wbGFuZV9oZWlnaHRbMF0gLyBzaXplb2Yod2NoYXJfdCkpOworCQlicmVhazsKKworCWNhc2Ug RFJNX0ZPUk1BVF9YVllVMTJfMTYxNjE2MTY6CisJY2FzZSBEUk1fRk9STUFUX1hWWVUxNjE2MTYx NjoKKwljYXNlIERSTV9GT1JNQVRfWTQxMjoKKwljYXNlIERSTV9GT1JNQVRfWTQxNjogeworCQlz dHJ1Y3QgYXl1djE2IHsgdWludDE2X3QgdSwgeSwgdiwgYTsgfTsKKwkJY29uc3Qgc3RydWN0IGF5 dXYxNiBwaXhlbCA9IHsKKwkJCS5hID0gMHhmZmZmLAorCQkJLnYgPSBmdWxsX3JhbmdlID8gMCA6 IDB4MTAwMCwKKwkJCS55ID0gMHg4MDAwLAorCQkJLnUgPSBmdWxsX3JhbmdlID8gMCA6IDB4MTAw MAorCQl9OworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgZmItPnBsYW5lX2hlaWdodFswXTsgaSsr KSB7CisJCQlzdHJ1Y3QgYXl1djE2ICpjdXIgPSBwdHIgKyBmYi0+b2Zmc2V0c1swXSArIGZiLT5z dHJpZGVzWzBdICogaTsKKworCQkJZm9yIChpbnQgaiA9IDA7IGogPCBmYi0+cGxhbmVfd2lkdGhb MF07IGorKykKKwkJCQkqY3VyKysgPSBwaXhlbDsKKwkJfQorCQlicmVhazsKKwkJfQogCX0KIAog CWlndF9mYl91bm1hcF9idWZmZXIoZmIsIHB0cik7CkBAIC0xODk3LDEwICsxOTU0LDExIEBAIHN0 YXRpYyB2b2lkIGNvbnZlcnRfc3JjX3B1dChjb25zdCBzdHJ1Y3QgZmJfY29udmVydCAqY3Z0LAog fQogCiBzdHJ1Y3QgeXV2X3BhcmFtZXRlcnMgewotCXVuc2lnbmVkCXlfaW5jOworCXVuc2lnbmVk CWF5X2luYzsKIAl1bnNpZ25lZAl1dl9pbmM7Ci0JdW5zaWduZWQJeV9zdHJpZGU7CisJdW5zaWdu ZWQJYXlfc3RyaWRlOwogCXVuc2lnbmVkCXV2X3N0cmlkZTsKKwl1bnNpZ25lZAlhX29mZnNldDsK IAl1bnNpZ25lZAl5X29mZnNldDsKIAl1bnNpZ25lZAl1X29mZnNldDsKIAl1bnNpZ25lZAl2X29m ZnNldDsKQEAgLTE5MTgsNyArMTk3Niw3IEBAIHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVy cyhzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCiAJY2Fz ZSBEUk1fRk9STUFUX1AwMTA6CiAJY2FzZSBEUk1fRk9STUFUX1AwMTI6CiAJY2FzZSBEUk1fRk9S TUFUX1AwMTY6Ci0JCXBhcmFtcy0+eV9pbmMgPSAxOworCQlwYXJhbXMtPmF5X2luYyA9IDE7CiAJ CXBhcmFtcy0+dXZfaW5jID0gMjsKIAkJYnJlYWs7CiAKQEAgLTE5MjYsNyArMTk4NCw3IEBAIHN0 YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IHl1 dl9wYXJhbWV0ZXJzICpwYXJhbXMpCiAJY2FzZSBEUk1fRk9STUFUX1lVVjQyMjoKIAljYXNlIERS TV9GT1JNQVRfWVZVNDIwOgogCWNhc2UgRFJNX0ZPUk1BVF9ZVlU0MjI6Ci0JCXBhcmFtcy0+eV9p bmMgPSAxOworCQlwYXJhbXMtPmF5X2luYyA9IDE7CiAJCXBhcmFtcy0+dXZfaW5jID0gMTsKIAkJ YnJlYWs7CiAKQEAgLTE5MzcsMTIgKzE5OTUsMTYgQEAgc3RhdGljIHZvaWQgZ2V0X3l1dl9wYXJh bWV0ZXJzKHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgeXV2X3BhcmFtZXRlcnMgKnBhcmFtcykK IAljYXNlIERSTV9GT1JNQVRfWTIxMDoKIAljYXNlIERSTV9GT1JNQVRfWTIxMjoKIAljYXNlIERS TV9GT1JNQVRfWTIxNjoKLQkJcGFyYW1zLT55X2luYyA9IDI7CisJCXBhcmFtcy0+YXlfaW5jID0g MjsKIAkJcGFyYW1zLT51dl9pbmMgPSA0OwogCQlicmVhazsKIAorCWNhc2UgRFJNX0ZPUk1BVF9Y VllVMTJfMTYxNjE2MTY6CisJY2FzZSBEUk1fRk9STUFUX1hWWVUxNjE2MTYxNjoKKwljYXNlIERS TV9GT1JNQVRfWTQxMjoKKwljYXNlIERSTV9GT1JNQVRfWTQxNjoKIAljYXNlIERSTV9GT1JNQVRf WFlVVjg4ODg6Ci0JCXBhcmFtcy0+eV9pbmMgPSA0OworCQlwYXJhbXMtPmF5X2luYyA9IDQ7CiAJ CXBhcmFtcy0+dXZfaW5jID0gNDsKIAkJYnJlYWs7CiAJfQpAQCAtMTk1OSw3ICsyMDIxLDcgQEAg c3RhdGljIHZvaWQgZ2V0X3l1dl9wYXJhbWV0ZXJzKHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3Qg eXV2X3BhcmFtZXRlcnMgKnBhcmFtcykKIAljYXNlIERSTV9GT1JNQVRfUDAxMDoKIAljYXNlIERS TV9GT1JNQVRfUDAxMjoKIAljYXNlIERSTV9GT1JNQVRfUDAxNjoKLQkJcGFyYW1zLT55X3N0cmlk ZSA9IGZiLT5zdHJpZGVzWzBdOworCQlwYXJhbXMtPmF5X3N0cmlkZSA9IGZiLT5zdHJpZGVzWzBd OwogCQlwYXJhbXMtPnV2X3N0cmlkZSA9IGZiLT5zdHJpZGVzWzFdOwogCQlicmVhazsKIApAQCAt MTk3MSw3ICsyMDMzLDExIEBAIHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3Qg aWd0X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCiAJY2FzZSBEUk1fRk9S TUFUX1kyMTI6CiAJY2FzZSBEUk1fRk9STUFUX1kyMTY6CiAJY2FzZSBEUk1fRk9STUFUX1hZVVY4 ODg4OgotCQlwYXJhbXMtPnlfc3RyaWRlID0gZmItPnN0cmlkZXNbMF07CisJY2FzZSBEUk1fRk9S TUFUX1hWWVUxMl8xNjE2MTYxNjoKKwljYXNlIERSTV9GT1JNQVRfWFZZVTE2MTYxNjE2OgorCWNh c2UgRFJNX0ZPUk1BVF9ZNDEyOgorCWNhc2UgRFJNX0ZPUk1BVF9ZNDE2OgorCQlwYXJhbXMtPmF5 X3N0cmlkZSA9IGZiLT5zdHJpZGVzWzBdOwogCQlwYXJhbXMtPnV2X3N0cmlkZSA9IGZiLT5zdHJp ZGVzWzBdOwogCQlicmVhazsKIAl9CkBAIC0yMDQ1LDYgKzIxMTEsMTYgQEAgc3RhdGljIHZvaWQg Z2V0X3l1dl9wYXJhbWV0ZXJzKHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgeXV2X3BhcmFtZXRl cnMgKnBhcmFtcykKIAkJcGFyYW1zLT52X29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsgNjsKIAkJ YnJlYWs7CiAKKwljYXNlIERSTV9GT1JNQVRfWFZZVTEyXzE2MTYxNjE2OgorCWNhc2UgRFJNX0ZP Uk1BVF9YVllVMTYxNjE2MTY6CisJY2FzZSBEUk1fRk9STUFUX1k0MTI6CisJY2FzZSBEUk1fRk9S TUFUX1k0MTY6CisJCXBhcmFtcy0+YV9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSArIDY7CisJCXBh cmFtcy0+eV9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSArIDI7CisJCXBhcmFtcy0+dV9vZmZzZXQg PSBmYi0+b2Zmc2V0c1swXTsKKwkJcGFyYW1zLT52X29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsg NDsKKwkJYnJlYWs7CisKIAljYXNlIERSTV9GT1JNQVRfWFlVVjg4ODg6CiAJCXBhcmFtcy0+eV9v ZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSArIDE7CiAJCXBhcmFtcy0+dV9vZmZzZXQgPSBmYi0+b2Zm c2V0c1swXSArIDI7CkBAIC0yMDk2LDcgKzIxNzIsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3l1 dl90b19yZ2IyNChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQkJd3JpdGVfcmdiKHJnYl90bXAs ICZyZ2IpOwogCiAJCQlyZ2JfdG1wICs9IGJwcDsKLQkJCXlfdG1wICs9IHBhcmFtcy55X2luYzsK KwkJCXlfdG1wICs9IHBhcmFtcy5heV9pbmM7CiAKIAkJCWlmICgoc3JjX2ZtdC0+aHN1YiA9PSAx KSB8fCAoaiAlIHNyY19mbXQtPmhzdWIpKSB7CiAJCQkJdV90bXAgKz0gcGFyYW1zLnV2X2luYzsK QEAgLTIxMDUsNyArMjE4MSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2X3RvX3JnYjI0KHN0 cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJCX0KIAogCQlyZ2IyNCArPSByZ2IyNF9zdHJpZGU7Ci0J CXkgKz0gcGFyYW1zLnlfc3RyaWRlOworCQl5ICs9IHBhcmFtcy5heV9zdHJpZGU7CiAKIAkJaWYg KChzcmNfZm10LT52c3ViID09IDEpIHx8IChpICUgc3JjX2ZtdC0+dnN1YikpIHsKIAkJCXUgKz0g cGFyYW1zLnV2X3N0cmlkZTsKQEAgLTIxNTYsNyArMjIzMiw3IEBAIHN0YXRpYyB2b2lkIGNvbnZl cnRfcmdiMjRfdG9feXV2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJCQlyZ2JfdG1wICs9IGJw cDsKIAogCQkJKnlfdG1wID0geXV2LmRbMF07Ci0JCQl5X3RtcCArPSBwYXJhbXMueV9pbmM7CisJ CQl5X3RtcCArPSBwYXJhbXMuYXlfaW5jOwogCiAJCQlpZiAoKGkgJSBkc3RfZm10LT52c3ViKSB8 fCAoaiAlIGRzdF9mbXQtPmhzdWIpKQogCQkJCWNvbnRpbnVlOwpAQCAtMjE5Myw3ICsyMjY5LDcg QEAgc3RhdGljIHZvaWQgY29udmVydF9yZ2IyNF90b195dXYoc3RydWN0IGZiX2NvbnZlcnQgKmN2 dCkKIAkJfQogCiAJCXJnYjI0ICs9IHJnYjI0X3N0cmlkZTsKLQkJeSArPSBwYXJhbXMueV9zdHJp ZGU7CisJCXkgKz0gcGFyYW1zLmF5X3N0cmlkZTsKIAogCQlpZiAoKGkgJSBkc3RfZm10LT52c3Vi KSA9PSAoZHN0X2ZtdC0+dnN1YiAtIDEpKSB7CiAJCQl1ICs9IHBhcmFtcy51dl9zdHJpZGU7CkBA IC0yMjE3LDEzICsyMjkzLDEzIEBAIHN0YXRpYyB2b2lkIHdyaXRlX3JnYmYoZmxvYXQgKnJnYjI0 LCBjb25zdCBzdHJ1Y3QgaWd0X3ZlYzQgKnJnYikKIAlyZ2IyNFsyXSA9IHJnYi0+ZFsyXTsKIH0K IAotc3RhdGljIHZvaWQgY29udmVydF95dXYxNl90b19mbG9hdChzdHJ1Y3QgZmJfY29udmVydCAq Y3Z0KQorc3RhdGljIHZvaWQgY29udmVydF95dXYxNl90b19mbG9hdChzdHJ1Y3QgZmJfY29udmVy dCAqY3Z0LCBib29sIGFscGhhKQogewogCWNvbnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3Qg KnNyY19mbXQgPQogCQlsb29rdXBfZHJtX2Zvcm1hdChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCk7 CiAJaW50IGksIGo7Ci0JdWludDhfdCBmcHAgPSAzOwotCXVpbnQxNl90ICp5LCAqdSwgKnY7CisJ dWludDhfdCBmcHAgPSBhbHBoYSA/IDQgOiAzOworCXVpbnQxNl90ICphLCAqeSwgKnUsICp2Owog CWZsb2F0ICpwdHIgPSBjdnQtPmRzdC5wdHI7CiAJdW5zaWduZWQgaW50IGZsb2F0X3N0cmlkZSA9 IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOwogCXN0cnVjdCBpZ3RfbWF0 NCBtID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQsCkBA IC0yMjQyLDExICsyMzE4LDEzIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9fZmxvYXQo c3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIAkJICAgIShwYXJhbXMudV9vZmZzZXQgJSBzaXplb2Yo KmJ1ZikpICYmCiAJCSAgICEocGFyYW1zLnZfb2Zmc2V0ICUgc2l6ZW9mKCpidWYpKSk7CiAKKwlh ID0gYnVmICsgcGFyYW1zLmFfb2Zmc2V0IC8gc2l6ZW9mKCpidWYpOwogCXkgPSBidWYgKyBwYXJh bXMueV9vZmZzZXQgLyBzaXplb2YoKmJ1Zik7CiAJdSA9IGJ1ZiArIHBhcmFtcy51X29mZnNldCAv IHNpemVvZigqYnVmKTsKIAl2ID0gYnVmICsgcGFyYW1zLnZfb2Zmc2V0IC8gc2l6ZW9mKCpidWYp OwogCiAJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgeworCQljb25z dCB1aW50MTZfdCAqYV90bXAgPSBhOwogCQljb25zdCB1aW50MTZfdCAqeV90bXAgPSB5OwogCQlj b25zdCB1aW50MTZfdCAqdV90bXAgPSB1OwogCQljb25zdCB1aW50MTZfdCAqdl90bXAgPSB2OwpA QCAtMjI2Myw4ICsyMzQxLDEzIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9fZmxvYXQo c3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIAkJCXJnYiA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZt LCAmeXV2KTsKIAkJCXdyaXRlX3JnYmYocmdiX3RtcCwgJnJnYik7CiAKKwkJCWlmIChhbHBoYSkg eworCQkJCXJnYl90bXBbM10gPSAoKGZsb2F0KSphX3RtcCkgLyA2NTUzNS5mOworCQkJCWFfdG1w ICs9IHBhcmFtcy5heV9pbmM7CisJCQl9CisKIAkJCXJnYl90bXAgKz0gZnBwOwotCQkJeV90bXAg Kz0gcGFyYW1zLnlfaW5jOworCQkJeV90bXAgKz0gcGFyYW1zLmF5X2luYzsKIAogCQkJaWYgKChz cmNfZm10LT5oc3ViID09IDEpIHx8IChqICUgc3JjX2ZtdC0+aHN1YikpIHsKIAkJCQl1X3RtcCAr PSBwYXJhbXMudXZfaW5jOwpAQCAtMjI3Myw3ICsyMzU2LDkgQEAgc3RhdGljIHZvaWQgY29udmVy dF95dXYxNl90b19mbG9hdChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQl9CiAKIAkJcHRyICs9 IGZsb2F0X3N0cmlkZTsKLQkJeSArPSBwYXJhbXMueV9zdHJpZGUgLyBzaXplb2YoKnkpOworCisJ CWEgKz0gcGFyYW1zLmF5X3N0cmlkZSAvIHNpemVvZigqYSk7CisJCXkgKz0gcGFyYW1zLmF5X3N0 cmlkZSAvIHNpemVvZigqeSk7CiAKIAkJaWYgKChzcmNfZm10LT52c3ViID09IDEpIHx8IChpICUg c3JjX2ZtdC0+dnN1YikpIHsKIAkJCXUgKz0gcGFyYW1zLnV2X3N0cmlkZSAvIHNpemVvZigqdSk7 CkBAIC0yMjg0LDE0ICsyMzY5LDE0IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9fZmxv YXQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIAljb252ZXJ0X3NyY19wdXQoY3Z0LCBidWYpOwog fQogCi1zdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3l1djE2KHN0cnVjdCBmYl9jb252ZXJ0 ICpjdnQpCitzdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3l1djE2KHN0cnVjdCBmYl9jb252 ZXJ0ICpjdnQsIGJvb2wgYWxwaGEpCiB7CiAJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVj dCAqZHN0X2ZtdCA9CiAJCWxvb2t1cF9kcm1fZm9ybWF0KGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0 KTsKIAlpbnQgaSwgajsKLQl1aW50MTZfdCAqeSwgKnUsICp2OworCXVpbnQxNl90ICphLCAqeSwg KnUsICp2OwogCWNvbnN0IGZsb2F0ICpwdHIgPSBjdnQtPnNyYy5wdHI7Ci0JdWludDhfdCBmcHAg PSAzOworCXVpbnQ4X3QgZnBwID0gYWxwaGEgPyA0IDogMzsKIAl1bnNpZ25lZCBmbG9hdF9zdHJp ZGUgPSBjdnQtPnNyYy5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsKIAlzdHJ1Y3QgaWd0 X21hdDQgbSA9IGlndF9yZ2JfdG9feWNiY3JfbWF0cml4KGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0 LAogCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0LApAQCAtMjMwMywxNiArMjM4OCwx OSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3l1djE2KHN0cnVjdCBmYl9jb252ZXJ0 ICpjdnQpCiAJCSAgIGlndF9mb3JtYXRfaXNfeXV2KGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0KSk7 CiAKIAlnZXRfeXV2X3BhcmFtZXRlcnMoY3Z0LT5kc3QuZmIsICZwYXJhbXMpOwotCWlndF9hc3Nl cnQoIShwYXJhbXMueV9vZmZzZXQgJSBzaXplb2YoKnkpKSAmJgorCWlndF9hc3NlcnQoIShwYXJh bXMuYV9vZmZzZXQgJSBzaXplb2YoKmEpKSAmJgorCQkgICAhKHBhcmFtcy55X29mZnNldCAlIHNp emVvZigqeSkpICYmCiAJCSAgICEocGFyYW1zLnVfb2Zmc2V0ICUgc2l6ZW9mKCp1KSkgJiYKIAkJ ICAgIShwYXJhbXMudl9vZmZzZXQgJSBzaXplb2YoKnYpKSk7CiAKKwlhID0gY3Z0LT5kc3QucHRy ICsgcGFyYW1zLmFfb2Zmc2V0OwogCXkgPSBjdnQtPmRzdC5wdHIgKyBwYXJhbXMueV9vZmZzZXQ7 CiAJdSA9IGN2dC0+ZHN0LnB0ciArIHBhcmFtcy51X29mZnNldDsKIAl2ID0gY3Z0LT5kc3QucHRy ICsgcGFyYW1zLnZfb2Zmc2V0OwogCiAJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWln aHQ7IGkrKykgewogCQljb25zdCBmbG9hdCAqcmdiX3RtcCA9IHB0cjsKKwkJdWludDE2X3QgKmFf dG1wID0gYTsKIAkJdWludDE2X3QgKnlfdG1wID0geTsKIAkJdWludDE2X3QgKnVfdG1wID0gdTsK IAkJdWludDE2X3QgKnZfdG1wID0gdjsKQEAgLTIzMjUsMTAgKzI0MTMsMTUgQEAgc3RhdGljIHZv aWQgY29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQkJcmVh ZF9yZ2JmKCZyZ2IsIHJnYl90bXApOwogCQkJeXV2ID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0s ICZyZ2IpOwogCisJCQlpZiAoYWxwaGEpIHsKKwkJCQkqYV90bXAgPSByZ2JfdG1wWzNdICogNjU1 MzUuZiArIC41ZjsKKwkJCQlhX3RtcCArPSBwYXJhbXMuYXlfaW5jOworCQkJfQorCiAJCQlyZ2Jf dG1wICs9IGZwcDsKIAogCQkJKnlfdG1wID0geXV2LmRbMF07Ci0JCQl5X3RtcCArPSBwYXJhbXMu eV9pbmM7CisJCQl5X3RtcCArPSBwYXJhbXMuYXlfaW5jOwogCiAJCQlpZiAoKGkgJSBkc3RfZm10 LT52c3ViKSB8fCAoaiAlIGRzdF9mbXQtPmhzdWIpKQogCQkJCWNvbnRpbnVlOwpAQCAtMjM2NSw3 ICsyNDU4LDggQEAgc3RhdGljIHZvaWQgY29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJf Y29udmVydCAqY3Z0KQogCQl9CiAKIAkJcHRyICs9IGZsb2F0X3N0cmlkZTsKLQkJeSArPSBwYXJh bXMueV9zdHJpZGUgLyBzaXplb2YoKnkpOworCQlhICs9IHBhcmFtcy5heV9zdHJpZGUgLyBzaXpl b2YoKmEpOworCQl5ICs9IHBhcmFtcy5heV9zdHJpZGUgLyBzaXplb2YoKnkpOwogCiAJCWlmICgo aSAlIGRzdF9mbXQtPnZzdWIpID09IChkc3RfZm10LT52c3ViIC0gMSkpIHsKIAkJCXUgKz0gcGFy YW1zLnV2X3N0cmlkZSAvIHNpemVvZigqdSk7CkBAIC0yMzc0LDYgKzI0NjgsOTUgQEAgc3RhdGlj IHZvaWQgY29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCX0K IH0KIAorc3RhdGljIHZvaWQgY29udmVydF9ZNDEwX3RvX2Zsb2F0KHN0cnVjdCBmYl9jb252ZXJ0 ICpjdnQsIGJvb2wgYWxwaGEpCit7CisJaW50IGksIGo7CisJY29uc3QgdWludDMyX3QgKnV5djsK Kwl1aW50MzJfdCAqYnVmOworCWZsb2F0ICpwdHIgPSBjdnQtPmRzdC5wdHI7CisJdW5zaWduZWQg aW50IGZsb2F0X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIp OworCXVuc2lnbmVkIGludCB1eXZfc3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlkZXNbMF0gLyBz aXplb2YoKnV5dik7CisJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJp eChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCwKKwkJCQkJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zv cm1hdCwKKwkJCQkJCSAgICBjdnQtPnNyYy5mYi0+Y29sb3JfZW5jb2RpbmcsCisJCQkJCQkgICAg Y3Z0LT5zcmMuZmItPmNvbG9yX3JhbmdlKTsKKwl1bnNpZ25lZCBicHAgPSBhbHBoYSA/IDQgOiAz OworCisJaWd0X2Fzc2VydCgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9Z NDEwIHx8CisJCSAgICBjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1hWWVUy MTAxMDEwKSAmJgorCQkgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZM T0FUKTsKKworCXV5diA9IGJ1ZiA9IGNvbnZlcnRfc3JjX2dldChjdnQpOworCisJZm9yIChpID0g MDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgeworCQlmb3IgKGogPSAwOyBqIDwgY3Z0 LT5kc3QuZmItPndpZHRoOyBqKyspIHsKKwkJCS8qIENvbnZlcnQgMngxIHBpeGVsIGJsb2NrcyAq LworCQkJc3RydWN0IGlndF92ZWM0IHl1djsKKwkJCXN0cnVjdCBpZ3RfdmVjNCByZ2I7CisKKwkJ CXl1di5kWzBdID0gdXl2W2pdICYgMHgzZmY7CisJCQl5dXYuZFsxXSA9ICh1eXZbal0gPj4gMTAp ICYgMHgzZmY7CisJCQl5dXYuZFsyXSA9ICh1eXZbal0gPj4gMjApICYgMHgzZmY7CisJCQl5dXYu ZFszXSA9IDEuZjsKKworCQkJcmdiID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXYpOwor CisJCQl3cml0ZV9yZ2JmKCZwdHJbaiAqIGJwcF0sICZyZ2IpOworCQkJaWYgKGFscGhhKQorCQkJ CXB0cltqICogYnBwICsgM10gPSAoZmxvYXQpKHV5dltqXSA+PiAzMCkgLyAzLmY7CisJCX0KKwor CQlwdHIgKz0gZmxvYXRfc3RyaWRlOworCQl1eXYgKz0gdXl2X3N0cmlkZTsKKwl9CisKKwljb252 ZXJ0X3NyY19wdXQoY3Z0LCBidWYpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3Rv X1k0MTAoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCwgYm9vbCBhbHBoYSkKK3sKKwlpbnQgaSwgajsK Kwl1aW50MzJfdCAqdXl2ID0gY3Z0LT5kc3QucHRyOworCWNvbnN0IGZsb2F0ICpwdHIgPSBjdnQt PnNyYy5wdHI7CisJdW5zaWduZWQgZmxvYXRfc3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlkZXNb MF0gLyBzaXplb2YoKnB0cik7CisJdW5zaWduZWQgdXl2X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5z dHJpZGVzWzBdIC8gc2l6ZW9mKCp1eXYpOworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90 b195Y2Jjcl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5k c3QuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5n LAorCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5jb2xvcl9yYW5nZSk7CisJdW5zaWduZWQgYnBwID0g YWxwaGEgPyA0IDogMzsKKworCWlndF9hc3NlcnQoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0g SUdUX0ZPUk1BVF9GTE9BVCAmJgorCQkgICAoY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQgPT0gRFJN X0ZPUk1BVF9ZNDEwIHx8CisJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9S TUFUX1hWWVUyMTAxMDEwKSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5kc3QuZmItPmhlaWdo dDsgaSsrKSB7CisJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGorKykgewor CQkJc3RydWN0IGlndF92ZWM0IHJnYjsKKwkJCXN0cnVjdCBpZ3RfdmVjNCB5dXY7CisJCQl1aW50 OF90IGEgPSAwOworCQkJdWludDE2X3QgeSwgY2IsIGNyOworCisJCQlyZWFkX3JnYmYoJnJnYiwg JnB0cltqICogYnBwXSk7CisJCQlpZiAoYWxwaGEpCisJCQkJIGEgPSBwdHJbaiAqIGJwcCArIDNd ICogMy5mICsgLjVmOworCisJCQl5dXYgPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnJnYik7 CisJCQljciA9IHl1di5kWzBdOworCQkJeSA9IHl1di5kWzFdOworCQkJY2IgPSB5dXYuZFsyXTsK KworCQkJdXl2W2pdID0gKChjciAmIDB4M2ZmKSA8PCAwKSB8CisJCQkJICAoKHkgJiAweDNmZikg PDwgMTApIHwKKwkJCQkgICgoY2IgJiAweDNmZikgPDwgMjApIHwKKwkJCQkgIChhIDw8IDMwKTsK KwkJfQorCisJCXB0ciArPSBmbG9hdF9zdHJpZGU7CisJCXV5diArPSB1eXZfc3RyaWRlOworCX0K K30KKwogc3RhdGljIHZvaWQgY29udmVydF9waXhtYW4oc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkK IHsKIAlwaXhtYW5fZm9ybWF0X2NvZGVfdCBzcmNfcGl4bWFuID0gZHJtX2Zvcm1hdF90b19waXht YW4oY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpOwpAQCAtMjQ2Myw3ICsyNjQ2LDE5IEBAIHN0YXRp YyB2b2lkIGZiX2NvbnZlcnQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIAkJY2FzZSBEUk1fRk9S TUFUX1kyMTA6CiAJCWNhc2UgRFJNX0ZPUk1BVF9ZMjEyOgogCQljYXNlIERSTV9GT1JNQVRfWTIx NjoKLQkJCWNvbnZlcnRfeXV2MTZfdG9fZmxvYXQoY3Z0KTsKKwkJY2FzZSBEUk1fRk9STUFUX1hW WVUxMl8xNjE2MTYxNjoKKwkJY2FzZSBEUk1fRk9STUFUX1hWWVUxNjE2MTYxNjoKKwkJCWNvbnZl cnRfeXV2MTZfdG9fZmxvYXQoY3Z0LCBmYWxzZSk7CisJCQlyZXR1cm47CisJCWNhc2UgRFJNX0ZP Uk1BVF9ZNDEwOgorCQkJY29udmVydF9ZNDEwX3RvX2Zsb2F0KGN2dCwgdHJ1ZSk7CisJCQlyZXR1 cm47CisJCWNhc2UgRFJNX0ZPUk1BVF9YVllVMjEwMTAxMDoKKwkJCWNvbnZlcnRfWTQxMF90b19m bG9hdChjdnQsIGZhbHNlKTsKKwkJCXJldHVybjsKKwkJY2FzZSBEUk1fRk9STUFUX1k0MTI6CisJ CWNhc2UgRFJNX0ZPUk1BVF9ZNDE2OgorCQkJY29udmVydF95dXYxNl90b19mbG9hdChjdnQsIHRy dWUpOwogCQkJcmV0dXJuOwogCQl9CiAJfSBlbHNlIGlmIChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1h dCA9PSBJR1RfRk9STUFUX0ZMT0FUKSB7CkBAIC0yNDc0LDcgKzI2NjksMTkgQEAgc3RhdGljIHZv aWQgZmJfY29udmVydChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQljYXNlIERSTV9GT1JNQVRf WTIxMDoKIAkJY2FzZSBEUk1fRk9STUFUX1kyMTI6CiAJCWNhc2UgRFJNX0ZPUk1BVF9ZMjE2Ogot CQkJY29udmVydF9mbG9hdF90b195dXYxNihjdnQpOworCQljYXNlIERSTV9GT1JNQVRfWFZZVTEy XzE2MTYxNjE2OgorCQljYXNlIERSTV9GT1JNQVRfWFZZVTE2MTYxNjE2OgorCQkJY29udmVydF9m bG9hdF90b195dXYxNihjdnQsIGZhbHNlKTsKKwkJCXJldHVybjsKKwkJY2FzZSBEUk1fRk9STUFU X1k0MTA6CisJCQljb252ZXJ0X2Zsb2F0X3RvX1k0MTAoY3Z0LCB0cnVlKTsKKwkJCXJldHVybjsK KwkJY2FzZSBEUk1fRk9STUFUX1hWWVUyMTAxMDEwOgorCQkJY29udmVydF9mbG9hdF90b19ZNDEw KGN2dCwgZmFsc2UpOworCQkJcmV0dXJuOworCQljYXNlIERSTV9GT1JNQVRfWTQxMjoKKwkJY2Fz ZSBEUk1fRk9STUFUX1k0MTY6CisJCQljb252ZXJ0X2Zsb2F0X3RvX3l1djE2KGN2dCwgdHJ1ZSk7 CiAJCQlyZXR1cm47CiAJCX0KIAl9CkBAIC0yOTQxLDYgKzMxNDgsMTIgQEAgYm9vbCBpZ3RfZm9y bWF0X2lzX3l1dih1aW50MzJfdCBkcm1fZm9ybWF0KQogCWNhc2UgRFJNX0ZPUk1BVF9ZMjEwOgog CWNhc2UgRFJNX0ZPUk1BVF9ZMjEyOgogCWNhc2UgRFJNX0ZPUk1BVF9ZMjE2OgorCWNhc2UgRFJN X0ZPUk1BVF9YVllVMjEwMTAxMDoKKwljYXNlIERSTV9GT1JNQVRfWFZZVTEyXzE2MTYxNjE2Ogor CWNhc2UgRFJNX0ZPUk1BVF9YVllVMTYxNjE2MTY6CisJY2FzZSBEUk1fRk9STUFUX1k0MTA6CisJ Y2FzZSBEUk1fRk9STUFUX1k0MTI6CisJY2FzZSBEUk1fRk9STUFUX1k0MTY6CiAJY2FzZSBEUk1f Rk9STUFUX1lVWVY6CiAJY2FzZSBEUk1fRk9STUFUX1lWWVU6CiAJY2FzZSBEUk1fRk9STUFUX1VZ Vlk6Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==