From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iAWYZ-0003Cf-BF for ath10k@lists.infradead.org; Wed, 18 Sep 2019 09:47:28 +0000 From: Yibo Zhao Subject: [PATCH V2 2/4] mac80211: defer txqs removal from rbtree Date: Wed, 18 Sep 2019 17:47:11 +0800 Message-Id: <1568800033-17297-2-git-send-email-yiboz@codeaurora.org> In-Reply-To: <1568800033-17297-1-git-send-email-yiboz@codeaurora.org> References: <1568800033-17297-1-git-send-email-yiboz@codeaurora.org> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: ath10k@lists.infradead.org Cc: Yibo Zhao , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , linux-wireless@vger.kernel.org SW4gYSBsb29wIHR4cXMgZGVxdWV1ZSBzY2VuYXJpbywgaWYgdGhlIGZpcnN0IHR4cSBpbiB0aGUg cmJ0cmVlIGdldHMKcmVtb3ZlZCBmcm9tIHJidHJlZSBpbW1lZGlhdGVseSBpbiB0aGUgaWVlZTgw MjExX3JldHVybl90eHEoKSwgdGhlCmxvb3Agd2lsbCBicmVhayBzb29uIGluIHRoZSBpZWVlODAy MTFfbmV4dF90eHEoKSBkdWUgdG8gc2NoZWR1bGVfcG9zCm5vdCBsZWFkaW5nIHRvIHRoZSBzZWNv bmQgdHhxIGluIHRoZSByYnRyZWUuIFRodXMsIGRlZmVyaW5nIHRoZQpyZW1vdmFsIHJpZ2h0IGJl Zm9yZSB0aGUgZW5kIG9mIHRoaXMgc2NoZWR1bGUgcm91bmQuCgpDby1kZXZlbG9wZWQtYnk6IFRv a2UgSMO4aWxhbmQtSsO4cmdlbnNlbiA8dG9rZUByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBZ aWJvIFpoYW8gPHlpYm96QGNvZGVhdXJvcmEub3JnPgpTaWduZWQtb2ZmLWJ5OiBUb2tlIEjDuGls YW5kLUrDuHJnZW5zZW4gPHRva2VAcmVkaGF0LmNvbT4KLS0tCiBpbmNsdWRlL25ldC9tYWM4MDIx MS5oICAgICB8IDE2ICsrKysrKysrKystLQogbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggfCAg MyArKysKIG5ldC9tYWM4MDIxMS9tYWluLmMgICAgICAgIHwgIDYgKysrKysKIG5ldC9tYWM4MDIx MS90eC5jICAgICAgICAgIHwgNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLQogNCBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9t YWM4MDIxMS5oCmluZGV4IGFjMmVkOGUuLmJhNWEzNDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0 L21hYzgwMjExLmgKKysrIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaApAQCAtOTI1LDYgKzkyNSw4 IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSB7CiAKICNkZWZpbmUgSUVFRTgwMjExX01BWF9U WF9SRVRSWQkJMzEKIAorI2RlZmluZSBJRUVFODAyMTFfQUlSVElNRV9UWFFfUk1fQ0hLX0lOVFZf SU5fTVMgMTAwCisKIHN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfcmF0ZV9zZXRfdmh0KHN0 cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSwKIAkJCQkJICB1OCBtY3MsIHU4IG5zcykKIHsK QEAgLTYyMzIsNyArNjIzNCw4IEBAIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1 ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKICAqIEBhYzogQUMgbnVtYmVyIHRvIHJldHVybiBw YWNrZXRzIGZyb20uCiAgKgogICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJldHdlZW4gY2FsbHMg dG8gaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCgpCi0gKiBhbmQgaWVlZTgwMjExX3R4cV9z Y2hlZHVsZV9lbmQoKS4KKyAqIGFuZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2VuZCgpLiBJZiB0 aGUgdHhxIGlzIGVtcHR5LCBpdCB3aWxsIGJlIGFkZGVkCisgKiB0byBhIHJlbW92ZSBsaXN0IGFu ZCBnZXQgcmVtb3ZlZCBsYXRlci4KICAqIFJldHVybnMgdGhlIG5leHQgdHhxIGlmIHN1Y2Nlc3Nm dWwsICVOVUxMIGlmIG5vIHF1ZXVlIGlzIGVsaWdpYmxlLiBJZiBhIHR4cQogICogaXMgcmV0dXJu ZWQsIGl0IHNob3VsZCBiZSByZXR1cm5lZCB3aXRoIGllZWU4MDIxMV9yZXR1cm5fdHhxKCkgYWZ0 ZXIgdGhlCiAgKiBkcml2ZXIgaGFzIGZpbmlzaGVkIHNjaGVkdWxpbmcgaXQuCkBAIC02MjY4LDcg KzYyNzEsOCBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4 MDIxMV9odyAqaHcsIHU4IGFjKQogICogQGh3OiBwb2ludGVyIGFzIG9idGFpbmVkIGZyb20gaWVl ZTgwMjExX2FsbG9jX2h3KCkKICAqIEBhYzogQUMgbnVtYmVyIHRvIGFjcXVpcmUgbG9ja3MgZm9y CiAgKgotICogUmVsZWFzZSBsb2NrcyBwcmV2aW91c2x5IGFjcXVpcmVkIGJ5IGllZWU4MDIxMV90 eHFfc2NoZWR1bGVfZW5kKCkuCisgKiBSZWxlYXNlIGxvY2tzIHByZXZpb3VzbHkgYWNxdWlyZWQg YnkgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoKS4gQ2hlY2sKKyAqIGFuZCByZW1vdmUgdGhl IGVtcHR5IHR4cSBmcm9tIHJiLXRyZWUuCiAgKi8KIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVs ZV9lbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKQogCV9fcmVsZWFzZXModHhxX2xv Y2spOwpAQCAtNjI4Nyw2ICs2MjkxLDE0IEBAIHZvaWQgaWVlZTgwMjExX3NjaGVkdWxlX3R4cShz dHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKIAlfX2Fj cXVpcmVzKHR4cV9sb2NrKSBfX3JlbGVhc2VzKHR4cV9sb2NrKTsKIAogLyoqCisgKiBpZWVlODAy MTFfdHhxc19jaGVjayAtIENoZWNrIHR4cXMgd2FpdGluZyBmb3IgcmVtb3ZhbAorICoKKyAqIEB0 bXI6IHBvaW50ZXIgYXMgb2J0YWluZWQgZnJvbSBsb2NhbAorICoKKyAqLwordm9pZCBpZWVlODAy MTFfdHhxc19jaGVjayhzdHJ1Y3QgdGltZXJfbGlzdCAqdG1yKTsKKworLyoqCiAgKiBpZWVlODAy MTFfdHhxX21heV90cmFuc21pdCAtIGNoZWNrIHdoZXRoZXIgVFhRIGlzIGFsbG93ZWQgdG8gdHJh bnNtaXQKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hlY2sgd2hldGhlciBnaXZl biB0eHEgaXMgYWxsb3dlZCB0byB0cmFuc21pdCBieQpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjEx L2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaAppbmRleCBhNDU1NmY5 Li40OWFhMTQzZSAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKKysrIGIv bmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKQEAgLTg0Nyw2ICs4NDcsNyBAQCBzdHJ1Y3QgdHhx X2luZm8gewogCXN0cnVjdCBjb2RlbF9zdGF0cyBjc3RhdHM7CiAJc3RydWN0IHNrX2J1ZmZfaGVh ZCBmcmFnczsKIAlzdHJ1Y3QgcmJfbm9kZSBzY2hlZHVsZV9vcmRlcjsKKwlzdHJ1Y3QgbGlzdF9o ZWFkIGNhbmRpZGF0ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJLyoga2VlcCBsYXN0ISAq LwpAQCAtMTE0NSw2ICsxMTQ2LDggQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7CiAJdTY0IGFp cnRpbWVfdl90W0lFRUU4MDIxMV9OVU1fQUNTXTsKIAl1NjQgYWlydGltZV93ZWlnaHRfc3VtW0lF RUU4MDIxMV9OVU1fQUNTXTsKIAorCXN0cnVjdCBsaXN0X2hlYWQgcmVtb3ZlX2xpc3RbSUVFRTgw MjExX05VTV9BQ1NdOworCXN0cnVjdCB0aW1lcl9saXN0IHJlbW92ZV90aW1lcjsKIAl1MTYgYWly dGltZV9mbGFnczsKIAogCWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7CmRpZmYgLS1n aXQgYS9uZXQvbWFjODAyMTEvbWFpbi5jIGIvbmV0L21hYzgwMjExL21haW4uYwppbmRleCBlOWZm YThlLi43OGZlMjRhIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvbWFpbi5jCisrKyBiL25ldC9t YWM4MDIxMS9tYWluLmMKQEAgLTY2NywxMCArNjY3LDE1IEBAIHN0cnVjdCBpZWVlODAyMTFfaHcg KmllZWU4MDIxMV9hbGxvY19od19ubShzaXplX3QgcHJpdl9kYXRhX2xlbiwKIAogCWZvciAoaSA9 IDA7IGkgPCBJRUVFODAyMTFfTlVNX0FDUzsgaSsrKSB7CiAJCWxvY2FsLT5hY3RpdmVfdHhxc1tp XSA9IFJCX1JPT1RfQ0FDSEVEOworCQlJTklUX0xJU1RfSEVBRCgmbG9jYWwtPnJlbW92ZV9saXN0 W2ldKTsKIAkJc3Bpbl9sb2NrX2luaXQoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbaV0pOwogCX0K IAlsb2NhbC0+YWlydGltZV9mbGFncyA9IEFJUlRJTUVfVVNFX1RYIHwgQUlSVElNRV9VU0VfUlg7 CiAKKwl0aW1lcl9zZXR1cCgmbG9jYWwtPnJlbW92ZV90aW1lciwgaWVlZTgwMjExX3R4cXNfY2hl Y2ssIDApOworCW1vZF90aW1lcigmbG9jYWwtPnJlbW92ZV90aW1lciwKKwkJICBqaWZmaWVzICsg bXNlY3NfdG9famlmZmllcyhJRUVFODAyMTFfQUlSVElNRV9UWFFfUk1fQ0hLX0lOVFZfSU5fTVMp KTsKKwogCUlOSVRfTElTVF9IRUFEKCZsb2NhbC0+Y2hhbmN0eF9saXN0KTsKIAltdXRleF9pbml0 KCZsb2NhbC0+Y2hhbmN0eF9tdHgpOwogCkBAIC0xMzA1LDYgKzEzMTAsNyBAQCB2b2lkIGllZWU4 MDIxMV91bnJlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQogCXRhc2tsZXRfa2ls bCgmbG9jYWwtPnR4X3BlbmRpbmdfdGFza2xldCk7CiAJdGFza2xldF9raWxsKCZsb2NhbC0+dGFz a2xldCk7CiAKKwlkZWxfdGltZXJfc3luYygmbG9jYWwtPnJlbW92ZV90aW1lcik7CiAjaWZkZWYg Q09ORklHX0lORVQKIAl1bnJlZ2lzdGVyX2luZXRhZGRyX25vdGlmaWVyKCZsb2NhbC0+aWZhX25v dGlmaWVyKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFj ODAyMTEvdHguYwppbmRleCBkMDBiYWFhLi40MmNhMDEwIDEwMDY0NAotLS0gYS9uZXQvbWFjODAy MTEvdHguYworKysgYi9uZXQvbWFjODAyMTEvdHguYwpAQCAtMTQ1MCw2ICsxNDUwLDcgQEAgdm9p ZCBpZWVlODAyMTFfdHhxX2luaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEs CiAJY29kZWxfc3RhdHNfaW5pdCgmdHhxaS0+Y3N0YXRzKTsKIAlfX3NrYl9xdWV1ZV9oZWFkX2lu aXQoJnR4cWktPmZyYWdzKTsKIAlSQl9DTEVBUl9OT0RFKCZ0eHFpLT5zY2hlZHVsZV9vcmRlcik7 CisJSU5JVF9MSVNUX0hFQUQoJnR4cWktPmNhbmRpZGF0ZSk7CiAKIAl0eHFpLT50eHEudmlmID0g JnNkYXRhLT52aWY7CiAKQEAgLTM3MjQsNiArMzcyNSw5IEBAIHZvaWQgaWVlZTgwMjExX3NjaGVk dWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAogCXNwaW5fbG9ja19iaCgmbG9jYWwt PmFjdGl2ZV90eHFfbG9ja1thY10pOwogCisJaWYgKCFsaXN0X2VtcHR5KCZ0eHFpLT5jYW5kaWRh dGUpKQorCQlsaXN0X2RlbF9pbml0KCZ0eHFpLT5jYW5kaWRhdGUpOworCiAJaWYgKCFSQl9FTVBU WV9OT0RFKCZ0eHFpLT5zY2hlZHVsZV9vcmRlcikpCiAJCWdvdG8gb3V0OwogCkBAIC0zNzgzLDYg KzM3ODcsMjAgQEAgc3RhdGljIHZvaWQgX19pZWVlODAyMTFfdW5zY2hlZHVsZV90eHEoc3RydWN0 IGllZWU4MDIxMV9odyAqaHcsCiAJUkJfQ0xFQVJfTk9ERSgmdHhxaS0+c2NoZWR1bGVfb3JkZXIp OwogfQogCit2b2lkIGllZWU4MDIxMV9yZW1vdmVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3 LAorCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQoreworCXN0cnVjdCBpZWVlODAyMTFf bG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpOworCXN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9 IHRvX3R4cV9pbmZvKHR4cSk7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZsb2NhbC0+YWN0aXZl X3R4cV9sb2NrW3R4cS0+YWNdKTsKKworCWlmICghUkJfRU1QVFlfTk9ERSgmdHhxaS0+c2NoZWR1 bGVfb3JkZXIpKSB7CisJCV9faWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhxKGh3LCB0eHEpOworCQls aXN0X2RlbF9pbml0KCZ0eHFpLT5jYW5kaWRhdGUpOworCX0KK30KKwogdm9pZCBpZWVlODAyMTFf dW5zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCQkgICAgICBzdHJ1Y3Qg aWVlZTgwMjExX3R4cSAqdHhxKQogCV9fYWNxdWlyZXModHhxX2xvY2spIF9fcmVsZWFzZXModHhx X2xvY2spCkBAIC0zNzkwLDcgKzM4MDgsNyBAQCB2b2lkIGllZWU4MDIxMV91bnNjaGVkdWxlX3R4 cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAlzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2Nh bCA9IGh3X3RvX2xvY2FsKGh3KTsKIAogCXNwaW5fbG9ja19iaCgmbG9jYWwtPmFjdGl2ZV90eHFf bG9ja1t0eHEtPmFjXSk7Ci0JX19pZWVlODAyMTFfdW5zY2hlZHVsZV90eHEoaHcsIHR4cSk7CisJ aWVlZTgwMjExX3JlbW92ZV90eHEoaHcsIHR4cSk7CiAJc3Bpbl91bmxvY2tfYmgoJmxvY2FsLT5h Y3RpdmVfdHhxX2xvY2tbdHhxLT5hY10pOwogfQogCkBAIC0zODAzLDExICszODIxLDQ4IEBAIHZv aWQgaWVlZTgwMjExX3JldHVybl90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1t0eHEtPmFjXSk7CiAKIAlpZiAo IVJCX0VNUFRZX05PREUoJnR4cWktPnNjaGVkdWxlX29yZGVyKSAmJgotCSAgICAoc2tiX3F1ZXVl X2VtcHR5KCZ0eHFpLT5mcmFncykgJiYgIXR4cWktPnRpbi5iYWNrbG9nX3BhY2tldHMpKQotCQlf X2llZWU4MDIxMV91bnNjaGVkdWxlX3R4cShodywgdHhxKTsKKwkJIXR4cV9oYXNfcXVldWUoJnR4 cWktPnR4cSkgJiYKKwkJbGlzdF9lbXB0eSgmdHhxaS0+Y2FuZGlkYXRlKSkKKwkJbGlzdF9hZGRf dGFpbCgmdHhxaS0+Y2FuZGlkYXRlLCAmbG9jYWwtPnJlbW92ZV9saXN0W3R4cS0+YWNdKTsKKwog fQogRVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcmV0dXJuX3R4cSk7CiAKK3ZvaWQgX19pZWVlODAy MTFfY2hlY2tfdHhxcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IGFjKQorewor CXN0cnVjdCB0eHFfaW5mbyAqaXRlciwgKnRtcDsKKwlzdHJ1Y3Qgc3RhX2luZm8gKnN0YTsKKwor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbYWNdKTsKKworCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShpdGVyLCB0bXAsICZsb2NhbC0+cmVtb3ZlX2xpc3RbYWNd LAorCQkJCSBjYW5kaWRhdGUpIHsKKwkJc3RhID0gY29udGFpbmVyX29mKGl0ZXItPnR4cS5zdGEs IHN0cnVjdCBzdGFfaW5mbywgc3RhKTsKKworCQlpZiAodHhxX2hhc19xdWV1ZSgmaXRlci0+dHhx KSkKKwkJCWxpc3RfZGVsX2luaXQoJml0ZXItPmNhbmRpZGF0ZSk7CisJCWVsc2UKKwkJCWllZWU4 MDIxMV9yZW1vdmVfdHhxKCZsb2NhbC0+aHcsICZpdGVyLT50eHEpOworCX0KK30KKwordm9pZCBp ZWVlODAyMTFfdHhxc19jaGVjayhzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKK3sKKwlzdHJ1Y3QgaWVl ZTgwMjExX2xvY2FsICpsb2NhbCA9IGZyb21fdGltZXIobG9jYWwsIHQsIHJlbW92ZV90aW1lcik7 CisJc3RydWN0IHR4cV9pbmZvICppdGVyLCAqdG1wOworCXN0cnVjdCBzdGFfaW5mbyAqc3RhOwor CWludCBhYzsKKworCWZvciAoYWMgPSAwOyBhYyA8IElFRUU4MDIxMV9OVU1fQUNTOyBhYysrKSB7 CisJCXNwaW5fbG9ja19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1thY10pOworCQlfX2llZWU4 MDIxMV9jaGVja190eHFzKGxvY2FsLCBhYyk7CisJCXNwaW5fdW5sb2NrX2JoKCZsb2NhbC0+YWN0 aXZlX3R4cV9sb2NrW2FjXSk7CisJfQorCisJbW9kX3RpbWVyKCZsb2NhbC0+cmVtb3ZlX3RpbWVy LAorCQkgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKElFRUU4MDIxMV9BSVJUSU1FX1RYUV9S TV9DSEtfSU5UVl9JTl9NUykpOworfQorCiBib29sIGllZWU4MDIxMV90eHFfbWF5X3RyYW5zbWl0 KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJCXN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEp CiB7CkBAIC0zODQxLDYgKzM4OTYsOCBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfZW5k KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYykKIAlzdHJ1Y3QgaWVlZTgwMjExX2xvY2Fs ICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTsKIAogCWxvY2FsLT5zY2hlZHVsZV9wb3NbYWNdID0g TlVMTDsKKwlfX2llZWU4MDIxMV9jaGVja190eHFzKGxvY2FsLCBhYyk7CisKIAlzcGluX3VubG9j a19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1thY10pOwogfQogRVhQT1JUX1NZTUJPTChpZWVl ODAyMTFfdHhxX3NjaGVkdWxlX2VuZCk7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmF0aDEwayBtYWlsaW5nIGxpc3QKYXRoMTBrQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9hdGgxMGsK