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 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0819BC46CD2 for ; Wed, 24 Jan 2024 05:55:32 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rSWDh-0000A1-Ev; Wed, 24 Jan 2024 00:54:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rSWDP-00006j-DJ for qemu-devel@nongnu.org; Wed, 24 Jan 2024 00:54:26 -0500 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rSWDL-0001e5-0o for qemu-devel@nongnu.org; Wed, 24 Jan 2024 00:54:22 -0500 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-40ec34160baso7542885e9.1 for ; Tue, 23 Jan 2024 21:54:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1706075656; x=1706680456; darn=nongnu.org; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Fo9Db7WxoucgL+kf1sTIoI9tvZ3X1JAYAkok55byt7U=; b=vrswPT7mC8o6HSpb9AIKGdqvcd78Wxxe7Ze0jrnTkcfy1vCwrhYizxjkKgo3fjKxLh hAnp4dOA4smdXGAOzaPaFLEmEbos9wlIrsUJAaNZ8jNpBaeL1YC3UB5mlx8ZnvgWeq// bCjVZw4lQ3xJ1SV3wpWBd0dL2a9Q1AVIR7p0vM2HbDqrlCx3y+wMAMTxCX8KR2zQ4bRe Hs+COgamYvfkTgFZtJ6QdjGosY2HH6T2QboZmU0YW9VQ3EXYA9LOfsy6DgIcef8mWJkK uT4lSckwNrcHBNoTj1nbBBBqTXuk06Mg2xGKfEgMVmFyWB5H/ipLAG9yoCmJCyK4ZkD8 gcHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706075656; x=1706680456; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Fo9Db7WxoucgL+kf1sTIoI9tvZ3X1JAYAkok55byt7U=; b=RWlVoJABByfeigfrW/jnqgP/sUFm3CwyczB4i+xyayZuaJc7ByXb356LHKGFBUBd8C htCBoCFOp6Sz9+j3sDV4yQR0IEhoQTRXhZttXqcbNqe1+kAQIH/7GsBYCecjAGfPS9Nb PEVXePF+JeY8smpEF817WL+IMuk8Xjs7+LpFRnIkY4bZtrH6cnyOir+LTZD83yHxpkE/ YxLoKJaudoF0tbxfVrrfOYsWPvpl3N5MjvgrFaV0O+M9szf0pglyM1Sl7s0SJo2zpMFz d4C+h8YAT3eHergrRwWchbcAzPhUWWeZckXvNMQybc7Ixou14S/h2Fu8xKdUriMszHPP avPw== X-Gm-Message-State: AOJu0YwxAM+ew/nYC8Bfm9PKE8finNzaqwO5YkiAL8A6VnebiWmLuIsm v2MZiQR+4rGcCK4eTKGaJc6hzqF7SXLzglqhKnJupXZnex7He/57mBLD3dGVV/E= X-Google-Smtp-Source: AGHT+IFxg0BEKEfV4EZKeX5YEo9Wsf2r6ykM4Q9mLnhNZfkFEwu8O5I/GuZHmr246UFE8Pl99ay5sA== X-Received: by 2002:adf:a4db:0:b0:339:38d3:7df7 with SMTP id h27-20020adfa4db000000b0033938d37df7mr185343wrb.117.1706075655825; Tue, 23 Jan 2024 21:54:15 -0800 (PST) Received: from [192.168.1.24] ([102.35.208.160]) by smtp.gmail.com with ESMTPSA id w6-20020adfee46000000b00337cf4a20c6sm15252568wro.31.2024.01.23.21.54.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 23 Jan 2024 21:54:15 -0800 (PST) Message-ID: <17b8f001-7b5d-4e87-ab56-37e95bd34eda@linaro.org> Date: Wed, 24 Jan 2024 09:54:02 +0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 19/21] contrib/plugins: extend execlog to track register changes To: =?UTF-8?Q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Cc: Marcel Apfelbaum , "Edgar E. Iglesias" , =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= , Michael Rolnik , =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= , Laurent Vivier , kvm@vger.kernel.org, Yoshinori Sato , Palmer Dabbelt , Liu Zhiwei , Laurent Vivier , Yanan Wang , qemu-ppc@nongnu.org, Weiwei Li , qemu-s390x@nongnu.org, =?UTF-8?Q?C=C3=A9dric_Le_Goater?= , Peter Maydell , Alexandre Iooss , John Snow , Mahmoud Mandour , Wainer dos Santos Moschetta , Richard Henderson , Ilya Leoshkevich , Alistair Francis , David Woodhouse , Cleber Rosa , Beraldo Leal , Bin Meng , Nicholas Piggin , Aurelien Jarno , Daniel Henrique Barboza , Daniel Henrique Barboza , Thomas Huth , David Hildenbrand , qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Paolo Bonzini , Song Gao , Eduardo Habkost , Brian Cain , Paul Durrant , Akihiko Odaki References: <20240122145610.413836-1-alex.bennee@linaro.org> <20240122145610.413836-20-alex.bennee@linaro.org> From: Pierrick Bouvier Content-Language: en-US In-Reply-To: <20240122145610.413836-20-alex.bennee@linaro.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=pierrick.bouvier@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org T24gMS8yMi8yNCAxODo1NiwgQWxleCBCZW5uw6llIHdyb3RlOg0KPiBXaXRoIHRoZSBuZXcg cGx1Z2luIHJlZ2lzdGVyIEFQSSB3ZSBjYW4gbm93IHRyYWNrIGNoYW5nZXMgdG8gcmVnaXN0 ZXINCj4gdmFsdWVzLiBDdXJyZW50bHkgdGhlIGltcGxlbWVudGF0aW9uIGlzIGZhaXJseSBk dW1iIHdoaWNoIHdpbGwgc2xvdw0KPiBkb3duIGlmIGEgbGFyZ2UgbnVtYmVyIG9mIHJlZ2lz dGVyIHZhbHVlcyBhcmUgYmVpbmcgdHJhY2tlZC4gVGhpcw0KPiBjb3VsZCBiZSBpbXByb3Zl ZCBieSBvbmx5IGluc3RydW1lbnRpbmcgaW5zdHJ1Y3Rpb25zIHdoaWNoIG1lbnRpb24NCj4g cmVnaXN0ZXJzIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRyYWNraW5nLg0KPiANCj4gRXhhbXBs ZSB1c2FnZToNCj4gDQo+ICAgIC4vcWVtdS1hYXJjaDY0IC1EIHBsdWdpbi5sb2cgLWQgcGx1 Z2luIFwNCj4gICAgICAgLWNwdSBtYXgsc3ZlMjU2PW9uIFwNCj4gICAgICAgLXBsdWdpbiBj b250cmliL3BsdWdpbnMvbGliZXhlY2xvZy5zbyxyZWc9c3AscmVnPXpcKiBcDQo+ICAgICAg IC4vdGVzdHMvdGNnL2FhcmNoNjQtbGludXgtdXNlci9zaGE1MTItc3ZlDQo+IA0KPiB3aWxs IGRpc3BsYXkgaW4gdGhlIGV4ZWNsb2cgYW55IGNoYW5nZXMgdG8gdGhlIHN0YWNrIHBvaW50 ZXIgKHNwKSBhbmQNCj4gdGhlIFNWRSBaIHJlZ2lzdGVycy4NCj4gDQo+IE1lc3NhZ2UtSWQ6 IDwyMDI0MDEwMzE3MzM0OS4zOTg1MjYtNDEtYWxleC5iZW5uZWVAbGluYXJvLm9yZz4NCj4g U2lnbmVkLW9mZi1ieTogQWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPg0K PiBDYzogQWtpaGlrbyBPZGFraSA8YWtpaGlrby5vZGFraUBkYXluaXguY29tPg0KPiBCYXNl ZC1PbjogPDIwMjMxMDI1MDkzMTI4LjMzMTE2LTE5LWFraWhpa28ub2Rha2lAZGF5bml4LmNv bT4NCj4gDQo+IC0tLQ0KPiB2Mw0KPiAgICAtIGp1c3QgdXNlIGEgR0FycmF5IGZvciB0aGUg Q1BVIGFycmF5DQo+ICAgIC0gZHJvcCBkdXBsaWNhdGUgb2YgY3B1X2luZGV4DQo+IC0tLQ0K PiAgIGRvY3MvZGV2ZWwvdGNnLXBsdWdpbnMucnN0IHwgIDE3ICstDQo+ICAgY29udHJpYi9w bHVnaW5zL2V4ZWNsb2cuYyAgfCAzMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLQ0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgMjgyIGluc2VydGlvbnMoKyksIDUyIGRl bGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RvY3MvZGV2ZWwvdGNnLXBsdWdpbnMu cnN0IGIvZG9jcy9kZXZlbC90Y2ctcGx1Z2lucy5yc3QNCj4gaW5kZXggODFkY2Q0M2E2MTIu LmZhNzQyMTI3OWY1IDEwMDY0NA0KPiAtLS0gYS9kb2NzL2RldmVsL3RjZy1wbHVnaW5zLnJz dA0KPiArKysgYi9kb2NzL2RldmVsL3RjZy1wbHVnaW5zLnJzdA0KPiBAQCAtNDk3LDYgKzQ5 NywyMiBAQCBhcmd1bWVudHMgaWYgcmVxdWlyZWQ6Og0KPiAgICAgJCBxZW11LXN5c3RlbS1h cm0gJChRRU1VX0FSR1MpIFwNCj4gICAgICAgLXBsdWdpbiAuL2NvbnRyaWIvcGx1Z2lucy9s aWJleGVjbG9nLnNvLGlmaWx0ZXI9c3QxdyxhZmlsdGVyPTB4NDAwMDE4MDggLWQgcGx1Z2lu DQo+ICAgDQo+ICtUaGlzIHBsdWdpbiBjYW4gYWxzbyBkdW1wIHJlZ2lzdGVycyB3aGVuIHRo ZXkgY2hhbmdlIHZhbHVlLiBTcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZQ0KPiArcmVnaXN0ZXJz IHdpdGggbXVsdGlwbGUgYGByZWdgYCBvcHRpb25zLiBZb3UgY2FuIGFsc28gdXNlIGdsb2Ig c3R5bGUgbWF0Y2hpbmcgaWYgeW91IHdpc2g6Og0KPiArDQo+ICsgICQgcWVtdS1zeXN0ZW0t YXJtICQoUUVNVV9BUkdTKSBcDQo+ICsgICAgLXBsdWdpbiAuL2NvbnRyaWIvcGx1Z2lucy9s aWJleGVjbG9nLnNvLHJlZz1cKl9lbDIscmVnPXNwIC1kIHBsdWdpbg0KPiArDQo+ICtCZSBh d2FyZSB0aGF0IGVhY2ggYWRkaXRpb25hbCByZWdpc3RlciB0byBjaGVjayB3aWxsIHNsb3cg ZG93bg0KPiArZXhlY3V0aW9uIHF1aXRlIGNvbnNpZGVyYWJseS4gWW91IGNhbiBvcHRpbWlz ZSB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyDQo+ICtjaGVja3MgZG9uZSBieSB1c2luZyB0aGUg cmRpc2FzIG9wdGlvbi4gVGhpcyB3aWxsIG9ubHkgaW5zdHJ1bWVudA0KPiAraW5zdHJ1Y3Rp b25zIHRoYXQgbWVudGlvbiB0aGUgcmVnaXN0ZXJzIGluIHF1ZXN0aW9uIGluIGRpc2Fzc2Vt Ymx5Lg0KPiArVGhpcyBpcyBub3QgZm9vbHByb29mIGFzIHNvbWUgaW5zdHJ1Y3Rpb25zIGlt cGxpY2l0bHkgY2hhbmdlDQo+ICtpbnN0cnVjdGlvbnMuIFlvdSBjYW4gdXNlIHRoZSBpZmls dGVyIHRvIGNhdGNoIHRoZXNlIGNhc2VzOg0KPiArDQo+ICsgICQgcWVtdS1zeXN0ZW0tYXJt ICQoUUVNVV9BUkdTKSBcDQo+ICsgICAgLXBsdWdpbiAuL2NvbnRyaWIvcGx1Z2lucy9saWJl eGVjbG9nLnNvLGlmaWx0ZXI9bXNyLGlmaWx0ZXI9YmxyLHJlZz14MzAscmVnPVwqX2VsMSxy ZGlzYXM9b24NCj4gKw0KPiAgIC0gY29udHJpYi9wbHVnaW5zL2NhY2hlLmMNCj4gICANCj4g ICBDYWNoZSBtb2RlbGxpbmcgcGx1Z2luIHRoYXQgbWVhc3VyZXMgdGhlIHBlcmZvcm1hbmNl IG9mIGEgZ2l2ZW4gTDEgY2FjaGUNCj4gQEAgLTU4Myw0ICs1OTksMyBAQCBUaGUgZm9sbG93 aW5nIEFQSSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgaW5saW5lIGRvY3VtZW50YXRpb24gaW4N Cj4gICBpbmNsdWRlIHRoZSBmdWxsIGtlcm5lbC1kb2MgYW5ub3RhdGlvbnMuDQo+ICAgDQo+ ICAgLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvcWVtdS9xZW11LXBsdWdpbi5oDQo+IC0NCj4g ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGx1Z2lucy9leGVjbG9nLmMgYi9jb250cmliL3BsdWdp bnMvZXhlY2xvZy5jDQo+IGluZGV4IGYyNjJlNTU1NWViLi5jMjY2NjRjMGFiMyAxMDA2NDQN Cj4gLS0tIGEvY29udHJpYi9wbHVnaW5zL2V4ZWNsb2cuYw0KPiArKysgYi9jb250cmliL3Bs dWdpbnMvZXhlY2xvZy5jDQo+IEBAIC0xLDcgKzEsNyBAQA0KPiAgIC8qDQo+ICAgICogQ29w eXJpZ2h0IChDKSAyMDIxLCBBbGV4YW5kcmUgSW9vc3MgPGVyZG5heGVAY3JhbnMub3JnPg0K PiAgICAqDQo+IC0gKiBMb2cgaW5zdHJ1Y3Rpb24gZXhlY3V0aW9uIHdpdGggbWVtb3J5IGFj Y2Vzcy4NCj4gKyAqIExvZyBpbnN0cnVjdGlvbiBleGVjdXRpb24gd2l0aCBtZW1vcnkgYWNj ZXNzIGFuZCByZWdpc3RlciBjaGFuZ2VzDQo+ICAgICoNCj4gICAgKiBMaWNlbnNlOiBHTlUg R1BMLCB2ZXJzaW9uIDIgb3IgbGF0ZXIuDQo+ICAgICogICBTZWUgdGhlIENPUFlJTkcgZmls ZSBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4NCj4gQEAgLTE1LDI5ICsxNSw0MCBAQA0K PiAgIA0KPiAgICNpbmNsdWRlIDxxZW11LXBsdWdpbi5oPg0KPiAgIA0KPiArdHlwZWRlZiBz dHJ1Y3Qgew0KPiArICAgIHN0cnVjdCBxZW11X3BsdWdpbl9yZWdpc3RlciAqaGFuZGxlOw0K PiArICAgIEdCeXRlQXJyYXkgKmxhc3Q7DQo+ICsgICAgR0J5dGVBcnJheSAqbmV3Ow0KPiAr ICAgIGNvbnN0IGNoYXIgKm5hbWU7DQo+ICt9IFJlZ2lzdGVyOw0KPiArDQo+ICt0eXBlZGVm IHN0cnVjdCBDUFUgew0KPiArICAgIC8qIFN0b3JlIGxhc3QgZXhlY3V0ZWQgaW5zdHJ1Y3Rp b24gb24gZWFjaCB2Q1BVIGFzIGEgR1N0cmluZyAqLw0KPiArICAgIEdTdHJpbmcgKmxhc3Rf ZXhlYzsNCj4gKyAgICAvKiBQdHIgYXJyYXkgb2YgUmVnaXN0ZXIgKi8NCj4gKyAgICBHUHRy QXJyYXkgKnJlZ2lzdGVyczsNCj4gK30gQ1BVOw0KPiArDQo+ICAgUUVNVV9QTFVHSU5fRVhQ T1JUIGludCBxZW11X3BsdWdpbl92ZXJzaW9uID0gUUVNVV9QTFVHSU5fVkVSU0lPTjsNCj4g ICANCj4gLS8qIFN0b3JlIGxhc3QgZXhlY3V0ZWQgaW5zdHJ1Y3Rpb24gb24gZWFjaCB2Q1BV IGFzIGEgR1N0cmluZyAqLw0KPiAtc3RhdGljIEdQdHJBcnJheSAqbGFzdF9leGVjOw0KPiAr c3RhdGljIEdBcnJheSAqY3B1czsNCj4gICBzdGF0aWMgR1JXTG9jayBleHBhbmRfYXJyYXlf bG9jazsNCj4gICANCj4gICBzdGF0aWMgR1B0ckFycmF5ICppbWF0Y2hlczsNCj4gICBzdGF0 aWMgR0FycmF5ICphbWF0Y2hlczsNCj4gK3N0YXRpYyBHUHRyQXJyYXkgKnJtYXRjaGVzOw0K PiArc3RhdGljIGJvb2wgZGlzYXNfYXNzaXN0Ow0KPiArc3RhdGljIEdNdXRleCBhZGRfcmVn X25hbWVfbG9jazsNCj4gK3N0YXRpYyBHUHRyQXJyYXkgKmFsbF9yZWdfbmFtZXM7DQo+ICAg DQo+IC0vKg0KPiAtICogRXhwYW5kIGxhc3RfZXhlYyBhcnJheS4NCj4gLSAqDQo+IC0gKiBB cyB3ZSBjb3VsZCBoYXZlIG11bHRpcGxlIHRocmVhZHMgdHJ5aW5nIHRvIGRvIHRoaXMgd2Ug bmVlZCB0bw0KPiAtICogc2VyaWFsaXNlIHRoZSBleHBhbnNpb24gdW5kZXIgYSBsb2NrLg0K PiAtICovDQo+IC1zdGF0aWMgdm9pZCBleHBhbmRfbGFzdF9leGVjKGludCBjcHVfaW5kZXgp DQo+ICtzdGF0aWMgQ1BVICpnZXRfY3B1KGludCB2Y3B1X2luZGV4KQ0KPiAgIHsNCj4gLSAg ICBnX3J3X2xvY2tfd3JpdGVyX2xvY2soJmV4cGFuZF9hcnJheV9sb2NrKTsNCj4gLSAgICB3 aGlsZSAoY3B1X2luZGV4ID49IGxhc3RfZXhlYy0+bGVuKSB7DQo+IC0gICAgICAgIEdTdHJp bmcgKnMgPSBnX3N0cmluZ19uZXcoTlVMTCk7DQo+IC0gICAgICAgIGdfcHRyX2FycmF5X2Fk ZChsYXN0X2V4ZWMsIHMpOw0KPiAtICAgIH0NCj4gLSAgICBnX3J3X2xvY2tfd3JpdGVyX3Vu bG9jaygmZXhwYW5kX2FycmF5X2xvY2spOw0KPiArICAgIENQVSAqYzsNCj4gKyAgICBnX3J3 X2xvY2tfcmVhZGVyX2xvY2soJmV4cGFuZF9hcnJheV9sb2NrKTsNCj4gKyAgICBjID0gJmdf YXJyYXlfaW5kZXgoY3B1cywgQ1BVLCB2Y3B1X2luZGV4KTsNCj4gKyAgICBnX3J3X2xvY2tf cmVhZGVyX3VubG9jaygmZXhwYW5kX2FycmF5X2xvY2spOw0KPiArDQo+ICsgICAgcmV0dXJu IGM7DQo+ICAgfQ0KPiAgIA0KPiAgIC8qKg0KPiBAQCAtNDYsMTMgKzU3LDEwIEBAIHN0YXRp YyB2b2lkIGV4cGFuZF9sYXN0X2V4ZWMoaW50IGNwdV9pbmRleCkNCj4gICBzdGF0aWMgdm9p ZCB2Y3B1X21lbSh1bnNpZ25lZCBpbnQgY3B1X2luZGV4LCBxZW11X3BsdWdpbl9tZW1pbmZv X3QgaW5mbywNCj4gICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWRkciwgdm9p ZCAqdWRhdGEpDQo+ICAgew0KPiAtICAgIEdTdHJpbmcgKnM7DQo+ICsgICAgQ1BVICpjID0g Z2V0X2NwdShjcHVfaW5kZXgpOw0KPiArICAgIEdTdHJpbmcgKnMgPSBjLT5sYXN0X2V4ZWM7 DQo+ICAgDQo+ICAgICAgIC8qIEZpbmQgdkNQVSBpbiBhcnJheSAqLw0KPiAtICAgIGdfcndf bG9ja19yZWFkZXJfbG9jaygmZXhwYW5kX2FycmF5X2xvY2spOw0KPiAtICAgIGdfYXNzZXJ0 KGNwdV9pbmRleCA8IGxhc3RfZXhlYy0+bGVuKTsNCj4gLSAgICBzID0gZ19wdHJfYXJyYXlf aW5kZXgobGFzdF9leGVjLCBjcHVfaW5kZXgpOw0KPiAtICAgIGdfcndfbG9ja19yZWFkZXJf dW5sb2NrKCZleHBhbmRfYXJyYXlfbG9jayk7DQo+ICAgDQo+ICAgICAgIC8qIEluZGljYXRl IHR5cGUgb2YgbWVtb3J5IGFjY2VzcyAqLw0KPiAgICAgICBpZiAocWVtdV9wbHVnaW5fbWVt X2lzX3N0b3JlKGluZm8pKSB7DQo+IEBAIC03MywzMiArODEsOTEgQEAgc3RhdGljIHZvaWQg dmNwdV9tZW0odW5zaWduZWQgaW50IGNwdV9pbmRleCwgcWVtdV9wbHVnaW5fbWVtaW5mb190 IGluZm8sDQo+ICAgfQ0KPiAgIA0KPiAgIC8qKg0KPiAtICogTG9nIGluc3RydWN0aW9uIGV4 ZWN1dGlvbg0KPiArICogTG9nIGluc3RydWN0aW9uIGV4ZWN1dGlvbiwgb3V0cHV0dGluZyB0 aGUgbGFzdCBvbmUuDQo+ICsgKg0KPiArICogdmNwdV9pbnNuX2V4ZWMoKSBpcyBhIGNvcHkg YW5kIHBhc3RlIG9mIHZjcHVfaW5zbl9leGVjX3dpdGhfcmVncygpDQo+ICsgKiB3aXRob3V0 IHRoZSBjaGVja2luZyBvZiByZWdpc3RlciB2YWx1ZXMgd2hlbiB3ZSd2ZSBhdHRlbXB0ZWQg dG8NCj4gKyAqIG9wdGltaXNlIHdpdGggZGlzYXNfYXNzaXN0Lg0KPiAgICAqLw0KPiAtc3Rh dGljIHZvaWQgdmNwdV9pbnNuX2V4ZWModW5zaWduZWQgaW50IGNwdV9pbmRleCwgdm9pZCAq dWRhdGEpDQo+ICtzdGF0aWMgdm9pZCBpbnNuX2NoZWNrX3JlZ3MoaW50IHZjcHVfaW5kZXgs IENQVSAqY3B1KQ0KPiAgIHsNCj4gLSAgICBHU3RyaW5nICpzOw0KPiArICAgIGZvciAoaW50 IG4gPSAwOyBuIDwgY3B1LT5yZWdpc3RlcnMtPmxlbjsgbisrKSB7DQo+ICsgICAgICAgIFJl Z2lzdGVyICpyZWcgPSBjcHUtPnJlZ2lzdGVycy0+cGRhdGFbbl07DQo+ICsgICAgICAgIGlu dCBzejsNCj4gICANCj4gLSAgICAvKiBGaW5kIG9yIGNyZWF0ZSB2Q1BVIGluIGFycmF5ICov DQo+IC0gICAgZ19yd19sb2NrX3JlYWRlcl9sb2NrKCZleHBhbmRfYXJyYXlfbG9jayk7DQo+ IC0gICAgaWYgKGNwdV9pbmRleCA+PSBsYXN0X2V4ZWMtPmxlbikgew0KPiAtICAgICAgICBn X3J3X2xvY2tfcmVhZGVyX3VubG9jaygmZXhwYW5kX2FycmF5X2xvY2spOw0KPiAtICAgICAg ICBleHBhbmRfbGFzdF9leGVjKGNwdV9pbmRleCk7DQo+IC0gICAgICAgIGdfcndfbG9ja19y ZWFkZXJfbG9jaygmZXhwYW5kX2FycmF5X2xvY2spOw0KPiArICAgICAgICBnX2J5dGVfYXJy YXlfc2V0X3NpemUocmVnLT5uZXcsIDApOw0KPiArICAgICAgICBzeiA9IHFlbXVfcGx1Z2lu X3JlYWRfcmVnaXN0ZXIodmNwdV9pbmRleCwgcmVnLT5oYW5kbGUsIHJlZy0+bmV3KTsNCj4g KyAgICAgICAgZ19hc3NlcnQoc3ogPT0gcmVnLT5sYXN0LT5sZW4pOw0KPiArDQo+ICsgICAg ICAgIGlmIChtZW1jbXAocmVnLT5sYXN0LT5kYXRhLCByZWctPm5ldy0+ZGF0YSwgc3opKSB7 DQo+ICsgICAgICAgICAgICBHQnl0ZUFycmF5ICp0ZW1wID0gcmVnLT5sYXN0Ow0KPiArICAg ICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihjcHUtPmxhc3RfZXhlYywgIiwgJXMg LT4gMHgiLCByZWctPm5hbWUpOw0KPiArICAgICAgICAgICAgLyogVE9ETzogaGFuZGxlIEJF IHByb3Blcmx5ICovDQo+ICsgICAgICAgICAgICBmb3IgKGludCBpID0gc3o7IGkgPj0gMDsg aS0tKSB7DQo+ICsgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihjcHUt Pmxhc3RfZXhlYywgIiUwMngiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVnLT5uZXctPmRhdGFbaV0pOw0KPiArICAgICAgICAgICAgfQ0KPiArICAg ICAgICAgICAgcmVnLT5sYXN0ID0gcmVnLT5uZXc7DQo+ICsgICAgICAgICAgICByZWctPm5l dyA9IHRlbXA7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gKy8qIExv ZyBsYXN0IGluc3RydWN0aW9uIHdoaWxlIGNoZWNraW5nIHJlZ2lzdGVycyAqLw0KPiArc3Rh dGljIHZvaWQgdmNwdV9pbnNuX2V4ZWNfd2l0aF9yZWdzKHVuc2lnbmVkIGludCBjcHVfaW5k ZXgsIHZvaWQgKnVkYXRhKQ0KPiArew0KPiArICAgIENQVSAqY3B1ID0gZ2V0X2NwdShjcHVf aW5kZXgpOw0KPiArDQo+ICsgICAgLyogUHJpbnQgcHJldmlvdXMgaW5zdHJ1Y3Rpb24gaW4g Y2FjaGUgKi8NCj4gKyAgICBpZiAoY3B1LT5sYXN0X2V4ZWMtPmxlbikgew0KPiArICAgICAg ICBpZiAoY3B1LT5yZWdpc3RlcnMpIHsNCj4gKyAgICAgICAgICAgIGluc25fY2hlY2tfcmVn cyhjcHVfaW5kZXgsIGNwdSk7DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICBxZW11 X3BsdWdpbl9vdXRzKGNwdS0+bGFzdF9leGVjLT5zdHIpOw0KPiArICAgICAgICBxZW11X3Bs dWdpbl9vdXRzKCJcbiIpOw0KPiArICAgIH0NCj4gKw0KPiArICAgIC8qIFN0b3JlIG5ldyBp bnN0cnVjdGlvbiBpbiBjYWNoZSAqLw0KPiArICAgIC8qIHZjcHVfbWVtIHdpbGwgYWRkIG1l bW9yeSBhY2Nlc3MgaW5mb3JtYXRpb24gdG8gbGFzdF9leGVjICovDQo+ICsgICAgZ19zdHJp bmdfcHJpbnRmKGNwdS0+bGFzdF9leGVjLCAiJXUsICIsIGNwdV9pbmRleCk7DQo+ICsgICAg Z19zdHJpbmdfYXBwZW5kKGNwdS0+bGFzdF9leGVjLCAoY2hhciAqKXVkYXRhKTsNCj4gK30N Cj4gKw0KPiArLyogTG9nIGxhc3QgaW5zdHJ1Y3Rpb24gd2hpbGUgY2hlY2tpbmcgcmVnaXN0 ZXJzLCBpZ25vcmUgbmV4dCAqLw0KPiArc3RhdGljIHZvaWQgdmNwdV9pbnNuX2V4ZWNfb25s eV9yZWdzKHVuc2lnbmVkIGludCBjcHVfaW5kZXgsIHZvaWQgKnVkYXRhKQ0KPiArew0KPiAr ICAgIENQVSAqY3B1ID0gZ2V0X2NwdShjcHVfaW5kZXgpOw0KPiArDQo+ICsgICAgLyogUHJp bnQgcHJldmlvdXMgaW5zdHJ1Y3Rpb24gaW4gY2FjaGUgKi8NCj4gKyAgICBpZiAoY3B1LT5s YXN0X2V4ZWMtPmxlbikgew0KPiArICAgICAgICBpZiAoY3B1LT5yZWdpc3RlcnMpIHsNCj4g KyAgICAgICAgICAgIGluc25fY2hlY2tfcmVncyhjcHVfaW5kZXgsIGNwdSk7DQo+ICsgICAg ICAgIH0NCj4gKw0KPiArICAgICAgICBxZW11X3BsdWdpbl9vdXRzKGNwdS0+bGFzdF9leGVj LT5zdHIpOw0KPiArICAgICAgICBxZW11X3BsdWdpbl9vdXRzKCJcbiIpOw0KPiAgICAgICB9 DQo+IC0gICAgcyA9IGdfcHRyX2FycmF5X2luZGV4KGxhc3RfZXhlYywgY3B1X2luZGV4KTsN Cj4gLSAgICBnX3J3X2xvY2tfcmVhZGVyX3VubG9jaygmZXhwYW5kX2FycmF5X2xvY2spOw0K PiArDQo+ICsgICAgLyogcmVzZXQgKi8NCj4gKyAgICBjcHUtPmxhc3RfZXhlYy0+bGVuID0g MDsNCj4gK30NCj4gKw0KPiArLyogTG9nIGxhc3QgaW5zdHJ1Y3Rpb24gd2l0aG91dCBjaGVj a2luZyByZWdzLCBzZXR1cCBuZXh0ICovDQo+ICtzdGF0aWMgdm9pZCB2Y3B1X2luc25fZXhl Yyh1bnNpZ25lZCBpbnQgY3B1X2luZGV4LCB2b2lkICp1ZGF0YSkNCj4gK3sNCj4gKyAgICBD UFUgKmNwdSA9IGdldF9jcHUoY3B1X2luZGV4KTsNCj4gICANCj4gICAgICAgLyogUHJpbnQg cHJldmlvdXMgaW5zdHJ1Y3Rpb24gaW4gY2FjaGUgKi8NCj4gLSAgICBpZiAocy0+bGVuKSB7 DQo+IC0gICAgICAgIHFlbXVfcGx1Z2luX291dHMocy0+c3RyKTsNCj4gKyAgICBpZiAoY3B1 LT5sYXN0X2V4ZWMtPmxlbikgew0KPiArICAgICAgICBxZW11X3BsdWdpbl9vdXRzKGNwdS0+ bGFzdF9leGVjLT5zdHIpOw0KPiAgICAgICAgICAgcWVtdV9wbHVnaW5fb3V0cygiXG4iKTsN Cj4gICAgICAgfQ0KPiAgIA0KPiAgICAgICAvKiBTdG9yZSBuZXcgaW5zdHJ1Y3Rpb24gaW4g Y2FjaGUgKi8NCj4gICAgICAgLyogdmNwdV9tZW0gd2lsbCBhZGQgbWVtb3J5IGFjY2VzcyBp bmZvcm1hdGlvbiB0byBsYXN0X2V4ZWMgKi8NCj4gLSAgICBnX3N0cmluZ19wcmludGYocywg IiV1LCAiLCBjcHVfaW5kZXgpOw0KPiAtICAgIGdfc3RyaW5nX2FwcGVuZChzLCAoY2hhciAq KXVkYXRhKTsNCj4gKyAgICBnX3N0cmluZ19wcmludGYoY3B1LT5sYXN0X2V4ZWMsICIldSwg IiwgY3B1X2luZGV4KTsNCj4gKyAgICBnX3N0cmluZ19hcHBlbmQoY3B1LT5sYXN0X2V4ZWMs IChjaGFyICopdWRhdGEpOw0KPiAgIH0NCj4gICANCj4gICAvKioNCj4gQEAgLTExMSw2ICsx NzgsOCBAQCBzdGF0aWMgdm9pZCB2Y3B1X3RiX3RyYW5zKHFlbXVfcGx1Z2luX2lkX3QgaWQs IHN0cnVjdCBxZW11X3BsdWdpbl90YiAqdGIpDQo+ICAgew0KPiAgICAgICBzdHJ1Y3QgcWVt dV9wbHVnaW5faW5zbiAqaW5zbjsNCj4gICAgICAgYm9vbCBza2lwID0gKGltYXRjaGVzIHx8 IGFtYXRjaGVzKTsNCj4gKyAgICBib29sIGNoZWNrX3JlZ3NfdGhpcyA9IHJtYXRjaGVzOw0K PiArICAgIGJvb2wgY2hlY2tfcmVnc19uZXh0ID0gZmFsc2U7DQo+ICAgDQo+ICAgICAgIHNp emVfdCBuID0gcWVtdV9wbHVnaW5fdGJfbl9pbnNucyh0Yik7DQo+ICAgICAgIGZvciAoc2l6 ZV90IGkgPSAwOyBpIDwgbjsgaSsrKSB7DQo+IEBAIC0xMzEsNyArMjAwLDggQEAgc3RhdGlj IHZvaWQgdmNwdV90Yl90cmFucyhxZW11X3BsdWdpbl9pZF90IGlkLCBzdHJ1Y3QgcWVtdV9w bHVnaW5fdGIgKnRiKQ0KPiAgICAgICAgICAgLyoNCj4gICAgICAgICAgICAqIElmIHdlIGFy ZSBmaWx0ZXJpbmcgd2UgYmV0dGVyIGNoZWNrIG91dCBpZiB3ZSBoYXZlIGFueQ0KPiAgICAg ICAgICAgICogaGl0cy4gVGhlIHNraXAgImxhdGNoZXMiIHNvIHdlIGNhbiB0cmFjayBtZW1v cnkgYWNjZXNzZXMNCg0Kbml0OiBtYXRjaGVzDQoNCj4gLSAgICAgICAgICogYWZ0ZXIgdGhl IGluc3RydWN0aW9uIHdlIGNhcmUgYWJvdXQuDQo+ICsgICAgICAgICAqIGFmdGVyIHRoZSBp bnN0cnVjdGlvbiB3ZSBjYXJlIGFib3V0LiBBbHNvIGVuYWJsZSByZWdpc3Rlcg0KPiArICAg ICAgICAgKiBjaGVja2luZyBvbiB0aGUgbmV4dCBpbnN0cnVjdGlvbi4NCj4gICAgICAgICAg ICAqLw0KPiAgICAgICAgICAgaWYgKHNraXAgJiYgaW1hdGNoZXMpIHsNCj4gICAgICAgICAg ICAgICBpbnQgajsNCj4gQEAgLTEzOSw2ICsyMDksNyBAQCBzdGF0aWMgdm9pZCB2Y3B1X3Ri X3RyYW5zKHFlbXVfcGx1Z2luX2lkX3QgaWQsIHN0cnVjdCBxZW11X3BsdWdpbl90YiAqdGIp DQo+ICAgICAgICAgICAgICAgICAgIGNoYXIgKm0gPSBnX3B0cl9hcnJheV9pbmRleChpbWF0 Y2hlcywgaik7DQo+ICAgICAgICAgICAgICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGlu c25fZGlzYXMsIG0pKSB7DQo+ICAgICAgICAgICAgICAgICAgICAgICBza2lwID0gZmFsc2U7 DQo+ICsgICAgICAgICAgICAgICAgICAgIGNoZWNrX3JlZ3NfbmV4dCA9IHJtYXRjaGVzOw0K PiAgICAgICAgICAgICAgICAgICB9DQo+ICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgICAg fQ0KPiBAQCAtMTUzLDggKzIyNCwzOSBAQCBzdGF0aWMgdm9pZCB2Y3B1X3RiX3RyYW5zKHFl bXVfcGx1Z2luX2lkX3QgaWQsIHN0cnVjdCBxZW11X3BsdWdpbl90YiAqdGIpDQo+ICAgICAg ICAgICAgICAgfQ0KPiAgICAgICAgICAgfQ0KPiAgIA0KPiArICAgICAgICAvKg0KPiArICAg ICAgICAgKiBDaGVjayB0aGUgZGlzYXNzZW1ibHkgdG8gc2VlIGlmIGEgcmVnaXN0ZXIgd2Ug Y2FyZSBhYm91dA0KPiArICAgICAgICAgKiB3aWxsIGJlIGFmZmVjdGVkIGJ5IHRoaXMgaW5z dHJ1Y3Rpb24uIFRoaXMgcmVsaWVzIG9uIHRoZSA+ICsgICAgICAgICAqIGRpc3NlbWJsZXIg ZG9pbmcgc29tZXRoaW5nIHNlbnNpYmxlIGZvciB0aGUgcmVnaXN0ZXJzIHdlDQoNCm5pdDog ZGlzYXNzZW1ibGVyDQoNCj4gKyAgICAgICAgICogY2FyZSBhYm91dC4NCj4gKyAgICAgICAg ICovDQo+ICsgICAgICAgIGlmIChkaXNhc19hc3Npc3QgJiYgcm1hdGNoZXMpIHsNCj4gKyAg ICAgICAgICAgIGNoZWNrX3JlZ3NfbmV4dCA9IGZhbHNlOw0KPiArICAgICAgICAgICAgZ2No YXIgKmFyZ3MgPSBnX3N0cnN0cl9sZW4oaW5zbl9kaXNhcywgLTEsICIgIik7DQo+ICsgICAg ICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IGFsbF9yZWdfbmFtZXMtPmxlbjsgbisrKSB7 DQo+ICsgICAgICAgICAgICAgICAgZ2NoYXIgKnJlZyA9IGdfcHRyX2FycmF5X2luZGV4KGFs bF9yZWdfbmFtZXMsIG4pOw0KPiArICAgICAgICAgICAgICAgIGlmIChnX3N0cnJzdHIoYXJn cywgcmVnKSkgew0KPiArICAgICAgICAgICAgICAgICAgICBjaGVja19yZWdzX25leHQgPSB0 cnVlOw0KPiArICAgICAgICAgICAgICAgICAgICBza2lwID0gZmFsc2U7DQo+ICsgICAgICAg ICAgICAgICAgfQ0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICB9DQo+ICsNCj4gKyAg ICAgICAgLyoNCj4gKyAgICAgICAgICogV2Ugbm93IGhhdmUgMyBjaG9pY2VzOg0KPiArICAg ICAgICAgKg0KPiArICAgICAgICAgKiAtIExvZyBpbnNuDQo+ICsgICAgICAgICAqIC0gTG9n IGluc24gd2hpbGUgY2hlY2tpbmcgcmVnaXN0ZXJzDQo+ICsgICAgICAgICAqIC0gRG9uJ3Qg bG9nIHRoaXMgaW5zbiBidXQgY2hlY2sgaWYgbGFzdCBpbnNuIGNoYW5nZWQgcmVnaXN0ZXJz DQo+ICsgICAgICAgICAqLw0KPiArDQo+ICAgICAgICAgICBpZiAoc2tpcCkgew0KPiAtICAg ICAgICAgICAgZ19mcmVlKGluc25fZGlzYXMpOw0KPiArICAgICAgICAgICAgaWYgKGNoZWNr X3JlZ3NfdGhpcykgew0KPiArICAgICAgICAgICAgICAgIHFlbXVfcGx1Z2luX3JlZ2lzdGVy X3ZjcHVfaW5zbl9leGVjX2NiKGluc24sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmNwdV9pbnNuX2V4ZWNfb25seV9yZWdz LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFFTVVfUExVR0lOX0NCX1JfUkVHUywNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gKyAgICAgICAg ICAgIH0NCj4gICAgICAgICAgIH0gZWxzZSB7DQo+ICAgICAgICAgICAgICAgdWludDMyX3Qg aW5zbl9vcGNvZGU7DQo+ICAgICAgICAgICAgICAgaW5zbl9vcGNvZGUgPSAqKCh1aW50MzJf dCAqKXFlbXVfcGx1Z2luX2luc25fZGF0YShpbnNuKSk7DQo+IEBAIC0xNjcsMzAgKzI2OSwx MjUgQEAgc3RhdGljIHZvaWQgdmNwdV90Yl90cmFucyhxZW11X3BsdWdpbl9pZF90IGlkLCBz dHJ1Y3QgcWVtdV9wbHVnaW5fdGIgKnRiKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFFTVVfUExVR0lOX01FTV9SVywgTlVMTCk7DQo+ICAg DQo+ICAgICAgICAgICAgICAgLyogUmVnaXN0ZXIgY2FsbGJhY2sgb24gaW5zdHJ1Y3Rpb24g Ki8NCj4gLSAgICAgICAgICAgIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVfaW5zbl9leGVj X2NiKGluc24sIHZjcHVfaW5zbl9leGVjLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUUVNVV9QTFVHSU5fQ0JfTk9fUkVHUywgb3V0 cHV0KTsNCj4gKyAgICAgICAgICAgIGlmIChjaGVja19yZWdzX3RoaXMpIHsNCj4gKyAgICAg ICAgICAgICAgICBxZW11X3BsdWdpbl9yZWdpc3Rlcl92Y3B1X2luc25fZXhlY19jYigNCj4g KyAgICAgICAgICAgICAgICAgICAgaW5zbiwgdmNwdV9pbnNuX2V4ZWNfd2l0aF9yZWdzLA0K PiArICAgICAgICAgICAgICAgICAgICBRRU1VX1BMVUdJTl9DQl9SX1JFR1MsDQo+ICsgICAg ICAgICAgICAgICAgICAgIG91dHB1dCk7DQo+ICsgICAgICAgICAgICB9IGVsc2Ugew0KPiAr ICAgICAgICAgICAgICAgIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVfaW5zbl9leGVjX2Ni KA0KPiArICAgICAgICAgICAgICAgICAgICBpbnNuLCB2Y3B1X2luc25fZXhlYywNCj4gKyAg ICAgICAgICAgICAgICAgICAgUUVNVV9QTFVHSU5fQ0JfTk9fUkVHUywNCj4gKyAgICAgICAg ICAgICAgICAgICAgb3V0cHV0KTsNCj4gKyAgICAgICAgICAgIH0NCj4gICANCj4gICAgICAg ICAgICAgICAvKiByZXNldCBza2lwICovDQo+ICAgICAgICAgICAgICAgc2tpcCA9IChpbWF0 Y2hlcyB8fCBhbWF0Y2hlcyk7DQo+ICAgICAgICAgICB9DQo+ICAgDQo+ICsgICAgICAgIC8q IHNldCByZWdzIGZvciBuZXh0ICovDQo+ICsgICAgICAgIGlmIChkaXNhc19hc3Npc3QgJiYg cm1hdGNoZXMpIHsNCj4gKyAgICAgICAgICAgIGNoZWNrX3JlZ3NfdGhpcyA9IGNoZWNrX3Jl Z3NfbmV4dDsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIGdfZnJlZShpbnNuX2Rp c2FzKTsNCj4gICAgICAgfQ0KPiAgIH0NCj4gICANCj4gK3N0YXRpYyBSZWdpc3RlciAqaW5p dF92Y3B1X3JlZ2lzdGVyKGludCB2Y3B1X2luZGV4LA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcWVtdV9wbHVnaW5fcmVnX2Rlc2NyaXB0b3IgKmRlc2MpDQo+ ICt7DQo+ICsgICAgUmVnaXN0ZXIgKnJlZyA9IGdfbmV3MChSZWdpc3RlciwgMSk7DQo+ICsg ICAgZ19hdXRvZnJlZSBnY2hhciAqbG93ZXIgPSBnX3V0Zjhfc3RyZG93bihkZXNjLT5uYW1l LCAtMSk7DQo+ICsgICAgaW50IHI7DQo+ICsNCj4gKyAgICByZWctPmhhbmRsZSA9IGRlc2Mt PmhhbmRsZTsNCj4gKyAgICByZWctPm5hbWUgPSBnX2ludGVybl9zdHJpbmcobG93ZXIpOw0K PiArICAgIHJlZy0+bGFzdCA9IGdfYnl0ZV9hcnJheV9uZXcoKTsNCj4gKyAgICByZWctPm5l dyA9IGdfYnl0ZV9hcnJheV9uZXcoKTsNCj4gKw0KPiArICAgIC8qIHJlYWQgdGhlIGluaXRp YWwgdmFsdWUgKi8NCj4gKyAgICByID0gcWVtdV9wbHVnaW5fcmVhZF9yZWdpc3Rlcih2Y3B1 X2luZGV4LCByZWctPmhhbmRsZSwgcmVnLT5sYXN0KTsNCj4gKyAgICBnX2Fzc2VydChyID4g MCk7DQo+ICsgICAgcmV0dXJuIHJlZzsNCj4gK30NCj4gKw0KPiArc3RhdGljIEdQdHJBcnJh eSAqcmVnaXN0ZXJzX2luaXQoaW50IHZjcHVfaW5kZXgpDQo+ICt7DQo+ICsgICAgZ19hdXRv cHRyKEdQdHJBcnJheSkgcmVnaXN0ZXJzID0gZ19wdHJfYXJyYXlfbmV3KCk7DQo+ICsgICAg Z19hdXRvcHRyKEdBcnJheSkgcmVnX2xpc3QgPSBxZW11X3BsdWdpbl9nZXRfcmVnaXN0ZXJz KHZjcHVfaW5kZXgpOw0KPiArDQo+ICsgICAgaWYgKHJtYXRjaGVzICYmIHJlZ19saXN0ICYm IHJlZ19saXN0LT5sZW4pIHsNCj4gKyAgICAgICAgLyoNCj4gKyAgICAgICAgICogR28gdGhy b3VnaCBlYWNoIHJlZ2lzdGVyIGluIHRoZSBjb21wbGV0ZSBsaXN0IGFuZA0KPiArICAgICAg ICAgKiBzZWUgaWYgd2Ugd2FudCB0byB0cmFjayBpdC4NCj4gKyAgICAgICAgICovDQo+ICsg ICAgICAgIGZvciAoaW50IHIgPSAwOyByIDwgcmVnX2xpc3QtPmxlbjsgcisrKSB7DQo+ICsg ICAgICAgICAgICBxZW11X3BsdWdpbl9yZWdfZGVzY3JpcHRvciAqcmQgPSAmZ19hcnJheV9p bmRleCgNCj4gKyAgICAgICAgICAgICAgICByZWdfbGlzdCwgcWVtdV9wbHVnaW5fcmVnX2Rl c2NyaXB0b3IsIHIpOw0KPiArICAgICAgICAgICAgZm9yIChpbnQgcCA9IDA7IHAgPCBybWF0 Y2hlcy0+bGVuOyBwKyspIHsNCj4gKyAgICAgICAgICAgICAgICBnX2F1dG9wdHIoR1BhdHRl cm5TcGVjKSBwYXQgPSBnX3BhdHRlcm5fc3BlY19uZXcocm1hdGNoZXMtPnBkYXRhW3BdKTsN Cj4gKyAgICAgICAgICAgICAgICBnX2F1dG9mcmVlIGdjaGFyICpyZF9sb3dlciA9IGdfdXRm OF9zdHJkb3duKHJkLT5uYW1lLCAtMSk7DQo+ICsgICAgICAgICAgICAgICAgaWYgKGdfcGF0 dGVybl9tYXRjaF9zdHJpbmcocGF0LCByZC0+bmFtZSkgfHwNCj4gKyAgICAgICAgICAgICAg ICAgICAgZ19wYXR0ZXJuX21hdGNoX3N0cmluZyhwYXQsIHJkX2xvd2VyKSkgew0KPiArICAg ICAgICAgICAgICAgICAgICBSZWdpc3RlciAqcmVnID0gaW5pdF92Y3B1X3JlZ2lzdGVyKHZj cHVfaW5kZXgsIHJkKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgZ19wdHJfYXJyYXlfYWRk KHJlZ2lzdGVycywgcmVnKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAvKiB3ZSBu ZWVkIGEgbGlzdCBvZiByZWduYW1lcyBhdCBUQiB0cmFuc2xhdGlvbiB0aW1lICovDQo+ICsg ICAgICAgICAgICAgICAgICAgIGlmIChkaXNhc19hc3Npc3QpIHsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGdfbXV0ZXhfbG9jaygmYWRkX3JlZ19uYW1lX2xvY2spOw0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCFnX3B0cl9hcnJheV9maW5kKGFsbF9yZWdfbmFt ZXMsIHJlZy0+bmFtZSwgTlVMTCkpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnX3B0cl9hcnJheV9hZGQoYWxsX3JlZ19uYW1lcywgcmVnLT5uYW1lKTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGdfbXV0 ZXhfdW5sb2NrKCZhZGRfcmVnX25hbWVfbG9jayk7DQo+ICsgICAgICAgICAgICAgICAgICAg IH0NCj4gKyAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICB9DQo+ICsgICAgICAg IH0NCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gcmVnaXN0ZXJzLT5sZW4gPyBnX3N0 ZWFsX3BvaW50ZXIoJnJlZ2lzdGVycykgOiBOVUxMOw0KPiArfQ0KPiArDQo+ICsvKg0KPiAr ICogSW5pdGlhbGlzZSBhIG5ldyB2Y3B1L3RocmVhZCB3aXRoOg0KPiArICogICAtIGxhc3Rf ZXhlYyB0cmFja2luZyBkYXRhDQo+ICsgKiAgIC0gbGlzdCBvZiB0cmFja2VkIHJlZ2lzdGVy cw0KPiArICogICAtIGluaXRpYWwgdmFsdWUgb2YgcmVnaXN0ZXJzDQo+ICsgKg0KPiArICog QXMgd2UgY291bGQgaGF2ZSBtdWx0aXBsZSB0aHJlYWRzIHRyeWluZyB0byBkbyB0aGlzIHdl IG5lZWQgdG8NCj4gKyAqIHNlcmlhbGlzZSB0aGUgZXhwYW5zaW9uIHVuZGVyIGEgbG9jay4N Cj4gKyAqLw0KPiArc3RhdGljIHZvaWQgdmNwdV9pbml0KHFlbXVfcGx1Z2luX2lkX3QgaWQs IHVuc2lnbmVkIGludCB2Y3B1X2luZGV4KQ0KPiArew0KPiArICAgIENQVSAqYzsNCj4gKw0K PiArICAgIGdfcndfbG9ja193cml0ZXJfbG9jaygmZXhwYW5kX2FycmF5X2xvY2spOw0KPiAr ICAgIGlmICh2Y3B1X2luZGV4ID49IGNwdXMtPmxlbikgew0KPiArICAgICAgICBnX2FycmF5 X3NldF9zaXplKGNwdXMsIHZjcHVfaW5kZXggKyAxKTsNCj4gKyAgICB9DQo+ICsgICAgZ19y d19sb2NrX3dyaXRlcl91bmxvY2soJmV4cGFuZF9hcnJheV9sb2NrKTsNCj4gKw0KPiArICAg IGMgPSBnZXRfY3B1KHZjcHVfaW5kZXgpOw0KPiArICAgIGMtPmxhc3RfZXhlYyA9IGdfc3Ry aW5nX25ldyhOVUxMKTsNCj4gKyAgICBjLT5yZWdpc3RlcnMgPSByZWdpc3RlcnNfaW5pdCh2 Y3B1X2luZGV4KTsNCj4gK30NCj4gKw0KPiAgIC8qKg0KPiAgICAqIE9uIHBsdWdpbiBleGl0 LCBwcmludCBsYXN0IGluc3RydWN0aW9uIGluIGNhY2hlDQo+ICAgICovDQo+ICAgc3RhdGlj IHZvaWQgcGx1Z2luX2V4aXQocWVtdV9wbHVnaW5faWRfdCBpZCwgdm9pZCAqcCkNCj4gICB7 DQo+ICAgICAgIGd1aW50IGk7DQo+IC0gICAgR1N0cmluZyAqczsNCj4gLSAgICBmb3IgKGkg PSAwOyBpIDwgbGFzdF9leGVjLT5sZW47IGkrKykgew0KPiAtICAgICAgICBzID0gZ19wdHJf YXJyYXlfaW5kZXgobGFzdF9leGVjLCBpKTsNCj4gLSAgICAgICAgaWYgKHMtPnN0cikgew0K PiAtICAgICAgICAgICAgcWVtdV9wbHVnaW5fb3V0cyhzLT5zdHIpOw0KPiArICAgIGdfcndf bG9ja19yZWFkZXJfbG9jaygmZXhwYW5kX2FycmF5X2xvY2spOw0KPiArICAgIGZvciAoaSA9 IDA7IGkgPCBjcHVzLT5sZW47IGkrKykgew0KPiArICAgICAgICBDUFUgKmMgPSBnZXRfY3B1 KGkpOw0KPiArICAgICAgICBpZiAoYy0+bGFzdF9leGVjICYmIGMtPmxhc3RfZXhlYy0+c3Ry KSB7DQo+ICsgICAgICAgICAgICBxZW11X3BsdWdpbl9vdXRzKGMtPmxhc3RfZXhlYy0+c3Ry KTsNCj4gICAgICAgICAgICAgICBxZW11X3BsdWdpbl9vdXRzKCJcbiIpOw0KPiAgICAgICAg ICAgfQ0KPiAgICAgICB9DQo+ICsgICAgZ19yd19sb2NrX3JlYWRlcl91bmxvY2soJmV4cGFu ZF9hcnJheV9sb2NrKTsNCj4gICB9DQo+ICAgDQo+ICAgLyogQWRkIGEgbWF0Y2ggdG8gdGhl IGFycmF5IG9mIG1hdGNoZXMgKi8NCj4gQEAgLTIxMiw2ICs0MDksMTggQEAgc3RhdGljIHZv aWQgcGFyc2VfdmFkZHJfbWF0Y2goY2hhciAqbWF0Y2gpDQo+ICAgICAgIGdfYXJyYXlfYXBw ZW5kX3ZhbChhbWF0Y2hlcywgdik7DQo+ICAgfQ0KPiAgIA0KPiArLyoNCj4gKyAqIFdlIGhh dmUgdG8gd2FpdCB1bnRpbCB2Q1BVcyBhcmUgc3RhcnRlZCBiZWZvcmUgd2UgY2FuIGNoZWNr IHRoZQ0KPiArICogcGF0dGVybnMgZmluZCBhbnl0aGluZy4NCj4gKyAqLw0KPiArc3RhdGlj IHZvaWQgYWRkX3JlZ3BhdChjaGFyICpyZWdwYXQpDQo+ICt7DQo+ICsgICAgaWYgKCFybWF0 Y2hlcykgew0KPiArICAgICAgICBybWF0Y2hlcyA9IGdfcHRyX2FycmF5X25ldygpOw0KPiAr ICAgIH0NCj4gKyAgICBnX3B0cl9hcnJheV9hZGQocm1hdGNoZXMsIGdfc3RyZHVwKHJlZ3Bh dCkpOw0KPiArfQ0KPiArDQo+ICAgLyoqDQo+ICAgICogSW5zdGFsbCB0aGUgcGx1Z2luDQo+ ICAgICovDQo+IEBAIC0yMjMsMTEgKzQzMiw4IEBAIFFFTVVfUExVR0lOX0VYUE9SVCBpbnQg cWVtdV9wbHVnaW5faW5zdGFsbChxZW11X3BsdWdpbl9pZF90IGlkLA0KPiAgICAgICAgKiBJ bml0aWFsaXplIGR5bmFtaWMgYXJyYXkgdG8gY2FjaGUgdkNQVSBpbnN0cnVjdGlvbi4gSW4g dXNlciBtb2RlDQo+ICAgICAgICAqIHdlIGRvbid0IGtub3cgdGhlIHNpemUgYmVmb3JlIGVt dWxhdGlvbi4NCj4gICAgICAgICovDQo+IC0gICAgaWYgKGluZm8tPnN5c3RlbV9lbXVsYXRp b24pIHsNCj4gLSAgICAgICAgbGFzdF9leGVjID0gZ19wdHJfYXJyYXlfc2l6ZWRfbmV3KGlu Zm8tPnN5c3RlbS5tYXhfdmNwdXMpOw0KPiAtICAgIH0gZWxzZSB7DQo+IC0gICAgICAgIGxh c3RfZXhlYyA9IGdfcHRyX2FycmF5X25ldygpOw0KPiAtICAgIH0NCj4gKyAgICBjcHVzID0g Z19hcnJheV9zaXplZF9uZXcodHJ1ZSwgdHJ1ZSwgc2l6ZW9mKENQVSksDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluZm8tPnN5c3RlbV9lbXVsYXRpb24gPyBpbmZvLT5z eXN0ZW0ubWF4X3ZjcHVzIDogMSk7DQo+ICAgDQo+ICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgYXJnYzsgaSsrKSB7DQo+ICAgICAgICAgICBjaGFyICpvcHQgPSBhcmd2W2ldOw0KPiBA QCAtMjM2LDEzICs0NDIsMjIgQEAgUUVNVV9QTFVHSU5fRVhQT1JUIGludCBxZW11X3BsdWdp bl9pbnN0YWxsKHFlbXVfcGx1Z2luX2lkX3QgaWQsDQo+ICAgICAgICAgICAgICAgcGFyc2Vf aW5zbl9tYXRjaCh0b2tlbnNbMV0pOw0KPiAgICAgICAgICAgfSBlbHNlIGlmIChnX3N0cmNt cDAodG9rZW5zWzBdLCAiYWZpbHRlciIpID09IDApIHsNCj4gICAgICAgICAgICAgICBwYXJz ZV92YWRkcl9tYXRjaCh0b2tlbnNbMV0pOw0KPiArICAgICAgICB9IGVsc2UgaWYgKGdfc3Ry Y21wMCh0b2tlbnNbMF0sICJyZWciKSA9PSAwKSB7DQo+ICsgICAgICAgICAgICBhZGRfcmVn cGF0KHRva2Vuc1sxXSk7DQo+ICsgICAgICAgIH0gZWxzZSBpZiAoZ19zdHJjbXAwKHRva2Vu c1swXSwgInJkaXNhcyIpID09IDApIHsNCj4gKyAgICAgICAgICAgIGlmICghcWVtdV9wbHVn aW5fYm9vbF9wYXJzZSh0b2tlbnNbMF0sIHRva2Vuc1sxXSwgJmRpc2FzX2Fzc2lzdCkpIHsN Cj4gKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImJvb2xlYW4gYXJndW1lbnQg cGFyc2luZyBmYWlsZWQ6ICVzXG4iLCBvcHQpOw0KPiArICAgICAgICAgICAgICAgIHJldHVy biAtMTsNCj4gKyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgIGFsbF9yZWdfbmFtZXMg PSBnX3B0cl9hcnJheV9uZXcoKTsNCj4gICAgICAgICAgIH0gZWxzZSB7DQo+ICAgICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICJvcHRpb24gcGFyc2luZyBmYWlsZWQ6ICVzXG4iLCBv cHQpOw0KPiAgICAgICAgICAgICAgIHJldHVybiAtMTsNCj4gICAgICAgICAgIH0NCj4gICAg ICAgfQ0KPiAgIA0KPiAtICAgIC8qIFJlZ2lzdGVyIHRyYW5zbGF0aW9uIGJsb2NrIGFuZCBl eGl0IGNhbGxiYWNrcyAqLw0KPiArICAgIC8qIFJlZ2lzdGVyIGluaXQsIHRyYW5zbGF0aW9u IGJsb2NrIGFuZCBleGl0IGNhbGxiYWNrcyAqLw0KPiArICAgIHFlbXVfcGx1Z2luX3JlZ2lz dGVyX3ZjcHVfaW5pdF9jYihpZCwgdmNwdV9pbml0KTsNCj4gICAgICAgcWVtdV9wbHVnaW5f cmVnaXN0ZXJfdmNwdV90Yl90cmFuc19jYihpZCwgdmNwdV90Yl90cmFucyk7DQo+ICAgICAg IHFlbXVfcGx1Z2luX3JlZ2lzdGVyX2F0ZXhpdF9jYihpZCwgcGx1Z2luX2V4aXQsIE5VTEwp Ow0KPg0KDQpuaXQgcHJlc2VudGVkIGlubGluZS4NCkluIG1vcmUsIHlvdSBjYW4gc3F1YXNo IHRoaXMgY29tbWl0IGZyb20gYW5vdGhlciBzZXJpZXMsIHdoaWNoIGZpeGVzIA0Kd2Fybmlu Z3MgYWRkZWQgYnkgdGhpcyBjaGFuZ2U6IA0KKGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3Fl bXUtZGV2ZWwvMjAyNDAxMTgwMzI0MDAuMzc2MjY1OC0xLXBpZXJyaWNrLmJvdXZpZXJAbGlu YXJvLm9yZy9ULyNtNTY3NGQ4ZjM2M2QyYzlmMDFhNTQ1ODA4MGExOWFkOTkzNGNmYzQ1MykN Cg0KQmVzaWRlcyB0aGF0LCBMR1RNLg0KDQpSZXZpZXdlZC1ieTogUGllcnJpY2sgQm91dmll ciA8cGllcnJpY2suYm91dmllckBsaW5hcm8ub3JnPg0K