From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA9D6C04A6B for ; Sun, 12 May 2019 08:37:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 59C2F206A3 for ; Sun, 12 May 2019 08:37:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="mOiyg+cQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726100AbfELIhs (ORCPT ); Sun, 12 May 2019 04:37:48 -0400 Received: from mail-eopbgr00051.outbound.protection.outlook.com ([40.107.0.51]:61182 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725919AbfELIhr (ORCPT ); Sun, 12 May 2019 04:37:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DR9cMMz0qx3S+NMhc20JFOOdYr7IVcKWriLLTDEMFEg=; b=mOiyg+cQobv4zxS6EPOkeMM077fgMMPLyKla/fUfoGi7YgZOeDbSqotG+Ke4l00WoKHSXHxIqsNTiQJn8yfXJ0caGB14epask520kXTFR3LdAQGxQTsjwYBFaLJVGuvKyNe035qrli5LgobFOh+p1qFDYE8+1tCpahrRTBWrjs8= Received: from AM0PR05MB5089.eurprd05.prod.outlook.com (20.177.41.153) by AM0PR05MB5203.eurprd05.prod.outlook.com (20.178.16.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1878.22; Sun, 12 May 2019 08:37:35 +0000 Received: from AM0PR05MB5089.eurprd05.prod.outlook.com ([fe80::4d74:8969:23d9:85c3]) by AM0PR05MB5089.eurprd05.prod.outlook.com ([fe80::4d74:8969:23d9:85c3%6]) with mapi id 15.20.1878.024; Sun, 12 May 2019 08:37:35 +0000 From: Aya Levin To: Jiri Pirko CC: "netdev@vger.kernel.org" , Eran Ben Elisha , Saeed Mahameed , Jiri Pirko Subject: Re: [PATCH net-next RFC] Dump SW SQ context as part of tx reporter Thread-Topic: [PATCH net-next RFC] Dump SW SQ context as part of tx reporter Thread-Index: AQHU/pZYnyLGqTM5xEOXiNRSU0YqZKZfpzWAgAA3CoCAAqWQAIAEuuUA Date: Sun, 12 May 2019 08:37:35 +0000 Message-ID: <2306cc76-8110-2d55-be7e-0617bfc0d316@mellanox.com> References: <1556547459-7756-1-git-send-email-ayal@mellanox.com> <20190507124129.GC2157@nanopsycho> <20190509082334.GD2268@nanopsycho> In-Reply-To: <20190509082334.GD2268@nanopsycho> Accept-Language: he-IL, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6PR08CA0027.eurprd08.prod.outlook.com (2603:10a6:20b:c0::15) To AM0PR05MB5089.eurprd05.prod.outlook.com (2603:10a6:208:cd::25) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ayal@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2575a5c0-df7b-4d24-41d4-08d6d6b51539 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:AM0PR05MB5203; x-ms-traffictypediagnostic: AM0PR05MB5203: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2733; x-forefront-prvs: 0035B15214 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(39850400004)(376002)(366004)(346002)(396003)(189003)(199004)(26005)(36756003)(4326008)(6246003)(107886003)(14454004)(86362001)(305945005)(11346002)(81156014)(68736007)(186003)(478600001)(446003)(316002)(2616005)(76176011)(14444005)(476003)(54906003)(256004)(25786009)(52116002)(66066001)(99286004)(102836004)(53546011)(386003)(6506007)(486006)(5660300002)(30864003)(53936002)(8676002)(73956011)(31696002)(81166006)(6116002)(3846002)(66556008)(6916009)(66476007)(71200400001)(71190400001)(31686004)(2906002)(66946007)(6486002)(6436002)(6512007)(7736002)(229853002)(64756008)(66446008)(8936002);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR05MB5203;H:AM0PR05MB5089.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: mSvFzmm3OGqWpXW082Qo/8H0Z6vYHVy1tVKvQv73Dq/5GY+ZKO9g/WM6C6sjqQ04e07j8xtGoLUELqjzfXa6BcL2rsI4QWeiER3NXUNPm4WVE6NSpAMCDI6bnRNg4AWGgxNAfTCkn+uRwq4pVoPbO9YPpMhmiu1t1O83yPzGKnNvFvz/4v1SLMoUG91SnQxDeIOQ94aE00F8j6vswvroWneX5X9r+dnyn10SSrzNLEKomWo8AoTnZmrnx9nR00TvWcXNTDa3wEM/Eq5rcUmeQKE+j6VT8X6gDO2bfjSAWRhDjmg+QE1D+6YyugZFK1DVgS612VZ63fnG1CMu17nbV3v/+RO9BfFB/Ln5g6djkWG4b7LFXsc8Jn6RbNR6WwpEaumxmp1cg/zl22JA8J/EgF9yCQrPqG1LSVgsdhQzFIE= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2575a5c0-df7b-4d24-41d4-08d6d6b51539 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 May 2019 08:37:35.6460 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB5203 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQoNCk9uIDUvOS8yMDE5IDExOjIzIEFNLCBKaXJpIFBpcmtvIHdyb3RlOg0KPiBUdWUsIE1heSAw NywgMjAxOSBhdCAwMjo1ODozMlBNIENFU1QsIGF5YWxAbWVsbGFub3guY29tIHdyb3RlOg0KPj4N Cj4+DQo+PiBPbiA1LzcvMjAxOSAzOjQxIFBNLCBKaXJpIFBpcmtvIHdyb3RlOg0KPj4+IE1vbiwg QXByIDI5LCAyMDE5IGF0IDA0OjE3OjM5UE0gQ0VTVCwgYXlhbEBtZWxsYW5veC5jb20gd3JvdGU6 DQo+Pj4+IFRYIHJlcG9ydGVyIHJlcG9ydHMgYW4gZXJyb3Igb24gdHdvIHNjZW5hcmlvczoNCj4+ Pj4gLSBUWCB0aW1lb3V0IG9uIGEgc3BlY2lmaWMgdHggcXVldWUNCj4+Pj4gLSBUWCBjb21wbGV0 aW9uIGVycm9yIG9uIGEgc3BlY2lmaWMgc2VuZCBxdWV1ZQ0KPj4+PiBQcmlvciB0byB0aGlzIHBh dGNoLCBubyBkdW1wIGRhdGEgd2FzIHN1cHBvcnRlZCBieSB0aGUgdHggcmVwb3J0ZXIuIFRoaXMN Cj4+Pj4gcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBTVyBkYXRhIGR1bXAgb2YgdGhlIHJlbGF0ZWQg U1EgY29udGV4dC4gVGhlIGR1bXANCj4+Pj4gaXMgc2ltcGx5IHRoZSBTUSdzIHJhdyBtZW1vcnkg c25hcHNob3QgdGFrZW4gcmlnaHQgYWZ0ZXIgdGhlIGVycm9yIHdhcw0KPj4+PiByZXBvcnRlZCwg YmVmb3JlIGFueSByZWNvdmVyeSBwcm9jZWR1cmUgd2FzIGxhdW5jaGVkLiBXaXRoIHRoaXMNCj4+ Pj4gYXBwcm9hY2gsIG5vIG1haW50ZW5hbmNlIGlzIG5lZWRlZCBhcyB0aGUgZHJpdmVyIGZldGNo IHRoZSBhY3R1YWwgZGF0YQ0KPj4+PiBhY2NvcmRpbmcgdG8gdGhlIGxheW91dCBvbiB3aGljaCB0 aGUgU1Egd2FzIGNvbXBpbGVkIHdpdGguICBCeSBwcm92aWRpbmcNCj4+Pj4gYSBTVyBjb250ZXh0 LCBvbmUgY2FuIGVhc2lseSBkZWJ1ZyBlcnJvciBvbiBhIGdpdmVuIFNRLg0KPj4+Pg0KPj4+PiBJ biBvcmRlciB0byBvZmZsaW5lIHRyYW5zbGF0ZSB0aGUgcmF3IG1lbW9yeSBpbnRvIGEgaHVtYW4g cmVhZGFibGUNCj4+Pj4gZm9ybWF0LCB0aGUgdXNlciBjYW4gdXNlIHNvbWUgb3V0LW9mLWtlcm5l bCBzY3JpcHRzIHdoaWNoIHJlY2VpdmVzIGFzIGFuDQo+Pj4+IGlucHV0IHRoZSBmb2xsb3dpbmc6 DQo+Pj4+IC0gT2JqZWN0IHJhdyBtZW1vcnkNCj4+Pj4gLSBEcml2ZXIgb2JqZWN0IGNvbXBpbGVk IHdpdGggZGVidWcgaW5mbyAoY2FuIGJlIHRha2VuL2dlbmVyYXRlZCBhdCBhbnkgdGltZSBmcm9t IHRoZSBtYWNoaW5lKQ0KPj4+PiAtIE9iamVjdCBuYW1lDQo+Pj4+DQo+Pj4+IEFuIGV4YW1wbGUg b2Ygc3VjaCBzY3JpcHQgb3V0cHV0IGNhbiBiZSBzZWVuIGJlbG93Lg0KPj4+PiBOb3RlOiB0aGUg c2NyaXB0IGlzIG5vdCBvZmZlcmVkIGFzIHBhcnQgb2YgdGhpcyBwYXRjaCBhcyBpdCBkbyBub3QN Cj4+Pj4gYmVsb25nIHRvIHRoZSBrZXJuZWwsIEkganVzdCBkZXNjcmliZWQgaXQgaW4gb3JkZXIg dG8gZ3Jhc3AgdGhlIGdlbmVyYWwNCj4+Pj4gaWRlYSBvZiBob3cvd2hhdCBjYW4gYmUgZmV0Y2hl ZCBmcm9tIFNXIGR1bXAgdmlhIGRldmxpbmsgaGVhbHRoLg0KPj4+Pg0KPj4+PiBUaGUgb3V0cHV0 IG9mIHRoZSBTVyBkdW1wIGNhbiBiZSBleHRyYWN0ZWQgYnkgZGV2bGluayBoZWFsdGggY29tbWFu ZDoNCj4+Pj4gJCBzdWRvIGRldmxpbmsgaGVhbHRoIGR1bXAgc2hvdyBwY2kvMDAwMDowMDowYi4w IHJlcG9ydGVyIHR4Lg0KPj4+PiBtbHg1ZV90eHFzcTogc3FuOiA2MzM2DQo+Pj4+IG1lbW9yeToN Cj4+Pj4gICAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQo+Pj4+ICAgICAwMSAwMCAwMCAwMCAw MCAwMCAwMCAwMA0KPj4+PiAgICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+Pj4gICAgIDQ1 IGY0IDg4IGNiIDA5IDAwIDAwIDAwDQo+Pj4+ICAgICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0K Pj4+PiAgICAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCj4+Pj4gICAgIGMwIGZmIGZmIGZmIDFm IDAwIDAwIDAwDQo+Pj4+ICAgICBmOCAxOCAxZSA4OSA4MSA4OCBmZiBmZg0KPj4+PiAgICAgLi4u DQo+Pj4+DQo+Pj4+IHNjcmlwdCBvdXRwdXQgYmVsb3csIHdpdGggc3RydWN0IG1lbWJlcnMgbmFt ZXMgYW5kIGFjdHVhbCB2YWx1ZXM6DQo+Pj4+DQo+Pj4+IHN0cnVjdCAgbWx4NWVfdHhxc3Egew0K Pj4+PiAJc2hvcnQgdW5zaWduZWQgaW50ICAgICAgICAgY2MgCSAweDUgOw0KPj4+PiAJdW5zaWdu ZWQgaW50ICAgICAgICAgICAgICAgZG1hX2ZpZm9fY2MgCSAweDUgOw0KPj4+PiAJc3RydWN0ICBu ZXRfZGltIHsNCj4+Pj4gCQl1bnNpZ25lZCBjaGFyICAgICAgc3RhdGUgCSAweDEgOw0KPj4+PiAJ CXN0cnVjdCAgbmV0X2RpbV9zdGF0cyB7DQo+Pj4+IAkJCWludCAgICAgICAgcHBtcyAJIDB4MCA7 DQo+Pj4+IAkJCWludCAgICAgICAgYnBtcyAJIDB4MCA7DQo+Pj4+IAkJCWludCAgICAgICAgZXBt cyAJIDB4MCA7DQo+Pj4+IAkJfSBwcmV2X3N0YXRzOw0KPj4+PiAJCXN0cnVjdCAgbmV0X2RpbV9z YW1wbGUgew0KPj4+PiAJCQlsb25nIGxvbmcgaW50IHRpbWUgCSAweDkwNzY2ZWY5ZCA7DQo+Pj4+ IAkJCXVuc2lnbmVkIGludCBwa3RfY3RyIAkgMHgwIDsNCj4+Pj4gCQkJdW5zaWduZWQgaW50IGJ5 dGVfY3RyIAkgMHgwIDsNCj4+Pj4gCQkJc2hvcnQgdW5zaWduZWQgaW50IGV2ZW50X2N0ciAJIDB4 MCA7DQo+Pj4+IAkJfSBzdGFydF9zYW1wbGU7DQo+Pj4+IAkJc3RydWN0ICB3b3JrX3N0cnVjdCB7 DQo+Pj4+IAkJCXN0cnVjdCAgIHsNCj4+Pj4gCQkJCWxvbmcgaW50IGNvdW50ZXIgCSAweDFmZmZm ZmZmYzAgOw0KPj4+PiAJCQl9IGRhdGE7DQo+Pj4+IAkJCXN0cnVjdCAgbGlzdF9oZWFkIHsNCj4+ Pj4gCQkJCXN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0IAkgMHhmZmZmODg4MWIwODk5OGY4IDsNCj4+ Pj4gCQkJCXN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2IAkgMHhmZmZmODg4MWIwODk5OGY4IDsNCj4+ Pj4gCQkJfSBlbnRyeTsNCj4+Pj4gCQkJdm9pZCAgICAgICAoKmZ1bmMpKHN0cnVjdCB3b3JrX3N0 cnVjdCAqKSAJIDB4ZmZmZmZmZmZhMDJkMGUzMCA7DQo+Pj4+IAkJfSB3b3JrOw0KPj4+PiAJCXVu c2lnbmVkIGNoYXIgICAgICBwcm9maWxlX2l4IAkgMHg2MCA7DQo+Pj4+IAkJdW5zaWduZWQgY2hh ciAgICAgIG1vZGUgCSAweDcyIDsNCj4+Pj4gCQl1bnNpZ25lZCBjaGFyICAgICAgdHVuZV9zdGF0 ZSAJIDB4MzUgOw0KPj4+PiAJCXVuc2lnbmVkIGNoYXIgICAgICBzdGVwc19yaWdodCAJIDB4YTAg Ow0KPj4+PiAJCXVuc2lnbmVkIGNoYXIgICAgICBzdGVwc19sZWZ0IAkgMHhmZiA7DQo+Pj4+IAkJ dW5zaWduZWQgY2hhciAgICAgIHRpcmVkIAkgMHhmZiA7DQo+Pj4+IAl9IGRpbTsNCj4+Pj4gCXNo b3J0IHVuc2lnbmVkIGludCAgICAgICAgIHBjIAkgMHgwIDsNCj4+Pj4gCXVuc2lnbmVkIGludCAg ICAgICAgICAgICAgIGRtYV9maWZvX3BjIAkgMHgwIDsNCj4+Pj4gCXN0cnVjdCAgbWx4NWVfY3Eg ew0KPj4+PiAJCXN0cnVjdCAgbWx4NV9jcXdxIHsNCj4+Pj4gCQkJc3RydWN0ICBtbHg1X2ZyYWdf YnVmX2N0cmwgew0KPj4+PiAJCQkJc3RydWN0IG1seDVfYnVmX2xpc3QgKiBmcmFncyAJIDB4NTAw MDAwMDA1IDsNCj4+Pj4gCQkJCXVuc2lnbmVkIGludCBzel9tMSAJIDB4MCA7DQo+Pj4+IAkJCQlz aG9ydCB1bnNpZ25lZCBpbnQgZnJhZ19zel9tMSAJIDB4MCA7DQo+Pj4+IAkJCQlzaG9ydCB1bnNp Z25lZCBpbnQgc3RyaWRlc19vZmZzZXQgCSAweDAgOw0KPj4+PiAJCQkJdW5zaWduZWQgY2hhciBs b2dfc3ogCSAweDAgOw0KPj4+PiAJCQkJdW5zaWduZWQgY2hhciBsb2dfc3RyaWRlIAkgMHgwIDsN Cj4+Pj4gCQkJCXVuc2lnbmVkIGNoYXIgbG9nX2ZyYWdfc3RyaWRlcyAJIDB4MCA7DQo+Pj4+IAkJ CX0gZmJjOw0KPj4+PiAJCQlfX2JlMzIgKiAgIGRiIAkgMHgwIDsNCj4+Pj4gCQkJdW5zaWduZWQg aW50IGNjIAkgMHgwIDsNCj4+Pj4gCQl9IHdxOw0KPj4+PiAJCXNob3J0IHVuc2lnbmVkIGludCBl dmVudF9jdHIgCSAweDAgOw0KPj4+PiAJCXN0cnVjdCBuYXBpX3N0cnVjdCAqIG5hcGkgCSAweDAg Ow0KPj4+PiAJCXN0cnVjdCAgbWx4NV9jb3JlX2NxIHsNCj4+Pj4gCQkJdW5zaWduZWQgaW50IGNx biAJIDB4MCA7DQo+Pj4+IAkJCWludCAgICAgICAgY3FlX3N6IAkgMHgwIDsNCj4+Pj4gCQkJX19i ZTMyICogICBzZXRfY2lfZGIgCSAweGZmZmY4ODgxYjFhYTQ5ODggOw0KPj4+PiAJCQlfX2JlMzIg KiAgIGFybV9kYiAJIDB4M2YwMDAwMDNmZiA7DQo+Pj4+IAkJCXN0cnVjdCBtbHg1X3VhcnNfcGFn ZSAqIHVhciAJIDB4NjA2MGEgOw0KPj4+PiAJCQlzdHJ1Y3QgIHJlZmNvdW50X3N0cnVjdCB7DQo+ Pj4+IAkJCQlzdHJ1Y3QgICB7DQo+Pj4+IAkJCQkJaW50ICAgIGNvdW50ZXIgCSAweGExODE0NTAw IDsNCj4+Pj4gCQkJCX0gcmVmczsNCj4+Pj4gCQkJfSByZWZjb3VudDsNCj4+Pj4gCQkJc3RydWN0 ICBjb21wbGV0aW9uIHsNCj4+Pj4gCQkJCXVuc2lnbmVkIGludCBkb25lIAkgMHg1IDsNCj4+Pj4g CQkJCXN0cnVjdCAgd2FpdF9xdWV1ZV9oZWFkIHsNCj4+Pj4gCQkJCQlzdHJ1Y3QgIHNwaW5sb2Nr IHsNCj4+Pj4gCQkJCQkJdW5pb24gICB7DQo+Pj4+IAkJCQkJCQlzdHJ1Y3QgIHJhd19zcGlubG9j ayB7DQo+Pj4+IAkJCQkJCQkJc3RydWN0ICBxc3BpbmxvY2sgew0KPj4+PiAJCQkJCQkJCQl1bmlv biAgIHsNCj4+Pj4gCQkJCQkJCQkJCXN0cnVjdCAgIHsNCj4+Pj4gCQkJCQkJCQkJCQlpbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlciAJ IDB4NSA7DQo+Pj4+IAkJCQkJCQkJCQl9IHZhbDsNCj4+Pj4gCQkJCQkJCQkJCXN0cnVjdCAgIHsN Cj4+Pj4gCQkJCQkJCQkJCQl1bnNpZ25lZCBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbG9ja2VkIAkgMHg1IDsNCj4+Pj4gCQkJCQkJCQkJCQl1bnNpZ25lZCBj aGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZyAJIDB4 MCA7DQo+Pj4+IAkJCQkJCQkJCQl9IDsNCj4+Pj4gCQkJCQkJCQkJCXN0cnVjdCAgIHsNCj4+Pj4g CQkJCQkJCQkJCQlzaG9ydCB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9ja2VkX3BlbmRpbmcgCSAweDUgOw0KPj4+PiAJCQkJCQkJCQkJCXNob3J0IHVu c2lnbmVkIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWlsIAkgMHgw IDsNCj4+Pj4gCQkJCQkJCQkJCX0gOw0KPj4+PiAJCQkJCQkJCQl9IDsNCj4+Pj4gCQkJCQkJCQl9 IHJhd19sb2NrOw0KPj4+PiAJCQkJCQkJfSBybG9jazsNCj4+Pj4gCQkJCQkJfSA7DQo+Pj4+IAkJ CQkJfSBsb2NrOw0KPj4+PiAJCQkJCXN0cnVjdCAgbGlzdF9oZWFkIHsNCj4+Pj4gCQkJCQkJc3Ry dWN0IGxpc3RfaGVhZCAqIG5leHQgCSAweGZmZmY4ODgxYjA4OWJiODggOw0KPj4+PiAJCQkJCQlz dHJ1Y3QgbGlzdF9oZWFkICogcHJldiAJIDB4NDAwMDAwMGMwYSA7DQo+Pj4+IAkJCQkJfSBoZWFk Ow0KPj4+PiAJCQkJfSB3YWl0Ow0KPj4+PiAJCQl9IGZyZWU7DQo+Pj4+IAkJCXVuc2lnbmVkIGlu dCB2ZWN0b3IgCSAweGExODE0NTAwIDsNCj4+Pj4gCQkJdW5zaWduZWQgaW50IGlycW4gCSAweGZm ZmY4ODgxIDsNCj4+Pj4gCQkJdm9pZCAgICAgICAoKmNvbXApKHN0cnVjdCBtbHg1X2NvcmVfY3Eg KikgCSAweGZmZmY4ODgxYTE4MTQ1MDQgOw0KPj4+PiAJCQl2b2lkICAgICAgICgqZXZlbnQpKHN0 cnVjdCBtbHg1X2NvcmVfY3EgKiwgZW51bSBtbHg1X2V2ZW50KSAJIDB4ZmZmZjg4ODFhMmNkZWEw OCA7DQo+Pj4+IAkJCXVuc2lnbmVkIGludCBjb25zX2luZGV4IAkgMHgxIDsNCj4+Pj4gCQkJdW5z aWduZWQgaW50IGFybV9zbiAJIDB4MCA7DQo+Pj4+IAkJCXN0cnVjdCBtbHg1X3JzY19kZWJ1ZyAq IGRiZyAJIDB4MCA7DQo+Pj4+IAkJCWludCAgICAgICAgcGlkIAkgMHgwIDsNCj4+Pj4gCQkJc3Ry dWN0ICAgew0KPj4+PiAJCQkJc3RydWN0ICBsaXN0X2hlYWQgew0KPj4+PiAJCQkJCXN0cnVjdCBs aXN0X2hlYWQgKiBuZXh0IAkgMHhmZmZmZmZmZiA7DQo+Pj4+IAkJCQkJc3RydWN0IGxpc3RfaGVh ZCAqIHByZXYgCSAweGZmZmZmZmZmZmZmZmZmZmYgOw0KPj4+PiAJCQkJfSBsaXN0Ow0KPj4+PiAJ CQkJdm9pZCAoKmNvbXApKHN0cnVjdCBtbHg1X2NvcmVfY3EgKikgCSAweGZmZmZmZmZmYTAzNTY5 NDAgOw0KPj4+PiAJCQkJdm9pZCAqIHByaXYgCSAweDAgOw0KPj4+PiAJCQl9IHRhc2tsZXRfY3R4 Ow0KPj4+PiAJCQlpbnQgICAgICAgIHJlc2V0X25vdGlmeV9hZGRlZCAJIDB4MCA7DQo+Pj4+IAkJ CXN0cnVjdCAgbGlzdF9oZWFkIHsNCj4+Pj4gCQkJCXN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0IAkg MHhmZmZmZmZmZmEwMzAwNzAwIDsNCj4+Pj4gCQkJCXN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2IAkg MHhkIDsNCj4+Pj4gCQkJfSByZXNldF9ub3RpZnk7DQo+Pj4+IAkJCXN0cnVjdCBtbHg1X2VxX2Nv bXAgKiBlcSAJIDB4MCA7DQo+Pj4+IAkJCXNob3J0IHVuc2lnbmVkIGludCB1aWQgCSAweDlhNzAg Ow0KPj4+PiAJCX0gbWNxOw0KPj4+PiAJCXN0cnVjdCBtbHg1ZV9jaGFubmVsICogY2hhbm5lbCAJ IDB4ZmZmZjg4ODFiMDg5OWE3MCA7DQo+Pj4+IAkJc3RydWN0IG1seDVfY29yZV9kZXYgKiBtZGV2 IAkgMHg0ODAwMDAwMDAxIDsNCj4+Pj4gCQlzdHJ1Y3QgIG1seDVfd3FfY3RybCB7DQo+Pj4+IAkJ CXN0cnVjdCBtbHg1X2NvcmVfZGV2ICogbWRldiAJIDB4ZmZmZmZmZmZhMDJkNTM1MCA7DQo+Pj4+ IAkJCXN0cnVjdCAgbWx4NV9mcmFnX2J1ZiB7DQo+Pj4+IAkJCQlzdHJ1Y3QgbWx4NV9idWZfbGlz dCAqIGZyYWdzIAkgMHhmZmZmZmZmZmEwMmQ1NDYwIDsNCj4+Pj4gCQkJCWludCBucGFnZXMgCSAw eDAgOw0KPj4+PiAJCQkJaW50IHNpemUgCSAweDUgOw0KPj4+PiAJCQkJdW5zaWduZWQgY2hhciBw YWdlX3NoaWZ0IAkgMHg4IDsNCj4+Pj4gCQkJfSBidWY7DQo+Pj4+IAkJCXN0cnVjdCAgbWx4NV9k YiB7DQo+Pj4+IAkJCQlfX2JlMzIgKiBkYiAJIDB4MWM2IDsNCj4+Pj4gCQkJCXVuaW9uICAgew0K Pj4+PiAJCQkJCXN0cnVjdCBtbHg1X2RiX3BnZGlyICogcGdkaXIgCSAweDAgOw0KPj4+PiAJCQkJ CXN0cnVjdCBtbHg1X2liX3VzZXJfZGJfcGFnZSAqIHVzZXJfcGFnZSAJIDB4MCA7DQo+Pj4+IAkJ CQl9IHU7DQo+Pj4+IAkJCQlsb25nIGxvbmcgdW5zaWduZWQgaW50IGRtYSAJIDB4ZmZmZjg4ODFi MDg5OWFiMCA7DQo+Pj4+IAkJCQlpbnQgaW5kZXggCSAweDAgOw0KPj4+PiAJCQl9IGRiOw0KPj4+ PiAJCX0gd3FfY3RybDsNCj4+Pj4gCX0gY3E7DQo+Pj4+IAlzdHJ1Y3QgIG1seDVfd3FfY3ljIHsN Cj4+Pj4gCQlzdHJ1Y3QgIG1seDVfZnJhZ19idWZfY3RybCB7DQo+Pj4+IAkJCXN0cnVjdCBtbHg1 X2J1Zl9saXN0ICogZnJhZ3MgCSAweGZmZmY4ODgxYTc2MDAxNjAgOw0KPj4+PiAJCQl1bnNpZ25l ZCBpbnQgc3pfbTEgCSAweGE3NjAwMTYwIDsNCj4+Pj4gCQkJc2hvcnQgdW5zaWduZWQgaW50IGZy YWdfc3pfbTEgCSAweDg4ODEgOw0KPj4+PiAJCQlzaG9ydCB1bnNpZ25lZCBpbnQgc3RyaWRlc19v ZmZzZXQgCSAweGZmZmYgOw0KPj4+PiAJCQl1bnNpZ25lZCBjaGFyIGxvZ19zeiAJIDB4ODggOw0K Pj4+PiAJCQl1bnNpZ25lZCBjaGFyIGxvZ19zdHJpZGUgCSAweDQ5IDsNCj4+Pj4gCQkJdW5zaWdu ZWQgY2hhciBsb2dfZnJhZ19zdHJpZGVzIAkgMHhhYSA7DQo+Pj4+IAkJfSBmYmM7DQo+Pj4+IAkJ X19iZTMyICogICAgICAgICAgIGRiIAkgMHgxMDAwMDAwMDAwMDEwIDsNCj4+Pj4gCQlzaG9ydCB1 bnNpZ25lZCBpbnQgc3ogCSAweGMgOw0KPj4+PiAJCXNob3J0IHVuc2lnbmVkIGludCB3cWVfY3Ry IAkgMHgwIDsNCj4+Pj4gCQlzaG9ydCB1bnNpZ25lZCBpbnQgY3VyX3N6IAkgMHgwIDsNCj4+Pj4g CX0gd3E7DQo+Pj4+IAl1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICBkbWFfZmlmb19tYXNrIAkg MHhhMTgxNDUwMCA7DQo+Pj4+IAlzdHJ1Y3QgbWx4NWVfc3Ffc3RhdHMgKiAgICBzdGF0cyAJIDB4 ZmZmZjg4ODFhMzNhMDM0OCA7DQo+Pj4+IAlzdHJ1Y3QgICB7DQo+Pj4+IAkJc3RydWN0IG1seDVl X3NxX2RtYSAqIGRtYV9maWZvIAkgMHgxYTE4MTQ1MDAgOw0KPj4+PiAJCXN0cnVjdCBtbHg1ZV90 eF93cWVfaW5mbyAqIHdxZV9pbmZvIAkgMHgxNCA7DQo+Pj4+IAl9IGRiOw0KPj4+PiAJdm9pZCAq ICAgICAgICAgICAgICAgICAgICAgdWFyX21hcCAJIDB4MCA7DQo+Pj4+IAlzdHJ1Y3QgbmV0ZGV2 X3F1ZXVlICogICAgICB0eHEgCSAweDAgOw0KPj4+PiAJdW5zaWduZWQgaW50ICAgICAgICAgICAg ICAgc3FuIAkgMHgxOGMwIDsNCj4+Pj4gCXVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgIG1pbl9p bmxpbmVfbW9kZSAJIDB4MCA7DQo+Pj4+IAlzdHJ1Y3QgZGV2aWNlICogICAgICAgICAgICBwZGV2 IAkgMHgwIDsNCj4+Pj4gCXVuc2lnbmVkIGludCAgICAgICAgICAgICAgIG1rZXlfYmUgCSAweDAg Ow0KPj4+PiAJbG9uZyB1bnNpZ25lZCBpbnQgICAgICAgICAgc3RhdGUgCSAweDAgOw0KPj4+PiAJ c3RydWN0IGh3dHN0YW1wX2NvbmZpZyAqICAgdHN0YW1wIAkgMHgwIDsNCj4+Pj4gCXN0cnVjdCBt bHg1X2Nsb2NrICogICAgICAgIGNsb2NrIAkgMHhmZmZmODg4MWIxYWE2Zjg4IDsNCj4+Pj4gCXN0 cnVjdCAgbWx4NV93cV9jdHJsIHsNCj4+Pj4gCQlzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqIG1kZXYg CSAweDNmMDAwMDAzZmYgOw0KPj4+PiAJCXN0cnVjdCAgbWx4NV9mcmFnX2J1ZiB7DQo+Pj4+IAkJ CXN0cnVjdCBtbHg1X2J1Zl9saXN0ICogZnJhZ3MgCSAweDYwNjBhIDsNCj4+Pj4gCQkJaW50ICAg ICAgICBucGFnZXMgCSAweGExODE0NjA0IDsNCj4+Pj4gCQkJaW50ICAgICAgICBzaXplIAkgMHhm ZmZmODg4MSA7DQo+Pj4+IAkJCXVuc2lnbmVkIGNoYXIgcGFnZV9zaGlmdCAJIDB4MCA7DQo+Pj4+ IAkJfSBidWY7DQo+Pj4+IAkJc3RydWN0ICBtbHg1X2RiIHsNCj4+Pj4gCQkJX19iZTMyICogICBk YiAJIDB4ZmZmIDsNCj4+Pj4gCQkJdW5pb24gICB7DQo+Pj4+IAkJCQlzdHJ1Y3QgbWx4NV9kYl9w Z2RpciAqIHBnZGlyIAkgMHgwIDsNCj4+Pj4gCQkJCXN0cnVjdCBtbHg1X2liX3VzZXJfZGJfcGFn ZSAqIHVzZXJfcGFnZSAJIDB4MCA7DQo+Pj4+IAkJCX0gdTsNCj4+Pj4gCQkJbG9uZyBsb25nIHVu c2lnbmVkIGludCBkbWEgCSAweGZmZmY4ODgxODg0NDAwMDAgOw0KPj4+PiAJCQlpbnQgICAgICAg IGluZGV4IAkgMHg4YjA3NDAwMCA7DQo+Pj4+IAkJfSBkYjsNCj4+Pj4gCX0gd3FfY3RybDsNCj4+ Pj4gCXN0cnVjdCBtbHg1ZV9jaGFubmVsICogICAgIGNoYW5uZWwgCSAweGZmZmZjOTAwMDAxMGQ4 MDAgOw0KPj4+PiAJaW50ICAgICAgICAgICAgICAgICAgICAgICAgdHhxX2l4IAkgMHhhMDAyMDE4 MCA7DQo+Pj4+IAl1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICByYXRlX2xpbWl0IAkgMHhmZmZm ODg4MSA7DQo+Pj4+IAlzdHJ1Y3QgIHdvcmtfc3RydWN0IHsNCj4+Pj4gCQlzdHJ1Y3QgICB7DQo+ Pj4+IAkJCWxvbmcgaW50ICAgY291bnRlciAJIDB4MTAwMDAxOGMwIDsNCj4+Pj4gCQl9IGRhdGE7 DQo+Pj4+IAkJc3RydWN0ICBsaXN0X2hlYWQgew0KPj4+PiAJCQlzdHJ1Y3QgbGlzdF9oZWFkICog bmV4dCAJIDB4ZmZmZjg4ODFjMzJiNjhlOCA7DQo+Pj4+IAkJCXN0cnVjdCBsaXN0X2hlYWQgKiBw cmV2IAkgMHg4MDAgOw0KPj4+PiAJCX0gZW50cnk7DQo+Pj4+IAkJdm9pZCAgICAgICAgICAgICAg ICgqZnVuYykoc3RydWN0IHdvcmtfc3RydWN0ICopIAkgMHg5IDsNCj4+Pj4gCX0gcmVjb3Zlcl93 b3JrOw0KPj4+PiB9IDsNCj4+Pg0KPj4+IEkgZG9uJ3QgZ2V0IGl0LiBZb3UgYXJlIGR1bXBpbmcg bGl2ZSBrZXJuZWwgbWVtb3J5PyBUaGVyZSBhcmUgYWxyZWFkeQ0KPj4+IGZhY2lsaXRpZXMgdG8g ZG8gdGhhdCBpbiBwbGFjZS4gV2h5IHRvIHJlcGxpY2F0ZSBpdD8NCj4+IEkgYW0gZHVtcGluZyB0 aGUgZHJpdmVyJ3MgbWVtb3J5IHVuZGVyIGEgbG9jayBzbyBJIGNhbiBlbnN1cmUgaXQncw0KPj4g Y29uc2lzdGVuY3kgKGFzIGFwcG9zZSB0byAvZGV2L21lbSkNCj4+IHZtY29yZSBjYW5ub3QgYmUg dGFrZW4gZnJvbSBhIGxpdmUga2VybmVsICh3aXRob3V0IGNyYXNoaW5nKS4NCj4+IEkgbmVlZCB0 aGUgbWVtb3J5J3Mgc25hcHNob3QgcmlnaHQgYWZ0ZXIgdGhlIGVycm9yIGZyb20gdGhlIGRyaXZl cidzDQo+PiBjb250ZXh0Lg0KPiANCj4gR290IGl0LiBIb3dldmVyLCB0aGlzIHNvdW5kcyBsaWtl IGEgZ2VuZXJpYyBwcm9ibGVtIG5vdCBzcGVjaWZpYyB0bw0KPiBuaWMgZHJpdmVycy4gSG93IG90 aGVyIHN1YnN5c3RlbXMgcmVzb2x2ZSB0aGlzIChpZiB0aGV5IGRvIGF0IGFsbCk/DQo+IA0KPiAN CkNvcnJlY3QsIHRoaXMgaXMgYSBzdWdnZXN0ZWQgZGVidWdnaW5nIHNvbHV0aW9uIGZvciBhIGdl bmVyaWMgcHJvYmxlbTogDQplbmFibGluZyB0aGUgdXNlciBvZiBhIHJ1biB0aW1lIG1lbW9yeSBz bmFwc2hvdCBmb3Iga2VybmVsIG1vZHVsZXMgKGF0IGEgDQpnaXZlbiBlcnJvciBldmVudCkuIE15 IHJlc2VhcmNoIHNob3dzIHRoYXQgb3RoZXIgc3Vic3lzdGVtcyBkZWFsIHdpdGggDQplcnJvcnMg ZWl0aGVyIGJ5IHBhbmlja2luZyAodG9vIG11Y2gpIG9yIGJ5IGRlYnVnL2xvZyBwcmludHMgKHRv byBsaXR0bGUpLg0KVGhpcyBzb2x1dGlvbiBpcyAoYSkgbG93IGluIG1haW50ZW5hbmNlIChiKSBj b25zaXN0ZW50IGluIG1lbW9yeSAoYykgaGFzIA0Kc21hbGwgcGVyZm9ybWFuY2UgaW1wYWN0IChk KSB1c2UgYW4gZXhpc3RpbmcgaW5mcmEtc3RydWN0dXJlIGJldHdlZW4gdGhlIA0Ka2VybmVsIG1v ZHVsZSBhbmQgdGhlIHVzZXIgc3BhY2UuDQpJdCBtaWdodCBiZSBwb3J0ZWQgdG8gb3RoZXIgc3Vi c3lzdGVtcyB1c2luZyB0aGVpciBvd24gdXNlci1zcGFjZSB2cy4gDQprZXJuZWwgdG9vbHMuIFJl Z2FyZGxlc3Mgb2YgaG93IHRoZSBtZW1vcnkgb3V0cHV0IHdhcyBnZW5lcmF0ZWQgdG8gdGhlIA0K dXNlciwgdGhlIHBhcnNpbmcgc2NyaXB0IGNhbiB3b3JrIG9uIGl0Lg0KDQo+IA0KPj4gV2hpY2gg b3RoZXIgdG9vbHMgZG8geW91IG1lYW4/DQo+Pj4NCj4+Pg0KPj4+Pg0KPj4+PiBTaWduZWQtb2Zm LWJ5OiBBeWEgTGV2aW4gPGF5YWxAbWVsbGFub3guY29tPg0KPj4+PiAtLS0NCj4+Pj4gLi4uL2V0 aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXBvcnRlcl90eC5jICAgfCAxMDAgKysrKysr KysrKysrKysrKysrKysrDQo+Pj4+IDEgZmlsZSBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKQ0K Pj4+Pg0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2VuL3JlcG9ydGVyX3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZW4vcmVwb3J0ZXJfdHguYw0KPj4+PiBpbmRleCA0NzZkZDk3ZjdmMmYuLjhhMzlm NTUyNWU1NyAxMDA2NDQNCj4+Pj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2VuL3JlcG9ydGVyX3R4LmMNCj4+Pj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcG9ydGVyX3R4LmMNCj4+Pj4gQEAgLTksNiArOSw3 IEBADQo+Pj4+DQo+Pj4+IHN0cnVjdCBtbHg1ZV90eF9lcnJfY3R4IHsNCj4+Pj4gCWludCAoKnJl Y292ZXIpKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpOw0KPj4+PiArCWludCAoKmR1bXApKHN0cnVj dCBtbHg1ZV90eHFzcSAqc3EpOw0KPj4+PiAJc3RydWN0IG1seDVlX3R4cXNxICpzcTsNCj4+Pj4g fTsNCj4+Pj4NCj4+Pj4gQEAgLTI4MSwxMCArMjgyLDEwOSBAQCBzdGF0aWMgaW50IG1seDVlX3R4 X3JlcG9ydGVyX2RpYWdub3NlKHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqcmVwb3J0 ZXIsDQo+Pj4+IAlyZXR1cm4gZXJyOw0KPj4+PiB9DQo+Pj4+DQo+Pj4+ICtzdGF0aWMgaW50IG1s eDVlX3R4X3JlcG9ydGVyX3N3X2R1bXBfZnJvbV9jdHgoc3RydWN0IG1seDVlX3ByaXYgKnByaXYs DQo+Pj4+ICsJCQkJCSAgICAgIHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EsDQo+Pj4+ICsJCQkJCSAg ICAgIHN0cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2cpDQo+Pj4+ICt7DQo+Pj4+ICsJdTY0ICpwdHIg PSAodTY0ICopc3E7DQo+Pj4+ICsJaW50IGNvcHksIGVycjsNCj4+Pj4gKwlpbnQgaSA9IDA7DQo+ Pj4+ICsNCj4+Pj4gKwlpZiAoIXRlc3RfYml0KE1MWDVFX1NUQVRFX09QRU5FRCwgJnByaXYtPnN0 YXRlKSkNCj4+Pj4gKwkJcmV0dXJuIDA7DQo+Pj4+ICsNCj4+Pj4gKwllcnIgPSBkZXZsaW5rX2Zt c2dfcGFpcl9uZXN0X3N0YXJ0KGZtc2csICJtbHg1ZV90eHFzcSIpOw0KPj4+PiArCWlmIChlcnIp DQo+Pj4+ICsJCXJldHVybiBlcnI7DQo+Pj4+ICsNCj4+Pj4gKwllcnIgPSBkZXZsaW5rX2Ztc2df b2JqX25lc3Rfc3RhcnQoZm1zZyk7DQo+Pj4+ICsJaWYgKGVycikNCj4+Pj4gKwkJcmV0dXJuIGVy cjsNCj4+Pj4gKw0KPj4+PiArCWVyciA9IGRldmxpbmtfZm1zZ19hcnJfcGFpcl9uZXN0X3N0YXJ0 KGZtc2csICJtZW1vcnkiKTsNCj4+Pj4gKwlpZiAoZXJyKQ0KPj4+PiArCQlyZXR1cm4gZXJyOw0K Pj4+PiArDQo+Pj4+ICsJd2hpbGUgKGkgPCBzaXplb2Yoc3RydWN0IG1seDVlX3R4cXNxKSkgew0K Pj4+PiArCQljb3B5ID0gc2l6ZW9mKHU2NCk7DQo+Pj4+ICsNCj4+Pj4gKwkJaWYgKGkgKyBjb3B5 ID4gc2l6ZW9mKHN0cnVjdCBtbHg1ZV90eHFzcSkpDQo+Pj4+ICsJCQljb3B5ID0gc2l6ZW9mKHN0 cnVjdCBtbHg1ZV90eHFzcSkgLSBpOw0KPj4+PiArDQo+Pj4+ICsJCWVyciA9IGRldmxpbmtfZm1z Z19iaW5hcnlfcHV0KGZtc2csIHB0ciwgY29weSk7DQo+Pj4+ICsJCWlmIChlcnIpDQo+Pj4+ICsJ CQlyZXR1cm4gZXJyOw0KPj4+PiArCQlwdHIrKzsNCj4+Pj4gKwkJaSArPSBjb3B5Ow0KPj4+PiAr CX0NCj4+Pj4gKw0KPj4+PiArCWVyciA9IGRldmxpbmtfZm1zZ19hcnJfcGFpcl9uZXN0X2VuZChm bXNnKTsNCj4+Pj4gKwlpZiAoZXJyKQ0KPj4+PiArCQlyZXR1cm4gZXJyOw0KPj4+PiArDQo+Pj4+ ICsJZXJyID0gZGV2bGlua19mbXNnX29ial9uZXN0X2VuZChmbXNnKTsNCj4+Pj4gKwlpZiAoZXJy KQ0KPj4+PiArCQlyZXR1cm4gZXJyOw0KPj4+PiArDQo+Pj4+ICsJZXJyID0gZGV2bGlua19mbXNn X3BhaXJfbmVzdF9lbmQoZm1zZyk7DQo+Pj4+ICsNCj4+Pj4gKwlyZXR1cm4gZXJyOw0KPj4+PiAr fQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50IG1seDVlX3R4X3JlcG9ydGVyX3N3X2R1bXBfYWxs KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LA0KPj4+PiArCQkJCQkgc3RydWN0IGRldmxpbmtfZm1z ZyAqZm1zZykNCj4+Pj4gK3sNCj4+Pj4gKwlpbnQgaSwgZXJyID0gMDsNCj4+Pj4gKw0KPj4+PiAr CW11dGV4X2xvY2soJnByaXYtPnN0YXRlX2xvY2spOw0KPj4+PiArDQo+Pj4+ICsJaWYgKCF0ZXN0 X2JpdChNTFg1RV9TVEFURV9PUEVORUQsICZwcml2LT5zdGF0ZSkpDQo+Pj4+ICsJCWdvdG8gdW5s b2NrOw0KPj4+PiArDQo+Pj4+ICsJZXJyID0gZGV2bGlua19mbXNnX2Fycl9wYWlyX25lc3Rfc3Rh cnQoZm1zZywgIlNRcyIpOw0KPj4+PiArCWlmIChlcnIpDQo+Pj4+ICsJCWdvdG8gdW5sb2NrOw0K Pj4+PiArDQo+Pj4+ICsJZm9yIChpID0gMDsgaSA8IHByaXYtPmNoYW5uZWxzLm51bSAqIHByaXYt PmNoYW5uZWxzLnBhcmFtcy5udW1fdGM7DQo+Pj4+ICsJICAgICBpKyspIHsNCj4+Pj4gKwkJZXJy ID0gZGV2bGlua19mbXNnX29ial9uZXN0X3N0YXJ0KGZtc2cpOw0KPj4+PiArCQlpZiAoZXJyKQ0K Pj4+PiArCQkJZ290byB1bmxvY2s7DQo+Pj4+ICsNCj4+Pj4gKwkJZXJyID0gbWx4NWVfdHhfcmVw b3J0ZXJfc3dfZHVtcF9mcm9tX2N0eChwcml2LCBwcml2LT50eHEyc3FbaV0sDQo+Pj4+ICsJCQkJ CQkJIGZtc2cpOw0KPj4+PiArCQlpZiAoZXJyKQ0KPj4+PiArCQkJZ290byB1bmxvY2s7DQo+Pj4+ ICsNCj4+Pj4gKwkJZXJyID0gZGV2bGlua19mbXNnX3BhaXJfbmVzdF9lbmQoZm1zZyk7DQo+Pj4+ ICsJCWlmIChlcnIpDQo+Pj4+ICsJCQlnb3RvIHVubG9jazsNCj4+Pj4gKwl9DQo+Pj4+ICsJZXJy ID0gZGV2bGlua19mbXNnX2Fycl9wYWlyX25lc3RfZW5kKGZtc2cpOw0KPj4+PiArCWlmIChlcnIp DQo+Pj4+ICsJCWdvdG8gdW5sb2NrOw0KPj4+PiArDQo+Pj4+ICt1bmxvY2s6DQo+Pj4+ICsJbXV0 ZXhfdW5sb2NrKCZwcml2LT5zdGF0ZV9sb2NrKTsNCj4+Pj4gKwlyZXR1cm4gZXJyOw0KPj4+PiAr fQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50IG1seDVlX3R4X3JlcG9ydGVyX3N3X2R1bXAoc3Ry dWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpyZXBvcnRlciwNCj4+Pj4gKwkJCQkgICAgIHN0 cnVjdCBkZXZsaW5rX2Ztc2cgKmZtc2csIHZvaWQgKmNvbnRleHQpDQo+Pj4+ICt7DQo+Pj4+ICsJ c3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlcl9wcml2KHJl cG9ydGVyKTsNCj4+Pj4gKwlzdHJ1Y3QgbWx4NWVfdHhfZXJyX2N0eCAqZXJyX2N0eCA9IGNvbnRl eHQ7DQo+Pj4+ICsNCj4+Pj4gKwlyZXR1cm4gZXJyX2N0eCA/IG1seDVlX3R4X3JlcG9ydGVyX3N3 X2R1bXBfZnJvbV9jdHgocHJpdiwgZXJyX2N0eC0+c3EsDQo+Pj4+ICsJCQkJCQkJICAgIGZtc2cp IDoNCj4+Pj4gKwkJCSBtbHg1ZV90eF9yZXBvcnRlcl9zd19kdW1wX2FsbChwcml2LCBmbXNnKTsN Cj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmxpbmtfaGVhbHRo X3JlcG9ydGVyX29wcyBtbHg1X3R4X3JlcG9ydGVyX29wcyA9IHsNCj4+Pj4gCQkubmFtZSA9ICJ0 eCIsDQo+Pj4+IAkJLnJlY292ZXIgPSBtbHg1ZV90eF9yZXBvcnRlcl9yZWNvdmVyLA0KPj4+PiAJ CS5kaWFnbm9zZSA9IG1seDVlX3R4X3JlcG9ydGVyX2RpYWdub3NlLA0KPj4+PiArCQkuZHVtcCA9 IG1seDVlX3R4X3JlcG9ydGVyX3N3X2R1bXAsDQo+Pj4+IH07DQo+Pj4+DQo+Pj4+ICNkZWZpbmUg TUxYNV9SRVBPUlRFUl9UWF9HUkFDRUZVTF9QRVJJT0QgNTAwDQo+Pj4+IC0tIA0KPj4+PiAyLjE0 LjENCj4+Pj4NCg==