From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 50D2942BF1; Mon, 5 Jun 2023 15:02:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D990C4021F; Mon, 5 Jun 2023 15:02:55 +0200 (CEST) Received: from forward500c.mail.yandex.net (forward500c.mail.yandex.net [178.154.239.208]) by mails.dpdk.org (Postfix) with ESMTP id DDDD74003C for ; Mon, 5 Jun 2023 15:02:53 +0200 (CEST) Received: from mail-nwsmtp-mxback-production-main-73.iva.yp-c.yandex.net (mail-nwsmtp-mxback-production-main-73.iva.yp-c.yandex.net [IPv6:2a02:6b8:c0c:3b17:0:640:7794:0]) by forward500c.mail.yandex.net (Yandex) with ESMTP id 549255EACD; Mon, 5 Jun 2023 16:02:53 +0300 (MSK) Received: from mail.yandex.ru (2a02:6b8:c0c:c022:0:640:a9c1:0 [2a02:6b8:c0c:c022:0:640:a9c1:0]) by mail-nwsmtp-mxback-production-main-73.iva.yp-c.yandex.net (mxback/Yandex) with HTTP id n2SFJ93W9Os0-HP8JZPD5; Mon, 05 Jun 2023 16:02:52 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1685970172; bh=F5IGGJBqTVZ+7am5YRnDmOYjQnbmgP8obK87XhWClY8=; h=References:Date:Message-Id:Cc:Subject:To:From:In-Reply-To; b=CEbYw9pOD+/sAeLtdp/77OC127Eug51Jv4J4wuxb966bD2+xWN7b/P8vEqaCLudKO VXw/6cH2fm/nds3ovqIQgnDQnG6CJoTzbdlh7nMd7S91Pgupxw+R4dMbSyafGzBNNL e73Kv4lShingWE1w/cCbeP54O4zi+a/D9YJZ18B4= Authentication-Results: mail-nwsmtp-mxback-production-main-73.iva.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Received: by gr4gdts34yz64d7j.iva.yp-c.yandex.net with HTTP; Mon, 05 Jun 2023 16:02:52 +0300 From: =?utf-8?B?0JrQvtC90YHRgtCw0L3RgtC40L0g0JDQvdCw0L3RjNC10LI=?= Envelope-From: konstantin-v-ananyev@yandex.ru To: Feifei Wang , Yuying Zhang , Beilei Xing Cc: "dev@dpdk.org" , "nd@arm.com" , Honnappa Nagarahalli , Ruifeng Wang In-Reply-To: <20230525094541.331338-3-feifei.wang2@arm.com> References: <20211224164613.32569-1-feifei.wang2@arm.com> <20230525094541.331338-1-feifei.wang2@arm.com> <20230525094541.331338-3-feifei.wang2@arm.com> Subject: Re: [PATCH v6 2/4] net/i40e: implement mbufs recycle mode MIME-Version: 1.0 X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Mon, 05 Jun 2023 14:02:52 +0100 Message-Id: <1580121685969644@mail.yandex.ru> Content-Transfer-Encoding: base64 Content-Type: text/html; charset=utf-8 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PGRpdj7CoDwvZGl2PjxkaXY+wqA8L2Rpdj48ZGl2PsKgPC9kaXY+PGJsb2NrcXVvdGU+PHA+RGVm aW5lIHNwZWNpZmljIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIGZvciBpNDBlIGRyaXZlci48YnIg Lz5DdXJyZW50bHksIG1idWZzIHJlY3ljbGUgbW9kZSBjYW4gc3VwcG9ydCAxMjhiaXQ8YnIgLz52 ZWN0b3IgcGF0aCBhbmQgYXZ4MiBwYXRoLiBBbmQgY2FuIGJlIGVuYWJsZWQgYm90aCBpbjxiciAv PmZhc3QgZnJlZSBhbmQgbm8gZmFzdCBmcmVlIG1vZGUuPGJyIC8+PGJyIC8+U3VnZ2VzdGVkLWJ5 OiBIb25uYXBwYSBOYWdhcmFoYWxsaSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmhvbm5hcHBhLm5hZ2Fy YWhhbGxpQGFybS5jb20iIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+aG9ubmFwcGEubmFnYXJh aGFsbGlAYXJtLmNvbTwvYT4mZ3Q7PGJyIC8+U2lnbmVkLW9mZi1ieTogRmVpZmVpIFdhbmcgJmx0 OzxhIGhyZWY9Im1haWx0bzpmZWlmZWkud2FuZzJAYXJtLmNvbSIgcmVsPSJub29wZW5lciBub3Jl ZmVycmVyIj5mZWlmZWkud2FuZzJAYXJtLmNvbTwvYT4mZ3Q7PGJyIC8+UmV2aWV3ZWQtYnk6IFJ1 aWZlbmcgV2FuZyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnJ1aWZlbmcud2FuZ0Bhcm0uY29tIiByZWw9 Im5vb3BlbmVyIG5vcmVmZXJyZXIiPnJ1aWZlbmcud2FuZ0Bhcm0uY29tPC9hPiZndDs8YnIgLz5S ZXZpZXdlZC1ieTogSG9ubmFwcGEgTmFnYXJhaGFsbGkgJmx0OzxhIGhyZWY9Im1haWx0bzpob25u YXBwYS5uYWdhcmFoYWxsaUBhcm0uY29tIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPmhvbm5h cHBhLm5hZ2FyYWhhbGxpQGFybS5jb208L2E+Jmd0OzxiciAvPi0tLTxiciAvPsKgZHJpdmVycy9u ZXQvaTQwZS9pNDBlX2V0aGRldi5jIHwgMSArPGJyIC8+wqBkcml2ZXJzL25ldC9pNDBlL2k0MGVf ZXRoZGV2LmggfCAyICs8YnIgLz7CoC4uLi9uZXQvaTQwZS9pNDBlX3JlY3ljbGVfbWJ1ZnNfdmVj X2NvbW1vbi5jIHwgMTQwICsrKysrKysrKysrKysrKysrKzxiciAvPsKgZHJpdmVycy9uZXQvaTQw ZS9pNDBlX3J4dHguYyB8IDMyICsrKys8YnIgLz7CoGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9yeHR4 LmggfCA0ICs8YnIgLz7CoGRyaXZlcnMvbmV0L2k0MGUvbWVzb24uYnVpbGQgfCAyICs8YnIgLz7C oDYgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyk8YnIgLz7CoGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL25ldC9pNDBlL2k0MGVfcmVjeWNsZV9tYnVmc192ZWNfY29tbW9uLmM8YnIg Lz48YnIgLz5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jIGIvZHJp dmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jPGJyIC8+aW5kZXggZjlkOGY5NzkxZi4uZDRlZWNk MTZjZiAxMDA2NDQ8YnIgLz4tLS0gYS9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmM8YnIg Lz4rKysgYi9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmM8YnIgLz5AQCAtNDk2LDYgKzQ5 Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9vcHMgaTQwZV9ldGhfZGV2X29wcyA9 IHs8IS0tIC0tPjxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoC5mbG93X29wc19nZXQgPSBpNDBlX2Rl dl9mbG93X29wc19nZXQsPGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgLnJ4cV9pbmZvX2dldCA9IGk0 MGVfcnhxX2luZm9fZ2V0LDxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoC50eHFfaW5mb19nZXQgPSBp NDBlX3R4cV9pbmZvX2dldCw8YnIgLz4rIC5yZWN5Y2xlX3J4cV9pbmZvX2dldCA9IGk0MGVfcmVj eWNsZV9yeHFfaW5mb19nZXQsPGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgLnJ4X2J1cnN0X21vZGVf Z2V0ID0gaTQwZV9yeF9idXJzdF9tb2RlX2dldCw8YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqAudHhf YnVyc3RfbW9kZV9nZXQgPSBpNDBlX3R4X2J1cnN0X21vZGVfZ2V0LDxiciAvPsKgwqDCoMKgwqDC oMKgwqDCoC50aW1lc3luY19lbmFibGUgPSBpNDBlX3RpbWVzeW5jX2VuYWJsZSw8YnIgLz5kaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5oIGIvZHJpdmVycy9uZXQvaTQw ZS9pNDBlX2V0aGRldi5oPGJyIC8+aW5kZXggOWI4MDZkMTMwZS4uYjViMmQ2Y2YyYiAxMDA2NDQ8 YnIgLz4tLS0gYS9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2Lmg8YnIgLz4rKysgYi9kcml2 ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2Lmg8YnIgLz5AQCAtMTM1NSw2ICsxMzU1LDggQEAgdm9p ZCBpNDBlX3J4cV9pbmZvX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVl dWVfaWQsPGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHJ0ZV9ldGhfcnhxX2luZm8gKnFp bmZvKTs8YnIgLz7CoHZvaWQgaTQwZV90eHFfaW5mb19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYsIHVpbnQxNl90IHF1ZXVlX2lkLDxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydGVf ZXRoX3R4cV9pbmZvICpxaW5mbyk7PGJyIC8+K3ZvaWQgaTQwZV9yZWN5Y2xlX3J4cV9pbmZvX2dl dChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVldWVfaWQsPGJyIC8+KyBzdHJ1 Y3QgcnRlX2V0aF9yZWN5Y2xlX3J4cV9pbmZvICpyZWN5Y2xlX3J4cV9pbmZvKTs8YnIgLz7CoGlu dCBpNDBlX3J4X2J1cnN0X21vZGVfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZf dCBxdWV1ZV9pZCw8YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBydGVfZXRoX2J1cnN0X21vZGUgKm1vZGUpOzxiciAvPsKg aW50IGk0MGVfdHhfYnVyc3RfbW9kZV9nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQx Nl90IHF1ZXVlX2lkLDxiciAvPmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pNDBlL2k0MGVfcmVj eWNsZV9tYnVmc192ZWNfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9pNDBlL2k0MGVfcmVjeWNsZV9t YnVmc192ZWNfY29tbW9uLmM8YnIgLz5uZXcgZmlsZSBtb2RlIDEwMDY0NDxiciAvPmluZGV4IDAw MDAwMDAwMDAuLjA4ZDcwOGZkN2Q8YnIgLz4tLS0gL2Rldi9udWxsPGJyIC8+KysrIGIvZHJpdmVy cy9uZXQvaTQwZS9pNDBlX3JlY3ljbGVfbWJ1ZnNfdmVjX2NvbW1vbi5jPGJyIC8+QEAgLTAsMCAr MSwxNDAgQEA8YnIgLz4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZTxi ciAvPisgKiBDb3B5cmlnaHQgKGMpIDIwMjMgQXJtIExpbWl0ZWQuPGJyIC8+KyAqLzxiciAvPis8 YnIgLz4rI2luY2x1ZGUgJmx0O3N0ZGludC5oJmd0OzxiciAvPisjaW5jbHVkZSAmbHQ7ZXRoZGV2 X2RyaXZlci5oJmd0OzxiciAvPis8YnIgLz4rI2luY2x1ZGUgImJhc2UvaTQwZV9wcm90b3R5cGUu aCI8YnIgLz4rI2luY2x1ZGUgImJhc2UvaTQwZV90eXBlLmgiPGJyIC8+KyNpbmNsdWRlICJpNDBl X2V0aGRldi5oIjxiciAvPisjaW5jbHVkZSAiaTQwZV9yeHR4LmgiPGJyIC8+KzxiciAvPisjcHJh Z21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XY2FzdC1xdWFsIjxiciAvPis8YnIgLz4rdm9p ZDxiciAvPitpNDBlX3JlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsX3ZlYyh2b2lkICpyeF9x dWV1ZSwgdWludDE2X3QgbmJfbWJ1ZnMpPGJyIC8+K3s8IS0tIC0tPjxiciAvPisgc3RydWN0IGk0 MGVfcnhfcXVldWUgKnJ4cSA9IHJ4X3F1ZXVlOzxiciAvPisgc3RydWN0IGk0MGVfcnhfZW50cnkg KnJ4ZXA7PGJyIC8+KyB2b2xhdGlsZSB1bmlvbiBpNDBlX3J4X2Rlc2MgKnJ4ZHA7PGJyIC8+KyB1 aW50MTZfdCByeF9pZDs8YnIgLz4rIHVpbnQ2NF90IHBhZGRyOzxiciAvPisgdWludDY0X3QgZG1h X2FkZHI7PGJyIC8+KyB1aW50MTZfdCBpOzxiciAvPis8YnIgLz4rIHJ4ZHAgPSByeHEtJmd0O3J4 X3JpbmcgKyByeHEtJmd0O3J4cmVhcm1fc3RhcnQ7PGJyIC8+KyByeGVwID0gJmFtcDtyeHEtJmd0 O3N3X3JpbmdbcnhxLSZndDtyeHJlYXJtX3N0YXJ0XTs8YnIgLz4rPGJyIC8+KyBmb3IgKGkgPSAw OyBpICZsdDsgbmJfbWJ1ZnM7IGkrKykgezwhLS0gLS0+PGJyIC8+KyAvKiBJbml0aWFsaXplIHJ4 ZHAgZGVzY3MuICovPGJyIC8+KyBwYWRkciA9IChyeGVwW2ldLm1idWYpLSZndDtidWZfaW92YSAr IFJURV9QS1RNQlVGX0hFQURST09NOzxiciAvPisgZG1hX2FkZHIgPSBydGVfY3B1X3RvX2xlXzY0 KHBhZGRyKTs8YnIgLz4rIC8qIGZsdXNoIGRlc2Mgd2l0aCBwYSBkbWFfYWRkciAqLzxiciAvPisg cnhkcFtpXS5yZWFkLmhkcl9hZGRyID0gMDs8YnIgLz4rIHJ4ZHBbaV0ucmVhZC5wa3RfYWRkciA9 IGRtYV9hZGRyOzxiciAvPisgfTxiciAvPis8YnIgLz4rIC8qIFVwZGF0ZSB0aGUgZGVzY3JpcHRv ciBpbml0aWFsaXplciBpbmRleCAqLzxiciAvPisgcnhxLSZndDtyeHJlYXJtX3N0YXJ0ICs9IG5i X21idWZzOzxiciAvPisgcnhfaWQgPSByeHEtJmd0O3J4cmVhcm1fc3RhcnQgLSAxOzxiciAvPis8 YnIgLz4rIGlmICh1bmxpa2VseShyeHEtJmd0O3J4cmVhcm1fc3RhcnQgJmd0Oz0gcnhxLSZndDtu Yl9yeF9kZXNjKSkgezwhLS0gLS0+PGJyIC8+KyByeHEtJmd0O3J4cmVhcm1fc3RhcnQgPSAwOzxi ciAvPisgcnhfaWQgPSByeHEtJmd0O25iX3J4X2Rlc2MgLSAxOzxiciAvPisgfTxiciAvPis8YnIg Lz4rIHJ4cS0mZ3Q7cnhyZWFybV9uYiAtPSBuYl9tYnVmczs8YnIgLz4rPGJyIC8+KyBydGVfaW9f d21iKCk7PGJyIC8+KyAvKiBVcGRhdGUgdGhlIHRhaWwgcG9pbnRlciBvbiB0aGUgTklDICovPGJy IC8+KyBJNDBFX1BDSV9SRUdfV1JJVEVfUkVMQVhFRChyeHEtJmd0O3FyeF90YWlsLCByeF9pZCk7 PGJyIC8+K308YnIgLz4rPGJyIC8+K3VpbnQxNl90PGJyIC8+K2k0MGVfcmVjeWNsZV90eF9tYnVm c19yZXVzZV92ZWModm9pZCAqdHhfcXVldWUsPGJyIC8+KyBzdHJ1Y3QgcnRlX2V0aF9yZWN5Y2xl X3J4cV9pbmZvICpyZWN5Y2xlX3J4cV9pbmZvKTxiciAvPit7PCEtLSAtLT48YnIgLz4rIHN0cnVj dCBpNDBlX3R4X3F1ZXVlICp0eHEgPSB0eF9xdWV1ZTs8YnIgLz4rIHN0cnVjdCBpNDBlX3R4X2Vu dHJ5ICp0eGVwOzxiciAvPisgc3RydWN0IHJ0ZV9tYnVmICoqcnhlcDs8YnIgLz4rIHN0cnVjdCBy dGVfbWJ1ZiAqbVtSVEVfSTQwRV9UWF9NQVhfRlJFRV9CVUZfU1pdOzxiciAvPisgaW50IGksIGos IG47PGJyIC8+KyB1aW50MTZfdCBhdmFpbCA9IDA7PGJyIC8+KyB1aW50MTZfdCBtYnVmX3Jpbmdf c2l6ZSA9IHJlY3ljbGVfcnhxX2luZm8tJmd0O21idWZfcmluZ19zaXplOzxiciAvPisgdWludDE2 X3QgbWFzayA9IHJlY3ljbGVfcnhxX2luZm8tJmd0O21idWZfcmluZ19zaXplIC0gMTs8YnIgLz4r IHVpbnQxNl90IHJlZmlsbF9yZXF1aXJlbWVudCA9IHJlY3ljbGVfcnhxX2luZm8tJmd0O3JlZmls bF9yZXF1aXJlbWVudDs8YnIgLz4rIHVpbnQxNl90IHJlZmlsbF9oZWFkID0gKnJlY3ljbGVfcnhx X2luZm8tJmd0O3JlZmlsbF9oZWFkOzxiciAvPisgdWludDE2X3QgcmVjZWl2ZV90YWlsID0gKnJl Y3ljbGVfcnhxX2luZm8tJmd0O3JlY2VpdmVfdGFpbDs8YnIgLz4rPGJyIC8+KyAvKiBHZXQgYXZh aWxhYmxlIHJlY3ljbGluZyBSeCBidWZmZXJzLiAqLzxiciAvPisgYXZhaWwgPSAobWJ1Zl9yaW5n X3NpemUgLSAocmVmaWxsX2hlYWQgLSByZWNlaXZlX3RhaWwpKSAmYW1wOyBtYXNrOzxiciAvPis8 YnIgLz4rIC8qIENoZWNrIFR4IGZyZWUgdGhyZXNoIGFuZCBSeCBhdmFpbGFibGUgc3BhY2UuICov PGJyIC8+KyBpZiAodHhxLSZndDtuYl90eF9mcmVlICZndDsgdHhxLSZndDt0eF9mcmVlX3RocmVz aCB8fCBhdmFpbCAmbHQ7PSB0eHEtJmd0O3R4X3JzX3RocmVzaCk8YnIgLz4rIHJldHVybiAwOzxi ciAvPis8YnIgLz4rIC8qIGNoZWNrIEREIGJpdHMgb24gdGhyZXNob2xkIGRlc2NyaXB0b3IgKi88 YnIgLz4rIGlmICgodHhxLSZndDt0eF9yaW5nW3R4cS0mZ3Q7dHhfbmV4dF9kZF0uY21kX3R5cGVf b2Zmc2V0X2JzeiAmYW1wOzxiciAvPisgcnRlX2NwdV90b19sZV82NChJNDBFX1RYRF9RVzFfRFRZ UEVfTUFTSykpICE9PGJyIC8+KyBydGVfY3B1X3RvX2xlXzY0KEk0MEVfVFhfREVTQ19EVFlQRV9E RVNDX0RPTkUpKTxiciAvPisgcmV0dXJuIDA7PGJyIC8+KzxiciAvPisgbiA9IHR4cS0mZ3Q7dHhf cnNfdGhyZXNoOzxiciAvPis8YnIgLz4rIC8qIE1idWZzIHJlY3ljbGUgbW9kZSBjYW4gb25seSBz dXBwb3J0IG5vIHJpbmcgYnVmZmVyIHdyYXBwaW5nIGFyb3VuZC48YnIgLz4rICogVHdvIGNhc2Ug Zm9yIHRoaXM6PGJyIC8+KyAqPGJyIC8+KyAqIGNhc2UgMTogVGhlIHJlZmlsbCBoZWFkIG9mIFJ4 IGJ1ZmZlciByaW5nIG5lZWRzIHRvIGJlIGFsaWduZWQgd2l0aDxiciAvPisgKiBtYnVmIHJpbmcg c2l6ZS4gSW4gdGhpcyBjYXNlLCB0aGUgbnVtYmVyIG9mIFR4IGZyZWVpbmcgYnVmZmVyczxiciAv PisgKiBzaG91bGQgYmUgZXF1YWwgdG8gcmVmaWxsX3JlcXVpcmVtZW50LjxiciAvPisgKjxiciAv PisgKiBjYXNlIDI6IFRoZSByZWZpbGwgaGVhZCBvZiBSeCByaW5nIGJ1ZmZlciBkb2VzIG5vdCBu ZWVkIHRvIGJlIGFsaWduZWQ8YnIgLz4rICogd2l0aCBtYnVmIHJpbmcgc2l6ZS4gSW4gdGhpcyBj YXNlLCB0aGUgdXBkYXRlIG9mIHJlZmlsbCBoZWFkIGNhbiBub3Q8YnIgLz4rICogZXhjZWVkIHRo ZSBSeCBtYnVmIHJpbmcgc2l6ZS48YnIgLz4rICovPGJyIC8+KyBpZiAocmVmaWxsX3JlcXVpcmVt ZW50ICE9IG4gfHw8YnIgLz4rICghcmVmaWxsX3JlcXVpcmVtZW50ICZhbXA7JmFtcDsgKHJlZmls bF9oZWFkICsgbiAmZ3Q7IG1idWZfcmluZ19zaXplKSkpPGJyIC8+KyByZXR1cm4gMDs8YnIgLz4r PGJyIC8+KyAvKiBGaXJzdCBidWZmZXIgdG8gZnJlZSBmcm9tIFMvVyByaW5nIGlzIGF0IGluZGV4 PGJyIC8+KyAqIHR4X25leHRfZGQgLSAodHhfcnNfdGhyZXNoLTEpLjxiciAvPisgKi88YnIgLz4r IHR4ZXAgPSAmYW1wO3R4cS0mZ3Q7c3dfcmluZ1t0eHEtJmd0O3R4X25leHRfZGQgLSAobiAtIDEp XTs8YnIgLz4rIHJ4ZXAgPSByZWN5Y2xlX3J4cV9pbmZvLSZndDttYnVmX3Jpbmc7PGJyIC8+KyBy eGVwICs9IHJlZmlsbF9oZWFkOzxiciAvPis8YnIgLz4rIGlmICh0eHEtJmd0O29mZmxvYWRzICZh bXA7IFJURV9FVEhfVFhfT0ZGTE9BRF9NQlVGX0ZBU1RfRlJFRSkgezwhLS0gLS0+PGJyIC8+KyAv KiBEaXJlY3RseSBwdXQgbWJ1ZnMgZnJvbSBUeCB0byBSeC4gKi88YnIgLz4rIGZvciAoaSA9IDA7 IGkgJmx0OyBuOyBpKyssIHJ4ZXArKywgdHhlcCsrKTxiciAvPisgKnJ4ZXAgPSB0eGVwWzBdLm1i dWY7PGJyIC8+KyB9IGVsc2UgezwhLS0gLS0+PGJyIC8+KyBmb3IgKGkgPSAwLCBqID0gMDsgaSAm bHQ7IG47IGkrKykgezwhLS0gLS0+PGJyIC8+KyAvKiBBdm9pZCB0eHEgY29udGFpbnMgYnVmZmVy cyBmcm9tIGV4cGVjdGVkIG1lbXBvb2wuICovPGJyIC8+KyBpZiAodW5saWtlbHkocmVjeWNsZV9y eHFfaW5mby0mZ3Q7bXA8YnIgLz4rICE9IHR4ZXBbaV0ubWJ1Zi0mZ3Q7cG9vbCkpPGJyIC8+KyBy ZXR1cm4gMDs8L3A+PC9ibG9ja3F1b3RlPjxkaXY+SSBkb24ndCB0aGluayB0aGF0IGl0IGlzIHBv c3NpYmxlIHRvIHNpbXBseSByZXR1cm4gMCBoZXJlOjwvZGl2PjxkaXY+d2UgbWlnaHQgYWxyZWFk eSBoYXZlIHNvbWUgbWJ1ZnMgaW5zaWRlIHJ4ZXBbXSwgc28gd2UgcHJvYmFibHkgbmVlZDwvZGl2 PjxkaXY+dG8gcmV0dXJuIHRoYXQgbnVtYmVyIChqKS48L2Rpdj48ZGl2PsKgPC9kaXY+PGJsb2Nr cXVvdGU+PHA+KzxiciAvPisgbVtqXSA9IHJ0ZV9wa3RtYnVmX3ByZWZyZWVfc2VnKHR4ZXBbaV0u bWJ1Zik7PGJyIC8+KzxiciAvPisgLyogSW4gY2FzZSAxLCBlYWNoIG9mIFR4IGJ1ZmZlcnMgc2hv dWxkIGJlIHRoZTxiciAvPisgKiBsYXN0IHJlZmVyZW5jZS48YnIgLz4rICovPGJyIC8+KyBpZiAo dW5saWtlbHkobVtqXSA9PSBOVUxMICZhbXA7JmFtcDsgcmVmaWxsX3JlcXVpcmVtZW50KSk8YnIg Lz4rIHJldHVybiAwOzwvcD48L2Jsb2NrcXVvdGU+PGRpdj7CoDwvZGl2PjxkaXY+c2FtZSBoZXJl LCB3ZSBjYW4ndCBzaW1wbHkgcmV0dXJuIDAsIGl0IHdpbGwgaW50cm9kdWNlIG1idWYgbGVha2Fn ZS48L2Rpdj48YmxvY2txdW90ZT48cD4rIC8qIEluIGNhc2UgMiwgdGhlIG51bWJlciBvZiB2YWxp ZCBUeCBmcmVlPGJyIC8+KyAqIGJ1ZmZlcnMgc2hvdWxkIGJlIHJlY29yZGVkLjxiciAvPisgKi88 YnIgLz4rIGorKzs8YnIgLz4rIH08YnIgLz4rIHJ0ZV9tZW1jcHkocnhlcCwgbSwgc2l6ZW9mKHZv aWQgKikgKiBqKTs8L3A+PC9ibG9ja3F1b3RlPjxkaXY+V29uZGVyIHdoeSBkbyB5b3UgbmVlZCBp bnRlcm1lZGlhdGUgYnVmZmVyIGZvciByZWxlYXNlZCBtYnVmcz88L2Rpdj48ZGl2PldoeSBjYW4n dCBqdXN0OjwvZGl2PjxkaXY+Li4uPC9kaXY+PGRpdj5tID0gcnRlX3BrdG1idWZfcHJlZnJlZV9z ZWcodHhlcFtpXS5tYnVmKTs8L2Rpdj48ZGl2Pi4uLjwvZGl2PjxkaXY+cnhlcFtqKytdID0gbTs8 L2Rpdj48ZGl2Pj88L2Rpdj48ZGl2Pk1pZ2h0IHNhdmUgeW91IGZldyBleHRyYSBjeWNsZXMuPC9k aXY+PGRpdj7CoDwvZGl2PjxibG9ja3F1b3RlPjxwPisgfTxiciAvPis8YnIgLz4rIC8qIFVwZGF0 ZSBjb3VudGVycyBmb3IgVHguICovPGJyIC8+KyB0eHEtJmd0O25iX3R4X2ZyZWUgPSAodWludDE2 X3QpKHR4cS0mZ3Q7bmJfdHhfZnJlZSArIHR4cS0mZ3Q7dHhfcnNfdGhyZXNoKTs8YnIgLz4rIHR4 cS0mZ3Q7dHhfbmV4dF9kZCA9ICh1aW50MTZfdCkodHhxLSZndDt0eF9uZXh0X2RkICsgdHhxLSZn dDt0eF9yc190aHJlc2gpOzxiciAvPisgaWYgKHR4cS0mZ3Q7dHhfbmV4dF9kZCAmZ3Q7PSB0eHEt Jmd0O25iX3R4X2Rlc2MpPGJyIC8+KyB0eHEtJmd0O3R4X25leHRfZGQgPSAodWludDE2X3QpKHR4 cS0mZ3Q7dHhfcnNfdGhyZXNoIC0gMSk7PGJyIC8+KzxiciAvPisgcmV0dXJuIG47PGJyIC8+K308 YnIgLz5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaTQwZS9pNDBlX3J4dHguYyBiL2RyaXZlcnMv bmV0L2k0MGUvaTQwZV9yeHR4LmM8YnIgLz5pbmRleCA3ODhmZmI1MWMyLi41M2NmNzg3ZjA0IDEw MDY0NDxiciAvPi0tLSBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9yeHR4LmM8YnIgLz4rKysgYi9k cml2ZXJzL25ldC9pNDBlL2k0MGVfcnh0eC5jPGJyIC8+QEAgLTMxOTcsNiArMzE5NywzMCBAQCBp NDBlX3R4cV9pbmZvX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVldWVf aWQsPGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgcWluZm8tJmd0O2NvbmYub2ZmbG9hZHMgPSB0eHEt Jmd0O29mZmxvYWRzOzxiciAvPsKgfTxiciAvPsKgPGJyIC8+K3ZvaWQ8YnIgLz4raTQwZV9yZWN5 Y2xlX3J4cV9pbmZvX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVldWVf aWQsPGJyIC8+KyBzdHJ1Y3QgcnRlX2V0aF9yZWN5Y2xlX3J4cV9pbmZvICpyZWN5Y2xlX3J4cV9p bmZvKTxiciAvPit7PCEtLSAtLT48YnIgLz4rIHN0cnVjdCBpNDBlX3J4X3F1ZXVlICpyeHE7PGJy IC8+KyBzdHJ1Y3QgaTQwZV9hZGFwdGVyICphZCA9PGJyIC8+KyBJNDBFX0RFVl9QUklWQVRFX1RP X0FEQVBURVIoZGV2LSZndDtkYXRhLSZndDtkZXZfcHJpdmF0ZSk7PGJyIC8+KzxiciAvPisgcnhx ID0gZGV2LSZndDtkYXRhLSZndDtyeF9xdWV1ZXNbcXVldWVfaWRdOzxiciAvPis8YnIgLz4rIHJl Y3ljbGVfcnhxX2luZm8tJmd0O21idWZfcmluZyA9ICh2b2lkICopcnhxLSZndDtzd19yaW5nOzxi ciAvPisgcmVjeWNsZV9yeHFfaW5mby0mZ3Q7bXAgPSByeHEtJmd0O21wOzxiciAvPisgcmVjeWNs ZV9yeHFfaW5mby0mZ3Q7bWJ1Zl9yaW5nX3NpemUgPSByeHEtJmd0O25iX3J4X2Rlc2M7PGJyIC8+ KyByZWN5Y2xlX3J4cV9pbmZvLSZndDtyZWNlaXZlX3RhaWwgPSAmYW1wO3J4cS0mZ3Q7cnhfdGFp bDs8YnIgLz4rPGJyIC8+KyBpZiAoYWQtJmd0O3J4X3ZlY19hbGxvd2VkKSB7PCEtLSAtLT48YnIg Lz4rIHJlY3ljbGVfcnhxX2luZm8tJmd0O3JlZmlsbF9yZXF1aXJlbWVudCA9IFJURV9JNDBFX1JY UV9SRUFSTV9USFJFU0g7PGJyIC8+KyByZWN5Y2xlX3J4cV9pbmZvLSZndDtyZWZpbGxfaGVhZCA9 ICZhbXA7cnhxLSZndDtyeHJlYXJtX3N0YXJ0OzxiciAvPisgfSBlbHNlIHs8IS0tIC0tPjxiciAv PisgcmVjeWNsZV9yeHFfaW5mby0mZ3Q7cmVmaWxsX3JlcXVpcmVtZW50ID0gcnhxLSZndDtyeF9m cmVlX3RocmVzaDs8YnIgLz4rIHJlY3ljbGVfcnhxX2luZm8tJmd0O3JlZmlsbF9oZWFkID0gJmFt cDtyeHEtJmd0O3J4X2ZyZWVfdHJpZ2dlcjs8YnIgLz4rIH08YnIgLz4rfTxiciAvPis8YnIgLz7C oCNpZmRlZiBSVEVfQVJDSF9YODY8YnIgLz7CoHN0YXRpYyBpbmxpbmUgYm9vbDxiciAvPsKgZ2V0 X2F2eF9zdXBwb3J0ZWQoYm9vbCByZXF1ZXN0X2F2eDUxMik8YnIgLz5AQCAtMzI5MSw2ICszMzE1 LDggQEAgaTQwZV9zZXRfcnhfZnVuY3Rpb24oc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpPGJyIC8+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGV2LSZndDtyeF9wa3RfYnVyc3QgPSBhZC0mZ3Q7cnhfdXNlX2F2eDIgPzxiciAv PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpNDBlX3JlY3Zfc2NhdHRlcmVkX3BrdHNfdmVjX2F2 eDIgOjxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpNDBlX3JlY3Zfc2NhdHRlcmVkX3Br dHNfdmVjOzxiciAvPisgZGV2LSZndDtyZWN5Y2xlX3J4X2Rlc2NyaXB0b3JzX3JlZmlsbCA9PGJy IC8+KyBpNDBlX3JlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsX3ZlYzs8YnIgLz7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH08YnIgLz7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHs8IS0tIC0tPjxiciAvPsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGFkLSZndDtyeF91 c2VfYXZ4NTEyKSB7PCEtLSAtLT48YnIgLz5AQCAtMzMwOSw5ICszMzM1LDEyIEBAIGk0MGVfc2V0 X3J4X2Z1bmN0aW9uKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTxiciAvPsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldi0m Z3Q7cnhfcGt0X2J1cnN0ID0gYWQtJmd0O3J4X3VzZV9hdngyID88YnIgLz7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaTQwZV9yZWN2X3BrdHNfdmVjX2F2eDIgOjxiciAvPsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpNDBlX3JlY3ZfcGt0c192ZWM7PGJyIC8+KyBkZXYtJmd0O3JlY3ljbGVfcnhf ZGVzY3JpcHRvcnNfcmVmaWxsID08YnIgLz4rIGk0MGVfcmVjeWNsZV9yeF9kZXNjcmlwdG9yc19y ZWZpbGxfdmVjOzxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfTxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9PGJyIC8+ wqAjZWxzZSAvKiBSVEVfQVJDSF9YODYgKi88YnIgLz4rIGRldi0mZ3Q7cmVjeWNsZV9yeF9kZXNj cmlwdG9yc19yZWZpbGwgPSBpNDBlX3JlY3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsX3ZlYzs8 YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGRldi0mZ3Q7ZGF0YS0m Z3Q7c2NhdHRlcmVkX3J4KSB7PCEtLSAtLT48YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFBNRF9JTklUX0xPRyhERUJVRyw8YnIgLz7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIlVzaW5nIFZlY3RvciBTY2F0dGVyZWQgUnggKHBvcnQgJWQpLiIsPGJyIC8+ QEAgLTM0NzksMTUgKzM1MDgsMTggQEAgaTQwZV9zZXRfdHhfZnVuY3Rpb24oc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYpPGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2LSZndDt0eF9wa3RfYnVyc3QgPSBhZC0mZ3Q7 dHhfdXNlX2F2eDIgPzxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpNDBlX3htaXRfcGt0c192ZWNfYXZ4MiA6PGJyIC8+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGk0MGVfeG1pdF9wa3RzX3ZlYzs8YnIg Lz4rIGRldi0mZ3Q7cmVjeWNsZV90eF9tYnVmc19yZXVzZSA9IGk0MGVfcmVjeWNsZV90eF9tYnVm c19yZXVzZV92ZWM7PGJyIC8+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9PGJyIC8+wqAjZWxzZSAvKiBSVEVfQVJDSF9YODYgKi88YnIgLz7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFBNRF9JTklUX0xPRyhE RUJVRywgIlVzaW5nIFZlY3RvciBUeCAocG9ydCAlZCkuIiw8YnIgLz7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGV2LSZndDtkYXRhLSZndDtwb3J0X2lkKTs8YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldi0mZ3Q7dHhfcGt0X2J1cnN0ID0gaTQwZV94 bWl0X3BrdHNfdmVjOzxiciAvPisgZGV2LSZndDtyZWN5Y2xlX3R4X21idWZzX3JldXNlID0gaTQw ZV9yZWN5Y2xlX3R4X21idWZzX3JldXNlX3ZlYzs8YnIgLz7CoCNlbmRpZiAvKiBSVEVfQVJDSF9Y ODYgKi88YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHs8IS0t IC0tPjxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgUE1EX0lOSVRfTE9HKERFQlVHLCAiU2ltcGxlIHR4IGZpbmFsbHkgYmUgdXNlZC4iKTs8YnIg Lz7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldi0m Z3Q7dHhfcGt0X2J1cnN0ID0gaTQwZV94bWl0X3BrdHNfc2ltcGxlOzxiciAvPisgZGV2LSZndDty ZWN5Y2xlX3R4X21idWZzX3JldXNlID0gaTQwZV9yZWN5Y2xlX3R4X21idWZzX3JldXNlX3ZlYzs8 YnIgLz7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfTxiciAvPsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXYtJmd0O3R4X3BrdF9wcmVwYXJlID0gaTQwZV9zaW1w bGVfcHJlcF9wa3RzOzxiciAvPsKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7PCEtLSAtLT48YnIg Lz5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaTQwZS9pNDBlX3J4dHguaCBiL2RyaXZlcnMvbmV0 L2k0MGUvaTQwZV9yeHR4Lmg8YnIgLz5pbmRleCA1ZTZlZWNjNTAxLi5lZDg5MjFkZGMwIDEwMDY0 NDxiciAvPi0tLSBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9yeHR4Lmg8YnIgLz4rKysgYi9kcml2 ZXJzL25ldC9pNDBlL2k0MGVfcnh0eC5oPGJyIC8+QEAgLTIzMyw2ICsyMzMsMTAgQEAgdWludDMy X3QgaTQwZV9kZXZfcnhfcXVldWVfY291bnQodm9pZCAqcnhfcXVldWUpOzxiciAvPsKgaW50IGk0 MGVfZGV2X3J4X2Rlc2NyaXB0b3Jfc3RhdHVzKHZvaWQgKnJ4X3F1ZXVlLCB1aW50MTZfdCBvZmZz ZXQpOzxiciAvPsKgaW50IGk0MGVfZGV2X3R4X2Rlc2NyaXB0b3Jfc3RhdHVzKHZvaWQgKnR4X3F1 ZXVlLCB1aW50MTZfdCBvZmZzZXQpOzxiciAvPsKgPGJyIC8+K3VpbnQxNl90IGk0MGVfcmVjeWNs ZV90eF9tYnVmc19yZXVzZV92ZWModm9pZCAqdHhfcXVldWUsPGJyIC8+KyBzdHJ1Y3QgcnRlX2V0 aF9yZWN5Y2xlX3J4cV9pbmZvICpyZWN5Y2xlX3J4cV9pbmZvKTs8YnIgLz4rdm9pZCBpNDBlX3Jl Y3ljbGVfcnhfZGVzY3JpcHRvcnNfcmVmaWxsX3ZlYyh2b2lkICpyeF9xdWV1ZSwgdWludDE2X3Qg bmJfbWJ1ZnMpOzxiciAvPis8YnIgLz7CoHVpbnQxNl90IGk0MGVfcmVjdl9wa3RzX3ZlYyh2b2lk ICpyeF9xdWV1ZSwgc3RydWN0IHJ0ZV9tYnVmICoqcnhfcGt0cyw8YnIgLz7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDE2X3QgbmJf cGt0cyk7PGJyIC8+wqB1aW50MTZfdCBpNDBlX3JlY3Zfc2NhdHRlcmVkX3BrdHNfdmVjKHZvaWQg KnJ4X3F1ZXVlLDxiciAvPmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pNDBlL21lc29uLmJ1aWxk IGIvZHJpdmVycy9uZXQvaTQwZS9tZXNvbi5idWlsZDxiciAvPmluZGV4IDhlNTNiODdhNjUuLjU4 ZWI2MjdhYmMgMTAwNjQ0PGJyIC8+LS0tIGEvZHJpdmVycy9uZXQvaTQwZS9tZXNvbi5idWlsZDxi ciAvPisrKyBiL2RyaXZlcnMvbmV0L2k0MGUvbWVzb24uYnVpbGQ8YnIgLz5AQCAtNDIsNiArNDIs OCBAQCB0ZXN0cG1kX3NvdXJjZXMgPSBmaWxlcygnaTQwZV90ZXN0cG1kLmMnKTxiciAvPsKgZGVw cyArPSBbJ2hhc2gnXTxiciAvPsKgaW5jbHVkZXMgKz0gaW5jbHVkZV9kaXJlY3RvcmllcygnYmFz ZScpPGJyIC8+wqA8YnIgLz4rc291cmNlcyArPSBmaWxlcygnaTQwZV9yZWN5Y2xlX21idWZzX3Zl Y19jb21tb24uYycpPGJyIC8+KzxiciAvPsKgaWYgYXJjaF9zdWJkaXIgPT0gJ3g4Nic8YnIgLz7C oMKgwqDCoMKgc291cmNlcyArPSBmaWxlcygnaTQwZV9yeHR4X3ZlY19zc2UuYycpPGJyIC8+wqA8 L3A+LS08YnIgLz4yLjI1LjE8YnIgLz7CoDwvYmxvY2txdW90ZT4=