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 5A278C46CD2 for ; Tue, 30 Jan 2024 07:38:39 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rUih2-0004RK-C3; Tue, 30 Jan 2024 02:38:04 -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 1rUigz-0004Qg-Uc for qemu-devel@nongnu.org; Tue, 30 Jan 2024 02:38:01 -0500 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rUigw-0003WA-Sz for qemu-devel@nongnu.org; Tue, 30 Jan 2024 02:38:01 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-40ef6da20feso9943335e9.0 for ; Mon, 29 Jan 2024 23:37:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1706600276; x=1707205076; darn=nongnu.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=QO8+D6ZHicGqqrdbBB1mikl/ZsjQOGvkwcWyjg6DPVY=; b=DsE14P1nOv7p3SKIL9To+0Zf/gBo7WkQDwG3NpFwuNXYALDEdMuhD58mEetTwLUZCc DH60CqbPEQ5zH1IQ83hOFXqxo1oJYyHceM2gmHyi+jLHYsZJqdrERbybyQP79GZDXv0a JwHX7cb7nBKgJ5+xZoeI6Tu7tBHmBjkrGAr/g3A0tL3A2vVYt6cASrgSiJ4JEwWwkjqo XBzy/o9PdhVSBxbwYPPXDzQaZa0B05Ji61ENjxMAHU+mP16VOsdBWR7NBqlrTZsXTyla gFTyTCZjX/+M9bFOGhvJfYS3Fddjnf0f9m8gPJED8HshVU1lWw5aWqiYLjhpGE/tQYWN 0q2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706600276; x=1707205076; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QO8+D6ZHicGqqrdbBB1mikl/ZsjQOGvkwcWyjg6DPVY=; b=XTA10Kp9fDMfbAupR4a5JjZVrFSc+vl+DblD8Gm4ewn7pt4EOU7WzVnJpXJ3AewxQK dXH8rIayaB++C1txC+6ThO0DTTJZq1/ciL1UOoOeap+93CT+Ywj4UGYo/CvDX6gdgx+x Z2abjfNsG2BD3Eo3fyHzYDNRrKyV/TkIO1IC16/U9QLI56eOd5f/aH5+SG5XbNigMzlD wF13GjzE33H/x3P+5bFYhNneCIB6/oa/wugkJbTjUJ7Zu8kKpvR6/TM4++mo+Vx3o/O6 N7Pj4/EePe+UOaGvcCs/CbxyRTyVBw2qK1ng+lEuXTHFdFj43w0XhSP46PTURNtcI9kV PYCQ== X-Gm-Message-State: AOJu0YzZfzJuAh97lpDe+AwfhtGNfxy0oz6T9slHwXAqeumW3to7/4Pt H8SaDY0SnEL2cgOhJrB1MHTe4Ihk0KdgZXvEcryTkp2P1NDxe4qepTDH98JZahM= X-Google-Smtp-Source: AGHT+IEOCt3oVtC14ZLW5Ltr3bnwlDEkSCQHzQn6FOBs157Rv+U3VNOzBPvIpWcNqb2dw3RCNktz8A== X-Received: by 2002:a05:600c:4ec6:b0:40e:cca6:d82f with SMTP id g6-20020a05600c4ec600b0040ecca6d82fmr609911wmq.16.1706600276167; Mon, 29 Jan 2024 23:37:56 -0800 (PST) Received: from [192.168.1.24] ([102.35.208.160]) by smtp.gmail.com with ESMTPSA id bi19-20020a05600c3d9300b0040ee51f1025sm11141373wmb.43.2024.01.29.23.37.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 29 Jan 2024 23:37:55 -0800 (PST) Message-ID: Date: Tue, 30 Jan 2024 11:37:51 +0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 02/14] plugins: scoreboard API Content-Language: en-US To: =?UTF-8?Q?Alex_Benn=C3=A9e?= Cc: qemu-devel@nongnu.org, Mahmoud Mandour , Paolo Bonzini , Richard Henderson , Alexandre Iooss References: <20240118032400.3762658-1-pierrick.bouvier@linaro.org> <20240118032400.3762658-3-pierrick.bouvier@linaro.org> <87il3grut0.fsf@draig.linaro.org> From: Pierrick Bouvier In-Reply-To: <87il3grut0.fsf@draig.linaro.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=pierrick.bouvier@linaro.org; helo=mail-wm1-x330.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=ham 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 T24gMS8yNi8yNCAxOToxNCwgQWxleCBCZW5uw6llIHdyb3RlOg0KPiBQaWVycmljayBCb3V2 aWVyIDxwaWVycmljay5ib3V2aWVyQGxpbmFyby5vcmc+IHdyaXRlczoNCj4gDQo+PiBXZSBp bnRyb2R1Y2UgYSBjcHUgbG9jYWwgc3RvcmFnZSwgYXV0b21hdGljYWxseSBtYW5hZ2VkIChh bmQgZXh0ZW5kZWQpDQo+PiBieSBRRU1VIGl0c2VsZi4gUGx1Z2luIGFsbG9jYXRlIGEgc2Nv cmVib2FyZCwgYW5kIGRvbid0IGhhdmUgdG8gZGVhbA0KPj4gd2l0aCBob3cgbWFueSBjcHVz IGFyZSBsYXVuY2hlZC4NCj4+DQo+PiBUaGlzIEFQSSB3aWxsIGJlIHVzZWQgYnkgbmV3IGlu bGluZSBmdW5jdGlvbnMgYnV0IGNhbGxiYWNrcyBjYW4gYmVuZWZpdA0KPj4gZnJvbSB0aGlz IGFzIHdlbGwuIFRoaXMgd2F5LCB0aGV5IGNhbiBvcGVyYXRlIHdpdGhvdXQgYSBnbG9iYWwg bG9jayBmb3INCj4+IHNpbXBsZSBvcGVyYXRpb25zLg0KPj4NCj4+IE5ldyBmdW5jdGlvbnM6 DQo+PiAtIHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfZnJlZQ0KPj4gLSBxZW11X3BsdWdpbl9z Y29yZWJvYXJkX2dldA0KPj4gLSBxZW11X3BsdWdpbl9zY29yZWJvYXJkX25ldw0KPj4gLSBx ZW11X3BsdWdpbl9zY29yZWJvYXJkX3NpemUNCj4+DQo+PiBJbiBtb3JlLCB3ZSBkZWZpbmUg YSBxZW11X3BsdWdpbl91NjRfdCwgd2hpY2ggaXMgYSBzaW1wbGUgc3RydWN0IGhvbGRpbmcN Cj4+IGEgcG9pbnRlciB0byBhIHNjb3JlYm9hcmQsIGFuZCBhIGdpdmVuIG9mZnNldC4NCj4+ IFRoaXMgYWxsb3dzIHRvIGhhdmUgYSBzY29yZWJvYXJkIGNvbnRhaW5pbmcgc3RydWN0cywg d2l0aG91dCBoYXZpbmcgdG8NCj4+IGJyaW5nIG9mZnNldCBmb3IgYWxsIG9wZXJhdGlvbnMg b24gYSBzcGVjaWZpYyBmaWVsZC4NCj4+DQo+PiBTaW5jZSBtb3N0IG9mIHRoZSBwbHVnaW5z IGFyZSBzaW1wbHkgY29sbGVjdGluZyBhIHN1bSBvZiBwZXItY3B1IHZhbHVlcywNCj4+IHFl bXVfcGx1Z2luX3U2NF90IGRpcmVjdGx5IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24gYXMgd2Vs bC4NCj4+DQo+PiBOZXcgZnVuY3Rpb25zOg0KPj4gLSBxZW11X3BsdWdpbl91NjRfZ2V0DQo+ PiAtIHFlbXVfcGx1Z2luX3U2NF9zdW0NCj4+IE5ldyBtYWNyb3M6DQo+PiAtIHFlbXVfcGx1 Z2luX3U2NA0KPj4gLSBxZW11X3BsdWdpbl91NjRfc3RydWN0DQo+Pg0KPj4gU2lnbmVkLW9m Zi1ieTogUGllcnJpY2sgQm91dmllciA8cGllcnJpY2suYm91dmllckBsaW5hcm8ub3JnPg0K Pj4gLS0tDQo+PiAgIGluY2x1ZGUvcWVtdS9wbHVnaW4uaCAgICAgICAgfCAgNyArKysNCj4+ ICAgaW5jbHVkZS9xZW11L3FlbXUtcGx1Z2luLmggICB8IDc1ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysNCj4+ICAgcGx1Z2lucy9hcGkuYyAgICAgICAgICAgICAgICB8IDM5ICsr KysrKysrKysrKysrKw0KPj4gICBwbHVnaW5zL2NvcmUuYyAgICAgICAgICAgICAgIHwgOTcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiAgIHBsdWdpbnMvcGx1 Z2luLmggICAgICAgICAgICAgfCAgOCArKysNCj4+ICAgcGx1Z2lucy9xZW11LXBsdWdpbnMu c3ltYm9scyB8ICA2ICsrKw0KPj4gICA2IGZpbGVzIGNoYW5nZWQsIDIzMiBpbnNlcnRpb25z KCspDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvcWVtdS9wbHVnaW4uaCBiL2luY2x1 ZGUvcWVtdS9wbHVnaW4uaA0KPj4gaW5kZXggOTM0NjI0OTE0NWQuLjVmMzQwMTkyZTU2IDEw MDY0NA0KPj4gLS0tIGEvaW5jbHVkZS9xZW11L3BsdWdpbi5oDQo+PiArKysgYi9pbmNsdWRl L3FlbXUvcGx1Z2luLmgNCj4+IEBAIC0xMTUsNiArMTE1LDEzIEBAIHN0cnVjdCBxZW11X3Bs dWdpbl9pbnNuIHsNCj4+ICAgICAgIGJvb2wgbWVtX29ubHk7DQo+PiAgIH07DQo+PiAgIA0K Pj4gKy8qIEEgc2NvcmVib2FyZCBpcyBhbiBhcnJheSBvZiB2YWx1ZXMsIGluZGV4ZWQgYnkg dmNwdV9pbmRleCAqLw0KPj4gK3N0cnVjdCBxZW11X3BsdWdpbl9zY29yZWJvYXJkIHsNCj4+ ICsgICAgR0FycmF5ICpkYXRhOw0KPj4gKyAgICBzaXplX3Qgc2l6ZTsNCj4gDQo+IENhbiB3 ZSBnZXQgc2l6ZSBmcm9tIEdBcnJheS0+bGVuIGl0c2VsZj8NCj4gDQoNCkdBcnJheS0+bGVu IG1hdGNoZXMgdGhlIGFsbG9jYXRlZCBzaXplLCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSAN CiJzZW1hbnRpYyIgc2l6ZS4gSSdsbCBhbnN3ZXIgdG8gd2h5IGl0IHdhcyBpbXBsZW1lbnRl ZCB0aGlzIHdheSBpbiBhIA0KbmV4dCBjb21tZW50Lg0KDQo+PiArICAgIHNpemVfdCBlbGVt ZW50X3NpemU7DQo+PiArfTsNCj4+ICsNCj4+ICAgLyoNCj4+ICAgICogcWVtdV9wbHVnaW5f aW5zbiBhbGxvY2F0ZSBhbmQgY2xlYW51cCBmdW5jdGlvbnMuIFdlIGRvbid0IGV4cGVjdCB0 bw0KPj4gICAgKiBjbGVhbnVwIG1hbnkgb2YgdGhlc2Ugc3RydWN0dXJlcy4gVGhleSBhcmUg cmV1c2VkIGZvciBlYWNoIGZyZXNoDQo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9xZW11L3Fl bXUtcGx1Z2luLmggYi9pbmNsdWRlL3FlbXUvcWVtdS1wbHVnaW4uaA0KPj4gaW5kZXggMmMx OTMwZTdlNDUuLjkzNDA1OWQ2NGMyIDEwMDY0NA0KPj4gLS0tIGEvaW5jbHVkZS9xZW11L3Fl bXUtcGx1Z2luLmgNCj4+ICsrKyBiL2luY2x1ZGUvcWVtdS9xZW11LXBsdWdpbi5oDQo+PiBA QCAtMjIwLDYgKzIyMCwyMyBAQCB2b2lkIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVfcmVz dW1lX2NiKHFlbXVfcGx1Z2luX2lkX3QgaWQsDQo+PiAgIHN0cnVjdCBxZW11X3BsdWdpbl90 YjsNCj4+ICAgLyoqIHN0cnVjdCBxZW11X3BsdWdpbl9pbnNuIC0gT3BhcXVlIGhhbmRsZSBm b3IgYSB0cmFuc2xhdGVkIGluc3RydWN0aW9uICovDQo+PiAgIHN0cnVjdCBxZW11X3BsdWdp bl9pbnNuOw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCBxZW11X3BsdWdpbl9zY29yZWJvYXJk IC0gT3BhcXVlIGhhbmRsZSBmb3IgYSBzY29yZWJvYXJkDQo+PiArICoNCj4+ICsgKiBBIHNj b3JlYm9hcmQgaXMgYW4gYXJyYXkgb2YgZGF0YSwgaW5kZXhlZCBieSB2Y3B1X2luZGV4Lg0K Pj4gKyAqKi8NCj4gDQo+IHN0cmF5IConcyAtIEkgdGhpbmsgdGhpcyBpcyB3aGF0IHRyaXBz IHVwIGtkb2MuDQo+IA0KDQpUaGFua3MsIGZpeGVkIHRoYXQgaW4gYSBuZXcgdmVyc2lvbi4g SSBub3cgYnVpbGQgd2l0aCBkb2N1bWVudGF0aW9uIA0KZW5hYmxlZCwgc28gc2hvdWxkIG5v dCBoYXBwZW4gYWdhaW4sIHNvcnJ5Lg0KDQo+PiArc3RydWN0IHFlbXVfcGx1Z2luX3Njb3Jl Ym9hcmQ7DQo+PiArDQo+PiArLyoqDQo+PiArICogcWVtdV9wbHVnaW5fdTY0X3QgLSB1aW50 NjRfdCBtZW1iZXIgb2YgYW4gZW50cnkgaW4gYSBzY29yZWJvYXJkDQo+IA0KPiBXZSBnZW5l cmFsbHkgcmVzZXJ2ZSBsb3dlcl9jYXNlX3dpdGhfdW5kZXJzY29yZXNfZW5kaW5nX3dpdGhf YV90IGZvcg0KPiBzY2FsYXIgdHlwZXMuIEl0cyBhbHNvIGEgbGl0dGxlIGdlbmVyaWMuIE1h eWJlIHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfcmVmPw0KPg0KDQpGb3IgX3Qgc3VmZml4LCBJ IGhlc2l0YXRlZCBvbiB0aGlzLCBhbmQgZm9sbG93ZWQgdGhlIHFlbXVfaW5mb190IHN0cnVj dCANCmV4YW1wbGUgaW4gdGhlIHNhbWUgaGVhZGVyLg0KDQpJbiB0aGUgYmVnaW5uaW5nLCBJ IHBpY2tlZCBxZW11X3BsdWdpbl9zY29yZWJvYXJkX3U2NCwgYnV0IHJlYWxpemVkIHRoZSAN Cm5hbWUgd2FzIGZhciB0b28gbG9uZy4gcWVtdV9wbHVnaW5fdTY0IHNlZW1lZCBsaWtlIHRo ZSByaWdodCBzcG90IA0KYmV0d2VlbiBsZW5ndGgvbWVhbmluZy4NCkkgd291bGQgbGlrZSB0 byBkZWZlbmQgdGhlIHU2NCBtZWFuaW5nLCBiZWNhdXNlIGl0IHdhcyBleHBsaWNpdGVseSBt YWRlIA0KdG8gZXhwcmVzcyB1NjQgdHlwZSwgaW5zdGVhZCBvZiBhIGdlbmVyaWMgc2NvcmVi b2FyZCBlbnRyeS9yZWYuDQoNCkluIG1vcmUsIGJhc2VkIG9uIG90aGVyIGNvbW1lbnRzIG1h ZGUsIG1heWJlIGl0IHdhcyBub3QgY2xlYXIgdGhhdCBhIA0KcWVtdV9wbHVnaW5fdTY0IGRv ZXMgbm90IG5lY2Vzc2FyaWx5IHBvaW50IHRvIGEgIndob2xlIiBlbnRyeSBpbiANCnNjb3Jl Ym9hcmQsIGJ1dCBpdCBjYW4gdGFyZ2V0IGEgc3RydWN0IG1lbWJlciAodTY0KSBpbiBhIGdp dmVuIGVudHJ5IGFzIA0Kd2VsbC4gKGkuZS4gc2NvcmVib2FyZFtpXS5tZW1iZXIpLiBJJ2xs IGdpdmUgYSBtb3JlIGRldGFpbGVkIGFuc3dlciANCmJlbG93IGluIHRoaXMgbWVzc2FnZS4N Cg0KVGhpcyB3YXksIHNjb3JlYm9hcmQgY2FuIGJlIGNvbXBvc2VkIG9mIHN0cnVjdCB2YWx1 ZXMsIGFuZCBhIA0KcWVtdV9wbHVnaW5fdTY0IGFsbG93cyB0byB3b3JrIG9uIGEgc3BlY2lm aWMgbWVtYmVyIG9mIHRoYXQgc3RydWN0IA0Kd2l0aG91dCBoYXZpbmcgdG8gbWFuaXB1bGF0 ZSBvZmZzZXQgZXZlcnl3aGVyZS4gVGh1cyB0aGUgZ2V0IGFuZCBzdW0gDQpvcGVyYXRpb24g b24gdGhpcyB0eXBlLg0KDQpEb2VzIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8geW91IGdpdmVu IHRoaXM/DQoNCj4+ICsgKg0KPj4gKyAqIFRoaXMgZmllbGQgYWxsb3dzIHRvIGFjY2VzcyBh IHNwZWNpZmljIHVpbnQ2NF90IG1lbWJlciBpbiBvbmUgZ2l2ZW4gZW50cnksDQo+PiArICog bG9jYXRlZCBhdCBhIHNwZWNpZmllZCBvZmZzZXQuIElubGluZSBvcGVyYXRpb25zIGV4cGVj dCB0aGlzIGFzIGVudHJ5Lg0KPj4gKyAqLw0KPj4gK3R5cGVkZWYgc3RydWN0IHFlbXVfcGx1 Z2luX3U2NCB7DQo+ICA+IEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgdGhlIGZvcndhcmQgZGVj bGFyYXRpb24gaGVyZSAod2hpY2ggY2xhc2hlcyBsYXRlcg0KPiBvbikuDQo+DQoNCkluaXRp YWxseSB3cm90ZSB0aGlzIHdpdGhvdXQgYSB0eXBlZGVmLCBhbmQgbGVmdCB0aGlzIGFmdGVy d2FyZHMuIFdpbGwgDQpyZW1vdmUgaXQsIHRoYW5rcyENCg0KPj4gKyAgICBzdHJ1Y3QgcWVt dV9wbHVnaW5fc2NvcmVib2FyZCAqc2NvcmU7DQo+PiArICAgIHNpemVfdCBvZmZzZXQ7DQo+ PiArfSBxZW11X3BsdWdpbl91NjRfdDsNCj4+ICAgDQo+PiAgIC8qKg0KPj4gICAgKiBlbnVt IHFlbXVfcGx1Z2luX2NiX2ZsYWdzIC0gdHlwZSBvZiBjYWxsYmFjaw0KPj4gQEAgLTc1NCw1 ICs3NzEsNjMgQEAgaW50IHFlbXVfcGx1Z2luX3JlYWRfcmVnaXN0ZXIodW5zaWduZWQgaW50 IHZjcHUsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBxZW11 X3BsdWdpbl9yZWdpc3RlciAqaGFuZGxlLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHQnl0ZUFycmF5ICpidWYpOw0KPj4gICANCj4+ICsvKioNCj4+ICsgKiBxZW11 X3BsdWdpbl9zY29yZWJvYXJkX25ldygpIC0gYWxsb2MgYSBuZXcgc2NvcmVib2FyZA0KPj4g KyAqDQo+PiArICogUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBuZXcgc2NvcmVib2FyZC4gSXQg bXVzdCBiZSBmcmVlZCB1c2luZw0KPj4gKyAqIHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfZnJl ZS4NCj4+ICsgKi8NCj4+ICtRRU1VX1BMVUdJTl9BUEkNCj4+ICtzdHJ1Y3QgcWVtdV9wbHVn aW5fc2NvcmVib2FyZCAqcWVtdV9wbHVnaW5fc2NvcmVib2FyZF9uZXcoc2l6ZV90IGVsZW1l bnRfc2l6ZSk7DQo+PiArDQo+PiArLyoqDQo+PiArICogcWVtdV9wbHVnaW5fc2NvcmVib2Fy ZF9mcmVlKCkgLSBmcmVlIGEgc2NvcmVib2FyZA0KPj4gKyAqIEBzY29yZTogc2NvcmVib2Fy ZCB0byBmcmVlDQo+PiArICovDQo+PiArUUVNVV9QTFVHSU5fQVBJDQo+PiArdm9pZCBxZW11 X3BsdWdpbl9zY29yZWJvYXJkX2ZyZWUoc3RydWN0IHFlbXVfcGx1Z2luX3Njb3JlYm9hcmQg KnNjb3JlKTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBxZW11X3BsdWdpbl9zY29yZWJvYXJk X3NpemUoKSAtIHJldHVybiBzaXplIG9mIGEgc2NvcmVib2FyZA0KPj4gKyAqIEBzY29yZTog c2NvcmVib2FyZCB0byBxdWVyeQ0KPj4gKyAqLw0KPj4gK1FFTVVfUExVR0lOX0FQSQ0KPj4g K3NpemVfdCBxZW11X3BsdWdpbl9zY29yZWJvYXJkX3NpemUoc3RydWN0IHFlbXVfcGx1Z2lu X3Njb3JlYm9hcmQNCj4+ICpzY29yZSk7DQo+IA0KPiBJcyB0aGlzIGFjdHVhbGx5IGhvc3Qg bWVtb3J5IHNpemUgcmVsYXRlZD8gVGhlIHVzZSBjYXNlIGluIHRoZSBwbHVnaW5zDQo+IHNl ZW1zIHRvIGJlIGEgcHJveHkgZm9yIG51bV9jcHVzIGFuZCBJJ20gbm90ZSBzdXJlIHdlIHdh bnQgaXQgdXNlZCB0aGF0DQo+IHdheS4gV2UgYXJlIG1ha2luZyB0aGUgY29udHJhY3QgdGhh dCBpdCB3aWxsIGFsd2F5cyBiZSBiaWcgZW5vdWdoIGZvcg0KPiB0aGUgbnVtYmVyIG9mIHZj cHVzIGNyZWF0ZWQgLSBtYXliZSB0aGF0IGlzIHRoZSBoZWxwZXIgd2UgbmVlZD8NCj4gDQoN ClRoZSBjdXJyZW50IEFQSSBoYXMgYSBsaW1pdGF0aW9uIGluIHVzZXIgbW9kZSwgd2hlcmUg eW91IGNhbid0IGtub3cgaG93IA0KbWFueSBjcHVzIHdlcmUgcnVuIG92ZXJhbGwuIFRoZSBw b2ludCBvZiBzY29yZWJvYXJkIHdhcyB0byBhYnN0cmFjdCB0aGlzIA0KYXdheSwgYnkgcmVt b3ZpbmcgdGhlIG5lZWQgZm9yIHBsdWdpbnMgdG8gdHJhY2sgdGhpcyAoYW5kIHVzZSBsb2Nr LCANCm1hbnVhbCBtZW1vcnkgYWxsb2NhdGlvbiwgYW5kIGdsdWUgY29kZSBpbiBnZW5lcmFs KS4NCg0KSSB0aG91Z2h0IGl0IHdhcyBtb3JlIGNsZWFyIHRvIHdyaXRlOg0KZm9yIChpbnQg aSA9IDA7IGkgPCBxZW11X3BsdWdpbl9zY29yZWJvYXJkX3NpemUocyk7ICsraSkgew0KCXZv aWQgKnZhbCA9IHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfZ2V0KHMsIGkpOw0KfQ0KdGhhbjoN CmZvciAoaW50IGkgPSAwOyBpIDwgcWVtdV9wbHVnaW5fbWF4X2NwdXMocyk7ICsraSkgew0K CXZvaWQgKnZhbCA9IHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfZ2V0KHMsIGkpOw0KfQ0KDQpX ZSBjYW4gYWx3YXlzIHJlcGxhY2UgcWVtdV9wbHVnaW5fc2NvcmVib2FyZF9zaXplIGJ5IA0K cWVtdV9wbHVnaW5fbWF4X2NwdXMgKG9yIGFub3RoZXIgbmFtZSB5b3UgcHJlZmVyKSwgd2hp Y2ggd291bGQgcmV0dXJuIA0KdGhlIG1heCBudW1iZXIgb2YgY3B1cyB0aGF0IHdlcmUgdXNl ZCBkdXJpbmcgYWxsIHRoZSBleGVjdXRpb24sIGlmIHRoYXQgDQp3b3JrcyBmb3IgeW91Lg0K DQo+PiArDQo+PiArLyoqDQo+PiArICogcWVtdV9wbHVnaW5fc2NvcmVib2FyZF9nZXQoKSAt IGFjY2VzcyB2YWx1ZSBmcm9tIGEgc2NvcmVib2FyZA0KPj4gKyAqIEBzY29yZTogc2NvcmVi b2FyZCB0byBxdWVyeQ0KPj4gKyAqIEB2Y3B1X2luZGV4OiBlbnRyeSBpbmRleA0KPj4gKyAq DQo+PiArICogUmV0dXJucyBhZGRyZXNzIG9mIGVudHJ5IG9mIGEgc2NvcmVib2FyZCBtYXRj aGluZyBhIGdpdmVuIHZjcHVfaW5kZXguIFRoaXMNCj4+ICsgKiBhZGRyZXNzIGNhbiBiZSBt b2RpZmllZCBsYXRlciBpZiBzY29yZWJvYXJkIGlzIHJlc2l6ZWQuDQo+PiArICovDQo+PiAr UUVNVV9QTFVHSU5fQVBJDQo+PiArdm9pZCAqcWVtdV9wbHVnaW5fc2NvcmVib2FyZF9nZXQo c3RydWN0IHFlbXVfcGx1Z2luX3Njb3JlYm9hcmQgKnNjb3JlLA0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2Y3B1X2luZGV4KTsNCj4+ICsN Cj4+ICsvKiBNYWNyb3MgdG8gZGVmaW5lIGEgcWVtdV9wbHVnaW5fdTY0X3QgKi8NCj4+ICsj ZGVmaW5lIHFlbXVfcGx1Z2luX3U2NChzY29yZSkgXA0KPj4gKyAgICAocWVtdV9wbHVnaW5f dTY0X3Qpe3Njb3JlLCAwfQ0KPj4gKyNkZWZpbmUgcWVtdV9wbHVnaW5fdTY0X3N0cnVjdChz Y29yZSwgdHlwZSwgbWVtYmVyKSBcDQo+PiArICAgIChxZW11X3BsdWdpbl91NjRfdCl7c2Nv cmUsIG9mZnNldG9mKHR5cGUsIG1lbWJlcil9DQo+IA0KPiBxZW11X3BsdWdpbl92YWxfcmVm IGFuZCBxZW11X3BsdWdpbl9zdHJ1Y3RfcmVmPw0KPiANCg0KU2FtZSBjb21tZW50IGFzIGJl Zm9yZSwgaXQgd291bGQgYmUgbW9yZSBjbGVhciB0byBrZWVwIHRoZSB1NjQgaW4gdGhlIA0K bmFtZSBpZiBwb3NzaWJsZSwgc28gd2Uga25vdyB3aGljaCBkYXRhIHR5cGUgd2UgbWFuaXB1 bGF0ZS4NCg0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHFlbXVfcGx1Z2luX3U2NF9nZXQoKSAt IGFjY2VzcyBzcGVjaWZpYyB1aW50NjRfdCBpbiBhIHNjb3JlYm9hcmQNCj4+ICsgKiBAZW50 cnk6IGVudHJ5IHRvIHF1ZXJ5DQo+PiArICogQHZjcHVfaW5kZXg6IGVudHJ5IGluZGV4DQo+ PiArICoNCj4+ICsgKiBSZXR1cm5zIGFkZHJlc3Mgb2YgYSBzcGVjaWZpYyBtZW1iZXIgaW4g YSBzY29yZWJvYXJkIGVudHJ5LCBtYXRjaGluZyBhIGdpdmVuDQo+PiArICogdmNwdV9pbmRl eC4NCj4+ICsgKi8NCj4+ICtRRU1VX1BMVUdJTl9BUEkNCj4+ICt1aW50NjRfdCAqcWVtdV9w bHVnaW5fdTY0X2dldChxZW11X3BsdWdpbl91NjRfdCBlbnRyeSwgdW5zaWduZWQgaW50IHZj cHVfaW5kZXgpOw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHFlbXVfcGx1Z2luX3U2NF9zdW0o KSAtIHJldHVybiBzdW0gb2YgYWxsIHZhbHVlcyBpbiBhIHNjb3JlYm9hcmQNCj4+ICsgKiBA ZW50cnk6IGVudHJ5IHRvIHN1bQ0KPj4gKyAqLw0KPj4gK1FFTVVfUExVR0lOX0FQSQ0KPj4g K3VpbnQ2NF90IHFlbXVfcGx1Z2luX3U2NF9zdW0ocWVtdV9wbHVnaW5fdTY0X3QgZW50cnkp Ow0KPj4gICANCj4+ICAgI2VuZGlmIC8qIFFFTVVfUUVNVV9QTFVHSU5fSCAqLw0KPj4gZGlm ZiAtLWdpdCBhL3BsdWdpbnMvYXBpLmMgYi9wbHVnaW5zL2FwaS5jDQo+PiBpbmRleCBlNzc3 ZWI0ZTlmYy4uNGRlOTRlNzk4YzYgMTAwNjQ0DQo+PiAtLS0gYS9wbHVnaW5zL2FwaS5jDQo+ PiArKysgYi9wbHVnaW5zL2FwaS5jDQo+PiBAQCAtNTQ3LDMgKzU0Nyw0MiBAQCBzdGF0aWMg dm9pZCBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0cnVjdG9yX18pKSBxZW11X2FwaV9pbml0KHZv aWQpDQo+PiAgICAgICBxZW11X211dGV4X2luaXQoJnJlZ19oYW5kbGVfbG9jayk7DQo+PiAg IA0KPj4gICB9DQo+PiArDQo+PiArc3RydWN0IHFlbXVfcGx1Z2luX3Njb3JlYm9hcmQgKnFl bXVfcGx1Z2luX3Njb3JlYm9hcmRfbmV3KHNpemVfdCBlbGVtZW50X3NpemUpDQo+PiArew0K Pj4gKyAgICByZXR1cm4gcGx1Z2luX3Njb3JlYm9hcmRfbmV3KGVsZW1lbnRfc2l6ZSk7DQo+ PiArfQ0KPj4gKw0KPj4gK3ZvaWQgcWVtdV9wbHVnaW5fc2NvcmVib2FyZF9mcmVlKHN0cnVj dCBxZW11X3BsdWdpbl9zY29yZWJvYXJkICpzY29yZSkNCj4+ICt7DQo+PiArICAgIHBsdWdp bl9zY29yZWJvYXJkX2ZyZWUoc2NvcmUpOw0KPj4gK30NCj4+ICsNCj4+ICtzaXplX3QgcWVt dV9wbHVnaW5fc2NvcmVib2FyZF9zaXplKHN0cnVjdCBxZW11X3BsdWdpbl9zY29yZWJvYXJk ICpzY29yZSkNCj4+ICt7DQo+PiArICAgIHJldHVybiBzY29yZS0+c2l6ZTsNCj4gDQo+IFNv IHRoaXMgd291bGQgYmUgc2NvcmUtPmRhdGEtPmxlbg0KPiANCj4+ICt9DQo+PiArDQo+PiAr dm9pZCAqcWVtdV9wbHVnaW5fc2NvcmVib2FyZF9nZXQoc3RydWN0IHFlbXVfcGx1Z2luX3Nj b3JlYm9hcmQgKnNjb3JlLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCB2Y3B1X2luZGV4KQ0KPj4gK3sNCj4+ICsgICAgZ19hc3NlcnQodmNw dV9pbmRleCA8IHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfc2l6ZShzY29yZSkpOw0KPj4gKyAg ICBjaGFyICpwdHIgPSBzY29yZS0+ZGF0YS0+ZGF0YTsNCj4+ICsgICAgcmV0dXJuIHB0ciAr IHZjcHVfaW5kZXggKiBzY29yZS0+ZWxlbWVudF9zaXplOw0KPiANCj4gR0FycmF5IGhhcyBh Y2Nlc3NlcyBmdW5jdGlvbnMgZm9yIHRoaXM6DQo+IA0KPiAgICAgICAgIHJldHVybiAmZ19h cnJheV9pbmRleChzY29yZS0+ZGF0YSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ19hcnJheV9nZXRfZWxlbWVudF9zaXplKHNjb3JlLT5kYXRhKSwNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdmNwdV9pbmRleCk7DQo+DQoNClllcywgSSdsbCB1cGRh dGUgdGhpcy4NCg0KPj4gK30NCj4+ICsNCj4+ICt1aW50NjRfdCAqcWVtdV9wbHVnaW5fdTY0 X2dldChxZW11X3BsdWdpbl91NjRfdCBlbnRyeSwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2Y3B1X2luZGV4KQ0KPj4gK3sN Cj4+ICsgICAgY2hhciAqcHRyID0gKGNoYXIgKikgcWVtdV9wbHVnaW5fc2NvcmVib2FyZF9n ZXQoZW50cnkuc2NvcmUsIHZjcHVfaW5kZXgpOw0KPj4gKyAgICByZXR1cm4gKHVpbnQ2NF90 ICopKHB0ciArIGVudHJ5Lm9mZnNldCk7DQo+IA0KPiBOb3Qgc3VyZSB3aGF0cyBnb2luZyB3 aXRoIHRoZSBjYXN0aW5nIGhlcmUgYnV0IEkgd29uZGVyIGlmIHdlIGFyZSBnaXZpbmcNCj4g dGhlIHVzZXIgdG9vIG11Y2ggcm9wZS4gV2h5IG5vdCB0byByZXR1cm4gdGhlIHZhbHVlIGl0 c2VsZj8gSW4gZmFjdCB3aHkNCj4gZG8gd2UgdHJlYXQgdGhpbmdzIGFzIGFuIG9mZnNldCBy YXRoZXIgdGhhbiBhbiBpbmRleCBvZiB1aW50NjRfdC4NCj4gDQo+IFRoZSBxZW11X3BsdWdp bl9zY29yZWJvYXJkX2dldCBjYW4gcmV0dXJuIHVpbnQ2NF90ICogYW5kIHRoZSBpbmRpdmlk dWFsDQo+IGdldCBiZWNvbWVzOg0KPiANCj4gDQo+ICAgIHVpbnQ2NF90ICpxZW11X3BsdWdp bl9zY29yZWJvYXJkX2dldChzdHJ1Y3QgcWVtdV9wbHVnaW5fc2NvcmVib2FyZCAqc2NvcmUs DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgdmNwdV9pbmRleCkNCj4gICAgew0KPiAgICAgICAgZ19hc3NlcnQodmNwdV9pbmRleCA8 IHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfc2l6ZShzY29yZSkpOw0KPiAgICAgICAgcmV0dXJu ICZnX2FycmF5X2luZGV4KHNjb3JlLT5kYXRhLCBzY29yZS0+ZWxlbWVudF9zaXplLCB2Y3B1 X2luZGV4KTsNCj4gICAgfQ0KPiANCj4gICAgdWludDY0X3QgcWVtdV9wbHVnaW5fdTY0X2dl dChzdHJ1Y3QgcWVtdV9wbHVnaW5fc2NvcmVib2FyZCAqc2NvcmUsDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2Y3B1X2luZGV4LCB1bnNpZ25l ZCBpbnQgc2NvcmVfaW5kZXgpDQo+ICAgIHsNCj4gICAgICAgIGdfYXNzZXJ0KHNjb3JlX2lu ZGV4IDwgc2NvcmUtPm51bV9lbGVtZW50cyk7DQo+ICAgICAgICB1aW50NjRfdCAqc2IgPSBx ZW11X3BsdWdpbl9zY29yZWJvYXJkX2dldChzY29yZSwgdmNwdV9pbmRleCk7DQo+ICAgICAg ICByZXR1cm4gc2Jbc2NvcmVfaW5kZXhdOw0KPiAgICB9DQo+IA0KDQpBcyBzYWlkIGFib3Zl LCBtYXliZSBpdCB3YXMgbm90IGNsZWFyIGluIHRoZSBjb21taXQgKHRob3VnaCBleHByZXNz ZWQgaW4gDQpjb21taXQgbWVzc2FnZSkgd2hhdCB3YXMgYSBkaXN0aW5jdGlvbiBiZXR3ZWVu IGEgc2NvcmVib2FyZCwgYW5kIGEgDQpwbHVnaW5fdTY0Lg0KDQpUaGUgbGF0dGVyIGlzIGFu IGFic3RyYWN0aW9uIG9mIGEgc3BlY2lmaWMgbWVtYmVyIGluIG9uZSBzY29yZWJvYXJkIA0K ZW50cnksIHdoaWxlIGEgc2NvcmVib2FyZCBob2xkcyBhbnkgdHlwZS4NCg0KTGV0IG1lIHdy aXRlIGEgY29uY3JldGUgZXhhbXBsZSwgd2hpY2ggd2lsbCBiZSBjbGVhcmVyOg0KDQp0eXBl ZGVmIHN0cnVjdCB7DQoJY2hhciBkYXRhMTsNCglib29sIGRhdGEyOw0KCXZvaWQqIGRhdGEz Ow0KCWVudW0gLi4uOw0KCXVpbnQ2NF90IGNvdW50ZXI7DQp9IENQVURhdGE7DQoNCnNjb3Jl ID0gcWVtdV9wbHVnaW5fc2NvcmVib2FyZF9uZXcoc2l6ZW9mKENQVURhdGEpKTsNCnFlbXVf cGx1Z2luX3U2NF90IGNvdW50ZXIgPQ0KCXFlbXVfcGx1Z2luX3U2NF9zdHJ1Y3Qoc2NvcmUs IENQVURhdGEsIGNvdW50ZXIpKTsNCg0KIEZyb20gdGhlcmU6DQpxZW11X3BsdWdpbl91NjRf Z2V0KGNvdW50ZXIsIDIpIHJldHVybnMgJnNjb3JlWzJdLmNvdW50ZXIuDQpxZW11X3BsdWdp bl91NjRfc3VtKGNvdW50ZXIpIHJldHVybnMNCglzdW0oaTogWzA6bWF4X2NwdXNbLCBzY29y ZVtpXS5jb3VudGVyKS4NCg0KV2l0aCB0aGlzLCBhIHBsdWdpbiBjYW4gc2ltcGx5IGhhdmUg YW4gYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gb2YgY3B1IA0KbG9jYWwgdmFsdWUsIHRoYW4g Y2FuIGJlIGdldCBvciBzZXQgKHNpbmNlIHdlIHJldHVybiBhIHBvaW50ZXIgd2l0aCBnZXQp IA0KYW5kIGVhc2lseSBzdW1tZWQsIHdoaWNoIGlzIHdoYXQgbW9zdCBvZiB0aGUgcGx1Z2lu cyB3YW50IHRvIGRvIGluIHRoZSANCmVuZCAoYXQgbGVhc3QgZnJvbSB3aGF0IEkgb2JzZXJ2 ZWQgaW4gZXhpc3Rpbmcgb25lcykuDQoNCklmIHdlIHN0aWNrIHRvIGEgdm9pZCogc2NvcmVi b2FyZCwgd2UgZW5kIHVwIHdyaXRpbmcgdGhlIHN1bSBmdW5jdGlvbiBpbiANCmV2ZXJ5IHBs dWdpbi4gSW4gbW9yZSwgZXZlcnkgQVBJIGZ1bmN0aW9uICJpbmxpbmUiIG9wZXJhdGluZyBv biBhIA0Kc2NvcmVib2FyZCB3b3VsZCBuZWVkIHRoZSBvZmZzZXRvZihDUFVEYXRhLCBjb3Vu dGVyKSBwYXNzZWQgaW4gDQpwYXJhbWV0ZXIsIHdoaWNoIGlzIGVycm9yIHByb25lIGFuZCBy ZXBldGl0aXZlLg0KDQpXaXRoIHRoaXMgZXhwbGFpbmF0aW9uLCBkbyB5b3Ugc2VlIG1vcmUg dGhlIHZhbHVlIHRvIGhhdmUgYSBzY29yZWJvYXJkIA0KKmFuZCogYSBwbHVnaW5fdTY0IHN0 cnVjdCB0byBhY2Nlc3MgaXQ/DQoNCj4+ICt9DQo+PiArDQo+PiArdWludDY0X3QgcWVtdV9w bHVnaW5fdTY0X3N1bShxZW11X3BsdWdpbl91NjRfdCBlbnRyeSkNCj4+ICt7DQo+PiArICAg IHVpbnQ2NF90IHRvdGFsID0gMDsNCj4+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBxZW11 X3BsdWdpbl9zY29yZWJvYXJkX3NpemUoZW50cnkuc2NvcmUpOyArK2kpIHsNCj4+ICsgICAg ICAgIHRvdGFsICs9ICpxZW11X3BsdWdpbl91NjRfZ2V0KGVudHJ5LCBpKTsNCj4+ICsgICAg fQ0KPj4gKyAgICByZXR1cm4gdG90YWw7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL3BsdWdp bnMvY29yZS5jIGIvcGx1Z2lucy9jb3JlLmMNCj4+IGluZGV4IGUwN2I5Y2RmMjI5Li4wMjg2 YTEyNzgxMCAxMDA2NDQNCj4+IC0tLSBhL3BsdWdpbnMvY29yZS5jDQo+PiArKysgYi9wbHVn aW5zL2NvcmUuYw0KPj4gQEAgLTIwOSw2ICsyMDksNzEgQEAgcGx1Z2luX3JlZ2lzdGVyX2Ni X3VkYXRhKHFlbXVfcGx1Z2luX2lkX3QgaWQsIGVudW0gcWVtdV9wbHVnaW5fZXZlbnQgZXYs DQo+PiAgICAgICBkb19wbHVnaW5fcmVnaXN0ZXJfY2IoaWQsIGV2LCBmdW5jLCB1ZGF0YSk7 DQo+PiAgIH0NCj4+ICAgDQo+PiArc3RydWN0IHJlc2l6ZV9zY29yZWJvYXJkX2FyZ3Mgew0K Pj4gKyAgICBzaXplX3QgbmV3X2FsbG9jX3NpemU7DQo+PiArICAgIHNpemVfdCBuZXdfc2l6 ZTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHBsdWdpbl9yZXNpemVfb25lX3Nj b3JlYm9hcmQoZ3BvaW50ZXIga2V5LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3BvaW50ZXIgdmFsdWUsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpDQo+PiArew0KPj4g KyAgICBzdHJ1Y3QgcWVtdV9wbHVnaW5fc2NvcmVib2FyZCAqc2NvcmUgPQ0KPj4gKyAgICAg ICAgKHN0cnVjdCBxZW11X3BsdWdpbl9zY29yZWJvYXJkICopIHZhbHVlOw0KPj4gKyAgICBz dHJ1Y3QgcmVzaXplX3Njb3JlYm9hcmRfYXJncyAqYXJncyA9DQo+PiArICAgICAgICAoc3Ry dWN0IHJlc2l6ZV9zY29yZWJvYXJkX2FyZ3MgKikgdXNlcl9kYXRhOw0KPj4gKyAgICBpZiAo c2NvcmUtPmRhdGEtPmxlbiAhPSBhcmdzLT5uZXdfYWxsb2Nfc2l6ZSkgew0KPj4gKyAgICAg ICAgZ19hcnJheV9zZXRfc2l6ZShzY29yZS0+ZGF0YSwgYXJncy0+bmV3X2FsbG9jX3NpemUp Ow0KPj4gKyAgICB9DQo+PiArICAgIHNjb3JlLT5zaXplID0gYXJncy0+bmV3X3NpemU7DQo+ IA0KPiBJIHRoaW5rIHlvdSBoYXZlIHRoaXMgaW4gbGVuIHNvIGlmIHlvdSBza2lwIHRoZSBl eHRyYSBmaWVsZCB5b3UgY2FuIGp1c3QNCj4gZG86DQo+IA0KPiAgICBuZXdfc2l6ZSA9IEdQ T0lOVEVSX1RPX1VJTlQodXNlcl9kYXRhKTsNCj4gDQoNCklmIHdlIGNhbiBhdm9pZCBtYW5h Z2luZyBhbGxvY2F0ZWQgdnMgcmVhbCBzaXplLCB5ZXMuDQoNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIHZvaWQgcGx1Z2luX2dyb3dfc2NvcmVib2FyZHNfX2xvY2tlZChDUFVTdGF0ZSAq Y3B1KQ0KPj4gK3sNCj4+ICsgICAgaWYgKGNwdS0+Y3B1X2luZGV4IDwgcGx1Z2luLnNjb3Jl Ym9hcmRfc2l6ZSkgew0KPj4gKyAgICAgICAgcmV0dXJuOw0KPj4gKyAgICB9DQo+PiArDQo+ PiArICAgIGJvb2wgbmVlZF9yZWFsbG9jID0gRkFMU0U7DQo+PiArICAgIHdoaWxlIChjcHUt PmNwdV9pbmRleCA+PSBwbHVnaW4uc2NvcmVib2FyZF9hbGxvY19zaXplKSB7DQo+PiArICAg ICAgICBwbHVnaW4uc2NvcmVib2FyZF9hbGxvY19zaXplICo9IDI7DQo+IA0KPiBJIHN1c3Bl Y3QgZm9yIFVTRVIgdGhpcyBtYWtlcyBzZW5zZSwgaWYgd2UgZXZlcnkgZW5kIHVwIGRvaW5n IHN5c3RlbQ0KPiBleHBhbnNpb24gdGhlbiBpdCB3b3VsZCBqdXN0IGJlICsxIGF0IGEgdGlt ZS4gSW4gZmFjdCBnaXZlbiBnbGliIGRvZXM6DQo+IA0KPiAgICAgICAgZ3NpemUgd2FudF9h bGxvYyA9IGdfbmVhcmVzdF9wb3cgKGdfYXJyYXlfZWx0X2xlbiAoYXJyYXksIHdhbnRfbGVu KSk7DQo+IA0KPiBtYXliZSB3ZSBqdXN0IGRvIGEgc2ltcGxlIGluY3JlbWVudCBhbmQgbGVh dmUgaXQgdXAgZ2xpYiB0byBoYW5kbGUgdGhlDQo+IGV4cG9uZW50aWFsIGdyb3d0aD8NCj4g DQo+DQoNCkluaXRpYWxseSwgSSB3YW50ZWQgdG8gZ28gdGhpcyB3YXksIGJ1dCBpdCBzZWVt cyBsaWtlIGdsaWIgZG9lcyBub3QgDQpvZmZlciBhbGxvY19zaXplIGluZm9ybWF0aW9uIGFi b3V0IGEgR0FycmF5LiBJIGxvb2tlZCBmb3IgdGhpcyBpbiANCmRvY3VtZW50YXRpb24gYW5k IGRvYywgYW5kIG1heWJlIG1pc3NlZCBpdC4NCg0KSWYgeW91IGhhdmUgYW4gaWRlYSB0byBk ZXRlY3QgdGhpcywgSSB3b3VsZCBsb3ZlIHRvIGp1c3QgdXNlIGl0LCBhbmQgaXQgDQp3b3Vs ZCBtYWRlIHRoZSBjb2RlIG11Y2ggbW9yZSBzaW1wbGUsIGF2b2lkaW5nIHRoZSBuZWVkIHRv IGtlZXAgdHJhY2sgb2YgDQp0d28gc2l6ZXMuDQoNClRoZSBwcm9ibGVtIHdlIHRyeSB0byBz b2x2ZSBpcyB0byBkZXRlY3Qgd2hlbiB0aGUgcG9pbnRlciB3aWxsIGJlIA0KcmVhbGxvY2F0 ZWQsIHdpdGggdGhlIGNvbnNlcXVlbmNlIHRoYXQgYWxsIHRiIG11c3QgYmUgZmx1c2hlZCBh bmQgDQpyZXRyYW5zbGF0ZWQgdG8gdXNlIHRoZSBuZXcgb25lIGluc3RlYWQuDQoNCj4+ICsg ICAgICAgIG5lZWRfcmVhbGxvYyA9IFRSVUU7DQo+PiArICAgIH0NCj4+ICsgICAgcGx1Z2lu LnNjb3JlYm9hcmRfc2l6ZSA9IGNwdS0+Y3B1X2luZGV4ICsgMTsNCj4+ICsgICAgZ19hc3Nl cnQocGx1Z2luLnNjb3JlYm9hcmRfc2l6ZSA8PSBwbHVnaW4uc2NvcmVib2FyZF9hbGxvY19z aXplKTsNCj4+ICsNCj4+ICsgICAgaWYgKGdfaGFzaF90YWJsZV9zaXplKHBsdWdpbi5zY29y ZWJvYXJkcykgPT0gMCkgew0KPj4gKyAgICAgICAgLyogbm90aGluZyB0byBkbywgd2UganVz dCB1cGRhdGVkIHNpemVzIGZvciBmdXR1cmUgc2NvcmVib2FyZHMgKi8NCj4+ICsgICAgICAg IHJldHVybjsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBpZiAobmVlZF9yZWFsbG9jKSB7 DQo+PiArI2lmZGVmIENPTkZJR19VU0VSX09OTFkNCj4+ICsgICAgICAgIC8qKg0KPj4gKyAg ICAgICAgICogY3B1cyBtdXN0IGJlIHN0b3BwZWQsIGFzIHNvbWUgdGIgbWlnaHQgc3RpbGwg dXNlIGFuIGV4aXN0aW5nDQo+PiArICAgICAgICAgKiBzY29yZWJvYXJkLg0KPj4gKyAgICAg ICAgICovDQo+PiArICAgICAgICBzdGFydF9leGNsdXNpdmUoKTsNCj4+ICsjZW5kaWYNCj4g DQo+IEhtbSB0aGlzIHNlZW1zIHdyb25nIHRvIGJlIFVTRVJfT05MWS4gV2hpbGUgd2UgZG9u J3QgZXhwZWN0IHRvIHJlc2l6ZSBpbg0KPiBzeXN0ZW0gbW9kZSBpZiB3ZSBkaWQgd2UgY2Vy dGFpbmx5IHdhbnQgdG8gZG8gaXQgZHVyaW5nIGV4Y2x1c2l2ZQ0KPiBwZXJpb2RzLg0KPiAN Cg0KSSBhZ3JlZS4gSW5pdGlhbGx5IGRpZCB0aGlzIGZvciBib3RoIChzeXN0ZW0gYW5kIHVz ZXIpLCBidXQgaW4gc3lzdGVtLCANCndlIGhpdCBhIHNlZ2ZhdWx0Lg0KDQokIC4vYnVpbGQv cWVtdS1zeXN0ZW0teDg2XzY0IC1wbHVnaW4gLi9idWlsZC90ZXN0cy9wbHVnaW4vbGliaW5s aW5lLnNvIA0KLXNtcCAxNyAjID4gMTYgd2lsbCB0cmlnZ2VyIGEgcmVhbGxvY2F0aW9uIG9m IHNjb3JlYm9hcmQNCi4uL2NwdS1jb21tb24uYzoxOTY6MjA6IHJ1bnRpbWUgZXJyb3I6IG1l bWJlciBhY2Nlc3Mgd2l0aGluIG51bGwgcG9pbnRlciANCm9mIHR5cGUgJ3N0cnVjdCBDUFVT dGF0ZScNCg0KSXQgc2VlbXMgbGlrZSBzb21ldGhpbmcgaXMgbm90IHNldCB5ZXQgYXQgdGhp cyB0aW1lIChjdXJyZW50X2NwdSBUTFMgDQp2YXIpLCB3aGljaCByZXN1bHQgaW4gdGhpcyBw cm9ibGVtLiBNYXliZSB0aGlzIGNvZGUgc2ltcGx5IHJldmVhbHMgYW4gDQpleGlzdGluZyBw cm9ibGVtLCB3aGF0IGRvIHlvdSB0aGluaz8NCg0KPj4gKyAgICB9DQo+PiArDQo+PiArICAg IHN0cnVjdCByZXNpemVfc2NvcmVib2FyZF9hcmdzIGFyZ3MgPSB7DQo+PiArICAgICAgICAu bmV3X2FsbG9jX3NpemUgPSBwbHVnaW4uc2NvcmVib2FyZF9hbGxvY19zaXplLA0KPj4gKyAg ICAgICAgLm5ld19zaXplID0gcGx1Z2luLnNjb3JlYm9hcmRfc2l6ZQ0KPj4gKyAgICB9Ow0K Pj4gKyAgICBnX2hhc2hfdGFibGVfZm9yZWFjaChwbHVnaW4uc2NvcmVib2FyZHMsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICZwbHVnaW5fcmVzaXplX29uZV9zY29yZWJvYXJk LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAmYXJncyk7DQo+IA0KPiBUaGlzIGNh biBqdXN0IGJlIGdfaGFzaF90YWJsZV9mb3JlYWNoKHBsdWdpbi5zY29yZWJvYXJkcywNCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBsdWdpbl9yZXNpemVf b25lX3Njb3JlYm9hcmQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdVSU5UX1RPX1BPSU5URVIocGx1Z2luLnNjb3JlYm9hcmRfYWxsb2Nfc2l6ZSkpDQo+ IA0KDQpJZiB3ZSB1c2UgYSBzaW5nbGUgc2l6ZSwgeWVzLg0KDQo+PiArDQo+PiArICAgIGlm IChuZWVkX3JlYWxsb2MpIHsNCj4+ICsgICAgICAgIC8qIGZvcmNlIGFsbCB0YiB0byBiZSBm bHVzaGVkLCBhcyBzY29yZWJvYXJkIHBvaW50ZXJzIHdlcmUgY2hhbmdlZC4gKi8NCj4+ICsg ICAgICAgIHRiX2ZsdXNoKGNwdSk7DQo+PiArI2lmZGVmIENPTkZJR19VU0VSX09OTFkNCj4+ ICsgICAgICAgIGVuZF9leGNsdXNpdmUoKTsNCj4+ICsjZW5kaWYNCj4+ICsgICAgfQ0KPj4g K30NCj4+ICsNCj4+ICAgdm9pZCBxZW11X3BsdWdpbl92Y3B1X2luaXRfaG9vayhDUFVTdGF0 ZSAqY3B1KQ0KPj4gICB7DQo+PiAgICAgICBib29sIHN1Y2Nlc3M7DQo+PiBAQCAtMjE4LDYg KzI4Myw3IEBAIHZvaWQgcWVtdV9wbHVnaW5fdmNwdV9pbml0X2hvb2soQ1BVU3RhdGUgKmNw dSkNCj4+ICAgICAgIHN1Y2Nlc3MgPSBnX2hhc2hfdGFibGVfaW5zZXJ0KHBsdWdpbi5jcHVf aHQsICZjcHUtPmNwdV9pbmRleCwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZjcHUtPmNwdV9pbmRleCk7DQo+PiAgICAgICBnX2Fzc2VydChzdWNjZXNzKTsN Cj4+ICsgICAgcGx1Z2luX2dyb3dfc2NvcmVib2FyZHNfX2xvY2tlZChjcHUpOw0KPj4gICAg ICAgcWVtdV9yZWNfbXV0ZXhfdW5sb2NrKCZwbHVnaW4ubG9jayk7DQo+PiAgIA0KPj4gICAg ICAgcGx1Z2luX3ZjcHVfY2JfX3NpbXBsZShjcHUsIFFFTVVfUExVR0lOX0VWX1ZDUFVfSU5J VCk7DQo+PiBAQCAtNTc2LDggKzY0MiwzOSBAQCBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9f KChfX2NvbnN0cnVjdG9yX18pKSBwbHVnaW5faW5pdCh2b2lkKQ0KPj4gICAgICAgcWVtdV9y ZWNfbXV0ZXhfaW5pdCgmcGx1Z2luLmxvY2spOw0KPj4gICAgICAgcGx1Z2luLmlkX2h0ID0g Z19oYXNoX3RhYmxlX25ldyhnX2ludDY0X2hhc2gsIGdfaW50NjRfZXF1YWwpOw0KPj4gICAg ICAgcGx1Z2luLmNwdV9odCA9IGdfaGFzaF90YWJsZV9uZXcoZ19pbnRfaGFzaCwgZ19pbnRf ZXF1YWwpOw0KPj4gKyAgICBwbHVnaW4uc2NvcmVib2FyZHMgPSBnX2hhc2hfdGFibGVfbmV3 KGdfaW50NjRfaGFzaCwgZ19pbnQ2NF9lcXVhbCk7DQo+PiArICAgIHBsdWdpbi5zY29yZWJv YXJkX3NpemUgPSAxOw0KPj4gKyAgICBwbHVnaW4uc2NvcmVib2FyZF9hbGxvY19zaXplID0g MTY7IC8qIGF2b2lkIGZyZXF1ZW50IHJlYWxsb2NhdGlvbiAqLw0KPj4gICAgICAgUVRBSUxR X0lOSVQoJnBsdWdpbi5jdHhzKTsNCj4+ICAgICAgIHFodF9pbml0KCZwbHVnaW4uZHluX2Ni X2Fycl9odCwgcGx1Z2luX2R5bl9jYl9hcnJfY21wLCAxNiwNCj4+ICAgICAgICAgICAgICAg IFFIVF9NT0RFX0FVVE9fUkVTSVpFKTsNCj4+ICAgICAgIGF0ZXhpdChxZW11X3BsdWdpbl9h dGV4aXRfY2IpOw0KPj4gICB9DQo+PiArDQo+PiArc3RydWN0IHFlbXVfcGx1Z2luX3Njb3Jl Ym9hcmQgKnBsdWdpbl9zY29yZWJvYXJkX25ldyhzaXplX3QgZWxlbWVudF9zaXplKQ0KPj4g K3sNCj4+ICsgICAgc3RydWN0IHFlbXVfcGx1Z2luX3Njb3JlYm9hcmQgKnNjb3JlID0NCj4+ ICsgICAgICAgIGdfbWFsbG9jMChzaXplb2Yoc3RydWN0IHFlbXVfcGx1Z2luX3Njb3JlYm9h cmQpKTsNCj4+ICsgICAgc2NvcmUtPmRhdGEgPSBnX2FycmF5X25ldyhGQUxTRSwgVFJVRSwg ZWxlbWVudF9zaXplKTsNCj4+ICsgICAgZ19hcnJheV9zZXRfc2l6ZShzY29yZS0+ZGF0YSwg cGx1Z2luLnNjb3JlYm9hcmRfYWxsb2Nfc2l6ZSk7DQo+PiArICAgIHNjb3JlLT5zaXplID0g cGx1Z2luLnNjb3JlYm9hcmRfc2l6ZTsNCj4+ICsgICAgc2NvcmUtPmVsZW1lbnRfc2l6ZSA9 IGVsZW1lbnRfc2l6ZTsNCj4+ICsNCj4+ICsgICAgcWVtdV9yZWNfbXV0ZXhfbG9jaygmcGx1 Z2luLmxvY2spOw0KPj4gKyAgICBib29sIGluc2VydGVkID0gZ19oYXNoX3RhYmxlX2luc2Vy dChwbHVnaW4uc2NvcmVib2FyZHMsIHNjb3JlLCBzY29yZSk7DQo+PiArICAgIGdfYXNzZXJ0 KGluc2VydGVkKTsNCj4+ICsgICAgcWVtdV9yZWNfbXV0ZXhfdW5sb2NrKCZwbHVnaW4ubG9j ayk7DQo+PiArDQo+PiArICAgIHJldHVybiBzY29yZTsNCj4+ICt9DQo+PiArDQo+PiArdm9p ZCBwbHVnaW5fc2NvcmVib2FyZF9mcmVlKHN0cnVjdCBxZW11X3BsdWdpbl9zY29yZWJvYXJk ICpzY29yZSkNCj4+ICt7DQo+PiArICAgIHFlbXVfcmVjX211dGV4X2xvY2soJnBsdWdpbi5s b2NrKTsNCj4+ICsgICAgYm9vbCByZW1vdmVkID0gZ19oYXNoX3RhYmxlX3JlbW92ZShwbHVn aW4uc2NvcmVib2FyZHMsIHNjb3JlKTsNCj4+ICsgICAgZ19hc3NlcnQocmVtb3ZlZCk7DQo+ PiArICAgIHFlbXVfcmVjX211dGV4X3VubG9jaygmcGx1Z2luLmxvY2spOw0KPj4gKw0KPj4g KyAgICBnX2FycmF5X2ZyZWUoc2NvcmUtPmRhdGEsIFRSVUUpOw0KPj4gKyAgICBnX2ZyZWUo c2NvcmUpOw0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9wbHVnaW5zL3BsdWdpbi5oIGIvcGx1 Z2lucy9wbHVnaW4uaA0KPj4gaW5kZXggMmMyNzgzNzliNzAuLjk5ODI5YzQwODg2IDEwMDY0 NA0KPj4gLS0tIGEvcGx1Z2lucy9wbHVnaW4uaA0KPj4gKysrIGIvcGx1Z2lucy9wbHVnaW4u aA0KPj4gQEAgLTMxLDYgKzMxLDEwIEBAIHN0cnVjdCBxZW11X3BsdWdpbl9zdGF0ZSB7DQo+ PiAgICAgICAgKiBidXQgd2l0aCB0aGUgSFQgd2UgYXZvaWQgYWRkaW5nIGEgZmllbGQgdG8g Q1BVU3RhdGUuDQo+PiAgICAgICAgKi8NCj4+ICAgICAgIEdIYXNoVGFibGUgKmNwdV9odDsN Cj4+ICsgICAgLyogU2NvcmVib2FyZHMsIGluZGV4ZWQgYnkgdGhlaXIgYWRkcmVzc2VzLiAq Lw0KPj4gKyAgICBHSGFzaFRhYmxlICpzY29yZWJvYXJkczsNCj4+ICsgICAgc2l6ZV90IHNj b3JlYm9hcmRfc2l6ZTsNCj4+ICsgICAgc2l6ZV90IHNjb3JlYm9hcmRfYWxsb2Nfc2l6ZTsN Cj4+ICAgICAgIERFQ0xBUkVfQklUTUFQKG1hc2ssIFFFTVVfUExVR0lOX0VWX01BWCk7DQo+ PiAgICAgICAvKg0KPj4gICAgICAgICogQGxvY2sgcHJvdGVjdHMgdGhlIHN0cnVjdCBhcyB3 ZWxsIGFzIGN0eC0+dW5pbnN0YWxsaW5nLg0KPj4gQEAgLTk5LDQgKzEwMyw4IEBAIHZvaWQg cGx1Z2luX3JlZ2lzdGVyX3ZjcHVfbWVtX2NiKEdBcnJheSAqKmFyciwNCj4+ICAgDQo+PiAg IHZvaWQgZXhlY19pbmxpbmVfb3Aoc3RydWN0IHFlbXVfcGx1Z2luX2R5bl9jYiAqY2IsIGlu dCBjcHVfaW5kZXgpOw0KPj4gICANCj4+ICtzdHJ1Y3QgcWVtdV9wbHVnaW5fc2NvcmVib2Fy ZCAqcGx1Z2luX3Njb3JlYm9hcmRfbmV3KHNpemVfdCBlbGVtZW50X3NpemUpOw0KPj4gKw0K Pj4gK3ZvaWQgcGx1Z2luX3Njb3JlYm9hcmRfZnJlZShzdHJ1Y3QgcWVtdV9wbHVnaW5fc2Nv cmVib2FyZCAqc2NvcmUpOw0KPj4gKw0KPj4gICAjZW5kaWYgLyogUExVR0lOX0ggKi8NCj4+ IGRpZmYgLS1naXQgYS9wbHVnaW5zL3FlbXUtcGx1Z2lucy5zeW1ib2xzIGIvcGx1Z2lucy9x ZW11LXBsdWdpbnMuc3ltYm9scw0KPj4gaW5kZXggNjk2MzU4NWMxZWEuLjkzODY2ZDFiNWYy IDEwMDY0NA0KPj4gLS0tIGEvcGx1Z2lucy9xZW11LXBsdWdpbnMuc3ltYm9scw0KPj4gKysr IGIvcGx1Z2lucy9xZW11LXBsdWdpbnMuc3ltYm9scw0KPj4gQEAgLTM4LDEwICszOCwxNiBA QA0KPj4gICAgIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVfdGJfZXhlY19pbmxpbmU7DQo+ PiAgICAgcWVtdV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV90Yl90cmFuc19jYjsNCj4+ICAgICBx ZW11X3BsdWdpbl9yZXNldDsNCj4+ICsgIHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfZnJlZTsN Cj4+ICsgIHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfZ2V0Ow0KPj4gKyAgcWVtdV9wbHVnaW5f c2NvcmVib2FyZF9uZXc7DQo+PiArICBxZW11X3BsdWdpbl9zY29yZWJvYXJkX3NpemU7DQo+ PiAgICAgcWVtdV9wbHVnaW5fc3RhcnRfY29kZTsNCj4+ICAgICBxZW11X3BsdWdpbl90Yl9n ZXRfaW5zbjsNCj4+ICAgICBxZW11X3BsdWdpbl90Yl9uX2luc25zOw0KPj4gICAgIHFlbXVf cGx1Z2luX3RiX3ZhZGRyOw0KPj4gKyAgcWVtdV9wbHVnaW5fdTY0X2dldDsNCj4+ICsgIHFl bXVfcGx1Z2luX3U2NF9zdW07DQo+PiAgICAgcWVtdV9wbHVnaW5fdW5pbnN0YWxsOw0KPj4g ICAgIHFlbXVfcGx1Z2luX3ZjcHVfZm9yX2VhY2g7DQo+PiAgIH07DQo+IA0KDQpUaGFua3Mg Zm9yIHlvdXIgY29tcGxldGUgYW5kIGRldGFpbGVkIHJldmlldyENCg==