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=-9.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,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 7442EC43612 for ; Tue, 15 Jan 2019 15:00:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 24B5720989 for ; Tue, 15 Jan 2019 15:00:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=vmware.com header.i=@vmware.com header.b="VY762NAp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730560AbfAOPAW (ORCPT ); Tue, 15 Jan 2019 10:00:22 -0500 Received: from mail-eopbgr720058.outbound.protection.outlook.com ([40.107.72.58]:63952 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727307AbfAOPAV (ORCPT ); Tue, 15 Jan 2019 10:00:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yz1kMalAyxcFvDkFV5ykxjFkWbtc/7wOG20DvYxzjPA=; b=VY762NApK7IrDT8ofrt/F9eFhYXyw0jntyMNWxgAZoVpr8m2ShEN52SK3pElwknyj9U0VIoD/6/px27HozdqQf8FeZKoVp0/emlVxOW0r4keGrIOPgYrqCOiAj5H1OWhMmtRN/K1aDn00CTaU6Ono+m0Ya/mrY9Hfgw/hiCHBGs= Received: from CY1PR05MB2780.namprd05.prod.outlook.com (10.167.18.26) by CY1PR05MB2475.namprd05.prod.outlook.com (10.167.10.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1537.20; Tue, 15 Jan 2019 15:00:15 +0000 Received: from CY1PR05MB2780.namprd05.prod.outlook.com ([fe80::dcaf:ea32:61c2:a615]) by CY1PR05MB2780.namprd05.prod.outlook.com ([fe80::dcaf:ea32:61c2:a615%10]) with mapi id 15.20.1537.018; Tue, 15 Jan 2019 15:00:15 +0000 From: Slavomir Kaslev To: Steven Rostedt CC: "linux-trace-devel@vger.kernel.org" , Yordan Karadzhov , Tzvetomir Stoyanov Subject: Re: [PATCH v3 6/6] trace-cmd: Add VM kernel tracing over vsock sockets transport Thread-Topic: [PATCH v3 6/6] trace-cmd: Add VM kernel tracing over vsock sockets transport Thread-Index: AQHUrFryMhTXXDPZV065sf2T3GEqX6WwbUMA Date: Tue, 15 Jan 2019 15:00:15 +0000 Message-ID: References: <20190114152800.31060-1-kaslevs@vmware.com> <20190114152800.31060-7-kaslevs@vmware.com> <20190114174603.09287a2c@gandalf.local.home> In-Reply-To: <20190114174603.09287a2c@gandalf.local.home> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: YTOPR0101CA0024.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:15::37) To CY1PR05MB2780.namprd05.prod.outlook.com (2a01:111:e400:c63a::26) x-ms-exchange-messagesentrepresentingtype: 1 x-gm-message-state: AJcUukciWQKx2QQ2ne8z5tu8Gh6W3APOprxZQVQ+8EJLnCn9j0kYLnVr BQbRHlTueqs9I9vC5iEnxuTzyTkVBA7FrJVonA== x-google-smtp-source: ALg8bN6pPXxx33+4+Ng9PIHAELB4klqt/0+cTHlyNCxYvhQaujvZEu7fsb1I4MrN+WhSpn4gLrugq6GQPSYvimdlK+Y= x-received: by 2002:a6b:d20f:: with SMTP id q15mr2347083iob.100.1547564411746; Tue, 15 Jan 2019 07:00:11 -0800 (PST) x-gmail-original-message-id: x-originating-ip: [209.85.166.43] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;CY1PR05MB2475;20:kj/VcFoFP41bIBZmORUF0YtW7vq3TgpuzkRQltY1yA4gN7PKPV5FmBCbj8jkE784gZ2hv/WAGoU6/yyLDBQcwNUpjXzS/OYfYWJ2lRHsAedEJdJZNCH9FPYFJkUYXy+xcuAaL5luP1tYUUH8C2R1Onea3cMudSdu3QFb2wDPitw= x-ms-office365-filtering-correlation-id: 76349831-2fbb-4319-7588-08d67afa27f8 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600109)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);SRVR:CY1PR05MB2475; x-ms-traffictypediagnostic: CY1PR05MB2475: x-microsoft-antispam-prvs: x-forefront-prvs: 0918748D70 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(396003)(39860400002)(376002)(346002)(366004)(136003)(189003)(199004)(53946003)(99286004)(9686003)(6306002)(71200400001)(71190400001)(4326008)(6486002)(106356001)(33896004)(305945005)(229853002)(97736004)(476003)(105586002)(25786009)(486006)(76176011)(52116002)(11346002)(2906002)(5660300001)(498394004)(7736002)(446003)(6512007)(6246003)(966005)(186003)(256004)(14444005)(6436002)(98316002)(30864003)(478600001)(8936002)(8676002)(53546011)(81156014)(386003)(81166006)(6862004)(6506007)(6346003)(316002)(54906003)(3846002)(55446002)(61726006)(95326003)(107886003)(66066001)(26005)(102836004)(14454004)(53936002)(68736007)(6116002)(86362001)(61266001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR05MB2475;H:CY1PR05MB2780.namprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: vmware.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=kaslevs@vmware.com; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 2fQTlChIs1YP7Oly9OCl1dwpfK2hVWU+3/rqf1hblwTDCJ9p2qKVPvkaxjCffxbna2+XkE06RWuVeSk1QAvzR3CUtj8PZlIzyF603NjZ78ng7HJU7/HEiIQRW2Zj9Z/bbPs1YqHwggOMW1a16exhu2UpS/TPuzGXa0kiwEl51VeASYIgjc/Mo/edyLtpBjRhLpcxX9hMzd9XH5GD2PX7qIevm1yfYsLwzcyNakF/8X9Dt4A3v2wmeYZ0eglzPtfs7MAYY3C0ILRkox9Sb5Z/sZXulBVa2tvqJNTcEaOztH3I4yi5HzZGPXCSAOZZy+H1FEckD0eOi64YUEU7zTmBYd4nX/fhXQticbi+Wj6F6gDq7QK4GLRez4/gtjGZorIXpUX5SzXBDoA3GqYuRgLv32P1luEOlfO/2sM0IYMdUHc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <09967081CA5F664182BA93485C854271@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76349831-2fbb-4319-7588-08d67afa27f8 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Jan 2019 15:00:15.0500 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR05MB2475 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org T24gVHVlLCBKYW4gMTUsIDIwMTkgYXQgMTI6NDYgQU0gU3RldmVuIFJvc3RlZHQgPHJvc3RlZHRA Z29vZG1pcy5vcmc+IHdyb3RlOg0KPg0KPiBPbiBNb24sIDE0IEphbiAyMDE5IDE3OjI4OjAwICsw MjAwDQo+IFNsYXZvbWlyIEthc2xldiA8a2FzbGV2c0B2bXdhcmUuY29tPiB3cm90ZToNCj4gXA0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi90cmFjZWNtZC90cmFjZS1hZ2VudC5jDQo+ID4g QEAgLTAsMCArMSwyMjkgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwt Mi4xDQo+ID4gKy8qDQo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAxOCBWTXdhcmUgSW5jLCBTbGF2 b21pciBLYXNsZXYgPGthc2xldnNAdm13YXJlLmNvbT4NCj4gPiArICoNCj4gPiArICogYmFzZWQg b24gcHJpb3IgaW1wbGVtZW50YXRpb24gYnkgWW9zaGloaXJvIFl1bm9tYWUNCj4gPiArICogQ29w eXJpZ2h0IChDKSAyMDEzIEhpdGFjaGksIEx0ZC4NCj4gPiArICogWW9zaGloaXJvIFlVTk9NQUUg PHlvc2hpaGlyby55dW5vbWFlLmV6QGhpdGFjaGkuY29tPg0KPiA+ICsgKi8NCj4gPiArDQo+ID4g KyNpbmNsdWRlIDxlcnJuby5oPg0KPiA+ICsjaW5jbHVkZSA8ZmNudGwuaD4NCj4gPiArI2luY2x1 ZGUgPGdldG9wdC5oPg0KPiA+ICsjaW5jbHVkZSA8c2lnbmFsLmg+DQo+ID4gKyNpbmNsdWRlIDxz dGRib29sLmg+DQo+ID4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiA+ICsjaW5jbHVkZSA8c3RkbGli Lmg+DQo+ID4gKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4NCj4gPiArI2luY2x1ZGUgPHN5cy9zb2Nr ZXQuaD4NCj4gPiArI2luY2x1ZGUgPHN5cy93YWl0Lmg+DQo+ID4gKyNpbmNsdWRlIDx1bmlzdGQu aD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3ZtX3NvY2tldHMuaD4NCj4gPiArDQo+ID4gKyNpbmNs dWRlICJ0cmFjZS1sb2NhbC5oIg0KPiA+ICsjaW5jbHVkZSAidHJhY2UtbXNnLmgiDQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IG1ha2VfdnNvY2sodW5zaWduZWQgcG9ydCkNCj4gPiArew0KPiA+ICsg ICAgIHN0cnVjdCBzb2NrYWRkcl92bSBhZGRyID0gew0KPiA+ICsgICAgICAgICAgICAgLnN2bV9m YW1pbHkgPSBBRl9WU09DSywNCj4gPiArICAgICAgICAgICAgIC5zdm1fY2lkID0gVk1BRERSX0NJ RF9BTlksDQo+ID4gKyAgICAgICAgICAgICAuc3ZtX3BvcnQgPSBwb3J0LA0KPiA+ICsgICAgIH07 DQo+ID4gKyAgICAgaW50IHNkOw0KPiA+ICsNCj4gPiArICAgICBzZCA9IHNvY2tldChBRl9WU09D SywgU09DS19TVFJFQU0sIDApOw0KPiA+ICsgICAgIGlmIChzZCA8IDApDQo+ID4gKyAgICAgICAg ICAgICByZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsgICAgIHNldHNvY2tvcHQoc2QsIFNPTF9TT0NL RVQsIFNPX1JFVVNFQUREUiwgJihpbnQpezF9LCBzaXplb2YoaW50KSk7DQo+ID4gKw0KPiA+ICsg ICAgIGlmIChiaW5kKHNkLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSkp DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChsaXN0 ZW4oc2QsIFNPTUFYQ09OTikpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKw0K PiA+ICsgICAgIHJldHVybiBzZDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBnZXRf dnNvY2tfcG9ydChpbnQgc2QpDQo+ID4gK3sNCj4gPiArICAgICBzdHJ1Y3Qgc29ja2FkZHJfdm0g YWRkcjsNCj4gPiArICAgICBzb2NrbGVuX3QgYWRkcl9sZW4gPSBzaXplb2YoYWRkcik7DQo+ID4g Kw0KPiA+ICsgICAgIGlmIChnZXRzb2NrbmFtZShzZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRy LCAmYWRkcl9sZW4pKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+ICsNCj4gPiAr ICAgICBpZiAoYWRkci5zdm1fZmFtaWx5ICE9IEFGX1ZTT0NLKQ0KPiA+ICsgICAgICAgICAgICAg cmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gYWRkci5zdm1fcG9ydDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgbWFrZV92c29ja3MoaW50IG5yLCBpbnQgKipmZHMs IGludCAqKnBvcnRzKQ0KPiA+ICt7DQo+ID4gKyAgICAgaW50IGksIGZkLCBwb3J0Ow0KPiA+ICsN Cj4gPiArICAgICAqZmRzID0gY2FsbG9jKG5yLCBzaXplb2YoKmZkcykpOw0KPiA+ICsgICAgICpw b3J0cyA9IGNhbGxvYyhuciwgc2l6ZW9mKCpwb3J0cykpOw0KPiA+ICsgICAgIGlmICghKmZkcyB8 fCAhKnBvcnRzKQ0KPiA+ICsgICAgICAgICAgICAgZGllKCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVt b3J5Iik7DQo+ID4gKw0KPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBucjsgaSsrKSB7DQo+ID4g KyAgICAgICAgICAgICBmZCA9IG1ha2VfdnNvY2soVk1BRERSX1BPUlRfQU5ZKTsNCj4gPiArICAg ICAgICAgICAgIGlmIChmZCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRpZSgiRmFp bGVkIHRvIG9wZW4gdnNvY2sgc29ja2V0Iik7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgcG9y dCA9IGdldF92c29ja19wb3J0KGZkKTsNCj4gPiArICAgICAgICAgICAgIGlmIChwb3J0IDwgMCkN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZGllKCJGYWlsZWQgdG8gZ2V0IHZzb2NrIHNvY2tl dCBhZGRyZXNzIik7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgKCpmZHMpW2ldID0gZmQ7DQo+ ID4gKyAgICAgICAgICAgICAoKnBvcnRzKVtpXSA9IHBvcnQ7DQo+ID4gKyAgICAgfQ0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBmcmVlX3Zzb2NrcyhpbnQgbnIsIGludCAqZmRzLCBp bnQgKnBvcnRzKQ0KPiA+ICt7DQo+ID4gKyAgICAgaW50IGk7DQo+ID4gKw0KPiA+ICsgICAgIGZv ciAoaSA9IDA7IGkgPCBucjsgaSsrKQ0KPiA+ICsgICAgICAgICAgICAgY2xvc2UoZmRzW2ldKTsN Cj4gPiArICAgICBmcmVlKGZkcyk7DQo+ID4gKyAgICAgZnJlZShwb3J0cyk7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyB2b2lkIGFnZW50X2hhbmRsZShpbnQgc2QsIGludCBucl9jcHVzLCBp bnQgcGFnZV9zaXplKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IHRyYWNlY21kX21zZ19oYW5k bGUgKm1zZ19oYW5kbGU7DQo+ID4gKyAgICAgaW50ICpmZHMsICpwb3J0czsNCj4gPiArICAgICBj aGFyICoqYXJndiA9IE5VTEw7DQo+ID4gKyAgICAgaW50IGFyZ2MgPSAwOw0KPiA+ICsNCj4gPiAr ICAgICBtc2dfaGFuZGxlID0gdHJhY2VjbWRfbXNnX2hhbmRsZV9hbGxvYyhzZCwgVFJBQ0VDTURf TVNHX0ZMX0NMSUVOVCk7DQo+ID4gKyAgICAgaWYgKCFtc2dfaGFuZGxlKQ0KPiA+ICsgICAgICAg ICAgICAgZGllKCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVzc2FnZSBoYW5kbGUiKTsNCj4gPiArDQo+ ID4gKyAgICAgaWYgKHRyYWNlY21kX21zZ19yZWN2X3RyYWNlX3JlcShtc2dfaGFuZGxlLCAmYXJn YywgJmFyZ3YpKQ0KPiA+ICsgICAgICAgICAgICAgZGllKCJGYWlsZWQgdG8gcmVjZWl2ZSB0cmFj ZSByZXF1ZXN0Iik7DQo+ID4gKw0KPiA+ICsgICAgIG1ha2VfdnNvY2tzKG5yX2NwdXMsICZmZHMs ICZwb3J0cyk7DQo+ID4gKw0KPiA+ICsgICAgIGlmICh0cmFjZWNtZF9tc2dfc2VuZF90cmFjZV9y ZXNwKG1zZ19oYW5kbGUsIG5yX2NwdXMsIHBhZ2Vfc2l6ZSwgcG9ydHMpKQ0KPiA+ICsgICAgICAg ICAgICAgZGllKCJGYWlsZWQgdG8gc2VuZCB0cmFjZSByZXNwb25zZSIpOw0KPiA+ICsNCj4gPiAr ICAgICB0cmFjZV9yZWNvcmRfYWdlbnQobXNnX2hhbmRsZSwgbnJfY3B1cywgZmRzLCBhcmdjLCBh cmd2KTsNCj4gPiArDQo+ID4gKyAgICAgZnJlZV92c29ja3MobnJfY3B1cywgZmRzLCBwb3J0cyk7 DQo+ID4gKyAgICAgZnJlZShhcmd2WzBdKTsNCj4gPiArICAgICBmcmVlKGFyZ3YpOw0KPiA+ICsg ICAgIHRyYWNlY21kX21zZ19oYW5kbGVfY2xvc2UobXNnX2hhbmRsZSk7DQo+ID4gKyAgICAgZXhp dCgwKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvbGF0aWxlIHBpZF90IGhhbmRsZXJf cGlkOw0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaGFuZGxlX3NpZ2NobGQoaW50IHNpZykNCj4g PiArew0KPiA+ICsgICAgIGludCB3c3RhdHVzOw0KPiA+ICsgICAgIHBpZF90IHBpZDsNCj4gPiAr DQo+ID4gKyAgICAgZm9yICg7Oykgew0KPiA+ICsgICAgICAgICAgICAgcGlkID0gd2FpdHBpZCgt MSwgJndzdGF0dXMsIFdOT0hBTkcpOw0KPiA+ICsgICAgICAgICAgICAgaWYgKHBpZCA8PSAwKQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgICAgICAgICAg ICBpZiAocGlkID09IGhhbmRsZXJfcGlkKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBoYW5k bGVyX3BpZCA9IDA7DQo+ID4gKyAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9p ZCBhZ2VudF9zZXJ2ZSh1bnNpZ25lZCBwb3J0KQ0KPiA+ICt7DQo+ID4gKyAgICAgaW50IHNkLCBj ZCwgbnJfY3B1czsNCj4gPiArICAgICBwaWRfdCBwaWQ7DQo+ID4gKw0KPiA+ICsgICAgIHNpZ25h bChTSUdDSExELCBoYW5kbGVfc2lnY2hsZCk7DQo+ID4gKw0KPiA+ICsgICAgIG5yX2NwdXMgPSBj b3VudF9jcHVzKCk7DQo+ID4gKyAgICAgcGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTsNCj4gPiAr DQo+ID4gKyAgICAgc2QgPSBtYWtlX3Zzb2NrKHBvcnQpOw0KPiA+ICsgICAgIGlmIChzZCA8IDAp DQo+ID4gKyAgICAgICAgICAgICBkaWUoIkZhaWxlZCB0byBvcGVuIHZzb2NrIHNvY2tldCIpOw0K PiA+ICsNCj4gPiArICAgICBmb3IgKDs7KSB7DQo+ID4gKyAgICAgICAgICAgICBjZCA9IGFjY2Vw dChzZCwgTlVMTCwgTlVMTCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoY2QgPCAwKSB7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ZGllKCJhY2NlcHQiKTsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAg ICAgICBpZiAoaGFuZGxlcl9waWQpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gYnVz eTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBwaWQgPSBmb3JrKCk7DQo+ID4gKyAgICAgICAg ICAgICBpZiAocGlkID09IDApIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY2xvc2Uoc2Qp Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBzaWduYWwoU0lHQ0hMRCwgU0lHX0RGTCk7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGFnZW50X2hhbmRsZShjZCwgbnJfY3B1cywgcGFnZV9z aXplKTsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIGlmIChwaWQgPiAw KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyX3BpZCA9IHBpZDsNCj4gPiArDQo+ ID4gKyAgICAgYnVzeToNCj4gPiArICAgICAgICAgICAgIGNsb3NlKGNkKTsNCj4gPiArICAgICB9 DQo+ID4gKw0KPg0KPiBIbW0sIEkgZG9uJ3Qgc2VlIGFueSBicmVhayBmcm9tIHRoZSBhYm92ZSBm b3IgKDs7KSBhbmQgdGhhdCdzIGFuDQo+IGluZmluaXRlIGxvb3AuIFRoYXQgbWFrZXMgdGhpcyBk ZWFkIGNvZGUgYmVsb3cuDQo+DQo+ID4gKyAgICAgY2xvc2Uoc2QpOw0KPiA+ICsgICAgIHNpZ25h bChTSUdDSExELCBTSUdfREZMKTsNCj4gPiArfQ0KPg0KPg0KPg0KPiA+ICsNCj4gPiArdm9pZCB0 cmFjZV9hZ2VudChpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4gK3sNCj4gPiArICAgICBib29s IGRvX2RhZW1vbiA9IGZhbHNlOw0KPiA+ICsgICAgIHVuc2lnbmVkIHBvcnQgPSBUUkFDRV9BR0VO VF9ERUZBVUxUX1BPUlQ7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChhcmdjIDwgMikNCj4gPiArICAg ICAgICAgICAgIHVzYWdlKGFyZ3YpOw0KPiA+ICsNCj4gPiArICAgICBpZiAoc3RyY21wKGFyZ3Zb MV0sICJhZ2VudCIpICE9IDApDQo+ID4gKyAgICAgICAgICAgICB1c2FnZShhcmd2KTsNCj4gPiAr DQo+ID4gKyAgICAgZm9yICg7Oykgew0KPiA+ICsgICAgICAgICAgICAgaW50IGMsIG9wdGlvbl9p bmRleCA9IDA7DQo+ID4gKyAgICAgICAgICAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29w dGlvbnNbXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgeyJwb3J0IiwgcmVxdWlyZWRf YXJndW1lbnQsIE5VTEwsICdwJ30sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHsiaGVscCIs IG5vX2FyZ3VtZW50LCBOVUxMLCAnPyd9LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB7TlVM TCwgMCwgTlVMTCwgMH0NCj4gPiArICAgICAgICAgICAgIH07DQo+ID4gKw0KPiA+ICsgICAgICAg ICAgICAgYyA9IGdldG9wdF9sb25nKGFyZ2MtMSwgYXJndisxLCAiK2hwOkQiLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgJm9wdGlvbl9pbmRleCk7DQo+ ID4gKyAgICAgICAgICAgICBpZiAoYyA9PSAtMSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsNCj4gPiArICAgICAgICAgICAg IGNhc2UgJ2gnOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB1c2FnZShhcmd2KTsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBjYXNlICdwJzoN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgcG9ydCA9IGF0b2kob3B0YXJnKTsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBjYXNlICdEJzoNCj4g PiArICAgICAgICAgICAgICAgICAgICAgZG9fZGFlbW9uID0gdHJ1ZTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICB1c2FnZShhcmd2KTsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiAr ICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGlmICgoYXJnYyAtIG9wdGluZCkgPj0gMikNCj4gPiAr ICAgICAgICAgICAgIHVzYWdlKGFyZ3YpOw0KPiA+ICsNCj4gPiArICAgICBpZiAoZG9fZGFlbW9u ICYmIGRhZW1vbigxLCAwKSkNCj4gPiArICAgICAgICAgICAgIGRpZSgiZGFlbW9uIik7DQo+ID4g Kw0KPiA+ICsgICAgIGFnZW50X3NlcnZlKHBvcnQpOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBh L3RyYWNlY21kL3RyYWNlLWNtZC5jIGIvdHJhY2VjbWQvdHJhY2UtY21kLmMNCj4gPiBpbmRleCA3 OTdiMzAzLi4zYWU1ZTJlIDEwMDY0NA0KPiA+IC0tLSBhL3RyYWNlY21kL3RyYWNlLWNtZC5jDQo+ ID4gKysrIGIvdHJhY2VjbWQvdHJhY2UtY21kLmMNCj4gPiBAQCAtODMsNiArODMsOSBAQCBzdHJ1 Y3QgY29tbWFuZCBjb21tYW5kc1tdID0gew0KPiA+ICAgICAgIHsiaGlzdCIsIHRyYWNlX2hpc3R9 LA0KPiA+ICAgICAgIHsibWVtIiwgdHJhY2VfbWVtfSwNCj4gPiAgICAgICB7Imxpc3RlbiIsIHRy YWNlX2xpc3Rlbn0sDQo+ID4gKyNpZmRlZiBWU09DSw0KPiA+ICsgICAgIHsiYWdlbnQiLCB0cmFj ZV9hZ2VudH0sDQo+ID4gKyNlbmRpZg0KPiA+ICAgICAgIHsic3BsaXQiLCB0cmFjZV9zcGxpdH0s DQo+ID4gICAgICAgeyJyZXN0b3JlIiwgdHJhY2VfcmVzdG9yZX0sDQo+ID4gICAgICAgeyJzdGFj ayIsIHRyYWNlX3N0YWNrfSwNCj4gPiBkaWZmIC0tZ2l0IGEvdHJhY2VjbWQvdHJhY2UtcmVjb3Jk LmMgYi90cmFjZWNtZC90cmFjZS1yZWNvcmQuYw0KPiA+IGluZGV4IDAxMjM3MWMuLjZjODc1NGUg MTAwNjQ0DQo+ID4gLS0tIGEvdHJhY2VjbWQvdHJhY2UtcmVjb3JkLmMNCj4gPiArKysgYi90cmFj ZWNtZC90cmFjZS1yZWNvcmQuYw0KPiA+IEBAIC0zMyw2ICszMyw5IEBADQo+ID4gICNpbmNsdWRl IDxlcnJuby5oPg0KPiA+ICAjaW5jbHVkZSA8bGltaXRzLmg+DQo+ID4gICNpbmNsdWRlIDxsaWJn ZW4uaD4NCj4gPiArI2lmZGVmIFZTT0NLDQo+ID4gKyNpbmNsdWRlIDxsaW51eC92bV9zb2NrZXRz Lmg+DQo+ID4gKyNlbmRpZg0KPiA+DQo+ID4gICNpbmNsdWRlICJ0cmFjZS1sb2NhbC5oIg0KPiA+ ICAjaW5jbHVkZSAidHJhY2UtbXNnLmgiDQo+ID4gQEAgLTc0LDggKzc3LDYgQEAgc3RhdGljIGlu dCBidWZmZXJzOw0KPiA+ICBzdGF0aWMgaW50IGNsZWFyX2Z1bmN0aW9uX2ZpbHRlcnM7DQo+ID4N Cj4gPiAgc3RhdGljIGNoYXIgKmhvc3Q7DQo+ID4gLXN0YXRpYyBpbnQgKmNsaWVudF9wb3J0czsN Cj4gPiAtc3RhdGljIGludCBzZmQ7DQo+ID4NCj4gPiAgLyogTWF4IHNpemUgdG8gbGV0IGEgcGVy IGNwdSBmaWxlIGdldCAqLw0KPiA+ICBzdGF0aWMgaW50IG1heF9rYjsNCj4gPiBAQCAtMTcxLDYg KzE3MiwxNSBAQCBzdGF0aWMgc3RydWN0IHRyYWNlY21kX3JlY29yZGVyICpyZWNvcmRlcjsNCj4g Pg0KPiA+ICBzdGF0aWMgaW50IGlnbm9yZV9ldmVudF9ub3RfZm91bmQgPSAwOw0KPiA+DQo+ID4g K3N0YXRpYyBpbmxpbmUgc2l6ZV90IGdyb3dfY2FwKHNpemVfdCBvbGRfY2FwKQ0KPiA+ICt7DQo+ ID4gKyAgICAgc2l6ZV90IGNhcCA9IDMgKiBvbGRfY2FwIC8gMjsNCj4gPiArDQo+ID4gKyAgICAg aWYgKGNhcCA8IDE2KQ0KPiA+ICsgICAgICAgICAgICAgY2FwID0gMTY7DQo+ID4gKyAgICAgcmV0 dXJuIGNhcDsNCj4gPiArfQ0KPg0KPiBJJ20gYSBiaXQgY29uZnVzZWQgYnkgd2hhdCB0aGUgZ3Jv d19jYXAoKSBpcyBmb3IuDQoNCkkgZGlkIHNvbWUgYmVuY2htYXJraW5nIGF3aGlsZSBhZ28gYW5k IGNhbGxpbmcgcmVhbGxvYyBvbiBlYWNoIG5ldw0KZW50cnkgd2hlbiBhcHBlbmRpbmcgaXMgaW5k ZWVkIGxpbmVhciAod2hpY2ggaW1wbGllcyB0aGF0IHJlYWxsb2MNCmFtb3J0aXplcyB0byBjb25z dGFudCkuDQpncm93X2NhcCgpIGdyb3dzIHRoZSBidWZmZXIgZXhwb25lbnRpYWxseSBhbmQgaGVu Y2UgY2FsbHMgcmVhbGxvYyBvbmx5DQpsb2cobikgdGltZXMsIHdoaWNoIHR1cm5zIG91dCB0byBi ZSBhZ2FpbiBsaW5lYXIgYnV0IHdpdGggbXVjaCBzbWFsbGVyDQpjb25zdGFudC4NCkdpdCB1c2Vz IHNvbWV0aGluZyBzaW1pbGFyIHRoZXkgY2FsbCBBTExPQ19HUk9XOg0KaHR0cHM6Ly9naXRodWIu Y29tL2dpdC9naXQvYmxvYi8wZjA4NmU2ZGNhYmZiZjA1OWU3NDgzZWJkN2Q0MTA4MGZhZWMzZDc3 L2NhY2hlLmgjTDY1MA0KDQpJIGFncmVlIHRoYXQgbmVpdGhlciBvZiB0aGUgY3VycmVudCB1c2Vz IG9mIGdyb3dfY2FwIGFyZSBub3Qgb24NCnBlcmZvcm1hbmNlIGNyaXRpY2FsIHBhdGhzIHNvIEkn bGwgZHJvcCBpdCBpbiB0aGUgbmV4dCB2ZXJzaW9uIG9mIHRoaXMNCnNlcmllcy4NCg0KPg0KPiA+ ICsNCj4gPiAgc3RhdGljIGlubGluZSBpbnQgaXNfdG9wX2luc3RhbmNlKHN0cnVjdCBidWZmZXJf aW5zdGFuY2UgKmluc3RhbmNlKQ0KPiA+ICB7DQo+ID4gICAgICAgcmV0dXJuIGluc3RhbmNlID09 ICZ0b3BfaW5zdGFuY2U7DQo+ID4gQEAgLTUxOCw2ICs1MjgsMzYgQEAgc3RhdGljIGNoYXIgKmdl dF90ZW1wX2ZpbGUoc3RydWN0IGJ1ZmZlcl9pbnN0YW5jZSAqaW5zdGFuY2UsIGludCBjcHUpDQo+ ID4gICAgICAgcmV0dXJuIGZpbGU7DQo+ID4gIH0NCj4gPg0KPiA+ICtzdGF0aWMgY2hhciAqZ2V0 X2d1ZXN0X2ZpbGUoY29uc3QgY2hhciAqZmlsZSwgY29uc3QgY2hhciAqZ3Vlc3QpDQo+ID4gK3sN Cj4gPiArICAgICBzaXplX3QgZ3Vlc3RfbGVuID0gc3RybGVuKGd1ZXN0KTsNCj4gPiArICAgICBz aXplX3QgZmlsZV9sZW4gPSBzdHJsZW4oZmlsZSk7DQo+ID4gKyAgICAgc2l6ZV90IGJhc2VfbGVu LCBpZHggPSAwOw0KPiA+ICsgICAgIGNvbnN0IGNoYXIgKnA7DQo+ID4gKyAgICAgY2hhciAqb3V0 Ow0KPiA+ICsNCj4gPiArICAgICBvdXQgPSBtYWxsb2MoZmlsZV9sZW4gKyBndWVzdF9sZW4gKyAy IC8qIGRhc2ggYW5kIFwwICovKTsNCj4gPiArICAgICBpZiAoIW91dCkNCj4gPiArICAgICAgICAg ICAgIHJldHVybiBOVUxMOw0KPiA+ICsNCj4gPiArICAgICBwID0gc3RycmNocihmaWxlLCAnLicp Ow0KPiA+ICsgICAgIGlmIChwICYmIHAgIT0gZmlsZSkNCj4gPiArICAgICAgICAgICAgIGJhc2Vf bGVuID0gcCAtIGZpbGU7DQo+ID4gKyAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgYmFzZV9s ZW4gPSBmaWxlX2xlbjsNCj4gPiArDQo+ID4gKyAgICAgbWVtY3B5KG91dCwgZmlsZSwgYmFzZV9s ZW4pOw0KPiA+ICsgICAgIGlkeCArPSBiYXNlX2xlbjsNCj4gPiArICAgICBvdXRbaWR4KytdID0g Jy0nOw0KPiA+ICsgICAgIG1lbWNweShvdXQgKyBpZHgsIGd1ZXN0LCBndWVzdF9sZW4pOw0KPiA+ ICsgICAgIGlkeCArPSBndWVzdF9sZW47DQo+ID4gKyAgICAgbWVtY3B5KG91dCArIGlkeCwgcCwg ZmlsZV9sZW4gLSBiYXNlX2xlbik7DQo+ID4gKyAgICAgaWR4ICs9IGZpbGVfbGVuIC0gYmFzZV9s ZW47DQo+ID4gKyAgICAgb3V0W2lkeF0gPSAnXDAnOw0KPg0KPiBDYW4ndCB3ZSBwcmV0dHkgbXVj aCByZXBsYWNlIHRoaXMgd2hvbGUgZnVuY3Rpb24gd2l0aDoNCj4NCj4gICAgICAgICBwID0gc3Ry cmNocihmaWxlLCAnLicpOw0KPiAgICAgICAgIGlmIChwICYmIHAgIT0gZmlsZSkgew0KPiAgICAg ICAgICAgICAgICAgYmFzZV9sZW4gPSBwIC0gZmlsZTsNCj4gICAgICAgICBlbHNlDQo+ICAgICAg ICAgICAgICAgICBiYXNlX2xlbiA9IHN0cmxlbihmaWxlKTsNCj4NCj4gICAgICAgICBhc3ByaW50 Zigmb3V0LCAiJS4qcy0lcyVzIiwgYmFzZV9sZW4sIGZpbGUsIGd1ZXN0LCBmaWxlICsgYmFzZV9s ZW4pOw0KPg0KPiA/DQoNCkdvb2QgY2F0Y2guIFRoaXMgaXMgYSBsZWZ0b3ZlciBmcm9tIHRoZSB2 aXJ0LXNlcnZlciBicmFuY2ggd2hpY2ggSQ0Kc2ltcGxpZmllZCBidXQgZGlkbid0IGtub3cgYWJv dXQgdGhlICUuKnMgZm9ybWF0IG1hZ2ljLg0KDQo+DQo+DQo+ID4gKw0KPiA+ICsgICAgIHJldHVy biBvdXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyB2b2lkIHB1dF90ZW1wX2ZpbGUoY2hh ciAqZmlsZSkNCj4gPiAgew0KPiA+ICAgICAgIGZyZWUoZmlsZSk7DQo+ID4gQEAgLTYyMyw2ICs2 NjMsMTYgQEAgc3RhdGljIHZvaWQgZGVsZXRlX3RocmVhZF9kYXRhKHZvaWQpDQo+ID4gICAgICAg fQ0KPiA+ICB9DQo+ID4NCj4gPiArc3RhdGljIHZvaWQgdGVsbF9ndWVzdHNfdG9fc3RvcCh2b2lk KQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IGJ1ZmZlcl9pbnN0YW5jZSAqaW5zdGFuY2U7DQo+ ID4gKw0KPiA+ICsgICAgIGZvcl9hbGxfaW5zdGFuY2VzKGluc3RhbmNlKSB7DQo+ID4gKyAgICAg ICAgICAgICBpZiAoaW5zdGFuY2UtPmZsYWdzICYgQlVGRkVSX0ZMX0dVRVNUKQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICB0cmFjZWNtZF9tc2dfaGFuZGxlX2Nsb3NlKGluc3RhbmNlLT5tc2df aGFuZGxlKTsNCj4gPiArICAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyB2b2lkIHN0 b3BfdGhyZWFkcyhlbnVtIHRyYWNlX3R5cGUgdHlwZSkNCj4gPiAgew0KPiA+ICAgICAgIHN0cnVj dCB0aW1ldmFsIHR2ID0geyAwLCAwIH07DQo+ID4gQEAgLTYzMiw2ICs2ODIsOCBAQCBzdGF0aWMg dm9pZCBzdG9wX3RocmVhZHMoZW51bSB0cmFjZV90eXBlIHR5cGUpDQo+ID4gICAgICAgaWYgKCFy ZWNvcmRlcl90aHJlYWRzKQ0KPiA+ICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+DQo+ID4gKyAg ICAgdGVsbF9ndWVzdHNfdG9fc3RvcCgpOw0KPiA+ICsNCj4gPiAgICAgICAvKiBUZWxsIGFsbCB0 aHJlYWRzIHRvIGZpbmlzaCB1cCAqLw0KPiA+ICAgICAgIGZvciAoaSA9IDA7IGkgPCByZWNvcmRl cl90aHJlYWRzOyBpKyspIHsNCj4gPiAgICAgICAgICAgICAgIGlmIChwaWRzW2ldLnBpZCA+IDAp IHsNCj4gPiBAQCAtMjU3MSwxNCArMjYyMywxNCBAQCBzdGF0aWMgdm9pZCBmbHVzaChpbnQgc2ln KQ0KPiA+ICAgICAgICAgICAgICAgdHJhY2VjbWRfc3RvcF9yZWNvcmRpbmcocmVjb3JkZXIpOw0K PiA+ICB9DQo+ID4NCj4gPiAtc3RhdGljIHZvaWQgY29ubmVjdF9wb3J0KGludCBjcHUpDQo+ID4g K3N0YXRpYyBpbnQgY29ubmVjdF9wb3J0KGNvbnN0IGNoYXIgKmhvc3QsIHVuc2lnbmVkIHBvcnQp DQo+ID4gIHsNCj4gPiAgICAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHM7DQo+ID4gICAgICAgc3Ry dWN0IGFkZHJpbmZvICpyZXN1bHRzLCAqcnA7DQo+ID4gLSAgICAgaW50IHM7DQo+ID4gKyAgICAg aW50IHMsIHNmZDsNCj4gPiAgICAgICBjaGFyIGJ1ZltCVUZTSVpdOw0KPiA+DQo+ID4gLSAgICAg c25wcmludGYoYnVmLCBCVUZTSVosICIlZCIsIGNsaWVudF9wb3J0c1tjcHVdKTsNCj4gPiArICAg ICBzbnByaW50ZihidWYsIEJVRlNJWiwgIiVkIiwgcG9ydCk7DQo+ID4NCj4gPiAgICAgICBtZW1z ZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsNCj4gPiAgICAgICBoaW50cy5haV9mYW1pbHkg PSBBRl9VTlNQRUM7DQo+ID4gQEAgLTI2MDUsNyArMjY1NywxOTAgQEAgc3RhdGljIHZvaWQgY29u bmVjdF9wb3J0KGludCBjcHUpDQo+ID4NCj4gPiAgICAgICBmcmVlYWRkcmluZm8ocmVzdWx0cyk7 DQo+ID4NCj4gPiAtICAgICBjbGllbnRfcG9ydHNbY3B1XSA9IHNmZDsNCj4gPiArICAgICByZXR1 cm4gc2ZkOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsjaWZkZWYgVlNPQ0sNCj4gPiArc3RhdGljIGlu dCBvcGVuX3Zzb2NrKHVuc2lnbmVkIGNpZCwgdW5zaWduZWQgcG9ydCkNCj4gPiArew0KPiA+ICsg ICAgIHN0cnVjdCBzb2NrYWRkcl92bSBhZGRyID0gew0KPiA+ICsgICAgICAgICAgICAgLnN2bV9m YW1pbHkgPSBBRl9WU09DSywNCj4gPiArICAgICAgICAgICAgIC5zdm1fY2lkID0gY2lkLA0KPiA+ ICsgICAgICAgICAgICAgLnN2bV9wb3J0ID0gcG9ydCwNCj4gPiArICAgICB9Ow0KPiA+ICsgICAg IGludCBzZDsNCj4gPiArDQo+ID4gKyAgICAgc2QgPSBzb2NrZXQoQUZfVlNPQ0ssIFNPQ0tfU1RS RUFNLCAwKTsNCj4gPiArICAgICBpZiAoc2QgPCAwKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJu IC0xOw0KPiA+ICsNCj4gPiArICAgICBpZiAoY29ubmVjdChzZCwgKHN0cnVjdCBzb2NrYWRkciAq KSZhZGRyLCBzaXplb2YoYWRkcikpKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+ ICsNCj4gPiArICAgICByZXR1cm4gc2Q7DQo+ID4gK30NCj4gPiArI2Vsc2UNCj4gPiArc3RhdGlj IGlubGluZSBpbnQgb3Blbl92c29jayh1bnNpZ25lZCBjaWQsIHVuc2lnbmVkIHBvcnQpDQo+ID4g K3sNCj4gPiArICAgICBkaWUoInZzb2NrIGlzIG5vdCBzdXBwb3J0ZWQiKTsNCj4gPiArICAgICBy ZXR1cm4gLTE7DQo+ID4gK30NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGRv X2FjY2VwdChpbnQgc2QpDQo+ID4gK3sNCj4gPiArICAgICBpbnQgY2Q7DQo+ID4gKw0KPiA+ICsg ICAgIGZvciAoOzspIHsNCj4gPiArICAgICAgICAgICAgIGNkID0gYWNjZXB0KHNkLCBOVUxMLCBO VUxMKTsNCj4gPiArICAgICAgICAgICAgIGlmIChjZCA8IDApIHsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBkaWUoImFjY2VwdCIp Ow0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIHJldHVybiBj ZDsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAtMTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGJvb2wgaXNfZGlnaXRzKGNvbnN0IGNoYXIgKnMpDQo+ID4gK3sNCj4g PiArICAgICBjb25zdCBjaGFyICpwOw0KPiA+ICsNCj4gPiArICAgICBmb3IgKHAgPSBzOyAqcDsg cCsrKQ0KPiA+ICsgICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCpwKSkNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gdHJ1ZTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RydWN0IGd1ZXN0IHsNCj4gPiArICAgICBjaGFyICpuYW1l Ow0KPiA+ICsgICAgIGludCBjaWQ7DQo+ID4gKyAgICAgaW50IHBpZDsNCj4gPiArfTsNCj4gPiAr DQo+ID4gK3N0YXRpYyBzaXplX3QgZ3Vlc3RzX2NhcCwgZ3Vlc3RzX2xlbjsNCj4gPiArc3RhdGlj IHN0cnVjdCBndWVzdCAqZ3Vlc3RzOw0KPiA+ICsNCj4gPiArc3RhdGljIGNoYXIgKmdldF9xZW11 X2d1ZXN0X25hbWUoY2hhciAqYXJnKQ0KPiA+ICt7DQo+ID4gKyAgICAgY2hhciAqdG9rLCAqZW5k ID0gYXJnOw0KPiA+ICsNCj4gPiArICAgICB3aGlsZSAoKHRvayA9IHN0cnNlcCgmZW5kLCAiLCIp KSkgew0KPiA+ICsgICAgICAgICAgICAgaWYgKHN0cm5jbXAodG9rLCAiZ3Vlc3Q9IiwgNikgPT0g MCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvayArIDY7DQo+ID4gKyAgICAg fQ0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gYXJnOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgdm9pZCByZWFkX3FlbXVfZ3Vlc3RzKHZvaWQpDQo+ID4gK3sNCj4gPiArICAgICBzdGF0aWMg Ym9vbCBpbml0aWFsaXplZCA9IGZhbHNlOw0KPiA+ICsgICAgIHN0cnVjdCBkaXJlbnQgKmVudHJ5 Ow0KPiA+ICsgICAgIGNoYXIgcGF0aFtQQVRIX01BWF07DQo+ID4gKyAgICAgRElSICpkaXI7DQo+ ID4gKw0KPiA+ICsgICAgIGlmIChpbml0aWFsaXplZCkNCj4gPiArICAgICAgICAgICAgIHJldHVy bjsNCj4gPiArDQo+ID4gKyAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOw0KPiA+ICsgICAgIGRpciA9 IG9wZW5kaXIoIi9wcm9jIik7DQo+ID4gKyAgICAgaWYgKCFkaXIpDQo+ID4gKyAgICAgICAgICAg ICBkaWUoIm9wZW5kaXIiKTsNCj4gPiArDQo+ID4gKyAgICAgZm9yIChlbnRyeSA9IHJlYWRkaXIo ZGlyKTsgZW50cnk7IGVudHJ5ID0gcmVhZGRpcihkaXIpKSB7DQo+ID4gKyAgICAgICAgICAgICBi b29sIGlzX3FlbXUgPSBmYWxzZSwgbGFzdF93YXNfbmFtZSA9IGZhbHNlOw0KPiA+ICsgICAgICAg ICAgICAgc3RydWN0IGd1ZXN0IGd1ZXN0ID0ge307DQo+ID4gKyAgICAgICAgICAgICBjaGFyICpw LCAqYXJnID0gTlVMTDsNCj4gPiArICAgICAgICAgICAgIHNpemVfdCBhcmdfc2l6ZSA9IDA7DQo+ ID4gKyAgICAgICAgICAgICBGSUxFICpmOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIGlmICgh KGVudHJ5LT5kX3R5cGUgPT0gRFRfRElSICYmIGlzX2RpZ2l0cyhlbnRyeS0+ZF9uYW1lKSkpDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsNCj4gPiArICAgICAgICAg ICAgIGd1ZXN0LnBpZCA9IGF0b2koZW50cnktPmRfbmFtZSk7DQo+ID4gKyAgICAgICAgICAgICBz bnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIvcHJvYy8lcy9jbWRsaW5lIiwgZW50cnktPmRf bmFtZSk7DQo+ID4gKyAgICAgICAgICAgICBmID0gZm9wZW4ocGF0aCwgInIiKTsNCj4gPiArICAg ICAgICAgICAgIGlmICghZikNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ ID4gKw0KPiA+ICsgICAgICAgICAgICAgd2hpbGUgKGdldGRlbGltKCZhcmcsICZhcmdfc2l6ZSwg MCwgZikgIT0gLTEpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc19xZW11ICYm IHN0cnN0cihhcmcsICJxZW11LXN5c3RlbS0iKSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlzX3FlbXUgPSB0cnVlOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX3FlbXUpDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udGludWU7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBp ZiAoc3RyY21wKGFyZywgIi1uYW1lIikgPT0gMCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxhc3Rfd2FzX25hbWUgPSB0cnVlOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdF93YXNfbmFtZSkgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXN0Lm5hbWUgPSBzdHJkdXAoZ2V0X3FlbXVfZ3Vl c3RfbmFtZShhcmcpKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3dh c19uYW1lID0gZmFsc2U7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIHAgPSBzdHJzdHIoYXJnLCAiZ3Vlc3QtY2lkPSIpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBpZiAocCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1 ZXN0LmNpZCA9IGF0b2kocCArIDEwKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIGlmIChpc19xZW11KSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGlmIChndWVzdHNfY2FwID09IGd1ZXN0c19sZW4pIHsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBndWVzdHNfY2FwID0gZ3Jvd19jYXAoZ3Vlc3RzX2Nh cCk7DQo+DQo+IFRoaXMgaXNuJ3QgYSBmYXN0IHBhdGggaXMgaXQ/IEknbSBub3Qgc3VyZSB3aHkg d2UgYXJlIHVzaW5nDQo+IGd1ZXN0c19jYXAoKSBoZXJlLiBOb3RlLCByZWFsbG9jIGFsbG9jcyBt b3JlIHRoYW4gcmVxdWlyZWQgYW5kIGlzDQo+IHByZXR0eSBtdWNoIGEgbm9wIGlmIHRoZSBhbGxv Y2F0ZWQgYW1vdW50IGlzIHN0aWxsIHdpdGhpbiBpdHMNCj4gYWxsb2NhdGlvbiB0aGF0IGl0IG1h ZGUgdGhlIGZpcnN0IHRpbWUuDQo+DQo+IC0tIFN0ZXZlDQo+DQo+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3Vlc3RzID0gcmVhbGxvYyhndWVzdHMsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWVzdHNfY2FwICogc2l6ZW9m KCpndWVzdHMpKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBndWVzdHNbZ3Vlc3RzX2xlbisrXSA9IGd1ZXN0Ow0KPiA+ICsgICAgICAgICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIGZyZWUoYXJnKTsNCj4gPiArICAgICAgICAg ICAgIGZjbG9zZShmKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGNsb3NlZGlyKGRp cik7DQo+ID4gK30NCj4gPiArDQo+ID4NCg==